Страница 1 из 1

Маркировка соединений и пакетов

Добавлено: 16 янв 2017, 18:52
Schatten
Здравствуйте.
Провайдер предоставляет доступ ко внутренним ресурсам на повышенной скорости по сравнению с доступом в интернет. Хотелось бы отмаркировать трафик ко внутренним и внешним ресурсам и раскидывать его по своим очередям для обеспечения нужного качества обслуживания. Но где и как маркировать? Например, здесь маркируются исходящие соединения с сервера в цепочке prerouting, а пакеты -- в forward. Однако я часто видел в примерах, что маркировка и того, и другого делается или в prerouting, или в forward. Кроме этого, почему не маркируются входящие соединения и пакеты как это сделано в случае маркировки только пакетов, например, здесь?
Объясните, пожалуйста, или дайте ссылки где это всё "разжёвано". Заранее благодарен.

P. S.
Здесь схема следования справедлива как для исходящих пакетов, так и входящих?

Re: Маркировка соединений и пакетов

Добавлено: 16 янв 2017, 20:31
algerka

Re: Маркировка соединений и пакетов

Добавлено: 18 янв 2017, 12:59
Schatten
algerka писал(а):Читайте https://habrahabr.ru/post/131295/

Так, ну прочитал я это ещё раз, поскольку ранее уже читал, -- вопросы остались те же, разве что с цепочками стало чуть яснее. :-(

Re: Маркировка соединений и пакетов

Добавлено: 18 янв 2017, 14:22
DmNuts
Если кратко: для обычных задач QoS достаточно маркировать только пакеты, исходящие С интерфейса. Поэтому маркируем в forward. Отдельными метками исходящий и входящий трафик.

Здесь схема следования справедлива как для исходящих пакетов, так и входящих?
Схема универсальна, просто в уме для каждого случая подставляются нужные интерфейсы.

Re: Маркировка соединений и пакетов

Добавлено: 18 янв 2017, 15:40
Schatten
DmNuts писал(а):Если кратко: для обычных задач QoS достаточно маркировать только пакеты, исходящие С интерфейса. Поэтому маркируем в forward. Отдельными метками исходящий и входящий трафик.

Сейчас я так и делаю:

Код: Выделить всё

/ip firewall mangle add action=mark-packet chain=forward in-interface=ether1-gateway out-interface=ether2-master-local new-packet-mark=isp1Download
/ip firewall mangle add action=mark-packet chain=forward in-interface=ether2-master-local out-interface=ether1-gateway new-packet-mark=isp1Upload

Но меня интересует маркировка и соединений, и пакетов. И если с маркировкой пакетов более или менее понятно, то с маркировкой соединений не очень.

Re: Маркировка соединений и пакетов

Добавлено: 24 янв 2017, 21:56
Schatten
Почитав документацию (в частности, эту и эту статьи), я попробовал настроить маршрутизатор следующим образом.
Поскольку исходящие соединения клиентов попадают в цепочку prerouting, и поскольку там находится блок "Connection tracking" (судя по схеме следования пакетов), то маркируем соединения именно здесь:

Код: Выделить всё

/ip firewall mangle add chain=prerouting action=mark-connection new-connection-mark=userConnection in-interface=ether2-master-local

Пакеты, которые попадают в цепочку prerouting, в качестве IP-адреса назначения имеют IP-адрес порта маршрутизатора, "смотрящего" в локальную сеть. IP-адрес интернет-ресурса пакеты получают в конце цепочки prerouting, где срабатывает Dst-NAT. Поэтому, маркировать пакеты нужно или в цепочке forward, или в postrouting:

Код: Выделить всё

/ip firewall mangle add chain=forward action=mark-packet new-packet-mark=peerResourcePacket connection-mark=userConnection dst-address-list=peerResources passthrough=no
/ip firewall mangle add chain=forward action=mark-packet new-packet-mark=internetResourcePacket connection-mark=userConnection passthrough=no

Таким образом, трафик от/к клиентам якобы будет промаркирован.
Чтобы обеспечить нужное качество обслуживания, я воспользовался простыми очередями:
 Команды

Код: Выделить всё

/queue simple add max-limit=100M/100M name=allTraffic queue=pcq-upload-default/pcq-download-default target=0.0.0.0/0

/queue simple add max-limit=95000k/95000k name=peerTraffic packet-marks=peerResourcePacket parent=allTraffic queue=pcq-upload-default/pcq-download-default target=0.0.0.0/0

/queue simple add max-limit=95000k/95000k name=user1_pt parent=peerTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=95000k/95000k name=user2_pt parent=peerTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=95000k/95000k name=user3_pt parent=peerTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=95000k/95000k name=user4_pt parent=peerTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=95000k/95000k name=user5_pt parent=peerTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=95000k/95000k name=user6_pt parent=peerTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=95000k/95000k name=user7_pt parent=peerTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=95000k/95000k name=user8_pt parent=peerTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>

/queue simple add max-limit=23750k/23750k name=internetTraffic parent=allTraffic queue=pcq-upload-default/pcq-download-default target=0.0.0.0/0

/queue simple add max-limit=23750k/23750k name=user1_it packet-marks=internetResourcePacket parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=23750k/23750k name=user2_it packet-marks=internetResourcePacket parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=23750k/23750k name=user3_it packet-marks=internetResourcePacket parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=23750k/23750k name=user4_it packet-marks=internetResourcePacket parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=23750k/23750k name=user5_it packet-marks=internetResourcePacket parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=23750k/23750k name=user6_it packet-marks=internetResourcePacket parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=23750k/23750k name=user7_it packet-marks=internetResourcePacket parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=23750k/23750k name=user8_it packet-marks=internetResourcePacket parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=<IP-адреса>
/queue simple add max-limit=23750k/23750k name=user9_it parent=internetTraffic queue=pcq-upload-default/pcq-download-default target=0.0.0.0/0

Однако, почему-то в очередях клиентов (как userX_pt, так и userX_it) не фиксируется входящий трафик, зато он фиксируется в родительской очереди internetTraffic и очереди user9_it, куда попадает неучтённый трафик (например, соединения с/к маршрутизатору).
В чём дело?