segunda-feira, 17 de outubro de 2011

MVPN - RP Dinamico

1      Multicast VPN

A solução da Cisco de Multicast dentro de VPN Multicast é simples e bastante escalável. A arquitetura MVPN introduz protocolos e processos que ajuda a permitir que um ISP suporte multicast dentro de VPNs. O transporte de multicast através do backbone do ISP é transparente e é integrado de forma transparente a solução MPLS VPN.
A solução MVPN é baseado no Draft IETF draft-rosen-vpn-mcast-08.txt. A solução MVPN usa o GRE com uma arvore de encaminhamento chamada multicast distribution tree (MDT) para realizar a escalabilidade do multicast dentro do core network. O Cisco MVPN é Baseado em uma solução de domínio Multicast com os recursos default MDT e data MDT. O MVPN introduz informações de roteamento multicast na tabela de roteamento da VRF criando uma Multicast VRF.
É importante notar que o uso de MVPN não modifica o jeito que a rede do cliente é administrada em relação a Endereçamento, politicas de roteamento, topologia, etc. Também é importante lembrar que as redes multicast dos clientes não possuem nenhuma relação com a rede multicast do provedor. Da visão do provedor, os pacotes multicast dos clientes são meramente dados.

2      Cenário

2.1       Objetivo

 Seis roteadores (CE1, R1, CE2, R2, CE3 e R3) são conectados formando uma rede onde os roteadores R1, R2 e R3 formam um backbone que provê serviço de transporte para 3 CEs. Pede-se:
      O protocolo de roteamento de backbone R1, R2 e R3 deverá ser o ISIS na área 49.0000 com todas as interfaces divulgadas e com mBGP no AS 1 entre os PEs e LDP para tráfego das VRFs;
      Os CEs CE1, CE2 e CE3 deverão pertencer a mesma VPN VRF CE com RD/RT 1:1 e roteamento OSPF na área 0;
      Todos os roteadores CEs deverão candidatar suas respectivas loopbacks a RP por Auto-RP se anunciando para os grupos 224/8;
      Todos os roteadores CEs deverão ser candidatos a mapping agent do Auto-RP permitindo candidatos a RP somente para os grupos 224/8;
      Deve ser habilitado o tráfego multicast entre os CEs. O CE1 deve enviar join para o grupo 224.5.5.5;
      O RP da vrf deverá ser a loopback 0 do CE1;
      No backbone todos os PEs (R1, R2 e R3) deverão se candidatar a bootstrap router e a RP para o grupo 232/8 pelo modo Bootstrap. Porém, o BSR preferencialmente deverá ser o R2 e o RP deverá ser o R1 com prioridade 1 e o R2 e R3 com a prioridade default do DRAFT draft-ietf-pim-sm-bsr;
      O backbone não deverá usar o modo dense como backup;
      As interfaces com os CEs deverão ter filtro de multicast proibindo o grupo SSM;
      Deve ser habilitado o MDT no backbone pelo grupo 232.3.3.3;
      O protocolo multicast do backbone deverá ser o PIM com RP sendo a loopback do roteador P.

2.2       Topologia



2.3       IOS utilizados

      CE1, R1, CE2, R2, CE3 e R3 – c7200-k91p-mz.122-25.S15.bin

2.4       Configuração dos Roteadores

2.4.1    Configuração ISIS

No ISIS, em todos os roteadores configura-se adicionando o endereçamento NET de acordo com a área designada e endereçamento de loopback. Dentro das interfaces que farão parte do ISIS adiciona-se o comando “ip router isis” para habilitar o ISIS na interface.
Como por default um roteador ISIS é Level-1-2, deve-se configurar o level do roteador dentro da configuração de roteamento “router Isis”, além de, nas interfaces físicas, configurar o tipo de link que será feito através daquela interface, se Level-1 ou Level-2. Se não for configurado, automaticamente o ISIS fará fizinhança Level-1 e Level-2 por aquela interface, caso o roteador não tenha sido definido como Level 1 ou Level 2.

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”.

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    Configuração do Multicast no Backbone para suporte à VPN (SM)

É necessário configurar o roteamento multicast no roteador com o comando “ip multicast-routing” e também dentro das VPNs com o comando “ip multicast-routing vrf ” aplicado nos PEs.
Deve-se criar um RP para o backbone com o comando “ip pim rp-address ” e o RP da VRF também deve ser configurado nos PEs com o comando “ip pim vrf rp-address ”.

2.4.6    Configuração do Multicast na VPN

