“MPLS: Do núcleo da rede a última milha” - RNP · 1. O roteador de ingresso recebe o pacote...
Transcript of “MPLS: Do núcleo da rede a última milha” - RNP · 1. O roteador de ingresso recebe o pacote...
PoP-SC/RNP - WTR 2018
“MPLS: Do núcleo da rede a última milha”
Rodrigo PescadorAnalista de Engenharia de Redes
RNP/AmLight
Murilo VetterAnalista de TIREMEP-FLN
Um pouco sobre a AmLightAmericas Lightpaths Express and Protect
É uma infraestrutura que combina o uso de espectros
ópticos (express) e capacidades contratadas (protect) para
construir um ambiente confiável para o desenvolvimento da educação e
pesquisa colaborando com as comunidades científicas dos Estados Unidos e
América Latina.América Latina.
Áreas de colaboração: Astronomia, Física de alta energia, Biodiversidade,
Ecologia, Ciência de Materiais, Sismologia, Pesquisa da futura Internet,
Pesquisas de UHD – Ultra High Definition vídeo.
Maiores informações:
https://www.amlight.net/?page_id=1223
Um pouco sobre a AmLight
O que é MPLS?
• O MPLS (Multi Protocol Label Switching), definido pela RFC3031, é uma tecnologia de encaminhamento de pacotesbaseada em rótulos ou labels, que atua entre as camadas 2 e3 do modelo OSI, citado também por alguns como umprotocolo de camada 2,5
Por que e quando usar MPLS• O MPLS foi concebido para melhorar a taxa de encaminhamento de pacotes
devido a limitação no poder de processamento dos hardwares (anos 90)
• Com o advento dos circuitos integrados (ASICs), o roteamento IP ficou bastanteeficiente, sendo que o uso do MPLS somente por “ser mais rápido” não seria maisnecessário
• Porém, o uso do MPLS traz muitas vantagens na operação de um backbone poisoferece a possibilidade de se utilizar serviços de VPN, Engenharia de Tráfego (TE),qualidade de serviço (QoS) e “BGP free core”
• O MPLS é, atualmente, uma das tecnologias mais utilizadas para criação decircuitos virtuais. Sua principal aplicação é a possibilidade de oferecer um serviçode conectividade entre localidades distintas com garantias de qualidade deserviço, principalmente voltado a clientes corporativos
Rede IP tradicional e o MPLS
Em uma rede IP tradicional
• Cada roteador realiza uma pesquisa na tabela de roteamento paradeterminar o próximo salto de um pacote
• Cada roteador da rede toma uma decisão independente dos demais
Na rede MPLSNa rede MPLS
• O primeiro dispositivo pesquisa na tabela de roteamento e:– Encontra o destino final do pacote
– O caminho é pré-determinado entre a origem e o destino
– Roteadores intermediários não necessitam fazer uma nova pesquisa na tabelade roteamento para encaminhar o pacote
– No último roteador, a label MPLS é removida e o pacote é entregue viaroteamento IP tradicional
Como é o roteamento de pacotes utilizando o protocolo BGP sem o uso de MPLS?
Como é o roteamento de pacotes utilizando o protocolo BGP com o uso de MPLS (BGP free core)?
Serviços L2 entre unidades sem o uso de MPLS
Serviços L2 entre unidades com o uso de MPLS
Labels• Tamanho: 4 bytes
• Significância local
• Inserida entre o cabeçalho da camada de enlace e de rede
EXP: CoS – Class of Service
S (Stack): Identifica o último label da pilha (S = 1)
TTL – Time to Live:Time to live do pacote MPLS. É o mesmo que o TTL do pacote IP
Empilhamento de labels
• Pode haver o empilhamento delabels se uma VPN ou MPLS-TEestiverem também sendocarregados no pacote
• Um roteador MPLS analisa sempre• Um roteador MPLS analisa sempreo label que está no topo da pilha(isto é, o que está mais externo), afim de tomar sua decisão deencaminhamento
• Os demais labels são consideradosapenas quando o cabeçalho dotopo é removido
Visualizando um pacote MPLS
Valores dos labels MPLS (Huawei)
Valor Descrição
0 – 15 Reservado – Não disponível para alocação
16 – 1023 Compartilhado entre LSPs estáticos e CR-LSPs
>= 1024 Protocolos dinâmicos (LDP, RSVP-TE, MP-BGP)
Valor Descrição RFC
0 IPv4 Explicit NULL Label 30320 IPv4 Explicit NULL Label 3032
1 Router Alert Label 3032
2 IPv6 Explicit NULL Label 3032
3 Implicit NULL Label 3032
4-6 Unassigned
7 Entropy Label Indicator (ELI) 6790
8-12 Unassigned
13 GAL Label 5586
14 OAM Alert Label 3429
15 Extension Label 7274
Operações básicas no encaminhamento de pacotes na rede MPLS
• Push– Quando um pacote IP ingressa na
rede MPLS, o nó de entradaadiciona uma label entre ocabeçalho camada 2 e camada 3
• Swap• Swap– Quando um pacote IP é
transferido de um nó para outroexiste a troca de label de acordocom as definições do plano deencaminhamento
• Pop– Quando um pacote sai da rede
MPLS, o label é removido e opacote IP original é entregue nodestino
Arquitetura básica do MPLS
• Plano de controle• Plano de controle
Gera e mantêm as informações de roteamento e labels
– RIB: gerado pelos protocolos de roteamento IP
– LDP: aloca as labels, cria a LIB e estabelece os LSPs
– LIB: gerado pelo LDP, gerencia as labels
• Plano de encaminhamento
Encaminha os pacotes IP e MPLS
– FIB: baseada na tabela RIB, utilizada para encaminhar os pacotes IP
– LFIB: baseada nas informações LDP, encaminha pacotes MPLS (indica para onde enviar e com qual label)
Tipos de roteadores
• LER – label edge router (também chamado PE)
– Roteador que encapsula o pacote dentro da rede MPLS
– Insere/remove o cabeçalho MPLS que contém os LABEL
– Roteador que escolhe o caminho do pacote
– Ficam na borda da rede MPLS
– Tipicamente os serviços são terminados nestes nós (L2VPN, VPLS, Internet, etc)
• LSR – label switching router (também chamado P)
– Roteador que só faz o encaminhamento de pacotes usando unicamente informações de LABEL
– Comum em grandes operadoras
Inserção e remoção da label no LER
FEC – Forwarding Equivalence Class
• Conjunto de pacotes que possuem as mesmas características– Encaminhados para o mesmo next-hop
– Mesma interface de saída
– Mesmo tratamento (fila, por exemplo)
As regras de mapeamento de labels nas FECs podem levar em conta diversos campos
do pacote, como IP de origem, IP de destino, tipo de protocolo, byte DS (DSCP) ou,
até mesmo, as portas do protocolo de transporte
Em uma rede MPLS, a FEC é determinada
somente uma vez, no momento em que
pacote ingressa em um LSP
O LSP (Label Switched Path) é o caminho por onde os pacotes irão passar numa
rede MPLS. No momento em que um pacote entra numa rede MPLS, este é
associado a uma classe de equivalência (FEC) e assim é criado um LSP relacionado
a esta FEC
LSP - Label Switched Path
• Cada enlace de roteador usado por um caminho específico é identificado por umlabel, de forma que um LSP é definido por uma sequência de labels
• A configuração dos LSPs pode ser feita de forma manual ou automática
LSP Dinâmicos
• LDP - Label Distribution Protocol– Responsável pela distribuição das labels no domínio MPLS
– Cria um caminho LSP em cada nó da rede de acordo com as informações da topologia do roteamento IGP
Processo de estabelecimento de uma
sessão LDP entre neighbors.
LSP Dinâmicos
• RSVP-TE - Resource Reservation Protocol Traffic Engineering– Usado para construir um caminho LSP com reserva de recursos, conhecidos
como constraint-based LSP (CR-LSP)
• MP-BGP - Multiprotocol BGP– Extensão do BGP que permite realizar alocação de labels VPN MPLS
– MP-BGP AD permite o uso de “descoberta automática de membros” para o estabelecimento de VPNs
Encaminhamento MPLS
1. O roteador de ingresso recebe o pacote IP destinado a 4.4.4.2 e adiciona a label Z ao pacote, encaminhando-o em seguida
2. O roteador intermediário troca a label Z por Y
3. O penúltimo roteador recebe o pacote Y e remove esta label (PHP). O pacote é então encaminhado sem último nó sem qualquer label
4. O roteador de saída encaminha o pacote IP puro ao destino 4.4.4.2
PHP – Penultimate Hop Popping
• PHP é uma técnica para remover o label de um pacoteum hop antes de seu destino final
• Esta técnica economiza uma consulta adicional no ultimosalto (LER) em um LSPsalto (LER) em um LSP
• O label “implicit-null” tem o valor 3 (reservado)
• O penúltimo roteador remove o label de qualquer pacotepara o qual este receba um “implicit-null” paradeterminado prefixo
Encaminhamento sem o uso de PHP• Explicit-null
• A label é removida somente no último roteador do LSP• Último LER egresso deve fazer duas consultas: LFIB e FIB
PHP – Aplicação da Técnica• Implicit-null
• A label é removida um hop antes (penúltimo) de seu destino final• Último LER faz somente uma consulta na tabela de roteamento
Tabelas do MPLS
No MPLS o tipo de tabela pode mudar de acordo com o papel que o roteador desempenha na rede: LER de ingresso, LSR ou LER de egresso
• NHLFE (Next Hop Label Forwarding Entry)
– A mais importante, presente em todos os roteadores MPLS
– Define um conjunto de ações no formato:
• [Ação sobre o LABEL] x [Ação de Encaminhamento]
POP/PUSH/CHANGE NEXT HOP [ Caso seja o próprio roteador, defino como SELF]
Tabelas do MPLS
• FEC-to-NHLFE Map (FTN)
– Presente no roteador LER de ingresso (origem)
– Redireciona pacotes ainda sem labels para uma entrada específica do NHLFE baseado na FEC
• Incoming Label Map (ILM)
– Presente nos roteadores LSR e LER de egresso (destino)
– Indica o que fazer com pacotes que já possuem labels, apontando para a NHLFE
Encaminhamento MPLS (detalhes)
Laboratório Dia 1
Aplicações com MPLS
• MPLS VPN
– L2VC
– L3VPN
– VPLS– VPLS
• MPLS-TE
• MPLS 6PE
Aplicações com MPLS
• MPLS VPN (L2VPN, L3VPN, VPLS)– CE (Customer Edge): equipamento do cliente
– PE (Provider Edge): equipamento de borda da operadoraoperadora
– P (Provider): equipamento de backbone da operadora
Aplicações com MPLS
• MPLS-TE– Pode reservar recursos na rede para garantir a qualidade de
serviço ou melhorar a utilização de enlaces
– Pode implementar recursos que otimizam e melhoram a convergência da rede (FRR)convergência da rede (FRR)
Aplicações com MPLS
• MPLS 6PE– Possibilita o transporte do protocolo IPv6 em um backbone
MPLS IPv4, através do protocolo MP-BGP
TTL propagation• O roteador MPLS copia o valor de TTL do pacote IP para o MPLS
• Devido a esta “propagação”, é possível visualizar todos os hops da rede através do comando tracerouce
R1# traceroute 10.0.56.6Tracing the route to 10.0.56.6 Tracing the route to 10.0.56.6 1 10.0.12.2 28 msec 36 msec 12 msec2 10.0.23.3 84 msec 28 msec 68 msec3 10.0.34.4 68 msec 68 msec 68 msec4 10.0.45.5 68 msec 76 msec 60 msec5 10.0.56.6 60 msec * 68 msec
TTL propagation• É possível desabilitar a opção de “propagação” do TTL entre o pacote IP e o MPLS
• O TTL do pacote MPLS é calculado independente do TTL do pacote IP, então o TTL do pacote IP fica intacto ao longo do LSP
R1# traceroute 10.0.56.6Tracing the route to 10.0.56.6 1 10.0.12.2 16 msec 12 msec 12 msec2 10.0.45.5 60 msec 60 msec 60 msec3 10.0.56.6 60 msec * 52 msec
O cuidado com o MTUÉ importante observar o valor de MTU das interfaces dos equipamentos para
evitar que serviços transportados pelo MPLS sofram degradação.
• L3VPN (1522, sem contar o FCS)
• L2VPN (1540 porta acesso e 1544 porta trunk)
Boa prática: Em todas as interfaces de backbone, habilitar jumbo frame.
O ID do roteador na rede MPLSInterface Loopback e LDP Router ID• O uso de uma interface loopback garante que seu endereço IP estará alcançável
através de diversos caminhos em um roteador, através do IGP, se este for o caso
• Este endereço da interface loopback será utilizado em todo o domínio MPLS com afinalidade de identificar o roteador e estabelecer os serviços com os demais nós darede
Como o LDP Router ID é selecionado pelo roteador (Cisco)?
1. O roteador verifica as interfaces que estão operacionais
2. Se alguma destas interfaces é loopback, então seleciona a de maior endereço
3. Se não há interfaces loopback, então o endereço o maior endereço em qualquerinterface é selecionado
É importante garantir que o endereço selecionado como LDP router ID seja alcançado
pelos demais nós da rede
Engenharia de Tráfego (MPLS-TE)• Roteamento IP tradicional
– O menor caminho será escolhido para encaminhar todo o tráfego
– Por padrão, o caminho MPLS (LSP) também irá escolher o menor caminho IGP
• MPLS-TE
– É possível utilizar os diversos caminhos disponíveis na rede de forma mais inteligente, distribuindo o tráfego entre eles
Engenharia de Tráfego (MPLS-TE)• LSP
– Em um LSP, o tráfego é encaminhado de acordo com as labelsassociadas aos pacotes no momento que ingressam no domínio MPLS
• MPLS-TE– O túnel MPLS-TE é a associação de diversos LSPs que formam um túnel – O túnel MPLS-TE é a associação de diversos LSPs que formam um túnel
virtual
OSPF Opaque LSA
Engenharia de Tráfego (MPLS-TE)
• Possibilidades e benefícios ao usar MPLS-TE
– FRR e link/node failure• Em caso de falha em um nó ou enlace, possibilita a proteção e
comutação de tráfego muito rapidamente, minimizando a perdade pacotesde pacotes
Engenharia de Tráfego (MPLS-TE)
• Possibilidades e benefícios ao usar MPLS-TE
– Melhor utilização dos enlaces• Possibilita que enlaces até então ociosos e só utilizados
como redundância possam ser usados em conjunto com osdemaisdemais
Engenharia de Tráfego (MPLS-TE)
• Importando o tráfego para o túnel– Rotas estáticas
– Tunnel policy
– Auto routes (IGP shortcut ou forwarding adjacency)– Auto routes (IGP shortcut ou forwarding adjacency)
Troubleshooting básico: Comandos
• OSPFv2/OSPFv3
Troubleshooting básico: Comandos
• Tabela de rotas
Troubleshooting básico: Comandos
• Estado das sessões LDP
Troubleshooting básico: Comandos
• Caminhos LSP
Troubleshooting básico: Comandos
• Conectividade LSP
Troubleshooting básico: Causas
• Sessão LDP down – causas comuns– A interface onde a sessão LDP é estabelecida está down
– Comando “undo mpls”, “undo mpls ldp” foram aplicados no equipamento
– Rota inexistente
Keepalive LDP expirou– Keepalive LDP expirou
– Hello LDP expirou
Troubleshooting básico: Causas
• LDP LSP down – causas comuns– A rota para o LSR ficou indisponível
– As sessões LDP ficaram indisponíveis
– Recursos de memória ou labels insuficientes
– Política ou ACL pode estar aplicadaPolítica ou ACL pode estar aplicada
Troubleshooting básico: Causas
• L2VC não é estabelecido – causas comuns– O encapsulamento do VC é diferente nas duas pontas
– O MTU do VC é diferente nas duas pontas
– O ID do VC é diferente nas duas pontas
– A configuração de control-word é diferente nas duas pontasA configuração de control-word é diferente nas duas pontas
– A Sessão LDP não está operacional
– A interface AC não está UP localmente ou remotamente
Monitoramento e gerênciaMétricas possíveis de serem monitoradas
• Uptime
• Temperatura
• Memória
• CPU
• Potência (Watts) em uso e disponível das fontes de alimentação
• Potência dos transceivers
• Número de prefixos IPv4 e IPv6
• Adjacências OSPF• Adjacências OSPF
• Estado dos circuitos L2VC
• Estado das sessões LDP
• Estado das fontes de alimentação
Monitoramento e gerência (NAGIOS)
• Número de MPLS L2VC criados:
### ARQUIVO DE CONFIGURAÇÃO DO SERVIÇO:
define command {command_name check_snmp_v3_l2vc_contador_SW31command_line /usr/local/nagios/tools/snmp/check_snmp_l2vc_contador.sh
$HOSTADDRESS$ "$_HOSTSNMPV3_OPT$" $ARG1$$HOSTADDRESS$ "$_HOSTSNMPV3_OPT$" $ARG1$}
define service {use generic-servicehost_name REMEP-SW31service_description MPLS - L2VC CRIADOScheck_command check_snmp_v3_l2vc_contador_SW31!0notifications_enabled 1
}
Monitoramento e gerência (NAGIOS)
• Número de MPLS L2VC criados:
### SCRIPT: check_snmp_l2vc_contador.sh
#!/bin/bash#PoP-SC
SNMP=/usr/bin/snmpgetOIDOPER='1.3.6.1.4.1.2011.5.25.119.8.7.'OIDOPER='1.3.6.1.4.1.2011.5.25.119.8.7.'
if [ "$#" -eq 0 ];then
echo "SNMP Argumentos não foram passados!"fi
HOST=$1SNMPOPS=$2SNMP_INT=$3
SNMPREM=`$SNMP $SNMPOPS $HOST $OIDOPER$SNMP_INT | awk '{print $4}' | tr '\"\' ' ' 2>/dev/null | awk '{print $1}'`
if [[ $SNMPREM =~ ^[0-9][0-9]*$ ]];then
echo "OK: L2VC - Quantidade: $SNMPREM | l2vccontador=$SNMPREM "exit 0
elseecho "UNKNOWN"exit 3
fi
Monitoramento e gerência (NAGIOS)
• MPLS L2VC LSP:
### ARQUIVO DE CONFIGURAÇÃO DO SERVIÇO:
define command {command_name check_snmp_v3_l2vc_SW31command_line /usr/local/nagios/tools/snmp/check_snmp_l2vc.sh
$HOSTADDRESS$ "$_HOSTSNMPV3_OPT$" $ARG1$$HOSTADDRESS$ "$_HOSTSNMPV3_OPT$" $ARG1$}
define service {use generic-servicehost_name REMEP-SW31service_description MPLS - L2VC VC2035 - SENAI CTAI [SW31-
UFSC - SW32-UDESC]check_command check_snmp_v3_l2vc_SW31!2035.4notifications_enabled 1
}
Monitoramento e gerência (NAGIOS)
• MPLS L2VC LSP:
### SCRIPT: check_snmp_l2vc.sh
#!/bin/bash#PoP-SC
SNMP=/usr/bin/snmpgetOIDOPER='1.3.6.1.4.1.2011.5.25.119.4.1.1.1.1.5.'
if [ "$#" -eq 0 ];then
echo "SNMP Argumentos não foram passados!"fi
HOST=$1SNMPOPS=$2SNMP_INT=$3
SNMPREM=`$SNMP $SNMPOPS $HOST $OIDOPER$SNMP_INT | awk '{print $4}' | tr '\"\' ' ' 2>/dev/null | awk '{print $1}'`
if [[ $SNMPREM =~ ^[1-4]$ ]];then
OIDPOS='1.3.6.1.4.1.2011.5.25.119.4.1.1.1.1.28.‘
SNMPTIME=`$SNMP $SNMPOPS $HOST $OIDPOS$SNMP_INT | awk '{print $4}' | tr '\"\' ' ' 2>/dev/null | awk '{print $1}'`
#CONVERTE SEG. PARA DIAS e HORASUPTIME_DIAS=`echo "$SNMPTIME/(60*60*24) " | bc -l `UPTIME_HORAS=`echo "$SNMPTIME/(60*60) " | bc -l `
Monitoramento e gerência (NAGIOS)• MPLS L2VC LSP:
### SCRIPT: check_snmp_l2vc.sh [CONTINUAÇÃO]
if (( $(echo "$UPTIME_DIAS >= 1" | bc -l ) ))then
UPTIME_DIAS=`echo $UPTIME_DIAS | awk -F\. '{ print $1}' `else
UPTIME_DIAS=0fi
if (( $(echo "$UPTIME_HORAS >= 1" | bc -l ) ))then
UPTIME_HORAS=`echo $UPTIME_HORAS | awk -F\. '{ print $1}' `else
UPTIME_HORAS=0fi
if [ $SNMPREM -eq 1 ];then
echo "OK: L2VC {Status UP, Uptime: $UPTIME_DIAS dias ou $UPTIME_HORAS horas } |l2vcstatus=$SNMPREM , uptime_dias=$UPTIME_DIAS , uptime_horas=$UPTIME_HORAS"
exit 0elif [ $SNMPREM -eq 2 ];then
echo "CRITICAL: L2VC Status DOWN | l2vcstatus=$SNMPREM"exit 2
elif [ $SNMPREM -eq 3 ];then
echo "WARNING: L2VC Status PLUGOUT | l2vcstatus=$SNMPREM"exit 1
elif [ $SNMPREM -eq 4 ];then
echo "WARNING: L2VC Status BACKUP | l2vcstatus=$SNMPREM"exit 1
elseecho "UNKNOWN"exit 3
fifi
Monitoramento e gerência (NAGIOS)
• MPLS LDP:
### ARQUIVO DE CONFIGURAÇÃO DO SERVIÇO:
define command {command_name check_snmp_v3_mpls_ldp_SW31command_line /usr/local/nagios/tools/snmp/check_snmp_mpls_ldp.sh
$HOSTADDRESS$ "$_HOSTSNMPV3_OPT$" $ARG1$$HOSTADDRESS$ "$_HOSTSNMPV3_OPT$" $ARG1$}
define service {use generic-servicehost_name REMEP-SW31service_description MPLS - LDP [SW31-UFSC - SW32-UDESC]check_command
check_snmp_v3_mpls_ldp_SW31!200.237.195.32.0.0notifications_enabled 1
}
Monitoramento e gerência (NAGIOS)
• MPLS LDP:
### SCRIPT: check_snmp_mpls_ldp.sh
#!/bin/bash#PoP-SC
SNMP=/usr/bin/snmpgetOIDOPER='1.3.6.1.4.1.2011.5.25.143.1.8.1.4.'
if [ "$#" -eq 0 ]; thenecho "SNMP Argumentos não foram passados!"
fi
HOST=$1SNMPOPS=$2SNMP_INT=$3SNMPREM=`$SNMP $SNMPOPS $HOST $OIDOPER$SNMP_INT | awk '{print $4}' | tr '\"\' ' ' 2>/dev/null | awk '{print $1}'`
if [[ $SNMPREM == "Operational" ]]; thenecho "OK: MPLS-LDP status - $SNMPREM | LDPSTATUS=1"exit 0
elseif [[ $SNMPREM == "Nonexistent" || $SNMPREM == "Initialized" || $SNMPREM == "OpenRec" ||
$SNMPREM == "OpenSent" ]]; thenecho "CRITICAL: MPLS-LDP status - $SNMPREM | LDPSTATUS=0"exit 2
fiecho "ERRO ao consultar via SNMP | LDPSTATUS=0"exit 3
fi
Laboratório Dia 2
Referências• Huawei – Support
http://support.huawei.com• Multiprotocol Label Switching (MPLS)
https://www.cisco.com/c/en/us/products/ios-nx-os-software/multiprotocol-label-switching-mpls/index.html
• MPLS – Multi-Protocol LABEL Switchinghttps://www.ppgia.pucpr.br/~jamhour/Pessoal/Mestrado/TARC/MPLS.pdfhttps://www.ppgia.pucpr.br/~jamhour/Pessoal/Mestrado/TARC/MPLS.pdf
• What Is PHP (Penultimate Hop Popping)http://www.mplsvpn.info/2008/11/what-is-php-penultimate-hop-popping.html
• MPLS - Penultimate Hop Poppinghttp://packet-lab.com/main/service-provider/ccip/item/89-mpls-penultimate-hop-popping.html
• MPLS Architecturehttp://www.informit.com/articles/article.aspx?p=167856