Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2013-11-07 04:49:10 +0400

bolshoy_plohish Gravatar bolshoy_plohish

Шейпинг U32.

Шейпинг U32.

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


#!/bin/bash

DEV=eth2

RATEUP=700 #лимит скорости отдачи RATEDN=3000 # лимит скорости закачки

#RATEUP=500 #лимит скорости отдачи #RATEDN=1300 # лимит скорости закачки

СБРОС ПРАВИЛ

tc qdisc del dev $DEV root #tc qdisc del dev $DEV ingress #tc qdisc del dev $DEV egress

tc qdisc del dev ifb0 root #tc qdisc del dev ifb0 ingress

#Подключаем модуль ядра для ifb: /sbin/modprobe ifb

#Поднимаем интерфейс ifb0: /sbin/ip link set dev ifb0 up

#Создаем корневую дисциплину для входящего траффика tc qdisc add dev $DEV ingress

#Заворачиваем траффик на с интерфейса на интерфейс ifb0 tc filter add dev $DEV parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

#Указываем размер очереди ip link set dev ifb0 qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev ifb0 root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev ifb0 parent 1: classid 1:1 htb rate ${RATEDN}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev ifb0 parent 1:1 classid 1:20 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 0 tc class add dev ifb0 parent 1:1 classid 1:21 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 1 tc class add dev ifb0 parent 1:1 classid 1:22 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 2 tc class add dev ifb0 parent 1:1 classid 1:23 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 3 tc class add dev ifb0 parent 1:1 classid 1:24 htb rate $[$RATEDN/6]kbit ceil ${RATEDN}kbit prio 4 tc class add dev ifb0 parent 1:1 classid 1:25 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 5 tc class add dev ifb0 parent 1:1 classid 1:26 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 6

подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev ifb0 parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev ifb0 parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev ifb0 parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev ifb0 parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev ifb0 parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev ifb0 parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev ifb0 protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

#Исходящий траффик

#Создаем корневую дисциплину для входящего траффика #tc qdisc add dev $DEV egress

#Указываем размер очереди ip link set dev $DEV qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev $DEV root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 0 tc class add dev $DEV parent 1:1 classid 1:21 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 1 tc class add dev $DEV parent 1:1 classid 1:22 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 2 tc class add dev $DEV parent 1:1 classid 1:23 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 3 tc class add dev $DEV parent 1:1 classid 1:24 htb rate $[$RATEUP/6]kbit ceil ${RATEUP}kbit prio 4 tc class add dev $DEV parent 1:1 classid 1:25 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 5 tc class add dev $DEV parent 1:1 classid 1:26 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 6

#подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev $DEV parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev $DEV protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev $DEV protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

Traffic Control. Шейпинг U32.трафика U32 в Linux

Traffic Control. Шейпинг U32.трафика U32 в Linux

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


#!/bin/bash

DEV=eth2

RATEUP=700 #лимит скорости отдачи RATEDN=3000 # лимит скорости закачки

#RATEUP=500 #лимит скорости отдачи #RATEDN=1300 # лимит скорости закачки

СБРОС ПРАВИЛ

tc qdisc del dev $DEV root #tc qdisc del dev $DEV ingress #tc qdisc del dev $DEV egress

tc qdisc del dev ifb0 root #tc qdisc del dev ifb0 ingress

#Подключаем модуль ядра для ifb: /sbin/modprobe ifb

#Поднимаем интерфейс ifb0: /sbin/ip link set dev ifb0 up

#Создаем корневую дисциплину для входящего траффика tc qdisc add dev $DEV ingress

#Заворачиваем траффик на с интерфейса на интерфейс ifb0 tc filter add dev $DEV parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

#Указываем размер очереди ip link set dev ifb0 qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev ifb0 root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev ifb0 parent 1: classid 1:1 htb rate ${RATEDN}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev ifb0 parent 1:1 classid 1:20 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 0 tc class add dev ifb0 parent 1:1 classid 1:21 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 1 tc class add dev ifb0 parent 1:1 classid 1:22 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 2 tc class add dev ifb0 parent 1:1 classid 1:23 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 3 tc class add dev ifb0 parent 1:1 classid 1:24 htb rate $[$RATEDN/6]kbit ceil ${RATEDN}kbit prio 4 tc class add dev ifb0 parent 1:1 classid 1:25 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 5 tc class add dev ifb0 parent 1:1 classid 1:26 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 6

подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev ifb0 parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev ifb0 parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev ifb0 parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev ifb0 parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev ifb0 parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev ifb0 parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev ifb0 protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

#Исходящий траффик

#Создаем корневую дисциплину для входящего траффика #tc qdisc add dev $DEV egress

#Указываем размер очереди ip link set dev $DEV qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev $DEV root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 0 tc class add dev $DEV parent 1:1 classid 1:21 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 1 tc class add dev $DEV parent 1:1 classid 1:22 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 2 tc class add dev $DEV parent 1:1 classid 1:23 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 3 tc class add dev $DEV parent 1:1 classid 1:24 htb rate $[$RATEUP/6]kbit ceil ${RATEUP}kbit prio 4 tc class add dev $DEV parent 1:1 classid 1:25 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 5 tc class add dev $DEV parent 1:1 classid 1:26 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 6

#подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev $DEV parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev $DEV protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev $DEV protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

Traffic Control. Шейпинг трафика U32 с помощью классификатора u32 в Linux

Traffic Control. Шейпинг трафика U32 с помощью классификатора u32 в Linux

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


#!/bin/bash

DEV=eth2

RATEUP=700 #лимит скорости отдачи RATEDN=3000 # лимит скорости закачки

#RATEUP=500 #лимит скорости отдачи #RATEDN=1300 # лимит скорости закачки

СБРОС ПРАВИЛ

tc qdisc del dev $DEV root #tc qdisc del dev $DEV ingress #tc qdisc del dev $DEV egress

tc qdisc del dev ifb0 root #tc qdisc del dev ifb0 ingress

#Подключаем модуль ядра для ifb: /sbin/modprobe ifb

#Поднимаем интерфейс ifb0: /sbin/ip link set dev ifb0 up

#Создаем корневую дисциплину для входящего траффика tc qdisc add dev $DEV ingress

#Заворачиваем траффик на с интерфейса на интерфейс ifb0 tc filter add dev $DEV parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

#Указываем размер очереди ip link set dev ifb0 qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev ifb0 root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev ifb0 parent 1: classid 1:1 htb rate ${RATEDN}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev ifb0 parent 1:1 classid 1:20 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 0 tc class add dev ifb0 parent 1:1 classid 1:21 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 1 tc class add dev ifb0 parent 1:1 classid 1:22 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 2 tc class add dev ifb0 parent 1:1 classid 1:23 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 3 tc class add dev ifb0 parent 1:1 classid 1:24 htb rate $[$RATEDN/6]kbit ceil ${RATEDN}kbit prio 4 tc class add dev ifb0 parent 1:1 classid 1:25 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 5 tc class add dev ifb0 parent 1:1 classid 1:26 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 6

подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev ifb0 parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev ifb0 parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev ifb0 parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev ifb0 parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev ifb0 parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev ifb0 parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev ifb0 protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

#Исходящий траффик

#Создаем корневую дисциплину для входящего траффика #tc qdisc add dev $DEV egress

#Указываем размер очереди ip link set dev $DEV qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev $DEV root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 0 tc class add dev $DEV parent 1:1 classid 1:21 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 1 tc class add dev $DEV parent 1:1 classid 1:22 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 2 tc class add dev $DEV parent 1:1 classid 1:23 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 3 tc class add dev $DEV parent 1:1 classid 1:24 htb rate $[$RATEUP/6]kbit ceil ${RATEUP}kbit prio 4 tc class add dev $DEV parent 1:1 classid 1:25 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 5 tc class add dev $DEV parent 1:1 classid 1:26 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 6

#подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev $DEV parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev $DEV protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev $DEV protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

Traffic Control. Шейпинг с помощью классификатора u32 в Linux

Traffic Control. Шейпинг с помощью классификатора u32 в Linux

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


#!/bin/bash

DEV=eth2

RATEUP=700 #лимит скорости отдачи RATEDN=3000 # лимит скорости закачки

#RATEUP=500 #лимит скорости отдачи #RATEDN=1300 # лимит скорости закачки

СБРОС ПРАВИЛ

tc qdisc del dev $DEV root #tc qdisc del dev $DEV ingress #tc qdisc del dev $DEV egress

tc qdisc del dev ifb0 root #tc qdisc del dev ifb0 ingress

#Подключаем модуль ядра для ifb: /sbin/modprobe ifb

#Поднимаем интерфейс ifb0: /sbin/ip link set dev ifb0 up

#Создаем корневую дисциплину для входящего траффика tc qdisc add dev $DEV ingress

#Заворачиваем траффик на с интерфейса на интерфейс ifb0 tc filter add dev $DEV parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

#Указываем размер очереди ip link set dev ifb0 qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev ifb0 root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev ifb0 parent 1: classid 1:1 htb rate ${RATEDN}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev ifb0 parent 1:1 classid 1:20 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 0 tc class add dev ifb0 parent 1:1 classid 1:21 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 1 tc class add dev ifb0 parent 1:1 classid 1:22 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 2 tc class add dev ifb0 parent 1:1 classid 1:23 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 3 tc class add dev ifb0 parent 1:1 classid 1:24 htb rate $[$RATEDN/6]kbit ceil ${RATEDN}kbit prio 4 tc class add dev ifb0 parent 1:1 classid 1:25 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 5 tc class add dev ifb0 parent 1:1 classid 1:26 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 6

подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev ifb0 parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev ifb0 parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev ifb0 parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev ifb0 parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev ifb0 parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev ifb0 parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev ifb0 protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

#Исходящий траффик

#Создаем корневую дисциплину для входящего траффика #tc qdisc add dev $DEV egress

#Указываем размер очереди ip link set dev $DEV qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev $DEV root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 0 tc class add dev $DEV parent 1:1 classid 1:21 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 1 tc class add dev $DEV parent 1:1 classid 1:22 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 2 tc class add dev $DEV parent 1:1 classid 1:23 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 3 tc class add dev $DEV parent 1:1 classid 1:24 htb rate $[$RATEUP/6]kbit ceil ${RATEUP}kbit prio 4 tc class add dev $DEV parent 1:1 classid 1:25 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 5 tc class add dev $DEV parent 1:1 classid 1:26 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 6

#подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev $DEV parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev $DEV protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev $DEV protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

Traffic Control. Шейпинг с помощью классификатора u32 в Linux

Traffic Control. Шейпинг с помощью классификатора u32 в Linux

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


#!/bin/bash

DEV=eth2

#90-95% от полосы RATEUP=700 #лимит скорости отдачи RATEDN=3000 # лимит скорости закачки

СБРОС ПРАВИЛ

tc qdisc del dev $DEV root #tc qdisc del dev $DEV ingress #tc qdisc del dev $DEV egress

tc qdisc del dev ifb0 root #tc qdisc del dev ifb0 ingress

#Подключаем модуль ядра для ifb: /sbin/modprobe ifb

#Поднимаем интерфейс ifb0: /sbin/ip link set dev ifb0 up

#Создаем корневую дисциплину для входящего траффика tc qdisc add dev $DEV ingress

#Заворачиваем траффик на с интерфейса на интерфейс ifb0 tc filter add dev $DEV parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

#Указываем размер очереди ip link set dev ifb0 qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev ifb0 root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev ifb0 parent 1: classid 1:1 htb rate ${RATEDN}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev ifb0 parent 1:1 classid 1:20 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 0 tc class add dev ifb0 parent 1:1 classid 1:21 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 1 tc class add dev ifb0 parent 1:1 classid 1:22 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 2 tc class add dev ifb0 parent 1:1 classid 1:23 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 3 tc class add dev ifb0 parent 1:1 classid 1:24 htb rate $[$RATEDN/6]kbit ceil ${RATEDN}kbit prio 4 tc class add dev ifb0 parent 1:1 classid 1:25 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 5 tc class add dev ifb0 parent 1:1 classid 1:26 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 6

подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev ifb0 parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev ifb0 parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev ifb0 parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev ifb0 parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev ifb0 parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev ifb0 parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev ifb0 protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

#Исходящий траффик

#Создаем корневую дисциплину для входящего траффика #tc qdisc add dev $DEV egress

#Указываем размер очереди ip link set dev $DEV qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev $DEV root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 0 tc class add dev $DEV parent 1:1 classid 1:21 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 1 tc class add dev $DEV parent 1:1 classid 1:22 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 2 tc class add dev $DEV parent 1:1 classid 1:23 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 3 tc class add dev $DEV parent 1:1 classid 1:24 htb rate $[$RATEUP/6]kbit ceil ${RATEUP}kbit prio 4 tc class add dev $DEV parent 1:1 classid 1:25 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 5 tc class add dev $DEV parent 1:1 classid 1:26 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 6

#подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev $DEV parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev $DEV protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev $DEV protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

Traffic Control. Шейпинг с помощью классификатора u32 в Linux

Traffic Control. Шейпинг с помощью классификатора u32 в Linux

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


#!/bin/bash

DEV=eth2

#90-95%

<= 90-95% от полосы полосы

RATEUP=700 #лимит скорости отдачи RATEDN=3000 # лимит скорости закачки

СБРОС ПРАВИЛ

tc qdisc del dev $DEV root #tc qdisc del dev $DEV ingress #tc qdisc del dev $DEV egress

tc qdisc del dev ifb0 root #tc qdisc del dev ifb0 ingress

#Подключаем модуль ядра для ifb: /sbin/modprobe ifb

#Поднимаем интерфейс ifb0: /sbin/ip link set dev ifb0 up

#Создаем корневую дисциплину для входящего траффика tc qdisc add dev $DEV ingress

#Заворачиваем траффик на с интерфейса на интерфейс ifb0 tc filter add dev $DEV parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

#Указываем размер очереди ip link set dev ifb0 qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev ifb0 root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev ifb0 parent 1: classid 1:1 htb rate ${RATEDN}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev ifb0 parent 1:1 classid 1:20 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 0 tc class add dev ifb0 parent 1:1 classid 1:21 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 1 tc class add dev ifb0 parent 1:1 classid 1:22 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 2 tc class add dev ifb0 parent 1:1 classid 1:23 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 3 tc class add dev ifb0 parent 1:1 classid 1:24 htb rate $[$RATEDN/6]kbit ceil ${RATEDN}kbit prio 4 tc class add dev ifb0 parent 1:1 classid 1:25 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 5 tc class add dev ifb0 parent 1:1 classid 1:26 htb rate $[$RATEDN/12]kbit ceil ${RATEDN}kbit prio 6

подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev ifb0 parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev ifb0 parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev ifb0 parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev ifb0 parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev ifb0 parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev ifb0 parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev ifb0 protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

#Исходящий траффик

#Создаем корневую дисциплину для входящего траффика #tc qdisc add dev $DEV egress

#Указываем размер очереди ip link set dev $DEV qlen 30

#Создаем корневую дисциплину для ifb0 tc qdisc add dev $DEV root handle 1: htb default 26

добавить общее ограничение скорости по классу

tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit

добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.

Этим способом мы избегаем возможности "голодания" классов. Каждому классу

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

используются.

tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 0 tc class add dev $DEV parent 1:1 classid 1:21 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 1 tc class add dev $DEV parent 1:1 classid 1:22 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 2 tc class add dev $DEV parent 1:1 classid 1:23 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 3 tc class add dev $DEV parent 1:1 classid 1:24 htb rate $[$RATEUP/6]kbit ceil ${RATEUP}kbit prio 4 tc class add dev $DEV parent 1:1 classid 1:25 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 5 tc class add dev $DEV parent 1:1 classid 1:26 htb rate $[$RATEUP/12]kbit ceil ${RATEUP}kbit prio 6

#подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.

SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями

внутри каждого класса.

tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev $DEV parent 1:26 handle 26: sfq perturb 10

направляем трафик в классы

icmp траффик в высокоприритетный класс

tc filter add dev $DEV protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:20

UDP траффик в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff flowid 1:21

DNS запросы в класс 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:21

tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:21 tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:21

SSH трафиик в класс 1:22

tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:22 tc filter add dev $DEV protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:22

OpenVPN траффик в класс 1:23

tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 5001 0xffff flowid 1:23 tc filter add dev $DEV protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:23

SMTP траффик в класс 1:24

tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:24 tc filter add dev $DEV protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:24

WEB траффик в класс 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 81 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 81 0xffff flowid 1:25

tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:25 tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:25

#Весь остальной трафик отправить в низкоприоритетный класс tc filter add dev $DEV protocol ip parent 1:0 prio 6 u32 match ip protocol 6 0xff flowid 1:26

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.