inter as interconnect что это

Inter-AS routing. Можно ли сэкономить на BGP маршрутизаторе?

В качестве предисловия: вчера представил приведенные ниже идеи на локальной сходке администраторов. После презентации ко мне подошел представитель компании, занимающейся производством сетевого оборудования и спросил: «Ты публиковал это где-то? Поделись презентацией, я отправлю коллегам посмотреть.» Собственно, а почему бы и не опубликовать? Как говорят у нас в Украине «i ми, Химко, люди». Если уж кто-то из вендоров, хотя бы отдаленно, но заинтересовался, то и в коммьюнити найдется человек, которому идеи тоже покажутся интересными. Кроме этого, я и сам планирую использовать это решение. Сразу скажу, что 100% готового результата не будет, но будет некий промежуточный, которого достаточно для эрзац-роутинга и немного информации для продолжения работ в данном направлении. Поехали!

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

Если вы все еще читаете, позволю себе начать с дизайна, так как статья больше о проектировании решения, нежели о самом решении. Итак, мы — сервис-провайдер ISP A, имеющий одноименный пул адресов и необходимость анонса этих адресов в Сеть. Общая схема логических связей приведена на рисунке.

На границе нашей сети стоит маршрутизатор RTR A, который связан eBGP сессией с пиром-соседом. Через сессию протокола мы получаем FullView от соседа с указанием адреса следующейго перехода (next-hop) — IP адреса RTR B. В ответ — отдаем информацию о наших внутренних сетях с указанием next-hop RTR A. Сразу отмечу, что это лишь одна из множества возможных схем организации BGP соседства: маршрутизаторов на границе может быть несколько, равно как и соседей, сами соседи могут быть подключены не напрямую, мы можем получать больше одного FullView, резервировать каналы и прочее. Однако я позволю себе опустить анализ разнообразных схем организации пиринга и резервирования, и остановиться на простейшем случае — сути это не поменяет, а понимание упростит. Внутри нашей автономной системы работает IGP, посредством которого мы передаем достижимость сетей ISPA. Или не работает — это опять-таки лишь один из возможных вариантов.

Пользовательский трафик проходит через ядро CoreA, маршрутизатор RTR A и уходит дальше в Сеть. В моем понимании это (со всеми возможными вариациями) классический метод организации периметра сети и соседства BGP. Теперь посмотрим сколько стоит данное аппаратное решение.

Я буду отталкиваться от необходимой пропускной способности в 10Гб/с. Как минимум в решении должны присутствовать 10Гб/с интерфейсы с возможностью дальнейшего апгрейда. Juniper предлагает решение MX104-40G (или как вариант MX80) за 40 тыс.долл. с двумя (четырмя для MX80) 10Гб/с интерфейсами «на борту» и производительностью маршрутизации в 40Гб/с (80 — для MX80). Cisco отвечает устройством Cisco ASR 1001-X с базовой производительностью 2,5Гб/с и двумя 10Гб/с интерфейсами «на борту» за 17 тыс.долл + цена лицензии на улучшение производительности (до 20Гб/с) и активацию дополнительных интерфейсных слотов. Сразу скажу, что я не ставил перед собой задачу срогого сравнения устройств — в конце концов пост не об этом, но какие-то цифры нужны, так как наша основная задача снизить стоимость решения.

Итак, минимум 17 тыс.долл. Что полезное делает наш маршрутизатор RTRA? Да в общем-то немного — крутит BGP сессию (или несколько) с соседом и форвардит трафик в Сеть. Можно ли обойтись без него? Для ответа проанализируем следующую топологию.

Мы убрали физический маршрутизатор и запустили пиринг BGP на устройстве ядра. Можно ли так? Да, благо сорвеменные L3 коммутаторы поддерживают запуск BGP. Однако в этом решении есть как минимум два слабых места. Первое — большинство коммутаторов не были созданы для полноценной маршрутизации, и поэтому имеют ограниченый размер таблицы маршрутизации. Например, Juniper EX4550 имеет ограничение в 14000 IPv4 юникаст-маршрутов, а Cisco Nexus3k — 16000. Второе — чтобы запустить BGP понадобится докупить лицензию, а это стоит 8 (Cisco Nexus3k) или 10 (Juniper EX4550) тыс.долл. Если нам понадобится резервирование коммутаторов, это удвоит приведенные цифры. Кроме этого, понадобится договариваться с вышестоящим провайдером для суммирования сетей, ну или получать маршрут по-умолчанию. Тем не менее, такой дизайн все-же позволятет отказаться от покупки выделенного маршрутизатора и в то же время пользоваться полезными плюшками BGP. Еще одна возможная вариация на эту тему приведена ниже.

