“MPLS: Do núcleo da rede a última milha” - RNP · 1. O roteador de ingresso recebe o pacote...

Post on 17-Oct-2020

3 views 0 download

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