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

# はじめに

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

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

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

# 構成

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

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

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

```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 : GRE
A_vmbr1 -[dotted]- C_vmbr1 : GRE
A_vmbr1 -[dotted]- D_vmbr1 : GRE
B_vmbr1 -[dotted]- C_vmbr1 : GRE
B_vmbr1 -[dotted]- D_vmbr1 : GRE
C_vmbr1 -[dotted]- D_vmbr1 : GRE
@enduml
```

# 設定方法

## Node A

```
ovs-vsctl add-port vmbr1 gre0 -- set interface gre0 type=gre options:remote_ip=10.0.254.112
ovs-vsctl add-port vmbr1 gre1 -- set interface gre1 type=gre options:remote_ip=10.0.254.113
ovs-vsctl add-port vmbr1 gre2 -- set interface gre2 type=gre options:remote_ip=10.0.254.114
ovs-vsctl set bridge vmbr1 stp_enable=true
```

## Node B

```
ovs-vsctl add-port vmbr1 gre0 -- set interface gre0 type=gre options:remote_ip=10.0.254.111
ovs-vsctl add-port vmbr1 gre1 -- set interface gre1 type=gre options:remote_ip=10.0.254.113
ovs-vsctl add-port vmbr1 gre2 -- set interface gre2 type=gre options:remote_ip=10.0.254.114
ovs-vsctl set bridge vmbr1 stp_enable=true
```

## Node C

```
ovs-vsctl add-port vmbr1 gre0 -- set interface gre0 type=gre options:remote_ip=10.0.254.111
ovs-vsctl add-port vmbr1 gre1 -- set interface gre1 type=gre options:remote_ip=10.0.254.112
ovs-vsctl add-port vmbr1 gre2 -- set interface gre2 type=gre options:remote_ip=10.0.254.114
ovs-vsctl set bridge vmbr1 stp_enable=true
```

## Node D

```
ovs-vsctl add-port vmbr1 gre0 -- set interface gre0 type=gre options:remote_ip=10.0.254.111
ovs-vsctl add-port vmbr1 gre1 -- set interface gre1 type=gre options:remote_ip=10.0.254.112
ovs-vsctl add-port vmbr1 gre2 -- set interface gre2 type=gre options:remote_ip=10.0.254.113
ovs-vsctl set bridge vmbr1 stp_enable=true
```

# 確認
## 設定の確認

### Node A
```
$ ovs-vsctl list-ports vmbr1
gre0
gre1
gre2
```

### Node B
```
$ ovs-vsctl list-ports vmbr1
gre0
gre1
gre2
```

### Node C
```
$ ovs-vsctl list-ports vmbr1
gre0
gre1
gre2
```

### Node D
```
$ ovs-vsctl list-ports vmbr1
gre0
gre1
gre2
```

## 疎通の確認

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

# さいごに

かんたんでしたね

# 関連リンク

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