Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Принципы маршрутизации в Internet. Самое полное описание протокола BGP 4 - Сэм Хелеби

.pdf
Скачиваний:
644
Добавлен:
24.05.2014
Размер:
8.46 Mб
Скачать

На рис. 6.20 AS1 обеспечивает подключение к Internet сети клиента (AS65001). Так как клиент имеет соединение только с этим провайдером и у него нет в ближайшем будущем планов по подключению через еще один канал к другому провайдеру, то ему выделяется номер частной AS. Если же клиенту потребуется организовать подключение к Internet через еще одного провайдера, то соответствующий его региону реестр сети Internet обязан будет присвоить его AS уникальный номер.

Все префиксы, генерируемые в AS65001, будут иметь атрибут AS_PATH 65001. Рассмотрим, каким образом распространяются сведения о префиксе 172.16.220.0/24 из AS6500I (рис. 6.20). Для того чтобы AS1 передала сведения об этом маршруте в сеть Internet, необходимо избавиться от номера частной AS, Когда префикс попадает в сеть Internet, он будет уже иметь в качестве источника номер AS провайдера. Обратите внимание, что префикс 172.16.220.0/24 приходит в NAP с AS_PATH 1.

Протокол BGP изымает номера частных AS, только если требуется передать информацию об их маршрутах каким-либо внешним узлам. Это означает, что изъятие номеров AS должно быть задано на маршрутизаторе RTC как элемент конфигурации соединения с соседним узлом RTE.

Еще раз обращаем ваше внимание на то, что частные AS должны быть подключены только к одному провайдеру. Если в списке атрибута AS_PATH встречаются номера действительных и частных AS, то протокол BGP расценивает его как неправильно сформированный и не изымает номера частных AS. В этом случае обновление маршрутов будет обрабатываться в обычном порядке. Номера частных AS изымаются только из списков AS_PATH, содержащих хотя бы один номер частной AS в диапазоне от 64512 до 65535.

Дополнительные сведения об архитектуре сетей с использованием частных AS вы можете получить в RFC 22702.

Атрибут AS_PATH и объединение маршрутов

Объединение маршрутов предполагает суммирование диапазона префиксов в один или несколько блоков CIDR с целью минимизации количества маршрутов в таблицах маршрутов. Однако информация AS_PATH, содержащаяся в маршрутной информации нескольких маршрутов, будет теряться при одновременном суммировании этих маршрутов. Это может привести к образованию петель маршрутизации, так как маршрут, проходящий через ту же самую AS, может быть воспринят ею как новый маршрут.

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

На рис. 6.21 система AS1 объявляет маршрут в сеть 192.213.1.0/24, a AS2 объявляет маршрут в сеть 192.213.2.0/24. Система AS3 объединяет оба маршрута в 192.213.0.0/16. Автономная система, которая объявляет объединенный маршрут, считает саму себя генератором маршрута, независимо от того, откуда поступили составляющие его маршруты. Когда AS3 объявляет объединенный маршрут 192.213.0.0/16, значение в AS_PATH будет 3. Это приведет к потерям маршрутной информации, так как генераторы маршрутов ASI и AS2 уже не будут присутствовать в списке номеров AS__PATH. Если другие AS каким-то образом объявят объединенный маршрут системам AS1 и AS2, они примут этот маршрут, что приведет к возникновению петли маршрутизации. "Зная" значение AS_SET, AS3 может объявлять объединенный маршрут 192.213.0.0/16, сохраняя при этом информацию о составляющих его компонентах. Значение параметра AS_SET {1 2} указывает на то, что объединенный маршрут сформирован из отдельных маршрутов, поступивших от соответствующих AS, без определенного порядка следования. Информация, заключенная в атрибуте AS_PATH, с учетом параметра AS_SET будет выглядеть как 3 {1 2}.

Глава 6. Настройка параметров BGP

161

Рис. 6.21. Влияние параметра AS_SET

Указание параметра AS_SET перед командой aggregate-address вызовет автоматическую генерацию набора AS, связанного с данным объединенным маршрутом.

Управление атрибутом AS_PATH

