网络装置执行的数据处理方法和相关设备与流程

文档序号:13891403阅读:176来源:国知局
网络装置执行的数据处理方法和相关设备与流程

本发明涉及计算机技术领域,具体涉及一种网络装置执行的数据处理方法和相关设备。



背景技术:

目前,在例如路由器或交换机等报文转发处理设备中,通常使用网络处理器来实现网络报文的转发处理。其中,网络处理器是指专门用于处理网络报文的可编程处理器。网络处理器在内部集成了大量专用电路以用于提高网络报文的处理速度。

根据网络处理器处理报文的实现方式的不同大致可分为两类。第一类网络处理器通常称为执行到完成(英文:run to complete)架构。其中,第一类网络处理器的特点是当网络处理器收到一个网络报文之后,将其分配给一个空闲的处理器核进行转发处理,将处理完成的网络报文发出。换句话说,整个网络报文饿处理在一个处理器核上完成,报文数据在处理过程中不发生移动。第二类网络处理器通常称为流水线架构,这类网络处理器的特点是当接收到1个网络报文之后,将其送入报文处理流水线进行转发处理,其中,整条报文处理流水线通常由多级处理电路构成,每级处理电路可通过编程完成特定的一个或者多个基本处理动作。在处理过程中,中间数据会沿着流水线逐级向前传递。其中,协议无关转发机制可以看作是一系列匹配-动作的组合,可非常简单的在流水线架构的网络处理器上实现。

随着报文转发处理设备的处理能力需求不断提高,一条报文处理流水线所能提供的网络报文处理速率已逐渐不能满足需求。此时,现有技术中简单地使用多条流水线来并行处理网络报文,组成并行流水线架构,从而提供更高的报文处理速率。

在对现有技术的研究和实践过程中发明人发现:现有技术中使用并行流水线架构的主要问题是其所消耗的资源(如查表带宽,指令带宽,功耗等)随着并行流水线的数目增加而成比例增加。但是,半导体工艺提升的速度远远不及网络设备带宽需求增长的速度,因而,提供这些资源对于芯片的实现来说是极大的挑战。



技术实现要素:

本发明实施例提供网络装置执行的数据处理方法和相关设备,以期提高处理资源利用率,降低报文处理复杂度。

第一方面,一种网络装置执行的数据处理方法,所述网络装置包括第一电路组和第二电路组,所述方法包括:

所述第一电路组中的第i处理电路接收第一报文头和数据D(1,i-1),基于所述第一报文头的第一字段得到数据D′(1,i),以及向所述第一电路组中的第i+1处理电路发送所述第一报文头和数据D(1,i);其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到;

所述第一电路组中的第i处理电路向所述第二电路组中的第i+1处理电路发送所述数据D(1,i)

所述第二电路组中的第i处理电路向所述第二电路组中的第i+1处理电路发送第二报文头,其中,所述第二报文头中的第二字段的类型和取值和所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在第一报文头中所处位置相同。

结合第一方面,在第一方面的第一种可能的实施方式中,

所述方法还包括:所述第一电路组中的第i+1处理电路基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1)

所述第一电路组中的第i+1处理电路向所述第二电路组中的第i+1处理电路发送所述指令I(1,i+1)

所述第一电路组中的第i+1处理电路,根据所述指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到;

所述第二电路组中的第i+1处理电路,根据所述指令I(1,i+1)和所述第二报文头得到数据D′(2,i+1),以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,其中,所述数据D(2,i+1)基于所述数据D(1,i)和所述数据D′(2,i+1)得到。

结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,

所述方法还包括:

所述第一电路组中的第i+2处理电路基于所述数据D(1,i+1)中包含的指令I(1,i+2)的标识获取所述指令I(1,i+2),根据所述处理指令I(1,i+2)和所述第一报文头得到数据D′(1,i+2),以及向所述第一电路组中的第i+3处理电路发送所述第一报文头和数据D(1,i+2),其中,所述数据D(1,i+2)基于所述数据D(1,i+1)和所述数据D′(1,i+2)得到;

所述第二电路组中的第i+2处理电路基于所述数据D(2,i+1)中包含的指令I(2,i+2)的标识获取所述指令I(2,i+2),根据所述指令I(2,i+2)和所述第二报文头得到数据D′(2,i+2),以及向所述第二电路组中的第i+3处理电路发送数据D(2,i+2)和所述第二报文头,所述数据D(2,i+2)基于所述数据D(2,i+1)和所述数据D′(2,i+2)得到。

结合第一方面,在第一方面的第三种可能的实施方式中,

所述方法还包括:所述第一电路组中的第i+1处理电路基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1),根据所述处理指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到;

所述第二电路组中的第i+1处理电路基于所述数据D(1,i)包含的指令I(2,i+1)的标识获取所述指令I(2,i+1),根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1);以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,其中,所述数据D(2,i+1)基于所述数据D(1,i)和所述数据D′(2,i+1)得到。

结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施方式中,

所述第一电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元,所述第二电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元;

所述第一电路组中的第i+1处理电路根据所述指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1)包括:所述第一电路组中的第i+1处理电路中的第i+1查表单元通过查表得到数据B(1,i+1);以及,所述第一电路组中的第i+1处理电路中的第i+1指令执行单元通过根据所述指令I(1,i+1)、所述数据B(1,i+1)和所述第一报文头得到所述数据D′(1,i+1)

所述第二电路组中的第i+1处理电路根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1)包括:所述第二电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(2,i+1);以及,所述第二电路组中的第i+1处理电路中的第i+1指令执行单元根据所述指令I(2,i+1)、所述数据B(2,i+1)和所述第二报文头得到数据D′(2,i+1)

结合第一方面的第四种可能的实施方式,在第一方面的第五种可能的实施方式中,,所述网络装置还包括聚合器和查表引擎;其中,所述第一电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(1,i+1),包括:所述第一电路组中的第i+1处理电路中的第i+1查表单元向所述聚合器发送查表请求Q(1,i+1),以及接收所述聚合器反馈的所述数据B(1,i+1)

其中,所述第二电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(2,i+1),包括:所述第二电路组中的第i+1处理电路中的第i+1查表单元向所述聚合器发送查表请求Q(2,i+1),所述第二电路组中的第i+1处理电路中的第i+1查表单元接收所述聚合器反馈的所述数据B(2,i+1)

其中,所述方法还包括:

所述聚合器在接收到所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)之后,向所述查表引擎发送所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1),接收所述查表引擎响应所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1)而发送的所述数据B(2,i+1),向所述第一电路组中的第i+1处理电路中的第i+1查表单元反馈数据B(1,i+1),向所述第二电路组中的第i+1处理电路中的第i+1查表单元反馈数据B(2,i+1),其中,所述数据B(2,i+1)和所述数据B(1,i+1)相同,所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)包含的查表键值相同。

结合第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式或第一方面的第四种可能的实施方式或第一方面的第五种可能的实施方式,在第一方面的第六种可能的实施方式中,

所述网络装置还包括仲裁器;所述方法还包括:所述仲裁器在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的类型和/或取值,不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的类型和/或取值时,向所述第一电路组中的第i处理电路发送数据共享指示;

其中,所述第一电路组中的第i处理电路向所述第二电路组中的第i+1处理电路发送所述数据D(1,i),包括:

响应于所述数据共享指示,所述第一电路组中的第i处理电路向所述第二电路组中的第i+1处理电路发送所述数据D(1,i)

第二方面,一种网络装置执行的处理数据方法,所述网络装置包括第一电路组和第二电路组,所述方法包括:

所述第一电路组中的第i处理电路接收第一报文头和数据D(1,i-1),基于所述数据D(1,i-1)中包含的指令I(1,i)的标识获取所述指令I(1,i),以及向所述第二电路组中的第i处理电路发送所述指令I(1,i)

所述第一电路组中的第i处理电路根据所述指令I(1,i)和所述第一报文头得到数据D′(1,i)

所述第一电路组中的第i处理电路向所述第一电路组中的第i+1处理电路发送数据D(1,i)和所述第一报文头,其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到;

所述第二电路组中的第i处理电路接收第二报文头和数据D(2,i-1),根据所述指令I(1,i)和所述第二报文头得到数据D′(2,i),以及向所述第二电路组中的第i+1处理电路发送数据D(2,i)和所述第二报文头,其中,所述数据D(2,i)基于所述数据D′(2,i)和所述数据D(2,i-1)得到。

结合第二方面,在第一种可能的实施方式中,

所述方法还包括:所述第一电路组中的第i+1处理电路基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1),根据所述处理指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到;

所述第二电路组中的第i+1处理电路基于所述数据D(2,i)包含的指令I(2,i+1)的标识获取所述指令I(2,i+1),根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1);以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,其中,所述数据D(2,i+1)基于所述数据D(2,i)和所述数据D′(2,i+1)得到。

结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,

所述第一电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元,所述第二电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元;

所述第一电路组中的第i+1处理电路根据所述指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1)包括:所述第一电路组中的第i+1处理电路中的第i+1查表单元通过查表得到数据B(1,i+1);以及,所述第一电路组中的第i+1处理电路中的第i+1指令执行单元通过根据所述指令I(1,i+1)、所述数据B(1,i+1)和所述第一报文头得到所述数据D′(1,i+1)

所述第二电路组中的第i+1处理电路根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1)包括:所述第二电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(2,i+1);以及,所述第二电路组中的第i+1处理电路中的第i+1指令执行单元根据所述指令I(2,i+1)、所述数据B(2,i+1)和所述第二报文头得到数据D′(2,i+1)

结合第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施方式中,

所述网络装置还包括聚合器和查表引擎;其中,所述第一电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(1,i+1),包括:所述第一电路组中的第i+1处理电路中的第i+1查表单元向所述聚合器发送查表请求Q(1,i+1),以及接收所述聚合器反馈的所述数据B(1,i+1)

其中,所述第二电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(2,i+1)包括:所述第二电路组中的第i+1处理电路中的第i+1查表单元向所述聚合器发送查表请求Q(2,i+1),接收所述聚合器反馈的所述数据B(2,i+1)

其中,所述方法还包括:所述聚合器在接收到所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)后,向所述查表引擎发送所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1),接收所述查表引擎响应所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1)发送的所述数据B(2,i+1),其中,所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)包含的查表键值相同,所述数据B(1,i+1)和所述数据B(2,i+1)相同。

结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,所述网络装置还包括仲裁器;

