04-SDN交换机应用实践1分段学习2.pptx
OpenvSwitch基本组成结构和功能
流表匹配交换机在接收到数据包后将会对数据包进行匹配当OpenFlow交换机收到一个数据包时,它将会执行下图的处理步骤
OpenFlow流表动作表动作类型动作名称端口类型备注强制动作转发物理端口虚拟端口ALLCONTROLLERLOCALTABLEIN_PORT丢弃可选动作转发虚拟端口NORMALFLOOD放入队列修改字段
包头具体的解析过程
包头具体的解析过程包头解析是为了得到数据包的12元组首先初始化包头,然后根据以太网类型得到虚拟局域网或三层IP信息,再根据IP包头中的协议类型,确定是TCP协议还是UDP协议或者是ICMP协议,最后得到TCP/UDP协议的源、目的端口号或者ICMP的类型和编码。此外,为避免可能产生的广播风暴,有的OpenFlow交换机在包头解析前进行相关生成树协议处理。0x8100为以太网自动保护开关协议0x0806为ARP协议0x0800为网际协议(IP协议)6为TCP协议,17为UDP协议,1为ICMP协议。
4.流表项匹配实例分析(1)数据源发送源IP为192.168.1.1,目的的IP为192.168.2.1,以太网类型值为0x0800的ICMP数据包,试简要分析交换机接收数据包后处理的流程。
流表项匹配实例分析交换机在t0时刻收到的一个源主机IP为192.168.1.1、目标地址为192.168.2.1的数据包。交换机首先进行包头解析,在包头解析的过程中,检查数据包的以太网类型,发现该数据包类型为IP协议,设置其IP源、目的地址以及TOS位,之后由于数据包不存在IP分段的情况,且为ICMP协议,因此ICMP协议与编码将会被作为第四层信息,至此,包头解析结束。t1时刻进流表匹配过程中,数据包按照优先级高低从流表项0开始,逐相匹配,可以看到流表项0未能成功匹配后,数据包就开始进行流表1的匹配。在t2时刻,数据包与流表项1匹配成功,流表项动作指定通过端口A进行转发,交换机执行转发动作。
(2)数据源发送源IP为192.168.1.1,目的主机IP为192.168.1.2,以太网类型值为0x0806的ARP数据包,试简要分析交换机接收数据包后处理的流程,同样匹配到流表项,为何与上例中处理的结果不同。
OpenvSwitch基本组成结构和功能OpenvSwitch基于C语言开发,遵循Apache2.0许可证,能同时支持多种标准的管理接口和协议(比如NetFlow、sFlow、SPAN、RSPAN、CLI、LACP、802.1ag等)OpenvSwitch通过OpenFlow协议由统一的控制器管理,从而实现对接入的虚拟机(或设备)的网络联通
OpenvSwitch的三个重要的组件和接口三个重要的组件:数据库服务、守护进程以及转发通路。数据库服务是指OVS的数据库服务进程,用于存储虚拟交换机的配置信息(比如网桥、端口等),为控制器和守护进程提供OVSDB操作接口守护进程是OVS的核心组件,保存和管理控制器下发的所有流表,提供流表查询、OpenFlow协议的操作接口等转发通路为OVS的内核模块,缓存常用流表,转发数据包,当遇到无法匹配的报文,向守护进程发送Packet-in请求,获取报文处理指令。
OpenvSwitch内部架构图1.ovs-vswtichd:主要模块,实现vswitch的守候进程daemon。2.ovsdb-server:轻量级数据库服务器,保存配置信息。3.ovs-dpctl:用来配置vswitch内核模块的一个工具。4.ovs-vsctl:获取或者更改ovs-vswitchd的配置信息。5.ovs-appctl:一个向ovs-vswtichd的守护进程发送命令的的程序。6.datapath:内核模块,根据流表匹配结果做相应处理。7.ovs-ofctl:查询和控制OpenFlow虚拟交换机的流表。
OpenvSwitch虚拟交换机关于网桥的使用OpenvSwitch是一个虚拟交换软件,实现了网桥的功能。创建桥时会创建一个和桥名字一样的接口,并自动作为该桥的端口,一方面是可以作为交换机的管理端口另一方面也是基于这个虚拟接口实现了桥的功能。OpenvSwitch的内核模块实现了多个“数据路径”,每个都可以有多个vports。每个数据路径也通过关联流表(flowtable)来设置操作,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另一个vport。当一个数据包到达一个vport,内核模块所做的处理是提取其流的关键信息并在流表中查找这些关键信息,当有一个匹配的流时它执行对应的操作,如果没有匹配,它会将数据包送到用户空间的处理队列中,作为处理的一部分,用户空间可能会设置一个流