Функции протоколов маршрутизации предполагают определение пути следования пакета по простому заголовку. Не стоит только забывать, что существует несколько видов протоколов, отличающихся друг от друга.


ОТ ЗАБОРА И ДО ОБЕДА
МАЛЕНЬКАЯ RIP"КА, ЖАРЕНЫЙ КАРАСЬ
ПРИВЕТ, OSPF
ЧТО ТАКОЕ IS-IS?
ХОРОШИЙ ВЫБОР

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

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

ОТ ЗАБОРА И ДО ОБЕДА

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

Выбор оптимального пути маршрутизации сродни планированию авиационного перелета, скажем, из Дейтона (шт. Огайо) в Сан-Франциско. Главный критерий выбора - минимальное число пересадок. К сожалению, прямого рейса между этими городами нет, поэтому приходится делать как минимум одну пересадку - обычно в Чикаго или Далласе. Просмотрев все возможные маршруты с минимальным числом пересадок, пассажир наверняка задумается о возможной задержке рейса, например из-за перегрузки аэропорта. Если при этом пассажиру покажется, что в результате такой задержки он может застрять надолго, то, скорее всего, будет избран маршрут в обход перегруженных аэропортов. Точно также протокол маршрутизации предполагает постоянный сбор информации о состоянии маршрутов и обновление таблиц маршрутизации при изменении топологии сети вследствие отказов или перегрузок. При таком подходе таблицы маршрутизации всегда содержат точную информацию о топологии сети.

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

Большинство протоколов маршрутизации реализуется через взаимодействие маршрутизаторов друг с другом; при этом программное обеспечение работает как распределенная система. На каждом маршрутизаторе функционируют программы опроса и прослушивания (polling and listening), благодаря которым устройство получает информацию о наличии и работоспособности своих ближайших соседей. Информация, полученная от других маршрутизаторов, используется для обновления таблиц маршрутизации. Каждый маршрутизатор периодически посылает соседним устройствам копию своей таблицы маршрутизации, выясняя таким образом текущее состояние сети, а точнее, отслеживая топологию соединений между узлами и получая информацию о качестве каналов связи.

Протокол маршрутизации может работать только тогда, когда формат пакетов соответствует одному из маршрутизируемых протоколов (routable protocol) - не путать с протоколами маршрутизации (routing protocols), о которых идет речь в данной статье. Примеры маршрутизируемых протоколов - IP, IPX, Xerox Network System. Маршрутизируемые протоколы задают формат пакетов, в которые данные упаковываются для передачи по сети, а протоколы маршрутизации обеспечивают передачу этих пакетов, определяя путь их следования по адресам назначения, приведенным в полях заголовка.

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

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

Наиболее популярные протоколы маршрутизации - это протокол маршрутной информации (Routing Information Protocol, RIP), протокол предпочтения кратчайшего пути (open shortest path first, OSPF), "транзитная система - транзитная система" (Intermediate System-to-Intermediate System, IS-IS). У каждого из перечисленных протоколов свои достоинства, однако администратору сети придется выбрать из них какой-нибудь один - тот, что более всего подходит для нужд его компании.

МАЛЕНЬКАЯ RIP"КА, ЖАРЕНЫЙ КАРАСЬ

Протокол RIP очень популярен среди тех, кто имеет отношение к Internet. Это протокол с использованием алгоритма длины вектора, где маршрут определяется исходя из расстояния (числа транзитных узлов) на пути следования данных до точки назначения. RIP известен довольно давно - впервые он появился в 1982 году как часть набора протоколов TCP/IP в версии Unix, предложенной Berkley Software Distribution. В настоящее время RIP служит основой для многих других протоколов маршрутизации. Например, протокол маршрутизации AppleTalk в основе своей имеет именно RIP. Другие компании (Novell и Banyan, кстати говоря, в их числе) также разработали протоколы на основе RIP. По существу, компании Microsoft удалось расширить возможности Windows NT для работы в глобальных сетях именно за счет поддержки маршрутизации пакетов на основе RIP.

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

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

Picture 1

Рисунок 1.
Для обмена информацией о маршрутизации пакеты RIP обходятся всего пятью типами полей. Один пакет может содержать до 25 элементов, каждый их которых состоит из полей Address family identifier, Address и Metric.

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

  • Команда (Command) - Данное поле указывает, является ли пакет запросом или ответом. Пакет запроса содержит просьбу к соседнему маршрутизатору выслать таблицу маршрутизации. Пакет ответа представляет собой либо ответ на запрос, либо информацию для обновления таблицы маршрутизации, высылаемую без предварительного запроса.
  • Номер версии (Version number) - здесь указывается текущая версия RIP.
  • Идентификатор семейства адресов (Address family identifier) - данное поле определяет, какое семейство адресов используется. Например, в пакетах сети Internet данное поле имеет значение 2, что соответствует протоколу IP.
  • Адрес (Address) - в данном поле содержится адрес какого-то конкретного места назначения.
  • Метрика (Metric) - поле метрики содержит число транзитных узлов на пути к месту назначения, указанному в поле Address.
  • В соответствии с протоколом RIP, каждый маршрутизатор автоматически посылает (примерно раз в 30 секунд) своим соседям пакет типа "ответ" со своей таблицей маршрутизации. Один пакет RIP может содержать до 25 троек полей Address family identifier, Address, Metric. Таким образом, для передачи больших таблиц маршрутизации требуется несколько пакетов. Помимо этого, протокол RIP предусматривает, чтобы каждый маршрутизатор следил за тем, сколько времени прошло с момента получения последнего ответа; если ответ от кого-нибудь из соседей не поступает в течение длительного времени (обычно 90 секунд), соответствующий путь удаляется из таблицы маршрутизации данного устройства, а все соседи извещаются об этом событии.

    В протоколе RIP предусмотрен ряд мер, призванных повысить стабильность работы протокола. Среди них: лимит числа промежуточных узлов (hop-count limit), временный отказ от приема информации (hold-down) и расщепление горизонта (split horizon). Лимит на число промежуточных узлов позволяет предотвратить зацикливание пакета при пересылке. Данный лимит в RIP равен 15, откуда следует, что этот протокол годится только для не слишком больших сетей.

    Временный отказ от приема позволяет избежать получения некорректной маршрутной информации. Сообщения об изменениях в таблице маршрутизации, например об отказе канала, приходят на разные маршрутизаторы в разное время, что в принципе может стать причиной рассылки некорректной информации. Представьте себе, например, что маршрутизатор A, еще не получивший информации об отказе канала, высылает свою таблицу маршрутизации маршрутизатору B, который уже получил такую информацию. Ясно, что после этого маршрутизатор B будет считать отказавший канал работающим, что не соответствует действительности. Функция hold-down позволяет избежать такой ошибки - маршрутизаторам запрещается принимать сообщения о только что отказавших каналах до того, как информация об отказе не распространится по всей сети.

    Функция split horizon позволяет избежать рассылки избыточной информации о маршрутизации, снижая тем самым накладные расходы в сети. Рассмотрим, например, два соседних маршрутизатора, A и B. Если A получил информацию от B, то ему незачем отсылать полученное сообщение обратно. Правило split horizon предписывает устройству A исключать информацию, полученную от B, из всех сообщений, посылаемых устройству B. Полное формальное описание RIP можно найти в документе RFC 1058, с которым можно ознакомиться через World Wide Web по адресу http://www.internic.net/rfc/rfc1058.txt.

    Основным недостатком RIP является не слишком высокая функциональность: он не годится для больших сетей и не может эффективно определять альтернативные маршруты. Для замены RIP, Группа инженерной поддержки (IETF) разработала протокол OSPF; предполагается, что новый протокол обеспечит лучшую поддержку TCP/IP. Протокол OSPF основан на алгоритме предпочтения кратчайшего пути, разработанном Болтом, Беранеком и Ньюменом (Кембридж, шт. Массачусетс) для сети ARPANet в 1978 году.

    ПРИВЕТ, OSPF

    Благодаря своей функциональности, OSPF быстро приобретает черты отраслевого стандарта. Данный протокол обеспечивает поддержку нужд крупных вычислительных сетей: обслуживание запросов на специальные услуги, работу с несколькими протоколами сетевого уровня, а также аутентификацию. OSPF способен осуществлять эффективную маршрутизацию пакетов с учетом изменений топологии сети, соответствующим образом меняя путь прохождения сетевого трафика. Кроме того, накладные расходы на пересылку данных об изменении топологии в OSPF меньше: рассылке подлежит не таблица маршрутизации в целом, а только информация об изменениях. OSPF иногда называют протоколом на основе распределенных баз данных, хотя более правильно его называть протоколом маршрутизации на основе данных о состоянии каналов связи (link state routing protocol). Термин link state routing protocol означает, что в OSPF поддерживается топологическая база данных, где хранится информация о состоянии каналов связи в автономной сети. Данная информация используется для вычисления кратчайшего пути передачи пакета.

    В настоящее время многие компании выпускают маршрутизаторы, поддерживающие OSPF. В частности, OSPF поддерживается продуктом Multiprotocol Router 3 for NetWare (Novell), представляющим собой программный маршрутизатор для NetWare 3.x и Netware 4.1, выполненный в виде NLM. Поддерживают OSPF и маршрутизаторы Cisco - в том числе и модели из популярного сейчас семейства 7000.

    Picture 2

    Рисунок 2.
    Поля пакета OSPF более разнообразны, чем в случае RIP.

    Протокол OSPF предусматривает, что новый маршрутизатор, начав работу в сети, рассылает "приветствия" всем своим соседям. Такие же сообщения периодически рассылают все маршрутизаторы, подтверждая тем самым свою работоспособность. В итоге новый маршрутизатор очень быстро "знакомится" со всеми своими соседями. На Рис. 2 показано, как в OSPF устроен заголовок пакета. В состав заголовка входят следующие поля.

  • Номер версии (Version number) - определяет номер, к какой версии OSPF относится данный пакет.
  • Тип (Type) - пакет OSPF должен иметь определенный тип. Пакеты OSPF бывают следующих типов:
  • приветствие (Hello) - как уже говорилось, маршрутизаторы периодически рассылают такие сообщения с целью нахождения и подтверждения присутствия соседних маршрутизаторов;
  • описание базы данных (Database description) - пакеты этого типа служат для описания содержимого топологической базы данных маршрутизатора;
  • запрос состояния канала связи (Link state request) - такой пакет представляет собой запрос на часть топологической базы данных маршрутизатора;
  • информация о состоянии канала связи (Link state update) - ответ на запрос о состоянии канала связи (link state request);
  • квитанция о получении информации о состоянии канала связи (Link state acknowledgement) - пакеты этого типа подтверждают получение обновленной информации о состоянии канала (link state update).
  • Длина пакета (Packet length) - здесь определяется длина пакета OSPF.
  • Идентификатор маршрутизатора (Router ID) - в данном разделе указывается, каким маршрутизатором послан данный пакет.
  • Идентификатор области (Area ID) - это поле несет информацию о том, к какой области сети относится пакет.
  • Контрольная сумма (Checksum) - контрольные суммы служат для выявления ошибок при передаче.
  • Тип аутентификации (Authentication type) - это поле задает тип аутентификации.
  • Аутентификация (Authentication) - данное поле содержит информацию, необходимую для аутентификации.
  • OSPF работает с запросами верхнего уровня [Type of Service (TOS)], содержащимися в заголовке пакетов IP. Вычисление кратчайшего пути в OSPF осуществляется на основе информации, содержащейся в TOS. Всего насчитывается восемь комбинаций битов TOS, описывающих все возможные сочетания уровней задержки, пропускной способности и надежности связи. OSPF в состоянии подобрать путь таким образом, чтобы удовлетворить любую из этих восьми комбинаций. Например, если в TOS указано, что данный пакет должен быть передан с малой задержкой, высокой пропускной способностью и малой надежностью, то OSPF-маршрутизатор подберет путь передачи, как можно лучше отвечающий всем этим требованиям.

    OSPF - открытый стандарт, его описание приводится в документе RFC 1427, с которым можно ознакомиться на Web по адресу http://www.internic. net/rfc/rfc1427.txt.

    ЧТО ТАКОЕ IS-IS?

    Как и OSPF, IS-IS работает на основе информации о состоянии каналов связи; в нем обеспечиваются примерно те же функции, что и в OSPF. Отличие же состоит в том, что IS-IS был разработан ISO специально для сетей в архитектуре OSI, а следовательно, он не был оптимизирован для работы под TCP/IP. Алгоритм маршрутизации IS-IS предполагает, что промежуточные системы (маршрутизаторы) обмениваются информацией на базе единой метрики сети для определения топологии сети. В ранних версиях IS-IS маршрутизация осуществлялась только в пределах сетей с ISO-протоколом под названием сетевой протокол без установления соединения (Connectionless Network Protocol, CLNP). Более поздние версии IS-IS также поддерживают IP. Что такое IS? В соответствии с терминологией OSI, конечной системой (end system, ES) называется узел сети, не осуществляющий маршрутизацию; термином "промежуточная система" (intermediate system, IS) обозначаются маршрутизаторы. Протоколы ES-IS (например X.25) позволяют конечным и промежуточным системам распознавать друг друга. Протоколы IS-IS обеспечивают маршрутизацию только между различными промежуточными системами.

    Протокол IS-IS предполагает периодическую рассылку (flood) по сети информации о состоянии каналов связи; в результате все маршрутизаторы имеют полную картину топологии сети. Оценка путей передачи информации в IS-IS производится на основе данных о задержке, затратах и ошибках. Метрика задержки характеризует величину задержки при передаче пакета по тому или иному каналу связи; затраты определяются стоимостью услуг линии коммуникаций, в состав которой данный канал входит; метрика ошибок характеризует частоту возникновения ошибок при передаче пакетов по каналу. Использование этих метрик позволяет протоколу IS-IS обрабатывать запросы на качество услуг, содержащиеся в поле качества услуг (Quality of Service, QOS) заголовка пакетов CLNP. В результате маршрутизатор с IS-IS получает возможность рассчитать, какой путь будет наилучшим образом соответствовать запросу QOS.

    Picture 3

    Рисунок 3.
    В протоколе IS-IS используются пакеты трех типов: приветствие, пакет состояния каналов и порядковый пакет. Заголовки пакетов всех типов имеют одинаковую структуру.

    В IS-IS используются пакеты трех типов: приветствие, пакет состояния канала (link state packet, LSP) и порядковый пакет (Sequence Number Packet, SNP). Заголовки пакетов всех типов одинаковы; за заголовком следуют фиксированная часть (fixed portion) и переменная часть (variable portion) пакета данных. На Рис. 3 приведены общие поля заголовка.

  • Идентификатор протокола (Protocol identifier) - в этом поле объявляется, что формат данного пакета соответствует IS-IS (значение данного поля всегда равно 131).
  • Длина заголовка (Header length) - в данном поле указывается длина заголовка, которая всегда равна 8 байт.
  • Версия (Version) - здесь указывается версия стандарта IS-IS (в настоящее время данное поле всегда равно единице).
  • Длина идентификатора (ID length) - данное поле содержит информацию о длине идентификатора адреса Network Service Access Point.
  • Тип пакета (Packet type) - указывает, является ли данный пакет приветствием, LSP-пакетом или SNP-пакетом.
  • Версия (Version) - номер версии повторно указывается за полем типа пакета.
  • Резервное поле (Reserved) - значение данного поля всегда равно нулю.
  • Максимум адресов областей (Maximum area addresses) - задает максимально допустимое число адресов в области маршрутизации.
  • Описание IS-IS содержится в документе ISO 10589, который можно найти на Web по адресу http://www.hike.te.chiba-u.ac.jp/ikeda/ISO/home.html.

    ХОРОШИЙ ВЫБОР

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

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

    Джим Гейер - старший системный консультант компании TASC. Он консультирует и обучает специалистов по информационным системам. С ним можно связаться через Internet по адресу: jtgeier@tasc.com или через CompuServe по адресу: 71165,2045.