Я пытаюсь использовать MikroTik в качестве ограничителя пропускной способности внутри существующей беспроводной сети. Поскольку у меня уже есть Soekris 4521, который сейчас не используется, я использую его как платформу для начала. Существующая топология выглядит так: точки доступа в разных местах подключаются к смеси маршрутизаторов и коммутаторов. Маршрутизаторы выполняют разбиение подсетей на систему /27, где каждой точке доступа присваивается отдельная подсеть. Некоторые подсети перекрываются там, где используются коммутаторы. Соединения между коммутаторами и маршрутизаторами осуществляются по беспроводной магистрали. Все это работает неплохо, но у нас никогда не было желаемого контроля над пропускной способностью. Наша первая система ограничения пропускной способности была коммерческим устройством, которое не работало так, как рекламировалось. Вторая – это система, запрограммированная на заказ, которая так и не вышла в сеть, потому что кодер постоянно говорил, что у него еще есть изменения, которые нужно внести. Вместо этого единого централизованного контроля над пропускной способностью, я хочу перейти к распределенной системе. Это шаг к использованию MikroTik в качестве будущих точек доступа, где все функции точки доступа, контроль пропускной способности и маршрутизатор будут выполняться в одном меньшем и менее дорогом устройстве. Это также даст некоторые долгосрочные преимущества для мониторинга трафика, если нам нужно будет найти спаммера, вирус и т.д. После изучения документации я настроил базовый предел P2P, и он кажется рабочим. Мне нужно провести более обширное тестирование, чтобы быть уверенным. Затем я начал изучать полное формирование трафика, и во всех источниках, которые я вижу, упоминается всего несколько машин. Поскольку у меня нет всего нескольких машин, я попытался создать что-то более общее, но гибкое. Мне кажется, что я могу контролировать вещи, но сталкиваюсь с некоторыми странностями. Пожалуйста, имейте в виду, что в описании топологии сети ниже находятся несколько /27, для которых я пытаюсь найти общее решение для управления, но при этом которое можно будет изменить для конкретных клиентов. Чтобы сделать это общее решение, я пытаюсь использовать /24 в наборах правил. Для конкретных случаев я использую тестовую машину с правилом, основанным на /32, чтобы воздействовать только на нее. Soekris с MikroTik 2.8.16 настроен как мост, с адресом 10.0.0.20 на одном порту, чтобы я мог к нему обращаться и управлять им. Машины, с которыми я тестирую, – это одна, жестко заданная с адресом 192.168.1.5, и 10.0.0.21, чтобы она могла выходить в интернет и управлять вещами, и две, которым адреса назначаются автоматически, чтобы они могли только выходить в интернет. DHCP-сервер находится по другую сторону MikroTik.
**Проблема 1) Неправильное направление?**
Сначала я попытался использовать что-то на основе решения P2P. Я использовал /24 в надежде, что смогу создать одну конфигурацию, которую можно будет загрузить на будущие MikroTik boxes. Так что это можно было бы разместить на любом сайте с минимальными или никакими изменениями.
```
ip firewall mangle add src-address=192.168.1.0/24 mark-flow=users-out action=passthrough
ip firewall mangle add dst-address=192.168.1.0/24 mark-flow=users-in action=passthrough
queue type add name="users-in" kind=pcq pcq-rate=1572864 pcq-classifier=dst-address
queue type add name="users-out" kind=pcq pcq-rate=786432 pcq-classifier=src-address
queue tree add name="users-in" parent=global-in flow=users-in queue=users-in
queue tree add name="users-out" parent=global-out flow=users-out queue=users-out
```
Казалось бы, это работает, но когда я это попробовал, ограничения скорости были обращены. Это казалось мне бессмысленным. Позже я начал думать, связано ли это с тем, что и машина, и шлюз находятся в сети 192.168.1.0/24, и MikroTik является мостом между ними.
**Проблема 2) Медленнее, но не быстрее**
Я хочу, чтобы средняя скорость была по умолчанию. Затем, для каждого клиента, которому это нужно, я хочу открыть для него скорость. Второе, что я попробовал, – это замедлить конкретного клиента. Я сделал это для IP-адреса 192.168.1.5, и это работало идеально. Затем я попытался установить тип очереди pcq-rate для входящих и исходящих данных равным 2000000, чтобы скорость была быстрее, чем у очередей "users-in" и "users-out". Это не сработало.
Команды, которые я ввел для замедления, были следующими:
```
ip firewall mangle add src-address=192.168.1.5/32 mark-flow=user192.168.1.5-out action=passthrough
ip firewall mangle add dst-address=192.168.1.5/32 mark-flow=user192.168.1.5-in action=passthrough
queue type add name="user192.168.1.5-out" kind=pcq pcq-rate=78643 pcq-classifier=src-address
queue type add name="user192.168.1.5-in" kind=pcq pcq-rate=157286 pcq-classifier=dst-address
queue tree add name="user192.168.1.5-in" parent=global-in flow=user192.168.1.5-in queue=user192.168.1.5-in
queue tree add name="user192.168.1.5-out" parent=global-out flow=user192.168.1.5-out queue=user192.168.1.5-out
```
Для ускорения я использовал:
```
queue type set user192.168.1.5-out pcq-rate=2000000
queue type set user192.168.1.5-in pcq-rate=2000000
```
**Проблема 3) Проблема с родителями**
Поскольку моя попытка контролировать вещи не работала так, как я думал, и я читал о том, как ограничения скорости устанавливаются при выходе из порта, я удалил все ограничения, а затем снова попытался. На этот раз я выбрал другие родительские элементы, чем глобальные порты.
```
ip firewall mangle add src-address=192.168.1.0/24 mark-flow=users-out action=passthrough
ip firewall mangle add dst-address=192.168.1.0/24 mark-flow=users-in action=passthrough
queue type add name="users-in" kind=pcq pcq-rate=1572864 pcq-classifier=dst-address
queue type add name="users-out" kind=pcq pcq-rate=786432 pcq-classifier=src-address
queue tree add name="users-in" parent=ether2 flow=users-in queue=users-in
queue tree add name="users-out" parent=ether1 flow=users-out queue=users-out
```
В этот момент я получил регулируемый поток загрузки и нерегулируемый поток выгрузки. Подумав об этом, я подумал, что, возможно, нужен второй набор деревьев. Что-то вроде этого, добавленного к вышеперечисленному:
```
queue tree add name="users-in2" parent=ether1 flow=users-in queue=users-in
queue tree add name="users-out2" parent=ether2 flow=users-out queue=users-out
```
Таким образом, я сделал несколько поисковых запросов в интернете, но пока безуспешно. Мой следующий выбор — спросить у сообщества пользователей MikroTik, есть ли у них какие-либо аналогичные конфигурации и предложения.
Подводя итог, мне нужен MikroTik в качестве моста между точкой доступа и коммутатором или маршрутизатором с контролем пропускной способности, но с подсетями, которые существуют с обеих сторон моста. Мне нужна скорость по умолчанию ниже, и возможность увеличить скорость для определенных клиентов. Какие есть предложения? Примеры? Я лучше разбираюсь в примерах и могу понять, что из них можно вывести, чем читать длинные руководства.
**Проблема 1) Неправильное направление?**
Сначала я попытался использовать что-то на основе решения P2P. Я использовал /24 в надежде, что смогу создать одну конфигурацию, которую можно будет загрузить на будущие MikroTik boxes. Так что это можно было бы разместить на любом сайте с минимальными или никакими изменениями.
```
ip firewall mangle add src-address=192.168.1.0/24 mark-flow=users-out action=passthrough
ip firewall mangle add dst-address=192.168.1.0/24 mark-flow=users-in action=passthrough
queue type add name="users-in" kind=pcq pcq-rate=1572864 pcq-classifier=dst-address
queue type add name="users-out" kind=pcq pcq-rate=786432 pcq-classifier=src-address
queue tree add name="users-in" parent=global-in flow=users-in queue=users-in
queue tree add name="users-out" parent=global-out flow=users-out queue=users-out
```
Казалось бы, это работает, но когда я это попробовал, ограничения скорости были обращены. Это казалось мне бессмысленным. Позже я начал думать, связано ли это с тем, что и машина, и шлюз находятся в сети 192.168.1.0/24, и MikroTik является мостом между ними.
**Проблема 2) Медленнее, но не быстрее**
Я хочу, чтобы средняя скорость была по умолчанию. Затем, для каждого клиента, которому это нужно, я хочу открыть для него скорость. Второе, что я попробовал, – это замедлить конкретного клиента. Я сделал это для IP-адреса 192.168.1.5, и это работало идеально. Затем я попытался установить тип очереди pcq-rate для входящих и исходящих данных равным 2000000, чтобы скорость была быстрее, чем у очередей "users-in" и "users-out". Это не сработало.
Команды, которые я ввел для замедления, были следующими:
```
ip firewall mangle add src-address=192.168.1.5/32 mark-flow=user192.168.1.5-out action=passthrough
ip firewall mangle add dst-address=192.168.1.5/32 mark-flow=user192.168.1.5-in action=passthrough
queue type add name="user192.168.1.5-out" kind=pcq pcq-rate=78643 pcq-classifier=src-address
queue type add name="user192.168.1.5-in" kind=pcq pcq-rate=157286 pcq-classifier=dst-address
queue tree add name="user192.168.1.5-in" parent=global-in flow=user192.168.1.5-in queue=user192.168.1.5-in
queue tree add name="user192.168.1.5-out" parent=global-out flow=user192.168.1.5-out queue=user192.168.1.5-out
```
Для ускорения я использовал:
```
queue type set user192.168.1.5-out pcq-rate=2000000
queue type set user192.168.1.5-in pcq-rate=2000000
```
**Проблема 3) Проблема с родителями**
Поскольку моя попытка контролировать вещи не работала так, как я думал, и я читал о том, как ограничения скорости устанавливаются при выходе из порта, я удалил все ограничения, а затем снова попытался. На этот раз я выбрал другие родительские элементы, чем глобальные порты.
```
ip firewall mangle add src-address=192.168.1.0/24 mark-flow=users-out action=passthrough
ip firewall mangle add dst-address=192.168.1.0/24 mark-flow=users-in action=passthrough
queue type add name="users-in" kind=pcq pcq-rate=1572864 pcq-classifier=dst-address
queue type add name="users-out" kind=pcq pcq-rate=786432 pcq-classifier=src-address
queue tree add name="users-in" parent=ether2 flow=users-in queue=users-in
queue tree add name="users-out" parent=ether1 flow=users-out queue=users-out
```
В этот момент я получил регулируемый поток загрузки и нерегулируемый поток выгрузки. Подумав об этом, я подумал, что, возможно, нужен второй набор деревьев. Что-то вроде этого, добавленного к вышеперечисленному:
```
queue tree add name="users-in2" parent=ether1 flow=users-in queue=users-in
queue tree add name="users-out2" parent=ether2 flow=users-out queue=users-out
```
Таким образом, я сделал несколько поисковых запросов в интернете, но пока безуспешно. Мой следующий выбор — спросить у сообщества пользователей MikroTik, есть ли у них какие-либо аналогичные конфигурации и предложения.
Подводя итог, мне нужен MikroTik в качестве моста между точкой доступа и коммутатором или маршрутизатором с контролем пропускной способности, но с подсетями, которые существуют с обеих сторон моста. Мне нужна скорость по умолчанию ниже, и возможность увеличить скорость для определенных клиентов. Какие есть предложения? Примеры? Я лучше разбираюсь в примерах и могу понять, что из них можно вывести, чем читать длинные руководства.
