DATA=i
LENGTH=8
FRMTYPE=""
+DEV="can0"
echo "Benchmarking ..."
# Default (pfifo qdisc)
echo "[pfifo]"
- . setcanprio.sh del
+ . setcanfltr.sh del ${DEV}
echo > ${FTRDIR}/trace
- cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cangen ${FRMTYPE} ${DEV} -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_pfifo1.txt
echo > ${FTRDIR}/trace
- cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cangen ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_pfifo2.txt
# With PRIO qdisc; all traffic is classified into first class
echo "[prio]"
echo > ${FTRDIR}/trace
- . setcanprio.sh del
- . setcanprio.sh prio
- cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ . setcanfltr.sh del ${DEV}
+ . setcanfltr.sh prio ${DEV}
+ cangen ${FRMTYPE} ${DEV} -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio1.txt
# With PRIO qdisc; most of the traffic goes to "default" class
echo > ${FTRDIR}/trace
- cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cangen ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio1b.txt
# With PRIO qdisc; There is maximum rules for each (except the last) class
echo "[prio2]"
echo > ${FTRDIR}/trace
- . setcanprio.sh del
+ . setcanfltr.sh del ${DEV}
if [ ${X} == "eff" ]; then
- . setcanprio.sh prio2eff
+ . setcanfltr.sh prio2eff ${DEV}
else
- . setcanprio.sh prio2sff
+ . setcanfltr.sh prio2sff ${DEV}
fi
- cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cangen ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio2.txt
# With HTB qdisc
echo "[htb]"
echo > ${FTRDIR}/trace
- . setcanprio.sh del
- . setcanprio.sh htb
- cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ . setcanfltr.sh del ${DEV}
+ . setcanfltr.sh htb ${DEV}
+ cangen ${FRMTYPE} ${DEV} -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_htb1.txt
echo > ${FTRDIR}/trace
- cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cangen ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_htb2.txt
+
+ # With SFQ qdisc
+ echo "[sfq]"
+ echo > ${FTRDIR}/trace
+ . setcanfltr.sh del ${DEV}
+ . setcanfltr.sh sfq ${DEV}
+ cangen -b 18432 ${FRMTYPE} ${DEV} -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_sfq.txt
+
+ echo > ${FTRDIR}/trace
+ cangen -b 18432 ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_sfq2.txt
+
done
tc qdisc show dev ${DEV}
+elif [ "$1" == "htb" ]; then # Hierarchy Token Bucket
+
+ tc qdisc add dev ${DEV} root handle 1: htb
+
+ tc class add dev ${DEV} parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
+ tc class add dev ${DEV} parent 1:1 classid 1:10 htb rate 30kbps ceil 100kbps
+ tc class add dev ${DEV} parent 1:1 classid 1:11 htb rate 10kbps ceil 100kbps
+ tc class add dev ${DEV} parent 1:1 classid 1:12 htb rate 60kbps ceil 100kbps
+
+ tc filter add dev ${DEV} parent 1:0 prio 1 \
+ can sffid 0x123:0x7ff effid 0x123:0x7ff flowid 1:10
+ tc filter add dev ${DEV} parent 1:0 prio 2 \
+ can sffid 0x124:0x7ff effid 0x124:0x7ff flowid 1:11
+ tc filter add dev ${DEV} parent 1:0 prio 3 \
+ can sffid 0x125:0x7ff effid 0x125:0x7ff flowid 1:12
+
+ tc qdisc add dev ${DEV} parent 1:12 handle 40: sfq perturb 10
+
+elif [ "$1" == "sfq" ]; then
+
+ tc qdisc add dev ${DEV} root handle 1: prio
+
+ tc filter add dev ${DEV} parent 1:0 prio 1 \
+ can sffid 0x111 effid 0x111 flowid 1:1
+
+ tc filter add dev ${DEV} parent 1:0 prio 2 \
+ can \
+ sffid 0x123 effid 0x123 \
+ sffid 0x124 effid 0x124 \
+ sffid 0x125 effid 0x125 \
+ flowid 1:2
+
+ tc filter add dev ${DEV} parent 1:0 prio 3 \
+ can sffid 0x0:0x0 effid 0x0:0x0 flowid 1:3
+ # default class
+
+ # SFQ
+ tc qdisc add dev ${DEV} parent 1:2 handle 10: \
+ sfq perturb 10
+
+ tc qdisc add dev ${DEV} parent 1:3 handle 11: \
+ sfq perturb 10
+
elif [ "$1" == "prio2sff" ]; then # create Prio qdiscs and configure can filter
tc qdisc add dev ${DEV} root handle 1: prio bands 5
tc qdisc show dev ${DEV}
-
-elif [ "$1" == "htb" ]; then # Hierarchy Token Bucket
-
- tc qdisc add dev ${DEV} root handle 1: htb
-
- tc class add dev ${DEV} parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
- tc class add dev ${DEV} parent 1:1 classid 1:10 htb rate 30kbps ceil 100kbps
- tc class add dev ${DEV} parent 1:1 classid 1:11 htb rate 10kbps ceil 100kbps
- tc class add dev ${DEV} parent 1:1 classid 1:12 htb rate 60kbps ceil 100kbps
-
- tc filter add dev ${DEV} parent 1:0 prio 1 \
- can sffid 0x123:0x7ff effid 0x123:0x7ff flowid 1:10
- tc filter add dev ${DEV} parent 1:0 prio 2 \
- can sffid 0x124:0x7ff effid 0x124:0x7ff flowid 1:11
- tc filter add dev ${DEV} parent 1:0 prio 3 \
- can sffid 0x125:0x7ff effid 0x125:0x7ff flowid 1:12
-
- tc qdisc add dev ${DEV} parent 1:12 handle 40: sfq perturb 10
else
echo -e "Usage: $0 [ del | stat | show | change | "
echo -e "\t\t\t change2 | change3 | head_drop | tbf | prio | "
- echo -e "\t\t\t prio2sff | prio2eff | htb ]"
+ echo -e "\t\t\t sfq | prio2sff | prio2eff | htb ]"
fi