Вот задался вопросом балансировки. Ткните меня носом в каком направлении копать.
Что имеем.Каналы:
1-й канал (входящая 1 Мбит/с) (исходящая 5 Мбит/с)
2-й канал ( входящая 5 Мбит/с) (исходящая 1 Мбит/с)
3-й канал (входящая 10 Мбит/с ) (исходящая 10 Мбит/с)
Трафик:
1: Требующие приоритета по входящей скорости.
DC & TORRENTs, HTTP, игры и прочее
2: Требующие приоритета по исходящей скорости.
трафик с определённых хостов локальной сети, от куда идёт «заливка» контента в интернет.
3: Трафик «привязанный» к определённым каналам.
Например VoIP на 3-ем канале у меня всегда получает свои 6 Мбит/с.
Задача:
При текущей загрузке канала №3 на 90% перекидывать новые соединения на другой канал.
DC & TORRENTs, игры и прочее перекидываются на канал №2
Трафик с upload-ом в инет перекидывается на канал №1
VoIP остаётся на канале №3.
При загрузке канала №2 на 90%
DC & TORRENTs, игры и прочее перекидываются на канал №1 (там они имеют больший приоритет чем upload трафик с определённых хостов )
При снижении нагрузки на канал №2 до уровня 50% новые соединения поднимаются на канале №2.
При снижении нагрузки на канал №3 до уровня 50% новые соединения поднимаются на канале №3.
Вопрос №1:
Чем и как мерить загрузку канала? И какие интервалы для замера лучше брать? Возможен замер средней нагрузки за определённый период(например 5 сек.)?
Вопрос №2:
Чем и как перекидывать новые соединения на другие каналы?
P.S. В голове пока крутится - (предположительно использовать разные таблицы маршрутизации для новых соединений) То есть ставить метки и по этим меткам рулить. Но как эти метки выставить в зависимости от загрузки канала? Если метить через iptables то при смене правил надо будет перезагружать таблицы. Что разорвёт уже существующие соединения, а это не допустимо.
P.S.S. Буду рад любым предложениям и мнениям.