Este documento explica por que o Roteador de Borda de Provedor (6PE) IPv6© Cisco IOS usa dois rótulos Multiprotocol Label Switching (MPLS) no plano de dados.
Consulte as Convenções de Dicas Técnicas da Cisco para obter mais informações sobre convenções de documentos.
A. 6PE usa dois rótulos:
O rótulo superior é o rótulo de transporte, que é atribuído salto por salto pelo LDP (Label Distribution Protocol Protocolo de Distribuição de Rótulos) ou pela TE (traffic engineering Engenharia de tráfego) MPLS.
O rótulo inferior é o rótulo atribuído pelo Border Gateway Protocol (BGP) e anunciado pelo BGP interno (iBGP) entre os roteadores Provider Edge (PE).
Quando o 6PE foi lançado, um requisito principal era que nenhum dos roteadores de núcleo MPLS (os roteadores P) tinha que estar ciente do IPv6. Esse requisito gerou a necessidade de dois rótulos no plano de dados. Há duas razões pelas quais o 6PE precisa de ambos os rótulos.
Funcionalidade PHP
Se apenas o rótulo de transporte fosse usado, e se o penultimate hop popping (PHP) fosse usado, o penultimate hop router (o roteador P) precisaria entender o IPv6.
Com o PHP, esse roteador do penúltimo salto precisaria remover o rótulo MPLS e encaminhar o pacote como um pacote IPv6. Esse roteador IP precisaria saber que o pacote é IPv6 porque o roteador IP precisaria usar o tipo correto de encapsulamento de Camada 2 para IPv6. (O tipo de encapsulamento é diferente para IPv6 e IPv4; por exemplo, para Ethernet, o tipo de encapsulamento é 0x86DD para IPv6, enquanto é 0x0800 para IPv4.) Se o roteador do penúltimo salto não for compatível com IPv6, ele provavelmente colocaria o tipo de encapsulamento de Camada 2 para IPv4 para o pacote IPv6. O roteador PE de saída acreditaria que o pacote era IPv4.
Há processamento de tempo de vida (TTL) nos cabeçalhos IPv4 e IPv6. No IPv6, o campo é chamado de Limite de saltos. Os campos IPv4 e IPv6 estão em locais diferentes nos cabeçalhos. Além disso, o checksum do cabeçalho no cabeçalho IPv4 também precisaria ser alterado; não há nenhum campo Checksum do cabeçalho no IPv6. Se o roteador do penúltimo salto não for compatível com IPv6, o pacote IPv6 seria malformado, pois o roteador espera encontrar o campo TTL e o campo Checksum do cabeçalho no cabeçalho.
Devido a essas diferenças, o roteador do penúltimo salto precisaria saber se é um pacote IPv6. Como esse roteador saberia que o pacote é um pacote IPv6, já que não atribuiu um rótulo à FEC (Forwarding Equivalence Class, classe de equivalência de encaminhamento) IPv6 e que não há nenhum campo de encapsulamento no cabeçalho MPLS? Ele poderia procurar o primeiro nibble após a pilha de rótulos e determinar se o pacote é IPv6 se o valor for 6. No entanto, isso implica que o roteador do penúltimo salto precisa ser compatível com IPv6.
Este cenário poderia funcionar se o rótulo nulo explícito fosse usado (portanto, nenhum PHP). No entanto, a decisão foi para exigir PHP.
Balanceamento de carga
O balanceamento de carga típico em um roteador P segue esse processo. O roteador P vai até o final da pilha de rótulos e determina se é um pacote IPv4, observando o primeiro nibble após a pilha de rótulos.
Se o nibble tiver um valor de 4, o payload de MPLS será um pacote IPv4 e a carga do roteador P será balanceada por meio do hash dos endereços IPv4 origem e destino.
Se o roteador P for compatível com IPv6 e o valor do nibble for 6, o roteador P fará o balanceamento de carga misturando os endereços IPv6 origem e destino.
Se o roteador P não for compatível com IPv6 e o valor do nibble não for 4 (poderia ser 6 se o pacote for um pacote IPv6), o roteador P determinará que não é um pacote IPv4 e tomará a decisão de balanceamento de carga com base no rótulo inferior.
No cenário 6PE, imagine que existam dois roteadores PE de saída anunciando um prefixo IPv6 no BGP em direção ao roteador PE de entrada. Esse prefixo IPv6 seria anunciado com dois rótulos diferentes no BGP. Portanto, no plano de dados, o rótulo inferior seria um dos dois rótulos. Isso permitiria que um roteador P fizesse o balanceamento de carga no rótulo inferior por fluxo.
Se o 6PE usasse apenas o rótulo de transporte para transportar os pacotes 6PE através do núcleo MPLS, os roteadores P não seriam capazes de balancear a carga desses pacotes em uma base por fluxo, a menos que os roteadores P fossem capazes de IPv6. Se os roteadores IP fossem compatíveis com IPv6, poderiam usar os endereços IPv6 origem e destino para tomar uma decisão de balanceamento de carga.