Делим Интернет или QoS на Mikrotik

Принцип делить все и вся существует столько, сколько миллиардов лет существует Вселенная. Чаще всего объекты делятся  в одинаковых пропорциях и неравный отхваченный кусок кем или чем-либо вызывает недовольство поделенных. Подобные ситуации часто возникают тогда, когда объект деления имеет весомое значение в системе. Перенесемся в 21 век. Наблюдая процессы в обществе и, в первую очередь в информационной сфере, можно заметить, что разумно делить все-таки научились. И, порой алгоритмы настолько неподдельны и устойчивы, что не оставляют никакой возможности взять больше или меньше дозволенного. Применив все вышеизложенное к передаче данных можно понять о чем идет речь.

Примеры

I. Итак, создадим правило, которое позволит получить клиентам локальной  или виртуальной сети максимальную скорость и минимальное время отклика при обращении к сайту www.x-drivers.ru , однако разделит скорость между всеми поровну.

1. Пометим все пакеты идущие от пользователей на адрес 66.148.73.54 и обратно. Для этого нужно создать 4 правила, два из которых пометят подключения в прямом и обратом направлении, а другие два пометят пакеты в этих подключениях. Необходимо обратить внимание, что очереди работают именно с пакетами,  а не помеченными подключениями. Зачастую это создает у новичков вопросы плана: "Я пишу все правильно, а оно не работает. Может это глюки?" Для таких шаманов ниже приведен пример, как нужно делать, чтобы ОНО работало.

/ip firewall mangle add chain=forward src-address=192.168.11.0/24 dst-address=66.148.73.54/32 action=mark-connection new-connection-mark=users-con-up

/ip firewall mangle add connection-mark=users-con-up action=mark-packet
new-packet-mark=users-up chain=forward
/ip firewall mangle add chain=forward src-address=66.148.73.54/32
   action=mark-connection new-connection-mark=users-con-down

/ip firewall mangle add connection-mark=users-con-down action=mark-packet
   new-packet-mark=users-down chain=forward
 


2. Создадим два типа PCQ очереди, подключения в одной из которых мы будем классифицировать по входящему, а другие по исходящему адресу.

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


3. Создадим очереди для входящего и исходящего трафика

/queue tree add name=Download parent=Local max-limit=10240000 burst-limit=200000 burst-time=10
/queue tree add parent=Download queue=pcq-download packet-mark=users-down
/queue tree add name=Upload parent=Public max-limit=160000 burst-limit=200000 burst-time=10
/queue tree add parent=Upload queue=pcq-upload packet-mark=users-up


Как видим, пара правил и такая сложная задача, как динамический шейпинг на определенные адреса с предоставлением пиковой скорости была реализована. На практике обычно приходится применять более сложные правила в сочетании друг с другом, однако для демонстрации возможностей этот очень хорошо подошел.

Практически в Queue Trees мы можем оперировать только ограничением скорости. Остальные параметры, такие как адрес источника, получателя, время суток, протокол, порты и т.д. указываются в разделе Mangle-файервола.

Подобным способом также можно сделать хороший пинг на определенные адреса, даже во время серьезной загрузки канала. Приведем пример таких правил для сервера www.cybernet.by.

Для этого нужно создать четыре правила в Firewall:

  • в первом пометим все подключения, у которых адрес получателя 195.222.70.250 именем cybernet-connection-up;
  • пакеты в подключениях cybernet-connection-up именем cybernet-packet-u;
  • в первом пометим все подключения у которых адрес источника 195.222.70.250 именем cybernet-connection-from;
  • пакеты в подключениях cybernet-connection-from именем cybernet-packet-from.

/ip firewall mangle add chain=prerouting dst-address=195.222.70.250 action=mark-connection new-connection-mark=cybernet-connection-up passthrough=yes

/ip firewall mangle add chain=forward connection-mark=cybernet-connection-up action=mark-packet new-packet-mark=cybernet-packet-up passthrough=yes

/ip firewall mangle add chain=prerouting src-address=195.222.70.250 action=mark-connection new-connection-mark=cybernet-connection-from passthrough=yes

/ip firewall mangle add chain=forward connection-mark=cybernet-connection-from action=mark-packet new-packet-mark=cybernet-packet-from passthrough=yes
 


Следующим шагом создадим два правила в Queue Trees: одно для входящего потока, другое для исходящего.

/queue tree add  name="queue1" parent=global-out packet-mark=cybernet-packet limit-at=0
     queue=default priority=1 max-limit=50000 burst-limit=0 burst-threshold=0
     burst-time=0s 

/queue tree add  name="queue2" parent=global-in packet-mark=cybernet-packet-from limit-at=0 queue=default priority=1 max-limit=50000 burst-limit=0 burst-threshold=0
     burst-time=0s


