MPLS, principios e fundamentos
Autor: Patrick Brandão, patrickbrandao@gmail.com
Cópia autorizada somente quando preservar a referência ao autor.
Fontes:
Perguntas frequentes sobre MPLS
- Minha rede vai ficar mais rápida?
Não conheço sua rede, mas provavelmente sim.
- Vai resolver problemas com perdas de pacotes?
Se a rede tem problemas físicos (interferência, sobrecarga) vai continuar com problema ou até piorar. MPLS é mais organização do que bruxaria!
- MPLS muda de um fabricante para o outro?
Sim. Existem fabricantes que atingiram a perfeição, outros ainda corrigem bugs de 10 anos atras (você sabe qual!)
- Tenho problemas com BROADCAST, MPLS resolve isso?
Sim, mas VLAN também resolve. Vou explicar no artigo as diferenças.
Estudo do caso
Esse artigo é baseado em um estudo do caso. Aplicaremos MPLS numa rede em produção.
Hoje essa rede usa o paradigma puramente IP (BGP, OSPF, NAT, Tuneis GRE, ACL, Rota estática):
Observe na rede acima que temos separado por cores a finalidade de cada parte:
- VERMELHO: Internet
- AZUL: Backbone
- LILAS: Transporte L2 para cliente que monitora câmeras (GRE-L2 ou EoIP)
- VERDE: Rede privada entre filiais de uma papelaria.
- ROSA: Rede de clientes de internet FTTH.
Configuração atual:
- 1 - eBGP: R1 faz eBGP com operadora Vivo e com RouterServers do IX-SP, prefixo próprios: 200.99.0.0/22 e 2804:cafe::/32
- 2 - iBGP: R1 faz iBGP Router-Reflector com R4 usandos IPs das interfaces diretamente conetadas (R1/eth3 - R4/eth1)
- 3 - eBGP: R4 faz eBGP com cliente de transito Acme Telecom AS 64777 (prefixos no diagrama)
- 4 - OSPF: R1, R2, R3 e R4 fazem entre si pelas interfes em azul a área BACKBONE, redistribuindo rotas conectadas
Serviços providos:
- Contrato 1 - TRANSPORTE L2, 4 pontos de 40 megabit/s cada (SLA: 1 hora)
Empresa transportadora possui 3 câmeras em seus depósitos regionais, elas devem ser transportas em Layer2 até a central de monitoramento.
- Contrato 2 - INTRANET DA PAPELARIA (SLA: 4 horas)
Existem 3 papelarias que precisam ser integradas para que o sistema de caixa/pv funcione, 20 megabits cada ponto.
A rede interna de cada papelaria possui seu prefixo próprio que é configurado por rota estática, OSPF distribui rota estática até outros pontos.
- Contrato 3 - LINK DEDICADO / Transito IP (SLA: 4 horas)
Empresa Acme Telecom contratou 800 megabit/s de transito IP.
- Contrato 4 - LINK DEDICADO CRÍTICO (SLA: 1 hora)
Fabrica da Coca-Cola contratou link dedicado de 100 megabit/s para emissão de notas fiscais para transporte de mercadoria e acesso a internet para trabalho.
- Contratos variados - Internet residencial (SLA: 8 horas)
Planos de internet de 1 a 50 megabit/s via FTTH, total de 500 clientes (consumo variando entre 300 e 700 mbit/s)
Problemas:
- 1 - Segurança: trabalho penoso na configuração de ACL/Firewall nos roteadores de backbone para impedir acesso não autorizado às redes privadas das papelarias.
- 2 - Ataques: roteadores da rede backbone tem sido vítimas de tentativas de acesso, brute-force e DOS/DDOS.
- 3 - Engenharia de trafego: alguns enlaces estão sobrecarregas enquanto outros estão ociosos.
- 4 - Crescimento: não há como crescer a rede de maneira sustentável garantindo todos os SLAs assumidos.
Topologia hierárquica
Embora eu tenha omitido o uso de switchs no diagrama de exemplo, uma rede de telecomuinicações eficiente explora o forte de cada tipo de equipamento.
Switchs são baratos (entre R$ 2.000 e R$ 22.000) e atingem capacidades de até meio terabit/s. No entando, gerenciar um grande número de VLANs
e muitos domínos STP/MSTP é exaustivo e pode resultar em erros constantes a medida que a rede cresce.
Toda rede de telecomunicações precisa lidar com BGP, Full-Route, transito de clientes com AS e engenharia de tráfego BGP.
Roteadores BGP de alta capacidade são extremamente caros (entre R$ 30.000 e R$ 120.000).
Um roteador MPLS no entando se encaixa acima do Switch gerenciável (entre R$ 8.000 e R$ 35.000): tem capacidade de rotear grandes capacidades, suporte MPLS e seus serviços mas não lida com grande quantidade de rotas.
Roteadores MPLS com capacidade para até 32 mil rotas são capazes de atender uma quantidade muito grande de circuitos (milhares). A única função
de uma rede MPLS é transportas serviços de um ponto A para um ponto B (VPWS) ou multi-pontos (VPLS, VRF), não necessitando assim saber do que se trata o conteúdo.
Hierarquia:
- 1 - Muitas portas em switchs gerenciáveis;
- 2 - Anel RSTP/MPLS entre pequenos POPs;
- 2 - Um roteador MPLS por POP de maior densidade;
- 3 - Um POP central com um roteador MPLS e um roteador BGP (ou as duas funções num roteador mais potente).
OSPF ou ISIS, LDP e MPLS
O MPLS precisa associar uma sequencia numérica (labels) para cada caminho possível até os demais roteadores de um domínio MPLS.
Para que esses caminhos sejam primeiro conhecidos, entra o protocolo IGP: OSPF (IETF) ou IS-IS (Cisco). A função do protocolo IGP é
tornar toda a rede conectada de maneira que todos os roteadores se comuniquem usando protocolo IP.
Após ter toda a tabela de rotas da rede de backbone preenchida, caberá ao LDP rodando em cada roteador:
- 1 - Descobrir os roteadores vizinhos com LDP ativo;
- 2 - Fazer contato com o roteador vizinho que anunciou LDP;
- 3 - Enviar ao roteador vizinho um número (label) para cada rota alcançavel atravez de si;
- 4 - Preencher a tabela LFIB (label forward information base) contendo a associação entre destinos (prefixos IP) e seus respectivos labels MPLS e next-hop (IP do próximo salto, usado para mapear o MAC do roteador vizinho).
Após realizar todo esse processo, a LFIB se intrometerá em toda decisão de roteamento de pacotes IP.
Sempre que um pacote IP for criado (ping por exemplo) e injetado na rede, a camada MPLS adiciona o pacote IP dentro de um pacote MPLS antes
de enviá-lo ao próximo salto.
Como todos os roteadores já tem um combinado númerico para cada destino, o pacote é encaminhado baseado no número de sequência do caminho (chamado LSP, label switch path).
Por causa do LSP, o roteador que recebe um pacote MPLS não o processará totalmente. Ele apenas lerá o número do label e o enviará para
o próximo roteador programado no caminho. Isso permite ao primeiro roteador do domínio MPLS predestinar o caminho pelo qual o pacote irá percorrer
até seu destino do outro lado do domínio MPLS.
Router-ID, LDP-Router-ID e endereço de LOOPBACK
O Router-ID é um número único de identificação de um roteador em uma rede (seja OSPF, IS-IS ou BGP).
Como esse número é composto por 32 bits e escrito no formato decimal de 4 bytes, muita gente confunde Router-ID com IP.
Por conveniêcia, é dado a cada roteador um IP de loopback padrão (ou principal) pelos seguintes motivos:
- 1 - É perigoso usar IPs de interfaces de rede físicas, elas podem ser alteradas, queimar, deserem desativadas ou perder conexão, o que resulta em remoção daquela rota;
- 2 - Usar o IP de interface física para administrar um equipamento e provisionar pode ser instavel por conta de convergências;
- 3 - A interface LOOPBACK existe dentro do kernel do roteador, o que significa que ela nunca sofrerá dos problemas físicos e voláteis das interfaces físicas;
Por isso, você deve:
- 1 - Atribuir ao roteador um IP principal único na interface Loopback, um IP que nunca será alterado, jamais;
- 2 - Esse IP deve ser um /32;
- 3 - Usar por conveniencia esse mesmo IP como número do Router-ID no OSPF ou IS-IS e no LDP;
- 4 - Usar esse IP para administrar o roteador quando entrar nele pela rede;
- 5 - Distribuir esse IP no IGP (OSPF ou IS-IS) para que o LDP crie um caminho de labels para alcança-lo;
Uma vez feito isso, os labels de serviço serão combinados entre os roteadores tendo como referência o IP da LOOPBACK para negociar labels e escolher o LSP. Explico a seguir!
Label de serviço
Para que um serviço seja transportado do roteador R1 para o roteador R3, é preciso que esses dois roteadores
combinem qual número de label será usado para que o roteador de destino saiba de qual serviço pertencia aquele
dado no roteador de origem. Esse label é o label de serviço.
Como os roteadores já possuem um combinado númerico, o LSP que determina o caminho, um dado com origem
no roteador R1 e destino final no roteador R3 precisa receber dois labels: o primeiro label que envolve o dado é o label do serviço,
o segundo label que determina o caminho é adicionado em seguida pois esse é o label que será lido pelos roteadores seguintes
para determinar o caminho até o roteador R3.
O penultimo roteador do caminho irá executar uma ação chamada POP: remover o label do caminho e entregar para o último
roteador o pacote contendo apenas 1 label (o primeiro que foi adicionado, o label de serviço).
Quando R3 recebe esse pacote com o label de serviço ele então removerá esse label e entregará os dados ao circuito a que ele se destina.
Os principais serviços em uma rede MPLS são:
- VPWS provisionada por LDP
Transporta um quadro inteiro provendo um pseudo-wire (serviço ponto-a-ponto de camada 2).
O roteador associa uma porta (ou vlan) a esse serviço e combina com o roteador destino o label para ele.
Quando um quadro entra pela porta associada, o VPWS adiciona o label de serviço, em seguida adiciona o label que determina o caminho até o roteador destino e envia para o próximo salto.
No roteador de destino o label de serviço é removido e o quadro é transmitido pela porta associada.
- VPLS provisionada por LDP
Semelhante ao VPWS, no entando é um serviço multiponto. Caberá ao roteador de ingresso (por onde o quadro entra na rede MPLS) aprender os MACs e para qual roteador
de destino deve enviar diante de várias possibilidade, ou replicar o broadcast recebido em todos os túneis de destino associados a VPLS.
- VPLS provisionada por BGP (l2-vpn)
No modo com BGP (MP-BGP), o protocolo BGP se encarrega de fazer o combinado de labels entre o roteador de origem do circuito e o roteador de destino do circuito.
- VRF provisionada por BGP (l3-vpn IPv4)
VRF é um serviço de roteador virtual. Toda a núvem MPLS se comporta como um único roteador, como se esse roteador virtual possuisse conexão direta
com cada porta que faz parte da VRF.
Nesse modelo, quando um pacote entra no roteador a interface de entrada é associada a uma VRF (tabela de rotas virtual), nessa tabela virtual há as rotas para
as demais redes em outros roteadores que pertencem a mesma VRF. O IP do gateway nessa tabela é usado para determinar o label do LSP, e o label de serviço (label interno) é determinado pelo BGP.
Cada VRF em um roteador da núvem recebe um RD (router distinguer), RDs podem ser misturados em diferentes roteadores para prover integração entre VRFs diferentes.
Homologação de MTU
Vamos primeiro definir dois conceitos: MTU e L2-MTU
- L2-MTU
É um limite dos chips de Switchs, bridges ou interfaces de rede que determina o máximo de bytes lidos desde o inicio de um quadro ethernet/802 (PREAMBLE) até seu fim (FCS).
Se um chip de Switch possui um L2-MTU máximo de 1.516 bytes e um computador ou switch remetente submeter um quadro de 1.520 bytes, o quadro será descartado silenciosamente, sem avisos ou logs.
A maioria absoluta de radios, switchs e interfaces vem com um L2-MTU padrão em torno de 1.516 bytes o que é insuficiente para criar uma rede MPLS. Procure usar sempre equipamentos que suportem no mínimo
um L2-MTU de 1560 bytes. O recomendável é usar equipamentos com suporte a Jumbo-Frame (+9.000 bytes).
- MTU ou L3-MTU
É um limite de SOFTWARE criado para evitar que o roteador crie pacotes que excedam o L2-MTU. O valor padrão é 1.500 em todos os roteadores do mundo.
Assim, adicionando os 14 bytes do quadro ethernet a um pacote IP de 1.500 bytes, temos um quadro de 1.514 bytes que nunca excederá o L2-MTU.
Uma vez definido esses dois conceitos, pense: um label MPLS tem 4 bytes (32 bits). Para transportar um serviço é preciso usar 2 labels (o label interno determina o serviço e o label externo determinar o LSP) totalizando
uma adição de 8 bytes.
O serviço de VRF transporta um pacote IP sobre uma rede MPLS usando 2 labels, assim, temos:
IP(1500) + label-service(4) + label-lsp(4) = 1.508, adicionando o quadro ethernet/802 de 14 bytes temos 1.522, o que excede os valores padrão de L2-MTU.
Se a interface por onde a rede MPLS foi construida usar VLAN, adicione ao cálculo 4 bytes (32 bits) e temos um quadro de 1.526 bytes.
Se não fosse ruim o suficiente, o serviço VPLS/VPWS transporta um quadro inteiro dentro do pacote MPLS. Assim, temos:
quadro(1514) + label-service(4) + label-lsp(4) = 1.522 bytes, adicionando o quadro ethernet/802 de 14 bytes temos 1.536 bytes.
Se o quadro recebido na interface já possuir tag de VLAN, adicione-se ao cálculo 4 bytes, se a interface por onde a rede MPLS foi construida usar VLAN tambem, adicione mais 4 bytes e temos
agora:
quadro-com-vlan(1518) + label-service(4) + label-lsp(4) = 1.526 bytes, adicionando o quadro ethernet/802 de 14 bytes e uma vlan de 4 bytes, temos 1.544 bytes.
Se toda a rede fim-a-fim não for testada para passar um quadro desse tamanho o pacote MPLS desaparecerá sem vestígios e o serviço do cliente não irá funcionar.
Transportes infinitos
Pense nisso:
Um provedor X construiu uma rede MPLS para vender serviços de transporte LAN-2-LAN (VPWS/VPLS) e vendeu ao provedor Y um transporte de 10 gigabit/s.
O provedor Y, tendo um transporte de 10 gigabit/s para uma nova localidade, resolveu expandir sua rede MPLS por meio desse transporte.
O provedor Y ofereceu ao provedor W um serviço de transporte VPLS que passa por dentro desse transporte contratado com o provedor X.
O provedor Y, tendo um transporte VPLS tambem resolveu usar MPLS.
Qual L2-MTU o provedor X deve suportar para prover esse tipo de recursividade?
Separando rede de transporte MPLS
Se você observer o primeiro diagrama, vai notar que foram configurados IPs públicos entre os roteadores do backbone.
Essa prática é normalmente adotada para permitir acesso externo aos roteadores e isso vai acabar!
A forma correta de montar uma rede MPLS é separar a nuvem MPLS dos serviços prestados, e IPs públicos pertencem a um tipo de serviço: Internet.
A Internet vai se tornar um serviço de VRF (VRF-INTERNET) e a núvem será independente.
O Acesso a núvem MPLS deve ser feito por meio de algum serviço de VPN (PPtP por exemplo) e não será abordado aqui.
Vamos mudar as faixas de IP entre os roteadores para ficar restritamente dentro de uma faixa privada (10.0.0.0/19, de 10.0.0.0 a 10.0.31.0).
Agora a nuvem MPLS é uma rede completamente privada e independente do resto.
Ativando OSPF
Antes de configurar o OSPF os roteadores já tiveram suas interfaces de rede configurada com os IPs do diagrama acima
e cada um deles conseguiu dar ping no vizinho diretamente conectado.
Em todos os roteadores, ative OSPF de forma a incluir na área backbone somente os endereços da nuvem MPLS e o endereço do próprio Loopback.
Você não deve ativar a redistribuição de rotas de fora da nuvem para dentro da nuvem.
Observação:O x muda de roteador para roteador, sendo o respectivo IP de loopback.
- Cisco
enable
configure terminal
hostname Rx
interface Loopback 0
ip address 10.255.0.x 255.255.255.255
router ospf 1
router-id 10.255.0.x
network 10.0.0.0 0.0.31.255 area 0.0.0.0
network 10.255.0.x 0.0.0.0 area 0.0.0.0
exit
exit
write
- Mikrotik
Ativando LDP para criação dos LSPs
Uma vez que o OSPF está operacional e todos os roteadores conseguem se comunicar (ping para ip da Loopback)
é hora de ativar o LDP para que ele crie uma sequência numérica para cada caminho
Observação:O x muda de roteador para roteador, sendo o respectivo IP de loopback.
- Cisco
enable
configure terminal
mpls ldp router-id lo0
mpls ip ttl-expiration pop 1
interface eth 0/0
mpls ip
interface eth 0/1
mpls ip
exit
exit
write
- Mikrotik
Serviço de VPN IPv4 - VRF
Transporte VPWS
Clientes PPPoE no MPLS usando VPLS
Clientes PPPoE no MPLS usando VRF
Serviços e gerenciamento da rede
CONTINUA... (ainda estou escrevendo!)