Für verschiedene Cisco Router und Cisco IOS®-Versionen stehen zahlreiche Switching-Pfade zur Verfügung. Welche Lösung eignet sich am besten für Ihr Netzwerk, und wie funktionieren sie alle? In diesem Whitepaper werden die folgenden Switching-Pfade erläutert, sodass Sie am besten entscheiden können, welcher Switching-Pfad zu Ihrem Netzwerk passt.
Überprüfen Sie zunächst den Weiterleitungsprozess selbst. Es gibt drei Schritte für die Weiterleitung eines Pakets über einen Router:
Stellen Sie fest, ob das Ziel des Pakets erreichbar ist.
Bestimmen Sie den nächsten Hop zum Ziel und die Schnittstelle, über die der nächste Hop erreichbar ist.
Schreiben Sie den Media Access Control (MAC)-Header auf dem Paket um, damit es seinen nächsten Hop erfolgreich erreicht.
Jeder dieser Schritte ist wichtig, damit das Paket sein Ziel erreicht.
Hinweis: In diesem Dokument wird der IP-Switching-Pfad als Beispiel verwendet. praktisch alle Informationen, die hier bereitgestellt werden, gelten für gleichwertige Switching-Pfade für andere Protokolle, sofern diese vorhanden sind.
Prozess-Switching ist der kleinste gemeinsame Nenner für Switching-Pfade. Es ist auf jeder IOS-Version, auf jeder Plattform und für jeden übertragenen Datenverkehr verfügbar. Prozess-Switching wird durch zwei wesentliche Konzepte definiert:
Die Weiterleitungsentscheidung und die zum Umschreiben des MAC-Headers im Paket verwendeten Informationen werden aus der Routing-Tabelle (aus der Routing Information Base oder RIB) und dem Address Resolution Protocol (ARP)-Cache oder aus einer anderen Tabelle übernommen, die die MAC-Header-Informationen enthält, die der IP-Adresse jedes Hosts zugeordnet sind, der direkt mit dem Router verbunden ist.
Das Senden des Pakets erfolgt über einen normalen Prozess, der innerhalb von IOS ausgeführt wird. Anders ausgedrückt: Die Weiterleitungsentscheidung wird durch einen Prozess getroffen, der über den IOS-Scheduler geplant und als Peer für andere Prozesse auf dem Router ausgeführt wird, z. B. Routing-Protokolle. Prozesse, die normalerweise auf dem Router ausgeführt werden, werden nicht unterbrochen, um ein Switch-Paket zu verarbeiten.
Die folgende Abbildung zeigt den Prozess-Switching-Pfad.
In diesem Diagramm finden Sie weitere Informationen:
Der Schnittstellenprozessor erkennt zunächst, dass ein Paket auf den Netzwerkmedien vorhanden ist, und überträgt dieses Paket an den Eingangs-/Ausgangsspeicher des Routers.
Der Schnittstellenprozessor erzeugt einen Empfangsunterbrecher. Bei dieser Unterbrechung bestimmt der Zentralprozessor, um welches Paket es sich handelt (vorausgesetzt, es handelt sich um ein IP-Paket), und kopiert es bei Bedarf in den Prozessorspeicher (diese Entscheidung ist plattformabhängig). Schließlich legt der Prozessor das Paket in die entsprechende Eingabewarteschlange, und der Interrupt wird freigegeben.
Wenn der Scheduler das nächste Mal ausgeführt wird, notiert er das Paket in der Eingabewarteschlange von ip_input und plant die Ausführung dieses Prozesses.
Wenn ip_input ausgeführt wird, wird der nächste Hop und die Ausgabeschnittstelle vom RIB abgefragt. Anschließend wird im ARP-Cache die richtige Adresse der physischen Layer für diesen nächsten Hop ermittelt.
ip_input überschreibt dann den MAC-Header des Pakets und platziert das Paket in der Ausgabewarteschlange der richtigen ausgehenden Schnittstelle.
Das Paket wird aus der Ausgabewarteschlange der ausgehenden Schnittstelle in die Übermittlungswarteschlange der ausgehenden Schnittstelle kopiert. Zwischen diesen beiden Warteschlangen findet jede ausgehende Quality of Service statt.
Der Ausgabeschnittstellenprozessor erkennt das Paket in der Übertragungs-Warteschlange und überträgt das Paket auf die Netzwerkmedien.
Fast alle Funktionen, die das Paket-Switching beeinflussen, wie Network Address Translation (NAT) und Policy Routing, stellen den Prozess-Switching-Pfad dar. Sobald diese Funktionen getestet und optimiert wurden, können sie bei der Interrupt-Context-Switching erscheinen oder nicht.
Interrupt Context Switching ist die zweite der primären Switching-Methoden, die von Cisco Routern verwendet werden. Die wichtigsten Unterschiede zwischen Interrupt Context Switching und Process Switching sind:
Der Prozess, der derzeit auf dem Prozessor ausgeführt wird, wird unterbrochen, um das Paket zu wechseln. Pakete werden bei Bedarf aktiviert und nicht nur dann geswitcht, wenn der ip_input-Prozess geplant werden kann.
Der Prozessor verwendet eine Form von Route-Cache, um alle Informationen zu finden, die zum Umschalten des Pakets erforderlich sind.
In dieser Abbildung wird das Interrupt-Context-Switching veranschaulicht:
In diesem Diagramm finden Sie weitere Informationen:
Der Schnittstellenprozessor erkennt zunächst, dass ein Paket auf den Netzwerkmedien vorhanden ist, und überträgt dieses Paket an den Eingangs-/Ausgangsspeicher des Routers.
Der Schnittstellenprozessor erzeugt einen Empfangsunterbrecher. Während dieser Unterbrechung bestimmt der Zentralprozessor, um welche Art von Paket es sich handelt (unter der Annahme, dass es sich um ein IP-Paket handelt), und beginnt dann, das Paket zu wechseln.
Der Prozessor durchsucht den Route-Cache, um festzustellen, ob das Ziel des Pakets erreichbar ist, welche Ausgabeschnittstelle sein sollte, welchen nächsten Hop zu diesem Ziel hat und schließlich, welchen MAC-Header das Paket erfolgreich zum nächsten Hop erreichen muss. Der Prozessor verwendet diese Informationen, um den MAC-Header des Pakets neu zu schreiben.
Das Paket wird nun entweder in die Übertragungs- oder die Ausgabewarteschlange der ausgehenden Schnittstelle kopiert (abhängig von verschiedenen Faktoren). Der Empfangs-Interrupt kehrt jetzt zurück, und der Prozess, der auf dem Prozessor ausgeführt wurde, bevor der Interrupt auftrat, läuft weiter.
Der Ausgabeschnittstellenprozessor erkennt das Paket in der Übertragungs-Warteschlange und überträgt das Paket auf die Netzwerkmedien.
Die erste Frage, die sich nach dem Lesen dieser Beschreibung stellt, ist "Was ist im Cache?" Abhängig vom Typ des Interrupt Context Switching gibt es drei mögliche Antworten:
Fast Switching speichert die Weiterleitungsinformationen und die MAC-Header-Rewrite-Zeichenfolge mithilfe einer Binärstruktur für die Instant-Übersetzung und Verweise. Diese Abbildung zeigt eine Binärstruktur:
Bei Fast Switching werden die Erreichbarkeitsinformationen durch das Vorhandensein eines Knotens im Binärbaum für das Ziel des Pakets angezeigt. Der MAC-Header und die ausgehende Schnittstelle für jedes Ziel werden als Teil der Knoteninformationen in der Struktur gespeichert. Die Binärstruktur kann tatsächlich 32 Ebenen haben (die Struktur oben ist extrem gekürzt für die Veranschaulichung).
Um eine Binärstruktur zu durchsuchen, beginnen Sie einfach von links (mit der höchstwertigen Ziffer) in der gesuchten (Binärzahl), und verzweigen Sie auf Basis dieser Nummer rechts oder links im Baum. Wenn Sie beispielsweise nach Informationen suchen, die sich auf die Ziffer 4 in dieser Struktur beziehen, würden Sie mit der Verzweigung nach rechts beginnen, da die erste Binärziffer 1 ist. Sie folgen der Struktur nach unten und vergleichen die nächste Ziffer in der (binären) Zahl, bis Sie das Ende erreichen.
Fast Switching weist mehrere Merkmale auf, die das Ergebnis der binären Struktur und der Speicherung der MAC-Header-Umschreibinformationen als Teil der Strukturknoten sind.
Da keine Korrelation zwischen der Routing-Tabelle und dem Inhalt des schnellen Caches besteht (z. B. Umschreiben des MAC-Headers), beinhalten Buildcache-Einträge die gesamte Verarbeitung, die im Prozess-Switching-Pfad ausgeführt werden muss. Aus diesem Grund werden schnelle Cache-Einträge erstellt, während Pakete vom Prozess gewechselt werden.
Da es keine Korrelation zwischen den MAC-Headern (die für Rewrites verwendet werden) im ARP-Cache und der Struktur des schnellen Cache gibt, muss bei Änderungen der ARP-Tabelle ein Teil des schnellen Cache ungültig gemacht (und durch das Switching von Paketen neu erstellt) werden.
Der schnelle Cache kann nur Einträge in einer Tiefe (eine Präfixlänge) für ein bestimmtes Ziel in der Routing-Tabelle erstellen.
Innerhalb des schnellen Cache gibt es keine Möglichkeit, innerhalb des schnellen Cache von einem Eintrag auf einen anderen zu verweisen (der MAC-Header und die ausgehenden Schnittstelleninformationen sollen sich im Knoten befinden), daher müssen alle Routingrekursionen aufgelöst werden, während ein schneller Cache-Eintrag erstellt wird. Anders ausgedrückt: Rekursive Routen können nicht im schnellen Cache selbst aufgelöst werden.
Um zu verhindern, dass die schnellen Switching-Einträge ihre Synchronisierung mit der Routing-Tabelle und dem ARP-Cache verlieren und nicht verwendete Einträge im schnellen Cache nicht unangemessen viel Speicherplatz auf dem Router beanspruchen, wird ein 20. des schnellen Cache willkürlich jede Minute ungültig. Wenn der Speicher der Router unter ein sehr niedriges Wasserzeichen fällt, wird jede Minute ein Fünftel der Einträge im schnellen Cache ungültig.
Für welche Präfixlänge werden die Schnellswitching-Buildeinträge erstellt, wenn es für jedes Ziel nur eine Präfixlänge erstellen kann? Innerhalb der Bedingungen des Fast Switching ist ein Ziel ein einziges erreichbares Ziel innerhalb der Routing-Tabelle oder ein großes Netzwerk. Die Regeln für die Festlegung der Präfixlänge zum Erstellen eines bestimmten Cacheeintrags sind:
Wenn Sie einen schnellen Richtlinieneintrag erstellen, sollten Sie stets /32 zwischenspeichern.
Wenn ein Eintrag für einen Multiprotocol over ATM Virtual Circuit (MPOA VC) erstellt wird, sollten Sie stets /32 zwischenspeichern.
Wenn das Netzwerk nicht unterteilt ist (es ist ein wichtiger Netzwerkeintrag):
Wenn eine direkte Verbindung besteht, verwenden Sie /32;
Verwenden Sie andernfalls die Haupt-Netzmaske.
Wenn es sich um ein Supernet handelt, verwenden Sie die Supernet-Maske.
Wenn das Netzwerk unterteilt ist:
Wenn eine direkte Verbindung besteht, verwenden Sie /32;
Wenn mehrere Pfade zu diesem Subnetz vorhanden sind, verwenden Sie /32;
Verwenden Sie in allen anderen Fällen die längste Präfixlänge in diesem Hauptnetz.
Fast Switching ist vollständig zielbasiert. Die Lastverteilung erfolgt auf Zielbasis. Wenn für ein bestimmtes Zielnetzwerk mehrere Pfade zu gleichen Kosten vorhanden sind, hat der schnelle Cache einen Eintrag für jeden Host, der innerhalb dieses Netzwerks erreichbar ist, aber der gesamte Datenverkehr, der für einen bestimmten Host bestimmt ist, folgt einem Link.
Optimum Switching speichert die Weiterleitungsinformationen und die Informationen zum Umschreiben des MAC-Headers in einer 256-Wege-Multiway-Struktur (256-Wege-Struktur). Die Verwendung einer Struktur reduziert die Anzahl der Schritte, die beim Nachschlagen eines Präfixes ausgeführt werden müssen, wie in der nächsten Abbildung gezeigt.
Jedes Oktett wird verwendet, um zu bestimmen, welche der 256 Zweige auf jeder Ebene des Baumes zu nehmen sind, d. h. es sind maximal 4 Suchvorgänge erforderlich, um ein Ziel zu finden. Für kürzere Präfixlängen können nur ein bis drei Suchvorgänge erforderlich sein. Die Informationen zur Umschreibungs- und Ausgabeschnittstelle des MAC-Headers werden als Teil des Tree-Knotens gespeichert, sodass die Cache-Invalidierung und das Altern weiterhin wie beim schnellen Switching auftreten.
Optimum Switching legt die Präfixlänge für jeden Cache-Eintrag ebenso fest wie schnelles Switching.
Cisco Express Forwarding verwendet eine 256-Wege-Datenstruktur zum Speichern von Weiterleitungs- und MAC-Header-Umschreibinformationen, verwendet jedoch keine Struktur. Cisco Express Forwarding verwendet eine Testversion, d. h. die tatsächlich gesuchten Informationen befinden sich nicht in der Datenstruktur. Stattdessen werden die Daten in einer separaten Datenstruktur gespeichert, und der Trie verweist einfach darauf. Anders ausgedrückt: Cisco Express Forwarding speichert diese Informationen nicht in der Struktur selbst, sondern in einer separaten Datenstruktur, der so genannten Adjacency-Tabelle.
Diese Trennung der Erreichbarkeitsinformationen (in der Cisco Express Forwarding-Tabelle) und der Weiterleitungsinformationen (in der Adjacency-Tabelle) bietet eine Reihe von Vorteilen:
Die Adjacency-Tabelle kann separat von der Cisco Express Forwarding-Tabelle erstellt werden, sodass beide Pakete ohne Prozesswechsel erstellt werden können.
Die zum Weiterleiten eines Pakets verwendete Umschreibung des MAC-Headers wird nicht in Cache-Einträgen gespeichert, sodass Änderungen in einer Umschreibzeichenfolge des MAC-Headers keine Ungültigerklärung von Cache-Einträgen erfordern.
Sie können direkt auf die Weiterleitungsinformationen verweisen, nicht auf den wiederkehrenden nächsten Hop, um rekursive Routen aufzulösen.
Im Wesentlichen wird das gesamte Cache-Altern eliminiert, und der Cache ist auf der Grundlage der Informationen in der Routing-Tabelle und im ARP-Cache vorerstellt. Es ist nicht erforderlich, ein Paket für den Switch zu verarbeiten, um einen Cache-Eintrag zu erstellen.
Die Adjacency-Tabelle kann andere Einträge als MAC-Header enthalten, um Zeichenfolgen neu zu schreiben und ausgehende Schnittstelleninformationen zu enthalten. Zu den verschiedenen Eintragstypen, die in die Adjacency-Tabelle eingefügt werden können, gehören:
cache - Ein MAC-Header überschreibt eine Zeichenfolge und eine ausgehende Schnittstelle, die verwendet wird, um einen bestimmten benachbarten Host oder Router zu erreichen.
Receive - Pakete, die an diese IP-Adresse gerichtet sind, sollten vom Router empfangen werden. Dazu gehören Broadcast-Adressen und -Adressen, die auf dem Router selbst konfiguriert wurden.
drop - Pakete, die an diese IP-Adresse gerichtet sind, sollten verworfen werden. Dies kann für Datenverkehr verwendet werden, der von einer Zugriffsliste abgelehnt wird, oder der an eine NULL-Schnittstelle weitergeleitet wird.
punt: Cisco Express Forwarding kann dieses Paket nicht vertauschen. zur Verarbeitung an die nächste beste Switching-Methode (im Allgemeinen Fast Switching) übergeben.
glean - Der nächste Hop ist direkt angeschlossen, es sind jedoch derzeit keine MAC-Header-Rewrite-Strings verfügbar.
Ein glean Adjacency-Eintrag gibt an, dass ein bestimmter nächster Hop direkt verbunden werden soll. Es sind jedoch keine Informationen zum Umschreiben des MAC-Headers verfügbar. Wie werden diese aufgebaut und genutzt? Ein Router, auf dem Cisco Express Forwarding ausgeführt wird und der an ein Broadcast-Netzwerk angeschlossen ist (siehe nachstehende Abbildung), erstellt standardmäßig eine Reihe von Adjacency-Tabelleneinträgen.
Die vier standardmäßig erstellten Adjacency-Tabelleneinträge sind:
10.1.1.0/24, version 17, attached, connected 0 packets, 0 bytes via Ethernet2/0, 0 dependencies valid glean adjacency 10.1.1.0/32, version 4, receive 10.1.1.1/32, version 3, receive 10.1.1.255/32, version 5, receive
Es gibt vier Einträge: drei erhalten und einer glänzend. Jeder Empfangseintrag stellt eine Broadcast-Adresse oder eine Adresse dar, die auf dem Router konfiguriert ist, während der glean-Eintrag den Rest des Adressbereichs im angeschlossenen Netzwerk darstellt. Wenn ein Paket für Host 10.1.1.50 empfangen wird, versucht der Router, das Paket zu wechseln, und findet heraus, dass es auf diese Gateway-Adjacency aufgelöst wurde. Cisco Express Forwarding signalisiert dann, dass ein ARP-Cache-Eintrag für 10.1.1.50 erforderlich ist, der ARP-Prozess ein ARP-Paket sendet und der entsprechende Eintrag in der Adjacency-Tabelle aus den neuen ARP-Cache-Informationen erstellt wird. Nachdem dieser Schritt abgeschlossen ist, verfügt die Adjacency-Tabelle über einen Eintrag für 10.1.1.50.
10.1.1.0/24, version 17, attached, connected 0 packets, 0 bytes via Ethernet2/0, 0 dependencies valid glean adjacency 10.1.1.0/32, version 4, receive 10.1.1.1/32, version 3, receive 10.1.1.50/32, version 12, cached adjacency 208.0.3.2 0 packets, 0 bytes via 208.0.3.2, Ethernet2/0, 1 dependency next hop 208.0.3.2, Ethernet2/0 valid cached adjacency 10.1.1.255/32, version 5, receive
Das nächste Paket, das der Router für 10.1.1.50 empfängt, wird über diese neue Adjacency umgeschaltet.
Cisco Express Forwarding nutzt auch die Trennung zwischen der Cisco Express Forwarding-Tabelle und der Adjacency-Tabelle, um eine bessere Lastverteilung als jeder andere Interrupt Context Switching-Modus zu ermöglichen. Zwischen der Cisco Express Forwarding-Tabelle und der Adjacency-Tabelle wird eine Load-Share-Tabelle eingefügt (siehe folgende Abbildung):
Die Cisco Express Forwarding-Tabelle zeigt auf diese ladbare Freigabetabelle, die Zeiger auf die Einträge der verschiedenen Adjacency-Tabellen für verfügbare parallele Pfade enthält. Die Quell- und Zieladressen werden durch einen Hash-Algorithmus weitergeleitet, um zu bestimmen, welche Lastfreigabetabelle für jedes Paket verwendet werden soll. Die Lastverteilung pro Paket kann konfiguriert werden. In diesem Fall verwendet jedes Paket einen anderen Eintrag in der Lastfreigabetabelle.
Jede Lastverteilungstabelle enthält 16 Einträge, unter denen die verfügbaren Pfade auf Basis des Datenverkehrsverteilungszählers in der Routing-Tabelle aufgeteilt werden. Wenn die Datenverkehrsverteilungszähler in der Routing-Tabelle alle 1 sind (wie bei mehreren Pfaden mit gleichen Kosten), erhält jeder mögliche nächste Hop eine gleiche Anzahl von Zeigern aus der Lastfreigabetabelle. Wenn die Anzahl der verfügbaren Pfade nicht gleichmäßig in 16 aufgeteilt werden kann (da es 16 Einträge für die Lastverteilungstabelle gibt), haben einige Pfade mehr Einträge als andere.
Ab Version 12.0 der Cisco IOS-Software wird die Anzahl der Einträge in der Lastfreigabetabelle reduziert, um sicherzustellen, dass jeder Pfad über eine angemessene Anzahl von Einträgen in der Lastfreigabetabelle verfügt. Wenn es z. B. drei Pfade mit gleichen Kosten in der Routing-Tabelle gibt, werden nur 15 Einträge für die Lastverteilungstabelle verwendet.
Wenn möglich, sollten die Router im Interrupt-Kontext umgeschaltet werden, da dies mindestens um eine Größenordnung schneller ist als das Switching auf Prozessebene. Cisco Express Forwarding Switching ist definitiv schneller und besser als jeder andere Switching-Modus. Wir empfehlen die Verwendung von Cisco Express Forwarding, wenn das von Ihnen ausgeführte Protokoll und IOS es unterstützen. Dies gilt insbesondere für eine Reihe paralleler Verbindungen, über die der Datenverkehr freigegeben werden soll. Auf der Cisco Feature Navigator-Seite (nur registrierte Kunden) können Sie ermitteln, welches IOS Sie für die CEF-Unterstützung benötigen.