Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Балансировка сетевой нагрузки или как увеличить отдачу через ADSL2+ до 400 кб/сек =) |
Обсуждение всего, что связано с интернет, а также сетевого оборудования и сетевых технологий от офисных сетей до домашних. |
|
Опции темы |
03.02.2008, 02:00 | #1 |
Форумец
Сообщений: 491
Регистрация: 02.12.2005
Возраст: 36
Не в сети |
Балансировка сетевой нагрузки или как увеличить отдачу через ADSL2+ до 400 кб/сек =)
Смотрим сначала на скрин, где изображён KTorrent. Смотрим на скорость загрузки - 1,037 Мб/сек. Теперь смотрим второй скрин, где изображено окно программы telnet, подключенной к моему модему. Downstream speed всего 6786 кбит/сек. Это не глюк Korrent'a и не фотошоп (и не GIMP). Просто я распределил нагрузку между двумя домолинковскими модемами. Если ещё интересно, то читайте мой пост номер 2 о том как я это осуществил.
|
03.02.2008, 02:43 | #2 | ||
Форумец
Сообщений: 491
Регистрация: 02.12.2005
Возраст: 36
Не в сети |
Сразу говорю что ничего нового я здесь не поведую. Большинство из тех кому это надо всё и так знают, либо знают где найти, если понадобится. Просто я думаю чо мой пост может пригодится начинающим админам в небольших локальных сетях, которым нужна высокая пропускная способность внешнего канала на сервере, да и простым личерам, которым лень ждать пока скачается и уних есть добрый сосед, который позволит заюзать свой модем =)
В общем для всего этого чуда нам понадобится Linux и установленный пакет iproute2. Я буду рассматривать пример для домолинка. Опишу как у меня всё это устроено: имеется локальная сеть. Непосредственно в свитч воткнут мой домолинковский модем. Пакетниками закрыты все ресурсы кроме локальных, чтоб злоумышленники из локалки не заюзали внешний инет на халяву =) IP модема 10.1.9.113. Также имеется сервер с IP 10.1.9.105, который разводит домолинковский инет. На сервере стоит биллинг. Но это не суть важно, так как за локальные домолинковские ресурсы деньги не снимаются. Вот его мы и будем использовать как второй канал. Модем подключенный к этому серверу работает даже на меньшей скорости чем мой - что то около 3.6 мбит/сек, и к тому же AnnexA. Все эксперименты проводились на ноуте с IP 10.1.9.236. Я написал вот такой вот скриптик: Цитата:
Теперь о переменных: IF1 и IF2 - это переменные содержащие имена интерфейсов к которым подключены модемы 1 и 2 соответственно, а IF1_IP и IF2_IP - IP адреса, назначенные на интерфейсы IF1 и IF2. GW_IP1 и GW_IP2 - это IP адреса шлюзов. Они обычно соответсвуют IP адресу соответствующего модема, если те работают в режиме роутера. Сохраняем скрипт с именем balance.sh. Выполняем команду chmod 755 balance.sh Это сделает файл balance.sh исполняемым для владельца. Запускаем его, и смотрим не вывалилось ли ошибок. Если нет - то можно юзать =) Проверить что используется несколько модемов можно несколько раз выполнив команду traceroute для различных хостов. Шлюзы должны оказываться разными. У меня получилось вот так: Цитата:
И ещё. Если у вас используются каналы с сильно различающейся пропускной способностью - попробуйте поиграться с параметром weight. Это позолит нагрузить в большей степени один, либо другой канал. З.Ы. Что то я неудобоваримое понаписал. Просто уже поздно, бошка не варит, завтра и допишу. Если у кого то будут вопросы - отвечу. |
||
03.02.2008, 23:52 | #3 |
DontDoItAgain
Сообщений: 36
Регистрация: 10.12.2005
Возраст: 44
Не в сети |
Lampus, а теперь научи, как грамотно развести соседа на использование его модема
|
04.02.2008, 21:42 | #4 |
Форумец
Сообщений: 32
Регистрация: 08.10.2007
Не в сети |
Ну я уж молчу сколько ошибок в скрипте наваял ...
IF2_IP - где-нибуть используется? $IF1_IP2 - где-нибуть определяется? ip rule add from $GW_IP1 table T1 from всегда использует адрес интерфеса - а не адрес гатевея ... И вообще - зачем тебе таблицы - ты что - souce routing решил применить? нафига он тебе. Я молчу и о том, что все что тут нарисовал (в случае если все ошибки выправить) - годится только для default routing'а. А если хоть один из модемов с закрытым интернетом ... познокомь с таким соседом - расшарившим модем в локалке - и не закрывшим его фильтром от платного трафика. Короче, складывается впечатление, что прочитал статью на www.opennet.ru (поиск по ключевому слову - nexthop) и изложил ее в своей трактовке, добавив кучу ошибок ну а теперь конструктив. Если отбросить всю словесную шелуху, то нужно всего-лишь дать три команды: ip route add 80.82.32.0/19 nexthop via $GW_IP1 dev eth0 nexthop via $GW_IP2 dev eth0 ip route add 88.83.192.0/19 nexthop via $GW_IP1 dev eth0 nexthop via $GW_IP2 dev eth0 ip route add 77.45.128.0/17 nexthop via $GW_IP1 dev eth0 nexthop via $GW_IP2 dev eth0 и ты получишь multipach routing на домолинковские сети после чего ставь дефаулт роутинг (на интернет), туда - где он реально работает. Да, в таблице маршрутизации не должно быть роутингов на домолинковские сетки, если есть - убейте их, перед тем как давать вышеприведеные команды. И не забывайте такую замечательную команду: ip route flush cache очистит кеш таблицы роутинга - что заставит компьютер по-новой искать пути к источникам (вполне возможно что через другой модем). Кроме того - такая схема должна еще обладать повышенной живучестью - в том смысле, что при отключении одного из модемов - все должно продолжать работать. (Сам не проверял) |
05.02.2008, 01:52 | #5 | |
Форумец
Сообщений: 491
Регистрация: 02.12.2005
Возраст: 36
Не в сети |
myau, на счёт ошибок в скрипте ты прав. Я этот скрипт не проверил, прежде чем выложить, а зря. У меня это имело несколько другой вид, а вводить переменные я начал лишь для того, чтобы придать скрипту большую читабельность. Просто голый набор комманд с моими ip вряд ли бы кому то что-то дал. А теперь ещё посмотри в какое время оставлен тот пост (да и этот за одно), всё сразу поймёшь =)
Видимо ты не внимательно читал мой пост, ибо после блока со скриптом я написал что таблицы T1 и T2 в данном случае абсолютно бесполезны и приведены лишь для того, чтобы скрипт можно было адаптировать для использования двух разных провайдеров с собственными локальными диапазонами. И ещё данный скрипт предполагает что ни о каких пакетных фильтрах речи не идёт, то бишь помимо локальных ресурсов доступна ещё и внешка. А если у нас два подключения к одному и тому же прову, с одними и теми же локальными ресурсами и всегда открытой внешкой, то вообще было бы достаточно одной строчки: Цитата:
Хотя такая конструкция (пока я не начал менять реальные ip на имена переменных) замечательно работала, в чём можно убедиться взглянув на скрины. Arnold Laynе, телепаты в отпуске. Ситуацию конкретней опиши. |
|
10.02.2008, 22:50 | #6 |
Куратор темы
Сообщений: 187
Регистрация: 24.01.2002
Возраст: 53
Не в сети |
Спасибо. Подскажите, нужно что-ли дополнительно дописывать в скрипте, что-бы использовать 3 или 4-ре модема ? Планируются только для использования torrents.vsi.ru .
|
15.02.2008, 22:24 | #8 |
Форумец
Сообщений: 32
Регистрация: 08.10.2007
Не в сети |
Ну и ... доволен ... если ты до сих пор в этом режиме работаешь ... то полный ... провакатор.
таблицу смотрел? cat /proc/net/ip_conntrack | grep ESTABLISHED И это только установленные соединения .... Только список превышает 3 МеГаБайта А сколько буферов памяти под каждое соединение выделяется? но это ошибки с Нашей стороны ... а с Ихней сороны - сколько не полученных ACK на ихней SYN было? (Тэорию открой) Ну а теперь - как всегда, позитив ... Правду не расскажу - скажу лишь подсказку: 1.Статический роутинг спасает - на таком количестве объектов(приемников) 2. Статический роутинг - делается везде, в том числе и под виндой ...(штатными средствами) Так что проверить меня очень просто. И не нужно тут изобретать велосипед. |
21.02.2008, 23:13 | #10 |
35 FPS
Сообщений: 899
Регистрация: 18.01.2003
Не в сети |
|