mrouted
Менеджер
многоадресной IP-маршрутизации
Синтаксис:
mrouted
[-c конфигурационный_файл] [-d [уровень_отладки]] [-p]
Поддерживаемые
платформы:
Neutrino
Опции:
-c конфигурационный_файл]
Указать
конфигурационный файл (по умолчанию – /etc/mrouted.conf).
-d [уровень_отладки]
Указать уровень
отладки (значение по умолчанию – 0).
-p
Запустить mrouted в
режиме без отсечения.
Описание:
Утилита
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-маршрутизации
источника, что создает чрезмерную нагрузку на маршрутизаторы
некоторых типов.
Примечание.
В этой версии туннелирование с помощью 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.
Автор:
Стив
Диринг (Stev Deering), Аджит Тхиагараджан (Ajit
Thyagarajan), Билл Феннер (Bill Fenner).
Лицензия:
Авторские
права
на
утилиту mrouted
принадлежат Совету попечителей Университета им. Леланда
Стэнфорда младшего (The Board of Trustees of Leland Stanford
Junior University); уведомление об авторских правах и
формулировку лицензии см. в разделе mrouted
приложения "Уведомление об авторских правах третьих сторон".