概述
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。模块介绍
当前最新代码包主要包括以下模块和特性:
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运行原理
内核模块实现了多个“数据路径”(类似于网桥),每个都可以有多个“vports”(类似于桥内的
端口)。每个数据路径也通过关联一下流表( flow table)来设置操作,而这些流表中的流都
是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另
一个 vport。 当一个数据包到达一个 vport,内核模块所做的处理是提取其流的关键信息并在
流表中查找这些关键信息。当有一个匹配的流时它执行对应的操作。如果没有匹配,它会将
数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流用于以后
碰到相同类型的数据包可以在内核中执行操作)
来源:oschina
链接:https://my.oschina.net/u/1437015/blog/514439