Вышеописанные действия позволят пакетам, приходящим и уходящим с адреса 195.222.70.250, попадать в приоритетные очереди и всегда иметь гарантированные 50 Kbit/s.

Пользуясь вышеописанным примером можно выделить для всех онлайн игр фиксированную гарантированную скорость и создать иерархию классов (правил), распределив таким образом пропускную способность между всеми поровну.

Simple Queues

Рассмотрим тип очередей Simple Queues. Эти очереди являются простыми, а если быть точнее, то упрощенными. В самом деле для их использования не нужно применять промаркированные пакеты из Firewall, однако при этом теряется некоторая гибкость. Здесь в качестве основных параметров, к которым следует применять правило, относятся адреса источника и получателя. На вкладке Advanced утилиты Winbox можно обнаружить и некоторые другие параметры, однако они не относятся к списку обязательных к заполнению.

Список текущих возможностей простых очередей выглядит следующим образом:

  • работа с P2P-трафиком;
  • применение очередей в определенных интервалах времени;
  • приоритезация потоков;
  • использование в качестве параметров несколько цепочек пакетов, маркированных в  /ip firewall mangle;
  • шейпинг бидеракционного трафика (одно правило для входящего и исходящего потока).

Стоит отметить, что начиная с версии Mikrotik 2.9 в Simple Queues стало возможным указывать параметр Parent для простых очередей. Таким образом можно строить практически аналогичные деревья классов, как и для Queue Trees за тем исключением, что здесь оперировать будем не пакетами и потоками, а адресами.

Стоит так же помнить, что Simple Queues не что иное, как частный случай Queue Trees. Поэтому создавая новые правила стоит обращать внимание не существует ли уже что-то подобное, оперирующее с теми же адресами, портами или другими параметрами. В случае сходства, приоритет окажется на стороне Queue Trees и ваши простые очереди просто не будут работать.

Перед началом составления правил в Simple Queues необходимо понять что есть входящий и исходящий трафик для нашего провайдера, нашего роутера и наших клиентов.  На рисунке выше изображена стандартная схема направления потоков трафика от провайдера к нашему роутеру и от роутера к клиенту. Стоит обратить внимание, что исходящий трафик клиента для нашего роутера будет являться входящим и наоборот. То же самое можно сказать про нашего провайдера-исходящий трафик для него-это входящий для нас.

Список параметров для конфигурирования простых очередей в Mikrototik 2.9.7 выглядит следующим образом:

  • burst-limit (целое) – максимальная burst-скорость;
  • burst-threshold (целое) – средняя загрузка канала при которой разрешено выдать burst-limit;
  • burst-time (время) – используется для подсчета средней загрузки канала;
  • dst-address (IP адрес/маска) – адрес назначения;
  • dst-netmask (netmask) – маска подсети для dst-address;
  • interface (text) – интерфейс, для которого предназначается правило;
  • limit-at (целое/целое) – гарантированный канал;
  • max-limit (целое/целое) – максимальная величина канала;
  • name (text) – имя правила;
  • p2p (any | all-p2p | bit-torrent | blubster | direct-connect | edonkey | fasttrack | gnutella | soulseek | winmx) – тип P2P-трафика;
  • packet-marks (name; по умолчанию: "") - цепочка пакетов, промаркированных в /ip firewall mangle;
  • parent (name) – имя родительской очереди;
  • priority (целое: 1..8) – приоритет. 1- больший, 8-самый маленький;
  • queue (name/name; default: default/default) – имя очереди из /queue type;
  • target-addresses (IP address/netmask) – исходный адрес;
  • time (time-time,sat | fri | thu | wed | tue | mon | sun{+}; по умолчанию: "") - применить очередь к временному интервалу;
  • total-burst-limit (целое) – максимальная burst скорость в очереди global-total;•    total-burst-threshold (целое) – средняя скорость в очереди global-total;
  • total-burst-time (time) - используется для подсчета средней загрузки канала в очереди global-total;
  • total-limit-at (целое) – гарантированная скорость в очереди global-total (входящий+исходящий каналы);
  • total-max-limit (целое) – максимальная скорость передачи данных в очереди global-total.

Весьма интересной является возможность управлять входящим и исходящим трафиком вместе. Это позволяет клиентам максимально использовать проплаченный канал.

Примеры

Сэмулируем для нашего клиента канал с 64/42 kbit/s с гарантированной скоростью 32/32 kbit/s в будние дни и 256/128 kbit/s с гарантированной скоростью 64/64 kbit/s в выходные.

Результатом нашей работы будет два правила:

