Здравия, товарищи админы. В общем встала необходимость шейпить траффик. Рещил добавить скрипт, который будет заниматься шейпингом. Скрипт написан. Осталось лишь запустить. Но на LAR&TC что то я не очень понял на счет приоритетов, поэтому поясню задачу - есть канал в 20мбит (в обе стороны), есть ресурсы провайдера (до которых скорость 100мбит). Нужно сделать отделение http траффика (вэбсервера на фирме, на отдачу), траффика DC++ хаба (используется на работе, от старого админа начинание) =) и остального траффика.
#!/bin/bash # change these values to suit your needs
ETHERNET_DEVICE="ppp0"
LINK_SPEED="20000Kbit"
LINK_SPEED_PROV="100000Kbit"
UPLOAD_SPEED1="8000Kbit"
UPLOAD_SPEED2="2000Kbit"
UPLOAD_SPEED3="10000Kbit"
PORT1="80"
PORT2="411"
# delete previous root node
tc qdisc del dev $ETHERNET_DEVICE root
# create root node
tc qdisc add dev $ETHERNET_DEVICE root handle 1: htb default 12
# create LINK class
tc class add dev $ETHERNET_DEVICE parent 1: classid 1:1 htb rate $LINK_SPEED
# create our HTTP & HUB shaping class
tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:10 htb rate $UPLOAD_SPEED1 ceil $UPLOAD_SPEED1
tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:11 htb rate $UPLOAD_SPEED2 ceil $LINK_SPEED_PROV
# create our REST class for unutilized bandwidth
tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:12 htb rate $UPLOAD_SPEED3 ceil $LINK_SPEED_PROV
# create the filter for the HTTP & HUB class, we filter on source port 80 (http)
tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 2 u32 match ip sport $PORT1 0xffff flowid 1:10
tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 1 u32 match ip sport $PORT2 0xffff flowid 1:11
tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 1 u32 match ip flowid 1:12