Hi questi,
meine Überlegung war folgende: Wenn bei einer Gegenstelle fast unendlich viele kleine Pakete übertragen werden können, ohne dass die CPU-Last hochgeht, ist der Router zumindest in der Lage eine hohe Paketanzahl an sich zu bewältigen. Also scheint der Flaschenhals wo anders zu liegen:
Versuch einer Erklärung für NAT bzw. NAPT (Variante von NAT):
Wenn dein lokaler Rechner mit Rechnern im Internet kommuniziert, sorgt NAT genauer gesagt NAPT dafür, dass du hinter der einen IP, die der Provider dir zuweist, mehrere Clients haben kannst und der Router die Antworten aus dem Internet auch wieder dem richtigem PC in deinem LAN zuordnen kann. Dazu muss der Router natürlich darüber buchführen, welcher Rechner aus deinem LAN mit welcher Gegenstelle im Internet kommuniziert, damit er ggf. Antworten aus dem Internet wieder dem richtigem PC im LAN zuordnen kann.
Daraus ergibt sich auch die Tatsache, dass niemand aus dem Internet von sich aus eine Verbindung zu einem Rechner in deinem LAN aufbauen kann, da der Router schlicht nicht weiß wohin mit den Pakten im LAN (Router kann es ja nicht riechen welcher deiner PC's gemeint ist. Einige Anbieter bewerben diese Tatsache auch als NAT-Firewall). --> Eine Verbindung kann also nur zustande kommen, wenn die Verbindung von intern initiiert wurde und der Router bescheid weiß, wohin mit den Antwortpaketen.
NAPT funktioniert ungefähr so (vereinfachtes Beispiel):
PC's in deinem LAN: 192.168.1.X
ext. IP des Routers: 84.184.90 (IP die du bei der Einwahl bekommst)
Server im Internet: 209.85.129.99 (
www.google.de)
1. Drei interne PC's wollen eine Webseite von 209.85.129.99 laden:
192.168.1.100:4711 Webseite von 209.85.129.99:80 laden
192.168.1.101:2521 Webseite von 209.85.129.99:80 laden
192.168.1.102:4711 Webseite von 209.85.129.99:80 laden
2. Der Router merkt sich jeweils die interne Quell-IP bzw. Quell-Port des Clients, die Ziel-IP und den Ziel-Port. Sollte ein Quellport, wie im Beispiel 4711, schon von einem anderem Client benutzt werden, stellt der Router den Port für die externe Anfrage um (manche Router stellen auch generell um):
84.184.90:4711 Webseite von 84.184.90:80 laden
84.184.90:2521 Webseite von 84.184.90:80 laden
84.184.90:4712 Webseite von 84.184.90:80 laden
3. Sollte nun z.B. eine Antwort von 84.184.90:80 auf 84.184.90:4712 kommen, so weiß der Router gleich, dass dieses Datenpaket auf dem externen Port 84.184.90:4712 für den internen PC 192.168.1.102:4711 bestimmt ist. Genau so wäre es mit den anderen Ports.
Die Zuordnungsliste dürfte also ungefähr so aussehen:
Code: Alles auswählen
int. Rechner WAN-Interface Gegenstelle
192.168.1.100:4711 84.184.90:4711 84.184.90:80
192.168.1.101:2521 84.184.90:2521 84.184.90:80
192.168.1.102:4711 84.184.90:4712 84.184.90:80
Diese NAT-Liste kann bei den Lancoms 2048 (2^11) Einträge fassen. Normalerweise bleiben bei UDP* die Einträge eine gewisse Zeit in der Tabelle, da der Router nie weiß, ob noch eine Antwort kommt.
Erklärung wie ich zu meiner Vermutung komme:
Wenn nun dein CS-Client mit über 4000 Gegenstellen pro Minute kommuniziert hat der Router im Nu eine volle Liste und muss nachsehen, welche Verbindungen die am längsten nicht verwendetste ist und diese dann löschen und die neue Eintragen. Auch das Suchen an sich kann bei 2048 Einträgen lange dauern, wenn die Liste sequenziell (ein Eintrag nach dem Anderem) gelesen werden muss. Wenn die Liste parallel von mehreren Threads (parallele, gleichzeitige Verarbeitung (weiß aber nicht ob LCOS das so macht)) durchsucht wird, musst Du sicherstellen, dass immer nur einer die Liste ändert, da sonst Chaos entsteht (daher ist ein Lockingmechanismus nötig, der auch Zeit kosten kann).
Spiel dir mal die nötigen Arbeitsschritte im Kopf durch und du wirst sehen, dass hier eine Menge Arbeit für jeden Router dahintersteckt, vor allem, wenn sehr viele Einträge/Gegenstellen in der NAT-Liste sind. Die 533 MHz sind dann plötzlich gar nicht mehr so viel, wenn noch etwas Latenz für den Speicher usw. draufgeht, die Vergleiche mehrere Takte brauchen, sortiert werden muss usw.
*) UDP ist ein Verbindungsloses Protokoll, dies bedeutet der Router bekommt es normalerweise nicht mit, ob eine Verbindung zu Ende ist oder ob die beiden Rechner nur eine kurze Pause machen.
Gruß
gm