Escolar Documentos
Profissional Documentos
Cultura Documentos
Capítulo 1: Fundamentos
Label TC S TTL
E-LSP L-LSP
Até então vimos como o MPLS usa os labels para o encaminhamento, mas
como acontece os vínculos entre os labels e FECs ao longo da rede?
Antigamente a configuração manual não era uma opção, claramente era
necessário para que o protocolo disseminasse a informação. De um ponto de
vista prático, haviam duas opções: a) inventar um novo protocolo que
distribuísse os vínculos de labels. b) estender um protocolo existente para
carregar os labels e em adição ter informações de roteamento. A questão de se
inventar um protocolo novo, ou estender protocolos POPulares no mundo
MPLS, vamos discutir em detalhes nos próximos capítulos. Neste ponto, é
suficiente dizer que as questões foram resolvidas, e ambas opções foram
seguidas.
Levando em consideração a distribuição de vínculos de labels, a comunidade
de engenharia inventou um novo protocolo (LDP, Label Distribution Protocol) e
estendeu dois protocolos existentes (RSVP, Resource Reservation Protocol, e o
BGP, Border Gateway Protocol). O formato do pacote e a base de operação
desses protocolos é explicada em vários textos introdutórios. E será replicada
aqui, vamos examinar as propriedades dos diferentes protocolos, e ver seus
benefícios e limitações de cada um deles.
1.3.2.1 LDP
Vamos ter uma visão mais breve focando na condição de corrida causada pela
perda da sincronização entre o LDP e o IGP. Nessa topologia de losango
mostrada na figura 1.4, LSR A está anunciando um vínculo para a sua
Loopback, o FEC A. Para começarmos, todos os links tem o mesmo custo, e o
link C-D não existe na topologia. Do ponto de vista do D, o LSP para o FEC A
segue o caminho D-B-A. Após um tempo o caminho C-D foi adicionado à
topologia com um custo melhor que o link B-D, fazendo com que do ponto de
vista do D, o algoritmo SPF mude o caminho para o FEC A para o link D-C-A.
Considerando que o IGP reaja mais rápido que o LDP. Em breve o D vai saber
sobre a mudança de roteamento, e ele para de usar o vínculo recebido do B,
causando uma quebra no LSP. O LSP ficará down, até que seja recebido um
novo vínculo para o FEC A via LDP pelo C. Isso pode demorar um pouco,
dependendo o quão rápido será o estabelecimento de sessão. Essa situação
descrita aqui é particularmente indesejada, desde que um caminho alternativo
exista na topologia e poderia ser usado para que a sessão LDP ficasse up no link
C-D.
O exemplo acima mostra uma perda de sincronização causada pelo fato da
sessão LDP ser estabelecida depois de uma sessão IGP quando um link sobe.
Essa não é a única maneira em que uma perda de sincronização pode ocorrer:
Esquecendo de habilitar o LDP em uma interface, não configurar uma
autenticação que é necessária, tendo filtros de firewall que bloqueia o tráfego
LDP, ou qualquer outro evento que possa fazer com que o IGP use um link e o
LDP não use, causa o mesmo efeito.
Uma solução para esse problema é amarrar (através de configuração) o custo
do IGP de um link em particular à existência de uma sessão LDP no link [RFC
5443]. Quando a sessão LDP cair, o custo do IGP anunciado para o caminho
ficará mais alto. Entretanto, se um caminho alternativo estiver disponível, os
labels LDP naquele caminho serão usados. Isso é discutido com mais detalhes
no capítulo 13 - Gerenciamento MPLS.
Agora, vamos supor que o link entre o C e D esteja operacional mas ele sofre
um flap. Isso quer dizer que ele caiu e voltou após alguns segundos. Apesar que
a técnica descrita na [RFC 5443] previna blackholing de tráfego enquanto a
sessão entre C e D seja restabelecida e as labels sejam trocadas, o tráfego pode
seguir um caminho fora do ideal durante esse tempo. Uma técnica adicional
chamada de “LDP Session Protection” é suportada por algumas implementações
LDP para evitar esse problema. Isso acontece da seguinte forma. Enquanto o
link entre C e D está up, eles trocam regularmente mensagens de hello no
caminho normal. Quando LDP Session Protection está em uso, em adição, Ce D
também trocam hellos “targeted”. Apesar de serem trocadas dois tipos de
mensagens hello, apenas uma sessão é mantida.
Se o link entre C e D cair, os hellos trocados regularmente não serão
propagados, mas contanto que haja conexão IP entre C e D (via A e B no
exemplo), os hellos targeted vão continuar sendo encaminhados entre C e D, e
então a sessão LDP permanecerá up. Isso faz com que o quando o link entre C e
D seja restabelecido, a sessão LDP não precisa ser restabelecida ou ter troca de
vínculos de label. Uma vez que as mensagens de hello do LDP sejam trocadas
sob o link, o link pode ser usado para o encaminhamento mais uma vez. Até
aqui nós vimos as implicações de que o LDP tem de confiar no IGP para as
funções de roteamento. Agora, vamos ver a escolha de distribuição de labels e
os modos de retenção feitos por implementações LDP comuns.
Agora temos que discutir a maneira que os labels LDP são distribuídos,
vamos olhar o exemplo de um LSP LDP.
A figura 1.6 mostra um LSP LDP, que tem seu ponto de saída sendo o
roteador D. O LDP forma uma estrutura ponto-multiponto enraizada no D, com
cada um dos roteadores de entrada. Da mesma forma, LDP forma estruturas
ponto-multiponto enraizadas em cada um dos roteadores na rede, mas isso não
está sendo mostrado no diagrama para clareza.
Os números dentro das caixas mostram os custos do IGP em cada link. As
flechas mostram a direção do fluxo de dados, e o número ao lado da flecha
mostra o label LDP usado no link para o LSP até o D. Podemos ver que cada
caminho LSP segue a melhor rota determinada pelo IGP. Em um link em
particular, o label usado para chegar no roteador de destino em particular é o
mesmo, sem considerar a origem do pacote. Então, por exemplo, no link F-C
todos os pacotes com destino ao D, tem o label de valor 27, sem considerar que
eles sejam originados do G ou A ou F. Também, se o espaço total de labels de
uma plataforma estiver quase sendo usado, o roteador C (por exemplo) anuncia
o mesmo label a caminho do D para todos os seus neighbors, então todo tráfego
que passe via C para chegar ao D terá o mesmo label em todos os links do C.
Por isso, o tráfego do B para o D terá o valor de 27 no link B-C. Note que, no
exemplo, D anuncia o valor de label 3 para os seus neighbors. Esse valor de
label é especial, chamado de Implicit Null label [RFC 3032]. Isso engatilha o
PHP nos nodes C e D. Por conta do significado especial do label 3, um pacote
de dados MPLS nunca vai poder ter o valor 3 em seu label. Como já
apresentado, o diagrama mostra apenas a estrutura enraizada ao D. Na realidade
temos várias estruturas na rede que sobrepõe outras, cada uma enraizada em um
roteador diferente. Como resultado, em um único link vários labels podem estar
em uso se vários roteadores podem estar alcançáveis através daquele link.
Assim como no IGP, normalmente em implementações LDP são instaladas
várias entradas na tabela de encaminhamento em situações de ECMP ou Equal
Cost Multi-Path. Por exemplo, na figura 1.6, se o custo entre E e D for 5 ao
invés de 10, ali teríamos dois caminhos de custo igual do F para o D, F-E-D e F-
C-D. Por isso, F instala duas entradas na tabela de encaminhamento para o D,
uma correspondente a cada caminho. O tráfego que chega ao F para o D, será
balanceado entre os dois caminhos.
1.3.2.2 RSVP
Como podemos ver, mensagens RSVP Path e Resv precisam viajar salto a
salto porque elas precisam estabelecer um estado a cada node que passam, para
reservar de banda e estabelecer o LSP.
Como consequência do esquema descrito acima, um LSP sinalizado com
RSVP necessita apenas da configuração no roteador de entrada. Em
implementações típicas, as propriedades do LSP e subjacentes da sessão RSVP,
tal como ERO, RRO e solicitação de reserva da banda, podem ser vistas por
qualquer roteador ao longo do caminho do LSP desce que a informação seja
conhecida por todos os roteadores do caminho.
RSVP requer uma troca de mensagens periódica enquanto um LSP está
estabelecido para manter (atualizar) o seu estado. Isso pode ser realizado por
mensagens RSVP Path e Resv encaminhadas periodicamente em cada LSP
ativo. Se um roteador não receber um certo número consecutivo de mensagens
RSVP Path ou Resv para um LSP em particular, ele considera que o LSP não é
necessário e remove seus estados (entrada na tabela de encaminhamento e
reserva de banda para ele) o que for do LSP. A sobrecarga no processamento
por conta do tal esquema, se tornou uma preocupação na escalabilidade de um
roteador que mantém um número grande de LSPs. Para isso, o “Refresh
Reduction Extensions” para RSVP foi concebido, para reduzir essa sobrecarga.
Isso inclui a Summary Refresh Extension para permitir múltiplas sessões RSVP
(logo, múltiplas LSPs) para ter o seu estado atualizado por uma única
mensagem encaminhada entre os vizinhos RSVP para atualizar o timer [RFC
2961].
RSVP tem um mecanismo de detecção de falhas opcional, no qual as
mensagens de hello são encaminhadas periodicamente entre vizinhos RSVP.
Sem esse mecanismo, um node pode ficar ciente da falha de um vizinho
somente se alguma sessão RSVP cair, e isso pode levar um bom tempo. Note
que o RSVP não segue o mesmo conceito seguido pelo LDP em casos com
ECMP. Um LSP sinalizado com RSVP segue apenas um caminho da entrada
até a saída. Se, realizando a computação do caminho, o roteador de entrada
achar vários caminhos em potencial para o LSP e que tenha uma métrica para a
escolha igual, ele escolhe apenas um desses caminhos para o LSP e sinaliza a
criação dele via RSVP. Por isso, uma vez que o tráfego entra em um LSP
sinalizado via RSVP, não ocorre a divisão e fusão do tráfego como ocorre
algumas vezes em casos com LDP. Por outro lado, se o roteador de entrada tiver
vários LSPs sinalizados com RSVP para um roteador de saída em particular, ele
pode balancear o tráfego nessas LSPs. Algumas implementações permitem que
o load-balance seja feito com pesos de acordo com as reservas de banda do
RSVP.
Em alguns casos, a rede pode ter um punhado de LSPs sinalizados com
RSVP, como uma tática de controle de fluxos de tráfego sobre alguns pontos de
acesso da rede. Nessa situação, os LSPs RSVP tem que ser criados e certos
pares de pontos finais para alcançar esses objetivos. Em outras redes, a razão
para entregar LSPs RSVP é para fazer uso do fast reroute, nesse caso o
administrador da rede pode escolher em conectar os PEs da rede com os LSPs
RSVP em uma topologia full mesh na rede.
Em propósito de resumo, aqui temos algumas propriedades chaves de RSVP:
A partir da análise acima, não é surpresa para ninguém que se não for
necessário as propriedades de engenharia de tráfego, o LDP quase sempre é o
escolhido. Vamos ter uma visão sobre a escolha do protocolo em contextos
onde a aplicação precisa de uma conectividade MPLS:
O processo de LDP sobre RSVP está ilustrado com mais detalhes na figura
1.9, que mostra uma conexão que cruza o core da rede até o edge. Roteadores
A, B e C estão no mesmo POP. Roteadores F,G e H estão em outro POP. D e E
são os roteadores do core. O LDP é usado dentro dos POPs. Na rede, os
roteadores que fazem face ao core são conectados de forma full mesh com LSPs
sinalizados por RSVP. Nesse caso, temos um par de LSPs RSVP entre C e F,
um em cada direção. Também, temos sessões LDP apontadas entre os
roteadores core-facing em cada POP, entre C e D no diagrama. A sessão LDP
aponta permite que C e F troquem labels diretamente para os FECs associados
aos roteadores edge em seus respectivos POPs. Por exemplo, C aprende o label
do F para usar quando encaminhar o tráfego para o H. Roteadores D e E não são
envolvidos no processo de sinalização LDP, e não armazenam labels LDP.
Vamos considerar que o transporte dos pacotes chegam na rede no roteador A
e saiam da rede no roteador H. A operação do plano de encaminhamento segue:
Roteador de entrada A faz o push do label que aprendeu via LDP. No exemplo,
o valor do label é L1, e é o label associado com o H, o ponto de saída do pacote.
Roteador B faz o swap do label para um que tem o valor de L2. Roteador C é o
roteador de saída para o LSP RSVP que cruza o core. C faz o swap do label
existe L2 para o label de valor L3 que aprendeu via sessão LDP apontada com o
F. E também, faz o push de label de valor L5 aprendido via RSVP para esse
pacote. Por isso, neste ponto, a pilha de label consiste em um outer label de
valor L5 e um inner label de valor L3. Os roteadores core D e E sabem apenas
sobre os LSPs RSVP e por isso carregam somente as operações do outer label.
D faz o swap do label mais externo, o outer label de valor L5 para um label de
valor L6. Nota que o label abaixo de valor L3, é intocado. Se o PHP estiver em
uso, o roteador E faz o pop do label aprendido via RSVP, então deixando
apenas o label L3 aprendido via LDP pelo roteador C. O roteador F faz o swap
do label LDP para um label de valor L4. Se o PHP estiver em uso, o roteador G
fará o pop do label, deixando apenas o cabeçalho do pacote que estava
encapsulado. Isso pode ser um cabeçalho IP, ou pode ser um cabeçalho MPLS,
em casos de serviços VPN.
Em casos onde as propriedades trazidas pelo RSVP são necessárias de edge
para edge. O esquema acima de LDP sobre RSVP não é adequado. Entretanto,
em casos de redes de larga escala, pode não ser viável conectar todos os
roteadores edge com LSPs sinalizados por RSVP, por resultar em uma grande
quantidade de sessões RSVP no core da rede. O conceito de LSP hierárquico
[RFC 4206] foi introduzido para resolver este problema. Nesse esquema, uma
camada de roteador é conectada de forma full mesh com LSPs sinalizados com
RSVP. A camada é escolhida de tal modo que os roteadores envolvidos na
conexão full mesh sejam menores que o número de roteadores edge. Por
exemplo, com o esquema de LDP sobre o RSVP discutido anteriormente, os
roteadores escolhidos podem ser os roteadores core-facing de cada POP. Os
roteadores edge podem ser também conectados de forma full mesh com LSP
RSVP que estão aninhados dentro dos LSPs entre os core-facing. Os LSPs no
core da rede são chamados de Forwarding Adjacency (FA) LSPs. Referindo-se
a figura 1.8, no contexto do LSP hierárquico, os LSPs entre P1, P2, P3 e P4 são
os FA LSPs. Cada LER teria uma LSP sinalizada com RSVP para cada outro
LER na rede, o qual seria tunelado em dos FA-LSPs que cruzam a rede. Dessa
forma os roteadores no coração da rede (P5,P6,P7 e P8 na figura) teriam apenas
que lidar com a sessão que corresponde aos LSPs do core, e desconhecem o fato
das LSPs de LER para LER estarem encapsuladas nesses LSPs.
O conceito de LSP hierárquico é ilustrado com mais detalhes na figura 1.10.
O diagrama mostra seis LERs, três em cada dos dois POPs. P1 é um roteador
core-facing em um POP e P3 é um roteador core-facing no outro POP. O
diagrama mostra um LSP sinalizado com RSVP entre P1 e P3. Usando LSP
hierárquico, LSPs edge-para-edge entre os LERs em dois POPs pode ser
aninhado no LSP do core entre P1 e P3. Por exemplo, aqui temos um LSP entre
PE1 e PE4, ou entre PE2 e PE5 em breve. Entretanto, P2 no core da rede não
sabe da existência desses LSPs e está envolvido apenas na manutenção do LSP
do core. Isso é por causa que as mensagens RSVP associadas aos LSP edge-
para-edge passam diretamente entre P1 e P3 sem ser processado pelo plano de
controle do P2. Nota que no plano de dados, as operações de label são análogas
para o LDP sobre RSVP, caso que foi mostrado na figura 1.9. O roteador de
entrada do FA-LSP faz o push de um label correspondente ao FA-LSP na pilha
de label existente. Esse label é trocado a cada salto do FA-LSP, deixando os
labels abaixo da pilha intocados, e ele é normalmente aberto pelo último
roteador no fim do FA-LSP, deixando expostos os labels que ficaram embaixo
da pilha para o próximo roteador que receber o tráfego.
A razão para escolher o BGP como protocolo para a solução é discutida com
detalhes em VPNs Hierárquicas e Inter-AS (Capítulo 9). Nesse ponto, vamos
ver alguns benefícios adicionados por pelo uso de BGP para distribuição de
labels.
Nesta seção, nós vamos examinar o caso (i), o caso de IPv6 público em mais
detalhes. Caso (ii), tráfego IPv6 privado, será discutido no capítulo Tópicos
avançados em camada 3 VPNs MPLS/BGP.
O ISP tem as escolhas a seguir em termos de como carregar o tráfego IPv6
através do core da rede:
1. Habilitar o encaminhamento IPv6 e habilitar o IPv6 no IGP em todos os
roteadores da rede, e encaminhar os pacotes IPv6 de forma nativa.
2. Criar túneis full mesh (como túneis GRE) entre os roteadores PE na rede.
Então os pacotes IPv6 serão encapsulados em IPv4, evitando a
necessidade de habilitar o IPv6 no core da rede.
3. Usar LSPs MPLS entre os roteadores PE na rede para carregar os pacotes
IPv6.
Opção 1 é de interesse de provedores de serviço que carregam o tráfego IPv4
através da rede de forma nativa, porque o tráfego IPv6 é carregado de forma
análoga. Entretanto, em alguns casos, o provedor de serviços pode ter
roteadores que não são capazes de rodar o IPv6 ou podem estar relutantes para
habilitar o IPv6 nos roteadores core da rede.
Em contraste, a opção 2 evita a necessidade de habilitar o IPv6 nos roteadores
core, porque os pacotes IPv6 são encapsulados dentro de pacotes IPv4. Essa
questão com esse esquema, entretanto, geralmente envolve a configuração
manual dos túneis e tem uma sobrecarga operacional.
Opção 3 é atrativa para provedor de serviços que usam LSPs MPLS para
carregar seu tráfego IPv4, isso permite que seja usado os mesmos LSPs para
carregar o tráfego IPv6 também. Tem uma sobrecarga configuracional bem
mais baixa que a opção 2.
Vamos examinar a opção 3 com mais detalhes. Um esquema chamado 6PE
[RFC 4798] foi concebido para atender esse cenário. A premissa atrás do
cenário é que os roteadores core não suportam o IPv6, então somente os LERs
precisam ter suporte ao encaminhamento IPv6 e ao protocolo IPv6. Os LSPs
usados para transportar os pacotes são sinalizados utilizando IPv4 e podem usar
os mesmos LSPs que são usados para transportar o tráfego IPv4 e outros
tráfegos como tráfegos de camada 2. A figura 1.11 ilustra a infraestrutura
necessária para o esquema 6PE.
Os roteadores LERs do provedor de serviços cada um com uma sessão eBGP
rodando sobre IPv6 para os CEs conectados. De forma parecida, o roteador de
peering do provedor de serviços tem outras sessões eBGP rodando sobre IPv6
com peering e provedor de upstream. Dentro do core da rede, sombreado de
cinza, o endereçamento e o IGP é baseado em IPv4. Os LERs na rede são
conectados em full mesh com LSPs que são sinalizados com IPv4. As sessões
iBGP para trocar de rotas entre os LERs também funcionam sob IPv4.
Em paralelo, discutindo as operações de label associadas ao 6PE, vamos re-
examinar o LSP na figura 1.7. O LSP na na figura é sinalizado com RSVP, mas
o mesmo se mantém sinalizado usando LDP. Imagine um pacote simples de
IPv6 encapsulado no LSP mostrado na figura. Entre X e Y, o pacote terá o valor
de label 51. No Y, o label será aberto, com ação de pop, desde que o PHP esteja
em operação. Entretanto, o uso do PHP não é obrigatório, na prática, ele é usado
na maioria dos projetos MPLS. Isso daria origem a entrega de um pacote IPv6
puro, exposto pelo roteador Y. Entretanto, a premissa atrás do 6PE é que os
roteadores P não suportem o IPv6. Se for esse caso para o roteador Y, o
roteador Y vai desencapsular esse pacote IPv6 e por não rodar o protocolo, não
saberá o que fazer com ele, e não vai encaminhar para o roteador Z. Por
exemplo, se um link ethernet estiver em uso entre Y e Z, o roteador Y precisa
por o ethertype no frame ethernet com o valor associado à um payload IPv6.
Para superar o problema, o 6PE pode criar um label adicional para que o pacote
IPv6 não seja exposto para o penúltimo roteador. Isso é ilustrado na figura 1.12.
Aqui temos um LSP MPLS do PE1 para o PE2, sinalizado com LDP ou
RSVP. No PE1, é feito o push de um cabeçalho MPLS com o valor de label Y
em todo pacote IPv6. No topo disso, outro cabeçalho MPLS tem um valor de
label X, que é sinalizado por LDP ou RSVP. No P1, o outer label ou label mais
do topo, é trocado, ou seja, feito um swap, por um label de valor W. No P2, o
outer label é aberto, ou seja, feito o pop, expondo o inner label de valor Y. O
pacote é encaminhado com esse label para o PE2. Mas como o PE1 sabe qual o
valor de label é necessário para o inner label? A resposta é o uso do Multi-
Protocol BGP, ou MP BGP. Dessa forma, quando o PE2 anuncia seus prefixos
IPv6 no BGP, ele também anuncia os labels associados àquele prefixo. O
Address Family Indicator (AFI) usado para esse anúncio tem um valor de 2, que
significa IPv6. O Subsequent Address Family Indicator (SAFI) usado tem o
valor 4, que significa uma labeled route, ou seja, uma rota com label associado.
A mesma sessão BGP pode ser usada para anunciar prefixos IPv4, sem labels. O
mesmo LSP pode ser usado para carregar o tráfego IPv4 e o tráfego IPv6 entre
os PE1 e PE2. Em cada salto, a pilha de labels de um pacote IPv6 terá um label
mais empilhado do que um quando é encapsulado um pacote IPv4, por causa do
6PE.
Note que o 6PE não é um esquema de VPN. Se a necessidade é entregar um
serviço de VPN capaz de transportar os pacotes IPv6 de um cliente, o esquema
será discutido no capítulo Tópicos Avançados na camada 3 BGP/MPLS VPN.
2.1 Introdução