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 planePortanto, 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).