Antes de configurar o PIM é necessário configurar o roteamento multicast no roteador com o comando “ip multicast-routing”. No PIM a configuração para o sparse mode é feita a configuração “ip pim sparse-mode” nas interfaces com os roteadores que trafegam multicast. O Sparse mode necessita de um Rendevouz Point.
 A configuração de Rendevouz Point estático é feita pelo comando “ip pim rp-address ”.

2.4.7    Configuração da eleição de RP por Bootstrap

No PIM, para a utilização do Bootstrap para definir um RP, é necessário inicialmente que seja configurado o sparse mode usando a configuração na interface: “ip pim sparse-mode”.
Os roteadores que desejam se anunciar para serem BSR devem habilitar o envio de mensagem de candidatura com o comando “ip pim bsr-candidate [hash-mask-length]” onde a corresponde ao IP anunciado e o [hash-mask-length] corresponde ao comprimento de mascara que define uma prioridade do roteador ser BSR.
Já os roteadores que desejam se candidatar à RP devem habilitar o envio de mensagem de candidatura para o grupo com o comando “ip pim rp-candidate [group-list] [priority] ” onde a corresponde ao IP anunciado e a acl corresponde aos grupos que aquele roteador se candidata a ser RP. A prioridade define a preferência para ser RP que é avaliada pelo BSR.

2.4.8    Configuração da eleição por Auto-RP

Para a utilização do Auto-RP é necessário que sejam configurados tanto o Sparse quanto o Dense mode usando a configuração na interface: “ip pim sparse-dense-mode”. Habilita-se então o Auto-RP no roteador com o comando global “ip pim autorp listener”.
Os roteadores que desejam se anunciar para serem RP devem habilitar o envio de Cisco-RP-Announce em suas interfaces com o comando global “ip pim send-rp-announce scope group-list onde o é a interface do IP que é anunciado como RP, o é o numero de saltos que aquela mensagem chegará e a ACL indica os grupos multicast ao qual o roteador está se candidatando a ser RP.
Para habilitar um roteador para ser o Mapping Agent, ou seja, o roteador que definirá quem será o RP, deve-se habilitar o envio de Cisco-RP-Discovery por suas interfaces multicast com o comando global “ip pim send-rp-discovery scope onde o é a interface e o é o numero de saltos que aquela mensagem chegará.
Pode-se definir o RP para determinados grupos com filtro “ip pim rp-announce-filter rp-list group-list , onde a ACL1 define o RP e a ACL2 define os grupos que aquele RP será responsável.
A Cisco recomenda o uso de filtros multicast nos limites do backbone com o comando “ip multicast boundary , onde a ACL devem ser os grupos multicasts de Auto-RP (224.0.1.39 e 224.0.1.40) e o bloco do SSM 232.0.0.0/24.

2.4.9    Configurações do IGMP

O IGMP é configurado em todas as interfaces que estão com o multicast PIM configurado. Caso algum host conectado ao roteador enviar um trafego de “join multicast” o roteador automaticamente passará para o Source daquele grupo, caso exista.
Nesse exemplo pode-se utilizar o comando “ip igmp join-group ” para enviar uma solicitação de join no grupo multicast.

2.5       Observações e Bugs

2.6       Comandos Importantes de Verificação

PIM Group-to-RP Mappings
This system is a candidate RP (v2)

Group(s) 232.0.0.0/8
  RP 150.1.1.1 (?), v2
    Info source: 150.1.2.2 (?), via bootstrap, priority 1
         Uptime: 00:31:14, expires: 00:02:32
  RP 150.1.3.3 (?), v2
    Info source: 150.1.2.2 (?), via bootstrap, priority 192
         Uptime: 00:31:45, expires: 00:03:02
  RP 150.1.2.2 (?), v2
    Info source: 150.1.2.2 (?), via bootstrap, priority 192
         Uptime: 00:31:26, expires: 00:02:43

This system is an RP-mapping agent (Loopback100)

Group(s) 224.0.0.0/8
  RP 100.3.3.3 (?), v2v1
    Info source: 100.3.3.3 (?), elected via Auto-RP
         Uptime: 00:17:58, expires: 00:01:59
  RP 100.2.2.2 (?), v2v1
    Info source: 100.2.2.2 (?), via Auto-RP
         Uptime: 00:18:00, expires: 00:02:56
  RP 100.1.1.1 (?), v2v1
    Info source: 100.1.1.1 (?), via Auto-RP
         Uptime: 01:58:11, expires: 00:02:49

3      Configuração

3.1       CE1

!
ip multicast-routing
!
!
interface Loopback100
 ip address 100.1.1.1 255.255.255.255
 ip pim sparse-dense-mode
 ip igmp join-group 224.5.5.5
!
interface FastEthernet0/0.11
 encapsulation dot1Q 11
 ip address 11.11.11.2 255.255.255.0
 ip pim sparse-dense-mode
