Comutați ACL-urile în detaliu

ACL-urile (Lista de control al accesului) pe dispozitivele de rețea pot fi implementate atât în ​​hardware cât și în software, sau mai frecvent vorbind, ACL-uri bazate pe hardware și software. Și dacă totul ar trebui să fie clar cu ACL-urile bazate pe software - acestea sunt reguli care sunt stocate și procesate în RAM (adică pe planul de control), cu toate restricțiile care decurg, atunci vom înțelege cum sunt implementate ACL-urile bazate pe hardware și cum funcționează. articol. Ca exemplu, vom folosi comutatoare din seria ExtremeSwitching de la Extreme Networks.

Comutați ACL-urile în detaliu

Deoarece suntem interesați de ACL-uri bazate pe hardware, implementarea internă a planului de date sau a chipset-urilor reale (ASIC) utilizate, este de o importanță capitală pentru noi. Toate liniile de comutatoare Extreme Networks sunt construite pe ASIC-uri Broadcom și, prin urmare, majoritatea informațiilor de mai jos vor fi valabile și pentru alte switch-uri de pe piață care sunt implementate pe aceleași ASIC-uri.

După cum se poate vedea din figura de mai sus, „ContentAware Engine” este direct responsabil pentru funcționarea ACL-urilor în chipset, separat pentru „intrare” și „ieșire”. Din punct de vedere arhitectural, sunt la fel, doar „ieșirea” este mai puțin scalabilă și mai puțin funcțională. Din punct de vedere fizic, ambele „motoare ContentAware” sunt memorie TCAM plus logica însoțitoare, iar fiecare regulă ACL de utilizator sau sistem este o simplă mască de biți scrisă în această memorie. De aceea, chipsetul procesează trafic pachet cu pachet și fără degradarea performanței.

Din punct de vedere fizic, același Ingress/Egress TCAM, la rândul său, este împărțit logic în mai multe segmente (în funcție de cantitatea de memorie în sine și de platformă), așa-numitele „slices ACL”. De exemplu, același lucru se întâmplă cu același HDD pe laptop atunci când creați mai multe unități logice pe acesta - C:>, D:>. Fiecare ACL-slice, la rândul său, constă din celule de memorie sub formă de „șiruri” în care sunt scrise „reguli” (reguli/măști de biți).

Comutați ACL-urile în detaliu
Împărțirea TCAM în felii ACL are o anumită logică în spate. În fiecare dintre segmentele ACL individuale, pot fi scrise doar „reguli” care sunt compatibile între ele. Dacă vreuna dintre „reguli” nu este compatibilă cu cea anterioară, atunci va fi scrisă în următoarea porțiune ACL, indiferent de câte linii libere pentru „reguli” au rămas în cea anterioară.

Atunci de unde vine această compatibilitate sau incompatibilitate a regulilor ACL? Faptul este că o „linie” TCAM, unde sunt scrise „reguli”, are o lungime de 232 de biți și este împărțită în mai multe câmpuri - Fixed, Field1, Field2, Field3. Memoria TCAM de 232 de biți sau 29 de biți este suficientă pentru a înregistra masca de biți a unei anumite adrese MAC sau IP, dar mult mai puțin decât antetul întregului pachet Ethernet. În fiecare felie ACL individuală, ASIC efectuează o căutare independentă în conformitate cu masca de biți setată în F1-F3. În general, această căutare poate fi efectuată folosind primii 128 de octeți ai antetului Ethernet. De fapt, tocmai pentru că căutarea poate fi efectuată pe 128 de octeți, dar se pot scrie doar 29 de octeți, pentru o căutare corectă trebuie setat un offset față de începutul pachetului. Offset-ul pentru fiecare ACL-slice este setat atunci când prima regulă este scrisă în ea și dacă, atunci când scrieți o regulă ulterioară, este descoperită necesitatea unui alt offset, atunci o astfel de regulă este considerată incompatibilă cu prima și este scrisă în următoarea ACL-slice.

Tabelul de mai jos arată ordinea de compatibilitate a condițiilor specificate în ACL. Fiecare linie individuală conține măști de biți generate care sunt compatibile între ele și incompatibile cu alte linii.

Comutați ACL-urile în detaliu
Fiecare pachet individual procesat de ASIC rulează o căutare paralelă în fiecare felie ACL. Verificarea se efectuează până la prima potrivire în secțiunea ACL, dar sunt permise potriviri multiple pentru același pachet în diferite secțiuni ACL. Fiecare „regulă” individuală are o acțiune corespunzătoare care trebuie efectuată dacă condiția (mască de biți) este potrivită. Dacă o potrivire are loc în mai multe secțiuni ACL simultan, atunci în blocul „Rezolvarea conflictelor de acțiune”, pe baza priorității segmentului ACL, se ia o decizie care acțiune să fie efectuată. Dacă ACL conține atât „acțiune” (permis/refuzare) cât și „modificator de acțiune” (număr/QoS/log/…), atunci în cazul potrivirilor multiple va fi executată doar „acțiunea” cu prioritate mai mare, în timp ce „acțiunea” -modifier” va fi complet completat. Exemplul de mai jos arată că ambele contoare vor fi incrementate și va fi executată „refuzarea” cu prioritate mai mare.

Comutați ACL-urile în detaliu
„Ghid de soluții ACL” cu informații mai detaliate despre funcționarea ACL în domeniul public pe site extremenetworks.com. Orice întrebări care apar sau rămân pot fi întotdeauna adresate personalului nostru de la birou - [e-mail protejat].

Sursa: www.habr.com

Adauga un comentariu