Маршрутизаторы в распределенных сетях

Маршрутизатор является одним из основных компонентов распределенных сетей передачи данных. По сути создание распределенных сетей было бы невозможным без маршрутизаторов.

Дмитрий Ганьжа

ЧТО ТАКОЕ МАРШРУТИЗАТОР?
АЛГОРИТМЫ МАРШРУТИЗАЦИИ
ОПРЕДЕЛЕНИЕ КРАТЧАЙШЕГО ПУТИ
ПРИМЕР ТАБЛИЦЫ МАРШРУТИЗАЦИИ
СПРАВЕДЛИВАЯ ОЧЕРЕДЬ?
ВИДЫ МАРШРУТИЗАТОРОВ
ЧЕМ ОТЛИЧАЮТСЯ МАРШРУТИЗАТОРЫ ОТ МОСТОВ?
МАРШРУТИЗАТОРЫ ПРОТИВ КОММУТАТОРОВ
ЗАКЛЮЧЕНИЕ

Несмотря на то что место маршрутизаторов все чаще занимают коммутаторы, создание крупных распределенных сетей без них по-прежнему невозможно. Именно маршрутизаторы используются в корпоративных сетях для организации связи между локальными сетями и удаленными офисами. Кроме того, они являются неотъемлемым компонентом сетей операторов Internet, т. е. Самой Сети.

ЧТО ТАКОЕ МАРШРУТИЗАТОР?

Согласно определению крупнейшего производителя маршрутизаторов компании Cisco - "это устройство третьего уровня, использующее одну и более метрик для определения оптимального пути передачи сетевого трафика на основе информации сетевого уровня". По существу маршрутизатор представляет собой компьютер с необходимым программным обеспечением и устройствами ввода/вывода. В простейшем случае маршрутизатор имеет два сетевых интерфейса. Так, например, для организации связи филиала с главным офисом зачастую достаточно маршрутизатора с одним интерфейсом Ethernet и одним интерфейсом глобальной сети. В этом случае все пакеты, адрес получателя которых не принадлежит к данной локальной сети, пересылается с порта Ethernet на порт глобальной сети.

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

АЛГОРИТМЫ МАРШРУТИЗАЦИИ

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

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

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

В случае алгоритма состояния канала маршрутизатор собирает информацию о своих непосредственных соседях, измеряя задержку (пропускную способность). Вместо таблиц маршрутизации он осуществляет широковещательную рассылку информации только о своих непосредственных соседях, причем рассылка инициируется только при изменении информации. При получении изменений маршрутизатор определяет заново кратчайший путь до всех адресатов с помощью алгоритма Э. Дейкстры. Алгоритм состояния канала лежит в основе таких протоколов маршрутизации, как OSPF и IS-IS.

Picture

Шаг за шагом. В начальный момент расстояние до отправителя и то, через какой узел лежит маршрут, неизвестно, поэтому в скобках указано бесконечное расстояние и стоит прочерк для предшествующего узла. Узлы, от которых кратчайшее расстояние до отправителя становится известно, получают постоянную метку (черный кружочек). Текущий узел на каждом этапе отмечен стрелочкой. Всего показано шесть первых шагов алгоритма.

ОПРЕДЕЛЕНИЕ КРАТЧАЙШЕГО ПУТИ

Для определения кратчайшего пути от одного узла до другого Дейкстра предложил следующий алгоритм. Топология сети представляется в виде неориентированного графа с указанными для каждого ребра значениями метрики (например, расстояния между двумя соседними узлами). Изначально путь неизвестен, поэтому все вершины графа получают метки с бесконечным значением расстояния до отправителя. Метки могут быть временными или постоянными.

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

ПРИМЕР ТАБЛИЦЫ МАРШРУТИЗАЦИИ

В качества примера мы рассмотрим определение таблицы на маршрутизаторе компании Morning Star с тремя интерфейсами: одним интерфейсом Ethernet, последовательным портом, подключенным к внешнему модему, и интерфейсом глобальной сети frame relay (см. Таблицу 1). Модем используется для организации связи с сервером в главном офисе по PPP, IP-адрес которого - 137.175.2.7. Адрес интерфейса глобальной сети - 131.187.2.2, а адрес маршрутизатора оператора Internet 131.187.2.3. Для локальной сети оператор выделил блок адресов класса С в диапазоне от 199.18.210.1 до 199.18.210.254. Интерфейсы маршрутизатора мы именуем следующим образом: ed0 - интерфейс Ethernet, du0 - последовательный интерфейс, а tt0 - интерфейс глобальной сети. Все пакеты, посылаемые в локальную сеть главного офиса, направляются маршрутизатором на последовательный порт. Все пакеты, предназначенные для нашей локальной сети, направляются на интерфейс Ethernet с адресом 199.18.210.1. Адрес 127.0.0.1 является так называемым петлевым адресом, и он используется маршрутизатором для обращения к самому себе. Все остальные пакеты направляются на интерфейс глобальной сети. Флаг U (Up) означает, что соединение активно, а флаг G (Gateway) означает, что шлюз (так изначально назывались маршрутизаторы) действительно является шлюзом в другую сеть, в то время как флаг H (Host) означает, что маршрутизатор подключен к конечному адресату.

ТАБЛИЦА 1 - ПРИМЕР ПРОСТЕЙШЕЙ ТАБЛИЦЫ МАРШРУТИЗАЦИИ

Получатель
Шлюз
Флаги
Интерфейс
default
137.187.2.3
UG
tt0
127.0.0.1
127.0.0.1
UH
lo0
199.18.210.0
199.18.210.1
UG
ed0
137.175.2.7
199.18.210.1
UH
du0
137.187.2.3
131.187.2.2
UH
tt0
137.175.2
137.175.2.7
UG
du0

СПРАВЕДЛИВАЯ ОЧЕРЕДЬ?

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

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

Решение этой проблемы предлагает алгоритм "честной очереди" и его модификация - алгоритм "честной взвешенной очереди" (Weighted Fair Queue). Суть данного алгоритма состоит в том, что маршрутизаторы имеют несколько очередей для каждой выходной линии, по одной для каждого отправителя. Когда линия освобождается, маршрутизатор берет пакет из следующей по кругу очереди. Модифицированный же алгоритм позволяет давать приоритет тем или иным очередям.

ВИДЫ МАРШРУТИЗАТОРОВ

В предшествующем разделе под словом "маршрутизатор" подразумевался прежде всего IP-маршрутизатор, т. е. что он предназначен только для продвижения IP-пакетов. Однако маршрутизаторы могут работать и с пакетами других протоколов сетевого уровня, например с IPX. Таким образом, кроме IP-маршрутизаторов есть еще IPX-маршрутизаторы и др.

Многопротокольные маршрутизаторы концептуально напоминают мосты с той существенной разницей, что они работают на сетевом уровне. Как и любой маршрутизатор, они берут пакет с одной линии и передают его на другую, но при этом линии принадлежат к разным сетям и используют разные протоколы (например, IP и IPX).

Кроме того, сетевые устройства типа моста/маршрутизатора (brouter или bridge/router) работают в нормальном режиме как многопротокольные маршрутизаторы, а при получении пакета с неизвестным сетевым протоколом обрабатывают его как мост. Другие устройства со сходным названием "маршрутизирующий мост" (routing bridge) принадлежат к устройствам второго уровня и упоминаются здесь лишь из-за причастия routing. Они работают как мосты, но при этом поддерживают некоторые функции третьего уровня для оптимизации передачи данных.

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

Коммутаторы третьего уровня по сути также являются маршрутизаторами, причем пакетные коммутаторы (Packet-by-Packet Switch) - на самом деле обычные, только быстрые маршрутизаторы. (Подробнее о маршрутизаторах и маршрутизации третьего уровня смотри в этом номере в статьях Ника Липписа "Как купить коммутатор третьего уровня" и Аниты Карве "IP-коммутация попадает в точку".)

ЧЕМ ОТЛИЧАЮТСЯ МАРШРУТИЗАТОРЫ ОТ МОСТОВ?

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

"Чистый" мост анализирует заголовки кадра канального уровня и не просматривает (а тем более не модифицирует) пакеты сетевого уровня внутри пакетов. Мост не знает и не должен знать, какие пакеты - IP, IPX или CLNP - содержит в поле полезной нагрузки кадр, передаваемый из локальной сети 802.х в 802.y.

Маршрутизатор, наоборот, знает очень хорошо, с какими пакетами он работает - с IP, IPX, CLNP или со всеми ними сразу (в случае многопротокольных маршрутизаторов). Он анализирует заголовки этих пакетов и принимает решение в соответствии с содержащейся там адресной информацией. С другой стороны, когда "чистый" маршрутизатор передает пакет на канальный уровень, он не знает и не должен знать о том, в какой кадр данный пакет будет помещен - Ethernet, Token Ring или какой-либо иной.

Путаница происходит по двум причинам. Во-первых, по части функциональности мосты и маршрутизаторы весьма напоминают друг друга. Они принимают протокольные блоки данных (Protocol Data Unit, PDU), анализируют определенные поля заголовка и принимают решение о том, куда дальше передать пакет в соответствии с содержащейся в заголовке информацией и внутренними таблицами. Во-вторых, названия коммерческим продуктам даются зачастую весьма условные, а, кроме того, многие из них сочетают в себе функции и тех и других устройств.

МАРШРУТИЗАТОРЫ ПРОТИВ КОММУТАТОРОВ

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

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

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

Тем не менее коммутаторы все чаще оснащаются функциями маршрутизаторов, так что, как полагает Дэвид Пасмор, президент компании Decisys, "маршрутизаторы исчезнут, но маршрутизация останется".

ЗАКЛЮЧЕНИЕ

К сожалению, в одной небольшой статье трудно не то что подробно рассмотреть, а просто перечислить все аспекты таких сложных устройств, как маршрутизаторы. Например, мы только назвали, да и то не все, алгоритмы и протоколы маршрутизации. Более подробную информацию о них заинтересованный читатель может найти в статьях М. Кульгина "На перекрестках сетей" в декабрьском номере нашего журнала за прошлый год, а кроме того, в статьях упомянутого автора в этом и следующих номерах. С помощью таких протоколов, как RTP и RSVP, маршрутизаторы IP способны поддерживать и мультимедийный трафик, об этом читайте в этом номере в статье Уильяма Сталлингса "RTP и RSVP: доставка в срок". Общая же более подробная информация о маршрутизаторах дана в мартовском номере в статье Фреда Бейкера "Как работают маршрутизаторы?"


C Дмитрием Ганьжой можно связаться по адресу: dganzha@osp.ru.