8-2_BGP (1130332), страница 3
Текст из файла (страница 3)
Критерии последовательно применяются в указанном порядке, пока не останетсяединственный маршрут:••••••••наибольший административный вес;наибольшее значение LOCAL_PREF;кратчайший AS_PATH (маршрут, порожденный в локальной АС, имеет самыйкороткий – пустой – AS_PATH);наименьшее значение ORIGIN (IGP<EGP<INCOMPLETE);наименьшее значение MULTI_EXIT_DISC (отсутствующий MULTI_EXIT_DISCсчитается нулевым);маршрут, полученный по EBGP, против маршрута, полученного по IBGP;если все маршруты получены по IBGP, то выбирается маршрут через ближайшегососеда;маршрут, полученный от BGP-соседа с наименьшим идентификатором (IPадресом).9Аналогично, отбор маршрутов в базу Adj-RIBsOut (для реализации политики объявлений)может производиться, например, по следующим критериям:••••регулярное выражение для значения AS_PATH (частные случаи: номер конечнойАС маршрута, АС соседа, от которого получен маршрут);адрес сети, в которую ведет маршрут;адрес соседа, которому этот маршрут объявляется;происхождение маршрута (атрибут ORIGIN).К маршруту, удовлетворяющему установленному критерию, можно применитьследующие политики:•••••не объявлять маршрут (фильтрация);MULTI_EXIT_DISC: не устанавливать, установить указанное значение, взять вкачестве значения метрику маршрута из IGP;произвести агрегирование сетей в общий префикс;модифицировать AS_PATH указанным образом;заменить маршрут на default.5.
Реализация BGPПара BGP-соседей устанавливает между собой соединение по протоколу TCP, порт 179.Соседи, принадлежащие разным АС, должны быть доступны друг другу непосредственно;для соседей из одной АС такого ограничения нет, поскольку протокол внутреннеймаршрутизации обеспечит наличие всех необходимых маршрутов между узлами однойавтономной системы.Поток информации, которым обмениваются BGP-соседи по протоколу TCP, состоит изпоследовательности BGP-сообщений. Максимальная длина сообщения 4096 октетов,минимальная – 19.
Имеется 4 типа сообщений.5.1. Типы BGP-сообщенийOPEN – посылается после установления TCP-соединения. Ответом на OPEN являетсясообщение KEEPALIVE, если вторая сторона согласна стать BGP-соседом; иначепосылается сообщение NOTIFICATION с кодом, поясняющим причину отказа, исоединение разрывается.KEEPALIVE – сообщение предназначено для подтверждения согласия установитьсоседские отношения, а также для мониторинга активности открытого соединения: дляэтого BGP-соседи обмениваются KEEPALIVE-сообщениями через определенныеинтервалы времени.UPDATE – сообщение предназначено для анонсирования и отзыва маршрутов.
Послеустановления соединения с помощью сообщений UPDATE пересылаются все маршруты,которые маршрутизатор хочет объявить соседу (full update), после чего пересылаютсятолько данные о добавленных или удаленных маршрутах по мере их появления (partialupdate).NOTIFICATION – сообщение этого типа используется для информирования соседа опричине закрытия соединения. После отправления этого сообщения BGP-соединениезакрывается.105.2. Формат BGP-сообщенияСообщение протокола BGP состоит из заголовка и тела. Заголовок имеет длину 19 октетови состоит из следующих полей:•••16 октетов - маркер: в сообщении OPEN всегда, и при работе без аутентификации в других собщениях, заполнен единицами.
Иначе содержит аутентификационнуюинформацию. Сопутствующая функция маркера - повышение надежностивыделения границы сообщения в потоке данных.2 октета - длина сообщения в октетах, включая заголовок.1 октет - тип сообщения:1 - OPEN2 - KEEPALIVE3 - UPDATE4 - NOTIFICATION5.3. Формат сообщения OPENСообщение OPEN состоит из следующих полей:••••••19 октетов - заголовок с маркером, заполненным единицами.1 октет - версия BGP (=4).2 октета - номер своей АС.2 октета - Hold Time - максимальное вермя (в секундах) между приходамисообщений KEEPALIVE, используемых для монитронига активности соединения;значение 0 - KEEPALIVE не посылаются вообще (мониторинг не производится);значения 1 и 2 не разрешаются. При получении сообщения маршрутизаторпринимает для данного соединения значение Hold Time, равное минимуму из того,что он получил в сообщении OPEN, и значения, указанного в конфигурациимаршрутизатора.
Если сообщение KEEPALIVE не было получено в течении HoldTime секунд, соединение считается закрытым и вся связанная с ним маршрутнаяинформация ликвидируется.4 октета - идентификатор маршрутизатора (один из адресов интерфейсов).1 октет - длина опции в октетах. Опции кодируются в виде: октет "Тип опции",октет "Длина опции в октетах", содержимое опции. Стандарт определяет однуопцию (тип 1) - "Определение типа аутентификации", содержимое которой состоитиз октета "Тип аутентификации" и аутентификационных данных, интерпретациякоторых зависит от типа аутентификации. Предполагается, что на основании этойинформации будет заполняться маркер заголовка.5.4. Формат сообщения KEEPALIVEСообщение KEEPALIVE состоит только из BGP-заголовка.5.5. Формат сообщения UPDATEСообщение UPDATE состоит из трех частей переменной длины: списокнедействительных маршрутов, список атрибутов и список сетей, к которым эти атрибутыотносятся.
Две последние части представляют собой собственно информацию о маршрутев указанные сети. (То есть, если маршруты в несколько разных сетей имеют одинаковыеатрибуты, то они объединяются в одном сообщении UPDATE. Разумеется,11предварительно адреса сетей везде, где это возможно, агрегируются в общий префикс.)Как первая часть сообщения, так и две последние могут отсутствовать.Формат сообщения:••••••19 октетов - заголовок,2 октета - длина списка недействительных маршрутов L1;L1 октетов - список недействительных маршрутов;2 октета - длина списка атрибутов L2;L2 октетов - список атрибутов для указанных ниже сетей;X октетов - список адресов сетей (Network Layer Reachability Information, NLRI).X= Длина_всего_сообщения - 19(длина заголовка) - 4 - L1 - L2.Список адресов сетей и список недействительных маршрутов представляют собой спискиэлементов, каждый элемент состоит из 2 частей:••1 октет - длина префикса LN октетов - префикс, где N - верхняя целая часть от L/8.Например, префикс 10.0.0.0/8 представляется в виде двух октетов:8 10Префикс 172.16.192.0/19 представляется в виде 4 октетов:19 172 16 192Напомним, что формально префикс представляет собой адрес некой сети, а длинапрефикса интерпретируется также как длина сетевой маски.
В реальном адресномпространстве префикс может соответствовать одной IP-сети или агрегировать в себенесколько IP-сетей.Для отмены маршрута достаточно указать только адрес сети (префикс) назначения, покоторому сосед найдет и удалит из своей базы все данные по этому маршруту. В одномсообщении может быть отменено несколько маршрутов.Для объявления маршрута следует представить префикс назначения и список атрибутовпути для этого префикса. Только один список атрибутов передается в одном собщении, ноуказанные атрибуты могут относиться к нескольким префиксам, список которыхприводится за списком атрибутов.Список атрибутов представляет собой список элементов, каждый элемент состоит из 4частей:••••1 октет - флаги атрибута,1 октет - тип атрибута,1 или два октета, в зависимости от бита 3 флагов - длина данных атрибута L,L октетов, может быть 0, - данные атрибута.Флаги атрибута:12••••••••бит 0=1 - атрибут всеобщий (обязан обрабатываться любым BGP-процессом:например, ORIGIN, AS_PATH, NEXT_HOP, LOCAL_PREF,ATOMIC_AGGREGATE),бит 0=0 - атрибут дополнительный (BGP-процесс может проигнорировать этотатрибут: например, MULTI_EXIT_DISC, AGGREGATOR).бит 1=1 - для дополнительных атрибутов: атрибут транзитивный (долженпередаваться при переобъявлении маршрута другому соседу, например,AGGREGATOR).
Для прочих атрибутов бит 1 всегда установлен.бит 1=0 - Для дополнительных атрибутов: атрибут не транзитивный (не передаетсяпри переобъявлении маршрута другому соседу, например, MULTI_EXIT_DISC).бит 2=1 - (только дополнительных транзитивных атрибутов) какой-то измаршрутизаторов, через которые проходил атрибут, проигнорировал его,бит 2=0 - (только дополнительных транзитивных атрибутов) все маршрутизаторыпо пути следования обработали атрибут. Для прочих атрибутов бит 2 всегдаобнулен.бит 3=1 - поле "Длина данных атрибута" занимает 2 октета,бит 3=0 - поле "Длина данных атрибута" занимает 1 октет.Длина и интерпертация данных атрибута зависит от типа атрибута.•••••••ORIGIN (тип 1) - 1 октет данных, содержащий значение атрибута (целое число 0, 1или 2).ASPATH (тип 2) - данные атрибута состоят из списка элементов, каждый элементсостоит из 3 частей:o 1 октет - тип сегмента пути: AS_SEQUENCE (=2) или AS_SET (=1),o 1 октет - число N номеров АС в сегменте,o 2N октетов - список номеров АС этого сегмента пути (по два октета наномер).NEXT_HOP (тип 3) - 4 октета, содержащих значение атрибута (IP-адрес).MULTI_EXIT_DISC (тип 4) - 4 октета, содержащих значение атрибута (беззнаковоецелое число).LOCAL_PREF (тип 5)- 4 октета, содержащих значение атрибута (беззнаковое целоечисло).ATOMIC_AGGRGATE (тип 6) - нет данных (значением атрибута является егоприсутствие).AGGREGATOR (тип 7) - 6 октетов, содержащих значение атрибута (2 октета номер АС, 4 октета - IP-адрес).5.6.
Формат сообщения NOTIFICATIONСообщение NOTIFICATION состоит из следующих полей:•••1 октет - Код ошибки,1 октет - Субкод ошибки,X октетов - данные, X=Длина_всего_сообщения - 19(длина заголовка) - 1 - 1.Количество и интерпретация данных зависят от кода и субкода ошибки.Определены следующие коды ошибок:1 - Ошибка заголовка2 - Ошибка в сообщении OPEN3 - Ошибка в сообщении UPDATE134 - Истекло время ожидания сообщения KEEPALIVE5 - Ошибка последовательности состояний6 - Закрытие соединения по желанию участника14.