Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    PPPoE user script (по типу F.A.P) Fair Access Policy

    PPPoE user script (по типу F.A.P) Fair Access Policy

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    PPPoE user script (по типу F.A.P) Fair Access Policy, RouterOS
     
    danz9370
    Guest
    #1
    0
    18.10.2006 22:41:00
    Вот перевод текста на русский язык:

    Вот ещё один скрипт для пользователей PPPoE. Этот скрипт снизит скорость загрузки пользователя на 1/4 от его назначенной скорости. Например, если пользователю назначена скорость 128000/256000, то 256000 делится на 64000, и это значение вычитается из скорости загрузки. Таким образом, 256000 - 64000 = 192000. Следовательно, новая скорость теперь 128000/192000.

    Вот как это работает: у пользователя PPPoE изначально была назначена пропускная способность 128000/512000, но менее чем за 30 минут онлайн он уже скачал более 10 МБ. В этом случае скорость будет снижена до 128000/384000.

    Тот же пользователь теперь находится в сети более 30 минут, но менее часа и скачал более 15 МБ. Скорость теперь будет снижена до 128000/288000.

    Опять же, тот же пользователь находится в сети более часа, но менее 5 часов и скачал более 50 МБ. Скорость теперь будет снижена до 128000/216000.

    Вы можете расширить код, чтобы снижать скорость ещё больше, в зависимости от вашей политики FAP. Надеюсь, вам понравится!

    :foreach i in=[/ppp active find] \
    do= { \

    :set sName [/interface get $i name]
    :set sTotalBytes [/queue simple get $sName total-bytes] ; \
    :set sUptime [/ppp active get $i uptime]

    :set mLimit [/queue simple get $sName max-limit]
    :set slashpos [:pic [:find $mLimit "/"]]
    :set mdSize [:pic $mLimit [:tonum(([:tonum($slashpos)] +1))] 30]
    :set mPart ([:pic $mLimit [:tonum(([:tonum($slashpos)] +1))] 30] / 4)
    :set muSize [:pic $mLimit 0 $slashpos]

    :if ($sUptime < 30m && $sTotalBytes >10240000) \

    do={ \
          :set NewSpeed ($muSize . "/" . ($mdSize - $mPart))                        
          :log info ("SPEED " . $sName . " exceeds 10 Mega Bytes and has been online for " . $sUptime . " reducing speed to " . $NewSpeed )
          /queue simple set $sName  limit-at=$NewSpeed max-limit=$NewSpeed
          :log info ("SPEED " . $sName . " Total Download:" . [:tostr($sTotalBytes)] . " and has been online for " . $sUptime )
        }


    :if ( $sUptime >30m && $sUptime < 1h && $sTotalBytes >15360000) \

    do={ \
          :set NewSpeed ($muSize . "/" . ($mdSize - $mPart))                        
          :log info ("SPEED " . $sName . " exceeds 15 Mega Bytes and has been online for " . $sUptime . " reducing speed to " . $NewSpeed )
          /queue simple set $sName  limit-at=$NewSpeed max-limit=$NewSpeed
          :log info ("SPEED " . $sName . " Total Download:" . [:tostr($sTotalBytes)] . " and has been online for " . $sUptime )
        }


    :if ( $sUptime >1h && $sUptime < 5h && $sTotalBytes > 51200000) \

    do={ \
          :set NewSpeed ($muSize . "/" . ($mdSize - $mPart))                        
          :log info ("SPEED " . $sName . " exceeds 50 Mega Bytes and has been online for " . $sUptime . " reducing speed to " . $NewSpeed )
          /queue simple set $sName  limit-at=$NewSpeed max-limit=$NewSpeed
           :log info ("SPEED " . $sName . " Total Download:" . [:tostr($sTotalBytes)] . " and has been online for " . $sUptime )
        }

    } any comments are welcome.
     
     
     
    danz9370
    Guest
    #2
    0
    25.10.2006 09:49:00
    Я использую Windows Radius сервер (Vircom), и да, скрипт может менять скорость пользователей, назначенную сервером Radius. Он на 100% работает с динамической простой очередью. Ты можешь улучшить скрипт, если хочешь, это твой базовый скрипт.
     
     
     
    ahmedramze
    Guest
    #3
    0
    19.10.2006 09:01:00
    Можешь помочь? Нужен скрипт, который будет делить полосу пропускания между пользователями. Например, у меня есть общая пропускная способность 128/256. Если заходит 1 пользователь (через PPPoE или HotSpot), его лимит будет 128/256. Если заходят 2 пользователя, полоса пропускания должна делиться поровну, то есть по 64/128 на каждого. Хочу, чтобы полоса пропускания распределялась по мере увеличения числа подключенных пользователей.

    Заранее спасибо!
     
     
     
    danz9370
    Guest
    #4
    0
    19.10.2006 11:51:00
    Можно использовать дерево очередей вместо этого.
     
     
     
    Ozelo
    Guest
    #5
    0
    24.10.2006 22:40:00
    Интересный скрипт! Хотел бы узнать, работает ли он с динамическими простыми очередями, которые добавляются при получении лимита скорости от RADIUS? То есть, сможет ли он получать какую-то информацию из RADIUS и сохранять её где-то или, возможно, изменит лимит скорости на динамической простой очереди или применяется только к статическим? Например: Представим, что пользователь, который подключается и получает лимит скорости от RADIUS, — это обычный пользователь и у него должна быть динамическая простая очередь. И я хочу, чтобы некоторые "особые" пользователи в моей pppoe ac могли получать или не получать какие-то другие параметры от RADIUS (возможно, другой лимит скорости, чем у обычных пользователей). Я бы хотел запускать скрипт каждый день в 22:00, чтобы он идентифицировал этих особых пользователей и удваивал их лимит скорости. А другой скрипт возвращал бы их к нормальному использованию в 06:00. Мне кажется, ваш скрипт для этого идеально подходит, правда? Хотел бы как можно скорее протестировать эту идею, если вы её уже не проверяли. Спасибо.
     
     
     
    ahmedramze
    Guest
    #6
    0
    25.10.2006 07:07:00
    Поясните, пожалуйста, подробнее.
     
     
     
    Ozelo
    Guest
    #7
    0
    25.10.2006 13:17:00
    Работает просто отлично! Здорово! Но есть одна вещь, которая бросилась мне в глаза, и я не понял, как это можно сделать лучше: когда лучше всего запускать скрипт. Как ты запускаешь свой? То есть, я могу запускать свой скрипт каждый день в 11 вечера, чтобы проверять, нет ли каких-то специальных пользователей и менять им скорость. Но если пользователь подключается после 11 вечера, то ему достается обычная скорость. Получается, мне нужно запускать скрипт каждую минуту после 11 вечера до 6 утра. Есть ли способ запускать скрипт при подключении пользователей, вместо того, чтобы запускать его по расписанию? Спасибо!
     
     
     
    danz9370
    Guest
    #8
    0
    26.10.2006 22:18:00
    Ну, я запускал свой скрипт каждые 10 минут, но в твоем случае, наверное, можно просто скопировать скрипт в новый и запускать его каждые 5 или 10 минут после 11 вечера. Другими словами, у тебя будет два одинаковых скрипта, но запускаемые в разное время и с разным интервалом.
     
     
     
    Ozelo
    Guest
    #9
    0
    30.10.2006 20:27:00
    Вот что я сделал, возможно, это можно было бы лучше спроектировать. Я настроил запланированный скрипт под названием "special_mode_control", чтобы он запускался каждую минуту, и вот код:
    :set sTime [:pic [/system clock get time] 0 2]
    :if (($sTime >= “22” && $sTime <= “23”) || ($sTime >= “00” && $sTime < “06”)) do={
    :if ([/system scheduler get continous_special disabled]) do={
    :log info “STARTING SPECIAL MODE”
    /system scheduler set continous_special disabled=no
    }
    }
    :if ($sTime >= “06” && $sTime <= “06”) do={
    :if ([/system scheduler get continous_special disabled] = false) do={
    :log info “STARTING NORMAL MODE”
    /system scheduler set continous_special disabled=yes
    /system script run do_normal
    }
    }
    Затем, с 10 вечера и до 06 утра, он включает другой запланированный скрипт каждую минуту. Вот код:
    :set mCnt 0
    :foreach i in=[/queue simple find] do= {
    :if ([/queue simple get $i max-limit] = “67000/67000”) do={
    /queue simple set $i max-limit=“127000/127000” limit-at=“127000/127000” burst-limit=512000/512000 burst-threshold=256000/256000 burst-time=8s/8s
    :set mCnt ($mCnt + 1)
    }
    :if ([/queue simple get $i max-limit] = “129000/129000”) do={
    /queue simple set $i max-limit=“255000/255000” limit-at=“255000/255000” burst-limit=1024000/1024000 burst-threshold=512000/512000 burst-time=8s/8s
    :set mCnt ($mCnt + 1)
    }
    }
    :if ($mCnt > 0) do={
    :log info (“do_special: " . $mCnt . " clients added to the special mode”)
    }
    Наконец, скрипт "special_mode_control" отключает запланированный скрипт "continous_special" в 6 утра и запускает скрипт "do_normal", возвращая всех клиентов из специального режима в нормальный до 10 вечера. Вот код для скрипта "do_normal":
    :set mCnt 0
    :foreach i in=[/queue simple find] do= {
    :if ([/queue simple get $i max-limit] = “127000/127000”) do={
    /queue simple set $i max-limit=“67000/67000” limit-at=“67000/67000” burst-limit=250000/250000 burst-threshold=128000/128000 burst-time=8s/8s
    :set mCnt ($mCnt + 1)
    }
    :if ([/queue simple get $i max-limit] = “255000/255000”) do={
    /queue simple set $i max-limit=“129000/129000” limit-at=“129000/129000” burst-limit=512000/512000 burst-threshold=256000/256000 burst-time=8s/8s
    :set mCnt ($mCnt + 1)
    }
    }
    :if ($mCnt > 0) do={
    :log info (“do_normal: " . $mCnt . " clients back to normal mode”)
    }
    Пока что, все работает как надо. Спасибо.
     
     
     
    ener
    Guest
    #10
    0
    21.05.2013 08:53:00
    Где мне нужно вводить скрипты? В MT или в моем Daloradius? Кстати, я использую dalo radius.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры