Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    QoS / Формирование трафика — ограничение на IP с помощью двойного PCQ

    QoS / Формирование трафика — ограничение на IP с помощью двойного PCQ

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    QoS / Формирование трафика — ограничение на IP с помощью двойного PCQ, RouterOS
     
    Cha0s
    Guest
    #1
    0
    13.08.2015 11:40:00
    Привет! Хочу настроить определённое ограничение трафика, но никак не могу понять, как это сделать. Мне нужно ограничить пропускную способность до 100 Мбит вверх/вниз на каждый IP (в локальной сети), независимо от самого IP (то есть без создания отдельных очередей для каждого IP). С PCQ это вроде просто. Но, например, если у IP 10.0.0.10 есть одно соединение, которое забирает все 100 Мбит, то остальные соединения на этом же IP будут тормозить. Я хочу получить 100 Мбит на каждый IP (независимо от портов источника и назначения), а потом с помощью PCQ распределять эти 100 Мбит равномерно между всеми новыми соединениями, чтобы всё работало более отзывчиво, даже при ограничении. При этом предпочёл бы не делать это напрямую по IP (то есть без разных правил и очередей для каждого IP). За роутером у меня несколько подсетей /24, и я хочу, чтобы по умолчанию все IP из этих подсетей были ограничены таким образом, а исключать только те, кому ограничение не нужно. Я пробовал сделать дерево очередей с родительской очередью типа PCQ, которая ограничивает скорость до 100 Мбит (pcq-rate) на основе источника и назначения IP в настройках PCQ. Потом добавлял дочернюю очередь с другим типом PCQ, которая распределяет полосу пропускания по каждому соединению с учётом IP и портов источника/назначения. К сожалению, это не работает — применяется только PCQ из дочерней очереди. Документация к этому очень плохая и устаревшая, поэтому я не понимаю, что делаю не так (точно что-то не так — больше похоже на метод проб и ошибок). Кто-нибудь знает, как реализовать такой Traffic Shaping/QoS?
     
     
     
    Cha0s
    Guest
    #2
    0
    07.11.2015 16:42:00
    Напомню..
     
     
     
    pe1chl
    Guest
    #3
    0
    07.11.2015 17:27:00
    Маршрутизатор, скорее всего, никак не распределяет трафик между соединениями с одного и того же IP, этим занимается конечная система. Когда в очереди применяется управление трафиком, маршрутизатор начинает сбрасывать пакеты, а что произойдет дальше, зависит от реализации TCP. Обычно, чтобы этого избежать, можно попробовать SFQ, но, насколько я понимаю, в вашей ситуации его использовать нельзя. Можете поэкспериментировать с этим, чтобы посмотреть, решит ли он проблему для одного устройства.
     
     
     
    Aveyer
    Guest
    #4
    0
    07.11.2015 18:32:00
    Если вы хотите, чтобы всем был доступен 100 мегабит и при этом общий лимит пропускной способности для всех на /24 не превышал 100 мегабит, то нужно изменить маску адреса в настройках PCQ с /32 на /24.
     
     
     
    Cha0s
    Guest
    #5
    0
    07.11.2015 18:48:00
    Я не хочу ограничивать всю подсеть целиком. Мне нужно установить лимит в 100 Мбит на каждый IP (/32), при этом не создавая отдельные очереди для каждого IP (за роутером стоят несколько /24, то есть тысячи IP-адресов). Это довольно просто сделать с помощью PCQ. Он применит лимит, используя одну очередь. Работает без нареканий. Проблема с таким подходом в том, что если, например, кто-то делает FTP-передачу на IP 1.1.1.1, PCQ применит лимит в 100 Мбит к этому IP. Но если в это время другой пользователь попытается подключиться к тому же IP, сделать это почти невозможно — из-за FTP-передачи очередь заполнена пакетами и происходят сбросы — это нормальное поведение при применении лимитов.

    То, что я хочу сделать — применить второй уровень PCQ для каждого IP. Чтобы я получал 100 Мбит на каждый /32 от первого PCQ, а затем уже на эти 100 Мбит был другой PCQ, который будет делить трафик по src-address-dst-address, фактически распределяя доступные 100 Мбит между пользователями, которые к этому IP обращаются. Так, когда идет FTP-передача, которая занимает все 100 Мбит, и другой пользователь пытается получить доступ к тому же IP, включается второй PCQ и делит трафик, позволяя второму пользователю подключиться. Да, FTP-сессия получит меньше трафика и больше сбросов, но остальные пользователи, обращающиеся к тому же серверу, не заметят лагов или потерь (благодаря особенностям работы PCQ).

    Проблема в том, что я не знаю, как реализовать этот двойной уровень PCQ (если можно так выразиться).

    P.S. Я понимаю, что если за роутером, например, 100 серверов, а uplink роутера — 1 Гбит, и все серверы пытаются получить по 100 Мбит, то канала все равно не хватит. С этим я согласен, это не вопрос. Мне просто нужно задать ограничение в 100 Мбит, но без замедления всех подключений к «ограниченному» IP, когда достигается максимум лимита.
     
     
     
    Cha0s
    Guest
    #6
    0
    07.11.2015 18:55:00
    Чтобы объяснить всю ситуацию, есть маршрутизатор, за которым находятся несколько серверов (колокация/выделенные). Все серверы подключены к гигабитным коммутаторам, но им разрешено иметь подключение к интернету только на скорости 100 Мбит. В локальной сети (в той же подсети/vlan) ограничений быть не должно, поэтому мы не можем вручную установить порты коммутатора на 100 Мбит. Хочется применять эти ограничения централизованно – через маршрутизатор. Серверы постоянно меняются, поэтому создавать очереди для каждого IP/сервера невозможно. Поэтому я пытаюсь реализовать это с помощью PCQ, чтобы свести количество очередей к минимуму (меньше ошибок, меньше нагрузки на процессор и так далее).
     
     
     
    pe1chl
    Guest
    #7
    0
    08.11.2015 11:28:00
    Полагаю, вы используете 1.1.1.1 здесь в качестве примерного IP-адреса одного из систем внутри вашей собственной сети — это так? Или 1.1.1.1 — это внешний сервер, к которому два ваших внутренних устройства одновременно делают FTP? Опять же, что происходит с отдельными TCP-сессиями к системе с ограниченной пропускной способностью, сильно зависит от операционной системы на этой системе и настроек сетевого стека. Как я уже отметил, вы можете попытаться повлиять на это поведение, используя SFQ.
     
     
     
    Cha0s
    Guest
    #8
    0
    08.11.2015 11:48:00
    1.1.1.1 — это просто пример IP-адреса в моей сети. Я с этим не согласен. Я точно знаю, что то, что я пытаюсь сделать с PCQ, работает и работает очень хорошо. Я точно уверен, что могу ограничить пропускную способность, при этом не замедляя каждое отдельное соединение. В этом и смысл PCQ. Я пользуюсь им уже очень давно. Пожалуйста, прочитайте документацию, чтобы понять, что такое PCQ и как он работает. Проблема, как я уже подробно описывал, — в том, как применить две разные политики PCQ к одним и тем же пакетам.

    Во-первых, ограничить каждый IP (/32) в целом до 100 Мбит. Во-вторых, применить PCQ (или SFQ, если уж на то пошло) к этим доступным 100 Мбит на IP, чтобы они равномерно распределялись между соединениями, направленными на этот IP. При этом «фишка» в том, что я хочу сделать это через несколько глобальных очередей/правил mangle, а не отдельные правила на каждый IP, так как это было бы очень сложно управлять (за роутером тысячи IP).

    Насколько я понимаю, когда ограничиваешь пропускную способность, то то, что происходит с соединениями на любой системе за «ограничителем», зависит от устройства, которое выставляет лимит, и того, как оно будет ставить в очередь или отбрасывать лишние пакеты. Не от того, как конечная система будет обрабатывать ограниченные по скорости пакеты. Если роутер сбрасывает лишние пакеты нового соединения, как, по-твоему, сетевой стек конечной системы будет обрабатывать пакеты, которые вообще не доходят?

    То, что ты говоришь, не имеет смысла для конкретного случая, который я описываю. Узким местом выступает роутер, который ставит лимит, а не конечная система. Значит, «правку» нужно делать на роутере, который ограничивает пропускную способность.

    Скорее всего, ты не понял моей проблемы. Пожалуйста, ещё раз внимательно прочитай мои сообщения. SFQ немного отличается от PCQ. Но я не понимаю, почему это вообще важно в моём вопросе. Это ничего не меняет. Можешь подробнее объяснить или привести реальный пример, который подходит под мой запрос?
     
     
     
    pe1chl
    Guest
    #9
    0
    08.11.2015 12:36:00
    То, что происходит дальше, зависит от того, как конечная система реагирует на потерю пакетов. Реагирует ли она эгоистично, пытаясь как можно быстрее переслать утерянные пакеты и тем самым оптимизировать скорость соединения в своих целях, или ведёт себя кооперативно, признавая, что соединение явно перегружено, и лучше уменьшить размер TCP-окна и/или скорость передачи до такого уровня, при котором теряется меньше пакетов. Если система выбирает кооперативный подход, она также даёт другим соединениям с этим же устройством более адекватное поведение. Более того, таким образом она может попытаться сбалансировать пропускную способность между несколькими сессиями TCP. Если же системы не хотят вести себя кооперативно, тогда такое поведение придётся навязывать извне. А если вы не готовы в это вкладываться, то окажетесь в затруднительном положении.
     
     
     
    Cha0s
    Guest
    #10
    0
    08.11.2015 13:44:00
    В любом случае, это не то, о чём я спрашиваю. У меня нет доступа к серверам и не хочется его иметь. Я хочу применить ту политику, о которой говорю, на маршрутизаторе, а не на серверах.
     
     
     
    pe1chl
    Guest
    #11
    0
    08.11.2015 17:20:00
    Удачи! Но пожалуйста, больше не публикуйте сообщения с “Bump!”.
     
     
     
    Cha0s
    Guest
    #12
    0
    08.11.2015 17:23:00
    Спасибо. Но, пожалуйста, больше не публикуй сообщения не по теме.
     
     
     
    nsafadi
    Guest
    #13
    0
    18.08.2016 08:18:00
    Привет, я понимаю твою ситуацию, и ты легко можешь решить её, добавив ещё одну плату Mikrotik за той, что у тебя сейчас. Первая, ближайшая к серверам, ограничит исходящий трафик серверов до 100 Мбит на IP, а второй роутер ограничит входящий трафик от любого адреса к каждому адресу в твоей сети. Оба лимитера должны быть настроены через PCQ. Если нужна помощь — дай знать.
     
     
     
    Cha0s
    Guest
    #14
    0
    18.08.2016 10:07:00
    Да… но это нереалистичное решение. Не говоря уже о стоимости двух дополнительных CCR, я ещё пожертвую двумя слотами в стойке только ради настройки QoS.
     
     
     
    Joni
    Guest
    #15
    0
    12.12.2019 12:54:00
    Bump =) Итак, то, что хочет Cha0s, примерно сводится к следующему: родительская очередь с такими настройками:

    /queue type  
    add kind=pcq name=pcq-parent-upload pcq-classifier=src-address pcq-dst-address-mask=32 pcq-src-address-mask=32  
    add kind=pcq name=pcq-parent-download pcq-classifier=dst-address pcq-dst-address-mask=32 pcq-src-address-mask=32  

    /queue simple  
    add max-limit=1000M/1000M name=Parent queue=pcq-upload-default/pcq-download-default target=192.168.1.0/24  

    То есть равномерно распределить, например, 1000 Мбит/с между 10 IP-адресами, получая по 100 Мбит/с на каждый.  

    И дочерняя очередь с настройками:  

    /queue type  
    add kind=pcq name=pcq-children-upload pcq-classifier=src-port pcq-dst-address-mask=32 pcq-src-address-mask=32  
    add kind=pcq name=pcq-children-download pcq-classifier=dst-port pcq-dst-address-mask=32 pcq-src-address-mask=32  

    /queue simple  
    add name=Children parent=Parent queue=pcq-children-upload/pcq-children-download  

    То есть теперь для каждого IP (родителя) вся выделенная пропускная способность (100 Мбит/с) распределяется поровну между разными портами (приложениями), которые использует этот IP. Таким образом, никакое отдельное приложение (порт) не сможет забить весь выделенный пользователю (IP) трафик. Например, если пользователь (IP) качает торрент на 100 Мбит/с, он не займет весь канал пользователя, а пропускная способность будет сбалансирована между всеми приложениями (портами) этого пользователя (IP).  

    Как и просили / описывали здесь, здесь, здесь, здесь.  

    Думаю, что использование pcq-classifier=src-address,src-port и pcq-classifier=dst-address,dst-port в одной строке должно работать, как описано здесь.  

    У меня есть ощущение, что применение pcq-classifier=src-address,dst-address,dst-port и pcq-classifier=src-address,dst-address,src-port даст более точные группы (подстримы PCQ). Например, загрузка через браузер с одного серверного IP (src-address) и порта 443 (src-port) на клиентский IP (dst-address) с несколькими портами. Но всё это зависит от того, находится ли сервер за роутером или снаружи (в этом случае классификаторы меняются местами).
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры