
EVPN no contexto de redes MPLS
Ethernet VPN (EVPN)
É uma tecnologia definida pelo IETF (RFC 7432) para oferecer serviços de conectividade em Camada 2 e Camada 3 sobre infraestruturas MPLS ou VXLAN, utilizando o MP-BGP no control plane.
No contexto de Data Centers, o EVPN substitui protocolos de resiliência em camada 2, como STP, RSTP entre outros, fornecendo mecanismos mais eficientes de redundância. Como o objetivo deste artigo não é explorar o uso do EVPN em Data Centers, não iremos nos aprofundar nesse cenário.
No cenário de provedores de serviço (ISPs), o EVPN é considerado a evolução dos modelos tradicionais de L2VPN baseados em MPLS, como VPWS e VPLS, oferecendo escalabilidade superior, aprendizado de MAC via control-plane, integração com L3VPN, simplificação operacional entre outros.
Portanto o EVPN é uma arquitetura unificada que suporta serviços L2VPN e L3VPN, trazendo maior eficiência, escalabilidade e flexibilidade.
Nesse artigo vamos utilizar o MPLS como tecnologia de Underlay e EVPN como Overlay, se você não entendeu esses temos vamos falar uma pouco mais sobre eles logo abaixo.
Underlay vs Overlay
Underlay:
Representa a rede física e lógica base, responsável pelo transporte de pacotes de um ponto a outro. É a fundação da rede, garantindo conectividade IP entre os roteadores e switches. Nesse plano são usados protocolos de roteamento tradicionais como (OSPF, IS-IS, BGP, MPLS, etc…) para garantir que todos os nós da rede possam se alcançar.
Overlay:
É a camada lógica construída sobre o underlay, responsável por fornecer serviços como VPNs, isolamento de tráfego, multiponto L2/L3 e balanceamento de carga. O overlay usa o underlay apenas como transporte, encapsulando pacotes dentro de túneis (EVPN VXLAN, GRE, etc..).
Como funciona o EVPN ?
1. Control plane com BGP:
O coração da EVPN é o seu control plane, que utiliza extensões do protocolo BGP. Em vez de depender do aprendizado via “flooding and learning” (inundar a rede e aprender o caminho) para descobrir endereços MAC, como o VPLS L2 tradicional que utilizamos em redes MPLS, O EVPN usa o BGP para anunciar e distribuir essas informações de forma eficiente.
2. Data plane com MPLS:
O plano de dados é o que transporta o tráfego de Camada 2 encapsulado pela rede de Camada 3. EVPN usa o MPLS como o meio de encaminhamento dos pacotes dentro do backbone.
01: CE-01 origina o tráfego de arp request.
02: PE-01 recebe o pacote e gera uma entrada de endereço MAC local.
03: PE-01 gera uma rota Type 2 baseada na entrada do endereço MAC que recebeu e também faz a atribuição do MPLS Label no cabeçalho.
04: O peer PE-02 aprende a rota EVPN através do MP-iBGP e gera uma entrada de endereço MAC.
05: O PE-02 sabe fazer a distinção da rota fazendo o desencapsulamento com base na instância EVPN (EVI) e encaminha o pacote para o CE-02.
Laboratório 01: EVPN L2VPN VPWS
01. Configurações backbone MPLS:
PE-01 | PE-02 |
---|---|
# sysname PE-01 # mpls lsr-id 10.1.1.1 # mpls # mpls ldp # interface Ethernet1/0/1 undo shutdown ip address 10.0.0.1 255.255.255.252 ospf network-type p2p ospf enable 1 area 0.0.0.0 mpls mpls ldp # interface Ethernet1/0/2 undo shutdown ip address 10.0.0.5 255.255.255.252 ospf network-type p2p ospf enable 1 area 0.0.0.0 mpls mpls ldp # interface LoopBack0 ip address 10.1.1.1 255.255.255.255 # ospf 1 router-id 10.1.1.1 opaque-capability enable area 0.0.0.0 network 10.1.1.1 0.0.0.0 mpls-te enable # undo dcn # route recursive-lookup tunnel # |
# sysname PE-02 # mpls lsr-id 10.2.2.2 # mpls # mpls ldp # interface Ethernet1/0/1 undo shutdown ip address 10.0.0.13 255.255.255.252 ospf network-type p2p ospf enable 1 area 0.0.0.0 mpls mpls ldp # interface Ethernet1/0/2 undo shutdown ip address 10.0.0.9 255.255.255.252 ospf network-type p2p ospf enable 1 area 0.0.0.0 mpls mpls ldp # interface LoopBack0 ip address 10.2.2.2 255.255.255.255 # ospf 1 router-id 10.2.2.2 opaque-capability enable area 0.0.0.0 network 10.2.2.2 0.0.0.0 mpls-te enable # undo dcn # route recursive-lookup tunnel # |
P-03 | P-04 |
---|---|
# sysname P-03 # mpls lsr-id 10.3.3.3 # mpls # mpls ldp # interface Ethernet1/0/1 undo shutdown ip address 10.0.0.14 255.255.255.252 ospf ldp-sync ospf enable 1 area 0.0.0.0 mpls mpls ldp # interface Ethernet1/0/2 undo shutdown ip address 10.0.0.6 255.255.255.252 ospf network-type p2p ospf enable 1 area 0.0.0.0 mpls mpls ldp # interface LoopBack0 ip address 10.3.3.3 255.255.255.255 # ospf 1 router-id 10.3.3.3 opaque-capability enable area 0.0.0.0 network 10.3.3.3 0.0.0.0 mpls-te enable # undo dcn |
# sysname P-04 # mpls lsr-id 10.4.4.4 # mpls # mpls ldp # interface Ethernet1/0/1 undo shutdown ip address 10.0.0.2 255.255.255.252 ospf network-type p2p ospf enable 1 area 0.0.0.0 mpls mpls ldp # interface Ethernet1/0/2 undo shutdown ip address 10.0.0.10 255.255.255.252 ospf network-type p2p ospf enable 1 area 0.0.0.0 mpls mpls ldp # interface LoopBack0 ip address 10.4.4.4 255.255.255.255 # ospf 1 router-id 10.4.4.4 opaque-capability enable area 0.0.0.0 network 10.4.4.4 0.0.0.0 mpls-te enable # undo dcn |
02. Configurações EVPN VPWS:
PE-01 |
---|
>>Criando VPN instance # evpn vpn-instance L2VPN-EVPN-CLIENTE-BLUE vpws route-distinguisher 65500:100 vpn-target 65500:100 export-extcommunity vpn-target 65500:100 import-extcommunity # >> Criando instância do EVPL (Ethernet Virtual Private Line) de ID 100 Observação: os valores de local-service-id e remote-service-id devem ser iguais nos dois PE’s. Utilizamos o valor 100 mas pode ser qualquer valor. # evpl instance 100 mpls-mode evpn binding vpn-instance L2VPN-EVPN-CLIENTE-BLUE local-service-id 100 remote-service-id 100 # >> Criando as configuações do MB-BGP para trabalhar com EVPN # bgp 65500 peer 10.2.2.2 as-number 65500 peer 10.2.2.2 description iBGP-PE-02 peer 10.2.2.2 connect-interface LoopBack0 # ipv4-family unicast undo synchronization undo peer 10.2.2.2 enable # l2vpn-family evpn undo policy vpn-target peer 10.2.2.2 enable # >>Habilitando o source EVPN # evpn source-address 10.1.1.1 # >> Associando a interface do cliente a instância do EVPN # interface Ethernet1/0/0 description CLIENTE-L2VPN-BLUE undo shutdown evpl instance 100 # |
PE-02 |
---|
# evpn vpn-instance L2VPN-EVPN-CLIENTE-BLUE vpws route-distinguisher 65500:100 vpn-target 65500:100 export-extcommunity vpn-target 65500:100 import-extcommunity # evpl instance 100 mpls-mode evpn binding vpn-instance L2VPN-EVPN-CLIENTE-BLUE local-service-id 100 remote-service-id 100 # bgp 65500 peer 10.1.1.1 as-number 65500 peer 10.1.1.1 description iBGP-PE-01 peer 10.1.1.1 connect-interface LoopBack0 # ipv4-family unicast undo synchronization undo peer 10.1.1.1 enable # l2vpn-family evpn undo policy vpn-target peer 10.1.1.1 enable # evpn source-address 10.2.2.2 # interface Ethernet1/0/0 description CLIENTE-L2VPN-BLUE undo shutdown evpl instance 100 # |
>> Verificações:
[PE-01] display bgp evpn peer
[PE-01]display bgp evpn all routing-table
CE-R1#ping 65.20.0.2
Laboratório 02: EVPN L2VPN VPLS
1. A configuração do backbone MPLS já está pronta, só precisamos criar as configurações de EVPN VPLS
2. Configurações EVPN VPLS
PE-01 |
---|
>> Criando VPN instance # evpn vpn-instance VPLS-EVPN-CLIENTE-BLUE route-distinguisher 65500:200 vpn-target 65500:200 export-extcommunity vpn-target 65500:200 import-extcommunity # >> Criando as configuações do MB-BGP para trabalhar com EVPN # bgp 65500 peer 10.2.2.2 as-number 65500 peer 10.2.2.2 description iBGP-PE-02 peer 10.2.2.2 connect-interface LoopBack0 # ipv4-family unicast undo synchronization undo peer 10.2.2.2 enable # l2vpn-family evpn undo policy vpn-target peer 10.2.2.2 enable # >> Habilitando o source EVPN # evpn source-address 10.1.1.1 # >> Associando a interface do cliente a intância do EVPN # interface Ethernet1/0/0 evpn binding vpn-instance VPLS-EVPN-CLIENTE-BLUE # interface Ethernet1/0/9 evpn binding vpn-instance VPLS-EVPN-CLIENTE-BLUE # |
PE-02 |
---|
# evpn vpn-instance VPLS-EVPN-CLIENTE-BLUE route-distinguisher 65500:200 vpn-target 65500:200 export-extcommunity vpn-target 65500:200 import-extcommunity # bgp 65500 peer 10.1.1.1 as-number 65500 peer 10.1.1.1 description iBGP-PE-02 peer 10.1.1.1 connect-interface LoopBack0 # ipv4-family unicast undo synchronization undo peer 10.1.1.1 enable # l2vpn-family evpn undo policy vpn-target peer 10.1.1.1 enable # evpn source-address 10.2.2.2 # interface Ethernet1/0/0 evpn binding vpn-instance VPLS-EVPN-CLIENTE-BLUE # |
>> Verificações:
[~PE-01]display bgp evpn all routing-table
[~PE-01]display evpn vpn-instance name VPLS-EVPN-CLIENTE-BLUE
>> Teste com o MAC que esta na interface do CE-02 apartir do PE-01
[~PE-01]ping evpn vpn-instance VPLS-EVPN-CLIENTE-BLUE mac aabb-cc00-0200
CE-R1#ping 65.20.0.2
CE-R1#ping 65.20.0.3
Considerações finais
O EVPN Substituirá o MPLS?
Geralmente, essa dúvida surge porque o EVPN foi criado com a proposta de aprimorar as VPNs de Camada 2 e Camada 3, o que leva muitas pessoas a associar esse serviço diretamente ao MPLS. No entanto, não é exatamente assim que funciona. O MPLS é um conjunto de tecnologias, e, no contexto do EVPN, aproveitamos apenas a metodologia de encaminhamento de pacotes baseada em labels no backbone.
MPLS é um protocolo de data plane, enquanto EVPN é um protocolo de control plane. Portanto, EVPN não substituirá MPLS. Na verdade, EVPN utiliza o MPLS para enviar pacotes pela rede, sendo assim os dois protocolos trabalham em conjunto.
Limitações do EVPN
01. Complexidade de Implementação:
A arquitetura é baseada em MP-BGP, o que exige domínio avançado do protocolo.
A configuração inicial e o troubleshooting exige um pouco mais de conhecimento do que em VPLS ou VPWS tradicionais.
02. Compatibilidade entre Fabricantes:
Nem todos os fabricantes implementam todas as extensões do EVPN.
Pode haver interoperabilidade limitada em cenários multi-vendor e sabemos que a maioria dos ISPs brasileiros trabalham com multivendor.
03. Custo de Implementação:
Equipamentos mais antigos podem não suportar EVPN por hardware/firmware.
Pode exigir licenciamento adicional em alguns fabricantes (Cisco, Juniper, Huawei etc).