Каталог провайдеров Волгограда

BGP

Протокол пограничного шлюза (Border Gateway Protocol) предназначен для взаимодействия между участниками Internet. Участниками Internet можно считать организации которым выделены собственные блоки адресов и номера автономных систем (Autonomous System - AS), это также является необходимым условием для работы по BGP. Номера автономных систем задаются 16 либо 32 битными числами. Автономные системы обмениваются между собой трафиком напрямую или на специально организованных точках обмена трафика. Совокупность всех автономных систем и связей между ними и представляет собой то что называется глобальная вычислительная сеть Internet. Весь трафик предназначенный автономной системе распределяется дальше внутри автономной системы самостоятельно, по правилам установленным только самой автономной системой.

Номер автономных систем и блок адресов выдают организации регуляторы и регистраторы - для России и Европы это RIPE, Америка - ARIN, Азия - APNIC, Африка - AfriNIC, Южная Америка - LACNIC. Все эти организации являются региональными представителями IANA (Internet Assigned Numbers Authority) которая подчиняется ICANN (Internet Corporation for Assigned Names and Numbers). Задачи регистраторов выдавать и отслеживать уникальность выданных блоков сетей, доменных имён и номеров AS, поддержка глобальных служб сетевой инфраструктуры Internet, например таких как DNS, разработка правил поведения организаций являющихся участниками обмена трафика в сети Internet до границ автономных систем, и участие в разработке технических стандартов RFC.

Из каждой автономной системы можно достичь любой другой автономной системы непосредственно, либо транзитом через другие автономные системы. Обмен трафиком можно осуществлять между автономными системами по двусторонней договорённости либо на существующих точках обмена трафиком с присутствием многих организаций имеющих номера AS, где любой желающий может участвовать в обмене со всеми подключенными к этой точке, либо только с выбранными. В России, например, это Московский Internet Exchange. Зарубежные правила, в частности европейские, устанавливают обязательный безвозмездный обмен интернет трафиком на Internet Exchange для операторов одного уровня, поэтому часто можно наблюдать картину, что для доступа к серверам расположенным в одном городе, но подключенным к разным провайдерам маршруты проходят через заграницу, потому что так дешевле чем договариваться между собой.

Picture 1. BGP network Рисунок 1

Для определения маршрутов доступа к различным автономным системам используется BGP, который суммирует информацию обо всех транзитных автономных системах и блоках адресов которые предоставляются автономными системами. Каждая автономная система объявляет соседним какие IP адреса доступны через неё. Получив обновления следующая автономная система передаёт эти сведения дальше, добавляя к ним свои данные об IP адресах. В результате все маршрутизаторы во всей сети, взаимодействующих по протоколу BGP, имеют данные обо всех автономных системах и об адресах, которые эти автономные системы предоставляют. Например из рисунка 1 видно, что чтобы достичь IP адресов 6.0.0.0/8 из AS1 можно воспользоваться одним из следующих маршрутов:

  1. AS1->AS3->AS4->AS6
  2. AS1->AS3->AS10->AS6
  3. AS1->AS4->AS6
  4. AS1->AS5->AS6

Эта же информация отобразится в таблице маршрутизации BGP:

#show ip bgp route
Status A:AGGREGATE B:BEST b:NOT-INSTALLED-BEST C:CONFED_EBGP D:DAMPED
       E:EBGP H:HISTORY I:IBGP L:LOCAL M:MULTIPATH S:SUPPRESSED
       Prefix             Next Hop        Metric     LocPrf     Weight Status
1      6.0.0.0/8         1.0.3.1              	        100        0 	E
         AS_PATH: 3 4 6
2      6.0.0.0/8         1.0.3.1              	        100        0 	E
         AS_PATH: 3 10 6
3      6.0.0.0/8         1.0.4.1              	        100        0 	BE
         AS_PATH: 4 6
4      6.0.0.0/8         1.0.5.1              	        100        0 	E
         AS_PATH: 5 6

Что из этой таблицы видно:

Каким же маршрутом необходимо воспользоваться чтобы достичь искомой сети 6.0.0.0/8? Для этого существует алгоритм выбора маршрутизаторами маршрутов BGP:

  1. Если ближайший следующий узел (Next Hop) недоступен, то маршрут игнорируется.
  2. Предпочитается маршрут с наибольшим весом (Weight);
  3. Если веса маршрутов оказались одинаковыми, то следует выбрать из них маршрут с наибольшим значением коэффициента предпочтения (!LocPref);
  4. Если нет локально cгенерированных маршрутов и коэффициент предпочтения оказался одинаковым, то следует предпочесть маршрут с наименьшим значением атрибута AS_PATH (то есть самый короткий путь);
  5. Если длина AS_PATH у маршрутов совпадает, то следует выбрать маршрут с наименьшим значением атрибута типа протокола ORIGIN (где IGP стоит ниже EGP, a EGP - ниже, чем INCOMPLETE). То есть необходимо сравнить из какого источника был получен маршрут на маршрутизаторе с которого получены обновления этого маршрута, если он задан статически с использованием команды network в настройках BGP (IGP) то он более предпочтителен чем полученный из другого внешнего источника (другой AS) BGP (EGP). INCOMPLETE определяет маршруты полученные при помощи других протоколов внутри одной AS, например, OSPF, такой маршрут наименее предпочтителен;
  6. Если атрибут типа протокола также совпадает, то следует выбрать маршрут с наименьшим значением атрибута MED, если маршруты были приняты от одной и той же AS (или если была задана команда bgp always-compare-med). То есть необходимо сравнить приоритеты маршрутов (Metric) рекомендуемые соседней AS;
  7. Если у маршрутов равные значения MED, то IBGP маршрутам (BGP внутри одной AS) следует предпочесть EBGP маршруты (BGP между AS);
  8. Если во всех предыдущих случаях получены совпадения, то следует предпочесть маршрут, который пролегает через ближайшего соседа используя локальный протокол маршрутизации, например, OSPF или статические маршруты, то есть предлагается избрать кратчайший путь к удаленному узлу внутри AS. (Следовать кратчайшему пути до узла, указанного в NEXT_HOP).
  9. Если и внутренние маршруты окажутся одинаковыми, то для решения этой за дачи следует использовать атрибут ROUTER_ID. В этом случае следует предпочесть маршрут, полученный от маршрутизатора BGP, с наименьшим значением RID. В Cisco IOS в качестве RID выступает наибольший адрес Loopback интерфейса, если такой сконфигурирован, иначе - наибольший IP адрес маршрутизатора. В конечном случае, установление RID зависит от изготовителя конкретного оборудования.