Довольно часто целесообразно модифицировать информацию, содержащуюся в атрибуте AS_PATH, для управления междоменной маршрутизацией. Ввиду того что в BGP отдается предпочтение более короткому маршруту, заданному в AS_PATH, операторы сети не могут отказаться от возможности вносить изменения в маршрутную информацию путем включения фиктивных записей в AS_PATH, которые увеличивают длину маршрута и влияют на траекторию движения трафика. В оборудовании Cisco имеется возможность задания номеров AS в начале списка атрибута AS_PATH пользователем, что позволяет удлинить маршрут. Ниже приведен пример, с помощью которого мы поясним, как использовать эту возможность.

См. в главе 11 раздел "Управление атрибутом AS_PATH"

На рис. 6.22 AS50 подключена к двум провайдерам — AS200 и AS100. При этом AS100 имеет непосредственное соединение с NAP, в то время как AS200 для того, чтобы достичь NAP, должна пройти через промежуточный узел AS300.

На рис. 6.22 показан частный случай передачи информации о префиксе 192.213.1.0/24 через различные AS в NAP. Когда префикс 192.213.1.0/24 поступает в NAP через AS300, она имеет AS_PATH 300 200 50. Если этот же префикс поступает в NAP через AS100, то значение атрибута AS_PATH будет 100 50, т.е. короче, чем маршрут через AS300. Так, исходящий из NAP поток "предпочтет" более короткий маршрут согласно AS_PATH, и трафик в сеть 192.213.1.0/24 будет направлен через AS100.

К сожалению, AS50 ведет себя совершенно противоположным образом и старается передать весь входящий трафик по более высокоскоростному каналу ТЗ на AS200. Для этого на AS50 в атрибут AS_PATH вставляются фиктивные записи о несуществующих номерах AS на маршруте, и затем эти сведения отправляются с сообщениями об обновлениях маршрутов на AS 100. На практике для формирования фиктивных записей используется повтор собственного номера AS, т.е. AS50 повторяет свой номер столько раз, сколько требуется для того, чтобы изменить баланс в пользу AS200 и представить маршрут через нее менее длинным, чем через AS 100.

Глава 6. Настройка параметров BGP

162

Рис. 6.22. Пример маршрутизации перед вводом фиктивных записей в AS_PATH

На рис. 6.23 показано, как AS50 вставляет два номера AS 50 50 в начало атрибута AS_PATH для префикса 192.213.1.0./24, который объявляется AS100. Когда префикс 192.213.1.0.0/24 поступает в NAP через AS100, значение AS_PATH будет 100 50 50 50, что длиннее, чем AS_PATH 300 200 50 через AS300. Таким образом, исходящий из NAP поток отдаст предпочтение более короткому маршруту, и трафик в сеть 192.213.1.0/24 будет проходить через AS300.

Рис. 6.23. Пример маршрутизации после вставки фиктивных записей в AS_PATH

На практике фиктивные номера всегда должны дублировать номер AS, анонсирующей маршрут, или маршрут, полученный от соседнего узла (в том случае, когда AS увеличивает длину маршрута для входящих обновлений). Добавление какого-либо другого номера AS вводит систему в заблуждение и может привести к образованию петель маршрутизации или "черных дыр". Обратите внимание на точку в рис. 6.23, где происходит вставка фиктивных номеров.

Фильтрация маршрутов и управление атрибутами

Концепция фильтрации маршрутов довольно проста. Спикер BGP может выбрать маршруты, которые следует посылать и принимать от других BGP-узлов. Фильтрация маршрутов широко используется при описании правил маршрутизации. Автономная система может идентифицировать входящий трафик, который она согласна принимать от соседних

Глава 6. Настройка параметров BGP

163

узлов, путем задания списка маршрутов, объявляемых своим соседним узлам. И наоборот, AS может управлять исходящим трафиком путем указания списка маршрутов, поступающих от соседних узлов, которые она согласна обслуживать.

См. в главе 11 раздел "Фильтрация маршрутов и управление атрибутами"

Фильтрация используется также на уровне протокола для того, чтобы ограничить "перетекание" обновлений маршрутов из одного протокола в другой. Ранее в этой главе мы обсуждали как возможность вложения BGP-маршрутов в IGP, так и IGP-маршрутов, а также статических маршрутов в BGP. Согласно терминологии Cisco, это называется преобразованием (redistributing) маршрутной информации между протоколами. В этой главе мы также обсудим опасные последствия взаимного преобразования маршрутов между протоколами. Фильтрация необходима для точного определения информации, поступающей от BGP в IGP, и наоборот.

Маршруты, которым разрешено проходить через фильтр, могут обладать видоизмененными атрибутами. Модифицирование атрибутов влияет на процесс принятия решения в протоколе BGP при определении наилучшего маршрута к заданному пункту назначения.

