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

Исходное сообщение
"Честно-ли делит сквид канал?"

Отправлено Алексей , 20-Янв-04 10:28 
Вот уже давно хотел сделать такую штуку, чтоб канал динамически делился между активными пользователями по ровну,независимо от количества потоков закачки каждого клиента.Прокопался две недели с QoS -вещь хорошая, но как выяснилось не в том, что мне надо.В итоге я натыкаюсь на Extra System Proxy Server(ESPS),в котором просто гордятся наличием такой фичи! http://www.esproxy.org.ua/band.htm .Вот только минус -он под винду, но я всё равно поставил ради интереса.Выставил в его конфиге ограничение 40 кил,проверяю: качаю фаил с 10-ю потоками -качается со скоростью 40, только присоединяюсь вторым компом -сразу у первого скорость падает до 20-ти и второй начинает тянуть со скор. 20 кил, хотя второму я специально поставил качать 1-им потоком! Мне интерессно, неуже-ли разработчики сквида настолько слепы и не видят реально нужных вещей, которые следует включить в столь мощный прокси-сервер?

Содержание

Сообщения в этом обсуждении
"Честно-ли делит сквид канал?"
Отправлено ipmanyak , 20-Янв-04 10:54 
проверяли delay pool в сквиде - всё честно делает.

"Честно-ли делит сквид канал?"
Отправлено Алексей , 21-Янв-04 17:33 
>проверяли delay pool в сквиде - всё честно делает.
Прочти нормально задачу -нужно динамическое деление, т.е. есть у тя сетка, есть канал 256 к/бит допустим, ты поставил ограничение 5 килобайт в сквиде, и если канал пустует -пользователь больше своих 5-ти не получит,хотя канал не загружен, а если загружен, то больше тянет тот, кто поставил больше потоков в свойствах закачки.Это по-твоему честно?


"Честно-ли делит сквид канал?"
Отправлено ipmanyak , 22-Янв-04 07:48 
>>проверяли delay pool в сквиде - всё честно делает.
>Прочти нормально задачу -нужно динамическое деление, т.е. есть у тя сетка, есть
>канал 256 к/бит допустим, ты поставил ограничение 5 килобайт в сквиде,
>и если канал пустует -пользователь больше своих 5-ти не получит,хотя канал
>не загружен, а если загружен, то больше тянет тот, кто поставил
>больше потоков в свойствах закачки.Это по-твоему честно?
на закачку (по расширениям файлов ) ставлю низшую скорость  - 1кб/сек  - пусть себе тянут , на серфинг ставлю нужную и всё получается честно .


"Честно-ли делит сквид канал?"
Отправлено Алексей , 22-Янв-04 12:18 
>на закачку (по расширениям файлов ) ставлю низшую скорость  - 1кб/сек
> - пусть себе тянут , на серфинг ставлю нужную и
>всё получается честно .
Это выход? да это называется сделал так, чтоб перетягивать нечего было! если я так сделаю меня на следующий день весь университет на виселицу поведёт! :-) у меня стоит ограничение по типам файлов, но стоит 5 килобайт на все и 3 кила на всю мультимедию. А что ты скажешь на счет динамического распределения канала?

"Честно-ли делит сквид канал?"
Отправлено Alex , 22-Янв-04 13:00 
У меня практически та же ситуация. Тоже 256к, тоже универ. Ну не умеет сквид распределять канал динамически. Если бы пулы можно было включать последовательно, тогда ещё можно было бы подобие динамического распределения сэмулировать. Эта проблема у меня уже не один год существует. На данный момент оптимальной признана такая конфигурация: каждому ведро в 92кБ (это у меня по статистике средний размер одной странички с поторохами), и ограничение от 2 до 4кБ/с. Для учебных классов отдельный пул с общим лимитом. Запрет аудио, видео и порно в рабочее время :) Жесточайшее вырезание рекламы и ограничение закачек одним потоком на клиента. Если пулы зажимать сильнее, то канал в среднем недогружен. До оптимального далеко, но в целом удовлетворительно. Сам бы очень хотел появления динамического распределения канала в сквиде. Но нет его пока :(

"Честно-ли делит сквид канал?"
Отправлено Алексей , 22-Янв-04 16:55 
Спасибо за солидарность :-) будем ждать когда-же к сквиду прикрутят эту фичу (динамическое распределение). А как ограничить количество потоков каджому клиенту?



"Честно-ли делит сквид канал?"
Отправлено Alex , 23-Янв-04 12:30 
> А как ограничить количество потоков каджому клиенту?

Смотри описание MAXCONN.

acl 1conn maxconn 1
acl download urlpath_regex -i \.exe$ \.zip$ \.rar$ и т.д.
http_access deny 1conn localnet download


"Честно-ли делит сквид канал?"
Отправлено Алексей , 23-Янв-04 17:02 
>> А как ограничить количество потоков каджому клиенту?
>
>Смотри описание MAXCONN.
>
>acl 1conn maxconn 1
>acl download urlpath_regex -i \.exe$ \.zip$ \.rar$ и т.д.
>http_access deny 1conn localnet download
Спасибки, я знал про maxconn, но нетак немножко им пользовался:
http_access deny 1conn localnet -и получалось что я ставил количество соединений от всей подсети :-))) Общем в итоге я сейчас настроил такую извращённую систему: на HTTP протокол весит ESPS виндовый(пускаю через wine :-))) ), а на ftp -прозрачное настроил в связке iptables->FROX->squid.
В итоге динамическое деление HTTP канала,а для FTP отрезал 128 kbit(у меня 512 а не 256, то я просто к примеру писал) в сквиде и пускай себе перетягивают (естественно ещё там и сессии и скорость порезанны по твоим советам и моим acl-ам). Ждём общем когда сквиду такую фичу прикрутят,было-бы вообще супер!

"Честно-ли делит сквид канал?"
Отправлено Алексей , 29-Янв-04 13:08 
>> А как ограничить количество потоков каджому клиенту?
>
>Смотри описание MAXCONN.
>
>acl 1conn maxconn 1
>acl download urlpath_regex -i \.exe$ \.zip$ \.rar$ и т.д.
>http_access deny 1conn localnet download
Проверил, всё равно получается не количество потоков одному клиенту, а количество потоков для всей localnet !!!

"Честно-ли делит сквид канал?"
Отправлено Алексей , 29-Янв-04 13:50 
>> А как ограничить количество потоков каджому клиенту?
>
>Смотри описание MAXCONN.
>
>acl 1conn maxconn 1
>acl download urlpath_regex -i \.exe$ \.zip$ \.rar$ и т.д.
>http_access deny 1conn localnet download
Методом тыка достигнут результат :-))
http_access deny download localnet 1conn -просто местами надо поменять было!

"Честно-ли делит сквид канал?"
Отправлено baka , 22-Янв-04 13:02 
>я так сделаю меня на следующий день весь университет на виселицу
>поведёт! :-) у меня стоит ограничение по типам файлов, но стоит
>5 килобайт на все и 3 кила на всю мультимедию. А
>что ты скажешь на счет динамического распределения канала?

Ну и на кой ляд тебе это "динамическое распределение"? Обычному пользователю 5К для просмотра страничек хватит, а большое файло резать и правда надо без всякой динамики.
У меня сквидом поставлено - 150Кб на всех, но при этом на каждый хост файлы больше определенного размера - не выше 8К, плюс еще более жесткие правила для порнокачальщиков (можешь посмотреть в соседней темке). Подумаешь, если кто-то один в сетке сидит - зачем это ему всю полосу отдавать?
Да, и насчет проблемы нескольких потоков в качалках неверно - сквид режет трафик по тем правилам, что ты создал. Если в акле прописаны ИП, то и будет не больше № Кб на хост


"Честно-ли делит сквид канал?"
Отправлено Lamer , 24-Янв-04 13:47 
Squid отлично держит полосу  - ту которую я в delay pools  назначил. Я это вижу в реальном времени через програмку мониторинга активности squid (работает под виндоус, squid под FreeBSD).

Картина такова независимо от числа потоков закачки файла (например юзер качает temp.exe в 5 потоков - ограничение на закачку exe выставленно 100 byt/s :)))
скоростя распределяются так

temp.exe 95 byt/s
temp.exe 1 byt/s
temp.exe 1 byt/s                  итого не больше 100 byt/s !!!
temp.exe 1 byt/s
temp.exe 1 byt/s


"Честно-ли делит сквид канал?"
Отправлено Алексей , 27-Янв-04 11:26 
>Squid отлично держит полосу  - ту которую я в delay pools
> назначил. Я это вижу в реальном времени через програмку мониторинга
>активности squid (работает под виндоус, squid под FreeBSD).
>
>Картина такова независимо от числа потоков закачки файла (например юзер качает temp.exe
>в 5 потоков - ограничение на закачку exe выставленно 100 byt/s
>:)))
>скоростя распределяются так
>
>temp.exe 95 byt/s
>temp.exe 1 byt/s
>temp.exe 1 byt/s          
>        итого не больше
>100 byt/s !!!
>temp.exe 1 byt/s
>temp.exe 1 byt/s
Ты прав, но я не говорил того,что сквид отдаёт больше,чем выставленно ограничение в конфиге, я просто расчитывал на то что многие сталкивались с такими проблемами и не стал подробно обьяснять, но вижу прийдётся.
   Допустим: у нас канал 512 килобит и в конфиге сквида стоит ограничение 5 килобайт=40килобит на человека.Так-же у нас большая потребительская аудитория с  
сильно непостоянными нагрузками на канал(утром и вечером сидят 3 колеки, а в обед с среднем около 50 чел.) При таком раскладе сквид честно поделит эти 512 килобит по 5 килобайт каждому на 12,8 человек. Наступает обед, кол-во человек подскакивает до 50-ти, тогда на каждого человека приходится по 1,28 килобайта.В это время Маша включает закачку одним потоком(что эквивалентно лазенью одним окном в инете iexplorer-ом) и ей отдаётся соответственно эти 1,28 килобайта, а злобный Петя включает закачку 10-ю потоками(flashget,reget) и его скорость приближена к пределу выстановленному в конфиге, т.е. стремится к 5-ти килобайтам. как видно из примера ни маша ни даже петя не нарушили сквидового ограничения, но если представить что из этих 50-ти человек половина таких как Петя а вторая половина таких как Маша, то получается что Пети буквально перетягивают у Маш канал и Маши уже даже не получают свои законные 1,28 килобайта, их скорость просто становится ничтожна. А при динамическом распределении прокся сама определяет количество клиентов и делит между ними канал именно поровну. вот такая история. :-)

"Честно-ли делит сквид канал?"
Отправлено Lamer , 29-Янв-04 19:06 
за скорость закачки всяких там файлов аля EXE у меня отвечает пул второго класса
delay_class      4 2
delay_access     4 allow MULTIMEDIA_ext
delay_access     4 allow ADULT_REG_EXP
delay_access     4 allow ADULT_SITES_dom
delay_access     4 allow ADULT_SITES_dst
delay_access     4 allow BAD_DOMAINS
delay_access     4 deny all
delay_parameters 4 -1/-1 100/100

в итоге поц который поставил хоть на сто сессий закачку будет иметь скорость закачки каждой сессии по 1 байт\с. Да это плохо для самого прокси но не смертельно (вообще по рогам надо давать за это).

Твой вопрос - о динамическом дележе канала - сквид такого не умеет - но действительно а зачем например 3-ем пользователям отдавать весь канал ?

Если интересует как ограничить скоростя статически невзирая не кол-во закачек - можно решить . Надо использовать отдельные Delay pools для закачек и работы !
Как динамически поделить ? Не знаю.

Да, еще пулы можно настраивать на время - в час пик будет один дележ , в другое время иначе - короче есть простор для действий :)


"Честно-ли делит сквид канал?"
Отправлено Алексей , 30-Янв-04 10:55 
>за скорость закачки всяких там файлов аля EXE у меня отвечает пул
>второго класса
>delay_class      4 2
>delay_access     4 allow MULTIMEDIA_ext
>delay_access     4 allow ADULT_REG_EXP
>delay_access     4 allow ADULT_SITES_dom
>delay_access     4 allow ADULT_SITES_dst
>delay_access     4 allow BAD_DOMAINS
>delay_access     4 deny all
>delay_parameters 4 -1/-1 100/100
>
>в итоге поц который поставил хоть на сто сессий закачку будет иметь
>скорость закачки каждой сессии по 1 байт\с. Да это плохо для
>самого прокси но не смертельно (вообще по рогам надо давать за
>это).
>
>Твой вопрос - о динамическом дележе канала - сквид такого не умеет
>- но действительно а зачем например 3-ем пользователям отдавать весь канал
>?
>
>Если интересует как ограничить скоростя статически невзирая не кол-во закачек - можно
>решить . Надо использовать отдельные Delay pools для закачек и работы
>!
>Как динамически поделить ? Не знаю.
>
>Да, еще пулы можно настраивать на время - в час пик будет
>один дележ , в другое время иначе - короче есть простор
>для действий :)
Знаешь, это конечно круто что ты так порезал всем закачки, но будет тебе известно что инет существует не только для того, чтоб просто на страницы пялиться!Динамическое деление существует не для того чтоб отдать 3-м пользователям весь канал! я специально для тебя подробно всё написал,даже пример с Машей и Петей привёл! :-),если не понял, прочти ещё раз,повторю кратко -динамическое распределение нужно для деление поровну нагрузки канала в момент пиков! Я конечно знаю про временные ACL-и, но поэксперементируя с ними ты поймёшь, что если клиент установил сессию(закачку врубил какую-нибудь) с прокси-сервером до того, как наступит установленное в acl-е время, то пока он её не разорвёт сам и не установит соединение поновой, на него никакие изменения не подействуют! в итоге получится я "Машам" только хуже сделаю.
А насчет деления по пулам, оно-то у меня итак неплохо настроено уже давно,но проблему с "Машами и Петями" это совсем не решает!

"Честно-ли делит сквид канал?"
Отправлено Alex , 30-Янв-04 12:13 
>Я конечно знаю про временные ACL-и, но поэксперементируя с ними
>ты поймёшь, что если клиент установил сессию(закачку врубил какую-нибудь) с прокси-сервером
>до того, как наступит установленное в acl-е время, то пока он
>её не разорвёт сам и не установит соединение поновой, на него
>никакие изменения не подействуют! в итоге получится я "Машам" только хуже
>сделаю.
>А насчет деления по пулам, оно-то у меня итак неплохо настроено уже
>давно,но проблему с "Машами и Петями" это совсем не решает!

Выполнение по крону команды squid -k reconfigure после наступления прописанных в acl моментов времени загонит уже идущую закачку в новые рамки. Без проблем.


"Честно-ли делит сквид канал?"
Отправлено Алексей , 02-Фев-04 09:51 
>Выполнение по крону команды squid -k reconfigure после наступления прописанных в acl
>моментов времени загонит уже идущую закачку в новые рамки. Без проблем.
>
А ты сам пробовал? да я вообще боюсь этих двух команд! (squid -k reconfigure и killall -1 squid, что кстати аналогично) после их выполнения пользователь установивший сессию с прокси сервером ранее вообще теряет все ограничения и тянет БЕЗЛИМИТНО!!!!

"Честно-ли делит сквид канал?"
Отправлено Alex , 02-Фев-04 12:29 
>А ты сам пробовал? да я вообще боюсь этих двух команд! (squid
>-k reconfigure и killall -1 squid, что кстати аналогично) после их
>выполнения пользователь установивший сессию с прокси сервером ранее вообще теряет все
>ограничения и тянет БЕЗЛИМИТНО!!!!

Если бы не пробовал - не предлагал бы. У меня оно так и работает. Вечером снимаются ограничения на типы файлов, количество потоков и добавляется скорость. Утром опять включаются все ограничения. Всё отрабатывает.


"Честно-ли делит сквид канал?"
Отправлено Алексей , 03-Фев-04 10:35 
>>А ты сам пробовал? да я вообще боюсь этих двух команд! (squid
>>-k reconfigure и killall -1 squid, что кстати аналогично) после их
>>выполнения пользователь установивший сессию с прокси сервером ранее вообще теряет все
>>ограничения и тянет БЕЗЛИМИТНО!!!!
>
>Если бы не пробовал - не предлагал бы. У меня оно так
>и работает. Вечером снимаются ограничения на типы файлов, количество потоков и
>добавляется скорость. Утром опять включаются все ограничения. Всё отрабатывает.
Могу только сказать что твои пользователи самые счасливые люди планеты.Поверь, безобоснованно трепать языком я не стану,скорость вечером у тебя не добавляется, а становится неограниченной(для тех, кто установил сессию до squid -k reconfigure).Проверь сам,выложи на каком-нить локальном серваке файл и тяни его каким-нить компом через проксяк.Не выключая этой закачки сделай squid -k reconfigure, и посмотри как изменится скорость! :-)))


"Честно-ли делит сквид канал?"
Отправлено Alex , 06-Фев-04 12:10 
> Могу только сказать что твои пользователи самые счасливые люди планеты.Поверь, безобоснованно
>трепать языком я не стану,скорость вечером у тебя не добавляется, а
>становится неограниченной(для тех, кто установил сессию до squid -k reconfigure).Проверь сам,выложи
>на каком-нить локальном серваке файл и тяни его каким-нить компом через
>проксяк.Не выключая этой закачки сделай squid -k reconfigure, и посмотри как
>изменится скорость! :-)))

Я тоже просто так трепаться не стану :)
Когда я эти ограничения ставил, я тестировал по всякому. Всё срабатывает. И нагляднее чем графики с роутера никто это не покажет. Может у тебя Squid криво собран? У меня 2.5st1


"Честно-ли делит сквид канал?"
Отправлено Алексей , 02-Фев-04 10:36 
Кстати, насчет maxconn, два часа упорного ковыряния этой фичи показали следующую недоработку:допустим есть

