kvm + openvswitch

https://docs.openvswitch.org/en/latest/howto/vlan
https://docs.openvswitch.org/en/latest/howto/tunneling
https://docs.openvswitch.org/en/latest/howto/userspace-tunneling
https://superuser.openstack.org/articles/multiple-private-networks-with-open-vswitch-gre-tunnels-and-libvirt
https://www.sdnlab.com/5889.html

准备2台虚拟机(node-153 192.168.8.153 & node-154 192.168.8.154),环境rocky 8.4,开启虚拟化

# grep -E 'svm|vmx' /proc/cpuinfo
vmx is for Intel processors
svm is for AMD processors

安装kvm

yum install -y qemu-kvm libvirt virt-install virt-viewer
systemctl enable libvirtd && systemctl start libvirtd

删除kvm默认建立的linux bridge

virsh net-destroy default
virsh net-undefine default

安装openvswitch

yum install -y openvswitch-2.12.0-1.1.el8.x86_64.rpm 
systemctl enable openvswitch && systemctl start openvswitch

建立外部网桥br-ext

ovs-vsctl add-br br-ext

cat > /etc/sysconfig/network-scripts/ifcfg-br-ext <<EOF
DEVICE=br-ext
DEVICETYPE=ovs
TYPE=OVSBridge
IPADDR=192.168.8.153
NETMASK=255.255.255.0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
GATEWAY=192.168.8.1
DNS1=144.144.144.144
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-enp1s0 <<EOF
DEVICE=enp1s0
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ext
ONBOOT=yes
EOF

ovs-vsctl add-port br-ext enp1s0 && systemctl restart network

# 或者手工设置
ip addr flush dev enp1s0
ip addr add 192.168.8.153/24 dev br-int
ip link set dev br-int up
ip route add default via 192.168.8.1

建立内部网桥br-int

# node-153
ovs-vsctl add-br br-int
ovs-vsctl add-port br-int gre0 -- set interface gre0 type=gre options:remote_ip=192.168.8.154
ovs-vsctl set bridge br-int stp_enable=true

# node-154
ovs-vsctl add-br br-int
ovs-vsctl add-port br-int gre0 -- set interface gre0 type=gre options:remote_ip=192.168.8.153
ovs-vsctl set bridge br-int stp_enable=true

kvm建立ovs-network网桥

cat > /tmp/ovs-network.xml <<EOF
<network>
  <name>ovs-network</name>
  <forward mode='bridge'/>
  <bridge name='br-int'/>
  <virtualport type='openvswitch'/>
  <portgroup name='no-vlan' default='yes'>
  </portgroup>
  <portgroup name='vlan-100'>
    <vlan>
      <tag id='100'/>
    </vlan>
  </portgroup>
  <portgroup name='vlan-200'>
    <vlan>
      <tag id='200'/>
    </vlan>
  </portgroup>
</network>
EOF

virsh net-define /tmp/ovs-network.xml 
virsh net-autostart ovs-network
virsh net-start ovs-network

virsh net-list
 Name          State    Autostart   Persistent
------------------------------------------------
 ovs-network   active   yes         yes

建立vm

virt-install 
  --os-type=linux --os-variant=rhel8.4 
  --name=vm01 --vcpus=1 --ram=1024 
  --location=/tmp/Rocky-8.4-x86_64-minimal.iso 
  --disk path=/var/lib/libvirt/images/vm01.img,bus=virtio,size=10,cache=writeback,format=qcow2 
  --network=network:ovs-network,model=virtio 
  --extra-args "console=ttyS0,115200" 
  --nographics

virt-install 
  --os-type=linux --os-variant=rhel8.4 
  --name=vm01 --vcpus=1 --ram=1024 
  --location=/tmp/Rocky-8.4-x86_64-minimal.iso 
  --disk path=/var/lib/libvirt/images/vm01.img,bus=virtio,size=10,cache=writeback,format=qcow2 
  --network bridge=br-int,virtualport.type=openvswitch,model=virtio 
  --extra-args "console=ttyS0,115200" 
  --nographics
原文地址:https://www.cnblogs.com/liujitao79/p/15193425.html