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

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

VirtualboxのゲストOS間を仮想ケーブルで接続する

Virtualboxでは、複数のゲストOSを立ち上げてゲストOS間で通信をする事が出来る。
Virtualboxのネットワーク設定にて「内部ネットワーク」(英語版の場合はInternal Network)にする事でゲストOS間で通信する事が出来るが、そのままの状態では全てのゲストOSの全てのインタフェースが接続されたような状態となり、ゲストOS間のL3ルーティングの検証にて正しい結果を得る事が出来ない。

実環境と同様にゲストOSのインタフェース間を接続し、こちらの想定どおりにL3ルーティングでネイバ関係を確立させる為には、1対1でケーブルで接続させるような設定が必要となる。
それはVirtualboxのネットワーク設定のName欄にて自側と至側を同じ名称に設定にする事で実現する。


当方の環境
ホストOS:Windows10 64bit版 / RAM: 8GB / CPU: Intel Core i5 M460 2.53GHz
Oracle Virtualbox:6.1.16
ゲストOS:Cumulus VX 4.2.1 x5台

5台のCumulus VXをLeaf-Spineな2層のIP Clos構成を組み、BGP unnumberedな設定でBGPピア関係を確立させた。
BGPの設定に関しては前回の記事を参照。
https://debslink.hatenadiary.jp/entry/20201206/1607231451 (Virtualbox + Cumulus VXでIP Clos構成を組んでみた)


設定前の構成
起動している全てのゲストOSの全ての内部ネットワークアダプタ(英語版ではInternal Network)のインタフェースが繋がっている状態である為、構成図で表すと以下のような感じになる。
これを、インタフェース1つに対し対向先のゲストOSのインタフェース1つを接続したような状態、つまりゲストOSのインタフェース間を1本1本仮想的にケーブルで接続したような状態にしたい。




設定前の構成でLLDPの状態を確認すると、以下が出力される。
※LLDP(Link Layer Discovery Protocol)とは、自機の情報をTLV(Type, Length, Value)形式で隣接する機器との間で情報を送受信する為のL2なプロトコル。
隣接する機器のホスト名や接続しているインタフェース名も確認出来る為、ベンダを問わず機器の接続確認が可能である。
Ciscoオンリーな環境ならCDPの方が一般的なのかな?

以下はSpine01のLLDPの確認結果。
対向先含め自機のインタフェース全ても見えている状態になっている。

cumulus@jpmtkvmsw99:mgmt:~$ net show lldp

LocalPort  Speed  Mode     RemoteHost   RemotePort
---------  -----  -------  -----------  ----------
eth0       100M   Mgmt     jpmtkvmsw01  eth0
eth0       100M   Mgmt     jpmtkvmsw02  eth0
eth0       100M   Mgmt     jpmtkvmsw03  eth0
eth0       100M   Mgmt     jpmtkvmsw98  eth0
swp1       10G    Default  jpmtkvmsw01  swp1
swp1       10G    Default  jpmtkvmsw01  swp2
swp1       10G    Default  jpmtkvmsw01  swp3
swp1       10G    Default  jpmtkvmsw01  swp4
swp1       10G    Default  jpmtkvmsw02  swp1
swp1       10G    Default  jpmtkvmsw02  swp2
swp1       10G    Default  jpmtkvmsw02  swp3
swp1       10G    Default  jpmtkvmsw02  swp4
swp1       10G    Default  jpmtkvmsw03  swp1
swp1       10G    Default  jpmtkvmsw03  swp2
swp1       10G    Default  jpmtkvmsw03  swp3
swp1       10G    Default  jpmtkvmsw03  swp4
swp1       10G    Default  jpmtkvmsw98  swp1
swp1       10G    Default  jpmtkvmsw98  swp2
swp1       10G    Default  jpmtkvmsw98  swp3
swp1       10G    Default  jpmtkvmsw98  swp4
swp1       10G    Default  jpmtkvmsw98  swp5
swp1       10G    Default  jpmtkvmsw98  swp6
swp1       10G    Default  jpmtkvmsw98  swp7
swp1       10G    Default  jpmtkvmsw99  swp2
swp1       10G    Default  jpmtkvmsw99  swp3
swp1       10G    Default  jpmtkvmsw99  swp4
:
長過ぎるので省略
:
cumulus@jpmtkvmsw99:mgmt:~$


以下はLeaf01のLLDPの確認結果。
こちらも、対向先含め自機のインタフェース全ても見えている状態になっている。

cumulus@jpmtkvmsw01:mgmt:~$ net show lldp

LocalPort  Speed  Mode      RemoteHost   RemotePort
---------  -----  --------  -----------  ----------
eth0       100M   Mgmt      jpmtkvmsw02  eth0
eth0       100M   Mgmt      jpmtkvmsw03  eth0
eth0       100M   Mgmt      jpmtkvmsw98  eth0
eth0       100M   Mgmt      jpmtkvmsw99  eth0
swp1       10G    Default   jpmtkvmsw01  swp2
swp1       10G    Default   jpmtkvmsw01  swp3
swp1       10G    Default   jpmtkvmsw01  swp4
swp1       10G    Default   jpmtkvmsw02  swp2
swp1       10G    Default   jpmtkvmsw02  swp1
swp1       10G    Default   jpmtkvmsw02  swp3
swp1       10G    Default   jpmtkvmsw02  swp4
swp1       10G    Default   jpmtkvmsw03  swp1
swp1       10G    Default   jpmtkvmsw03  swp2
swp1       10G    Default   jpmtkvmsw03  swp3
swp1       10G    Default   jpmtkvmsw03  swp4
swp1       10G    Default   jpmtkvmsw98  swp7
swp1       10G    Default   jpmtkvmsw98  swp2
swp1       10G    Default   jpmtkvmsw98  swp1
swp1       10G    Default   jpmtkvmsw98  swp4
swp1       10G    Default   jpmtkvmsw98  swp5
swp1       10G    Default   jpmtkvmsw98  swp3
swp1       10G    Default   jpmtkvmsw98  swp6
swp1       10G    Default   jpmtkvmsw99  swp3
swp1       10G    Default   jpmtkvmsw99  swp5
swp1       10G    Default   jpmtkvmsw99  swp4
swp1       10G    Default   jpmtkvmsw99  swp7
:
長過ぎるので省略
:
cumulus@jpmtkvmsw01:mgmt:~$



設定方法
ゲストOS間を仮想的に1本づつケーブル接続する際は、Virtualboxのネットワーク設定にて編集が必要。
例えば、Spine01のインタフェースswp1とLeaf01のインタフェースswp1を接続したい場合は、Spine01のswp1に関連付けさせるアダプタ設定(自分の環境ではAdapter 2)とLeaf01のswp1に関連付けさせるアダプタ設定(自分の環境ではAdapter2)のName欄を同一に設定する。
自分の場合、自側と至側が1対になるようName欄に2桁の数字をアサインした。この2桁の数字は他と重複しない値とした。

設定箇所は以下の画像を参照。
Virtualboxの以下の画面にて、Network設定欄内の 'intnet'の文字列を直接クリックしName欄のintnetに数字を追記した。
例えば、Spine01(jpmtkvmsw99)のインタフェースswp1とLeaf01(jpmtkvmsw01)のインタフェースswp1を接続する場合、Spine01のAdapter02のintnetをintnet01に、Leaf01のAdapter02のintnetをintnet01に編集。




設定後の構成
Nameに追記した2桁の数字はペアで同じ値を使用。同じネットワークアダプタ同士が、仮想的なケーブルで1本づつ繋がっている状態となる。


 
以下は、5台のゲストOSのVirtualboxのNetwork設定画面から抜粋。


 

設定後の確認
ゲストOSにログインし、LLDPで確認。

以下はSpine01のLLDPの確認結果。
ケーブルで接続しているが如く、自側のインタフェース1つに対し対向先のインタフェース1つだけが見えている状態となっている。

cumulus@jpmtkvmsw99:mgmt:~$ net show lldp

LocalPort  Speed  Mode     RemoteHost   RemotePort
---------  -----  -------  -----------  ----------
eth0       100M   Mgmt     jpmtkvmsw01  eth0
eth0       100M   Mgmt     jpmtkvmsw02  eth0
eth0       100M   Mgmt     jpmtkvmsw03  eth0
eth0       100M   Mgmt     jpmtkvmsw98  eth0
swp1       10G    Default  jpmtkvmsw01  swp1
swp2       10G    Default  jpmtkvmsw02  swp1
swp3       10G    Default  jpmtkvmsw03  swp1
cumulus@jpmtkvmsw99:mgmt:~$


以下はLeaf01のLLDPの確認結果。
こちらもケーブルで接続しているが如く、自側のインタフェース1つに対し対向先(Spine01,Spine02)のインタフェース1つづつが見えている状態となっている。
設定前と比較すると、非常にスッキリとした内容になっている。

cumulus@jpmtkvmsw01:mgmt:~$ net show lldp

LocalPort  Speed  Mode     RemoteHost   RemotePort
---------  -----  -------  -----------  ----------
eth0       100M   Mgmt     jpmtkvmsw02  eth0
eth0       100M   Mgmt     jpmtkvmsw03  eth0
eth0       100M   Mgmt     jpmtkvmsw98  eth0
eth0       100M   Mgmt     jpmtkvmsw99  eth0
swp1       10G    Default  jpmtkvmsw99  swp1
swp2       10G    Default  jpmtkvmsw98  swp1
cumulus@jpmtkvmsw01:mgmt:~$



リンク先・参照したサイト
https://www.virtualbox.org/ Oracle VirtualBox
https://cumulusnetworks.com/products/cumulus-vx/ Cumulus VX
https://debslink.hatenadiary.jp/entry/20201206/1607231451 Virtualbox + Cumulus VXでIP Clos構成を組んでみた
https://www.ieee802.org/1/pages/802.1AB-rev.html 802.1AB-REV - Station and Media Access Control Connectivity Discovery
https://sig9.hatenablog.com/entry/2019/10/04/000000 はじめての LLDP