CN107800630A - 报文处理方法及装置 - Google Patents
报文处理方法及装置 Download PDFInfo
- Publication number
- CN107800630A CN107800630A CN201610800692.7A CN201610800692A CN107800630A CN 107800630 A CN107800630 A CN 107800630A CN 201610800692 A CN201610800692 A CN 201610800692A CN 107800630 A CN107800630 A CN 107800630A
- Authority
- CN
- China
- Prior art keywords
- characteristic value
- flow table
- flow
- acquisition
- judged result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种报文处理方法及装置,其中,所述方法包括:获取接收到的接收报文中用于表征报文流量的流量特征的特征值;根据获取的所述特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的所述特征值对应的压缩表;在判断结果为存在与获取的所述特征值对应的压缩表的情况下,执行所述压缩表中所包括的流表转发动作。通过本发明,解决了相关技术中存在采用线性查表算法进行流表查找导致转发速度低下的问题,达到了提高报文转发效率的效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种报文处理方法及装置。
背景技术
软件定义网络(Software Defined Network,简称为SDN)是一种网络架构,是属于网络虚拟化的一种实现方式。其核心技术OpenFlow通过分离控制面与转发面的方式,实现了网络流量的灵活控制。一个典型的OpenFlow网络,由OpenFlow控制器和OpenFlow交换机组成。
OpenFlow控制器,实现了OpenFlow网络的控制平面,控制域内转发设备的转发行为,设备形态可以是个人电脑、服务器或服务器集群等。
OpenFlow交换机,是一种能够支持OpenFlow协议的交换设备,侧重于流量转发能力,是一种能够基于流表(Flow Table)进行流量处理和转发的网元设备。OpenFlow交换机与OpenFlow控制器之间通过OpenFlow协议进行通信。
OpenFlow交换机从报文中提取特征(如目的IP地址,目的MAC地址等),并搜寻与之匹配的流表。当报文同时匹配到多个流表条目的时候,选取其中优先级最高的流表作为结果,而后按照流表内容进行动作处理。
OpenFlow交换机作为高度抽象的可编程设备,需要提供灵活的控制接口,协议倾向于适应多样化的流量模型,在实际应用中对转发性能影响较大,而其中的主要性能瓶颈便是查表模型。
一条流量在转发过程中需要查询多级流表。Openflow协议规定转发面最多需要支持64级流表查询,如果流量转发过程中需要查找的流表级数很多,就会消耗大量的时间和性能在查找流表上,导致转发速度低下。在每一级流表的查找中,采用线性查表算法,导致性能随着流表条目的增加呈指数关系降低。
因此,相关技术中存在采用线性查表算法进行流表查找导致转发速度低下的问题。
发明内容
本发明实施例提供了一种报文处理方法及装置,以至少解决相关技术中相关技术中存在采用线性查表算法进行流表查找导致转发速度低下的问题。
根据本发明的一个实施例,提供了一种报文处理方法,包括:获取接收到的接收报文中用于表征报文流量的流量特征的特征值;根据获取的所述特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的所述特征值对应的压缩表;在判断结果为存在与获取的所述特征值对应的压缩表的情况下,执行所述压缩表中所包括的流表转发动作。
可选地,在判断是否存在与获取的所述特征值对应的压缩表之后,还包括:在判断结果为不存在与获取的所述特征值对应的压缩表的情况下,根据所述流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与所述流量特征对应的散列表;在判断结果为存在与所述流量特征对应的散列表的情况下,根据所述特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与所述流量特征对应的散列表中是否存在与获取的所述特征值对应的流表条目;在判断结果为存在与获取的所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
可选地,在判断与所述流量特征对应的散列表中是否存在与获取的所述特征值对应的流表条目之后,还包括:在判断结果为不存在与获取的所述特征值对应的流表条目的情况下,根据获取的所述特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断所述线性表中是否存在与所述特征值对应的流表条目;在判断结果为所述线性表中存在与所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
可选地,在获取接收到的接收报文中用于表征报文流量的流量特征的特征值之前,还包括:接收软件定义网络SDN控制器的下发的流表条目,其中,所述SDN控制器位于接收所述接收报文的网元的上层;判断是否存在与所述流表条目匹配的散列表;在判断结果为存在与所述流表条目匹配的散列表的情况下,将所述流表条目写入对应的散列表;和/或,在判断结果为不存在与所述流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将所述流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将所述流表条目写入所述线性表。
可选地,在执行所述特征值对应的所述流表条目中所包括的所述流表转发动作之后,还包括:根据获取的所述特征值,以及所述特征值对应的所述流表条目中所包括的所述流表转发动作,生成与获取的所述特征值对应的压缩表。
根据本发明的另一个实施例,提供了一种报文处理装置,包括:获取模块,用于获取接收到的接收报文中用于表征报文流量的流量特征的特征值;第一判断模块,用于根据获取的所述特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的所述特征值对应的压缩表;执行模块,用于在判断结果为存在与获取的所述特征值对应的压缩表的情况下,执行所述压缩表中所包括的流表转发动作。
可选地,所述装置还包括:第二判断模块,用于在所述第一判断模块的判断结果为不存在与获取的所述特征值对应的压缩表的情况下,根据所述流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与所述流量特征对应的散列表;第三判断模块,用于在所述第二判断模块的判断结果为存在与所述流量特征对应的散列表的情况下,根据所述特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与所述流量特征对应的散列表中是否存在与获取的所述特征值对应的流表条目;所述执行模块,还用于在所述第三判断模块的判断结果为存在与获取的所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
可选地,所述装置还包括:第四判断模块,用于在所述第三判断模块的判断结果为不存在与获取的所述特征值对应的流表条目的情况下,根据获取的所述特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断所述线性表中是否存在与所述特征值对应的流表条目;所述执行模块,还用于在所述第四判断模块的判断结果为所述线性表中存在与所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
可选地,所述装置还包括:接收模块,用于接收软件定义网络SDH控制器的下发的流表条目,其中,所述SDH控制器位于接收所述接收报文的网元的上层;判断模块,用于判断是否存在与所述流表条目匹配的散列表;写入模块,用于在所述判断模块的判断结果为存在与所述流表条目匹配的散列表的情况下,将所述流表条目写入对应的散列表;和/或,在判断结果为不存在与所述流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将所述流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将所述流表条目写入所述线性表。
可选地,所述装置还包括:生成模块,用于根据获取的所述特征值,以及所述特征值对应的所述流表条目中所包括的所述流表转发动作,生成与获取的所述特征值对应的压缩表。
根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行以下步骤的程序代码:获取接收到的接收报文中用于表征报文流量的流量特征的特征值;根据获取的所述特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的所述特征值对应的压缩表;在判断结果为存在与获取的所述特征值对应的压缩表的情况下,执行所述压缩表中所包括的流表转发动作。
可选地,存储介质还设置为存储用于执行以下步骤的程序代码:在判断是否存在与获取的所述特征值对应的压缩表之后,还包括:在判断结果为不存在与获取的所述特征值对应的压缩表的情况下,根据所述流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与所述流量特征对应的散列表;在判断结果为存在与所述流量特征对应的散列表的情况下,根据所述特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与所述流量特征对应的散列表中是否存在与获取的所述特征值对应的流表条目;在判断结果为存在与获取的所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
可选地,存储介质还设置为存储用于执行以下步骤的程序代码:在判断与所述流量特征对应的散列表中是否存在与获取的所述特征值对应的流表条目之后,还包括:在判断结果为不存在与获取的所述特征值对应的流表条目的情况下,根据获取的所述特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断所述线性表中是否存在与所述特征值对应的流表条目;在判断结果为所述线性表中存在与所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
可选地,存储介质还设置为存储用于执行以下步骤的程序代码:在获取接收到的接收报文中用于表征报文流量的流量特征的特征值之前,还包括:接收软件定义网络SDN控制器的下发的流表条目,其中,所述SDN控制器位于接收所述接收报文的网元的上层;判断是否存在与所述流表条目匹配的散列表;在判断结果为存在与所述流表条目匹配的散列表的情况下,将所述流表条目写入对应的散列表;和/或,在判断结果为不存在与所述流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将所述流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将所述流表条目写入所述线性表。
可选地,存储介质还设置为存储用于执行以下步骤的程序代码:在执行所述特征值对应的所述流表条目中所包括的所述流表转发动作之后,还包括:根据获取的所述特征值,以及所述特征值对应的所述流表条目中所包括的所述流表转发动作,生成与获取的所述特征值对应的压缩表。
通过本发明,根据用于表征报文流量的流量特征的特征值,以及特征值与压缩表之间的对应关系,判断是否存在与获取的特征值对应的压缩表,并在存在与获取的特征值对应的压缩表的情况下,执行该压缩表中所包括的流表转发动作,考虑到表项内容对于转发模型来说存在一致性,即一种业务始终是遵循着一定的顺序、用固定的键值查找业务定义的表项,因此采用特征值与压缩表对应的方式来执行流表转发动作,避免的重复的表项查找工作,因此,可以解决相关技术中存在采用线性查表算法进行流表查找导致转发速度低下的问题,达到提高报文转发效率的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种报文处理方法的移动终端的硬件结构框图;
图2是根据本发明实施例的报文处理方法的流程图;
图3是根据本发明优选实施例的OpenFlow网络组件架构示意图;
图4是根据本发明优选实施例的流表存储流程的示意图;
图5是根据本发明优选实施例的报文查表流程的示意图;
图6是根据本发明实施例的报文处理装置的结构框图一;
图7是根据本发明实施例的报文处理装置的结构框图二;
图8是根据本发明实施例的报文处理装置的结构框图三;
图9是根据本发明实施例的报文处理装置的结构框图四;
图10是根据本发明实施例的报文处理装置的结构框图五。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
本申请实施例1所提供的方法实施例可以在OpenFlow交换机、计算机终端或者类似的运算装置中执行。以运行在OpenFlow交换机上为例,图1是本发明实施例的一种报文处理方法的移动终端的硬件结构框图。如图1所示,OpenFlow交换机10可以包括一个或多个(图中仅示出一个)处理器12(处理器12可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器14、以及用于通信功能的传输装置16。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,OpenFlow交换机10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器14可用于存储应用软件的软件程序以及模块,如本发明实施例中的报文处理方法对应的程序指令/模块,处理器12通过运行存储在存储器14内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器14可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器14可进一步包括相对于处理器12远程设置的存储器,这些远程存储器可以通过网络连接至OpenFlow交换机10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置16用于经由一个网络接收或者发送数据。上述的网络具体实例可包括OpenFlow交换机10的通信供应商提供的无线网络。在一个实例中,传输装置16包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置16可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述OpenFlow交换机的报文处理方法,图2是根据本发明实施例的报文处理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,获取接收到的接收报文中用于表征报文流量的流量特征的特征值;
步骤S204,根据获取的特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的特征值对应的压缩表;
步骤S206,在判断结果为存在与获取的特征值对应的压缩表的情况下,执行该压缩表中所包括的流表转发动作。
通过上述步骤通过本发明,根据用于表征报文流量的流量特征的特征值,以及特征值与压缩表之间的对应关系,判断是否存在与获取的特征值对应的压缩表,并在存在与获取的特征值对应的压缩表的情况下,执行该压缩表中所包括的流表转发动作,解决了相关技术中存在采用线性查表算法进行流表查找导致转发速度低下的问题,提高了报文转发效率。
可选地,步骤S204之后,可以采用如下方式确定流表转发动作:在不存在与获取的特征值对应的压缩表的情况下,根据流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与流量特征对应的散列表;在存在与流量特征对应的散列表的情况下,根据特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与流量特征对应的散列表中是否存在与获取的特征值对应的流表条目;在判断结果为存在与获取的特征值对应的流表条目的情况下,执行特征值对应的流表条目中所包括的流表转发动作。
通过本发明实施例的上述技术方案,在不存在与获取的特征值对应的压缩表的情况下,根据获取的流量特征与散列表之间的对应关系、特征值与流表条目之间的对应关系,确定与特征值对应的流表条目,执行特征值对应的流表条目中所包括的流表转发动作,由于可以采用非线性查表算法进行匹配,避免了采用线性查表方式导致性能随流表数目的增加呈指示关系降低的问题。
可选地,可以采用如下方式确定所要执行的流表转发动作:在不存在与流量特征对应的散列表或者不存在与获取的特征值对应的流表条目的情况下,根据获取的特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断线性表中是否存在与特征值对应的流表条目;在判断结果为线性表中存在与特征值对应的流表条目的情况下,执行特征值对应的流表条目中所包括的流表转发动作。
可选地,在步骤S202之前,还可以采用如下方式存储当前网元(接收该接收报文的网元)的上层的软件定义网络(Software Defined Network,简称为SDN)控制器下发的流表条目:判断是否存在与流表条目匹配的散列表;在判断结果为存在与流表条目匹配的散列表的情况下,将流表条目写入对应的散列表;和/或,在判断结果为不存在与流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将流表条目写入线性表。
通过本发明实施例的上述技术方案,可以根据下发的流表条目的流量特征以及网元中散列表的数目,对上层SDN控制器下发的流表条目进行存储,提高了流表条目存储的效率。
可选地,在执行与特征值对应的流表条目(可以散列表中的流表条目,也可以是线性表中的流表条目)中所包括的流表转发动作以后,还可以采用如下方式生成压缩表:根据获取的特征值,以及与该特征值对应的流表条目中所包括的流表转发动作,生成与获取的特征值对应的压缩表。
基于上述实施例及可选实施方式,为说明方案的整个流程交互,在本优选实施例中,提供了一种报文处理方法,该报文处理方法可以运行在如图3所示的OpenFlow网络组件架构中,下面对该报文处理方法进行说明。
相关技术中查表键值是保存在流表中的,也就是说,在不访问流表的情况下是无法得知查表键值的,以至于常用的几种非线性查表算法无法派上用场,因此,需要一种查表方法来减轻性能上的压力。
在本优选实施例中的报文处理方法中,提供了一种新的查表方式,减少了报文处理中的查表过程的执行时间,在满足灵活性的前提下,可以提高OpenFlow交换机的转发性能。用以减少前面论述中对性能造成的影响。
该报文处理方法的查表方式,可以分为以下两点:
首先,采用线性和非线性混合的方式,将流表条目分类存放,将键值相同的表项拟合成一个新的表项集合,在此称为散列表,未拟合表项条目,构成另外一个表项集合,称为线性表;
其次,根据转发面的流量特征,如果经过匹配发现该条流量没有进行过压缩,则将该条流量转发需要查询的多级流表最终整合成一张压缩表,后续这条流量只需要查询这一张压缩表就能完成转发。
具体地,在一级流表的查找过程中,存在n个散列表,每个散列表对应一组匹配域,比如散列表a对应的是目的互联网协议(Internet Protocol,简称为IP)地址,散列表b对应的是入端口等等。而匹配时会遍历每一个散列表,获取对应的匹配域后组装相应的键值,进行非线性查找,如果命中就结束查找,散列表遍历结束还没有命中的话,就到线性表中继续查找。以此过程的最终结果作为查找结果并记录。
假设该条流量的转发过程中分别需要查询5张流表,依次是流表1,流表2,流表3,流表4,流表5。这些流表的动作分别为动作1,动作2,动作3,动作4,动作5;流量特征为A(作用类似于前述特征值)。当前已经生成两张压缩表,特征值分别为B,C。
通过特征值A在现有的压缩表中进行匹配查找,没有找到与该流量匹配的压缩表,则该流量进行流表转发,同时进行针对特征值为A流量的流表压缩。
按照与流表转发时相同的顺序查询流表1,流表2,流表3,流表4,流表5。把这5级流表的动作按照动作1,动作2,动作3,动作4,动作5的顺序依次写入一张压缩表,同时把这张新生成压缩表的特征值写为A。此次流表压缩完成。
此时总共有三张压缩表,特征值分别为A,B,C。
当特征值为A的流量再次进入时,在当前已有的压缩表中进行匹配查找,结果匹配到了特征值同为A的压缩表,则这条流量将通过查询这一张压缩表来完成转发,不再需要查询多级流表。
这样,查表性能仅与流表种类相关,流表的数目与之解耦。在转发模型设计合理的情况下,能够避免线性表的存在,转发性能稳定,不受组网环境变更的影响。并且,设备可以自动适应转发模型的更换,重新组织散列表,在多次测试中表现良好。
下面结合流表存储流程以及报文查表流程对本优选实施例的报文处理方法进行说明。
图4是根据本发明优选实施例的流表存储流程的示意图,如图4所示,该流程包括如下步骤:
步骤S402,查找match field相同的hash table。
接收到下发的流表条目以后,可以通过如下方式查找hash table(哈希表,作用同前述散列表):通过match field(匹配域,作用同前述流量特征)查找是否有match field相同的hash table。
步骤S404,判断是否找到,如果是,执行步骤S406,否则,执行步骤S408。
步骤S406,将流表条目写入hash table。
步骤S408,判断是否还有空的hash table,如果是,执行步骤S410,否则执行步骤S412。
步骤S410,创建新的hash table。
在新的hash table创建完成以后,执行步骤S406,将流表条目写入创建的hashtable。
步骤S412,将流表条目写入线性表。
例如,下发4个条目,分别是:
条目1:dst ip 10.0.0.1/24;
条目2:inport=1;
条目3:inport=2;
条目4:dst mac=00-19-C6-03-DA-5D。
条目1下发,查找match field为dst ip(目标ip地址)的hash table,未找到;添加match field为dst ip的hash table 1,并添加条目1。
条目2下发,查找match field为inport的hash table,未找到;添加match field为inport的hash table 2,并添加条目2。
条目3下发,查找match field为inport的hash table,找到hash table 2;将条目3添加到hash table 2。
条目4下发,查找match field为dst mac的hash table,未找到;hash table达到了一定数量,无法创建新的hash table;把条目4添加到线性表中。
图5是根据本发明优选实施例的报文查表流程的示意图,如图5所示,该流程包括如下步骤:
步骤S502,判断hash table是否存在,如果是,执行步骤S504,否则执行步骤S508。
步骤S504,获取hash table的match field。
步骤S506,查表,判断匹配是否成功,如果是,执行步骤S512,否则执行步骤S514。
步骤S508,判断线性表是否存在,如果是,执行步骤S510,否则执行步骤S512。
步骤S510,查找线性表。
步骤S512,输出报文查表结果。
步骤S514,获取下一级散列表,继续执行步骤S502。
下面结合具体的报文对报文查表流程进行说明。
报文1:dst ip 20.0.0.1inport=2
查询散列表存在;获取hash table 1的match field为dst ip,从报文提取dstip20.0.0.1作为键值,hash不到结果;获取hash table 2的match field为inport,从报文提取inport=2作为键值,hash到条目3;执行条目3相关动作。
报文2:dst ip 20.0.0.1inport=3dst mac=00-19-C6-03-DA-5D
查询散列表存在,获取hash table 1的match field为dst ip,从报文提取dstip20.0.0.1作为键值,hash不到结果;获取hash table 2的match field为inport,从报文提取inport=3作为键值,hash不到结果;hash table遍历结束,没有得到结果;在线性表中遍历,匹配到条目4;执行条目4相关动作。
报文3:dst ip 20.0.0.1inport=3dst mac=00-19-C6-03-DA-5D
在Table 0中命中流条目a,执行的Action a中包含goto table 1动作;在Table 1中命中流条目b,执行的Action b中包含goto table 5动作;在Table 5中命中流条目e,执行Action e后结束;整合流条目a、b和e,形成新的压缩条目g,同时包含Action a、Action b和Action e;下一次收到报文3时,直接命中压缩条目g。
采用本发明优选实施例的报文处理方法中的查表过程,围绕着这样的一个核心内容:数据平面开发的通用模型为查表、转发。OpenFlow协议提取了此过程,新业务部署由原来的编程提升到应用层面的管理配置命令而已,表项内容对于转发模型来说存在一致性,即一种业务始终是遵循着一定的顺序、用固定的键值查找业务定义的表项。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种报文处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是根据本发明实施例的报文处理装置的结构框图一,如图6所示,该装置包括:
获取模块62,用于获取接收到的接收报文中用于表征报文流量的流量特征的特征值;
第一判断模块64,连接至上述获取模块62,用于根据获取的特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的特征值对应的压缩表;
执行模块66,连接至上述第一判断模块64,用于在判断结果为存在与获取的特征值对应的压缩表的情况下,执行该压缩表中所包括的流表转发动作。
图7是根据本发明实施例的报文处理装置的结构框图二,如图7所示,该装置除包括图6所示的所有模块外,还包括:
第二判断模块72,连接至上述第一判断模块64,用于在第一判断模块的判断结果为不存在与获取的特征值对应的压缩表的情况下,根据流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与流量特征对应的散列表;
第三判断模块74,连接至上述第二判断模块72,用于在第二判断模块的判断结果为存在与流量特征对应的散列表的情况下,根据特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与流量特征对应的散列表中是否存在与获取的特征值对应的流表条目;
执行模块66,连接至上述第三判断模块74,还用于在第三判断模块的判断结果为存在与获取的特征值对应的流表条目的情况下,执行特征值对应的流表条目中所包括的流表转发动作。
图8是根据本发明实施例的报文处理装置的结构框图三,如图8所示,该装置除包括图7所示的所有模块外,还包括:
第四判断模块82,连接至上述第三判断模块74(也可以连接至第二判断模块72),用于在第三判断模块的判断结果为不存在与获取的特征值对应的流表条目的情况下,根据获取的特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断线性表中是否存在与特征值对应的流表条目;
执行模块66,连接至上述第四判断模块82,还用于在第四判断模块的判断结果为线性表中存在与特征值对应的流表条目的情况下,执行特征值对应的流表条目中所包括的流表转发动作。
图9是根据本发明实施例的报文处理装置的结构框图四,如图9所示,该装置除包括图8所示的所有模块外,还包括:
接收模块92,用于接收软件定义网络SDN控制器的下发的流表条目,其中,SDN控制器位于接收该接收报文的网元的上层;
第五判断模块94,连接至上述接收模块92,用于判断是否存在与流表条目匹配的散列表;
写入模块96,连接至上述第五判断模块94,用于在判断模块的判断结果为存在与流表条目匹配的散列表的情况下,将流表条目写入对应的散列表;和/或,在判断结果为不存在与流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将流表条目写入线性表。
图10是根据本发明实施例的报文处理装置的结构框图五,如图10所示,该装置除包括图7、8或9所示的所有模块外,还包括:
生成模块102,用于根据获取的特征值,以及特征值对应的流表条目中所包括的流表转发动作,生成与获取的特征值对应的压缩表。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,获取接收到的接收报文中用于表征报文流量的流量特征的特征值;
S2,根据获取的特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的特征值对应的压缩表;
S3,在判断结果为存在与获取的特征值对应的压缩表的情况下,执行压缩表中所包括的流表转发动作。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
在判断是否存在与获取的特征值对应的压缩表之后,还包括:
S1,在判断结果为不存在与获取的特征值对应的压缩表的情况下,根据流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与流量特征对应的散列表;
S2,在判断结果为存在与流量特征对应的散列表的情况下,根据特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与流量特征对应的散列表中是否存在与获取的特征值对应的流表条目;
S3,在判断结果为存在与获取的特征值对应的流表条目的情况下,执行特征值对应的流表条目中所包括的流表转发动作。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
在判断与流量特征对应的散列表中是否存在与获取的特征值对应的流表条目之后,还包括:
S1,在判断结果为不存在与获取的特征值对应的流表条目的情况下,根据获取的特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断线性表中是否存在与特征值对应的流表条目;
S2,在判断结果为线性表中存在与特征值对应的流表条目的情况下,执行特征值对应的流表条目中所包括的流表转发动作。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
在获取接收到的接收报文中用于表征报文流量的流量特征的特征值之前,还包括:
S1,接收软件定义网络SDN控制器的下发的流表条目,其中,SDN控制器位于接收该接收报文的网元的上层;
S2,判断是否存在与流表条目匹配的散列表;
S3,在判断结果为存在与流表条目匹配的散列表的情况下,将流表条目写入对应的散列表;和/或,在判断结果为不存在与流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将流表条目写入线性表。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
在执行特征值对应的流表条目中所包括的流表转发动作之后,还包括:
S1,根据获取的特征值,以及特征值对应的流表条目中所包括的流表转发动作,生成与获取的特征值对应的压缩表。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:获取接收到的接收报文中用于表征报文流量的流量特征的特征值;根据获取的特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的特征值对应的压缩表;在判断结果为存在与获取的特征值对应的压缩表的情况下,执行压缩表中所包括的流表转发动作。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:在判断是否存在与获取的特征值对应的压缩表之后,还包括:在判断结果为不存在与获取的特征值对应的压缩表的情况下,根据流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与流量特征对应的散列表;在判断结果为存在与流量特征对应的散列表的情况下,根据特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与流量特征对应的散列表中是否存在与获取的特征值对应的流表条目;在判断结果为存在与获取的特征值对应的流表条目的情况下,执行特征值对应的流表条目中所包括的流表转发动作。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:在判断与流量特征对应的散列表中是否存在与获取的特征值对应的流表条目之后,还包括:在判断结果为不存在与获取的特征值对应的流表条目的情况下,根据获取的特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断线性表中是否存在与特征值对应的流表条目;在判断结果为线性表中存在与特征值对应的流表条目的情况下,执行特征值对应的流表条目中所包括的流表转发动作。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:在获取接收到的接收报文中用于表征报文流量的流量特征的特征值之前,还包括:接收软件定义网络SDN控制器的下发的流表条目,其中,SDN控制器位于接收该接收报文的网元的上层;判断是否存在与流表条目匹配的散列表;在判断结果为存在与流表条目匹配的散列表的情况下,将流表条目写入对应的散列表;和/或,在判断结果为不存在与流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将流表条目写入线性表。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:在执行特征值对应的流表条目中所包括的流表转发动作之后,还包括:根据获取的特征值,以及特征值对应的流表条目中所包括的流表转发动作,生成与获取的特征值对应的压缩表。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种报文处理方法,其特征在于,包括:
获取接收到的接收报文中用于表征报文流量的流量特征的特征值;
根据获取的所述特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的所述特征值对应的压缩表;
在判断结果为存在与获取的所述特征值对应的压缩表的情况下,执行所述压缩表中所包括的流表转发动作。
2.根据权利要求1所述的方法,其特征在于,在判断是否存在与获取的所述特征值对应的压缩表之后,还包括:
在判断结果为不存在与获取的所述特征值对应的压缩表的情况下,根据所述流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与所述流量特征对应的散列表;
在判断结果为存在与所述流量特征对应的散列表的情况下,根据所述特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与所述流量特征对应的散列表中是否存在与获取的所述特征值对应的流表条目;
在判断结果为存在与获取的所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
3.根据权利要求2所述的方法,其特征在于,在判断与所述流量特征对应的散列表中是否存在与获取的所述特征值对应的流表条目之后,还包括:
在判断结果为不存在与获取的所述特征值对应的流表条目的情况下,根据获取的所述特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断所述线性表中是否存在与所述特征值对应的流表条目;
在判断结果为所述线性表中存在与所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
4.根据权利要求3所述的方法,其特征在于,在获取接收到的接收报文中用于表征报文流量的流量特征的特征值之前,还包括:
接收软件定义网络SDN控制器的下发的流表条目,其中,所述SDN控制器位于接收所述接收报文的网元的上层;
判断是否存在与所述流表条目匹配的散列表;
在判断结果为存在与所述流表条目匹配的散列表的情况下,将所述流表条目写入对应的散列表;和/或,
在判断结果为不存在与所述流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将所述流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将所述流表条目写入所述线性表。
5.根据权利要求2至4中任一项所述的方法,其特征在于,在执行所述特征值对应的所述流表条目中所包括的所述流表转发动作之后,还包括:
根据获取的所述特征值,以及所述特征值对应的所述流表条目中所包括的所述流表转发动作,生成与获取的所述特征值对应的压缩表。
6.一种报文处理装置,其特征在于,包括:
获取模块,用于获取接收到的接收报文中用于表征报文流量的流量特征的特征值;
第一判断模块,用于根据获取的所述特征值,以及特征值与压缩表之间的第一预定对应关系,判断是否存在与获取的所述特征值对应的压缩表;
执行模块,用于在判断结果为存在与获取的所述特征值对应的压缩表的情况下,执行所述压缩表中所包括的流表转发动作。
7.根据权利要求6所述的装置,其特征在于,还包括:
第二判断模块,用于在所述第一判断模块的判断结果为不存在与获取的所述特征值对应的压缩表的情况下,根据所述流量特征,以及流量特征与散列表之间的第二预定对应关系,判断是否存在与所述流量特征对应的散列表;
第三判断模块,用于在所述第二判断模块的判断结果为存在与所述流量特征对应的散列表的情况下,根据所述特征值以及特征值与散列表中的流表条目之间的第三预定对应关系,判断与所述流量特征对应的散列表中是否存在与获取的所述特征值对应的流表条目;
所述执行模块,还用于在所述第三判断模块的判断结果为存在与获取的所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
8.根据权利要求7所述的装置,其特征在于,还包括:
第四判断模块,用于在所述第三判断模块的判断结果为不存在与获取的所述特征值对应的流表条目的情况下,根据获取的所述特征值,以及特征值与线性表中的流表条目之间的第四预定对应关系,判断所述线性表中是否存在与所述特征值对应的流表条目;
所述执行模块,还用于在所述第四判断模块的判断结果为所述线性表中存在与所述特征值对应的流表条目的情况下,执行所述特征值对应的流表条目中所包括的流表转发动作。
9.根据权利要求8所述的装置,其特征在于,还包括:
接收模块,用于接收软件定义网络SDH控制器的下发的流表条目,其中,所述SDH控制器位于接收所述接收报文的网元的上层;
第五判断模块,用于判断是否存在与所述流表条目匹配的散列表;
写入模块,用于在所述判断模块的判断结果为存在与所述流表条目匹配的散列表的情况下,将所述流表条目写入对应的散列表;和/或,在判断结果为不存在与所述流量特征匹配的散列表的情况下,判断是否存在空的散列表,其中,在判断结果为存在空的散列表的情况下,将所述流表条目写入空的散列表;和/或,在判断结果为不存在空的散列表的情况下,将所述流表条目写入所述线性表。
10.根据权利要求7至9中任一项所述的装置,其特征在于,还包括:
生成模块,用于根据获取的所述特征值,以及所述特征值对应的所述流表条目中所包括的所述流表转发动作,生成与获取的所述特征值对应的压缩表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610800692.7A CN107800630A (zh) | 2016-09-02 | 2016-09-02 | 报文处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610800692.7A CN107800630A (zh) | 2016-09-02 | 2016-09-02 | 报文处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107800630A true CN107800630A (zh) | 2018-03-13 |
Family
ID=61529693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610800692.7A Pending CN107800630A (zh) | 2016-09-02 | 2016-09-02 | 报文处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107800630A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020135547A1 (zh) * | 2018-12-29 | 2020-07-02 | 华为技术有限公司 | 一种确定转发故障位置的方法和设备 |
CN114448886A (zh) * | 2021-12-28 | 2022-05-06 | 天翼云科技有限公司 | 一种流表的处理方法及装置 |
CN114884858A (zh) * | 2022-01-28 | 2022-08-09 | 珠海星云智联科技有限公司 | 流表处理的方法和相关装置、电子设备、介质和程序产品 |
-
2016
- 2016-09-02 CN CN201610800692.7A patent/CN107800630A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020135547A1 (zh) * | 2018-12-29 | 2020-07-02 | 华为技术有限公司 | 一种确定转发故障位置的方法和设备 |
US11902087B2 (en) | 2018-12-29 | 2024-02-13 | Huawei Technologies Co., Ltd. | Forwarding fault location determining method and device |
CN114448886A (zh) * | 2021-12-28 | 2022-05-06 | 天翼云科技有限公司 | 一种流表的处理方法及装置 |
CN114884858A (zh) * | 2022-01-28 | 2022-08-09 | 珠海星云智联科技有限公司 | 流表处理的方法和相关装置、电子设备、介质和程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104348716B (zh) | 一种报文处理方法及设备 | |
Ozdag | Intel® Ethernet switch FM6000 series-software defined networking | |
CN104823416B (zh) | 实现OpenFlow的软件定义网络中的报文排序的装置和方法 | |
CN104580027B (zh) | 一种OpenFlow报文转发方法及设备 | |
Meiners et al. | Split: Optimizing space, power, and throughput for TCAM-based classification | |
CN105247831B (zh) | 流表修改方法、流表修改装置和开放流网络系统 | |
US8599859B2 (en) | Iterative parsing and classification | |
US20030007489A1 (en) | Data extraction system for packet analysis | |
CN106657637A (zh) | 能够在保持手持服务功能集的同时提供数据网络共享服务的手持设备 | |
CN104168222A (zh) | 一种报文传输方法和设备 | |
EP2858317A1 (en) | Control device, communication system, switch control method and program | |
US20140105215A1 (en) | Converting addresses for nodes of a data center network into compact identifiers for determining flow keys for received data packets | |
CN107800630A (zh) | 报文处理方法及装置 | |
CN101645851A (zh) | 一种ip分片报文的重组方法和装置 | |
CN109921995A (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
CN105429882A (zh) | 基于传统交换芯片查找方式的报文编辑实现方法及装置 | |
CN104836738A (zh) | 路由硬件表项资源管理方法、装置及网络设备 | |
CN106533943A (zh) | 基于网络交换芯片的微码和流表的实现方法 | |
CN102014065A (zh) | 报文包头的解析方法、包头解析预处理装置和网络处理器 | |
CN107276916A (zh) | 基于协议无感知转发技术的交换机流表管理方法 | |
CN114640557A (zh) | 网关以及云网络系统 | |
CN107222496A (zh) | 基于现场层设备的报文的安全策略匹配方法和现场层设备 | |
CN112235436A (zh) | 网络地址转换规则匹配方法及设备 | |
US11140078B1 (en) | Multi-stage prefix matching enhancements | |
CN101710864A (zh) | 一种多网口Linux服务器的配置方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180423 Address after: 518057 Nanshan District science and technology, Guangdong Province, South Road, No. 55, No. Applicant after: ZTE Corporation Address before: 210012 Nanjing, Yuhuatai District, South Street, Bauhinia Road, No. 68 Applicant before: Nanjing Zhongxing Software Co., Ltd. |
|
TA01 | Transfer of patent application right | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180313 |
|
WD01 | Invention patent application deemed withdrawn after publication |