cancelar
Mostrar resultados para 
Pesquisar em vez de 
Queria dizer: 
cancel
509
Apresentações
3
Útil
3
Comentários
Pedroxh
Spotlight
Spotlight

Olá Network Folks !

 

Após um período parado, voltamos com outro artigo para os amantes de EVPN e de labels. Irei falar sobre como utilizar o EVPN como Control Plane para serviços de VPWS (P2) em seu backbone e como se configura esse cenário.

Pegue um café bem forte, e let's routing (MACs hahaha) !

 
 

EVPN na perspectiva do ISP

 

Com a evolução das demandas de interconexão, os IPSs se depararam com questões de como ofertar serviços de alta disponibilidade e resiliência, sem aumentar a complexidade e impactar diretamente a operação? Com cada vez mais soluções de abstração, a automação se tornando uma realidade e com os equipamentos se tornando mais robustos e acessíveis, alguns service providers começaram a utilizar dos benefícios do EVPN para incrementar suas ofertas de serviço e com isso, tirando a complexidade técnica de se sustentar esse ambiente (se você não sabe o que e EVPN, sugiro que leia esse artigo aqui para não ficar perdido).

 

A Cisco escreveu um artigo com uma rica quantidade de detalhes sobre os motivadores e cenários possíveis na utilização de EVPN para os service providers.

Vendo isso, e se pudéssemos trazer uma melhor administração sobre nossos VPLS/VPWS (P2MP/P2P) utilizando o BGP e conseguir utilizar a resiliência que o MPLS possui? Pois será isso que veremos agora!

 

 

 
 

Cenário

Pedroxh_1-1716570846660.png

 

No cenário acima emulei o backbone de um ISP (65666) e simulei 2 clientes (CPE1 e CPE2) que possuem dois servidores em unidades distintas e ambos precisam se comunicar. Para deixar mais interessante, fiz com que cada PE fechasse um OSPF entre eles para divulgar os prefixos dos servidores utilizando a malha backbone do meu ISP para estabelecerem o peering. Veja que os PEs estão dentro da mesma subnet 192.168.100.0/30 logo, os PEs precisam conseguir gerar ARP para se pingarem e estabelecerem a vizinhança entre eles e os prefixos sejam trocados sem que o backbone tenha qualquer conhecimento desses prefixos. No nosso backbone MPLS, estamos utilizando IS-IS como IGP e o LDP para troca de labels.

 
OBS: Poderíamos utilizar Segment routing, ou ate mesmo fazer engenharia de trafego MPLS com o MPLS TE + RSVP, mas foquei em deixar o lab mais simples possível para focarmos em como o BGP EVPN fornece o serviço de L2VPN para o cliente.
 

As versões dos devices usados foram:

P1 e P6= IOS XR 6.1.3

SW-Metro1 e SW-Metro2 = NX-OS 9.2

PE1-XE,PE2-XE,P2-CSR,P3-CSR,P4-CSR,P5-CSR = CSR1000V IOS XE 16.09.07

CPE1-CPE2 = Cisco IOL i86bi-linux-l3-adventerprisek9-15.4.2T

 

Para começar, vamos verificar as configurações dos PE1 e PE2 referente ao core side

 

PE1-XE

Pedroxh_2-1716570846470.png

 

Pedroxh_3-1716570846462.png

 

PE2-XE

Pedroxh_4-1716570846466.png

 

Pedroxh_5-1716570846474.png

 

Podemos ver que ambos os PE's possuem a configuração na sub-interface x.100 de "xconnect" apontando para as loopbacks de ambos os PEs. Essa configuração é para criar o destino do tunel L2 entre os devices e que o encapsulation desse tag de vlan (no nosso caso, vlan 100) será feito pelo MPLS. Abaixo uma imagem que ilustra esse processo

Pedroxh_6-1716570846667.png

 

fonte: https://www.cisco.com/c/en/us/support/docs/multiprotocol-label-switching-mpls/mpls/213238-mpls-l2vpn-pseudowire.html

 

Podemos ver abaixo que possuímos nossas adjacências IS-IS e que possuímos o LDP configurado.

 

PE1-XE IS-IS neighbors and MPLS forwarding-table

Pedroxh_7-1716570846707.png

 

 

P1-XR

Pedroxh_8-1716570846814.png

 

 

Vamos verificar a tabela de rotas de P1 e ver como aprendemos a loopback de PE2-XE?

P1-XR routing table e traceroute para lo de PE2-XE

Pedroxh_9-1716570846995.png

 

Perfeito! Possuímos na nossa tabela de roteamento todos os prefixos do nosso backbone. Se realizarmos um ping entre os PEs utilizando as lo0 como source, provavelmente teremos comunicação.

Teste de ping entre os PEs

Pedroxh_10-1716570846652.png

 

 

Feito a parte do IGP, agora precisamos criar a instância do serviço L2 nos nossos PEs na interface que vai para o cliente.

 
Pedroxh_11-1716570846510.png

 

Pedroxh_12-1716570846539.png

 

 

Você deve estar se perguntando, o que são os comandos"service instance x " e toda a configuração de bridge-domain?

Bom, nos switches tradicionais, sempre que possuimos uma interface trunk, utilizamos o tag de vlan para classificar esse tráfego. Acontece que alguns devices não possuem a capacidade de utilizar os conceitos de "Switchport mode trunk" e com isso devemos utilizar o Ethernet Virtual Circuit ou EVC para aproveitar as tags 802.1q existentes. Não apenas isso, o EVC permite que tenhamos diversos servicos L2 dentro da mesma interface física, podendo assim utilizar a mesma vlan para diferentes clientes em cada switchport e encaminhar o tráfego de cada cliente atraves de diferentes PWs MPLS pois a vlan (no nosso caso, vlan 100) não existe GLOBALMENTE. Vou deixar abaixo um desenho da Cisco mostrando esse conceito e recomendo fortemente a leitura desse artigo deles.

Pedroxh_13-1716570846624.png

 

fonte: https://community.cisco.com/t5/networking-knowledge-base/understanding-ethernet-virtual-circuits-evc/ta-p/3108219

 

Quando um frame com tag de vlan entra (ingress) em uma interface que foi configurada com um EVC , determinaremos qual EVC ele sera classificado com base nos tags do quadro e dentro dele, definiremos qual ação desejamos realizar.

Dito isso, dissecando nossa configuração de PE1-XE só para entendimento do processo:

 
  1. Criamos a service instance 100 ethernet que define a instância de servico "ethernet" (coloquei o mesmo ID da vlan para ficar mais intuitivo. Por isso possuimos uma service instance para o servico de L2VPN da vlan 100, e um para a gerencia do SW-METRO!)

  2. encapsulamos esse tag no comando "encapsulation dot1q 100" (o mesmo para a instancia do SW-METRO, porem no vlan ID 110)

  3. REMOVEMOS esse tag com o comando "rewrite ingress tag pop 1 symetric", que quer dizer que ao receber 1 tag de vlan, nos removeremos esse tag e encaminharemos para a nossa nuvem MPLS.

  4. Informamos no comando "xconnect x.x.x.x encapsulation mpls" mostrado anteriormente que enviaremos esse frame pela nuvem MPLS (no nosso caso, um VPWS por ser apenas um P2P)

  5. Quando esse frame chega no PE2-XE, o inverso ocorre, ele irá identifical a qual service instance está associado esse frame, adicionará o tag da vlan no nosso caso, a vlan 100, e encaminhará para a porta que contem o encapsulation 802.1Q que no nosso caso, é o SW-METRO2.

  6. O comando "member GigabitEthernet1 Service-instance 100" e "member evpn-instance 100" é necessário para que o EVPN faça o control plane dos frames que possuírem esse tag de vlan.

 

Feito essa configuração, agora precisamos configurar os SW-METRO1 e SW-METRO2 com as vlans que definimos nos nossos EVCs, e realizar a configuração do EVPN.

 

SW-METRO1 L2 Config

Pedroxh_14-1716570846563.png

 

SW-METRO2 L2 Config

Pedroxh_15-1716570846550.png

 

Agora vamos realizar a configuração do EVPN!

OBS: Lembrando que o EVPN utiliza uma outra AFI/SAFI logo, utilizaremos toda uma address family diferente para realização desse peer BGP.
 

No nosso cenário, possuímos um Route Reflector, que é o P3-CSR-RR, logo- PE1-XE e PE2-XE irão configurar seus peers BGP para o RR.

 

EVPN config e BGP config do PE1-XE

Pedroxh_16-1716570846567.png

 

Pedroxh_17-1716570846560.png

EVPN config e BGP config do PE2-XE

Pedroxh_18-1716570846552.png

 

Pedroxh_19-1716570846590.png

BGP config RR P3-CSR-RR

Pedroxh_20-1716570846518.png

Vamos verificar se o peer BGP na AFI/SAFI do BGP EVPN está estabelecida?

BGP L2VPN EVPN PEERING

Pedroxh_21-1716570846723.png
Pedroxh_22-1716570846727.png

 

 

Perfeito! Podemos ver que o peering foi estabelecido, e que se olharmos os neighboors dentro da address-family ipv4 tradicional, não existe qualquer peer configurado.

 
Pedroxh_23-1716570846496.png
Pedroxh_24-1716570846632.png

Vamos verificar se aprendemos os MACs no nosso bridge-domain e se nossa EVPN EVI está estabelecida?

PE-XE1

Pedroxh_25-1716570846824.png

 

PE2-XE

Pedroxh_26-1716570846816.png

 

Agora, iremos verificar se nosso xconnect esta UP e se recebemos os MACs via BGP!

PE-XE1 EVPN routes and xconnect state

Pedroxh_27-1716570846990.png
Pedroxh_28-1716570846991.png

 

 

PE2-XE1 EVPN routes and xconnect state

Pedroxh_29-1716570846766.png

 

Pedroxh_30-1716570846809.png

 

 

Ambos os PEs recebem o MAC dos CPEs de ambas as portas. O mac final 0.100 é o MAC do PE1 , enquanto o MAC final 0.f100 é o MAC do PE2. Podemos ver que os prefixos (MAC address) dos CPEs são recebidos através do meu peering com o Route Reflector, e que essa rota foi exportada e importada (import/export) baseado no meu RT/RD configurado.

 

Com isso, CPE1 e CPE2 agora possuem comunicação entre eles dentro do mesmo domínio de broadcast, e ambos conseguem gerar ARP e estabelecer a sessão OSPF entre eles!

 

CPE-1 Tests

Pedroxh_31-1716570846678.png

 

CPE 2 Tests

Pedroxh_32-1716570847010.png

 

 

E por fim, basta testarmos a comunicação entre os servidores para validar se ambos os servers se pingam.

Servers communication

Pedroxh_33-1716570847008.png

 

 

SUCESSO! Ambos os servidores se pingam utilizando o backbone MPLS do provedor AS65666.

Com isso finalizamos a demonstração da utilização do EVPN para serviços L2VPN .Pode parecer muito extenso, mas uma vez aplicada essa lógica, a escala se torna muito mais interessante e possuímos o control plane do EVPN para saber exatamente quais MACs estão sendo anunciados para o nosso cliente.

 

Abaixo os scripts de configuração e espero que o artigo tenha ajudado a entender melhor como o EVPN funciona em uma operadora, e nos vemos na próxima!

 
Pedroxh_34-1716570846361.gif
 
Comentários
Tiago Junqueira
Spotlight
Spotlight

Ótimo artigo Pedro, me esclareceu alguns pontos!

Obrigado!

Muito Top @Pedroxh! Abraço. 

Nada melhor do que aprender na prática.
Obrigado @Pedroxh 

Primeiros Passos

Encontre respostas, faça perguntas e conecte-se com nossa comunidade de especialistas da Cisco de todo o mundo.

Estamos felizes por você estar aqui! Participe de conversas e conecte-se com sua comunidade.