所述方法还包括:所述仲裁器在确定所述数据D(1,i-1)中包含的指令I(1,i)的标识与所述数据D(2,i-1)中包含的指令I(2,i)的标识相同时,向所述第一电路组中的第i处理电路发送指令共享指示;

所述向所述第二电路组中的第i处理电路发送所述指令I(1,i)包括:响应于所述指令共享指示,所述第一电路组中的第i处理电路向所述第二电路组中的第i处理电路发送所述指令I(1,i)

第三方面,一种网络装置,所述网络装置包括第一电路组和第二电路组,

其中,所述第一电路组中的第i处理电路,用于接收第一报文头和数据D(1,i-1),基于所述第一报文头的第一字段得到数据D′(1,i),以及向所述第一电路组中的第i+1处理电路发送所述第一报文头和数据D(1,i);其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到;

所述第一电路组中的第i处理电路还用于,向所述第二电路组中的第i+1处理电路发送所述数据D(1,i)

所述第二电路组中的第i处理电路,用于向所述第二电路组中的第i+1处理电路发送第二报文头,其中,所述第二报文头中的第二字段的类型和取值和所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在第一报文头中所处位置相同。

结合第三方面,在第三方面的第一种可能的实施方式中,所述第一电路组中的第i+1处理电路,用于基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1)

所述第一电路组中的第i+1处理电路还用于,向所述第二电路组中的第i+1处理电路发送所述指令I(1,i+1)

所述第一电路组中的第i+1处理电路还用于,根据所述指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到;

所述第二电路组中的第i+1处理电路,用于根据所述指令I(1,i+1)和所述第二报文头得到数据D′(2,i+1),以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,所述数据D(2,i+1)基于所述数据D(1,i)和所述数据D′(2,i+1)得到。

结合第三方面的第一种可能的实施方式,在第三方面的第二种可能的实施方式中,

所述第一电路组中的第i+2处理电路,用于基于所述数据D(1,i+1)中包含的指令I(1,i+2)的标识获取所述指令I(1,i+2),根据所述处理指令I(1,i+2)和所述第一报文头得到数据D′(1,i+2),以及向所述第一电路组中的第i+3处理电路发送所述第一报文头和数据D(1,i+2),其中,所述数据D(1,i+2)基于所述数据D(1,i+1)和所述数据D′(1,i+2)得到;

所述第二电路组中的第i+2处理电路,用于基于所述数据D(2,i+1)中包含的指令I(2,i+2)的标识获取所述指令I(2,i+2),根据所述指令I(2,i+2)和所述第二报文头得到数据D′(2,i+2),以及向所述第二电路组中的第i+3处理电路发送数据D(2,i+2)和所述第二报文头,其中,所述数据D(2,i+2)基于所述数据D(2,i+1)和所述数据D′(2,i+2)得到。

结合第三方面,在第三方面的第三种可能的实施方式中,

所述第一电路组中的第i+1处理电路,用于基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1),根据所述处理指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到;

所述第二电路组中的第i+1处理电路,用于基于所述数据D(1,i)包含的指令I(2,i+1)的标识获取所述指令I(2,i+1),根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1);以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,所述数据D(2,i+1)基于所述数据D(1,i)和所述数据D′(2,i+1)得到。

结合第三方面的第三种可能的实施方式,在第三方面的第四种可能的实施方式中,

所述第一电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元,所述第二电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元;

所述第一电路组中的第i+1处理电路中的第i+1查表单元,用于通过查表得到数据B(1,i+1);所述第一电路组中的第i+1处理电路中的第i+1指令执行单元用于通过根据所述指令I(1,i+1)、所述数据B(1,i+1)和所述第一报文头得到所述数据D′(1,i+1)

所述第二电路组中的第i+1处理电路中的第i+1查表单元,用于查表得到数据B(2,i+1)

所述第二电路组中的第i+1处理电路中的第i+1指令执行单元用于根据所述指令I(2,i+1)、所述数据B(2,i+1)和所述第二报文头得到数据D′(2,i+1)

结合第三方面的第四种可能的实施方式,在第三方面的第五种可能的实施方式中,所述网络装置还包括聚合器和查表引擎;其中,所述第一电路组中的第i+1处理电路中的第i+1查表单元,用于向所述聚合器发送查表请求Q(1,i+1),以及接收所述聚合器反馈的所述数据B(1,i+1)

所述第二电路组中的第i+1处理电路中的第i+1查表单元,用于向所述聚合器发送查表请求Q(2,i+1),以及接收所述聚合器反馈的所述数据B(2,i+1)

所述聚合器,用于在接收到所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)之后,向所述查表引擎发送所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1),接收所述查表引擎响应所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1)而发送的所述数据B(2,i+1),向所述第一电路组中的第i+1处理电路中的第i+1查表单元反馈数据B(1,i+1),向所述第二电路组中的第i+1处理电路中的第i+1查表单元反馈数据B(2,i+1),其中,所述数据B(2,i+1)和所述数据B(1,i+1)相同,所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)包含的查表键值相同。

结合第三方面或第三方面的第一种可能的实施方式或第三方面的第二种可能的实施方式或第三方面的第三种可能的实施方式或第三方面的第四种可能的实施方式或第三方面的第五种可能的实施方式,在第三方面的第六种可能的实施方式中,所述网络装置还包括仲裁器;

所述仲裁器用于,在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的类型和/或取值,不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的类型和/或取值时,向所述第一电路组中的第i处理电路发送数据共享指示;

所述第一电路组中的第i处理电路用于响应于所述数据共享指示,向所述第二电路组中的第i+1处理电路发送所述数据D(1,i)

第四方面,一种网络装置,所述网络装置包括第一电路组和第二电路组,其中,所述第一电路组中的第i处理电路,用于接收第一报文头和数据D(1,i-1),基于所述数据D(1,i-1)中包含的指令I(1,i)的标识获取所述指令I(1,i),以及向所述第二电路组中的第i处理电路发送所述指令I(1,i)

所述第一电路组中的第i处理电路还用于,根据所述指令I(1,i)和所述第一报文头得到数据D′(1,i)

所述第一电路组中的第i处理电路还用于,向所述第一电路组中的第i+1处理电路发送数据D(1,i)和所述第一报文头,其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到;

其中,所述第二电路组中的第i处理电路,用于接收第二报文头和数据D(2,i-1),根据所述指令I(1,i)和所述第二报文头得到数据D′(2,i),以及向所述第二电路组中的第i+1处理电路发送数据D(2,i)和所述第二报文头,其中,所述数据D(2,i)基于所述数据D′(2,i)和所述数据D(2,i-1)得到。

结合第四方面,在第四方面的第一种可能的实施方式,所述第一电路组中的第i+1处理电路,用于基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1),根据所述处理指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到;

所述第二电路组中的第i+1处理电路,用于基于所述数据D(2,i)包含的指令I(2,i+1)的标识获取所述指令I(2,i+1),根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1);以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,所述数据D(2,i+1)基于所述数据D(2,i)和所述数据D′(2,i+1)得到。

结合第四方面的第一种可能的实施方式,在第四方面的第二种可能的实施方式中,

所述第一电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元,所述第二电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元;

所述第一电路组中的第i+1处理电路中的第i+1查表单元,用于通过查表得到数据B(1,i+1);以及,所述第一电路组中的第i+1处理电路中的第i+1指令执行单元,用于通过根据所述指令I(1,i+1)、所述数据B(1,i+1)和所述第一报文头得到所述数据D′(1,i+1)

所述第二电路组中的第i+1处理电路中的第i+1查表单元,用于查表得到数据B(2,i+1);以及,

所述第二电路组中的第i+1处理电路中的第i+1指令执行单元,用于根据所述指令I(2,i+1)、所述数据B(2,i+1)和所述第二报文头得到数据D′(2,i+1)

结合第四方面的第二种可能的实施方式,在第四方面的第三种可能的实施方式中,所述网络装置还包括聚合器和查表引擎;其中,所述第一电路组中的第i+1处理电路中的第i+1查表单元,用于向所述聚合器发送查表请求Q(1,i+1),以及接收所述聚合器反馈的所述数据B(1,i+1)

其中,所述第二电路组中的第i+1处理电路中的第i+1查表单元,用于向所述聚合器发送查表请求Q(2,i+1),接收所述聚合器反馈的所述数据B(2,i+1)

其中,所述聚合器,用于在接收到所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)后,向所述查表引擎发送所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1),接收所述查表引擎响应所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1)发送的所述数据B(2,i+1),其中,所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)包含的查表键值相同,所述数据B(1,i+1)和所述数据B(2,i+1)相同。

结合第四方面或第四方面的第一种可能的实施方式或第四方面的第二种可能的实施方式或第四方面的第三种可能的实施方式,在第四方面的第四种可能的实施方式中,所述网络装置还包括仲裁器;

所述仲裁器,用于在确定所述数据D(1,i-1)中包含的指令I(1,i)的标识与所述数据D(2,i-1)中包含的指令I(2,i)的标识相同时,向所述第一电路组中的第i处理电路发送指令共享指示;

所述第二电路组中的第i处理电路用于响应于所述指令共享指示,向所述第二电路组中的第i处理电路发送所述指令I(1,i)

可以看出,本发明的一些实施方式中,当第二报文头中的第二字段和所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在所述第一报文头中所处位置相同。因此如果使用相同的处理方式分别对第一字段和第二字段进行处理,则第一字段对应的处理结果与第二字段对应的处理结果相同。第一电路组中的第i处理电路接收第一报文头和数据D(1,i-1),基于所述第一报文头的第一字段得到数据D′(1,i),以及向所述第一电路组中的第i+1处理电路发送所述第一报文头和数据D(1,i)。第二电路组中的第i处理电路不需要根据与第一电路组中的第i处理电路处理第一报文头中的第一字段的处理方式相同的处理方式对第二报文头中的第二字段进行处理。第二电路组中的第i+1处理电路通过接收第一电路组中的第i处理电路发送的数据D(1,i)获得数据D(1,i)。也就是说,通过上述电路组之间的处理结果共享机制,使得第二电路组可以获得第一电路组提供的处理结果。因此,第二电路组中的第i处理电路可以在特定条件下处于空闲状态(不需要对第二报文头中的第二字段进行处理)。因此,上述技术方案有利于降低功耗,节约资源。有利于提高报文处理的效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1-a是本发明实施例提供的一种网络装置的架构示意图;

图1-b是本发明实施例提供的一种网络装置的架构示意图;

图1-c是本发明实施例提供的一种网络装置的架构示意图;

图1-d是本发明实施例提供的一种网络装置的架构示意图;

图1-e是本发明实施例提供的一种网络装置的架构示意图;

图2是本发明实施例提供的一种网络装置执行的数据处理方法的流程示意图;

图3-a是本发明实施例提供的一种电路组之间状态迁移的示意图;

图3-b~图3-e是本发明实施例提供的另一电路组之间状态迁移的示意图;

图3-f是本发明实施例提供的一种查表聚合的示意图;

图3-g是本发明实施例提供的一种查表聚合失败的示意图;

图4是本发明实施例提供的另一种网络装置执行的数据处理方法的流程示意图;

图5是本发明实施例提供的另一种网络装置的示意图;

图6是本发明实施例提供的报文头的示意图;

图7是本发明实施例提供的另一种网络装置的示意图;

图8是本发明实施例提供的另一种网络装置的示意图。

具体实施方式

本发明实施例提供网络装置执行的数据处理方法和相关设备,以期提高处理资源利用率,降低报文处理复杂度。

下面通过具体实施例,分别进行详细的说明。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

请参见图1-a、图1-b、图1-c、图1-d和图1-e,图1-a、图1-b、图1-c、图1-d和图1-e为本发明实施例提供的几种网络装置的架构示意图。

其中,图1-a所示出的网络装置包括k个电路组,每个电路组包括串联的多级处理电路,其中,k为大于1的正整数,例如k可等于2、3、5、8、10、20或其他值。

其中,图1-b所示出的网络装置在图1-a所示架构的基础上,进一步包括报文收集器。假设网络装置的峰值处理能力是每一时钟周期处理k个报文。当网络装置非满负荷工作时,每一时钟周期收到的报文数量不定,其范围为0-k个报文。对于至少两个电路组来说,若每一时钟收到的报文数量少于k个,实现数据共享或指令共享的可能性会降低。报文收集器可用于将稀疏到达的报文聚合在一起送出,从而提高报文数据共享或指令共享的可能性。报文收集器可包括报文输入控制电路、报文缓存器和报文输出控制电路。其中,报文输入控制电路用于将报文按照顺序写入报文缓存器,而报文输出控制电路用于根据设定的输出规则将报文读出缓存。例如可将报文收集器可以看作是一个智能的先入先出队列(英文:First Input First Output,缩写:FIFO)。

其中,图1-c所示出的网络装置在图1-b所示架构的基础上,进一步包括报文解析器,其中,报文解析器可用于对报文收集器输出的报文进行解析以获得各报文各自的长度和各报文之间一致性长度等信息。

其中,图1-d所示出的网络装置在图1-c所示架构的基础上,进一步包括报文组装器,其中,报文组装器可基于k个电路组处理得到的数据对报文进行组装得到待转发的报文。其中,图1-d示出报文组装器为一个。图1-e示出报文组装器可为多个,例如k个,k个电路组和k个报文组装器一一对应,当然至少两个电路组亦可共有一个报文组装器。当然,也可将报文组装器看做是k个电路组的最后一级处理电路。

其中,本发明实施例的一些方案可以基于上述架构或上述架构的变形架构或演进架构来具体实施。

为便于更好的理解本发明思路,下面结合图1-f进行说明。图1-f示出一个路由器包括两个电路组,每个电路组包括3级处理电路。其中,假设报文头a1和报文头a2分别输入两个电路组的第1级处理电路,而第1级处理电路将其处理得到的数据和报文头发送到第2级处理电路,第2级处理电路将其处理得到的数据和报文头发送到了第3级处理电路,第3级处理电路将其处理得到的数据和报文头发出。当报文头a1和报文头a2从起始位置存在一定长度的完全相同数据,那么两个电路组的第1级处理电路处理得到的数据就可能是完全相同,甚至两个电路组的第2级处理电路或第3级处理电路处理得到的数据也可能是完全相同,此时,就存在两组处理电路在其某一级或多个级处理电路共享处理结果的可能。

需要说明的是,如无相反的说明,本发明实施例涉及到的数据D(x1,x2)、数据D′(x1,x2)、数据B(x1,x2)、指令I(x1,x2)以及查表请求Q(x1,x2)具有如下含义:

其中,数据D′(x1,x2)是指第x1电路组中的第x2处理电路基于接收到的报文头得到的数据。例如,数据D′(1,2)是第1电路组中的第2处理电路基于接收到的报文头得到的数据。

其中,数据D(x1,x2)是指第x1电路组中的第x2处理电路基于数据D′(x1,x2)和来自第x1电路组中的第x2-1处理电路提供的数据D(x1,x2-1)或其他电路组中的第x2-1处理电路提供的数据得到的数据。例如D(2,3)是指第2电路组中的第3处理电路基于数据D′(2,3)和来自第2电路组中的第2处理电路提供的数据D(2,2)或其他电路组中的第2处理电路提供的数据得到的数据。

其中,指令I(x1,x2)是指第x1电路组中的第x2处理电路得到数据D′(x1,x2)所执行的指令。例如,指令I(1,2)是指第1电路组中的第2处理电路得到数据D′(1,2)所执行的指令。

其中,查表请求Q(x1,x2)是指第x1电路组中的第x2处理电路所发出的查表请求。例如,查表请求Q(1,3)是指第1电路组中的第3处理电路所发出的查表请求。

其中,数据B(x1,x2)是指第x1电路组中的第x2处理电路接收到的响应于第x1电路组中的第x2处理电路所发出的查表请求的查表响应。例如,数据B(1,3)是指第1电路组中的第3处理电路接收到的响应于第1电路组中的第3处理电路所发出的查表请求Q(1,3)的查表响应。

需要说明,本发明实施例涉及到的第y字段可能只包括一个字段,也可能包括多个字段。例如第一字段可能只包括报文头中的1个字段,也可能包括报文头中的连续或非连续的多个字段。第二字段可能只包括报文头中的1个字段,也可能包括报文头中连续或非连续的多个字段。例如,第一字段可以是网际协议(英文:internet protocol,简称:IP)头中的目的IP地址字段。第一字段也可以是IP头中的源IP地址字段以及目的IP地址字段。第一字段也可以是IP头中的源IP地址字段、目的IP地址字段和协议字段,以及传输控制协议(英文:transmission control protocol,简称:TCP)头中的源端口字段和目的端口字段。第一字段也可以包括IP头中的全部字段,第一字段可包括IP头和TCP头中的全部字段等。其中,第二字段例如可为IP头中的目的IP地址字段。第二字段也可以是IP头中的源IP地址字段以及目的IP地址字段。第二字段也可以是IP头中的源IP地址字段、目的IP地址字段和协议字段,以及TCP头中的源端口字段和目的端口字段。第二字段也可以包括IP头中的全部字段。第二字段也可以包括IP头和TCP头中的全部字段等。

如无相反的说明,本发明实施例涉及到的网络装置可以是路由器、网络交换机、分组传送网(英文:packet transport network,简称:PTN)设备、防火墙、负载均衡器、数据中心或者波分复用(英文:wavelength-division multiplexing,简称:WDM)设备。所述网络交换机可以是开放流交换机(英文:OpenFlow Switch)。另外,本发明实施例涉及到的网络装置也可以是处理器。所述处理器可以网络处理器(英文:network processor,简称:NP)。所述NP可以是路由器、网络交换机、PTN设备、防火墙、负载均衡器、数据中心或者WDM设备中的部件。所述NP可以通过专用集成电路(英文:application specific integrated circuit,简称:ASIC)、专用指令集处理器(英文:application specific instruction set processor,简称:ASIP)或者现场可编程门阵列(英文:field programmable gate array,简称:FPGA)实现。

参见图2,图2为本发明的一个实施例提供的一种网络装置执行的数据处理方法的流程示意图,其中,所述网络装置包括第一电路组和第二电路组。参见图2,所述方法包括:

201、第一电路组中的第i处理电路接收第一报文头和数据D(1,i-1),基于所述第一报文头的第一字段得到数据D′(1,i),以及向所述第一电路组中的第i+1处理电路发送所述第一报文头和数据D(1,i);其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到。

第一报文头是第一报文的报文头。其中,第一报文头可只包括第一报文的外层头。或者,第一报文头可包括第一报文的外层头和至少一个内层头。例如,第一报文为IP报文,第一报文头可包括IP头。或者,第一报文头可包括IP头,以及TCP头。或者,第一报文头可包括IP头,以及用户数据报协议(英文:user datagram protocol,简称:UDP)头。又例如,第一报文为以太网帧(英文:ethernet frame)。第一报文头可包括媒体访问控制(英文:media access control,简称:MAC)头。或者,第一报文头可包括MAC头和IP头。或者,第一报文头可包括MAC头、多协议标记交换(英文:multiprotocol label switching,简称:MPLS)头和IP头,或者第一报文头可包括MAC头、MPLS头和IP头,以及TCP头或UDP头。

第二报文头是第二报文的报文头。类似的,第二报文头可只包括第二报文的外层头。或者,第二报文头可包括第二报文的外层头和至少一个内层头。例如,第二报文为IP报文,第二报文头可包括IP头。或者,第二报文头可包括IP头以及TCP头。或者,第二报文头可包括IP头以及UDP头。又例如第二报文为以太网帧。第二报文头可包括MAC头。或者,第二报文头可包括MAC头和IP头。或者,第二报文头可包括MAC头、MPLS头和IP头。或者第二报文头可包括MAC头、MPLS头、IP头以及TCP头。或者,第二报文头可包括MAC头、MPLS头、IP头以及UDP头。

其中,基于所述第一报文头的第一字段得到数据D′(1,i)可包括:根据所述第一报文头的第一字段得到数据D′(1,i),数据D′(1,i)等于第一字段的值。或者,根据所述第一报文头的第一字段得到数据D′(1,i),数据D′(1,i)等于以所述第一报文头的第一字段的值作为函数的参数得到的所述函数的值。所述函数可以是哈希运算、取整运算或者取余运算。或者,根据所述第一报文头的第一字段得到数据D′(1,i),数据D′(1,i)等于通过以所述第一报文头的第一字段的值为查表键值(英文:search key)进行查找操作得到的查找结果。

其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到具体可能是,通过将所述数据D′(1,i)与所述数据D(1,i-1)合并得到数据D(1,i)。或者也可能是删除所述数据D(1,i-1)中的部分数据,通过将所述数据D′(1,i)与被删除了部分数据的所述数据D(1,i-1)合并得到数据D(1,i)。或者,也可能是以所述数据D(1,i-1)和所述数据D′(1,i)作为函数的参数,所述函数的值等于数据D(1,i)。所述函数可以是哈希运算、取整运算或者取余运算。

