帯域幅は現在私の最大の関心事ではありません。待ち時間は待ち時間です。
私のアプリケーションサーバーとそのデータベースサーバーが数百キロ離れているとどうなりますか?
各IPパケットの予想遅延をシミュレートする方法を探しています。
答え1
を使用してこれを行うことができますnetem
。 ~から彼らのホームページ:
WANレイテンシシミュレーション
これは最も簡単な例です。ローカルイーサネットから発信されるすべてのパケットに固定量の遅延を追加します。
# tc qdisc add dev eth0 root netem delay 100ms
ローカルネットワーク上のホストの簡単なpingテストでは、100ミリ秒の増加が表示されます。遅延時間はコアクロック分解能(Hz)によって制限されます。ほとんどの2.4システムでは、システムクロックは100Hzで動作するため、10ミリ秒単位で待機時間が許可されます。 2.6では、この値は1000〜100Hzの設定パラメータです。
後の例では、qdiscを再ロードせずにパラメータのみを変更します。
実際のWANは可変性を表すため、任意のバリエーションを追加できます。
# tc qdisc change dev eth0 root netem delay 100ms 10ms
これにより、100±10msの遅延が加わります。ネットワーク遅延時間の変動は純粋にランダムではないため、シミュレートする相関値もあります。
# tc qdisc change dev eth0 root netem delay 100ms 10ms 25%
これにより、100±10msの遅延が追加され、次のランダムな要素は前のランダムな要素の25%に依存します。これは実際の統計的相関ではなく近似です。
遅延時間分布
通常、ネットワークの待ち時間は不均一です。待ち時間の変化を説明するために、正規分布のようなものを使用する方が一般的です。 netem ルールは、テーブルを使用して不均一分布を指定できます。
# tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal
実際のテーブル(正規、パレート、パレート正規)は、iproute2コンパイルの一部として作成され、/usr/lib/tcに配置されます。したがって、少し努力すれば、実験データに基づいて独自のディストリビューションを作成できます。