segunda-feira, 18 de outubro de 2010

VPN – BGP Hub and Spoke


1        MPLS VPN Hub and Spoke

In hub-and-spoke MPLS VPN environments, the spoke routers have to have unique Route Distinguishers (RDs). In order to use the hub site as a transit point for connectivity in such an environment, the spoke sites export their routes to the hub. Spokes can talk to hubs, but spokes never have routes to other spokes.
Due to the current MPLS VPN implementation, you must apply a different RD for each spoke VRF. The MP-BGP selection process applies to all the routes that have to be imported into the same VRF plus all routes that have the same RD of such a VRF. Once the selection process is done, only the best routes are imported. In this case this can result in a best route which is not imported. Thus, customers must have different RDs per spoke-VRF.


2        Cenário

2.1           Objetivo

Seis roteadores (CE3, PE3, CE1, PE1, CE2 e PE2) são conectados formando o seguinte cenário:
         O protocolo de roteamento do backbone (PE1, PE2 e PE3) deverá ser o OSPF na área 0 com todas as interfaces divulgadas e com MBGP e LDP full-mesh entre os PEs no AS 123 para tráfego das vpns VRFs;
         Todos os roteadores CEs devem fazer parte da VRF VPN_A;
         O protocolo de roteamento PE-CE deverá ser o BGP seguindo as informações abaixo:
·         PE1xCE123: AS 65001, RD: 123:1, exporta o RT 123:1 e importa o RT 123:23
·         PE1xCE123: AS 65002, RD: 123:2, exporta o RT 123:23 e importa o RT 123:1
·         PE1xCE123: AS 65003, RD: 123:3, exporta o RT 123:23 e importa o RT 123:1
         As loopbacks dos CEs devem ser divulgadas no BGP e alcançadas por todos os CEs.

2.2           Topologia

Figure-01:              Topologia

2.3           IOS utilizados

         CE1, CE2, PE1, PE2, CE3 e PE3 – c7200-k91p-mz.122-25.S15.bin

2.4           Configuração dos Roteadores

2.4.1      Configurações do OSPF do Backbone

Em todos os roteadores configura-se o roteamento OSPF pelo comando “router ospf ” onde o “processo” é um numero do processo OSPF. O roteador também possui um router ID único que geralmente é a interface loopback ou então o maior endereço IP do roteador.
Para adicionar interfaces deve-se usar o comando “network
área ”. Um roteador pode ter interfaces em áreas distintas, define-se cada área pelo comando network.
Para o roteador fazer vizinhança OSPF é necessário que a rede da interface esteja no comando “network” e a interface não esteja configurada como “passive-interface”.

2.4.2      Configurações do MPLS

Antes de qualquer configuração, o Cisco Express forwarding deve ser habilitado com o comando “ip cef”. Para habilitar o MPLS no modo LDP, usa-se o comando global “mpls label protocol ldp”.
Para habilitar o MPLS nas interfaces, configura-se “mpls ip”.

2.4.3      Configuração do MBGP

Para estabelecer uma VPN é necessário configurar o MBGP para a troca de informações de prefixos de VPN. Pode-se somente configurar o MBGP nos roteadores PEs da rede que possuem conexão com os CEs, ou seja, conectados diretamente aos sites.
O MBGP funciona como o BGP, configura-se em todos os roteadores pelo comando “router bgp onde o “AS” é o Autonomous System do backbone. Dentro da configuração de BGP adicionam-se os vizinhos estaticamente com o comando “neighbor remote-as .
Adiciona-se o IP da interface loopback como Router-ID pelo comando “bgp router-id .
Como os roteadores dentro do mesmo AS não divulgarão as rotas IBGP entre eles, faz-se o full-mesh de conexão MBGP ou configuram-se os roteadores centrais como Router-reflectors adicionando os demais roteadores como clientes pelo comando “neighbor router-reflector-client”.
O MBGP é configurado dentro do protocolo BGP, porém deve-se separar a família de roteamento com o comando “address-family vpnv4”. Para o envio de prefixos das VPNs, deve-se habilitar o envio de community extendida com o comando “neighbor send-community extended”.
Todos os recursos como route-map, next-hop-self, router-reflector, etc. podem ser configurados dentro da família VPNv4 para manipular ou resolver problemas de roteamento.

