Протокол OSPF

Как и RIP, протокол OSPF (Open Shortest Path First — открытый протокол выбора кратчайшего маршрута) используется для маршрутизации внутри автономной системы. Слово «Ореп» в названии протокола означает, что спецификация протокола маршрутизации свободно распространяется (в отличие от, к примеру, спецификации протокола EIGRP корпорации Cisco). Последняя (вторая) версия протокола OSPF определена в RFC 2328.

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

Маршрутизатор, работающий по протоколу OSPF, путем широковещательной рассылки переправляет информацию о маршрутах всем маршрутизаторам автономной системы, а не только соседним. Маршрутизатор рассылает всем информацию о состоянии линий при каждом изменении состояния какой-либо из линий (например, при изменении стоимости или включении/отключении). Он также рассылает информацию о состоянии линий периодически (по меньшей мере, раз в 30 мин), даже если состояние линии не изменилось. В RFC 2328 отмечается, что «эти периодические объявления о состояниях линий увеличивают устойчивость алгоритма, основанного на состоянии линий». Объявления протокола OSPF содержатся в OSPF-сообщениях, напрямую переносимых IP-дейтаграммами, в поле протокола верхнего уровня которых протокол OSPF обозначается кодом 89. Таким образом, протокол OSPF должен сам заниматься такими вопросами, как надежность передачи сообщений и широковещательная рассылка информации о состоянии линий. Протокол OSPF также проверяет работоспособность линий (при помощи сообщения HELLO, посылаемого соседу) и позволяет маршрутизатору OSPF получать информацию из базы данных соседнего маршрутизатора о состоянии линий всей сети.

