【2024年08月版】Proxmoxで分散スイッチ構築メモ【vxlan, メッシュ型】

# はじめに

vSphere上で使っていた分散スイッチみたいなのを、
Proxmox上で、Open vSwitch でつくってみたいな

とういことで、VXLANでつないでみるメモ

:::note info
Google検索しても理解できるレベルの資料がなかったので、ChatGPT先生に教えてもらいました
:::

# 構成

今回は、以下のメッシュ型の構成で作ってみる。
ループになるのでSTPを有効にしています。

ハブ・アンド・スポーク型の記事はこちら　↓
[【2024年08月版】Proxmoxで分散スイッチ構築メモ【vxlan, ハブ・アンド・スポーク型】](https://qiita.com/nouernet/items/0b104ba29488664fe023)

GREの記事はこちら ↓
[【2024年08月版】Proxmoxで分散スイッチ構築メモ【gre, メッシュ型】](https://qiita.com/nouernet/items/0b6163b8497e29e7e9d5)

```plantuml
@startuml
skinparam componentStyle rectangle

node Hub

node "Node A" as A {
  [vmbr0 (OVS Switch)\n10.0.254.111] as A_vmbr0
  [vmbr1 (OVS Switch)\n172.16.254.111] as A_vmbr1
}

node "Node B" as B {
  [vmbr0 (OVS Switch)\n10.0.254.112] as B_vmbr0
  [vmbr1 (OVS Switch)\n172.16.254.112] as B_vmbr1
}

node "Node C" as C {
  [vmbr0 (OVS Switch)\n10.0.254.113] as C_vmbr0
  [vmbr1 (OVS Switch)\n172.16.254.113] as C_vmbr1
}

node "Node D" as D {
  [vmbr0 (OVS Switch)\n10.0.254.114] as D_vmbr0
  [vmbr1 (OVS Switch)\n172.16.254.114] as D_vmbr1
}

Hub --> A_vmbr0
Hub <-- B_vmbr0
Hub <-- C_vmbr0
Hub <-- D_vmbr0

A_vmbr1 -[dotted]- B_vmbr1 : VXLAN
A_vmbr1 -[dotted]- C_vmbr1 : VXLAN
A_vmbr1 -[dotted]- D_vmbr1 : VXLAN
B_vmbr1 -[dotted]- C_vmbr1 : VXLAN
B_vmbr1 -[dotted]- D_vmbr1 : VXLAN
C_vmbr1 -[dotted]- D_vmbr1 : VXLAN
@enduml
```

# 設定方法

## Node A

```
ovs-vsctl add-port vmbr1 vxlanB -- set interface vxlanB type=vxlan options:remote_ip=10.0.254.112 options:key=100
ovs-vsctl add-port vmbr1 vxlanC -- set interface vxlanC type=vxlan options:remote_ip=10.0.254.113 options:key=100
ovs-vsctl add-port vmbr1 vxlanD -- set interface vxlanD type=vxlan options:remote_ip=10.0.254.114 options:key=100
ovs-vsctl set bridge vmbr1 stp_enable=true
```

## Node B

```
ovs-vsctl add-port vmbr1 vxlanA -- set interface vxlanA type=vxlan options:remote_ip=10.0.254.111 options:key=100
ovs-vsctl add-port vmbr1 vxlanC -- set interface vxlanC type=vxlan options:remote_ip=10.0.254.113 options:key=100
ovs-vsctl add-port vmbr1 vxlanD -- set interface vxlanD type=vxlan options:remote_ip=10.0.254.114 options:key=100
ovs-vsctl set bridge vmbr1 stp_enable=true
```

## Node C

```
ovs-vsctl add-port vmbr1 vxlanA -- set interface vxlanA type=vxlan options:remote_ip=10.0.254.111 options:key=100
ovs-vsctl add-port vmbr1 vxlanB -- set interface vxlanB type=vxlan options:remote_ip=10.0.254.112 options:key=100
ovs-vsctl add-port vmbr1 vxlanD -- set interface vxlanD type=vxlan options:remote_ip=10.0.254.114 options:key=100
ovs-vsctl set bridge vmbr1 stp_enable=true
```

## Node D

```
ovs-vsctl add-port vmbr1 vxlanA -- set interface vxlanA type=vxlan options:remote_ip=10.0.254.111 options:key=100
ovs-vsctl add-port vmbr1 vxlanB -- set interface vxlanB type=vxlan options:remote_ip=10.0.254.112 options:key=100
ovs-vsctl add-port vmbr1 vxlanC -- set interface vxlanC type=vxlan options:remote_ip=10.0.254.113 options:key=100
ovs-vsctl set bridge vmbr1 stp_enable=true
```

# 確認
## 設定の確認

### Node A
```
$ ovs-vsctl list-ports vmbr1
vxlanB
vxlanC
vxlanD
```

### Node B
```
$ ovs-vsctl list-ports vmbr1
vxlanA
vxlanC
vxlanD
```

### Node C
```
$ ovs-vsctl list-ports vmbr1
vxlanA
vxlanB
vxlanD
```

### Node D
```
$ ovs-vsctl list-ports vmbr1
vxlanA
vxlanB
vxlanC
```

## 疎通の確認

- vmbr1 に直接IPを指定して（たとえば172.16.254.0/24など）、互いにPingで疎通確認
- vmbr1 をVMやLXCで利用して疎通確認

# さいごに

かんたんでしたね

# 関連リンク

- [【2024年08月版】Proxmoxで分散スイッチ構築メモ【vxlan, ハブ・アンド・スポーク型】](https://qiita.com/nouernet/items/0b104ba29488664fe023)
- [【2024年08月版】Proxmoxで分散スイッチ構築メモ【gre, メッシュ型】](https://qiita.com/nouernet/items/0b6163b8497e29e7e9d5)
- [VXLAN lab based on OpenVSwitch and LXD containers](https://gist.github.com/platu/427c7b94cab38bd8dea34dbe24ba5f30)
- [Open vSwitch | FAQ | VXLANs](https://docs.openvswitch.org/en/latest/faq/vxlan/)