Мы запускаем BGP процесс на физическом сервере или виртуальной машине, которая крутит eBGP сессию с RTRB и iBGP — с устройством ядра. На виртуалке устанавливаем один из доступных пакетов для запуска BGP, например Quagga, Vyatta или BIRD.

Одной из прекрасных возможностей протокола BGP является возможность изменения next-hop при анонсе обновлений, ей мы и воспользуемся для того, чтобы избежать ситуации, когда пользовательский трафик необходимо форвардить через BGP спикера. То есть мы как-бы разделяем устройства, которые обладают маршрутной информацией (виртуалка) и устройства, которые занимаются пересылкой трафика (CoreA) внутри автономной системы. Соответственно, RTRB получает в качестве next-hop адрес CoreA и наоборот. Такой себе control-plane vs forwarding-plane. Сама идея не нова и активно используется при организации точек обмена, только посредством eBGP сессий.

Читайте также:  какой крем для обуви хороший

Это уже более интересный сценарий, так как теперь мы можем получать как FullView, так и несколько таковых, осуществлять фильтрацию и суммирование маршрутов локально, не прибегая к звонку провайдеру. Еще одной интересной особенностью решения является то, что нам не нужно даже наполнять таблицу ядра на виртуальной машине с BGP. Те, кто сталкивался с настройкой, например, Quagga знают, что нужно во-первых нужно включить опцию «ip forwarding» и затем передать маршруты, которые получил демон в ядро (ну или таблицу маршрутизации хоста) для корректного форвардинга трафика. Так вот, это все лишнее — виртуалка занимается только анонсом BGP информации и в продвижении трафика не участвует, а наполнение таблицы внутри Quagga занимает столько времени, сколько нужно для передачи непосредственно объема маршрутной таблицы — секунд 10.

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

Основная идея та же — запустить eBGP на виртуалке, но внутри автономной системы уже использовать какой-нибудь IGP протокол, к примеру как на рисунке, OSPF. Часть с eBGP сессией осталась неизменной и здесь все еще нет проблем. А вот с IGP они есть — ведь ни один из них не был предназначен для передачи non-directly connected next-hop, уж извините за обилие английских слов. Кроме прочего, Nexus3k требует лицензию и для OSPF, но это уже детали — у меня в сети Juniper, а для Нексуса можно использовать RIP :). Так или иначе, передать другой next-hop нужно, так как в противном случае пользовательский трафик пойдет через виртуалку, а такое решение не годится. Соответственно нам нужен некий костыль, который позволит «невозможное» — передать другой, не локальный, next-hop при анонсе маршрута. При обкатке идеи я пробовал следующие варианты:

Так вот, к сожалению, все вышеперечисленное не работает. Qugga и Juniper тихо игнорировали мои ковыряния в политиках, а BIRD сразу ругался при попытке изменения параметра «next-hop» в анонсе. Вот так банально и обидно моя идея разбилась о скалы непонимания со стороны производителей. В процессе работы я даже загуглил проблему и оказалось не один я такая хитрая ж., но решения по факту не было, разве что указали на то, что у Cisco есть фича «forwarding address» (почитать можно здесь), но это не то.

Уже почти отчаявшись, я обратился за помощью к коллегам. Андрушко Дмитрий, Коваленко Александр (@alk0v) и Симоненко Дмитрий, спасибо — страна должна знать своих героев! Итак, варианты есть.

Первое — есть уже готовое решение для программно-определяемых сетей под названием проект Atruim (почитать). Кроме этого, если я правильно расслышал, Mellanox занимается производством устройств с Quagga/BIRD внутри. Собственно говоря, SDN клевая штука — делай что хочешь и как хочешь. Но это SDN и новое оборудование, а у меня задача решить все на существующем.

Далее, если я правильно понял («если» — главное слово, так как я не силен в *NIXах), демоны в Quagga (например, ospfd) общаются с ядром через модуль iproute2 и чисто теоретически можно перехватить пакет на выходе из ospfd и модифицировать его. Уж не знаю правильно ли я думаю и возможно ли это, но как-то так.

Ну и напоследок железный вариант — Scapy, который позволяет генерировать пакеты с заданым содержимым. И в самом деле — структура OSPF пакета нам известна, что и на какое значение менять тоже. Дело за малым — реализовать это. Вот здесь я и остановился на данный момент.

То как я себе представляю решение — оно прежде всего должно быть динамическим. В противном случае зачем все эти танцы с протоколами? По поему мнению можно даже поднимать одну виртуалку для каждого eBGP пира — цена виртуальной машины ничтожна, а такое упрощение позволит просто модифицировать все исходящие OSPF пакеты, меняя один next-hop на другой.

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

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

Вот такие идеи. Надеюсь кому-нибудь они покажутся интересными и найдут свое применение.

Источник

Настройка inter-AS Option C с использованием RSVP на оборудовании Huawei

Когда вы большой провайдер и перед вами стоит задача организовать L3VPN, как правило, вы используете MPLS. Если усложнить ситуацию наличием посередине другого провайдера, то вы вынуждены обратиться к Inter-AS VPN.

Часто вместо PE-устройства используется Route Reflector.

Между PE и ASBR, согласно документации различных вендоров, может использоваться как LDP, так и RSVP. По идее никаких ограничений нет. С LDP всё сравнительно просто. Есть доступные инструкции и логика работы довольно ясная. Но сколько я ни пытался найти документацию по настройке RSVP, я упирался в полное её отсутствие.

Читайте также:  какой кошелек для хранения prizm лучше 3 как сэкономить на комиссиях при выводе денег

Моя задача была протестировать работу Option C с использованием RSVP на оборудовании Huawei. Ниже подробное howto как это сделать и какие могут быть трудности.

Возьмём следующую схему:

В качестве оборудования используется CX600-X3 и NE40E-X3

Не буду останавливаться на настройке банальных вещей, вроде IP-адресов и OSPF. Вы можете найти их в полных конфигурациях устройств. Перейдём сразу к сути.

Настройка MPLS

На PE1 MPLS активируется только на интерфейсе в сторону ASBR1

[PE1] mpls lsr-id 1.1.1.1
[PE1] mpls
[PE1-mpls] quit
[PE1] mpls ldp
[PE1] interface Gi0/0/2
[PE1-GigabitEthernet0/0/1] mpls
[PE1-GigabitEthernet0/0/1] mpls ldp

На ASBR1 оба интерфейса MPLS:

[ASBR1] mpls lsr-id 2.2.2.2
[ASBR1] mpls
[ASBR1-mpls] quit
[ASBR1] mpls ldp
[ASBR1] interface Gi0/0/1
[ASBR1-GigabitEthernet0/0/1] mpls
[ASBR1-GigabitEthernet0/0/1] mpls ldp

Но на интерфейсе в сторону другой AS не нужно запускать LDP:

ASBR1] interface Gi0/0/2
[ASBR1-GigabitEthernet0/0/1] mpls

Настройка в AS200 полностью аналогична.

Проверка распространения меток

Если вы обеспечили IP-связность, то самое время проверить построение LSP:

LSP Information: LDP LSP

FEC
1.1.1.1/32
2.2.2.2/32
2.2.2.2/32
In/Out Label
3/NULL
NULL/3
1024/3
In/Out IF
-/-
-/Eth0/0/1
-/Eth0/0/1
Vrf Name

[ASBR1]dis mpls lsp

LSP Information: LDP LSP

FEC
1.1.1.1/32
1.1.1.1/32
2.2.2.2/32
In/Out Label
NULL/3
1025/3
3/NULL
In/Out IF
-/Eth0/0/1
-/Eth0/0/1
-/-
Vrf Name

Настройка VPN-instance

Поскольку это PE, нужно создать VPN-instance

[PE1] ip vpn-instance VPN1
[PE1-vpn-instance-vpn1] ipv4-family
[PE1-vpn-instance-vpn1-af-ipv4] route-distinguisher 100:1
[PE1-vpn-instance-vpn1-af-ipv4] vpn-target 1:1 both
[PE1] interface gigabitethernet 0/0/1
[PE1-GigabitEthernet2/0/0] ip binding vpn-instance VPN1
[PE1-GigabitEthernet2/0/0] ip address 10.1.1.2 24

То же самое на PE2

Настройка BGP

[CE1] bgp 65001
[CE1-bgp] peer 10.1.1.2 as-number 100
[CE1-bgp] import-route direct

[PE1] bgp 100
[PE1-bgp] ipv4-family vpn-instance vpn1
[PE1-bgp-vpn1] peer 10.1.1.1 as-number 65001

IBGP с внутренним соседом ASBR1:

[PE1] bgp 100
[PE1-bgp] peer 2.2.2.2 as-number 100
[PE1-bgp] peer 2.2.2.2 connect-interface loopback 0
[PE1-bgp] ipv4-family vpnv4
[PE1-bgp-af-vpnv4] peer 4.4.4.4 enable

ASBR1

EBGP c ASBR2 и IBGP с внутренним соседом PE1:

[ASBR1] bgp 100
[ASBR1-bgp] peer 198.51.100.2 as-number 200
[ASBR1-bgp] peer 1.1.1.1 as-number 100
[ASBR1-bgp] peer 1.1.1.1 connect-interface loopback 0
[ASBR1-bgp] ipv4-family vpnv4
[ASBR1-bgp-af-vpnv4] peer 1.1.1.1 enable

Это необходимый минимум. После таких настроек у вас должно быть такой состояние соседей BGP:

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
2.2.2.2 4 100 3 4 0 00:00:05 Established 1

[PE1]dis bgp vpnv4 vpn-instance vpn1 peer

BGP local router ID : 1.1.1.1
Local AS number : 100
VPN-Instance vpn1, Router ID 1.1.1.1:
Total number of peers : 2 Peers in established state : 1

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
2.2.2.2 4 100 0 0 0 00:10:20 Idle 0
10.1.1.1 4 65001 12 11 0 00:09:54 Established 1

BGP local router ID : 198.51.100.1
Local AS number : 100
Total number of peers : 2 Peers in established state : 2

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
1.1.1.1 4 100 7 9 0 00:05:47 Established 0
198.51.100.2 4 200 18 17 0 00:15:15 Established 1

При этом изменений в LSP быть пока не должно.

Передача VPN-маршрутов

Теперь обратимся к передаче маршрутов VPN между AS. Они должны быть промаркированы.

Разрешаем передачу маркированных маршрутов

[PE1] bgp 100
[PE1-bgp] peer 2.2.2.2 label-route-capability

ASBR1

Настроим политики по применению MPLS-меток.

Безусловное применение метки на любой маршрут:

[ASBR1] route-policy POLICY1 permit node 1
[ASBR1-route-policy] apply mpls-label

Применение дополнительной метки на любой маршрут, который уже пришёл с меткой

[ASBR1] route-policy POLICY2 permit node 1
[ASBR1-route-policy] if-match mpls-label
[ASBR1-route-policy] apply mpls-label

Применяем политики в BGP:

[ASBR1] bgp 100
[ASBR1-bgp] peer 1.1.1.1 route-policy POLICY2 export
[ASBR1-bgp] peer 1.1.1.1 label-route-capability

[ASBR1-bgp] peer 198.51.100.2 as-number 200
[ASBR1-bgp] peer 198.51.100.2 route-policy POLICY1 export
[ASBR1-bgp] peer 198.51.100.2 label-route-capability

[ASBR1] bgp 100
[ASBR1-bgp] network 1.1.1.1 32
[ASBR1-bgp] quit

[PE1] bgp 100
[PE1-bgp] peer 4.4.4.4 as-number 200
[PE1-bgp] peer 4.4.4.4 connect-interface LoopBack 0
[PE1-bgp] peer 4.4.4.4 ebgp-max-hop 10
[PE1-bgp] ipv4-family vpnv4
[PE1-bgp-af-vpnv4] peer 4.4.4.4 enable
[PE1-bgp-af-vpnv4] quit
[PE1-bgp] quit

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 2 Peers in established state : 2

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
2.2.2.2 4 100 57 57 0 00:54:48 Established 1
4.4.4.4 4 200 46 49 0 00:42:15 Established 0

[PE1]dis bgp vpnv4 vpn-instance vpn1 peer

BGP local router ID : 1.1.1.1
Local AS number : 100
VPN-Instance vpn1, Router ID 1.1.1.1:
Total number of peers : 1 Peers in established state : 1

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.1.1.1 4 65001 72 73 0 01:09:22 Established 1

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

[CE1]dis ip routing-table

Попробуем запустить пинг от CE1 к CE2 и снять дамп трафика на линке ASBR1-ASBR2.

Ниже по выводу информации о LSP можно отследить назначение меток (внутренних VPN и внешних транспортных).

LSP Information: BGP LSP

FEC In/Out Label In/Out IF Vrf Name
4.4.4.4/32
10.1.1.0/24
NULL/1027
1025/NULL
-/-
-/-
vpn1

LSP Information: LDP LSP

FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32
2.2.2.2/32
2.2.2.2/32
3/NULL
NULL/3
1024/3
-/-
-/Eth0/0/1
-/Eth0/0/1

[PE1]display mpls lsp vpn-instance vpn1

LSP Information: BGP LSP

FEC In/Out Label In/Out IF Vrf Name
10.1.1.0/24 1025/NULL -/- vpn1

LSP Information: BGP LSP

FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32
4.4.4.4/32
4.4.4.4/32
1026/NULL
1027/1026
NULL/1026
-/-
-/-
-/-

LSP Information: LDP LSP

FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32
1.1.1.1/32
2.2.2.2/32
NULL/3
1025/3
3/NULL
-/Eth0/0/1
-/Eth0/0/1
-/-

LSP Information: BGP LSP

FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32
4.4.4.4/32
1.1.1.1/32
NULL/1026
1026/NULL
1027/1026
-/-
-/-
-/-

LSP Information: LDP LSP

FEC In/Out Label In/Out IF Vrf Name
4.4.4.4/32
4.4.4.4/32
3.3.3.3/32
NULL/3
1025/3
3/NULL
-/Eth0/0/1
-/Eth0/0/1
-/-

А так выглядят маршруты, передающиеся в AS200:

[ASBR1]dis bgp routing-table 1.1.1.1

BGP local router ID : 2.2.2.2
Local AS number : 100
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 1.1.1.1/32:
Network route.
Label information (Received/Applied): NULL/4104
From: 0.0.0.0 (0.0.0.0)
Route Duration: 00h00m08s
Direct Out-interface: Tunnel0/0/0
Original nexthop: 2.2.2.2
Qos information : 0x0
AS-path Nil, origin igp, MED 1, pref-val 0, valid, local, best, select, pre 10
Advertised to such 1 peers: 198.51.100.2

[ASBR2]display bgp routing-table 1.1.1.1

BGP local router ID : 3.3.3.3
Local AS number : 200
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 1.1.1.1/32:
Label information (Received/Applied): 4102/4104 From: 198.51.100.1 (2.2.2.2)
Route Duration: 00h00m12s
Direct Out-interface: GigabitEthernet1/1/2
Relay Tunnel Out-Interface: GigabitEthernet1/1/2
Relay token: 0x42004000
Original nexthop: 198.51.100.1
Qos information : 0x0
AS-path 100, origin igp, MED 1, pref-val 0, valid, external, best, select, active, pre 255
Advertised to such 1 peers: 4.4.4.4

Обратите внимание, что они анонсируются с метками MPLS. Это пригодится нам чуть позже.

А теперь представим, что по каким-то неведомым причинам вам захотелось в AS100 использовать для Option C не LDP, а RSVP. Это задача скорее умозрительная и рождена воспалённым сознанием, но с точки зрения разобраться, как работает, весьма полезная. Что меняется в этом случае? Да практически всё. Принцип настройки значительно различается.

[PE1]mpls
[PE1-mpls] mpls te
[PE1-mpls] mpls rsvp-te
[PE1-mpls] mpls te cspf
[PE1-mpls]
[PE1-mpls] ospf 1
[PE1-ospf-1] opaque-capability enable
[PE1-ospf-1] enable traffic-adjustment advertise
[PE1-ospf-1] area 0.0.0.0
[PE1-ospf-1-area-0.0.0.0] mpls-te enable

Для того, чтобы RSVP вообще начал строить LSP, нужно создать двунаправленный туннель между PE1 и ASBR1.

[PE1-Tunnel0/0/0] ip address unnumbered interface LoopBack0
[PE1-Tunnel0/0/0] tunnel-protocol mpls te
[PE1-Tunnel0/0/0] destination 2.2.2.2
[PE1-Tunnel0/0/0] mpls te tunnel-id 100
[PE1-Tunnel0/0/0] mpls te igp advertise
[PE1-Tunnel0/0/0] mpls te igp metric absolute 1
[PE1-Tunnel0/0/0] mpls te commit

ASBR1:

[ASBR1]interface Tunnel0/0/0
[ASBR1-Tunnel0/0/0] ip address unnumbered interface LoopBack0
[ASBR1-Tunnel0/0/0] tunnel-protocol mpls te
[ASBR1-Tunnel0/0/0] destination 1.1.1.1
[ASBR1-Tunnel0/0/0] mpls te tunnel-id 200
[ASBR1-Tunnel0/0/0] mpls te igp advertise
[ASBR1-Tunnel0/0/0] mpls te igp metric absolute 1
[ASBR1-Tunnel0/0/0] mpls te commit

Если мы посмотрим на ASBR1 и ASBR2, то увидим, что маршрут не маркируется меткой (в отличие от случая с LDP):

[ASBR1]dis bgp routing-table 1.1.1.1

BGP local router ID : 2.2.2.2
Local AS number : 100
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 1.1.1.1/32:
Network route.
From: 0.0.0.0 (0.0.0.0)
Route Duration: 00h26m42s
Direct Out-interface: Tunnel0/0/0
Original nexthop: 2.2.2.2
Qos information : 0x0
AS-path Nil, origin igp, MED 1, pref-val 0, valid, local, best, select, pre 10
Advertised to such 1 peers: 198.51.100.2

[ASBR2]display bgp routing-table 1.1.1.1

BGP local router ID : 3.3.3.3
Local AS number : 200
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 1.1.1.1/32:
From: 198.51.100.1 (2.2.2.2)
Route Duration: 00h02m07s
Direct Out-interface: GigabitEthernet1/1/2
Original nexthop: 198.51.100.1
Qos information : 0x0
AS-path 100, origin igp, MED 1, pref-val 0, valid, external, best, select, active, pre 255
Not advertised to any peer yet

Очевидно, это происходит (или точнее не происходит) при отправке маршрута с 1.1.1.1 на 2.2.2.2. Поэтому продолжаем настройку устройств AS100. Начнём с PE1 должен быть подвергнут юстировке.

Во-первых, назначаем недостающую метку:

[PE1]route-policy LABEL permit node 10
[PE1-route-policy] apply mpls-label
[PE1-route-policy]
[PE1-route-policy]bgp 100
[PE1-bgp] ipv4-family unicast
[PE1-bgp-af-ipv4] peer 2.2.2.2 route-policy LABEL export

Все маршруты, передающиеся на 2.2.2.2 должны получить метку

Ещё один любопытный момент: пока у нас с PE1 не анонсируются никакие сети, команда network сейчас прописана на ASBR1, как того требует схема с LDP. Надо перенести её на PE1:

[PE1] bgp 100
[PE1-bgp] network 1.1.1.1 32

[ASBR1] bgp 100
[ASBR1-bgp] undo network 1.1.1.1 32

[PE1]tunnel-policy TP
[PE1-tunnel-policy-TP] tunnel select-seq cr-lsp load-balance-number 1
[PE1-tunnel-policy-TP]tunnel-selector TS permit node 10
[PE1-tunnel-selector] apply tunnel-policy TP
[PE1-tunnel-selector]bgp 100
[PE1-bgp] ipv4-family unicast
[PE1-bgp-af-ipv4] tunnel-selector TS

Этот самый последний шаг необходимо повторить и на ASBR1.

[ASBR1]tunnel-policy TP
[ASBR1-tunnel-policy-TP] tunnel select-seq cr-lsp load-balance-number 1
[ASBR1-tunnel-policy-TP]tunnel-selector TS permit node 10
[ASBR1-tunnel-selector] apply tunnel-policy TP
[ASBR1-tunnel-selector]bgp 100
[ASBR1-bgp] ipv4-family unicast
[ASBR1-bgp-af-ipv4] tunnel-selector ts-test

Теперь можно проверить, что LSP простроены

LSP Information: RSVP LSP

FEC In/Out Label In/Out IF Vrf Name
2.2.2.2/32
1.1.1.1/32
NULL/3
3/NULL
-/GE1/1/6
GE1/1/6/-

LSP Information: BGP LSP

FEC n/Out Label I In/Out IF Vrf Name
1.1.1.1/32
4.4.4.4/32
10.1.1.1/32
4096/NULL
NULL/4096
4097/NULL
-/-
-/-
-/-

И маршрут передаётся на ASBR2 маркированный:

[ASBR2]dis bgp routing-table 1.1.1.1
BGP local router ID : 3.3.3.3
Local AS number : 200
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 1.1.1.1/32:
Label information (Received/Applied): 4097/4099
From: 198.51.100.1 (2.2.2.2)
Route Duration: 00h24m34s
Direct Out-interface: GigabitEthernet1/1/2
Relay Tunnel Out-Interface: GigabitEthernet1/1/2
Relay token: 0x42004000
Original nexthop: 198.51.100.1
Qos information : 0x0
AS-path 100, origin igp, pref-val 0, valid, external, best, select, active, pre 255
Advertised to such 1 peers: 4.4.4.4

Источник

Сказочный портал