202、所述第一电路组中的第i处理电路向所述第二电路组中的第i+1处理电路发送所述数据D(1,i)

203、所述第二电路组中的第i处理电路向所述第二电路组中的第i+1处理电路发送第二报文头。

i为正整数。可以理解,第一电路组中的第i处理电路可能是第一电路组中的第1处理电路、第2处理电路或第3处理电路。第二电路组中的第i处理电路可能是第二电路组中的第1处理电路、第2处理电路或第3处理电路。其中,上述第一电路组和上述第二电路组可为所述网络装置中的任意两个电路组。

所述第一电路组包括第1处理电路至第i+1处理电路。第1处理电路是所述第一电路组中的起始处理电路。在当前处理电路是所述第一电路组中的中间处理电路的场景中,当前处理电路能够接收前一处理电路发送的数据。当前处理电路能够向后一处理电路发送数据。例如,如果当前处理电路是第2处理电路,则第2处理电路能够接收第1处理电路发送的数据。第2处理电路能够向第3处理电路发送数据。

所述第二电路组包括第1处理电路至第i+1处理电路。第1处理电路是所述第一电路组中的起始处理电路。在当前处理电路是所述第一电路组中的中间处理电路的场景中,当前处理电路能够接收前一处理电路发送的数据。当前处理电路能够向后一处理电路发送数据。例如,如果当前处理电路是第2处理电路,则第2处理电路能够接收第1处理电路发送的数据。第2处理电路能够向第3处理电路发送数据。

其中,所述第二报文头中的第二字段的类型和取值与所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在所述第一报文头中所处位置相同。

例如,所述第二报文头中的第二字段相对于所述第二报文头的起始位置的偏移量,等于所述第一报文头中的第一字段相对于所述第一报文头的起始位置的偏移量,具体例如,所述第二报文头中的第二字段的最高有效位(英文:most significant bit,简称:MSB)相对于所述第二报文头的起始位置的偏移量为50字节,所述第一报文头中的第一字段的MSB相对于所述第一报文头的起始位置的偏移量也为50字节。或者,所述第二报文头中的第二字段相对于所述第二报文头的结束位置的偏移量,等于所述第一报文头中的第一字段相对于所述第一报文头的结束位置的偏移量。例如,所述第二报文头中的第二字段的MSB相对于所述第二报文头的结束位置的偏移量为65字节。所述第一报文头中的第一字段的MSB相对于所述第一报文头的结束位置的偏移量也为65字节。

举例来说,所述第一报文中第一数据等于所述第二报文中的第二数据。所述第一数据是所述第一报文头的MSB至所述第一字段的最低有效位(1east significant bit,英文:LSB)的数据。所述第二数据是所述第二报文头的MSB至所述第二字段的LSB的数据。

可以看出,本实施例中当第二报文头中的第二字段和所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在所述第一报文头中所处位置相同。因此,如果使用相同的处理方式分别对第一字段和第二字段进行处理,则第一字段对应的处理结果与第二字段对应的处理结果相同。第一电路组中的第i处理电路接收第一报文头和数据D(1,i-1),基于所述第一报文头的第一字段得到数据D′(1,i),以及向所述第一电路组中的第i+1处理电路发送所述第一报文头和数据D(1,i)。第二电路组中的第i处理电路不需要根据与第一电路组中的第i处理电路处理第一报文头中的第一字段的处理方式相同的处理方式对第二报文头中的第二字段进行处理。第二电路组中的第i+1处理电路通过接收第一电路组中的第i处理电路发送的数据D(1,i)获得数据D(1,i)。也就是说,通过上述电路组之间的处理结果共享机制,使得第二电路组可以获得第一电路组提供的处理结果。因此,第二电路组中的第i处理电路可以在特定条件下处于空闲状态(不需要对第二报文头中的第二字段进行处理)。因此,上述技术方案有利于降低功耗,节约资源。有利于提高报文处理的效率。

参见图3-a,图3-a为数据共享状态、指令共享状态和无共享状态之间的状态迁移示意图。例如第一电路组和第二电路组可能从数据共享状态迁移到指令共享状态或无共享状态。第一电路组和第二电路组也可能从指令共享状态迁移到无共享状态。第一电路组和第二电路组之间也可能一直保持数据共享状态、指令共享状态或无共享状态。本申请涉及的数据共享状态是指两个电路组中,一个电路组中的某级处理电路需要根据报文头中字段获得中间数据,另一个电路组中的处于同一级的处理电路不需要执行根据报文头中字段获得中间数据的操作。例如,第一电路组中的第m处理电路需要根据报文头中字段获得中间数据,第二电路组中的第m处理电路不需要执行根据报文头中字段获得中间数据的操作。另外,两个电路组中,一个电路组中的某级处理电路获得了另一个电路组提供的共享数据,则表明数据共享状态在该级处理电路终结。例如,第二电路组中的第m+1处理电路接收到第一电路组中的第m处理电路发送的共享数据,则表明第一电路组和第二电路组的数据共享状态在第m+1处理电路(对应第m+1级处理电路)终结。

参见图3-b~图3-e,图3-b~图3-e示出了在不同时刻四个电路组(从上到下的四行方框分别对应第一电路组至第四电路组)在数据共享状态、指令共享状态和无共享状态之间的迁移方式。其中,实线表示数据共享状态。虚线表示指令共享状态。黑框表示当前接收到报文头的处理电路。图3-b示出在四个电路组的第1级处理电路处于数据共享状态。图3-c示出在四个电路组的第2级处理电路可处于指令共享状态(具体可以是第一电路组可将第一电路组获得的指令共享给第三电路组或第四电路组)。第一电路组和第二电路组的第2级处理电路可处于数据共享状态(在数据共享状态,第一电路组执行基于接收到的报文头获得数据D(1,1),第二电路组不执行基于接收到的报文头获得数据D(1,1))。第三电路组和第四电路组的第2级处理电路可处于数据共享状态(在数据共享状态,第三电路组执行基于接收到的报文头获得数据D(1,1),第四电路组不执行基于接收到的报文头获得数据D(1,1))。图3-d示出四个电路组的第3级处理电路处于指令共享状态(具体可以是第四电路组将第四电路组获得的指令共享给第一电路组至第三电路组)。图3-e示出在四个电路组的第4级处理电路处于无共享状态。

可选的,所述网络装置还可包括仲裁器。其中,仲裁器可判决第一电路组和第二电路组是否保持数据共享状态、指令共享状态或者无共享状态。仲裁器也可判决第一电路组和第二电路组是否从数据共享状态,迁移到指令共享状态或无共享状态,或从指令共享状态迁移到无共享状态。当然,仲裁器亦可能集成到第一电路组和第二电路组的每个处理电路中。

可选的,数据处理方法还可包括:所述仲裁器在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的类型,不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的类型时,向所述第一电路组中的第i处理电路发送数据共享指示。或者,所述仲裁器在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的取值,不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的取值时,向所述第一电路组中的第i处理电路发送数据共享指示。或者,所述仲裁器在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的类型不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的类型,并且所述仲裁器在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的取值不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的取值时,向所述第一电路组中的第i处理电路发送数据共享指示。其中,所述第一电路组中的第i处理电路向所述第二电路组中的第i+1处理电路发送所述数据D(1,i),可包括:响应于所述数据共享指示,所述第一电路组中的第i处理电路向所述第二电路组中的第i+1处理电路发送所述数据D(1,i)

进一步的,数据处理方法可进一步包括:所述第一电路组中的第i+1处理电路基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1)。所述第一电路组中的第i+1处理电路向所述第二电路组中的第i+1处理电路发送所述指令I(1,i+1)。所述第一电路组中的第i+1处理电路,根据所述指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头。其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到。其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到具体可能是,将所述数据D′(1,i+1)与所述数据D(1,i)合并得到数据D(1,i+1)。或者也可能删除所述数据D(1,i)中的部分数据,将所述数据D′(1,i+1)与删除部分数据的所述数据D(1,i))合并以得到数据D(1,i+1)。所述第二电路组中的第i+1处理电路,根据所述指令I(1,i+1)和所述第二报文头得到数据D′(2,i+1),以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,其中,所述数据D(2,i+1)基于所述数据D(1,i)和所述数据D′(2,i+1)得到。上述举例场景中,第一电路组和第一电路组从数据共享状态迁移到指令共享状态。在指令共享状态,第一电路组中的第i+1处理电路将获取的指令共享给和第二电路组中的第i+1处理电路。

其中,由于所述第一电路组中的第i+1处理电路和所述第二电路组中的第i+1处理电路实现了指令共享,这样有利于减少所述第二电路组中的第i+1处理电路对取指带宽的占用。当然,假设所述数据D(1,i)中不包含的指令I(1,i+1)的标识,则第一电路组中的第i+1处理电路和所述第二电路组中的第i+1处理电路之间亦可不进行指令共享。

进一步的,数据处理方法可进一步包括:所述第一电路组中的第i+2处理电路基于所述数据D(1,i+1)中包含的指令I(1,i+2)的标识获取所述指令I(1,i+2),根据所述处理指令I(1,i+2)和所述第一报文头得到数据D′(1,i+2),以及向所述第一电路组中的第i+3处理电路发送所述第一报文头和数据D(1,i+2),其中,所述数据D(1,i+2)基于所述数据D(1,i+1)和所述数据D′(1,i+2)得到。所述第二电路组中的第i+2处理电路基于所述数据D(2,i+1)中包含的指令I(2,i+2)的标识获取所述指令I(2,i+2),根据所述指令I(2,i+2)和所述第二报文头得到数据D′(2,i+2),以及向所述第二电路组中的第i+3处理电路发送数据D(2,i+2)和所述第二报文头,所述数据D(2,i+2)基于所述数据D(2,i+1)和所述数据D′(2,i+2)得到。上述举例场景中,第一电路组和第一电路组从指令共享状态迁移到无共享状态,在无共享状态下,第一电路组中的第i+2处理电路和第二电路组中的第i+2处理电路各自独立进行处理。第一电路组中的第i+2处理电路和第二电路组中的第i+2处理电路之间不进行数据共享,也不进行指令共享。