Входная и выходная фильтрация

Рис. 6.24. Пример входной и выходной фильтрации

Концептуально входная и выходная фильтрация может выполняться и на уровне отдельного узла, и на уровне протоколов. На рис. 6.24 приведен пример входной и выходной фильтрации.

С точки зрения обмена маршрутами между BGP-узлами, входная фильтрация указывает на то, что спикер BGP отсеивает маршрутную информацию, поступающую от других узлов, а при выходной фильтрации ограничения налагаются на маршрутную информацию, распространяемую самим спикером BGP другим узлам. Фильтрация выполняется одинаково, независимо от того, идет ли речь о внешних (EBGP) или о внутренних(1BGP) BGP-узлах.

На уровне протоколов входная фильтрация ограничивает поступление сообщений об обновлениях маршрутов, которые были преобразованы из одного протокола в другой. Выходная фильтрация делает обратное — она ограничивает обратное преобразование маршрутов в исходный протокол.

Глава 6. Настройка параметров BGP

164

Фильтрация и управление маршрутами

При фильтрации и управлении маршрутом иди набором маршрутов выполняется три основных действия.

1.Идентифицирование маршрутов.

2.Разрешение или запрещение работы с маршрутами.

3.Внесение изменений в атрибуты.

В оборудовании Cisco применяются списки разрешения доступа (access lists), списки префиксов (prefix lists) или списки разрешения доступа по заданному маршруту (as-path access lists) только для фильтрации. Также в оборудовании Cisco используется концепция карт маршрутов для фильтрации и для выполнения манипуляций с атрибутами. Карты маршрутов подробно обсуждаются в главе 11.

Идентификация маршрутов

Идентификация маршрутов — это установление критерия, по которому можно отличить один маршрут от другого. Подобный критерий может быть определен на основе префикса IP маршрута; автономной системы, сгенерировавшей маршрут; списка AS, через которые пролегает маршрут; значения атрибута маршрута и т.д. Список критериев включается в правила фильтрации, и маршрут сравнивается с первым критерием в списке. Если маршрут не соответствует первому критерию в списке, то он помечается как протиBGPечащий первому критерию в списке. Если маршрут соответствует критерию, он считается идентифицированным и не проверяется на соответствие другим критериям.

Если же маршрут при сравнении не соответствует ни одному из критериев, заданных

всписке, то он отвергается.

Вобщем случае идентификация маршрутов проводится на основе информации сетевого уровня о доступности сети (Network Layer Reachability Information — NLRI), атрибута AS_PATH или на основе обоих этих критериев. Каждый из этих методов идентификация более подробно описан в последующих разделах.

Идентификация маршрутов на основе NLRI

Маршрут BGP можно идентифицировать с помощью блока NLRI, который представляет собой префикс и маску (см. главу 4). Для выполнения фильтрации можно задавать отдельный префикс или диапазон префиксов. Если маршрут входит в диапазон разрешенных префиксов, то он будет идентифицирован.

См. в главе 11 раздел "Идентифицирование и фильтрация маршрутов на основе

NLRI"

На рис. 6.25 представлен критерий фильтрации 10.1.0.0 0.0.255.255, который действителен для диапазона маршрутов, идентифицированных префиксом 10.1.0.0 и инверсной маской 0.0.255.255. Нули в маске указывают на соответствие маршрута, в то время как единицы обозначают бит, который не анализируется при фильтрации. Таким образом, диапазон 10.1.0.0 0.0.255.255 будет идентифицировать все маршруты от 10.1.Х.Х. Вместе с префиксами, приведенными на рис. 6.25, фильтр будет идентифицировать маршруты 10.1.1.0/24, 10.1.2.0/24 и 10.1.2.2/30 и отвергать маршруты 11.2.0.0/16 и 12.1.1.0/24. Фильтрация, основанная на префиксах, более детально будет рассмотрена в последующих главах.

Глава 6. Настройка параметров BGP

165

Рис. 6.25. Пример критерия фильтрации на основе NLRI

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

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

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

Идентификация маршрутов на основе атрибута AS_PATH

Идентификация маршрутов на основе информации, заключенной в атрибуте AS_PATH, немного сложнее, чем идентификация по NLRI. Как вам уже известно, атрибут AS_PATH представляет собой список номеров AS, через которые проходит маршрут на пути

