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, через обработчик сигналов.
-t потоки
Число создаваемых потоков обработки. По умолчанию для одного ЦП создается один поток. Эти потоки представляют собой потоки обработки пакетов, реализуемые на уровне 2, которые могут становиться потоком стека.
-v
При возникновении каких-либо ошибок во время загрузки драйверов и протоколов утилита io-pkt-* передает сообщения в системный журнал slogger. Если эта опция указана, то утилита io-pkt-* также отображает информацию об ошибках в консоли.

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

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

auditksz=X
Задаёт маску аудита событий:
  • 1 – (по умолчанию) привилегированные соединения по протоколу TCP
  • 2 – непривилегированные соединения по протоколу TCP
  • 4 – привилегированные пакеты по протоколу UDP
  • 8 – непривилегированные пакеты по протоколу UDP
bigpage_strict
Если эта опция не указана и значение опции pagesize превышает значение sysconf( _SC_PAGESIZE ), то оно используется только для пулов буферов mbuf и кластеров. Если эта опция указана, то размер страницы используется для всех пулов.
cache=0
Деактивировать кэширование буферов пакетов. Используется только в целях отладки.
confstr_monitor
Осуществлять мониторинг изменений конфигурационных строк, в частности CS_HOSTNAME. По умолчанию утилита io-pkt-* получает имя хоста только один раз при запуске.
enmap
Отключить автоматическое отображение в стеке имен интерфейсов enXX в фактические имена интерфейсов. По умолчанию стек обеспечивает автоматическое отображение первого зарегистрированного интерфейса в en0 (при отсутствии реального интерфейса en0), второго интерфейса в en1 и т.д. для сохранения обратной совместимости со стилем командной строки io-net.
fastforward=X
Разрешить (1) или запретить (0) быструю ретрансляцию. Эту опцию целесообразно использовать для шлюзов. Эта опция включает и выключается опцией forward. Для установки только опции forward следует ввести forward,fastforward=0.
forward
Разрешить ретрансляцию пакетов IPv4 между интерфейсами. При установке этой опции автоматически устанавливается опция fastforward. По умолчанию выключена.
ipsec
Включить поддержку IPsec. По умолчанию выключено.
mbuf_cache=X
Поскольку после использования буферы mbuf освобождаются, то вместо возвращения их во внутренний пул для общего использования выполняется кэширование до X буферов mbuf на один поток для ускорения их извлечения при последующем выделении.
mclbytes=размер
Размер кластера mbuf. Кластер соответствует наибольшему объему непрерывной памяти, используемому для буфера mbuf. Если максимальный размер передаваемого блока данных превышает размер кластера, для передачи пакета используется несколько кластеров. По умолчанию размер кластера составляет 2 Кб (для соответствия стандартному пакету Ethernet размером 1500 байт).
pagesize=X
Наименьший объем данных, выделяемый каждый раз для пулов внутренней памяти. Впоследствии этот объем делится на блоки различного размера в зависимости от пула.
pkt_cache=X
Поскольку после использования комбинации буфера mbuf и кластеры освобождаются, то вместо возвращения их во внутренний пул для общего использования выполняется кэширование до X кластеров и буферов mbuf на один поток для ускорения их извлечения при последующем выделении.
prefix=/путь
Путь, добавляемый в начало стандартного пути /dev/socket. Эту опцию целесообразно использовать при работе с несколькими стеками. Для обеспечения возможности обращения клиентов к определенному стеку следует использовать переменную среды SOCK. Пример:
io-pkt-ksz -ptcpip prefix=/alt SOCK=/alt ifconfig -a
random
Использовать /dev/random в качестве источника случайных данных. По умолчанию io-pkt-* использует встроенный генератор псевдослучайных чисел.
recv_ctxt=X
Размер приемного буфера в байтах. Значение по умолчанию – 65536. Минимальное значение – 2048.
reuseport_unicast
В случае использования параметра сокета SO_REUSEPORT полученные одноадресные пакеты UDP доставляются на все сокеты, связанные с портом. По умолчанию для всех сокетов обеспечивается доставка только широковещательных и многоадресных пакетов.
rx_prio=X
rx_pulse_prio=X
Приоритет для потоков, принимающих сообщения. Значение по умолчанию – 21. Предусмотрена возможность переопределения этого приоритета с помощью опции приоритета, зависящей от драйвера (если поддерживается драйвером).
somaxconn=X
Указать значение SOMAXCONN, определяющее максимальную длину очереди прослушивания, используемой для приема новых соединений TCP. Минимальное значение определяется в файле <sys/socket.h>.
secopt=X
Режим совместимости меток конфиденциальности:
2018 (по умолчанию) или gost
При указании значения 2018 или gost включается режим совместимости с ГОСТ Р 58256-2018.
2011 или kpda
Режим совместимости с ЗОСРВ «Нейтрино» редакций 2011 и 2016 года.
иное значение
Любое другое значение – режим совместимости с ЗОСРВ «Нейтрино» редакций 2011 и 2016 года.
secopt_uncut=X
Задаёт номер категории (группы) ЗОСРВ «Нейтрино», кодируемой категорией 0. Категорией 0 кодируются также все группы меньше указанной в secopt_uncat. По умолчанию secopt_uncat=100.
stacksize=X
Размер стека каждого буфера в байтах. Значение по умолчанию – 4096.
threads_incr=X
Если запас потоков израсходован, увеличивать их число на указанное значение до достижения значения threads_max. Значение по умолчанию – 25.
threads_max=X
Максимальное число потоков. Значение по умолчанию – 200.
threads_min=X
Минимальное число потоков. Значение по умолчанию – 15. Минимальное значение – 4.

Платформы:

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

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

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 передается сообщение, и действия, требующие создания потока, блокируются до возникновения возможности создания потока.

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

Стек 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

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

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




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