There are many scripts in sourceforge.net with which you can do shaper (for example: HTB + tc; CBQ.init). Here's one simple example of how a channel of 20Mbps can be divided into 4 clients to put a minimum speed:
Code:
tc class add dev $DEV parent 1: classid 1:106 cbq rate 20Mbps allot 1500 prio 4 bounded isolated
tc class add dev $DEV parent 1:106 classid 1:107 cbq rate 5Mbps allot 1500 prio 8 borrow
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst XX.XXX.XX.XX flowid 1:107
tc class add dev $DEV parent 1:106 classid 1:108 cbq rate 5Mbps allot 1500 prio 8 borrow
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst XX.XXX.XX.XX flowid 1:108
tc class add dev $DEV parent 1:106 classid 1:109 cbq rate 5Mbps allot 1500 prio 8 borrow
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst XX.XXX.XX.XX flowid 1:109
tc class add dev $DEV parent 1:106 classid 1:110 cbq rate 5Mbps allot 1500 prio 8 borrow
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst XX.XXX.XX.XX flowid 1:110
tc - Linux traffic shaper
XX.XXX.XX.XX - destination IP