tc trên cổng cầu


8

Tôi có một cây cầu 4 cổng:

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

Mục tiêu của tôi là giới hạn tốc độ tải lên của giao diện eth2. (eth0 là giao diện đường lên tới công tắc ngược dòng). Tôi đã cố gắng làm điều này thông qua tc và 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

Tôi có thể thấy rằng iptablesquy tắc phù hợp-

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:~# 

Nhưng cấu hình tc không đọc dấu fw; tất cả lưu lượng truy cập trong cổng eth2 đang bị giới hạn ở mặc định 5Mb, không phải là 1Mb tôi đang cố gắng định cấu hình.

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:~# 

Tôi đang làm gì sai?


Có phù hợp nếu bạn thêm nó vào br0thay thế? Đồng thời chỉ định rõ ràng bộ lọc là 0x5 thay vì chỉ 5 tại dòng lệnh (cho cả tc và iptables).
frostschutz

Câu trả lời:


4

Tôi đã tìm ra nó - tôi phải chỉ định một 'giao thức' trong bộ lọc. Tôi có thể tìm thấy nhiều tài liệu về điều này - tất cả các ví dụ tôi có thể tìm thấy đã chỉ định giao thức là 'ip' nhưng vì đây là một công tắc, tôi nghĩ tôi đã thử 'tất cả' và nó đã hoạt động!

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.