kosmik2001

shaper-eth0.bash

Feb 27th, 2015
503
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.44 KB | None | 0 0
  1. #!/bin/sh
  2. eth="eth0"
  3. ifb="ifb0"
  4. DOWNLOAD="95"
  5. UPLOAD="95"
  6.  
  7. start() {
  8.     /bin/ifconfig $ifb up
  9.  
  10.     /sbin/tc qdisc  add dev $eth root handle 1: htb default 50
  11.     /sbin/tc class  add dev $eth parent 1:  classid 1:1  htb rate $[$UPLOAD-1]Mbit  ceil $[$UPLOAD-1]Mbit   burst 15k
  12.     /sbin/tc class  add dev $eth parent 1:1 classid 1:10 htb rate $[$UPLOAD*4]Kbit  ceil $[$UPLOAD*6]Kbit   burst 2k    prio 0
  13.     /sbin/tc class  add dev $eth parent 1:1 classid 1:20 htb rate $[$UPLOAD*6]Kbit  ceil $[$UPLOAD*8]Kbit   burst 2k    prio 1
  14.     /sbin/tc class  add dev $eth parent 1:1 classid 1:30 htb rate $[$UPLOAD-20]Mbit ceil $[$UPLOAD-3]Mbit   burst 128k  prio 2
  15.     /sbin/tc class  add dev $eth parent 1:1 classid 1:40 htb rate $[$UPLOAD/10]Mbit ceil $[$UPLOAD-3]Mbit   burst 15k   prio 3
  16.     /sbin/tc class  add dev $eth parent 1:1 classid 1:50 htb rate $[$UPLOAD/10]Mbit ceil $[$UPLOAD-10]Mbit  burst 15k   prio 7
  17.  
  18.     /sbin/tc qdisc  add dev $eth parent 1:10 handle 10: sfq perturb 10
  19.     /sbin/tc qdisc  add dev $eth parent 1:20 handle 20: sfq perturb 10
  20.     /sbin/tc qdisc  add dev $eth parent 1:30 handle 30: sfq perturb 10
  21.     /sbin/tc qdisc  add dev $eth parent 1:40 handle 40: sfq perturb 10
  22.     /sbin/tc qdisc  add dev $eth parent 1:50 handle 50: sfq perturb 10
  23.  
  24.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 1 u32 match ip dport   53  0xffff flowid 1:10
  25.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 1 u32 match ip sport   53  0xffff flowid 1:10
  26.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 2 u32 match ip protocol    1   0xff   flowid 1:20
  27.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 2 u32 match ip sport   8143    0xffff flowid 1:30
  28.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 2 u32 match ip dport   8143    0xffff flowid 1:30
  29.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 3 u32 match ip sport   80  0xffff flowid 1:30
  30.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 3 u32 match ip dport   80  0xffff flowid 1:30
  31.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 4 u32 match ip sport   443 0xffff flowid 1:30
  32.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 4 u32 match ip dport   443 0xffff flowid 1:30
  33.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 4 u32 match ip sport   5938    0xffff flowid 1:40
  34.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 4 u32 match ip dport   5938    0xffff flowid 1:40
  35.     /sbin/tc filter add dev $eth parent 1:0 protocol ip prio 7 u32 match ip src 172.16.81.97/32 flowid 1:50
  36.  
  37.     /sbin/tc qdisc  add dev $eth handle ffff: ingress
  38.     /sbin/tc filter add dev $eth parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $ifb
  39.     #------------------------------------#
  40.     /sbin/tc qdisc  add dev $ifb root handle 1: htb default 50
  41.     /sbin/tc class  add dev $ifb parent 1:  classid 1:1  htb rate $[$DOWNLOAD-1]Mbit ceil $[$DOWNLOAD-1]Mbit burst 15k
  42.     /sbin/tc class  add dev $ifb parent 1:1 classid 1:10 htb rate $[$DOWNLOAD*4]Kbit ceil $[$DOWNLOAD*6]Kbit    burst 2k    prio 0
  43.     /sbin/tc class  add dev $ifb parent 1:1 classid 1:20 htb rate $[$DOWNLOAD*6]Kbit ceil $[$DOWNLOAD*8]Kbit    burst 2k    prio 1
  44.     /sbin/tc class  add dev $ifb parent 1:1 classid 1:30 htb rate $[$DOWNLOAD-20]Mbit ceil $[$DOWNLOAD-3]Mbit   burst 128k  prio 2
  45.     /sbin/tc class  add dev $ifb parent 1:1 classid 1:40 htb rate $[$DOWNLOAD/10]Mbit ceil $[$DOWNLOAD-3]Mbit   burst 15k   prio 3
  46.     /sbin/tc class  add dev $ifb parent 1:1 classid 1:50 htb rate $[$DOWNLOAD/10]Mbit ceil $[$DOWNLOAD-10]Mbit  burst 15k   prio 7
  47.  
  48.     /sbin/tc qdisc  add dev $ifb parent 1:10 handle 10: sfq perturb 10
  49.     /sbin/tc qdisc  add dev $ifb parent 1:20 handle 20: sfq perturb 10
  50.     /sbin/tc qdisc  add dev $ifb parent 1:30 handle 30: sfq perturb 10
  51.     /sbin/tc qdisc  add dev $ifb parent 1:40 handle 40: sfq perturb 10
  52.     /sbin/tc qdisc  add dev $ifb parent 1:50 handle 50: sfq perturb 10
  53.  
  54.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 1 u32 match ip sport   53  0xffff flowid 1:10
  55.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 1 u32 match ip dport   53  0xffff flowid 1:10
  56.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 1 u32 match ip protocol    1   0xff   flowid 1:20
  57.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 1 u32 match ip sport   8143    0xffff flowid 1:30
  58.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 1 u32 match ip dport   8143    0xffff flowid 1:30
  59.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 2 u32 match ip sport   80  0xffff flowid 1:30
  60.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 2 u32 match ip dport   80  0xffff flowid 1:30
  61.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 3 u32 match ip sport   443 0xffff flowid 1:30
  62.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 3 u32 match ip dport   443 0xffff flowid 1:30
  63.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 1 u32 match ip sport   5938    0xffff flowid 1:40
  64.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 1 u32 match ip dport   5938    0xffff flowid 1:40
  65.     /sbin/tc filter add dev $ifb parent 1:0 protocol ip prio 7 u32 match ip dst 172.16.81.97/32 flowid 1:50
  66.     echo "Shape on $eth and $ifb was started"
  67. }
  68.  
  69. stop() {
  70.     /sbin/tc qdisc del dev $ifb root 2>/dev/null
  71.     /sbin/tc qdisc del dev $eth handle ffff: ingress 2>/dev/null
  72.     /sbin/tc qdisc del dev $eth root 2>/dev/null
  73.     /bin/ifconfig $ifb down
  74.     echo "Shape on $eth and $ifb is down"
  75. }
  76.  
  77. restart() {
  78.     stop
  79.     start
  80. }
  81.  
  82. $@
Advertisement
Add Comment
Please, Sign In to add comment