Wie viele NAT-Sessions verträgt mein Router?
Fast alle Internetverbindungen nutzen nur eine einzige öffentliche IP-Adresse
um ein ganzes internes Netzwerk mit dem Internet zu verbinden.
Der Router muss dazu eine Übersetzung von IP-Adressen und Portnummern
durchführen. Viele interne IP-Adressen werden auf eine öffentliche IP-Adresse
und entsprechende Portnummern übersetzt. Diese Technik wird als
Network Address Translation
(kurz NAT) bezeichnet.
Der Router führt dazu eine Tabelle mit allen aktiven Sessions (NAT-Tabelle).
Was sind aktive Sessions?
Eine Session ist eine Kommunikation zwischen einem internen Host (IP-Adresse, UDP/TCP, Portnummer)
und einem externen Host (IP-Adresse, UDP/TCP, Portnummer).
Für das verbindungsorientierte TCP kann der Router den Anfang und das Ende einer Session recht einfach erkennen.
Jede TCP-Session beginnt mit einem Drei-Wege-Handshake (SYN, SYN/ACK, ACK) und endet mit einem
Verbindungsabbau (FIN oder RST).
Auch halboffene Sessions ohne erfolgreichen Drei-Wege-Handshake kommen in die NAT-Tabelle.
Diese sollte der Router nach einem recht kurzen Timeout wieder löschen.
Das verbindungslose UDP kennt keinen expliziten Aufbau und Abbau von Sessions.
Der Router kann UDP-Sessions also nur nach einer bestimmten Zeit
der Inaktivität aus der NAT-Tabelle löschen.
Wo ist das Problem?
Der Router muss bei jeder Kommunikation seine NAT-Tabelle abfragen bzw.
aktualisieren. Und die NAT-Tabelle belegt Speicherplatz im RAM des Routers.
Gerade Peer-to-Peer (P2P) Netzwerke versuchen oft viele gleichzeitige Verbindungen
aufzubauen. Dadurch wächst die NAT-Tabelle schnell an. Auch der Einsatz
von SOHO-Routern zur Anbindung von Firmennetzen führt zu großen
NAT-Tabellen.
Ein aktiver Nutzer kann mit Email, Instant Messaging und Tabbed Browsing
schnell über 100 Sessions aufbauen.
Große NAT-Tabellen bringen die CPU eines SOHO-Routers schnell an ihre Grenzen.
Auch der RAM der Geräte ist nicht sonderlich groß, der Router kann nur eine begrenzte Anzahl von
Einträgen speichern.
Viele einfache Router verfügen nicht über ein sinnvolles Management ihrer NAT-Tabelle.
Die Geräte hängen sich einfach auf, wenn die NAT-Table voll ist.
Was kann ich machen?
Einige Router (z.B. ZyXEL ZyWALL, DrayTek Vigor) bieten die Möglichkeit die
NAT-Sessions pro Client oder für den ganzen Router einzustellen.
Damit kann verhindert werden, dass ein Client das gesamte Netz stört.
Bei der Nutzung von Filesharing und Peer-to-Peer-Clients sollte man die Anzahl der
gleichzeitigen Verbindungen nicht sinnlos hoch einstellen. Für große Netze mit vielen Nutzern sollte
ein entsprechend leistungsfähiger Router eingesetzt werden.
Kann ich meinen Router testen?
Um den eigenen Router zu testen braucht man lediglich zwei PCs (Windows oder Linux) und ein kleines Tool.
Ein PC wird mit dem WAN-Interface des Routers verbunden und simuliert einen Server.
Der zweite PC hängt an einem LAN-Port und greift auf den Server zu.
Dieser Testaufbau funktioniert allerdings nur mit Router ohne internes DSL-Modem.
Bei der AVM Fritzbox muss für den Test "Internetzugang über LAN 1" eingerichtet werden.
Für die WAN-Schnittstelle des Routers und den Server-PC müssen feste IP-Adressen vergeben werden.
Der PC bekommt die 1.1.1.2, der Router die 1.1.1.1 als IP-Adresse. Ich nutze hier ganz bewusst keine
privaten IP-Adressen nach RFC 1918. Einige Router blocken diese Adressen auf dem WAN-Interface.
Der Client kann seine IP-Adresse
über DHCP vom Router beziehen.
Das Tool für die Messung stammt ursprünglich von der Website http://matrix21.myweb.hinet.net.
Diese ist allerdings schon einige Zeit nicht mehr verfügbar. Wir haben lokal eine Downloadseite eingerichtet:
Router-Session-Test Windows 62 KB
Router-Session-Test Linux 368 KB
Messungen sind auch zwischen einem Windows- und einem Linux-PC möglich.
Der Server benötigt als Parameter seine eigene IP-Adresse und eine frei UDP-Portnummer.
Der Port darf nicht durch eine Firewall geblockt werden.
C:\>server 1.1.1.2 5001
http://matrix21.myweb.hinet.net
Respond UDP packets from 1.1.1.2(5001)
Der Client bekommt als Parameter die eigene IP-Adresse, den Startport für den Test, die IP-Adresse des Servers und
die Portnummer des Servers mit auf den Weg.
C:\>client 192.168.0.199 10000 1.1.1.2 5001
http://matrix21.myweb.hinet.net
Send UDP packets from 192.168.0.199(10000+) to 1.1.1.2(5001)
2856 No response packet
Der Client versucht nun UDP-Sessions mit aufsteigender Portnummer aufzubauen.
Diese Verbindungen füllen die NAT-Tabelle des Routers. Das Tool hält an, sobald der Router keine weiteren UDP-Verbindungen
mehr zulässt.
Aktuelle DSL-Router erlauben oft einige Tausend Verbindungen. Die AVM Fritzbox 7390 schaffte in unseren Tests etwa 7.000 Sessions.
Weiterführende Links
|