Маршрутизатор обычно закрепляется за несколькими сетями. Когда он получает пакет, он должен решить две задачи:
  1. к какой сети он должен его передать;
  2. по какому пути.

Последнее решение основано на выборе оптимального пути. Какой доступный путь является оптимальным путем? Это обычно определяется метрикой. Метрика – это условная стоимость передачи по сети. Полное измерение конкретного маршрута равно сумме метрик сетей, которые включают в себя маршрут . Маршрутизатор выбирает маршрут с наименьшей метрикой. Метрика назначается для интерфейса сети в зависимости от типа протокола. Некоторые простые протоколы, подобно протоколу маршрутной информации ( RIP – Routing Information Protocol ), рассматривают все сети как одинаковые. Тогда стоимость прохождения через каждую сеть - одна и та же, и для определения метрики подсчитываются участки. Так, если пакет, чтобы достигнуть конечного пункта, проходит через 10 сетей, полная стоимость составляет 10 участков.

Другие протоколы, такие как "первоочередное открытие наикратчайших путей" ( OSPF - Open Shortest Path First ), позволяют администратору назначить стоимость для передачи через сеть , основанную на типе требуемого обслуживания. Маршрут через сеть может иметь различную стоимость (метрику). Например, если для типа сервиса желательна максимальная производительность , спутниковый канал имеет меньшую метрику, чем оптическая линия. С другой стороны, если типу сервера желательна минимальная задержка, оптическая линия имеет меньшую метрику, чем спутниковый канал. OSPF позволяет каждому маршрутизатору иметь таблицу последовательностей маршрутов, основанную на требуемом типе сервиса.

Другие протоколы определяют метрику различно. В протоколе пограничной маршрутизации ( BGP - Border Gateway Protocol ) критерий - это политика, которую может устанавливать администратор . Политика - это принцип, по которому определяется путь .

В любой метрике маршрутизатор должен иметь таблицы маршрутизации, чтобы консультироваться при дальнейшей передаче пакета. Таблица маршрутизации задает оптимальный путь для пакета. Таблица может быть либо статическая, либо динамическая . Статическая таблица - одна из тех, которые часто не меняются. Динамическая таблица - одна из тех, которая обновляется автоматически, когда имеются изменения где-либо в Интернете. Сегодня Интернет нуждается в динамических таблицах. Таблицы нужно обновлять по мере появления изменений в Интернете. Например, их нужно обновить, когда маршрут вышел из строя, или они должны быть обновлены всякий раз, когда создается лучший маршрут .

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

В этой лекции мы поговорим об однонаправленных протоколах маршрутизации. Многонаправленные протоколы маршрутизации мы обсудим в следующей лекции.

Внутренняя и внешняя маршрутизация

Сегодня Интернет - громадная сеть , так что один протокол маршрутизации не может обрабатывать задачу обновления таблиц всех маршрутизаторов. По этой причине Интернет разделяется на автономные системы. Автономная система (Autonomous System – AS) - группа сетей и маршрутизаторов под управлением одного администратора. Маршрутизация внутри автономной системы отнесена к внутренней маршрутизации . Маршрутизация между автономными системами отнесена к внешней маршрутизации . Каждая автономная система может выбрать протокол внутренней маршрутизации для того, чтобы обрабатывать маршрутизацию внутри автономной системы. Однако для обработки маршрутизации между автономными системами выбирается только один протокол маршрутизации .

Разработано несколько внутренних и внешних протоколов. В этой лекции мы коснемся только наиболее популярных из них - внутренних протоколов RIP и OSPF и одного внешнего протокола BGP . RIP и OSPF используются для обновления таблиц маршрутизации внутри автономной системы. Протокол BGP применяется в обновлении таблиц маршрутизации для маршрутизаторов, которые объединяют вместе автономные системы.

Протокол маршрутной информации (RIP)

Протокол маршрутной информации ( RIP – Routing Information Protocol ) - внутренний протокол маршрутизации , используется внутри автономной системы. Это очень простой протокол, основанный на применении дистанционного вектора маршрутизации. В этом разделе сначала рассмотрим принцип дистанционного вектора маршрутизации, так как он применяется в RIP , а затем обсудим сам протокол RIP .

Вектор расстояния маршрутизации

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

  1. Распределение информации о входе в автономную систему . Каждый маршрутизатор распределяет информацию о входе соседним автономным системам. Вначале эта информация может быть не подробной. Однако объем и качество информации не играют роли. Маршрутизатор посылает, во всяком случае, все что имеет.
  2. Распределение только соседям . Каждый маршрутизатор посылает свою информацию только к соседям. Он посылает информацию, которую получает через все интерфейсы.
  3. Распределение через регулярные интервалы . Каждый маршрутизатор посылает свою информацию соседней автономной системе через фиксированные интервалы, например, каждые 30 с.

BGP – это протокол маршрутизации внешнего шлюза, использующийся для проведения маршрутизации между маршрутными доменами (или автономными системами). BGP используются всеми поставщиками услуг Интернет, а также в ядрах очень крупных сетей.

