Cisco公式のNWシミュレーションツールCML2はVMWare上での動作しかオフィシャルサポートされていません。標準の設定ではHyper-V上で動作させることは出来ませんが2つの修正を加えることで動作させることが出来ました。
Ciscoは、CMLのHyper-V上の動作は保証していません。この記事はCMLで本来開放されている以外の設定を触るため、CMLが正常に動作しなくなる可能性もあります。
Hyper-Vを使うに至った理由
以下は私のWindowsやHyper-Vへの知識が低く誤った記載をしている可能性が十分にあります。
生活にはWSL2が必須です。しかし、調べた限り、WSL2を有効にした状態ではVMWare Workstation(15.7)のVT-x仮想化がenableに出来なかったためです。
- Windows上でWSL2を用いる場合、Hyper-Vが(Hyper-Vマネージャで見えない)裏側で動作します。
- これによりCPUのVT-xがユーザからは無効に見えます(CPU-Zなどで確認可能)
- VT-xとWSL2との共存はWebを調べるとWindowsの
ハイパーバイザープラットフォーム
の機能を有効にし、VMWare Workstation 15.5以降であればVT-xとの共存は可能のように見えます。しかし、私の試した限りWSL2を有効にしたままVMWare WorkStationでVT-xを有効にした仮想マシンの起動ができませんでした
Hyper-VでCMLを使う課題
- 課題1: VT-xの仮想化相当がenableになっていない
- 課題2: VMWareとHyper-VではNIC Driverの差分があり、I/F名の差分が出てCMLのExt-ConnのBridgeモードが動作しない
VMWareとHyper-Vに乗せたときのCMLの気持ちを示します。
インストール手順
-
ISOファイル(
cml2_2.4.1-34_amd64-13.iso
とrefplat-20220211-fcs.iso
)をダウンロードする -
Hyper-Vのクイック作成からインストール元のISO
cml2_2.4.1-34_amd64-13.iso
を指定してマシン作成。- メモリは適当に容量を増やす。
- ディスクサイズは問われないが標準で128G(Thin Provision)作成されるので特に触らない。
-
作業1:作成後、インストール前にこのページを参考にしながらVT-x enableを行う。VMwareでの
仮想化エンジン > Intel VT-x/EPTを仮想化
をONにするためである。 -
インストールは通常通り行う。VMWareでのインストールと同じく途中で
refplat-*.iso
に入れ替える。 -
Hyper-Vの仮想スイッチマネージャで
外部ネットワーク
のSWを作成し、VMのネットワークに割り当てる。(既存の1つのNICをこれに切り替えます) -
(以下の作業はHyper-Vのコンソール上で行います。sshで接続してもshellは取れません)
-
作業2:起動した後に以下の作業を行う
-
再起動する。
ip link show eth0
が存在しなくなったことを確認し、ip link show ens160
が存在することを確認する。
作業2の補足:
- CMLはens160がCMLのI/F名だと前提にExt-ConnのBridgeの設定を行います。
- CML自身はLinuxのBridge機能を利用しており、
brctl addif bridge0 ens160
相当のコマンドが実行されるようです。 - VMWare上ではインタフェースは
vmxnet3
と認識され、この場合、vmxnet3のeth0
はens160
にrenameされます。(これがどのような設定でrenameしているのかを筆者は見つけていません。)- この挙動は
dmesg
でrenameしているログが見えます
- この挙動は
- 一方、Hyper-Vではインタフェースは
vmxnet3
ではないと認識され(おそらくe1000
?)eth0
のまま残ります - この結果、bridgeにVM上の外部とのI/Fが接続されず外部NWとの接続に失敗します。
このため、上記のようにsystemd.linkでens160
へのrenameを行います。
なお、Ext-ConnをNAT
で使う場合上記の問題は起きません。これは次のように考えられます。
- Ext-Connの
NAT
とは、virbr0
:IPアドレスを持つL3インタフェースと接続され、外部との間はNATされます。 - iptablesで以下のようにNATが書かれています(
iptables --list -t nat
)が、これにI/F名は含まれません。そのため外部への接続性がeth0
でもens160
でもNAPTは正常に動作します。
最後に
繰り返しですが、Ciscoは、CMLのHyper-V上の動作は保証していません。この記事はCMLで本来開放されている以外の設定を触るため、CMLが正常に動作しなくなる可能性もあります。