Rótulo (Label)
Temos aqui um exemplo de um rótulo MPLS. O TTL, assim como no IP, é a quantidade
de pulos que o pacote pode fazer antes de ser descartado. Caso o pacote atravesse uma rede
MPLS antes de chegar ao seu destino, em uma rede IP, esse TTL vai indicar ao IP quantos
saltos foram feitos e se o pacote deve ser descartado ou não. O campo EXP é usado quando é
necessária a divisão em classes de CoS. E LABEL indica o valor do rótulo, note que o número
de rótulos que podem ser associados é 2^20.
Esses rótulos identificam um FEC, são pequenos e de tamanho fixo. Eles, porém, têm o
caráter identificador apenas localmente, ou seja, entre dois nós vizinhos. Os vizinhos devem
chegar a um acordo para saber que rótulo representará qual FEC. Tal acordo é feito no
momento da atribuição de rótulos, que será explicada mais a frente. Caso o LSR receba um
pacote com um rótulo desconhecido, esse pacote é descartado.
Consideremos A e B como LSR´s vizinhos. O LSR A atribuirá o rótulo AZUL, por
exemplo, ao pacote, e o transmitirá ao LRS B. B deve saber a qual FEC AZUL está se referindo
para poder colocar um novo rótulo. Nesse caso dizemos que A é o LSR “upstream” e B, o
“downstream”- porque os pacotes vão de A para B. Se A e B não forem vizinhos, o rótulo
AZUL em A pode representar um FEC diferente do que representaria o rótulo AZUL em B, o
que mostra o caráter local dos rótulos.
Rotulação
Para rotular um pacote podem ser usadas diferentes técnicas. Uma delas é encapsular
o pacote com o rótulo como cabeçalho. Outra maneira de fazê-lo é usar algum espaço que
não esteja sendo utilizado nos cabeçalhos das camadas 2 ou 3. Considerando o modelo OSI,
pode-se dizer que a camada referente ao MPLS está entre as camadas 2 e 3, o que dá o
apelido de camada 2,5 para o MPLS.
Assim, numa comutação de pacotes, por exemplo, o IP, o cabeçalho de rótulos é
adicionado antes do cabeçalho IP. Numa comutação de quadros, como a Ethernet, por
exemplo, temos o rótulo sendo incluído em uma seção do quadro, a TAG na Ethernet. Isso
reforça a idéia Multiprotocolo do MPLS. Temos abaixo um exemplo da “camada 2,5”, com o
cabeçalho do MPLS sendo incluído antes do IP (L3), porém depois da camada de dados (L2).
Distribuição de rótulos
Os LSRs vão atribuir os rótulos na direção downstream para upstream, ou seja, os
“down” vão avisar para os “up” que rótulo usar para cada FEC. Esse processo pode ser
acionado sob demanda, por exemplo, com o LSR “up” pedindo um determinado rótulo ao LSR
“down”, ou de maneira em que o “down” define todos os rótulos de uma vez.
Um LSR A pode atribuir para seus vizinhos B e C o mesmo rótulo L, representando um
FEC diferente em cada um, desde que A possa diferenciar os pacotes enviados por B dos
pacotes enviados por C. De forma análoga, o LSR A pode também atribuir rótulos diferentes
para B e C que representem o mesmo FEC.
A atribuição de rótulos consiste na atualização das LIBs dos LSRs. A operação de
distribuição de rótulos é realizada a partir de protocolos específicos que serão detalhados
em outra seção mais a frente, na seção protocolos.
Pilha de rótulos (Label stack)
Vale notar que ao invés de um pacote ter apenas um único rótulo, ele pode carregar
uma pilha deles. Apenas o rótulo do topo da pilha é considerado na hora de analisar o
pacote. A cada LSR, algumas operações podem ser feitas: trocar o rótulo, retirar um rótulo do
topo da pilha ou trocar o rótulo e acrescentar um novo rótulo ao topo da pilha.
Ao se retirar um rótulo da pilha o LSR, deve-se verificar o novo topo da pilha para
decidir o que fazer. A essa decisão dos LSR's se dá o nome de “Next Hop Label Forwarding
Entry” (NHLFE), e ela está mapeada para cada rótulo de acordo com um “Incoming Label Map”
(ILM). Também existe o “FEC-to- NHLFE Map” (FTN) que mapeia um FEC para um rótulo. Uma
tabela que associa os mapas às decisões é conhecida como LIB (Label Information Base),
aonde teremos associadas às informações de:
- Rótulo de entrada
- Dispositivo de entrada
- Rótulo de saída
- Dispositivo de saída
- FEC
Informação sobre condições para retirar da pilha, adicionar, ou manter o mesmo tamanho.
Então, ao LSR A receber um pacote com um rótulo R, ele deve usar o ILM para identificar
qual o NHLFE atribuído a ele, ou seja, ele acessa a LIB e descobre o que fazer com o pacote.