Ядро Linux до 3.6 использовало кэширование маршрутов для многопутевой маршрутизации IPv4, что означало, что маршрутизация между двумя отдельными линиями / провайдерами была довольно простой. С 3.6 алгоритм изменился на пакетный, что означало, что для достижения двух линий / интернет-провайдеров требовались некоторые приемы маркера таблицы маршрутов / правила / iptables.
Однако если бы у вас было две линии с одним и тем же провайдером, которые могли бы маршрутизировать один IP по обеим линиям для каждого пакета в режиме сбалансированного / аварийного переключения, то из 3.6 вы могли бы легко добиться соединения линий (на уровне IP) из-за маршрутизация за пакет в обоих направлениях.
Начиная с 4.4, ядро снова переключилось на балансировку нагрузки на основе потоков на основе хэша по адресам источника и назначения.
В настоящее время я использую ядро 4.4.36 и использую многолучевую маршрутизацию по соединениям PPPoE. Мой нисходящий трафик от интернет-провайдера направляется через две отдельные линии для каждого пакета (один IP направляется по обеим линиям). Это дает мне скорость загрузки быстрее, чем скорость одной отдельной строки. Почти скорость обеих линий суммируется. Это работает очень хорошо, видео Skype, VoIP (UDP), YouTube и т. Д. Все отлично работает.
Из-за такого хорошего нисходящего потока я хочу попробовать его в восходящем направлении, но мой восходящий трафик направляется в соответствии с более новым алгоритмом на основе потоков на обоих устройствах ppp (которые имеют один и тот же IP-адрес). Это означает, что я не могу достичь скорости загрузки, превышающей скорость отдельной строки.
Есть ли способ настроить текущее ядро для использования алгоритма для каждого пакета? Или какой-то другой метод для достижения многопутевой маршрутизации на пакет? Нужно ли мне возвращаться к более старому Ядру (что я не хочу делать по другим причинам)?
Мой провайдер не поддерживает многоканальный ppp.
В случае, если это уместно, я сейчас использую Arch Linux ARMv7 на Raspberry Pi 3.