Tadam! Netem is now fully integrated into mfold.
[swift-upb.git] / mfold / netem.default.sh
1 #!/bin/sh
2  
3 if [ ! $EMIF ] ; then
4     exit
5 fi
6
7 if [ ! $EMLOSS ]; then
8     EMLOSS=0%
9 fi
10
11 if [ ! $EMDELAY ]; then
12     EMDELAY=10ms
13 fi
14
15 if [ ! $EMBW ]; then
16     EMBW=10mbit
17 fi
18
19 if [ ! $EMJTTR ]; then
20     EMJTTR=0ms
21 fi
22
23 TC="sudo tc "
24
25 echo ifb0 up
26 sudo modprobe ifb
27 sudo ip link set dev ifb0 up
28
29 echo cleanup
30 $TC qdisc del dev $EMIF ingress
31 $TC qdisc del dev ifb0 root
32  
33 echo adding ingress
34 $TC qdisc add dev $EMIF ingress || exit 1
35
36 echo redirecting to ifb
37 $TC filter add dev $EMIF parent ffff: protocol ip prio 1 u32 \
38         match ip sport $SWFTPORT 0xffff flowid 1:1 action mirred egress redirect dev ifb0 || exit 2
39 echo adding netem for $EMDELAY - $EMLOSS
40 $TC qdisc add dev ifb0 root handle 1:0 netem delay $EMDELAY $EMJTTR 25% loss $EMLOSS || exit 3
41 echo adding tfb for $EMBW
42 $TC qdisc add dev ifb0 parent 1:1 handle 10: tbf rate $EMBW buffer 102400 latency 40ms || exit 4
43