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.

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.

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.

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.

mit detaillierteren Informationen ĂŒber die Funktionsweise von ACL, öffentlich zugĂ€nglich auf der Website . Alle aufgetretenen oder verbleibenden Fragen können jederzeit an die Mitarbeiter unseres BĂŒros gerichtet werden â .
Quelle: habr.com
