# Step 1: Add root HTB qdisc to eth1 tc qdisc add dev eth1 root handle 1: htb default 100 # Step 2: Create top-level classes (Scheduler 2 and Scheduler 4) tc class add dev eth1 parent 1: classid 1:10 htb rate 10mbit # Scheduler 2 tc class add dev eth1 parent 1: classid 1:20 htb rate 10mbit # Scheduler 4 # Step 3: Create second-level classes (Scheduler 1 and Scheduler 3) tc class add dev eth1 parent 1:10 classid 1:11 htb rate 5mbit # Scheduler 1 tc class add dev eth1 parent 1:20 classid 1:21 htb rate 5mbit # Scheduler 3 # Step 4: Create leaf classes (Queues) tc class add dev eth1 parent 1:11 classid 1:111 htb rate 2mbit # Queue 1 tc class add dev eth1 parent 1:11 classid 1:112 htb rate 3mbit # Queue 2 tc class add dev eth1 parent 1:21 classid 1:211 htb rate 2mbit # Queue 3 tc class add dev eth1 parent 1:21 classid 1:212 htb rate 3mbit # Queue 4 # Step 5: Attach filters to classify traffic into queues # You can change IPs or match conditions as needed # Queue 1: traffic from 192.168.1.1 tc filter add dev eth1 protocol ip parent 1: prio 1 u32 \ match ip src 192.168.1.1/32 flowid 1:111 # Queue 2: traffic from 192.168.1.2 tc filter add dev eth1 protocol ip parent 1: prio 1 u32 \ match ip src 192.168.1.2/32 flowid 1:112 # Queue 3: traffic from 192.168.1.3 tc filter add dev eth1 protocol ip parent 1: prio 1 u32 \ match ip src 192.168.1.3/32 flowid 1:211 # Queue 4: traffic from 192.168.1.4 tc filter add dev eth1 protocol ip parent 1: prio 1 u32 \ match ip src 192.168.1.4/32 flowid 1:212