続 カッコの付け方

AWSを始めとしたクラウドコンピューティング全般と、唯一神emacsにおける()の付け方についてだらだら書きます

遅延発生装置を作る

今回はAWS上で遅延発生装置を作ってみたいと思います。

Linuxの場合、tc コマンドを用いるのが一般的です。

サブコマンドとして netem というのも使います。ではサクッとやってみます。

この手のカーネルに近いコマンドは、もちろんrootでやります。

# tc qdisc add dev eth0 root netem delay 5ms

実際に試してみます。

別サーバーからPingを打ち、打ってる途中で上記コマンドを、受信側サーバーに打ったところ

スクリーンショット 2014-07-14 19.23.19.png

ちゃんと5msの遅延が発生しました。

変更や削除のコマンドも書いておきます。

変更

# tc qdisc change dev eth0 root netem delay 10ms

削除

# tc qdisc del dev eth0 root

dev lo とした場合は、ループバックももちろん遅延させることができます。この場合、ping localhost などと打つと、2倍遅延します。

で、ここまではググれば出てくる情報です。ここからが本番

こんな素敵なtcコマンドですが、WindowsMacでは使えません。特にMac

オープンソースだから使えるだろ」

と思うかもしれませんが、iptables同様、カーネルレベルのプログラムなので、そうそう簡単に動きません。

この他、ググって出てくるのは、実サーバーに2枚NICを指し、ケーブルをつないでブリッジとし、遅延発生させる方法ですが、そもそもクラウド上では、UTPケーブルが仮想化されているわけではないので、この方法は通用しません。じゃあ、どうするか。

L2がダメならL3にすればいいじゃない = ルーターにしてしまえばいい!

AWSのNATインスタンスも所詮、iptablesを用いたソフトウェアルーターに過ぎません。であれば、ルーターインスタンスAWS上に作れば、そのルーターを通すことによって、OSを問わず遅延発生させることができます。長くなったので、エントリを分けます。