It seems like this is a problem of ipv4.
Using ipv6 and a linux kernel 4.4 ubuntu machine with nearly the same setup worked as expected. Link to image of topology
Although ICPM ping messages always get routet through the first nexthop, tcp messages are equaly distributed along the nexthops. Established tcp sessions seem to be stable (thus the kernel identifies flows correctly).
Многопутевая маршрутизация TCP Anycast: маршрутизатор всегда предпочитает один следующий переход другому
Я пытаюсь использовать TCP Anycast без дополнительных протоколов для подключения одного клиента к одному из нескольких хостов с одинаковым anycast IP.
Моя топология выглядит следующим образом:
Сервер в середине - это машина Ubuntu, предоставляющая два маршрута для любого адреса.
Моя конфигурация многолучевой маршрутизации (на маршрутизаторе):
`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
и передается в локальную петлю двух маршрутизаторов с правой стороны. С левой стороны находится клиент с маршрутизатором посередине в качестве шлюза по умолчанию.
Сценарий 1: Маршрутизатор посередине начинает сеанс tcp с произвольным адресом в качестве пункта назначения.
Сценарий 2: клиент с левой стороны начинает сеанс tcp с произвольным адресом в качестве пункта назначения.
Наблюдение:
При запуске сеанса tcp с маршрутизатора (Ubuntu Linux) все работает как нужно. Пакет SYN передается по одному из каждого прыжка с равной вероятностью. Когда сеанс установлен, все пакеты этого сеанса проходят один и тот же переход, сохраняя соединение активным (успешная многопутевая маршрутизация на основе потока).
Проблема возникает в сценарии 2, когда я пытаюсь установить сеанс tcp от клиента в 192.168.1.1/24. Маршрутизатор всегда пересылает пакеты только на один из хостов (тот, который имеет суффикс IP 3.1). Если я отключу соединение eth2 с этим хостом, маршрутизатор перенаправит пакеты на второй хост. Но при повторном резервировании eth2 соединение переключается обратно на хост на 3.1, что приводит к разъединению между клиентом и хостом с суффиксом 2.1.
Я могу опубликовать только одну ссылку на видео, поэтому вот видео, показывающее, как оно выглядит с точки зрения клиента: https://youtu.be/kthYK9uEwvM
Обратите внимание, что tcp SYN от клиента всегда перенаправляется на хост с суффиксом 3.1 ( правый нижний угол).
Терминалы:
Маршрутизатор: вверху слева, клиент: внизу слева, хост 2.1: вверху справа, хост 3.1: внизу справа.
Моя версия ядра - 4.4 ядра Linux. Сеанс tcp устанавливается с использованием netcat (сервер) и telnet (клиент).
Изменение веса следующего сообщения также влияет только на маршрутизацию от маршрутизатора (192.168.1.254> 10.11.12.13).
Почему маршрутизатор пересылает пакет SYN разным, когда пакет отправляется с клиента, чем когда он отправляется с самого маршрутизатора?
Спасибо за вашу помощь!
1 ответ на вопрос
Похожие вопросы
-
2
Windows 7 Home Premium запоминает пароли общего доступа к сети?
-
5
Существуют ли беспроводные маршрутизаторы, которые позволяют контролировать и регулировать пропускну...
-
5
Поделитесь XP сетевым подключением без перезагрузки?
-
-
5
Как мне сказать Windows использовать 802.11 вместо 3G?
-
6
Какие домашние модемы и другое сетевое оборудование для надежности?
-
4
Есть ли способ поделиться сканером многофункционального принтера?
-
12
Какие маршрутизаторы вы предпочитаете для DD-WRT или OpenWRT?
-
3
Есть ли способ соединить два компьютера через USB?
-
3
Как сохранить несколько подключений к интернету?
-
2
Каковы проблемы безопасности компьютера, подключенного напрямую к модему?