Az ACL (Hozzáférés-vezérlő lista) a hálózati eszközökön valósítható meg hardveresen és szoftveresen, vagyis klasszikus értelemben hardware és software-alapú ACL-ként. Ha a software-alapú ACL-k világosak, mivel ezek a műveletek a memóriában (azaz a Control Plane-ben) tárolódnak és dolgozódnak fel, és ezzel együtt a kapcsolódó korlátozások is, akkor a hardveralapú ACL-ek működését részletesebben is megvizsgáljuk cikkünkben. Példaként az Extreme Networks ExtremeSwitching sorozatú switch-ét fogjuk használni.

Mivel minket a hardveralapú ACL-ek érdekelnek, számunkra a Data Plane belső megvalósítása, vagyis a használt chipek (ASIC) rendkívül fontos. Az Extreme Networks összes switch modelle az Broadcom ASIC chipekre épül, így az alábbi információk a piacon elérhető többi switch-re is érvényesek, amelyek szintén hasonló ASIC-eken alapulnak.
Ahogyan a fenti ábrán is látszik, a chipben az ACL működéséért a 'Content-Aware Engine' felel, külön az 'ingress' és az 'egress' esetén. Architektúrájuk azonos, csak az 'egress' kisebb mértékben skálázható és funkcionalitása is korlátozottabb. Fizikailag mindkét 'Content-Aware Engine' TCAM memóriából, valamint a hozzá tartozó logikából áll, és minden felhasználói vagy rendszerbeli ACL szabály egy egyszerű bitmaszk (bit-mask), amely ebben a memóriában van rögzítve. Ezért történik a chip általi csomagfeldolgozás lépésről lépésre és teljesítménycsökkenés nélkül.
Fizikailag a belépő/kimeneti TCAM logikailag több szegmensre oszlik (attól függően, hogy hány memória és platform áll rendelkezésre), úgynevezett 'ACL slices'-ekre. Például ugyanez történik egy fizikailag azonos HDD-n a laptopján, amikor több logikai lemezt hoz létre rajta - C:>, D:>. Minden ACL-szelet cellákból áll, amelyek 'sorok' formájában tárolják a 'szabályokat' (rules/bit-maszkok).

A TCAM ACL-szeletekre bontása mögött bizonyos logika áll. Minden egyes ACL-szeletben csak egymással kompatibilis 'szabályok' tárolhatók. Ha bármelyik 'szabály' nem kompatibilis az előzővel, akkor a következő ACL-szeletbe kerül rögzítésre, függetlenül attól, hogy hány szabad sor maradt az előzőben a 'szabályok' számára.
Honnan származik akkor ez az ACL szabályok közötti kompatibilitás vagy inkompatibilitás? Az a helyzet, hogy egy "sor" TCAM, ahová a "szabályokat" írják, 232 bit hosszú, és több mezőre oszlik – Fixed, Field1, Field2, Field3. A 232 bit vagy 29 byte TCAM memória elegendő ahhoz, hogy tárolja egy adott MAC vagy IP cím bit-maszát, de sokkal kevesebb, mint egy teljes Ethernet csomag fejléc. Minden egyes ACL-szeletben az ASIC független lekérdezést végez a F1-F3 bit-maszkban beállítottak alapján. Összességében ez a lekérdezés a 128 byte Ethernet fejléc első részén történhet. Valójában az a helyzet, hogy a keresés a 128 byte-on végezhető, míg csak 29 byte tárolható, a pontos lekérdezéshez el kell helyezni egy eltolást (offset) a csomag elejéhez képest. Az offset minden egyes ACL-szelethez az első szabály írásakor van beállítva, és ha a következő szabály írásakor más offset szükséges, azt a szabályt inkompatibilisnek tekintik az elsővel, és a következő ACL-szeletbe írják.
Az alábbi táblázatban bemutatjuk az ACL-be írt feltételek kompatibilitási sorrendjét. Minden egyes sor tartalmazza a más sorokkal kompatibilis és inkompatibilis bit-maszokat.

Minden egyes csomagot feldolgozó ASIC párhuzamos lekérdezést indít minden ACL-szeletben. A vizsgálat az első találatig történik az ACL-szeletben, de megengedett, hogy ugyanarra a csomagra több találat is legyen különböző ACL-szeletekben. Minden egyes "szabály" megfelelő művelettel rendelkezik, amelyet végre kell hajtani, ha a feltétel (bit-masz) teljesül. Ha egyidejűleg több ACL-szeletben találat történik, akkor az "Action Conflict Resolution" blokkjában az ACL-szelet prioritása alapján döntenek arról, hogy melyik műveletet hajtsák végre. Ha az ACL-ben szerepel mind "action" (engedélyezés/tagadás) és "action-modifier" (számlálás/QoS/log/…), akkor több találat esetén csak a magasabb prioritású "action" fog végrehajtásra kerülni, az "action-modifier" műveletek viszont végrehajtódnak mind. Az alábbi példa bemutatja, hogy mindkét számláló növelésre kerül, és a magasabb prioritású "tagadás" fog végrehajtódni.

több részletes információval az ACL működéséről nyilvánosan elérhető a weboldalon . Bármilyen felmerülő vagy megmaradt kérdést mindig fel lehet tenni irodánk munkatársainak – .
Forrás: habr.com
