Протоколы маршрутизации используют следующие алгоритмы.
• Дистанционно-векторный алгоритм. Этот алгоритм отслеживает число маршрутизаторов, находящихся между текущим маршрутизатором и узлом назначения. При передаче пакета в некоторую сеть выбирается такой путь, на котором число маршрутизаторов будет минимальным. Данный алгоритм используется при работе протокола RIP (Routing Information Protocol — протокол маршрутной информации).
• Алгоритм маршрутизации по состоянию канала. Данный алгоритм связывает информацию о стоимости передачи пакета с каждым соединением. Маршрутизатор, использующий такой алгоритм, выбирает путь к целевой сети, для которого значение стоимости минимально. Стоимость не обязательно должна быть равна числу маршрутизаторов, при ее определении могут также
учитываться различия в быстродействии сетевых соединений. Данный алгоритм используется при работе протокола OSPF (Open Shortest Path First — первоочередное открытие кратчайших маршрутов).
Использование
routed
В системе UNIX традиционно используется протокол RIP. В Linux он реализуется демоном
routed
, входящим в состав одноименного пакета. Маршрутизаторы, поддерживающие RIP, обмениваются адресами сетей (например, 172.22.0.0) и связанными с ними метриками (в качестве метрики принимается число маршрутизаторов между маршрутизатором, который должен отправить пакет, и целевой сетью). Значения метрики могут лежать в пределах от 0 до 15. Если на пути к целевой сети лежит больше 15 маршрутизаторов, длина маршрута считается бесконечной и информация об этом маршруте удаляется из таблицы. При работе протокола RIP используется дистанционно-векторный алгоритм, а значение метрики оценивается очень грубо. Протокол RIP в основном применяется в небольших и средних сетях; для управления передачей данных по магистралям Internet он не используется.
Когда маршрутизатор получает информацию от другого маршрутизатора, он либо добавляет запись о маршруте в таблицу, либо заменяет существующую запись с более высоким значением метрики, либо удаляет маршрут, если полученное значение метрики, увеличенное на единицу, превышает 15.
При использовании программы
routed
в системе Linux обычно не возникает проблем. Для ее запуска применяются средства, рассмотренные в главе 4. Работой сервера управляет конфигурационный файл
/etc/gateways
, в котором содержится список начальных маршрутов. Пример записи в файле
/etc/gateways
приведен ниже.
net 0.0.0.0 gateway 172.22.7.1 metric 1 active
В данном примере определяется маршрут по умолчанию (
net 0.0.0.0
), для которого задан шлюз 172.22.7.1. Метрика маршрута равна 1. Ключевое слово
active
указывает на то, что этот маршрут может быть обновлен. Если вы хотите, чтобы маршрут сохранялся в таблице в неизменном виде, надо заменить ключевое слово
active
на
passive
. Для работы
routed
можно использовать файл
/etc/gateways
, поставляемый в составе пакета. В процессе работы демон
routed
может, передавая широковещательные запросы, находить другие маршрутизаторы, использующие протокол RIP. После обнаружения маршрутизатора с ним начинается обмен информацией о маршрутах.
Использование GateD
Несмотря на то что протокол RIP традиционно используется в системе UNIX, область его применения ограничена. Одно из ограничений связано с тем, что пакет не может быть передан по маршруту, насчитывающему больше маршрутизаторов; это не позволяет использовать данный протокол в больших сетях. Еще одна проблема связана с медленной сходимостью алгоритма. При изменении структуры сети для достижения стабильного состояния таблицы маршрутизации может потребоваться несколько минут. И наконец, RIP не поддерживает маски подсетей, поэтому он может использоваться только для сетей, соответствующих классам А, В и С. Если, например, сеть класса С разбита на несколько подсетей, маршрутизатор, поддерживающий RIP, передает адрес подсети как адрес всей сети класса С. В результате возникают проблемы при обмене данными между различными подсетями.
В версии 2 протокола RIP (RIPv2) была добавлена поддержка маски подсети. Для хранения данных о маске использовалось поле, которое в исходном варианте RIP было зарезервировано. Протокол RIPv2 реализован в программе GateD (
http://www.gated.net
). Работой GateD управляет
конфигурационный файл
/etc/gated.conf
. Для изменения конфигурации GateD используется утилита
gdc
, которая поставляется в составе того же пакета. Настройка GateD не требует много усилий. В процессе выполнения программа взаимодействует с другими маршрутизаторами, поддерживающими протокол RIP или RIPv2, и модифицирует содержимое таблицы маршрутизации. Подобно другим демонам, GateD запускается с помощью сценария SysV либо локального сценария запуска.
Помимо RIP и RIPv2, GateD также поддерживает протокол маршрутизации OSPF. Другие средства маршрутизации, например Zebra, также поддерживают несколько протоколов.
Использование Zebra
Наряду с рассмотренными выше программами маршрутизации в Linux инструмент Zebra, который представляет собой пакет, состоящий из нескольких доменов и поддерживающий следующие протоколы.
• RIP. Zebra поддерживает протоколы RIP и RIPv2, а также версию RIP для IPv6, которая называется RIPng. Для взаимодействия по протоколам RIP и используется сервер
ripd
, а поддержка RIPng реализована в программе
ripngd
.
• OSPF. Для работы по протоколу OSPF используется программа
ospfd
, а вариант OSPF для IPv6 реализован в программе
ospf6d
. Подобно RIP, OSPF применяется для маршрутизации пакетов в сетевых структурах, насчитывающих несколько локальных сетей.
• BGP (Border Gateway Protocol — пограничный шлюзовый протокол) широко используется в Internet. Для поддержки данного протокола предназначен сервер
bgpd
.
Общее управление работой пакета осуществляет программа
zebra
. Серверы, входящие в состав пакета, используют ее для обновления таблицы маршрутизации.
zebra
выполняется как сервер; обратиться к ней можно с помощью клиентской программы
telnet
.
Каждый из демонов маршрутизации выполняется независимо от других. Например, если вам нужно обеспечить поддержку RIP или RIPv2, вы можете запустить только программы
zebra
и
ripd
. Работой каждого сервера управляет отдельный конфигурационный файл, расположенный в каталоге
/etc
или
/etc/zebra
. Имя файла совпадает с именем соответствующего демона. Например, содержимое файла
/etc/zebra/ospfd.conf
определяет конфигурацию сервера
ospfd
. Все конфигурационные файлы строятся по единому принципу. Символы
!
и
#
являются признаками комментариев. Опции, используемые для определения конфигурации, перечислены ниже.
•
hostname
. В качестве значения данной опции задается имя узла, выполняющего функции маршрутизатора.
•
password
. Программа
zebra
использует пароль для управления доступом других систем и серверов. Пароль необходимо задать в каждом конфигурационном файле. Этот пароль предоставляет ограниченный доступ к серверу.
•
enable password
. Данная опция позволяет задать специальный административный пароль, используемый программой
zebra
. Этот пароль надо задать в, том случае, если вам необходимо изменить конфигурацию сервера.
•
router протокол
. Конфигурационные файлы серверов требуют указания протокола. Так, в файле
ripd.conf
указывается
router rip
, в файле
ospfd.conf
—
router ospf
, а в файле
bgpd.conf
—
router bgp номер_автономной_системы
. (Номера автономных систем назначаются подобно IP-адресам. Если вы хотите применить BGP только в своей локальной сети, вам надо использовать номер автономной системы в диапазоне 64512-65535.)