BGP – очень устойчивый и хорошо масштабируемый протокол маршрутизации. Протокол BGP проявляет исключительную стабильность в маршрутизации между автономными системами (AS) (даже при огромных таблицах маршрутизации) и предоставляет сетевым администраторам большую свободу действий и гибкость в создании правил маршрутизации.

Принцип работы дистанционно–векторного протокола маршрутизации:

Протокол BGP является протоколом вектора маршрута т.е. применяет информацию о векторе (направлении) и о пути к пункту назначения.

Пример работы дистанционно–векторного протокола маршрутизации

Предположим, что маршрутизатор А сгенерировал маршрут к сети 10.1.10/2А и объявил его маршрутизатору В. В информации о том, как достичь сети назначения 10.1.10/2А, маршрутизатор А указывает, что он является первым маршрутизатором в пути. Маршрутизатор В, получив этот маршрут, добавляет себя в путь и отправляет его маршрутизатору С, который, в свою очередь, добавляет себя в путь к сети 10.1.10/2А и отправляет маршрут маршрутизатору D. Когда маршрутизатор D получает маршрут к пункту назначения 10.1.10/2А, он обнаруживает, что путь к нему, проходит через маршрутизаторы С, В и А. Маршрутизатор D добавляет себя в путь и отсылает полученный маршрут обратно маршрутизатору А. Получив объявление маршрута, маршрутизатор А отвергает его, т. к. находит в соответствующем пути себя.

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

Протокол BGP не предъявляет никаких требований к топологии сети.

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

Выбор пути .Протокол BGP не использует метрики для определения петель в пути, они нужны ему для управления сетевыми правилами.

Протокол BGP объявляет всем своим соседям только один оптимальный маршрут. Ниже приведен список метрик, упорядоченный по возрастанию значимости:

· Административный вес;

· Локальное предпочтение;

· Локально созданные маршруты;

· Кратчайший AS-путь;

· Наиболее низкий источник;

· Метрика МЕD (Мultiple Ехit Discriminator);

· Предпочтительные внешние пути;

· Путь через ближайшего соседа, если включена синхронизация;

· Путь через соседа с наименьшим идентификатором маршрутизатора;

Маршрут с кратчайшим AS – путем выбирается тогда, когда совпадают все более значимые факторы.

Базовая настройка:

Router(config)# router bgp
remote-as
ID маршрутизатора в BGP берется из следующих источников, в порядке предпочтения:
  1. Команда bgp router-id
  2. Наибольший IP петлевого (loopback) интерфейса
  3. Наибольший IP физического интерфейса
В BGP по-умолчанию маршруты суммируются до границ своего класса. Как и в других протоколах, здесь это отключается той же командой no auto-summary .

Маршруты, объявляемые вручную, указываются следующей командой:

Включение редистрибуции:
Router(config-router)# redistribute
Маршруты, добавленные вручную (командой network ) помечаются как маршруты, происходящие из IGP ("i"), а маршруты, полученные при редистрибуции, помечаются как маршруты с неизвестным происхождением ("?").

BGP-маршрутизатор может отдавать своим соседям маршрут по-умолчанию:

Router(config-router)# neighbor
default-originate
Требование синхронизации маршрутов можно отключить, позволив тем самым BGP импортировать в свою таблицу внутренние маршруты, не известные IGP:
Router(config-router)# no synchronization
Атрибут "next hop" в маршрутах, рассылаемых iBGP-пирам, можно подменять на адрес объявляющего эти маршруты роутера:
Router(config-router)# neighbor
next-hop-self
Регулировка таймеров (в секундах):
Router(config-router)# bgp timers
Исходный адрес, от имени которого устанавливаются связи с соседями, можно указывать вручную (особенно полезно, если исходный адрес висит на петлевом интерфейсе):
Router(config-router)# neighbor
update-source
Для увеличения TTL в eBGP, которое по-умолчанию равно 1, используется "eBGP multihop":
Router(config-router)# neighbor
ebgp-multihop
"eBGP multihop" обязателен, если используются петлевые интерфейсы.


Агрегация маршрутов

Статические маршруты:

Router(config)# ip route 192.168.0.0 255.255.0.0 Null0
...
Router(config-router)# network 192.168.0.0 mask 255.255.0.0
Команда "aggregate-address":
Router(config-router)# aggregate-address 192.168.0.0 255.255.0.0
Если используется ключевое слово summary-only , объявляется только агрегированный маршрут. Если же это ключевое слово не используется, то наряду с агрегированным маршрутом рассылаются и more-specific (морспецифики, более конкретные маршруты).

С другой стороны, отдельные морспецифики можно фильтровать при помощи "подавления" (suppress map) :

Router(config-router)# aggregate-address 192.168.0.0 255.255.0.0 suppress-map
С целью изменения атрибутов агрегированному адресу можно назначить attribute map (например, для установки origin - происхождения маршрута):
Router(config-router)# aggregate-address 192.168.0.0 255.255.0.0 attribute-map
По-умолчанию в агрегированный маршрут не включается "AS Set". Для включения этого атрибута:
Router(config-router)# aggregate-address 192.168.0.0 255.255.0.0 as-set
При включении "AS Set" агрегированный маршрут наследует все атрибуты включенных в него маршрутов. Для наследования атрибутов только от избранных маршрутов используется "advertise map ":
Router(config-router)# aggregate-address 192.168.0.0 255.255.0.0 as-set advertise-map
Управление BGP-соединениями

