Tôi đang cố gắng hạn chế băng thông tc
và kiểm tra kết quả iperf
. Tôi bắt đầu như thế này:
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.7 port 35213 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 830 MBytes 696 Mbits/sec
Hai trường hợp được kết nối trực tiếp với thông qua Ethernet.
Sau đó, tôi thiết lập một htb
qdisc
lớp mặc định để giới hạn băng thông ở mức 1mbit / giây:
# tc qdisc add dev bond0 root handle 1: htb default 12
# tc class add dev bond0 parent 1: classid 1:12 htb rate 1mbit
Nhưng tôi không nhận được những gì tôi mong đợi:
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.7 port 35217 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-12.8 sec 768 KBytes 491 Kbits/sec
Nếu tôi tăng gấp đôi tốc độ, băng thông đo được sẽ không thay đổi. Tôi đang thiếu gì? Tại sao băng thông đo được không tương ứng với 1mbit từ rate
tham số? Tôi cần đặt tham số nào để giới hạn băng thông ở một tỷ lệ chính xác?
Tuy nhiên, man
trang nói rằng tbf
nên là qdisc
lựa chọn cho nhiệm vụ này:
Bộ lọc Token Xô phù hợp để làm chậm lưu lượng xuống mức được định cấu hình chính xác. Cân tốt đến băng thông lớn.
tbf
đòi hỏi các thông số rate
, burst
và ( limit
| latency
). Vì vậy, tôi đã thử cách sau mà không hiểu làm thế nào burst
và ( limit
| latency
) ảnh hưởng đến băng thông có sẵn:
# tc qdisc add dev bond0 root tbf rate 1mbit limit 10k burst 10k
Điều này giúp tôi có băng thông đo được là 113 Kbit / giây. Chơi xung quanh với các tham số đó đã không thay đổi nhiều cho đến khi tôi nhận thấy rằng việc thêm một giá trị cho mtu
những thay đổi mạnh mẽ:
# tc qdisc add dev bond0 root tbf rate 1mbit limit 10k burst 10k mtu 5000
dẫn đến băng thông đo được là 1,00 Mbits / giây.
Những thông số nào tôi cần đặt để giới hạn băng thông ở một tỷ lệ chính xác?
Tôi nên sử dụng htb
hoặc tbf
kỷ luật xếp hàng cho việc này?
CHỈNH SỬA :
Dựa trên những tài nguyên này, tôi đã thực hiện một số thử nghiệm:
- https://help.ubfox.com/community/UbfoxBonding
- https://help.ubfox.com/community/LinkAggregation
- /usr/share/doc/ifenslave-2.6/README.Debian.gz http://lartc.org/
Tôi đã thử các thiết lập sau.
Trên máy vật lý
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports eth0
Đo lường với iperf
:
# tc qdisc add dev eth0 root handle 1: htb default 12
# tc class add dev eth0 parent 1: classid 1:12 htb rate 1mbit
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.4 port 51804 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-11.9 sec 1.62 MBytes 1.14 Mbits/sec
Trong khi đó iperf
máy chủ tính toán một băng thông khác nhau:
[ 4] local 192.168.2.1 port 5001 connected with 192.168.2.4 port 51804
[ 4] 0.0-13.7 sec 1.62 MBytes 993 Kbits/sec
Trên máy ảo mà không cần liên kết
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Đo lường với iperf
:
# tc qdisc add dev eth0 root handle 1: htb default 12
# tc class add dev eth0 parent 1: classid 1:12 htb rate 1mbit
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.7 port 34347 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-11.3 sec 1.62 MBytes 1.21 Mbits/sec
Trong khi đó iperf
máy chủ tính toán một băng thông khác nhau:
[ 4] local 192.168.2.1 port 5001 connected with 192.168.2.7 port 34347
[ 4] 0.0-14.0 sec 1.62 MBytes 972 Kbits/sec
Trên máy ảo có liên kết (tc được định cấu hình trên eth0)
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
allow-bond0 eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0 eth1
auto eth1
allow-bond0 eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth0 eth1
auto bond0
iface bond0 inet dhcp
bond-slaves none
bond-mode 1
# bond-arp-interval 250
# bond-arp-ip-target 192.168.2.1
# bond-arp-validate 3
Đo lường với iperf
:
# tc qdisc add dev eth0 root handle 1: htb default 12
# tc class add dev eth0 parent 1: classid 1:12 htb rate 1mbit
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.9 port 49054 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-11.9 sec 1.62 MBytes 1.14 Mbits/sec
Trong khi đó iperf
máy chủ tính toán một băng thông khác nhau:
[ 4] local 192.168.2.1 port 5001 connected with 192.168.2.9 port 49054
[ 4] 0.0-14.0 sec 1.62 MBytes 972 Kbits/sec
Trên một máy ảo có liên kết (tc được cấu hình trên bond0)
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
allow-bond0 eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0 eth1
auto eth1
allow-bond0 eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth0 eth1
auto bond0
iface bond0 inet dhcp
bond-slaves none
bond-mode 1
# bond-arp-interval 250
# bond-arp-ip-target 192.168.2.1
# bond-arp-validate 3
Đo lường với iperf
:
# tc qdisc add dev bond0 root handle 1: htb default 12
# tc class add dev bond0 parent 1: classid 1:12 htb rate 1mbit
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.9 port 49055 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-13.3 sec 768 KBytes 475 Kbits/sec
Trong khi đó iperf
máy chủ tính toán một băng thông khác nhau:
[ 4] local 192.168.2.1 port 5001 connected with 192.168.2.9 port 49055
[ 4] 0.0-14.1 sec 768 KBytes 446 Kbits/sec
Kết quả không thay đổi nếu tôi loại bỏ eth1
(giao diện thụ động) khỏi liên kết.
Phần kết luận
Kiểm soát lưu lượng trên giao diện trái phiếu không hoạt động hoặc ít nhất là không như mong đợi. Tôi sẽ phải điều tra thêm.
Như một cách giải quyết, người ta có thể thêm các nguyên tắc xếp hàng trực tiếp vào các giao diện thuộc về trái phiếu.
tc filter
để đặt các gói vào các lớp. Bạn cũng có thể cần thay đổi một số tham số htb (điều chỉnh nó giống như tbf). Tôi đề nghị xem xét tcng
, đó là một mặt trước để tc. (Đây là những gợi ý nhanh ...)