ACL-Schalter im Detail

ACLs (Access Control List) auf Netzwerkgeräten können sowohl als Hardware- als auch als Software-basierte ACLs implementiert werden. Und wenn bei softwarebasierten ACLs alles klar sein sollte, sind dies die Regeln, die im RAM gespeichert und verarbeitet werden (d. H. Auf der Steuerebene), mit allen daraus resultierenden Einschränkungen. Dann werden wir verstehen, wie hardwarebasierte ACLs implementiert sind und funktionieren. unser Artikel. Als Beispiel werden wir Extreme Networks-Switches der ExtremeSwitching-Serie verwenden.



Da wir an hardwarebasierten ACLs interessiert sind, ist die interne Implementierung von Data Plane oder tatsächlich verwendeten Chipsätzen (ASIC) für uns von größter Bedeutung. Die Switches aller Extreme Networks-Produktlinien basieren auf den ASICs von Broadcom. Daher gelten die meisten der folgenden Informationen auch für andere Switches auf dem Markt, die auf denselben ASICs implementiert sind.

Wie aus der obigen Abbildung ersichtlich, ist die „ContentAware Engine“, getrennt für „Ingress“ und „Egress“, für die ACL-Operation im Chipsatz verantwortlich. Sie sind architektonisch identisch, nur „Egress“ ist weniger skalierbar und weniger funktional. Physikalisch sind sowohl „ContentAware Engine“ TCAM-Speicher als auch zugehörige Logik, und jede Benutzer- oder System-ACL-Regel ist eine einfache Bitmaske, die in diesen Speicher geschrieben wird. Aus diesem Grund wird die Chipsatzverarbeitung des Datenverkehrs pro Einheit und ohne Leistungseinbußen durchgeführt.

Physikalisch gesehen ist derselbe Ingress / Egress-TCAM wiederum logisch in mehrere Segmente unterteilt (abhängig von der Größe des Speichers und der Plattform), die sogenannten „ACL-Slices“. Zum Beispiel passiert dasselbe mit physisch derselben Festplatte auf Ihrem Laptop, wenn Sie mehrere logische Laufwerke darauf erstellen - C: \>, D: \>. Jedes ACL-Slice besteht wiederum aus Speicherzellen in Form von "Strings", in die "Regeln" geschrieben werden (Regeln / Bitmasken).


Die Aufteilung von TCAM in ACL-Slices hat eine bestimmte Logik. In jedem der einzelnen ACL-Slices können nur kompatible „Regeln“ geschrieben werden. Wenn eine der „Regeln“ nicht mit der vorherigen kompatibel ist, wird sie in der Reihenfolge ACL-Slice in die nächste geschrieben, unabhängig davon, wie viele freie Zeilen unter den „Regeln“ in der vorherigen verbleiben.

Woher kommt diese Kompatibilität oder Inkompatibilität von ACL-Regeln? Tatsache ist, dass eine TCAM- "Zeile", in der "Regeln" geschrieben sind, eine Länge von 232 Bit hat und in mehrere Felder unterteilt ist - Fest, Feld1, Feld2, Feld3. 232-Bit- oder 29-Byte-TCAM-Speicher reicht aus, um eine Bitmaske mit einer bestimmten MAC- oder IP-Adresse zu schreiben, ist jedoch viel kleiner als der vollständige Ethernet-Paket-Header. In jedem einzelnen ACL-Slice erzeugt ASIC eine unabhängige Suche gemäß der in F1-F3 gesetzten Bitmaske. Im Allgemeinen kann diese Suche für den ersten 128-Byte-Ethernet-Header durchgeführt werden. Gerade weil die Suche mit 128 Bytes durchgeführt werden kann und nur 29 Bytes aufgezeichnet werden können, muss für eine korrekte Suche ein Versatz relativ zum Beginn des Pakets eingestellt werden. Der Offset für jeden der ACL-Slices wird festgelegt, wenn die erste Regel darauf geschrieben wird. Wenn beim Schreiben der nächsten Regel die Notwendigkeit eines anderen Offsets festgestellt wird, wird diese Regel als mit der ersten inkompatibel angesehen und in den nächsten ACL-Slice geschrieben.

Die folgende Tabelle zeigt die Kompatibilitätsreihenfolge der in der ACL angegebenen Bedingungen. Jede separate Zeile enthält Bitmasken, die miteinander kompatibel und mit anderen Zeilen nicht kompatibel sind.


Jedes einzelne von ASIC verarbeitete Paket führt in jedem ACL-Slice eine parallele Suche durch. Die Validierung wird vor der ersten Übereinstimmung im ACL-Slice durchgeführt, es sind jedoch mehrere Übereinstimmungen für dasselbe Paket in verschiedenen ACL-Slices zulässig. Jede einzelne "Regel" hat eine entsprechende Aktion, die ausgeführt werden muss, wenn die Bedingung (Bitmaske) übereinstimmt. Wenn eine Übereinstimmung in mehreren ACL-Slices gleichzeitig aufgetreten ist, wird im Block „Action Conflict Resolution“ basierend auf der Priorität des ACL-Slices eine Entscheidung getroffen, welche ausgeführt werden soll. Wenn sowohl die "Aktion" (Zulassen / Verweigern) als auch der "Aktionsmodifikator" (Anzahl / QoS / Protokoll / ...) in die ACL geschrieben sind, wird bei mehreren Übereinstimmungen nur die "Aktion" mit der höheren Priorität ausgeführt, der "Aktionsmodifikator" alles erledigt. Das folgende Beispiel zeigt, dass beide Zähler erhöht werden und die höhere Priorität "Verweigern" ausgeführt wird.


"ACL Solutions Guide" mit detaillierteren Informationen darüber, wie ACLs auf extremenetworks.com öffentlich verfügbar sind . Alle auftretenden oder noch offenen Fragen können jederzeit an unser Büropersonal - cis@extremenetworks.com - gerichtet werden .

Source: https://habr.com/ru/post/de486070/


All Articles