Операционная система ЗОСРВ «Нейтрино» > Описание базовых компонентов целевой системы > Сервисы > io-pkt-*



io-pkt-*

Менеджер сети


Note: Существует несколько вариантов сетевого менеджера: io-pkt-v4, io-pkt-v4-hc, io-pkt-v6-hc, io-pkt-v4-ksz, io-pkt-v4-hc-ksz, io-pkt-v6-hc-ksz

Синтаксис:

io-pkt-* [-d драйвер [опции_драйвера]] [-i экземпляр] [-p протокол [опции_протокола]] [-t потоки] [-v]

Опции:

-d драйвер [опции_драйвера]
Запустить указанный драйвер devn-* или devnp-*: Аргумент опции_драйвера представляет собой список опций драйвера, передаваемых ему стеком io-pkt-*.

Note: Для разделения опций используется запятая (но не пробелы). В стеке выполняется обработка различных опций драйвера. Для получения дополнительной информации см. "Общие опции драйверов" далее.

-i экземпляр
Номер экземпляра стека, используемый при выполнении нескольких экземпляров io-pkt-*. Менеджер io-pkt-* будет обслуживать запросы монтирования типа io-pktX, где X – это номер экземпляра. Пример:
io-pkt-ksz -i1 -ptcpip prefix=/alt mount -Tio-pkt1 /lib/dll/devnp-i82544.so
-p протокол [опции_протокола]
Запускаемый протокол со списком опций.

Note: Для разделения опций используется запятая (но не пробелы).

Доступны следующие протоколы:
autoip
Модуль: lsm-autoip.so
qnet
Модуль: lsm-qnet.so
qnet-ksz
Модуль: lsm-qnet-ksz.so
tcpip
Стек io-pkt-* включает в себя протокол TCP/IPv4. Этот протокол следует указывать только в том случае, если требуется обеспечить передачу ему дополнительных параметров (например, prefix=). Дополнительная информация по опциям приведена ниже.
-S
Не регистрировать обработчик SIGSEGV для перевода аппаратных средств в пассивное состояние в случае нарушения сегментирования. При этом упрощается отладка, если невозможно получить данные обратной трассировки исходного кода, сгенерировавшего SIGSEGV, через обработчик сигналов.
-s размер
Размер стека прерываний каждого потока в байтах. Значение по умолчанию – 8192.
Опция -s поддерживается, начиная с ЗОСРВ «Нейтрино» редакции 2024
-t потоки
Число создаваемых потоков обработки. По умолчанию для одного ЦП создается один поток. Эти потоки представляют собой потоки обработки пакетов, реализуемые на уровне 2, которые могут становиться потоком стека.
-P приоритет
Устанавливает приоритет основного потока io-pkt.
-v
При возникновении каких-либо ошибок во время загрузки драйверов и протоколов утилита io-pkt-* передает сообщения в системный журнал slogger. Если эта опция указана, то утилита io-pkt-* также отображает информацию об ошибках в консоли.

Опции протокола TCP/IP:

Если указан протокол -p tcpip, список в аргументе опции_протокола может состоять из одной или нескольких опций, разделенных запятыми без пробельных символов:

auditksz=X
Задаёт маску аудита событий:
  • 1 – (по умолчанию) привилегированные соединения по протоколу TCP
  • 2 – непривилегированные соединения по протоколу TCP
  • 4 – привилегированные пакеты по протоколу UDP
  • 8 – непривилегированные пакеты по протоколу UDP
secopt=режим
Режим совместимости меток конфиденциальности:
2018 (по умолчанию) или gost
При указании значения 2018 или gost включается режим совместимости с ГОСТ Р 58256-2018.
2011 или kpda
Режим совместимости с ЗОСРВ «Нейтрино» редакций 2011.
secopt_uncat=X
Задаёт номер категории (группы) ЗОСРВ «Нейтрино», кодируемой категорией 0. Категорией 0 кодируются также все группы меньше указанной в secopt_uncat. По умолчанию secopt_uncat=100.
appfilter[=path]
Включить фильтр приложений, в path передаётся путь к конфигурационному файлу. Конфигурационный файл по умолчанию - /etc/appfilter.conf.


Note: Опции appfilter, auditksz, secopt и secopt_uncat актуальны только для ksz-версий io-pkt-*.

