Представление информации о маршрутах в таблицах маршрутизации.

Структура таблицы маршрутизации стека TCP/IP, соответствуя общим принципам построения таблиц маршрутизации (см. предыдущий выпуск рубрики), зависит от конкретной реализации стека TCP/IP. В качестве примера рассмотрим несколько вариантов таблицы маршрутизации, с которыми мог бы работать маршрутизатор М1 в сети, представленной на Рисунке 1.

Рисунок 1. Пример маршрутизируемой сети.

Если в качестве маршрутизатора М1 в данной сети применяется программный маршрутизатор MPR операционной системы Microsoft Windows NT, то его таблица маршрутизации могла бы иметь такой же вид, как в Таблице 1. Если на месте маршрутизатора М1 установить аппаратный маршрутизатор NetBuil-der II компании 3Com, то его таблица маршрутизации для этой же сети может выглядеть так, как показано в Таблице 2. В Таблице 3 помещена таблица маршрутизации для маршрутизатора М1, реализованного в виде программного маршрутизатора одной из версий операционной системы UNIX.

Заметим, что поскольку между структурой сети и таблицей маршрутизации в принципе нет однозначного соответствия, то и для каждого из приведенных вариантов таблицы можно предложить свои «подварианты», отличающиеся выбранным маршрутом к той или иной сети. Поэтому наше внимание будет сосредоточено главным образом на существенных различиях в форме представления маршрутной информации разными реализациями маршрутизаторов.

ОСНОВНЫЕ ПАРАМЕТРЫ ТАБЛИЦ МАРШРУТИЗАЦИИ

Несмотря на достаточно заметные внешние различия, во всех трех таблицах присутствуют все ключевые параметры, необходимые для работы маршрутизатора, которые мы рассмотрели ранее при обсуждении концепции маршрутизации. К таким параметрам, безусловно, относятся адрес сети назначения (столбцы Destination в маршрутизаторах NetBuilder и UNIX или Network Address в маршрутизаторе MPR) и адрес следующего маршрутизатора (столбцы Gateway в маршрутизаторах NetBuilder и UNIX или Gateway Address в маршрутизаторе MPR). Третий ключевой параметр — адрес порта, на который нужно направить пакет, в одних таблицах указывается прямо (поле Interface в таблице Windows NT), а в других — косвенно. Так, в таблице UNIX-маршрутизатора вместо адреса порта задается его условное наименование — le0 для порта с адресом 198.21.17.5, le1 для порта с адресом 213.34.12.3 и lo0 для внутреннего порта с адресом 127.0.0.1.

В маршрутизаторе NetBuilder II поле, указывающее выходной порт в какой-либо форме, вообще отсутствует. Это объясняется тем, что адрес выходного порта всегда можно косвенно определить по адресу следующего маршрутизатора. Например, попробуем определить по Таблице 2 адрес выходного порта для сети 56.0.0.0. Из таблицы видно, что следующим маршрутизатором для этой сети будет маршрутизатор с адресом 213.34.12.4. Адрес следующего маршрутизатора должен принадлежать одной из непосредственно присоединенных к маршрутизатору сетей, и в данном случае это сеть 213.34.12.0. Один из портов маршрутизатора подключен к этой сети, а его адрес 213.34.12.3 мы находим в поле Gateway второй строки таблицы маршрутизации, где указывается непосредственно присоединенная сеть 213.34.12.0. Для таких сетей адресом следующего маршрутизатора всегда будет адрес собственного порта маршрутизатора. Таким образом, адрес выходного порта для сети 56.0.0 — это 213.34.12.3.

Остальные параметры, которые можно найти в представленных версиях таблицы маршрутизации, являются необязательными для принятия решения о пути следования пакета.