кзаданной BGP-системе. Сам по себе список — это строка символов из следующего набора:

Цифры от 0 до 9

Пробелы

Левая фигурная скобка {

Правая фигурная скобка }

Левая скобка (

Правая скобка )

Начало ввода строки

Конец ввода строки

Точка .

Например, список атрибута AS_PATH 10 2 в действительности состоит из символа начала ввода строки, за которым следуют символы 1 и 0, пробел и символ 2. И завершает строку символ конца ввода строки.

Ш См. в главе 11 на с. 288 раздел "Идентифицирование и фильтрация маршрутов на основе атрибута AS_PATH"

Идентификация маршрутов по списку AS_PATH заключается в его сравнении с

нормальным выражением (regular expression). Нормальное выражение представляет собой комбинации символов, представленных формулой вида Л200 100$. Подобное нормальное

Глава 6. Настройка параметров BGP

166

выражение представляет собой список, который начинается с 200, далее следует пробел и список заканчивается значением 100. Символы Л и $ обозначают, соответственно, начало и конец ввода строки.

Примечание

Нормальное выражение может быть сформировано как с использованием одиночных символов, так и с использованием групп символов.

Разрешение и запрещение маршрутов

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

Управление атрибутами

Если маршрут разрешен, то его атрибуты можно изменять в порядке влияния на процесс принятия решения маршрутизатором. В предыдущих разделах вы уже видели, каким образом такие атрибуты, как Local Preference и MED, могут быть дополнены или изменять свою длину для предпочтения одного маршрута другому. Как вы увидите позже, управление атрибутами является мощным рычагом, с помощью которого можно формировать правила маршрутизации, распределять нагрузку и влиять на симметрию маршрутов.

На рис. 6.26 представлена схема применения различных критериев к набору маршрутов с целью их фильтрации и модификации их атрибутов.

Заметим, что в каждом случае могут применяться один или несколько критериев. Маршрут может проверяться по префиксу и по атрибуту AS_PATH. Например, для того, чтобы была разрешена работа по нему, он должен соответствовать всем заданным критериям.

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

Глава 6. Настройка параметров BGP

167

Рис. 6.26. Пример фильтрации маршрутов и управления их атрибутами

Односимвольные выражения

В односимвольных выражениях маршрутная информация сравнивается с одним символом. Нормальное односимвольное выражение вида 3 осуществляет сравнение с символом 3 в строке ввода. Имеется возможность задания диапазона одиночных символов, с которыми должно проводиться сравнение. Диапазоны таких символов заключаются в квадратные скобки ([]). Порядок расположения символов внутри диапазона не имеет значения. Например, нормальное выражение, состоящее из диапазона символов [efghEFGH], будет проверяться на совпадение с любым символом из заданного диапазона. Так, при задании строк, содержащих "hello" и "there", выясняется, что обе они соответствуют нормальному выражению, так как содержат символ е.

Диапазоны символов ограничиваются конечной точкой диапазона. Например, можно

Глава 6. Настройка параметров BGP

168

