1

どうやら NETEM は、送信する時間に基づいてパケットをキューに入れる tfifo を使用しているようです。これにより、ジッターが発生し、パケットの並べ替えが発生します。たとえば、次の行はパケットの並べ替えを引き起こします*:

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

NETEM のマニュアルでは、並べ替えが不要な場合は、内部キュー規則 tfifo を純粋なパケット fifo (pfifo) に置き換えて、並べ替えなしで多くのジッターを追加する次の例を示します。

tc qdisc add dev eth0 root handle 1: netem delay 10ms 100ms
tc qdisc add dev eth0 parent 1:1 pfifo limit 1000

しかし、それはうまくいきません!パケットはまだ並べ替えられます! (そして、これによるとカーネルに依存しているように見えます)

それで、パケットを並べ替えずにジッターを追加する方法を知っている人はいますか?

4

2 に答える 2

1

ハッキーなオプションの 1 つは、一定の遅延 (ジッターなし) を使用し、ループを持ち、ループ内の遅延値を変更することです。

5 ミリ秒の分散で 50 ミリ秒の遅延が必要だとします。最初に基本遅延を追加します。

tc qdisc add dev eth0 root handle 1: netem delay 50ms

また、45 ミリ秒から 55 ミリ秒の間でランダムな遅延を選択し、次のように遅延を変更するループを作成できます。

tc qdisc change dev eth0 root handle 1: netem delay 53ms

ただし、次の 2 つの点に注意してください。

1-遅延を変更するには数ティックかかります。ループで 0.1 秒のスリープが妥当であることがわかりました。したがって、これはジッター周波数によって制限されることを意味します。

2- 遅延を減らすと、新しいパケットは、既にキューに入っているパケットよりも短い遅延 (つまり、送信時間が早い) でキューに入れられます。これにより、並べ替えが発生する可能性があります。遅延が大幅に減少している場合は、数ステップで遅延を減少させることでこれを軽減できます。

于 2016-05-11T19:50:58.907 に答える