Наличие или отсутствие поля маски в таблице говорит о том, насколько современен данный маршрутизатор. Стандартным решением сегодня является использование поля маски в каждой записи таблицы, как это сделано в таблицах маршрутизаторов MPR Windows NT (поле Netmask) и NetBuilder (поле Mask). Отсутствие поля маски говорит о том, что либо маршрутизатор рассчитан на работу только с тремя стандартными классами адресов, либо он использует для всех записей одну и ту же маску, а это снижает гибкость маршрутизации.

Как видно из примера таблицы Unix-маршрутизатора, метрика относится к необязательным параметрам. В остальных двух таблицах это поле имеется, однако оно используется только в качестве признака непосредственно подключенной сети. Действительно, если в таблице маршрутизации каждая сеть назначения упомянута только один раз, то поле метрики не будет приниматься во внимание при выборе маршрута, так как выбор отсутствует. А вот признак непосредственно подключенной сети маршрутизатору нужен, потому что пакет для этой сети обрабатывается особым способом — он не передается следующему маршрутизатору, а отправляется узлу назначения. Поэтому метрика 0 для маршрутизатора NetBuilder или 1 для маршрутизатора MPR сообщает, что эта сеть непосредственно подключена к конкретному порту. Другое значение метрики соответствует удаленной сети. Выбор значения метрики для непосредственно подключенной сети является достаточно произвольным, главное, чтобы метрика удаленной сети отсчитывалась с учетом этого выбранного начального значения. В UNIX-маршрутизаторе используется поле признаков, где флаг G отмечает удаленную сеть, а его отсутствие — непосредственно подключенную.

Однако иногда маршрутизатор должен обязательно хранить значение метрики для записи о каждой удаленной сети. Эти ситуации возникают, когда записи в таблице маршрутизации являются результатом работы некоторых протоколов маршрутизации, например протокола RIP. Тогда новая информация о какой-либо удаленной сети сравнивается с имеющейся в таблице, и если метрика оказывается лучше, то новая запись вытесняет предыдущую. В таблице UNIX-маршрутизатора поле метрики отсутствует, и это значит, что он не использует протокол RIP.

Флаги записей присутствуют только в таблице UNIX-маршрутизатора. Они описывают характеристики записи:

U показывает, что маршрут активен и работоспособен. Аналогичный смысл имеет поле Status в маршрутизаторе NetBuilder;

H — признак специфического маршрута к определенному хосту. Маршрут ко всей сети, к которой принадлежит данный хост, может отличаться от данного маршрута;

G означает, что маршрут пакета проходит через промежуточный маршрутизатор (gateway). Отсутствие этого флага указывает на непосредственно подключенную сеть;

D означает, что маршрут получен из сообщения Redirect (перенаправление) протокола ICMP. Такой признак может присутствовать только в таблице маршрутизации конечного узла. Он означает, что конечный узел при какой-то предыдущей передаче пакета выбрал не самый рациональный следующий маршрутизатор на пути к данной сети, и этот маршрутизатор с помощью протокола ICMP сообщил, что все последующие пакеты в данную сеть нужно отправлять через другой соседний маршрутизатор. Протокол ICMP может посылать сообщения только узлу-отправителю, поэтому на промежуточном маршрутизаторе этот признак встретиться не может. Признак никак не влияет на процесс маршрутизации, он только указывает администратору источник появления записи.

В таблице UNIX-маршрутизатора используется еще два поля, имеющих справочное значение. Поле Refcnt показывает, сколько раз на данный маршрут ссылались при продвижении пакетов. Поле Use отражает количество пакетов, переданных по данному маршруту.

В таблице маршрутизатора NetBuil-der также имеются два справочных поля. Поле времени жизни TTL (Time To Live) имеет смысл для динамических записей, с ограниченным сроком жизни. Текущее значение поля показывает оставшийся срок жизни записи в секундах. Поле Source отражает источник появления записи в таблице маршрутизации. Хотя это поле присутствует не во всех таблицах маршрутизаторов, но практически для всех маршрутизаторов существует три основных источника появления записи в таблице.

