ジャンク箱に入っていたラズパイ3Bを引っ張り出して、速攻でネットワークエミュレータ(TC)を作ってみた件
-
- 背景
最近映像回りの試験をやっていて、ネットワークの劣化状態を作り出す必要が出てきました。
私、20年程前に、NISTNET というLinuxカーネルを改造する専用のパソコン作っていたので、これをもう一度作ろうと思っていたのですが、NISTNETの情報が、ある時を境にパッタリと消えてしまっていました。変だな、と思って調べてみたら、カーネルレベルでなくて、アプリのレベルでほぼ同様の機能ができるLinuxTC(Traffic Control)というものができたらしい、ということが分かりました。まあ、最近のPC性能メチャクチャ良いから、カーネルレベルやるまでもないのかな(?)とか考えました。 - アプローチ
なるべく、サクっと作りたいので、ジャンク箱に入っていたラズパイ3B(Ubuntu16.04)をそのまま使うことにしました。
『動かなければ、その時考えればいいかな』と。
参考文献はこちらです。Ubuntuのブリッジ化とネットワークエミュレート(簡易版)
- 構成図
こんな感じです。 - 購入したもの
2つ目のNICが必要でしたので、これを購入しました(クリックすればAmazonに飛びます)。
GBのアダプタにしたのは、ネットワーク上限にならないといいな、と思ったのですが、ラズパイ(PI 3B)のNICがGBじゃないのですから、意味なかったかもしれませんが。 - 事前調査
アダプタを差して、ifconfigは、こうなりました。enx207bd2222d29 とか、enxb827ebde37fc とか、なんじゃらほい? と思われるかもしれませんが、これ、eth0 とかeth1と同じものと思って頂ければ結構です(正直、これで、ちょっとごたごたしましたが、今回、"そういうものだ"と思って貰えればO.K.です) 。https://wp.kobore.net/%e6%b1%9f%e7%ab%af%e3%81%95%e3%82%93%e3%81%ae%e6%8a%80%e8%a1%93%e3%83%a1%e3%83%a2/post-10990/
- TCのインストールと設定
Step 1 ブリッチの作成
$ sudo brctl addbr br0
Step 2 ブリッジにIPアドレスを割り当てる
$ sudo ip addr add 192.168.0.200/24 dev br0 (で、以後、192.168.0.200は、sshサーバのアクセス先にもなります)
Step 3 ブリッジ化のためにネットワークポートのIPアドレスを消去
$ sudo ip addr flush enx207bd2222d29
$ sudo ip addr flush enxb827ebde37fc
Step 4 ブリッジにネットワークポートを紐づける
$ sudo brctl addif br0 enx207bd2222d29
$ sudo brctl addif br0 enxb827ebde37fc
Step 5 ネットワークポートをプロミスキャスモードに設定
$ sudo ip link set dev enx207bd2222d29 promisc on
$ sudo ip link set dev enxb827ebde37fc promisc on
Step 6 ブリッジの起動
$ sudo ip link set dev br0 up
Step 7 TC起動の確認
$ brctl show
- 状況現在、何の設定もしていない状況なのですが、すでに映像遅延が発生しています。PI 3Bではちょっと負荷が重いのかもしれません。
ちなみにifconfigで以下がbr0が追加されているのが確認できます。(192.168.0.200で、登録) - その他TCの設定については、こちらを参考にしながら勧めていく予定です。
ラズパイでtcコマンド(遅延・パケロス・フィルター・帯域制御)やってみた
- 背景