Альтернативы протоколу RIP в больших сетях

Крис Льюис

Network Computing

В статье "RIP: не пора ли на заслуженный отдых?" (См. "Сети и системы связи", 1/97, с. 56. - Прим. ред.) мы обсудили основные принципы функционирования протокола Routing Information Protocol (RIP) - первого протокола маршрутизации на основе длины векторов (distance-vector) - и показали его недостатки при работе в большой неоднородной сетевой среде. В данной статье будут рассмотрены более современные протоколы маршрутизации, возможности которых шире возможностей RIP.

Этими более современными протоколами являются Interior Gateway Routing Protocol (IGRP) и Enhanced IGRP (EIGRP) фирмы Cisco Systems, а также Open Shortest Path First (OSPF). Протоколы RIP версии 2 и Integrated IS-IS рассматриваться нами не будут в виду их малой распространенности.

Протокол IGRP

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

Основные различия между протоколами RIP и IGRP связаны с методом вычисления метрик, алгоритмом Route Poisoning и использованием шлюза (В этой статье термины "шлюз" и "маршрутизатор" взаимозаменяемы. - Прим. ред.) по умолчанию. Правила передачи ограниченных обновлений (split horizon), инициирования передачи обновлений (triggered updates) и временного запрета на обновление маршрута (hold-down) в IGRP реализованы практически так же, как и в RIP.

Вычисление метрики в IGRP

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

[(K1/Be) + (K2*D)]*R,

где K1 и K2 - константы; Bе - эффективная ширина полосы пропускания канала связи (Be = Bu (1-N), где

Bu - ширина полосы пропускания незагруженного канала, а N - степень его загруженности); D - топологическая задержка; R - величина, характеризующая надежность канала.

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

На самом деле вычисление составной метрики гораздо проще, чем это может показаться, глядя на приведенную выше формулу. Если два маршрутизатора соединены через свои последовательные порты, то при вычислении метрики ширина полосы пропускания по умолчанию принимается равной 1,544 Мбит/с (скорость линии T1). Для линии T1 алгоритм IGRP использует величину общего времени задержки, равную 21 мс. По умолчанию значения K1, K2 и R считаются равными 10 000 000, 100 000 и 1 соответственно. При этом независимо от реальной пропускной способности линии, мы получаем метрику, равную 8576 для каждого соединения через последовательный порт. Значение метрики можно узнать, используя команду "show ip route A.B.C.D", где A.B.C.D - IP-адрес устройства на другом конце последовательной линии связи. Чтобы отразить реальную полосу пропускания, доступную для соединения, значение метрики можно изменить с помощью соответствующей команды.

Лучшим считается путь с наименьшей метрикой. Если же несколько путей имеют одинаковую метрику, то трафик распределяется равномерно между ними. Эта функциональная возможность протокола IGRP требует некоторой осторожности при проектировании сети. Если протоколы канального или транспортного уровней сохраняют порядок следования пакетов, то все хорошо. Но, например, при наличии нескольких маршрутов для пересылки пакетов User Datagram Protocol (UDP) с помощью протокола Frame Relay упомянутое свойство IGRP может вызвать проблему, поскольку ни Frame Relay, ни UDP не гарантируют сохранение порядка следования пакетов. В этом случае решить возникшую проблему можно перейдя на использование транспортного протокола Transmission Control Protocol (TCP).

Алгоритм Route Poisoning в IGRP

Алгоритм Route Poisoning, применяемый в IGRP, способен предотвращать возникновение маршрутных петель большого размера. Алгоритм же Split Horizon with the Poison-Reverse System, используемый в RIP, "справляется" только с маршрутными петлями между соседними маршрутизаторами. Исходя из того, что маршрутные петли постоянно увеличивают метрику, протокол IGRP удаляет маршруты с метрикой, которая после обновления увеличивается более чем на 10%.

При использовании алгоритма Route Poisoning из таблиц маршрутизации могут быть ошибочно удалены некоторые правильные маршруты. Однако они будут восстановлены уже при получении следующего регулярного сообщения об обновлении. Достоинство используемого в IGRP алгоритма состоит в том, что он позволяет (без каких-либо негативных последствий) устанавливать нулевое время запрета на обновление маршрута (таймер hold-down). А это значительно уменьшает время сходимости оптимальных маршрутов (convergence time).

Шлюз по умолчанию в IGRP

Протокол RIP пересылает информацию о маршруте по умолчанию точно так же, как и о других маршрутах. Этот подход может вызвать затруднения, если в сети используются машины, на которых вручную определено, какие конкретные маршруты следует использовать по умолчанию. Дело в том, что сообщение об обновлении может заменить маршрут, сконфигурированный вручную, на маршрут, используемый по умолчанию на другой машине. Подобные проблемы способны сделать маршрутизацию неэффективной и породить ненужные сообщения об изменении маршрутов (redirect) протокола ICMP (Internet Control Message Protocol), поскольку пакеты направляются к "неправильному" шлюзу по умолчанию.

В протоколе IGRP реализован другой подход: реальные сети могут "предлагать" себя в качестве шлюзов по умолчанию. IGRP периодически просматривает маршруты к этим сетям и выбирает один из них - с наименьшей метрикой.

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

Настройка IGRP

Ниже приведен пример типичной конфигурации протокола IGRP на маршрутизаторе фирмы Cisco.

router igrp 12

timers basic 15 45 0 60

network 162.8.0.0

network 193.1.1.0

no metric holddown

metric maximum-hop 50

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

Вторая строка устанавливает следующие значения таймеров IGRP:

15 с - основной временной интервал, определяющий периодичность широковещательных рассылок регулярных сообщений об обновлении;

45 с - время, по истечении которого маршрут считается недействительным, если о нем не поступает никакой новой информации;

0 с - интервал, в течение которого после удаления маршрута запрещается принимать сообщения о его обновлении (таймер hold-down);

60 с - время, по истечении которого происходит удаление маршрута из маршрутной таблицы.

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

Протокол EIGRP

В начале 90-х годов фирма Cisco Systems представила усовершенствованный протокол IGRP (Enhanced IGRP - EIGRP), в котором попыталась объединить преимущества протоколов маршрутизации с учетом состояния каналов (link-state) и протоколов маршрутизации на основе длины векторов (distance-vector). Протокол EIGRP основан на алгоритме обновления Diffusing-Update Algorithm (DUAL), определяющем процедуру принятия решений при вычислении всех маршрутов. Используя метрики, DUAL выбирает наиболее эффективные и свободные от петель пути и вносит их в таблицу маршрутов в качестве наилучших и возможных запасных. Если основной маршрут становится недоступным, то задействуется запасной. Это позволяет избежать повторного выполнения алгоритма в случае отказа какой-либо линии связи и уменьшить время сходимости.

Для выявления соседей протокол EIGRP использует короткие сообщения "Hello". Пока маршрутизатор получает такие сообщения от соседних маршрутизаторов, он "считает", что они работают и могут передавать информацию о маршрутах. Применяя протокол Reliable Transport Protocol, EIGRP обеспечивает гарантированную доставку сообщений об обновлениях маршрутов, не "полагаясь" при этом на широковещательную передачу.

Важное свойство EIGRP - поддержка маршрутизации не только трафика IP, но и трафика других сетевых протоколов, в том числе IPX и AppleTalk. Это дает пользователям определенные преимущества, поскольку позволяет им применять в смешанных сетевых средах только один протокол маршрутизации (EIGRP).

Протокол EIGRP поддерживает маски подсетей переменной длины (Variable-Length Subnet Mask - VLSM) и рассылает информацию об обновлениях только при необходимости, причем лишь тем маршрутизаторам, которым необходимо "знать" о происшедших изменениях. Рассматриваемый протокол обеспечивает гораздо более быструю (по сравнению с RIP и IGRP) сходимость оптимальных маршрутов; специалисты Cisco Systems считают, что время сходимости даже в больших сетях составляет несколько секунд.

Возможность использования масок VLSM очень важна для организаций, имеющих крайне ограниченное пространство сетевых адресов. Протоколы RIP и IGRP не предусматривают передачу информации о масках подсети в сообщениях об обновлении маршрутов. Поэтому для корректной работы процесса маршрутизации всем интерфейсам в сети необходимо иметь одинаковую маску подсети. Например, рассмотрим сеть, в которой используется протокол маршрутизации IGRP (или RIP) и которая объединяет небольшие сети с числом хостов меньше 30. Подходящей маской подсети в этом случае будет 255.255.255.224 - она оставляет по 30 адресов для хостов в каждой подсети. Однако если большая часть подсетей содержит менее пяти хостов, то при использовании IGRP (или RIP) большинство адресов "пропадают" (поскольку эти протоколы маршрутизации не позволят применить разные маски для разных подсетей. - Прим. ред.).

EIGRP - фирменный протокол компании Cisco Systems, и поэтому он хорошо совместим с протоколом IGRP. Существует схема автоматического перераспределения маршрутной информации между протоколами IGRP и EIGRP, кроме того, возможно непосредственное преобразование метрики IGRP в метрику EIGRP и наоборот.

Настройка EIGRP

Ниже приведен пример типичной конфигурации протокола EIGRP на маршрутизаторе фирмы Cisco Systems.

router eigrp 13

network 170.4.0.0

network 200.10.1.0

Первая строка определяет EIGRP как процесс на маршрутизаторе для автономной системы номер 13; вторая и третья - указывают на сети, непосредственно подсоединенные к данному маршрутизатору. Все остальные установки рекомендуется оставлять стандартными.

Протокол OSPF

Протокол Open Shortest Path First (OSPF) был создан Инженерной проблемной группой Internet (Internet Engineering Task Force - IETF) в конце 80-х годов, когда стало очевидным, что RIP не способен обслуживать большие неоднородные сети. Этот открытый стандартный протокол поддерживают все основные производители маршрутизаторов. Он является классическим протоколом маршрутизации с учетом состояния каналов (link-state), но обеспечивает маршрутизацию только трафика IP.

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