Основываясь на этих правилах изначально будут выбраны маршруты с номерами 3 и 4, из них выбор будет сделан на основе идентификатора маршрутизатора при прочих равных, пункты с 6 по 9. Предположим (исходя из приведённого рисунка) что пункт 6 соответствует значению INCOMPLETE, то есть между собой маршрутизаторы внутри AS4 и AS5 обмениваются по OSPF. Выбранный маршрут в поле статус помечается буквой «B». Более подробную информацию можно посмотреть воспользовавшись командой show ip bgp [сеть|узел назначения]

#show ip bgp 6.0.0.0/8
Status codes: s suppressed, d damped, h history, * valid, > best, i internal
Origin codes: i - IGP, e - EGP, ? - incomplete
    Network            Next Hop        Metric LocPrf Weight Path
*  6.0.0.0/8         1.0.3.1                  100       0    3 4 5 e
*  6.0.0.0/8         1.0.3.1                  100       0    3 10 6 e
*> 6.0.0.0/8         1.0.4.1                  100       0    4 6 ?
*  6.0.0.0/8         1.0.5.1                  100       0    5 6 ?

Команда отображает практически тоже, что и предыдущая. Значения поля Status теперь имеет обозначения в первом столбце: символ «>» - это лучший маршрут. Столбец Path обозначает что и AS_PATH только добавлен вывод атрибута ORIGIN (из пункта 5 алгоритма выбора) е - EGP, i - IGP, ? - INCOMPLETE.

Следует заметить, что фактически выбранный лучший маршрут достигает сети назначения пройдя через три промежуточных маршрутизатора, так же как и маршрут через AS3->AS10->AS6. Однако это идеологический подход маршрутизации BGP - автономная система представлена как неделимая часть глобальной сети.

Ещё одно важное правило не относящееся напрямую к BGP, но относящееся ко всей маршрутизации в IP сетях: из двух равнозначных маршрутов будет выбран тот, маска сети которого длиннее. То есть маршрут 6.0.0.0/16 будет более предпочтительным чем 6.0.0.0/8, если мы хотим достичь узла 6.0.0.1. В таблице маршрутизации это будет выглядеть так, если бы AS6 дополнительно объявляла бы маршрут до сети 6.0.0.0/16:

#show ip bgp 6.0.0.1
Status codes: s suppressed, d damped, h history, * valid, > best, i internal
Origin codes: i - IGP, e - EGP, ? - incomplete
    Network            Next Hop    Metric LocPrf Weight Path
*  6.0.0.0/8         1.0.3.1           	   100       0   3 4 5 e
*  6.0.0.0/8         1.0.3.1           	   100       0   3 10 6 e
*  6.0.0.0/8         1.0.4.1           	   100       0   4 6 ?
*  6.0.0.0/8         1.0.5.1           	   100       0   5 6 ?
*> 6.0.0.0/16        1.0.4.1           	   100       0   4 6 ?

Размер таблицы маршрутизации может достигать огромных размеров, если хранить в ней информацию необходимую для доступа к каждому существующему в сети BGP маршрутизатору и для каждого установленного BGP соединения на отдельно взятом маршрутизаторе. Такой способ хранения называется full view. Настройки маршрутизаторов позволяют ограничить количество записей в таблице за счёт получения не всех возможных маршрутов. Тогда для доступа к сети интернет надо определить маршрут который будет использоваться если не найдено никакого другого - маршрут по умолчанию 0.0.0.0/0. Его можно задать вручную, либо получить от соседнего BGP маршрутизатора. Если маршрут по умолчанию получен по BGP от нескольких соседних маршрутизаторов то для него действует тот же алгоритм выбора, как и для обычных маршрутов. Можно запретить получать любые маршруты кроме маршрута по умолчанию, это имеет смысл для автономной системы с единственным возможным способом доступа к Internet через единственную соседнюю автономную систему.

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

Маршрутизатор BGP основывается в выборе маршрутов только на анализе атрибутов BGP и префиксов сетей и никак не учитывает какие бы то ни было условия передачи и состояния каналов связи, то есть не важно что используемый канал является модемным соединением на 36600бит/с, а соседний канал широкополосный доступ на 100Мбит/с, важно только что через первый канал сеть назначения ближе по алгоритму выбора BGP чем через второй. Ещё одна особенность, в том что выбор маршрута всегда однозначный, то есть при всех одинаковых условиях трафик будет передан в направлении той автономной системы маршрутизатора который имеет наименьший идентификатор, как правило определяемый одним из IP адресов, а второй канал при этом будет простаивать. И самое главное что влияние на соседние BGP маршрутизаторы, а значит и на входящий трафик возможно только с использованием небольшого количества атрибутов, при том что эти маршрутизаторы установлены в неуправляемой нами сети и воздействие каким либо другим способам на распределение трафика в сторону управляемой нами AS сведено к минимуму, если вообще возможно.