acl all src 0.0.0.0/0.0.0.0
acl localnet src 192.168.0.0/255.255.0.0
acl multimedia urlpath_regex -i \.smk$ \.mp3$ \.avi$ .....
acl 2conn maxconn 2
http_access deny multimedia 2conn
http_access allow localnet
http_access deny all

Получается, что если ничего вообще не качаешь и начинаешь качать из "acl multimedia", то законно можешь пустить 2 mp3-хи по одному потоку каждую, и ещё качать любые файлы, не входящие в "acl multimedia" без ограничений потоков соответственно, т.е. как и должно быть.
НО!!! если сначала начинаешь качать одним потоком файл, не входящий в "acl multimedia", то уже для mp3-х остаётся один поток, а если качаешь двумя потоками файл, не входящий в "acl multimedia", то при попытке скачать mp3 вообще выдаёт Access Denied !!!
   Короче любые сессии, установленные с прокси-сервером(даже аська тоже считается) исчерпывают лимит потоков,установленный в maxconn.
Вот такая история....


"Честно-ли делит сквид канал?"
Отправлено Nick , 23-Фев-04 13:06 
>Squid отлично держит полосу  - ту которую я в delay pools
> назначил. Я это вижу в реальном времени через програмку мониторинга
>активности squid (работает под виндоус, squid под FreeBSD).


А чего это за програмка такая ?


"Честно-ли делит сквид канал?"
Отправлено Denis , 24-Окт-04 21:01 
>Squid отлично держит полосу  - ту которую я в delay pools
> назначил. Я это вижу в реальном времени через програмку мониторинга
>активности squid (работает под виндоус, squid под FreeBSD).
>
а что за программа? где взять?

"Честно-ли делит сквид канал?"
Отправлено Yura_hn , 02-Фев-04 11:22 
>Вот уже давно хотел сделать такую штуку, чтоб канал динамически делился между
>активными пользователями по ровну,независимо от количества потоков закачки каждого клиента.Прокопался две
>недели с QoS -вещь хорошая, но как выяснилось не в том,
>что мне надо.В итоге я натыкаюсь на Extra System Proxy Server(ESPS),в
>котором просто гордятся наличием такой фичи! http://www.esproxy.org.ua/band.htm .Вот только минус -он
>под винду, но я всё равно поставил ради интереса.Выставил в его
>конфиге ограничение 40 кил,проверяю: качаю фаил с 10-ю потоками -качается со
>скоростью 40, только присоединяюсь вторым компом -сразу у первого скорость падает
>до 20-ти и второй начинает тянуть со скор. 20 кил, хотя
>второму я специально поставил качать 1-им потоком! Мне интерессно, неуже-ли разработчики
>сквида настолько слепы и не видят реально нужных вещей, которые следует
>включить в столь мощный прокси-сервер?


У меня BSDi 4.2 так там похожая фича встроеная в ipfw, называется promise.
Это фактически гарантированая полоса пропускания. Средствами сквида это будет накладно, геморно и непрактично, нужно такое дело вводить в ip фильтр, так как это накладывает ограничения на виды трафика.


"Честно-ли делит сквид канал?"
Отправлено Алексей , 03-Фев-04 10:43 
>У меня BSDi 4.2 так там похожая фича встроеная в ipfw, называется
>promise.
>Это фактически гарантированая полоса пропускания. Средствами сквида это будет накладно, геморно и
>непрактично, нужно такое дело вводить в ip фильтр, так как это
>накладывает ограничения на виды трафика.
Блин,хоть одно дельное предложение! У МЕНЯ АЖ НАДЕЖДА ПОЯВИЛАСЬ!
Сейчас-же ставлю FreeBSD и начинаю ковырять, что получится надо в итоге будет скомпоновать и доку написать для решения задачи динамического деления канала, а то нехочется чтоб другие столько сношались с этим сколько я!


"Честно-ли делит сквид канал?"
Отправлено Алексей , 03-Фев-04 12:40 
>У меня BSDi 4.2 так там похожая фича встроеная в ipfw, называется
>promise.
>Это фактически гарантированая полоса пропускания. Средствами сквида это будет накладно, геморно и
>непрактично, нужно такое дело вводить в ip фильтр, так как это
>накладывает ограничения на виды трафика.
  Блин, чего-то поковырялся и совсем ничего не нашел.неуже-ли эта фича только в BSDi ? если нет, то можешь подсказать где ходь какие нибудь доки достать про эту фичу, или где BSDi взять?

"Честно-ли делит сквид канал?"
Отправлено Cyclone , 05-Фев-04 15:46 
>>У меня BSDi 4.2 так там похожая фича встроеная в ipfw, называется
>>promise.
>>Это фактически гарантированая полоса пропускания. Средствами сквида это будет накладно, геморно и
>>непрактично, нужно такое дело вводить в ip фильтр, так как это
>>накладывает ограничения на виды трафика.
>  Блин, чего-то поковырялся и совсем ничего не нашел.неуже-ли эта фича
>только в BSDi ? если нет, то можешь подсказать где ходь
>какие нибудь доки достать про эту фичу, или где BSDi взять?
>

Насколько я знаю это умеет делать PF+ALTQ


"Ну прямо то, о чем я думал!"
Отправлено Ясен Пень , 06-Фев-04 18:19 
Только я еще круче придумал алгоритм, чем у них описан в ESPS, с общей свободной полосой - для того, чтобы новый пользователь сразу получил отклик, а не ждал, пока демон ему выделит полосу, а ранее заказанный другими пользователями трафик прокачается (или они его тупо выбрасывают при уменьшении полосы?).
Вообще-то я в этом всём ламер, только начал изучать вопрос. Мне на первый взгляд тоже показалось, что QoS может помочь организовать что-то подобное.
Ну ладно, не буду тратить на него 2 недели, спасибо за предупреждение! :)
Не мог бы ты вкратце объяснить, почему QoS не подходит?

"Ага, и это есть :)"
Отправлено Ясен Пень , 06-Фев-04 20:26 
>Только я еще круче придумал алгоритм, чем у них описан в ESPS,
>с общей свободной полосой
Достигается командами
MAX INPUT RATE
MAX OUTPUT RATE
установленными в значение чуть меньше полной ширины канала

"Ну прямо то, о чем я думал!"
Отправлено Михаил , 08-Фев-04 09:30 
>Не мог бы ты вкратце объяснить, почему QoS не подходит?
потому что QoS - средство для обратной задачи - для приоритезации трафика, т.е. для обеспечения более высокого качества обслуживания по отношению к общей массе трафика. нечто вроде синих мигалок на дороге :)
кроме того, для нормальной работы QoS-у требуется чтобы его поддерживали передатчик и приемник пакета, а так же все промежуточные устройства (свичи).

"Ну прямо то, о чем я думал!"
Отправлено юКЕЙЯЕИ , 09-Фев-04 14:13 
>>Не мог бы ты вкратце объяснить, почему QoS не подходит?
>потому что QoS - средство для обратной задачи - для приоритезации трафика,
>т.е. для обеспечения более высокого качества обслуживания по отношению к общей
>массе трафика. нечто вроде синих мигалок на дороге :)
>кроме того, для нормальной работы QoS-у требуется чтобы его поддерживали передатчик и
>приемник пакета, а так же все промежуточные устройства (свичи).
Ты конечно прав, но не мы здесь говорим о практике а не о теориях предназначения. QoS средство деления и приоритезации для более больших задач(не таких как распределение между простыми юзерами) она отлично подходит для решения задачи распределения ADSL канала и других подобных "выделенок". То, что  у меня получилось с помощью QoS: много эксперементировать не стал, просто добавил корневую дисциплину(юзал я HTB), пару родительских классов и фильтр для переброса в класс нужного трафика, на один из классов повесил "qdisk" с "sfq perturb 10" -что если верить докам,работая подобно "рулетке" делит канал между пользователями определённого класса по ровну) В итоге получилось что-то подобное на то, чего мне хотелось: трафик действительно делится, но не между пользователями а меджу потоками, да и делится он так нестабильно, что flashget нарисовал мне необычайный горный пейзаж своим графиком с множеством скал и гиганских впадин ! :-))))

"Ну прямо то, о чем я думал!"
Отправлено Ясен Пень , 13-Фев-04 17:33 
>>кроме того, для нормальной работы QoS-у требуется чтобы его поддерживали передатчик и
>>приемник пакета, а так же все промежуточные устройства (свичи).
Постой, разве это не задача протокола IP - сообщить передающей стороне, что канал зажат, надо уменьшить окно, т.е. скорость передачи? Ну а уж IP-то все должны поддерживать, как же иначе?

> у меня получилось с помощью QoS: много эксперементировать не стал,
>просто добавил корневую дисциплину(юзал я HTB), пару родительских классов и фильтр
>для переброса в класс нужного трафика, на один из классов повесил
>"qdisk" с "sfq perturb 10" -что если верить докам,работая подобно "рулетке"
>делит канал между пользователями определённого класса по ровну) В итоге получилось
>что-то подобное на то, чего мне хотелось: трафик действительно делится, но
>не между пользователями а меджу потоками, да и делится он так
>нестабильно, что flashget нарисовал мне необычайный горный пейзаж своим графиком с
>множеством скал и гиганских впадин ! :-))))
Мда, печальный результат, я рассчитывал на большее :(
А как насчет CBQ? Он вроде бы может даже веса присваивать разные для разных юзеров, вот вполне успешные тесты на эту тему:
http://www.docum.org/stef.coene/qos/tests/cbq/splitting/weig...
Или проблема всё-таки в том, что это деление не по юзерам, а по соединениям? Ну я еще недостаточно вник во всё это, но фильтр u32 вроде позволяет по IP-адресам фильтровать. Извиняйте, если глупости говорю...



"Ну прямо то, о чем я думал!"
Отправлено Michael , 14-Фев-04 00:40 
>Постой, разве это не задача протокола IP - сообщить передающей стороне, что
>канал зажат, надо уменьшить окно, т.е. скорость передачи? Ну а уж
>IP-то все должны поддерживать, как же иначе?
в IP это называется TOS, а QOS работает на втором уровне, т.е. на уровне Ethernet-а. а про IP обычные свичи ничего не знают.

"Ну прямо то, о чем я думал!"
Отправлено Ясен Пень , 14-Фев-04 18:34 
>>Постой, разве это не задача протокола IP - сообщить передающей стороне, что
>>канал зажат, надо уменьшить окно, т.е. скорость передачи? Ну а уж
>>IP-то все должны поддерживать, как же иначе?
>в IP это называется TOS, а QOS работает на втором уровне, т.е.
>на уровне Ethernet-а. а про IP обычные свичи ничего не знают.
Если можно, чуть подробнее. Тот же delay pool Squid-а или ES Proxy как ограничивают скорость? Как-то иначе, чем QoS? Насколько я понимаю, все они просто перестают принимать новые пакеты? Передающая сторона не получает квитанций и реагирует на это, уменьшая скорость передачи - так? Конечно, лучше было бы, чтобы принимающая сторона отправляла IP-квитации на принятые IP-пакеты, заказывая уменьшение размера окна. В любом случае, я не понимаю, какое преимущество в деле ограничения скорости дают Squid или ES Proxy по сравнению с QoS.



"Поправка"
Отправлено Ясен Пень , 14-Фев-04 19:03 
>>>Постой, разве это не задача протокола IP - сообщить передающей стороне, что
>>>канал зажат, надо уменьшить окно, т.е. скорость передачи?
Как оказалось, это не задача протокола IP, а задача протокола TCP, причем все необходимые манипуляции с размером окна он проделывает автоматически, как только падает скорость извлечения данных из приемного буфера. Таким образом, всё, что требуется - это медленнее читать данные, и с этой задачей QoS может справиться не хуже чем ES Proxy. Что не так в моих рассуждениях?

"Кстати, о птичках"
Отправлено Ясен Пень , 16-Фев-04 18:09 
>просто добавил корневую дисциплину(юзал я HTB), пару родительских классов и фильтр
>для переброса в класс нужного трафика, на один из классов повесил
>"qdisk" с "sfq perturb 10" -что если верить докам,работая подобно "рулетке"
>делит канал между пользователями определённого класса по ровну) В итоге получилось
>что-то подобное на то, чего мне хотелось: трафик действительно делится, но
>не между пользователями а меджу потоками,
Правильно, потому что SFQ - бесклассовая дисциплина!
Для деления между пользователями ESFQ использовать надо было.

