URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 16118
[ Назад ]

Исходное сообщение
"Объединение каналов"

Отправлено vproto , 24-Апр-08 03:49 
Привет всем.

Задача объеденить несколько каналов разной ширины от разных провайдеров в один ,своей автономной системы нет и айпи по маршрутам каждый от своего прова.
По железу-софту: софт рутер под freebsd или openbsd.
Должна выполняться балансировка каналов т.е. равномерное разеделение нагрузки на них согласно полосе каждого из них и надёжность чтоб в случае пропадения любого канала или каналов нагрузка распределялась между оставшимися.
Поиск по инету почти не дал ничего, т.е. как именно это сделать и на чём я не нашёл.
Нашёл только упомнаение что в циско есть протокол eigrp или bgp+cef на них можно сделать это, но циски у меня нет и не будет!
Вообщем если кто то знает как можно реализовать выше описанное, расскажите очень прошу.


Содержание

Сообщения в этом обсуждении
"Объединение каналов"
Отправлено skyer , 24-Апр-08 08:49 
>[оверквотинг удален]
>Должна выполняться балансировка каналов т.е. равномерное разеделение нагрузки на них согласно полосе
>каждого из них и надёжность чтоб в случае пропадения любого канала
>или каналов нагрузка распределялась между оставшимися.
>Поиск по инету почти не дал ничего, т.е. как именно это сделать
>и на чём я не нашёл.
>Нашёл только упомнаение что в циско есть протокол eigrp или bgp+cef на
>них можно сделать это, но циски у меня нет и не
>будет!
>Вообщем если кто то знает как можно реализовать выше описанное, расскажите очень
>прошу.

В Фряхе это сделать очень сложно и пару лет назад делалось тлько через фаервол правилами форварда, мутно и очень криво... (сервак тогда из вне не доступен). На линухе делается за 5 минут с помошью iproute2 через ядро без дополнительных шаманств с бубном.
по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи. У меня на линухе стоит 5 внешних каналов от разных внешних сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей. если пользователь пользуется прогами для скачивания которые умеют качать больше чем в 1 поток то получается сумарная пропускная скорость всех каналов.


"Объединение каналов"
Отправлено skyer , 24-Апр-08 08:50 
В Фряхе это сделать очень сложно и пару лет назад делалось тлько через фаервол правилами форварда, мутно и очень криво... (сервак тогда из вне не доступен). На линухе делается за 5 минут с помошью iproute2 через ядро без дополнительных шаманств с бубном.
по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи. У меня на линухе стоит 5 внешних каналов от разных внешних сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей. если пользователь пользуется прогами для скачивания которые умеют качать больше чем в 1 поток то получается сумарная пропускная скорость всех каналов.

"Объединение каналов"
Отправлено vproto , 24-Апр-08 12:22 
>В Фряхе это сделать очень сложно и пару лет назад делалось тлько
>через фаервол правилами форварда, мутно и очень криво... (сервак тогда из
>вне не доступен). На линухе делается за 5 минут с помошью
>iproute2 через ядро без дополнительных шаманств с бубном.
>по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие
>отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи.
>У меня на линухе стоит 5 внешних каналов от разных внешних
>сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей.
>если пользователь пользуется прогами для скачивания которые умеют качать больше чем
>в 1 поток то получается сумарная пропускная скорость всех каналов.

Раскажите с примером как это реализовано у вас ?


"Объединение каналов"
Отправлено skyer , 24-Апр-08 13:40 

>Раскажите с примером как это реализовано у вас ?

скрипт большой.

но в кратце:

надо несколько каналов и если просто без излишеств, то

/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 и линухе.


"Объединение каналов"
Отправлено vproto , 24-Апр-08 23:28 
>[оверквотинг удален]
>5 сетевок они раскинутся достаточно равномерно 3, 4 соединения и 1,
>1, 1 на оставшиеся.
>за пол года в месяц имеем раброс трафика на каналах в пределах
>2 процентов при совокупном трафике в 0.4 Тб.
>
>Если надо более подробно пиши. Но это на Linux в фряхе такое
>делал только с 2 каналами и то не красиво.
>
>Щас думаю над подключением ещё 5  каналов и созданием всего на
>Vlan и линухе.

Спасибо за ответ.
Расскажи пожалуста подробно со всеми тонкостями как это сделать ?
Линуксом я не владею вообще, только bsd системами.
Каналы у меня все разные.
На скоколько я понял ты прописываешь несколько дефолтовых путей в таблице маршрутов и для каждого указываешь вес - уровень использования.
Как расчитывать вес если каналы разные ?
Каналов у меня 4 штуки и все разные как уже говорил.
И ещё при падении канала или каналов, нагрузка распределиться среди остальных ? Не пропадают ли пакеты и как быстро он определят что канал не работает ?
Заранее спасибо за помощь.



"Объединение каналов"
Отправлено skyer , 27-Апр-08 10:28 

>Каналы у меня все разные.

В линуксе любой канал это интерфейс и у него может быть разная природа, главное чтобы на нем работал IP протокол
>На скоколько я понял ты прописываешь несколько дефолтовых путей в таблице маршрутов
>и для каждого указываешь вес - уровень использования.
>Как расчитывать вес если каналы разные ?

сам до конца схему непонял, но подисев маленько пришел к выводу что чем больше значение веса канала тем он приоритетнее, т.е. если у нас каналы 256 Кб 512 кб и 1024 Кб то веса должны быть 1 2 4 , иными словами надо выбрать самый наименьший и взависимости от его пропускной способности выставить кратные веча остальным каналам.
>Каналов у меня 4 штуки и все разные как уже говорил.
>И ещё при падении канала или каналов, нагрузка распределиться среди остальных ?

она всегда распределяется, но тут есть небольшой нюанс:
1 при падении канала об этом система ни чего не знает! и продолжает пихать ттуда запросы что приводит к отказам, но если тупо сделать обновить запрос пойдет в следующий канал
  вообще в описании сказано что этот случай должен как-то отслеживаться и устранятся, но у меня ни разу не было случая "падения" канала, а были блокировки вот их точно ни как не отслеживает! типа если кончились бабки иил флудили, то нас фаерволом накрывало, но линк работал.


>Не пропадают ли пакеты и как быстро он определят что канал
>не работает ?

как писал выше если закрыли фаерволом то ни как вроде.
за пол года не замечено потерь пакетов(правда у нас лини хорошии)
Я смог разрулить на 600 дюроне 5 каналов по 2 мегабита в инет и по 30 мегабит во внутренние сети с нагрузкой в 1 процент (поток естественно предельный) внутрь сети стоит гигабитник и все работает без заминки.


вообще надо более внимательно прочитать про команду ip в линухе, я думаю там есть возможность отслеживания живучести канала. А если нет то можно скрипт написать за часик который будет тупо передергивать маршрут в зависисмости от доступных каналов и пихнуть его в крон на каждые 5 минут. на фряхе так и делал.


"Объединение каналов"
Отправлено max , 02-Сен-08 15:02 
>[оверквотинг удален]
>/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-м каналам, но! на самом шлюзе при этом инет пропадает. подскажите плз как решается эта проблема


"Объединение каналов"
Отправлено Av , 27-Апр-08 21:44 
pf Documentation, глава "Load Balance Outgoing Traffic"

"Объединение каналов"
Отправлено Av , 27-Апр-08 22:06 
Не думайте - на самом деле в бсди не все так плохо)

pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
ipfw: fwd, prob и т.д.

не забудьте keep state в правилах добавлять.

если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки каналов по тем же правилам + рулите динамически как угодно, так же определяйте падение канала.


"Объединение каналов"
Отправлено skyer , 28-Апр-08 06:02 
>[оверквотинг удален]
>
>pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
>
>ipfw: fwd, prob и т.д.
>
>не забудьте keep state в правилах добавлять.
>
>если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки
>каналов по тем же правилам + рулите динамически как угодно, так
>же определяйте падение канала.

Если читал нитку, то видел что на фряхе такое тоже есть, только менее гибкое и удобное, да и фаервол менее удобный (более простой на мой взгляд).
Идеалогические войны не по мне, я описал как это делал я, а дальше флаг в руки и большую лопату для копки! ;)


"Объединение каналов"
Отправлено Av , 28-Апр-08 09:58 
>Если читал нитку, то видел что на фряхе такое тоже есть, только
>менее гибкое и удобное, да и фаервол менее удобный (более простой
>на мой взгляд).

Я могу тоже самое сказать про линух. Критерии гибкости и удобности откуда? Тем более сам говоришь не знаком с бсди. Чего пустомелить тогда?


"Объединение каналов"
Отправлено skyer , 28-Апр-08 10:09 
>>Если читал нитку, то видел что на фряхе такое тоже есть, только
>>менее гибкое и удобное, да и фаервол менее удобный (более простой
>>на мой взгляд).
>
>Я могу тоже самое сказать про линух. Критерии гибкости и удобности откуда?
>Тем более сам говоришь не знаком с бсди. Чего пустомелить тогда?

А с чего ты решил что не знаком? Я с фрхи начинал в далеком 99


Да как сказать не знаком , просто последнии 2 года стараюсь рукмим её не трогать, а так за 8 лет администрирования локальных сетей разных провайдеров набрался впечатлений.

далее нитка игнорится


"Объединение каналов"
Отправлено Av , 28-Апр-08 11:03 
>А с чего ты решил что не знаком? Я с фрхи начинал
>в далеком 99

я с 96, будем мерятся?)

>Да как сказать не знаком , просто последнии 2 года стараюсь рукмим
>её не трогать, а так за 8 лет администрирования локальных сетей
>разных провайдеров набрался впечатлений.

no comment


"Объединение каналов"
Отправлено skyer , 28-Апр-08 11:29 
>>А с чего ты решил что не знаком? Я с фрхи начинал
>>в далеком 99
>
>я с 96, будем мерятся?)
>
>>Да как сказать не знаком , просто последнии 2 года стараюсь рукмим
>>её не трогать, а так за 8 лет администрирования локальных сетей
>>разных провайдеров набрался впечатлений.
>
>no comment

ивини мерятся не будем.. с 3 постами за 8 лет ты точно гуру и демагог! признаю свою не компетентность.


"Объединение каналов"
Отправлено vproto , 29-Апр-08 12:12 
>[оверквотинг удален]
>
>pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
>
>ipfw: fwd, prob и т.д.
>
>не забудьте keep state в правилах добавлять.
>
>если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки
>каналов по тем же правилам + рулите динамически как угодно, так
>же определяйте падение канала.

Спасибо за ответ.
PF есть во фре и в опене, собственно он от туда и пришёл.
Доку я читал уже много раз.
Есть какой нибудь рабочий и провереный пример как это будет выглядеть ?
И как вариант как это сделать на ipfw, естественно пример.Хоть общий, но рабочий.
Заранее спасибо за ответ. Вадим.