一种数据报文转发方法及装置制造方法

文档序号:7769434阅读:159来源:国知局
一种数据报文转发方法及装置制造方法
【专利摘要】本发明实施例公开了数据报文转发方法及装置,用于提高数据报文在进行流表匹配时的匹配效率。本发明实施例方法包括:获取数据报文的属性标识;根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中分别对应的指定操作;若所述第一流表项查找成功,则根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
【专利说明】一种数据报文转发方法及装置

【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种数据报文转发方法及装置。

【背景技术】
[0002]OpenFlow 和软件定义网络(SDN, Software Defined Network)允许对一个网络进行编程,好像这个网络就是一台计算机一样。它可将物理网络的抽象层直接提供给控制元件,允许通过软件设置和操作网络。这将为进一步的创新敞开大门。
[0003]OpenFlow技术最早由斯坦福大学提出,旨在基于现有传输控制协议/因特网互联协议(TCP/IP, Transmiss1n Control Protocol/Internet Protocol)技术条件,以创新的网络互联理念解决当前网络面对新业务产生的种种瓶颈,已被享有声望的《麻省理工科技评论》杂志评为十大未来技术。它的核心思想很简单,就是将原本完全由交换机/路由器控制的数据报文转发过程,转化为由OpenFlow交换机(OpenFlow交换机)和控制服务器(Controller)分别完成的独立过程。转变背后进行的实际上是控制权的更迭:传统网络中数据报文的流向是人为指定的,虽然交换机、路由器拥有控制权,却没有数据报文的概念,只进行数据报文级别的交换;而在OpenFlow网络中,统一的控制服务器取代路由,决定了所有数据报文在网络中传输路径。OpenFlow交换机会在本地维护一个与流表不同的流表(Flow Table),如果要转发的数据报文在流表中有对应项,则直接进行快速转发;若流表中没有此项,数据报文就会被发送到控制服务器进行传输路径的确认,再根据下发结果进行转发。
[0004]OpenFlow版本从0FP1.0发展到0FP1.2。主要扩展了多控制器、多流表、组表等几个重要特性。多流表的使得cont1ller可以将不同的业务划分到不同的表来处理。同时多流表的特性也增加了硬件实现快速转发的难度,以及转发延时。主要原因是:1、多个流表间有先后顺序的要求;2、每个数据报文在标间流转的时候,匹配域会发生变化。(applyinstruct1n+set field、write metadata) ;3、以上关系导致多个表无法解f禹然后并发查找。
[0005]在主机中运行一个OpenFlow的交换机软件,支持和Controller之间的信息交互,流表管理。同时,数据面的部分数据查表转发功能下放到一个现场可编程门阵列(FPGA,Field-Programmable Gate Array)板卡中。利用到硬件的三态内容寻址存储器(TCAM,ternary content addressable memory)查找功能以及硬件的并发处理能力,有效的提高了系统的能力。该方案虽然将交换机流表的一个子集放在硬件板卡中工作。但是由于TCAM资源的限制,它支持的流表项数量有限。同时,直接使用方法来多流表的硬件加速需要的增加多个查表和执行引擎,成本比较高。


【发明内容】

[0006]本发明实施例提供了一种数据报文转发方法及装置,用于提高数据报文在进行流表匹配时的匹配效率。
[0007]本发明实施例第一方面提供的数据报文转发方法,包括:
[0008]获取数据报文的属性标识;根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中对应的指定操作的集合;若所述第一流表项查找成功,则根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
[0009]在第一方面的第一种可能的实现方式中,所述第一流表项还包括:精确匹配域;
[0010]所述根据属性标识在第一流表中查找第一流表项,包括:
[0011]在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
[0012]在第一方面的第二种可能的实现方式中,所述根据属性标识在第一流表中查找第一流表项之后,包括:
[0013]若所述第一流表项查找失败,则根据所述属性标识依次在多级第二流表中查找第二流表项,依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发,并根据查找到的各个所述第二流表项生成所述第一流表项,将所述第一流表项记录在所述第一流表中。
[0014]结合第一方面的第二种可能实现方式,在第一方面的第三种可能的实现方式中,所述第二流表项包括:通配匹配域和指定操作;
[0015]所述根据查找到的各个第二流表项生成第一流表项,包括:
[0016]在依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,记录执行过的所述指定操作,得到所述数据报文的动作集合;
[0017]分析所述数据报文,获得所述数据报文的精确匹配域;
[0018]根据所述数据报文的动作集合和所述精确匹配域生成所述数据报文对应的第一流表项。
[0019]结合第一方面的第二种可能实现方式,在第一方面的第四种可能的实现方式中,所述根据查找到的各个所述第二流表项生成所述第一流表项之后,包括:
[0020]当第二流表中的第二流表项被老化时,删除第一流表中与所述第二流表项相关联的第一流表项;
[0021]或,
[0022]当第二流表中的第二流表项被修改时,删除第一流表中与所述第二流表项相关联的第一流表项;
[0023]或,
[0024]当第二流表中的第二流表项被删除时,删除第一流表中与所述第二流表项相关联的第一流表项;
[0025]或,
[0026]当第二流表中添加新的第二流表项时,检测第一流表中与所述第二流表相关联的第一流表项的优先级是否比新增第二流表项低,若是,则删除第一流表中与所述第二流表相关联的第一流表项。
[0027]结合第一方面的第二种可能实现方式,在第一方面的第五种可能的实现方式中,所述根据查找到的各个所述第二流表项生成所述第一流表项之后,包括:
[0028]实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,并更新相应的第二流表项的空闲时间 idel time。
[0029]本发明实施例第二方面提供的交换机,包括:
[0030]数据获取单元,用于获取数据报文的属性标识;
[0031]匹配查找单元,用于根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中对应的指定操作的集合;
[0032]转发单元,用于若所述第一流表项查找成功,则根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
[0033]在第二方面的第一种可能的实现方式中,所述匹配查找单元具体用于:
[0034]在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
[0035]在第二方面的第二种可能的实现方式中,所述交换机还包括:
[0036]流表生成单元,用于若所述第一流表项查找失败,则在根据所述属性标识依次在多级第二流表中查找第二流表项,依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,根据查找到的各个所述第二流表项生成所述第一流表项,将所述第一流表项记录在所述第一流表中。
[0037]结合第二方面的第二种可能实现方式,在第二方面的第三种可能的实现方式中,所述流表生成单元包括:
[0038]操作记录模块,用于在依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,记录执行过的所述指定操作,得到所述数据报文的动作集合;
[0039]报文分析模块,用于分析所述数据报文,获得所述数据报文的精确匹配域;
[0040]流表生成模块,用于根据所述数据报文的动作集合和所述精确匹配域生成所述数据报文对应的第一流表项。
[0041]结合第二方面的第二种可能实现方式,在第二方面的第四种可能的实现方式中,所述交换机还包括:
[0042]流表项删除单元,用于当第二流表中的第二流表项被老化时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被修改时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被删除时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中添加新的第二流表项时,检测第一流表中与所述第二流表相关联的第一流表项的优先级是否比新增第二流表项低,若是,则删除第一流表中与所述第二流表相关联的第一流表项。
[0043]结合第二方面的第二种可能实现方式,在第二方面的第五种可能的实现方式中,所述交换机还包括:同步单元,用于实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,并更新相应的第二流表项的空闲时间idel time ο
[0044]从以上技术方案可以看出,本发明实施例具有以下优点:
[0045]在本发明实施例中,将一种数据报文的各个属性标识在多级流表中分别对应的指定操作组合成动作集合,并在第一流表中存储各种数据报文对应的动作集合,在进行流表匹配的过程中,优先在第一流表中查找流表项,若所述第一流表项查找成功,则根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发,使得数据报文的流表匹配查找过程可以一次性完成,无需逐级地对各个流表进行匹配,提高了数据报文转发的效率。

【专利附图】

【附图说明】
[0046]图1是本发明实施例数据报文转发方法的一个流程示意图;
[0047]图2是本发明实施例数据报文转发方法的另一个流程示意图;
[0048]图3是本发明实施例数据报文转发方法的另一个流程示意图;
[0049]图4是本发明实施例交换机的逻辑结构示意图;
[0050]图5为本发明实施例中计算机设备的一结构示意图。

【具体实施方式】
[0051 ] 本发明实施例提供了一种数据报文转发方法及装置,用于提高数据报文在进行流表匹配时的匹配效率。
[0052]请参阅图1,本发明实施例中数据报文转发方法的一个实施例包括:
[0053]101、获取数据报文的属性标识;
[0054]交换机获取数据报文的属性标识;所述属性标识具体可以包括:源MAC地址、目的MAC地址,以太网类型,源IP地址和目的IP地址等。
[0055]102、根据所述属性标识在第一流表中查找第一流表项;
[0056]交换机根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中分别对应的指定操作;若所述第一流表项查找成功,则执行步骤103。
[0057]在实际应用中,所述指定操作可以为:从一个端口转发数据,或修改特定的字段(如:目的IP地址)等。
[0058]在现有的多级流表匹配的过程中,每成功查到一个流表项,交换机就会对数据报文执行该流表项对应的指定操作;在实际应用中,一个数据报文进入了交换机之后,无论该数据报文在交换机中查了几次表,进行了什么变化,同一个流每次执行结果都是一样的;因此,在本发明实施例中,将一种数据报文的各个属性标识在多级流表中分别对应的指定操作组合成动作集合,并在第一流表中存储各种数据报文对应的动作集合,在进行流表匹配的过程中,优先在第一流表中查找流表项。
[0059]103、根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
[0060]当在第一流表中查找到与所述数据报文对应的第一流表项时,交换机根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
[0061]在本发明实施例中,将一种数据报文的各个属性标识在多级流表中分别对应的指定操作组合成动作集合,并在第一流表中存储各种数据报文对应的动作集合,在进行流表匹配的过程中,优先在第一流表中查找流表项,若所述第一流表项查找成功,则根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发,使得数据报文的流表匹配查找过程可以一次性完成,无需逐级地对各个流表进行匹配,提高了数据报文转发的效率。
[0062]在实际应用中,可能存在未被交换机识别的数据报文,这类数据报文在交换机中没有存储有相应的动作集合,本发明实施例提出了相应的解决方案,具体请参阅图2,本发明实施例中数据报文转发方法的另一个实施例包括:
[0063]201、获取数据报文的属性标识;
[0064]交换机获取数据报文的属性标识;所述属性标识具体可以包括:源MAC地址、目的MAC地址,以太网类型,源IP地址和目的IP地址等。
[0065]202、根据所述属性标识在第一流表中查找第一流表项;
[0066]交换机根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中分别对应的指定操作。
[0067]若所述第一流表项查找成功,则执行步骤203 ;
[0068]若所述第一流表项查找失败,则执行步骤204。
[0069]在实际应用中,第一流表项中包含有精确匹配域,该精确匹配域由多个通配匹配域组合而成,该多个通配匹配域分别对应一种数据报文的各个属性标识。示例性的,第一流表项的查找过程具体可以为:在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
[0070]203、根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发;
[0071]当在第一流表中查找到与所述数据报文对应的第一流表项时,交换机根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
[0072]204、根据所述属性标识依次在多级第二流表中查找第二流表项;
[0073]当第一流表中查找不到与该数据报文对应的第一流表项时,交换机根据所述属性标识依次在多级第二流表中查找第二流表项,依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发,并执行步骤205。
[0074]所述第二流表项包括:通配匹配域,及该通配匹配域对应的指定操作。
[0075]205、根据查找到的各个所述第二流表项生成所述第一流表项。
[0076]在交换机根据各个所述第二流表项中的指定操作对所述数据报文进行转发操作的同时,交换机根据查找到的各个所述第二流表项生成所述第一流表项,并将所述第一流表项记录在所述第一流表中。在所述数据报文对应的第一流表项生成之后,交换机下一次再接收到同一类的数据报文时,可以直接在第一流表中完成查找流表项和转发的流程。
[0077]示例性的,第一流表项的生成过程具体可以为:在查找到目标的第二流表项之后,记录所述第二流表项对应的通配匹配域和指定操作;将各个所述第二流表项对应的通配匹配域合并为精确匹配域,将各个所述第二流表项对应的指定操作合并为动作集合,生成所述数据报文对应的第一流表项。
[0078]可以理解的是,在本发明实施例中的第一流程是相对于第二流程而言的,即相对于第二流程而言的,第一流程为快速转发表(即数据报文转发的速度比第二流表快);即相对于第一流程而言的,第二流程为慢速转发表。而第一流表项则为第一流程对应的流表项,第二流表项为第二流程对应的流表项。
[0079]在本发明实施例中,经过一次查找的数据报文,后续可以用第一流表的查找来代替多级第二流表的查找,提高了数据报文转发的效率。
[0080]为了便于理解,下面对本发明实施例中的数据报文转发方法进行详细的描述,请参阅图3,本发明实施例中数据报文转发方法的另一个实施例包括:
[0081]301、获取数据报文的属性标识;
[0082]交换机获取数据报文的属性标识;所述属性标识具体可以包括:源MAC地址、目的MAC地址,以太网类型,源IP地址和目的IP地址等。
[0083]在本发明实施例中,将交换机中的流表划分为第一流表和第二流表,其中,交换机的慢转发面(第二流表对应的转发面)实现OpenFlow的流表结构,与Controller之间的交互,以及流表的管理。
[0084]302、根据所述属性标识在第一流表中查找第一流表项;
[0085]交换机根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中分别对应的指定操作。在实际应用中,所述指定操作可以为:从一个端口转发数据,或修改特定的字段(如:目的IP地址)等。
[0086]若所述第一流表项查找成功,则执行步骤303 ;
[0087]若所述第一流表项查找失败,则执行步骤304。
[0088]在实际应用中,第一流表项中包含有精确匹配域,该精确匹配域由多个通配匹配域组合而成,该多个通配匹配域分别对应一种数据报文的各个属性标识。示例性的,第一流表项的查找过程具体可以为:在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
[0089]303、根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发;
[0090]当在第一流表中查找到与所述数据报文对应的第一流表项时,交换机根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
[0091]304、根据所述属性标识依次在多级第二流表中查找第二流表项;
[0092]当第一流表中查找不到与该数据报文对应的第一流表项时,交换机根据所述属性标识依次在多级第二流表中查找第二流表项,依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发,并执行步骤205。
[0093]所述第二流表项包括:通配匹配域,及该通配匹配域对应的指定操作。
[0094]305、根据查找到的各个所述第二流表项生成所述第一流表项;
[0095]在交换机根据各个所述第二流表项中的指定操作对所述数据报文进行转发操作的同时,交换机根据查找到的各个所述第二流表项生成所述第一流表项,并将所述第一流表项记录在所述第一流表中。在所述数据报文对应的第一流表项生成之后,交换机下一次再接收到同一类的数据报文时,可以直接在第一流表中完成查找流表项和转发的流程。
[0096]示例性的,当数据报文进入慢转发面后,在做第一次转发的过程中,慢转发平面记录下交换机对数据报文做的动作。将这些动作转换为动作集合(act1n list group),act1n list group随着精确匹配域一同下载到快速转发平面(第一流表对应的转发平面)。
[0097]由于控制器只能获知慢转发面的信息,对快速转发平面是不知情的,所以要将快速转发平面和慢转发平面的两种表关联起来。具体的,每条第一流表中的第一流表项和面表中的N条第二流表项关联(N是第二流表的数量),第一流表中第一流表项不主动老化,当第二流表中的第二流表项被老化时,同时删除关联第二流表项的第一流表项。第二流表中的同一个第二流表项可以被多个第一流表中的第一流表项引用,所以在每条慢转发平面的第二流表项中建立一个被引用的链表结构。第一流表中的第一流表项最多引用N个第二流表的第二流表项,所述在满表中表示N个引用标记。在实际应用中,每条流表都有生命周期,在一段时间内没有起作用,或者强制多少时间后不起作用;所述老化指的是,减少交换机中的没用流表长期占用空间,可以认为是垃圾清理。
[0098]306、实时或定时向所述第二流表发送所述第一流表的流量统计消息;
[0099]交换机实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,并更新相应的第二流表项的idel time。
[0100]在实际应用中,由于数据报文直接经过第一流表而不经过第二流表,第二流表无法获知数据报文的流量;因此,交换机会实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,而发送之后第一流表可以将本地流量统计清零。
[0101]在实际应用中,由于数据报文直接经过第一流表而不经过第二流表,导致第二流表中的idel time老化;因此,交换机会实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来更新相应的第二流表项的ideltime。
[0102]307、对所述第一流表和所述第二流表的操作管理。
[0103]当第二流表中的第二流表项被老化时,删除第一流表中与所述第二流表项相关联的第一流表项;
[0104]或,
[0105]当第二流表中的第二流表项被修改时,删除第一流表中与所述第二流表项相关联的第一流表项;
[0106]或,
[0107]当第二流表中的第二流表项被删除时,删除第一流表中与所述第二流表项相关联的第一流表项;
[0108]或,
[0109]当第二流表中添加新的第二流表项时,由于新添加第二流表项可能导致流规则的改变,因此,交换机会检测第一流表中与所述第二流表相关联的第一流表项的优先级是否比新增第二流表项低,若是,则删除第一流表中与所述第二流表相关联的第一流表项。
[0110]上面仅以一些例子对本发明实施例中的应用场景进行了说明,可以理解的是,在实际应用中,还可以有更多的应用场景,具体此处不作限定。
[0111]下面对用于执行上述数据报文转发方法的本发明交换机的实施例进行说明,其逻辑结构请参考图4,本发明实施例中的交换机一个实施例包括:
[0112]数据获取单元401,用于获取数据报文的属性标识;
[0113]匹配查找单元402,用于根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中分别对应的指定操作;
[0114]转发单元403,用于若所述第一流表项查找成功,则根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
[0115]进一步的,本发明实施例中,所述匹配查找单元402具体用于在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
[0116]进一步的,本发明实施例中,所述交换机还包括:
[0117]流表生成单元404,用于若所述第一流表项查找失败,则在根据所述属性标识依次在多级第二流表中查找第二流表项,依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,根据查找到的各个所述第二流表项生成所述第一流表项,将所述第一流表项记录在所述第一流表中。
[0118]进一步的,本发明实施例中,所述流表生成单元404包括:
[0119]操作记录模块4041,用于在依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,记录执行过的所述指定操作,得到所述数据报文的动作集合;
[0120]报文分析模块4042,用于分析所述数据报文,获得所述数据报文的精确匹配域;
[0121]流表生成模块4043,用于根据所述数据报文的动作集合和所述精确匹配域生成所述数据报文对应的第一流表项。
[0122]进一步的,本发明实施例中,所述交换机还包括:
[0123]流表项删除单元405,用于当第二流表中的第二流表项被老化时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被修改时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被删除时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中添加新的第二流表项时,检测第一流表中与所述第二流表相关联的第一流表项的优先级是否比新增第二流表项低,若是,则删除第一流表中与所述第二流表相关联的第一流表项。
[0124]进一步的,本发明实施例中,所述交换机还包括:
[0125]同步单元406,用于实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,并更新相应的第二流表项的空闲时间idel time ο
[0126]下面对上述各个单元模块的交互进行详细的描述:
[0127]数据获取单元401获取数据报文的属性标识;所述属性标识具体可以包括:源MAC地址、目的MAC地址,以太网类型,源IP地址和目的IP地址等。
[0128]匹配查找单元402根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中分别对应的指定操作;若所述第一流表项查找成功,则执行转发单元403。若所述第一流表项查找失败,则执行流表生成单元404。
[0129]在实际应用中,所述指定操作可以为:从一个端口转发数据,或修改特定的字段(如:目的IP地址)等。
[0130]在实际应用中,第一流表项中包含有精确匹配域,该精确匹配域由多个通配匹配域组合而成,该多个通配匹配域分别对应一种数据报文的各个属性标识。示例性的,第一流表项的查找过程具体可以为:在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
[0131]在现有的多级流表匹配的过程中,每成功查到一个流表项,交换机就会对数据报文执行该流表项对应的指定操作;在实际应用中,一个数据报文进入了交换机之后,无论该数据报文在交换机中查了几次表,进行了什么变化,同一个流每次执行结果都是一样的;因此,在本发明实施例中,将一种数据报文的各个属性标识在多级流表中分别对应的指定操作组合成动作集合,并在第一流表中存储各种数据报文对应的动作集合,在进行流表匹配的过程中,优先在第一流表中查找流表项。
[0132]当在第一流表中查找到与所述数据报文对应的第一流表项时,转发单元403根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
[0133]当第一流表中查找不到与该数据报文对应的第一流表项时,流表生成单元404根据所述属性标识依次在多级第二流表中查找第二流表项,依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发,并根据各个所述第二流表项中的指定操作对所述数据报文进行转发操作的同时,交换机根据查找到的各个所述第二流表项生成所述第一流表项,并将所述第一流表项记录在所述第一流表中。在所述数据报文对应的第一流表项生成之后,交换机下一次再接收到同一类的数据报文时,可以直接在第一流表中完成查找流表项和转发的流程。
[0134]示例性的,第一流表项的生成过程具体可以为:在查找到目标的第二流表项之后,记录所述第二流表项对应的通配匹配域和指定操作;将各个所述第二流表项对应的通配匹配域合并为精确匹配域,将各个所述第二流表项对应的指定操作合并为动作集合,生成所述数据报文对应的第一流表项。
[0135]可以理解的是,在本发明实施例中的第一流程是相对于第二流程而言的,即相对于第二流程而言的,第一流程为快速转发表(即数据报文转发的速度比第二流表快);即相对于第一流程而言的,第二流程为慢速转发表。而第一流表项则为第一流程对应的流表项,第二流表项为第二流程对应的流表项。
[0136]在本发明实施例中,经过一次查找的数据报文,后续可以用第一流表的查找来代替多级第二流表的查找,提高了数据报文转发的效率。
[0137]进一步的,流表生成的过程可以由操作记录模块4041在依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,记录执行过的所述指定操作,得到所述数据报文的动作集合;再由报文分析模块4042分析所述数据报文,获得所述数据报文的精确匹配域;最后,由流表生成模块4043根据所述数据报文的动作集合和所述精确匹配域生成所述数据报文对应的第一流表项。
[0138]示例性的,当数据报文进入慢转发面后,在做第一次转发的过程中,慢转发平面记录下交换机对数据报文做的动作。将这些动作转换为动作集合(act1n list group),act1n list group随着精确匹配域一同下载到快速转发平面(第一流表对应的转发平面)。
[0139]由于控制器只能获知慢转发面的信息,对快速转发平面是不知情的,所以要将快速转发平面和慢转发平面的两种表关联起来。具体的,每条第一流表中的第一流表项和面表中的N条第二流表项关联(N是第二流表的数量),第一流表中第一流表项不主动老化,当第二流表中的第二流表项被老化时,同时删除关联第二流表项的第一流表项。第二流表中的同一个第二流表项可以被多个第一流表中的第一流表项引用,所以在每条慢转发平面的第二流表项中建立一个被引用的链表结构。第一流表中的第一流表项最多引用N个第二流表的第二流表项,所述在满表中表示N个引用标记。在实际应用中,每条流表都有生命周期,在一段时间内没有起作用,或者强制多少时间后不起作用;所述老化指的是,减少交换机中的没用流表长期占用空间,可以认为是垃圾清理。
[0140]同步单元406实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,并更新相应的第二流表项的idel time ο
[0141]在实际应用中,由于数据报文直接经过第一流表而不经过第二流表,第二流表无法获知数据报文的流量;因此,交换机会实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,而发送之后第一流表可以将本地流量统计清零。
[0142]在实际应用中,由于数据报文直接经过第一流表而不经过第二流表,导致第二流表中的idel time老化;因此,交换机会实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来更新相应的第二流表项的ideltime。
[0143]进一步的,本发明实施例中的交换机还可以通过流表项删除单元405对流表项进行删除操作,具体的,当第二流表中的第二流表项被老化时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被修改时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被删除时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中添加新的第二流表项时,检测第一流表中与所述第二流表相关联的第一流表项的优先级是否比新增第二流表项低,若是,则删除第一流表中与所述第二流表相关联的第一流表项。
[0144]请参见图5,本发明实施例还提供了一种交换机,可包括:
[0145]输入装置501,输出装置502,存储器503和处理器504 (交换机中的处理器的数量可以为一个或多个,图5中以一个处理器为例)在本发明的一些实施例中,输入装置501,输出装置502,存储器503和处理器504可通过总线或其它方式连接,其中,图5中通过总线连接为例。
[0146]其中,所述处理器504执行如下步骤:
[0147]在输入装置501获取数据报文的属性标识之后,根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中分别对应的指定操作。在实际应用中,所述指定操作可以为:从一个端口转发数据,或修改特定的字段(如:目的IP地址)等。
[0148]若所述第一流表项查找成功,则触发输出装置502根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发;
[0149]若所述第一流表项查找失败,则根据所述属性标识依次在多级第二流表中查找第二流表项,触发输出装置502依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发。
[0150]在交换机根据各个所述第二流表项中的指定操作对所述数据报文进行转发操作的同时,交换机根据查找到的各个所述第二流表项生成所述第一流表项,并将所述第一流表项记录在所述第一流表中。在所述数据报文对应的第一流表项生成之后,交换机下一次再接收到同一类的数据报文时,可以直接在第一流表中完成查找流表项和转发的流程。
[0151]在实际应用中,第一流表项中包含有精确匹配域,该精确匹配域由多个通配匹配域组合而成,该多个通配匹配域分别对应一种数据报文的各个属性标识。示例性的,第一流表项的查找过程具体可以为:在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
[0152]由于控制器只能获知慢转发面的信息,对快速转发平面是不知情的,所以要将快速转发平面和慢转发平面的两种表关联起来。具体的,每条第一流表中的第一流表项和面表中的N条第二流表项关联(N是第二流表的数量),第一流表中第一流表项不主动老化,当第二流表中的第二流表项被老化时,同时删除关联第二流表项的第一流表项。第二流表中的同一个第二流表项可以被多个第一流表中的第一流表项引用,所以在每条慢转发平面的第二流表项中建立一个被引用的链表结构。第一流表中的第一流表项最多引用N个第二流表的第二流表项,所述在满表中表示N个引用标记。在实际应用中,每条流表都有生命周期,在一段时间内没有起作用,或者强制多少时间后不起作用;所述老化指的是,减少交换机中的没用流表长期占用空间,可以认为是垃圾清理。
[0153]进一步的,交换机实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,并更新相应的第二流表项的idel time ο
[0154]在实际应用中,由于数据报文直接经过第一流表而不经过第二流表,第二流表无法获知数据报文的流量;因此,交换机会实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,而发送之后第一流表可以将本地流量统计清零。
[0155]在实际应用中,由于数据报文直接经过第一流表而不经过第二流表,导致第二流表中的idel time老化;因此,交换机会实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来更新相应的第二流表项的ideltime。
[0156]当第二流表中的第二流表项被老化时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被修改时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被删除时,删除第一流表中与所述第二流表项相关联的第一流表项或,当第二流表中添加新的第二流表项时,由于新添加第二流表项可能导致流规则的改变,因此,交换机会检测第一流表中与所述第二流表相关联的第一流表项的优先级是否比新增第二流表项低,若是,则删除第一流表中与所述第二流表相关联的第一流表项。
[0157]其中,存储器503存储的内容包括:所述属性标识具体可以包括:源MAC地址、目的MAC地址,以太网类型,源IP地址和目的IP地址等。所述指定操作可以为:从一个端口转发数据,或修改特定的字段(如:目的IP地址)等。所述第二流表项包括:通配匹配域,及该通配匹配域对应的指定操作。
[0158]在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0159]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0160]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0161]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0162]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1.一种数据报文转发方法,其特征在于,包括: 获取数据报文的属性标识; 根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中对应的指定操作的集合; 若所述第一流表项查找成功,则根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
2.根据权利要求1所述的方法,其特征在于, 所述第一流表项还包括:精确匹配域; 所述根据属性标识在第一流表中查找第一流表项,包括: 在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
3.根据权利要求1所述的方法,其特征在于,所述根据属性标识在第一流表中查找第一流表项之后,包括: 若所述第一流表项查找失败,则根据所述属性标识依次在多级第二流表中查找第二流表项,依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发,并根据查找到的各个所述第二流表项生成所述第一流表项,将所述第一流表项记录在所述第一流表中。
4.根据权利要求3所述的方法,其特征在于,所述第二流表项包括:通配匹配域和指定操作; 所述根据查找到的各个第二流表项生成第一流表项,包括: 在依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,记录执行过的所述指定操作,得到所述数据报文的动作集合; 分析所述数据报文,获得所述数据报文的精确匹配域; 根据所述数据报文的动作集合和所述精确匹配域生成所述数据报文对应的第一流表项。
5.根据权利要求3所述的方法,其特征在于,所述根据查找到的各个所述第二流表项生成所述第一流表项之后,包括: 当第二流表中的第二流表项被老化时,删除第一流表中与所述第二流表项相关联的第一流表项; 或, 当第二流表中的第二流表项被修改时,删除第一流表中与所述第二流表项相关联的第一流表项; 或, 当第二流表中的第二流表项被删除时,删除第一流表中与所述第二流表项相关联的第一流表项; 或, 当第二流表中添加新的第二流表项时,检测第一流表中与所述第二流表相关联的第一流表项的优先级是否比新增第二流表项低,若是,则删除第一流表中与所述第二流表相关联的第一流表项。
6.根据权利要求3所述的方法,其特征在于,所述根据查找到的各个所述第二流表项生成所述第一流表项之后,包括: 实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,并更新相应的第二流表项的空闲时间idel time。
7.一种交换机,其特征在于,包括: 数据获取单元,用于获取数据报文的属性标识; 匹配查找单兀,用于根据所述属性标识在第一流表中查找第一流表项,所述第一流表项包括:动作集合,所述动作集合为一种数据报文的各个属性标识在多级流表中对应的指定操作的集合; 转发单元,用于若所述第一流表项查找成功,则根据与所述属性标识匹配的第一流表项对应的动作集合对所述数据报文进行转发。
8.根据权利要求7所述的交换机,其特征在于,所述匹配查找单元具体用于: 在第一流表中查找与所述数据报文的各个属性标识都匹配的精确匹配域,所述精确匹配域对应的第一流表项为所要查找的第一流表项。
9.根据权利要求7所述的交换机,其特征在于,所述交换机还包括: 流表生成单元,用于若所述第一流表项查找失败,则在根据所述属性标识依次在多级第二流表中查找第二流表项,依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,根据查找到的各个所述第二流表项生成所述第一流表项,将所述第一流表项记录在所述第一流表中。
10.根据权利要求9所述的交换机,其特征在于,所述流表生成单元包括: 操作记录模块,用于在依次根据各个所述第二流表项中的指定操作对所述数据报文进行转发之后,记录执行过的所述指定操作,得到所述数据报文的动作集合; 报文分析模块,用于分析所述数据报文,获得所述数据报文的精确匹配域; 流表生成模块,用于根据所述数据报文的动作集合和所述精确匹配域生成所述数据报文对应的第一流表项。
11.根据权利要求9所述的交换机,其特征在于,所述交换机还包括: 流表项删除单元,用于当第二流表中的第二流表项被老化时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被修改时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中的第二流表项被删除时,删除第一流表中与所述第二流表项相关联的第一流表项;或,当第二流表中添加新的第二流表项时,检测第一流表中与所述第二流表相关联的第一流表项的优先级是否比新增第二流表项低,若是,则删除第一流表中与所述第二流表相关联的第一流表项。
12.根据权利要求9所述的交换机,其特征在于,所述交换机还包括:同步单元,用于实时或定时向所述第二流表发送所述第一流表的流量统计消息,使得所述第二流表根据所述流量统计消息来记录所述数据报文的流量,并更新相应的第二流表项的空闲时间ideltime。
【文档编号】H04L12/741GK104426768SQ201310400616
【公开日】2015年3月18日 申请日期:2013年9月5日 优先权日:2013年9月5日
【发明者】沈伟锋, 周在福, 吴祖光 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1