一种报文处理方法和装置与流程

文档序号:12278494阅读:116来源:国知局
一种报文处理方法和装置与流程

本申请涉及通信技术领域,尤其涉及一种报文处理方法和装置。



背景技术:

报文进入转发设备后,转发设备可以对报文进行优先级映射、OpenFlow转发处理等。

所谓优先级映射,即实现报文携带的服务质量(Quality of Service,QoS)优先级与设备内部的本地优先级(local preference,LP)之间的转换。优先级映射可以包括入方向上的优先级映射和出方向上的优先级映射。入方向上,当报文进入设备时,其携带的QoS优先级会被映射为本地优先级;出方向上,设备发出报文时,该报文的本地优先级会被重新映射为QoS优先级。

所谓OpenFlow转发处理,即将报文与设备上的OpenFlow流表项进行匹配,如果匹配成功,则根据匹配的流表项对报文进行动作队列设定(Set-Queue),并将报文送到对应的端口进行转发。

所谓动作队列设定,即设定一个报文的出队列标识符(ID),当将报文转发到一个端口时,队列ID指明了在该端口的相关队列当中使用哪个队列来转发该报文。

目前转发设备主要通过报文的本地优先级来传递队列标识符(ID),即在报文入队列前,将报文的本地优先级的值修改为队列ID。之后,转发设备根据报文的本地优先级所承载的队列ID,将报文送入对应的队列进行处理。

但是,由于入方向上的优先级映射发生在OpenFlow转发处理之前,而出方向上的优先级映射发生在OpenFlow转发处理之后。如果在入方向上的优先级映射之后,报文的本地优先级的值又被修改过用于传递队列ID,那么之后便无法使用报文的本地优先级实现出方向上的优先级映射。这导致转发设备的OpenFlow转发处理功能和优先级映射功能无法同时使用。



技术实现要素:

有鉴于此,本申请提供一种报文处理方法和装置,用以解决设备OpenFlow转发处理功能和使用本地优先级的功能(如优先级映射功能)无法同时使用的问题。

具体地,本申请是通过如下技术方案实现的:

本申请第一方面,提供了一种报文处理方法,所述方法应用于转发设备,包括:

通过第一端口接收第一报文;

在本地已有流表项中找到与所述第一报文匹配的第一流表项;

确定所述第一流表项指示的出端口为第二端口,依据所述第二端口使能的QoS策略将所述第一报文的QoS-local-id的值设置为所述第一流表项指示的队列标识符ID的值,将所述第一报文加入到与所述第一报文的Qos-local-id匹配的出端口队列中。

本申请第二方面,提供了一种报文处理装置,所述装置可以应用于转发设备,具有实现上述方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块或单元。

一种可能的实现方式中,所述装置包括:

接收单元,用于通过第一端口接收第一报文;

匹配单元,用于在本地已有流表项中找到与所述第一报文匹配的第一流表项;

处理单元,用于确定所述第一流表项指示的出端口为第二端口,依据所述第二端口使能的QoS策略将所述第一报文的QoS-local-id的值设置为所述第一流表项指示的队列标识符ID的值,将所述第一报文加入到与所述第一报文的Qos-local-id匹配的出端口队列中。

另一种可能的实现方式中,所述装置包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;所述处理器通过读取所述存储器中存储的逻辑指令,执行本申请第一方面所述的报文处理方法。

利用本申请提供的方案,通过报文的内部属性QoS-local-id(服务质量本地标识符)来传递OpenFlow队列的队列ID,从而使得OpenFlow队列功能和优先级映射功能能够同时使用。

附图说明

图1是本申请实施例提供的一种报文处理方法所应用的OpenFlow虚拟网络的示意图;

图2是本申请实施例提供的一种报文处理方法的流程图;

图3是本申请一实施例的组网示意图;

图4是本申请一实施例的QoS策略示意图;

图5是本申请一实施例的转发设备内部流表项、QoS-local-id与队列的关联示意图;

图6是本申请实施例提供的一种报文处理装置的功能模块框图;

图7是本申请实施例提供的一种报文处理装置的硬件架构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以下,首先对本申请中的部分用语进行解释说明。

QoS优先级:携带在报文的报文头中。常用的QoS优先级字段包括802.1p、差分服务代码点(Differentiated Services Code Point,DSCP)、EXP(experimental)等。用户可以根据网络规划在不同网络中使用不同的QoS优先级字段,例如在虚拟局域网(Virtual Local Area Network,VLAN)网络中使用802.1p,在互联网协议(英文:Internet Protocol,简称:IP)网络中使用DSCP,在多协议标签交换(英文:Multi-Protocol Label Switching,简称:MPLS)网络中使用EXP。

本地优先级:是一种具有本地意义的优先级,报文到达转发设备后,会被分配一个本地数据域,这个本地数据域可以用于存储本地优先级。本地优先级只有0~7八个取值,对应queue0~queue7八个出端口队列。

下面结合说明书附图和各实施例对本申请技术方案进行说明。

转发设备对报文的处理流程可以简述如下:

首先,对报文进行入方向上的优先级映射和其它业务处理;其次,查找路由表;再次,对报文进行OpenFlow转发处理;然后,对报文进行出方向上的优先级映射;最后,进行报文入队列处理。

由于OpenFlow转发处理的实施顺序在入方向上的优先级映射之后,在出方向上的优先级映射之前,而OpenFlow转发处理和优先级映射都需要使用到本地优先级,所以目前对于设备而言,是无法同时使用优先级映射功能和OpenFlow转发处理功能的。

为此,本申请提出了一种报文处理方法和装置,通过报文的内部属性QoS-local-id(服务质量本地标识符)来传递OpenFlow队列的队列ID,从而使得OpenFlow队列功能和优先级映射功能能够同时使用。

本申请提供的报文处理方法,可应用于图1所示的OpenFlow虚拟网,OpenFlow虚拟网包括了OpenFlow控制器(以下简称控制器)100、转发设备110和安全通道(Secure Channel)120,其中,控制器100和转发设备110之间通过预先配置的安全通道120通信。

控制器100,是OpenFlow虚拟网的控制中心,用于根据用户的配置或者动态运行的协议生成流表发送到转发设备110。流表是转发设备110进行转发策略控制的核心数据结构,包括匹配域(英文:Match)、计数器(英文:Counter)和动作域(英文:Action)。

转发设备110,用于接收控制器100下发的流表,并根据流表对报文进行处理,如OpenFlow转发处理、优先级映射等。

下面通过图2,对本申请提供的报文处理方法进行描述。

参见图2,图2为本申请提供的方法流程图。如图2所示,该流程可包括以下步骤:

步骤201:转发设备通过第一端口接收报文。

步骤202:转发设备在本地已有流表项中找到与所述第一报文匹配的第一流表项。

步骤203:转发设备确定所述第一流表项指示的出端口为第二端口,依据所述第二端口使能的QoS策略将所述第一报文的QoS-local-id的值设置为所述第一流表项指示的队列ID的值,将所述第一报文加入到与所述第一报文的Qos-local-id匹配的出端口队列中。

其中,转发设备本地的流表项由控制器预先下发给转发设备,流表项一般包括了匹配域和动作域。

匹配域用于匹配报文,可以是报文的五元组、报文的类型(如视频业务报文、语音业务报文)等。

本申请中,流表项的动作域用于指示在报文与匹配域匹配时将该匹配报文的QoS-local-id的值设置为指定队列ID的值、以及将该匹配报文转发到指定出端口,例如,可以指示将匹配报文转发到特定的出端口R2,并将该匹配报文的Qos-local-id赋值为1。那么该报文最终将从出端口R2的队列ID为1的队列发出。

本申请中,同一个设备发出并发往同一个目的设备的不同报文,在经过转发设备时,可以从转发设备同一端口的不同队列发出。具体实现方式如下:

转发设备通过第一端口接收第二报文,第二报文不同于步骤201中的第一报文。

例如,如果第一报文的五元组不同于第二报文,如,第一报文的源端口不同于第二报文的源端口,则可以认为第二报文不同于第一报文。又例如,如果第一报文的类型不同于第二报文的类型,如第一报文是视频业务报文,而第二报文是语音业务报文,则也可以认为第二报文不同于第一报文。

转发设备接收到第二报文后,在本地已有流表项中找到与第二报文匹配的第二流表项。

然后,转发设备确定第二流表项指示的出端口为第二端口,依据第二端口使能的QoS策略将第二报文的QoS-local-id的值设置为第二流表项指示的队列ID的值,将第二报文加入到与所述第二报文的Qos-local-id匹配的出端口队列中。

其中,如果为第一报文的QoS-local-id设置的值不同于为第二报文的QoS-local-id设置的值,那么尽管第一报文和第二报文都被转发到第二端口,但第一报文和第二报文进入不同的出端口队列,并从不同的出端口队列转发。

不同的队列可以对应不同的流行为,流行为即是针对报文所做的QoS动作,包括确保转发(Assured Forwarding,AF)、快速转发(Expedited Forwarding,EF)、加权公平队列(Weighted Fair Queuing,WFQ)等。

由于本申请通过报文的内部属性QoS-local-id来传递OpenFlow队列的队列ID,不使用到报文的本地优先级来承载队列ID,从而优先级映射功能或者其它使用到本地优先级的功能均可以与OpenFlow转发处理功能同时使用。

以优先级映射功能为例,在找到与报文匹配的流表项之前,转发设备可以根据预设的入方向上的优先级映射关系,将该报文携带的初始QoS优先级映射为本地优先级;并在找到与报文匹配的流表项之后,根据预设的出方向上的优先级映射关系,将该报文的本地优先级映射为新的QoS优先级,并将该报文携带的初始QoS优先级替换为该新的QoS优先级。

映射前后,QoS优先级的值或者类型有可能发生变化。

例如,当根据实际组网需求需要提升某些报文的优先级的值,以达到这些报文优先被处理的目的时,可以在转发设备上配置同一优先级字段的不同优先级值的映射关系。

如,在入方向上配置优先级映射为DSCP-LP(60-6),在出方向上配置优先级映射为LP-DSCP(6-63),那么当某个初始DSCP为60的报文进入转发设备后,在入方向上通过优先级映射可以设置该报文的LP为6,在出方向通过优先级映射可以把该报文携带的DSCP的值设置为63。

又例如,当报文经过不同网络时,为了保持报文的优先级,可以在连接不同网络的转发设备上配置不同优先级字段的映射关系。

如,在入方向上配置优先级映射为DSCP-LP(60-6),在出方向上配置优先级映射为LP-EXP(6-50),那么当某个初始DSCP为60的报文进入转发设备后,在入方向上通过优先级映射可以设置该报文的LP为6,在出方向通过优先级映射可以把该报文的优先级字段修改为EXP。

此外,由于报文的内部属性QoS-local-id的取值范围为1至4095,因此如果通过匹配QoS-local-id将报文送入不同的队列,那么转发设备的每个端口可以设置的队列数的范围为1至4095,即在每个出端口最多可以设置4095个队列,显然提高了队列的可用范围,可以满足大量队列的应用场景。

为了更清楚地说明本申请的技术方案,下面通过一个实施例对上述技术方案做进一步的说明,需要说明的是,此实施例仅仅是本申请的一种实现方式,不构成对本申请的限定。

参见图3,假设设备A发往设备B的4条不同的报文流在经过转发设备时,从转发设备的R1口进入,从R2口发出。为了让这4条报文流能够在转发设备的R2口通过不同的队列转发,可以通过如下过程实现:

1、控制器向转发设备下发4个流表项,这4个流表项的匹配域分别与这4条报文流匹配,流表项的动作域则指定了出接口(R2口)和设置到报文中的队列ID(如1、2、3、4等)。

2、转发设备在R2接口上配置QoS策略,即设定流的分类规则和队列对应的流行为,以及将流的分类规则和流行为进行绑定。本申请中,流的分类规则可以依据报文的QoS-local-id的取值,队列的流行为可以选择AF、EF、WFQ等。一种QoS策略配置的示例如图4所示,当报文的QoS-local-id为1时,将报文送入队列1;当报文的QoS-local-id为2时,将报文送入队列2;当报文的QoS-local-id为3时,将报文送入队列3;当报文的QoS-local-id为4时,将报文送入队列4。

3、设备A发往设备B的4条报文流从转发设备的R1口进入。转发设备将报文流与控制器预先设置在本地的流表项进行一一匹配,根据匹配的流表项对报文进行动作队列设定(Set-Queue)。例如,将报文流1的QoS-local-id赋值为1,将报文流2的QoS-local-id赋值为2,将报文流3的QoS-local-id赋值为3,将报文流4的QoS-local-id域赋值为4,然后把这4条报文流送到R2口。

4、这4条报文流在R2口上匹配自身的QoS-local-id值进入不同的队列。如图5所示,QoS-local-id(1)对应队列1,QoS-local-id(2)对应队列2,QoS-local-id(3)对应队列3,QoS-local-id(4)对应队列4。最终,报文流1从R2口的队列1发出,报文流2从R2口的队列2发出,报文流3从R2口的队列3发出,报文流4从R2口的队列4发出。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述。

参见图6,该图为本申请实施例提供的一种报文处理装置的功能模块框图,该装置可以应用于转发设备中。所述装置包括接收单元601、匹配单元602和处理单元603。

所述接收单元601,用于通过第一端口接收第一报文。

所述匹配单元602,用于在本地已有流表项中找到与所述第一报文匹配的第一流表项。

所述处理单元603,用于确定所述第一流表项指示的出端口为第二端口,依据所述第二端口使能的QoS策略将所述第一报文的QoS-local-id的值设置为所述第一流表项指示的队列标识符ID的值,将所述第一报文加入到与所述第一报文的Qos-local-id匹配的出端口队列中。

可选的,所述接收单元601还可以用于:通过所述第一端口接收第二报文,所述第二报文不同于所述第一报文。

所述匹配单元602还可以用于:在本地已有流表项中找到与所述第二报文匹配的第二流表项。

所述处理单元603还可以用于:确定所述第二流表项指示的出端口为所述第二端口,依据所述第二端口使能的QoS策略将所述第二报文的QoS-local-id的值设置为所述第二流表项指示的队列ID的值,将所述第二报文加入到与所述第二报文的Qos-local-id匹配的出端口队列中。

其中,所述第一报文的QoS-local-id的值不同于所述第二报文的QoS-local-id的值,因此,所述第一报文和所述第二报文将进入不同的出端口队列,从同一个端口的不同队列发出。

可选的,所述装置还可以包括:

映射单元,用于在所述匹配单元602在本地已有流表项中找到与所述第一报文匹配的第一流表项之前,根据预设的入方向上的优先级映射关系,将所述第一报文携带的初始服务质量QoS优先级映射为本地优先级。以及,在所述匹配单元602在本地已有流表项中找到与所述第一报文匹配的第一流表项之后,根据预设的出方向上的优先级映射关系,将所述第一报文的本地优先级映射为新的QoS优先级,并将所述报文携带的初始QoS优先级替换为所述新的QoS优先级。

可选的,所述第二端口可设置的队列数的范围为1至4095。

可选的,所述流表项由控制器下发到所述转发设备;所述流表项包括用于匹配报文的匹配域,和用于指示在报文与匹配域匹配时将该匹配报文的QoS-local-id的值设置为指定队列ID的值、以及将该匹配报文转发到指定出端口的动作域。

需要说明的是,本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

如图7所示,本申请实施例还提供一种报文处理装置,所述装置包括通信接口701、处理器702、存储器703和总线704;其中,通信接口701、处理器702、存储器703通过总线704完成相互间的通信。

其中,通信接口701,用于与网元通信。处理器702可以是一个中央处理器(CPU),存储器703可以是非易失性存储器(non-volatile memory),并且存储器703中存储有报文处理逻辑指令,处理器702可以执行存储器703中存储的报文处理逻辑指令,以实现上述的报文处理方法中转发设备的功能,参见图2所示的流程。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1