阅前须知
本文所有配置只在虚拟机上执行,并未做物理机验证测试,生产环境慎用;
安装openvswitch
方法一、安装系统时勾选对应附加软件
在安装openEuler 24.03的时候,进入【软件选择】,点选【虚拟化主机】,点选【已选环境的附加软件】下的【虚拟switch】;即自动安装好openvswitch。操作如下图所示:
方法二、使用yum命令安装openvswitch
sudo yum -y install openvswitch
直接创建网桥(交换机)失败
尝试使用ovs创建网桥(交换机)
ovs-vsctl add-br switch
报错:ovs-vsctl: unix:/var/run/openvswitch/db.sock: database connection failed (No such file or directory)
这是因为ovsdb-server没有启动导致的错误(①-解释ovsdb-server作用)
由于不确定ovs-ctl的位置,用find命令查找一下
find /usr/share -name 'ovs-*' -type f
# 以下是输出内容
/usr/share/nmap/scripts/ovs-agent-version.nse
/usr/share/openvswitch/scripts/ovs-kmod-ctl
/usr/share/openvswitch/scripts/ovs-ctl
/usr/share/openvswitch/scripts/ovs-systemd-reload
/usr/share/openvswitch/scripts/ovs-save
/usr/share/openvswitch/scripts/ovs-lib
其中ovs-ctl是最最常用的管理openvswitch服务的核心工具,可以加该脚本文件所在目录添加到PATH变量中,方便调用。
export PATH=$PATH:/usr/share/openvswitch/scripts
启动openvswitch
/usr/share/openvswitch/scripts/ovs-ctl start
# 若配置好了PATH,则执行以下语句同效
ovs-ctl start
# 输出信息如下
Starting ovsdb-server [ OK ]
system ID not configured, please use --system-id ... failed!
Configuring Open vSwitch system IDs [ OK ]
Inserting openvswitch module [ OK ]
Starting ovs-vswitchd [ OK ]
Enabling remote OVSDB managers [ OK ]
system ID not configured, please use --system-id ... failed,可以不用管
ovs-ctl --help
# 以下为system-id相关输出信息
One of the following options is required for "start", "restart" and "force-reload-kmod":
--system-id=UUID set specific ID to uniquely identify this system #手动指定系统ID作为唯一标识符
--system-id=random use a random but persistent UUID to identify this system #随机指定一个长期存在的标识符
根据提示,运行下面这条语句,就不会出现failed了……
ovs-ctl --system-id=ramdom start
配置网桥(交换机)
创建网桥(交换机)
下面就在空白的拓扑图上放一个没有端口的交换机
ovs-vsctl add-br switch
ovs-vsctl show
# 以下为命令输出信息
8e845dc1-bb7b-4629-b316-62f06b73117c
Bridge switch
Port switch
Interface switch
type: internal
ovs_version: "3.2.1"
添加端口
优化后的方法
然后在交换机上添加端口port0和port1,并指定接口类型为internal(内部接口)
ovs-vsctl add-port switch port0 -- set Interface port0 type=internal
ovs-vsctl add-port switch port1 -- set Interface port1 type=internal
优化前的方法
仅以port0举例,会报一大串提示(②-待补充ovs-vsctl机制)
ovs-vsctl add-port switch port0
# 以下为命令输出
ovs-vsctl: Error detected while setting up 'port0': could not open network device p1 (No such device). See ovs-vswitchd log for details.
ovs-vsctl: The default log directory is "/var/log/openvswitch".
# 无需理会上面的提示
ovs-vsctl set Interface port0 type=internal
配置好两端口的交换机如下所示:
ovs-vsctl show
# 以下为命令输出信息
8e845dc1-bb7b-4629-b316-62f06b73117c
Bridge switch
Port port0
Interface port0
type: internal
Port switch
Interface switch
type: internal
Port port1
Interface port1
type: internal
ovs_version: "3.2.1"
补充
①解释ovsdb-server作用:在交换机运行的过程中,ovs-vswitchd 会将交换机的配置、数据流信息及其变化保存到由 ovsdb-server 直接管理的数据库中。所以 ovs-vswitchd 需要和 ovsdb-server 通过 UNIX 的 Socket 机制进行通信以获得或者保存配置信息,ovsdb-server 的存在使得 OVS 的配置能够被持久化存储。(摘自《软件定义网络(SDN)技术与应用》)