ИСТОЧНИКИ И ТИПЫ ЗАПИСЕЙ В ТАБЛИЦЕ МАРШРУТИЗАЦИИ

Первым источником является программное обеспечение стека TCP/IP. При инициализации маршрутизатора это программное обеспечение автоматически заносит в таблицу несколько записей, в результате чего создается так называемая минимальная таблица маршрутизации.

Во-первых, это записи о непосредственно подключенных сетях и маршрутизаторах по умолчанию, информация о которых появляется в стеке при ручном конфигурировании интерфейсов компьютера или маршрутизатора. В приведенных примерах к ним относятся записи о сетях 213.34.12.0 и 198.21.17.0, а также о маршрутизаторе по умолчанию — default в UNIX-маршрутизаторе и 0.0.0.0 в маршрутизаторе MPR Windows NT. В рассматриваемой таблице для маршрутизатора NetBuilder маршрутизатор по умолчанию не используется, следовательно, при поступлении пакета с адресом назначения, отсутствующим в таблице, этот пакет будет отброшен.

Во-вторых, программное обеспечение автоматически заносит в таблицу маршрутизации записи об адресах особого назначения. В таблице маршрутизатора MPR Windows NT содержится наиболее полный набор записей такого рода. Несколько записей связаны с особым адресом 127.0.0.0 (loopback), который используется для локального тестирования стека TCP/IP. Пакеты, направленные в сеть с номером 127.0.0.0, не передаются протоколом IP на канальный уровень для последующего направления в сеть, а возвращаются в источник — локальный модуль IP. Записи с адресом 224.0.0.0 предназначены для обработки групповых адресов (multicast address). Кроме того, в таблицу могут быть занесены адреса для широковещательных рассылок (например, записи 8 и 11 содержат адрес отправки широковещательного сообщения в соответствующих подсетях, а последняя запись в таблице — адрес ограниченной широковещательной рассылки сообщения). Заметим, что в некоторых таблицах записи об особых адресах вообще отсутствуют.

Вторым источником появления записи в таблице является администратор, непосредственно формирующий ее с помощью некоторой системной утилиты, например программы route, имеющейся в операционных системах UNIX и Windows NT. В аппаратных маршрутизаторах также всегда поддерживается команда для ручного задания записей таблицы маршрутизации. Заданные вручную записи всегда являются статическими, т. е. не имеют срока истечения жизни. Они могут быть как постоянными, т. е. сохраняющимися при перезагрузке маршрутизатора, так и временными, хранящимися в таблице только до выключения устройства. Часто администратор вручную заносит запись default о маршрутизаторе по умолчанию. Таким же образом в таблицу маршрутизации может быть внесена запись о специфичном для узла маршруте, где вместо номера сети содержится полный IP-адрес, т. е. адрес, имеющий ненулевую информацию не только в поле номера сети, но и в поле номера узла. Для такого конечного узла маршрут должен выбираться не так, как для всех остальных узлов сети, к которой он относится. В случае, когда в таблице есть разные записи о продвижении пакетов для всей сети и ее отдельного узла, при поступлении пакета, адресованного узлу, маршрутизатор отдаст предпочтение записи с полным адресом узла.

И, наконец, третьим источником записей могут быть протоколы маршрутизации, такие, как RIP или OSPF. Данные записи всегда являются динамическими, т. е. имеют ограниченный срок жизни. Программные маршрутизаторы Windows NT и UNIX не показывают источник появления той или иной записи в таблице, а маршрутизатор NetBuilder использует для этой цели поле Source. В приведенном в Таблице 2 примере первые две записи созданы программным обеспечением стека на основании данных о конфигурации портов маршрутизатора — это показывает признак Connected. Следующие две записи обозначены как Static, что указывает на то, что их ввел вручную администратор. Последняя запись появилась в результате работы протокола RIP, поэтому в ее поле TTL имеется значение 160.

Наталья Олифер — ответственный редактор LAN. С ней можно связаться по адресу: olifer@lanmag.ru.