[英]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.