Replicado do blog ccna postado e 2010, isso por incrível que pareça continua bem atual e usado, boa leitura pessoal.
Muitos aqui já ouviram falar de VPNs, imagino eu. VPN é o acrônimo para “Redes Privadas Virtuais”, ou seja, um modo de simular redes privadas em cima de uma rede… bem… não privada ? ! Redes não privadas podem ser backbones de provedores de serviço (como Telefonica ou Embratel), ou mesmo a Internet. As VPNs mais comuns são as de camada 3, ou seja, fazer com que dois elementos de rede pensem estar diretamente conectados via um link L3, ainda que existam “n” elementos no meio do caminho. Exemplos de VPN L3 podem ser Cisco DMVPN e túneis GRE.
Mas este post não é para tratar de VPNs L3, mas sim VPNs L2, algo que ainda não discutimos aqui.
O que são e para que servem L2VPNs?
Na verdade, L2 VPNs já existem há um bom tempo. Exemplo são redes Frame-Relay e ATM. Mas a “novidade” são as VPNs L2 estabelecidas sobre redes de camadas superiores, como IP ou MPLS. É sobre isso que falaremos neste post. Sob este prisma, portanto, L2VPNs são conexões ponto-a-ponto que simulam um circuito físico de camada 2. Podem ser usadas para trunks Ethernet entre switches localizados em zonas geográficas distintas, por exemplo, ou para transportar conexões L2 tradicionais (ex: Frame-Relay, ATM ou TDM) sobre redes MPLS ou IP.
E qual a vantagem disso?
A vantagem é a total transparência do “tubo” virtual formado entre as duas pontas, permitindo que qualquer protocolo (e não apenas IP) possa atravessá-lo. Podemos, por exemplo, conectar duas pontas Frame-Relay por meio de uma rede MPLS ou IP pura, algo que pode ajudar na transição – em grande operadoras – do mundo legado (FR e ATM) para IP, por exemplo. Também pode-se usar esta tecnologia para estender redes LAN Ethernet de uma ponta a outra, atravessando inúmeros elementos IP de forma completamente transparente – como no exemplo mencionado, em que um trunk Ethernet poderia ser estabelecido entre as duas pontas – algo inviável em VPNs L3.
Existem hoje tecnologias bastante difundidas que permitem isso: AToM (Any Transport over MPLS), L2TPv3 (Layer-2 Tunneling Protocol version 3), VPLS (Virtual Private LAN Services) – este último sendo uma forma de AToM. Ainda não tive tempo para procurar uma imagem IOS para 7200 que suporte AToM, apesar de eu ter quase certeza que exista uma. Em encontrando uma, seria possível subir um LAB no GNS-3 sobre o assunto ? !
Sobre a tecnologia, vamos focar aqui no AToM. Basicamente, o túnel formado entre duas pontas que permite a comunicação L2 de forma transparente é chamada de “pseudowire”, ou seja, um “fio virtual”. É o pseudowire, portanto, que emula uma conexão L2 entre duas (ou mais) pontas. A topologia abaixo ilustra o conceito:
Os roteadores ilustrados seriam os PEs da operadora, e estes rodam MPLS. Pseudowires usam LDP (Label Distribution Protocol) como protocolo de sinalização para sua formação. O processo passo-a-passo é ilustrado abaixo:
Em termos de configuração, é bastante simples… basta seguir os passos abaixo:
1) Entre os roteadores envolvidos no caminho físico, MPLS deve estar ativado e LDPs devem ser trocados. Para que isso ocorra, os roteadores devem estabelecer uma relação de vizinhança entre eles (neighbors LDP).
2) Pelo menos o IP de origem e o de destino do pseudowire deve estar visível entre os 2 PEs participantes, isso é, os IPs usados devem constar nas tabelas de roteamento dos roteadores envolvidos no cenário.
3) A configuração do pseudowire é feita via o comando “xconnect” nos dois PEs envolvidos.
Basicamente, seria isso. No cenário apresentado na figura 01, portanto, a configuração ficaria da seguinte forma:
PE1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
interface loopback 100 ip address 192.168.0.1 255.255.255.255 ! interface G1/0 description PARA O PE2 ip add 192.168.10.1 255.255.255.252 mpls ip mpls label protocol ldp ! int f0/0 no ip add xconnect 192.168.0.2 50 encap mpls !--xconnect [remote PE] [VCID] [encap type] mpls ip ! mpls ldp router-id Loopback100 force ! router ospf 100 netw 0.0.0.0 255.255.255.255 area 0 end |
PE2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
interface loopback 100 ip address 192.168.0.2 255.255.255.255 ! interface G1/0 description PARA O PE1 ip add 192.168.10.2 255.255.255.252 mpls ip mpls label protocol ldp ! int f0/0 no ip add xconnect 192.168.0.1 50 encap mpls mpls ip ! mpls ldp router-id Loopback100 force ! router ospf 100 netw 0.0.0.0 255.255.255.255 area 0 ! end |
E para verificar:
1 2 3 4 5 |
PE1#sh mpls l2transport vc Local intf Local circuit Dest address VC ID Status ------------- -------------------------- --------------- ---------- ---------- F0/0 Eth 5 0 192.168.0.2 50 UP |
1 2 3 4 5 |
PE2#sh mpls l2transport vc Local intf Local circuit Dest address VC ID Status ------------- -------------------------- --------------- ---------- ---------- F0/0 Eth 5 0 192.168.0.1 50 UP |
Notem que o VCID (50 no caso) deve ser o mesmo em ambas as pontas.
Para colocar em prática, basta verificar a tabela ARP dos PCs:
1 2 3 4 5 6 7 8 9 10 11 12 |
C:Usersmarcoaf>ping 100.100.100.2 Disparando 100.100.100.2 com 32 bytes de dados: Resposta de 100.100.100.2: bytes=32 tempo=14ms TTL=255 Resposta de 100.100.100.2: bytes=32 tempo=7ms TTL=255 Resposta de 100.100.100.2: bytes=32 tempo=6ms TTL=255 Resposta de 100.100.100.2: bytes=32 tempo=7ms TTL=255 C:Usersmarcoaf>arp -a Interface: 100.100.100.1 --- 0xd Endereço IP Endereço físico Tipo 100.100.100.2 88-43-e1-e3-61-39 dinâmico |
Notem que, o fato do MAC ADDRESS do PC2 aparecer na tabela ARP do PC1 indica que PC1 enxerga PC2 como se estivesse diretamente conectado ao mesmo, via cabo Ethernet. Neste exemplo, emulamos uma conexão L2 Ethernet ponto-a-ponto, portanto.
Obviamente existe muito mais por trás desta tecnologia, e muito mais formas de se implementa-la. O objetivo deste post foi apenas dar um gostinho para vocês do que é possível se fazer em termos de VPN L2. Se conseguirem fazer testes, façam! Nada melhor que praticar para se aprender. Nos comments deste post vocês encontrarão o link para o IOS para a linha 7200 com suporte a pseudowires. E abaixo segue o link para botar ele para funcionar no GNS-3:
Portanto… mãos a obra!!!
Abraço!
Marco Filippetti
Fonte consultada: http://www.sanog.org/resources/sanog7/waris-l2vpn-tutorial.pdf