簡體   English   中英

netem環回接口重新排序數據包

[英]netem loopback interface reordering packets

我有兩個應用程序在同一主機上通過UDP進行通信,我想發送具有不同延遲(抖動)但無亂序數據包的數據包。 對於環回接口,我有以下規則:

sudo tc qdisc add dev lo root handle 1: netem delay 10ms 100ms

這似乎成功創建了抖動。 但是,實際上有亂序的數據包。基本上,我想按照從發送方發送的順序在接收方接收數據包,只是延遲有所變化,即帶有抖動。

我嘗試了一些基本的重新排序命令..當我使用100%重新排序時,它會進行重新排序,但是在這種情況下沒有抖動。 如果我對所有小於100%的東西使用reorder命令,則有亂序包。

在這里說,如果執行以下命令,則數據包將保持順序:

sudo tc qdisc add dev lo parent 1:1 pfifo limit 1000

但是我仍然收到混亂的數據包。 任何幫助深表感謝。

(§1)根據官方文件- 延遲部分,此代碼
# tc qdisc change dev eth0 root netem delay 100ms 10ms.

...導致增加的延遲為100ms±10m

在您的代碼中,第二個ms命令行參數大於第一個。


(§2)此外,在數據包重新排序部分下,此代碼
# tc qdisc change dev eth0 root netem delay 100ms 75ms

...將導致一些重新排序。 如果第一個數據包的隨機延遲為100毫秒(100毫秒基數-0毫秒抖動),第二個數據包在1毫秒后發送並獲得50毫秒的延遲(100毫秒基數-50毫秒抖動); 第二個數據包將首先發送。


有根據的猜測:(未測試)
從切換最后兩個參數的位置
sudo tc qdisc add dev lo root handle 1: netem delay 10ms 100ms

sudo tc qdisc add dev lo root handle 1: netem delay 100ms 10ms

盡管根據(§2) ,如果您在不到20ms的時間內連續發送數據包,仍然有可能對您的數據包進行重新排序:第一個數據包會延遲100 + 10 = 110ms,第二個數據包在1ms之后發送會得到100- 10 = 90ms延遲; 第二個數據包將在第一個數據包之前到達。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM