Linux端末(netem)でパケットを破損しているときにエラーが発生しました。

Linux端末(netem)でパケットを破損しているときにエラーが発生しました。

次の規則は、パケットのランダムオフセットに1ビットエラーを導入し、パケットの5%を破壊します。

sudo tc qdisc変更dev ens8ルートnetem損傷5%

しかし、最近、次のエラーが発生しました。

エラー:Qdiscが見つかりません。生成するには、NLM_F_CREATEフラグを指定してください。

パケットの破損をシミュレートする他の方法を提供したり、助けたりすることはできますか?エラー検出メカニズムがどれほどうまく機能するかを確認するために、パケット破損をシミュレートしようとしています。

答え1

初期デフォルトキューディスクカーネルによって設定された特殊ハンドルは0:変更または参照できません。新しいファイルでのみ上書きできます。キューディスクchange既存の参考資料の活用 キューディスクしかし、これはデフォルトのカーネルのqdiscにはできないので、これはバグです。

だから今回は初めてです。ネテム キューディスク使用する場合はaddキーワードを使用する必要があり、これはおそらく過去のある時点で行われたことでした。その後、キーワードを参照するだけで十分なchangeので、後でキーワードを使用して一部のパラメータ(破損率など)を変更できます。root

ショートカットがreplace試行されるため、change失敗すると実行されますadd

したがって、最終的にこのコマンドは最初と次の数回動作します。

sudo tc qdisc replace dev ens8 root netem corrupt 5%

これを削除したいキューディスクこれは一度実行する必要があります(デフォルトでは再度実行されるため、2回目は失敗します)。キューディスクカーネルによってインストールされ禁止されています):

sudo tc qdisc delete dev ens8 root

add、、、(またはelse )の使用法は、他changeの多くの場合でも同様のパターンに従います。replacechangeadddeleteIP ルート 2注文する。

関連情報