Перейти до

dummy

Сitizens
  • Всього повідомлень

    277
  • Приєднався

  • Останній візит

  • Дней в лидерах

    1

Community Answers

  1. 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
     
    Критикуйте !
×
×
  • Створити нове...