Привет всем.Задача объеденить несколько каналов разной ширины от разных провайдеров в один ,своей автономной системы нет и айпи по маршрутам каждый от своего прова.
По железу-софту: софт рутер под freebsd или openbsd.
Должна выполняться балансировка каналов т.е. равномерное разеделение нагрузки на них согласно полосе каждого из них и надёжность чтоб в случае пропадения любого канала или каналов нагрузка распределялась между оставшимися.
Поиск по инету почти не дал ничего, т.е. как именно это сделать и на чём я не нашёл.
Нашёл только упомнаение что в циско есть протокол eigrp или bgp+cef на них можно сделать это, но циски у меня нет и не будет!
Вообщем если кто то знает как можно реализовать выше описанное, расскажите очень прошу.
>[оверквотинг удален]
>Должна выполняться балансировка каналов т.е. равномерное разеделение нагрузки на них согласно полосе
>каждого из них и надёжность чтоб в случае пропадения любого канала
>или каналов нагрузка распределялась между оставшимися.
>Поиск по инету почти не дал ничего, т.е. как именно это сделать
>и на чём я не нашёл.
>Нашёл только упомнаение что в циско есть протокол eigrp или bgp+cef на
>них можно сделать это, но циски у меня нет и не
>будет!
>Вообщем если кто то знает как можно реализовать выше описанное, расскажите очень
>прошу.В Фряхе это сделать очень сложно и пару лет назад делалось тлько через фаервол правилами форварда, мутно и очень криво... (сервак тогда из вне не доступен). На линухе делается за 5 минут с помошью iproute2 через ядро без дополнительных шаманств с бубном.
по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи. У меня на линухе стоит 5 внешних каналов от разных внешних сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей. если пользователь пользуется прогами для скачивания которые умеют качать больше чем в 1 поток то получается сумарная пропускная скорость всех каналов.
В Фряхе это сделать очень сложно и пару лет назад делалось тлько через фаервол правилами форварда, мутно и очень криво... (сервак тогда из вне не доступен). На линухе делается за 5 минут с помошью iproute2 через ядро без дополнительных шаманств с бубном.
по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи. У меня на линухе стоит 5 внешних каналов от разных внешних сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей. если пользователь пользуется прогами для скачивания которые умеют качать больше чем в 1 поток то получается сумарная пропускная скорость всех каналов.
>В Фряхе это сделать очень сложно и пару лет назад делалось тлько
>через фаервол правилами форварда, мутно и очень криво... (сервак тогда из
>вне не доступен). На линухе делается за 5 минут с помошью
>iproute2 через ядро без дополнительных шаманств с бубном.
>по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие
>отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи.
>У меня на линухе стоит 5 внешних каналов от разных внешних
>сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей.
>если пользователь пользуется прогами для скачивания которые умеют качать больше чем
>в 1 поток то получается сумарная пропускная скорость всех каналов.Раскажите с примером как это реализовано у вас ?
>Раскажите с примером как это реализовано у вас ?скрипт большой.
но в кратце:
надо несколько каналов и если просто без излишеств, то
/sbin/route del default
/sbin/ip route add default equalize scope global nexthop via $nvgate1 dev eth2 weight 2\
nexthop via $nvgate2 dev eth4 weight 2\
nexthop via $nvgate3 dev eth5 weight 2\
nexthop via $nvgate4 dev eth3 weight 2\
nexthop via $nvgate5 dev eth0 weight 2у меня все каналы имеют одинаковую скорость, по этому у всех вес 2 , до этого часть каналов имело меньшую скорость а переписывать влом, прсто сделал всем одинаковый
там можно создавать разные таблицы маршрутизации как для сетей так и для ипишников , количество таблиц ограничена вроде 240 штук, хотя это для желания. может получится так что для каждого интерфейса придется собрать по одной талице и одну общую, тогда будет таблиц маршрутизации n+1 по лоличесву интерфейсов. Сам сервер при такой раскладе одекватно разговаривает по всем интерфейсам. Балансировка идет по количесву соединений и потоку через них, т.е. если есть 10 соединений 7 маленьких и 3 больших, то на 5 сетевок они раскинутся достаточно равномерно 3, 4 соединения и 1, 1, 1 на оставшиеся.
за пол года в месяц имеем раброс трафика на каналах в пределах 2 процентов при совокупном трафике в 0.4 Тб.Если надо более подробно пиши. Но это на Linux в фряхе такое делал только с 2 каналами и то не красиво.
Щас думаю над подключением ещё 5 каналов и созданием всего на Vlan и линухе.
>[оверквотинг удален]
>5 сетевок они раскинутся достаточно равномерно 3, 4 соединения и 1,
>1, 1 на оставшиеся.
>за пол года в месяц имеем раброс трафика на каналах в пределах
>2 процентов при совокупном трафике в 0.4 Тб.
>
>Если надо более подробно пиши. Но это на Linux в фряхе такое
>делал только с 2 каналами и то не красиво.
>
>Щас думаю над подключением ещё 5 каналов и созданием всего на
>Vlan и линухе.Спасибо за ответ.
Расскажи пожалуста подробно со всеми тонкостями как это сделать ?
Линуксом я не владею вообще, только bsd системами.
Каналы у меня все разные.
На скоколько я понял ты прописываешь несколько дефолтовых путей в таблице маршрутов и для каждого указываешь вес - уровень использования.
Как расчитывать вес если каналы разные ?
Каналов у меня 4 штуки и все разные как уже говорил.
И ещё при падении канала или каналов, нагрузка распределиться среди остальных ? Не пропадают ли пакеты и как быстро он определят что канал не работает ?
Заранее спасибо за помощь.
>Каналы у меня все разные.В линуксе любой канал это интерфейс и у него может быть разная природа, главное чтобы на нем работал IP протокол
>На скоколько я понял ты прописываешь несколько дефолтовых путей в таблице маршрутов
>и для каждого указываешь вес - уровень использования.
>Как расчитывать вес если каналы разные ?сам до конца схему непонял, но подисев маленько пришел к выводу что чем больше значение веса канала тем он приоритетнее, т.е. если у нас каналы 256 Кб 512 кб и 1024 Кб то веса должны быть 1 2 4 , иными словами надо выбрать самый наименьший и взависимости от его пропускной способности выставить кратные веча остальным каналам.
>Каналов у меня 4 штуки и все разные как уже говорил.
>И ещё при падении канала или каналов, нагрузка распределиться среди остальных ?она всегда распределяется, но тут есть небольшой нюанс:
1 при падении канала об этом система ни чего не знает! и продолжает пихать ттуда запросы что приводит к отказам, но если тупо сделать обновить запрос пойдет в следующий канал
вообще в описании сказано что этот случай должен как-то отслеживаться и устранятся, но у меня ни разу не было случая "падения" канала, а были блокировки вот их точно ни как не отслеживает! типа если кончились бабки иил флудили, то нас фаерволом накрывало, но линк работал.
>Не пропадают ли пакеты и как быстро он определят что канал
>не работает ?как писал выше если закрыли фаерволом то ни как вроде.
за пол года не замечено потерь пакетов(правда у нас лини хорошии)
Я смог разрулить на 600 дюроне 5 каналов по 2 мегабита в инет и по 30 мегабит во внутренние сети с нагрузкой в 1 процент (поток естественно предельный) внутрь сети стоит гигабитник и все работает без заминки.
вообще надо более внимательно прочитать про команду ip в линухе, я думаю там есть возможность отслеживания живучести канала. А если нет то можно скрипт написать за часик который будет тупо передергивать маршрут в зависисмости от доступных каналов и пихнуть его в крон на каждые 5 минут. на фряхе так и делал.
>[оверквотинг удален]
>/sbin/ip route add default equalize scope global nexthop via $nvgate1 dev eth2
>weight 2\
>
> nexthop via $nvgate2 dev eth4 weight 2\
>
> nexthop via $nvgate3 dev eth5 weight 2\
>
> nexthop via $nvgate4 dev eth3 weight 2\
>
> nexthop via $nvgate5 dev eth0 weight 2сделал все по так как Вы указали, клиенты получают инет по 2-м каналам, но! на самом шлюзе при этом инет пропадает. подскажите плз как решается эта проблема
pf Documentation, глава "Load Balance Outgoing Traffic"
Не думайте - на самом деле в бсди не все так плохо)pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
ipfw: fwd, prob и т.д.не забудьте keep state в правилах добавлять.
если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки каналов по тем же правилам + рулите динамически как угодно, так же определяйте падение канала.
>[оверквотинг удален]
>
>pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
>
>ipfw: fwd, prob и т.д.
>
>не забудьте keep state в правилах добавлять.
>
>если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки
>каналов по тем же правилам + рулите динамически как угодно, так
>же определяйте падение канала.Если читал нитку, то видел что на фряхе такое тоже есть, только менее гибкое и удобное, да и фаервол менее удобный (более простой на мой взгляд).
Идеалогические войны не по мне, я описал как это делал я, а дальше флаг в руки и большую лопату для копки! ;)
>Если читал нитку, то видел что на фряхе такое тоже есть, только
>менее гибкое и удобное, да и фаервол менее удобный (более простой
>на мой взгляд).Я могу тоже самое сказать про линух. Критерии гибкости и удобности откуда? Тем более сам говоришь не знаком с бсди. Чего пустомелить тогда?
>>Если читал нитку, то видел что на фряхе такое тоже есть, только
>>менее гибкое и удобное, да и фаервол менее удобный (более простой
>>на мой взгляд).
>
>Я могу тоже самое сказать про линух. Критерии гибкости и удобности откуда?
>Тем более сам говоришь не знаком с бсди. Чего пустомелить тогда?А с чего ты решил что не знаком? Я с фрхи начинал в далеком 99
Да как сказать не знаком , просто последнии 2 года стараюсь рукмим её не трогать, а так за 8 лет администрирования локальных сетей разных провайдеров набрался впечатлений.далее нитка игнорится
>А с чего ты решил что не знаком? Я с фрхи начинал
>в далеком 99я с 96, будем мерятся?)
>Да как сказать не знаком , просто последнии 2 года стараюсь рукмим
>её не трогать, а так за 8 лет администрирования локальных сетей
>разных провайдеров набрался впечатлений.no comment
>>А с чего ты решил что не знаком? Я с фрхи начинал
>>в далеком 99
>
>я с 96, будем мерятся?)
>
>>Да как сказать не знаком , просто последнии 2 года стараюсь рукмим
>>её не трогать, а так за 8 лет администрирования локальных сетей
>>разных провайдеров набрался впечатлений.
>
>no commentивини мерятся не будем.. с 3 постами за 8 лет ты точно гуру и демагог! признаю свою не компетентность.
>[оверквотинг удален]
>
>pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
>
>ipfw: fwd, prob и т.д.
>
>не забудьте keep state в правилах добавлять.
>
>если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки
>каналов по тем же правилам + рулите динамически как угодно, так
>же определяйте падение канала.Спасибо за ответ.
PF есть во фре и в опене, собственно он от туда и пришёл.
Доку я читал уже много раз.
Есть какой нибудь рабочий и провереный пример как это будет выглядеть ?
И как вариант как это сделать на ipfw, естественно пример.Хоть общий, но рабочий.
Заранее спасибо за ответ. Вадим.