メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

Juniper vQFXをVirtualBoxで動かす

Juniper vRRをVirtualBoxで動かしてVyOS等他の仮想アプライアンスとの間でBGPピアを張って遊んでいたら、5年程前にJuniper vQFXを入手した事を突如思い出した。
使わなくなり押入れの中に放置したWindows PCからvQFXのREとPFEのvmdkファイルを引っ張り出し、MacBook AirにインストールしたVirtualBoxにVagrant無しでデプロイしてみた。
デプロイ自体は完了したもののREとPFEとの間で通信が出来なかったが、VirtualBoxのネットワークアダプタの設定を変えたら通信が出来るようになった。
今回は、Juniper vQFXのVirtualBoxの設定からデプロイ完了とRE〜PFE接続完了までのメモ。


Juniper vQFXとは
Juniper Networks社製のイーサネットスイッチQFX10000の仮想アプライアンス版。
Juniper QFXスイッチはデータセンタのSpine & Leaf構成やキャンパスネットワーク構成にて導入される事を想定された製品であるが、QFX10000シリーズスイッチはデータセンタ内のネットワークに特化した製品とされている。
Juniper vQFXは、QFX10000シリーズスイッチからハードウェア依存な機能を省き、VMware ESXiなど仮想化プラットフォームをサポートするx86なサーバ上で動作するソフトウェアスイッチであるが、Juniper Networks社によるとvMXやvRRとは異なり評価版や検証用やスクリプトの開発環境用といった扱いのようで、商用環境向きではないようである。

Juniper vQFXではREとPFEは別インスタンスで動作する。
REとはRouting Engineの略称であり、Intel製マイクロプロセッサのプラットフォームによって構成されるハードウェアで、経路制御の中枢を担う。
PFEとはPacket Forwarding Engineの略称であり、PIC(Physical Intertface Card)やFPC(Flexible PIC Concentrator)等によって構成されるハードウェアで、パケット転送処理の中枢を担う。
Juniper vQFXではREとPFEが別々のOSで動作している。昔、JuniperがCisco Catalyst5kや6kで動作するHybrid OSを批判していた事を思い出す。


当方の環境
ホストOS:macOS 10.13.6 / MacBook Air 2011 / RAM: 4GB / CPU: Intel Core i7 1.8GHz
Oracle VirtualBox:6.1.30
ゲストOS:Juniper vQFX 15.1X53 D60


構成
今回の構成は以下の図のとおり。
VirtualBoxの中でゲスト機を2台(Juniper vQFX REとJuniper vQFX PFE)を立ち上げる。
※画像をクリックすると拡大表示します



Juniper vQFXの入手
2016年にJuniperのダウンロードサイトから入手したと思われる。
当時はダウンロードサイトにアクセスしユーザIDとパスワードを入力するだけではダウンロード出来ず、ダウンロードする為の権限の申請が必要だったと記憶している。
当記事を書いた2022年1月8日の段階では最新版は20.2R1であるが、今回使用する15.1X53は今もダウンロードが可能である。

VirtualBoxへのデプロイ開始直後にUUID絡みでエラーを吐いてデプロイが中断された場合、VBoxManageコマンドでUUIDを再アサインする。
Windows環境にてVBoxManage.exeコマンドを実行する際は以下のとおり。xxxxxの部分は適宜書き換える。

"C:/VBoxManage保存フォルダへのパス/VBoxManage.exe" internalcommands sethduuid "C:/vmdkファイルの保存フォルダへのパス/xxxxx.vmdk"

macOSの環境にてVBoxManageコマンドを実行する際は以下のとおり。vmdkファイルの保存先のパス以外は、Windows環境と同じである。

$ VBoxManage internalcommands sethduuid "/vmdkファイルの保存ディレクトリへのパス/xxxxx.vmdk"



VirtualBoxの設定
下記のリンク先(README.md (Launch vqfx10k))によるとREにアサインするRAMは1024MB、PFEにアサインするRAMは1.5GB〜2GBとの事だが、自分の動作環境ではRAMは4GBしか無い為、PFEには1800MBアサインした。
Junos OS バージョン15.1X53限定かどうかは不明だが、REではvRRやvMXと同じく、使用しなくても仮想シリアルポートの設定が必要である。

