#!/bin/bash # Add a Class Based Queue to interface tc qdisc add dev eth0 root handle 10\: cbq \ bandwidth 1Mbit avpkt 1000 # CBQ Classes tc qdisc add dev eth1 parent 10\: classid 10\:1 cbq \ bandwidth 1Mbit rate 1Mbit allot 1514 \ weight 1Mbit prio 8 maxburst 20 avpkt 1000 # FTP tc qdisc add dev eth1 parent 10:0 classid 10:100 cbq \ bandwidth 1Mbit rate 500Kbit allot 1514 \ weight 500kbit prio 5 maxburst 20 avpkt 1000 bounded # Web tc qdisc add dev eth1 parent 10:0 classid 10:200 cbq \ bandwidth 1Mbit rate 500Kbit allot 1514 \ weight 500kbit prio 5 maxburst 20 avpkt 1000 bounded # Filter rule tc filter add dev eth1 parent 10:1 protocol ip handle 6 fw classid 10:100 iptables -t mangle -A PREROUTING -j MARK -p tcp --sport 20 --set-mark 6 # Da provare quando iptables ha incluso di default il target di length per # i pacchetti # Pacchetti con dimensioni tra 0 e 500 byte vengono marchiati con il numero 3 # Classe Interattiva #iptables -t mangle -A OUTPUT -m length --length 0:500 -j MARK --set-mark 3 # Pacchetti con dimensioni tra 500 e 1500 byte vengono marchiati con il numero 4 # Classe Dati #iptables -t mangle -A OUTPUT -m length --length 500:1500 -j MARK --set-mark 4 # Questa ci crea il qdisc di tipo cbq sul ppp0 #tc qdisc add dev ppp0 root handle 10: cbq bandwidth 1Mbit avpkt 1000 mpu 64 # Il conto e' cosi : # Classe interattiva = Banda in download / 20 # Classe dati = Banda in upload - Classe interattiva #tc class add dev ppp0 parent 10:0 classid 10:1 cbq bandwidth 1Mbit \ # rate 30Kbit allot 1514 prio 1 maxburst 10 avpkt 100 isolated #tc class add dev ppp0 parent 10:0 classid 10:2 cbq bandwidth 1Mbit \ # rate 170Kbit allot 1514 prio 8 maxburst 2 avpkt 1500 bounded #tc filter add dev ppp0 parent 10:0 protocol ip handle 3 fw flowid 10:1 #tc filter add dev ppp0 parent 10:0 protocol ip handle 4 fw flowid 10:2