又例如,数据处理方法可进一步包括:所述第一电路组中的第i+1处理电路基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1),根据所述处理指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到。第二电路组中的第i+1处理电路基于所述数据D(1,i)包含的指令I(2,i+1)的标识获取所述指令I(2,i+1),根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1);以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,其中,所述数据D(2,i+1)基于所述数据D(1,i)和所述数据D′(2,i+1)得到。上述举例场景中,第一电路组和第一电路组从数据共享状态迁移到无共享状态,在无共享状态,第一电路组中的第i+1处理电路和第二电路组中的第i+1处理电路各自独立进行处理。第一电路组中的第i+1处理电路和第二电路组中的第i+1处理电路之间不进行数据共享,也不进行指令共享。

可选的,所述第一电路组中的第i+1处理电路可包括第i+1查表单元和第i+1指令执行单元,所述第二电路组中的第i+1处理电路可包括第i+1查表单元和第i+1指令执行单元。当然,第一电路组和第二电路组中的部分或全部处理电路中均可包含查表单元和指令执行单元,例如,第一电路组中的第i处理电路可包括第i查表单元和第i指令执行单元,第一电路组中的第i+2处理电路可包括第i+2查表单元和第i+2指令执行单元,以此类推。

其中,第一电路组中的第i+1处理电路根据所述指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1)可包括:所述第一电路组中的第i+1处理电路中的第i+1查表单元通过查表得到数据B(1,i+1);以及,所述第一电路组中的第i+1处理电路中的第i+1指令执行单元通过根据所述指令I(1,i+1)、所述数据B(1,i+1)和所述第一报文头得到所述数据D′(1,i+1)

所述第二电路组中的第i+1处理电路根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1)包括:所述第二电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(2,i+1);以及,所述第二电路组中的第i+1处理电路中的第i+1指令执行单元根据所述指令I(2,i+1)、所述数据B(2,i+1)和所述第二报文头得到数据D′(2,i+1)

可选的,所述网络装置还包括聚合器和查表引擎;其中,所述第一电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(1,i+1),可包括:所述第一电路组中的第i+1处理电路中的第i+1查表单元向所述聚合器发送查表请求Q(1,i+1),以及接收所述聚合器反馈的所述数据B(1,i+1)

其中,所述第二电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(2,i+1),可包括:所述第二电路组中的第i+1处理电路中的第i+1查表单元向所述聚合器发送查表请求Q(2,i+1),所述第二电路组中的第i+1处理电路中的第i+1查表单元接收所述聚合器反馈的所述数据B(2,i+1)

其中,数据处理方法还可进一步包括:所述聚合器在接收到所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)之后,向所述查表引擎发送所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1),接收所述查表引擎响应所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1)而发送的所述数据B(2,i+1),向所述第一电路组中的第i+1处理电路中的第i+1查表单元反馈数据B(1,i+1),向所述第二电路组中的第i+1处理电路中的第i+1查表单元反馈数据B(2,i+1),其中,所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)包含的查表键值相同其中,所述数据B(2,i+1)和所述数据B(1,i+1)相同。

可以看出,当聚合器收到的多个查表请求包含的查表键值相同,聚合器可将该多个查表请求聚合成一个查表请求,利用该一个查表请求向查表引擎请求查表数据,将查表引擎反馈的查表数据复制多份,分别提供给发起查表请求的个查表单元。参见图3-f,图3-f为聚合器聚合查表请求的一种示意图。由于引入了查表引擎来有条件的聚合查表请求,这样有利于较大的减少查表引擎被访问的次数,有利于尽量避免查表引擎拥塞,减少查表带宽的占用,进而有利于提高查表引擎的响应效率。参见图3-g,图3-g为聚合器聚合查表请求的另一种示意图,图3-g举例示出当聚合器聚合查表请求失败,聚合器透传查表引擎和查表单元之间交互的数据。

参见图4,本发明实施例还提供一种网络装置的处理数据方法,所述网络装置包括第一电路组和第二电路组,处理数据方法包括:

401、第一电路组中的第i处理电路接收第一报文头和数据D(1,i-1),基于所述数据D(1,i-1)中包含的指令I(1,i)的标识获取所述指令I(1,i),以及向所述第二电路组中的第i处理电路发送所述指令I(1,i)

402、第一电路组中的第i处理电路根据所述指令I(1,i)和所述第一报文头得到数据D′(1,i)

例如,第一电路组中的第i处理电路可根据所述指令I(1,i)和所述第一报文头的第一字段得到数据D′(1,i)

403、第一电路组中的第i处理电路向所述第一电路组中的第i+1处理电路发送数据D(1,i)和所述第一报文头,其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到。

404、第二电路组中的第i处理电路接收第二报文头和数据D(2,i-1),根据所述指令I(1,i)和所述第二报文头得到数据D′(2,i),以及向所述第二电路组中的第i+1处理电路发送数据D(2,i)和所述第二报文头,其中,所述数据D(2,i)基于所述数据D′(2,i)和所述数据D(2,i-1)得到。

例如,第二电路组中的第i处理电路可根据所述指令I(1,i)和所述第二报文头的第二字段得到数据D′(1,i)

其中,i为正整数。可以理解,第一电路组中的第i处理电路可能是第一电路组中的第1处理电路、第2处理电路或第3处理电路。第二电路组中的第i处理电路可能是第二电路组中的第1处理电路、第2处理电路或第3处理电路。其中,上述第一电路组和上述第二电路组可为所述网络装置中的任意两个电路组。

所述第一电路组包括第1处理电路至第i+1处理电路。第1处理电路是所述第一电路组中的起始处理电路。在当前处理电路是所述第一电路组中的中间处理电路的场景中,当前处理电路能够接收前一处理电路发送的数据。当前处理电路能够向后一处理电路发送数据。例如,如果当前处理电路是第2处理电路,则第2处理电路能够接收第1处理电路发送的数据。第2处理电路能够向第3处理电路发送数据。

所述第二电路组包括第1处理电路至第i+1处理电路。第1处理电路是所述第一电路组中的起始处理电路。在当前处理电路是所述第一电路组中的中间处理电路的场景中,当前处理电路能够接收前一处理电路发送的数据。当前处理电路能够向后一处理电路发送数据。例如,如果当前处理电路是第2处理电路,则第2处理电路能够接收第1处理电路发送的数据。第2处理电路能够向第3处理电路发送数据。

其中,基于所述第一报文头的第一字段得到数据D′(1,i)可包括:根据所述第一报文头的第一字段得到数据D′(1,i),数据D′(1,i)等于第一字段的值。或者,根据所述第一报文头的第一字段得到数据D′(1,i),数据D′(1,i)等于以所述第一报文头的第一字段的值作为函数的参数得到的所述函数的值。所述函数可以是哈希运算、取整运算或者取余运算。或者,根据所述第一报文头的第一字段得到数据D′(1,i),数据D′(1,i)等于通过以所述第一报文头的第一字段的值为查表键值进行查找操作得到的查找结果。

其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到具体可能是,通过将所述数据D′(1,i)与所述数据D(1,i-1)合并得到数据D(1,i)。或者也可能是删除所述数据D(1,i-1)中的部分数据,通过将所述数据D′(1,i)与被删除了部分数据的所述数据D(1,i-1)合并得到数据D(1,i)。或者,也可能是以所述数据D(1,i-1)和所述数据D′(1,i)作为函数的参数,所述函数的值等于数据D(1,i)。所述函数可以是哈希运算、取整运算或者取余运算等。

第一报文头是第一报文的报文头。其中,第一报文头可只包括第一报文的外层头。或者,第一报文头可包括第一报文的外层头和至少一个内层头。例如,第一报文为IP报文,第一报文头可包括IP头。或者,第一报文头可包括IP头,以及TCP头。或者,第一报文头可包括IP头,以及UDP头。又例如,第一报文为以太网帧。第一报文头可包括MAC头。或者,第一报文头可包括MAC头和IP头。或者,第一报文头可包括MAC头、MPLS头和IP头,或者第一报文头可包括MAC头、MPLS头和IP头,以及TCP头或UDP头。

第二报文头是第二报文的报文头。类似的,第二报文头可只包括第二报文的外层头。或者,第二报文头可包括第二报文的外层头和至少一个内层头。例如,第二报文为IP报文,第二报文头可包括IP头。或者,第二报文头可包括IP头以及TCP头。或者,第二报文头可包括IP头以及UDP头。又例如第二报文为以太网帧。第二报文头可包括MAC头。或者,第二报文头可包括MAC头和IP头。或者,第二报文头可包括MAC头、MPLS头和IP头。或者第二报文头可包括MAC头、MPLS头、IP头以及TCP头。或者,第二报文头可包括MAC头、MPLS头、IP头以及UDP头。

可以看出,本实施例中第一电路组中的第i处理电路将指令I(1,i)共享给第二电路组中的第i处理电路,使得第二电路组中的第i处理电路可根据所述指令I(1,i)和接收到的第二报文头得到数据D′(2,i)。由于引入了电路组之间共享指令的机制,使得网络装置中的一些电路组中的部分处理电路可以免于从其指令内存中读取指令,这样就有利于降低指令内存的占用率,减少取指带宽的占用。这样也有利于提高资源利用率,也有利于降低报文转发处理复杂度。

可选的,所述网络装置还可包括仲裁器,其中,仲裁器可判决第一电路组和第二电路组是否保持指令共享状态或无共享状态,仲裁器也可判决第一电路组和第二电路组是否从指令共享状态迁移到无共享状态。当然,仲裁器亦可能集成到第一电路组和第二电路组的每个处理电路中。

所述处理数据方法还包括:所述仲裁器在确定所述数据D(1,i-1)中包含的指令I(1,i)的标识与所述数据D(2,i-1)中包含的指令I(2,i)的标识相同时,向所述第一电路组中的第i处理电路发送指令共享指示。其中,所述向所述第二电路组中的第i处理电路发送所述指令I(1,i)可包括:响应于所述指令共享指示,所述第一电路组中的第i处理电路向所述第二电路组中的第i处理电路发送所述指令I(1,i)

进一步的,所述处理数据方法还包括:所述第一电路组中的第i+1处理电路基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1),根据所述处理指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到。第二电路组中的第i+1处理电路基于所述数据D(2,i)包含的指令I(2,i+1)的标识获取所述指令I(2,i+1),根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1);以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,其中,所述数据D(2,i+1)基于所述数据D(2,i)和所述数据D′(2,i+1)得到。上述举例场景中,第一电路组和第一电路组从指令共享状态迁移到无共享状态,在无共享状态下,第一电路组中的第i+2处理电路和第二电路组中的第i+2处理电路各自独立进行处理。第一电路组中的第i+2处理电路和第二电路组中的第i+2处理电路之间不进行数据共享,也不进行指令共享。

