Sự cố: Khi tc HTB hoặc CQB được sử dụng để định hình lưu lượng, hai gói đầu tiên được gửi sau một khoảng thời gian nhất định sẽ được gửi ngược trở lại như được ghi trong nhật ký pcap.
Tôi có một máy tính trung gian chạy Ubuntu 18.4 có bật chuyển tiếp mạng. Tôi chạy tc với HTB để định hình lưu lượng để có đầu ra tốc độ bit không đổi trên cổng ra.
Máy khách yêu cầu các khối có kích thước thay đổi từ máy chủ. Máy chủ gửi dữ liệu được mã hóa chuyển đoạn với khoảng cách 200 mili giây giữa mỗi đoạn tới máy khách. Với thiết lập của tôi có máy tính trung gian, Các gói này được chuyển qua trình định hình lưu lượng trên máy tính trung gian để đạt được tốc độ bit cố định là 500kbps.
Khi tôi tắt giảm tải (TSO và GRO), mỗi n byte được chia thành các khung bằng pcap.
Hầu hết các gói 1448B có khoảng cách thời gian gần bằng 24,224ms, tốc độ dự kiến là 500kbps
Vấn đề: Mặc dù các khung đến theo trình tự nhưng khoảng cách thời gian đến của chúng không nhất quán.
Gói lớn thứ hai (1448B) sau khoảng cách 200 mili giây luôn gần như quay lại với gói đầu tiên.
Gói cuối cùng trong chunk ( 654B) đến với độ trễ (24,224ms thay vì 10,464ms như ví dụ trong hình đính kèm)
Ảnh chụp màn hình của thời gian
Khoảng cách thời gian giữa các gói.
Lệnh TC với HTB:
tc qdisc del dev enx00e04c080ecf root 2> /dev/null > /dev/null
tc qdisc thêm dev enx00e04c080ecf xử lý gốc 1:0 htb mặc định 2
lớp tc thêm dev enx00e04c080ecf cha mẹ 1:1 classid 1:2 tốc độ htb 500kbit trần 500kbit bùng nổ 10 cburst 10 ưu tiên 2
bộ lọc tc thêm giao thức dev enx00e04c080ecf ip cha mẹ 1:0 u32 khớp với ip dst 192.168.2.103 flowid 1:2
Nếu tôi không làm sai bất kỳ phép tính nào, tôi nghĩ vấn đề có thể là do việc xử lý mã thông báo trong tc mà tôi đang sử dụng để định hình lưu lượng.
Tôi nghĩ rằng các mã thông báo được tích lũy trong thời gian nhàn rỗi và khi nhận được gói tiếp theo, nó sẽ gửi hai gói trở lại.
từ tỷ lệ tiêu thụ mã thông báo gói thứ ba ổn định.
Nếu đây là những gì đang xảy ra, tôi muốn biết liệu có cách nào để tránh sử dụng mã thông báo tích lũy cho gói thứ hai trong đoạn hay không.
Tôi đã thử các tùy chọn khác nhau trong lệnh tc
Tôi cũng đã thử sử dụng CQB - lệnh bên dưới
Thẩm quyền giải quyết : https://lartc.org/lartc.html#AEN2233
Quan sát:
giảm cụm = 10 làm tăng nhẹ khoảng cách giữa gói thứ nhất và gói thứ hai.
tc Với CQB:
tc qdisc del dev enx00e04c080ecf root 2> /dev/null > /dev/null
tc qdisc add dev enx00e04c080ecf xử lý gốc 1: cbq avpkt 5000 băng thông 10mbit
lớp tc thêm dev enx00e04c080ecf cha mẹ 1: classid 1:1 tỷ lệ cbq 500kbit phân bổ 5000 trước 5 giới hạn bị cô lập
lớp tc thêm dev enx00e04c080ecf cha mẹ 1:1 classid 1:10 cbq tỷ lệ 500kbit phân bổ 5000 ưu tiên 1 avpkt 5000 giới hạn
lớp tc thêm dev enx00e04c080ecf cha 1:1 classid 1:20 tỷ lệ cbq 500kbit phân bổ 5000 avpkt 5000 ưu tiên 2
bộ lọc tc thêm giao thức dev enx00e04c080ecf ip cha mẹ 1:0 u32 khớp với ip dst 192.168.2.103 flowid 1:10
bộ lọc tc thêm dev enx00e04c080ecf cha mẹ 1: giao thức ip trước 13 u32 khớp với ip dst 0.0.0.0/0 flowid 1:20