[GTER] BGP de borda com redundância de Caixa e apenas uma sessão BGP

Douglas Fischer fischerdouglas at gmail.com
Tue Dec 18 22:56:52 -02 2012


Senhores,
quero aqui compartilhar uma gambiarra com o "q" de elegância que desenvolvi
para atender o cenário de nossa empresa.

Nossa empresa, dentro outros serviços, opera dois datacenteres com foco em
serviços gerenciados.
Por causa desse nicho de mercado, a nossa maior premissa é redundância.
E sendo assim temos TUDO duplicado.

E na parte de borda temos dois conjuntos de Switch-DMZ,
Firewall-em-fail-over, e Router de Borda.

Na implantação do ASN de nossa empresa nosso maior desafio foi implementar
algum mecanismo que provesse redundância automática em caso de falha de uma
das caixas.

A receita de bolo padrão para esses casos: Router_A só faz BGP com
Operadora_A e Router_B só faz BGP com Operadora_B e um iBGP entre eles, não
atendia o requisito abaixo:
   "Caso uma das caixas pare,
    mas os 2 links estiverem operacionais,
    a outra caixa deve tocar os dois links."

As operadoras vinham sempre com o papinho mole de que "duas sessões BGP
oneram os nossos PE em processamento e memória, blá blá blá..." e que por
isso não poderiam liberar as duas sessões BGP.
A verdade é que como somos nanicos perto dos grande nomes do mercado, eles
não se dispunham a trabalhar isso comercialmente.

Então bolei uma forma de subir uma sessão BGP apenas e garantir H.A.
Fiz isso usando:
- e-BGP e VRRP(means /29) na rede WAN da Operadora
- Loopbacks do e-BGP exclusivas para cada operadora
- Embeeded Event Manager para aplicar e desaplicar comandos conforme o
cenário muda.

Para isso o cenário abaixo foi montado:
- Dois sites, A e B.
- Um router Cisco ISR-G2 c/ 2.5GB de memória em cada Site.
- Um switch de DMZ em cada Site, interligados por fibra.
- Um link de cada operadora chegando em cada Site.
   - Link da Operadora A na Vlan 2000
      - Rede WAN com a operadora sendo um /29
        - A.A.A.1 IP do Borda da Operadora
        - A.A.A.2 IP Virtual entre os nossos dois routers.
        - A.A.A.5 IP do nosso router A
        - A.A.A.6 IP do nosso router B
      - Borda da Operadora estabelecendo e-BGP um um IP do meu bloco que
está em uma loopback /32
      - O Borda da Operadora tem uma rota para esse IP da loopback
apontando para o IP Virtual(VRRP) que roda entre os nossos dois bordas.
   - Link da Operadora B na Vlan 3000
      - Rede WAN com a operadora sendo um /29
        - B.B.B.1 IP do Borda da Operadora
        - B.B.B.2 IP Virtual entre os nossos dois routers.
        - B.B.B.5 IP do nosso router A
        - B.B.B.6 IP do nosso router B
      - Borda da Operadora estabelecendo e-BGP um um IP do meu bloco que
está em uma loopback /32
      - O Borda da Operadora tem uma rota para esse IP da loopback
apontando para o IP Virtual(VRRP) que roda entre os nossos dois bordas.

P.S.: A maior encrenca foi conseguir o famigerado /29 na rede WAN junto a
operadora.
      Pensa numa briga quase infindável.


Seguem abaixo as configurações resumidas ao que realmente importa do router
primário e secundário.

Como o foco aqui era alta disponibilidade, a parte de filtros de BGP e
roteamento para dentro foi resumida ao máximo.

O itens <entre_maior_menor> são variáveis a serem substituídas para
realidade de cada um.

O Bloco que me foi alocado é representado por 177.???.???/22, com as
sub-redea 177.???.??0.0/24 177.???.??0.1/24 177.???.??0.2/24
177.???.??3.0/24.

Foi criada uma Vlan para inter-routing rodando uma sub-rede /31 só para
roda o iBGP, pois na sub-interface de DMZ eu tinha controles de
traffic-shaping e também route-map para redirecionar trafego conforme a
necessidade.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!Router Primário!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
interface Loopback<MEU_ASN>
 description Loopback p/ definir Router-ID
 ip address 177.???.?0.0 255.255.255.255
!
interface Loopback<ASN_OPERADORA_A>
 description Loopback p/ e-BGP com operadora A
 ip address 177.???.?0.2 255.255.255.255
!
interface Loopback<ASN_OPERADORA_B>
 description Loopback p/ e-BGP com operadora B
 ip address 177.???.?0.3 255.255.255.255
!
interface GigabitEthernet0/0
 description Redes Internas - DMZ
 no ip address
 ip nbar protocol-discovery
 ip flow ingress
 load-interval 30
 duplex auto
 speed auto
!
interface GigabitEthernet0/0.1100
 description DMZ
 encapsulation dot1Q 1100
 ip address 177.???.??0.34 255.255.255.224
 ip nbar protocol-discovery
 ip flow ingress
 vrrp 1 ip 177.???.??0.33
 vrrp 1 priority 150
!
interface GigabitEthernet0/0.1150
 description Inter-Routing
 encapsulation dot1Q 1150
 ip address 177.???.??2.0 255.255.255.254
 ip nbar protocol-discovery
 ip flow ingress
!
interface GigabitEthernet0/1
 description Redes Externas - Operadoras, PTT, etc...
 no ip address
 ip nbar protocol-discovery
 ip flow ingress
 load-interval 30
 duplex auto
 speed auto
!
interface GigabitEthernet0/1.2000
 encapsulation dot1Q 2000
 ip address A.A.A.5 255.255.255.248
 ip nbar protocol-discovery
 ip flow ingress
 vrrp 1 ip A.A.A.2
 vrrp 1 priority 150
!
interface GigabitEthernet0/1.3000
 encapsulation dot1Q 3000
 ip address B.B.B.5 255.255.255.248
 ip nbar protocol-discovery
 ip flow ingress
 vrrp 250 ip B.B.B.2
 vrrp 250 priority 150
!
router bgp <MEU_ASN>
 bgp router-id 177.???.??0.0
 bgp log-neighbor-changes
 network 177.??.??.0 mask 255.255.252.0
 neighbor 177.??.?+2.1 remote-as <MEU_ASN>
 neighbor 177.??.?+2.1 update-source GigabitEthernet0/0.1150
 neighbor 177.??.?+2.1 next-hop-self
 neighbor 177.??.?+2.1 soft-reconfiguration inbound
 neighbor A.A.A.1 remote-as <ASN_OPERADORA_A>
 neighbor A.A.A.1 ebgp-multihop 3
 neighbor A.A.A.1 update-source Loopback<ASN_OPERADORA_A>
 neighbor A.A.A.1 soft-reconfiguration inbound
 neighbor A.A.A.1 prefix-list MEUS-BLOCOS out
 neighbor B.B.B.1 remote-as <ASN_OPERADORA_B>
 neighbor B.B.B.1 ebgp-multihop 3
 neighbor B.B.B.1 update-source Loopback<ASN_OPERADORA_B>
 neighbor B.B.B.1 soft-reconfiguration inbound
 neighbor B.B.B.1 prefix-list MEUS-BLOCOS out
!
ip local policy route-map FORCE-LOCAL-PACKETS-ROUTING-BY-SOURCE
!
ip route 177.???.???.0 255.255.252.0 Null0
ip route 177.???.??0.0 255.255.255.255 177.???.??2.1
!
ip access-list extended NET-<OPERADORA-A>-WAN
 permit ip A.A.A.0 0.0.0.7 any
ip access-list extended NET-<OPERADORA-B>-WAN
 permit ip B.B.B.0 0.0.0.7 any
!
!
ip prefix-list MEUS-BLOCOS seq 5 permit 177.??.??.0/22
!
route-map FORCE-LOCAL-PACKETS-ROUTING-BY-SOURCE permit <ASN_OPERADORA_A>
 match ip address NET-<OPERADORA-A>-WAN
 set ip next-hop A.A.A.1
!
route-map FORCE-LOCAL-PACKETS-ROUTING-BY-SOURCE permit <ASN_OPERADORA_B>
 match ip address NET-<OPERADORA-B>-WAN
 set ip next-hop B.B.B.1
!
event manager applet SYSLOG_VRRP_WAN-<OPERADORA-A>_EVENT_UP
 event syslog pattern "VRRP-6-STATECHANGE: Gi0/1.2000 Grp 1 state .* ->
Master"
 action 1.1 syslog msg "VRRP WAN <OPERADORA-A>: This Router is now MASTER"
 action 2.1 cli command "enable"
 action 2.2 cli command "configure terminal"
 action 2.3 cli command "interface Loopback<ASN_OPERADORA_A>"
 action 2.4 cli command "no shutdown"
 action 2.5 cli command "router bgp <MEU_ASN>"
 action 2.6 cli command "no neighbor A.A.A.1 shutdown"
 action 2.7 cli command "end"
 action 2.8 cli command "exit"
event manager applet SYSLOG_VRRP_WAN-<OPERADORA-A>_EVENT_DOWN
 event syslog pattern "VRRP-6-STATECHANGE: Gi0/1.2000 Grp 1 state Master ->
.*"
 action 1.1 syslog msg "VRRP WAN <OPERADORA-A>: This Router is NOT MASTER