可选的,所述第一电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元,所述第二电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元。当然,第一电路组和第二电路组中的部分或全部处理电路中均可包含查表单元和指令执行单元,例如,第一电路组中的第i处理电路可包括第i查表单元和第i指令执行单元,第一电路组中的第i+2处理电路可包括第i+2查表单元和第i+2指令执行单元,以此类推。

所述第一电路组中的第i+1处理电路根据所述指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1)包括:所述第一电路组中的第i+1处理电路中的第i+1查表单元通过查表得到数据B(1,i+1);以及,所述第一电路组中的第i+1处理电路中的第i+1指令执行单元通过根据所述指令I(1,i+1)、所述数据B(1,i+1)和所述第一报文头得到所述数据D′(1,i+1)

所述第二电路组中的第i+1处理电路根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1),包括:所述第二电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(2,i+1);以及,所述第二电路组中的第i+1处理电路中的第i+1指令执行单元根据所述指令I(2,i+1)、所述数据B(2,i+1)和所述第二报文头得到数据D′(2,i+1)

可选的,所述网络装置还可包括聚合器和查表引擎;其中,所述第一电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(1,i+1)包括:所述第一电路组中的第i+1处理电路中的第i+1查表单元向所述聚合器发送查表请求Q(1,i+1),以及接收所述聚合器反馈的所述数据B(1,i+1)。其中,所述第二电路组中的第i+1处理电路中的第i+1查表单元查表得到数据B(2,i+1)包括:所述第二电路组中的第i+1处理电路中的第i+1查表单元向所述聚合器发送查表请求Q(2,i+1),接收所述聚合器反馈的所述数据B(2,i+1)

其中,所述处理数据方法还包括:所述聚合器在接收到所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)后,向所述查表引擎发送所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1),接收所述查表引擎响应所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1)发送的所述数据B(2,i+1),其中,所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)包含的查表键值相同,所述数据B(1,i+1)和所述数据B(2,i+1)相同。

可以看出,当聚合器收到的多个查表请求包含的查表键值相同,聚合器可将该多个查表请求聚合成一个查表请求,利用该一个查表请求向查表引擎请求查表数据,将查表引擎反馈的查表数据复制多份,分别提供给发起查表请求的个查表单元。由于引入了查表引擎来有条件的聚合查表请求,这样有利于较大的减少查表引擎被访问的次数,有利于尽量避免查表引擎拥塞,进而有利于提高查表引擎的响应效率。

为便于更好的理解上述技术方案,下面通过一些具体的应用场景进行进一步举例说明。

参见图5,图5示出一种报文转发处理设备的架构图。图5所示的报文转发处理设备包括报文收集器、报文解析器、第一电路组、第二电路组、第三电路组和仲裁器组。第一电路组、第二电路组、第三电路组和仲裁器组都包含五级电路。假设第一电路组、第二电路组和第三电路组的每级处理电路只处理一个报文头。

下面介绍各电路处理报文的过程。

其中,报文收集器可缓存接收到的报文。当等待时间超过阈值(如三个时钟周期)时,报文收集器向报文解析器发送缓存的3个报文,即报文f1、报文f2和报文f3。

报文解析器接收报文f1、报文f2和报文f3。报文解析器解析报文f1的报文头f11、报文f2的报文头f21和报文f3的报文头f31,获得报文头f11、报文头f21和报文头f31的长度信息,以及获得报文头f11、报文头f21和报文头f31之间的一致性信息。其中,报文头f11、报文头f21和报文头f31之间的一致性信息指示出报文头f11、报文头f21和报文头f31之间从起始位置开始,类型和取值相同的字段的数量和/或长度。

假设报文f1、报文f2和报文f3为以太网帧。如图6所示,报文头f11包括报文f1的MAC头、MPLS头、IP头和TCP头。报文头f21包括报文f2的MAC头、MPLS头、IP头和TCP头。报文头f31包括报文f3的MAC头、MPLS头、IP头和UDP头。

其中,假设报文头f11、报文头f21和报文头f31的MAC头相同。报文头f11、报文头f21和报文头f31的MPLS头相同。报文头f11和报文头f21的IP头不同(例如IP头中的源IP地址字段和/或目的IP地址字段取值不同)。报文头f21和报文头f31的IP头相同。

报文解析器向第一电路组中的第1处理电路发送报文头f11,报文解析器向第二电路组中的第1处理电路发送报文头f21,报文解析器向第三电路组中的第1处理电路发送报文头f31。

报文解析器向仲裁器电路中的第1仲裁器发送报文头f11、报文头f21和报文头f31之间的一致性信息,或两报文头之间的一致性信息,。假设一致性信息指示报文头f11、报文头f21和报文头f31的前2个报文头(MAC头以及MPLS头)的类型和取值相同,报文头f21和报文头f31的前3个报文头(MAC头、MPLS头以及IP头)的类型和取值相同。

第1仲裁器基于一致性信息确定第一电路组中的第1处理电路需要处理的报文头f11中的MAC头的类型、取值和在报文头f11中所处位置,与第二电路组中的第1处理电路需要处理的报文头f21中的MAC头的类型、取值和在报文头f21中所处位置相同,且与第三电路组中的第1处理电路需要处理的报文头f31中的MAC头的类型、取值和在报文头f31中所处位置也相同。即第二电路组中的第1处理电路和第三电路组中的第1处理电路可以利用第一电路组中的第1处理电路基于报文头f11得到的中间数据。因此,第1仲裁器向第一电路组中的第1处理电路发送运转指示,第1仲裁器向第二电路组中的第1处理电路和第三电路组中的第1处理电路发送空转指示。

其中,接收到来自仲裁器的空转指示的处理电路不执行对接收到的报文头中的字段进行处理从而得到中间数据的操作。而是透传接收到的报文头。接收到来自仲裁器的运转指示的处理电路根据接收到的报文头中的字段进行处理得到中间数据,并向下级处理电路发送报文头和中间数据。

第一电路组中的第1处理电路接收到来自第1仲裁器的运转指示后,基于报文头f11中的MAC头得到数据D(1,1),以及向第一电路组中的第2处理电路发送报文头f11和数据D(1,1)。第二电路组中的第1处理电路接收到来自第1仲裁器的空转指示后,向第二电路组中的第2处理电路发送报文头f21。同样,第三电路组中的第1处理电路接收到来自第1仲裁器的空转指示后,向第三电路组中的第2处理电路发送报文头f31。

第2仲裁器基于一致性信息确定第一电路组中的第2处理电路需要处理的报文头f11中的MPLS头的类型、取值和在报文头f11中所处位置,与第二电路组中的第2处理电路需要处理的报文头f21中的MPLS头的类型、取值和在报文头f21中所处位置相同,且与第三电路组中的第2处理电路需要处理的报文头f31中的MPLS头的类型、取值和在报文头f31中所处位置也相同。即第二电路组中的第2处理电路和第三电路组中的第2处理电路可以共享第一电路组中的第2处理电路基于报文头f11得到的中间数据。因此,第2仲裁器向第一电路组中的第2处理电路发送运转指示,第2仲裁器向第二电路组中的第2处理电路和第三电路组中的第2处理电路发送空转指示。

第一电路组中的第2处理电路接收到来自第2仲裁器的运转指示后,基于报文头f11中的MPLS头得到数据D′(1,2),以及向第一电路组中的第3处理电路发送报文头f11和数据D(1,2),其中,所述数据D(1,2)基于所述数据D(1,1)和所述数据D′(1,2)得到。第二电路组中的第2处理电路接收到来自第2仲裁器的空转指示后,向第二电路组中的第3处理电路发送报文头f21。同样,第三电路组中的第2处理电路接收到来自第2仲裁器的空转指示后,向第三电路组中的第3处理电路发送报文头f31。

第3仲裁器基于一致性信息确定第一电路组中的第3处理电路需要处理的报文头f11中的IP头的取值,与第二电路组中的第3处理电路需要处理的报文头f21中的IP头的取值不同。第二电路组中的第3处理电路需要处理的报文头f21中的IP头的类型、取值和在报文头f21中所处位置,与第三电路组中的第3处理电路需要处理的报文头f31中的IP头的类型、取值和在报文头f31中所处位置相同,即第二电路组中的第3处理电路不能共享第一电路组中的第3处理电路基于报文头f11得到的中间数据,而第三电路组中的第3处理电路可以共享第二电路组中的第3处理电路基于报文头f21得到的中间数据。因此,第3仲裁器向第一电路组中的第3处理电路和第二电路组中的第3处理电路发送运转指示,第3仲裁器向第三电路组中的第3处理电路发送空转指示,其中,第3仲裁器还向第一电路组中的第3处理电路发送数据共享指示。

其中,第一电路组中的第2处理电路在接收到来自第3仲裁器的数据共享指示之后,向第二电路组中的第3处理电路发送数据D(1,2)

第一电路组中的第3处理电路接收到来自第3仲裁器的运转指示后,基于报文头f11中的IP头得到数据D′(1,3),以及向第一电路组中的第4处理电路发送报文头f11和数据D(1,3),所述数据D(1,3)基于所述数据D(1,2)和所述数据D′(1,3)得到。第二电路组中的第3处理电路接收到来自第3仲裁器的运转指示后,基于报文头f21中的IP头得到数据D′(2,3),以及向第二电路组中的第4处理电路发送报文头f21和数据D(2,3),其中,所述数据D(2,3)基于所述数据D(1,2)和所述数据D′(2,3)得到。第三电路组中的第3处理电路接收到来自第3仲裁器的空转指示后,向第三电路组中的第4处理电路发送报文头f31。

此外,若数据D(1,2)包含指令I(1,3)的标识,由于第二电路组中的第3处理电路和第一电路组中的第3处理电路收到的都是数据D(1,2)。因此第3仲裁器还可向第一电路组中的第3处理电路发送指令共享指示,其中,第一电路组中的第3处理电路在接收到来自第3仲裁器的指令共享指示之后,向第二电路组中的第3处理电路发送第一电路组中的第3处理电路基于指令I(1,3)的标识获取到的指令I(1,3),第二电路组中的第3处理电路可基于指令I(1,3)和报文头f21中的IP头得到数据D′(2,3)

