通信に遅延を入れる理由
事の始まりは、狭い帯域の先にあるサーバーで障害が発生し、
同じ環境を疑似的に作って再現をすることに。
有線環境だと山奥の狭帯域、
無線だと宇宙を経由した衛星回線、かなり離れた支社への通信、
それらの先にあるサーバーへの処理やSWアップグレードで障害があったため
疑似的な環境を作って再現をするための環境づくりを実施
必要なものは3つ
・PC1台
→今回はLinuxを入れるので、いらないPCでもOK
・USB NIC (Network Interface Card)
→LANケーブルを2つPCに接続したいので1つ
・Ubuntu OS
→PCに入れるUbuntu Desktop OS、インストール方法は、検索してわかりやすいものを参照お願いします。どこかでアップするかも
※Windows PCでもフリーソフトで同じことができると聞きましたが、いまいちいいのが見つからないのと、自分はLinuxが好きなのでLinuxを選択。
配線の仕方
下記のように配線します。
通常のPCはケーブルの差込口が一つなので、USBのLANケーブル差込を追加
※ノートPCのほうがどこにでもかませるのでノートPCを選択
Server→ Ubuntu PC(今回のPC:ここで遅延を入れる) → SwitchやRouter
10年以上前に、知り合いから7千円でゆずりうけたPCをUbuntu OSを上書きして利用
Windows7OSが入っていたものなのでかなり古くても作れるかと。
PCをハブ化する Bridge設定
Addでブリッジを追加
編集で更にハブ化したいNIC2つを選ぶ
ハブ化したいEtherを二つ追加 (USBの外付けLANを付け、追加後に二つ選択しUbuntuをHAB化)
IP設定はいらない
ブリッジ設定箇所のEnable IGMP SnoopingとEnable STPは外す。(相性かもしれないが、ここ外さないと何回か切れたり等々があったことがある。)
TC Command コマンドで遅延を入れる
Hab化が終わったらTCコマンドで好きなIFに遅延を入れる
ifconfig or ip コマンドで事前にインターフェイスの名前を調べる
ip a
→コマンドでLANケーブルを指している2つのインターフェイスを確認
IF=enp7s0
IF=enx00018e6192e4
TC Command
確認コマンド
root@lenovo:~# tc qdisc show dev virbr0
qdisc noqueue 0: root refcnt 2
ここから遅延を入れるコマンド
まずAddでIFに遅延ファイル作る(1000ms=1秒)
root@lenovo:~# tc qdisc add dev enp7s0 root netem delay 200ms
root@lenovo:~# tc qdisc change dev enp7s0 root netem delay 1000ms
root@lenovo:~# tc qdisc change dev enp7s0 root netem delay 2000ms
ハブ化してるので特に意味はないがもう一つのIFにも遅延いれてみた
root@lenovo:~# tc qdisc add dev enx00018e6192e4 root netem delay 1000ms
最後に遅延ファイルをけす。
root@lenovo:~# tc qdisc delete dev enp7s0 root netem delay 2000ms
root@lenovo:~# tc qdisc delete dev enx00018e6192e4 root netem delay 1000ms
まとめ
思ったより簡単に疑似的にネットワークへ遅延をいれられる
・Linux PC(今回はUbuntuを利用)で遅延を入れられる
・いらないPCでOK
・普通のPCで実施の場合はUSB NICを追加
→LANケーブルの差込口が一つの場合は、追加
※PCをハブ化してネットワークにかませた方が楽
遅延装置をゼロから作って、かませてみることを記載してみました。
コメント