ACL камутатараў у дэталях

ACL (Access Control List) на сеткавых прыладах могуць быць рэалізаваны як апаратна, так і праграмна, ці звыкла кажучы hardware і software-based ACL. І калі з software-based ACL павінна быць усё зразумела, – гэта правілы якія захоўваюцца і апрацоўваюцца ў аператыўнай памяці (г.зн. на Control Plane), са ўсімі вынікаючымі адгэтуль абмежаваннямі, то як рэалізаваны і працуюць hardware-based ACL мы разбярэмся ў нашым артыкуле. У якасці прыкладу будзем выкарыстоўваць камутатары серыі ExtremeSwitching кампаніі Extreme Networks.

ACL камутатараў у дэталях

Бо нас цікавіць менавіта hardware-based ACL, то для нас мае першараднае значэнне менавіта ўнутраная рэалізацыя Data Plane, ці ўласна выкарыстоўваных чыпсэтаў (ASIC). Камутатары ўсіх лінеек кампаніі Extreme Networks пабудаваны на ASIC ад Broadcom, і таму большасць ніжэйпрыведзенай інфармацыі будзе таксама справядліва і для іншых камутатараў, прадстаўленых на рынку, і рэалізаваных на такіх жа ASIC.

Як відаць з малюнка вышэй непасрэдна за працу ACL у чыпсэце адказваюць "ContentAware Engine", асобна на "ingress" і "egress". Архітэктурна яны аднолькавыя, толькі "egress" меней які маштабуецца, і меней функцыянальны. Фізічна ж абодва "ContentAware Engine" гэта TCAM памяць плюс спадарожная логіка, а кожнае карыстацкае ці сістэмнае правіла ACL гэта простая біт маска (bit-mask) запісаная ў гэтую памяць. Менавіта таму апрацоўка чыпсэтам трафіку ажыццяўляецца папакетна і без дэградацыі прадукцыйнасці.

Фізічна адна і тая ж Ingress / Egress TCAM у сваю чаргу дзеліцца лагічна на некалькі сегментаў (залежыць ад колькасці самай памяці і платформы), так званыя "ACL slices". Да прыкладу, тое ж самае адбываецца з фізічна адным і тым жа HDD на вашым наўтбуку, калі вы ствараеце на ім некалькі лагічных дыскаў - З:>, D:>. Кожны ACL-slice у сваю чаргу складаецца з вочак памяці, у выглядзе "радкоў" куды і запісваюцца "rules" (правілы/біт-маскі).

ACL камутатараў у дэталях
Разбіўка TCAM на ACL-slices мае пад сабой пэўную логіку. У кожным з асобных ACL-slice могуць быць запісаны толькі сумяшчальныя паміж сабой "rules". Калі нейкі з "rules" не сумяшчальны з папярэднім, то ён будзе запісаны ў наступны па парадку ACL-slice, у незалежнасці ад таго колькі вольных радкоў пад "rules" засталося ў папярэднім.

Адкуль жа тады ўзнікае гэтая сумяшчальнасць ці несумяшчальнасць ACL rules? Справа ў тым, што адна радок TCAM, куды запісваецца rules , мае даўжыню 232 bit і дзеліцца на некалькі палёў Fixed, Field1, Field2, Field3. 232 bit ці 29 byte TCAM памяці суцэль досыць каб запісаць bit-mask вызначанага MAC або IP адрасы, але моцна менш, чым поўны загаловак Ethernet пакета. У кожным асобным ACL-slice ASIC вырабляе незалежны lookup па ўсталяваных у F1-F3 bit-mask. У цэлым жа гэты lookup можа вырабляцца па першых 128 bytes Ethernet загалоўку. Уласна, менавіта з-за таго, што пошук можа рабіцца па 128 bytes, а запісана можа быць толькі 29 bytes, для правільнага lookup павінна быць выстаўлена зрушэнне (offset) адносна пачаткі пакета. Offset для кожнага з ACL-slice выстаўляецца падчас запісу ў яго першага правіла, і калі пры запісе наступнага правіла выяўляецца неабходнасць у іншым offset, тое такое правіла лічыцца несумяшчальным з першым і запісваецца ў наступны ACL-slice.

У таблічцы ніжэй прыведзены парадак сумяшчальнасці ўмоў, якія прапісваюцца ў ACL. Кожны асобны радок утрымоўвае сумяшчальныя паміж сабой, і не сумяшчальныя з іншымі радкамі фармаваныя bit-mask.

ACL камутатараў у дэталях
Кожны асобны пакет апрацоўваны ASIC запускае раўналежны lookup у кожным ACL-slice. Праверка вырабляецца да першага супадзення ў ACL-slice, але пры гэтым дапушчаецца множнае супадзенне для аднаго і таго ж пакета ў розных ACL-slice. У кожнага асобнага "rule" ёсць адпаведнае дзеянне, якое трэба выканаць у выпадку супадзення ўмовы (bit-mask). Калі супадзенне адбылося адразу ў некалькіх ACL-slices, то ў блоку "Action Conflict Resolution" на падставе прыярытэту ACL-slice прымаецца рашэнне якое з дзеянняў выканаць. Калі ў ACL прапісана і "action" (permit/deny), і "action-modifier" (count/QoS/log/…), то пры шматлікіх супадзеннях будзе выканана толькі больш прыярытэтнае "action", "action-modifier" жа будуць выкананы ўсё. На прыкладзе ніжэй паказана, што будуць павялічаны абодва лічыльнікі і выканана больш прыярытэтнае "deny".

ACL камутатараў у дэталях
"ACL Solutions Guide" з больш дэталёвай інфармацыяй аб рабоце ACL у адкрытым доступе на сайце extremenetworks.com. Любыя пытанні, якія ўзніклі або засталіся, заўсёды можна задаць супрацоўнікам нашага офіса – [электронная пошта абаронена].

Крыніца: habr.com

Дадаць каментар