第4仲裁器基于一致性信息确定第一电路组中的第4处理电路需要处理的报文头f11中的TCP头的取值,与第二电路组中的第4处理电路需要处理的报文头f21中的TCP头的取值可能不同。第二电路组中的第4处理电路需要处理的报文头f21中的TCP头的类型,与第三电路组中的第4处理电路需要处理的报文头f31中的UDP头的类型不同,即第二电路组中的第4处理电路不能共享第一电路组中的第4处理电路基于报文头f11得到的中间数据,第三电路组中的第4处理电路也不能共享第二电路组中的第4处理电路基于报文头f21得到的中间数据。因此,第4仲裁器向第一电路组中的第3处理电路、第二电路组中的第3处理电路和第二电路组中的第4处理电路发送运转指示,第4仲裁器还向第二电路组中的第3处理电路发送数据共享指示。

其中,第二电路组中的第3处理电路在接收到来自第4仲裁器的数据共享指示之后,向第三电路组中的第4处理电路发送数据D(2,3)

第一电路组中的第4处理电路接收到来自第4仲裁器的运转指示后,基于报文头f11中的TCP头得到数据D′(1,4),以及向第一电路组中的第5处理电路发送报文头f11和数据D(1,4),其中,所述数据D(1,4)基于所述数据D(1,3)和所述数据D′(1,4)得到。第二电路组中的第4处理电路接收到来自第4仲裁器的运转指示后,基于报文头f21中的TCP头得到数据D′(2,4),以及向第二电路组中的第5处理电路发送报文头f21和数据D(2,4),其中,所述数据D(2,4)基于所述数据D(1,3)和所述数据D′(2,4)得到。第三电路组中的第4处理电路接收到来自第4仲裁器的运转指示后,基于报文头f31中的UDP头得到数据D′(3,4),以及向第三电路组中的第5处理电路发送报文头f31和数据D(3,4),其中,所述数据D(3,4)基于所述数据D(2,3)和所述数据D′(3,4)得到。

下面还提供用于实施上述方案的相关装置。

参见图7,一种网络装置700,所述网络装置700包括第一电路组和第二电路组。所述网络装置700可以用于执行图2所示的方法。

其中,所述第一电路组中的第i处理电路,用于接收第一报文头和数据D(1,i-1),基于所述第一报文头的第一字段得到数据D′(1,i),以及向所述第一电路组中的第i+1处理电路发送所述第一报文头和数据D(1,i);其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到。

所述第一电路组中的第i处理电路还用于,向所述第二电路组中的第i+1处理电路发送所述数据D(1,i)

所述第二电路组中的第i处理电路,用于向所述第二电路组中的第i+1处理电路发送第二报文头,其中,所述第二报文头中的第二字段和所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在第一报文头中所处位置相同。

第一报文头是第一报文的报文头。其中,第一报文头可只包括第一报文的外层头。或者,第一报文头可包括第一报文的外层头和至少一个内层头。例如,第一报文为IP报文,第一报文头可包括IP头。或者,第一报文头可包括IP头,以及TCP头。或者,第一报文头可包括IP头,以及UDP头。又例如,第一报文为以太网帧。第一报文头可包括MAC头。或者,第一报文头可包括MAC头和IP头。或者,第一报文头可包括MAC头、MPLS头和IP头,或者第一报文头可包括MAC头、MPLS头和IP头,以及TCP头或UDP头。

第二报文头是第二报文的报文头。类似的,第二报文头可只包括第二报文的外层头。或者,第二报文头可包括第二报文的外层头和至少一个内层头。例如,第二报文为IP报文,第二报文头可包括IP头。或者,第二报文头可包括IP头以及TCP头。或者,第二报文头可包括IP头以及UDP头。又例如第二报文为以太网帧。第二报文头可包括MAC头。或者,第二报文头可包括MAC头和IP头。或者,第二报文头可包括MAC头、MPLS头和IP头。或者第二报文头可包括MAC头、MPLS头、IP头以及TCP头。或者第二报文头可包括MAC头、MPLS头、IP头以及UDP头。

例如,i为正整数。可以理解,第一电路组中的第i处理电路可能是第一电路组中的第1处理电路、第2处理电路或第3处理电路。第二电路组中的第i处理电路可能是第二电路组中的第1处理电路、第2处理电路或第3处理电路。其中,上述第一电路组和上述第二电路组可为所述网络装置中的任意两个电路组。

所述第一电路组包括第1处理电路至第i+1处理电路。第1处理电路是所述第一电路组中的起始处理电路。在当前处理电路是所述第一电路组中的中间处理电路的场景中,当前处理电路能够接收前一处理电路发送的数据。当前处理电路能够向后一处理电路发送数据。例如,如果当前处理电路是第2处理电路,则第2处理电路能够接收第1处理电路发送的数据。第2处理电路能够向第3处理电路发送数据。

所述第二电路组包括第1处理电路至第i+1处理电路。第1处理电路是所述第一电路组中的起始处理电路。在当前处理电路是所述第一电路组中的中间处理电路的场景中,当前处理电路能够接收前一处理电路发送的数据。当前处理电路能够向后一处理电路发送数据。例如,如果当前处理电路是第2处理电路,则第2处理电路能够接收第1处理电路发送的数据。第2处理电路能够向第3处理电路发送数据。

其中,所述第二报文头中的第二字段和所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在所述第一报文头中所处位置相同。

例如,所述第二报文头中的第二字段相对于所述第二报文头的起始位置的偏移量,等于所述第一报文头中的第一字段相对于所述第一报文头的起始位置的偏移量,具体例如,所述第二报文头中的第二字段的最高有效位(英文:most significant bit,简称:MSB)相对于所述第二报文头的起始位置的偏移量为50字节,所述第一报文头中的第一字段的MSB相对于所述第一报文头的起始位置的偏移量也为50字节。或者,所述第二报文头中的第二字段相对于所述第二报文头的结束位置的偏移量,等于所述第一报文头中的第一字段相对于所述第一报文头的结束位置的偏移量。例如,所述第二报文头中的第二字段的MSB相对于所述第二报文头的结束位置的偏移量为65字节。所述第一报文头中的第一字段的MSB相对于所述第一报文头的结束位置的偏移量也为65字节。

举例来说,所述第一报文中第一数据等于所述第二报文中的第二数据。所述第一数据是所述第一报文头的MSB至所述第一字段的LSB的数据。所述第二数据是所述第二报文头的MSB至所述第二字段的LSB的数据。

可选的,在一些可能的实施方式中,所述网络装置还包括仲裁器;

所述仲裁器用于,在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的类型和取值,不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的类型和取值时,向所述第一电路组中的第i处理电路发送数据共享指示。或者,所述仲裁器用于在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的取值,不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的取值时,向所述第一电路组中的第i处理电路发送数据共享指示。或者,所述仲裁器用于在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的类型不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的类型,并且所述仲裁器在确定所述第二电路组中的第i+1处理电路需处理的第二报文头中的第三字段的取值不同于所述第一电路组中的第i+1处理电路需处理的第一报文头中的第四字段的取值时,向所述第一电路组中的第i处理电路发送数据共享指示。

所述第一电路组中的第i处理电路用于响应于所述数据共享指示,向所述第二电路组中的第i+1处理电路发送所述数据D(1,i)

可选的,在一些可能的实施方式中,所述第一电路组中的第i+1处理电路,用于基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1)

所述第一电路组中的第i+1处理电路还用于,向所述第二电路组中的第i+1处理电路发送所述指令I(1,i+1)

所述第一电路组中的第i+1处理电路还用于,根据所述指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到。

所述第二电路组中的第i+1处理电路,用于根据所述指令I(1,i+1)和所述第二报文头得到数据D′(2,i+1),以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,所述数据D(2,i+1)基于所述数据D(1,i)和所述数据D′(2,i+1)得到。

可选的,在一些可能的实施方式中,所述第一电路组中的第i+2处理电路,用于基于所述数据D(1,i+1)中包含的指令I(1,i+2)的标识获取所述指令I(1,i+2),根据所述处理指令I(1,i+2)和所述第一报文头得到数据D′(1,i+2),以及向所述第一电路组中的第i+3处理电路发送所述第一报文头和数据D(1,i+2),其中,所述数据D(1,i+2)基于所述数据D(1,i+1)和所述数据D′(1,i+2)得到;

所述第二电路组中的第i+2处理电路,用于基于所述数据D(2,i+1)中包含的指令I(2,i+2)的标识获取所述指令I(2,i+2),根据所述指令I(2,i+2)和所述第二报文头得到数据D′(2,i+2),以及向所述第二电路组中的第i+3处理电路发送数据D(2,i+2)和所述第二报文头,其中,所述数据D(2,i+2)基于所述数据D(2,i+1)和所述数据D′(2,i+2)得到。

可选的,在一些可能的实施方式中,所述第一电路组中的第i+1处理电路,用于基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1),根据所述处理指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到;

所述第二电路组中的第i+1处理电路,用于基于所述数据D(1,i)包含的指令I(2,i+1)的标识获取所述指令I(2,i+1),根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1);以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,所述数据D(2,i+1)基于所述数据D(1,i)和所述数据D′(2,i+1)得到。

可选的,在一些可能的实施方式中,所述第一电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元,所述第二电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元;

所述第一电路组中的第i+1处理电路中的第i+1查表单元,用于通过查表得到数据B(1,i+1);所述第一电路组中的第i+1处理电路中的第i+1指令执行单元用于通过根据所述指令I(1,i+1)、所述数据B(1,i+1)和所述第一报文头得到所述数据D′(1,i+1)

所述第二电路组中的第i+1处理电路中的第i+1查表单元,用于查表得到数据B(2,i+1)

所述第二电路组中的第i+1处理电路中的第i+1指令执行单元用于根据所述指令I(2,i+1)、所述数据B(2,i+1)和所述第二报文头得到数据D′(2,i+1)

可选的,在一些可能的实施方式中,所述网络装置还包括聚合器和查表引擎;其中,所述第一电路组中的第i+1处理电路中的第i+1查表单元,用于向所述聚合器发送查表请求Q(1,i+1),以及接收所述聚合器反馈的所述数据B(1,i+1)

所述第二电路组中的第i+1处理电路中的第i+1查表单元,用于向所述聚合器发送查表请求Q(2,i+1),以及接收所述聚合器反馈的所述数据B(2,i+1)

所述聚合器,用于在接收到所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)之后,向所述查表引擎发送所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1),接收所述查表引擎响应所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1)而发送的所述数据B(2,i+1),向所述第一电路组中的第i+1处理电路中的第i+1查表单元反馈数据B(1,i+1),向所述第二电路组中的第i+1处理电路中的第i+1查表单元反馈数据B(2,i+1),其中,所述数据B(2,i+1)和所述数据B(1,i+1)相同,所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)包含的查表键值相同。

可以理解的是,本实施例的网络装置700的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。其中,网络装置700例如可以是路由器或者网络交换机等。

可以看出,本实施例中当第二报文头中的第二字段和所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在所述第一报文头中所处位置相同。因此,如果使用相同的处理方式分别对第一字段和第二字段进行处理,则第一字段对应的处理结果与第二字段对应的处理结果相同。第一电路组中的第i处理电路接收第一报文头和数据D(1,i-1),基于所述第一报文头的第一字段得到数据D′(1,i),以及向所述第一电路组中的第i+1处理电路发送所述第一报文头和数据D(1,i)。第二电路组中的第i处理电路不需要根据与第一电路组中的第i处理电路处理第一报文头中的第一字段的处理方式相同的处理方式对第二报文头中的第二字段进行处理。第二电路组中的第i+1处理电路通过接收第一电路组中的第i处理电路发送的数据D(1,i)获得数据D(1,i)。也就是说,通过上述电路组之间的处理结果共享机制,使得第二电路组可以获得第一电路组提供的处理结果。因此,第二电路组中的第i处理电路可以在特定条件下处于空闲状态(不需要对第二报文头中的第二字段进行处理)。因此,上述技术方案有利于降低功耗,节约资源。有利于提高报文处理的效率。

参见图8,本发明实施例提供另一种网络装置800。所述网络装置800可以用于执行图4所示的方法。

所述网络装置800可包括第一电路组和第二电路组。其中,所述第一电路组中的第i处理电路,用于接收第一报文头和数据D(1,i-1),基于所述数据D(1,i-1)中包含的指令I(1,i)的标识获取所述指令I(1,i),以及向所述第二电路组中的第i处理电路发送所述指令I(1,i)

所述第一电路组中的第i处理电路还用于,根据所述指令I(1,i)和所述第一报文头得到数据D′(1,i)

所述第一电路组中的第i处理电路还用于,向所述第一电路组中的第i+1处理电路发送数据D(1,i)和所述第一报文头,其中,所述数据D(1,i)基于所述数据D(1,i-1)和所述数据D′(1,i)得到。

其中,所述第二电路组中的第i处理电路,用于接收第二报文头和数据D(2,i-1),根据所述指令I(1,i)和所述第二报文头得到数据D′(2,i),以及向所述第二电路组中的第i+1处理电路发送数据D(2,i)和所述第二报文头,其中,所述数据D(2,i)基于所述数据D′(2,i)和所述数据D(2,i-1)得到。

第一报文头是第一报文的报文头。其中,第一报文头可只包括第一报文的外层头。或者,第一报文头可包括第一报文的外层头和至少一个内层头。例如,第一报文为IP报文,第一报文头可包括IP头。或者,第一报文头可包括IP头,以及TCP头。或者,第一报文头可包括IP头,以及UDP头。又例如,第一报文为以太网帧。第一报文头可包括MAC头。或者,第一报文头可包括MAC头和IP头。或者,第一报文头可包括MAC头、MPLS头和IP头,或者第一报文头可包括MAC头、MPLS头和IP头,以及TCP头或UDP头。

第二报文头是第二报文的报文头。类似的,第二报文头可只包括第二报文的外层头。或者,第二报文头可包括第二报文的外层头和至少一个内层头。例如,第二报文为IP报文,第二报文头可包括IP头。或者,第二报文头可包括IP头以及TCP头。或者,第二报文头可包括IP头以及UDP头。又例如第二报文为以太网帧。第二报文头可包括MAC头。或者,第二报文头可包括MAC头和IP头。或者,第二报文头可包括MAC头、MPLS头和IP头。或者第二报文头可包括MAC头、MPLS头、IP头以及TCP头。或者,第二报文头可包括MAC头、MPLS头、IP头以及UDP头。

例如,i为正整数。可以理解,第一电路组中的第i处理电路可能是第一电路组中的第1处理电路、第2处理电路或第3处理电路。第二电路组中的第i处理电路可能是第二电路组中的第1处理电路、第2处理电路或第3处理电路。其中,上述第一电路组和上述第二电路组可为所述网络装置中的任意两个电路组。

所述第一电路组包括第1处理电路至第i+1处理电路。第1处理电路是所述第一电路组中的起始处理电路。在当前处理电路是所述第一电路组中的中间处理电路的场景中,当前处理电路能够接收前一处理电路发送的数据。当前处理电路能够向后一处理电路发送数据。例如,如果当前处理电路是第2处理电路,则第2处理电路能够接收第1处理电路发送的数据。第2处理电路能够向第3处理电路发送数据。

所述第二电路组包括第1处理电路至第i+1处理电路。第1处理电路是所述第一电路组中的起始处理电路。在当前处理电路是所述第一电路组中的中间处理电路的场景中,当前处理电路能够接收前一处理电路发送的数据。当前处理电路能够向后一处理电路发送数据。例如,如果当前处理电路是第2处理电路,则第2处理电路能够接收第1处理电路发送的数据。第2处理电路能够向第3处理电路发送数据。

其中,所述第二报文头中的第二字段和所述第一报文头的第一字段的类型和取值均相同,且所述第二字段在第二报文头中所处位置和所述第一字段在所述第一报文头中所处位置相同。

例如,所述第二报文头中的第二字段相对于所述第二报文头的起始位置的偏移量,等于所述第一报文头中的第一字段相对于所述第一报文头的起始位置的偏移量,具体例如,所述第二报文头中的第二字段的MSB相对于所述第二报文头的起始位置的偏移量为50字节,所述第一报文头中的第一字段的MSB相对于所述第一报文头的起始位置的偏移量也为50字节。或者,所述第二报文头中的第二字段相对于所述第二报文头的结束位置的偏移量,等于所述第一报文头中的第一字段相对于所述第一报文头的结束位置的偏移量。例如,所述第二报文头中的第二字段的MSB相对于所述第二报文头的结束位置的偏移量为65字节。所述第一报文头中的第一字段的MSB相对于所述第一报文头的结束位置的偏移量也为65字节。

举例来说,所述第一报文中第一数据等于所述第二报文中的第二数据。所述第一数据是所述第一报文头的MSB至所述第一字段的LSB的数据。所述第二数据是所述第二报文头的MSB至所述第二字段的LSB的数据。

可选的,在一些可能的实施方式中,所述第一电路组中的第i+1处理电路,用于基于所述数据D(1,i)中包含的指令I(1,i+1)的标识获取所述指令I(1,i+1),根据所述处理指令I(1,i+1)和所述第一报文头得到数据D′(1,i+1),以及向所述第一电路组中的第i+2处理电路发送数据D(1,i+1)和所述第一报文头,其中,所述数据D(1,i+1)基于所述数据D(1,i)和所述数据D′(1,i+1)得到;

所述第二电路组中的第i+1处理电路,用于基于所述数据D(2,i)包含的指令I(2,i+1)的标识获取所述指令I(2,i+1),根据所述指令I(2,i+1)和所述第二报文头得到数据D′(2,i+1);以及向所述第二电路组中的第i+2处理电路发送数据D(2,i+1)和所述第二报文头,所述数据D(2,i+1)基于所述数据D(2,i)和所述数据D′(2,i+1)得到。

可选的,在一些可能的实施方式中,所述第一电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元,所述第二电路组中的第i+1处理电路包括第i+1查表单元和第i+1指令执行单元;

所述第一电路组中的第i+1处理电路中的第i+1查表单元,用于通过查表得到数据B(1,i+1);以及,所述第一电路组中的第i+1处理电路中的第i+1指令执行单元,用于通过根据所述指令I(1,i+1)、所述数据B(1,i+1)和所述第一报文头得到所述数据D′(1,i+1)

所述第二电路组中的第i+1处理电路中的第i+1查表单元,用于查表得到数据B(2,i+1)

以及,所述第二电路组中的第i+1处理电路中的第i+1指令执行单元,用于根据所述指令I(2,i+1)、所述数据B(2,i+1)和所述第二报文头得到数据D′(2,i+1)

可选的,在一些可能的实施方式中,所述网络装置还包括聚合器和查表引擎;其中,所述第一电路组中的第i+1处理电路中的第i+1查表单元,用于向所述聚合器发送查表请求Q(1,i+1),以及接收所述聚合器反馈的所述数据B(1,i+1)

其中,所述第二电路组中的第i+1处理电路中的第i+1查表单元,用于向所述聚合器发送查表请求Q(2,i+1),接收所述聚合器反馈的所述数据B(2,i+1)

其中,所述聚合器,用于在接收到所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)后,向所述查表引擎发送所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1),接收所述查表引擎响应所述查表请求Q(2,i+1)或所述查表请求Q(1,i+1)发送的所述数据B(2,i+1),其中,所述查表请求Q(2,i+1)和所述查表请求Q(1,i+1)包含的查表键值相同,所述数据B(1,i+1)和所述数据B(2,i+1)相同。

可选的,在一些可能的实施方式中,所述网络装置还包括仲裁器;

所述仲裁器,用于在确定所述数据D(1,i-1)中包含的指令I(1,i)的标识与所述数据D(2,i-1)中包含的指令I(2,i)的标识相同时,向所述第一电路组中的第i处理电路发送指令共享指示。

所述第二电路组中的第i处理电路用于响应于所述指令共享指示,向所述第二电路组中的第i处理电路发送所述指令I(1,i)

可以理解的是,本实施例的网络装置800的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。其中,网络装置800例如可以是路由器或者网络交换机等。

可以看出,本实施例中第一电路组中的第i处理电路将指令I(1,i)共享给第二电路组中的第i处理电路,使得第二电路组中的第i处理电路可根据所述指令I(1,i)和接收到的第二报文头得到数据D′(2,i)。由于引入了电路组之间共享指令的机制,使得网络装置中的一些电路组中的部分处理电路可以免于从其指令内存中读取指令,这样就有利于降低指令内存的占用率,减少取指带宽的占用。这样也有利于提高资源利用率,也有利于降低报文转发处理复杂度。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明各个实施例所述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(英文:read-only memory,缩写:ROM)或者随机存取存储器(英文:random access memory,缩写:RAM)等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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