Mika: Traffic Switch/Rechner

Hi,

hab ein kleines Problem. Ich habe folgende Verbindung:

--------               -----------
|SWITCH| ------------- | RECHNER |
--------               -----------

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. Wie kann es nun sein,dass der untersuchte Bereich (9 Stunden) unterschiedliche Werte anzeigen. Bei dem Outgoing Swich - und damit Ingoing Rechner ist der Unterschied ca. 3,3 % und beim Ingoing Switch und Outgoing Rechner ca. 15%.

Woher kommen diese Differenzbeträge?

Hier die Tabelle von dem Rechner:

Chain INPUT (policy ACCEPT 53226 packets, 7311648 bytes)
    pkts      bytes target     prot opt in     out     source               destination
   53226  7311648 Traffic    all  --  *   *      .0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 55878 packets, 23084168 bytes)
    pkts      bytes target     prot opt in     out     source               destination
   55878 23084168 Traffic    all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain Traffic (2 references)
    pkts      bytes target     prot opt in     out     source               destination
   47593  6025592            all  --  eth0   *       0.0.0.0/0            0.0.0.0/0
   50292 21807572            all  --  *      eth0

5586  1276596            all  --  *      lo      0.0.0.0/0            0.0.0.0/0
    5586  1276596            all  --  lo     *       0.0.0.0/0            0.0.0.0/0

  1. 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

    1. Hi,

      o.k. Danke. So und wenns nun darum geht abzurechnen welcher Traffic letztendlich verursacht wird (also das was ins Internet geht) welcher Traffic ist da anzusehen? Der vom Switch oder?

      Zur Info:

      Switch zeigt höhere Werte als Rechner
      Switch ist ein CISCO Catalyst 2924

      Danke
      Maik

      1. Moin!

        o.k. Danke. So und wenns nun darum geht abzurechnen welcher Traffic letztendlich verursacht wird (also das was ins Internet geht) welcher Traffic ist da anzusehen? Der vom Switch oder?

        Diese Frage kann man so nicht ohne weiteres beantworten.

        Wenn es darum geht, dass du die Rechnung deines Providers kontrollieren willst, dann ist entscheidend, welcher Traffic über den Router nach "draußen" geht. Dementsprechend ist das Zählwerk am Switch hin zu deinem Rechner sowieso irrelevant und zählt falsch, richtiger wäre da das Zählwerk am Ausgangsport zum Router. Aber das ist eigentlich auch irrelevant, da es denselben grundsätzlichen Fehler macht und Daten mitzählt, die ausschließlich im lokalen Netzwerk bleiben, tatsächlich richtig wäre es, am Ausgang des Routers ins Internet zu messen.

        Das ganze funktioniert natürlich nur, wenn der Provider dieselbe Meßgrundlage benutzt und auch den gleichen Traffic mißt und abrechnet. Tatsächlich berechnen Netzwerkbetreiber untereinander aber beispielsweise gar keinen Traffic mehr. Man finanziert die sowieso zwingend erforderliche Leitung hin zu einem definierten Austauschpunkt (beispielsweise DECIX in Frankfurt, einem beliebigen anderen lokalen Austauschknoten einer anderen Stadt, oder auch einem eigens dafür eingerichteten "privaten" Knoten) und kümmert sich um deren Betrieb. Wieviel Traffic dann tatsächlich über diese Leitung geht, ist von den Betriebskosten her nämlich total irrelevant. Das Leitunglegen ist teuer, und der Betrieb der Leitung kostet auch regelmäßig - und zwar unabhängig von der Leitungsauslastung.

        Wenn du aber deswegen fragst, weil du gegenüber deinen Kunden Traffic abrechnen willst, dann hast du ja sozusagen Wahlfreiheit der Mittel. Gerecht wäre es, den IP-Traffic am Server als Grundlage zu nehmen. Denn nur IP-Traffic geht vom Server aus auch tatsächlich ins Internet, der Rest bleibt sehr wahrscheinlich im lokalen Netzwerksegment (ARP beispielsweise wird von Routern nicht weitergeleitet).

        Wenn du den Kunden gerne mehr in Rechnung stellen willst, und dich dem Vorwurf aussetzen, dass du nicht nachvollziehbar zuviel abrechnest (weil der Kunde sicherlich keinen Zugriff auf den Switch hat, sondern allenfalls den IP-Traffic auf seinem Server sieht), dann nimm die Meßwerte vom Switch.

        Zur Info:

        Switch zeigt höhere Werte als Rechner
        Switch ist ein CISCO Catalyst 2924

        Das ist ja schon ein etwas besseres Modell. Ich hab' von solchen Switches konkret keine Ahnung (noch nie in der Verlegenheit gewesen, so einen benutzen und administrieren zu können), aber ganz grundsätzlich könnten die besseren Switches aus Performanceoptimierungsgründen tatsächlich doch auch das IP-Protokoll verstehen. Es gibt da so Tricks, dass der Switch erkennt, dass z.B. eine TCP-Verbindung aufgebaut ist, und die zugehörigen Datenpakete werden dann nicht mehr mit Store&Forward, sondern direkt durchgeleitet. Es wäre also rein theoretisch denkbar, dass es auch Zähler gibt, die tatsächlich IP-Traffic mitzählen. Trotzdem hat ein Switch rein netzwerktheoretisch von IP keine Ahnung zu haben (diese Optimierungen sind auch etwas, was aus dem Switch eigentlich einen Zwitter hin zum Router machen), folglich kann dieser eigentlich nur "Bytes gesendet auf der Leitung" zählen. Und das ist eben immer mehr, als aufgrund des IP-Protokolls über das Netzwerk geht.

        Und aus Sicht des Switches und seines Admins ist es auch eher irrelevant, dass der Switch selektiv IP-Traffic zählen könnte. Der Switch ist für die Netzwerkperformance da, die in diesem Zusammenhang relevante Zahl ist die tatsächliche Auslastung der Leitungen unabhängig vom Protokoll. Wenn irgendein durchdrehendes Gerät das Netz mit ARP-Anfragen flutet, dann hilft es wenig, wenn der Router weiterhin meldet "kaum IP-Traffic vorhanden".

        - Sven Rautenberg

        1. Hallo,

          Danke erstmal für die ausführliche Antwort. Eine Kleinigkeit könntest mir noch erklären.

          Also in Wirklichkeit sieht das Ganze so aus...

          <- Zu einem Rechenzentrum      --------        ----------
          -------------------------------|SWITCH|--------|RECHNER1|
                                         --------        ----------
                                             |
                                        -----------
                                        |RECHNER2 |
                                        -----------

          Letztendlich geht es mir drum ausfindig zu machen, welcher Rechner wieviel Traffic verursacht. Jetzt ist das Problem natürlich da, dass wenn ich an dem Switchport an dem der jeweilige Rechner hängt den Traffic abgreife, dass der lokale Netzwerktraffic mit drinne hängt. (obwohl der doch eigentlich nicht hoch sein sollte, oder????)

          Der Port an dem die Leitung zum Rechenzentrum hängt sollte doch unberührt sein von dem lokalen Traffic, oder?

          Jetzt aber mein eigentliches Problem. Ich habe die Abrechnung vom Rechnenzentrum bezügl. Traffic bekommen. Diese fällt wesentlich niedriger aus als meine. Natürlich einserseits für mich erfreulich, anderseits kann ich meine Werte dann nicht mit gutem Gewissen weiterberechnen auch wenn es MRTG so ausspuckt. Als kleine Hausnummer hier die Werte:

          Switch von mir gesamt INPUT: 8.864 MB
          Switch von mit gesamt OUTPUT: 17.675 MB

          Werte von Rechenzentrum IN: 5.35GB
          Werte von Rechenzentrum OUT: 11.98 GB

          Das sind etwas zu große Differenzen für meinen Geschmack. Kannst du dir das erklären? Als kleine Info noch. Das Rechenzentrum liest den Traffic an einem Router mittels NetFLow ab.

          Dank dir
          Mika