Для удобства каждому соседу можно назначить описание:

Router(config-router)# neighbor 192.168.123.45 description R7 in Moscow
Соединение с отдельным соседом можно спрятать под пароль (хэш MD5 включается в BGP-пакеты):
Router(config-router)# neighbor 192.168.123.45 password FooBar
Для каждого соседа можно настроить интервал рассылки (advertisement interval) , регулируя тем самым время ожидания перед отправкой объявлений (0-600 секунд):
Router(config-router)# neighbor 192.168.123.45 advertisement-interval
Переговоры между соседями об использовании версии BGP можно отключить, указав версию вручную:
Router(config-router)# neighbor 192.168.123.45 version
Можно настроить маршрутизатор таким образом, чтобы в процессе выбора наилучшего маршрута не учитывалась длина "AS Path":
Router(config-router)# bgp bestpath as-path ignore
Количество префиксов, получаемых от соседа, можно ограничить:
Router(config-router)# neighbor 192.168.123.45 maximum-prefix []
Здесь порог предупреждения (warning threshold) определяет процент от максимального количества префиксов, при превышении которого генерируется предупреждение. Ключевое слово warning-only позволяет соединению продолжать работу, даже если пир превысил максимальный порог префиксов.

Для временного отключения соседа без удаления его конфигурации используется команда neighbor shutdown .

Правила маршрутизации

Для фильтрации принимаемых или рассылаемых маршрутов применяются списки дистрибуции (distribute list):

Router(config-router)# neighbor distribute-list {in | out}
Для фильтрации маршрутов, основываясь на их "AS Path", применяются списки фильтрации (filter list):
Router(config)# ip as-path access-list 1 permit
...
Router(config-router)# neighbor filter-list {in | out}
Вместо списков дистрибуции или фильтрации можно использовать роутмапы (route map), которые позволяют производить более гибкую настройку и, в добавок, позволяют менять атрибуты. Применение route-map к соседу:
Router(config-router)# neighbor route-map {in | out}
Административный вес влияет на предпочтения среди маршрутов, полученных от BGP-пиров. Маршрутам от отдельного соседа этот вес (0-65535) можно назначить локально:
Router(config-router)# neighbor weight
По-умолчанию маршрутам, имеющим локальное происхождение, назначается вес 32768, в то время как вес всех остальных равен 0. Вес можно назначать и избранным маршрутам, применяя роутмапы или используя ключевое слово weight после параметра filter-list :
Router(config-router)# neighbor filter-list weight
Административная дистанция отличается от веса тем, что влияет на предпочтения среди маршрутов, полученных от разных протоколов маршрутизации. Чем меньше дистанция, тем предпочтительней. Административная дистанция внешних BGP-маршрутов равна 20. Дистанция внутренних и локальных (генерируемых данным роутером при помощи команды network ) BGP-маршрутов равна 200.

Бэкдор (backdoor link, черный ход) - приватное соединение между AS, которому должно отдаваться предпочтение перед eBGP-маршрутами. Для чего административная дистанция внешнего маршрута должна быть искусственно завышена включением в BGP-процесс необходимой сети с ключевым словом backdoor :

Router(config-router)# network backdoor
Маршрут к указанной сети будет считаться локальным с административной дистанцией 200, из-за чего предпочтение будет отдаваться маршрутам, полученным из IGP, который работает в этом приватном линке, и трафик вместо внешнего маршрута потечет по бэкдору.

Кроме того, iBGP-пиры обмениваются друг с другом локальными предпочтениями (local preference, 32-битная величина, по-умолчанию равная 100). Это значение можно установить командой ip default local-preference , либо set local-preference в роутмапе. В отличие от административного веса, действие локалпрефов распространяется за пределы локального роутера.

Влияние на путь, которым трафик будет заходить в вашу AS из соседней, при наличии нескольких точек входа, оказывает MED (или "метрика"). Для установки MED BGP-маршрута равным значению метрики такого же маршрута из IGP, в роутмапе можно воспользоваться командой set metric-type internal . Для принудительного сравнения MED нескольких маршрутов к одному адресату, даже если они происходят из разных AS, в BGP-процессе применяется команда bgp always-compare-med .

MED влияет только на поведение соседней AS. Повлиять аналогичным образом на поведение удаленных AS можно при помощи искусственного увеличения "AS Path" маршрутов. Для этого в роутмапе используется команда set as-path prepend . Обычно локальная AS "препендится" один или несколько раз. Например, для маршрутов AS 123:

route-map PREPEND_AS permit 10
match ip address
set as-path prepend 123 123 123
Для сохранения BGP-информации в процессе редистрибуции в/из IGP используется тегирование маршрутов (route tagging). По-умолчанию маршруты, передаваемые из BGP в IGP, тегируются собственным "AS Path". В тег можно добавить ещё происхождение маршрута командой set automatic-tag в роутмапе. Для автоматической установки атрибута "AS Path" из тега при редистрибуции маршрута из IGP обратно в BGP применяется команда set as-path tag в роутмапе. Также теги маршрутов могут применяться для хранения BGP-коммьюнити.

Включение подавления маршрутов:

Router(config-router)# bgp dampening [ ]

Посмотреть подавленные маршруты можно командой show ip bgp dampened-paths . Команда show ip bgp flap-statistics позволяет просмотреть все текущие подавленные маршруты вместе с маршрутами, которые вообще когда-либо подавлялись. Команда clear ip bgp dampening возвращает подавленные маршруты обратно в обслуживание. Командой clear ip bgp flap-statistics стирается вся история "мигания" маршрутов.


BGP в больших сетях

Пример организации пиринговой группы:

Router(config-router)# neighbor BRANCHES peer-group
Router(config-router)# neighbor BRANCHES ebgp-multihop 2
Router(config-router)# neighbor BRANCHES update-source Loopback 0
Router(config-router)# neighbor 10.1.0.84 peer-group BRANCHES
Router(config-router)# neighbor 10.1.0.84 remote-as 123
Router(config)# ip community-list 101 {permit | deny}

Критерий сравнения по коммьюнити-листу в роутмапе можно включать командой match community . Коммьюнити можно добавлять к маршруту без изменения уже присвоенных ему коммьюнити при помощи ключевого слова additive команды set community . Определенные коммьюнити, совпадающие с коммьюнити-листом, можно удалять командой set comm-list delete .

Номера приватных AS

Частные ASN находятся в промежутке с 64512 по 65535. В настройках соседа командой remove-private-as

На роут-рефлекторе должны быть указаны внутренние пиры, которым он должен отражать маршруты:

Router(config-router)# neighbor route-reflector-client

Роут-рефлектор добавляет к маршрутам "Originator ID", указывающий на происхождение маршрута, и "Cluster List", определяющий рефлект-кластер во избежание появления маршрутных петель. По-умолчанию роут-рефлектор добавляет свой ID в список кластера. Но ID кластера можно указать вручную командой bgp cluster-id . Это необходимо, если в кластере несколько рефлекторов.

Если клиенты рефлектора полносвязны между собой, для отключения отражения маршрутов между клиентами используется команда no bgp client-to-client reflection . Маршруты извне кластера будут продолжать отражаться обычным образом.

1. Использование BGP для п одключения к провайдеру



Интернет - это набор автономных систем, которые соединены между собой для коммуникации. BGP обеспечивает маршрутизацию между этими автономными системами.
Предприятие, кjторое хочет подключиться к интернету, делает это через одного из провайдеров. Если предприятие имеет только одно подключение к интернету, возможно, ему не понадобится использовать BGP, вместо него можно использовать маршруты по умолчанию. Однако, если имеется несколько подключений к одному или нескольким провайдерам, BGP будет предпочтительным для использования, т.к. он позволяет манипулировать атрибутами маршрутов, чтобы был выбран оптимальный путь.
Чтобы понять BGP, надо понять, чем он отличается от других протоколов маршрутизации. Один путь, это разделить протоколы на внешние и внутренние протоколы маршрутизации, такие как:
- IGP (Interior gateway protocol), внутренний протокол маршрутизации - это протокол, который обменивается маршрутной информацией внутри автономной системы Примеры таких протоколов - RIP, OSPF, EIGRP.

EGP (Exterior gateway protocol), внешний протокол маршрутизации - протокол, который обменивается маршрутной информацией между разными автономными системами. BGP - пример внешнего протокола. BGP является внутридоменным протоколом маршрутизации (IDRP), также известным как EGP. Последней версией протокола является BGP версии 4, который описан в RFC 4271. Как сказано в RFC, классическое описание автономной системы - набор маршрутов под одним техническим администрированием, который маршрутизирует пакеты внутри автономной системы с помощью внутренних протоколов маршрутизации, а также с помощью внешних протоколов маршрутизации определяет, как маршрутизируются пакеты к другим автономным системам.

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

Когда BGP работает между маршрутизаторами в разных автономных системах, он называется внешним BGP (EBGP). Когда BGP работает между маршрутизаторами внутри одной автономной системы, он называется внутренним BGP (IBGP). BGP определяет путь для пакетов между автономными системами. Важно понимать, как работает BGP для избежания создания проблем для автономной системы в результате работы BGP.


2. Варианты использования BGP для нескольких подключений к провайдеру

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

Резервирование несколькими подключениями

Нет привязки к политике маршрутизации одного провайдера

Наличие многих путей к одним и тем же сетям для улучшения политики управления маршрутами

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

Если организация решит, что будет иметь несколько подключений с использованием BGP, существует три пути, как этого достигнуть:

Каждый провайдер пропускает только один маршрут по умолчанию к автономной системе. Этот маршрут указывает на внутренние маршрутизаторы

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

Каждый провайдер пропускает все маршруты в автономную систему. На всех внутренних маршрутизаторах по пути транзита работает BGP и пропускает маршруты между маршрутизаторами.

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

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

Региональные провайдеры, которые имеют несколько подключений к национальным или международным провайдерам, обычно используют этот вариант. Региональные провайдеры не используют BGP для управления маршрутами, однако провайдерам необходима возможность добавления новых абонентов, а также сетей абонентов. Если региональный провайдер не использует BGP, каждый раз, когда региональный провайдер добавляет новый набор сетей, абонентам необходимо ждать, пока национальные провайдеры добавят новый набор сетей в свой процесс BGP и разместят статические маршруты, указывающие на региональных провайдеров. При работающем внешнем BGP у региональных провайдеров совместно с национальными и международными, региональному провайдеру достаточно будет добавить новые сети абонентов в свой процесс BGP. Эти новые сети автоматически проанонсируются через интернет с минимальной задержкой.

Абоненты, которые выберут получение только маршрутов по умолчанию от всех провайдеров, должны понимать следующие ограничения этого варианта:

Управление маршрутами не может быть применено, так как от каждого провайдера принимается только один маршрут

Управление пропускной способностью очень сложное и может быть применено только манипулированием метрики маршрута по умолчанию внутреннего протокола маршрутизации

Перенос части трафика из одной точки выхода в другую очень сложен, так как все сети назначения используют одинаковый маршрут по умолчанию для выбора пути


Как видно на рисунке, автономные системы AS 65020 и AS 65030 отправляют маршруты по умолчанию в AS 65010, сеть абонента А. Из-за метрики внутреннего протокола маршрутизации сети абонента А, а также из-за настройки маршрутизаторов R1 и R2, граничный маршрутизатор провайдера PE1 выбран как маршрут по умолчанию для достижения любой внешней сети за пределами автономной системы абонента А.

Эта процедура может привести к неоптимальной маршрутизации. Например, при задаче отправить пакет в сеть 172.17.0.0, пакет будет сначала отправлен провайдеру ISP1 на маршрутизатор РЕ1, так как маршрутизатор РЕ1 является предпочтительным путем для абонента А. А затем уже провайдер ISP1 отправит пакет в сеть назначения провайдеру ISP2.


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

Предприятие работает с провайдером по EBGP и получает частичную таблицу маршрутизации о маршрутах к сетям других абонентов этого провайдера. Предприятие также получает маршруты от любых других автономных систем.

Основным провайдерам присваивается от 2000 до 10000 бесклассовых междоменных маршрутизируемых блоков IP адресов от IANA, которые провайдеры передают в пользование своим абонентам. Если провайдер пропустит эту информацию абоненту, который хочет получать только частичную BGP таблицу маршрутизации, абонент перераспределит эти маршруты во внутренний протокол маршрутизации. Внутренние маршрутизаторы абонента (на которых не работает BGP) могут получить эту информацию через перераспределение. Маршрутизаторы могут взять ближайшую точку выхода, основываясь на лучшей метрике специфической сети, вместо того, чтобы выбрать точку выхода, основываясь на маршруте по умолчанию.

Получение частичной BGP таблицы от каждого провайдера более выгодно, так как выбор пути будет более точным, чем при использовании маршрута по умолчанию.

На рисунке провайдеры в AS 65020 и AS 65030 отправляют маршруты по умолчанию и маршруты к своим абонентам абоненту А (AS 65010).

Путем использования внутреннего BGP между внутренними маршрутизаторами R1 и R2 внутри AS 65010, AS 65010 может выбрать оптимальный путь к сетям провайдеров ISP1 и ISP2. Если сеть абонента А отправляет трафик к неизвестной сети, будет использоваться один из двух маршрутов по умолчанию. Снова таки это может привести к неоптимальной маршрутизации, как показано на рисунке. Неизвестный маршрут к другой автономной системе не показан на рисунке, так как эти маршруты не были проанонсированы в AS 65010 провайдерами ISP1 и ISP2. Метрика внутреннего протокола маршрутизации будет использована для выбора маршрута по умолчанию за пределы автономной системы абонента А.


При третьем варианте подключения к нескольким провайдерам все провайдеры пропускают все маршруты в автономную систему, и внутренний BGP работает по крайней мере на всем пути транзита к автономной системе. Этот вариант позволяет внутренним маршрутизаторам автономной системы выбирать маршрут через лучшего провайдера для каждого маршрута.

Эта конфигурация требует много ресурсов внутри автономной системы, т.к. она должна обрабатывать все внешние маршруты.

Автономная система отправляет все свои маршруты провайдерам, которые обрабатывают маршруты и отправляют эти маршруты другим автономным системам.

На рисунке AS 65020 и AS 65030 отправляют все маршруты в AS 65010. Провайдер, имеющий маршрут к специфической внешней сети из AS 65010, определяется с помощью BGP.

Маршрутизаторы в AS 65010 могут быть настроены для влияния на маршруты к определенным сетям. Например, R1 и R2 могут влиять на выбор маршрута для исходящего трафика из AS 65010.


3. BGP маршрутизация между автономными системами

Автономная система - это набор сетей под одним техническим администрированием. Внутренние протоколы маршрутизации работают внутри автономных систем, а BGP используется для маршрутизации между автономными системами в интернете.

IANA - организация, ответственная за присвоение номеров автономным системам. Конкретно, ARIN (Американский регистратор номеров интерната) отвечает за присвоение номеров для Америки, Карибов и Африки. RIPENIC (Европейский исследовательский сетевой информационный центр IP) присваивает номера автономным системам в Европе. А APNIC (Азиатско-Тихоокеанский сетевой информационный центр) - за присвоение номеров автономным системам в Азиатско-Тихоокеанском регионе.

Номера автономных систем - это 16-битный номер от 1 до 65535. RFC 1930 предоставляет руководство по использованию номеров автономных систем. Диапазон номеров автономных систем от 64512 до 65535 зарезервирован для частного использования, наподобие частных IP адресов.


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

BGP - то преемник EGP, который был разработан для изоляции сетей одна от другой при росте интернета.

Есть много RFC, относящихся к BGP4, текущей версии BGP. Эти RFC включают 1772, 1773, 1774, 1930, 1966, 1997, 1998, 2042, 2385, 2439, 2545, 2547, 2796, 2858, 2918, 3065, 3107, 3392, 4223 и 4271.

BGP4 имеет много улучшений по сравнению с более ранними протоколами. Интернет широко использует BGP для соединения провайдеров и подключения предприятий к провайдерам.

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

Когда используется бесклассовая маршрутизация на маршрутизаторе ядра основного провайдера, построенная таблица маршрутизации состоит в основном из BGP маршрутов и имеет более 175000 блоков бесклассовых сетей. Если не использовать бесклассовую маршрутизацию, таблица маршрутизации может содержать более 2 000 000 записей. Использование BGP4 предотвращает таблицу маршрутизации интернета становиться слишком большой для соединения миллионов пользователей.

3. Сравнение BGP с внутренними протоколами маршрутизации

BGP работает не так, как внутренние протоколы маршрутизации. Внутренние протоколы маршрутизации ищут самый быстрый путь из одной точки корпоративной сети в другую, основываясь на определенной метрике. RIP использует число переприемов устройств третьего уровня на пути к сети назначения. OSPF и EIGRP boen лучшую доступную скорость по параметру bandwidth на интерфейсе/ Все внутренние протоколы вычисляют стоимость пути.
BGP является внешним протоколом и не использует скорость для определения лучшего пути. Вместо этого BGP является протоколом, основанным на политиках, который позволяет автономным системам управлять трафиком с использованием атрибутов BGP путей. BGP позволяет провайдерам использовать всю свою пропускную способность путем манипулирования этими атрибутами пути.

4. Функциональность вектора пути

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

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

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

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


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

BGP указывает, что BGP маршрутизатор может передавать соседней автономной системе только те маршруты, которые использует сам. Это правило отражает правило маршрутизации «шаг за шагом», которое обычно используется в интернете.

Правило маршрутизации «шаг за шагом» не поддерживает все возможные политики. Например, BGP не разрешает одной автономной системе отправлять трафик соседней автономной системе, надеясь, что трафик пойдет по другому маршруту, чем трафик, генерируемый в этой соседней автономной системе. Другими словами, нельзя повлиять на то, как соседняя автономная система будет маршрутизировать трафик, но можно повлиять на то, как трафик попадет в соседнюю автономную систему. Однако, BGP поддерживает любые правила, которые соответствуют основному правилу маршрутизации «шаг за шагом».

Так как интернет сейчас использует только правило «шаг за шагом», и так как BGP может поддерживать любые политики, соответствующие этому правилу, BGP является широкоприменяемым как протокол маршрутизации между автономными системами.


Примеры BGP политик:

На рисунке выше у автономной системы AS 65010 есть следующие возможные пути для достижения AS 65060 через AS 65020:

65020 - 65030 - 65060

65020 - 65050 - 65060

65020 - 65030 - 65050 - 65070 - 65060

65020 - 65050 - 65030 - 65060

65020 - 65050 - 65070 - 65060

Но AS 65010 не видит все эти возможности.

AS 65020 передает AS 65010 только информацию о лучшем пути 65020 - 65030 - 65060, так же как протокол внутренней маршрутизации анонсирует только лучший путь с наименьшей стоимостью. Это единственный путь через AS 65020, который AS 65010 увидит. Все пакеты с сетью назначения, принадлежащей AS 65010, будут идти через AS 65020 только по этому маршруту.

Даже если существуют другие пути, AS 65010 может использовать лишь тот путь к AS 65060, который был анонсирован AS 65020. Путь к автономной системе, который был анонсирован, 65020 - 65030 - 65060, это путь «шаг за шагом», который AS 65020 использует, чтобы достигнуть AS 65060. AS 65020 не будет анонсировать другой путь, например, 65020 - 65050 - 65030 - 65060, тка как он не будет выбран лучшим путем политикой маршрутизации AS 65020.

AS 65010 не узнает о другом лучшем пути или других путях от AS 65020, пока лучший путь в AS 65020 не станет недоступным.

Даже если AS 65010 узнает о каком-то пути через AS 65020, он не сможет его использовать, т.к. AS 65020 не отправит трафик по другому пути, у него есть лучший путь 65020 - 65030 - 65060, поэтому именно его он и будет использовать, согласно политики маршрутизации BGP. BGP не позволяет одной автономной системе отправлять трафик через соседнюю автономную систему по маршруту, отличному от маршрута, которым пользуется трафик, генерируемый в соседней автономной системе.

AS 65010 может выбрать для отправки трафика в AS 65060 маршрут через AS 65020 или через AS 65040. AS 65010 выберет лучший путь, основываясь на собственной политике маршрутизации BGP.


5. Особенности BGP

BGP использует BGP как протокол транспорта, который предоставляет надежную, ориентированную на соединение доставку. BGP предполагает, что все его соединения надежные, поэтому не имеет механизма повторной передачи или исправления ошибок. BGP использует TCP порт 179. Два маршрутизатора, использующие BGP, устанавливают TCP соединение друг с другом и обмениваются сообщениями для открытия соединения и подтверждения параметров соединения. Эти два BGP маршрутизатора называются соседями или одноуровневыми маршрутизаторами.

После установления соединения маршрутизаторы обмениваются полными таблицами маршрутизации. Однако, так как соединение надежное, BGP соседи затем отправляют только изменения. Надежные соединения не требуют периодической отправки обновлений, вместо этого маршрутизаторы используют обновления при появлении изменений. BGP отправляет сообщения поддержки связи, похожие на Hello сообщения, отправляемые протоколами OSPF, IS-IS и EIGRP.

BGP - это только IP протокол маршрутизации, который использует NCP как транспортный уровень. OSPF, IGRP и EIGRP работают именно на IP уровне, а RIP использует UDP как транспорт.

OSPF и EIGRP используют свои собственные внутренние функции, чтобы убедиться, что пакеты обновления точно получены. Эти протоколы используют такой процесс передачи, при котором при наличии нескольких пакетов для передачи следующий пакет не может быть отправлен, пока OSPF или EIGRP не получат подтверждение на первый пакет обновления. Этот процесс может быть очень неэффективным и стать причиной задержек, если тысячи пакетов обновлений должны быть переданы через относительно медленные соединения. OSPF и EIGRP редко имеют для отправки тысячи пакетов. EIGRP может поместить в один пакет обновления больше 100 сетей, поэтому 100 EIGRP пакетов обновления могут содержать до 10 000 сетей, а большинство организаций не имеют у себя 10 000 сетей.

С другой стороны, BGP имеет в интернете более 175 000 сетей для анонсирования, и это число растет. BGP использует TCP для обеспечения функции подтверждения. NCP использует динамический размер окна, которое позволяет отправить 65 576 байт перед тем, как отправка будет остановлена для ожидания подтверждения. Например, при использовании максимального размера окна, если будут отправляться 1000-байтные пакеты, понадобится отправка 65 неподтвержденных пакетов перед тем, как BGP остановит передачу и будет ждать подтверждение.

TCP разработан для использования скользящего размера окна, где приемник отправляет подтверждение в точке приема половины размера передаваемого окна. Этот метод позволяет TCP приложениям, таким как BGP, продолжать отправку пакетов без необходимости остановки для ожидания подтверждения, как это требуется в OSPF и EIGRP.

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

Неправильное управление и фильтрация BGP обновлений потенциально может внешней автономной системе влиять на трафик в другой автономной системе. Поэтому важно знать, как работает BGP и как правильно его настроить для предотвращения этой ситуации.

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

BGP следует использовать в следующих случаях:

Если автономная система является транзитной, через которую проходят пакеты, предназначенные для других автономных систем

Если автономная система имеет несколько подключений к другим автономным системам

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

BGP не всегда является подходящим решением для связи автономных систем. Есть несколько случаев, когда BGP не следует применять:

Когда сеть имеет одно подключение в интернет или к другой автономной системе. Автономная система с одним выходом должна применять маршрут по умолчанию, как ниболее правильное решение. Нет необходимости использовать ресeрсы процессора и памяти для BGP.

Когда недостаточно ресурсов процессора и памяти на граничном маршрутизаторе для применения BGP маршрутизации

Когда недостаточно понимания о фильтрации маршрутов и процессе выбора пути BGP

Если политика маршрутизации, применяемая в автономной системе, совместима с политикой в автономной системе провайдера, нет необходимости или нежелательно настраивать DGP в этой автономной системе

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

Для того, чтобы BGP установил соседские отношения, он должен быть явно настроен для каждого соседа. ВGP формирует TCP отношения с каждым настроенным соседом и поддерживает эти отношения путем отправки BGP/TCP сообщения поддержания отношений. BGP отправляет это сообщение каждые 60 секунд.

После установления соседских отношений, соседи обмениваются BGP маршрутами, которые имеются у них в таблице маршрутизации. Каждый маршрутизатор собирает эти маршруты от каждого соседа, с которым успешно установлены отношения, и помещает их в базу данных топологии BGP. Все маршруты, которые были изучены от каждого соседа, располагаются в этой базе данных. Лучшие маршруты для каждой сети выбираются из базы данных топологии процессом выбора маршрута BGP и предлагается в таблицу маршрутизации.

Внешние BGP маршруты, изученные от внешних автономных систем, имеют административное расстояние 20. Внутренние BGP маршруты, изученные внутри автономной системы, имеют административное расстояние 200.


Существует четыре типа сообщений BGP: open, keepalive, update, notification.

После установления TCP соединения, первое сообщение, отправляемое каждой стороной, это open сообщение. После получения open сообщения, каждая сторона отправляет keepalive сообщение, которым подтверждает получение. После получения подтверждения о получении open сообщения устанавливаются BGP отношения, BGP соседи могут обмениваться любыми update, keepalive и notification сообщениями.

BGP соседи сначала обмениваются своими полными таблицами BGP маршрутизации. Дополнительные обновления отправляются только при возникновении изменений в сети. Соседи отправляют keepalive сообщения для того, чтобы убедиться, что соединение между соседями существует. А также отправляют notification сообщения при возникновении ошибок или специальных условий.

Open сообщение - содержит следующюю информацию:

Номер версии - предлагаемый номер версии протокола. Наибольший номер версии, поддерживаемый маршрутизаторами. Большинство реализаций BGP маршрутизации сейчас используют BGP4.

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

Hold time - максимальное число секунд, которое может пройти между успешными keepalive или update сообщениями отправителя. При получении open сообщения маршрутизатор вычисляет значение hold таймера путем использования меньшего значения между настроенным на маршрутизаторе и полученным в open сообщении

BGP router-ID - 32-битное поле, показывающее BGP идентификатор отправителя. BGP ID - это IP адрес, назначенный маршрутизатору, он определяется при загрузке. BGP router-ID выбирается так же, как и OSPF router ID? Это наибольший IP адрес активного интерфейса маршрутизатора при условии, что loopback интерфейсы не настроены. А если настроены loopback интерфейсы, BGP router-ID выбирается как наибольший IP адрес одного из loopback интерфейсов. Router-ID также можно задать вручную.

Дополнительные параметры - это параметры типа, длины и значения кодирования. Примером дополнительных параметров есть аутентификация сессии.

Keepalive сообщение - обмен этими сообщениями проводится соседями чаще, чем истекает врямя hold таймера. Если согласованное значение hold таймера равно 0, периодическая отправка keepalive сообщений не производится. Keepalive сообщение состоит только из заголовка.

Update сообщение - BGP update сообщение содержит информацию только об одном пути, несколько путей требуют нескольких update сообщений. Все атрибуты в update сообщении относятся к тому маршруту и сети, которая может быть достигнута через этот маршрут. Update сообщение может содержать следующие поля:

Withdrawn routes - список отображает IP адреса префиксов маршрутов, которые выведены из эксплуатации, если таковые имеются

Path attributes - эти атрибуты включают: путь к автономной системе, происхождение, локальные предпочтения и др. Каждый атрибут пути включает атрибут TLV. Тип атрибута состоит из флагов, которые следуют за кодом типа атрибута.

Network-layer reachability information - это поле содержит список префиксов IP адресов, которые доступны по этому пути.

Notification сообщение - отправляется, когда обнаруживается ошибка. BGP соединение закрывается немедленно после отправки сообщения. Notification сообщение включает код ошибки, ее подкод, а также данные, относящиеся к ошибке.

Как работает интернет?

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

Всем своим соседям (не по дому, разумеется, а тем, с кем есть прямые соединения), владелец AS сообщает: "Чуваки! У меня есть AS номер XXX!" Это называется BGP-Анонсом.

Соседи принимают это во внимание и передают дальше. Вот владелец AS YYY всех оповещает: "чуваки! Через меня доступна ASXXX! Путь до нее: XXX YYY". Постепенно, у каждого участника этой вакханалии складывается маршрутная таблица, в которой всегда видно, что от своей ASZZZ до ASXXX можно дойти по маршруту "ZZZ YYY YYY1 XXX".

Всё это развлекательное мероприятие и называется "протокол BGP".

Радость от него была бы неполной, не будь в BGP возможности выбрать маршрут. От двух свои провайдеров можно получить разные маршруты до ZZZ. Если XXX подключен не только к YYY1, но и напрямую к YYY, то у него будет более выгодный маршрут всего из трех хопов, вместо четырех.

Надеюсь, вы еще не запутались в трех латинских буквах и можно перейти к IP адресам.

У владельца автономной системы есть обычно собственный диапазон IP адресов, которые он может использовать сам, отдавать клиентам, солить, сушить, ну и вообще делать с ними все, что заблагорассудится.

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

Еще надо отметить возможность сделать какой-то из каналов гарантированно запасным. Вот есть у вас два канала и вы хотите, чтобы один из них был резервным и трафик по нему шел только в случае, если основной канал упадет. Чтобы этого добиться нужно сделать, чтобы маршрут по резервному каналу был при любых обстоятельствах длиннее, чем по основному.

Как? А элементарно. Надо соседу, который сидит по ту сторону резервного канала, отдавать не просто свой номер AS, а целый маршрут до нее. Вот так: "XXX XXX XXX XXX XXX". Да-да, просто несколько раз указать свою же AS. Это называется "добавить препенды".

Возвращаясь к нашей картинке, AS XXX подключена к двум провайдерам: YYY1 - кривой, но с безнлимитным трафиком. YYY - устойчивый, но трафик за большое бабло. Владелец XXX предпочитает, чтобы пока работает YYY1, весь трафик гонялся через него. Поэтому специально для YYY сообщаем, что через нас видно "XXX XXX XXX". Поскольку маршрут от XXX до ZZZ напрямую через YYY теперь получается длиннее, то связь будет через YYY.

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

http://to-the-future.livejournal.com/450700.html