Jump to content

Динамическое деление канала, Stargazer, Squid


Recommended Posts

По этой теме:ALTQ только под Юникс. Скрипты типа CBQ и NTB не знаю, как могут помочь, если мне нужно шейпить только иностранный трафик. Ну да ладно.

 

Возникла идея как это сделать. Итак, условия задачи:

Есть анлимитный канал на инет со скоростями: Украина - 1 Мбит, мир - 128 Кбит

Есть сервер под SuSE 10, который является шлюзом для всей сети.

Необходимо динамически распределять пропускную способность "мира" между юзерами по "справедливому" принципу (т.к. сеть достаточно небольшая, то шейпить канал на 1 Мбит Украины необходимости нет)

Как я представляю себе решение. Воспользоваться ограничением скорости по юзеру, которая предусмотрена в SQUIDе.

Через SQUID проводить только иностранный трафик. Украина пущай идет напрямую.

Все пользователи, которые хотят юзать инет должны авторизироваться в Старгайзере.

Написать программку на С, которая бы, например, каждую минуту собирала иностранный трафик по каждому пользователю, которые в онлайне и считала бы кто сколько скачал за последнюю минуту. На основании этих данных она по справедливости разделяла бы 128 Кбит между всеми юзерами (кто больше качает - тот больше имеет скорость). После этого, она бы переписывала squid.conf в том месте, где настройка скорости. После этого выполняла бы команду squid -k reconfigure.

 

В программе предусмотреть минимальную скорость 20 Кбит для юзера.

Если подключается новый юзер, то Старгайзер выполняет скрипт OnConnect, в котором есть строчка "proga_on_C login ip", в следствии чего запускается наша прога, выделяет новому юзеру нормальную скорость и перераспределяет существующие. Соответствующие действия выполняются и после скрипта OnDisconnect.

 

Ну вот, вроде, и все. Скажите пожалуйста, реальна ли эта идея и предложите свою по возможности. Спасибо.

Link to post
Share on other sites
...... реальна ли эта идея и предложите свою по возможности.....

Ох и накрутил.... ну а вообще это же *nix, ее гибкость позволит даже такой выкрутас реализовать

Link to post
Share on other sites

Имхо, нужно будет просматривать логи другого сборщика трафика или сквида.

А так вполне решимая задача )

Link to post
Share on other sites
Имхо, нужно будет просматривать логи другого сборщика трафика или сквида.

А так вполне решимая задача )

 

А чем Stargazer не подходит? Считает неточно? Если погрешность меньше 5%, то можно принебречь (тем более, что оплата у нас за безлимитный канал).

 

Еще читал где-то, что есть баг в сквиде, что SQUID после реконфигурации забывает про параметры из delay_pool и юзеры качают на полных скоростях? Можете подтвердить или опровергнуть?

Link to post
Share on other sites
Имхо, нужно будет просматривать логи другого сборщика трафика или сквида.

А так вполне решимая задача )

 

А чем Stargazer не подходит? Считает неточно? Если погрешность меньше 5%, то можно принебречь (тем более, что оплата у нас за безлимитный канал).

 

Еще читал где-то, что есть баг в сквиде, что SQUID после реконфигурации забывает про параметры из delay_pool и юзеры качают на полных скоростях? Можете подтвердить или опровергнуть?

Да подобная фича проявляется в сквиде!

Link to post
Share on other sites
2fufnf: старгейзер может писать статистику каждые 10 минут.

Тебе нужно каждую минуту.

Опытным путем выяснил, что 5 минут, а не 10. http://local.com.ua/forum/index.php?showtopic=3489

 

Впринципе, можно и 5 минут поставить, заодно меньше будет SQUID дергаться.

Link to post
Share on other sites
  • 3 weeks later...

Народ, может я чего то путаю, но в первом Старгазере я переписывал конфигуратор, и он у меня каждую секунду считывал значения аплоада+даунлоада клиентов(програмно нажимал кнопочку "рефреш") - и у меня замечательно рисуются графики потребления в реал-тайме. Так какой период обновления статистики в Старгазере? или не о той статистике речь?

 

2 fufnf: Имею ту же самую проблему что и у тебя(более-менее жирная Украина +128к мира - надо раздать поровну динамически). Я пока использую cbq.init в статическом режиме (с деревьями, родителями, заемом полосы и пр. что-то не получается у меня). Если что то придумаешь или найдешь решение - маякни. А вообще я удивлен, почему никто почти не решает такую задачу. Или те кто решает, молчат потихоньку? :-)

В общем, надо скооперироваться.

Link to post
Share on other sites

2 fufnf: Имею ту же самую проблему что и у тебя(более-менее жирная Украина +128к мира - надо раздать поровну динамически). Я пока использую cbq.init в статическом режиме (с деревьями, родителями, заемом полосы и пр. что-то не получается у меня). Если что то придумаешь или найдешь решение - маякни. А вообще я удивлен, почему никто почти не решает такую задачу. Или те кто решает, молчат потихоньку? :-)

В общем, надо скооперироваться.

У меня вышло с htb.init. Просто маркируешь нужный трафик в iptables, после чего строишь классы на основе фильтров с MARK=<метка данного типа трафика>.

 

Хотя и от сабжевой идеи я не отказываюсь (кроме глюка со СКВИДом при переконфигурировании). Но, конечно, это самопал по сравнению с существующими CBQ, HTB, SRR и иже с ними...

Link to post
Share on other sites

Люди занимаются, вот только времени на это стало катастрофически не хватать... Тут обычной работой завалили - разгребаюсь :)

Link to post
Share on other sites

Вопрос такой - старгазер(у меня СГ1) успевает разделять по направлениям украинский и мировой трафик? Сам не реализовывал - боюсь экспериментировать на живой системе...Машина - Селерон 266.

И еще вопрос - можно ли файерволом iptables разделять трафик (те же Украина и мир)?

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

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

Link to post
Share on other sites

у меня в сети такая проблема уже давно стоит, я пока ее организационно сдерживаю.

 

Попробую поделиться мыслью на вашу проблему: вот думаю что принудительно пользователям скорость прижимать приведет к частичному простою канала (на мой взгляд 10-30%), и посему нада подходить к проблеме со стороны iptables-->MARK, где оценивать трафик за последние 10-30 секунда, и кто больше скачал – тому меньше приоритет.

Link to post
Share on other sites
Еще читал где-то, что есть баг в сквиде, что SQUID после реконфигурации забывает про параметры из delay_pool и юзеры качают на полных скоростях? Можете подтвердить или опровергнуть?

в squid-2.5.STABLE12 - исправлено, обновите скуид

Link to post
Share on other sites

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...