lsm-qnet.so
Модуль
прозрачной распределенной сети (собственная сеть QNX)
Синтаксис:
io-pkt
...
-p
qnet [опция[,опция]...]
Поддерживаемые
платформы:
Neutrino
Опции:
Примечание.
-
В
DLL-библиотеке lsm-qnet.so
представлен большой выбор опций для изменения режима
функционирования Qnet (например, таймауты, повторные
попытки и время простоя), но оптимальная работа Qnet
обеспечивается при установке настроек по умолчанию.
Дополнительные опции следует использовать только в том
случае, если требуется решить проблему, возникшую в
конкретной среде. Некорректное применение опций может
привести к отрицательным последствиям.
-
Для
разделения опций используется запятая (но не пробелы).
auto_add=X
При запуске qnet
встроенный в io-pkt
преобразователь Ethernet (en)
рассылает собственные отображения во все интерфейсы. Эта
опция определяет интервал времени в тактах (см. описание
опции periodic_ticks),
после которого встроенный в io-pkt
преобразователь Ethernet (en)
выполняет передачу собственных отображений во все интерфейсы
повторно. Это действие аналогично автоматическому заполнению
каталога /net всеми
связанными узлами.
Значение
по
умолчанию
– 150 тактов, что соответствует 30 секундам. Значение 0
является специальным; если указано это значение, то процессы
передачи останавливаются, и незатребованные передачи
отклоняются. При этом в каталог /net
вносятся только те узлы, которые специально открываются
приложениями на локальном узле.
bind=enX
Указывает
используемый интерфейс (например, bind=en0). По
умолчанию используются все интерфейсы /dev/io-net/enX. Если
указаны несколько опций bind, то в
Qnet используются все указанные интерфейсы. Это наиболее
быстрый способ переноса пакетов.
Примечание.
Сочетание bind=en и resolve=dns
является недопустимым.
bind=ip
Вместо
использования неформатированных ("голубая книга" DIX)
пакетов Ethernet включить в пакеты Qnet IP-заголовок по
зарегистрированному номеру протокола. Рекомендуется в
больших сетях, где невозможна коммутация второго уровня, но
требуется маршрутизировать все пакеты.
При
использовании опции bind=ip также
необходимо указать опцию resolve=dns
(указать преобразователь). Преобразователь
используется для отображения имени узла в IP-адресе.
Преобразователь по умолчанию опцию bind=ip не
использует.
conn_est_retries=X
Число повторных
попыток установления соединения QoS перед отказом. Значение по
умолчанию – 1.
conn_est_timeout=X
Число
периодических тактов перед повторной передачей запроса на
установление соединения QoS. Значение по умолчанию – 1.
conn_up_idle=X
Число
периодических тактов до того, как QoS заключает, что
соединение неактивно (без трафика), и требуется его опрос
посредством тактового сообщения. Значение по умолчанию – 50
тактов (10 секунд).
conn_up_retries=X
Число оставшихся
без ответа тактовых сообщений, после которого QoS заключает,
что соединение не функционирует. Значение по умолчанию – 6.
do_crc=X
Активировать (1)
или деактивировать (0) проверку пакетов до четвертого уровня
(L4) циклическим избыточным кодом (CRC) на программном
уровне . Значением по умолчанию является 0. Оптимальная
производительность на надежном оборудовании обеспечивается
при деактивации проверки циклическим избыточным кодом.
enforce_crc=число
При
использовании этой опции вместе с do_crc
принимаются только пакеты с действительным циклическим
избыточным кодом. Применение этой опции целесообразно только
в том случае, если для do_crc
установлено значение 1. При определении для опции enforce_crc
значения 1 пакеты без действительного циклического
избыточного кода программного уровня, сгенерированной
удаленным узлом (т.е. на котором выполняется do_crc=0),
отклоняются, поскольку отсутствует информация о целостности
содержимого пакета. Значение по умолчанию – 0, что позволяет
обрабатывать пакеты, принятые без сгенерированного
циклического избыточного кода программного уровня.
host=имя_хоста
Изменить имя хоста
компьютера.
mapany=map_uid
Отобразить
входящий идентификатор любого пользователя в map_uid,
а идентификатор его группы в идентификатор группы map_uid.
maproot=map_uid
Если входящий
идентификатор пользователя 0, отобразить его в map_uid,
а идентификатор группы в идентификатор группы map_uid.
max_num_l4s=число
Указать число
интерфейсов. Значение по умолчанию – 2, максимальное значение
– 4.
max_tx_bufs=число
Число буферов
передачи, зарезервированных Qnet перед дальнейшим
выделением. Значение по умолчанию – 500. Если приложение
отправляет большие сообщения, в целях повышения
производительности это значение может быть увеличено. Если
приложение, как правило, отправляет небольшие сообщения
(небольшие сообщения составляют большую часть системного
трафика), это значение может быть уменьшено в целях экономии
памяти.
mount=каталог[:[.]домен]]*
Указать сетевой
каталог. По умолчанию используется каталог /net. По
умолчанию аргумент домен
принимает значение домена имени хоста (при наличии) или
каталога с заменой косых черт на точки и расположением
элементов в обратном порядке. Например, для /net/outside/canada
определен домен canada.outside.net. Первым
смонтированным элементом является каталог по умолчанию и
домен, через который разрешается локальное имя хоста.
mtu_en=число
Указать
максимальный размер передаваемого блока данных (Maximum
Transmission Unit; MTU) в пакете Qnet. Значение аргумента число
должно быть больше 100, и все узлы в сети должны
использовать одно значение. Значение по умолчанию – 1500.
no_ack=X
Создавать и
ожидать (или не создавать и не ожидать) пакеты ACK. Эти
пакеты обеспечивают доставку данных в сетях, в которых
возможна потеря пакетов, например Ethernet. Возможные
значения X:
0
Создавать и
ожидать пакеты ACK (значение по умолчанию).
1
Не создавать и
не ожидать пакеты ACK. Это значение следует указывать только
в случаях, когда возможность потери пакетов полностью
исключается.
Примечание. Все хосты в сети должны быть
сконфигурированы с одинаковым значением опции no_ack.
no_slog=X
При установке
для этой опции ненулевого значения Qnet не записывает ошибки
и события в журнал slogger. Эта
опция используется для удаления событий, вызванных сетью с
помехами, при поиске несетевых событий в выводе журнала sloginfo. По
умолчанию Qnet записывает события в журнал slogger, что
соответствует определению нулевого значения для опции no_slog.
periodic_ticks=X
Число активаций
QoS/L4 в секундах для выполнения периодических задач по
обслуживанию. Значение должно находиться в диапазоне от 1 до
1000; значение по умолчанию – 5, что соответствует 200
тактам в мсек.
Примечание.
Изменение значения periodic_ticks
влияет на временные параметры всех других опций, действие
которых зависит от тактового таймера.
probe_no_l4_time=X
Число
периодических тактов по истечении которых QoS осуществляет
проверку подключения к интерфейсу, для которого отсутствует
отображение для удаленного узла передачей широковещательного
пакета. Значение по умолчанию совпадает со значением опции conn_up_idle.
qos_per_pri=число
qos_tx_pri=число
Приоритет
импульсов для потока периодической передачи QoS и потока
передачи QoS.
Примечание.
Изменять эти значения не рекомендуется. Опции qos_per_pri
и qos_tx_pri предусмотрены для
редких случаев, когда требуется изменить приоритет подсистем
io-pkt.
qos_verbose=X
Уровень вывода
расширенной информации по управлению подключениями
посредством QoS. Значение по умолчанию – 0. Чем выше
значение, тем выше уровень подробности выводимой информации.
Эта опция используется в целях диагностики.
res_retries=X
Число повторных
попыток, выполняемых преобразователем Ethernet во время
предпринятого разрешения узла перед отказом. Значение по
умолчанию – 2.
res_ticks=X
Число
периодических тактов перед повторной передачей
преобразователем запроса на разрешение узла. Значение по
умолчанию – 1.
resolve=преобразователь[:параметр_преобразователя]
Добавить в список
преобразователей для точек монтирования дополнительный
преобразователь.
В менеджер сети
встроены следующие значения аргумента преобразователь:
-
en_ionet –
запросы на трансляцию для разрешения имен в LAN
(аналогично протоколу TCP/IP ARP). Используется по
умолчанию.
-
dns –
использовать имя узла, добавить точку (.),
затем имя домена узла и передать результат функции
TCP/IP gethostbyname().
-
file –
параметр_преобразователя
соответствует имени используемого файла; значение по
умолчанию – /etc/qnet_hosts.
Применяется следующий формат файла:
# Это
строка комментария
хост.домен
адрес1[,адрес2]
...
Аргумент хост.домен
обозначает полное доменное имя Qnet (fully qualified domain
name; FQDN). Аргумент адрес1 и
дополнительный аргумент адрес2
определяют адреса интерфейсов для FQDN. Для bind=en
используется формат адреса xx:xx:xx:xx:xx:xx
(MAC-адрес).
В случае ввода
других данных Qnet выполняет попытку загрузки nr-resolver.so. По умолчанию
используется преобразователь имен en_ionet. По вопросам
создания nr-resolver.so обращайтесь в
службу поддержки QNX.
Примечание.
Следующие сочетания не поддерживаются:
-
bind=en и
resolve=dns
-
bind=ip и
resolve=file
ret_drvr_rx_buf=X
Способ обработки полученных пакетов (rxd) четвертым
уровнем (L4):
-
0 –
удержание нескольких пакетов rxd в течение
объединения (по умолчанию). При этом обеспечивается
оптимальная производительность.
-
1 –
создание копии данных в пакетах с немедленным возвратом
буферов пакетов драйверу. Рекомендуется в случае
предоставления драйвером ограниченного числа буферов
пакетов.
slow_mode=X
Число тактов,
после которого не учитывается режим медленной передачи (т.е.
с "узкими окнами") для узла. Значение по умолчанию – 1200,
что соответствует 240 секундам или четырем минутам. Значение
0 является специальным. При выборе этого значения режим
медленной передачи полностью деактивируется.
tx_retries=X
Число повторных
попыток передачи Qnet перед отказом. Значение по умолчанию –
25.
tx_ticks=X
Число
периодических тактов перед повторной передачей четвертым
уровнем запроса на передачу. Значение по умолчанию – 1.
vtag=номер_тега
Qnet вставляет в
пакет четырехбайтный тег vlan.
Значение номер_тега должно
быть больше нуля. Если указана эта опция, Qnet принимает
только пакеты со значением тега, соответствующим значению номер_тега. Если
используемый драйвер не поддерживает пакеты по 1518 байт,
также необходимо использовать опцию Qnet mtu_en=1496.
Описание:
Менеджер
lsm-qnet.so
является упрощенной версией менеджера QNX, реализующего
собственные функции организации сетей Neutrino, Transparent
Distributed Processing (TDP; прозрачная распределенная
обработка).
На
уровне программного обеспечения QoS реализован протокол
сессий "узел-узел" с обработкой выбора среды передачи.
Четвертый
уровень
представляет
собой программный уровень, следующий за уровнем QoS, на
котором реализуется четвертый транспортный уровень ISO для
обеспечения надежной доставки данных без дублирования с
использованием нижестоящего уровня драйвера.
Примечание.
Выполнить утилиту umount в отношении Qnet
невозможно, но можно создать модуль записи в буфер io-
pkt с поддержкой демонтирования.
Если
последовательно указаны две или более опций resolve=, то
преобразователи вносятся в список вариантов поиска для
каталога, указанного в последующих опциях mount=.
Список
преобразователей завершается опцией mount=. Все
опции resolve= после опции
mount=
переносятся в новый
список, а не добавляются в предыдущий.
Пример.
Следующая строка:
resolve=a,resolve=b,mount=x,mount=y,resolve=c,mount=z
указывает, что:
-
для
опции mount=x
определены преобразователи a и
b;
-
для
опции mount=y
также определены преобразователи a и
b;
-
для
опции mount=z
определен только
преобразователь c.
Примеры:
Существует
два
способа
запуска Qnet: одновременно с утилитой io-pkt или
после этого с помощью утилиты mount.
Одновременный
запуск
сетевого
драйвера, Qnet и TCP/IP. Для Qnet при этом используется тип
пакетов Ethernet по умолчанию ("голубая книга" DIX) без
проверки циклическим избыточным кодом и 1024 дескриптора для
обеспечения максимальной производительности:
io-pkt -d speedo
transmit=1024,receive=1024 -p qnet -p tcpip
Запуск io-pkt, затем
с помощью команды mount
последовательный запуск драйвера и Qnet с применением
актуальных имен файлов разделяемых библиотек:
io-pkt
mount -T io-pkt -o
transmit=1024,receive=1024 devn-speedo.so
mount -T io-pkt
lsm-qnet.so
Эти разделяемые
библиотеки (с расширением .so)
находятся в каталоге /lib/dll.
Утилита mount
автоматически осуществляет поиск этих библиотек в указанном
каталоге. Утилите mount можно
присвоить полное путевое имя.
В
следующем примере представлен одновременный запуск всех
компонентов с использованием инкапсуляции IP-пакетов вместо
"голубой книги" DIX:
io-pkt -d speedo
transmit=1024,receive=1024 -p qnet bind=ip,resolve=dns -p
tcpip
Для получения дополнительной информации см. описание mount и io-pkt.
Файлы:
/dev/io-net
Каталог, в
который модули протоколов и старые драйверы io-net размещают
свои имена. Для получения дополнительной информации см.
документацию по io-pkt.
/etc/system/config/useqnet
Если этот файл
существует, в системе используются файлы запуска по
умолчанию. При запуске системы выполняется команда io- pkt. Также
выполняется автоматическая загрузка lsm-qnet.so. Для
получения дополнительной информации см. главу Controlling
How Neutrino Starts ("Запуск QNX Neutrino") «Руководства
системного программиста (администратора)» КПДА.10964-01 32.
/proc/qnetstats
Запись,
помещаемая Qnet в файловую систему /proc. При
открытии и чтении этого файла код менеджера ресурсов Qnet
отвечает путем передачи текущей статистики для Qnet.
Предупреждения:
В Qnet
не реализована полная поддержка обмена информацией между
компьютерами с прямым и обратным порядком байтов. Однако
доступен обмен данными между машинами с разными типами
процессоров (например, ARMLE и x86), для которых определен
одинаковый порядок байтов. Если требуется сетевое
взаимодействие посредством Qnet с применением разных
порядков байтов, обратитесь к торговому представителю QNX.