anymore"
 action 2.1 cli command "enable"
 action 2.2 cli command "configure terminal"
 action 2.3 cli command "interface Loopback<ASN_OPERADORA_A>"
 action 2.4 cli command "shutdown"
 action 2.5 cli command "router bgp <MEU_ASN>"
 action 2.6 cli command "neighbor A.A.A.1 shutdown"
 action 2.7 cli command "end"
 action 2.8 cli command "exit"
event manager applet SYSLOG_VRRP_WAN-<OPERADORA-B>_EVENT_UP
 event syslog pattern "VRRP-6-STATECHANGE: Gi0/1.3000 Grp 250 state .* ->
Master"
 action 1.1 syslog msg "VRRP WAN <OPERADORA-B>: This Router is now MASTER"
 action 2.1 cli command "enable"
 action 2.2 cli command "configure terminal"
 action 2.3 cli command "interface Loopback<ASN_OPERADORA_B>"
 action 2.4 cli command "no shutdown"
 action 2.5 cli command "router bgp <MEU_ASN>"
 action 2.6 cli command "no neighbor B.B.B.1 shutdown"
 action 2.7 cli command "end"
 action 2.8 cli command "exit"
event manager applet SYSLOG_VRRP_WAN-<OPERADORA-B>_EVENT_DOWN
 event syslog pattern "VRRP-6-STATECHANGE: Gi0/1.3000 Grp 250 state Master
-> .*"
 action 1.1 syslog msg "VRRP WAN <OPERADORA-B>: This Router is NOT MASTER
anymore"
 action 2.1 cli command "enable"
 action 2.2 cli command "configure terminal"
 action 2.3 cli command "interface Loopback<ASN_OPERADORA_B>"
 action 2.4 cli command "shutdown"
 action 2.5 cli command "router bgp <MEU_ASN>"
 action 2.6 cli command "neighbor B.B.B.1 shutdown"
 action 2.7 cli command "end"
 action 2.8 cli command "exit"
!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!Router Secundário!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
interface Loopback<MEU_ASN>
 description Loopback p/ definir Router-ID
 ip address 177.???.??0.1 255.255.255.255
!
interface Loopback<ASN_OPERADORA_A>
 description Loopback p/ e-BGP com operadora A
 shutdown
 ip address 177.???.??0.2 255.255.255.255
!
interface Loopback<ASN_OPERADORA_B>
 description Loopback p/ e-BGP com operadora B
 shutdown
 ip address 177.???.??0.3 255.255.255.255
!
interface GigabitEthernet0/0
 description Redes Internas - DMZ
 no ip address
 ip nbar protocol-discovery
 ip flow ingress
 load-interval 30
 duplex auto
 speed auto
!
interface GigabitEthernet0/0.1100
 description DMZ
 encapsulation dot1Q 1100
 ip address 177.???.??0.35 255.255.255.224
 ip nbar protocol-discovery
 ip flow ingress
 vrrp 1 ip 177.???.??0.33
 vrrp 1 priority 125
!
interface GigabitEthernet0/0.1150
 description Inter-Routing
 encapsulation dot1Q 1150
 ip address 177.???.??2.1 255.255.255.254
 ip nbar protocol-discovery
 ip flow ingress
!
interface GigabitEthernet0/1
 description Redes Externas - Operadoras, PTT, etc...
 no ip address
 ip nbar protocol-discovery
 ip flow ingress
 load-interval 30
 duplex auto
 speed auto
!
interface GigabitEthernet0/1.2000
 encapsulation dot1Q 2000
 ip address A.A.A.6 255.255.255.248
 ip nbar protocol-discovery
 ip flow ingress
 vrrp 1 ip A.A.A.2
 vrrp 1 priority 125
!
interface GigabitEthernet0/1.3000
 encapsulation dot1Q 3000
 ip address B.B.B.6 255.255.255.248
 ip nbar protocol-discovery
 ip flow ingress
 vrrp 250 ip B.B.B.2
 vrrp 250 priority 125
!
router bgp <MEU_ASN>
 bgp router-id 177.???.??0.1
 bgp log-neighbor-changes
 network 177.???.???.0 mask 255.255.252.0
 neighbor 177.???.??2.0 remote-as <MEU_ASN>
 neighbor 177.???.??2.0 update-source GigabitEthernet0/0.1150
 neighbor 177.???.??2.0 next-hop-self
 neighbor 177.???.??2.0 soft-reconfiguration inbound
 neighbor A.A.A.1 remote-as <ASN_OPERADORA_A>
 neighbor A.A.A.1 shutdown
 neighbor A.A.A.1 ebgp-multihop 3
 neighbor A.A.A.1 update-source Loopback<ASN_OPERADORA_A>
 neighbor A.A.A.1 soft-reconfiguration inbound
 neighbor A.A.A.1 prefix-list MEUS-BLOCOS out
 neighbor B.B.B.1 remote-as <ASN_OPERADORA_B>
 neighbor B.B.B.1 shutdown
 neighbor B.B.B.1 ebgp-multihop 3
 neighbor B.B.B.1 update-source Loopback<ASN_OPERADORA_B>
 neighbor B.B.B.1 soft-reconfiguration inbound
 neighbor B.B.B.1 prefix-list MEUS-BLOCOS out
