Объединение нескольких каналов + балансировка
Привет всем!
Поиск юзал, не спасло. Если не в ту ветку запостил, поправьте.
Есть экзотическая задачка. В нашем городе нормальных (по скорости) безлимитных тарифов нет. Но операторов (разных), которые предлагают такие тарифы достаточно (около 4-5). И вот задача — если есть сервер (UNIX) и к нему приходят несколько физических каналов доступа в сеть (например 1 ADSL + 1 PLC (Спарк) + 1 какой нибудь LAN) = то как эти физические каналы объединить в один? То есть, чтобы пользователи, подсоединяющиеся к гейту (тот самый UNIX-сервер) получали в свое распоряжение СУММАРНУЮ емкость всех трех каналов. Как это сделать?
Плюс, я подозреваю (оговорюсь, что я не великий спец по сетям) что нужна будет какая то программная штука, позволяющая равномерно (!) балансировать нагрузку по всем каналам.
«Бен, это Данила. Ай нид хелп!» ©
P.S. Если что не так, ногами не пинайте.
P.P.S. Решение для дома. Ну мало мне мегабита, а больше не дают.
- Для комментирования войдите или зарегистрируйтесь
Нет, так нельзя
Нет, так нельзя сделать afaik.
Про балансировку тоже не слышал никогда.
Гугление
Гугление натолкнуло на вот это:
Linux Advanced Routing & Traffic Control HOWTO
http://www.linuxshare.ru/docs/HOWTO/lartc-HOWTO/index.html
Тогда вперед:
Тогда вперед: читаем и пробуем!
Вот спасибо :) Я
Вот спасибо :)
Я надеялся, что кто то уже пробовал и знает как делать, дабы не наступать на грабли…
Ну тут на
Ну тут на форуме периодически что-то проскакивает по этому поводу
Пожалуйста, не описывайте своё железо в подписи
Ну вообще
Ну вообще естьтакая штука как бондинг.. Но тебе это похоже не подходит
___________________________________________
Gentoo GNU/Linux 2.6.26 GCC 4.3.1
Working on Gentoo for iPAQ hx4700 :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера
Так делать можно. Я
Так делать можно.
Я настраивал route multilink причем балансировка по каналам могла быть как на уровне запросов
т.у. 20% запросов на первый канал, 50% на второй и 30% на третий
так и по загрузке самих каналов.
для пользователя это выглядит как почти один канал т.е. качать фильм со скоростью больше чем толщина одного канала у него врядли получится (но не исключено что таки получится) все зависит от настроек натирования.
использовался iproute2 и набор патчей к ядру.
объединение резервирование каналов
Было бы очень любопытно взглянуть на работающий вариант на моем компе.
В доме есть много дешевых канальчиков как у единого так и у разных провайдеров, которые пропадают в достаточно хаотичном порядке. Их бы пятОк да на один сервак, чтобы работа не прерывалась, и канал не просаживался одним юзером.
Линух только начинаем юзать. Сервак смогли настроить только на один канал и тот без ограничений.
Так делать
Так делать можно
http://tetro.net/misc/multilink.html
Балансировка -
Балансировка - это QoS, тока на выход, никто не мешает. А вот с "объединением" будут проблемы. А именно с таблицой роутинга - она жестко привязана на девайсы. Разве что ипстолами что-нить шаманить, чтобы ответы _приходили_ на разные ипы (объединение входящего потока), а вот насчет исходящего думаю нельзя. Во всяком случае мне знаний не хватает. Если нароете что и как - не забудьте описать, если не сложно, будет любопытно почитать, да и проблема такая думаю у многих есть.
Вариант 1.
Вариант 1. (Реальный)
В зависимости от адреса source/dest, порта source/dest iptables-ом/PF маркировать пакет и менять его роутинг.
(Т.н маршрутизация по клиентам)
Вариант 2.(Для больных на голову):
emerge -av quagga; multikasting on;OSPF WLSM/32 lokal interfaces;
Вариант 3. (Проваидерский)
Платим $$,Получаем _OSPF_АS/RIPv2 , сливаем линки на одну подсеть.
Я решал задачу
Я решал задачу выхода в инет конторы через одного,
но часть городского трафика - через второго провайдера.
Т.е. два канала в мир одновременно.
И доступны извне оба канала одновременно.
Попутно сэкономил типа на втором ящике для ДНС...
Могу описать мой случай.
---
Делай, что должен, и будь, что будет.
давай, излагай,
давай, излагай, любопытно посмотреть.
_______________________
From Siberia with Love!
0. Ставим iproute2 1.
0. Ставим iproute2
1. Заводим пару таблиц в rt_tables, к примеру:
201 T1
202 T2
2. Пишем скриптик вида:
#!/bin/sh
#интерфейсы
IP1=айпи провайдера 1
IP2=айпи провайдера 2 вида 10.0.0.0
IP3=айпи провайдера 2, внешняя статика
#шлюзы
P1=шлюз провайдера 1
P2=шлюз провайдера 2
ip route add default via $P1 table T1
ip route add default via $P2 table T2
#ip route add default via $P1
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip rule add from $IP3 table T2
Потом, дальше в скрипт, добавляем роутинг по вкусу
(в моем городе доступ в часть сетей - халява) вида
route add -net ПодсеткаХалявы1 gw шлюз провайдера 2
Собственно и все.
Помогло месячное курение advanced routing и разбор нескольких примеров в гугле.
Единственная проблема - не могу скрипт оформить в виде
записей gentoo-way в файле /etc/conf.d/net,
но это соседняя тема.
---
Делай, что должен, и будь, что будет.
Ммм, это не
Ммм, это не совсем то, что хотел автор топика. Нужно объединение нескольких "физических" каналов в "логический". И это нетривиальная задача... По крайней мере, мне известно о таком только для отказоустойчивых кластеров. И там применялось спецоборудование - сетевухи, шина, кабели... Так что надо думать...
_______________________
From Siberia with Love!
Да я и не
Да я и не скрываю, что не "совсем то".
И отписался исключительно на Ваше "давай". :)
Но, имхо, даже перед бондингом надо получить
раз-роутенные каналы.
Так что в качестве первого шага - подойдет. :)
Кстати. Подлежат ли бондингу айпишники из разных подсеток?
А автору, думается, проще режить "железно" длинком за 70уе,
который балансед-роутинг имеет, нежели программно.
---
Делай, что должен, и будь, что будет.
Мне тут
Мне тут насоветовали CISCO 1841.
Сказали умеет делать то что я хочу.
Весьма
Весьма сомнительно, походу впаривают железку. А уже за тысячу уев за корпоративный роутер для домашнего использования... Нафиг оно надо. Могу представить что там - стандартная функция горячей замены маршшрутов по интерфейсам плюс полиси базед роутинг. Лажа вообщем.
_______________________
From Siberia with Love!
Почему
Почему лажа?
Только потому что дорого?
Или же Линух
Или же Линух сможет сделать это лучше? (читать качественнее)
yе знаю на
не знаю на сколько подойдет тебе - с помощью скуида
http://www.opennet.ru/base/net/squid_ipvs_keepalived.txt.html
Балансировку
Балансировку так, чтобы каждый получал весь свободный канал не сделаешь. Для этого нужно зарегистрироваться как автономная система, это очень сложно. Максимум, на что можно рассчитывать - раскидывать запросы по разным каналам. При этом каждый запрос не сможет импользовать более, чем ему дает канал.
Мне торренты
Мне торренты лить) Подойдет я думаю.
Не пойдет.
Не пойдет. Программа то одна, её переклинет, если у нее окажется сразу два внешних IP. Кроме того слетит авторизация в трэкере и механизм подсчета рейтингов. Работать будет, но хреново. Проще запустить несколько прог, назначить их на разные порты и пусть лезут через разных провайдеров от имени разных пользователей.
А давно
А давно торренты через прокси проходят?
---
Делай, что должен, и будь, что будет.
если ширина
если ширина каналов одинаковая до делаешь все каналы маршрутами по умолчанию и с одинаковой метрикой. всё. трафик будет нормально между ними делаться. я около года назад в одной конторе так два анлима запараллелил.
1) А если ширина
1) А если ширина разная ?
2) Если каналов не 2, а 3 ?
3) Как и где это настраивать ?
Quote:Мне тут
Есть у D-link девайс DI-LB604, правда там тока 2 WAN порта. Балансировку тоже умеет делать, как и резервирование канала.
http://www.dlink.ru/products/prodview.php?type=15&id=605
стоит в среднем 2500 р.
А вы, я
А вы, я извиняюсь , в курсе КАК оно ето делает ?
1) Всё, что можно сделать на етом деваисе,можно сделать и на Линухе (Основание: там и есть линух)!
1.1)Принципиально, всё что делает 1841 делает и Линух(вопросы стабильности,производит.,etc.. не рассматриваем.)
2)Может советчики всё таки почитают про OSPF,RIP,QoS в объёме курса CCNA .?
Ну на краинии случаи возмите на вечер Олиферов .
3)По настоящему слить каналы можно _только_ при исползовании протоколов динам. маршрутизации .
4) Для желающих поекспереминтировать есть Xen,openvz,Dynamips,dynagen,quagga||zebra
Мне тут
В таком случае конфиг 1841 и Dlink
в студию, пожалуиста .
Там скорее
Там скорее всего делается банально:
ip route add default scope global nexthop via x.x.x.x dev ethX weight 1 nexthop via y.y.y.y dev ethY weight 1
и в принципе этого большинству будет достаточно. Чуть более заморочный вариант это раскидывание сессий через iptables.
Господа, вы куда-то не туда мыслию уползли...
Если вы не планируете покупать СВОЙ СОБСТВЕННЫЙ блок адресов, регистрировать AS, поднимать BGP со всеми тремя провайдерами (а вы не собираетесь, т. к. это совсем другие деньги за канал!) - никак. (Да и в том случае... загрузкой каналов на прием вообще управлять крайне проблематично, только разными непрямыми методами решается...)
Обоснование: любой маршрутизатор осуществляет маршрутизацию IP-пакета по адресу назначения. Любой провайдер ассоциирует канал связи с конкретным пользователем с конкретным же IP этого пользователя - на пакеты, отправленные с его IP, ответные пакеты будут приходить только на этот IP - и, что характерно, только через того провайдера, который этот IP вам выдал и которому принадлежит блок адресов, откуда IP выделен! С сопутствующими ограничениями по скорости.
Есть довольно кривой вариант решения данной проблемы: настроить NAT таким образом, чтобы соединение с внешними IP, например, заканчивающимися на 0, 3, 6, 9, 12, 15... натилось через первого провайдера, заканчивающимися на 1, 4, 7, 10, 13, 16... - через второго, на 2, 5, 8, 11, 14, 17... - через третьего. iproute2 для такой конфигурации, понятно, вообще не обязателен ;) Но ни о какой точной балансировке загрузки речи в таком случае быть не может. И вообще это некрасивая, кривая и чреватая неопределенными проблемами (в особенности с аутентификацией, привязанной к IP) конфигурация.
А простейшее решение - 1/3 пользователей запускаем через 1-й канал, 1/3 через 2-й, 1/3 через 3-й. Ясно, что для любого пользователя максимальная скорость будет не больше максимальной "его" канала. Зато конфигурация насквозь прозрачная и беспроблемная ;)
Балансировка
А если есть AS, блок PI-адресов и поднято BGP, то как выполнить балансировку между каналами с учётом того, что они разной ширины?
А если это все есть и поднято
А если это все есть и поднято вами , то не надо флеймить :)
Как как , перфиксами и пирами на сети , или вы сквозняк у себя устроили ?
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
BGP/AS, равно как и PI, не
BGP/AS, равно как и PI, не обязателен, достаточно AS в понятии OSPF. Ну и шейпер на один из каналов не помешает :)
( И да ,вы таки стали провайдером, т.к. без помощи вышестоящих проваидеров не работает )
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
У меня тоже есть такое
У меня тоже есть такое задание, рыл доки, пытался объединить два канала. Пытался через сквид сделать, видел доку где сделали два канала и во флешгете получили суммарную скорость, некоторые говорят что это нереально, но вобщем у меня пока не получилось это сделать и было отложено на дальнейшее разбирательство. Ограничился подключением двух каналов и проверкой доступности одного провайдера, а при сбоях на основном провайдере, скрипт переподключал интернет на запасного прова.
/
Объединение каналов через сквид --- не представляю как оно вообще может быть реализовано. Пока считаю невозможным.
Автоматическую балансировку --- тоже идей пока нет. Но этот момент я ещё посмотрю. Оно может иметь решение...
:wq
--
Live free or die
В сквиде можно указать двух
В сквиде можно указать двух равноправных parent-proxy - это типа и есть загрузка по двум каналам. Очень трудоемкое решение, надо сказать.
Не грусти, товарищ! Всё хорошо, beautiful good!
И что , сквид к примеру SIP
И что , сквид к примеру SIP или IGMP балансировать будет ? :)
winterheart, хоть ты то не поддавайся на всякую фигню.
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)