Constantin Posted July 7, 2012 Posted July 7, 2012 Заранее сорри модераторам, не совсем в тему данного раздела, но я тут постоянно сижу..... требуется скрипт который будет смотреть значениЯ PCQ Queues и относительно значения этих переменных и их суммы вписывать значения limim-at вычисленный по формуле..... как то так, кто может это написать задавайте вопросы я отвечу. Вставить ник Quote
fhntv_smart Posted July 7, 2012 Posted July 7, 2012 Т. е. У трафик клиентов идет в квайери трии. Там в колонке PCQ Queues мы видим количество очередей... т. е. количество клиентов. Вы хотите прописать limim-at чего? текущей ветки в дереве? А смысла, может Max-limit ? или в может в PCQ выставить Limit ? Вставить ник Quote
Constantin Posted July 7, 2012 Author Posted July 7, 2012 если бы у меня был бы один тариф/одна ветка в Queue Tree то проблемм бы не было а так как у мя их несколько то чтобы было динамическое распределение скорости во время максимальной загрузки мне нужно играть limit at параметром, чтобы всем была гарантированная полоса, внешний канал не резиновый и его не хватает в редкие моменты жизни Max Limit равен внешнему каналу, и его считать нет смысла, это величина относительно стабильна Вставить ник Quote
fhntv_smart Posted July 7, 2012 Posted July 7, 2012 А оно и так должно поровну делить между ветками, если у них одинаковый приоритет. Вы хотите менять limit at веток или листьев? Начните с: :foreach i in=[/queue tree find] do={ :local pcq-queues [/queue tree get number=[$i] pcq-queues] } А дальше думайте чего вам нужно. Вставить ник Quote
saaremaa Posted July 7, 2012 Posted July 7, 2012 (edited) Constantin Не совсем понимаю идею. У меня делается так: Есть дерево очередей отдельно на вход и выход. Есть скрипт на Python. Скрипт ходит в Zabbix за данными по % загрузке канала. В зависимости от % утилизации канала он меняет по SSH на Mikrotik`е значение Rate в pcq-очереди, позволяя тем самым увеличивать скорость абонентам до 3-х раз. Чтобы не было скачкообразных изменений я меняю скорости ступенчато пошагово. Выкладывать тут скрипт - честно немного стыдно, там в порядок надо приводить код :) Если интересно пишите в личку. Edited July 7, 2012 by saaremaa Вставить ник Quote
fhntv_smart Posted July 7, 2012 Posted July 7, 2012 saaremaa Такой подход немножко бессмысленный. Предположим ночью проснулся один чел, и решил скачать нуху. Он запустить закачку, занял весь канал. Скрипт смотрит, канал занят. Лезет и ступенчато скорость... нужно как раз привязываться к количеству подключенных клиентов. Только я думаю, имеет смысл менять Rate в pcq-очереди. Простейши вариант будет таким :local pcq-queues [/queue tree get name="client1" pcq-queues] (Получили количество очередей в ветке client1) queue type set client1 PCQ-rate=10M/pcq-queues Ну, или типа того. Берете любой скрипт, смотрите конструкции языка и переделываете. Если есть вопросы по конструкциям - задавайте, попытаемся решить. Вставить ник Quote
saaremaa Posted July 7, 2012 Posted July 7, 2012 (edited) Такой подход немножко бессмысленный.Предположим ночью проснулся один чел, и решил скачать нуху. Он запустить закачку, занял весь канал. Скрипт смотрит, канал занят. Лезет и ступенчато скорость... Отчасти да. Занять весь канал он один не сможет. Например у меня канал в 50 мбит/с Есть пачка клиентов с ТП - 1 Мбит/с попадающих в адресный лист pcq-down-1024 и это ограничивается в /queue type add kind=pcq name=pcq-down-1024 pcq-burst-rate=0 pcq-burst-threshold=0 \ pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 \ pcq-dst-address6-mask=128 pcq-limit=20 pcq-rate=1024k \ Каждый получает 1Мбит/с. Скрипт смотрит на загрузку и увеличивает им pcq-rate до 3096k Допустим кто-то захотел скачать нуху - скрипт смотрит загрузку маг.канала. Если она превысила например какое-то % значение то скорость снижается для этого адресного листа, как следствие для всех клиентов в этой группе не ниже скорости по тарифу. А может и не снизиться так как этот абонент своей нагрузкой в 3М не нагрузил канал так чтобы скрипт отработал на снижение. Я не понимаю зачем использовать pcq-queues - если там постоянно у меня находятся клиенты которые даже не занимают канал. :( Возможно я не прав, не буду спорить. Очереди сделаны по этой инструкции - https://www.dropbox.com/sh/ex3gz05b09y9kxw/YS7SHVRTHo Edited July 7, 2012 by saaremaa Вставить ник Quote
Saab95 Posted July 7, 2012 Posted July 7, 2012 Во вы загоняетесь=) Берете любой биллинг, который умеет считать мегабайты, создаете в нем правило, которое по превышению определенного количества в час/день/месяц шлет на микротик команду переноса пользователя из основной группы в группу качальщиков, в которой стоит самый низкий приоритет. Вставить ник Quote
saaremaa Posted July 7, 2012 Posted July 7, 2012 (edited) Во вы загоняетесь=) Берете любой биллинг, который умеет считать мегабайты, создаете в нем правило, которое по превышению определенного количества в час/день/месяц шлет на микротик команду переноса пользователя из основной группы в группу качальщиков, в которой стоит самый низкий приоритет. Здравая идея. Писать почему мы от неё отказались очень долго. Edited July 7, 2012 by saaremaa Вставить ник Quote
Constantin Posted July 7, 2012 Author Posted July 7, 2012 (edited) нет нет ребята, я как смотрю с другой стороны наверное давайте пошагово: 1 тариф 1 мбит/сек 2 тариф 2 мбит/сек 3 тариф 3 мбит/сек общий канал 50 мбит на тарифе 1 работают 10 человек должны занимать 10 мбит/сек на тарифе 2 работают 5 человек должны занимать 10 мбит/сек на тарифе 3 работают 10 человек должны занимать 30 мбит/сек при таком раскладе все хорошо и красиво, теперь меняем ситуацию на тарифе 1 работают 15 человек должны занимать 15 мбит/сек на тарифе 2 работают 10 человек должны занимать 20 мбит/сек на тарифе 3 работают 15 человек должны занимать 45 мбит/сек в итоге уже требуется 80 мбит/сек, но есть всего 50 мбит/сек появляется некий коэффициент 50/80=0,625 и вот теперь можно посчитать limit at для каждой ветки на тарифе 1 работают 15 человек должны занимать 15 мбит/сек (15*0,625= 9.375 мбит/сек) на тарифе 2 работают 10 человек должны занимать 20 мбит/сек (20*0,625=12.500 мбит/сек) на тарифе 3 работают 15 человек должны занимать 45 мбит/сек (45*0,625=25.125 мбит/сек) сумма всех limit at = Max limit = 50 мбит/с но всем дается гарантированная полоса правда чуть меньше заявленной это выгодней и правильней чем высчитывать и прописывать всем Queue Types да и гибче получиться потому как скрипт то не будет крутиться постоянно а запускается с какой то переодичностью и качка подожмет на момент когда сосед просто отправить веб запрос и тд и тп З.Ы. ух пока писал опус тут еще добавилось Во вы загоняетесь=) Берете любой биллинг, который умеет считать мегабайты, создаете в нем правило, которое по превышению определенного количества в час/день/месяц шлет на микротик команду переноса пользователя из основной группы в группу качальщиков, в которой стоит самый низкий приоритет. хреновое решение, я как нормальный оператор связи хочу чтоб мои клиенты пусть и махровые качальщики видели ту скорость за которую платят 98% времени и без обид, я попросил то, что мне нужно и то что считаю правильным, можете помочь, я "за", нет ну чтож, поищем еще где алгоритм того что хочу представляю а вот воплотить в строках кода - ума не хватает. Edited July 7, 2012 by Constantin Вставить ник Quote
fhntv_smart Posted July 7, 2012 Posted July 7, 2012 на тарифе 1 работают 15 человек должны занимать 15 мбит/сек (15*0,625= 9.375 мбит/сек) на тарифе 2 работают 10 человек должны занимать 20 мбит/сек (20*0,625=12.500 мбит/сек) на тарифе 3 работают 15 человек должны занимать 45 мбит/сек (45*0,625=25.125 мбит/сек) Ну, дык, если у вас стоит лимит в верхнем родителе в дереве, оно должно само равномерно делить на всех скорость. Или не делит? или не равномерно? Хотя, хотя... Возможно, оно будет делить равномерно между этими тремя ветками... тут нужно проверить... Учитывает ли оно количество клиентов в ветке или нет... можете помочь С чего начать я написал. Что не ясно, спрашивайте... на тарифе 1 работают 15 человек должны занимать 15 мбит/сек (15*0,625= 9.375 мбит/сек) на тарифе 2 работают 10 человек должны занимать 20 мбит/сек (20*0,625=12.500 мбит/сек) на тарифе 3 работают 15 человек должны занимать 45 мбит/сек (45*0,625=25.125 мбит/сек) А если в текущий момент времени на тарифе 1 работает 1 человек, а на тарифе 2 и 3 работают по 20? Вставить ник Quote
Saab95 Posted July 7, 2012 Posted July 7, 2012 1 тариф 1 мбит/сек 2 тариф 2 мбит/сек 3 тариф 3 мбит/сек общий канал 50 мбит на тарифе 1 работают 10 человек должны занимать 10 мбит/сек на тарифе 2 работают 5 человек должны занимать 10 мбит/сек на тарифе 3 работают 10 человек должны занимать 30 мбит/сек Это не правильно. Должно быть так: общий канал 50 мбит на тарифе 1 работают 10 человек на тарифе 2 работают 5 человек на тарифе 3 работают 10 человек Все клиенты могут равномерно занимать канал. Через PCQ настраиваете равномерное распределение скоростей, ставите буфер побольше, что бы при перегрузе канала у клиентов росли пинги, но потери пакетов не было. Тех клиентов, которые жалуются на скорость, вручную будете загонять в высокоприоритетную группу. Вот и все дела. По вкусу можете настроить приоритезацию по портам, для простого случая все порты ниже 10000 имеют высокий приоритет, все выше 10000 низкий. Никогда не нужно делать ограничение скоростей по группам пользователей, в этом случае нельзя гибко управлять пропускной способностью канала. А если в текущий момент времени на тарифе 1 работает 1 человек, а на тарифе 2 и 3 работают по 20? Вот поэтому и не надо делить скорости по тарифам=) Вставить ник Quote
Constantin Posted July 7, 2012 Author Posted July 7, 2012 (edited) С чего начать я написал. Что не ясно, спрашивайте... блин, говорю же не владах я с кодом...... алгоритм пожалуйста с кодом никак. все данные нуна брать с МТ Edited July 7, 2012 by Constantin Вставить ник Quote
saaremaa Posted January 6, 2013 Posted January 6, 2013 up...что нового в настройкaх QOS может кто реализовал? Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.