159 | | Условия правил могут включать себя как проверку данных пакета (например MAC адрес отправителя и получателя, протокол, IP адрес отправителя, IP адрес получателя, поля DSCP и т.п.), так и метаданных, назначенных принятому пакету коммутатором (например номер порта, номер QoS профиля, VLAN ID и т.п.). Для проверки условий списков PCL коммутатор формирует ключ, состоящий из данных и метаданных пакета, о которых блыо сказано выше. В зависимости от типа принятого пакета (не-IP, ARP, IPv4, IPv6) и настроек коммутатора может быть сформировано семь различных типов ключа размером 24 или 48 байт. В свою очередь, условия правил PCL состоят из значения и маски, также размером 24 или 28 байт каждые. Проверка условия заключается в накладывании (побитном умножении) маски на ключ поиска и сравнения результата с значением условия правила. Если результат совпал с заданным значением, условие правила считается выполненным, и коммутатор выполняет указанное правилом действие. Таким образом, условие правила может проверять любое из составляющее ключ полей на равенство заданному значению (если соответствующие полю биты маски установлены в 1), игнорировать значение поля (если соответствующие полю биты маски сброшены в 0) или проверять только часть значения поля (если часть соответствующих битов маски установлена), например равенство префикса адреса IPv6 заданному значению. |
160 | | |
161 | | Аглоритм выбора типа (формата) ключа показан на следующий диаграмме. |
| 159 | Условия правил могут включать в себя как проверку данных пакета (например MAC адрес отправителя и получателя, протокол, IP адрес отправителя, IP адрес получателя, поля DSCP и т.п.), так и метаданных, назначенных принятому пакету коммутатором (например номер порта, номер QoS профиля, VLAN ID и т.п.). Для проверки условий списков PCL коммутатор формирует ключ, состоящий из данных и метаданных пакета, о которых блыо сказано выше. В зависимости от типа принятого пакета (не-IP, ARP, IPv4, IPv6) и конфигурации PCL может быть сформировано семь различных типов ключа размером 24 или 48 байт. В свою очередь, условия правил PCL состоят из значения и маски, также размером 24 или 28 байт каждые. Проверка условия заключается в накладывании (побитном умножении) маски на ключ поиска и сравнения результата с значением условия правила. Если результат совпал с заданным значением, условие правила считается выполненным, и коммутатор выполняет указанное правилом действие. Таким образом, условие правила может проверять любое из составляющее ключ полей на равенство заданному значению (если соответствующие полю биты маски установлены в 1), игнорировать значение поля (если соответствующие полю биты маски сброшены в 0) или проверять только часть значения поля (если часть соответствующих битов маски установлена), например равенство префикса адреса IPv6 заданному значению. |
| 160 | |
| 161 | В памяти коммутатора могут храниться различные списки правил PCL. В зависимости от того, каким портом/транком/VLAN принят пакет, к нему могут применяться разные списки правил. Также разные списки правил могут применяться на первом и втором проходах поиска. Для идентификации списка правил служит 10-битный идентификатор PCL (PCL-ID). Значение идентификатора назначается в соответствии с конфигурацией PCL. Поле PCL-ID является частью условия любого правила PCL. Таким образом, любое правило PCL может быть привязано к конкретному значению PCL-ID (если все биты PCL-ID "открыты" маской), может быть привязано к нескольким PCL-ID (если только часть битов PCL-ID "открыты маской), или применяться независимо от PCL-ID (если поле PCL-ID полностьб "закрыто" маской). |
| 162 | |
| 163 | Алгоритм выбора типа (формата) ключа показан на следующий диаграмме. |
| 209 | Как уже было сказано выше, конфигурация PCL определяет: |
| 210 | - какие проходы поиска PCL правил (lookup 0 и/или lookup1) будут выполняться; |
| 211 | - значение PCL-ID для каждого из выполняемых проходов (lookup 0 и lookup 1); |
| 212 | - тип (формат) ключа. |
| 213 | |
| 214 | В коммутаторе существует таблица, содержащая 1152 конфигурации PCL. Существует два варианта выбора конкретной конфигурации PCL из таблицы: |
| 215 | - в зависимости от номера порта или транка, принявшего пакет (source port/trunk); |
| 216 | - в зависимости от номера физического порта или VLAN ID пакета. |
| 217 | Выбор варианта осуществляется конфигурационным параметром "PCL-ID Mode" в диалоге "Policy Engine Global Configuration". |
| 218 | |
| 219 | Если параметр "PCL-ID Mode" установлен в значение "port/VLAN", выбор конфигурации PCL осуществляется в зависимости от конфигурационного параметра "PCL-ID assignment mode" принявшего пакет порта. Если параметр "PCL-ID assignment mode" принявшего пакет порта установлен в значение "according to the VLAN ID", и VLAN ID пакета находится в диапазоне от 0 до 1023, конфигурация PCL выбирается по значению VLAN ID. Если значение VLAN ID пакета больше чем 1023 или если параметр "PCL-ID assignment mode" принявшего пакет порта установлен в значение "according to the Incoming port", конфигурация PCL выбирается по номеру порта плюс 1024. |
| 220 | |
| 221 | {{{#!plantuml |
| 222 | @startuml |
| 223 | |
| 224 | start |
| 225 | if (PCL-ID Mode?) then (port/VLAN) |
| 226 | if(PCL-ID assignment mode?) then (according to the\nIncoming port) |
| 227 | #palegreen :index = <номер порта> + 1024; |
| 228 | else (according to the VLAN ID) |
| 229 | if(VLAN ID < 1024?) then (нет) |
| 230 | #palegreen :index = <номер порта> + 1024; |
| 231 | else (да) |
| 232 | #palegreen :index = <VLAN ID>; |
| 233 | endif |
| 234 | endif |
| 235 | else (source port/trunk) |
| 236 | if(Пакет из транка?) then (нет) |
| 237 | #palegreen :index = <номер порта>\n(CPU=1023); |
| 238 | else (да) |
| 239 | #palegreen :index = <номер транка> + 1024; |
| 240 | endif |
| 241 | endif |
| 242 | kill |
| 243 | |
| 244 | @enduml |
| 245 | }}} |
| 246 | |
| 247 | |
| 640 | |
| 641 | TCAM mode:: Если конфигураицонный параметр "TCAM mode select" имеет значение "static", параметр "TCAM mode" определяет, какого типа PCL правила содержатся в ассоциативной памяти коммутатора (TCAM): |
| 642 | - **narrow** - TCAM содержит стандартные правила с узким (коротким) 24-байтным ключом; |
| 643 | - **wide** - TCAM содержит расширенные правила с широким (длинным) 48-байтным ключом. |
| 644 | |
| 645 | PCL-ID Mode:: Параметр определяет, каким образом коммутатор выбирает конфигурацию PCL из таблицы конфигураций PCL: |
| 646 | - **source port/trunk** - конфигурация выбирается по номеру порта или номеру транка; |
| 647 | - **port/VLAN** - конфигурация выбирается по VLAN ID или номеру порта. |