Давненько я не публиковал ничего нового, но на то были свои причины. Сегодня мы с Вами поговорим о том, как прокинуть кастомеровскую VPN 3-го уровня через 2-ух провайдеров. Сделать это можно 4мя способами: так называемые Option A, B, C и AB. В лабораторных будем использовать одну и ту же топологию. R7, R8,R9,R10 – PE маршрутизаторы, R3,R4,R5,R6 – P маршрутизаторы, R1,R2 – ASBR’ы.
Начнем с самой простой опции А.
В этом случае провайдеры воспринимают друг друга как обычных клиентов и обмен маршрутов между ними идет как классический PE-CE обмен. Недостатком данного метода является тот факт, что на ASBR’ах необходимо настроить такое же количество vrf, сколько сайтов у конечных пользователей, а также создать такое количество саб-интерфейсов на стыке между двумя AS.
Первоначальный конфиг приводить не буду, он элементарный: внутри каждой AS работает OSPF+LDP+BGP IPv4 Unicast. Маршрутизаторы R5/R6 используются в качестве RR-ов.
Настройка не сложная: необходимо поднять BGP-VPNv4 сессию между PE и ASBR внутри каждой AS, далее внутри address-family vrf настроить BGP между ASBR’ми.
R7#sh run | s bgp
router bgp 10
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 5.5.5.5 remote-as 10
neighbor 5.5.5.5 update-source Loopback0
!
address-family ipv4
neighbor 5.5.5.5 activate
no auto-summary
no synchronization
exit-address-family
!
address-family vpnv4
neighbor 5.5.5.5 activate
neighbor 5.5.5.5 send-community extended
exit-address-family
!
address-family ipv4 vrf A
redistribute connected
no synchronization
exit-address-family
R1#sh run | s bgp
router bgp 10
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 5.5.5.5 remote-as 10
neighbor 5.5.5.5 update-source Loopback0
!
address-family ipv4
neighbor 5.5.5.5 activate
no auto-summary
no synchronization
exit-address-family
!
address-family vpnv4
neighbor 5.5.5.5 activate
neighbor 5.5.5.5 send-community extended
exit-address-family
!
address-family ipv4 vrf B
no synchronization
exit-address-family
!
address-family ipv4 vrf A
neighbor 10.1.12.2 remote-as 20
neighbor 10.1.12.2 activate
no synchronization
exit-address-family
R5#sh run | s bgp
router bgp 10
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 10
neighbor 1.1.1.1 update-source Loopback0
neighbor 3.3.3.3 remote-as 10
neighbor 3.3.3.3 update-source Loopback0
neighbor 7.7.7.7 remote-as 10
neighbor 7.7.7.7 update-source Loopback0
neighbor 8.8.8.8 remote-as 10
neighbor 8.8.8.8 update-source Loopback0
!
address-family ipv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 route-reflector-client
neighbor 3.3.3.3 activate
neighbor 3.3.3.3 route-reflector-client
neighbor 7.7.7.7 activate
neighbor 7.7.7.7 route-reflector-client
neighbor 8.8.8.8 activate
neighbor 8.8.8.8 route-reflector-client
no auto-summary
no synchronization
exit-address-family
!
address-family vpnv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community extended
neighbor 1.1.1.1 route-reflector-client
neighbor 7.7.7.7 activate
neighbor 7.7.7.7 send-community extended
neighbor 7.7.7.7 route-reflector-client
exit-address-family
Внутри AS20 (правый провайдер) настройка абсолютно аналогичная.
R9#traceroute vrf A 77.77.77.77 so 99.99.99.99
Type escape sequence to abort.
Tracing the route to 77.77.77.77
1 10.1.69.6 [MPLS: Labels 19/20 Exp 0] 252 msec 244 msec 328 msec
2 10.1.46.4 [MPLS: Labels 17/20 Exp 0] 236 msec 268 msec 240 msec
3 10.1.12.2 [MPLS: Label 20 Exp 0] 68 msec 212 msec 200 msec
4 10.1.12.1 360 msec 368 msec 232 msec
5 10.1.13.3 [MPLS: Labels 19/23 Exp 0] 416 msec 404 msec 484 msec
6 10.1.35.5 [MPLS: Labels 18/23 Exp 0] 368 msec 444 msec 388 msec
7 77.77.77.77 444 msec 456 msec 348 msec
Как видим связь между сайтами клиента есть.
R1#show ip route vrf A bgp
99.0.0.0/32 is subnetted, 1 subnets
B 99.99.99.99 [20/0] via 10.1.12.2, 01:20:11
77.0.0.0/32 is subnetted, 1 subnets
B 77.77.77.77 [200/0] via 7.7.7.7, 01:30:35
Теперь давайте посмотрим, как формируется этот LSP. Первым делом посмотрим, какую VPN-метку будет использовать R9 при передаче пакетов.
R9#show bgp vpnv4 u vrf A 77.77.77.77/32
BGP routing table entry for 20:1:77.77.77.77/32, version 5
Paths: (1 available, best #1, table A)
Not advertised to any peer
10
2.2.2.2 (metric 4) from 6.6.6.6 (6.6.6.6)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Extended Community: RT:20:1
Originator: 2.2.2.2, Cluster list: 6.6.6.6
mpls labels in/out nolabel/20 ! vpn label
В данной ситуации видим, что эта метка равна 20 и получена она от 2.2.2.2 (R2). Теперь надо понять, какую транспортную метку будет использовать R9 для того, чтобы достичь свой NH
R9#show mpls forwarding-table 2.2.2.2
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
19 19 2.2.2.2/32 0 Fa0/0 10.1.69.6
Таким образом, стек меток, сформированный R9 составляет {19;20}. Это видно при выводе traceroute (1 10.1.69.6 [MPLS: Labels 19/20 Exp 0])
Также это можно увидеть при выводе дебага на R6:
R6#debug mpls packet
*Jul 16 20:00:07.795: MPLS: Gi1/0: recvd: CoS=0, TTL=250, Label(s)=18/25
*Jul 16 20:00:07.799: MPLS: Fa0/0: xmit: CoS=0, TTL=249, Label(s)=25
*Jul 16 20:00:07.895: MPLS: Fa0/0: recvd: CoS=0, TTL=255, Label(s)=19/20
Далее mpls пакет спокойно достигает R2. Посмотрим, что с ним происходит на ASBR.
R2#show mpls forwarding-table labels 20
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
20 Untagged 77.77.77.77/32[V] 1620 Gi1/0.1 10.1.12.1
Из записей LFIB видно, что пакет вылетает через интерфейс в сторону 2го ASBR как Untagged, т.е. native ip. Это происходит из-за того, что между провайдерами не поднят обмен метками.
На R1 пакет прилетает внутри vrf-интерфейса. Посмотрим, что с ним происходит дальше
R1#show ip route vrf A 77.77.77.77
Routing entry for 77.77.77.77/32
Known via «bgp 10», distance 200, metric 0, type internal
Last update from 7.7.7.7 00:13:45 ago
Routing Descriptor Blocks:
* 7.7.7.7 (Default-IP-Routing-Table), from 5.5.5.5, 00:13:45 ago
Route metric is 0, traffic share count is 1
AS Hops 0
R1#show bgp vpnv4 unicast vrf A 77.77.77.77/32
BGP routing table entry for 222:2:77.77.77.77/32, version 3
Paths: (1 available, best #1, table A)
Advertised to update-groups:
2
Local, imported path from 10:1:77.77.77.77/32
7.7.7.7 (metric 4) from 5.5.5.5 (5.5.5.5)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Extended Community: RT:10:1
Originator: 7.7.7.7, Cluster list: 5.5.5.5
mpls labels in/out nolabel/23 ! vpn label from R7
R1 заново делает push меток, в качестве VPN-метки ставя значение 23, которое было получено от R7, а в качестве транспорта используется метка, полученная по LDP от R3.
R1#show mpls forwarding-table 7.7.7.7
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
18 19 7.7.7.7/32 0 Fa0/0 10.1.13.3
R7#show mpls forwarding-table labels 23
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
23 Aggregate 77.77.77.77/32[V] 3688
Метки: BGP, MPLS, VPN
Опубликовано: Маршрутизаторы и коммутаторы
Спасибо за труд. А продолжение про остальные варианты опций будет?
Да, обязательно.