В OSPF сообщения о состоянии каналов (Link-State Advertisement - LSA) рассылаются всем маршрутизаторам данной области. Это отличает протокол OSPF от протоколов маршрутизации на основе длины векторов, например таких, как RIP или IGRP. Последние рассылают таблицы маршрутов только своим соседям. В сообщениях LSA передаются информация об используемой метрике, адреса интерфейсов и другие данные. Находящаяся на каждом маршрутизаторе топологическая база данных содержит всю информацию, получаемую из сообщений LSA, и дает общую картину сети. Следует отметить, что топологические базы данных всех маршрутизаторов одной и той же области одинаковы.

Важное свойство протокола OSPF - возможность объединения маршрутов (route summarization). Она позволяет уменьшить число записей в таблицах маршрутов и топологических базах данных и снизить служебный трафик протокола. Давайте посмотрим на рис. 1. Таблица маршрутов маршрутизатора B содержит записи c информацией о двух соседних подсетях (200.1.1.8 и 200.1.1.12), каждая из которых находится в области 1. Поскольку маршрутизатор B расположен на границе областей, он может объединить информацию об этих подсетях, используя другую маску. Таким образом, для связи с обеими подсетями маршрутизатор C должен иметь только одну запись в таблице маршрутов.


Рис. 1. Объединение маршрутов в OSPF (таблицы маршрутов содержат информацию о маске подсети; IA (Inter-Area) означает, что маршрут получен от межобластного маршрутизатора В)

Настройка OSPF

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

Ниже приведен пример типичной конфигурации внутреннего или магистрального процесса OSPF на маршрутизаторе фирмы Cisco Systems (рис. 2).

router ospf 50

network 140.8.0.0 0.0.255.255 area 0

Первая строка определяет OSPF в качестве процесса маршрутизации с идентификатором, равным 50. Это внутренний идентификатор каждого экземпляра процесса OSPF, запущенного на маршрутизаторе.

Рис. 2. Конфигурация внутреннего или магистрального маршрутизатора

Вторая строка определяет интерфейсы, которые будут участвовать в процессе маршрутизации OSPF. В данном случае все три интерфейса маршрутизатора принадлежат сети 140.8.0.0. Маску (в нашем примере 0.0.255.255) можно рассматривать как инверсную маску подсети. Она закрывает все биты третьего и четвертого байта и используется для определениятого, будет ли для конкретного интерфейса использоваться протокол OSPF. Во второй строке также определена область, к которой принадлежит маршрутизатор (в данном случае это область 0, означающая магистраль).

Приведем пример типичной конфигурации межобластного процесса OSPF на маршрутизаторе фирмы Cisco Systems (рис. 3).

router ospf 62

network 180.8.2.0 0.0.0.255 area 0

network 180.8.0.0 0.0.255.255 area 2

Здесь интерфейсы, адреса которых имеют значения 180.8.2 в первых трех байтах, рассматриваются как часть области 0, а остальные интерфейсы, адреса которых имеют значения 180.8 в первых двух байтах, - как часть области 2.

Рис. 3. Конфигурация межобластного маршрутизатора

Перераспределение информации о маршрутах

При создании сети, в которой всю ответственность за маршрутизацию трафика будут нести маршрутизаторы, вы можете выбрать один из протоколов IGRP, EIGRP или OSPF и использовать только его в качестве протокола маршрутизации. Но гораздо чаще ситуация иная: требуется модернизировать сеть, где уже применяется некий протокол маршрутизации. Например, некоторые функции маршрутизации обычно выполняют Unix-системы, а многие из них поддерживают только RIP. Поэтому возникает вопрос: сколько протоколов маршрутизации постоянно или временно (на время модернизации) могут сосуществовать в одной сети?

С ответом на этот вопрос самым тесным образом связан механизм перераспределения (redistribution). Маршрутизатор можно сконфигурировать так, что он будет исполнять несколько протоколов маршрутизации и перераспределять информацию о маршрутах между ними. Ниже приведен пример включения маршрутов, полученных c помощью протокола RIP, в маршрутные таблицы протокола IGRP. Мы взяли определенную выше конфигурацию протокола IGRP.

router igrp 12

timers basic 15 45 0 60

network 162.8.0.0

network 193.1.1.0

no metric holddown

metric maximum-hop 50

Затем добавили к ней следующие инструкции по перераспределению.

redistribute rip

default-metric 300 344 200 200 200

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

Выводы

Если ваша сеть построена на базе маршрутизаторов фирмы Cisco Systems, то в качестве протоколов маршрутизации можно выбрать IGRP, EIGRP или OSPF. В большинстве случаев вполне приемлемо использование протокола IGRP, который наиболее понятен сетевым администраторам, уже знакомым с RIP. Протоколы EIGRP и OSPF способны обеспечить меньшее время сходимости оптимальных маршрутов, но настраивать их сложнее. Кроме того, для достижения должной производительности эти протоколы потребуют от маршрутизатора большего объема оперативной памяти и более быстрый процессор. Если требуется обеспечить маршрутизацию в среде IP и вы не применяете оборудование фирмы Cisco Systems, то в большинстве случаев вам следует использовать протокол OSPF, а не RIP.

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