Значения параметров, специфичных для данных исполнений, задаются в файле /opt/VPNagent/etc/ipsm_dpdk.cfg.
Во время инициализации были выполнены минимально-необходимые настройки файла ipsm_dpdk.cfg. Изменить сделанные при инициализации настройки можно при помощи скрипта /opt/VPNagent/bin/configure_dp.py.
Для оптимальной работы продукта может потребоваться ручное редактирование конфигурационного файла ipsm_dpdk.cfg, подробное описание которого приведено ниже.
Конфигурационный файл ipsm_dpdk.cfg разделён на секции. Название секции заключается в квадратные скобки “[]” и пишется заглавными буквами.
Возможные секции: EAL, MISC, PERFORMANCE, PORT<N>. Прочие игнорируются.
Не должны присутствовать две секции с одинаковыми именами. Возможно присутствие нескольких секций PORT<N>, отличающихся порядковым номером, например, PORT0, PORT1.
Проверяются и используются только значения известных параметров. Неизвестные параметры, в том числе с ошибкой в имени, либо существующие параметры, ошибочно указанные в другой секции – игнорируются.
В конфигурационном файле допускаются комментарии. Символ комментария – точка с запятой “;“. Всё, стоящее в строке после “;” будет проигнорировано.
Внутри секций перечисляются параметры (по одному на строку) в виде:
имя_параметра = значение_параметра
Секция EAL (Environment Abstraction Layer):
Данная секция содержит параметры, необходимые для инициализации и запуска подсистем DPDK:
• Параметр corelist – содержит перечень доступных для ядер процессора, включая ядра HyperThreading. Ядра задаются как список диапазонов. Обычно это все ядра системы. Обязательный параметр (должен присутствовать только один из coremask, cpuset, corelist).
corelist = 0-6,8-62,72-127
• Параметр coremask – битовая маска доступных для ПАК «С-Терра Шлюз» ядер процессора, включая ядра HyperThreading. Обычно это все ядра системы. Обязательный параметр (должен присутствовать только один из coremask, cpuset, corelist).
coremask = 0xffffffffffffffff; для 64 ядер
• Параметр channels – количество каналов памяти. Опциональный параметр. Значение по умолчанию 1. Допустимые значения – от 1 до 8.
• Параметр eal_log_level – уровень протоколирования подсистемы DPDK. Чем больше значение параметра, тем подробнее. Опциональный параметр. Значение по умолчанию 4 (RTE_LOG_ERR). Допустимые значения – от 1 (RTE_LOG_EMERG) до 8 (RTE_LOG_DEBUG).
• Параметр cpuset - даёт возможность задавать детальное соответствие потоков DPDK (т.н. lcore) и ядер процессора. Например, с его помощью можно задать количество потоков, большее, чем количество доступных ядер.
Описание синтаксиса:
cpuset = ’<lcore_set>[@cpu_set][,<lcore_set>[@cpu_set],...]’
‘lcore_set’ and ‘cpu_set’ can be a single number, range or a group.
A number is a “digit([0-9]+)”; a range is “<number>-<number>”; a group is “(<number|range>[,<number|range>,...])”.
(Подробнее можно посмотреть по ссылке: http://dpdk.org/doc/guides-16.04/prog_guide/env_abstraction_layer.html#eal-pthread-and-lcore-affinity). Опциональный параметр (должен присутствовать только один из coremask, cpuset, corelist). По умолчанию отключено.
Пример:
cpuset = ’1,2@(5-7),(3-5)@(0,2),(0,6),7-8’
• Параметр rx_pthresh - задаёт низкоуровневый параметр сетевой карты “RX prefetch threshold”. Допустимые значения – от 0 до 255. Опциональный параметр. Значение по умолчанию –: 8.
• Параметр rx_hthresh - задаёт низкоуровневый параметр сетевой карты “RX host threshold”. Допустимые значения – от 0 до 255. Опциональный параметр. Значение по умолчанию –: 8.
• Параметр rx_wthresh - задаёт низкоуровневый параметр сетевой карты “RX write-back threshold”. Допустимые значения – от 0 до 255. Опциональный параметр. Значение по умолчанию – 4.
• Параметр tx_pthresh - задаёт низкоуровневый параметр сетевой карты “TX prefetch threshold”. Допустимые значения – от 0 до 255. Опциональный параметр. Значение по умолчанию – 36.
• Параметр tx_hthresh - задаёт низкоуровневый параметр сетевой карты “TX host threshold”. Допустимые значения – от 0 до 255. Опциональный параметр. Значение по умолчанию – 0.
• Параметр tx_wthresh - задаёт низкоуровневый параметр сетевой карты “TX write-back threshold”. Допустимые значения – от 0 до 255. Опциональный параметр. Значение по умолчанию – 0.
Секция MISC.
Содержит разнообразные общие параметры, такие как настройки протоколирования, номера портов isakmp/natt, включение режима mssfix:
• Параметр print_stats – вывод статистики ipsm-app – rx/tx/drop, sendqueue size. Опциональный параметр. Возможные значения – “yes”/“no”. По умолчанию отключено (no).
Пример:
stats_file = /tmp/stats_gw2
|
Внимание! |
Если конфигурационный файл создавался с помощью скрипта configure_dp.py, то в нем будет установлено значение по умолчанию yes. Параметр stats_period задаёт периодичность отображения статистики (в секундах). Работает только при включенном print_stats. Допустимые значения – от 1 до 86400 (сутки). Опциональный параметр. Значение по умолчанию – 1. Параметр stats_file – вывод статистики в файл. Работает только при включенном print_stats. Опциональный параметр. По умолчанию отключено (вывод идёт на консоль при ручном запуске ipsm-app с параметром -f). Файл статистики описан в разделе «Возможности протоколирования и статистики для настройки шлюза». |
• Параметр stats_period - задаёт периодичность отображения статистики (в секундах). Работает только при включенном print_stats. Допустимые значения – от 1 до 86400 (сутки). Опциональный параметр. Значение по умолчанию - 1.
• Параметр stats_file – вывод статистики в файл. Работает только при включенном print_stats. Опциональный параметр. По умолчанию отключено (вывод идёт на консоль при ручном запуске ipsm-app с параметром -f).
Пример:
stats_file = /tmp/stats_gw2
• Параметр stats_file_size задаёт максимальный размер файла статистики в мегабайтах. При превышении данного размера файл будет переименован с добавлением расширения “.old”. Если файл с расширением “.old” уже есть, он будет удалён. Для вывода будет создан новый файл с оригинальным именем. Допустимые значения – от 1 до 100. Опциональный параметр. Значение по умолчанию – 10.
• Параметр print_frames вывод входящих/отправляемых кадров ethernet в шестнадцатеричном виде. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию отключено (no).
• Параметр frames_file – выводить печать кадров ethernet в файл. Работает только при включенном print_frames. Опциональный параметр. По умолчанию отключено (вывод идёт на консоль при ручном запуске ipsm-app с параметром -f).
Пример:
frames_file = /tmp/frames.txt
• Параметр frames_file_size - задаёт максимальный размер файла дампа кадров в мегабайтах. При превышении данного размера файл будет переименован с добавлением окончания “.old”. Если “.old” уже есть, он будет удалён. Для вывода будет создан новый файл с оригинальным именем. Допустимые значения – от 1 до 200. Опциональный параметр. Значение по умолчанию - 50.
• Параметр frames_time - включает печать времени вместе с дампом пакета. Формат времени – аналогично утилите klogview (см. «Специализированные команды»). Работает только при наличии print_frames. Опциональный параметр. Возможные значения – “yes”/“no”. По умолчанию отключено (no).
• Параметр pf_max_bytes – задаёт максимальное количество байт (с начала кадра), которые будут напечатаны. Работает только при наличии print_frames. Опциональный параметр. Допустимые значения – от 14 до 1400. По умолчанию – 42 байта.
• Параметр natt_port позволяет задать номер NATT-порта. Опциональный параметр. Допустимые значения – от 1 до 65535. Значение по умолчанию – 4500.
• Параметр rte_log_file - задаёт имя файла, в который будут выводиться протоколируемые события DPDK. Подробность вывода зависит от параметра eal_log_level. Опциональный параметр. По умолчанию – отключено.
Пример:
EAL: Detected lcore 0 as core 0 on socket 0
EAL: Detected lcore 1 as core 1 on socket 0
EAL: Support maximum 254 logical core(s) by configuration.
EAL: Setting up physically contiguous memory…
EAL: Creating 4 segment lists: n_segs:32 socket_id:0 hugepage_sz:1073741824
EAL: TSC frequency is ~2000000 KHz
EAL: Master lcore 0 is ready (tid=7f2d5ea33c00;cpuset=[0])
EAL: PCI device 0000:02:00.0 on NUMA socket 0
EAL: probe driver: 8086:1521 net_e1000_igb
EAL: Not managed by a supported kernel driver, skipped
EAL: PCI device 0000:02:00.1 on NUMA socket 0
EAL: probe driver: 8086:1521 net_e1000_igb
EAL: Not managed by a supported kernel driver, skipped
EAL: PCI device 0000:06:00.0 on NUMA socket 0
EAL: probe driver: 8086:1572 net_i40e
EAL: PCI memory mapped at 0x940000000
EAL: PCI memory mapped at 0x940800000
• Параметр rte_log_file_size - задаёт максимальный размер файла протоколирования событий DPDK в мегабайтах. При превышении данного размера файл будет переименован с добавлением окончания «.old» Если «.old» уже есть, он будет удалён. Для вывода будет создан новый файл с оригинальным именем. Допустимые значения — от 1 до 100. Опциональный параметр. Значение по умолчанию: 10.
• Параметр enable_pdump - управляет возможностью получать дампы трафика с порта в формате .pcap при помощи утилит dpdk-dumpcap и dpdk-pdump, Опциональный параметр. Возможные значения – “yes”/“no”. По умолчанию отключено (no). При включённом параметре возможно некоторое падение производительности при обработке сетевых пакетов малого размера.
• Параметр macaddr_update_period - задаёт периодичность обновления (в миллисекундах) mac-адесов для IP-адресов, указанных в параметрах gw_ip и gw_ip6. Допустимые значения – от 0 до 10000. Опциональный параметр. Значение по умолчанию – 200.
• Параметр kmod_name - задаёт имя модуля ядра (драйвера), при помощи которого dpdk присоединяется к физическому порту. Допустимые значения: “igb_uio”, “vfio-pci”, “uio_pci_generic”. Опциональный параметр. Значение по умолчанию – “igb_uio”. Особенности использования:
• “vfio-pci” и “uio_pci_generic” – стандартные драйверы ОС Linux, а “igb_uio” собирается в составе DPDK.
• Использование “uio_pci_generic” ощутимо снижает производительность.
• Для использования “vfio-pci” нужно включать параметр загрузки ядра “iommu=on”.
Секция PERFORMANCE.
Содержит настройки, влияющие на производительность (скорость, задержки, пересортировка):
• Параметр threads задаёт количество вычислительных потоков. Исходя из него, должно формироваться количество интерфейсов DP<N> и идентификаторов потока для параллельной обработки трафика. Максимальное значение равно количеству ядер, доступных для DPDK (по параметру coremask) минус 3 * <количество контролируемых физических портов> минус 2. Допустимые значения – от 1 до 1018. Обязательный параметр.
Параметр threads должен быть одинаковым для партнёров по соединению. При разном значении threads у партнёров будут происходить потери части пакетов, идущих из подсети шлюза с большим значением threads. В логе (syslog) будут сообщения о неудаче при построениии ike (обращать внимание на stream id больший чем threads):
Jan 26 20:44:43 localhost vpnsvc: 10000001 <1:356> Start IKE session, Request: Inbound ISAKMP packet, type Quick, peer 192.168.15.53, sessionId 95F5C1C8131C9E27.619D1956
Jan 26 20:44:43 localhost vpnsvc: 1000001c <1:356> Received notification [STREAM-ID]: Set stream id for IPsec SA, Stream id:6
Jan 26 20:44:43 localhost vpnsvc: 1000000b <1:356> Receive traffic request: (192.168.160.137,,)->(192.168.160.139,,)
Jan 26 20:44:43 localhost vpnsvc: 10000018 <1:356> IKE session stopped at [Quick Mode, Responder, Packets 1,2][Check incom IDs], Reason: Invalid traffic request
Jan 26 20:44:43 localhost vpnsvc: 0010011c <1:356> Incoming connection failed: [Quick Mode, Responder, Packets 1,2] [Check incom IDs] : Invalid traffic request. Peer 192.168.15.53, id "C=RU,CN=Gate53_DP", IKERule ike
Также см. описание параметров thr_start и thr_count секции PORT.
• Параметр sendqueue_size – размер (в пакетах) очереди sendqueue. Она служит для исправления пересортировки пакетов. Допустимые значения – от 1000 до 200000. Опциональный параметр. Значение по умолчанию – 64000.
• Параметр disable_sendqueue – отключение механизма исправления пересортировки пакетов. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию отключено (no).
• Параметр tx_retries - задаёт количество попыток отправить обработанный кадр ethernet в физический порт, если его отправка по каким-либо причинам не удалась. При превышении этого значения он будет отброшен. Допустимые значения – от 0 до 1000. Опциональный параметр. Значение по умолчанию – 10.
• Параметр tx_delay – задержка (в микросекундах) перед повторной попыткой отправки пакета. Допустимые значения – от 0 до 200. Опциональный параметр. Значение по умолчанию – 20.
• Параметр rx_desc – количество RX-дескрипторов (на приём) сетевой карты. Зависит от используемого аппаратного обеспечения. Допустимые значения – от 32 до 4096, значение должно быть степенью 2, значение должно быть кратно 32. Опциональный параметр. Значение по умолчанию – 4096.
Рекомендуемое значение для i40e (семейство Intel X710) - 4096.
Рекомендуемое значение для ixgbe (семейство Intel 82599) - 4096.
• Параметр tx_desc - количество TX-дескрипторов (на отправку) сетевой карты. Зависит от используемого аппаратного обеспечения. Допустимые значения – от 32 до 4096, значение должно быть степенью 2, значение должно быть кратно 32. Опциональный параметр. Значение по умолчанию – 4096.
Рекомендуемое значение для i40e (семейство Intel X710) - 4096.
Рекомендуемое значение для ixgbe (семейство Intel 82599) - 4096.
• Параметр no_max_freq – отключение механизма повышения тактовой частоты на используемых ядрах процессора. Можно использовать, если выдаётся диагностика “Power init failed” в файле /tmp/ipsm-app/error.log. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию отключено (no).
• Параметр sendq_burst_threshold устанавливает отсечение по количеству пакетов из sendqueue, которые могут быть отправлены подряд без задержки. Если при просмотре пакетов из очереди исправления пересортировки (sendqueue) необходимо отправить подряд много пакетов, то при отправке количества пакетов, равного sendq_burst_threshold делается задержка, равная sendq_burst_delay. Это может использоваться для исключения перегрузки сетевой карты и канала связи. Допустимые значения – от 100 до 200000 (но не больше заданного максимального размера очереди, заданного в sendqueue_size). Опциональный параметр. По умолчанию отключено.
• Параметр sendq_burst_delay - задаёт задержку в микросекундах при срабатывании sendq_burst_threshold. Допустимые значения – от 1 до 200. Значение по умолчанию – 10.
• Параметр pcap_mpool_size - задаёт максимальное количество буферов (mbuf) в пуле памяти перехватчика (ipsm-app). На каждый порт заводится свой пул. Допустимые значения – от 6736 до 4194303. Рекомендуется выставлять значение, равное 2^n – 1 (степень двойки минус единица). Опциональный параметр. Значение по умолчанию выбирается автоматически на основе количества портов (PORT<n>) и параметров threads, sendqueue_size, rx_queue_len, rx_cache_size, rx_desc, tx_desc.
При использовании автоматического размера в лог (/tmp/ipsm-app/error.log) будет выдана информация о подобранном размере пула:
1574323798 Automatically choosen pool size: 161180 mbufs
1574323798 Pool size is affected by: ports number(2), threads(4), sendqueue_size(64000), rx_queue_len(512), rx_cache_size(64000), rx_desc(2048), tx_desc(2048)
Также (при любом значении pcap_mpool_size) в лог будет выдано сообщение о фактическом размере (в мегабайтах) выделяемой памяти:
1574323798 Allocating 2 pools 161180 mbufs each. Total 3297 megabytes
• Параметр rx_queue_len устанавливает глубину внутренних очередей при приёме и обработке пакетов. Измеряется в блоках (burst) пакетов (один блок – 32 пакета). Допустимые значения – от 1 до 32. Опциональный параметр. Значение по умолчанию – 16.
• Параметр rx_sleep задаёт длину паузы (в микросекундах), которую делает поток приёма пакетов, если отсутствуют входящие пакеты на сетевой карте. Допустимые значения – от 0 до 10000. Опциональный параметр. Значение по умолчанию – 50.
• Параметр tx_sleep задаёт длину паузы (в микросекундах), которую делает поток отправки пакетов, если отсутствуют пакеты (из потоков обработки) для отправки на сетевую карту. Допустимые значения – от 0 до 10000. Опциональный параметр. Значение по умолчанию – 50.
• Параметр wrk_sleep задаёт длину паузы (в микросекундах), которую делает поток обработки пакетов, если отсутствуют входящие пакеты (от принимающих потоков). Допустимые значения – от 0 до 10000. Опциональный параметр. Значение по умолчанию – 50.
• Параметр kni_sleep задаёт длину паузы (в микросекундах), которую делает поток обработки пакетов, предназначенных для ОС, либо исходящих из ОС, если отсутствуют такие пакеты. Допустимые значения – от 0 до 10000. Опциональный параметр. Значение по умолчанию – 50.
• Параметр cb_wait задаёт длину ожидания (в микросекундах) в потоке обработки пакетов, если соответствующий поток отправки пакетов занят. Допустимые значения – от 0 до 10000. Опциональный параметр. Значение по умолчанию – 50.
|
Внимание! |
Задание в параметрах rx_sleep, tx_sleep, wrk_sleep, kni_sleep, cb_wait значений меньше 50 микросекунд изменяет используемый метод ожидания. Это приводит к улучшенной отзывчивости (позволяет не допустить даже единичных потерь пакетов), но вызывает полную загрузку используемых процессорных ядер при отсутствии трафика. |
• Параметр rx_cache_size задаёт размер кэша получаемых из сети пакетов в принимающем потоке. Допустимые значения – от 1000 до 200000. Опциональный параметр. Значение по умолчанию – 64000.
• Параметр wrk_overload_thresh задаёт порог загрузки обрабатывающего потока (в процентах), при котором в него перестают направляться пакеты. Допустимые значения — от 1 до 100. Опциональный параметр. Значение по умолчанию – 90.
Секция PORT.
Содержит конфигурацию конкретного физического порта (сетевого интерфейса).
Для каждого контролируемого нами физического порта обязательно должна быть своя секция – PORT0, PORT1, etc. Нумерация секций должна начинаться с нуля (т.е. обязательно должен присутствовать PORT0) и не иметь пропусков. Число секций PORT должно быть чётным (см. описание параметра pair_port).
• Параметр pci_id – адрес сетевого интерфейса на шине PCI. Этот параметр задаёт соответствие между описанным в данной секции PORT физическим портом и контролируемыми DPDK физическими портами. Узнать pci id можно выполнив команду lspci:
root@sterragate:~# lspci | grep Eth
02:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
02:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
Связь конкретного физического интерфейса с его представлением в стеке в виде eth<N> можно посмотреть в логе загрузки (dmesg):
[ 2.415089] Intel(R) Gigabit Ethernet Network Driver - version 5.2.17
[ 3.590195] ixgbe 0000:02:00.0: eth2: MAC: 2, PHY: 1, PBA No: E96137-005
[ 3.590204] ixgbe 0000:02:00.0: eth2: Enabled Features: RxQ: 12 TxQ: 12 FdirHash RSC
[ 3.591214] ixgbe 0000:02:00.0: eth2: Intel(R) 10 Gigabit Network Connection
[ 4.740540] ixgbe 0000:02:00.1: eth3: MAC: 2, PHY: 1, PBA No: E96137-005
[ 4.740549] ixgbe 0000:02:00.1: eth3: Enabled Features: RxQ: 12 TxQ: 12 FdirHash RSC
[ 4.741631] ixgbe 0000:02:00.1: eth3: Intel(R) 10 Gigabit Network Connection
Обязательный параметр. Задаётся в формате NNNN:NN:NN.N либо NN:NN.N.
Пример:
pci_id = 0000:02:00.1
• Параметр pair_port - задаёт парный порт для данного порта. Пакеты (кадры ethernet), приходящие на текущий порт, будут отправлены с pair_port. Пакеты (кадры ethernet), приходящие на pair_port, будут отправлены с текущего порта. Указываемый номер соответствует номеру в названии секции парного порта PORT<N>. Обязательный параметр – для каждого порта должен быть парный ему. Порт не может быть парным самому себе.
Пример:
pair_port = 1
• Параметр outer задаёт порт как “внешний”. С него будут отправляться во внешнюю сеть инкапсулированные в l2/IPsec пакеты (кадры ethernet) и IKE-пакеты. Получаемые на этом порту не пакеты (кадры ethernet), а также IPv4/IPv6 не EtherIP пакеты будут пропускаться в tcp/ip стек ОС на соответствующий виртуальный интерфейс vEth<N>. Возможные значения – “yes”/“no“. Опциональный параметр. По умолчанию отключено (no).
Кадры ethernet, с ethertype отличным от IPv4/IPv6 и ARP подвергаются дополнительной фильтрации. Смотри параметр allowed_ethertypes.
• Параметр l2_mode переводит порт в L2-режим. Назначается автоматически для порта, парного к outer. Данный параметр при упоминании в конфигурационном файле игнорируется, т.е. недоступен для конфигурирования.
• Параметр l2_src_ip - задаёт source адрес нового IPv4‑пакета либо IPv6‑пакета, который содержит инкапсулированный в EtherIP кадр ethernet. Работает только для порта в L2-режиме. Параметр обязателен для порта в L2-режиме.
Пример:
l2_src_ip = 192.168.6.2
l2_src_ip = aaaa:bbbb:cccc::2
Параметры l2_dst_ip и l2_src_ip должны задавать адреса одной версии протокола IP – либо только IPv4, либо только IPv6.
• Параметр l2_dst_ip - задаёт destination адрес нового IPv4‑пакета либо IPv6‑пакета, который содержит инкапсулированный в EtherIP кадр ethernet. Работает только для порта в L2-режиме. Параметр обязателен для порта в L2-режиме.
Пример:
l2_dst_ip = 192.168.6.2
l2_dst_ip = aaaa:bbbb:cccc::2
Параметры l2_dst_ip и l2_src_ip должны задавать адреса одной версии протокола IP – либо только IPv4, либо только IPv6.
• Параметр mtu - задаёт Maximum Transmission Unit (MTU) данного физического интерфейса. Возможные значения – от 68 байт до 9700 байт (0x25E4). Опциональный параметр. Значение по умолчанию – 9700.
• Параметр gw_ip - задаёт IPv4-адрес локального шлюза (gateway маршрута до партнёра). Используется для определения destination MAC-адреса исходящих кадров ethernet с данного внешнего порта (за исключением декапсулированных из EtherIP). Обязательный параметр, если не указан next_hop_mac. По умолчанию присутствует со значением, заданным при инициализации Продукта.
Пример:
gw_ip = 192.168.0.1
• Параметр gw_ip6 - задаёт IPv6-адрес локального шлюза (gateway маршрута до партнёра). Используется для определения destination MAC-адреса исходящих кадров ethernet (за исключением декапсулированных из etherip). Опциональный параметр. По умолчанию отсутствует.
Пример:
gw_ip6 = 2002:3003::1
• Параметр next_hop_mac задаёт MAC-адрес, который подставляется как destination в исходящие кадры ethernet (за исключением декапсулированных из EtherIP). Используется, если отсутствует параметр gw_ip, либо не удалось найти соответствующую ему запись в arp-таблице. Опциональный параметр. По умолчанию отсутствует.
Пример:
next_hop_mac = 00:AA:BB:CC:DD:EE
• Параметр next_hop_mac6 - задаёт MAC-адрес, который подставляется как destination в исходящие кадры ethernet (за исключением декапсулированных из etherip). Используется, если отсутствует параметр gw_ip6, либо не удалось найти соответствующую ему запись в nd-таблице. Опциональный параметр. По умолчанию отсутствует.
Пример:
next_hop_mac6 = 00:AA:BB:CC:DD:EE
• Параметр next_hop_mac_force позволяет принудительно выставлять (не смотря в arp-таблицу) next_hop_mac как destination MAC-адрес исходящих кадров ethernet (за исключением декапсулированных из EtherIP). Работает, если только установлен параметр next_hop_mac. Возможные значения – “yes”/“no“. Опциональный параметр. По умолчанию отключено (no).
• Параметр next_hop_mac6_force - позволяет принудительно выставлять (не смотря в nd-таблицу) next_hop_mac6 как destination MAC-адрес исходящих кадров ethernet (за исключением декапсулированных из etherip). Работает только если выставлен next_hop_mac6. Возможные значения – “yes”/“no“. Опциональный параметр. По умолчанию отключено (no).
• Параметр l3_ip - задаёт IPv4-адрес и маску подсети, выставляемые на соответствующем данному физическому порту виртуальном интерфейсе vEth<N>. Опциональный параметр. Возможные значения маски – от 1 до 32. По умолчанию отсутствует.
Пример:
l3_ip = 192.168.0.42/24
Для порта, не находящегося в L2-режиме, должен быть задан параметр l3_ip, либо l3_ip6, либо оба одновременно.
• Параметр l3_ip6 - задаёт IPv6-адрес и маску подсети, выставляемые на соответствующем данному физическому порту виртуальном интерфейсе vEth<N>. Опциональный параметр. Возможные значения маски – от 1 до 128. По умолчанию отсутствует.
Пример:
l3_ip6 = 2002:1001::1/64
Для порта, не находящегося в L2-режиме, должен быть задан параметр l3_ip, либо l3_ip6, либо оба одновременно.
• Параметр no_fc - отключает механизм Flow Control на данном физическом интерфейсе. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию отключено (no).
• Параметр no_promisc - отключает режим Promiscuous на данном физическом интерфейсе. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию для внешнего порта – включено (yes), для парного ему – отключено (no).
• Параметр copy_tos - устанавливает режим наследования (копировать/сбросить) байта Type of Service из заголовка оригинального пакета в заголовок нового IPv4/IPv6 пакета, содержащего инкапсулированный в EtherIP кадр ethernet. Работает только для порта в L2-режиме. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию отключено (no).
Пример:
copy_tos = yes
• Параметр df_handling - устанавливает режим наследования (копировать/установить/сбросить) DF-бита из заголовка оригинального пакета в заголовок нового пакета, содержащего инкапсулированный в EtherIP кадр ethernet. Если оригинальный пакет был IPv6, исходное значение DF-бита принимается за “1”. Работает только для порта в L2-режиме. Возможные значения – “copy”/“set”/”clear”. Опциональный параметр. Значение по умолчанию: clear.
Пример:
df_handling = clear
• Параметр vlan_identifier - включает режим выставления VLAN-тэга (802.1Q) для исходящих с данного порта кадров ethernet, содержащих IPv4/IPv6 пакеты. Работает только для порта, не находящегося в L2-режиме. При выставлении данного параметра на данном порту осуществляется фильтрация входящих кадров по указанному vlan id. Кадры, содержащие vlan id, отличный от указанного в параметре, либо не содержащие vlan-тэга вообще будут уничтожены с увеличением счётчика d11. Допустимые значения – от 0 до 4094. Значение по умолчанию: 0. Режим активен, если хотя бы один из параметров vlan_identifier или vlan_priority_code_point имеет значение не равное 0. Нельзя, чтобы оба параметра были указаны как “0”.
Пример:
vlan_identifier = 322
• Параметр vlan_priority_code_point - включает режим выставления поля Priority Code Point (PCP, 802.1p) для исходящих с данного порта кадров ethernet, содержащих IPv4/IPv6 пакеты. Работает только для порта, не находящегося в L2-режиме. Допустимые значения – от 0 до 7. Значение по умолчанию: 0. Режим активен, если хотя бы один из параметров vlan_identifier или vlan_priority_code_point имеет значение не равное 0. Нельзя, чтобы оба параметра были указаны как “0”.
Пример:
vlan_priority_code_point = 5
• Параметр allowed_ethertypes - позволяет задать значения поля ethertype (2 байта) заголовка ethernet, которые будут пропускаться в стек ОС и из него через интерфейс vEth. Всегда пропускаются фреймы, содержащие IPv4 (0x0800), IPv6 (0x86DD) и ARP (0x0806). Значения задаются в шестнадцатеричном виде, возможен префикс “0x”. Перечисляются через запятую, без пробелов и иных символов между ними. Максимум 32 значения. Также возможно значение “none“ – использовать настройки по умолчанию.
• Параметр multicast_enable - включает получение данным портом сетевой карты всех multicast пакетов. Также все multicast пакеты принимаются при включённом promisc-режиме. Если ни один из двух режимов не включен, данные пакеты будут уничтожены сетевой картой без отражения в статистике. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию: для outer-порта включено (yes), для парного ему – отключено (no), так как там (на l2-порту) обычно включен promisc-режим.
• Параметр hw_ip_checksum - включает получение от сетевой карты дополнительной информации об ошибках во входящих пакетах (например, ошибка в контрольной сумме ip либо tcp) либо ошибках при их приёме. Данные ошибки учитываются в статистике ierr, но не обязательно приводят к уничтожению пакета. При включении данного параметра, и возникновении подобных ошибок, они будут отображаться в статистике как e0-e2. Опциональный параметр. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию включено (yes).
• Параметр hw_vlan_extend - включает на данном порту поддержку сетевой картой double-vlan (q-in-q) фреймов. Включение негативно влияет на производительность (отключает векторный режим приёма/отправки пакетов). Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию отключено (no).
• Параметр pmtud - задаёт размер ethernet-кадра, при котором включается отправка сообщений ICMP Fragmentation Needed (Type 3, Code 4), либо ICMPv6 Packet Too Big (Type 2 Code 0). А именно: если приходящий кадр ethernet содержит IP пакет с выставленным DF-битом, и его размер (только IP-пакета, включая заголовок) превышает указанное в параметре pmtud значение, мы отбрасываем этот кадр, и посылаем отправителю сообщение Fragmentation Needed / Packet Too Big. Опциональный параметр. Допустимые значения – от 68 до 65535.По-умолчанию отключено.
Пример:
pmtud = 1400
• Параметр mssfix - включает режим MSSFIX на данном порту. В этом режиме просматриваются поля MSS в TCP SYN пакетах. Если найденный MSS больше значения, указанного в параметре mssfix, в поле MSS прописывается значение параметра mssfix (и пересчитывается контрольная сумма tcp). Опциональный параметр. Допустимые значения – от 536 до 9688 (максимальное значение MTU – 40 байт). По умолчанию отключено.
Пример:
mssfix = 1350
• Параметр mssfix_force - позволяет проставлять в поле MSS значение параметра mssfix, даже если исходное значение в пакете меньше. Работает только при включенном mssfix. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию отключено (no).
• Параметр thr_start - задаёт номер начального обрабатывающего потока из диапазона от thr_start до thr_start + thr_count. Пакеты, входящие на данный порт, будут распределяться только на обрабатывающие потоки из данного диапазона. Параметр может быть задан только для внутреннего (не outer) порта. Опциональный параметр. Допустимые значения – от 0 до threads 1. Значение по умолчанию – 0.
Если указан параметр thr_start, то также обязательно должен быть указан параметр thr_count.
• Параметр thr_count - задаёт количество обрабатывающих потоков в диапазоне от thr_start до thr_start + thr_count. Пакеты, входящие на данный порт, будут распределяться только на обрабатывающие потоки из данного диапазона. Может быть задан только для внутреннего (не outer) порта. Опциональный параметр. Значение по умолчанию: threads.
Если указан параметр thr_count, то также обязательно должен быть указан параметр thr_start.
• Параметр dp_frag_ip - позволяет задать список IPv4-адресов партнёров, тоже являющихся Шлюзами DP, для данного порта. При задании параметра включается улучшенный механизм сборки (reassemble) пакетов. Максимум 4 адреса, строго через запятую, без пробелов. IPv4-адрес не может быть нулевым (0.0.0.0). Параметр может быть задан только для внешнего (outer) порта. Опциональный параметр. По умолчанию отключено.
При задании параметра у входящих фрагментированных ipsec-пакетов проверяется source ip адрес. Если он совпадёт с одним из указанных в параметре, применяется улучшенный механизм сборки (reassemble) пакетов из фрагментов. Данный механизм работает только, если оба партнёра являются Шлюзами DP и имеют версию 4.3 и новее.
При отключенном параметре Продукт действует как в 4.2 — сборка пакетов работает только для Client SA.
• Параметр dp_frag_ip6 - позволяет задать список IPv6-адресов партнёров, тоже являющихся Gate DP с версией 5.0 и выше, для данного порта. При задании параметра включается улучшенный механизм сборки (reassemble) пакетов. Максимум 4 адреса, строго через запятую, без пробелов. IPv6 адрес не может быть нулевым (::). Параметр может быть задан только для внешнего (outer) порта. Опциональный параметр. По умолчанию отключено.
• Параметр frag_id_afterward - включает режим изменения поля identification в IP-заголовке отправляемых фрагментированных пакетов, либо поля Identification в Fragmentation Header IPv6-пакета. Может быть задан только для внешнего (outer) порта. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию выключено (no).
Данный режим способствует увеличению пропускной способности для фрагментированного (самим Шлюзом DP) трафика. Однако возможно снижение пропускной способности, если фрагментация осуществляется на устройстве посередине.
• Параметр dp_frag_natt - включает улучшенный механизм сборки пакетов (dp_frag_ip) для natt-трафика. Может быть задан только для внешнего (outer) порта. Может быть задан только при активном dp_frag_ip/dp_frag_ip6. Возможные значения – “yes”/“no”. Опциональный параметр. По умолчанию выключено (no).
При включении данного параметра будет потерян открытый фрагментированный udp-трафик, пришедший с адреса из списка dp_frag_ip/dp_frag_ip6.
При включении данного параметра необходимо включить ike fragmentation и использовать main mode.
Пример настроек можно посмотреть в разделе «Пример конфигурационного файла ipsm_dpdk.cfg».