pagesize=X
Наименьший объем данных, выделяемый каждый раз для пулов внутренней памяти. Впоследствии этот объем делится на блоки различного размера в зависимости от пула.
bigpage_strict[=X]
При ненулевом X или при его отсутствии размер страниц пулов памяти io-pkt-* соответствует значению, установленному в опции pagesize. При X равном 0 (поведение по умолчанию), если значение опции pagesize превышает значение sysconf( _SC_PAGESIZE ), размер страницы pagesize используется только для пулов буферов mbuf и кластеров.
mbuf_cache=X
Поскольку после использования буферы mbuf освобождаются, то вместо возвращения их во внутренний пул для общего использования выполняется кеширование до X буферов mbuf на один поток для ускорения их извлечения при последующем выделении.
mclbytes=X
Размер кластера mbuf. Кластер соответствует наибольшему объему непрерывной памяти, используемому для буфера mbuf. Если максимальный размер передаваемого блока данных превышает размер кластера, для передачи пакета используется несколько кластеров. По умолчанию размер кластера составляет 2 Кб (для соответствия стандартному пакету Ethernet размером 1500 байт).
С помощью определения размера кластера можно повысить производительность. Для получения дополнительной информации см. подраздел "Jumbo packets and hardware checksumming" ("Сверхдлинные пакеты и аппаратная обработка контрольных сумм") в разделе "Network Drivers" ("Сетевые драйверы") «Руководства системного программиста (администратора)» КПДА.10964-01 32, в разделе по организации базовой сети QNX Neutrino.
nmbclusters=X
Предельное число кластеров mbuf. Может быть только увеличено во время работы сетевого менеджера с помощью sysctl. Значение по умолчанию - 8192. Минимальное значение - 128.
pkt_cache=X
Поскольку после использования комбинации буфера mbuf и кластеры освобождаются, то вместо возвращения их во внутренний пул для общего использования выполняется кеширование до X кластеров и буферов mbuf на один поток для ускорения их извлечения при последующем выделении.
pkt_typed_mem=name
Выделение пакетных буферов из указанного типизированного объекта памяти. Пример:
io-pkt-ksz -ptcpip pkt_typed_mem=ram/dma
cache=X
При X равном 0 кеширование буферов пакетов отключается. Выключение может использоваться только в целях отладки. По умолчанию кеширование включено.
confstr_monitor
Осуществлять мониторинг изменений конфигурационных строк, в частности CS_HOSTNAME. По умолчанию утилита io-pkt-* получает имя хоста только один раз при запуске.
enmap=X
При X равном 0 будет отключено автоматическое отображение в стеке имен интерфейсов enXX в фактические имена интерфейсов. По умолчанию стек обеспечивает автоматическое отображение первого зарегистрированного интерфейса в en0 (при отсутствии реального интерфейса en0), второго интерфейса в en1 и т.д. для сохранения обратной совместимости со стилем командной строки io-net.
fastforward[=X]
При X равном 0 быстрая ретрансляция в IPv4 будет отключена. По умолчанию быстрая ретрансляция в io-pkt-* включена. Установка опции без значения X равносильно установке опции forward. Эту опцию целесообразно использовать для шлюзов. Для использования обычного режима ретрансляции в IPv4 требуется установить опции forward,fastforward=0.
forward
Разрешить ретрансляцию пакетов IPv4 между интерфейсами. По умолчанию выключена.
forward6
Разрешить ретрансляцию пакетов IPv6 между интерфейсами. По умолчанию выключена. Опция актуальна только для v6-вариантов io-pkt-*.
ipsec
Включить поддержку IPsec. По умолчанию выключено. Опция актуальна только для hc-вариантов io-pkt-*.
pfil_ipsec
Включение pfil-хуков для работы IPSec. Требуется для осуществления IP-фильтрации IPSec-трафика и маршрутизации трафика из IPSec-соединений. По умолчанию выключено. Опция актуальна только для hc-вариантов io-pkt-*.
usetime_zero
Ассоциации безопасности IPSec (Secure Associacion, SA) после истечения срока жизни SA не будет удалена, если ни разу не была использована. По умолчанию поведение обратное. Опция актуальна только для hc-вариантов io-pkt-*.
prefix=path
Путь, добавляемый в начало стандартного пути /dev/socket. Эту опцию целесообразно использовать при работе с несколькими стеками. Для обеспечения возможности обращения клиентов к определенному стеку следует использовать переменную среды SOCK. Пример:
io-pkt-ksz -ptcpip prefix=/alt SOCK=/alt ifconfig -a
random
Использовать /dev/random в качестве источника случайных данных. По умолчанию io-pkt-* использует встроенный генератор псевдослучайных чисел.
recv_ctxt=X
Размер приемного буфера в байтах. Значение по умолчанию – 65536. Минимальное значение – 4096. Максимальное значение - 524288.
reuseport_unicast
В случае использования параметра сокета SO_REUSEPORT полученные одноадресные пакеты UDP доставляются на все сокеты, связанные с портом. По умолчанию для всех сокетов обеспечивается доставка только широковещательных и многоадресных пакетов.
timer_pulse_prio=X
Приоритет импульса пересчёта внутренних часов сетевого менеджера. Значение по умолчанию – 21.
rx_prio=X
rx_pulse_prio=X
Приоритет для потоков, принимающих сообщения. Значение по умолчанию – 21. Предусмотрена возможность переопределения этого приоритета с помощью опции приоритета, зависящей от драйвера (если поддерживается драйвером).
somaxconn=X
Указать значение SOMAXCONN, определяющее максимальную длину очереди прослушивания, используемой для приема новых соединений TCP. Минимальное значение определяется в файле <sys/socket.h>.
stacksize=X
Размер стека корутин в байтах. Значение по умолчанию – 8192 для aarch64 и e2k и 4096 для остальных архитектур.
psp_stacksize=X
Размер стека процедур корутин в байтах. Значение по умолчанию - 12288. Актуально только для архитектуры e2k.
pcsp_stacksize=X
Размер стека связующей информации корутин в байтах. Значение по умолчанию - 8192. Актуально только для архитектуры e2k.
coroutines_min=X
threads_min=X
Количество корутин, для которых при запуске сетевого менеджера будут выделены ресурсы. Значение по умолчанию – 15. Минимальное значение – 4.
coroutines_max=X
threads=X
threads_max=X
Максимальное число корутин. Значение по умолчанию – 200.
coroutines_incr=X
threads_incr=X
Если запас корутин израсходован, выделить ресурсы для дополнительных X корутин до достижения значения coroutine_max. Значение по умолчанию – 25.


