ACL von Switches im Detail

ACL (Access Control List) auf NetzwerkgerĂ€ten können sowohl hardware- als auch softwarebasiert implementiert werden, oder um es einfacher zu sagen hardware- und softwarebasiert. WĂ€hrend softwarebasierte ACLs klar sind – das sind Regeln, die im Arbeitsspeicher (d. h. auf dem Control Plane) gespeichert und verarbeitet werden, mit allen damit verbundenen EinschrĂ€nkungen – werden wir in unserem Artikel untersuchen, wie hardwarebasierte ACLs implementiert sind und funktionieren. Als Beispiel verwenden wir die Switches der ExtremeSwitching-Serie von Extreme Networks.

ACL von Switches im Detail

Da uns speziell hardwarebasierte ACLs interessieren, ist die interne Implementierung des Data Plane, also die verwendeten Chipsets (ASICs), von grĂ¶ĂŸter Bedeutung fĂŒr uns. Die Switches aller Produktlinien von Extreme Networks basieren auf ASICs von Broadcom, weshalb die meisten der nachfolgenden Informationen auch fĂŒr andere auf dem Markt befindliche Switches, die auf Ă€hnlichen ASICs basieren, zutreffen werden.

Wie aus der obigen Abbildung ersichtlich ist, sind die „Content-Aware Engines“ direkt fĂŒr die Arbeit der ACL im Chipset zustĂ€ndig, sowohl fĂŒr „ingress“ als auch fĂŒr „egress“. Architektonisch sind sie identisch, nur dass „egress“ weniger skalierbar und weniger funktional ist. Physisch sind beide „Content-Aware Engines“ TCAM-Speicher plus zugehörige Logik, und jede benutzerdefinierte oder systemmĂ€ĂŸige ACL-Regel ist eine einfache Bitmaske, die in diesem Speicher geschrieben wird. Deshalb wird der Datenverkehr vom Chipset paketweise und ohne Leistungseinbußen verarbeitet.

Physisch wird dieselbe Ingress/Egress TCAM logisch in mehrere Segmente unterteilt (abhĂ€ngig von der verfĂŒgbaren Speichermenge und der Plattform), die sogenannten „ACL Slices“. Das gleiche geschieht beispielsweise mit einer physisch identischen HDD in Ihrem Laptop, wenn Sie mehrere logische Laufwerke darauf erstellen – C:>, D:>. Jeder ACL-Slice besteht seinerseits aus Speichereinheiten in Form von „Zeilen“, in die die „rules“ (Regeln/Bitmasken) geschrieben werden.

ACL von Switches im Detail
Die Aufteilung der TCAM in ACL-Slices basiert auf einer bestimmten Logik. In jedem einzelnen ACL-Slice können nur kompatible „rules“ gespeichert werden. Wenn eine der „rules“ nicht mit der vorherigen kompatibel ist, wird sie in den nĂ€chsten ACL-Slice gespeichert, unabhĂ€ngig davon, wie viele freie Zeilen fĂŒr „rules“ im vorherigen Slice noch verfĂŒgbar sind.

Woher kommt also diese VertrĂ€glichkeit oder UnvertrĂ€glichkeit von ACL-Regeln? Das liegt daran, dass eine "Zeile" im TCAM, in der die "Regeln" gespeichert werden, eine LĂ€nge von 232 Bit hat und in mehrere Felder unterteilt ist – Fixed, Field1, Field2, Field3. 232 Bit oder 29 Byte TCAM-Speicher reichen aus, um eine Bitmaske einer bestimmten MAC- oder IP-Adresse zu speichern, sind aber erheblich kleiner als der komplette Ethernet-Paketkopf. In jedem einzelnen ACL-Slice fĂŒhrt der ASIC eine unabhĂ€ngige Suche anhand der in F1-F3 gespeicherten Bitmasken durch. Diese Suche kann insgesamt auf den ersten 128 Bytes des Ethernet-Paketheads durchgefĂŒhrt werden. Gerade weil die Suche ĂŒber 128 Bytes erfolgen kann, wĂ€hrend nur 29 Bytes gespeichert werden können, muss fĂŒr eine korrekte Suche eine Verschiebung (Offset) relativ zum Beginn des Pakets eingestellt werden. Der Offset fĂŒr jedes ACL-Slice wird wĂ€hrend der Aufnahme der ersten Regel festgelegt, und wenn beim HinzufĂŒgen der nĂ€chsten Regel ein anderer Offset benötigt wird, wird diese Regel als inkompatibel zur ersten betrachtet und in das nĂ€chste ACL-Slice geschrieben.

In der nachstehenden Tabelle wird die VertrÀglichkeitsordnung der Bedingungen dargestellt, die in ACL geschrieben werden. Jede einzelne Zeile enthÀlt die untereinander vertrÀglichen und nicht vertrÀglichen, gebildeten Bitmasken.

ACL von Switches im Detail
Jedes einzelne Paket, das vom ASIC verarbeitet wird, startet eine parallele Suche in jedem ACL-Slice. Die ÜberprĂŒfung erfolgt bis zur ersten Übereinstimmung im ACL-Slice, wobei jedoch mehrere Übereinstimmungen fĂŒr dasselbe Paket in verschiedenen ACL-Slices zulĂ€ssig sind. Jede einzelne "Regel" hat eine entsprechende Aktion, die im Falle einer Übereinstimmung der Bedingung (Bitmasken) ausgefĂŒhrt werden muss. Wenn eine Übereinstimmung in mehreren ACL-Slices gleichzeitig auftritt, wird im Block "Action Conflict Resolution" basierend auf der PrioritĂ€t des ACL-Slices entschieden, welche Aktion ausgefĂŒhrt werden soll. Wenn in der ACL sowohl eine "Aktion" (zulassen/ablehnen) als auch ein "Aktion-Modifikator" (zĂ€hlen/QoS/protokollieren/
) festgelegt sind, wird bei mehrfachen Übereinstimmungen nur die priorisierte "Aktion" ausgefĂŒhrt, wĂ€hrend alle "Aktion-Modifikatoren" ausgefĂŒhrt werden. Das folgende Beispiel zeigt, dass beide ZĂ€hler erhöht werden und die priorisierte "Ablehnen"-Aktion ausgefĂŒhrt wird.

ACL von Switches im Detail
"ACL Solutions Guide" mit detaillierteren Informationen ĂŒber die Funktionsweise von ACL, öffentlich zugĂ€nglich auf der Website extremenetworks.com. Alle aufgetretenen oder verbleibenden Fragen können jederzeit an die Mitarbeiter unseres BĂŒros gerichtet werden – cis@extremenetworks.com.

Quelle: habr.com

60GB SSD 8Gb DDR4