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
标签:
openvswitch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类