브리지 포트의 TC

브리지 포트의 TC

4포트 브리지가 있습니다.

root@Linux-Switch:~# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.000024cd2cb0   no      eth0
                            eth1
                            eth2
                            eth3

내 목표는 eth2 인터페이스의 업로드 속도를 제한하는 것입니다. (eth0은 업스트림 스위치의 업링크 인터페이스입니다). 나는 tc와 iptables를 통해 이 작업을 수행하려고 했습니다.

# tried in both the filter table and mangle table
iptables -A FORWARD -t mangle -m physdev --physdev-in eth2 -j MARK --set-mark 5 

tc qdisc add dev eth0 root handle 1:0 htb default 2
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1mbit ceil 1mbit
tc class add dev eth0 parent 1:0 classid 1:2 htb rate 5mbit ceil 5mbit
tc filter add dev eth0 parent 1:0 handle 5 fw flowid 1:1

iptables규칙이 일치하는 것을 볼 수 있습니다 .

root@Linux-Switch:~# iptables -vL -t mangle
...

Chain FORWARD (policy ACCEPT 107K packets, 96M bytes)
 pkts bytes target     prot opt in     out     source   destination         
38269   11M MARK       all  --  any    any     anywhere anywhere     PHYSDEV match --physdev-in eth2 MARK set 0x5 

...
root@Linux-Switch:~# 

그러나 tc 구성은 펌웨어 플래그를 읽지 않았습니다. 포트 eth2의 모든 트래픽은 제가 구성하려고 했던 1Mb가 아닌 기본 5Mb로 제한되었습니다.

root@Linux-Switch:~# tc -s class show dev eth0
class htb 1:1 root prio 0 rate 1000Kbit ceil 1000Kbit burst 100Kb cburst 100Kb 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 200000 ctokens: 200000

class htb 1:2 root prio 0 rate 5000Kbit ceil 5000Kbit burst 100Kb cburst 100Kb 
 Sent 11465766 bytes 39161 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 6744bit 3pps backlog 0b 0p requeues 0 
 lended: 39161 borrowed: 0 giants: 0
 tokens: 2454400 ctokens: 2454400

root@Linux-Switch:~# 

내가 뭘 잘못했나요?

답변1

나는 그것을 알아냈습니다. 필터에 "프로토콜"을 지정해야 합니다. 이에 대한 많은 문서를 찾을 수 있습니다. 찾을 수 있는 모든 예에서는 프로토콜을 "ip"로 지정하지만 이것이 스위치이기 때문에 "all"을 시도하면 작동한다고 생각했습니다!

tc qdisc add dev eth0 root handle 1:0 htb default 2
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1mbit ceil 1mbit
tc class add dev eth0 parent 1:0 classid 1:2 htb rate 5mbit ceil 5mbit
tc filter add dev eth0 parent 1:0 handle protocol all 5 fw flowid 1:1

관련 정보