Moin!
Auf dem Rechner (LInux) ist iptables drauf, der mir meinen Traffic mitliest. Auf dem Switch wird an dem Port, an dem der Rechner angeschlossen ist auch mitgezählt.
iptables kann nur (systembedingt) IP-Traffic zählen. Der Switch hingegen kann (systembedingt) Ethernet-Traffic zählen, der versteht (wenn er nicht ein absolutes Top-Modell ist) aber kein IP, kann also die Unterscheidung nicht treffen.
Nun ist es aber so, dass der Einsatz von TCP/IP eben nicht nur IP-Traffic verursacht, sondern auch noch ein paar andere Protokolle benutzt. Zum einen gibts beim Verpacken der Daten in niedrigeren Netzwerkschichten (vgl. OSI-Modell) natürlich Overhead. Die Frage ist, ob schon hierbei Abweichungen zwischen iptables und dem Switch-Counter auftreten, denn die Verpackung in ein Ethernet-Frame ist eigentlich etwas, was vom IP-Layer nicht erledigt und somit eigentlich auch nicht gezählt werden kann.
Zweitens gibt es, damit TCP/IP auf dem Ethernet funktioniert, noch ein paar sekundäre Protokolle, allen voran ARP, welches nur dazu da ist, festzustellen, welche MAC-Adresse zu einer gewünschten IP-Adresse gehört. Sofern der sendende Rechner diese Information nicht hat, wird er zuerst Datenpakete aussenden, um die MAC-Adresse herauszufinden. Dieser Vorgang wird vom IP-Layer ebenfalls nicht kontrolliert und dementsprechend auch nicht mitgezählt werden.
Wenn du also die ein- und ausgehenden Bytes vergleichen willst, solltest du dir die Anzeige von ifconfig vornehmen. Dort wird in Byte mitgezählt, wieviel rein und raus geht an der Netzwerkkarte. Und das sollte mit den Daten vom Switch (der auch nur Datenpakete und ihre enthaltenen Bytes zählen kann, eben weil er kein IP versteht, sondern nur den Layer darunter) dann mehr oder weniger übereinstimmen.
- Sven Rautenberg