/queue simple add target-addresses=192.168.11.1/32 limit-at=32000/32000 max-limit=64000/42000  time=00:00:00-00:00:00,mon,tue,wed,thu,fri

/queue simple add target-addresses=192.168.11.1/32 limit-at=64000/64000 max-limit=256000/128000  time=00:00:00-00:00:00,sat,sun


В нашем случае первая цифра в паре 32000/32000 означает входящий канал для клиента, а вторая - исходящий. Воспользовавшись нижеприведенной схемой можно инвертировать параметры относительно нашего роутера.

При желании можно позаботиться о быстром открытии страниц, добавив параметры burst-limit и burst-time.

Данное правило можно было бы несколько видоизменить, разделив указанную скорость между всей сетью 192.168.11.0.24. В этом случае для параметра queue нужно указать тип очереди pcq-download, приведенный выше в примере с Queue Trees.

Простые очереди позволяют достаточно просто реализовать возможность предоставления на определенные адреса неограниченной скорости.

Добавим к вышеприведенным правилам ещё одно, которое будет выглядеть следующим образом:

/queue simple add target-addresses==192.168.11.1/32 dst-address=84.201.225.124 limit-at=1024000/1024000 max-limit=2048000/2048000


В результате чего клиент с адресом 192.168.11.1 получит доступ к адресу 84.201.225.124 со скоростью от 1 до 2 мегабит.

При выделении гарантированной пропускной способности нужно помнить, что сумма limit-at всех клиентов должна быть меньше или равна общей пропускной способности канала. Только в этом случае можно говорить о какой-то гарантированной скорости.

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

Ещё одно замечание связанно с тем, что напрямую вписать URI-адрес в поле ввода IP-адреса не представляется возможным, но иногда необходимо, так как многие сайты имеют динамические адреса. Данную проблему можно решить, прописав необходимый адрес ресурса в разделе /ip firewall address-list и дав ему имя, по которому в последствии можно обратиться.

Вывод

Возможности по управлению трафиком в Mikrotik 2.9 претерпели некоторые изменения по сравнению с предыдущими версиями. Это позволило стать этой операционной системе рядом и даже несколько потеснить аппаратные решения от Cisco, сохранив при этом удобство и огромную гибкость в конфигурировании. Объединив Mikrotik и биллинг с поддержкой протокола Radius, можно получить мощную систему, подходящую как для сети среднего провайдера, так и в качестве сервера, раздающего Интернет внутри локальной домашней сети или сети предприятия. Стоит отметить, что вышеописанные возможности шейпинга можно применить не только к разделению доступа в интернет, но и к созданию резервных каналов связи. В сочетании с беспроводными технологиями RouterOS может превратить груду уже никому не нужного металлолома и нескольких беспроводных сетевых карт в мощную Wi-Fi соту с разделением доступа и предоставлением гарантированной полосы пропускания своим клиентам.

Обсудить статью и задать вопросы автору на форуме!
Читать статью "Router OS Mikrotik - мечта сисадмина"

Содержание Одной страницей
Назад
Стр. 1. Теория
Стр. 2. Bursts, Schedulers
Стр. 3. Вывод, примеры
Комментарии
Добавить комментарий

Введите имя:
Войти от:
или
Ваш комментарий:


Введите код:

E-mail (не обязательно)
Адрес электронной почты не предназначен к показу и будет использован только для уведомлений об ответах


Зин#11 2
Скрипт для динамического деления скорости http://www.youtube.com/watch?v=fmnzyIDa-Z4
Ответить 
 
Fallman#20 0
Реализация трафик-шейпера (Traffic Shaper) на Mikrotik - http://forum.x-drivers.ru/index.php?showtopic=3286

Запрятали на форуме ребята чего-то.

Ответить 

Смартфоны со съемными аккумуляторами 2018-2019 годов
14 смартфонов со съемным аккумулятором и один телефон
15 июля 2019 / 3
Смартфон с каплевидным вырезом - Samsung Galaxy A30
Недорогой современный смартфон без моноброви
22 апреля 2019 / 3
Android 10. Первый взгляд
Что будет в «юбилейной» ОС Google, которая выйдет в 2019 года
29 июля 2018 / 1
Смартфон Huawei с хорошей камерой - Huawei P20
Эффектный флагман со своим лицом
22 июля 2018 / 4
 
 
Анонс Windows 11 состоится 24 июня
Продажи iPhone 12 mini не оправдали ожидания
Будущий iPad Pro получит стеклянный корпус
Sun Valley может выйти уже осенью 2021 года
Samsung приступила к лицензированию Ultra Thin Glass (UTG)
Компания фокусируется на бытовой технике и электромобилях
 
 

Опрос

Какими картами вы пользуетесь?
или оставить собственный вариант в комментариях (14)





Статистика