MPLS em UDP: entropia para a camada inferior, regras para o domínio
Um invólucro UDP dá à camada IP inferior algo para fazer hash sem perder a etiqueta de serviço. A RFC 7510 também a restringe a domínios geridos e cooperantes.
Dois fornecedores descrevem a mesma etiqueta de serviço, e apenas um deles menciona um cabeçalho UDP. A diferença não é cosmética: colocar MPLS dentro de UDP muda o que a rede IP externa pode ver e, portanto, o que pode fazer hash entre ligações paralelas. Também muda quem tem permissão para o implementar.
As camadas são curtas o suficiente para memorizar: IP externo, depois UDP, depois a pilha de etiquetas MPLS, depois a carga útil do serviço. A pilha de etiquetas não desaparece; continua a decidir o encaminhamento no extremo que retoma a comutação de etiquetas.
O que o invólucro UDP acrescenta
A RFC 7510 define esta encapsulação com o porto de destino UDP 6635 e usa o campo do porto de origem para transportar entropia de fluxo. O dispositivo que encapsula decide o que conta como fluxo e como derivar o valor; a norma deliberadamente não impõe um hash específico. Isso deixa espaço para o comportamento do fornecedor, e significa que duas implementações podem produzir distribuições diferentes para a mesma mistura de tráfego. Leia o valor como uma pista oferecida à camada inferior, não como uma decisão de encaminhamento tomada pela norma.
O benefício é indireto. Uma rede de trânsito que equilibra carga sobre uma quíntupla externa tem agora algo para fazer hash, ao passo que um pacote MPLS nu talvez só oferecesse a etiqueta superior. Se isso ajuda depende da plataforma que faz o equilíbrio e de quais campos realmente considera.
A entropia não é largura de banda
Distribuir os fluxos de forma mais uniforme pelos ligações disponíveis não é o mesmo que combiná-los num único caminho mais rápido. Um único fluxo de aplicação continua a viajar por um caminho, e o equilíbrio por fluxo não pode exceder a capacidade da ligação onde aterra. O mecanismo também não garante uma distribuição uniforme; apenas dá melhores entradas a uma função hash.
Mantenha o invólucro estável para um dado fluxo, a menos que a reordenação seja aceitável. Se o porto de origem muda por pacote, a camada inferior distribuirá de bom grado uma conversa por vários caminhos e a remontagem passa a ser problema da aplicação. O objetivo é entropia consistente por fluxo, não novidade constante.
A fronteira de implementação faz parte da especificação
A RFC 7510 restringe a implementação à rede de um único operador ou a um conjunto adjacente de operadores que cooperam, com o tráfego gerido para evitar congestionamento. Também exige filtragem que impeça o tráfego encapsulado de escapar desse domínio. Não são condições decorativas; decorrem do facto de a encapsulação não acrescentar segurança própria. Trate-as como pré-requisitos para uma implementação legítima, não como sugestões numa nota de conceção.
Nada no cabeçalho UDP autentica o emissor, e nada nele proporciona confidencialidade ou integridade à carga útil. Se o tráfego precisa de proteção, esta vem de um mecanismo separado com a sua própria gestão de chaves. Escolher MPLS-in-UDP não melhora o modelo de confiança.
Atenção ao que a proteção faz ao hashing que pretendia
Acrescente IPsec ou outra encapsulação de segurança, e o cabeçalho externo que os dispositivos de trânsito hasham pode mudar de forma por completo. O modo túnel pode esconder o porto de origem UDP interno atrás de um novo cabeçalho externo, o que significa que a entropia fornecida com cuidado pode não ser visível onde ocorre o equilíbrio. Cifrar primeiro e encapsular depois é um desenho diferente da ordem inversa, e a diferença manifesta-se como uma ligação que transporta muito mais tráfego do que as vizinhas.
Avalie o pacote completo tal como aparece no fio, não apenas a camada descrita pela norma. Este é também o momento de reconsiderar a MTU e a capacidade do extremo, porque um cabeçalho UDP mais qualquer sobrecarga de segurança reduz a carga útil que cabe.
Decida com o caminho completo à vista
Compare o MPLS-in-UDP com alternativas como GRE segundo os critérios que importam para a sua rede: em que campos a camada inferior equilibra, quanto overhead pode suportar, que invólucro de segurança é necessário e se a fronteira do domínio pode ser imposta. Atribuir-lhe uma vantagem de desempenho incondicional sobre GRE é uma conclusão que as normas não sustentam.
Depois teste com misturas reais de tráfego e verifique a utilização de cada ligação membro, porque um hash que parece bom em laboratório pode colapsar numa só ligação quando todos os fluxos partilham o mesmo tuplo. O resumo honesto é que a encapsulação expõe informação que a camada inferior pode usar, dentro de um domínio que aceitou geri-la.