RE側の設定内容
[General]
Operating System
Type:BSD
Version:FreeBSD (64-bit)

[System]
Base Memory:1024MB
Processors:1
Boot Order:Hard Disk
Acceleration:VT-x/AMD-V, Nested Paging, PAE/NX

[Display]
Video Memory:16MB
Graphics Controller:VMSVGA
Remote Desktop Server:Disabled
Recording:Disabled

[Storage]
Controller:IDE
IDE Primary Device 0:vqfx10k-re-15.1X53-D60.vmdk

[Audio]
Disabled

[Network]
Adapter 1:Paravirtualised Network (Bridged Adapter, en0: Wi-Fi (AirPort))
Adapter 2:Paravirtualised Network (Internal Network, 'intnet01')
Adapter 3:Paravirtualised Network (Internal Network, 'intnet02')
Adapter 4:Paravirtualised Network (Internal Network, 'intnet03')

REのインタフェースem0は管理用として使用される。
REのインタフェースem1はPFEとのDedicated Linkとして使用される。
Adapter 1はem0と紐付けされている。sshでREにログインしたい場合はem0を外部接続用として設定する。
Adapter 2はem1と紐付けされている。em1を介してFEと接続したい場合はアダプタのタイプ(Adapter Type)を内部ネットワーク(Internal Network)に指定し、名前(Name)はPFEと同一にする。自分の場合はRE、PFE共に名前はintnet01で統一した。
Adapter 3はem2と紐付けされ、Adaper 4以降はxe-0/0/xが紐付けされている。

ネットワークアダプタの設定について。
VMwareのサポートサイト(下記リンク先参照)によるとIntel PRO/1000 MT Server(82545EM)はE1000と紐付けされている事になっているが、自分の環境ではParavirtualised Network (virtioの事)を選択しないと、他のゲストマシンとの間や外部との間で通信が出来なかった。

[Ports]
Serial Port
Enable Serial Portにチェックを入れる
Port Number:COM1
Port Mode:TCP
Connect to existing pipe/socketにチェックを入れない
Path/Address:10001
上記で述べたとおり、仮想シリアルポートは使用しないものの必ず設定する。
Port ModeはTCPを選択。Path/Address欄のポート番号は何でも良いが、何かしらの値を入れないと起動が完了しない。


PFE側の設定内容
[General]
Operating System
Type:Linux
Version:Fedora (64-bit)

[System]
Base Memory:1800MB
Processors:1
Boot Order:Hard Disk
Acceleration:VT-x/AMD-V, Nested Paging, PAE/NX

[Display]
Video Memory:16MB
Graphics Controller:VMSVGA
Remote Desktop Server:Disabled
Recording:Disabled

[Storage]
Controller:IDE
IDE Primary Device 0:vqfx10k-pfe-20160609-2.vmdk

[Audio]
Disabled

[Network]
Adapter 1:Intel PRO/1000 MT Desktop (Bridged Adapter, en0: Wi-Fi (AirPort))
Adapter 2:Intel PRO/1000 MT Desktop (Internal Network, 'intnet01')

PFEのインタフェースeth0は管理用として使用される。
PFEのインタフェースeth1はREとのDedicated Linkとして使用される。
Adapter 2はeth1と紐付けされている為、REと接続したい場合は内部ネットワーク(Internal Network)を指定し、名前(Name)はPFEと同一にする。上記にて書いたとおり、自分の場合はREとPFE共に名前はintnet01で統一した。
アダプタのタイプ(Adapter Type)は、Intel PRO/1000 MT Serverにすると他のゲストマシンやREとの間で通信が出来なかった。
PFEではREとは異なり仮想シリアルポートの設定は不要である。


デプロイ開始
まずはREからデプロイ開始。
VirtualBox Managerウインドウ内上側の緑色の三角印をクリックし、Juniper vQFXのREのデプロイを開始。
Juniper vRRやvMXとは異なり起動ログが出力される。
デプロイ開始後2〜3分程でログインプロンプトが出力される。vMXやvRRの初回起動時より短時間でログイン可能な状態となる。
REのデフォルトのユーザ名はroot、パスワードはJuniperである。

REのデプロイ完了後、PFEのデプロイ開始。
起動中はRE同様に起動ログが出力される。起動ログの内容は一昔前のLinuxそのものである。(画面右側に[ OK ]が出力されない)
デプロイ開始後2〜3分程でログインプロンプトが出力されるが、ログインプロンプトの画面にてWind River Linuxの文字列が見える。Wind River Linuxとは組み込み系の商用のLinuxディストリビューションである。
Wind River Linuxは通信機器のOSとして採用実績が有り、Cisco IOS XR(バージョン6.0以降)やCisco NX-OSのOSはWind River Linuxベースである。
PFEのデフォルトのユーザ名はroot、パスワードはnoである。

PFEのデプロイ完了後、REにて以下のログが出力されPFEとの接続が開始する。

root@vqfx-re:RE:0% cli
{master:0}
root@jpmtkvmsw99-vqfx-re>
Message from syslogd@jpmtkvmsw99-vqfx-re at Jan  8 13:50:24  ...
jpmtkvmsw99-vqfx-re olive-ultimat.elf: SCHED: Thread 28 (cmqfx_pseudo) ran for 1172 ms without yielding

Message from syslogd@jpmtkvmsw99-vqfx-re at Jan  8 13:50:24  ...
jpmtkvmsw99-vqfx-re olive-ultimat.elf: Scheduler Oinker

Message from syslogd@jpmtkvmsw99-vqfx-re at Jan  8 13:50:24  ...
jpmtkvmsw99-vqfx-re olive-ultimat.elf: Frame 0: sp = 0x143bac48, pc = 0x8048ada

Message from syslogd@jpmtkvmsw99-vqfx-re at Jan  8 13:50:24  ...
jpmtkvmsw99-vqfx-re olive-ultimat.elf: Frame 1: sp = 0x143bac58, pc = 0x80554b2
:
(以下省略)


上記のログを吐き始めてから3〜4分後、以下のログが出力される。
REとPFEの接続に関する処理が完了した事を示す。

{master:0}
root@jpmtkvmsw99-vqfx-re>
Message from syslogd@jpmtkvmsw99-vqfx-re at Jan  8 13:52:03  ...
jpmtkvmsw99-vqfx-re olive-ultimat.elf: SCHED: Thread 28 (cmqfx_pseudo) aborted, hogged 9119 ms



ステータス確認
RE側の確認
REとPFEとの接続が正常に完了すると、show chassis hardwareコマンドの実行結果に出力されるDescription欄に、QFX3500が表示される。
vQFXはQFX10000シリーズスイッチの仮想アプライアンス版であるが、何故かQFX3500になっている。
そしてshow arpコマンドを打つと、em1.0からPFEが見える事が分かる。

{master:0}
root@jpmtkvmsw99-vqfx-re> show version
fpc0:
--------------------------------------------------------------------------
Hostname: jpmtkvmsw99-vqfx-re
Model: vqfx-10000
Junos: 15.1X53-D60.4
JUNOS Base OS boot [15.1X53-D60.4]
JUNOS Base OS Software Suite [15.1X53-D60.4]
JUNOS Crypto Software Suite [15.1X53-D60.4]
JUNOS Online Documentation [15.1X53-D60.4]
JUNOS Kernel Software Suite [15.1X53-D60.4]
JUNOS Packet Forwarding Engine Support (qfx-10-f) [15.1X53-D60.4]
JUNOS Routing Software Suite [15.1X53-D60.4]
JUNOS Enterprise Software Suite [15.1X53-D60.4]
JUNOS Web Management [15.1X53-D60.4]
JUNOS py-base-i386 [15.1X53-D60.4]

{master:0}
root@jpmtkvmsw99-vqfx-re>

{master:0}
root@jpmtkvmsw99-vqfx-re> show chassis hardware
Hardware inventory:
Item             Version  Part number  Serial number     Description
Chassis                                84425636318       QFX3500

{master:0}
root@jpmtkvmsw99-vqfx-re>

{master:0}
root@jpmtkvmsw99-vqfx-re>

{master:0}
root@jpmtkvmsw99-vqfx-re> show arp
MAC Address       Address         Name                      Interface               Flags
08:00:27:69:02:29 169.254.0.1     169.254.0.1               em1.0                   none
70:56:81:a2:b2:73 192.168.3.3     192.168.3.3               em0.0                   none
Total entries: 2


PFEとの接続確認
REにてshow pfe terseコマンドを打つと、PFEがOnlineである事が分かる。
PFEと接続出来ていない状態でshow pfe terseコマンドを打つと、fpc0:以下は空欄になる。

{master:0}
root@jpmtkvmsw99-vqfx-re> show pfe terse
fpc0:
--------------------------------------------------------------------------
Slot Type Slot      State     Uptime
 0   FXPC Present   Online    00:05:47

{master:0}
root@jpmtkvmsw99-vqfx-re>


以下のコマンドを実行すると、PFEのバージョンの確認が出来る。
vQFXで稼働しているJunos OSのバージョンと同じである。

{master:0}
root@jpmtkvmsw99-vqfx-re> show pfe version detail
PFED release 15.1X53-D60.4 built by builder on 2016-08-26 22:58:20 UTC
    mayland:/volume/build/junos/15.1/service/15.1X53-D60.4/obj/i386/junos/usr.sbin/pfed


PFE側の確認
PFE側はLinuxそのものである為、ステータス確認の為に叩けるコマンドはbashのコマンドとなる。
Wind River Linux 6.0が稼働している事が分かる。

# uname -a
Linux localhost 3.10.62-ltsi-WR6.0.0.21_standard #1 SMP PREEMPT Mon Nov 30 07:26:43 PST 2015 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/os-release
ID=wrlinux
NAME=Wind River Linux
VERSION=6.0.0.21
VERSION_ID=6.0.0.21
PRETTY_NAME=Wind River Linux 6.0.0.21
#


REとの接続確認
PFEにてarpコマンドを打つと、eth1からREが見えている事が分かる。

# arp
Address        HWtype    HWaddress          Flags  Mask      Iface
169.254.0.2    ether     08:00:27:d4:66:08  C                eth1



その他
今回は1台のMacBook Airの中でREとPFEを立ち上げて接続確認をしたが、2台の端末でそれぞれREとPFEを立ち上げてWLAN経由で接続なんて事も出来そうだ。
それにしても、1台のPCにて複数のゲスト機を立ち上げるとなるとRAMは最低でも8GBは必要だな...



参照サイト
https://www.juniper.net/us/en.html Juniper Networks
https://www.juniper.net/us/en/dm/free-vqfx10000-software.html Juniper vQFX10000 Software
https://support.juniper.net/support/downloads/?p=vqfxeval Juniper vQFX Download
https://github.com/juniper/vqfx10k-vagrant README.md (Launch vqfx10k)
https://codeout.hatenablog.com/entry/2019/10/06/185712 Vagrant BoxのJuniper vQFXを、VMWare ESXiで起動するメモ
https://qiita.com/sinnershiki/items/fb35b3e1fb322c0b29c0 JuniperのQFX10kの仮想環境に触れる
https://kakkotetsu.hatenablog.com/entry/2017/05/11/222614 vQFX10000をKVM+GNS3で動かす
https://kb.vmware.com/s/article/1001805?lang=ja 仮想マシンのネットワークアダプタを選択する
https://www.windriver.com/japan/products/linux Wind River Linux

参考書一覧
https://www.amazon.co.jp/dp/B00PWJU6IA/ Juniper QFX5100 Series: A Comprehensive Guide to Building Next-Generation Networks
https://www.amazon.co.jp/dp/4774146064/ Junos 設定&管理 完全Bible