当前位置: 首页 > ai >正文

理解 Open vSwitch (OVS)

Open vSwitch(简称 OVS)是一个开源的 虚拟交换机,主要用于 虚拟化环境(如 KVM、Xen、Docker)和 软件定义网络(SDN)。它类似于物理交换机,但在软件层面实现,可以灵活地管理虚拟网络流量。


1. Open vSwitch 的核心概念

(1) 虚拟交换机(vSwitch)

  • 物理交换机用于连接物理设备(如服务器、电脑),而 OVS 是软件实现的交换机,用于连接虚拟机(VM)、容器和物理网络。

  • 它支持 VLAN、VXLAN、STP、流量控制 等高级网络功能。

(2) 主要组件

组件说明
ovs-vswitchdOVS 的核心守护进程,负责数据包转发和流表管理。
ovsdb-server存储 OVS 的配置(如端口、网桥、流表规则)。
ovs-ofctl用于管理 OpenFlow 流表的命令行工具。
ovs-vsctl用于配置 OVS 网桥、端口的命令行工具。

(3) 关键术语

术语说明
Bridge (网桥)类似于物理交换机,用于连接多个端口(Port)。
Port (端口)可以是物理网卡(如 eth0)、虚拟接口(如 veth)或隧道(如 VXLAN)。
Flow Table (流表)决定数据包如何转发(类似路由表,但更灵活)。
OpenFlowSDN 协议,允许控制器(如 OpenDaylight)动态管理 OVS。

2. OVS 的典型应用场景

(1) 虚拟化网络(KVM、Xen、Docker)

  • OVS 可以连接多个虚拟机(VM),并让它们像在同一个物理网络中一样通信。

  • 示例:

    # 创建一个 OVS 网桥,并添加物理网卡 eth0
    ovs-vsctl add-br br0
    ovs-vsctl add-port br0 eth0

    这样,所有连接到 br0 的 VM 都可以通过 eth0 访问外部网络。

(2) 云计算(OpenStack、Kubernetes)

  • OpenStack Neutron 使用 OVS 作为默认的虚拟网络后端。

  • Kubernetes 的 CNI 插件(如 OVN-Kubernetes)也依赖 OVS。

(3) SDN(软件定义网络)

  • OVS 支持 OpenFlow,可以被 SDN 控制器(如 OpenDaylight、ONOS)集中管理。

  • 示例:

    # 设置 OVS 由 OpenFlow 控制器管理
    ovs-vsctl set-controller br0 tcp:192.168.1.100:6653

3. 如何管理 Open vSwitch?

(1) 查看 OVS 状态

ovs-vsctl show  # 查看所有网桥和端口

输出示例:

Bridge "br0"Port "eth0"Interface "eth0"Port "br0"Interface "br0"type: internal

(2) 创建网桥并添加端口

ovs-vsctl add-br br0          # 创建网桥 br0
ovs-vsctl add-port br0 eth0   # 把 eth0 加入 br0
ovs-vsctl add-port br0 vnet1  # 把虚拟机接口 vnet1 加入 br0

(3) 查看流表(类似交换机 MAC 表)

ovs-ofctl dump-flows br0

输出示例:

NXST_FLOW reply (xid=0x4):cookie=0x0, duration=10.123s, table=0, n_packets=5, n_bytes=490, priority=100,ip,in_port=1 actions=output:2
  • 这条规则表示:从 in_port=1 进入的 IP 数据包,会被转发到 output=2


4. OVS vs Linux Bridge(传统网桥)

特性Open vSwitchLinux Bridge
SDN 支持✅ 支持 OpenFlow❌ 不支持
VXLAN/GRE 隧道✅ 支持❌ 需额外配置
云计算集成✅ OpenStack/K8s 默认❌ 较少使用
性能⚡ 优化更好(DPDK 支持)⚡ 传统方式
配置复杂度⚠️ 较复杂(适合高级网络)✅ 简单易用

5. 总结

  • Open vSwitch 是一个强大的虚拟交换机,适用于虚拟化、云计算和 SDN。

  • 核心功能

    • 管理虚拟网络(VM、容器)。

    • 支持 OpenFlow,可被 SDN 控制器管理。

    • 提供 VLAN、VXLAN、流量控制等高级功能。

  • 常用命令

    • ovs-vsctl show(查看配置)

    • ovs-ofctl dump-flows br0(查看流表)

    • ovs-vsctl add-br/add-port(管理网桥)

如果你在 OpenStack、Kubernetes 或 SDN 环境 中看到 OVS,现在你应该明白它的作用了!

http://www.xdnf.cn/news/5868.html

相关文章:

  • 一键转换上百文件 Word 批量转 PDF 软件批量工具
  • 大模型——Crawl4AI为 LLM 和 RAG 准备高质量网页数据
  • ‌Element UI 双击事件(@cell-dblclick 与 @row-dblclick)
  • 函数式方法的实现(JDK8+)
  • 洛谷 P3374 【模板】树状数组 1(树状数组解法)
  • C#高级编程:设计模式原则
  • 第28节:现代CNN架构-ResNet与残差连接
  • Android加固工具测评:易盾、顶象、360加固哪款更好用?
  • 【源码+文档+调试讲解】党员之家服务系统小程序1
  • 如何同步虚拟机文件夹
  • Linux精确列出非法 UTF-8 字符的路径或文件名
  • 从虚拟现实到混合现实:沉浸式体验的未来之路
  • 【TMFN】一种基于文本的多模态融合网络,具有多尺度特征提取和无监督对比学习,用于多模态情感分析
  • Day1 时间复杂度
  • 3.2 一点一世界
  • mysql8常用sql语句
  • Java大师成长计划之第21天:Spring Boot快速入门
  • 【HarmonyOS】ArkTS开发应用的横竖屏切换
  • mybatisplus 集成逻辑删除
  • 从硬盘加载bootloader(setup)
  • 仿射密码的加密与解密
  • LlamaIndex 第八篇 MilvusVectorStore
  • 【图像处理基石】什么是油画感?
  • rocketMq实例
  • Java Spring MVC -01
  • Feign+Resilience4j实现微服务熔断机制:原理与实战
  • spark Mysql数据库配置
  • 百度导航广告“焊死”东鹏特饮:商业底线失守,用户安全成隐忧
  • YOLO11解决方案之物体模糊探索
  • 【自学30天掌握AI开发】第1天 - 人工智能与大语言模型基础