Возможно ли настроить зеркалирование трафика на интерфейсах для повышения надежности передачи голоса?

Добрый день!

Есть два офиса, N провайдеров в одном, M провайдеров в другом. Тарифы провайдеров -- самые обычные, т.е. с негарантированной полосой пропускания и (самое важное) негарантированными потерями. Между офисами настроено N*M независимых L2 туннелей, настроена маршрутизация. Появилась IP-телефония (Asterisk + SIP телефоны).

Есть проблема: при некоторых разговорах пропадает часть голоса (от 0.2 до 2 секунд) из-за потери RTP пакетов (точнее, пакеты кратковременно теряются в провайдерской сети -- нормальное являение для всего non-realtime. Изменение параметров jitter buffer, перевод туннелей на TCP не помогают (и не должны) -- потеря связи на пару секунд разговора достаточно критична для RTP, разговор теряется.
Правильное решение этой проблемы
Связка одним провайдером по отдельному VLAN обоих офисов с приоритетным трафиком. Ну или тащить собственную оптику через пол-города. Будем выяснять, что проще.


Вопрос следующий: возможно ли в linux связаять несколько интерфейсов (туннелей) таким образом, чтобы пакет, пришедший на такую связку из внутренней сети отправлялся одновременно во все связанные интерфейсы (туннели), а пакеты, пришедшие на связку "дедуплицировались" и отправлялись во внутреннюю сеть?

То есть из сети net0 RTP-пакет попадает на связку mbond0, состоящую из туннелей tap1..tapK. Далее K = N*M копий пакетов параллельно отправляются по K туннелям, L < K из них теряются с небольшой вероятностью (1%). На второй сервер приходят K-L (одинаковых) пакетов, попадают на связку mbond1 и из них один отправляется во вторую внутреннюю сеть net1.

Я прекрасно понимаю, что это нам сгенерирует в K раз больше трафика и поднимет нагрузку. С другой стороны, нет желания опираться на TCP retransmission и большое количество дублей пакетов при обычном port mirroring или iptables TEE.
  • Вопрос задан
  • 3033 просмотра
Решения вопроса 1
gbg
@gbg Куратор тега Linux
Любые ответы на любые вопросы
То что вы ищите называется bonding mode = 3 (broadcast). В SuSE, например, настраивается просто выбором нужного пункта в конфигураторе bond-интерфейса.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Вообще потери это не нормально, что такое по вашему реал тайм провайдер, впервые слышу, много звоню по скайпе и вайберу и однозначно могу сказать это просто плохие провайдеры, да проблемы бывают но они скорее местечковые и раз в месяц.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы