VXLAN
VXLANとはUDPパケット内にL2(Ethernetフレーム)を含めるもの。また、VLANタグ数(4096)の制約を事実上解消するためでもある。
ネットワーク(実現するもの)
GNS3で最も簡単に実現できそうなルーターやスイッチを探すと、OpenvSwitchらしいことがわかったので、それを利用する。
- OpenvSwtichによるVXLAN
- 末端に2つのVLAN(10,20)が存在
- OpenvSwitch-L2Switch間はトランク(802.1Q)
- VXLAN間はタグ(802.1Q)付きEthernetフレーム
OpenvSwitchのGNS3への導入
OpenvSwitchアプライアンスをダウンロードして、GNS3へインポートする(File → Import aapliance)。
(見かけの)Importが終わると、Switchのところにインストールされる。
DragAndDropしようとすると、ここで初めてイメージをダウンロードするようだ。
起動後のConsole状況は下記。
設定
PC
自明のため省略。
L2Swtich
- ネットワークI/F e0がトランクポート
- e1はアクセスポートVLAN10
- e2はアクセスポートVLAN20
OpenvSwitch
- ネットワークI/F eth0: OpenvSwitch間接続
- eth1: トランクポート
- vxlan0: VXLAN仮想ポート
- newbr: eth1とvxlan0とをつなぐブリッジ
下記は左側のOpenvSwitchの設定である。右側はIPアドレスのみ異なる。
- インストール初期時には既存ブリッジbr0にeth0及びeth1が属していたので、両者をbr0から取り除く(1回だけ)
$ ovs-vsctl del-port br0 eth0
$ ovs-vsctl del-port br0 eth1
- ブリッジnewbrを作成
$ ovs-vsctl add-br newbr
- eth0に物理IPアドレスアサイン
$ ip addr add dev eth0 10.1.1.1/24
- eth1をブリッジnewbrに追加
$ ovs-vsctl add-port newbr eth1
- eth1はトランクポート(VLAN10,20)
$ ovs-vsctl set port eth1 trunk=10,20
- vxlan0を作成してブリッジnewbrに追加
- VNI100
- 接続先OpenvSwitch IPアドレス指定
$ ovs-vsctl add-port newbr vxlan0 -- set interface vxlan0 type=vxlan options:key=100 options:remote_ip=10.1.1.2
設定状況は下記となる。
$ ovs-vsctl show
...
Bridge newbr
Port eth1
trunks: [10, 20]
Interface eth1
Port newbr
Interface newbr
type: internal
Port vxlan0
Interface vxlan0
type: vxlan
options: {key="100", remote_ip="10.1.1.2"}
検証
PC1からPC3へpingした時のVXLAN区間のWiresharkデータは下記となる。
下記が確認できる。
- VXLAN VNI: 100
- VXLAN Port: UDP 4789
- VLAN ID: 10
- Outer IP address: 10.1.1.1, 10.1.1.2
- Inter IP address: 192.168.1.10, 192.168.1.20
EOF