GNS3でvMX(VCP/VFP)を動かすぞい。
今回の話題
以前、個人アカウントでvMX Trialのダウンロードができるようになった話 をしたんですけど、GNS3でvMXの動作確認が取れたので、ここに書き残しておきます。
簡単な解説
簡単ですが前置きを。
vMX Trialで入手可能なvMXは、以下の図のように制御プレーンと転送プレーンが分離しています。
全く転送を行わないのであればVCP(Virtual Control Plain)のみを動かせばいいのですが、vMXでパケットを転送するとなると、VFP(Virtual Forwarding Plane)も必要になります。
VCPとVFP間は、アドレス設定(図中の128.0.0.1/16とか)からVCPがVFPを見つけるところまで自動的に行われるので、通信可能なように接続されていれば問題ありません。
転送しないで終わると言うのも空しいので、今回は通信を含めたところまで確認してみます。
準備
今回のGNS3を動かすOSです。vMXは仮想マシンなので仮想化支援機能が必要です。
|
|
GNS3を入れます。
|
|
vmx-bundle-16.1R1.7.tgz を入手して、以下のファイルを手元に置きます。
|
|
GNS3にvMXのイメージを登録
画像で雰囲気をお伝えしつつ、注意点のみ書き残します。
リソース要件等の詳細はこちら: https://www.juniper.net/techpubs/en_US/vmx16.1/topics/reference/general/vmx-hw-sw-minimums.html
VCP
制御プレーンで気を付ける点は、3つのHDDイメージが正しい順番で設定される必要があるところですね。
先ほど準備したファイルのうち、3つを使います。
- junos-vmx-x86-64-16.1R1.7.qcow2
- metadata_usb.img
- vmxhdd.img
GNS3のQemu VM Templatesの設定画面では、こんな風になれば良いです。画像がない部分はデフォルトでオッケー。
- 今回は vCPU 2, 2GB RAM にしていますが、必要要件は vCPU 1, 1GB RAM なので、もう少し絞ってもいいと思います。
- ここで、HDDの順番を以下のように設定します。これ重要。
- junos-vmx-x86-64-16.1R1.7.qcow2
- vmxhdd.img
- metadata_usb.img
- VCPのvNICも4つになっていますが、必要要件は2つなので、これも削っていいと思います。
Typeも、とりあえずe1000で動作確認しましたが、OSが認識するなら何でもいいはずです。
VFP
次にVFP。こっちはNICタイプだけ注意。
- 今回は vCPU 3, 8GB RAM にしていますが、必要要件は vCPU 3, 4GB RAM なので、もう少し絞ってもいいと思います。
- HDDは vFPC-20160617.img を1つだけ。
- Typeを
virtio-net-pci
にすること。Adapterの数は制御用2つと転送用に好きなだけ。今回は転送用に2ポートなので計4つ。
ここにもそう書いてある: https://www.juniper.net/techpubs/en_US/vmx16.1/topics/concept/vmx-virtualization-techniques.html
ここまで。
疎通確認をするクライアントはなんか適当に入れておいてください。(適当)
配線と起動
こんな感じで繋ぎます。ubuntu1604-1, ubuntu1604-2はpingを打つだけなので、手元の環境で都合の良いものを適当にどうぞ。
そして起動。
一応、操作と動作進捗確認のため、GNS3のコンソールを開いておきましょう。
同時に起動すると、おそらくVFPの方が早く立ち上がります。
VCPが自動的にVFPを検出して登録するので、VCPの起動を待ちます。
- VCPがVFPを検出すると、VFP側でDPDKの初期化が始まります。
この時、VFPのNIC Typeがvirtioではない場合、転送サービスの起動コマンドの引数が –rx "" とかになって動きません。
DPDK的には当たり前ですが、vCPUも1つとか2つしか無かったら同じように転送サービスがエラー吐いて止まります。
無事にVFPが検出されて転送サービスが起動すると、こんな感じの出力になると思います。
今度は、VCPにログインして、VFPが認識されていることを確認します。
テキストで貼るとこんな感じです。
|
|
ちゃんとFPC 0が登録されています。
設定と疎通確認
ここまでは、物理で言うとモジュールの認識が終わったところまでです。
いつも通り、設定を入れて疎通を確認してみます。
VFP
|
|
ubuntu1604-1
|
|
ubuntu1604-2
|
|
疎通確認
ubuntu1604-2から疎通確認
|
|
はい、このように疎通も確認できました。
VFPの状態とか見てみたりする
インターフェース
|
|
ルーティングテーブル
|
|
ちゃんと見えましたね。ずらぁー(鳴き声)
おしまい
vMXをGNS3で動かすことができました。
これを使って簡単にネットワークをエミュレーション、とはいかないかもしれませんが、どこまで活用できるか考えてみるのは楽しいことです。
秋の夜長とか言いながら試し始めたんですけど、冷静に考えて夜長って夜更かしのことじゃないことに気付きました。
おわり。
付録
GNS3とは無関係に欲しい人がいるかもしれないので、GNS3が生成したqemuコマンドの引数載せておきますね。HDDは差分ディスクになってるから分かりにくいけど。
|
|