!
router ospf 1
 network 11.11.11.0 0.0.0.255 area 0
 network 100.1.1.1 0.0.0.0 area 0
!
!
ip pim autorp listener
ip pim accept-rp auto-rp 1
ip pim send-rp-announce Loopback100 scope 10 group-list 1
ip pim send-rp-discovery Loopback100 scope 10
ip pim rp-announce-filter rp-list 2 group-list 1
!
!
access-list 1 permit 224.0.0.0 0.255.255.255
access-list 2 permit 100.0.0.0 0.255.255.255
!

3.2       R1

!
ip cef
!
ip vrf CE
 rd 1:1
 route-target export 1:1
 route-target import 1:1
 mdt default 232.3.3.3

!
ip multicast-routing
ip multicast-routing vrf CE
mpls ldp router-id Loopback0
mpls label protocol ldp
!
!
interface Loopback0
 ip address 150.1.1.1 255.255.255.255
 ip pim sparse-mode
 ip router isis
!        
interface FastEthernet0/0.11
 encapsulation dot1Q 11
 ip vrf forwarding CE
 ip address 11.11.11.1 255.255.255.0
 ip pim sparse-dense-mode
 ip multicast boundary 10
!
interface FastEthernet0/0.12
 encapsulation dot1Q 12
 ip address 12.12.12.1 255.255.255.0
 ip pim sparse-mode
 ip router isis
 mpls ip
!
interface FastEthernet0/0.13
 encapsulation dot1Q 13
 ip address 13.13.13.1 255.255.255.0
 ip pim sparse-mode
 ip router isis
 mpls ip
!
router ospf 1 vrf CE
 redistribute bgp 1 subnets
 network 11.11.11.0 0.0.0.255 area 0
!
router isis
 net 49.0000.0000.0000.0001.00
 is-type level-2-only
!
router bgp 1
 neighbor 150.1.2.2 remote-as 1
 neighbor 150.1.2.2 update-source Loopback0
 neighbor 150.1.3.3 remote-as 1
 neighbor 150.1.3.3 update-source Loopback0
 !
 address-family vpnv4
 neighbor 150.1.2.2 activate
 neighbor 150.1.2.2 next-hop-self
 neighbor 150.1.2.2 send-community extended
 neighbor 150.1.3.3 activate
 neighbor 150.1.3.3 next-hop-self
 neighbor 150.1.3.3 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf CE
 redistribute ospf 1 vrf CE match internal external 1 external 2
!
no ip pim dm-fallback
ip pim bsr-candidate Loopback0 0 1
ip pim rp-candidate Loopback0 group-list 1 priority 1
ip pim vrf CE autorp listener
!
!
access-list 1 permit 232.0.0.0 0.255.255.255
access-list 10 deny   232.0.0.0 0.255.255.255
access-list 10 permit any
!

3.3       CE2

!
ip cef
!
ip multicast-routing
!
!
!
interface Loopback100
 ip address 100.2.2.2 255.255.255.255
 ip pim sparse-dense-mode
!
interface FastEthernet0/0.22
 encapsulation dot1Q 22
 ip address 22.22.22.1 255.255.255.0
 ip pim sparse-dense-mode
!        
router ospf 1
 network 22.22.22.0 0.0.0.255 area 0
 network 100.2.2.2 0.0.0.0 area 0
!
ip pim autorp listener
ip pim accept-rp auto-rp 1
ip pim send-rp-announce Loopback100 scope 10 group-list 1
ip pim send-rp-discovery Loopback100 scope 10
ip pim rp-announce-filter rp-list 2 group-list 1
!
!
access-list 1 permit 224.0.0.0 0.255.255.255
access-list 2 permit 100.0.0.0 0.255.255.255
!

3.4       R2

!
ip cef
!
ip vrf CE
 rd 1:1
 route-target export 1:1
 route-target import 1:1
 mdt default 232.3.3.3
!
ip multicast-routing
ip multicast-routing vrf CE
mpls ldp router-id Loopback0
mpls label protocol ldp
!
!
!
interface Loopback0
 ip address 150.1.2.2 255.255.255.255
 ip pim sparse-mode
 ip router isis
!        
interface FastEthernet0/0.12
 encapsulation dot1Q 12
 ip address 12.12.12.2 255.255.255.0
 ip pim sparse-mode
 ip router isis
 mpls ip
!
interface FastEthernet0/0.22
 encapsulation dot1Q 22
 ip vrf forwarding CE
 ip address 22.22.22.2 255.255.255.0
 ip pim sparse-dense-mode
 ip multicast boundary 10
!
interface FastEthernet0/0.23
 encapsulation dot1Q 23
 ip address 23.23.23.2 255.255.255.0
 ip pim sparse-mode
 ip router isis
 mpls ip
!
router ospf 1 vrf CE
 redistribute bgp 1 subnets
 network 22.22.22.0 0.0.0.255 area 0
!
router isis
 net 49.0000.0000.0000.0002.00
 is-type level-2-only
!
router bgp 1
 neighbor 150.1.1.1 remote-as 1
 neighbor 150.1.1.1 update-source Loopback0
 neighbor 150.1.3.3 remote-as 1
 neighbor 150.1.3.3 update-source Loopback0
 !
 address-family vpnv4
 neighbor 150.1.1.1 activate
 neighbor 150.1.1.1 next-hop-self
 neighbor 150.1.1.1 send-community extended
 neighbor 150.1.3.3 activate
 neighbor 150.1.3.3 next-hop-self
 neighbor 150.1.3.3 send-community extended
!
 address-family ipv4 vrf CE
 redistribute ospf 1 vrf CE match internal external 1 external 2
!
no ip pim dm-fallback
ip pim bsr-candidate Loopback0 0 255
ip pim rp-candidate Loopback0 group-list 1 priority 192
ip pim vrf CE autorp listener
!
!
access-list 1 permit 232.0.0.0 0.255.255.255
access-list 10 deny   232.0.0.0 0.255.255.255
access-list 10 permit any
!

3.5       CE3

!
ip cef
!
ip multicast-routing
!
interface Loopback100
 ip address 100.3.3.3 255.255.255.255
 ip pim sparse-dense-mode
!
interface FastEthernet0/0.33
 encapsulation dot1Q 33
 ip address 33.33.33.1 255.255.255.0
 ip pim sparse-dense-mode
!         
router ospf 1
 network 33.33.33.0 0.0.0.255 area 0
 network 100.3.3.3 0.0.0.0 area 0
!
ip pim autorp listener
ip pim accept-rp auto-rp
ip pim send-rp-announce Loopback100 scope 10 group-list 1
ip pim send-rp-discovery Loopback100 scope 10
ip pim rp-announce-filter rp-list 2 group-list 1
!
!
access-list 1 permit 224.0.0.0 0.255.255.255
access-list 2 permit 100.0.0.0 0.255.255.255
!

3.6       R3

!
ip cef
!
ip vrf CE
 rd 1:1
 route-target export 1:1
 route-target import 1:1
 mdt default 232.3.3.3

!
ip multicast-routing
ip multicast-routing vrf CE
mpls ldp router-id Loopback0
mpls label protocol ldp
!
!
interface Loopback0
 ip address 150.1.3.3 255.255.255.255
 ip pim sparse-mode
 ip router isis
!
interface FastEthernet0/0.13
 encapsulation dot1Q 13
 ip address 13.13.13.3 255.255.255.0
 ip pim sparse-mode
 ip router isis
 mpls ip
!
interface FastEthernet0/0.23
 encapsulation dot1Q 23
 ip address 23.23.23.3 255.255.255.0
 ip pim sparse-mode
 ip router isis
 mpls ip
!
interface FastEthernet0/0.33
 encapsulation dot1Q 33
 ip vrf forwarding CE
 ip address 33.33.33.3 255.255.255.0
 ip pim sparse-dense-mode
 ip multicast boundary 10
!
router ospf 1 vrf CE
 redistribute bgp 1 subnets
 network 33.33.33.0 0.0.0.255 area 0
!
router isis
 net 49.0000.0000.0000.0003.00
 is-type level-2-only
!
router bgp 1
 neighbor 150.1.1.1 remote-as 1
 neighbor 150.1.1.1 update-source Loopback0
 neighbor 150.1.2.2 remote-as 1
 neighbor 150.1.2.2 update-source Loopback0
 !
 address-family vpnv4
 neighbor 150.1.1.1 activate
 neighbor 150.1.1.1 next-hop-self
 neighbor 150.1.1.1 send-community extended
 neighbor 150.1.2.2 activate
 neighbor 150.1.2.2 next-hop-self
 neighbor 150.1.2.2 send-community extended
!
 address-family ipv4 vrf CE
 redistribute ospf 1 vrf CE match internal external 1 external 2
!
no ip pim dm-fallback
ip pim bsr-candidate Loopback0 0 1
ip pim rp-candidate Loopback0 group-list 1 priority 192
ip pim vrf CE autorp listener
!
!
access-list 1 permit 232.0.0.0 0.255.255.255
access-list 10 deny   232.0.0.0 0.255.255.255
access-list 10 permit any
!
!

Nenhum comentário: