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

Додати коментар або відгук