一种OpenFlow交换机的报文处理方法与流程

文档序号:20271981发布日期:2020-04-03 19:09阅读:192来源:国知局
本发明涉及网络通信
技术领域
:,具体的说是一种openflow交换机的报文处理方法。
背景技术
::在现代通信网络中,分组转发和转发控制的过程在逻辑上是分开的。数据包在所谓的数据平面上转发,而转发控制发生在所谓的控制平面上。常规网络交换机被配置为使得数据平面上的分组转发和控制平面上的转发控制发生在同一物理设备内。为了克服由此产生的技术限制,已经提出了软件定义网络(sdn)。sdn将数据平面与控制平面分离。虽然数据平面仍然在交换机本身中实现,但控制平面在单独的sdn控制器中以软件实现该sdn控制器配置数据平面上的转发状态。基于这些状态,采取转发决策。因此,sdn控制器不再需要与单个物理设备中的交换机位于同一位置,并且单个sdn控制器可以控制多个交换机。openflow(以下称of)是用于在sdn环境中定义分组转发的通信协议。of使外部sdn控制器能够控制一个或多个of交换机配置转发路径。每个of交换机包括用于分组入口处理(例如,查找操作)的一个或多个流表和用于分组出口处理(例如,转发操作)的组表。通信信道从每个of交换机延伸到每个外部sdn控制器,以便基于of协议进行通信。使用of协议,sdn控制器可以在流表中添加,更新和删除流条目。此外,sdn控制器可以通过组表控制对分组数据执行的动作,这种控制动作包括转发控制。of交换机通过of端口(端口)耦合到其他网络组件(包括其他of交换机)。of交换机在入口端口上接收数据包。在数据包入口处理期间,每个接收到的数据包都将其入口端口保留为属性。这样,入口端口可以用于流表查找操作,并因此用于分组转发控制(这里也称为流控制)。例如,分组的入口端口可用于在出口处理时将该分组引导到相关联的输出端口。在多播或广播转发到多个输出端端口情况下,出口处理具有预先配置的设置,该设置阻止通过其入口端口输出分组。实际上要通过其入口端口输出数据包,则必须由sdn控制器写入并设置额外的组表,以包括对该端口的专用输出动作。目前,防止分组通过入口端口输出的预先配置(of设置)在某些业务场景中不能很好地扩展。例如,在sdn环境中,我们通常希望定义多个逻辑流实体以允许流级隔离。在这种情况下,当第一和第二逻辑流实体被分配给该of交换机的同一of入口端口时,预先配置的of设置将阻止第一逻辑流实体的分组被输出到第二逻辑流实体。因为两个逻辑流实体都分配给同一个输出端口。这个问题可以通过编写和设置额外的组表来解决,但是n个逻辑流实体需要定义2n个(子)组表。显然,这种扩展行为不可能让大量逻辑流实体分配给单个of端口。技术实现要素:本发明针对目前技术发展的需求和不足之处,提供一种openflow交换机的报文处理方法。本发明的一种openflow交换机的报文处理方法,解决上述技术问题采用的技术方案如下:一种openflow交换机的报文处理方法,在openflow交换机的of端口接收分组,其中该分组与分配给of端口的多个逻辑流实体之一相关联,多个逻辑流实体代表分配给of端口的多个逻辑端口;确定与接收分组相关联的逻辑流实体,并利用与接收分组相关联的逻辑流实体的标识符来标记分组的元数据,以将分组标记为已经经由特定逻辑端口接收,其中将分组标记为已经通过特定逻辑端口接收的标记控制在出口处理中对分组的处理。可选的,所涉及of端口可以是openflow交换机的入口端口;分组的元数据可以采用在openflow交换机的流表之间传递的信息形式。可选的,将分组标记为已经通过特定逻辑端口接收时,逻辑端口可以在sdn环境中定义,每个逻辑端口表示映射到该逻辑端口的sdn环境内的聚合流。可选的,所涉及的多个逻辑流实体之间可以定义分层关系,每个逻辑流实体可以与一个专用层级相关联;进一步可选的,在逻辑流实体的分层布置中,所接收的分组与第一流层级上的第一逻辑流实体和第二流层级上的第二逻辑流实体相关联,其中:所述第二逻辑流实体包括至少两个不同的第一个流层次结构级别的第一个逻辑流实体;确定第一逻辑流实体和第二逻辑流实体,其中,用第一逻辑流实体的第一标识符和第二逻辑流实体的第二标识符来标记分组的元数据;然后,可以分别基于第一预定义标识符和第二预定义标识符分别对第一标识符和第二标识符执行匹配。进一步可选的,所涉及的多个逻辑流实体表示分配给of端口的多个逻辑端口,此时,分组处理可以包括选择性地丢弃分组,使得在一个逻辑端口上不会接收经由相同的逻辑端口出口的分组。可选的,所涉及逻辑流实体可以定义与由openflow交换机模拟的分组的流级别分离;至少两个逻辑流实体可以绑定到相同的分组传输服务,从而向分配给同一个of端口的至少两个逻辑流实体提供相同的分组传输服务。可选的,与接收分组相关联的逻辑流实体由该分组的至少一个封装属性定义,所述封装属性可以映射到逻辑流实体,那么,映射可以将逻辑流实体的标识符与封装属性相关联;基于of端口的流表来确定与所接收的分组相关联的逻辑流实体的标识符,此时,of端口的流表可以定义封装属性和逻辑流实体的标识符之间的映射。可选的,对分组的处理包括:作为匹配的结果,选择性地传递分组,其中,通过广播和多播之一转发所传递的分组。本发明的一种openflow交换机的报文处理方法,与现有技术相比具有的有益效果是:本发明的报文处理方法首先在openflow交换机的of端口接收分组,其中该分组与分配给of端口的多个逻辑流实体之一相关联,多个逻辑流实体代表分配给of端口的多个逻辑端口,随后确定与接收分组相关联的逻辑流实体,并利用与接收分组相关联的逻辑流实体的标识符来标记分组的元数据,以将分组标记为已经经由特定逻辑端口接收,其中将分组标记为已经通过特定逻辑端口接收的标记控制在出口处理中对分组的处理,可以大大减少实现相同过滤功能所需的流和组条目的数量。附图说明附图1是本发明的openflow交换机连接两个外部sdncontrollerde的示意图;附图2是本发明的数据包在分组入口处理和分组出口处理的流程图。具体实施方式为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。在本文档的上下文中,术语“动作”指的是将分组转发到端口,修改分组(例如减少生存时间,til,字段)或改变其状态(例如,将其与队列相关联),可以将动作指定为与流条目相关联的指令集的一部分或者与组条目相关联的动作桶中的动作。术语“动作桶”指的是组中的一组动作和相关参数。术语“动作集”指的是与分组相关联的一组动作。术语“流表”指的是处理流水线的一个阶段,流表包括流条目。术语“流条目”指的是用于匹配和处理分组的流表中的元素,流条目通常包括用于匹配分组的一组匹配字段,用于匹配优先级,用于跟踪分组的一组计数器,以及要应用的一组指令。术语“匹配字段”指的是与数据包匹配的流条目的字段部分。匹配字段可以匹配各种包头字段,包入口端口,元数据值和其他管道字段中的一个或多个。匹配字段可以是通配符(匹配任何值)或是比特掩码(匹配比特子集)。术语“管道”指的是在of交换机中提供匹配,转发和分组修改中的一个或多个的链接流表的集合。术语“组”指的是动作桶的列表以及选择一个或多个桶的一些装置以用于基于每个分组的应用。术语“元数据”是指寄存器值或任何其他数据结构,例如,从一个表到下一个表。术语“匹配”尤其指的是将分组的报头字段和流水线字段的集合与流条目的匹配字段进行比较。术语“端口”尤其指的是分组进入和退出of管道的进入,退出点。端口可以是物理端口,of交换机定义的逻辑端口,of协议定义的保留端口。实施例一:本实施例提出一种openflow交换机的报文处理方法,在openflow交换机的of端口接收分组,其中该分组与分配给of端口的多个逻辑流实体之一相关联,多个逻辑流实体代表分配给of端口的多个逻辑端口;确定与接收分组相关联的逻辑流实体,并利用与接收分组相关联的逻辑流实体的标识符来标记分组的元数据,以将分组标记为已经经由特定逻辑端口接收,其中将分组标记为已经通过特定逻辑端口接收的标记控制在出口处理中对分组的处理。本方法执行过程中,所涉及of端口可以是openflow交换机的入口端口;分组的元数据可以采用在openflow交换机的流表之间传递的信息形式。本方法执行过程中,将分组标记为已经通过特定逻辑端口接收时,逻辑端口可以在sdn环境中定义,每个逻辑端口表示映射到该逻辑端口的sdn环境内的聚合流。所涉及的多个逻辑流实体之间可以定义分层关系,每个逻辑流实体可以与一个专用层级相关联。多个逻辑流实体表示分配给of端口的多个逻辑端口时,分组处理可以包括选择性地丢弃分组,使得在一个逻辑端口上不会接收经由相同的逻辑端口出口的分组。在逻辑流实体的分层布置中,所接收的分组与第一流层级上的第一逻辑流实体和第二流层级上的第二逻辑流实体相关联,其中:所述第二逻辑流实体包括至少两个不同的第一个流层次结构级别的第一个逻辑流实体;确定第一逻辑流实体和第二逻辑流实体,其中,用第一逻辑流实体的第一标识符和第二逻辑流实体的第二标识符来标记分组的元数据;然后,可以分别基于第一预定义标识符和第二预定义标识符分别对第一标识符和第二标识符执行匹配。本方法执行过程中,所涉及逻辑流实体可以定义与由openflow交换机模拟的分组的流级别分离;至少两个逻辑流实体可以绑定到相同的分组传输服务,从而向分配给同一个of端口的至少两个逻辑流实体提供相同的分组传输服务。本方法执行过程中,与接收分组相关联的逻辑流实体由该分组的至少一个封装属性定义,封装属性可以映射到逻辑流实体,那么,映射可以将逻辑流实体的标识符与封装属性相关联;基于of端口的流表来确定与所接收的分组相关联的逻辑流实体的标识符,此时,of端口的流表可以定义封装属性和逻辑流实体的标识符之间的映射。本方法执行过程中,对分组的处理包括:作为匹配的结果,选择性地传递分组,其中,通过广播和多播之一转发所传递的分组。参考附图1,其包括多个流表flowtable,每个流表flowtable包含了一组的一个或多个流条目,并且每个流条目包括一个或多个匹配字段,计数器和指令集,指令动作(例如:分组转发、分组修改和组表处理)和流水线处理(例如:将分组发送到后续表以及以表之间的元数据的形式传送信息)。本实施例工作时,结合附图2,流水线处理与在入口端口接收的数据包开始,第一流表和入口处理具有编号0的接收到的分组,其他入口流表可以使用该匹配在第一个表的结果。如果入口处理的结果是将分组转发到输出端口,且没有有效的出口表,则该数据包由输出端口处理,并且通常将该数据包转发出openflow交换机。实际过程中,为出口处理设置的操作有一个限制:输出操作和组操作都不能一起添加到出口操作集,用于出口处理的动作集在出口处理开始时用当前输出端口的输出动作初始化,而用于入口处理的动作集开始为空。在入口和出口处理中以不同方式处理输出动作的过程中,当入口动作集包含输出动作或将分组转发到输出端口a的组动作时,分组必须在该端口a上开始出口处理,当出口动作集包含输出动作时,分组必须退出出口处理并且必须由端口a处理,并且通常将其转发出of交换。此时:如果动作列表包含输出动作,则将分组的克隆以其当前状态转发到期望的端口a,在那里它开始出口处理;如果输出操作引用不存在的端口,则丢弃该数据包的克隆;如果操作列表包含组操作,则相关组桶处理当前状态的数据包的克隆。在这一过程中,对由输出或组动作生成的分组的克隆所做的任何修改仅适用于该克隆,并且不适用于原始分组或其他克隆。本方法执行过程中,需要补充的是,将分组标记为已经通过特定逻辑端口接收的标记控制在出口处理中对分组的处理:首先接收来自组表的分组,该分组与相关联的元数据一起被接收,并且动作集被初始化以包括输出端口a,此时,元数据应当包括分组的一个或多个逻辑流实体的一个或多个标识符,随后,元数据中的一个或多个标识符与一个或多个预定义标识符匹配。综上可知,采用本发明的一种openflow交换机的报文处理方法,可以大大减少实现相同过滤功能所需的流和组条目的数量。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1