Perfil 0
Perfil 1
Perfil 3
Nesta parte do artigo, veremos a opção de substituir a sinalização na rede de sobreposição de PIM para BGP.
Conforme discutido anteriormente (consulte o artigo sobre BGP Auto-Discovery), a fim de transmitir análogos de mensagens PIM, vários tipos de rotas foram inventados no BGP, cada um dos quais transportando certa funcionalidade. Além disso, existem mais tipos de rota do que tipos de mensagem no PIM.

"Por que colocar uma coruja em um globo?" - você pode perguntar, porque tudo funciona muito bem com o PIM também. E, em geral, você terá razão. A principal razão para o movimento de tal cavaleiro é a escalabilidade. O PIM, sendo em essência um protocolo Soft Driven, requer o envio constante de mensagens de serviço para seu funcionamento, o que em um determinado tamanho de implementação (se o número de nós começar a ultrapassar algumas centenas ou milhares) apresenta limitações devido à carga inevitável na CPU. BGP é um protocolo Hard Driven - ou seja, se algo foi dito uma vez, não é repetido; quaisquer atualizações do BGP devem-se exclusivamente a mudanças na rede.
Hoje vamos considerar dois cenários: usando PIM SSM e PIM ASM dentro do C-VRF.
SSM C-PIM
Para uma compreensão mais simples da sinalização BGP para a construção de árvores multicast, vamos começar nossa conversa com um SSM PIM mais simples.
Em primeiro lugar, vamos remover as configurações atuais do ponto de encontro e desativar os destinatários de tráfego:
CE4(config)#interface Loopback0
CE4(config-if)#no ip igmp join-group 231.1.1.2
CE4(config-if)#
CE15(config)#no ip pim bsr-candidate Loopback0 0
CE15(config)#no ip pim rp-candidate Loopback0 group-list 1
Em todos os PEs, indicaremos que o BGP funcionará para sinalização em vez de PIM. Isso é feito com o seguinte comando:
ip vrf C-ONE
mdt overlay use-bgp
O ponto de partida da observação será a situação sem a presença de fontes e destinatários de tráfego multicast. Apenas as rotas do tipo 1 devem estar presentes na tabela BGP:
PE1#show bgp ipv4 mvpn all
BGP table version is 406, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1.1.1.1:1 (default for vrf C-ONE)
*> [1][1.1.1.1:1][1.1.1.1]/12
0.0.0.0 32768 ?
*>i [1][1.1.1.1:1][2.2.2.2]/12
2.2.2.2 0 100 0 ?
*>i [1][1.1.1.1:1][3.3.3.3]/12
3.3.3.3 0 100 0 ?
*>i [1][1.1.1.1:1][4.4.4.4]/12
4.4.4.4 0 100 0 ?
Route Distinguisher: 2.2.2.2:1
*>i [1][2.2.2.2:1][2.2.2.2]/12
2.2.2.2 0 100 0 ?
Route Distinguisher: 3.3.3.3:1
Network Next Hop Metric LocPrf Weight Path
*>i [1][3.3.3.3:1][3.3.3.3]/12
3.3.3.3 0 100 0 ?
Route Distinguisher: 4.4.4.4:1
*>i [1][4.4.4.4:1][4.4.4.4]/12
4.4.4.4 0 100 0 ?
Vamos conectar o destinatário:
CE4(config-if)#ip igmp join 230.1.1.1 source 11.11.11.11
No PE mais próximo, uma rota BGP do 7º tipo é criada - isso é o equivalente à mensagem de junção PIM (S, G):
PE4#show bgp ipv4 mvpn all
Route Distinguisher: 1.1.1.1:1
*> [7][1.1.1.1:1][65001][11.11.11.11/32][230.1.1.1/32]/22
0.0.0.0 32768 ?
Logicamente, esta rota deve estar presente apenas no PE4 e PE1 (porque é por eles que o tráfego deve passar) e não no PE2 e PE3. Vamos checar:
PE1#show bgp ipv4 mvpn all | b \[7\]
*>i [7][1.1.1.1:1][65001][11.11.11.11/32][230.1.1.1/32]/22
4.4.4.4 0 100 0 ?
PE2#show bgp ipv4 mvpn all | b \[7\]
PE2#
PE3#show bgp ipv4 mvpn all | b \[7\]
PE3#
Como é que a rota originalmente gerada no PE4 só é importada no PE1?
Vejamos a entrada na tabela BGP com mais detalhes:
PE4#show bgp ipv4 mvpn all route-type 7 1.1.1.1:1 65001 11.11.11.11 230.1.1.1
BGP routing table entry for [7][1.1.1.1:1][65001][11.11.11.11/32][230.1.1.1/32]/22, version 533
Paths: (1 available, best #1, table MVPNv4-BGP-Table)
Advertised to update-groups:
7
Refresh Epoch 1
Local
0.0.0.0 from 0.0.0.0 (4.4.4.4)
Origin incomplete, localpref 100, weight 32768, valid, sourced, local, best
Extended Community: RT:1.1.1.1:1
rx pathid: 1, tx pathid: 0x0
A entrada do prefixo contém a comunidade estendida Route-target = 1.1.1.1:1, que foi adicionada ao prefixo vpnv4 pelo roteador, que do ponto de PE4 é um vizinho RPF:
PE1#show bgp vpnv4 unicast rd 1.1.1.1:1 11.11.11.11/32
BGP routing table entry for 1.1.1.1:1:11.11.11.11/32, version 670
Paths: (1 available, best #1, table C-ONE)
Advertised to update-groups:
1 17
Refresh Epoch 4
65011
172.1.11.11 (via vrf C-ONE) from 172.1.11.11 (11.11.11.11)
Origin IGP, metric 0, localpref 100, valid, external, best
Extended Community: RT:65001:1 MVPN AS:65001:0.0.0.0 MVPN VRF:1.1.1.1:1
mpls labels in/out 10018/nolabel
rx pathid: 0, tx pathid: 0x0
PE1#
PE2#show bgp vpnv4 unicast rd 2.2.2.2:1 11.11.11.11/32
BGP routing table entry for 2.2.2.2:1:11.11.11.11/32, version 762
Paths: (1 available, best #1, table C-ONE)
Advertised to update-groups:
1
Refresh Epoch 152
65011, imported path from 1.1.1.1:1:11.11.11.11/32 (global)
1.1.1.1 (metric 4) (via default) from 8.8.8.8 (8.8.8.8)
Origin IGP, metric 0, localpref 100, valid, internal, best
Extended Community: RT:65001:1 MVPN AS:65001:0.0.0.0 MVPN VRF:1.1.1.1:1
Originator: 1.1.1.1, Cluster list: 8.8.8.8
Connector Attribute: count=1
type 1 len 12 value 1.1.1.1:1:1.1.1.1
mpls labels in/out nolabel/10018
rx pathid: 0, tx pathid: 0x0
Vamos verificar a conectividade:
CE1#ping 230.1.1.1 so 11.11.11.11 rep 3
Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 230.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 11.11.11.11
Reply to request 0 from 14.14.14.14, 7 ms
Reply to request 0 from 14.14.14.14, 8 ms
Reply to request 1 from 14.14.14.14, 7 ms
Reply to request 1 from 14.14.14.14, 9 ms
Reply to request 2 from 14.14.14.14, 7 ms
Reply to request 2 from 14.14.14.14, 7 ms
C-PIM ASM
No caso do C-PIM em modo SSM, tudo é bastante simples. Para que o mVPN funcione corretamente, é suficiente criar duas rotas BGP adicionais (tipos).
Mas e se um ASM PIM mais complexo for usado dentro do C-VRF?
Em primeiro lugar, vemos que todos os CEs sabem informações sobre o ponto de encontro:
CE2#show ip pim rp mapp
CE2#show ip pim rp mapping
Auto-RP is not enabled
PIM Group-to-RP Mappings
Group(s) 231.1.1.0/24
RP 15.15.15.15 (?), v2
Info source: 15.15.15.15 (?), via bootstrap, priority 0, holdtime 150
Uptime: 1d04h, expires: 00:02:09
CE2#
Como? Se olharmos para a tabela BGP, não encontraremos nenhum indício deste ponto lá:
PE1#show bgp ipv4 mvpn all
BGP table version is 682, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1.1.1.1:1 (default for vrf C-ONE)
*> [1][1.1.1.1:1][1.1.1.1]/12
0.0.0.0 32768 ?
*>i [1][1.1.1.1:1][2.2.2.2]/12
2.2.2.2 0 100 0 ?
*>i [1][1.1.1.1:1][3.3.3.3]/12
3.3.3.3 0 100 0 ?
*>i [1][1.1.1.1:1][4.4.4.4]/12
4.4.4.4 0 100 0 ?
Route Distinguisher: 2.2.2.2:1
*>i [1][2.2.2.2:1][2.2.2.2]/12
2.2.2.2 0 100 0 ?
Route Distinguisher: 3.3.3.3:1
Network Next Hop Metric LocPrf Weight Path
*>i [1][3.3.3.3:1][3.3.3.3]/12
3.3.3.3 0 100 0 ?
Route Distinguisher: 4.4.4.4:1
*>i [1][4.4.4.4:1][4.4.4.4]/12
4.4.4.4 0 100 0 ?
Não se esqueça de que temos um PMSTI com PIM ativado:
PE1#show ip pim vrf C-ONE interface
Address Interface Ver/ Nbr Query DR DR
Mode Count Intvl Prior
172.1.11.1 GigabitEthernet2.111 v2/S 1 30 1 172.1.11.11
172.1.15.1 GigabitEthernet2.115 v2/S 1 30 1 172.1.15.15
1.1.1.1 Tunnel2 v2/S 0 30 1 1.1.1.1

A partir disso, pode-se tirar uma conclusão importante - algumas mensagens PIM (mesmo com sinalização BGP) são transmitidas pelo backbone dentro da estrutura do MDT padrão .

Imagine que uma fonte apareça na rede (atrás do roteador CE2). Como atualmente não há entradas mRIB no CE2, o roteador designado PIM (em nosso caso, é o próprio CE2) envia uma mensagem de registro ao ponto de encontro, sinalizando assim a presença de uma fonte ativa na rede.

Uma árvore é criada no ponto de encontro (12.12.12.12, 231.1.1.1):
CE5#show ip mroute | b \(
(*, 231.1.1.1), 00:00:19/stopped, RP 15.15.15.15, flags: SP
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list: Null
(12.12.12.12, 231.1.1.1), 00:00:19/00:02:40, flags: P
Incoming interface: GigabitEthernet2.115, RPF nbr 172.1.15.1
Outgoing interface list: Null
E, uma vez que não há destinatários de tráfego ativos na rede (não há árvore (*, 231.1.1.1)), uma mensagem de registro-parada é gerada do lado CE5


Em resposta ao recebimento de Register-Stop, CE2 suspende a transmissão de dados (sem interfaces no OIL):
CE2#show ip mroute 231.1.1.1
(12.12.12.12, 231.1.1.1), 00:00:07/00:02:54, flags: PFT
Incoming interface: Loopback0, RPF nbr 0.0.0.0
Outgoing interface list: Null
Agora, imagine que haja um destinatário na rede interessado no tráfego para o grupo 231.1.1.1. No PE4, uma rota aparece dentro do C-VRF:
PE4#show ip mroute vrf C-ONE 231.1.1.1 | b \(
(*, 231.1.1.1), 00:00:44/00:02:45, RP 15.15.15.15, flags: Sg
Incoming interface: Tunnel0, RPF nbr 1.1.1.1
Outgoing interface list:
GigabitEthernet2.414, Forward/Sparse, 00:00:44/00:02:45
E uma rota BGP do 6º tipo é criada, que é o equivalente a PIM Join (*, 231.1.1.1):
PE4#show bgp ipv4 mvpn all
Route Distinguisher: 1.1.1.1:1
*> [6][1.1.1.1:1][65001][15.15.15.15/32][231.1.1.1/32]/22
0.0.0.0 32768 ?
PE4#show bgp ipv4 mvpn all route-type 6 1.1.1.1:1 65001 15.15.15.15 231.1.1.1
BGP routing table entry for [6][1.1.1.1:1][65001][15.15.15.15/32][231.1.1.1/32]/22, version 808
Paths: (1 available, best #1, table MVPNv4-BGP-Table)
Advertised to update-groups:
8
Refresh Epoch 1
Local
0.0.0.0 from 0.0.0.0 (4.4.4.4)
Origin incomplete, localpref 100, weight 32768, valid, sourced, local, best
Extended Community: RT:1.1.1.1:1
rx pathid: 1, tx pathid: 0x0
Na saída acima, você precisa observar a comunidade estendida Route-target = 1.1.1.1:1. O que é e de onde veio?
Vamos verificar a presença desse prefixo em outros PEs:
PE2#show bgp ipv4 mvpn all route-type 6 1.1.1.1:1 65001 15.15.15.15 231.1.1.1
% Network not in table
PE3#show bgp ipv4 mvpn all route-type 6 1.1.1.1:1 65001 15.15.15.15 231.1.1.1
% Network not in table
PE1#show bgp ipv4 mvpn all route-type 6 1.1.1.1:1 65001 15.15.15.15 231.1.1.1
BGP routing table entry for [6][1.1.1.1:1][65001][15.15.15.15/32][231.1.1.1/32]/22, version 698
Paths: (1 available, best #1, table MVPNv4-BGP-Table)
Not advertised to any peer
Refresh Epoch 2
Local
4.4.4.4 (metric 3) from 8.8.8.8 (8.8.8.8)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Extended Community: RT:1.1.1.1:1
Originator: 4.4.4.4, Cluster list: 8.8.8.8
rx pathid: 0, tx pathid: 0x0
Essa. o prefixo existe apenas no PE1. O que é interessante é o fato de que o ponto de encontro (15.15.15.15) está localizado exatamente no local atrás do PE1.
Conhecendo a finalidade da Rota-alvo (importação de rotas para um VRF específico), a conclusão se sugere - RT = 1.1.1.1:1 é conhecido por PE1 e desconhecido por PE2 / PE3. Ou seja, o fato é óbvio que o PE4 gerou uma rota BGP descrevendo o PIM Shared Tree Join de tal forma que foi processado apenas no PE atrás do qual o ponto de encontro está realmente localizado (na verdade, este é um análogo da transmissão do PIM Join por meio da interface RPF). Mas como PE1 e PE4 reconciliam os valores de destino da rota?
PE4 conduz RPF para endereço de ponto de encontro:
PE4#show ip rpf vrf C-ONE 15.15.15.15
RPF information for ? (15.15.15.15)
RPF interface: Tunnel0
RPF neighbor: ? (1.1.1.1)
RPF route/mask: 15.15.15.15/32
RPF type: unicast (bgp 65001)
Doing distance-preferred lookups across tables
BGP originator: 1.1.1.1
RPF topology: ipv4 multicast base, originated from ipv4 unicast base
PE1 é visto como vizinho RPF. Isso significa que o PE4 deve colocar um alvo de rota dentro de uma rota Tipo 6 que apenas o PE1 importará. Para responder à pergunta "como o PE4 sabe disso?" - vamos ver, para começar, a rota VPN:
PE4#show bgp vpnv4 unicast vrf C-ONE 15.15.15.15/32
BGP routing table entry for 4.4.4.4:1:15.15.15.15/32, version 859
Paths: (1 available, best #1, table C-ONE)
Advertised to update-groups:
1
Refresh Epoch 1
65015, imported path from 1.1.1.1:1:15.15.15.15/32 (global)
1.1.1.1 (metric 3) (via default) from 8.8.8.8 (8.8.8.8)
Origin IGP, metric 0, localpref 100, valid, internal, best
Extended Community: RT:65001:1 MVPN AS:65001:0.0.0.0 MVPN VRF:1.1.1.1:1
Originator: 1.1.1.1, Cluster list: 8.8.8.8
Connector Attribute: count=1
type 1 len 12 value 1.1.1.1:1:1.1.1.1
mpls labels in/out nolabel/10013
rx pathid: 0, tx pathid: 0x0
Observe a comunidade MVPN VRF adicional: 1.1.1.1: 1. Isso nada mais é do que a comunidade Route Import gerada pelo PE1. É este valor que é copiado como um destino de rota dentro da rota multicast, que permite ao PE1 importar a atualização recebida do PE4.
O resultado do processamento da rota BGP tipo 6 no PE4 é a criação de uma entrada na tabela de roteamento multicast:
PE4#show ip mroute vrf C-ONE
(*, 231.1.1.1), 00:23:31/00:02:33, RP 15.15.15.15, flags: Sg
Incoming interface: Tunnel0, RPF nbr 1.1.1.1
Outgoing interface list:
GigabitEthernet2.414, Forward/Sparse, 00:23:31/00:02:33
Nota - Observe que Tunnel0 (PMSTI) é especificado como a interface de entrada.
No ponto de encontro, a criação de uma árvore comum é concluída:
CE5#show ip mroute | b \(
(*, 231.1.1.1), 00:25:42/00:03:22, RP 15.15.15.15, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet2.115, Forward/Sparse, 00:25:42/00:03:22

Agora, se uma fonte de tráfego ativa aparecer na rede novamente, o ponto de encontro saberá como "combinar" as árvores (*, 231.1.1.1) e (12.12.12.12, 231.1.1.1).
CE5#show ip mroute | b \(
(*, 231.1.1.1), 00:47:12/stopped, RP 15.15.15.15, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet2.115, Forward/Sparse, 00:47:12/00:02:31
(12.12.12.12, 231.1.1.1), 00:00:23/00:02:43, flags: PT
Incoming interface: GigabitEthernet2.115, RPF nbr 172.1.15.1
Outgoing interface list: Null
O ponto de encontro cria uma Junção PIM (12.12.12.12, 231.1.1.1), enviando-a para CE2. PE1 recebe o PIM Join especificado e cria uma rota BGP do 7º tipo:
PE1#show bgp ipv4 mvpn all
Route Distinguisher: 2.2.2.2:1
*> [7][2.2.2.2:1][65001][12.12.12.12/32][231.1.1.1/32]/22
0.0.0.0 32768 ?
PE1#show bgp ipv4 mvpn all route-type 7 2.2.2.2:1 65001 12.12.12.12 231.1.1.1
BGP routing table entry for [7][2.2.2.2:1][65001][12.12.12.12/32][231.1.1.1/32]/22, version 726
Paths: (1 available, best #1, table MVPNv4-BGP-Table)
Advertised to update-groups:
8
Refresh Epoch 1
Local
0.0.0.0 from 0.0.0.0 (1.1.1.1)
Origin incomplete, localpref 100, weight 32768, valid, sourced, local, best
Extended Community: RT:2.2.2.2:1
rx pathid: 1, tx pathid: 0x0
Observe que o valor RD VPN remoto é definido como 2.2.2.2:1, uma vez que é através do PE2 que a verificação RPF da rota é concluída:
PE1#show ip rpf vrf C-ONE 12.12.12.12
RPF information for ? (12.12.12.12)
RPF interface: Tunnel2
RPF neighbor: ? (2.2.2.2)
RPF route/mask: 12.12.12.12/32
RPF type: unicast (bgp 65001)
Doing distance-preferred lookups across tables
BGP originator: 2.2.2.2
RPF topology: ipv4 multicast base, originated from ipv4 unicast base
E RT 2.2.2.2:1 foi adicionado ao VPNv4 um prefixo do lado PE2:
PE1#show bgp vpnv4 unicast vrf C-ONE 12.12.12.12
BGP routing table entry for 1.1.1.1:1:12.12.12.12/32, version 706
Paths: (1 available, best #1, table C-ONE)
Advertised to update-groups:
1
Refresh Epoch 2
65012, imported path from 2.2.2.2:1:12.12.12.12/32 (global)
2.2.2.2 (metric 4) (via default) from 8.8.8.8 (8.8.8.8)
Origin IGP, metric 0, localpref 100, valid, internal, best
Extended Community: RT:65001:1 MVPN AS:65001:0.0.0.0 MVPN VRF:2.2.2.2:1
Originator: 2.2.2.2, Cluster list: 8.8.8.8
Connector Attribute: count=1
type 1 len 12 value 2.2.2.2:1:2.2.2.2
mpls labels in/out nolabel/31
rx pathid: 0, tx pathid: 0x0
Esta etapa, de fato, completa a construção da árvore (12.12.12.12, 231.1.1.1) no trecho entre a fonte e o ponto de encontro:

Após receber uma rota do 7º tipo, o PE2 gera uma rota do 5º tipo, sinalizando a presença de uma fonte de tráfego ativa na rede. A rota é importada por todos os dispositivos PE.
PE2#show bgp ipv4 mvpn all
Route Distinguisher: 2.2.2.2:1 (default for vrf C-ONE)
*> [5][2.2.2.2:1][12.12.12.12][231.1.1.1]/18
0.0.0.0 32768 ?
PE2#show bgp ipv4 mvpn all route-type 5 12.12.12.12 231.1.1.1
BGP routing table entry for [5][2.2.2.2:1][12.12.12.12][231.1.1.1]/18, version 838
Paths: (1 available, best #1, table MVPNv4-BGP-Table, not advertised to EBGP peer)
Advertised to update-groups:
8
Refresh Epoch 1
Local
0.0.0.0 from 0.0.0.0 (2.2.2.2)
Origin incomplete, localpref 100, weight 32768, valid, sourced, local, best
Community: no-export
Extended Community: RT:65001:1
rx pathid: 0, tx pathid: 0x0
Quando uma rota tipo 5 é recebida, no PE4 (onde o receptor está localizado), a criação de uma árvore multicast é concluída:
PE4#show ip mroute vrf C-ONE
(12.12.12.12, 231.1.1.1), 00:22:24/00:02:51, flags: TnQ
Incoming interface: Tunnel0, RPF nbr 2.2.2.2
Outgoing interface list:
GigabitEthernet2.414, Forward/Sparse, 00:22:24/00:03:19
Nota - preste atenção ao sinalizador Q, que indica que a entrada foi criada graças à mensagem BGP Source-Active

A variante considerada da organização mVPN tem o codinome "Perfil 11". Suas principais características:
- para transmitir o tráfego multicast para a rede overlay, o MDT padrão é usado
- o protocolo mGRE é usado como um método de organização de transporte
- O protocolo BGP é usado para sinalizar a árvore multicast dentro da rede imposta