Note: Опции threads_min, threads, threads_max и threads_incr ради совместимости оставлены, однако рекомендуется вместо них использовать опции coroutines_min, coroutine_max и coroutines_incr.

igmp_sendra
Установка IP-пакетам с IGMP-запросами опции "Router Alert" (RFC2236), которая требуется для того, чтоб маршрутизаторы полноценно обработали IGMP-запрос, а не переслали его. Может использоваться для объявления о подписке на трафик по группового адресу либо об отписке от него.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Защищённый менеджер io-pkt-* обеспечивает поддержку доменных сокетов Интернет, доменных сокетов Unix и динамически загружаемых сетевых модулей и предоставляет версию стека для IPv4 с полной поддержкой шифрования и Wi-Fi, с возможностью аппаратного ускорения криптографии (Fast IPsec) и с поддержкой защищённого режима для протоколов TCP и UDP.

Для запуска драйверов после запуска io-pkt-* можно использовать команду mount. При необходимости передачи драйверу опций перед именем разделяемой библиотеки следует указать опцию -o. Пример:

mount -T io-pkt -o mac=12345678 devnp-bge.so


Note:
  • Команду umount можно использовать для размонтирования устаревших драйверов стека io-net, но не драйверов io-pkt-*. Для этих драйверов возможно использование команды ifconfig destroy для отсоединения драйвера от стека (если поддерживается драйвером).

  • Если потоков для работы менеджера io-pkt-* недостаточно, то в slogger передается сообщение, и действия, требующие создания потока, блокируются до возникновения возможности создания потока.

  • Если размер пакета TCP/IP меньше минимального размера пакета Ethernet, то пакет может быть заполнен не нулями, а случайными данными.

Общие опции драйверов:

Стек io-pkt-* обрабатывает опцию name=, что позволяет переопределить префикс интерфейса по умолчанию, используемый для сетевых драйверов. Пример:

io-pkt-ksz -di82544 name=en

Выполняется запуск драйвера devnp-i82544.so с соглашением по именованию в стиле io-net (enXX). Эта опция также позволяет присваивать имена интерфейсов в соответствии, например, с функциональным назначением:

io-pkt-ksz -di82544 pci=0,name=wan


Note: Эта опция не поддерживается драйверами io-net. При попытке использования этой опции с драйвером "devn-" драйвер не загружается, и в журнал выводится ошибка "unknown option".

Для обеспечения возможности определения конкретного устройства USB по данным, полученным в результате выполнения usb -v, в стеке обрабатываются следующие опции для всех драйверов USB, использующих библиотеку преобразования NetBSD в ЗОСРВ «Нейтрино»:

did=идентификатор
Идентификатор продукта устройства.
vid=идентификатор
Идентификатор вендора устройства.
devno=адрес
Адрес устройства, возвращаемый утилитой usb.
busno=номер
Хост-контроллер, возвращаемый утилитой usb.

Пример:

io-pkt-ksz -drum did=0x0020,vid=0x13b1,devno=1,busno=1

Примеры:

Запуск варианта io-pkt-* с драйвером devnp-bcm1250.so для интерфейса BCM91480A eth0:

io-pkt-ksz -d /lib/dll/devnp-bcm1250.so \ memrange=0x10064000,irq=0x80050024,mac=001122334455 ifconfig bcm0 10.184

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», NetBSD

В ЗОСРВ «Нейтрино» редакции 2024 добавлено псевдоустройство laggr, реализующее функциональность агрегированного канала

Тематические ссылки:

devn-*, devnp-*, lsm-*, mount, umount, ifconfig




Предыдущий раздел: Сервисы