(五)Open vSwitch

来源:互联网 发布:国语转粤语软件 编辑:程序博客网 时间:2024/06/06 14:23

Open vSwitch是一款开源的OpenFlow软件交换机,其是基于与平台无关的C代码实现的,易移植,能够作为虚拟机管理平台的软件交换机和 作为交换芯片的控制堆栈。
1.OVS系统架构
OVS可以实现大规模网络的自动化配置、管理、维护,且支持大量现有 标准管理接口协议。OVS架构可以分为内核空间、用户空间和配置管理层。内核空间包括包含流表和一个或多个datapath模块,datapath主要负责数据分组操作,其通过关联流表与其协完成协同完成分组处理过程。用户空间运行着OVS的守护进程和数据库,它维持着OVS的生命周期,存储着OVS的配置信息和数据流信息,vswitchd和ovsdb协调工作确保OVS健康的运行状态。配置管理层包括ovs-dpctl、ovs-ofctl、ovs-appctl、ovs-vsctl和ovsdb-tool等,主要用于和vswitch、ovsdb之间进行交互操作以及OVS的安装配置和部署。
这里写图片描述

                  OVS系统架构

OVS的主要功能是数据分组处理功能,其过程可以分为两步:第一是由内核空间的datapath尝试直接对数据分组进行转发操作;第二步是由用户空间和内核空间协同工作进行分组处理。如下图所示这里写图片描述

            OVS中数据分组的转发机制

2.OVS代码解读
2.1代码结构图
这里写图片描述

                核心代码架构图

2.2 代码解析
守护进程
OVS守护进程主要负责检索和更新数据库信息,并根据数据库中的配置信息维护和管理OVS,内部模块组成如下图
这里写图片描述

vswtich的核心流程
这里写图片描述

        vswitch守护进程启动过程

ovs是一个基于二层交换机模型的虚拟交换机,数据报文的处理流程如下图
这里写图片描述

                OVS数据报文处理流程

OpenFlow协议的数据结构

源码中ofproto的文件是交换机的与OpenFlow协议相关的主要文件。其核心数据结构为struct ofproto,代表了一个OpenFlow的模型。其结构体成员和功能描述如下表所示
这里写图片描述

struct ofpor代表了一个OpenFlow交换机的端口,交换机端口的数据结构定义如下表8-2所示
这里写图片描述

struct ofpro_clss是一个桥接模式的实现,其结构体定义如下表8-3所示。
这里写图片描述

原创粉丝点击