Сервис маршрутизации RIP и обнаружения маршрутизаторов
routed [-Adghmqstv] [-F сеть [/маска[,метрика]]] [-P параметры] [-T файл_трассировки]
SIGUSR1
или SIGUSR2
или команды rtquery.
Любые другие аргументы интерпретируются как имя файла, в котором требуется фиксировать действия утилиты routed. Вместо дописывания имени файла трассировки в команду предпочтительно использовать опцию -T. |
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, mips, ppc, x86
Сервис routed вызывается при загрузке для управления таблицами сетевой маршрутизации. Для ведения таблицы маршрутизации ядра этот сервис использует протокол маршрутной информации (Routing Information Protocol, RIP), RIPv1 (RFC 1058), RIPv2 (RFC 1723) и интернет-протокол обнаружения маршрутизаторов (Internet Router Discovery Protocol) (RFC 1256). Протокол RIPv1 основан на прототипной реализации из BSD версии 4.3.
Этот сервис прослушивает на сокете UDP службу route на предмет обнаружения пакетов протокола маршрутной информации. Он также отправляет и получает групповые сообщения обнаружения маршрутизаторов ICMP. Если хост является маршрутизатором, то routed периодически передает копии таблиц маршрутизации хостам и сетям, подключенные напрямую. Он также объявляет или запрашивает маршруты по умолчанию с использованием групповых сообщений обнаружения маршрутизаторов ICMP.
При запуске (или последующем включении сетевого интерфейса) утилита routed использует функцию семейства адресов AF_ROUTE
для поиска подключенных напрямую интерфейсов, настроенных в системе и отмеченных как "активные". Она добавляет необходимые для интерфейсов маршруты в таблицу маршрутизации ядра. Вскоре после запуска и при условии наличия по крайней мере одного интерфейса, для которого протокол RIP не был деактивирован утилита routed удаляет все уже существующие нестатические маршруты в таблице ядра. Статические маршруты в таблице ядра сохраняются и включаются в ответы RIP, если содержат действительную метрику RIP.
При наличии нескольких интерфейсов (не считая интерфейса обратной связи), предполагается, что хост должен переадресовывать пакеты в подключенных сетях. После передачи команды request RIP, объявлений и запросов обнаружения маршрутизаторов в новый интерфейс сервис входит в цикл и прослушивает запрос и ответ RIP, а также пакеты обнаружения маршрутизаторов от других хостов.
При получении пакета request утилита routed формирует ответ на основе данных, содержащихся во внутренних таблицах. Созданный пакет response содержит список известных маршрутов, каждый из которых помечен метрикой "счетчика переходов" (значение счетчика от 16 и выше считается "бесконечным"). Объявленные метрики соответствуют метрике, связанной с интерфейсом (см. описание утилиты ifconfig), поэтому настройка метрики на интерфейсе позволяет эффективно управлять трафиком.
В ответы не включаются маршруты, в которых первый переход в запрашивающей сети должен быть реализован в части расщепленного_горизонта. В ответ на запросы программ запросов, например rtquery, таблица выводится полностью.
Таблица маршрутизации, которой управляет сервис, содержит достаточное пространство для нескольких шлюзов, чтобы ускорить восстановление после отказа маршрутизатора для каждого адреса назначения. Полученные пакеты RIP response используются для обновления таблиц маршрутизации, если они созданы одним из нескольких известных шлюзов или объявляют более подходящую метрику, чем хотя бы один из существующих шлюзов.
При обновлении утилита routed записывает изменения в собственные таблицы и обновляет таблицу маршрутизации ядра в случае изменения кратчайшего маршрута до адреса назначения. Изменение в таблице маршрутизации ядра отражается на следующей партии отправленных пакетов response. Если следующий ответ не запланирован в течение определенного времени, отправляется ответ с обновлением флэш-памяти только для измененных маршрутов.
Помимо обработки входящих пакетов, утилита routed также периодически проверяет записи в таблице маршрутизации. Если запись не обновлялась в течение 3 минут, для нее устанавливается бесконечная метрика, и такая запись отмечается как подлежащая удалению. Удаление выполняется после объявления маршрута с бесконечной метрикой, чтобы эта запись стала недействительной во всей локальной сети. Это форма блокировки сбойного маршрута. Через некоторое время маршруты в таблице ядра, добавленные или измененные в результате передачи сообщений ICMP о перенаправлении, удаляются с целью минимизации "черных дыр". В случае таймаута TCP-соединения ядро сообщает об этом утилите routed, которая удаляет все перенаправленные маршруты через задействованный шлюз, увеличивает возраст всех маршрутов RIP через шлюз для обеспечения альтернативного выбора, а также возраст всех соответствующих маршрутов протокола обнаружения маршрутизаторов по умолчанию.
Хосты, выступающие в качестве межсетевых маршрутизаторов, безвозмездно предоставляют свои таблицы маршрутизации всем напрямую подключенным хостам и сетям каждые 30 секунд. Эти ответы RIP отправляются на широковещательный адрес в сетях, поддерживающих широковещательную передачу, на адрес назначения в каналах "точка-точка" и на собственный адрес маршрутизатора в других сетях. Если активирован RIPv2, то интерфейсами, поддерживающими многоадресную передачу, отправляются многоадресные пакеты.
Если ответ удаленным интерфейсом не получен, а также при возникновении ошибок в процессе отправки ответов или ошибок ввода-вывода (см. netstat), кабель или другой элемент интерфейса считается отключенным или поврежденным и маршруты соответствующим образом корректируются.
Интернет-протокол обнаружения маршрутизаторов используется аналогичным образом. Когда сервис предоставляет маршруты RIP, он также прослушивает запросы обнаружения маршрутизаторов и отправляет объявления. В режиме подавления вывода, когда осуществляется прослушивание других маршрутизаторов RIP, он отправляет запросы и прослушивает объявления. При получении подходящего объявления и при условии работы в одной сети прослушивание широковещательных или многоадресных ответов RIP прекращается. Сервис отслеживает объявления от нескольких маршрутизаторов, чтобы обеспечить быстрое восстановление в случае отказа выбранного маршрутизатора. Если все найденные маршрутизаторы оказываются неработоспособными, сервис возобновляет прослушивание ответов RIP. В целях обеспечения использования всех интерфейсов он продолжает прослушивание, а если задействованы несколько сетей, то используется протокол обнаружения маршрутизаторов.
В соответствии со стандартом обнаружения маршрутизаторов срок существования объявлений по умолчанию составляет 30 минут. Это означает, что в случае сбоя подходящий маршрут для клиента может отсутствовать в течение 30 минут. Этот срок по умолчанию можно сократить до 45 секунд, для чего необходимо ввести следующее:
-P rdisc_interval=45
в командной строке или следующее:
rdisc_interval=45
в файле /etc/gateways.
При использовании протокола обнаружения маршрутизаторов (который выбирается по умолчанию, если в системе имеется один сетевой интерфейс и получено объявление обнаружения маршрутизаторов) в таблице ядра содержится только один маршрут по умолчанию и переменное количество перенаправленных маршрутов к хостам. Хостом с несколькими сетевыми интерфейсами этот маршрут по умолчанию используется только на одном из интерфейсов. Таким образом, для многосетевых хостов, на которых сервис запущен с помощью опции -q, может потребоваться указать параметр no_rdisc, описанный далее.
Для получения информации о поддержке "устаревших" систем, в которых недоступны протокол RIPv2 и обнаружение маршрутизаторов, см. описание функции pm_rdisc.
Объявления и запросы обнаружения маршрутизаторов по умолчанию не передаются по каналам "точка-точка" (например, PPP). Сервис routed использует сетевую маску, связанную с каналами "точка-точка" (например, PPP с флагом IFF_POINTOPOINT
), для получения сетевой маски, используемой в удаленной системе в случае использования RIPv1.
Сервис routed поддерживает понятие удаленного пассивного или активного шлюза. При запуске routed считывает /etc/gateways в следующих целях:
Для получения дополнительной информации см. файл /etc/gateways.
Базовые подсистемы ЗОСРВ «Нейтрино», NetBSD
Предыдущий раздел: Сервисы