Users Guide

NetXtreme Benutzerhandbuch Broadcom Gigabit Ethernet Teaming-Funktion
Seite 34 Teaming-Verfahren Dokument 2CS57XX-CDUM513-R
Der Codepfad für den Ausgangsfluss ist so ausgelegt, dass optimale Zeitgleichheit erreicht wird, wenn gleichzeitig mehrere
Zugriffe auf die Outbound Flow Hash-Tabelle zulässig sind.
Bei allen anderen Protokollen außer TCP/IP wird stets der erste physische Adapter für ausgehende Pakete ausgewählt.
Eine Ausnahme bildet das Address Resolution Protocol (ARP), das anders gehandhabt wird, um Lastausgleich für
eingehenden Verkehr zu erreichen.
Eingehender Verkehr (nur SLB)
Der Broadcom Intermediate-Treiber verwaltet den Fluss des eingehenden Verkehrs für den Teaming-Modus SLB. Im
Gegensatz zum Lastausgleich für ausgehenden Verkehr kann Lastausgleich für eingehenden Verkehr nur auf IP-Adressen
angewendet werden, die sich im selben Subnetz befinden wie der Lastausgleichsserver. Beim Lastausgleich für
eingehenden Verkehr wird eine einmalige Besonderheit des Address Resolution Protocol (RFC0826) genutzt: Jeder IP-Host
verwendet seinen eigenen ARP-Cache zur Einkapselung des IP-Datagramms in einen Ethernet-Rahmen. BASP manipuliert
die ARP-Antwort sorgfältig, so dass jeder IP-Host angewiesen wird, das eingehende IP-Paket an den gewünschten
physischen Adapter zu senden. Daher handelt es sich beim Lastausgleich für eingehenden Verkehr um ein
vorausplanendes Schema, das auf dem statistischen Verlauf der eingehenden Datenflüsse basiert. Neue Verbindungen von
einem Client zum System werden stets über den primären physischen Adapter hergestellt (da die vom Betriebssystem-
Protokollstapel generierte ARP-Antwort die logische IP-Adresse stets der MAC-Adresse des primären physischen Adapters
zuordnet).
Wie im Fall des ausgehenden Verkehrs gibt es auch hier eine Hash-Tabelle: die Inbound Flow Head Hash-Tabelle. Für jeden
Eintrag in dieser Tabelle gibt es eine einfach verkettete Liste, und jede Verkettung (Inbound Flow-Einträge) stellt einen
IP-Host im selben Subnetz dar.
Beim Empfang eines eingehenden IP-Datagramms wird der entsprechende Inbound Flow Head-Eintrag durch Hashing der
Quell-IP-Adresse des IP-Datagramms lokalisiert. Außerdem werden zwei im ausgewählten Eintrag gespeicherte
Statistikzähler aktualisiert. Diese Zähler werden vom Lastausgleichsmodul auf dieselbe Weise verwendet wie die
Ausgangszähler: zur regelmäßigen Neuzuweisung der Datenflüsse an den physischen Adapter.
Die Inbound Flow Head Hash-Tabelle im Codepfad für den Eingangsfluss ist ebenfalls für gleichzeitigen Zugriff ausgelegt.
Auf die Verbindungslisten der Inbound Flow-Einträge wird nur im Fall der Verarbeitung von ARP-Paketen und periodischem
Lastausgleich Bezug genommen. Es gibt keinen Verweis pro Paket auf die Inbound Flow-Einträge. Obgleich die
Verbindungslisten nicht beschränkt sind, ist der Overhead bei der Verarbeitung jedes Nicht-ARP-Pakets stets eine
Konstante. Die Verarbeitung der ein- und ausgehenden ARP-Pakete hängt jedoch von der Anzahl der Verbindungen
innerhalb der entsprechenden Verbindungsliste ab.
Im Verarbeitungspfad für eingehende Pakete werden auch Filter eingesetzt, um zu verhindern, dass Broadcast-Pakete in
einer Schleife von anderen physischen Adapter durch das System zurückgeleitet werden.
Protokoll-Unterstützung
ARP- und IP/TCP/UDP-Datenflüsse werden einem Lastausgleich unterzogen. Handelt es sich bei dem Paket nur um ein
IP-Protokoll wie ICMP oder IGMP, werden alle Daten, die an eine bestimmte IP-Adresse fließen, durch denselben
physischen Adapter geleitet. Wenn das Paket TCP oder UDP für das Schicht-4-Protokoll verwendet, wird die Portnummer
dem Hashing-Algorithmus hinzugefügt, sodass zwei separate Schicht-4-Flüsse durch zwei separate physische Adapter an
dieselbe IP-Adresse geleitet werden können.
Beispiel: Der Client hat die IP-Adresse 10.0.0.1. Sämtlicher IGMP- und ICMP-Verkehr wird durch denselben physischen
Adapter geleitet, da nur die IP-Adresse für den Hash verwendet wird. Der Fluss würde in etwa so aussehen: