Многопутевая маршрутизация TCP Anycast: маршрутизатор всегда предпочитает один nexthop по другому

Я пытаюсь использовать TCP Anycast без дополнительных протоколов для подключения одного клиента к одному из нескольких хостов с одним и тем же IP anycast.


Моя топология выглядит следующим образом:

Link to image of topology

сервер в середине-Это машина Ubuntu, предоставляющая два маршрута для адреса anycast.


Моя конфигурация многопутевой маршрутизации (на маршрутизаторе):

`10.11.12.13  proto static
    nexthop via 192.168.2.1  dev enp0s9 weight 1
    nexthop via 192.168.3.1  dev enp0s10 weight 1`  

адрес anycast 10.11.12.13 и assinged к локальная петля двух маршрутизаторов на правой стороне.
На левой стороне находится клиент с маршрутизатором в центре в качестве шлюза по умолчанию.

Сценарий 1: маршрутизатор в середине начинает сеанс tcp с адресом anycast в качестве назначения.

Сценарий 2: Клиент слева запускает сеанс tcp с адресом anycast в качестве назначения.

наблюдения:

при запуске tcp сессии с маршрутизатора (ubuntu linux), все работает по желанию. Пакет SYN с равной вероятностью пересылается по одному из прыжков. Когда сеанс установлен, все пакеты этого сеанса проходят через тот же переход, сохраняя соединение живым (успешная многопутевая маршрутизация на основе потока).

проблема возникает в сценарии 2, Когда я пытаюсь установить сеанс tcp от клиента в 192.168.1.1 / 24. Роутер всегда отправляет пакеты только один из узлов (один с ИС-суффикс 3.1). Если я принимаю соединение eth2 к этому хосту вниз, маршрутизатор вперед пакеты ко второму хосту. Но при вводе для eth2 обратно, соединение переключается на узел 3.1 приводит к связи между клиентом и хостом на суффикс 2.1.

Я могу разместить только одну ссылку на видео, поэтому вот видео, показывающее, как это выглядит с точки зрения клиента:https://youtu.be/kthYK9uEwvM


Обратите внимание, как tcp SYN от клиента получает всегда перенаправляется на хост с суффиксом 3.1 (нижний правый угол).

разъемы:


Маршрутизатор: верхний левый, заказчик: внизу слева, узел 2.1: верхний правый, узел 3.1: внизу справа.

моя версия ядра является ядром Linux 4.4.
Сеанс tcp устанавливается с помощью netcat (сервер) и telnet(клиент).

изменение веса nexthops также влияет только на маршрутизацию от маршрутизатора (192.168.1.254 > 10.11.12.13).

почему маршрутизатор SYN-пакет diffrent, когда пакет отправляется от клиента, чем когда он отправляется с самого маршрутизатора?

Спасибо за вашу помощь!

11
задан Stephen Rauch
15.11.2022 20:50 Количество просмотров материала 2727
Распечатать страницу

1 ответ

похоже, что это проблема ipv4.

Использование ipv6 и ядра linux 4.4 ubuntu машина с почти такой же установки работал, как ожидалось. ссылка на изображение топологии

Хотя ВКФМ пинг сообщения всегда routet через первый следующего прыжка, сообщений TCP являются точно такой же, но распределяется по nexthops. Установленные tcp-сессии кажутся стабильными (таким образом, ядро правильно идентифицирует потоки).

0
отвечен Benny93 2022-11-17 04:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх