Ferramentas do usuário

Ferramentas do site


infra-estrutura:cisco:comunidade_bgp

Comunidade BGP

Entendendo o ambiente

Iremos estudar as comunidades BGP.

Temos o seguinte ambiente o qual possuímos para exemplificar o AS 100 e AS 30. Inicialmente achei melhor para entendimento montamos o feijão com arroz o BGP normal e aprendizado de rotas normal ai iremos inserir o uso das comunidades BGP.

Segue abaixo a configuração reduzida dos roteadores(obs tirei o exemplo do site da cisco https://www.cisco.com/c/pt_br/support/docs/ip/border-gateway-protocol-bgp/28784-bgp-community.html

R1

interface FastEthernet0/0
 ip address 10.10.12.1 255.255.255.0
 duplex full
!
interface FastEthernet1/0
 ip address 10.10.13.1 255.255.255.0
 speed auto
 duplex auto
!
router bgp 100
 network 10.10.12.0 mask 255.255.255.0

 neighbor 10.10.12.2 remote-as 100
 neighbor 10.10.12.2 next-hop-self
 neighbor 10.10.12.2 soft-reconfiguration inbound

 neighbor 10.10.13.3 remote-as 30
 neighbor 10.10.12.3 soft-reconfiguration inbound

R2

interface FastEthernet0/0
 ip address 10.10.12.2 255.255.255.0
 duplex full
!
interface FastEthernet1/0
 ip address 10.10.23.2 255.255.255.0
 speed auto
 duplex auto
!router bgp 100
 network 10.10.12.0 mask 255.255.255.0

 neighbor 10.10.12.1 remote-as 100
 neighbor 10.10.12.1 next-hop-self
 neighbor 10.10.12.1 soft-reconfiguration inbound

 neighbor 10.10.23.3 remote-as 30
 neighbor 10.10.23.3 soft-reconfiguration inbound

R3

interface Loopback0
 ip address 6.6.6.1 255.255.255.0
!
interface Loopback1
 ip address 7.7.7.1 255.255.255.0
!
interface FastEthernet0/0
 ip address 10.10.23.3 255.255.255.0
 duplex full
!
interface FastEthernet1/0
 ip address 10.10.13.3 255.255.255.0
 speed auto
 duplex auto
!
        
router bgp 30
 network 6.6.6.0 mask 255.255.255.0
 network 7.7.7.0 mask 255.255.255.0

 neighbor 10.10.13.1 remote-as 100
 neighbor 10.10.13.1 soft-reconfiguration inbound

 neighbor 10.10.23.2 remote-as 100
 neighbor 10.10.23.2 soft-reconfiguration inbound

Testes de conectividade no ambiente simples

Vamos verificar se todos os roteadores R1, R2 e R3 aprenderão as rotas.

R1#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override
 
Gateway of last resort is not set
 
      6.0.0.0/24 is subnetted, 1 subnets
B        6.6.6.0 [20/0] via 10.10.13.3, 00:30:05
      7.0.0.0/24 is subnetted, 1 subnets
B        7.7.7.0 [20/0] via 10.10.13.3, 00:30:05
      10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C        10.10.12.0/24 is directly connected, FastEthernet0/0
L        10.10.12.1/32 is directly connected, FastEthernet0/0
C        10.10.13.0/24 is directly connected, FastEthernet1/0
L        10.10.13.1/32 is directly connected, FastEthernet1/0
R1#

Notem que o roteador R1 aprendeu as rotas para as redes 6.6.6.0/24 e 7.7.7.0/24 pelo ip 10.10.13.3 que é o roteador R3 e via BGP, note o B no ínicio da linha.

vamos analisar a tabela BGP

R1#show ip bgp 
BGP table version is 8, local router ID is 200.200.200.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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  6.6.6.0/24       10.10.13.3               0             0 30 i
 * i                  10.10.12.2               0    100      0 30 i
 *>  7.7.7.0/24       10.10.13.3               0             0 30 i
 * i                  10.10.12.2               0    100      0 30 i
 * i 10.10.12.0/24    10.10.12.2               0    100      0 i
 *>                   0.0.0.0                  0         32768 i
R1#

Vamos pegar apenas a primeira rede 6.6.6.0/24 note que temos duas rotas para ele pelo ip 10.10.13.3(R3) e pelo 10.10.12.2(R2), sendo a rota escolhida 10.10.13.3 por estar diretamente conectado.

Vamos verificar as rotas recebidas pelo dois peers do roteador R1.

Rotas Anunciadas

Rotas anunciadas por R1 para 10.10.12.2

R1#show ip bgp neighbors 10.10.12.2 advertised-routes
BGP table version is 8, local router ID is 200.200.200.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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  6.6.6.0/24       10.10.13.3               0             0 30 i
 *>  7.7.7.0/24       10.10.13.3               0             0 30 i
 *>  10.10.12.0/24    0.0.0.0                  0         32768 i

Total number of prefixes 3 
R1#

Rotas anunciadas por R1 para 10.10.13.3(R3)

R1#show ip bgp neighbors 10.10.13.3 advertised-routes
BGP table version is 8, local router ID is 200.200.200.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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.10.12.0/24    0.0.0.0                  0         32768 i

Total number of prefixes 1 
R1#

Notem que as rotas são anunciadas conforme o previsto para R2 a rota local(rede 10.10.12.0/24) e as rotas aprendidas por R3(6.6.6.0/24 e 7.7.7.0/24).

Rotas Recebiddas

Rotas recebidas de 10.10.12.2(R2) em R1

Note para o comando abaixo funcionar precisamos do comando neighbor 10.10.12.2 soft-reconfiguration inbound.

R1#show ip bgp neighbors 10.10.12.2 received-routes 
BGP table version is 8, local router ID is 200.200.200.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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 * i 6.6.6.0/24       10.10.12.2               0    100      0 30 i
 * i 7.7.7.0/24       10.10.12.2               0    100      0 30 i
 * i 10.10.12.0/24    10.10.12.2               0    100      0 i

Total number of prefixes 3 
R1#

Rotas recebidas de 10.10.13.3(R3) em R1

R1#show ip bgp neighbors 10.10.13.3 received-routes 
BGP table version is 8, local router ID is 200.200.200.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, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  6.6.6.0/24       10.10.13.3               0             0 30 i
 *>  7.7.7.0/24       10.10.13.3               0             0 30 i

Total number of prefixes 2 
R1#

Notem que de R2 recebemos a rede local(10.10.12.0/24) e as redes do AS30(6.6.6.0/24 e 7.7.7.0/24). E para R3 recebemos as rede do AS30. notem que não recebemos a rede 10.10.12.0/24 porque o AS 30 não é transito.

Para os outros roteadores pode executar os mesmos comandos e verificar os mesmos resultados esperados, claro cada roteador recebendo as rotas para a rede em questão.

Comunidades BGP

Vamos começar a definir como funciona comunidades BGP bem simples e rápido.

Para R1

! aqui definimos para o peer 10.10.13.3 tudo anuncio de rotas que entrar
! sera analisado pelo route-map Peer-R3 na entrada(IN)
neighbor 10.10.13.3 route-map Peer-R3 in

! definiremos a lista de comunidades permitidas
ip bgp-community new-format
!--- atributo de comunidade com o formato AS:Numero.

!--- Define a list de comunidade 1 e 2.

ip community-list 1 permit 100:300
ip community-list 2 permit 100:250

! Definiremos o route-map Peer-R3        
! se casar com list de comunidade 1 configura o local preference 130
! se casar com list de comunidade 2 configura o local preference 125
! caso nao casar permite o anuncio
!
route-map Peer-R3 permit 10
 match community 1
 set local-preference 130
!         
route-map Peer-R3 permit 20
 match community 2
 set local-preference 125
!         
route-map Peer-R3 permit 30

Para R2

 neighbor 10.10.23.3 route-map Peer-R3 in
!
ip bgp-community new-format
!
ip community-list 1 permit 100:300
ip community-list 2 permit 100:250
!
route-map Peer-R3 permit 10
 match community 1
 set local-preference 130
! 
route-map Peer-R3 permit 20
 match community 2
 set local-preference 125
!
route-map Peer-R3 permit 30
!

Para R3

 neighbor 10.10.13.1 send-community
 neighbor 10.10.13.1 route-map Peer-R1 out
!
 neighbor 10.10.23.2 send-community
 neighbor 10.10.23.2 route-map Peer-R2 out
!
ip bgp-community new-format
!
access-list 101 permit ip host 6.6.6.0 host 255.255.255.0
access-list 102 permit ip host 7.7.7.0 host 255.255.255.0
!
!
route-map Peer-R1 permit 10
 match ip address 101
 set community 100:300
!
route-map Peer-R1 permit 20
 match ip address 102
 set community 100:250
!
route-map Peer-R2 permit 10
 match ip address 101
 set community 100:250
!
route-map Peer-R2 permit 20
 match ip address 102
 set community 100:300
!

Analisando resultado das comunidades BGP

Analise a saida do comunidade BGP para a rede 6.6.6.0 e 7.7.7.0 nos roteadores R1 e R2

Rede 6.6.6.0 em R1

R1#sh ip bgp 6.6.6.0
BGP routing table entry for 6.6.6.0/24, version 10
Paths: (3 available, best #2, table default)
  Advertised to update-groups:
     2         
  Refresh Epoch 2
  30, (received & used)
    10.10.12.2 from 10.10.12.2 (192.168.50.1)
      Origin IGP, metric 0, localpref 130, valid, internal
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 3
  30
    10.10.13.3 from 10.10.13.3 (7.7.7.1)
      Origin IGP, metric 0, localpref 130, valid, external, best
      Community: 100:300
      rx pathid: 0, tx pathid: 0x0
  Refresh Epoch 3
  30, (received-only)
    10.10.13.3 from 10.10.13.3 (7.7.7.1)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 100:300
      rx pathid: 0, tx pathid: 0
R1#

Rede 6.6.6.0 em R2

R2#show ip bgp 6.6.6.0
BGP routing table entry for 6.6.6.0/24, version 10
Paths: (3 available, best #2, table default)
  Advertised to update-groups:
     2         
  Refresh Epoch 2
  30, (received & used)
    10.10.12.1 from 10.10.12.1 (200.200.200.1)
      Origin IGP, metric 0, localpref 130, valid, internal
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 4
  30
    10.10.23.3 from 10.10.23.3 (7.7.7.1)
      Origin IGP, metric 0, localpref 130, valid, external, best
      Community: 100:250
      rx pathid: 0, tx pathid: 0x0
  Refresh Epoch 4
  30, (received-only)
    10.10.23.3 from 10.10.23.3 (7.7.7.1)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 100:250
      rx pathid: 0, tx pathid: 0
R2#

Rede 7.7.7.0 em R1

R1#sh ip bgp 7.7.7.0
BGP routing table entry for 7.7.7.0/24, version 9
Paths: (3 available, best #2, table default)
  Advertised to update-groups:
     2         
  Refresh Epoch 2
  30, (received & used)
    10.10.12.2 from 10.10.12.2 (192.168.50.1)
      Origin IGP, metric 0, localpref 130, valid, internal
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 3
  30
    10.10.13.3 from 10.10.13.3 (7.7.7.1)
      Origin IGP, metric 0, localpref 130, valid, external, best
      Community: 100:250
      rx pathid: 0, tx pathid: 0x0
  Refresh Epoch 3
  30, (received-only)
    10.10.13.3 from 10.10.13.3 (7.7.7.1)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 100:250
      rx pathid: 0, tx pathid: 0
R1#

Rede 7.7.7.7 em R2

R2#show ip bgp 7.7.7.0
BGP routing table entry for 7.7.7.0/24, version 11
Paths: (3 available, best #2, table default)
  Advertised to update-groups:
     2         
  Refresh Epoch 2
  30, (received & used)
    10.10.12.1 from 10.10.12.1 (200.200.200.1)
      Origin IGP, metric 0, localpref 130, valid, internal
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 4
  30
    10.10.23.3 from 10.10.23.3 (7.7.7.1)
      Origin IGP, metric 0, localpref 130, valid, external, best
      Community: 100:300
      rx pathid: 0, tx pathid: 0x0
  Refresh Epoch 4
  30, (received-only)
    10.10.23.3 from 10.10.23.3 (7.7.7.1)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 100:300
      rx pathid: 0, tx pathid: 0
R2#

Notem que as comunidades foram marcadas corretamente conforme previsto pelo route-map. Agora vamos analisar os local-pref.