openflow协议1.3.0中文版---完整版

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

OpenFlow交换机规范(概要)Version1.3.0(June25,2012)1介绍本文档描述了对OpenFlow交换机的要求。此规范内容包括交换机的组件和基本功能,和一个远程控制器管理一个OpenFlow交换机的协议:OpenFlow。2交换机部件OpenFlow的交换机包括一个或多个流表和一个组表,执行分组查找和转发,和到一个外部控制器OpenFlow的信道(图1)。该交换机与控制器进行通信,控制器通过OpenFlow协议来管理交换机。控制器使用OpenFlow协议,可以添加、更新和删除流流表中的表项,主动或者被动响应数据包。在交换机中的每个流表中包含的一组流表项;每个流表项包含匹配字段,计数器和一组指令,用来匹配数据包(见5.2)。匹配从第一个流表开始,并可能会继续匹配其它流表(见5.1)。流表项匹配数据包是按照优先级的顺序,从每个表的第一个匹配项开始(见5.3)。如果找到一个匹配项,那么与流表项相关的指令就会去执行。如果在流表中未找到匹配项,结果取决于漏表的流表项配置:(例如,数据包可能通过OpenFlow信道被转发到控制器、丢弃、或者可以继续到下一个的流表,见5.4)。与流表项相关联的指令包含行动或修改流水线处理(见5.9)。行动指令描述了数据包转发,数据包的修改和组表处理。流水线处理指令允许数据包被发送到后面的表进行进一步的处理,并允许信息以元数据的形式在表之间进行通信。当与一个匹配的流表项相关联的指令集没有指向下一个表的时候,表流水线停止处理,这时该数据包通常会被修改和转发(见5.10)。流表项可能把数据包转发到某个端口。这通常是一个物理端口,但它也可能是由交换机定义的一个逻辑端口或通过本规范中定义的一个保留的端口(见4.1)。保留端口可以指定通用的转发行为,如发送到控制器、泛洪、或使用非OpenFlow的方法转发,如“普通”交换机转发处理(见4.5);而交换机定义的逻辑端口,可以是指定的链路汇聚组、隧道或环回接口(见4.4)。与流表项相关的行动,也可直接把数据包发送到组,进行额外的处理(见5.6)。组表示一组泛洪的指令集,以及更复杂的转发(如多路径,快速重路由,链路聚合)。作为间接的通用层,组也使多个流表项转发到同一个标识者(例如IP转发到一个共同的下一跳)。这种抽象的行为使相同的输出行动非常有效。组表包含若干组表项,每个组表项包含一系列依赖于组类型的特定含义行动存储段(见5.6.1)。一个或多个行动存储段里的行动会作用到发送到该组的数据包。只要正确的匹配和指令含义保持不变,交换机设计者可以任意的实现内部结构。例如,当一个流表项使用一个所有组来转发至多个端口,交换机设计人员可以在硬件转发表中用一个单一的位掩码去实现。另一个例子是匹配;如果OpenFlow交换机是通过不同数量的硬件表进行物理实现的,那么流水线就会被暴露。3名词解释本节介绍了关键的OpenFlow规范术语:.字节:一个8位位组。.数据包:以太网帧,包括报头和有效载荷。.端口:数据包进入和退出OpenFlow的流水线地方(见4.1)。可以是一个物理端口,由交换机定义的一个逻辑端口,或由OpenFlow的协议定义的一个保留端口。.流水线:在一个openflow交换机中提供匹配、转发和数据包修改功能的相连流表的集合。.流表:流水线的一个阶段,包含若干流表项。.流表项:在流表中用于匹配和处理数据包的一个元素。它包含用于匹配数据包的匹配字段、匹配次序的优先级,跟踪数据包的计数器,以及应用的指令集。.匹配字段:用来匹配数据包的字段,包括包头,进入端口,元数据值。一个匹配字段可能会进行通配符匹配(匹配任何值)或者在某些情况下通过位掩码进行匹配。.元数据:一个可屏蔽寄存器的值,用于携带信息从一个表到下一个表。.指令:指令存在于流表项中,当数据包匹配流表项时,指令用来描述OpenFlow的处理方式。指令要么改变流水线处理,如指导包匹配另一个流表,要么包含一组添加到行动集的行动,或包含一组立即应用到数据包的行动。.行动:是一种操作,可将数据包转发到一个端口或修改数据包,如TTL字段减1。行动可以是与流表项相关联的指令集的一部分,或者是与组表项相关联的行动存储段的一部分。我们可以将行动积累在数据包的行动集里,也可以立即将行动应用到该数据包。行动集:与数据包相关的行动集合,在数据包被每个表处理的时候这些行动可以累加,在指令集指导数据包退出处理流水线的时候这些行动会被执行。.组:一系列的行动存储段和选择一个或者多个存储段应用到每个数据包的手段。.行动存储段:行动和相关参数的集合,为组而定义的。.标记:一个头部,可以通过压入行动插入到数据包或者通过弹出行动进行移除。.最外层的标记:一个数据包最开始出现的标记。.控制器:与OpenFlow交换机使用OpenFlow协议交互的实体。.计量:一个交换机元件,可以测量和控制数据包的速度。当通过计量的数据包速率或字节速率超过预定义的阈值时,计量触发计量带。如果计量带丢弃该数据包,它则被称为一个限速器。4OpenFlow端口本节介绍了OpenFlow的端口的概念和OpenFlow支持的各类端口。4.1OpenFlow端口OpenFlow的端口是OpenFlow处理机和网络其余部分之间传递数据包的网络接口。OpenFlow交换机之间通过OpenFlow端口在逻辑上相互连接。OpenFlow交换机提供一定数量的OpenFlow端口,开放给OpenFlow的处理机。OpenFlow的端口组可能与交换机硬件中提供的网络端口组不完全相同,因为有些硬件网络接口可能被OpenFlow禁用,OpenFlow交换机可能定义额外的端口。OpenFlow的数据包从入端口接收,经过OpenFlow的流水线处理(见5.1),可将它们转发到一个输出端口。入端口是数据包的属性,它贯穿整个OpenFlow流水线,并代表数据包是从哪个OpenFlow交换机的端口上接收的。匹配数据包的时候会用到入端口(见5.3)。OpenFlow流水线可以决定数据包通过输出行动发送到输出端口(见5.12),还定义了数据包怎样传回到网络中。一个OpenFlow交换机必须支持三种类型的OpenFlow的端口:物理端口,逻辑端口和保留端口。4.2标准端口OpenFlow的标准端口为物理端口,逻辑端口,本地保留端口(其他保留的端口除外)。标准端口可以被用作入口和出端口,它们可在组里使用(见5.6),都有端口计数器(见5.8)。4.3物理端口OpenFlow的物理端口为交换机定义的端口,对应于一个交换机的硬件接口。例如,以太网交换机上的物理端口与以太网接口一一对应。在有些应用中,OpenFlow交换机可以实现交换机的硬件虚拟化。在这些情况下,一个OpenFlow物理端口可以代表一个与交换机硬件接口对应的虚拟切片。4.4逻辑端口OpenFlow的逻辑端口为交换机定义的端口,并不直接对应一个交换机的硬件接口。逻辑端口是更高层次的抽象概念,可以是交换机中非OpenFlow方式的端口(如链路汇聚组,隧道,环回接口)。逻辑端口可能包括数据包封装,可以映射到不同的物理端口。这些逻辑端口的处理动作相对于openflow处理机来说必须是透明的,而且这些端口必须像硬件端口一样与openflow处理机互通。物理端口和逻辑端口之间的唯一区别是:一个逻辑端口的数据包可能有一个叫做隧道ID的额外的元数据字段与它相关联(见7.2.3.7);而当一个逻辑端口上接收到的分组被发送到控制器时,其逻辑端口和底层的物理端口都要报告给控制器(见7.4.1)。4.5保留端口OpenFlow的保留端口由本规范定义。它们指定通用的转发动作,如发送到控制器,泛洪,或使用非OpenFlow的方法转发,如“正常”交换机处理。一个交换机不需支持所有的保留端口,只支持那些标记为“Required”的保留端口。.Required:ALL:表示交换机可转发指定数据包到所有端口,它仅可用作输出端口。在这种情况下,数据包被复制后发送到所有的标准端口,不包括数据包的入端口和端口被配置为OFPPC_NO_FWD。.Required:CONTROLLER:表示OpenFlow控制器的控制通道,它可以用作一个入端口或作为一个出端口。当用作一个出端口,数据包封装进输入包消息,并使用OpenFlow协议发送(见7.4.1)。当用作一个入口端口,确认数据包来自控制器。.Required:TABLE:表示openflow流水线的开始(见5.1)。这个端口仅在输出包消息的行动列表里的输出行为时候有效(见7.3.7),此时交换机提交报文给第一流表使数据包可以通过OpenFlow流水线处理。.Required:INPORT:代表数据包的进入端口。当数据包通过它的入端口发送出去的话,只能用作输出端口。.Required:ANY:特别值,用在未指定端口的OpenFlow命令(端口通配符)。既不能作为入口端口,也不能作为一个输出端口。.Optional:LOCAL:表示交换机的本地网络堆栈和管理堆栈。可以用作一个入口端口或作为一个输出端口。远程实体通过本地端口与交换机和网络服务互通,而不是通过一个独立的控制网络。利用一组合适的默认流表项,本地端口被用来实现一个带内控制器连接。.Optional:NORMAL:代表传统的非OpenFlow流水线(见5.1)。仅可用于为一个输出端口,使用普通的流水线处理数据包。如果交换机不能转发数据包从OpenFlow流水线到普通流水线,它必须表明它不支持这一行动。.Optional:FLOOD:表示使用普通流水线处理进行泛洪(见5.1)。只作为一个输出端口,一般可以将数据包发往所有标准端口,但不能发往入端口或OFPPS_BLOCKED状态的端口。交换机也可以通过数据包的VLANID选择哪些端口泛洪。OpenFlow-only交换机不支持NORMAL端口和FLOOD端口,而OpenFlow-hybrid交换机均支持上述端口(见5.1)。转发数据包到FLOOD端口依赖交换机的实现和配置,若使用一组all类型进行转发,则可以使控制器能更灵活地实现泛洪(见5.6.1)。5OpenFlow表本节描述流表和组表的组件,以及匹配和行动处理的机制。5.1流水线处理OpenFlow兼容的交换机有两种类型:OpenFlow-only和OpenFlow-hybrid。OpenFlow-only交换机只支持OpenFlow操作,在这些交换机中的所有数据包都由OpenFlow流水线处理,否则不能被处理。OpenFlow-hybrid交换机支持OpenFlow的操作和普通的以太网交换操作,即传统的L2以太网交换、VLAN隔离、L3路由(IPv4的路由,IPv6路由)、ACL和QoS处理。这种交换机必须提供一个OpenFlow外的分类机制,使流量路由到OpenFlow流水线或普通流水线。例如,某个交换机可以使用VLAN标记或数据包的输入端口,来决定是否使用一个流水线或其它流水线,或者它可引导所有数据包都到OpenFlow流水线进行处理。这种分类机制超出了本规范的范围。一个OpenFlow-hybrid交换机也允许数据包通过NORMAL和FLOOD保留端口从OpenFlow流水线转移到普通流水线处理(见4.5)。每个OpenFlow交换机的流水线包含多个流表,每个流表包含多个流表项。OpenFlow的流水线处理定义了数据包如何与那些流表进行交互(参见图2)。OpenFlow交换机至少需要一个流表,可选更多的流表。只有单一流表的OpenFlow交换机是有效的,而且在这种情况下流水线处理进程可以大大简化。Figure2:通过流水线处理的数据包流OpenFlow交换机的流表按顺序编号的,从0开始。流水线处理总是从第一流表开始:数据包首先与流表0的流表项匹配。其他流表根据第一个表的匹配结果来调用。被一个流表处理时,数据包与流表中的流表项进行匹配,从而选择一个流表项(见5.3)。如果匹配了流表项,则执行在该流表项里的指令;这些指令可能明确指导数据包传递到另一个流表(使用Got

1 / 91
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功