在麒麟OS上部署Open vSwitch需五步:一、确认内核版本并安装build-essential、linux-headers、python3-dev等依赖;二、下载源码编译安装,执行./configure、make、make install;三、加载openvswitch内核模块,初始化并启动ovsdb-server;四、启动ovs-vswitchd,创建网桥br0并配置IP;五、添加veth端口,测试连通性验证转发功能。

如果您希望在麒麟操作系统上部署软件定义网络架构,Open vSwitch 是一个关键的开源虚拟交换机组件。以下是完成 Open vSwitch 在麒麟OS 上安装、配置与基础验证的具体步骤:
一、确认系统环境与依赖安装
麒麟OS 基于 Linux 内核,需确保系统已启用内核模块支持并安装编译工具链。Open vSwitch 依赖于 kernel headers、make、gcc 及 python3-dev 等基础开发包,缺失将导致模块编译失败。
1、执行 uname -r 查看当前内核版本。
2、运行 sudo apt update && sudo apt install build-essential linux-headers-$(uname -r) python3-dev libssl-dev libpcap-dev 安装必需依赖。
3、使用 ls /lib/modules/$(uname -r)/build 验证内核头文件路径是否可访问。
二、源码编译安装 Open vSwitch
麒麟OS 官方仓库未预置较新版本的 ovs 包,直接安装可能缺少 DPDK 或 netdev datapath 支持,因此推荐从上游源码构建以获得完整功能集。
1、下载 Open vSwitch 源码压缩包,例如执行 wget https://www.openvswitch.org/releases/openvswitch-3.4.0.tar.gz。
2、解压后进入目录:tar -xzf openvswitch-3.4.0.tar.gz && cd openvswitch-3.4.0。
3、执行 ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --enable-ssl 配置编译选项。
4、运行 make -j$(nproc) && sudo make install 完成编译与安装。
三、加载内核模块并启动 ovsdb-server
Open vSwitch 的 datapath 功能需通过内核模块 openvswitch.ko 加载,ovsdb-server 则作为配置数据库服务先行启动,否则 ovs-vswitchd 无法初始化。
1、执行 sudo modprobe openvswitch 加载核心模块。
2、检查模块是否就绪:lsmod | grep openvswitch,应返回非空结果。
3、初始化数据库目录:sudo mkdir -p /etc/openvswitch && sudo ovsdb-tool create /etc/openvswitch/conf.db vswitchd/vswitch.ovsschema。
4、启动配置服务:sudo ovsdb-server --remote=punix:/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach。
四、初始化 ovs-vswitchd 并创建网桥
ovs-vswitchd 是 Open vSwitch 的主守护进程,负责数据包转发逻辑;创建网桥是构建 SDN 转发平面的第一步,用于连接虚拟机或容器接口。
1、运行 sudo ovs-vswitchd --pidfile --daemon 启动转发服务。
2、执行 sudo ovs-vsctl add-br br0 创建名为 br0 的集成网桥。
3、查看网桥状态:sudo ovs-vsctl show,输出中应包含 br0 及其 datapath-id 字段。
4、为 br0 分配 IP 地址以便本地通信:sudo ip addr add 192.168.100.1/24 dev br0 && sudo ip link set br0 up。
五、添加端口并验证流表行为
向网桥注入端口后,可通过 OpenFlow 协议下发流表控制转发路径,这是 SDN 架构区别于传统交换的核心机制。默认情况下,br0 使用 normal 模式进行 L2 学习转发。
1、创建一对 veth 接口用于测试:sudo ip link add veth0 type veth peer name veth1。
2、将 veth0 添加至 br0:sudo ovs-vsctl add-port br0 veth0。
3、启用两个接口:sudo ip link set veth0 up && sudo ip link set veth1 up。
4、向 veth1 分配地址并测试连通性:sudo ip addr add 192.168.100.2/24 dev veth1 && ping -c 3 192.168.100.1。










