Open vSwitch 简介

天涯浪子 提交于 2019-11-29 00:55:48
  1. 概述

    Open vSwitch 是一个高质量的、多层虚拟交换机,使用开源 Apache 2.0 许可协议,由
    Nicira Networks 开发,主要实现代码为可移植的 C 代码。
    它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协
    议(例如 NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。此 外,它被设计位支持跨越多个物
    理服务器的分布式环境,类似于 VMware 的 vNetwork 分布式 vswitch 或 Cisco Nexus 1000 V。
    Open vSwitch 支持多种 linux 虚拟化技术,包括 Xen/XenServer, KVM,和 VirtualBox。

  2. 模块介绍

    当前最新代码包主要包括以下模块和特性:
    ovs-vswitchd 主要模块,实现 switch 的 daemon,包括一个支持流交换的 Linux 内核模块;
    ovsdb-server 轻量级数据库服务器,提供 ovs-vswitchd 获取配置信息;
    ovs-brcompatd 让 ovs-vswitch 替换 Linux bridge,包括获取 bridge ioctls 的 Linux 内核模块;
    ovs-dpctl 用来配置 switch 内核模块;
    一些 Scripts and specs 辅助 OVS 安装在 Citrix XenServer 上,作为默认 switch;
    ovs-vsctl 查询和更新 ovs-vswitchd 的配置;
    ovs-appctl 发送命令消息,运行相关 daemon;
    ovsdbmonitor GUI 工具,可以远程获取 OVS 数据库和 OpenFlow 的流表。
    此外, OVS 也提供了支持 OpenFlow 的特性实现,包括
    ovs-openflowd: 一个简单的 OpenFlow 交换机;
    ovs-controller: 一个简单的 OpenFlow 控制器;
    ovs-ofctl 查询和控制 OpenFlow 交换机和控制器;
    ovs-pki : OpenFlow 交换机创建和管理公钥框架;
    ovs-tcpundump: tcpdump 的补丁,解析 OpenFlow

  3. 运行原理

    内核模块实现了多个“数据路径”(类似于网桥),每个都可以有多个“vports”(类似于桥内的

    端口)。每个数据路径也通过关联一下流表( flow table)来设置操作,而这些流表中的流都

    是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另

    一个 vport。 当一个数据包到达一个 vport,内核模块所做的处理是提取其流的关键信息并在

    流表中查找这些关键信息。当有一个匹配的流时它执行对应的操作。如果没有匹配,它会将

    数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流用于以

    碰到相同类型的数据包可以在内核中执行操作)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!