Протокол внешних маршрутизаторов EGP Протокол внешних маршрутизаторов (Exterior Gateway Protocol-EGP) является протоколом междоменной досягаемости, который применяется в Internet - международной сети, об'единяющей университеты, правительственные учреждения, научно-исследовательские организации и частные коммерческие концерны. EGP документально оформлен в Запросах для Комментария (RFC) 904, опубликованных в апреле 1984 г. Являясь первым протоколом внешних маршрутизаторов, который получил широкое признание в Internet, EGP сыграл важную роль. К сожалению, недостатки EGP стали более очевидными после того, как Internet стала более крупной и совершенной сетью. Из-за этих недостатков EGP в настоящее время не отвечает всем требованиям Internet и заменяется другими протоколами внешних маршрутизаторов, такими, как Протокол граничных маршрутизаторов (Border Gateway Protocol - BGP) и Протокол междоменной маршрутизации (Inter-Domain Routing Protocol - IDRP). Основы технологии EGP первоначально предназначался для передачи информации о досягаемости в стержневые маршрутизаторы ARPANET и получения ее от них. Информация передавалась из отдельных узлов источника, находящихся в различных административных доменах, называемых автономными системами (AS), вверх в стержневые маршрутизаторы, которые передавали эту информацию через стержневую область до тех пор, пока ее можно было передать вниз к сети пункта назначения, находящейся в пределах другой AS. Эти взаимоотношения между EGP и другими компонентами ARPANET показаны на Рисунке 4.29. Несмотря на то, что EGP является динамическим протоколом маршрутизации, он использует очень простую схему. Он не использует показатели, и следовательно, не может принимать по настоящему интеллектуальных решений о маршрутизации. Корректировки маршрутизации EGP содержат информацию о досягаемости сетей. Другими словами, они указывают, что в определенные сети попадают через определенные маршрутизаторы. EGP имеет три основных функции. Во-первых, маршрутизаторы, работающие с EGP, организуют для себя определенный набор соседей. Соседи - это просто другие маршрутизаторы, с которыми какой-нибудь маршрутизатор хочет коллективно пользоваться информацией о досягаемости сетей; какие-либо указания о географическом соседстве не включаются. Во-вторых, маршрутизаторы EGP опрашивают своих соседей для того, чтобы убедиться в их работоспособности. В-третьих, маршрутизаторы EGP oтправляют сообщения о корректировках, содержащих информацию о досягаемости сетей в пределах своих AS. Формат пакета EGP Первым полем в заголовке пакета EGP является поле номера версии EGP (EGP version number). Это поле обозначает текущую версию EGP и проверяется приемными устройствами для определения соответствия между номерами версий отправителя и получателя. Следующим полем является поле типа (type), которое обозначает тип сообщения. EGP выделяет 5 отдельных типов сообщения. За полем типа следует поле кода (code). Это поле определяет различие между подтипами сообщений. Следующее поле - поле состояния (status), которое содержит информацию о состоянии, зависящую от сообщения. В число кодов состояния входят коды недостатка ресурсов (insufficient resources), неисправных параметров (parameter problem), нарушений протокола (protocol violation), и другие. За полем состояния идет поле контрольной суммы (checksum). Контрольная сумма используется для обнаружения возможных проблем, которые могли появиться в пакете в результате транспортировки. За полем контрольной суммы идет поле номера автономной системы (autonomous system number). Оно обозначает AS, к которой принадлежит маршрутизатор- отправитель. Последним полем заголовка пакета EGP является поле номера последовательности (sequence number). Это поле позволяет двум маршрутизаторам EGP, которые oбмениваются сообщениями, согласовывать запросы с ответами. Когда определен какой-нибудь новый сосед, номер последовательности устанавливается в исходное нулевое значение и инкрементируется на единицу с каждой новой транзакцией запрос-ответ. За заголовком EGP идут дополнительные поля. Содержимое этих полей различается в зависимости от типа сообщения (определяемого полем типа). Типы сообщений За заголовком EGP идут дополнительные поля. Содержимое этих полей различается в зависимости от типа сообщения (определяемого полем типа). Приобретение соседа Сообщение "приобретение соседа" включает в себя интервал приветствия (hello interval) и интервал опроса (poll interval). Поле интервала приветствия определяет период интервала проверки работоспособности соседей. Поле интервала опроса определяет частоту корректировки маршрутизации. Досягаемость соседа Сообщения о досягаемости соседа не имеют отдельных полей в числе полей, идущих за заголовком EGP. Эти сообщения используют поле кода для указания различия между приветственным сообщением и ответом на приветственное сообщение. Выделение функции оценки досягаемости из функции корректировки маршрутизации уменьшает сетевой трафик, т.к. изменения о досягаемости сетей обычно появляются чаще, чем изменения параметров маршрутизации. Любой узел EGP заявляет об отказе одного из своих соседей только после того, как от него не был получен определенный процент сообщений о досягаемости. Опрос Чтобы обеспечить правильную маршрутизацию между AS, ЕGP должен знать об относительном местоположении отдаленных хостов. Сообщение опроса позволяет маршрутизаторам EGP получать информацию о досягаемости сетей, в которых находятся эти машины. Такие сообщения имеют только одно поле помимо обычного заголовка - поле сети источника IP (source network). Это поле определяет сеть, которая должна использоваться в качестве контрольной точки для запроса. Корректиравка маршрутизации Сообщения о корректировке маршрутизации дают маршрутизаторам EGP возможность указывать местоположение различных сетей в пределах своих AS. В дополнение к обычному заголовку эти сообщения включают несколько дополнительных полей. Поле числа внутренних маршрутизаторов (number of interior gateways) указывает на число внутренних маршрутизаторов, появляющихся в сообщении. Поле числа внешних маршрутизаторов (number of exterior gateways) указывает на число внешних маршрутизаторов, появляющихся в сообщении. Поле сети источника IP (IP source network) обеспечивает адрес IP той сети, от которой измерена досягаемость. За этим полем идет последовательность блоков маршрутизаторов (gateway blocks). Каждый блок маршрутизаторов обеспечивает адрес IP какого-нибудь маршрутизатора и перечень сетей, а также расстояний, связанных с достижением этих сетей. В пределах одного блока маршрутизатора EGP перечисляет сети по расстояниям. Например, на расстоянии три может быть четыре сети. Эти сети перечислены по адресам. Следующей группой сетей могут быть сети, находящиеся на расстоянии 4, и т.д. ЕGP не расшифровывает показатели расстояния, содержащиеся в сообщениях о корректировке маршрутов. EGP фактически использует поле расстояния для указания существования какого-либо маршрута; значение расстояния может быть использовано только для сравнения трактов, если эти тракты полностью находятся в пределах одного конкретного AS. По этой причине EGP является скорее протоколом досягаемости, чем протоколом маршрутизации. Это ограничение приводит также к ограничениям в структуре Internet. Характерно, что любая часть EGP сети Internet должна представлять собой структуру дерева, у которого стержневой маршрутизатор является корнем, и в пределах которого отсутствуют петли между другими AS. Это ограничение является основным ограничением EGP; оно стало причиной его постепенного вытеснения другими, более совершенными протоколами внешних маршрутизаторов. Сообщения о неисправностях Сообщения о неисправностях указывают на различные сбойные ситуации. В дополнение к общему заголовку EGP сообщения о неисправностях обеспечивают поле причины (reason), за которым следует заголовок сообщения о неисправности (message header). В число типичных неисправностей (причин) EGP входят неисправный формат заголовка EGP (bad EGP header format), неисправный формат поля данных EGP (bad EGP data field format), чрезмерная скорость опроса (excessive polling rate) и невозможность достижения информации (unavailability of reachability information). Заголовок сообщения о неисправности состоит из первых трех 32-битовых слов заголовка EGP. Внешний протокол маршрутизации BGP-4 Протокол BGP (RFC-1267, BGP-3; RFC-1268; RFC-1467, BGP-4; -1265-66, 1655) разработан компаниями IBM и CISCO. Главная цель BGP - сократить транзитный трафик. Местный трафик либо начинается, либо завершается в автономной системе (AS); в противном случае – это транзитный трафик. Системы без транзитного трафика не нуждаются в BGP (им достаточно EGP для общения с транзитными узлами). Но не всякая ЭВМ, использующая протокол BGP, является маршрутизатором, даже если она обменивается маршрутной информацией с пограничным маршрутизатором соседней автономной системы. AS передает информацию только о маршрутах, которыми она сама пользуется. BGP-маршрутизаторы обмениваются сообщениями об изменении маршрутов (UPDATE-сообщения, рисунок 4.25). Максимальная длина таких сообщений составляет 4096 октетов, а минимальная 19 октетов. Каждое сообщение имеет заголовок фиксированного размера. Объем информационных полей зависит от типа сообщения. Формат BGP-сообщений об изменениях маршрутов Поле маркер содержит 16 октетов и его содержимое может легко интерпретироваться получателем. Если тип сообщения "OPEN", или если код идентификации в сообщении OPEN равен нулю, то поле маркер должно быть заполнено единицами. Маркер может использоваться для обнаружения потери синхронизации в работе BGP-партнеров. Поле длина имеет два октета и определяет общую длину сообщения в октетах, включая заголовок. Значение этого поля должно лежать в пределах 19-4096. Поле тип представляет собой код разновидности сообщения и может принимать следующие значения: 1 OPEN (открыть) 2 UPDATE (изменить) 3 NOTIFICATION (внимание) 4 KEEPALIVE (еще жив) После того как связь на транспортном протокольном уровне установлена, первое сообщение, которое должно быть послано - это OPEN. При успешном прохождении этого сообщения партнер должен откликнуться сообщением KEEPALIVE ("Еще жив"). После этого возможны любые сообщения. Кроме заголовка сообщение OPEN содержит следующие поля (рисунок 4.26): Формат сообщения OPEN Поле версия описывает код версии используемого протокола, на сегодня для BGP он равен 4. Двух-октетное поле моя автономная система определяет код AS отправителя. Поле время сохранения характеризует время в секундах, которое отправитель предлагает занести в таймер сохранения. После получения сообщения OPEN BGP-маршрутизатор должен выбрать значение времени сохранения. Обычно выбирается меньшее из полученного в сообщении OPEN и значения, определенного при конфигурации системы (0-3сек). Время сохранения определяет максимальное время в секундах между сообщениями KEEPALIVE и UPDATE или между двумя UPDATE- сообщениями. Каждому узлу в рамках BGP приписывается 4-октетный идентификатор (BGP-identifier, задается при инсталляции и идентичен для всех интерфейсов локальной сети). Если два узла установили два канала связи друг с другом, то согласно правилам должен будет сохранен канал, начинающийся в узле, BGP- идентификатор которого больше. Предусмотрен механизм разрешения проблемы при равных идентификаторах. Одно-октетный код идентификации позволяет организовать систему доступа, если он равен нулю, маркер всех сообщений заполняется единицами, а поле идентификационных данных должно иметь нулевую длину. При неравном нулю коде идентификации должна быть определена процедура доступа и алгоритм вычисления кодов поля маркера. Длина поля идентификационных данных определяется по формуле: Длина сообщения = 29 + длина поля идентификационных данных. Минимальная длина сообщения OPEN составляет 29 октетов, включая заголовок.Сообщения типа UPDATE (изменения) используются для передачи маршрутной информации между BGP-партнерами. Этот тип сообщения позволяет сообщить об одном новом маршруте или объявить о закрытии группы маршрутов, причем объявление об открытии нового и закрытии старых маршрутов возможно в пределах одного сообщения. Сообщение UPDATE всегда содержит стандартный заголовок и может содержать другие поля в соответствии со схемой: Формат UPDATE-сообщения Если длина списка отмененных маршрутов равна нулю, ни один маршрут не отменен, а поле отмененные маршруты в сообщении отсутствует. Поле отмененные маршруты имеет переменную длину и содержит список IP-адресных префиксов маршрутов, которые стали недоступны. Каждая такая запись имеет формат: Длина префикса (в битах), равная нулю означает, что префикс соответствует всем IP-адресам, а сам имеет нулевой размер. Поле префикс содержит IP-адресные префиксы, за которыми следуют разряды, дополняющие их до полного числа октетов. Значения этих двоичных разрядов смысла не имеют. Нулевое значение полной длины списка атрибутов пути говорит о том, что информация о доступности сетевого уровня в UPDATE-сообщении отсутствует. Список атрибутов пути присутствует в любом UPDATE-сообщении. Этот список имеет переменную длину, а каждый атрибут содержит три составные части: тип атрибута, длину атрибута и значение атрибута. Тип атрибута представляет собой двух- октетное поле со структурой: Старший бит (бит0) поля флаги атрибута определяет, является ли атрибут опционным (бит0=1) или стандартным (well-known, бит0=0). Бит 1 этого поля определяет, является ли атрибут переходным (бит1=1) или непереходным (бит1=0). Для обычных атрибутов этот бит должен быть равен 1. Третий бит (бит 2) поля Флагов атрибута определяет, является ли информация в опционном переходном атрибуте полной (бит2=0) или частичной (бит2=1). Для обычных и для опционных непереходных атрибутов этот бит должен быть равен нулю. Бит 3 поля флагов атрибута информирует о том, имеет ли длина атрибута один (бит3=0) октет или два октета (бит3=1). Бит3 может быть равен 1 только в случае, когда длина атрибута более 255 октетов. Младшие 4 бита октета флагов атрибута не используются (и должны обнуляться). Если бит3=0, то третий октет атрибута пути содержит длину поля данных атрибута в октетах. Если же бит3=1, то третий и четвертый октеты атрибута пути хранят длину поля данных атрибута. Остальные октеты поля атрибут пути характеризуют значение атрибута и интерпретируются согласно флагам атрибута. Атрибуты пути бывают "стандартные обязательные" (well-known mandatory), "стандартные на усмотрение оператора", "опционные переходные" и "опционные непереходные". Стандартные атрибуты должны распознаваться любыми BGP- приложениями. Опционные атрибуты могут не распознаваться некоторыми приложениями. Обработка нераспознанных атрибутов задается битом 1 поля флагов. Пути с нераспознанными переходными опционными атрибутами должны восприниматься, как рабочие. Один и тот же атрибут может появляться в списке атрибутов пути только один раз. Предусмотрены следующие разновидности кодов типа атрибута: ORIGIN (код типа = 1) - стандартный обязательный атрибут, который определяет происхождение путевой информации. Генерируется автономной системой, которая является источником маршрутной информации. Значение атрибута в этом случае может принимать следующие значения: Код атрибута Описание 0 IGP - информация достижимости сетевого уровня является внутренней по отношению к исходной автономной системе; 1 EGP - информация достижимости сетевого уровня получена с помощью внешнего протокола маршрутизации; 2 INCOMPLETE - информация достижимости сетевого уровня получена каким-то иным способом. AS_PATH (код типа = 2) также является стандартным обязательным атрибутом, который составлен из совокупности сегментов пути. Атрибут определяет автономные системы, через которые доставлена маршрутная информация. Когда BGP-маршрутизатор передает описание маршрута, которое он получил от своего BGP-партнера, он модифицирует AS_PATH-атрибут, соответствующий этому маршруту, если информация передается за пределы автономной системы. Каждый сегмент AS_PATH состоит из трех частей <тип сегмента пути, длина сегмента пути и оценка сегмента пути>. Тип сегмента пути представляет в свою очередь однооктетное поле, которое может принимать следующие значения: Код типа сегмента Описание 1 AS_SET: неупорядоченный набор маршрутов в UPDATE сообщении; 2 AS_SEQUENCE: упорядоченный набор маршрутов автономной системы в UPDATE-сообщении. Длина сегмента пути представляет собой одно-октетное поле, содержащее число AS, записанных в поле оценка сегмента пути. Последнее поле хранит один или более кодов автономной системы, по два октета каждый. NEXT_HOP (код типа = 3) - стандартный обязательный атрибут, определяющий IP- адрес пограничного маршрутизатора, который должен рассматриваться как цель следующего шага на пути к точке назначения. MULI_EXIT_DISC (код типа = 4) представляет собой опционный непереходной атрибут, который занимает 4 октета и является положительным целым числом. Величина этого атрибута может использоваться при выборе одного из нескольких путей к соседней автономной системе. LOCAL_PREF (код типа = 5) является опционным атрибутом, занимающим 4 октета. Он используется BGP-маршрутизатором, чтобы сообщить своим BGP-партнерам в своей собственной автономной системе степень предпочтения объявленного маршрута. ATOMIC_AGGREGATE (код типа = 6) представляет собой стандартный атрибут, который используется для информирования партнеров о выборе маршрута, обеспечивающего доступ к более широкому списку адресов. AGGREGATOR (код типа = 7) - опционный переходной атрибут с длиной в 6 октетов. Атрибут содержит последний код автономной системы, который определяет агрегатный маршрут (занимает два октета), и IP-адрес BGP-маршрутизатора, который сформировал этот маршрут (4 октета). Объем информации о достижимости сетевого уровня равен (в октетах): Длина сообщения UPDATE - 23 - полная длина атрибутов пути - длина списка отмененных маршрутов. Информация о достижимости кодируется в следующей форме: Поле длина определяет длину IP-адресного префикса в битах. Если длина равна нулю, префикс соответствует всем IP-адресам. Префикс содержит IP-адресные префиксы и двоичные разряды, дополняющие код до целого числа октетов. Информация о работоспособности соседних маршрутизаторов получается из KEEPALIVE-сообщений, которые должны посылаться настолько часто, чтобы уложиться во время, отведенное таймером сохранения (HOLD). Обычно это время не должно превышать одной трети от времени сохранения, но не должно быть и меньше 1 секунды. Если выбранное значение времени сохранения равно нулю, периодическая посылка KEEPALIVE-сообщений не обязательна. NOTIFICATION-сообщения посылаются, когда обнаружена ошибка. BGP-связь при этом немедленно прерывается. Помимо заголовка NOTIFICATION-сообщение имеет следующие поля: Код ошибки представляет собой одно-октетное поле и указывает на тип данного сообщения. Возможны следующие коды ошибки: Коды ошибок Код ошибки Описание 1 Ошибка в заголовке сообщения. 2 Ошибка в сообщении OPEN 3 Ошибка в сообщении UPDATE 4 Истекло время сохранения 5 Ошибка машины конечных состояний 6 Прерывание При отсутствии фатальной ошибки BGP-партнер может в любой момент прервать связь, послав NOTIFICATION-сообщение с кодом ошибки прерывание. Одно-октетное поле Субкод ошибки предоставляет дополнительную информацию об ошибке. Каждый код ошибки может иметь один или более субкодов. Если поле содержит нуль, это означает, что никаких субкодов не определено. Субкоды ошибок Ошибка .............................Субкод .......................................Описание Заголовок .........................1 2 3 ........................Соединение не синхронизовано Неверная длина сообщения Неверный тип сообщения Сообщения OPEN ..............1 2 3 4 5 6 .........................Неверный код версии Ошибочный код AS-партнера Ошибочный идентификатор BGP Ошибка в коде идентификации Ошибка при идентификации Неприемлемое время сохранения Сообщения UPDATE ...............1 2 3 4 5 6 7 8 9 10 11 ........................Ошибка в списке атрибутов Не узнан стандартный атрибут Отсутствует стандартный атрибут Ошибка в флагах атрибута Ошибка в длине атрибута Неправильный атрибут ORIGIN Циклический маршрут Ошибка в атрибуте NEXT_HOP Ошибка в опционном атрибуте Ошибка в сетевом поле Ошибка в AS_PATH Вся маршрутная информация хранится в специальной базе данных RIB (Routing Information Base). Маршрутная база данных BGP состоит из трех частей: 1. Adj-RIBs-In: Запоминает маршрутную информацию, которая получена из UPDATE-сообщений. Это список маршрутов, из которого можно выбирать. (Policy Information Base - PIB). 2. Loc-RIB: Содержит локальную маршрутную информацию, которую BGP-маршрутизатор отобрал, руководствуясь маршрутной политикой, из Adj-RIBs-In. 3. Adj-RIBs-Out: Содержит информацию, которую локальный BGP-маршрутизатор отобрал для рассылки соседям с помощью UPDATE-сообщений. Так как разные BGP-партнеры могут иметь разную политику маршрутизации, возможны осцилляции маршрутов. Для исключения этого необходимо выполнять следующее правило: если используемый маршрут объявлен не рабочим (в процессе корректировки получено сообщение с соответствующим атрибутом), до переключения на новый маршрут необходимо ретранслировать сообщение о недоступности старого всем соседним узлам. Протокол BGP позволяет реализовать маршрутную политику, определяемую администратором AS. Политика отражается в конфигурационных файлах BGP. Маршрутная политика это не часть протокола, она определяет решения, когда место назначения достижимо несколькими путями, политика отражает соображения безопасности, экономические интересы и пр. Количество сетей в пределах одной AS не лимитировано. Один маршрутизатор на много сетей позволяет минимизировать таблицу маршрутов. BGP использует три таймера: ConnectRetry (сбрасывается при инициализации и коррекции; 120 сек), Holdtime (запускается при получении команд Update или KeepAlive; 90сек) и KeepAlive (запускается при посылке сообщения KeepAlive; 30сек). BGP отличается от RIP и OSPF тем, что использует TCP в качестве транспортного протокола. Две системы, использующие BGP, связываются друг с другом и пересылают посредством TCP полные таблицы маршрутизации. В дальнейшем обмен идет только в случае каких-то изменений. ЭВМ, использующая BGP, не обязательно является маршрутизатором. Сообщения обрабатываются только после того, как они полностью получены. BGP является протоколом, ориентирующимся на вектор расстояния. Вектор описывается списком AS по 16 бит на AS. BGP регулярно (каждые 30сек) посылает соседям TCP-сообщения, подтверждающие, что узел жив (это не тоже самое что "keepalive" функция в TCP). Если два BGP-маршрутизатора попытаются установить связь друг с другом одновременно, такие две связи могут быть установлены. Такая ситуация называется столкновением, одна из связей должна быть ликвидирована. При установлении связи маршрутизаторов сначала делается попытка реализовать высший из протоколов (например, BGP-4), если один из них не поддерживает эту версию, номер версии понижается. Протокол BGP-4 является усовершенствованной версией (по сравнению с BGP-3). Эта версия позволяет пересылать информацию о маршруте в рамках одного IP-пакета. Концепция классов сетей и субсети находятся вне рамок этой версии. Для того чтобы приспособиться к этому, изменена семантика и кодирование атрибута AS_PASS. Введен новый атрибут LOCAL_PREF (степень предпочтительности маршрута для собственной AS), который упрощает процедуру выбора маршрута. Атрибут INTER_AS_METRICS переименован в MULTI_EXIT_DISC (4 октета; служит для выбора пути к одному из соседей). Введены новые атрибуты ATOMIC_AGGREGATE и AGGREGATOR, которые позволяют группировать маршруты. Структура данных отражается и на схеме принятия решения, которая имеет три фазы: 1. Вычисление степени предпочтения для каждого маршрута, полученного от соседней AS, и передача информации другим узлам местной AS. 2. Выбор лучшего маршрута из наличного числа для каждой точки назначения и укладка результата в Loc-RIB. 3. Рассылка информации из Loc_RIB всем соседним AS согласно политике, заложенной в RIB. Группировка маршрутов и редактирование маршрутной информации.
|