X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=src%2Flibswift%2Fmfold%2Fnetem.default.sh;fp=src%2Flibswift%2Fmfold%2Fnetem.default.sh;h=830cc836e695633603f584ab5d306904071bba4d;hb=45963a7511531cd1656ad5d3847d2dafd015c54d;hp=0000000000000000000000000000000000000000;hpb=d069796805ad79542fd7e4406d1e9c6d2d8c2ef7;p=swifty.git diff --git a/src/libswift/mfold/netem.default.sh b/src/libswift/mfold/netem.default.sh new file mode 100755 index 0000000..830cc83 --- /dev/null +++ b/src/libswift/mfold/netem.default.sh @@ -0,0 +1,103 @@ +#!/bin/bash +# Sets HTB/Netem parameters for the server interfaces. netroot script +# must be run before this. + +if [ ! $EMIF ] ; then + exit +fi + +if [ ! $SWFTPORT ]; then + echo No swift port defined! + exit 1 +fi + +if [ ! $EMLOSS ]; then + EMLOSS=0% +fi + +if [ ! $EMDELAY ]; then + EMDELAY=10ms +fi + +if [ ! $EMBW ]; then + EMBW=10mbit +fi + +if [ ! $EMJTTR ]; then + EMJTTR=0ms +fi + +# ingress params +if [ ! $EMLOSS_IN ]; then + EMLOSS_IN=$EMLOSS +fi + +if [ ! $EMDELAY_IN ]; then + EMDELAY_IN=$EMDELAY +fi + +# zero delay in lo may affect htb performance accuracy (?) +if [ $EMDELAY_IN == 0ms ]; then + EMDELAY_LO_IN=0.1ms +else + EMDELAY_LO_IN=$EMDELAY_IN +fi + +if [ ! $EMBW_IN ]; then + EMBW_IN=$EMBW +fi + +if [ ! $EMJTTR_IN ]; then + EMJTTR_IN=$EMJTTR +fi + +# egress params +if [ ! $EMLOSS_OUT ]; then + EMLOSS_OUT=$EMLOSS +fi + +if [ ! $EMDELAY_OUT ]; then + EMDELAY_OUT=$EMDELAY +fi + +if [ ! $EMBW_OUT ]; then + EMBW_OUT=$EMBW +fi + +if [ ! $EMJTTR_OUT ]; then + EMJTTR_OUT=$EMJTTR +fi + +TC="sudo tc " + +CLASSID=$(($SWFTPORT - 9900)) +HANDLEID=1$CLASSID + +# ingress config +echo adding htb class 1:$CLASSID with rate $EMBW_IN to ifb0 +$TC class add dev ifb0 parent 1: classid 1:$CLASSID htb rate $EMBW_IN || exit 2 +echo adding filter for destination port $SWFTPORT for to ifb0 +$TC filter add dev ifb0 protocol ip prio 1 handle ::$CLASSID u32 \ + match ip dport $SWFTPORT 0xffff flowid 1:$CLASSID || exit 3 +echo adding downlink netem handle $HANDLEID for $EMDELAY_IN, $EMLOSS_IN to ifb0 +$TC qdisc add dev ifb0 parent 1:$CLASSID handle $HANDLEID \ + netem delay $EMDELAY_IN $EMJTTR_IN 25% loss $EMLOSS_IN || exit 4 + +echo adding htb class 1:$CLASSID with rate $EMBW_IN to lo +$TC class add dev lo parent 1: classid 1:$CLASSID htb rate $EMBW_IN || exit 5 +echo adding filter for destination port $SWFTPORT for to lo +$TC filter add dev lo protocol ip prio 1 handle ::$CLASSID u32 \ + match ip dport $SWFTPORT 0xffff flowid 1:$CLASSID || exit 6 +echo adding downlink netem handle $HANDLEID for $EMDELAY_LO_IN, $EMLOSS_IN to lo +$TC qdisc add dev lo parent 1:$CLASSID handle $HANDLEID \ + netem delay $EMDELAY_LO_IN $EMJTTR_IN 25% loss $EMLOSS_IN || exit 7 + +#egress config +echo adding htb class 1:$CLASSID with rate $EMBW_OUT to $EMIF +$TC class add dev $EMIF parent 1: classid 1:$CLASSID htb rate $EMBW_OUT || exit 8 +echo adding filter for source port $SWFTPORT for to $EMIF +$TC filter add dev $EMIF protocol ip prio 1 handle ::$CLASSID u32 \ + match ip sport $SWFTPORT 0xffff flowid 1:$CLASSID || exit 9 +echo adding uplink netem handle $HANDLEID for $EMDELAY_OUT, $EMLOSS_OUT to $EMIF +$TC qdisc add dev $EMIF parent 1:$CLASSID handle $HANDLEID \ + netem delay $EMDELAY_OUT $EMJTTR_OUT 25% loss $EMLOSS_OUT || exit 10