讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么配置OVS(OpenvSwitch)虚拟交换机实现复杂SDN网络

小涛姑娘_4273

小涛姑娘_4273

发布时间:2026-10-08 07:46:29

|

208人浏览过

|

来源于php中文网

原创

关键在于桥、端口、流表三者对齐:ovs-vsctl add-br创建网桥后需用show确认状态,internal端口须配netns和promisc,流表下发前须验证OpenFlow版本与dpid,VXLAN隧道需双向配置remote_ip并开放UDP 8472。

linux怎么配置ovs(openvswitch)虚拟交换机实现复杂sdn网络

直接上手配置 OVS 实现 SDN 网络,关键不是“装完就行”,而是桥、端口、流表三者必须对齐:桥是容器,端口是入口/出口,流表才是真正的控制逻辑。跳过流表只建桥和端口,等于搭好马路却没红绿灯——车能跑,但没法调度。

ovs-vsctl add-br 创建网桥后必须确认状态

执行 ovs-vsctl add-br ovs-br0 只是写入数据库,不等于网桥已就绪。常见错误是立刻配 IP 或加端口,结果报 Device "ovs-br0" does not exist。

  • 必须用 ovs-vsctl show 查看输出中是否出现 Bridge "ovs-br0" 块,且无 is_connected: false
  • 若缺失,检查 systemctl status openvswitch 是否 active(running),尤其 Ubuntu 20.04 安装后常需手动 systemctl daemon-reload 再 start
  • 不要给网桥本身配 IP(如 ip addr add),除非你明确要宿主机走该桥通信;否则应把物理网卡(如 ens33)以 type=patch 或直接 add-port 方式接入桥

internal 类型端口必须配合 netns 使用,否则无法通信

type=internal 的端口(如 p0)本质是内核创建的虚拟网卡,但默认处于 host network namespace,会与宿主机路由冲突。直接 ifconfig p0 up 后 ping 不通是常态。

Switch Modes
Switch Modes

动态切换AI模型以优化成本与性能。当用户发出“eco mode”、“balanced mode”、“smart mode”或“max mode”等模式指令,或使用“/modes status”查询状态及“/modes setup”配置模式时触发。

下载
  • 必须用 ip netns add ns0 创建独立网络命名空间
  • 用 ip link set p0 netns ns0 将端口移入,再进 ip netns exec ns0 配置 IP 和 promisc 模式
  • 若漏掉 ifconfig p0 promisc up,即使 IP 正确,OVS 数据面也无法收包(ovs-appctl dpif/show 中可见 dropped 计数上涨)
  • 验证连通性务必用 ip netns exec ns0 ping 192.168.0.101,而非宿主机直接 ping

ovs-ofctl 添加流表前先确认 OpenFlow 版本和 datapath ID

流表不生效最常见原因是协议版本错配或目标交换机识别错误。比如在 Mininet 里启动的 s1 和手动 ovs-vsctl add-br 创建的 ovs-br0 是两个完全独立的 datapath。

  • 先运行 ovs-ofctl -O OpenFlow13 show ovs-br0,确认输出含 dpid: 字段且无 failed to connect
  • 若提示 connection refused,说明 ovs-vswitchd 未启用 OpenFlow 接口,需检查 ovs-vsctl get-manager 是否为空;空则需 ovs-vsctl set-manager ptcp:6640(仅测试环境)
  • 下发流表时,in_port 值必须是 OpenFlow 端口号(即 ofport_request 设置值),不是 Linux 接口名;例如 p0 设了 ofport_request=100,流表就得写 in_port=100,写 in_port=p0 会静默失败
  • 测试基础转发时,优先用 ovs-ofctl -O OpenFlow13 dump-flows ovs-br0 看是否真有流存在,别只信命令返回“success”

VXLAN 隧道端口必须双向配置 remote_ip,且防火墙放行 UDP 8472

单边配 options:remote_ip=192.168.190.130 只能发包不能收,因为 VXLAN 解封装依赖对端 IP 回填到外层 IP 头。实测中 70% 的隧道不通问题出在这里。

  • 主机 A 配 remote_ip=192.168.190.130,主机 B 就必须配 remote_ip=192.168.190.128(A 的实际 IP)
  • 两台宿主机均需开放 UDP 8472 端口:ufw allow 8472/udp(Ubuntu)或 firewall-cmd --add-port=8472/udp --permanent(CentOS)
  • 用 tcpdump -i any port 8472 在对端抓包,若只有发包无收包,基本可断定 remote_ip 配错或防火墙拦截
  • VXLAN 接口上线后,ovs-vsctl show 中该端口状态应为 status: {tunnel_egress_iface="ens33", tunnel_egress_iface_status="up"},若显示 down 则物理链路或 IP 配置有误

真正卡住人的地方往往不在命令语法,而在 datapath 与 OpenFlow 控制面之间的隐式契约:ovs-vsctl 管配置,ovs-ofctl 管流表,两者操作对象必须是同一个 bridge 实例;而 netns、VXLAN、OpenFlow 版本这些细节,任何一个错位都会让整个控制逻辑静默失效——它不报错,只是不工作。

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

1051

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

1397

2024.03.13

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

3890

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3333

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2473

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

5970

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

5622

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3293

2023.07.20

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

0

2026.10.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 3万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

Docker 教程
Docker 教程

共19课时 | 29.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn