mrouted

Менеджер многоадресной IP-маршрутизации

Синтаксис:

mrouted [-c конфигурационный_файл] [-d [уровень_отладки]] [-p]

Опции:

-c конфигурационный_файл
Указать конфигурационный файл (по умолчанию – /etc/mrouted.conf).
-d [уровень_отладки]
Указать уровень отладки (значение по умолчанию – 0).
-p
Запустить mrouted в режиме без отсечения.

Платформы:

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

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

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

Описание:

Утилита mrouted является реализацией протокола дистанционной векторной групповой многоадресной маршрутизации (Distance- Vector Multicast Routing Protocol; DVMRP), более ранняя версия которого была определена в RFC 1075. Утилита обеспечивает предоставление сведений о топологии по протоколу дистанционно-векторной маршрутизации (аналогично протоколу RIP, описанному в RFC 1058) посредством реализации алгоритма группового перенаправления дейтаграмм, называемого многоадресным перенаправлением по обратному маршруту (Reverse Path Multicasting).

Утилита mrouted выполняет переадресацию групповой (многоадресной) дейтаграммы по кратчайшему (обратному) дереву путей, корень которого лежит в подсети, являющейся источником дейтаграммы. Дерево групповой доставки можно представить себе как дерево широковещательной доставки, от которого отсечены подсети, не содержащие членов группы назначения. Следовательно, дейтаграммы не перенаправляются по ветвям, не содержащим адресатов группы многоадресной передачи. Для ограничения множества направленных дейтаграмм используется предельный срок существования дейтаграммы (Time-To-Live; TTL).

Для обеспечения возможности групповой передачи между подсетями, разделенными маршрутизаторами (одноадресной передачи), которые не поддерживают групповую передачу по IP, утилита mrouted поддерживает "туннели", которые являются виртуальными каналами "точка-точка" между парами сервисов mrouted, расположенными на любых узлах объединённой сети. Для передачи через туннели используется инкапсуляция многоадресных пакетов, которые с точки зрения промежуточных маршрутизаторов и подсетей выглядят как обычные однонаправленные дейтаграммы. Инкапсуляция добавляется на входе в туннель и снимается на выходе из туннеля. По умолчанию инкапсуляция пакетов выполняется по протоколу IP-туннелирования (протокол IP версии 4). Более ранние версии mrouted осуществляют туннелирование с помощью IP-маршрутизации источника, что создает чрезмерную нагрузку на маршрутизаторы некоторых типов.


Note: В этой версии туннелирование с помощью IP-маршрутизации по источнику не поддерживается.

Механизм туннелирования позволяет mrouted формировать виртуальные объединенные сети, используемые исключительно в целях групповой передачи и независимые от топологии физических сетей; такая виртуальная объединенная сеть может охватывать несколько автономных систем. Данная возможность предназначена исключительно для экспериментальной поддержки групповой передачи в объединённых сетях в течение периода широкого внедрения поддержки групповой передачи обычными (одноадресными) маршрутизаторами. Утилита mrouted подвержена широко известным проблемам с масштабированием, свойственным любому протоколу дистанционной векторной маршрутизации; иерархическая многоадресная маршрутизация на данный момент не поддерживается (однако поддержка планируется в будущем).

Утилита mrouted обрабатывает только групповую переадресацию; использование программного обеспечения одноадресной маршрутизации на одном компьютере с mrouted не допускается. В случае использования туннелей для выполнения группового перенаправления mrouted не требуется доступ к более чем одной физической подсети.

Вызов

Если опция -d не указана, или указан уровень отладки 0, то mrouted отсоединяется от вызывающего терминала. В противном случае она остается присоединенной к вызывающему терминалу и воспринимает поступающие с него сигналы. Если опция -d указана без аргумента, по умолчанию используется уровень отладки 2. Независимо от уровня отладки mrouted всегда направляет предупреждения и сообщения об ошибках менеджеру системного журнала. Результаты установки ненулевых уровней отладки:

Уровень 1
Все сообщения, направляемые в системный журнал, также выводятся в стандартный поток ошибок ( stderr). Для перехвата регистрируемых сообщений требуется сначала запустить утилиту syslogd.
Уровень 2
В стандартный поток ошибок ( stderr) выводятся все сообщения уровня 1 и уведомления о значительных событиях.
Уровень 3
В стандартный поток ошибок ( stderr) выводятся все сообщения уровня 2 и уведомления о поступлении и отправке всех пакетов.

При запуске утилита mrouted записывает свой идентификатор процесса pid в файл /var/run/mrouted.pid.

Конфигурирование mrouted

Утилита mrouted автоматически настраивается на выполнение перенаправления на всех интерфейсах, поддерживающих групповую передачу, т.е. на интерфейсах, для которых установлен флаг IFF_MULTICAST (исключение составляет "интерфейс" закольцовывания). Также выполняется обнаружение других процессов mrouted, непосредственно доступных через эти интерфейсы. Для переопределения конфигурации по умолчанию или добавления туннельных каналов для связи с другими процессами mrouted можно использовать конфигурационные команды, размещаемые в файле /etc/mrouted.conf (или в другом файле, указанном опцией -c). Существует пять типов команд конфигурации:

phyint локальный_адрес [disable] [metric m]
[threshold t] [rate_limit b]
[boundary (имя_границы|ограниченный_адрес/длина_маски)]
[altnet сеть/длина_маски]
Эта команда может использоваться для отключения групповой маршрутизации на физическом интерфейсе, определенном локальным IP-адресом, указанным аргументом локальный_адрес или для связывания нестандартного значения метрики (metric) или порогового значения (threshold) с указанным физическим интерфейсом. Локальный IP-адрес, указанный аргументом локальный_адрес, можно заменить именем интерфейса (например, le0). Если phyint соединен с несколькими подсетями IP, каждая дополнительная сеть обозначается ключевым словом altnet. Конфигурационные команды phyint должны указываться перед командами tunnel.
tunnel локальный_адрес удаленный_адрес [metric m]
[threshold t] [rate_limit b]
[boundary (имя_границы|ограниченный_адрес/длина_маски)]
Эта команда может использоваться для установления туннельного канала между локальным IP-адресом, заданным аргументом локальный_адрес, и удаленным IP-адресом, заданным аргументом удаленный_адрес, а также для связывания с этим туннелем нестандартного значения метрики (metric) или порогового значения (threshold). Локальный IP-адрес, заданный аргументом локальный_адрес, можно заменить именем интерфейса (например. le0). Удаленный IP-адрес, заданный аргументом удаленный_адрес, можно заменить именем хоста в том и только в том случае, когда с именем хоста связан единственный IP-адрес. Перед использованием туннеля, заданного аргументом tunnel, необходимо выполнить его настройку в файлах mrouted.conf обоих маршрутизаторов.
cache_lifetime ct
Время (в секундах), в течение которого кэшированный маршрут остается в ядре (значение по умолчанию – 300). Значение этого аргумента должно лежать в интервале от 300 (5 минут) до 86400 (1 день).
pruning off/on
Отключение маршрутизации с отсечением для mrouted (по умолчанию используется режим с отсечением). Также mrouted можно запустить в режиме без отсечения с помощью опции командной строки -p. Предполагается, что настройка маршрутизатора подобным образом должна выполняться исключительно в целях тестирования.
name имя_границы ограниченный_адрес/длина_маски
С помощью этого ключевого слова можно присваивать границам имена в целях упрощения настройки. В опции boundary для команд phyint или tunnel можно указывать как имя, так и границу.

Формат файла свободный, пробельные символы (включая символы новой строки) не несут значения.

Опции конфигурационной команды

Опции boundary и altnet можно указывать требуемое количество раз.

metric
"Затраты", связанные с пересылкой дейтаграммы по указанному интерфейсу или туннелю; этот параметр можно использовать для воздействия на выбор режимов (значение по умолчанию – 1). Величина метрики должна быть по возможности наименьшей, поскольку mrouted не выполняет маршрутизацию по путям, сумма метрик для которых превышает 31.
threshold
Предельное время существование (TTL), требуемое для переадресации направленной дейтаграммы на заданный интерфейс или туннель (tunnel). Значение по умолчанию – 1. Используется для управления направленными дейтаграмми. (Предельное время существования перенаправляемых пакетов не уменьшается на величину порогового значения, а только сравнивается с ним.) На каждом маршрутизаторе с поддержкой групповой передачи предельное время существования уменьшается на 1.

В целом, все процессы mrouted, соединенные с определенной подсетью или туннелем, должны использовать одинаковые значения аргументов metric и threshold для данной подсети либо туннеля (tunnel).
rate_limit
Позволяет администратору сети указывать определенную пропускную способность в килобитах в секунду, назначаемую трафику многоадресной передачи. Значение по умолчанию равно 500 кбит/с для туннелей (tunnel) и 0 (без ограничения) для физических интерфейсов.
boundary
Позволяет сконфигурировать интерфейс в качестве административной границы для указанного ограниченного адреса. На ограниченном интерфейсе не выполняется перенаправление пакетов, принадлежащих к этому адресу. Для опции boundary можно указывать либо имя, либо спецификацию границы.

Утилита mrouted не инициирует выполнение, если ей назначено менее двух включенных виртуальных интерфейсов (vif), где vif является либо физическим интерфейсом с возможностью групповой передачи, либо туннелем (tunnel). Если все виртуальные интерфейсы (vif) являются туннелями, в журнал записывается предупреждение; такую конфигурацию mrouted рекомендуется заменить более прямыми туннелями (исключить посредничество).

Сигналы

Утилита mrouted реагирует на следующие сигналы:

SIGHUP
Перезапуск mrouted. При каждом вызове этого сигнала выполняется повторное чтение конфигурационного файла.
SIGINT
Корректное прекращение работы (т.е. отправка сообщений о прекращении работы всем соседним маршрутизаторам).
SIGTERM
То же, что и SIGINT.
SIGUSR1
Запись дампа внутренних таблиц маршрутизации в файл /var/tmp/mrouted.dump.
SIGUSR2
Запись дампа внутренних таблиц кэша в файл /var/tmp/mrouted.cache.
SIGQUIT
Запись дампа внутренних таблиц маршрутизации в стандартный поток ошибок ( stderr) (только в случае вызова mrouted с ненулевым уровнем отладки).

Для удобства отправки сигналов утилита mrouted при запуске записывает свой идентификатор процесса (pid) в файл /var/run/mrouted.pid.

Примеры:

Ниже приведен пример конфигурации гипотетического маршрутизатора групповой передачи в крупном учебном заведении.

# Пример файла mrouted.conf # # Присвоение имен границам для упрощения работы. name LOCAL 239.255.0.0/16 name EE 239.254.0.0/16 # le1 – это шлюз сети compsci, локальные группы # не должны перенаправляться в эту сеть. phyint le1 boundary EE # le2 – это интерфейс с сетью classroom, с ним связаны # четыре подсети различной длины. Обратите внимание, что можно использовать # как IP-адрес, так и имя интерфейса. phyint 172.16.12.38 boundary EE altnet 172.16.15.0/26 altnet 172.16.15.128/26 altnet 172.16.48.0/24 # atm0 – интерфейс с ATM, в которой не поддерживается # многоадресная передача. phyint atm0 disable # Это внутренний туннель в другую подсеть EE # Ограничение пропускной способности туннеля, установленное по умолчанию, # снимается, поскольку туннель работает по Ethernet tunnel 192.168.5.4 192.168.55.101 metric 1 threshold 1 rate_limit 0 # Это туннель во внешний мир. # Поосторожнее с границами! tunnel 192.168.5.4 10.11.12.13 metric 1 threshold 32 boundary LOCAL boundary EE

Таблицы маршрутизации

Таблицы маршрутизации выглядят следующим образом:

Virtual Interface Table Vif Local-Address Metric Thresh Flags 0 36.2.0.8 subnet: 36.2 1 1 querier groups: 224.0.2.1 224.0.0.4 pkts in: 3456 pkts out: 2322323 1 36.11.0.1 subnet: 36.11 1 1 querier groups: 224.0.2.1 224.0.1.0 224.0.0.4 pkts in: 345 pkts out: 3456 2 36.2.0.8 tunnel: 36.8.0.77 3 1 peers: 36.8.0.77 (2.2) boundaries: 239.0.1 : 239.1.2 pkts in: 34545433 pkts out: 234342 3 36.2.0.8 tunnel: 36.6.8.23 3 16 Multicast Routing Table (1136 entries) Origin-Subnet From-Gateway Metric Tmr In-Vif Out-Vifs 36.2 1 45 0 1* 2 3* 36.8 36.8.0.77 4 15 2 0* 1* 3* 36.11 1 20 1 0* 2 3* . . .

В этом примере указаны четыре виртуальных интерфейса (Vif) для соединения с двумя подсетями и двумя туннелями. Туннель vif 3 не используется (отсутствует адрес удаленной стороны). Для подсетей виртуальных интерфейсов vif 0 и vif 1 имеется ряд групп; туннели никогда не обладают группами. Данный экземпляр mrouted отвечает за передачу периодических запросов членства в группе на подсети виртуальных интерфейсов vif 0 и vif 1 в соответствии с флагами "querier". В списке границ указываются ограниченные адреса для данного интерфейса. Для каждого интерфейса также выводится суммарное количество входящих и исходящих пакетов.

С каждой подсетью, из которой могут поступать групповые дейтаграммы, связаны адрес маршрутизатора предыдущего перехода (если только подсеть не подключена напрямую); метрика пути обратно к источнику; время, прошедшее с момента получения последнего обновления для этой подсети; виртуальный интерфейс (vif) входящего направления для пакетов групповой передачи из этого источника; наконец, список vif исходящего направления. Символ звездочки (*) означает, что vif исходящего направления соединен с конечным узлом дерева широковещательной передачи с корнем в источнике, и групповая дейтаграмма из этого источника передается на данный vif исходящего направления, только если этот конечный узел дерева содержит члены группы назначения.

Утилита mrouted также ведет копию таблицы кэша перенаправления ядра. Создание и удаление записей выполняется утилитой mrouted.

Таблицы кэша выглядят следующим образом:

Multicast Routing Cache Table (147 entries) Origin Mcast-group CTmr Age Ptmr IVif Forwvifs 13.2.116/22 224.2.127.255 3m 2m - 0 1 >13.2.116.19 >13.2.116.196 138.96.48/21 224.2.127.255 5m 2m - 0 1 >138.96.48.108 128.9.160/20 224.2.127.255 3m 2m - 0 1 >128.9.160.45 198.106.194/24 224.2.135.190 9m 28s 9m 0P >198.106.194.22

Каждая запись характеризуется номером исходной подсети и группой назначения групповой передачи.

>
Для каждого источника подсети в дополнительной строке первым выводится символ ">". В одной подсети может быть несколько источников.
Age
Время, прошедшее с момента первоначального создания записи. Поскольку записи кэша обновляются по мере пропускания трафика, возраст записей маршрутизации может быть очень большим.
CTmr
Срок существования записи. Запись удаляется из таблицы кэша, когда таймер достигает нулевого значения.
Forwvifs
Интерфейсы, на которые перенаправляются дейтаграммы, принадлежащие к исходной группе. Символ p указывает, что дейтаграммы на этот интерфейс не перенаправляются. Интерфейс, не включенный в список, представляет собой подсеть – конечный узел дерева, которая не содержит членов определенной группы в данной подсети. Символ b для интерфейса указывает, что этот интерфейс является граничным (boundary), т.е. трафик для ограниченного адреса на этом интерфейсе не перенаправляется.
Ivif
Виртуальный интерфейс (vif) входящего направления для многоадресных пакетов из данного источника. Каждый маршрутизатор также ведет учет количества сообщений отсечения, полученных от соседних маршрутизаторов для определенного источника и группы. Если на всех каналах нисходящего направления в дереве многоадресной передачи для подсети отсутствуют члены группы многоадресной передачи, сообщение отсечения отправляется на маршрутизатор восходящего направления. Они отмечаются символом P после номера vif.
Ptmr
Время до истечения таймаута сообщения отсечения в восходящем направлении или дефис, если сообщение отсечения не отправлялось.

Файлы:

/etc/mrouted.conf
Конфигурационный файл по умолчанию для утилиты mrouted.
/var/run/mrouted.pid
При запуске утилита mrouted записывает в этот файл свой идентификатор процесса (pid).
/var/tmp/mrouted.dump
В этот файл утилитой mrouted выводится дамп внутренних таблиц маршрутизации при получении сигнала SIGUSR1.
/var/tmp/mrouted.cache
В этот файл утилитой mrouted выводится дамп внутренних таблиц кэша при получении сигнала SIGUSR2.

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

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

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

syslogd

Основано на RFC 1075.




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