Ниже перечислены достоинства протокола OSPF.
□ Безопасность. Весь обмен данными между OSPF-маршрутизаторами (например, новые сведения о состоянии линий) проходит процедуру аутентификации. Это означает, что только доверенные маршрутизаторы могут принимать участие в работе протокола OSPF в пределах домена, не позволяя, таким образом, злоумышленникам (или студентам, применяющим полученные знания для развлечений) вставлять в таблицы маршрутизации некорректную информацию.
□ Несколько путей с одинаковой стоимостью. Когда у нескольких маршрутов к одному адресату оказывается одинаковая стоимость, протокол OSPF позволяет использовать все (нет проблемы выбора одного из этих маршрутов).
□ Интегрированная поддержка многоадресной и одноадресной маршрутизации. Протокол MOSPF (Multicast OSPF — протокол OSPF для групповой рассылнапрямую присоединены. Глобальная информация о маршрутах к удаленным адресатам распространяется от одной автономной системы к другой путем обмена данными между напрямую соединенными друг с другом равноправными BGP-уз-лами. Следует также отметить, что протокол BGP направляет пакеты сетям-адресатам (имеются в виду IP-сети), а не конкретным маршрутизаторам или хостам. Как только дейтаграмма достигает сети-адресата, ее пересылкой к конечному получателю начинает заниматься протокол внутренней маршрутизации. Протокол BGP распознает автономные системы (RFC 1930) по глобально уникальным номерам автономных систем (Autonomous System Number, ASN). На практике не у каждой автономной системы есть номер. В частности, так называемая тупиковая автономная система (автономная система-заглушка), переносящая только трафик, для которого он является отправителем или получателем, как правило, не имеет номера. В нашем обсуждении мы опустим эти детали. Номера автономных систем, как и IP-адреса, назначаются региональными организациями ICANN.

431.png

В основе протокола BGP лежат объявления о маршрутах. Объявление о маршрутах посылается одним равноправным BGP-узлом другому равноправному BGP-узлу по соединению «точка-точка». Объявление состоит из адреса сети (например, 128.119.40/24) и набора атрибутов, ассоциированных с маршрутом к этой сети. Двумя наиболее важными атрибутами являются атрибут маршрута (явный список всех автономных систем на пути к указанной сети-адресату) и идентификатор следующего маршрутизатора на пути к указанной сети-адресату.
Работа протокола BGP в основном состоит из трех действий с объявлениями.

1. Получение и фильтрация объявлений о маршрутах от напрямую присоединенных соседей. BGP-маршрутизатор получает объявления о маршрутах от равноправного BGP-узла. Мы можем рассматривать полученное BGP-объявление о маршруте как обещание. Равноправный BGP-узел, посылающий объявление о маршруте к некоторой автономной системе, обещает, что, если соседняя автономная система пошлет ему дейтаграмму, адресованную указанной автономной системе, тогда он сможет переправить эту дейтаграмму далее по пути к адресату. BGP-маршрутизатор может также отфильтровывать (отбрасывать) полученные объявления о маршрутах. Например, BGP-маршрутизатор будет игнорировать объявления, содержащие номер его собственной автономной системы, указанный в качестве автономной системы-получателя, так как использование такого маршрута привело бы к появлению маршрутной петли. Поскольку маршрут указывается полностью, сетевой администратор может в значительной степени контролировать маршруты дейтаграмм его сети. Например, в автономной системе Hatfield.net можно реализовать политику, заключающуюся в том, чтобы трафик из автономной системы Hatfield.net не попадал в автономную систему McCoy.net (семейства Hatfield и McCoy, живущие в США, представляют собой два знаменитых враждующих клана).
2. Выбор маршрута. BGP-маршрутизатор может получить несколько объявлений о маршрутах к одной и той же автономной системе-адресату. В этом случае он должен выбрать из объявленных маршрутов один. Данные об автономной системе-адресате и следующем ретрансляционном участке для выбранного маршрута должны быть помещены в таблицы продвижения данных (как, например, было показано на рис. 4.11). BGP-маршрутизатору могут быть известны несколько маршрутов к одному адресату, но в таблице продвижения данных, как правило, указывается лишь один маршрутизатор по направлению к данному адресату.
Но как BGP-маршрутизатор выбирает из нескольких маршрутов один? В протоколе BGP проводится четкое разграничение между механизмом маршрутизации и политикой маршрутизации. В частности, протокол BGP не определяет, как автономная система должна выбирать один маршрут из нескольких предложенных. Это политическое решение, оставляемое на усмотрение сетевого администратора автономной системы. Администратор сети может указать так называемые локальные предпочтения, например, что при наличии выбора маршрутизация через соседнюю автономную систему А всегда предпочтительнее маршрутизации через соседнюю автономную систему В. В отсутствие локальных предпочтений, как правило, выбирается кратчайший маршрут, то есть маршрут, состоящий из наименьшего количества автономных систем.
3. Передача объявлений о маршрутах своим соседям. BGP-маршрутизатор получает объявления о маршрутах от своих соседей, а также передает объявления о маршрутах своим соседям. Протокол BGP предоставляет механизм для таких объявлений, но не политику. В результате администратор сети получает значительный уровень контроля над трафиком, поступающим в его сеть.

Применительно к нашему примеру с семействами Hatfield и McCoy, клан Hatfield легко может запретить трафику клана McCoy проходить через свою сеть. Например, если сеть клана McCoy расположена по соседству с сетью клана Hatfield, клан Hatfield может просто не информировать о маршрутах к сети клана McCoy, проходящих через сеть клана Hatfield. Однако эффективность ограничения трафика путем контролирования объявлений автономной системы о маршрутах может быть не полной. Например, если сеть Петровых располагается между сетями семейств Hatfield и McCoy, и клан Hatfield информируют о маршрутах к сети Петровых, проходящих через сеть клана Hatfield, тогда клан Hatfield не может запретить (с помощью протокола BGP) Петровым сообщить об этих маршрутах клану McCoy.

Проиллюстрируем некоторые из основных концепций информирования о маршрутах несколько более реалистическим примером, чем пример с семействами Hatfield и McCoy. На рис. 4.32 показаны шесть соединенных друг с другом автономных систем: А, В, С, W, X и Y. Необходимо отметить, что А, В, С, W, X и Y — это сети, а не маршрутизаторы. Пусть автономные системы W, X и Y представляют собой тупиковые сети, а автономные системы А, В и С являются сетями магистральных Интернет-провайдеров. Весь попадающий в тупиковую сеть трафик должен предназначаться этой сети, а весь покидающий тупиковую сеть трафик должен генерироваться узлами этой сети. Если взглянуть на рисунок, должно быть очевидно, что сети W и Y являются тупиковыми, а сеть X называют «многодомовой» тупиковой сетью, так как она соединяется с остальными сетями через двух разных Интернет-провайдеров (ситуация, становящаяся все более популярной в последнее время).

Однако, как и сети W и Y, сеть X должна быть источником/адресатом всего исходящего/входящего трафика сети X. Но как реализовать и гарантировать такое поведение? Как сеть X может не пропускать трафик между сетями В и С? Этого легко добиться, контролируя способ, которым рекламируются BGP-марш-руты. В частности, сеть X будет функционировать как тупиковая, если она объявит (своим соседям, сетям В и С), что у нее нет путей к другим адресатам, кроме самой сети X. То есть, даже если сети X известен маршрут до сети Y, например XCY, она не будет сообщать этот маршрут сети В. Поскольку сеть В не знает, что у сети X есть маршрут до сети Y, сеть В никогда не станет направлять трафик, предназначенный сети Y (или С) через сеть X. Этот простой пример иллюстрирует механизм выборочного информирования о маршрутах для реализации связанных с маршрутизацией отношений между клиентом и поставщиком услуг.

432.png

Рассмотрим теперь сеть поставщика услуг, например автономную систему В. Предположим, сеть В узнала (от сети А), что у сети А есть путь AW к сети W. В результате сеть В может добавить в свою маршрутную базу данных маршрут BAW.

Естественно, сеть В захочет сообщить о маршруте BAW своему клиенту X, чтобы клиент X знал, что он может направлять данные сети W через сеть В. Но должна ли сеть В рекламировать маршрут В AW сети С? Если она это сделает, тогда сеть С сможет направлять трафик в сеть W по маршруту CBAW. Если все сети А, В и С представляют собой магистральные сети Интернет-провайдеров, тогда сеть В может решить, что ей нет резона взваливать на себя бремя переноса трафика между сетями А и С. Поскольку владельцы сетей А и С взимают со своих клиентов плату за продвижение данных, будет только справедливо, если они для пересылки данных друг другу воспользуются прямым соединением между ними. Сегодня нет официальных «стандартов», определяющих, как Интернет-провайдеры должны поступать с трафиком друг друга. Однако на практике Интернет-провайдеры придерживаются простого правила, состоящего в том, что любой трафик, пересекающий магистральную сеть Интернет-провайдера, должен либо генерироваться, либо приниматься в сети, являющейся клиентом этого Интернет-провайдера. В противном случае подобный трафик будет восприниматься Интернет-провайдером как «безбилетный пассажир». Индивидуальные соглашения, регулирующие подобные спорные вопросы, как правило, заключаются парами Интернет-провайдеров и зачастую являются конфиденциальными.
Обсудив в общих чертах некоторые политические вопросы, связанные с протоколом BGP, мы можем вернуться к внутренним механизмам протокола BGP. Равноправные BGP-узлы обмениваются данными при помощи протокола TCP через порт 179. Таким образом, протокол TCP обеспечивает надежный обмен сообщениями между двумя равноправными BGP-узлами с контролем перегрузки. Для сравнения вспомните, как общаются равноправные RIP-узлы, например программы routed на рис. 4.29, обменивающиеся данными при помощи ненадежного транспортного протокола UDP, а также, что для обмена OSPF-сообщениями используется собственный протокол OSPF. В протоколе BGP определены четыре типа сообщений: OPEN, UPDATE, KEEPALIVE и NOTIFICATION.
□ OPEN (открытие). Когда BGP-маршрутизатор желает установить контакт с равноправным BGP-узлом (например, после того как сам маршрутизатор был загружен или была включена линия связи), сообщение OPEN пересылается равноправному BGP-узлу. Сообщение OPEN позволяет BGP-маршрутизатору идентифицировать и аутентифицировать себя, а также синхронизироваться. Если получивший сообщение OPEN равноправный BGP-узел считает это для себя приемлемым, он отвечает на него сообщением KEEPALIVE.
□ UPDATE (обновление). BGP-маршрутизатор использует сообщение UPDATE, чтобы объявить равноправному BGP-узлу о маршруте к определенному адресату. Сообщение UPDATE может также использоваться для того, чтобы аннулировать объявленный ранее маршрут (то есть сообщить равноправному BGP-узлу, что объявленный ранее маршрут более не действителен). BGP-маршрут считается действительным до тех пор, пока он не будет явно аннулирован.
□ KEEPALIVE (дежурное сообщение). Это BGP-сообщение позволяет известить равноправный BGP-узел о том, что отправитель сообщения продолжает нормальную деятельность и у него нет другой информации для передачи. Это сообщение также служит подтверждением полученного сообщения OPEN.
□ NOTIFICATION(уведомление). Это BGP-сообщение используется для информирования равноправного BGP-узла об обнаруженной ошибке (например, в переданном ранее BGP-сообщении) или о том, что отправитель собирается завершить BGP-сеанс.

ПРИНЦИПЫ И ПРАКТИКА——
Изучив детали конкретных протоколов для внутренней и внешней маршрутизации, реализованных в сегодняшнем Интернете, закончим наше изучение, возможно, одним из наиболее фундаментальных вопросов, касающихся протоколов маршрутизации: зачем нужны разные протоколы для внутренней и внешней маршрутизации? Ответ на этот вопрос кроется в различном назначении маршрутизации внутри автономных систем и между автономными системами.
□ Политика. Среди автономных систем политические вопросы доминируют. Может быть важным, чтобы трафик, сгенерированный в некоторой автономной системе, не мог проходить через другую конкретную автономную систему. Аналогично, конкретная автономная система может пожелать контролировать транзитный трафик, переносимый между другими автономными системами. Мы видели, что протокол BGP передает атрибуты маршрутов и предоставляет возможность контролируемого распределения информации о маршрутах, что позволяет принимать политические решения о выборе маршрутов.
□ Масштабирование. Способность алгоритма маршрутизации и его структур данных к масштабированию в целях поддержания большого количества сетей является ключевой для внешней маршрутизации. В пределах одной автономной системы значимость масштабирования не так велика, поскольку, если какой-либо административный домен становится слишком большим, его всегда можно разбить на две автономные системы поменьше и соединить их с помощью механизмов внешней маршрутизации. (Вспомним также, что протокол OSPF позволяет разделять автономную систему на отдельные области, создавая таким образом иерархическую структуру.)
□ Производительность. Поскольку политические вопросы играют во внешней маршрутизации столь важную роль, качество обслуживания в используемых маршрутах (например, производительность) часто оказывается на втором плане (то есть более длинному или более дорогому маршруту, удовлетворяющему определенным политическим критериям, может быть оказано предпочтение по сравнению с более коротким маршрутом, который не удовлетворяет этим критериям). Действительно, мы видели, что при маршрутизации между автономными системами стоимость даже не упоминается (не считая количества ретрансляционных участков). Однако в пределах одной автономной системы подобные политические соображения не столь важны, что позволяет при выборе маршрута больше внимания уделить производительности.

До сих пор в нашем обсуждении мы уделяли внимание вопросам использования протокола BGP для выбора маршрута между маршрутизаторами разных автономных систем, то есть так называемому протоколу E-BGP (External BGP — внешний протокол BGP). Однако существует и другая версия протокола BGP, называемая протоколом I-BGP (Internal BGP — внутренний протокол BGP). Протокол I-BGP применяется для доставки находящимся в той же автономной системе маршрутизаторам информации о маршрутах, касающейся адресатов, расположенных за пределами автономной системы. Чтобы понять, зачем нужен протокол I-BGP, вернемся к рис. 4.31. Как может маршрутизатор R5 получить информацию о маршрутах к удаленным автономным системам, например, AS2 и AS3? Как уже было показано, протокол внутренней маршрутизации, например RIP, позволяет указать маршрут по умолчанию. По этому маршруту отправляются дейтаграммы, адресат которых не указан явно в таблице продвижения данных. Другая возможность состоит в использовании протокола I-BGP для распределения внутри автономной системы информации о маршрутах, касающейся адресатов, расположенных за пределами автономной системы. В протоколах I-BGP и E-BGP применяются одинаковые форматы сообщений и форматы атрибутов путей, но между этими двумя протоколами имеется несколько существенных различий. Все I-BGP-маршрутизаторы в пределах одной автономной системы логически связаны друг с другом. То есть все I-BGP-маршрутизаторы в пределах одной автономной системы считаются соседями друг друга. Кроме того, I-BGP-маршрутизаторы ограничены в способах информирования о маршрутах, о которых они узнают от других I-BGP-маршрути-заторов (в отличие от E-BGP-маршрутизаторов).

Как уже отмечалось, протокол BGP является стандартом де-факто для маршрутизации внутри автономных систем в Интернете. Например, протокол BGP используется в основных точках доступа в сеть (Network Access Point, NAP), через которые крупнейшие Интернет-провайдеры связываются друг с другом и обмениваются трафиком.

На этом мы завершаем наш краткий обзор протокола BGP.

Данная статья "Протокол OSPF" размещена на сайте Компьютерные сети и многоуровневая архитектура интернета (conlex.kz) в ознакомительных целях.

Уточнения, корректировки и обсуждения статьи "Протокол OSPF" - под данным текстом, в комментариях.

Ответственность, за все изменения, внесённые в систему по советам данной статьи, Вы берёте на себя.

Копирование статьи "Протокол OSPF", без указания ссылки на сайт первоисточника Компьютерные сети и многоуровневая архитектура интернета (conlex.kz), строго запрещено.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *