Jump to content

Recommended Posts

Posted

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

 

требуется скрипт который будет смотреть значениЯ PCQ Queues и относительно значения этих переменных и их суммы вписывать значения limim-at вычисленный по формуле.....

 

как то так, кто может это написать задавайте вопросы я отвечу.

Posted

Т. е. У трафик клиентов идет в квайери трии. Там в колонке PCQ Queues мы видим количество очередей... т. е. количество клиентов.

 

Вы хотите прописать limim-at чего? текущей ветки в дереве?

А смысла, может Max-limit ?

или в может в PCQ выставить Limit ?

Posted

если бы у меня был бы один тариф/одна ветка в Queue Tree то проблемм бы не было

а так как у мя их несколько то чтобы было динамическое распределение скорости во время максимальной загрузки

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

 

Max Limit равен внешнему каналу, и его считать нет смысла, это величина относительно стабильна

Posted

А оно и так должно поровну делить между ветками, если у них одинаковый приоритет.

Вы хотите менять limit at веток или листьев?

Начните с:

:foreach i in=[/queue tree find] do={

:local pcq-queues [/queue tree get number=[$i] pcq-queues]

}

 

А дальше думайте чего вам нужно.

Posted (edited)

Constantin Не совсем понимаю идею.

У меня делается так: Есть дерево очередей отдельно на вход и выход. Есть скрипт на Python. Скрипт ходит в Zabbix за данными по % загрузке канала. В зависимости от % утилизации канала он меняет по SSH на Mikrotik`е значение Rate в pcq-очереди, позволяя тем самым увеличивать скорость абонентам до 3-х раз. Чтобы не было скачкообразных изменений я меняю скорости ступенчато пошагово. Выкладывать тут скрипт - честно немного стыдно, там в порядок надо приводить код :) Если интересно пишите в личку.

Edited by saaremaa
Posted

saaremaa

Такой подход немножко бессмысленный.

Предположим ночью проснулся один чел, и решил скачать нуху.

Он запустить закачку, занял весь канал.

Скрипт смотрит, канал занят.

Лезет и ступенчато скорость...

 

нужно как раз привязываться к количеству подключенных клиентов.

Только я думаю, имеет смысл менять Rate в pcq-очереди.

 

 

Простейши вариант будет таким

 

:local pcq-queues [/queue tree get name="client1" pcq-queues]

(Получили количество очередей в ветке client1)

queue type set client1 PCQ-rate=10M/pcq-queues

 

Ну, или типа того.

 

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

 

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

Posted (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 by saaremaa
Posted

Во вы загоняетесь=) Берете любой биллинг, который умеет считать мегабайты, создаете в нем правило, которое по превышению определенного количества в час/день/месяц шлет на микротик команду переноса пользователя из основной группы в группу качальщиков, в которой стоит самый низкий приоритет.

Posted (edited)
Во вы загоняетесь=) Берете любой биллинг, который умеет считать мегабайты, создаете в нем правило, которое по превышению определенного количества в час/день/месяц шлет на микротик команду переноса пользователя из основной группы в группу качальщиков, в которой стоит самый низкий приоритет.

Здравая идея. Писать почему мы от неё отказались очень долго.

Edited by saaremaa
Posted (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 by Constantin
Posted

на тарифе 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?

Posted

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?

 

Вот поэтому и не надо делить скорости по тарифам=)

Posted (edited)

С чего начать я написал. Что не ясно, спрашивайте...

блин, говорю же не владах я с кодом......

алгоритм пожалуйста с кодом никак.

 

все данные нуна брать с МТ

Edited by Constantin
  • 5 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.