Advertisement
AtZako

S15shaper_experimental_user_torr

May 5th, 2011
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.69 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. SHAPER_SUPPORT=`flash get SHAPER_ENABLE | cut -f 2- -d =`
  4. OUTIFACE=ppp0
  5. LOG="logger -t init.d"
  6.  
  7. start() {
  8. if [ "$SHAPER_SUPPORT" = "on" ]; then
  9.  
  10. $LOG "Start shaper and stop nat fastpath..."
  11. echo 0 > /proc/FastPath
  12. modprobe sch_esfq > /dev/null 2>&1
  13. modprobe sch_sfq > /dev/null 2>&1
  14.  
  15. #get parametrs
  16. BANDWIDTHUP=`flash get TOTAL_BANDWIDTH_UP | cut -f 2- -d =`
  17. BANDWIDTHDOWN=`flash get TOTAL_BANDWIDTH_DOWN | cut -f 2- -d =`
  18. BANDWIDTHUP_LIMIT=`flash get TOTAL_BANDWIDTH_LIMIT_UP | cut -f 2- -d =`
  19. BANDWIDTHDOWN_LIMIT=`flash get TOTAL_BANDWIDTH_LIMIT_DOWN | cut -f 2- -d =`
  20. LAN_IP_ADDR=`flash get LAN_IP_ADDR | cut -f 2- -d =`
  21. LAN_IP_ADDR2=`flash get LAN_IP_ADDR2 | cut -f 2- -d =`
  22. SHAPER_IN_ENABLE=`flash get SHAPER_IN_ENABLE | cut -f 2- -d =`
  23. #----------------------------------------------CLEAR---------------------------------------------------------------
  24.     #incoming traffic from all ppp interfaces session balance
  25.     tc qdisc del dev br0 root > /dev/null 2>&1
  26.     tc qdisc del dev $OUTIFACE root > /dev/null 2>&1
  27.     tc qdisc del dev $OUTIFACE ingress > /dev/null 2>&1
  28. #--------------------------------------------INCOMING---------------------------------------------------------------
  29. # Оставляем как есть:
  30.  # Пишем в лог значения установленных скоростей
  31.  $LOG "All incoming ppp rate: normal $BANDWIDTHDOWN_LIMIT , maximum $BANDWIDTHDOWN (kbit/s)"
  32.  
  33.  # Создаем дисциплину и корневой класс с максимальной гарантированной скоростью 90Мбит/с на всех.
  34.  # Весь неклассифицированный трафик пойдет на 21 класс
  35.  tc qdisc add dev br0 root handle 1: htb default 21
  36.  tc class add dev br0 parent 1: classid 1:1 htb rate 90mbit quantum 1500 burst 500k
  37.  
  38.  # Делим его на два подкласса: 2 - интернет, 3 - локалка.
  39.  #   ${BANDWIDTHDOWN} - гарантированная скорость интернета, устанавливается через веб.
  40.  # Для локалки 90Мбит/с максимум, 80Мбит/с гарантированно.
  41.  tc class add dev br0 parent 1:1 classid 1:2 htb rate ${BANDWIDTHDOWN}kbit quantum 1500 burst 300k
  42.  tc class add dev br0 parent 1:1 classid 1:3 htb rate 80mbit ceil 90mbit prio 0 quantum 1500 burst 100k
  43.  
  44.  # Делим класс с интернетом, например, на четыре подкласса. Каждый подкласс для одного адреса, т.е. пользователя.
  45.  # Приоритет одинаков.
  46.  # Последний подкласс для неклассифицированного трафика.
  47. # root for WEB and TORRENT
  48.  tc class add dev br0 parent 1:2 classid 1:20 htb rate ${BANDWIDTHDOWN_LIMIT}kbit ceil ${BANDWIDTHDOWN}kbit prio 1 quantum 1500 burst 300k
  49. # WEB
  50.  tc class add dev br0 parent 1:20 classid 1:201 htb rate 500kbit prio 1 quantum 1500 burst 300k
  51. # TORRENT
  52.  tc class add dev br0 parent 1:20 classid 1:202 htb rate 240kbit prio 3 quantum 1500 burst 50k
  53. # UNSPECIFIED
  54.  tc class add dev br0 parent 1:2 classid 1:21 htb rate 1kbit ceil 64kbit prio 2 quantum 1500
  55.  
  56.  # Дисциплины очередей на классы.
  57.  tc qdisc add dev br0 parent 1:3 handle 3: esfq perturb 10 hash dst quantum 1500
  58.  tc qdisc add dev br0 parent 1:20 handle 20: esfq perturb 10 hash dst quantum 1500
  59.  tc qdisc add dev br0 parent 1:201 handle 201: esfq perturb 10 hash dst quantum 1500
  60.  tc qdisc add dev br0 parent 1:202 handle 202: esfq perturb 10 hash dst quantum 1500
  61.  tc qdisc add dev br0 parent 1:21 handle 21: esfq perturb 10 hash dst quantum 1500
  62.  
  63.  # Фильтры.
  64. # TORRENT
  65.  tc filter add dev br0 parent 1:0 prio 3 protocol ip handle 22 fw u32 match ip dst 192.168.1.0/24 flowid 1:202
  66. # OTHER traffic
  67.  tc filter add dev br0 parent 1:0 prio 1 protocol ip u32 match ip dst 192.168.1.0/24 flowid 1:201
  68. # UNSPECIFIED
  69.  tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip flowid 1:21
  70.  
  71.  # Фильтр для локалки.
  72.  tc filter add dev br0 parent 1:0 protocol ip prio 0 u32 match ip src $LAN_IP_ADDR flowid 1:3
  73.  
  74. #---------------------------------------------OUTGOING--------------------------------------------------------------
  75.     #all output traffic for ppp0
  76.     $LOG "All outgoing ppp rate: normal $BANDWIDTHUP_LIMIT , maximum $BANDWIDTHUP (kbit/s)"
  77.     tc qdisc add dev $OUTIFACE root handle 1: htb default 24
  78.     tc class add dev $OUTIFACE parent 1:  classid 1:1 htb rate ${BANDWIDTHUP}kbit quantum 1500 burst 50k
  79.  
  80.     tc class add dev $OUTIFACE parent 1:1 classid 1:23 htb rate ${BANDWIDTHUP_LIMIT}kbit \
  81.     ceil ${BANDWIDTHUP}kbit prio 0 quantum 1500
  82.     tc class add dev $OUTIFACE parent 1:1 classid 1:24 htb rate 1kbit ceil 8kbit prio 1 quantum 1500
  83.  
  84.     tc qdisc add dev $OUTIFACE parent 1:23 handle 23: sfq perturb 10 quantum 1500
  85.     tc qdisc add dev $OUTIFACE parent 1:24 handle 24: sfq perturb 10 quantum 1500
  86.  
  87.     tc filter add dev $OUTIFACE parent 1:0 protocol ip prio 0 u32 match ip src $LAN_IP_ADDR flowid 1:23
  88. #-----------------------------------------------BRIDGE---------------------------------------------------------------
  89. else
  90.     $LOG "Shaper disabled by user."
  91. fi
  92. }
  93.  
  94. stop() {
  95.     $LOG "Stop shaper..."
  96.     tc qdisc del dev br0 root > /dev/null 2>&1
  97.     tc qdisc del dev $OUTIFACE root > /dev/null 2>&1
  98.     tc qdisc del dev $OUTIFACE ingress > /dev/null 2>&1
  99.     rmmod sch_esfq > /dev/null 2>&1
  100.     rmmod sch_sfq > /dev/null 2>&1
  101. }
  102.  
  103. case "$1" in
  104.     start)
  105.         start
  106.         ;;
  107.  
  108.     stop)
  109.         stop
  110.         ;;
  111.  
  112.     restart)
  113.         stop
  114.         start
  115.         ;;
  116.  
  117.     *)
  118.         echo $"Usage: $0 {start|stop|restart}"
  119.         exit 1
  120. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement