Протокол RIP (Routing Information Protocol) представляет собой один из первых протоколов обмена маршрутной информацией, однако до сих пор чрезвычайно распространен в вычислительных сетях. Помимо версии RIP для сетей TCP/IP, существует версия RIP для сетей IPX/SPX компании Novell [6].
В этом протоколе все сети имеют номера, а все маршрутизаторы – идентификаторы. Протокол RIP широко использует понятие «вектор расстояний». Вектор расстояний представляет собой набор пары чисел, являющихся номерами сетей и расстояниями до них в хопах (табл. 2.13).
Таблица 2.13 – Пример таблицы маршрутизации протокола RIP
Номер сети | Следующий маршутизатор | Порт | Расстояние |
201.36.14.0 | 201.36.14.3 | ||
132.11.0.0 | 132.11.0.7 | ||
194.27.18.0 | 194.27.18.1 |
Векторы расстояний распространяются маршрутизаторами по сети, и через несколько шагов каждый маршрутизатор имеет данные о достижимых для него сетях и о расстоянии до них. Если связь с какой-либо сетью обрывается, то маршрутизатор отмечает этот факт тем, что присваивает элементу вектора, соответствующему расстоянию до этой сети, максимально возможное значение, которое имеет специальный смысл – «связи нет». Таким значением в протоколе RIP является число 16. Маршрутная информация об известной маршрутизатору сети не передается тому маршрутизатору, от которого она пришла.
|
|
Для каждой записи в таблице маршрутов существует время жизни, контролируемое таймером. Если для любой конкретной сети, внесенной в таблицу маршрутов, в течение 180 секунд не получен вектор расстояний, подтверждающий или устанавливающий новое расстояние до данной сети, то сеть будет отмечена как недостижимая (расстояние равно бесконечности). Через определенное время модуль RIP производит «сборку мусора», то есть удаляет из таблицы маршрутов все сети, расстояние до которых бесконечно.
При получении сообщения типа «ответ» для каждого содержащегося в нем элемента вектора расстояний модуль маршрутизатора RIP выполняет следующие действия [17]:
1) проверяет корректность адреса сети и маски, указанных в сообщении;
2) проверяет, не превышает ли метрика (расстояние до сети) бесконечность;
3) игнорирует некорректный элемент, если метрика превышает;
4) увеличивает значение метрики на 1, если метрика меньше бесконечности;
5) производит поиск сети, указанной в рассматриваемом элементе вектора расстояний, в таблице маршрутов.
Поиск сети осуществляется в соответствии со следующей логикой:
1) если запись о такой сети в таблице маршрутов отсутствует и метрика в полученном элементе вектора меньше бесконечности, сеть вносится в таблицу маршрутов с указанной метрикой; в поле Следующий маршрутизатор заносится адрес маршрутизатора, приславшего сообщение; запускается таймер для этой записи в таблице;
|
|
2) если искомая запись присутствует в таблице с метрикой больше, чем объявленная в полученном векторе, в таблицу вносятся новые метрика и, соответственно, адрес следующего маршрутизатора; таймер для этой записи перезапускается;
3) если искомая запись присутствует в таблице и отправителем полученного вектора был маршрутизатор, указанный в поле Следующий маршрутизатор этой записи, то таймер для этой записи перезапускается; более того, если при этом метрика в таблице отличается от метрики в полученном векторе расстояний, в таблицу вносится значение метрики из полученного вектора.
Во всех прочих случаях рассматриваемый элемент вектора расстояний игнорируется.
Сообщения типа «ответ» рассылаются модулем RIP каждые 30 секунд по широковещательному или мультикастинговому адресу; рассылка «ответа» может происходить также вне графика, если маршрутная таблица была изменена (triggered response). Стандарт требует, чтобы triggered response рассылался не мгновенно после изменения таблицы маршрутов, а через случайный интервал длительностью от 1 до 5 секунд. Эта мера позволяет несколько снизить нагрузку на сеть.
Итак, можно выделить основные показатели протокола RIP:
1) он является одним из первых протоколов маршрутизации, который до сих пор работает в небольших автономных системах с количеством промежуточных маршрутизаторов не более 15;
2) сегодня наиболее часто применяется вторая версия протокола (RIP-2);
3) RIP-маршрутизаторы при выборе маршрута обычно используют самую простую метрику – количество маршрутизаторов между сетями, то есть хопов;
4) в сетях, работающих по протоколу RIP и имеющих петлевидные маршруты, могут наблюдаться достаточно длительные периоды нестабильной работы, когда пакеты «зацикливаются» в маршрутных петлях и не доходят до адресата.
Для решения этих проблем был разработан протокол OSPF, работающий на принципиально новом алгоритме маршрутизации, что позволило применять его в очень больших автономных системах.
Протокол OSPF (Open Shortest Path First – выбор кратчайшего пути первым) является достаточно современной реализацией алгоритма состояния связей (он принят в 1991 году) и обладает многими качествами, ориентированными на применение в больших гетерогенных сетях [28].
Как и все протоколы маршрутизации, основанные на алгоритме состояния связей, OSPF разбивает процесс построения таблицы маршрутизации на два этапа.
На первом этапе каждый маршрутизатор строит граф связей сети, в котором вершинами являются маршрутизаторы и IP-сети, а ребрами – интерфейсы маршрутизаторов. Все маршрутизаторы обмениваются со своими соседями той информацией о графе сети, которой располагают к данному моменту. Этот процесс похож на процесс распространения векторов расстояний до сетей в протоколе RIP, однако сама информация качественно иная – это информация о топологии сети. Сообщения, с помощью которых распространяется топологическая информация, называются объявлениями о состоянии связей сети (Link State Advertisements, LSA). Кроме того, при передаче топологической информации OSPF-маршрутизаторы ее не модифицируют, как это делают RIP-маршрутизаторы, а передают в неизменном виде. В результате, все маршрутизаторы сети располагают идентичными сведениями о графе сети, которые хранятся в базе данных о топологии сети.
Второй этап состоит в нахождении оптимальных маршрутов с помощью полученного графа. Задача нахождения оптимального пути на графе является достаточно сложной и трудоемкой. Каждый маршрутизатор считает себя центром сети и ищет оптимальный маршрут до каждой известной ему сети. В каждом найденном таким образом маршруте запоминается только один шаг – до следующего маршрутизатора, в соответствии с принципом одношаговой маршрутизации. Данные об этом шаге и попадают в таблицу маршрутизации. Если несколько маршрутов имеют одинаковую метрику до сети назначения, то в таблице маршрутизации запоминаются первые шаги всех этих маршрутов.
|
|
Для того чтобы база данных о топологии сети соответствовала текущему состоянию сети, OSPF-маршрутизаторам необходимо постоянно отслеживать изменения состояния сети и вносить при необходимости коррективы в таблицу маршрутизации. Для контроля состояния связей и соседних маршрутизаторов OSPF-маршрутизаторы регулярно передают друг другу сообщения HELLO. Сообщения HELLO отправляются через каждые 10 секунд, чтобы повысить скорость адаптации маршрутизаторов к изменениям, происходящим в сети. Небольшой объем этих сообщений делает возможным такое частое тестирование состояния соседей и связей с ними. На основании принимаемых от непосредственных соседей сообщений HELLO маршрутизатор формирует записи о состоянии связей со своими непосредственными соседями в базе данных о топологии сети.
В том случае, если сообщения HELLO перестают поступать от какого-либо непосредственного соседа, маршрутизатор делает вывод, что состояние связи изменилось на нерабочее и делает соответствующую отметку в своей базе данных. Одновременно он отсылает всем непосредственным соседям объявление LSA об этом изменении – те также корректируют базы данных и, в свою очередь, рассылают данное объявление LSA непосредственным соседям (естественно, кроме того соседа, от которого оно было получено). После корректировки графа сети каждый маршрутизатор заново ищет оптимальные маршруты и корректирует таблицу маршрутизации. Аналогичный процесс происходит и в том случае, если в сети появляется новый сосед, объявляющий о себе с помощью своих сообщений HELLO, или новая связь.
Если же состояние сети не меняется, то объявления о связях не генерируются и таблицы маршрутизации не корректируются, что экономит пропускную способность сети и вычислительные ресурсы маршрутизаторов. Однако у этого правила есть исключение: каждые 30 минут OSPF-маршрутизаторы обмениваются всеми записями базы данных топологической информации, то есть синхронизируют их для более надежной работы сети (так как этот период достаточно большой, то данное исключение незначительно сказывается на работе сети) [33].
|
|
Маршрутизаторы соединены как с локальными сетями, так и непосредственно между собой глобальными двухточечными линиями связи, например каналами Т1. Протокол OSPF в своих объявлениях распространяет информацию о связях двух типов: маршрутизатор–маршрутизатор и маршрутизатор–сеть.
Каждая связь характеризуется метрикой. Протокол OSPF по умолчанию использует метрику, учитывающую пропускную способность каналов связи. Кроме того, допускается использование двух других метрик, учитывающих задержки и надежность передачи пакетов каналами связи. Для каждой из метрик протокол OSPF строит отдельную таблицу маршрутизации. Выбор нужной таблицы происходит в зависимости от значений битов TOS в заголовке пришедшего IP-пакета.
Протокол OSPF поддерживает стандартные для многих протоколов значения расстояний для метрики, отражающей пропускную способность (для сети Ethernet она равна 10, для Fast Ethernet – 1, для канала Т1 – 65, для канала 56 Кбит/с – 1785 и т. д.).
Протокол OSPF разрешает хранить в таблице маршрутизации несколько маршрутов к одной сети, если они обладают равными метриками. Если такие записи образуются в таблице маршрутизации, то маршрутизатор реализует режим баланса загрузки маршрутов, отправляя пакеты попеременно по каждому из маршрутов [34].
Итак, можно выделить основные качества протокола OSPF:
1) протокол OSPF был разработан для эффективной маршрутизации IP-пакетов в больших сетях со сложной топологией, включающей петли, и основан на алгоритме состояния связей, который устойчив к изменениям топологии сети;
2) при выборе маршрута OSPF-маршрутизаторы используют метрику, учитывающую пропускную способность составных сетей;
3) протокол OSPF разрешает хранить в таблице маршрутизации несколько маршрутов к одной сети, если они обладают равными метриками, что дает возможность маршрутизатору работать в режиме баланса загрузки маршрутов;
4) протокол OSPF обладает высокой вычислительной сложностью, поэтому чаще всего работает на мощных аппаратных маршрутизаторах.
2.6.3 Внешний шлюзовый протокол BGP
Пограничный шлюзовой протоколBGP (Border Gateway Protocol) версии 4 является сегодня основным протоколом обмена маршрутной информацией между автономными системами Интернета. Протокол BGP пришел на смену протоколу EGP (в данном случае – название конкретного протокола маршрутизации. Напомним, что EGP служит также названием класса внешних шлюзовых протоколов, используемых для маршрутизации между автономными системами), использовавшемуся в тот период, когда Интернет имел единственную магистраль.
Эта магистраль являлась центральной автономной системой, к которой присоединялись в соответствии с древовидной топологией все остальные автономные системы. Так как между автономными системами при такой структуре петли исключались, протокол EGP «не предпринимал никаких мер» для того, чтобы исключить зацикливание маршрутов [13].
Поясним основные принципы работы BGP на примере (рис. 2.14).
Рис. 2.14 – Поиск маршрута между автономными системами
с помощью протокола BGP
В каждой из трех автономных систем (AS 1021, AS 363 и AS 520) имеется несколько маршрутизаторов, исполняющих роль внешних шлюзов, на которых работает протокол BGP, – с его помощью они общаются между собой.
Маршрутизатор взаимодействует с другими маршрутизаторами по протоколу BGP только в том случае, если администратор явно указывает при конфигурировании, что эти маршрутизаторы являются его соседями. Например, маршрутизатор EG1 в рассматриваемом примере будет взаимодействовать по протоколу BGP с маршрутизатором EG2 не потому, что эти маршрутизаторы соединены двухточечным каналом, а потому, что при конфигурировании маршрутизатора EG1 в качестве соседа ему был указан маршрутизатор EG2 (с адресом 194.200.30.2). Аналогично, при конфигурировании маршрутизатора EG2 его соседом назначается маршрутизатор EG1 (с адресом 194.200.30.1).
Такой способ взаимодействия удобен в ситуации, когда маршрутизаторы, обменивающиеся маршрутной информацией, принадлежат разным поставщикам услуг (ISP). Администратор ISP может решать, с какими автономными системами он будет обмениваться трафиком, а с какими нет, задавая список соседей для своих внешних шлюзов.
Протоколы RIP и OSPF, разработанные для применения внутри автономной системы, обмениваются маршрутной информацией со всеми маршрутизаторами, находящимися в пределах их непосредственной досягаемости (по локальной сети или через двухточечный канал). Это означает, что информация обо всех сетях появляется в таблице маршрутизации каждого маршрутизатора, так что каждая сеть оказывается достижимой для каждой. В корпоративной сети это нормальная ситуация, а в ISP-сетях нет, поэтому протокол BGP и играет здесь особую роль.
На рис. 2.14 также отображены две реализации протокола BGP (внутренняя и внешняя), которые отличаются инструкциями, обмениваемыми друг с другом маршрутизаторами. Реализация протокола, при которой маршрутизаторы, принадлежащие к одной автономной системе, устанавливают сеанс связи BGP, называется внутренней (Interior BGP, iBGP), в отличие от основной, внешней (Exterior BGP, eBGP), где соединяются маршрутизаторы различных автономных систем.
Для установления сеанса с указанными соседями BGP-маршрутизаторы используют протокол TCP. При установлении BGP-сеанса могут применяться разнообразные способы аутентификации маршрутизаторов, повышающие безопасность работы автономных систем.
Основным сообщением протокола BGP является сообщение UPDATE (обновить), с помощью которого маршрутизатор сообщает маршрутизатору соседней автономной системы о достижимости сетей, относящихся к его автономной системе.
Само название данного сообщения говорит о том, что такое объявление посылается соседу только тогда, когда в автономной системе что-нибудь резко меняется: появляются новые сети или пути к сетям или же, напротив, исчезают существовавшие сети или пути.
В одном сообщении UPDATE можно объявить о новом маршруте или аннулировать несколько устаревших (под маршрутом в BGP понимается последовательность автономных систем, которую нужно пройти на пути к указанной в адресе сети) [14].
Таким образом, протокол BGPv4 является сегодня протоколом обмена маршрутной информацией между автономными системами Интернета. BGPv4 устойчиво работает при любой топологии связей между автономными системами, что соответствует современной структуре Интернета.