Điểm:0

Thông số "tỷ lệ" HTB giới hạn băng thông khả dụng

lá cờ jp

Ngày tốt,

Tôi gặp trường hợp sau: 4 luồng dữ liệu TCP từ máy này sang máy khác. Mỗi luồng có Cổng TCP đích riêng. 4 luồng có mức độ ưu tiên khác nhau: cao, trung bình, thấp, số lượng lớn. Cao, trung bình, thấp tạo ra 1,67Mbit/s và số lượng lớn tạo ra 10Mbit/s. (iperf3 được sử dụng để tạo lưu lượng truy cập). Các gói của mỗi luồng được đánh dấu bằng dấu DiffServ thích hợp (DSCP) và dấu này được sử dụng để phân loại lưu lượng trong HTB qdisc.

Ghi bàn: HTB qdisc phải được định cấu hình theo cách sao cho bất cứ lúc nào luồng ưu tiên cao đều nhận được yêu cầu 1,67Mbit/s, ưu tiên trung bình cũng được đảm bảo 1,67Mbit/s nhưng với ưu tiên thấp hơn một chút và phần còn lại của lưu lượng phải được đảm bảo 50kbit/ S. Mỗi luồng phải có khả năng sử dụng toàn bộ liên kết nếu nó không hoạt động và luồng tạo ra nhiều băng thông hơn so với chỉ định ban đầu.

Tạo lưu lượng truy cập:

Ưu tiên cao:
iperf3 -c 192.168.88.254 -p 5150 -t 62 -b 1.67M -l 128 -S 224 
Ưu tiên trung bình:
iperf3 -c 192.168.88.254 -p 5160 -t 62 -b 1.67M -l 4K -S 160 
Ưu tiên thấp:
iperf3 -c 192.168.88.254 -p 5170 -t 62 -b 1.67M -l 4K -S 96 
số lượng lớn:
iperf3 -c 192.168.88.254 -p 5180 -t 62 -b 10M -l 4K -S 0 

Cấu hình HTB qdisc

NI="eth2"
AC="sudo /sbin/tc lớp thêm nhà phát triển"

# Xóa qdiscs trước đó
Sudo /sbin/tc qdisc del dev $NI root

# Thêm HTB với quyền root với lớp 40 mặc định cho lưu lượng truy cập chưa được phân loại
sudo /sbin/tc qdisc add dev $NI xử lý gốc 1: htb mặc định 40
sudo /sbin/tc class add dev $NI parent 1: classid 1:1 tốc độ htb 3,5mbit ceil 1000mbit

# luồng ưu tiên cao DSCP 224 - 1110 0000 - 0xE0
$AC $NI cha 1:1 classid 1:10 tỷ lệ htb 1,7mbit ceil 1000mbit trước 1
# luồng ưu tiên trung bình 
$AC $NI cha 1:1 classid 1:20 tỷ lệ htb 1,7mbit ceil 1000mbit trước 2
# luồng ưu tiên thấp
$AC $NI cha 1:1 classid 1:30 tốc độ htb 50kbit ceil 1000mbit trước 3
# luồng số lượng lớn
$AC $NI cha 1:1 classid 1:40 tốc độ htb 50kbit ceil 1000mbit ưu tiên 4 

# Thêm bộ lọc để phân loại các gói dựa trên dấu dscp

# ưu tiên cao DSCP 224 - 1110 0000 - 0xE0
sudo /sbin/tc filter add dev $NI giao thức ip cha mẹ 1: ưu tiên 1 u32 khớp với ip tos 0xE0 0xff flowid 1:10
# ưu tiên trung bình DSCP 160 - 1010 0000 - 0xA0
sudo /sbin/tc filter add dev $NI giao thức ip cha mẹ 1: ưu tiên 2 u32 khớp với ip tos 0xA0 0xff flowid 1:20
# ưu tiên thấp DSCP 96 - 1100 0000 - 0x60
sudo /sbin/tc filter add dev $NI giao thức ip cha mẹ 1: ưu tiên 3 u32 khớp với ip tos 0x60 0xff flowid 1:30
# số lượng lớn DSCP 0 - 0000 0000 - 0x00
sudo /sbin/tc filter add dev $NI giao thức ip cha mẹ 1: ưu tiên 4 u32 khớp với ip tos 0x00 0xff flowid 1:40

