03.07.2012 17:52, Владислав Продан пишет:

>>
>>>> Разруливание хоть пяти дефолтов на FreeBSD испокон веков
>>>> работает прекрасно через ipfw fwd, проверено длительной практикой.
>>>
>>> Это очень большой костыль.
>>
>> Ничего не костыль, обычный policy based routing.
> 
> ipfw fwd требует нетривиальной логики при 4-х и более линков.

Ничего нетривиального, всё масштабируемо на произвольное
число линков совершенно однородными правилами.
Сначала транслируем исходящий трафик по существующим записям в таблицах NAT,
затем транслируем оставшийся неоттранслированным исходящий трафик
по таблице маршрутизации, затем через ipfw fwd заворачиваем 
в правильный канал оттранслированный трафик, который по роутингу идёт "не в 
тот" канал.

>>> Евгений, не хотите ли соорудить патч, чтоб zebra сама могла определять
>>> сдохший дефолт и сама играться дефолтами ? :)
>>
>> bgpd в составе zebra и так прекрасно определяет пропадание дефолта,
>> а трекинг внешних каналов активным поллингом (пингами etc.)
>> это не функция протоколов маршрутизации и не дело зебры. 
> 
> А кто у нас демон маршрутизации как не zebra?

Трекинг каналов и классическая динамическая маршрутизация не одно и то же.

> Допустим у меня три аплинка.
> Я хочу загружать каналы в пропорции 20:30:50
> И при пропадании одного аплинка - 50:50 оставшихся.
> 
> В FreeBSD есть программы умеющие выполнять такую логику?

Если каналы независимые, то хоть циску поставьте - задача выдержать
пропорции весьма нетривиальна, это я вам говорю как краевед.

Мониторинг живости канала без динамической маршрутизации хоть в циске,
хоть в FreeBSD, хоть где решается трекингом. На FreeBSD трекинг делается
элементарным shell-скриптом с ping -S, который за счёт описанной
выше процедуры с ipfw fwd уйдет в нужный канал.

Возможно, в портах есть что-то готовое, никогда не искал - скрипт слишком прост.

Ответить