dummy's сообщение in Высокая нагрузка ksoftirqd до 100% was marked as the answer
Разобрался, спасибо всем
Мои настройки шейпинга с использоанием хешей для нагруженных сетей (от 300 мбит)
может кому пригодятся )
Общие константы, параметры (/etc/stargazer/IFACES)
#внешний интерфейс (интернет)
EXT_IF=eth0
EXT_IP=xx.xx.xx.xx
EXT_ROUTE=xx.xx.xx.xx
EXT_SPEED=xxxxxx
EXT_NET=xx.xx.xx.xx/xx
# интерфейс для шейпера
EXT_IF_TC=ifb0
# внутренний (лок.сеть)
INT_NET=10.0.0.0/8
INT_IF=eth1
MARK_LAN=56
TC_BURST=50k
TC_CBURST=50k
TC_R2Q=10
Инициализация шейпера:
#!/bin/bash
. "/etc/stargazer/IFACES"
####################
# downloads
####################
/sbin/tc qdisc del dev $INT_IF root handle 1: htb
/sbin/tc qdisc add dev $INT_IF root handle 1: htb r2q $TC_R2Q default 0
/sbin/tc class add dev $INT_IF parent 1: classid 1:1 htb rate 1000mbit ceil 1000mbit burst 400kb cburst 400kb quantum 60000
# Local lan
mark=$MARK_LAN
speedkb=10
speedceil=50
tc class add dev $INT_IF parent 1: classid 1:$mark htb rate "$speedkb"mbit ceil "$speedceil"mbit quantum 1600
tc filter add dev $INT_IF parent 1:0 pref 5 protocol ip u32 match ip dst $INT_NET match ip src $INT_NET classid 1:$mark
# Internet
mark=2
speedkb=$EXT_SPEED
speedceil=$EXT_SPEED
/sbin/tc class add dev $INT_IF parent 1:1 classid 1:$mark htb rate "$speedkb"kbit ceil "$speedceil"kbit burst 300kb cburst 300kb quantum 50000
# для всех фильтр по 2 последним байтам адреса 10.1.xx.yy - в class (xx)(yy+1), где xx,yy - 16-ричные
# 10.1.1.1 - 102, 10.1.48.12 - 300d
tc filter add dev $INT_IF parent 1:0 protocol ip pref 10 handle 10 flow map key dst and 0xffff
#tc filter add dev $iface parent 1:0 protocol ip handle 1 pref 32 flow map key dst addend -10.1.0.0 divisor 65536
####################
# /downloads
####################
####################
# upload
####################
/sbin/tc qdisc del dev $EXT_IF root handle 1: htb
/sbin/tc qdisc del dev $INT_IF ingress
/sbin/tc filter del dev $INT_IF parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $EXT_IF_TC
/sbin/tc qdisc del dev $EXT_IF_TC root handle 1: htb r2q $TC_R2Q default 0
#1. Подключаем модуль ядра для ifb
modprobe ifb
#2. Поднимаем интерфейс ifb0
/sbin/ip link set dev $EXT_IF_TC up
#3. Создаем корневую дисциплину для входящего трафика на интерфейсе eth1
/sbin/tc qdisc add dev $INT_IF ingress
#4. Теперь непосредственно заворачиваем трафик в ifb0
/sbin/tc filter add dev $INT_IF parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $EXT_IF_TC
#5. А далее по аналогии с исходящим трафиком с интерфейса eth1
/sbin/tc qdisc add dev $EXT_IF_TC root handle 1: htb r2q $TC_R2Q default 0
/sbin/tc class add dev $EXT_IF_TC parent 1: classid 1:1 htb rate 1000mbit ceil 1000mbit burst 400k cburst 400k quantum 60000
# Internet
mark=2
speedkb=$EXT_SPEED
speedceil=$EXT_SPEED
/sbin/tc class add dev $EXT_IF_TC parent 1:1 classid 1:$mark htb rate "$speedkb"kbit ceil "$speedceil"kbit burst 300k cburst 300k quantum 50000
#/sbin/tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate "$speedkb"mbit
# для всех фильтр по 2 последним байтам адреса
/sbin/tc filter add dev $EXT_IF_TC parent 1:0 protocol ip pref 10 handle 1 flow map key src and 0xffff
####################
# /upload
####################
# в OnConnect
. "/etc/stargazer/IFACES"
/sbin/tc class replace dev $INT_IF parent 1:2 classid 1:$mark htb rate "$speedkb"kbit ceil "$speedceil"kbit burst $TC_BURST cburst $TC_CBURST quantum $TC_QUANTUM
/sbin/tc class replace dev $EXT_IF_TC parent 1:2 classid 1:$markup htb rate "$speedup"kbit ceil "$speedupceil"kbit burst $TC_BURST cburst $TC_CBURST quantum $TC_QUANTUM
# в OnDisconnect
. "/etc/stargazer/IFACES"
/sbin/tc class del dev $INT_IF parent 1:2 classid 1:$mark htb rate "$rate"kbit burst $TC_BURST cburst $TC_CBURST
/sbin/tc class del dev $EXT_IF_TC parent 1:2 classid 1:$markup htb rate "$rateup"kbit burst $TC_BURST cburst $TC_CBURST
Ньюансы:
- использую НАТ
- при этих настройках адреса всех клиентов должны быть в диапазоне ххх.ххх.0.0/16 (у меня 10.1.0.0/16)
- на внутреннем интерфейсе висят 20 вланов (10.1.xxx.0/24), но шейпинг делаю для основного: eth1
Критикуйте !