Telecom

O que é MPLS e como ele funciona no backbone do provedor

Pacote recebendo etiquetas de rótulo MPLS enquanto percorre um trilho entre roteadores

Quem começa a cuidar do backbone de um provedor logo esbarra na pergunta: o que é MPLS e por que todo mundo fala dele quando o assunto é vender link dedicado, interligar POPs ou entregar VPN para empresa? A resposta curta é que o MPLS troca a consulta à tabela de rotas, feita a cada salto, por um número pequeno colado na frente do pacote. Esse número, o rótulo, diz ao roteador seguinte para onde mandar o pacote sem que ele precise olhar o IP de destino.

Este guia explica o que é MPLS do começo: rótulo, LSP, LDP, os papéis CE, PE e P, o IGP que fica por baixo e os serviços que o provedor monta em cima. No fim há um bloco curto de configuração de LDP no Huawei VRP e os comandos para conferir se os rótulos estão sendo trocados. Os posts práticos de L2VC, VPLS e L3VPN do blog partem daqui.

Resposta rápida: o que é MPLS

  • MPLS (Multiprotocol Label Switching) encaminha pacotes por rótulos de 20 bits em vez de olhar o IP de destino em cada roteador.
  • O caminho que os rótulos formam de uma ponta à outra se chama LSP (Label Switched Path).
  • O LDP é o protocolo que distribui os rótulos entre os roteadores vizinhos. Ele segue as rotas que o IGP (IS-IS ou OSPF) já calculou.
  • O PE fica na borda, fala com o cliente (CE) e coloca o rótulo. O P fica no núcleo e só troca rótulo.
  • O ganho para o provedor são os serviços: L2VPN ponto a ponto, VPLS e L3VPN com VRF, todos sobre o mesmo backbone e separados entre si.

Por que o roteamento IP sozinho não basta no backbone

No roteamento IP comum, cada roteador recebe o pacote, lê o endereço de destino e procura na tabela de rotas o prefixo mais específico que casa com ele. Isso funciona bem para internet. O problema aparece quando o provedor quer transportar coisas que não são o tráfego IP dele: a VLAN de um cliente entre duas cidades, a rede privada de uma empresa com endereços que se repetem em outros clientes, ou o tráfego de um cliente que deve seguir um caminho diferente do padrão.

Se o núcleo da rede tiver de conhecer as rotas de cada cliente corporativo, ele cresce sem controle e os endereços privados de clientes diferentes entram em conflito. Com MPLS, o núcleo só precisa saber chegar às loopbacks dos roteadores de borda. O que vai dentro do túnel fica escondido atrás do rótulo. Entender o que é MPLS, na prática, é entender essa separação entre quem conhece o cliente (a borda) e quem só transporta (o núcleo).

Há também um motivo histórico. Quando o MPLS surgiu, consultar uma tabela por rótulo exato era mais barato do que fazer a busca de prefixo mais longo. Hoje o hardware faz as duas coisas na mesma velocidade, então a vantagem que sobrou é a dos serviços e da engenharia de tráfego, e não a de desempenho.

O rótulo: 4 bytes entre o quadro e o pacote

Para entender o que é MPLS no nível do pacote, comece pelo rótulo. Ele é um cabeçalho de 32 bits que entra entre o cabeçalho Ethernet e o pacote IP. Por isso o MPLS é chamado de protocolo da camada 2,5. A RFC 3032 define o formato:

CampoBitsPara que serve
Label20O rótulo em si. Tem significado local: vale entre dois vizinhos, não na rede toda.
TC (antigo EXP)3Classe de tráfego, usada para QoS no núcleo. A RFC 5462 trocou o nome de EXP para TC.
S (bottom of stack)1Vale 1 no último rótulo da pilha. Avisa que depois dele vem o pacote.
TTL8Mesmo papel do TTL do IP: evita que um pacote fique em loop para sempre.

Um pacote pode levar mais de um rótulo, empilhados. Num L3VPN, por exemplo, o rótulo de fora leva o pacote até o PE de destino e o de dentro diz em qual VRF ele deve ser entregue. O roteador do núcleo só olha o rótulo de cima.

Rótulos reservados

Os valores de 0 a 15 são reservados. Dois aparecem muito em saída de comando: o 0, chamado IPv4 explicit null, e o 3, chamado implicit null. O 3 nunca viaja no fio. Ele é um aviso que o último roteador do caminho manda para o vizinho anterior: retire o rótulo antes de me entregar. Isso é o PHP, que aparece na próxima seção.

LSP, FEC e as três operações com o rótulo

Saber o que é MPLS passa por três termos: FEC, LSP e as operações com o rótulo. A FEC (Forwarding Equivalence Class) é o grupo de pacotes que recebe o mesmo tratamento. No backbone mais comum, a FEC é a loopback /32 de um PE: tudo que precisa chegar ao PE2 entra na mesma FEC e segue o mesmo LSP. O LSP é unidirecional. A ida do PE1 ao PE2 e a volta do PE2 ao PE1 são dois LSPs diferentes.

No caminho, o rótulo passa por três operações:

OperaçãoQuem fazO que acontece
PushPE de entradaRecebe o pacote IP do cliente, consulta a FEC e coloca o rótulo.
SwapP (núcleo)Recebe com um rótulo, troca pelo rótulo que o próximo vizinho anunciou e encaminha.
PopPenúltimo salto (com PHP) ou PE de saídaRetira o rótulo. Com PHP, o PE de saída já recebe o pacote sem o rótulo de transporte.
Diagrama de um pacote atravessando PE1, P1, P2 e PE2 com as operações MPLS push, swap e pop
Push, swap e pop num LSP do PE1 até o PE2. Com PHP, o P2, penúltimo salto, retira o rótulo antes de entregar ao PE2.

O PHP (Penultimate Hop Popping) existe para poupar trabalho do PE de saída. Sem ele, o PE2 teria de olhar o rótulo, descobrir que é dele, retirar e depois ainda consultar o IP. Com o implicit null anunciado, o penúltimo roteador já entrega o pacote sem o rótulo de transporte, e o PE2 faz uma consulta só. Num L3VPN o rótulo interno, o da VRF, continua lá: o PHP só tira o de fora.

CE, PE e P: quem faz o quê

Estes três papéis aparecem em qualquer material sobre MPLS e em todos os posts práticos do blog. Um mesmo equipamento pode ser P para um serviço e PE para outro, então pense em papel, não em modelo de roteador.

PapelOnde ficaO que faz
CE (Customer Edge)No clienteNão roda MPLS. Fala IP, BGP, OSPF ou só Ethernet com o PE.
PE (Provider Edge)Borda do provedorConhece o cliente: VRF, VSI ou circuito L2. Coloca e retira os rótulos de serviço.
P (Provider)NúcleoSó troca rótulo de transporte. Não conhece VRF nem rota de cliente.

A consequência prática é boa para quem opera: o P1 do núcleo não precisa de memória para as rotas de centenas de clientes corporativos. Ele precisa de uma rota e um rótulo para cada loopback de PE. Quem guarda a inteligência do serviço é o PE.

LDP: quem distribui os rótulos

A outra metade da resposta sobre o que é MPLS é como os rótulos chegam a cada roteador. Eles não são configurados à mão em cada salto: o LDP (RFC 5036) faz isso. Cada roteador escolhe um rótulo local para cada FEC e conta aos vizinhos: para chegar a 198.51.100.3, me mande com o rótulo tal. O vizinho guarda essa informação e a usa como rótulo de saída.

  1. Descoberta: o roteador manda Hello por UDP, porta 646, para o endereço multicast 224.0.0.2 em cada interface com LDP ativo.
  2. Sessão: quem se encontra abre uma sessão TCP na porta 646, usando o endereço de transporte, que no Huawei é por padrão o LSR ID (a loopback).
  3. Troca de rótulos: com a sessão Operational, cada um anuncia os rótulos das FECs que conhece.
  4. Uso: o rótulo anunciado pelo vizinho que é o próximo salto do IGP vira o rótulo de saída daquela FEC.

No Huawei VRP, o padrão é anunciar rótulos de forma espontânea para os vizinhos (o modo DU, Downstream Unsolicited, que aparece na coluna LAM da saída do LDP). Outro detalhe do VRP que confunde quem vem de outro fabricante: por padrão o LDP só cria LSP para rotas /32 de host, o comportamento do lsp-trigger host. Na prática, isso quer dizer LSP para as loopbacks e não para todos os prefixos do IGP, o que economiza rótulos.

O LDP não escolhe caminho. Ele segue o melhor caminho que o IGP calculou. Se o IS-IS manda o tráfego para PE2 via P1, o LSP também vai via P1. Para caminho diferente do IGP, o provedor usa RSVP-TE ou Segment Routing, que estão fora do escopo deste guia.

O IGP por baixo: IS-IS ou OSPF

Uma parte da explicação sobre o que é MPLS que costuma ficar de fora é o IGP. Antes de falar em rótulo, as loopbacks de todos os PEs e Ps precisam ser alcançáveis pelo IGP. Sem rota para a loopback do vizinho, a sessão LDP não sobe, porque ela usa justamente essas loopbacks como endereço de transporte. Muita sessão LDP presa em estado diferente de Operational é, no fundo, IGP incompleto.

Entre IS-IS e OSPF, a escolha é mais de costume da equipe do que técnica. O IS-IS é comum em backbones de operadora porque roda direto sobre a camada 2 e separa bem o núcleo em level-2. O OSPF é mais conhecido por quem vem de rede corporativa. O passo a passo do IS-IS está no guia de IS-IS no Huawei para backbone, que termina justamente ativando o LDP sobre ele.

Um cuidado comum aos dois: ative a sincronização entre LDP e IGP. Sem ela, quando um enlace volta, o IGP pode começar a mandar tráfego por ele antes de a sessão LDP subir, e os pacotes rotulados caem naquele intervalo.

Serviços que o provedor monta sobre MPLS

Aqui está o motivo de o provedor investir em MPLS. Com o transporte por rótulos pronto, o mesmo backbone carrega serviços de naturezas diferentes, cada um isolado dos outros:

ServiçoCamadaO que entregaGuia prático
L2VPN ponto a ponto (VLL, L2VC)Camada 2Uma VLAN ou porta do cliente entregue em outro PE, como se fosse um caboMPLS L2VC no Huawei
VPLSCamada 2Vários pontos do cliente no mesmo domínio de broadcast, como um switch distribuídoVPLS no Huawei S6730
L3VPN (BGP/MPLS IP VPN)Camada 3Rede roteada do cliente com VRF própria, endereços que podem se repetir entre clientesMPLS L3VPN no Huawei

Nos três casos o desenho é o mesmo: um rótulo de transporte, distribuído pelo LDP, leva o pacote de PE a PE; um rótulo de serviço, distribuído pelo LDP remoto ou pelo BGP, diz ao PE de destino a qual cliente o pacote pertence. No L3VPN quem anuncia o rótulo de serviço é o BGP VPNv4; se o BGP ainda é novidade, comece pelo guia de o que é BGP.

Para quem pergunta o que é MPLS pensando em vender produto, a resposta comercial é esta tabela. Link dedicado L2 entre duas filiais, rede privada de uma empresa com várias unidades e trânsito separado por cliente saem da mesma infraestrutura.

Primeiro contato: LDP no Huawei VRP

Para ver o que é MPLS funcionando, o laboratório mínimo tem três roteadores em linha: PE1, P1 e PE2. O IGP já está rodando e as loopbacks são 198.51.100.1, 198.51.100.2 e 198.51.100.3. Os blocos abaixo são do P1, num VRP8 (NE8000 ou NE40E), que pede commit. No VRP5 dos switches S6730 a sintaxe é a mesma, sem o commit.

system-view
mpls lsr-id 198.51.100.2
mpls
 quit
mpls ldp
 quit
commit
  • mpls lsr-id: o identificador do roteador no MPLS. Use a loopback, que já está no IGP. Ele precisa vir antes do mpls.
  • mpls: liga o MPLS no roteador como um todo.
  • mpls ldp: liga o LDP no roteador. Sem esse passo, o LDP nas interfaces não tem efeito.

Depois, em cada interface do núcleo:

interface GigabitEthernet0/1/0
 description P2P-PARA-PE1
 mpls
 mpls ldp
 quit
interface GigabitEthernet0/1/1
 description P2P-PARA-PE2
 mpls
 mpls ldp
 quit
commit

As duas linhas dentro da interface fazem coisas diferentes. O mpls deixa a interface encaminhar pacotes rotulados. O mpls ldp começa a mandar Hello por ela e a formar sessão com o vizinho. Os PEs recebem a mesma configuração, com a própria loopback no LSR ID.

Como conferir

display mpls ldp session
display mpls lsp
ping lsp ip 198.51.100.3 32

O primeiro comando lista as sessões LDP. A saída abaixo é um exemplo de laboratório para o P1:

 --------------------------------------------------------------------------
 PeerID             Status      LAM  SsnRole  SsnAge      KASent/Rcv
 --------------------------------------------------------------------------
 198.51.100.1:0     Operational DU   Active   0000:01:12  346/346
 198.51.100.3:0     Operational DU   Passive  0000:01:12  347/347
 --------------------------------------------------------------------------
 TOTAL: 2 session(s) Found.

As duas sessões estão Operational e com LAM DU. A coluna SsnRole mostra quem abriu o TCP: pela RFC 5036, o lado com o endereço de transporte maior fica ativo. O display mpls lsp deve mostrar um LSP para cada loopback, e o ping lsp testa o caminho com rótulos até o PE2. Ping IP funciona e ping lsp falha? Falta rótulo em algum salto.

Erros comuns de quem está começando com MPLS

Num backbone pequeno, quase todo problema de quem está começando a entender o que é MPLS cai numa destas linhas. A ordem de investigação importa: primeiro IGP, depois sessão LDP, depois LSP, por último o serviço.

SintomaCausa provávelO que fazer
Sessão LDP não sobeLoopback do vizinho fora do IGP, ou LSR ID diferente da loopback anunciadaConfira a rota para a loopback do vizinho e o mpls lsr-id
Sessão sobe, mas não há LSP para um PEA loopback do PE não é /32 no IGPAnuncie a loopback com máscara /32, que é o que o lsp-trigger host espera
Ping comum passa, pacote grande do cliente someMTU dos enlaces sem folga para os rótulosAumente o MTU do núcleo. Cada rótulo soma 4 bytes, e L2VPN ainda carrega o quadro Ethernet do cliente
Tráfego cai por segundos quando um enlace voltaIGP usando o enlace antes da sessão LDPAtive a sincronização LDP e IGP
Serviço some em um único PEProblema no serviço (VRF, VSI, VC), não no transporteSe o ping lsp até o PE passa, o transporte está bom: olhe a configuração do serviço

O MTU merece atenção à parte, porque o erro é silencioso. Ping com pacote pequeno funciona e o cliente reclama de site que não abre ou de VPN que trava. Nos guias de L2VC e L3VPN do blog os enlaces de núcleo usam MTU de 9216 bytes, o que deixa folga de sobra para a pilha de rótulos.

Perguntas frequentes

O que é MPLS em poucas palavras?

É uma forma de encaminhar pacotes por rótulos curtos em vez de consultar o IP de destino em cada salto. O provedor usa isso para separar a borda, que conhece o cliente, do núcleo, que só transporta. Em cima desse transporte ele monta L2VPN, VPLS e L3VPN.

MPLS é camada 2 ou camada 3?

Fica entre as duas, por isso o apelido de camada 2,5. O rótulo entra depois do cabeçalho Ethernet e antes do pacote IP. O transporte depende de rotas IP do IGP, mas o encaminhamento no núcleo é feito pelo rótulo.

Qual a diferença entre LDP e BGP no MPLS?

O LDP distribui os rótulos de transporte, que levam o pacote de um PE a outro. O BGP, na família VPNv4, distribui os rótulos de serviço do L3VPN e as rotas dos clientes. Num L3VPN os dois trabalham juntos.

Preciso de MPLS para ter um provedor pequeno?

Não para entregar internet residencial. Ele passa a fazer sentido quando você vende link dedicado L2 entre cidades, VPN para empresas ou precisa separar clientes no mesmo backbone. Antes disso, um IGP bem feito e VLANs resolvem.

O que é MPLS com Segment Routing?

É uma forma mais nova de montar os LSPs: em vez do LDP, o próprio IGP (IS-IS ou OSPF) distribui os rótulos, chamados de SIDs. O encaminhamento por rótulo continua o mesmo. Muita operadora usa os dois durante a migração.

Conclusão

Resumindo o que é MPLS para quem opera provedor: um rótulo de 4 bytes, distribuído pelo LDP, que segue as rotas do IGP e leva o pacote de PE a PE sem que o núcleo conheça o cliente. Em cima dele ficam os serviços que geram receita, cada um com seu rótulo interno.

Para sair da teoria sobre o que é MPLS, monte o laboratório de três roteadores, confirme as sessões Operational e o ping lsp, e depois siga para o serviço que você precisa: MPLS L2VC no Huawei, VPLS no Huawei S6730 ou MPLS L3VPN no Huawei.

Leitura recomendada: Redes MPLS para Provedores, na wiki do Brasil Peering Forum (CC BY-NC 4.0).

Compartilhar:

Sobre o autor

Ivan Alves

Especialista em redes de provedores (ISP)

Ivan Alves trabalha há mais de 15 anos com redes de provedores de internet, do NOC ao backbone e à borda BGP. Coordena infraestrutura e tecnologia em um provedor regional e escreve aqui os tutoriais que gostaria de ter encontrado quando começou: comandos testados, cenário explicado e o porquê de cada linha.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *