NETWORK EMULATION

Kiểm thử TCP BBR và CUBIC dưới latency, loss và bandwidth thay đổi

9/8/2026 · 16 phút

Hai luồng TCP BBR và CUBIC đi qua thiết bị mô phỏng latency, packet loss và bandwidth
Mục lục bài viết 9 phần

Một thuật toán TCP đạt throughput cao ở một RTT chưa chắc giữ tail latency hoặc fairness khi bandwidth biến động. Bài này xây phép đo lặp lại để so BBR và CUBIC bằng goodput, retransmission, RTT, queue và hành vi khi nhiều flow cạnh tranh.

ĐỌC NHANH

Bài viết giúp bạn

  • Câu hỏi kỹ thuật cần trả lời
  • Topology và baseline
  • Biến số phải kiểm soát
Tùy chỉnh đọc
01

Câu hỏi kỹ thuật cần trả lời

#

Mục tiêu không phải chọn thuật toán “nhanh nhất” nói chung. Cần xác định workload: file transfer, video, API hay replication; RTT thường gặp; băng thông; mức competing traffic; và SLO về goodput, latency hoặc fairness.

So sánh phải trả lời thời gian đạt steady state, phản ứng khi capacity giảm/tăng, ảnh hưởng tới flow khác và thời gian recovery sau packet loss. Một con số throughput trung bình che mất queue buildup và tail latency.

02

Topology và baseline

#

Đặt client/server trên host đã ghi rõ kernel, congestion-control module và NIC; network emulator ở giữa áp impairment hai chiều. Thu packet/counter ở client, emulator và server; đồng bộ thời gian đủ cho mục tiêu đo.

Chạy baseline không impairment để xác minh CPU, NIC, disk và generator không là bottleneck. Kiểm tra advertised window, MSS, offload và pacing. Dùng cùng application payload, flow count và duration cho mọi vòng.

Topology so sánh TCP congestion control qua điều kiện mạng mô phỏng
Topology so sánh TCP congestion control qua điều kiện mạng mô phỏng
03

Biến số phải kiểm soát

#

Khóa kernel/version, initial congestion window, MSS/MTU, receive/send buffer, ECN, pacing, ACK behavior và NIC offload. Tách random loss khỏi burst loss; khai báo distribution của delay/jitter, queue size và shaping direction.

Flow ngắn chủ yếu phản ánh startup, flow dài phản ánh steady state. Cần cả single-flow và multi-flow; thử đồng thuật toán lẫn BBR cạnh tranh CUBIC. Randomize thứ tự chạy và lặp nhiều lần để giảm bias do trạng thái host.

04

KPI và bằng chứng

#

Không dùng throughput layer 2 thay cho application goodput. Báo median, percentile và worst case; gắn kết quả với traffic profile và interval, không chỉ ảnh chụp dashboard.

  • KPI: Goodput · Cách đo: Payload nhận/thời gian · Bằng chứng: App + packet counter
  • KPI: RTT p50/p95/p99 · Cách đo: TCP timestamp/active probe · Bằng chứng: PCAP/raw metric
  • KPI: Retransmission · Cách đo: Sequence analysis · Bằng chứng: PCAP + host counter
  • KPI: Queue delay · Cách đo: RTT trừ propagation baseline · Bằng chứng: Emulator/telemetry
  • KPI: Fairness · Cách đo: Share giữa flow · Bằng chứng: Per-flow result
  • KPI: Recovery · Cách đo: Thời gian trở lại ngưỡng · Bằng chứng: Timeline impairment
05

Ma trận điều kiện mạng

#
  • Kịch bản: RTT sweep · Biến chính: 5–200 ms · Mục đích: Độ nhạy BDP
  • Kịch bản: Random loss · Biến chính: Nhiều mức nhỏ · Mục đích: Recovery/retransmission
  • Kịch bản: Burst loss · Biến chính: Gilbert-Elliott hoặc profile rõ · Mục đích: Resilience thực tế hơn
  • Kịch bản: Capacity step · Biến chính: Giảm/tăng bandwidth · Mục đích: Adaptation và queue
  • Kịch bản: Buffer sweep · Biến chính: Nhỏ/vừa/lớn · Mục đích: Bufferbloat
  • Kịch bản: Flow competition · Biến chính: 1/10/nhiều flow · Mục đích: Fairness
  • Kịch bản: Reverse-path load · Biến chính: ACK path có tải · Mục đích: Bất đối xứng
06

Test plan theo từng pha

#

Pha 1 xác minh baseline và calibration. Pha 2 chạy single-flow theo RTT/loss sweep. Pha 3 giữ impairment, tăng flow count và trộn thuật toán. Pha 4 thay đổi capacity giữa phiên để đo phản ứng động; pha 5 thêm reverse-path load.

Mỗi run cần warm-up, measurement window và cool-down cố định. Lưu sysctl, kernel, emulator profile, PCAP mẫu và raw CSV. Đặt kill condition khi queue, CPU hoặc loss vượt ngưỡng an toàn.

Ma trận so sánh BBR và CUBIC theo latency, loss, bandwidth và fairness
Ma trận so sánh BBR và CUBIC theo latency, loss, bandwidth và fairness
07

Checklist nghiệm thu

#
  • Xác nhận thuật toán thực sự được áp cho từng socket.
  • Hiệu chuẩn host/NIC/generator trước impairment.
  • Ghi delay distribution, loss model, buffer và direction.
  • Đo goodput, RTT, retransmission, fairness và recovery.
  • Chạy flow ngắn/dài, đơn/đa luồng và cạnh tranh.
  • Lặp, randomize thứ tự và lưu raw evidence.
08

Giới hạn kết luận

#

Kết quả chỉ áp dụng cho kernel, implementation, NIC, impairment và workload đã kiểm tra. Không suy rộng một RTT/loss profile sang mọi WAN. Network emulator tạo điều kiện tái lập nhưng không thay thế đầy đủ routing churn, middlebox và cross traffic production.

09

Khái niệm cần nhớ

#
  • Congestion control: Cơ chế điều chỉnh tốc độ gửi khi mạng nghẽn.
  • BDP: Bandwidth-delay product.
  • Goodput: Dữ liệu ứng dụng hữu ích nhận thành công.
  • Pacing: Dàn đều packet theo thời gian.
  • Bufferbloat: Queue lớn làm tăng latency kéo dài.
  • Fairness: Mức chia tài nguyên giữa các flow.
THUẬT NGỮ NHANH

Khái niệm cần nhớ

DUT / SUT
Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
Steady state
Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
Pass / fail
Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo4 nguồn

Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.

Nguyên tắc biên tập

NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.

Thông số và khả năng sản phẩm có thể thay đổi theo phiên bản. Hãy đối chiếu tài liệu chính thức trước khi xây dựng cấu hình hoặc tiêu chí nghiệm thu.
BẮT ĐẦU TỪ BÀI TOÁN

Cần chuyển kiến thức thành test plan?

Chia sẻ mục tiêu, topology và ràng buộc kỹ thuật. NetVali sẽ cùng bạn xác định bài đo phù hợp.

Trao đổi yêu cầu kỹ thuật