理解 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,现在你应该明白它的作用了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值