задавать диапазоны [a-zl и [0-9], которые охватывают все маленькие буквы от а до z и все цифры от 0 до 9, соответственно.

Задавая знак вставки (Л) в начале диапазона, можно отменять или отрицать соответствие той или иной записи правил фильтрации. Так, например, диапазон [^a-dA-D] будет проверяться на соответствие любым символам, кроме а, Ь, с, d, А, В, С и D. Некоторые символы, такие как знак доллара $ и знак подчеркивания _, имеют специальное назначение (табл. 6.4).

Чтобы специальные символы воспринимались как часть вводимой строки, ставьте перед ними обратный слеш (\). Например, диапазон [abc\$] будет означать, что анализу подвергаются строки, содержащие символы а, Ь, с и $. В табл. 6.4 представлены специальные символы, применяемые в нормальных выражениях.

Таблица 6.4. Cneциальные символы для нормальных выражений

Название символа

Символ

Специальное значение

Точка

.

Соответствует всем символам, включая пробел

Звездочка

*

Соответствует 0

и более выражений

Знак плюс

+

Соответствует 1

или более выражений

Знак вопроса

?

Соответствует 0

или более встречающихся выражений

Знак вставки

^

Соответствует началу строки. Также используется для

 

 

инвертирования выражения, если используется внутри

 

 

диапазона символов — например [^диапазон]

Знак доллара

$

Соответствует концу строки

Подчеркивание

_

Соответствует точке (.), правой ({) и левой (})

 

 

фигурным скобкам, а также правой и левой обычным

 

 

скобкам, символам начала и конца строки или пробелу

Квадратные скобки

[диапазон]

Определяет диапазон символов в выражении

Дефис

-

Разделяет конечные точки диапазона

Многосимвольные выражения

Многосимвольные нормальные выражения представляют собой упорядоченную последовательность односимвольных выражений. Выражение может быть комбинацией букв, цифр, других символов и символов специального назначения. Ниже приведен пример нормального многосимвольного выражения: 100 1[0-9]. Это выражение анализируется на соответствие строке, в которой имеется последовательность100, затем пробел, затем 1 и любая цифра от 0 до 9. Таким образом, нормальному выражению будут соответствовать любые из строк: 123 100 10 11, 100 19 или 19 100 11 200 и т. д.

Создание комплексных нормальных выражений

Для создания комплексных нормальных выражений широко используются специальные символы, представленные в табл. 6.4. Знаки вставки (^) и доллара ($) используются для обозначения начала и конца строки. Другие символы, такие как звездочка (*), знак плюс (+) и знак вопроса (?), позволяют повторять определенные символы внутри нормального выражения.

Вприведенном примере отражается соответствие любых сочетаний буквы а, включая ее отсутствие:

а* эквивалентно любому из выражений вида: (пусто), а, аа. ааа, аааа и т.д.

Вследующем примере показано, что в строке должна присутствовать хотя бы одна

буква а:

а+ эквивалентно выражениям а, аа, ааа, аааа и т.д.

Вэтом примере представлен список, который может содержать, а может и не содержать букву а:

ba?b эквивалентно выражениям bb или bab.

Для повторения записи в многосимвольном выражении оно заключается в круглые скобки. Например, выражение (ab)+ эквивалентно ab или abab.

Глава 6. Настройка параметров BGP

169

Символ подчеркивания (_) соответствует символам начала (Л) и конца ($) строки, символам скобок, пробелу, квадратным скобкам, точке или самому себе. Символ точки (.) соответствует одиночному символу, включая простой пробел. На рис. 6.27, в табл. 6.5 и 6.6 показано, как символы могут сопрягаться друг с другом при создании нормального выражения.

Давайте рассмотрим топологию сети, представленную на рис. 6.27. Автономные системы AS400, AS300, AS200, AS100 и AS50 генерируют маршруты в сети А, В, С, D и Е, соответственно. Маршрутизатор RTA в AS50 получает сведения обо всех маршрутах в эти сети от соседних систем — AS 100 и AS300. После инициализации процесса принятия решения в BGP маршрутизатор RTA подбирает наилучший маршрут к этим сетям согласно табл. 6.5.

Рис. 6.27. Пример топологии сети для создания комплексного нормального выражения

Таблица 6.5. Выбор наилучшего BGP-маршрута для маршрутизатора RTA

Сеть

Значение AS_PATH

Сеть А

300, 400

Сеть В

300

Сеть С

100, 200

Сеть D

100

Сеть Е

нет

В табл. 6.6 представлены нормальные выражения, которые можно было бы использовать при фильтрации маршрутов, объявляемых маршрутизатором RTA для NAP.

Таблица 6.6. Выражения и результаты их воздействия

 

 

Маршруты, объявляемые в

Выражение

Маршрутная

Результат

 

 

 

NAP маршрутизатором RTA

 

информация

воздействия

 

 

 

 

 

 

 

 

 

 

Только локальные маршруты

^$

Нет

Сеть Е

 

 

 

Все маршруты

.*

Все маршруты

Сеть А, Сеть В,

 

 

 

 

 

 

Сеть С, Сеть D,

 

 

 

 

 

 

Сеть Е

 

 

 

Маршруты, сгенерированные

^300$^100$

300

Сеть В, Сеть D

 

 

 

непосредственно клиентами

 

100

 

 

 

 

Маршруты из сетей клиентов и

^300_^100_

300 400 300

Сеть А, Сеть В,

 

 

 

их клиентов

 

100 200 100

Сеть С Сеть D

 

 

 

Маршруты, сгенерированные

_200$

100 200

Сеть С

 

 

 

AS200

 

 

 

 

 

 

Маршруты, прошедшие через

_100_

100 200 100

Сеть С, Сеть D

 

 

 

AS100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 6. Настройка параметров BGP

170