"Честно-ли делит сквид канал?"
Отправлено poige , 09-Фев-04 11:39 
это новый вид пупкинизма -- спрашивать в заголовке одно, а в письме -- другое?

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


"Честно-ли делит сквид канал?"
Отправлено Алексей , 09-Фев-04 14:44 
>это новый вид пупкинизма -- спрашивать в заголовке одно, а в письме
>-- другое?
Для такого как ты  -поясняю: в поле заголовок у меня написанна тема на которую я собираюсь пообщаться и которую я хочу обсудить с людьми. Даже человек среднего развития ума поймёт что здесь не критикой занимаются а обсуждают серьёзную проблему распределения канала. Вот теперь возьми каркулятор и вычисли свой уровень развития!

"Честно-ли делит сквид канал?"
Отправлено poige , 09-Фев-04 18:13 
>>это новый вид пупкинизма -- спрашивать в заголовке одно, а в письме
>>-- другое?

да, действительно, мог бы не спрашивать... ответ очевиден. :-)


"Честно-ли делит сквид канал?"
Отправлено ae , 13-Фев-04 23:56 
вот нашли на свою голову задачу

есть еще большая проблема - которая заключаеться в том - что проксик НЕЭКОНОМИТ траффик !!!
вот это проблема - так проблема

а насчет нарезки каналов
то ето решаеться qos-ом
прокси пускай проксит - а каналы раздовать должон qos

линуксовый qos - HTB это делает очень просто быстро и эффективно
+ ко всему можно делать хоть какие приоритизации/cir-ы

настройка - на каждого клиента правило - и фильтр
а фильтр - то что уходит на клиента с порта проксика
скриптик - генереший несколько десятков тысячь правил - делаеться за пару минут
в итоге - глядиш - и получиться на как на западе - система инет провайдинга - по каналам ;)


"Честно-ли делит сквид канал?"
Отправлено Ясен Пень , 14-Фев-04 19:06 
>линуксовый qos - HTB это делает очень просто быстро и эффективно
>+ ко всему можно делать хоть какие приоритизации/cir-ы
Вот-вот! А CBQ еще и веса позволяет присваивать! :)

"СТОП!!! СТОП!!! СТОП!!! СТОП!!!"
Отправлено Алексей , 16-Фев-04 16:33 
Люди, ну что за глупости, из исходной задачи мы пришли просто к нарезанию трафика по полосам!!!Да это и сквид,да вообще любой проксяк вам трафик нарежет по полосам легко !!!(если клиенты простые студенты университета и всякие сотрудники,то и QoS трогать не надо).
                                 ВОПРОС О ДИНАМИЧЕСКОМ ДЕЛЕНИИ КАНАЛА!!!!!
Средствами QoS мне показалось это не решить, за весь этот тред было только два весомых предложения для решения этой нелёгкой и нужной задачи, это BSDi+ipfw -я так и не нашел где достать BSDi,так понял бесплатно такое счастье не перепадёт, а доступность и UNIX я считаю должны быть всегда связанны.Второй весомый вариант это  PF+ALTQ, извеняюсь, но из-за большой напряги с работой ещё не опробовал, но как только так сразу. Всё остальное в треде делется на полезные советы по сквиду и просто воду! Динамическое деление нужно буквально всем структурам и организациям, имеющим интернет, просто ещё не все догнали что это им нужно (во как замутил :-)) ) Давайте всё-таки общими усилиями постараемся решить именно эту задачу.

"Так а я о чем? Об этом и толкую!"
Отправлено Ясен Пень , 16-Фев-04 17:41 
>          ВОПРОС
>О ДИНАМИЧЕСКОМ ДЕЛЕНИИ КАНАЛА!!!!!
>Средствами QoS мне показалось это не решить,
А мне показалось, что именно QoS и позволяет это решить!
Правда сам еще не пробовал, но прочитал статью на этом сайте:
http://www.webforum.ru/wbf.php?board=14197

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

Решение первое:
---------------------------------------
SFQ, Stochastic Fair Queuing
   Дисциплина обработки очереди SFQ пытается распределить поровну
   возможность передавать данные между произвольным количеством потоков.
...
ESFQ, Extended Stochastic Fair Queuing
   Концептуально, эта дисциплина обработки очереди ничем не отличается от
   SFQ, но дает больше возможностей по настройке очереди.
   ...
   Обычная дисциплина SFQ становится неэффективной, если пользователи
   работают с программами, поддерживающими несколько потоков. В этом
   случае SFQ не способен поровну разделить канал между пользователями.
   Однако доступ к дополнительным параметрам алгоритма, обеспечиваемый
   дисциплиной обработки очереди ESFQ позволяет решить описанную проблему
   использованием другого хэша, например, по исходному адресу.
---------------------------------------
Это решение позволяет делить поровну, но не позволяет делить с учетом весов, как ES Proxy.

Решение второе:
---------------------------------------
CBQ, Class-Based Queue
...
   rate
          Параметр ограничивает скорость передачи трафика для данной
          дисциплины.

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

isolated/sharing
          У класса, созданного с параметром isolated, нельзя занимать
          полосу пропускания. То есть другие классы, настроенные на заем
          доступной полосы пропускания никогда не смогут занять полосу
          этого класса, даже если она будет свободной.

          Наоборот, класс созданный с параметром sharing будет
          предоставлять свою свободную часть пропускающей способности
          другим классам.

bounded/borrow
          Эти два параметра определяют, может ли класс занимать
          пропускающую способность других классов. Параметр bounded
          запрещает, а borrow разрешает занимать свободную полосу
          пропускания классов, сконфигурированных с параметром sharing.