2.4.4      Criando uma VPN VRF no BGP

Após todos os roteadores PEs da rede possuem conectividade MBGP, ou diretamente ou por router-reflector, cria-se a VPN com o comando “ip vrf ”, dentro desse comando ficam os parâmentros de marcação da VPN e das communities associadas aos prefixos daquela VPN. Configura-se o Route-Distinguisher da VPN, que deve ser único na rede, com comando “rd :”, e também cria-se a  community que será exportada para aqueles prefixos de rede com o comando “route-target :”, onde “import” significa importar as rotas e “export” exportar as rotas.
Cria-se então uma address-family dentro do BGP com o comando “address-family ipv4 vrf ” com o mesmo nome da VPN criada no “ip vrf” fora do roteamento BGP. Dentro dessa address-family são configuradas as redes que serão redistribuídas para os outros sites. Para divulgar as redes é necessário que a rede exista na tabela de roteamento interna e, ou adicionar o comando “network mask ou redistribuindo rotas para o MBGP com o comando “redistribute , que pode ser vinculado à um route-map para definir exatamente as rotas que serão divulgadas de um protocolo para outros sites.
Enfim, para que uma interface conectada ao CE faça parte da VPN BGP, usa-se o comando “ip vrf forwarding ” dentro da interface.

2.4.5      Configurando o Hub and Spoke

O Hub and spoke define que o roteamento entre os Spokes deve ser encaminhado para o site HUB, para isso uma solução é divulgar uma rota default pelo PE conectado ao site HUB com o comando no BGP “default-information originate” .

2.5           Observações e Bugs

Documentação:

2.6           Comandos Importantes de Verificação

Type escape sequence to abort.
Tracing the route to 3.3.3.3

  1 22.22.22.22 [AS 123] 164 msec
  2 11.11.11.11 [AS 123] 104 msec
  3 11.11.11.1 [AS 123] 80 msec
  4 11.11.11.11 [AS 123] 56 msec
  5 33.33.33.33 [AS 123] 252 msec
  6 33.33.33.3 [AS 123] 136 msec

3        Configuração


3.1           CE1

!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!        
interface Serial1/0
 no shutdown
 ip address 11.11.11.1 255.255.255.0
!
router bgp 65001
 network 1.1.1.1 mask 255.255.255.255
 neighbor 11.11.11.11 remote-as 123
!

3.2           PE1

ip cef
!
ip vrf VPN_A
 rd 123:1
 route-target export 123:1
 route-target import 123:23
!
mpls label protocol ldp
mpls ip
!
!
interface Loopback0
 ip address 10.10.10.10 255.255.255.255
!        
interface FastEthernet0/0
 ip address 12.12.12.1 255.255.255.0
 duplex full
 no shutdown
 mpls ip
!
interface FastEthernet0/1
 ip address 13.13.13.1 255.255.255.0
 duplex full
 no shutdown
 mpls ip
!
interface Serial1/0
 ip vrf forwarding VPN_A
 ip address 11.11.11.11 255.255.255.0
 no shutdown

!
router ospf 1
 router-id 10.10.10.10
 network 0.0.0.0 0.0.0.0 area 0
!
router bgp 123
 bgp router-id 10.10.10.10
 neighbor 20.20.20.20 remote-as 123
 neighbor 10.10.20.202 update-source Loopback0
 neighbor 30.30.30.30 remote-as 123
 neighbor 30.30.30.30 update-source Loopback0
 !
 address-family vpnv4
 neighbor 20.20.20.20 activate
 neighbor 20.20.20.20 send-community extended
 neighbor 30.30.30.30 activate
 neighbor 30.30.30.30 send-community extended
