TCP Anycast Multipath Routing: O roteador sempre prefere um nexthop sobre outro

0

Estou tentando usar o TCP Anycast sem protocolos adicionais para conectar um cliente a um dos vários hosts com o mesmo IP anycast.
Minha topologia é a seguinte:

OservidornomeioéumamáquinaUbuntu,fornecendoduasrotasparaoendereçoanycast.
Minhaconfiguraçãoderoteamentomultipath(noroteador)é:

'10.11.12.13protostaticnexthopvia192.168.2.1devenp0s9weight1nexthopvia192.168.3.1devenp0s10weight1'

Oendereçoanycasté10.11.12.13eéatribuídoaoloopbacklocaldosdoisroteadoresnoladodireito.Noladoesquerdoestáumclientecomoroteadornomeiocomoseugatewaypadrão.

Cenário1:Oroteadornomeioiniciaumasessãotcpcomoendereçoanycastcomodestino.

Cenário2:Oclientenoladoesquerdoiniciaumasessãotcpcomoendereçoanycastcomodestino.

Observação:

Aoiniciarumasessãotcpapartirdoroteador(ubuntulinux),tudofuncionaconformedesejado.OPacoteSYNéencaminhadosobreumdecadasaltocomumaprobabilidadeigual.Quandoumasessãoéestabelecida,todosospacotesdestasessãopassampelomesmosalto,mantendoaconexãoativa(roteamentomultipathbaseadoemfluxobem-sucedido).

Oproblemaocorrenocenário2,quandotentoestabelecerumasessãotcpdoclienteem192.168.1.1/24.Oroteadorsempreencaminhaospacotesparaapenasumdoshosts(aquelecomosufixoIP3.1).Seeulevaraconexãoeth2paraestehost,oroteadorencaminhaospacotesparaosegundohost.Masaocolocareth2novamente,aconexãovoltaparaohostem3.1,levandoaumadesconexãoentreoclienteeohostnosufixo2.1.

Eusópossopostarumlinkdevídeo,entãoaquiestáumvídeomostrandocomoédopontodevistadocliente: link
Observe como o SYN tcp do cliente é sempre encaminhado para o host com o sufixo 3.1 (canto inferior direito).

Terminais:
Roteador: canto superior esquerdo, cliente: canto inferior esquerdo, host 2.1: canto superior direito, host 3.1: canto inferior direito.

Minha versão do kernel é o kernel Linux 4.4. A sessão tcp é estabelecida usando netcat (servidor) e telnet (cliente).

Alterar o peso dos nexthops também afeta apenas o roteamento do roteador (192.168.1.254 > 10.11.12.13).

Por que o roteador encaminha o pacote SYN diferente, quando o pacote é enviado pelo cliente do que quando é enviado pelo próprio roteador?

Obrigado pela sua ajuda!

    
por Benny93 10.05.2017 / 16:07

1 resposta

0

Parece que este é um problema do ipv4.
Usando o IPv6 e um kernel Linux, a máquina Ubuntu com quase a mesma configuração funcionou como esperado. Link para a imagem da topologia
Embora as mensagens ping do ICPM sempre recebam o roteamento através do primeiro nexthop, as mensagens tcp são distribuídas equitativamente ao longo dos nexthops. Sessões tcp estabelecidas parecem ser estáveis (assim o kernel identifica fluxos corretamente).

    
por 18.05.2017 / 20:37