---------------------------------------
Итак, для деления канала поровну ставим
rate = макс. скорости
weight = rate/10
sharing
borrow
и получаем то, что надо: если два процесса имеют одинаковый вес, канал будет делиться между ними поровну.


"Пардон, неправильную ссылку на статью дал"
Отправлено Ясен Пень , 16-Фев-04 17:44 
Вот правильная: http://www.opennet.me/base/net/linux_traffic_qos.txt.html

"Еще поправка/дополнение"
Отправлено Ясен Пень , 16-Фев-04 17:48 
>и получаем то, что надо: если два процесса имеют одинаковый вес, канал
>будет делиться между ними поровну.
Не два процесса, а два класса. А классифицировать трафик можно по IP-адресу получателя.


"Еще поправка/дополнение"
Отправлено Алексей , 16-Фев-04 18:21 
>>и получаем то, что надо: если два процесса имеют одинаковый вес, канал
>>будет делиться между ними поровну.
>Не два процесса, а два класса. А классифицировать трафик можно по IP-адресу
>получателя.
УХТЫ!, блин, я как увидел что SFQ просто делит по потокам сразу
огорчился, да и везде блин пишут что типа HTB пришло на смену CQB,вот я и юзал HTB с SFQ, а про ESFQ неслыхал вообще, что-ж огромное спасибо, завтра-же займусь экспериментами и скажу в итоге каким из твоих способом лучше это решить, или мож чем дополню, а в итоге надо будет скриптяру сделать и выложить где-нить, чтоб молодые админы (самому 20 лет :-) ) не морочили голову себе -брали да юзали.Общем классно,завтра глобальные экперименты! и да наступит коммунизьм в интернет-канале :-)))))

"Ура! Ура! Ура! :)"
Отправлено Ясен Пень , 16-Фев-04 18:58 
>Общем классно,завтра глобальные экперименты! и да наступит коммунизьм в
>интернет-канале :-)))))
А знаешь, что такое взвешенный коммунизм? Это когда в CBQ веса разные :)

"Одним способом походу минус! :-((((("
Отправлено Алексей , 17-Фев-04 14:13 
С утра до сейчас ковырялся и чуть уже не бился лбом, перепробовал разные пакеты iproute2 ставить -НУ НЕ ПОНИМАЕТ утилита tc алгоритм esfq!!! она его вообще не знает, пиши хоть esfq, хоть абра-кадабра_sfq эффект одинаковый!!!
[root@portal iproute2]# tc qdisc add dev eth0 root esfq limit 64 depth 64 divisor 11 hash dst
Unknown qdisc "esfq", hence option "limit" is unparsable
[root@portal iproute2]# tc qdisc add dev eth0 root абра-кадабра_sfq limit 64 depth 64 divisor 11 hash dst
Unknown qdisc "абра-кадабра_sfq", hence option "limit" is unparsable
[root@portal iproute2]#

"Что ж, значит придется тебе скачать ESFQ патч и скомпилировать"
Отправлено Ясен Пень , 17-Фев-04 15:58 
Качать отсюда:
http://www.ssi.bg/~alex/esfq/

Вот еще нашел вспомогательный скрипт: http://digriz.org.uk/jdg-qos-script/
Автор о нем пишет: "I feel this approach opens up QoS to the masses"


"Что ж, значит придется тебе скачать ESFQ патч и скомпилирова..."
Отправлено Алексей , 18-Фев-04 14:42 
>Качать отсюда:
>http://www.ssi.bg/~alex/esfq/
>
>Вот еще нашел вспомогательный скрипт: http://digriz.org.uk/jdg-qos-script/
>Автор о нем пишет: "I feel this approach opens up QoS to
>the masses"
Общем собрать пакет iproute2-2.2.4-now-ss001007.tar.gz, который требуется для этого патча у меня так и не получилось(в ошибку падает хоть убейся), да и ядро там нужно 2.4.18 -я ради этого 2.4.24 убирать не собираюсь!(правда может к 2.4.24 тоже подойдёт тот патч,но всё равно iproute2 не компилится...)

"Что ж, значит придется тебе скачать ESFQ патч и скомпилирова..."
Отправлено ipmanyak , 18-Фев-04 14:59 
>>Качать отсюда:
>>http://www.ssi.bg/~alex/esfq/
>>
>>Вот еще нашел вспомогательный скрипт: http://digriz.org.uk/jdg-qos-script/
>>Автор о нем пишет: "I feel this approach opens up QoS to
>>the masses"
>Общем собрать пакет iproute2-2.2.4-now-ss001007.tar.gz, который требуется для этого патча у меня так
>и не получилось(в ошибку падает хоть убейся), да и ядро там
>нужно 2.4.18 -я ради этого 2.4.24 убирать не собираюсь!(правда может к
>2.4.24 тоже подойдёт тот патч,но всё равно iproute2 не компилится...)
попробуй скомпилить iproute2-2.4.7-now-ss020116-try.tar.gz    ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.4.7-now-ss020116-t...



"Почти получилось :-)"
Отправлено Алексей , 18-Фев-04 15:08 
gcc -D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g -I../include-glibc -I/usr/include/db3 -include ../include-glibc/glibc-bugs.h -I/usr/src/linux/include -I../include -DRESOLVE_HOSTNAMES   -c -o q_esfq.o q_esfq.c
q_esfq.c: In function `esfq_parse_opt':
q_esfq.c:45: structure has no member named `hash_kind'
q_esfq.c:45: `TCA_SFQ_HASH_CLASSIC' undeclared (first use in this function)
q_esfq.c:45: (Each undeclared identifier is reported only once
q_esfq.c:45: for each function it appears in.)
q_esfq.c:91: structure has no member named `hash_kind'
q_esfq.c:94: structure has no member named `hash_kind'
q_esfq.c:94: `TCA_SFQ_HASH_DST' undeclared (first use in this function)
q_esfq.c:97: structure has no member named `hash_kind'
q_esfq.c:97: `TCA_SFQ_HASH_SRC' undeclared (first use in this function)
q_esfq.c: In function `esfq_print_opt':
q_esfq.c:140: structure has no member named `hash_kind'
q_esfq.c:142: `TCA_SFQ_HASH_CLASSIC' undeclared (first use in this function)
q_esfq.c:145: `TCA_SFQ_HASH_DST' undeclared (first use in this function)
q_esfq.c:148: `TCA_SFQ_HASH_SRC' undeclared (first use in this function)
make[1]: *** [q_esfq.o] Ошибка 1
make[1]: Leaving directory `/10/1/iproute2/tc'
make: *** [all] Ошибка 2

Компилил с патчем для iproute2-2.2.4-now-ss001007.Как видно падает в ошибку как только esfq начинает собирать....


"Мдя... "
Отправлено Ясен Пень , 19-Фев-04 18:22 
А с CBQ что? Вроде штука старая, должна уже быть в ядре...

"Одним способом походу минус! :-((((("
Отправлено andyS1976 , 02-Июл-05 17:40 
а esfq патч поставил на iproute kernel ?

"Ну хоть какой-то результат!"
Отправлено Алексей , 24-Фев-04 12:13 
После достаточно долгого ковыряния я так и не победил ESFQ,может в будущем его включат в стандартную комплектацию, тогда будет рулез, а вот пока я написал вот такой скриптик, заранее приношу извинения за возможную неграмотность с точки зрения написания скриптов и возможные неточности, недочёты, дырки, и прочие ошибки и буду рад выслушать любую критику и поправки :-), но я как можно детально попытался обьяснить его работу для начинающих админов. Как показала практика 5-ти дней его работы -пока всё делается как и хотелось, общем пашет нормально.
http://www.adygnet.ru/scripts/QoS

"RE: Ну хоть какой-то результат!"
Отправлено Ясен Пень , 24-Фев-04 15:02 
>но я как можно детально попытался обьяснить его работу для начинающих
>админов.
Спасибо, что поделился и даже комментарии написал!

>Как показала практика 5-ти дней его работы -пока всё делается
>как и хотелось, общем пашет нормально.
То есть ты замерял трафик для двух равноправных юзеров, и канал честно делился пополам?
А cbq не пробовал? Просто я собираюсь cbq использовать, хочу разные веса разным группам пользователей назначить...
Использование sfq для распределения канала между приложениями одного клиента заметил - спасибо, тоже буду использовать.


"RE: Ну хоть какой-то результат!"
Отправлено Алексей , 25-Фев-04 12:20 
Да, я пробовал и на 2-ух и на 3-ёх и даже 4 клиента подсоединял, испытания этой системы целый день длились, у нас тут целые гонки даже устраивали: все соревновались кто быстрей тестовый фаил стянет :-) CBQ конечно-же тоже пробовал, даже у меня целый день стоял выбор между CBQ и HTB, но мне показалось что у HTB трафик поменьше прыгает, но больше они ничем не отличаются(не считая веса и ещё там какие-то тонкие настройки),но так как ты меня на нужную идею натолкнул, я не полинился написать вариант с CBQ.
http://www.adygnet.ru/scripts/QoS_CBQ
Тестировал я его не сильно долго, но вроде тоже пашет нормально.

"RE: Ну хоть какой-то результат!"
Отправлено Angell5 , 25-Фев-04 13:14 
Во FreeBSD есть http://www.riss-telecom.ru/~vitaly/bwman.html работает быстро и надежно ...

"RE: Ну хоть какой-то результат!"
Отправлено Алексей , 25-Фев-04 15:40 
>Во FreeBSD есть http://www.riss-telecom.ru/~vitaly/bwman.html работает быстро и надежно ...
Посмотрел, действительно, можно сделать и на этом, но столько фич, сколько нам даёт iproute2 там НЕТ!!!, возьми к примеру тот-же SFQ или легендарный ESFQ :-)


"Спасибо! :) "
Отправлено Ясен Пень , 25-Фев-04 16:05 
>Да, я пробовал и на 2-ух и на 3-ёх и даже 4
>клиента подсоединял, испытания этой системы целый день длились, у нас тут
>целые гонки даже устраивали: все соревновались кто быстрей тестовый фаил стянет
>:-) CBQ конечно-же тоже пробовал, даже у меня целый день стоял
>выбор между CBQ и HTB, но мне показалось что у HTB
>трафик поменьше прыгает, но больше они ничем не отличаются(не считая веса
>и ещё там какие-то тонкие настройки),но так как ты меня на
>нужную идею натолкнул, я не полинился написать вариант с CBQ.
>http://www.adygnet.ru/scripts/QoS_CBQ
>Тестировал я его не сильно долго, но вроде тоже пашет нормально.



"Спасибо, что не поленился! :) (-)"
Отправлено Ясен Пень , 25-Фев-04 16:06 
.

"HTB vs CBQ"
Отправлено Ясен Пень , 27-Фев-04 01:52 
>:-) CBQ конечно-же тоже пробовал, даже у меня целый день стоял
>выбор между CBQ и HTB, но мне показалось что у HTB
>трафик поменьше прыгает, но больше они ничем не отличаются(не считая веса
>и ещё там какие-то тонкие настройки)
Вот что я выяснил: HTB делит трафик пропорционально rate, так что фактически веса в нем тоже есть. А CBQ всё равно хорошо делит трафик только если weight пропорционален rate, так что в плане поддержки весов одно и то же получается. Про CBQ пишут, что в некоторых распространенных случаях оно неправильно работает (если реальная пропускная способность канала меньше, чем думает админ :)
В общем я тоже наверное HTB выберу.



"HTB vs CBQ"
Отправлено Алексей , 27-Фев-04 11:26 
>Вот что я выяснил: HTB делит трафик пропорционально rate, так что фактически
>веса в нем тоже есть. А CBQ всё равно хорошо делит
>трафик только если weight пропорционален rate, так что в плане поддержки
>весов одно и то же получается. Про CBQ пишут, что в
>некоторых распространенных случаях оно неправильно работает (если реальная пропускная способность канала
>меньше, чем думает админ :)
>В общем я тоже наверное HTB выберу.
Ясно, общем я сейчас статью пишу для решения этой задачи где детально опишу всё от настройки ядра и до создания скрипта, думаю эта технология многим поможет.