Особенности обработки пакетов

На LAN осуществляется захват кадров ethernet с инкапсуляцией их по протоколу Etherip (RFC 3378). Далее эти инкапсулированные кадры ethernet представляют собой обычные IPv4/IPv6 пакеты, которые обрабатываются платформа-независимой частью продукта, где подвергаются фильтрации/шифрованию.

Инкапсуляция по протоколу Etherip осуществляется только на контролируемых внутренних LAN интерфейсах (10G_NNN).

Чтобы интерфейс был контролируемым, он должен быть описан в конфигурационном файле /etc/ifaliases.cf и в политике безопасности (LSP). Контролироваться могут только 10G_NNN и vEth интерфейсы. Если интерфейс (10G_NNN) не контролируется, фреймы с него уничтожаются с диагностикой в klogview:

dropped out packet 1.1.1.1->2.2.2.2, proto 97, len 164, if 10G_002: unknown network interface

Возможно “прокидывание” полей (DF-бит, “Type of Service”) оригинального IP-пакета в новый внешний IP-пакет (который содержит инкапсулированный кадр ethernet). Оригинальные поля IP-пакета и TCP заголовков (для осуществления операции mssfix) могут быть найдены, если, в том числе, используется инкапсуляция в 802.1q (vlan) или Q-in-Q. Их обнаружение при инкапсуляции в MPLS в данный момент не реализовано, соответственно “прокидывание” полей IP-заголовка, mssfix и pmtud срабатывать не будут.

Кадры ethernet, захваченные на LAN, передаются целиком без изменений (исключение – включенный режим MSSFIX), со всеми имеющимися заголовками (ethernet, vlan, q-in-q, mpls). Однако отрезается конечное поле FCS (требование RFC на EtherIP).

 

Возможна передача фреймов в стек ОС и получение фреймов из него:

•      Входящие на внешний порт фреймы могут быть отправлены в стек ОС посредством соответствующего данному порту виртуального интерфейса vEth<n>. В стек ОС будут направлены следующие фреймы:

•      Не содержащие пакета (их поле ethertype отлично от IPv4 (0x0800) и IPv6 (0x86DD)) и прошедшие дополнительную фильтрацию. Всегда пропускаются ARP-фреймы, остальные уничтожаются. Возможные исключения (по ethertype) описываются в конфигурационном файле в параметре allowed_ethertypes.

•      Содержащие пакет, но не содержащие etherip-заголовка после IP-заголовка, и прошедшие фильтрацию в платформа-независимой части согласно правилам политики безопасности.

У всех фреймов, отправляемых в стек ОС через виртуальный интерфейс vEth<n>, удаляется vlan-таг (802.1q/802.1p) (при наличии).

•      Исходящие из стека ОС пакеты принимаются с виртуального интерфейса vEth<n> и отправляются с соответствующего ему порта:

•      Пакеты проходят фильтрацию в платформа-независимой части согласно правилам политики безопасности.

•      Не содержащие IP фреймы проходят дополнительную фильтрацию: всегда пропускаются ARP-фреймы, остальные уничтожаются. Возможные исключения (по ethertype) описываются в конфигурационном файле в параметре allowed_ethertypes.

•      Все исходящие фреймы с виртуального интерфейса vEth<n>, соответствующие порту LAN, уничтожаются с увеличением счётчика статистики d10.

 

У входящих на внешний порт (WAN), а также исходящих из стека ОС кадров Ethernet, содержащих пакеты и проходящих фильтрацию на контролируемом интерфейсе, отбрасываются (после фильтрации по ethertype) оригинальные заголовки второго уровня (ethernet header). Исключение делается для тех кадров ethernet, содержащих пакеты и проходящих фильтрацию на контролируемых интерфейсах vEth*, у которых после прохождения фильтрации и инкапсуляции/декапсуляции в ipsec не изменился ip-адрес назначения (ip destination). Для них сохраняются оригинальные MAC-адреса.

Для кадров 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.