Половинка интернета?

Вот есть два 10-мегабитных интернета в квартире (раньше второй был 3-мегабитным и назывался бэкап), хочется статического load balance, ни с каким bgp затеваться желания нет, старый я уже.

Вопрос: как двумя-тремя route add поделить "интернет" примерно пополам? В первую очередь, конечно "рунет", ибо все затевается ради скорости на торрентах, а торренты преимущественно отечественные. Тут же, среди читателей есть обладающие статистикой, я знаю.

Банальное деление ровно пополам:

route add default channel-1
route add 0.0.0.0/1 channel-2
дает, как и ожидалось, огромный перевес первой нижней (0-127) половинки.

Сдается мне, что водораздел находится в районе 80/8 или 82/8, но приятно было бы подтвердить это статистикой....

Update: Диапазон 0.0.0.0-95.255.255.255 (два роута) полностью решил проблему для популярных торрентов: источников столько, что определяющим является канал. А для непопулярных, очевидно, общего решения быть не может.

P.S. Попытка прикрутить к решению pf с его round-robin привела меня к мысли, что кто-то негуманоиден, или авторы pf или я.

Update2: вебманевский клиент очень обижается на dual-homed. И, думаю, хорошие клиент-банки тоже должны обижаться. И понятно почему.....

Comments

статистика тут может быть только твоя личная.
ну так netflow, c ripe базу по префикс/as и посчитать.

Личную если делать - то прямо по живому балансировать. И это будет, конечно, эффективнее всего если исходить из предположения, что доступность по обоим каналам одинаковая.

Но как мне кажется, статическое балансирование по 2-4 крупным блокам - даст результат не сильно хуже, а мудохаться с ним тоже нужно будет меньше.

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

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

Методом деления пополам. Причем первыая итерация уже проделана

1. Пробуем направить на второй канал 0.0.0.0/2
2. Смотрим результат. Если первый начинает резко перевешивать, отправляем во второй
64.0.0.0/3
3. Если в таком режиме перевешивает второй, меняем /3 на /4

Как-то пробовал, но потом забросил это дело (каналы были сильно разные).
Вероятно, можно написать жуткий батник, который добавит маршруты "через один"
route add -p 1.0.0.0 mask 255.0.0.0 192.168.1.1
route add -p 2.0.0.0 mask 255.0.0.0 192.168.1.2
route add -p 3.0.0.0 mask 255.0.0.0 192.168.1.1

Алексей, понимаю, что вас с этой макосью в виртуалке вероятно достали, но рискну спросить, вдруг встречалось?

Установил, работает, но если долго ее (макось) не трогать (окно vmware не активно) -- то зависает. Если нажать пауза-старт (в вмваре) -- не просыпается, т.е. картинку покажет зависшую и все. Если что-то в ней делать не виснет.

"Зависает" или засыпает?

Я power management в виртуальных машинах выключаю от греха всегда....

похоже на зависание - показывает картинку рабочего стола по последнему состоянию, но на мыша не реагирую

про павер менеджмент спасибо, пойду отключу

большое спасибо, помогло :)

Если один из двух аплинков - Корбина, то я бы крайне удивился,
если бы "зацепления" за корбиновский ре-треккер не хватало бы для загрузки ее канала.
А если оба аплинка - не Корбина - то положить "в одну корзину" Корбину московскую
(93.80/16, 89.178/16 плюс 95.27/16 - или 95.24/13, если мало ;) ),
а если ее вдруг не хватит - ну, добавить Комстар aka Стрим.

У меня нет проблем загрузить один из каналов (любой).
Я хочу загрузить оба.

Я понимаю - загрузить оба линка, на out.

Вот и говорю, что из общих соображений я бы поделил не на 0/1 и 128/1,
а на Корбину московскую (95.24/13, 89.178/16, 93.80/16, а если не хватит -
то м.б. плюс к ней Комстар-Стрим - 91.76/14, 85.140/15, 62.118/16, 81.195/16, 83.237/16)
и все остальное (дефолт).

А если один из линков - как раз Корбина -
то IMHO должно быть достаточно зацепиться за их ретрекер и 10/8 в их сторону
(а все остальное "белое" - соответственно, в другую).
Но что там с рейтингами и т.п. на ретрекере - я не очень знаю, увы мне.

На in, нахрена мне out?

И условную корбину - наоборот надо бы поделить пополам, если она такая суровая.

То есть один и тот же торрент будет качаться через разных провайдеров?

Сдается мне, что если касаться российских торрентов и скорости, то делить надо как-то по провайдерам которые подключают торрентоводов - Билайн (Корбина), МТУ (Стрим), кто-там-ещё (у меня например Старнет).

Ну да, один торрент через разных провайдеров.

Но мне кажется, что список немного не такой. Стрим - это ADSL и быстрых пиров оттуда нет и быть не может.
В то же время, я вижу дофига пиров из регионов (ну и Питера, естественно): центральный регион, поволжье.

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

С рутрекером проблем нет.

Ну и часть пиров вообще по DHT находится - с ними тоже проблем быть не должно.

Просто есть впечатление, что "торрентология" вообще не учитывает возможность того, что один и тот же клиент может работать с разных IP-адресов одновременно.

Да, раньше у меня бывали проблемы, когда торрент брался на одну машину (с браузером), а качался (пытался) - с другой (с быстрым интернетом).

Но я давно такого не видел, ID пользователя вшивают куда-то еще (URL трекера? я не разбирался), один торрент можно с нескольких машин качать без проблем.

Вообще, со снижением встречаемости рейтинга UL/DL (и ростом количества DHT, безтрекерных торрентов и т.п.) - острота проблемы падает на глазах.

А как насчёт того, что твой клиент выглядит как 2-а разных, у которых есть один и тот же набор блоков? Вобщем, да, наверное это всё не острое, но не факт, что ничего другого не всплывёт. Я для себя сделал вывод, что торренты не для мульти-IP-хома.

Я не разбираюсь в тонкостях совсем - но работает. Вместо 1.0-1.1Mb/sec (по любому из каналов) - 2.0-2.1, что на всяких кинах - очень даже заметно.

Вообще, вот пишут у Asureus в changelog:
...UPnP plugin support for multi-homed machines improved

То-бишь какая-то жизнь в этом месте имеется...

с двух и более машин - проблем нет (конкретно с рутрекером, во всяком случае).

С одним с двумя IP и очень выборочной connectivity (каждый IP доступен из своей половинки интернета) - оно сложнее

Как я понял, статистику посылает сам клиент, а не тот кто с него скачивает/раздаёт ему.
В вашем случае статистика будет посылаться по-идеи с одного ip - смотря куда выпадет ip трэкера - проблем не должно быть

Путаница со статистикой вполне может быть - если клиент рапортует про одно, а его пир - про другое (с другим IP).

Но так как рейтинги UL/DL меня совершенно не парят - то и наплевать.

как я понял пир вообще не рапортует о том, откуда он скачал - он просто говорит сколько U,D (по каждому torrent'у).
Махинации с рейтингом

Но так как рейтинги UL/DL меня совершенно не парят - то и наплевать.

Ну меня тоже: больше 10 torrent'ов (столько можно скачать даже при самом плохом рейтинге U/D) в сутки с рутрекера мне не приходилось качать

Так наверняка ж есть аппаратные решения, которые "эт всё" делают сразу, ну буквально вот http://www.broadbandbuyer.co.uk/Shop/ShopDetail.asp?ProductID=8785
Я понимаю, что "эт всё" руками точно также делается, но всё ж, справедливости ради.

А оно не дохрена стоит за то, что можно сделать относительно бесплатно?

Ну, понятие "до хрена" у всех разное, да и автор этого блога знает толк в технике.

Это правильная железка, наверное. Два аплинка и пять гигабитов - это мой размерчик.

Но у меня "эт все" включает кроме роутера еще и NAS (ну да, наверное его можно в отдельный ящик), почтовый сервер (ну да, на NAS-е можно запустить) и вообще это такой компьютер полноценный, хоть и юниксовый.

И сдается мне, что я балансировку с 80%-м качеством сделаю тройкой route-add. бесплатно.

У как дорого. Есть же штучки и получше: http://mikc.ru/product.php?id_catalog=2&id_position=194, там этот load balancing тремя способами делается, если не ошибаюсь. И стоит 100 долларов.

алекс, напишите потом своё решение, интересно ж. Если будет именно балансировка.

Это ж какой простор открывается, если совокуплять усилия с соседом-вторым-третьим.

Не, никакой динамической балансировки я не буду делать.

Раз мне статистику не дают - я ее сам посчитаю по блокам /8 и попробую набрать какое-то количество совместных блоков, чтобы двумя-тремя роутами покрыть все.

Собственно 0.0.0.0/1 сделал мне 16 мегабит вместо 10 т.е. счастье уже довольно близко.

Я кинул первое, что попалось в гугле. Наверняка есть и китаероутеры и цискки с таким функционалом, я как идею, что такое есть.

Написать модуль для netfilter, который будет ставить mark если последний бит адреса - 1, далее сделать policy routing по fwmark

Может уже есть какой-то готовый match, лень смотреть

Да, по последнему биту - это правильный заход.

Я его тоже обязательно попробую, хоть policy route и ненавижу.

Насколько мне известно (isPрактики), всякие там скайпы, мэйлруагенты и прочая 3,14-братия не выносят работы с разных IP. Да чё там, -- даже некоторые сайты этого не выносят, -- когда id сессии строится на основе IP-адреса. Сейчас наверное таких всё меньше, но их есть.

Про скайп - интересный заход, но вроде чат работает, а звуком я редко очень пользуюсь.

Но я именно два блока больших роучу отдельно.

Ну так-то можно просто сделать
route add 0.0.0.0 нужный_шлюз 0.0.0.1
На FreeBSD по крайней мере работает :)

Даже в качестве первого приближенного сечения водораздел надо начинать искать где-то в районе 112/8. Это из теории ;)

Хм. Обладатель "черного квадрата" рунета просит от рунета статистику :)

Было что-то такое для объединения каналов, но нужен будет второй конец (сервер в любом дц подойдет). Называлось, кажется, LPI, было очень популярно во времена модемов.

Погоди-погоди, а обратный канал ты как балансировать собрался?

А зачем мне его балансировать?

На 0.0.0.0/1 уходит через провайдер-1 и натится в его адрес.
На остальное - через провайдер-2 и натится туда.

В чем проблема то?

А, если NAT per int, тогда да, оно сложится автомагически.

В общем, надо смотреть статистику по /8 - крупнее будет грязно. А так, мне помнится, Geoff Huston из APNIC этим занимается плотно...

Наиболее "православно-рассовый подход" это организация по обеим каналам какого-нибудь multi-link VPN'а до дата-централа с толстыми трубами. :-)

Можно, но очень очень не хочется :)

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

Допустим вы обратились к какому-то серверу через ваш роутер1, сервер ваш внешний IP1 запомнил/использовал/передал/указал где-то... Теперь если, например, это торрент-сервер и он передает какому-то торрент-клиенту инфу, типа "вот нужный файл лежит у парня с IP1". Тот клиент обращается по IP1 и ваш компьютер ему отвечает. Для этого он смотрит, о, да, ответить надо через роутер2 (тот клиент например в его диапазон попал), с IP2 в source. Так вот, тот клиент отправил запрос на IP1, а получил ответ от IP2. Что он будет делать с таким пакетом? Наверное зависит от файрволов, настроек приложений и пр.

Я к тому, что что-то может не работать по этой причине (торрент может и не так работает, я тут могу ошибаться). Для домашнего компа, где в основном запросы инициируются им, это не страшно. Но была упомянута почта, может есть еще что-то, что опубликовано наружу. Там может что-то неработать по этой причине, это надо иметь в виду.

Проблема в теории есть где-то раньше. У меня роутер - FreeBSD, никакого UnPNP там нету. Приходит оттуда снаружи пакет, откуда роутеру знать, что его нужно отдать дальше, во внутреннюю сеть?

Вместе с тем, в NAT-овской таблице я вижу сессии, вижу что мой клиент раздает скачиваемое в обе половинки интернета.

Наверное, кто-то удивляется, получив ответ не с того IP. Ну значит ему я отдать ничего не смогу.
С другой стороны, если я с кого-то могу взять, то очевидно могу ему и отдать. Вот такой peer-to-peer.

>>P.S. Попытка прикрутить к решению pf с его round-robin привела меня к мысли, что кто-то негуманоиден, или авторы pf или я.

Именно так. Причем не только авторы pf