Особенности обработки пакетов
На LAN осуществляется захват кадров ethernet с инкапсуляцией
их по протоколу Etherip (RFC 3378). Далее эти инкапсулированные кадры
ethernet представляют собой обычные IPv4 пакеты, которые обрабатываются
платформо-независимой частью агента, где подвергаются фильтрации/шифрованию.
Возможно “прокидывание” полей (DF-бит, “Type of Service”)
оригинального IPv4-пакета в новый внешний IPv4-пакет (который содержит
инкапсулированный кадр ethernet):
- Оригинальные поля IPv4 и TCP заголовков (для осуществления операции
mssfix) могут быть найдены, если, в том числе, используется инкапсуляция
в 802.1q (vlan) или Q-in-Q. Их обнаружение при инкапсуляции в MPLS
в данный момент не реализовано, соответственно “прокидывание” полей
IPv4-заголовка, mssfix и pmtud срабатывать не будут.
Инкапсуляция по протоколу Etherip осуществляется только
на контролируемых внутренних (lan) интерфесах (10G_NNN).
Чтобы интерфейс был контролируемым, он должен быть описан
в файле ifaliases.cf и LSP. Контролироваться
могут только 10G_NNN и vEth интерфейсы. Если интерфейс не контролируется,
фреймы с него пропускаются без изменений.
Кадры ethernet, захваченные на LAN, передаются целиком
без изменений (исключение – включенный режим MSSFIX), со всеми имеющимися
заголовками (ethernet, vlan, q-in-q, mpls). Однако отрезается конечное
поле FCS (требование RFC на EtherIP).
Возможна передача фреймов в стек ОС и получение фреймов
из него:
- Входящие на внешний порт фреймы могут быть отправлены в стек ОС
посредством соответствующего данному порту виртуального
интерфейса vEth<n>. В стек ОС будут направлены следующие фреймы:
- Не содержащие IPv4-пакета (их поле ethertype отлично от 0x0800)
и прошедшие дополнительную фильтрацию. Всегда пропускаются ARP-фреймы,
остальные уничтожаются. Возможные исключения (по ethertype) описываются
в конфигурационном файле в параметре allowed_ethertypes.
- Содержащие IPv4 пакет, но не содержащие etherip-заголовка после
IPv4 заголовка, и прошедшие фильтрацию в платформо-независимой
части согласно правилам политики безопасности.
У всех фреймов, отправляемых в стек ОС через виртуальный
интерфейс vEth<n>, удаляется vlan-таг (802.1q/802.1p) (при наличии).
- Исходящие из стека ОС пакеты принимаются с виртуального интерфейса
vEth<n> и отправляются с соответсвующего ему порта:
- IPv4 пакеты проходят фильтрацию в платформо-независимой части
согласно правилам политики безопасности.
- Не содержащие IPv4 фреймы проходят дополнительную фильтрацию:
всегда пропускаются ARP-фреймы, остальные уничтожаются. Возможные
исключения (по ethertype) описываются в конфигурационном файле
в параметре allowed_ethertypes.
- Все исходящие фреймы с виртуального интерфейса vEth<n>,
соответствующие порту LAN, уничтожаются с увеличением счётчика
статистики d10.
У входящих на внешний порт (WAN) кадров ethernet отбрасываются
(после фильтрации по ethertype) оригинальные заголовки второго уровня
(ethernet header).
Для кадров ethernet, входящих на внешний порт, и получаемых
из стека ОС на виртуальный интерфейс vEth, соответствующий внешнему порту,
осуществляется фильтрация по полю ethernet-заголовка vlan identifier (802.1q).
Дальнейшее описание относится только к кадрам ethernet, получаемым из
указанных ранее мест:
- Значение поля priority code point при фильтрации не учитывается.
- Кадр ethernet с присутствущим полем 802.1q/802.1p и нулевым (0)
значением vlan identifier при фильтрации рассматривается как не имеющий
vlan-тега.
- Если в конфигурационном файле ipsm_dpdk.cfg выставлен vlan_identifier:
- Все приходящие на WAN порт кадры ethernet, у которых vlan identifier
не соответствует указанному в конфигурации, будут уничтожены.
- Все кадры, приходящие из стека ОС на интерфейс vEthN, у которых
присутствует ненулевой vlan identifier, будут уничтожены.
- Если в конфигурационном файле ipsm_dpdk.cfg не выставлен vlan_identifier:
- Все кадры ethernet, приходящие на WAN порт из сети, а также
приходяие из стека ОС на интерфейс vEthN, у которых vlan identifier
не равен нулю (0), будут уничтожены.
- Для прошедших фильтрацию кадров:
- У приходящих на WAN-порт кадров будет удалён vlan-таг.
- У приходящих из стека ОС на vEth кадров будет удалён vlan тег.
Это происходит когда фильтрацию прошёл кадр ethernet с нулевым
vlan id.
- Все кадры ethernet, содержащие 802.1ad (q-in-q) тег, будут уничтожены.
- Кадры ethernet, уничтоженные данным механизмом фильтрации, будут
упомянуты в статистике как d11.