!
 address-family ipv4 vrf VPN_A
 neighbor 11.11.11.1 remote-as 65001
 neighbor 11.11.11.1 activate
 default-information originate
!
!
Ip route vrf VPN_A 0.0.0.0 0.0.0.0 11.11.11.1
!

3.3           CE2

!
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
!        
interface Serial1/0
 no shutdown
 ip address 22.22.22.2 255.255.255.0
!
router bgp 65002
 network 2.2.2.2 mask 255.255.255.255
 neighbor 22.22.22.22 remote-as 123
!

3.4           PE2

!
ip cef
!
ip vrf VPN_A
 rd 123:1
 route-target export 123:23
 route-target import 123:1
!
mpls label protocol ldp
mpls ip
!
!
interface Loopback0
 ip address 20.20.20.20 255.255.255.255
!        
interface FastEthernet0/0
 duplex full
 no shutdown
 ip address 12.12.12.2 255.255.255.0
 mpls ip
!
interface FastEthernet0/1
 ip address 23.23.23.2 255.255.255.0
 duplex full
 no shutdown
 mpls ip
!
interface Serial1/0
 ip vrf forwarding VPN_A
 ip address 22.22.22.22 255.255.255.0
 no shutdown
!
router ospf 1
 router-id 20.20.20.20
 network 0.0.0.0 0.0.0.0 area 0
!
router bgp 123
 bgp router-id 20.20.20.20
 neighbor 10.10.10.10 remote-as 123
 neighbor 10.10.10.10 update-source Loopback0
 neighbor 30.30.30.30 remote-as 123
 neighbor 30.30.30.30 update-source Loopback0
 !
 address-family ipv4
 neighbor 10.10.10.10 activate
 neighbor 30.30.30.30 activate
!
 address-family vpnv4
 neighbor 10.10.10.10 activate
 neighbor 10.10.10.10 send-community extended
 neighbor 30.30.30.30 activate
 neighbor 30.30.30.30 send-community extended
!
 address-family ipv4 vrf VPN_A
 neighbor 22.22.22.2 remote-as 65002
 neighbor 22.22.22.2 activate
!

3.5           CE3

!
interface Loopback0
 ip address 3.3.3.3 255.255.255.255
!        
interface Serial1/0
 no shutdown
 ip address 33.33.33.3 255.255.255.0
!
router bgp 65003
 network 3.3.3.3 mask 255.255.255.255
 neighbor 33.33.33.33 remote-as 123
!

3.6           PE3

!
ip cef
!
ip vrf VPN_A
 rd 123:1
 route-target export 123:23
 route-target import 123:1
!
mpls label protocol ldp
mpls ip
!
!
!
interface Loopback0
 ip address 30.30.30.30 255.255.255.255
!        
interface FastEthernet0/0
 ip address 13.13.13.3 255.255.255.0
 duplex full
 no shutdown
 mpls ip
!
interface FastEthernet0/1
 ip address 23.23.23.3 255.255.255.0
 duplex full
 no shutdown
 mpls ip
!
interface Serial1/0
 ip vrf forwarding VPN_A
 ip address 33.33.33.33 255.255.255.0
 no shutdown
!
router ospf 1
 router-id 30.30.30.30
 network 0.0.0.0 0.0.0.0 area 0
!
router bgp 123
 bgp router-id 30.30.30.30
 neighbor 10.10.10.10 remote-as 123
 neighbor 10.10.10.10 update-source Loopback0
 neighbor 20.20.20.20 remote-as 123
 neighbor 20.20.20.20 update-source Loopback0
 !
 address-family ipv4
 neighbor 10.10.10.10 activate
 neighbor 20.20.20.20 activate
!
 address-family vpnv4
 neighbor 10.10.10.10 activate
 neighbor 10.10.10.10 send-community extended
 neighbor 20.20.20.20 activate
 neighbor 20.20.20.20 send-community extended
!
 address-family ipv4 vrf VPN_A
 neighbor 33.33.33.3 remote-as 65003
 neighbor 33.33.33.3 activate
!