!
ip local policy route-map FORCE-LOCAL-PACKETS-ROUTING-BY-SOURCE
!
ip route 177.???.???.0 255.255.252.0 Null0
ip route 177.???.??0.1 255.255.255.255 177.???.??2.0
!
ip access-list extended NET-<OPERADORA-A>-WAN
 permit ip A.A.A.0 0.0.0.7 any
ip access-list extended NET-<OPERADORA-B>-WAN
 permit ip B.B.B.0 0.0.0.7 any
!
!
ip prefix-list MEUS-BLOCOS seq 5 permit 177.??.??.0/22
!
route-map FORCE-LOCAL-PACKETS-ROUTING-BY-SOURCE permit <ASN_OPERADORA_A>
 match ip address NET-<OPERADORA-A>-WAN
 set ip next-hop A.A.A.1
!
route-map FORCE-LOCAL-PACKETS-ROUTING-BY-SOURCE permit <ASN_OPERADORA_B>
 match ip address NET-<OPERADORA-B>-WAN
 set ip next-hop B.B.B.1
!
event manager applet SYSLOG_VRRP_WAN-<OPERADORA-A>_EVENT_UP
 event syslog pattern "VRRP-6-STATECHANGE: Gi0/1.2000 Grp 1 state .* ->
Master"
 action 1.1 syslog msg "VRRP WAN <OPERADORA-A>: This Router is now MASTER"
 action 2.1 cli command "enable"
 action 2.2 cli command "configure terminal"
 action 2.3 cli command "interface Loopback<ASN_OPERADORA_A>"
 action 2.4 cli command "no shutdown"
 action 2.5 cli command "router bgp <MEU_ASN>"
 action 2.6 cli command "no neighbor A.A.A.1 shutdown"
 action 2.7 cli command "end"
 action 2.8 cli command "exit"
event manager applet SYSLOG_VRRP_WAN-<OPERADORA-A>_EVENT_DOWN
 event syslog pattern "VRRP-6-STATECHANGE: Gi0/1.2000 Grp 1 state Master ->
.*"
 action 1.1 syslog msg "VRRP WAN <OPERADORA-A>: This Router is NOT MASTER
anymore"
 action 2.1 cli command "enable"
 action 2.2 cli command "configure terminal"
 action 2.3 cli command "interface Loopback<ASN_OPERADORA_A>"
 action 2.4 cli command "shutdown"
 action 2.5 cli command "router bgp <MEU_ASN>"
 action 2.6 cli command "neighbor A.A.A.1 shutdown"
 action 2.7 cli command "end"
 action 2.8 cli command "exit"
event manager applet SYSLOG_VRRP_WAN-<OPERADORA-B>_EVENT_UP
 event syslog pattern "VRRP-6-STATECHANGE: Gi0/1.3000 Grp 250 state .* ->
Master"
 action 1.1 syslog msg "VRRP WAN <OPERADORA-B>: This Router is now MASTER"
 action 2.1 cli command "enable"
 action 2.2 cli command "configure terminal"
 action 2.3 cli command "interface Loopback<ASN_OPERADORA_B>"
 action 2.4 cli command "no shutdown"
 action 2.5 cli command "router bgp <MEU_ASN>"
 action 2.6 cli command "no neighbor B.B.B.1 shutdown"
 action 2.7 cli command "end"
 action 2.8 cli command "exit"
event manager applet SYSLOG_VRRP_WAN-<OPERADORA-B>_EVENT_DOWN
 event syslog pattern "VRRP-6-STATECHANGE: Gi0/1.3000 Grp 250 state Master
-> .*"
 action 1.1 syslog msg "VRRP WAN <OPERADORA-B>: This Router is NOT MASTER
anymore"
 action 2.1 cli command "enable"
 action 2.2 cli command "configure terminal"
 action 2.3 cli command "interface Loopback<ASN_OPERADORA_B>"
 action 2.4 cli command "shutdown"
 action 2.5 cli command "router bgp <MEU_ASN>"
 action 2.6 cli command "neighbor B.B.B.1 shutdown"
 action 2.7 cli command "end"
 action 2.8 cli command "exit"
!


-- 
Douglas Fernando Fischer
Engº de Controle e Automação



More information about the gter mailing list