Lưu lượng truy cập được phân loại chính xác. Tôi có thể thấy các bộ đếm có liên quan trong số liệu thống kê lớp tc đang tăng lên. Tôi đã kiểm tra lại điều này nhiều lần.

Vấn đề: Cấu hình này phân bổ chính xác băng thông cho các luồng ưu tiên cao và trung bình. Ưu tiên thấp và số lượng lớn cũng nhận được 50kbit của họ. Tuy nhiên, Tôi không thể đẩy liên kết nhiều hơn giá trị được chỉ định trong thư mục gốc lớp1:1 như tỷ lệ tức là 3,5mbit.

Trong mọi bài báo và sách hướng dẫn về HTB mà tôi đọc đều có nêu thông số "tỷ lệ" là tỷ lệ được đảm bảo tối thiểu đối với hạng và "trần" là số tiền tối đa mà nó có thể nhận được. Trong trường hợp của tôi, có vẻ như "tỷ lệ" giới hạn liên kết ở giá trị được chỉ định. Đây chắc chắn không phải là hành vi mong muốn và dự kiến.

Nếu tôi đặt tham số "tốc độ" của lớp gốc thành cùng giá trị với "trần", tức là 1000mbit, thì không có ưu tiên nào diễn ra và băng thông khả dụng được chia đều cho tất cả các luồng. Đây không phải là hành vi mong muốn vì trong trường hợp băng thông khả dụng dao động, lưu lượng ưu tiên sẽ nhận được ít hơn 1,67Mbit/s

Tôi đã hiểu sai ý nghĩa của tham số "tỷ lệ" trong lớp gốc phải không? Vấn đề này bằng cách nào đó có liên quan đến các tham số HTB khác như "lượng tử" không? Tôi cũng quan sát thấy rằng mọi lớp đều có số lượng mã thông báo âm trong quá trình truyền dữ liệu. Điều này có tệ không? Nếu vậy, những thông số tôi nên điều chỉnh và làm thế nào?

Cảm ơn bạn trước!

Điểm:0
lá cờ us

Tham số trần không có tác dụng trong lớp gốc, bạn chỉ nên đặt tốc độ một.

Nếu mục tiêu của bạn là làm cho phần trần của quy mô lớp con, bạn có thể sử dụng hfsc thay vì HTB nhưng điều đó sẽ không ngăn cản việc yêu cầu tốc độ tối đa ngay cả khi bạn không có đủ băng thông.

Nếu mục tiêu của bạn là xử lý kết nối internet không ổn định, thì cách này sẽ không hoạt động theo cách này vì bạn đang giới hạn phần tải lên và phần tải xuống vẫn sẽ không được ưu tiên. Bạn có thể tìm kiếm ifb để giới hạn băng thông tải xuống.

Trong mọi trường hợp, tc sẽ không thể phát hiện ra băng thông khả dụng thực sự của bạn. Tuy nhiên, hãy đảm bảo sử dụng fq_codel để quản lý hàng đợi tốt hơn, bbr cho TCP và nhân Linux gần đây để hạn chế tác động của việc có thể yêu cầu thêm băng thông mà bạn có.

lá cờ jp
Cảm ơn bạn đã gợi ý về HFSC và BBR! Làm rõ câu đầu tiên: vậy đối với lớp gốc, tham số "tỷ lệ" đóng vai trò là "trần" bằng cách giới hạn cứng băng thông khả dụng cho qdisc?
setenforce 1 avatar
lá cờ us
Có, trong lớp gốc, giá trị tỷ lệ được sử dụng cho tỷ lệ và trần.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.