CentOS 8 StreamにOpen vSwitchのインストール 

# はじめに
適当なノートパソコンにインストールしたCentOS 8 StreamでOpen vSwitchをインストールしてみます。

# 前提条件
- CentOS 8 Stream
- Cisco 2940 (古)

# 作るもの
```
+ bridge0
  + port0 (VLAN 11) 
    + iface0 (192.168.11.199/24)
  + port1
    + enp9s0 (Trunk)  <--------------------------> Cisco 2940 (Trunk)
```

# インストール
```
# yum install -y epel-release centos-release-openstack-train
# yum install -y openvswitch NetworkManager-ovs
# systemctl start openvswitch
# systemctl enable openvswitch
```


# Open vSwitchの設定
途中で物理インタフェイスに設定されている内容を消すので、リモートで作業できなくなります。
ブリッジするインタフェイスとは別のインタフェイス経由で作業するか、コンソールから直接やりましょう。

## ブリッジの作成
```
# nmcli conn add type ovs-bridge conn.interface bridge0
```

## インタフェイス用ポートの作成
```
# nmcli conn add type ovs-port conn.interface port0 master bridge0 ovs-port.tag 11
```

## インタフェイスの作成
```
# nmcli conn add type ovs-interface slave-type ovs-port conn.interface iface0 master port0
# nmcli conn modify ovs-slave-iface0 ipv4.method manual
# nmcli conn modify ovs-slave-iface0 ipv4.address 192.168.11.199/24
# nmcli conn modify ovs-slave-iface0 ipv4.dns 192.168.11.1
# nmcli conn modify ovs-slave-iface0 ipv4.gateway 192.168.11.1
# nmcli conn modify ovs-slave-iface0 ipv6.method disabled
```

## 物理インタフェイスの接続
```
# nmcli conn del enp9s0
# nmcli conn add type ovs-port conn.interface port1 master bridge0
# nmcli conn add type ethernet conn.interface enp9s0 master port1
```

## Network Managerの再起動(いる？)
```
# service NetworkManager restart
```

#設定の確認
```
# nmcli c
NAME                UUID                                  TYPE           DEVICE>
ovs-slave-iface0    224ea63c-0861-4c47-abfb-5318a60141bd  ovs-interface  iface0>
ovs-bridge-bridge0  568447dc-c742-433b-b212-f297745cc4ec  ovs-bridge     bridge>
ovs-slave-enp9s0    c92d5bf2-f631-4673-9a3f-0f1115174bd1  ethernet       enp9s0>
ovs-slave-port0     d2fc7bcc-8a8a-4d5e-9343-365a6b479a5e  ovs-port       port0 >
ovs-slave-port1     78b8990c-1f75-4fb9-820a-386ce987e7c3  ovs-port       port1 >

# ovs-vsctl show
a0cac575-f8ff-4019-976e-ca7929fe8217
    Bridge "bridge0"
        Port "port0"
            tag: 11
            Interface "iface0"
                type: internal
        Port "port1"
            Interface "enp9s0"
                type: system
    ovs_version: "2.12.0"

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
8: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
9: iface0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.199/24 brd 192.168.11.255 scope global noprefixroute iface0
       valid_lft forever preferred_lft forever
    inet6 fe80::8594:4561:897d:decd/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
```

# 対向スイッチ(Cisco 2940)の設定
```
c2940#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
c2940(config)#int Fa0/6
c2940(config-if)#switchport mode trunk
c2940(config-if)#switchport trunk allowed vlan 11
```

# 疎通確認
```
# ping www.yahoo.co.jp
PING edge12.g.yimg.jp (182.22.16.251) 56(84) bytes of data.
64 bytes from 182.22.16.251 (182.22.16.251): icmp_seq=1 ttl=53 time=10.9 ms
64 bytes from 182.22.16.251 (182.22.16.251): icmp_seq=2 ttl=53 time=10.1 ms
```

#最後に
NetworkManagerの扱いに慣れていないので、本質でないところに手こずりましたが、まぁなんとか繋がりました。



# 参考にしたサイト
1. https://computingforgeeks.com/how-to-install-open-vswitch-on-centos-rhel/
2. https://developer.gnome.org/NetworkManager/stable/nm-openvswitch.html