O problema que você descreve não é uma questão inerente aos protocolos de encapsulamento. Pelo contrário, está mais relacionado à presença de criptografia do que ao tunelamento.
Há precedência para implementações de ECMP que inspecionam campos em camadas de protocolo mais altas do que as que estão em operação. Por exemplo, o ECMP operando na camada IP geralmente inspeciona números de porta UDP e TCP. Não seria diferente para uma implementação do ECMP inspecionar os endereços IP no cabeçalho IP interno do pacote tunnelled.
No entanto, devido à criptografia, essas informações não estão prontamente disponíveis sem descriptografar o pacote. E ser capaz de distinguir os fluxos sem conhecer a chave de criptografia normalmente seria considerado uma falha de segurança no algoritmo de criptografia. Este é um ponto importante a ter em conta, pois poderá ter de fazer um compromisso entre desempenho e segurança.
Possíveis soluções que posso pensar em incluir:
- Copie o rótulo de fluxo do cabeçalho IP interno para o cabeçalho IP externo no momento da criptografia. Isso obviamente vazará informações sobre o conteúdo do rótulo de fluxo.
- Configure vários túneis e execute o ECMP nos túneis. A implementação do ECMP na extremidade de envio da conexão tentará espalhar o tráfego uniformemente pelos túneis. No entanto, dependendo dos padrões de tráfego, pode não ser possível distribuir o tráfego uniformemente pelos túneis. Essa distribuição desigual entre os túneis é problemática não apenas porque pode causar uma utilização abaixo do ideal da rede subjacente, mas também porque vaza algumas informações sobre as características do tráfego não criptografado. No entanto, o vazamento nesse caso será muito menos significativo do que a exposição de partes do cabeçalho IP interno.
-
Permite a descriptografia de pacotes arbitrários em paralelo, mas os coloca de volta na ordem original após a descriptografia. Uma implementação muito simples tem um thread responsável por despachar pacotes de maneira round-robin para um número de threads de decriptação. Após a descriptografia, outro thread pegará os pacotes descriptografados em um modo round-robin a partir dos threads de descriptografia, colocando-os de volta em sua ordem original.
Essa abordagem só é possível se você considerar todos os seus encadeamentos como um único domínio de falha e a comunicação entre os encadeamentos não estiver sujeita à perda de pacotes. Declarado diferentemente usando essa abordagem para distribuir pacotes no round-robin entre diferentes dispositivos de rede não funcionaria.
-
Descriptografe para um formato intermediário não criptografado que contenha a carga útil não criptografada e o número de sequência IPSec. A descriptografia pode ser feita em paralelo, após o qual os pacotes são passados para um componente que armazena em buffer um número limitado de pacotes e tenta trazer os pacotes de volta na ordem original com base no melhor esforço.
- Redesenhe os protocolos de camada superior para serem mais tolerantes ao reordenamento.