首页 openflow协议130中文版

openflow协议130中文版

举报
开通vip

openflow协议130中文版openflow协议1.3.0中文版-完整版(可编辑)(文档可以直接使用,也可根据实际需要修改使用,可编辑推荐下载)OpenFlow交换机规范(概要)介绍本文档描述了对OpenFlow交换机的要求。此规范内容包括交换机的组件和基本功能,和一个远程控制器管理一个OpenFlow交换机的协议:OpenFlow。交换机部件OpenFlow的交换机包括一个或多个流表和一个组表,执行分组查找和转发,和到一个外部控制器OpenFlow的信道(图1)。该交换机与控制器进行通信,控制器通过OpenFlow协议来管理交换机。控制器使...

openflow协议130中文版
openflow协议1.3.0中文版-完整版(可编辑)(文档可以直接使用,也可根据实际需要修改使用,可编辑推荐下载)OpenFlow交换机 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 (概要)介绍本文档描述了对OpenFlow交换机的要求。此规范内容包括交换机的组件和基本功能,和一个远程控制器管理一个OpenFlow交换机的协议:OpenFlow。交换机部件OpenFlow的交换机包括一个或多个流表和一个组表,执行分组查找和转发,和到一个外部控制器OpenFlow的信道(图1)。该交换机与控制器进行通信,控制器通过OpenFlow协议来管理交换机。控制器使用OpenFlow协议,可以添加、更新和删除流流表中的表项,主动或者被动响应数据包。在交换机中的每个流表中包含的一组流表项;每个流表项包含匹配字段,计数器和一组指令,用来匹配数据包(见5.2)。匹配从第一个流表开始,并可能会继续匹配其它流表(见5.1)。流表项匹配数据包是按照优先级的顺序,从每个表的第一个匹配项开始(见5.3)。如果找到一个匹配项,那么与流表项相关的指令就会去执行。如果在流表中未找到匹配项,结果取决于漏表的流表项配置:(例如,数据包可能通过OpenFlow信道被转发到控制器、丢弃、或者可以继续到下一个的流表,见5.4)。与流表项相关联的指令包含行动或修改流水线处理(见5.9)。行动指令描述了数据包转发,数据包的修改和组表处理。流水线处理指令允许数据包被发送到后面的表进行进一步的处理,并允许信息以元数据的形式在表之间进行通信。当与一个匹配的流表项相关联的指令集没有指向下一个表的时候,表流水线停止处理,这时该数据包通常会被修改和转发(见5.10)。流表项可能把数据包转发到某个端口。这通常是一个物理端口,但它也可能是由交换机定义的一个逻辑端口或通过本规范中定义的一个保留的端口(见4.1)。保留端口可以指定通用的转发行为,如发送到控制器、泛洪、或使用非OpenFlow的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 转发,如“普通”交换机转发处理(见4.5);而交换机定义的逻辑端口,可以是指定的链路汇聚组、隧道或环回接口(见4.4)。与流表项相关的行动,也可直接把数据包发送到组,进行额外的处理(见5.6)。组表示一组泛洪的指令集,以及更复杂的转发(如多路径,快速重路由,链路聚合)。作为间接的通用层,组也使多个流表项转发到同一个标识者(例如IP转发到一个共同的下一跳)。这种抽象的行为使相同的输出行动非常有效。组表包含若干组表项,每个组表项包含一系列依赖于组类型的特定含义行动存储段(见只要正确的匹配和指令含义保持不变,交换机设计者可以任意的实现内部结构。例如,当一个流表项使用一个所有组来转发至多个端口,交换机设计人员可以在硬件转发表中用一个单一的位掩码去实现。另一个例子是匹配;如果OpenFlow交换机是通过不同数量的硬件表进行物理实现的,那么流水线就会被暴露。名词解释本节介绍了关键的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的端口:物理端口,逻辑端口和保留端口。 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 端口OpenFlow的标准端口为物理端口,逻辑端口,本地保留端口(其他保留的端口除外)。标准端口可以被用作入口和出端口,它们可在组里使用(见5.6),都有端口计数器(见5.8)。物理端口OpenFlow的物理端口为交换机定义的端口,对应于一个交换机的硬件接口。例如,以太网交换机上的物理端口与以太网接口一一对应。在有些应用中,OpenFlow交换机可以实现交换机的硬件虚拟化。在这些情况下,一个OpenFlow物理端口可以代表一个与交换机硬件接口对应的虚拟切片。逻辑端口OpenFlow的逻辑端口为交换机定义的端口,并不直接对应一个交换机的硬件接口。逻辑端口是更高层次的抽象概念,可以是交换机中非OpenFlow方式的端口(如链路汇聚组,隧道,环回接口)。逻辑端口可能包括数据包封装,可以映射到不同的物理端口。这些逻辑端口的处理动作相对于openflow处理机来说必须是透明的,而且这些端口必须像硬件端口一样与openflow处理机互通。保留端口OpenFlow的保留端口由本规范定义。它们指定通用的转发动作,如发送到控制器,泛洪,或使用非OpenFlow的方法转发,如“正常”交换机处理。一个交换机不需支持所有的保留端口,只支持那些标记为“Required”的保留端口。.Required:ALL:表示交换机可转发指定数据包到所有端口,它仅可用作输出端口。在这种情况下,数据包被复制后发送到所有的标准端口,不包括数据包的入端口和端口被配置为OFPPC_NO_FWD。.Required:INPORT代表数据包的进入端口。当数据包通过它的入端口发送出去的话,只能用作输出端口。.Required:ANY特别值,用在未指定端口的OpenFlow命令(端口通配符)。既不能作为入口端口,也不能作为一个输出端口。•Optional:LOCAL表示交换机的本地网络堆栈和管理堆栈。可以用作一个入口端口或作为一个输出端口。远程实体通过本地端口与交换机和网络服务互通,而不是通过一个独立的控制网络。利用一组合适的默认流表项,本地端口被用来实现一个带内控制器连接。.Optional:NORMAL:代表传统的非OpenFlow流水线(见5.1)。仅可用于为一个输出端口,使用普通的流水线处理数据包。如果交换机不能转发数据包从OpenFlow流水线到普通流水线,它必须表明它不支持这一行动。•Optional:FLOOD表示使用普通流水线处理进行泛洪(见5.1)。只作为一个输出端口,一般可以将数据包发往所有标准端口,但不能发往入端口或OFPPS_BLOCKED状态的端口。交换机也可以通过数据包的VLANID选择哪些端口泛洪。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)。如果匹配了流表项,则执行在该流表项里的指令;这些指令可能明确指导数据包传递到另一个流表(使用Goto指令,见5.9),在那里同样的处理被重复执行。一个流表项只能指导数据包到大于自己表号的流表,换句话说流水线处理,只能前进而不能后退。显然,流水线的最后一个表项可以不包括GOTO指令。如果匹配的流表项并没有指导数据包到另一个流表,流水线处理将停止在该表中。当流水线处理停止,数据包被与之相关的行动集处理,通常是被转发(见5.10)。Openflow流水线和各种Openflow操作用同样的方法处理特定类型的数据包和规范定义的相同类型的包,除非目前的规范或Openflow配置规定了不同的方法。例如,Openflow定义的以太头部必须与IEEE规范一致,Openflow使用的TCP/IP头部定义必须与RFC规范一致。另外,Openflow交换机的包重排序必须与IEEE规范的要求一致,保证数据包能被流表项、组表和计量带同样的处理。5.2流表一个流表中包含多个流表项。每个流表项包含:.匹配字段:对数据包匹配。包括入端口和数据包头,以及由前一个表指定的可选的元数据。.优先级:流表项的匹配次序。.计数器:数据包匹配时更新计数。.指令:修改行动集或流水线处理。.超时:最大时间计数值或流在交换机中失效之前的剩余时间。.cookie:由控制器选择的不透明数据值。控制器用来过滤流统计数据、流修改和流删除。但处理数据包时不能使用。流表项通过匹配字段和优先级决定:在一个流表中匹配字段和优先级共同确定唯一的流表项。所有字段通配(所有字段省略)和优先级等于0的流表项被称为table-miss流表项(见5.4)。5.3匹配Figure3:流程图详细描述了数据包流通过一个OpenFlow交换机。当OpenFlow交换机接收一个数据包,就执行图3所示的功能。交换机开始对第一个流表进行查找,并基于流水线处理,也可能在其它流表中(见5.1)执行表查找。如果数据包中用于查找的匹配字段值匹配了流表项定义的字段,就表示这个数据包匹配了此流表项。如果流表项字段的值是ANY(字段省略),它就可以匹配包头部的所有可能的值。如果交换机支持对指定的匹配字段进行任意的的位掩码,这些掩码可以更精确地进行匹配。数据包与表进行匹配,而且只有匹配数据包的最高优先级的表项必须被选择,此时与所选流表项相关的计数器也会被更新,所选流表项的指令集也会被执行。如果多个匹配的流表项具有相同的最高优先级,所选流表项则被确定为未定义表项。只有控制器 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 器在流信息中没有设置OFPFF_CHECK_OVERLAP位并且增加了重复的表项的时候,这种情况才能出现。当交换机接收到一个格式不正确或损坏的数据包,此版本的规范没有定义预期的行为。5.4Table-miss每一个流表必须支持table-miss的流表项来处理漏表。table-miss表项指定如何处理在流表中与其他流表项未匹配的数据包(见5.1),比如把数据包发送给控制器、丢弃数据包或直接将包扔到后续的表。table-miss表项的行为在许多方面像任何其他流表项:默认情况下,在流表中不存在table-miss表项。控制器可以在任何时候添加或删除它(见6.4),而且它可能会超时失效(见如果该table-miss表项不存在,默认情况下,流表项无法匹配的数据包将被放弃(丢弃)。交换机配置时,例如使用OpenFlow配置协议,可以覆盖此默认值,指定其他行为。5.5流表项删除流表项可以通过两种方式在流表中删除,一个是通过控制器的请求,一个是利用交换机的流超时机制。交换机的流超时机制独立于控制器,由交换机根据流表项的状态和配置来运行。每个流的表项具有一个和它相关的idle_timeout和hard_timeout值。如果hard_timeout值不为零,交换机必须注意的流表项的老化时间,因为交换机可能删除该项。一个非零hard_timeout字段可能在规定数秒后引起流表项被删除,无论有多少数据包与之匹配。如果给定非零idle_timeout的值,交换机必须注意与流的最后一个数据包到达的时间,可能后面需要删除这个流表项。当在规定数秒内没有匹配数据包时,一个非零汕e_timeout字段将引起流表项删除。交换机必须实现流表项超时就会从流表中删除的功能。控制器可以主动发送DELETE流表修改消息(OFPFC_DELETE,或OFPFC_DELETE_STRICT-见6.4),从流表中删除流表项。流表项被删除时,不管是控制器或流表项超时引起的,交换机必须检查流表项的OFPFF_SEND_FLOW_REM标志。如果该标志被设置,该交换机必须将流删除消息发送到控制器。每个流删除消息中包含一个完整的流表项描述、清除的原因(超时或删除),在清除时的流表项的持续时间,在清除时的流的统计数据。5.6组表一个组表包括若干组表项。一个流表项指向一个组的能力使得openflow可以实现额外的转发方法(例如选择部分和所有)每个组表项(见表2)由组编号确定,具体内容包含:.组编号:一个32位的无符号整数,唯一标识该组.计数器:当数据包被组处理时更新.行动存储段:有序的行动存储段,其中的每个行动存储段包含了一组要执行的行动和相关参数。交换机只支持那些标记为“Required”的组类型,控制器可以查询交换机支持哪些“Optional”组类型。•Required:all:执行组中的所有存储段。这个组用于多播或广播的转发。数据包为每个存储段都有效地复制一份,然后被每个存储段处理。如果某个存储段中明确地指导数据包发往入端口,那么这个复制的包被丢弃。如果控制器记录器希望数据包从入端口转发出去,那么这个组必须包含一个额外的存储段,这个存储段包含到OFPP_IN_PORT保留端口的输出行动。•Optional:select:执行组中的一个存储段。基于交换机计算选择算法(如利用用户配置的元组/数组的哈希算法或简单的循环算法),数据包被组中的一个存储段处理。选择算法的所有配置和状态都在OpenFlow外部运行。选择算法实现可以使用等负荷分配,也可以选择根据存储段权重进行。当组中存储段所指定的端口出现故障时,交换机可对剩余部分(具有转发到有效端口行为的)限制选择存储段,而不是丢弃数据包。此行为可能会减少数据包在链路或交换机的中断。•Required:indirect:执行此组中定义的一个存储段。这个组只支持单一的存储段。允许多个流表项或者组指向一个共同的组编号,这样可以使转发更快,更高效的汇聚(例如:下一跳IP转发)。对于只有一个存储段的所有组,组类型应该是相同的。•Optional:fastfailover:执行第一个有效的存储段。每一个行动存储段与控制其有效性的一个指定端口/或组相关。组定义的存储段是有序的,首选选择与有效的端口或者组相关的第一个存储段。这个组类型可以使交换机改变转发,而无需通知控制器。如果没有有效的存储段,数据包将被丢弃。组类型必须实行有效机制(见6.5)。5.7计量表一个计量表包含若干计量表项,确定每个流的计数。每个流的计数可以使OpenFlow实现各种简单的QoS操作,如限速,并且可以结合每个端口队列(见5.12)来实现复杂的QoS构架,如DiffServ。计量器可以测试数据包分配的速率,并可以控制数据包的速率。计量器直接连接到流表项(而不是被连接到端口的队列)。任意的流表项可以在它的指令集中定义一个计量器(见5.9),计量器测量和控制和它有关的所有流表项的总速率。在同一个表中可以使用多个计量器,但必须使用专用的方式(流表项分离设置)。在连续的流表中,对于同样的数据包集合,可以使用多个计量器。每个计量表项(见表3)由其计量标识符来区分,其包含:.计量器的标识符:一个32位的无符号整数唯一识别.计量带:计量带的无序列表,其中每个计量带指定带速和处理数据包的方式.计数器:计量器处理数据包时进行更新计数。每个计量器可能有一个或多个计量带。每个带指定所用的速率和数据包处理的方式。单个计量带以当前测量的计量速率处理数据包。当测量速率超过最高配置速率的时候,计量器就启用计量带。若当前的速率比任何指定的计量带速率率低,就没有计量带需要工作。每个计量带(见表4)用速率来识别,包括:.带类型:定义了数据包如何处理.速率:用于计量器选择计量带,也就是计量带可以启用的最低速率.计数器:当计量带处理数据包时更新计数.类型的特定参数:带类型的可选参数在本规范里带类型没有“Required”。控制器可以查询交换机支持的计量带类型“Optional”•Optional:drop:丢弃数据包。可以用来定义速率限制带。•Optional:dscpremark:增加数据包的IP头部DSCP字段丢弃的优先级。可用于定义一个简单的DiffServ策略。5.8计数器每一个流表,流表项,端口,队列,组,组存储段,计量器和计量带都会修改计数器°OpenFlow-compliant计数器可以在软件中实现,也可以通过查询硬件计数器获取计数进行有限范围的修改。表5中包含了openflow规范中定义的计数器集。交换机不要求支持所有的计数器,只有那些标记为“Required”是必须支持的。持续时间指的是流表项,端口,组,队列或计量器在交换机中已安装的时间数值,而且必须精确到秒。ReceivedErrors字段是表5里定义的所有收到的和冲突的错误总和,也包括表里未列出的其它错误。计数器都是无符号值,可以环回且没有溢出指示。如果交换机里没有指定值的计数器,则其值必须设置成字段的最大值(无符号数就是-1)。5.9指令每个流表项中包含一组指令集,当一个数据包匹配表项时指令就会被执行。这些指令可导致数据包,行动组和/或流水线处理发生改变。交换机不需要支持所有类型的指令,只需支持下面那些标记为“Requiredlnstruction”。控制器可查询交换机支持的“OptionalInstruction”。.Optionallnstruction:Metermeter_id:将包转给指定的计量器。计量的结果可能会丢弃这个数据包(依赖于计量器的配置和状态)。.Optionallnstruction:Apply-Actionsaction(s):立即执行指定的行动,而不改变行动集。在两个表之间传递或者执行同类型的多个行动的时候,这个指令可用来修改数据包。这些行动被指定为一个行动列表(见5.11)。.Optionallnstruction:Clear-Actions:立即清除行动集中的所有行动。.Requiredlnstruction:Write-Actionsaction(s):将指定的行动添加至U当前的行动集中。如果行动存在于当前集合中,则进行覆盖,否则进行追加。.Optionallnstruction:Write-Metadatametadata/mask在元数据字段写入掩码的元数据数值。掩码指的是元数据寄存器应进行修改的比特。(new_metadata=old_metadata&~mask|value&mask)。.Requiredlnstruction:Goto-Tablenext-table-id指示流水线处理的下一张表。表ID必须大于当前表ID。流水线最后一张表的流表项不能含有这个指令(见5.1)。Openflow交换机若只有一个流表则不需要实现这个指令。流表项所属的指令集中每个类型的单个指令都有个最大值。指令就是按照上述列表中指定的顺序来执行。实际上,有限定的是:Meter指令在Apply_Actions指令前执行,Clear_Actions指令在Write_Actions指令前执行,Goto_Table最后执行。如果流表项不能执行相关指令,交换机必须拒绝这个流表项。这种情况,交换机必须返回一个不支持的流错误信息(见6.4)。流表不一定支持每个匹配,每个指令或每个行动。5.10行动集行动集是与每个数据包相关的,默认情况下是空的。一个流表项可以使用Write-Action指令或者与特殊匹配有关的Clear-Action指令来修改行动集。行动集在表间被传递。当一个流表项的指令集没有包含Goto-Table指令时,流水线处理就停止了,然后数据包的行动集执行其行动。行动集中每个类型的行动有一个最大值。set_field行动用字段类型来标识,因此行动集对每个字段类型的set_field行动(即,多个字段可被设置)有个最大值。当同一个类型需要多个行动时,例如,压入多个MPLS标签或弹出多个MPLS标签,应使用Apply_Actions指令(见5.11)。行动集中所有的行动,不管它们以什么顺序添加到行动集中,行动的顺序均按照下列顺序执行。如果行动集包含组行动,那么组行动存储段中的行动也按照下列顺序执行。当然,交换机也可以支持通过Apply-Actions指令任意修改行动执行顺序。copyTTLinwards:向数据包内复制TTL的行动pop:从数据包弹出所有标记的行动push-MPLS:向数据包压入MPLS标记的行动push-PBB:向数据包压入PBB标记的行动push-VLAN:向数据包压入VLAN标记的行动copyTTLoutwards:向数据包外复制TTL的行动decrementTTL:将数据包的TTL字段减1set:数据包使用所有的set_field行动qos:使用所有的QOS行动,如对数据包排队group:如果指定了组行动,那么按顺序执行组行动存储段里的行动。ll.output:如果没有指定组行动,数据包就会按照output行动中指定的端口转发。行动集中的Output行动是最后执行的。如果在一个行动集里组行动和输出行动都存在,则组行动优先。如果两者均不存在,数据包将被丢弃。如果交换机支持的话,组的执行将返回;组存储段可指定另外一个组,在这种情况下,行动将在组配置中指定的所有组中执行。5.11行动列表Apply-Actions指令和Packet-out消息包含一个行动列表。行动列表的含义与Openflow1.0规范的相同。行动列表中的行动按照列表中的次序执行,并立即作用到数据包。列表中的行动从第一个行动开始执行,行动都是按序执行的。行动的结果是累积的,比如行动列表中有两个pushVLAN行动,数据包就会被加上两个VLAN头部。如果行动列表有一个输出行动,一个当前状态下的包复制后就转发给所需端口。如果列表包含组行动,相关组存储段就会处理当前状态下的复制包。一个Apply_Actions指令执行完一个行动列表后,流水线继续处理已修改的数据包(见5.1)。数据包的行动集本身在行动列表执行的时候没有改变。5.12行动交换机不要求支持所有类型的行动,只需支持标记为“RequiredAction”。控制器也可查询交换机所支持的“OptionalAction”。RequiredAction:Output.数据包输出到指定Openflow端口(见4.1)。Openflow交换机必须支持转发到物理端口,交换机定义的逻辑端口和所需的保留端口(见4.5)。RequiredAction:Drop.没有明确的行动来表现丢弃。相反,那些行动集中没有输出行动的数据包应该被丢弃。当流水线处理时或执行Clear_Actions指令后,空指令集或空指令行动存储段会导致丢弃这个结果。RequiredAction:Group.通过指定的组处理数据包,准确的解释依靠组类型。OptionalAction:Push-Tag/Pop-Tag交换机可具有压入/弹出表6所示标记的能力。为了和已有网络更好结合,建议支持压入/弹出VLAN标记的能力。最新的压入标记应插入到最外侧有效位置作为最外侧的标记。当压入一个新VLAN标记,应作为最外侧标记来插入,位于以太头部后面,其它标记前面。同样的,当压入一个新MPLS标记,也应作为最外侧标记来插入,位于以太头部后面,其它标记前面。当多个压入行动添加到数据包行动集,按照行动集定义的规则依次作用到数据包,开始时MPLS,接着是PBB,后面是VLAN(见5.10)。当一个行动列表中有多个压入行动,按照列表次序(见5.11)作用到数据包。注意:5.12节所涉及的信息都是默认字段值。OptionalAction:Set-Field.不同Set-Field行动由它们的字段类型来标识,并对数据包中头部字段分别修改数值。当要求不很严格时,若支持使用Set-Field行动进行重写头部各字段将非常有益于Openflow的实现。为了和已有网络更好结合,建议支持VLAN修改行动oSet-Field行动应一直作用到头部可能的最外侧(例如,“setVLANID”行动一直设置VLAN标记的最外侧ID),除非该字段类型指定其它值。OptionalAction:Change-TTL.不同Change-TTL行动修改数据包中的IPV4TTL、IPV6HopLimit或MPLSTTL。当要求不很严格时,表7所示的行动非常有益于Openflow中路由功能的实现。当执行压入行动时,表8中所有字段指定的值应从已有外部头复制给新建外部头。表8中所列的新字段与已有字段不一致的应设置为0oOpenflowset_field行动不能修改的字段用初始化成合适的协议数值。在压入操作之后,可通过指定的“set”行动对新建头部的某些字段进行设置。6、openflow通道Openflow通道是每个交换机连接控制器的接口,通过这个接口控制器配置和管理交换机,接收来自交换机的事件,将包从交换机转发出去。尽管所有openflow通道消息必须遵守openflow协议格式,但在数据通路和openflow通道之间,接口是具体实施者。openflow通道通常使用TLS加密,但也可能直接在TCP上运行。6.1openflow协议概述Openflow协议支持三种消息:控制器到交换机消息、异步消息和对称消息,每个都有多个子消息类型。controller-to-switch消息由控制器发起,用来直接管理检查交换机的状态;异步消息由交换机发起,用于控制器更新网络事件和交换机状态变化;对称消息由交换机或者控制器发起,而且无需请求。下面介绍Openflow使用的消息类型。Controller-to-Switch是由控制器发起,不强求交换机作出回应。Features控制器通过发送feature请求查询交换机的身份以及基本功能,交换机必须响应,回答其身份和基本能力。通常在openflow通道建立后运行。Configuration:控制器用来设置、查询交换机的配置参数。交换机仅需要回应来自控制器的查询消息。Modify-State:mmodify-sate消息由控制器发出,用来管理交换机的状态。它们的首要目标是增加、删除、修改openflow表中的流表项/组表项,以及设置交换机的端口属性。Read-state:控制器用Read-state消息收集交换机的各种消息,例如当前配置、统计数据和性能等。Packet-out:控制器用这个Packet-out发送数据包到交换机特定的端口。并且转发通过Packet-in消息收到的数据包。Packet-out消息必须包括一个完整的数据包或者一个指明交换机中存储数据包缓冲区的ID。这个消息必须包含一个动作列表,并按指定顺序应用这些动作。若动作列表为空则丢弃该包。Barrier:控制器使用Barrier请求/回复消息确保消息依赖已经遇到或者收到操作完成的通知。交换机发送Asynchronous消息时无需控制器的请求,通知控制器数据包到达、交换机状态改变或错误。四个主要的异步消息描述如下。Packet-in将对包的控制转移给控制器。由于全部数据包使用流表项或者漏表项转发到“CONTROLLER”保留端口,一个packet-in事件就会发给控制器(见5.12)。其他处理,例如TTL检查,也可能产生packet-in事件将数据包发给控制器。(注:交换机缓存足够,包被临时放在缓存中,包的部分内容(默认128字节)和在交换机缓存中的序号也一同发给控制器;如果交换机缓存不足以存储包,则将整个包作为消息的附带内容发给控制器)Flow-Removed:通知控制器一个流表项从流表中移除。流表项只有设置了OFPFF_SEND_FLOW_REM标志,Flow-Removed消息才会发送。此消息是由于控制器的流删除请求产生,或者交换机流处理超时产生,即某个流有效时间超出范围了。Port-status:通知控制器某个端口发生变化。交换机需要在端口配置或状态改变时发送port-status消息给控制器。包括端口配置的改变等事件,例如,端口被用户关闭,端口状态被用户改变,连接断开等。Error:交换机用Error消息通知控制器出现问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。Symmetric(对称)消息向每个方向发送时无需询问。包括Hello,Echo,Experimenter三种消息。Hello:Hello消息在连接一旦建立,就在交换机和控制器之间传递。Echo:从交换机或者控制器发出的Echo应答/请求消息,必须得到一个返回的Echo响应消息。他们主要用来验证controller-switch连接是否活跃,也可能来测量延迟率和带宽。Experimenter:Experimenter消息为交换机在其消息类型中提供附加功能提供了一个标准的方法。这是将来openflow修订时的一个功能中转区。6.2MessageHanding(消息处理)Openflow协议提供可靠的消息传递和处理,但是不自动提供确认和保证消息的有序化处理。这一节所说的openflow消息处理行为是由可靠传输的主辅链接上完成的。MessageDelivery:消息可靠传输,除非Openflow通道完全失败,控制器不了解交换机的任何状态(如交换机可能已经进入了“失败独立模式”)。MessageProcessing:交换机必须完全处理从控制器接收的每个消息,并可能生成一个回复。如果交换机不能完全处理来自控制器的消息,那么它必须返回一个error消息。对于pack-out消息,消息被完全处理之后也不能保证包实际上退出了交换机。由于交换机的堵塞、QoS策略、或者数据包发送到一个阻塞或无效的端口,交换机处理之后数据包可能被丢弃。控制器可以自由忽略他们接收的消息,但是必须响应应答消息来防止交换机中断连接。MessageOrdering排序可以通过使用barrier消息来保证。在缺少屏障消息时,交换机可以任意重新排序消息,来达到最佳性能。因此,交换机不应该依赖一个特定的处理顺序。消息跨越一个屏障消息就不需要重新排序,只有前面所有的消息都处理后屏障消息才被处理。具体的说:屏障消息前面的消息必须先被处理,包括发送任何产生的错误和回复。屏障必须被处理,而后发送一个响应。屏障消息后面的消息可继续处理。如果从控制器接收到的2个消息是相互依赖的,那他们必须通过屏蔽消息来分离。6.3Openflow通道连接控制器可以通过一个或者多个网络来远程管理交换机。这种方法是不在当前规范之内的,所使用的可能是一个独立的专用网络,或者由交换机管理的网络(带内控制器连接)。唯一的要求就是应提供TCP/IP连接。交换机必须能够与一个用户可配置IP地址(否则是固定的)的控制器建立连接,连接使用用户指定的一个端口或是默认端口。如果交换机与控制器的IP地址进行配置连接,那么交换机启动了一个标准的TLS或TCP连接。Openflow通道的流量不通过Openflow流水线。因此,交换机必须在流表检查之前就必须区分输入流量。
本文档为【openflow协议130中文版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_072127
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:20
分类:
上传时间:2019-05-18
浏览量:0