Na publicação da semana passada, explicamos que um caminho de Roteamento por segmentos (SR) é uma lista ordenada de segmentos. Também explicamos que um segmento é uma instrução que faz um pacote atravessar um ou mais enlaces.
Esta semana, falaremos de uma classe de implementações de SR que utilizam MPLS. Chamamos essas implementações de SR-MPLS. Uma compreensão aprofundada do SR-MLPS ajudará você a entender a publicação da próxima semana, na qual explicaremos como o SR dá suporte a aplicações de engenharia de tráfego.
Visão geral
No SR-MPLS, os caminhos do SR são codificados como pilhas de rótulos MPLS. Cada entrada da pilha de rótulos representa um segmento do caminho do SR. Na publicação desta semana, explicaremos como os rótulos MPLS são usados para codificar segmentos de adjacência e de prefixo.
Segmentos de adjacência
Figura 1: Segmentos de adjacência
Na Figura 1, um caminho do SR conecta R1 a R4. O caminho do SR contém três segmentos de adjacência. O Segmento 1 faz os pacotes atravessarem o enlace R1->R2, enquanto o Segmento 2 faz os pacotes atravessarem o enlace R2->R3. O Segmento 3 faz os pacotes atravessarem o enlace R3->R4.
Quando R1 recebe um pacote de fora do domínio do SR, ele sujeita o pacote à política. A política pode fazer com que R1 encaminhe o pacote pelo caminho do SR mostrado na figura. Quando isso ocorre, R1 impõe uma pilha de rótulos MPLS contendo duas entradas. A entrada no topo da pilha representa o Segmento 2 e transporta o rótulo MPLS 1002. A entrada na base da pilha representa o Segmento 3 e transporta o rótulo MPLS 1003.
Tendo imposto uma pilha de rótulos MPLS, R1 encaminha o pacote pelo Segmento 1 (ou seja, o enlace R1->R2). Quando o pacote chega em R2, R2 extrai o rótulo (ou seja, 1002) da entrada da pilha de rótulos mais alta e pesquisa uma entrada correspondente em sua FIB (Forwarding Information Base). A entrada FIB correspondente inclui uma instrução (ou seja, POP) e um next-hop (ou seja, R3). Portanto, o R2 elimina a entrada mais alta da pilha de rótulos e encaminha o pacote pelo Segmento 2 (ou seja, o enlace R2->R3).
Quando o pacote chega em R3, R3 extrai o rótulo (ou seja, 1003) da entrada da pilha de rótulos restante e pesquisa uma entrada correspondente em sua FIB. A entrada FIB correspondente inclui uma instrução (ou seja, POP) e um next-hop (ou seja, R4). Portanto, o R3 elimina a entrada restante da pilha de rótulos e encaminha o pacote pelo Segmento 3 (ou seja, o enlace R3->R4). O pacote chega em R4 sem encapsulamento MPLS.
Segmentos de prefixo
Figura 2: Segmentos de prefixo
Na Figura 2, um caminho do SR conecta R1 a R7 via R4. O caminho do SR contém dois segmentos de prefixo. O Segmento 1 é um segmento de prefixo que faz com que os pacotes atravessem o caminho de menor custo de R1 a R4. O Segmento 2 também é um segmento de prefixo e faz com que os pacotes atravessem o caminho de menor custo de R4 a R7. Nesta rede, todos os enlaces estão configurados com a mesma métrica de IGP (ou seja, 10). Portanto, o caminho de menor custo de R1 a R4 atravessa os enlaces R1->R2, R2->R3 e R3->R4, enquanto o caminho de menor custo de R4 a R7 atravessa os enlaces R4- >R8 e R8->R7.
Quando R1 recebe um pacote de fora do domínio do SR, ele sujeita o pacote a uma política. A política pode fazer com que R1 encaminhe o pacote pelo caminho do SR mostrado na figura. Quando isso ocorre, R1 impõe uma pilha de rótulos MPLS contendo duas entradas. A entrada no topo da pilha de rótulos representa o Segmento 1 e transporta o rótulo 2001. A entrada na base da pilha de rótulos representa o Segmento 2 e transporta o rótulo 2002.
Tendo imposto uma pilha de rótulos MPLS, R1 encaminha o pacote ao Segmento 1 pelo enlace R1->R2. Quando o pacote chega em R2, R2 extrai o rótulo (ou seja, 2001) da entrada da pilha de rótulos mais alta e pesquisa uma entrada correspondente em sua FIB. A entrada FIB correspondente inclui uma instrução (ou seja, SWAP – 3001) e um next-hop (ou seja, R3). Portanto, R2 sobregrava o rótulo mais alto com um novo valor (ou seja, 3001) e encaminha o pacote para R3.
Quando o pacote chega em R3, R3 extrai o rótulo (ou seja, 3001) da entrada da pilha de rótulos mais alta e pesquisa uma entrada correspondente em sua FIB. A entrada FIB correspondente inclui uma instrução (ou seja, POP) e um next-hop (ou seja, R4). Portanto, o R4 elimina a entrada mais alta da pilha de rótulos e encaminha o pacote ao Segmento 2 pelo enlace R3->R4.
Quando o pacote chega em R4, R4 extrai o rótulo (ou seja, 2002) da entrada da pilha de rótulos restante e pesquisa uma entrada correspondente em sua FIB. A entrada FIB correspondente inclui uma instrução (ou seja, SWAP – 3002) e um next-hop (ou seja, R8). Portanto, R4 sobregrava o rótulo restante com um novo valor (ou seja, 3002) e encaminha o pacote para R8.
Quando o pacote chega em R8, R8 extrai o rótulo (ou seja, 3002) da entrada da pilha de rótulos restante e pesquisa uma entrada correspondente em sua FIB. A entrada FIB correspondente inclui uma instrução (ou seja, POP) e um next-hop (ou seja, R7). Portanto, R8 elimina a entrada restante da pilha de rótulos e encaminha o pacote para R7 sem encapsulamento MPLS.
Penultimate Hop Popping (PHP) e o rótulo Explicit Null
Nos exemplos acima, cada segmento executa procedimentos PHP. Quando um pacote atravessa um segmento, o penúltimo nó do segmento elimina o rótulo associado ao segmento.
Se o caminho do SR contiver outro segmento ainda a ser atravessado, o nó de saída do segmento atual também é o nó de ingresso do próximo segmento. Nesse caso, o pacote chega nesse nó com o rótulo do próximo segmento exposto no topo da pilha. Se o caminho do SR não contiver outro segmento ainda a ser atravessado, o nó de saída do segmento também é o nó de saída do caminho. Nesse caso, o pacote chega no nó de saída do caminho sem o encapsulamento MPLS.
Em alguns casos, o enlace final no caminho do SR pode não ser capaz de transportar o pacote sem encapsulamento MPLS. Por exemplo, o pacote pode ser IPv6 e o enlace ter suporte apenas para IPv4 . Para evitar esse problema, o nó de ingresso no SR pode adicionar um rótulo MPLS Explicit Null ao topo da pilha de rótulos MPLS.
Quando o penúltimo nó do segmento final elimina o rótulo associado ao segmento final, ele expõe o rótulo Explicit Null. Em seguida, ele encaminha o pacote ao nó de saída do caminho. O nó de saída do caminho elimina o rótulo Explicit Null e continua a processar o pacote.
Conclusão
Nesta semana, aprendemos como o SR-MPLS codifica caminhos do SR como pilhas de rótulos MPLS. Também aprendemos como o SR- MPLS usa sua FIB para processar pacotes.
Na semana que vem, aprenderemos como o SR pode ser usado com aplicações de engenharia de tráfego.