LINUX.ORG.RU
ФорумAdmin

openvpn + tap + bond

 ,


0

2

Товарищи, имеется:

  • server A (промзона):
  • Интернет 1 (100 мб/сек)
  • Интернет 2 (50 мб/сек)
  • Интернет 3 (30 мб/сек) - радио.

  • server B (облако) - пока тестирую. Хочу сделать из него шлюз. :)
  • Интернет стабильный 250 мб/сек

Сейчас Интернет 1-3 в той или иной степени могут отваливаться. И порой бывает отвалы на секунд эдак 10-20. Порой на неделю…

Сейчас, на server A специальный человек переключает ручками трафик то туда, то сюда… При том SIP бегает строго по Интернет 3 (больше никого туда не пускаю). Переключаю на другие каналы только в случае отвала канала 3 :) В общем это всё целая эпопея с переключениями каналов… Мне нужно метить ещё трафик, т.к. доступность web нужна по всем провайдерам. В общем сложновато всё это :)

Насколько будет здравым сделать так:

  • Server A
  • openvpn tap Internet 1-3
  • bond rr (100 милисекунд)

  • Server B
  • openvpn tap 1-3, на разных портах Internet
  • bond rr (100 милисекунд)

Какую общую скорость я смогу получить при rr?

В случае кратковременных отвалов одного из каналов не будет проблем с потерями пакетов?

Имеет ли смысл, и возможно ли технически поднять один bond в режиме rr, другой в режиме active-backup поверх tap, и, телефонку например завернуть в active-backup, всё остальное в rr?

Насколько вообще идея норм, какие минусы? Разумеется, openvpn без шифрования и без сжатия и по udp.

★★★★★

Последнее исправление: DALDON (всего исправлений: 1)

Что насчёт multipath tcp?
На сервере А только policy based routing настроить и оно само полезет на впн сервер по 3м каналам. На сервере Б вообще ничего не надо делать, обычный openvpn\tcp.

Только mptcp ядро установить на оба сервера.

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

Это параллельный вариант который я рассматриваю. Но, насколько я понимаю mptcp пока ещё не столь широко используема и оттестирована.

DALDON ★★★★★
() автор топика

Какую общую скорость я смогу получить при rr?

Минимальную из трёх каналов.

В случае кратковременных отвалов одного из каналов не будет проблем с потерями пакетов?

Будут, конечно же.

Вам нужен MPTCP или альтернатива.

https://www.openmptcprouter.com/

ValdikSS ★★★★★
()
Последнее исправление: ValdikSS (всего исправлений: 1)
Ответ на: комментарий от ValdikSS

Вот хожу вокруг да около данного сайта, там же всё ещё в стадии альфы. Ну и есть там какие-то сигналы, и т.д.

Вы, как очень опытный в сетевых делах человек (пользуясь случаем выражаю Благодарность за статьи на habr, всякой полезности на github и т.д.), можете (с Вашей стороны), сказать в чем Вы видите плюсы MPTCP в отличии от моей идеи?

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

MPTCP — стандарт IETF, который уже используется, пусть и не массово, и включен по умолчанию, как минимум, в Fedora. Реализация в ядре разрабатывается долго, хочется верить, что она качественная. Начальная конфигурация простая, балансировка трафика происходит автоматически.

В идеальной ситуации, если всё ваше ПО использует прямые TCP-подключения и поддерживает создание MPTCP-сокетов, вам достаточно будет настроить MPTCP командой ip mptcp на сервере A и B, и всё. Если MPTCP-сокеты не поддерживаются, можно использовать замещающую библиотеку через LD_PRELOAD. Также без проблем сможете запустить OpenVPN-туннель между двумя серверами, который автоматически начнёт использовать все настроенные каналы.

Подробности здесь: https://github.com/multipath-tcp/mptcp_net-next/wiki#how-to-use-mptcp

openmptcprouter позволит вам всё это настроить графически, в виртуалке-маршрутизаторе.

ValdikSS ★★★★★
()
Последнее исправление: ValdikSS (всего исправлений: 1)
4 февраля 2022 г.
Ответ на: комментарий от ValdikSS

короче потестил MPTCP, все работает. Даже не делал ip rule add на каждый исходящий линк, как «типа» надо по докам. Достаточно просто иметь несколько default route’s в главной таблице. С этим хорошо справляется NetworkManager. Короче полный plug-n-play. Вставил несколько 4G модемов - работают все. Использую ядро самосбор с их патчами. На сервере в облаке - либо Openvpn\tcp, либо TCP proxy (squid или другой)

команды для дефолтного ядра:

sysctl -w net.mptcp.mptcp_path_manager=fullmesh
echo 4 > /sys/module/mptcp_fullmesh/parameters/num_subflows
Bers666 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.