CN101626343B - 数据包交换的方法、装置和通信设备 - Google Patents
数据包交换的方法、装置和通信设备 Download PDFInfo
- Publication number
- CN101626343B CN101626343B CN2009101095563A CN200910109556A CN101626343B CN 101626343 B CN101626343 B CN 101626343B CN 2009101095563 A CN2009101095563 A CN 2009101095563A CN 200910109556 A CN200910109556 A CN 200910109556A CN 101626343 B CN101626343 B CN 101626343B
- Authority
- CN
- China
- Prior art keywords
- packet
- module
- port
- sign
- handing
- 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.)
- Active
Links
Images
Abstract
本发明实施例提供了一种数据包处理方法、数据包处理装置以及包括数据包处理装置的通信设备。方法包括:通过第一端口从源包处理模块接收数据包,所述数据包包括目的标识,所述目的标识为下一处理所述数据包的包处理模块的标识;解析所述所述数据包获取所述目的标识;获取对应所述目的标识的端口作为第二端口;通过所述第二端口将所述数据包发送给所述目的标识对应的包处理模块。本发明实施例所提供的方法、装置和通信设备,可以简化各包处理模块之间的连接关系。
Description
技术领域
本发明涉及通信领域,特别涉及一种数据包的交换方法、装置和通信设备。
背景技术
随着通信技术的发展,通信带宽的要求越来越高,单纯依靠软件来实现通信协议的处理已经不能满足需求。于是,协议的处理逐渐被下移,在微码、可编程逻辑(Programmable Logic Device,PLD)中实现,其中在可编程逻辑中实现的处理速度更快,实时性更高。
例如,TCP/IP协议是一个四层体系结构,通过软件实现TCP/IP协议处理数据包时,需要将一个完整的数据包导入内存,软件根据TCP/IP协议对内存中的数据包逐层处理。为了提高处理速度,可以通过可编程逻辑实现TCP/IP协议,这种方式通常采用流水线的处理方式,也就是按照TCP/IP协议的层次划分功能模块并在可编程逻辑中实现,各可编程逻辑所实现的功能模块相对独立,各功能模块与功能模块之间需要互传处理后的数据包,其处理方式如图1所示。图1所示的网络端口层模块101、互连网络层模块102、传输层模块103、应用层模块104,分别对应着实现TCP/IP协议各层功能的可编程逻辑,当网络端口层模块101接收到一个数据包之后,网络端口层模块101按照TCP/IP协议中网络端口层的协议对数据包进行处理,然后发送到下一个模块互连网络层模块102按照相应的协议进行处理,再发送到传输层模块103,然后到应用层模块104;反之亦然。
但在实际应用中,通信协议的种类比较多,因而参与处理数据包的功能模块可能远不只这几种。随着通信协议越来越复杂,通信设备中的包处理模块也就越来越多,导致包处理模块间的连接关系也就越来越复杂。
发明内容
一方面,本发明实施例提供了一种数据包处理方法,包括:
通过第一端口从源包处理模块接收数据包,所述数据包包括目的标识,所述目的标识为下一处理所述数据包的包处理模块的标识;
解析所述所述数据包获取所述目的标识;
获取对应所述目的标识的端口作为第二端口;
通过所述第二端口将所述数据包发送给所述目的标识对应的包处理模块。
另一方面,本发明实施例提供了一种数据包处理装置,包括:
包交换模块,多个包处理模块;
所述包交换模块与所述多个包处理模块相连接;
所述包处理模块,用于在数据包中增加下一处理所述数据包的包处理模块的标识作为目的标识,向所述包交换模块发送所述携带有目的标识的数据包;
所述包交换模块,用于通过第一端口接收包处理模块中的第一包处理模块发送的数据包,从所述数据包中解析目的标识,获取对应所述目的标识的第二端口,并通过所述第二端口向包处理模块中的第二包处理模块发送所述数据包。
又一方面,本发明实施例还提供了一种通信设备,包括上述的数据包处理装置。
本发明实施例所提供的数据包处理方法、装置和通信设备,根据数据包的目的标识和端口之间的对应关系转发数据包,可以简化处理数据包的包处理模块之间的连接关系。
附图说明
图1为现有技术中TCP/IP协议的处理数据包的流程示意图;
图2为现有技术中包处理模块之间处理数据包的流程示意图;
图3为实施例一提供的一种数据包处理方法的流程示意图图;
图4为实施例一中包处理模块和包交换模块的一种连接示意图;
图5为实施例一提供的一种数据包的结构示意图;
图6为实施例二提供的数据包处理方法的流程示意图;
图7为实施例三提供的数据包处理装置的结构示意图;
图8为实施例三提供的数据包处理装置的另一结构示意图;
图9为实施例四提供的数据包处理装置的结构示意图;
图10为实施例五提供的通信设备的结构示意图;
图11为实施例五提供的通信设备包括的数据包处理装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的几个实施例作进一步地详细的描述。
实施例一
参见图3,图3为本发明实施例一提供的一种数据包处理方法的流程示意图。
S301,通过第一端口从源包处理模块接收数据包。
步骤301可以由包交换模块执行,包交换模块通过与包处理模块相连接的端口,接收来自于包处理模块的数据包。图4给出了包交换模块和包处理模块的一种示例性的连接方式。图4中,包处理模块A-D为用来实现一定功能的功能模块。包处理模块的主要功能是按照通信协议对接收的数据包进行处理,处理完毕之后输出给下一个包处理模块继续处理。例如,包处理模块A-D为实现TCP/IP协议、并按照TCP/IP协议来处理数据包的可编程逻辑器件或者现场可编程门阵列。
包处理模块A-D通过端口和包交换模块相连接。在处理数据包的过程中,包交换模块从一个端口接收数据包,所接受的数据包包括目的标识。
数据包大致可分为两个部分,一部分为标识目的包处理模块的DA字段,另一部分为Data字段。Data字段的值为包处理模块需要处理的数据,而DA字段的值则为下一处理该数据包的包处理模块的标识。DA字段的长度可以为8比特、16比特或32比特等,取决于标识的长度。DA字段由当前处理该数据包的包处理模块添加。
参见图5,图5给出了数据包格式的一个示例。如图5所示,数据包的位宽为32比特,第一个字节(8比特)为源标识SA字段,可以用来存放源包处理模块的标识;第二字节(8比特)为目的标识DA字段,用来存放目的包处理模块的标识;第三字节为数据包类型PD_Type字节,用来存放数据包的类型;第四字节为数据包长度PD_Len字节,用来存放数据包长度。剩下的字节为Data字段,用于保存数据。数据包的长度可以自由定义,例如可以为128字节,也可以为256字节等。需要说明的是,数据包的格式可以自由定义,并不限于图5所给出的结构。
在一种应用场景下,当包处理模块B处理完一个数据包Data字段的数据之后,需要将数据包发送给包处理模块D处理,则包处理模块B在数据包的DA字段,填上包处理模块D的标识;然后通过包处理模块B与包交换模块相连接的端口,将该数据包发送给包交换模块,相应的,包交换模块从与包处理模块B的端口接收该数据包。
包处理模块和包交换模块通过端口相连接,包交换模块通过端口识别数据包来自于哪个包交换模块。端口可以是一个独立的物理端口,也可以是一个虚拟端口。
在图4所示的结构中(端口在图中未示),包交换模块和包处理模块(A-D)通过包交换模块的端口与包交换模块相连接,每个端口都是一个独立的物理端口,与一个包处理模块相连接。
S302,解析所述数据包获取所述目的标识。
当包交换模块接收到数据包之后,解析数据包的DA字段,获取DA字段携带的目的标识,该目的标识为下一个处理该数据包的包处理模块的标识。
S303,获取对应所述目的标识的端口作为第二端口,通过第二端口发送该数据包给与目的标识对应的包处理模块。
包交换模块解析数据包的DA字段得到目的标识后,查询在包交换模块的端口中对应于该目的标识的端口,与该端口相连接的包处理模块为下一个处理数据包的包处理模块。
为了便于查询端口和标识之间的对应关系,包交换模块需要维护一个映射表,用来保存与端口及与该端口相连接的包处理模块的标识之间的映射关系。该映射表可以预先保存在包交换模块中,在运行过程中也可以动态更新。
如果通过可编程逻辑来实现包交换模块,则该映射表可以保存在可编程逻辑的存储区域中。
包交换模块获得与目的标识对应的端口后,通过该端口向与该端口连接的包处理模块发送该数据包,即可将数据包发送到由DA标识指定的包处理模块。
现有技术通过包处理模块的连接关系确定处理数据包的流程,使得在实现每个包处理模块的功能时,该包处理模块需要了解数据包处理的流程,亦即需要了解与其有直接连接关系的包处理模块的功能,使得包处理模块实现的功能依赖于具体的连接关系。
而本实施例提供的技术方案,通过端口和标识之间的对应关系确定包处理模块处理数据包的流程,亦即将数据包流转的拓扑结构通过包交换模块的端口和包处理模块的标识之间的对应关系实现,因而可以简化包处理模块之间的连接关系。
因此,本实施例提供的包处理方法,根据标识和端口之间的对应关系确定处理数据包的流程,不需要通过包处理模块之间的连接关系确定处理数据包的流程,从而可以简化包理模块之间连接关系;同时也可以减小不同包处理模块之间的耦合度,使得包处理模块的实现不依赖于具体的连接关系,提高了包处理模块的可移植性;进一步的,本实施例提供的方法,还可以降低数据包处理流程的复杂度。
实施例二
为便于表述,在处理数据包的过程中,本实施中,上一处理数据包的包处理模块称之为源包处理模块,下一处理数据包的包处理模块称之为目的包处理模块。包处理模块处理数据包的顺序由包处理模块所实现的通信协议决定。
在一种应用场景下,每个包处理模块分别实现一层TCP/IP协议的功能,每个包处理模块被赋予一个唯一的标识,该标识可以为数字,也可以为字符。
以图4为基础给出一个示例中,包处理模块A的标识为0x00,包处理模块B的标识为0x02,包处理模块C的标识为0x04,包处理模块D的标识为0x06。包处理模块A实现TCP/IP协议中的网络接口层协议,包处理模块B实现互连网络层协议,包处理模块C实现传输层协议,包处理模块D实现应用层的协议。
一个包处理模块处理完数据包之后,根据TCP/IP协议,需要将数据包发送给实现下一层协议的包处理模块处理。各个包处理模块通过包交换模块的端口和包交换模块相连接,通过包交换模块来实现数据包的转发。
包交换模块内部可以包括存储模块,用来保存包处理模块的端口和与该端口相连接的包处理模块的标识之间的映射表。在一个如图4所示的示例中,包交换模块有四个独立的物理端口(端口在图4中未示),分别为端口1、端口2、端口3、端口4。端口1与包处理模块A相连,端口2与包处理模块B相连,依次类推。因而端口和包处理模块的标识之间的映射关系为:
端口 | 包处理模块的标识 | 包处理模块 |
端口1 | 0x00 | 包处理模块A |
端口2 | 0x02 | 包处理模块B |
端口3 | 0x04 | 包处理模块C |
端口4 | 0x06 | 包处理模块D |
可选的,各种包处理模块的标识可以预先分配,以便于各个包处理模块实现其功能时,不依赖于具体的应用,从而可以提高可移植性。如果包处理模块处理数据包的流程发生改变,只需改变端口和包处理模块之间的对应关系即可。
如图6所示,图6为本发明实施例二提供的一种数据包处理方法,包括:
S601,源包处理模块在数据包中增加源标识和目的标识。
当源包处理模块根据其实现的通信协议处理完数据包之后,根据通信协议的要求,确定下一个处理该数据包的包处理模块,即目的包处理模块。目的包处理模块的标识为目的标识,源包处理模块将目的标识添加到数据包中;此外,源包处理模块将自己的标识,作为源标识,添加到数据包中。
在一种应用场景下,包交换模块和包处理模块的连接方式可以如图4所示,包处理模块A按照网络接口层的协议处理完数据包之后,将数据包发送给实现互连网络层协议的包处理模块B进行处理。包处理模块A在数据包中添加包处理模块B的标识0x02作为目的标识;并将包处理模块A的标识0x00作为源标识添加到数据包中。
S602,包交换模块通过与包处理模块相连接的端口接收数据包。
以图4为例,包交换模块通过端口1接收包处理模块A发送的数据包。
在一种应用场景下,包交换模块可以同时从多个端口接收包处理模块发送的数据包,以提高效率。
S603,包交换模块解析数据包获取目的标识。
包交换模块解析数据包,得到数据包中的目的标识,该目的标识为下一个处理该数据包的包处理模块。
例如,如果步骤S602中,包交换模块从端口1接收包处理模块A发送的数据包,包交换模块解析该数据包后得到的目的标识为0x02。
S604,包交换模块获取对应目的标识的端口。
包交换模块在其存储的端口和包处理模块的标识的映射表中查找对应目的标识的端口。
例如,如果步骤603中,包交换模块解析得到的目的标识为0x02,在映射表中,0x02对应于端口2。
映射表可以预先存储在包交换模块中。在数据包的处理流程发生变更时可以动态更新映射表。
S605包交换模块通过该端口向目的包处理模块发送数据包。
包交换模块向步骤S604获得的端口发送数据包,与该端口相连接的包处理模块从该端口接收数据包。
例如,如果步骤S604获得的端口为端口2,与端口2相连接的包处理模块为包处理模块B,则包交换模块通过端口2发送数据包给包交换模块B。
S606目的包处理模块接收该数据包,并根据数据包的源标识对数据包进行处理。
目的包处理模块接收到该数据包之后,从数据包中解析源标识,确定处理数据包的上一包处理模块;从数据包中解析Data字段的值,根据源标识处理数据包中的Data字段。例如,在一些应用场景下,包处理模块可能会接收来自不同包处理模块的数据包,并需要对来自不同包处理模块的数据包进行不同的处理,在这种情况下,包处理模块可以根据原标识识别数据包来自哪个包处理模块,并进行相应的处理。
需要指出的是,在一种应用场景下,可以具有多个包交换模块,包交换模块之间相互连接,在步骤S604中,当其中一个包交换模块在该包交换模块的映射表中未能查询到对应于目的标识的端口时,可以将该数据包发送给另一个包交换模块,由该另一个包交换模块解析该数据包获取目的标识,确定该目的标识对应的端口和包处理模块,并转发该数据包,具体过程可参照上述实施例,该场景下,每个包交换模块都可以均存储一张映射表。
在另一应用场景下,本实施例还提供了用于对包处理模块进行测试的方法。包交换模块可以连接一个测试模块,测试模块的作用在于构造并发送测试数据包。测试数据包的目的标识字段为被测试的包处理模块的标识,测试数据包需要填充的的Data字段的内容可以预先保存在测试模块的存储区域中;在测试参数,如需要发送的测试数据包的长度,一次发多少测试数据包,发送测试数据包的时间间隔等参数配置完毕后,启动测试模块构造测试数据包,并向包交换模块发送测试数据包;包交换模块接收到测试数据包之后,将测试数据包转发给被测试的包处理模块进行处理,从而可实现对某个包处理模块进行单元测试。在测试过程中,通过观察包交换模块的寄存器或者测试模块的寄存器可得知被测试的处理模块的反馈结果,通过反馈结果可分析被测试的包处理模块功能是否正常。
本实施例提供的数据包处理方法,根据标识和端口之间的对应关系确定处理数据包的流程,因而不需要通过包处理模块之间的连接关系确定处理数据包的流程,从而可以简化包理模块之间连接关系;同时也可以减小不同包处理模块之间的耦合度,使得包处理模块的实现不依赖于具体的连接关系,提高了包处理模块的可移植性;进一步的,本实施例提供的方法,还可以降低数据包处理流程的复杂度;进一步的,本发明实施例提供的方法,也便于对包处理模块进行单元测试和问题定位。
实施例三
如图7所示,图7为本发明实施例三提供的一种数据包处理装置,包括:
包处理模块701-包处理模块706为按照一定协议处理数据包的功能模块,例如实现TCP/IP协议各层功能的现场可编程门阵列或者可编程逻辑器件。
包交换模块707,和包处理模块701-包处理模块706通过不同的端口相连接,包交换模块707通过端口从处理模块接收数据包,并根据数据包中的目的标识字段将数据包转发至目的标识指示的包处理模块。
各个包处理模块处理完数据包后,在数据包中添加目的标识,然后将该数据包发送给包交换模块707,由包交换模块707负责转发至下一处理数据包的包处理模块。
进一步的,当前处理数据包的包处理模块还可以在数据包中添加自身的标识作为源标识,以便于目的包处理模块接收到数据包后,能够根据源标识得知发送数据包的包处理模块,并根据源标识对数据包进行处理。
在一种应用场景下,包处理模块702在处理完毕的数据包中添加DA字段,例如将其值设为0xff05(即包处理模块705的标识);添加SA字段,将其值设为0xff02(即包处理模块702的标识)。包交换模块707接收到来自于包处理模块702的数据包之后,解析数据包的DA字段,得到目的标识0xff05,然后获取与包处理模块705对应的端口,通过该端口向包处理模块705发送数据包。
如果数据包中已经存在DA字段和SA字段,包处理模块702仅需替换这两个字段的值即可。
包处理模块的标识和端口的对应关系可以存储在映射表中,该映射表可以预先写入包交换模块之中;或者在本实施例提供的装置上电之后,包交换模块707在初始化过程中获取与端口相连的包处理模块的标识,并保存端口和包处理模块的标识的映射关系。
进一步的,包交换模块707可以包括多个端口和一个路由子模块,其中所述多个端口用来与各包处理模块相连接,路由子模块通过端口从包处理模块接收数据,或者路由子模块通过端口向包处理模块发送数据。路由子模块接收到数据包后,根据数据包包含的目的标识,寻找与目的标识对应的端口,通过该端口将数据包发送给与该端口相连接的包处理模块。
可选的,包交换模块707中的路由子模块可为多个,并包含一个调度子模块。多个路由子模块可以同时处理多个包处理模块之间的数据包交换,当一个路由子模块处于工作状态时,调度子模块可以通过另一个路由子模块转发数据包,实现多线程处理数据包。
进一步的,路由子模块还可以包括如下子模块:获取子模块,用于从包交换模块的端口中接收与该端口相连接的包处理模块发送的数据包,解析该数据包获取该数据包携带的目的标识;端口查询子模块,用于查询获取子模块获取的目的标识对应的端口;处理子模块,用于查询与目的标识对应的端口,如果查询子模块查询到对应该目的标识的端口,通过该端口向与该端口连接的包处理模块发送数据包。
可选的,包交换模块可以有多个,例如包交换模块707可以与其它包交换模块相连接。在这种场景下,如果路由子模块没有查询到对应该目的标识的端口,将该数据包转发给另一包交换模块,由该包交换模块负责转发该数据包。
请参见图8,图8给出了一种多个包交换模块的连接示例。包交换模块707与包交换模块708相连接,包交换模块708与包处理模块709和包处理模块710相连接。例如,在一种应用场景下,包交换模块707接收包处理模块701发送的数据包,该数据包的目的标识为包处理模块710的标识0xff10。当包交换模块707接收到该数据包后,从数据包中解析出目的标识0xff10,查询之后发现包交换模块707并无端口对应0xff10,则包交换模块707将数据包发送给包交换模块708,包交换模块708接收到该数据包之后,继续解析数据包的目的标识,然后通过与目的标识对应的端口将数据包发送给包处理模块710。
本实施例提供的装置,根据标识和端口之间的对应关系确定处理数据包的流程,因而不需要通过包处理模块之间的连接关系确定处理数据包的流程,从而可以简化包理模块之间连接关系;同时也可以减小不同包处理模块之间的耦合度,使得包处理模块的实现不依赖于具体的连接关系,提高了包处理模块的可移植性;进一步的,本实施例提供的方法,还可以降低数据包处理流程的复杂度。进一步的,本发明实施例提供的装置,也易于进行问题定位和测试。以下以一种测试的应用场景为例进一步说明。
实施例四
如图9所示,图9为对本发明实施例提供的一种数据包处理装置。本实施例提供的数据包处理装置包括测试模块708,可以用来进行各种测试。
包交换模块707与测试模块708相连接,测试模块708用于构造测试数据包,测试数据包的格式可以和包处理模块正常处理的数据包的格式一致。例如,测试数据包可采用图5给出的数据包的格式。
测试的方法,可以包括如下几个步骤,首先测试模块708配置测试参数,如测试数据包的内容,需要测试的包处理模块,测试数据包的长度等;将测试数据包的Data字段的值存放在测试模块的随机存储RAM中;在测试模块708中配置一次需要发多少测试数据包;配置连续发数据包时测试数据包与测试数据包之间的时间间隔;测试模块708启动发送脉冲,向包交换模块707发送测试数据包,包交换模块707根据测试数据包的目的标识,将数据包转发到被测试的包处理模块,被测试的包处理模块接收到测试数据包之后,按照所实现的通信协议对被测试数据包进行处理,处理完毕后向包交换模块返还被处理后的测试数据包。本实施例提供的测试方法,一方面便于对单个包处理模块进行测试;另一方面,也便于查看和分析测试结果,例如,可以通过查询测试模块708或者包交换模块707的相关寄存器,即可得到被处理完毕的测试数据包的值,通过分析该处理完毕的测试数据包的值,可以得知该被测试的包处理模块的处理细节。
在一种应用场景下,需要测试包交换模块707,预先在测试模块708中配置好需要填充到测试数据包中的内容,将测试模块708的发包模式配置为单次发送。测试开始后,测试模块708向包交换模块707发送测试数据包,然后根据从包交换模块707发回的测试数据包就可以分析测试数据包的转发和处理是否正确。如果进行异常测试,可以修改测试数据包的内容,通过测试模块708发送给包交换模块707,以测试包交换模块707是否会产生异常例如挂死。如果进行更具体的功能测试,测试模块可以针对包处理模块某一具体的功能构造测试数据进行测试,以观测该功能是否正常。
与现有技术相比,本实施例提供的装置简化了包处理模块之间的连接关系,从而可以方便地进行测试和问题定位。
现有技术中,包处理模块与包处理模块直接相连,与这两种连接方式相对应的,有两种测试方法。方法之一是通过发包仪器进行测试,发包仪器可以构造IP报文,并且能够收回IP报文并抓包显示出来;另一种测试方法为通过逻辑分析仪测试查看包处理模块的内部信号,通过信号进行测试或问题定位。
这两种测试方法,都存在如下缺点,测试工具在测试包处理模块时需要占用大量的资源,尤其是进行QOS测试时,需要通过仿真软件构造大量的用例进行测试,用例的仿真有时需要很长时间才能完成,仿真软件还可能因为占用内存太多而自动关闭;在定位问题时,也难以定位到产生问题的包处理模块;测试工具也难以单独测试一个包处理模块,例如实现Qos功能的包处理模块,往往需要与该包处理模块相关的所有模块开发完毕之后,才能进行测试,无法针对单个包处理模块进行单元测试。
而本发明所提供的实施例,各个包处理模块通过包交换模块转发数据包,因而可以通过在包交换模块上外挂一个测试模块,通过测试模块产生测试数据进行测试,因而不需要占用太多的系统资源,同时可以极大地提高测试效率;进一步的,本实施例提供的装置,可以通过包交换模块查看处理过程中产生的数据包,便于问题的定位;同时,本实施例还可以对各个包处理模块进行单元测试。
实施例五
如图10所示,图10为本发明实施例五提供的一种通信设备,包括上述的数据包处理装置901。
数据包处理装置901包括包交换模块以及多个包处理模块。每个包处理模块具备唯一的标识。在实现时,包交换模块以及多个包处理模块可以设置于单板上。
包交换模块901可以有多个物理端口,每个端口与一个包处理模块相连接。为了建立包处理模块的标识和端口的映射关系,例如,在单板上电复位的时候,每个包处理模块即通过各自的端口向包交换模块901发送标识,包交换模块901接收到标识,保存标识以及接收这些标识的端口,即可建立标识和端口之间的映射关系;或者端口和包处理模块的映射关系也可以预先配置在包交换模块901之中。
各包处理模块,可以各自连接到总线上,通过总线和包交换模块进行数据交换。图11给出了一种总线结构的连接方式。包交换模块9011、包处理模块9012-包处理模块9015都连接到单板的总线上,通过总线传输数据。
在通过总线结构连接的情形下,各个包处理模块需要分配一个虚拟端口,包交换模块9011维护一个虚拟端口和各个包处理模块的标识的映射表。包交换模块9011可以通过如下的方式获得映射关系。例如,在单板上电复位之后,包处理模块9012-包处理模块9015分别向包交换模块9011发送各自的标识,包交换模块9011为各个模块指定一个虚拟端口值并发送给各包处理模块;或者各个包处理模块以在单板上的硬件地址作为虚拟端口,和自身的标识一起发送给包交换模块9011,包交换模块9011接收到这些信息之后,即在寄存器或者RAM中维护一个包处理模块的硬件地址和包处理模块标识的映射表。
包交换模块9011还可以包括一个和多个路由子模块,用于解析从各个端口接收的数据包,获取所述数据包包括的目的标识,通过所述目的标识对应的端口发送所述数据包。
例如,在以硬件地址作为虚拟端口的情形下,各个包处理模块以在通信设备内部的硬件地址作为虚拟端口,包交换模块9011从数据包中获得目的标识,通过该目的标识得到目的包处理模块的在单板上的硬件地址,然后通过地址总线和数据总线向该硬件地址发送数据包。
在具备多个路由子模块的情形下,包交换模块9011还可以包括一个调度子模块,在调度子模块的调度之下,多个路由子模块可以同时路由不同的数据包。当有下一数据包到达包交换模块9011时,调度子模块通知处于空闲状态的路由子模块处理该数据包,将数据包送往正确的包处理模块,实现多线程处理。
包交换模块可以使用可编程逻辑器件或者现场可编程们阵列实现,也可以通过中央处理器来实现。
本实施例提供的通信设备,除了具有数据包处理装置之外,还可以具有其它功能模块,如中央处理器,随机存储器RAM等,本实施例提供的通信设备,可以应用于各种网元,如基站、基站控制器等网络设备。
在一种应用场景下,应用本实施例提供的通信设备从网络中接收到数据包后,将该数据包发送给数据包处理装置901的包处理模块9012,包处理模块9012处理完数据包之后,在数据包中添加源标识和目的标识,通过总线发送给包交换模块9011,包交换模块9011根据数据包的目的标识将数据包转发给下一包处理模块。当最后一个包处理模块处理完数据之后,删除数据包中的源标识信息和目的标识信息,然后将处理完毕的数据包发送到单板的RAM中,并通知中央处理器,以便于通信设备进行行其它处理,如将该数据包转发给另一个网元。
本实施例提供的通信设备,根据标识和端口之间的对应关系确定处理数据包的流程,因而不需要通过包处理模块之间的连接关系确定处理数据包的流程,从而可以简化包理模块之间连接关系;同时也可以减小不同包处理模块之间的耦合度,使得包处理模块的实现不依赖于具体的连接关系,提高了包处理模块的可移植性;进一步的,本实施例提供的方法,还可以降低数据包处理流程的复杂度。
Claims (14)
1.一种数据包处理方法,其特征在于,所述方法包括:
源包处理模块将下一处理数据包的包处理模块的标识作为目的标识添加到所述数据包;
通过第一端口从所述源包处理模块接收所述数据包,所述数据包包括目的标识,所述目的标识为下一处理所述数据包的包处理模块的标识;
解析所述数据包获取所述目的标识;
获取对应所述目的标识的端口作为第二端口;
通过所述第二端口将所述数据包发送给所述目的标识对应的包处理模块。
2.如权利要求1所述的方法,其特征在于,所述获取对应所述目的标识的端口作为第二端口,通过第一包交换模块和第二包交换模块实现,所述获取对应所述目的标识的端口作为第二端口,包括:
如果所述第一包交换模块不存在对应所述目的标识的端口,所述第一包交换模块将所述数据包发送给所述第二包交换模块;
所述第二包交换模块解析所述数据包获取所述目的标识;
所述第二包交换模块获取对应所述目的标识的端口作为第二端口。
3.如权利要求1所述的方法,其特征在于,
在所述通过第一端口从源包处理模块接收数据包之前,所述源包处理模块将所述源包处理模块的标识作为源标识添加到所述数据包;
在通过所述第二端口将所述数据包发送给所述目的标识对应的包处理模块之后,还包括:
所述目的标识对应的包处理模块解析所述数据包获得所述源标识,根据所述源标识对所述数据包进行处理。
4.如权利要求1-3所述的任一方法,其特征在于,所述包处理模块为可编程逻辑器件或现场可编程门阵列。
5.一种数据包处理装置,其特征在于,所述装置包括:
包交换模块,多个包处理模块;
所述包交换模块与所述多个包处理模块相连接;
所述包处理模块,用于在数据包中增加下一处理所述数据包的包处理模块的标识作为目的标识,向所述包交换模块发送所述携带有目的标识的数据包;
所述包交换模块,用于通过第一端口接收包处理模块中的第一包处理模块发送的数据包,从所述数据包中解析目的标识,获取对应所述目的标识的第二端口,并通过所述第二端口向包处理模块中的第二包处理模块发送所述数据包。
6.如权利要求5所述的数据包处理装置,其特征在于,所述包交换模块包括:
多个端口,用于分别与所述多个包处理模块相连接;
路由子模块,用于在所述多个端口中的第一端口接收所述第一包处理模块发送的数据包后,解析所述数据包获取目的标识,在所述多个端口中获取对应所述目的标识的第二端口,通过所述第二端口向所述第二包处理模块发送所述数据包。
7.如权利要求5所述的数据包处理装置,其特征在于,所述包处理模块包括:
发送子模块,用于在数据包中增加下一处理所述数据包的包处理模块的标识作为目的标识,在所述数据包中增加发送所述数据包的包处理模块的标识作为源标识,通过与所述包交换模块相连接的端口向所述包交换模块发送所述数据包;和/或
接收子模块,用于通过与所述包交换模块相连接的端口,从所述包交换模块接收另一包处理模块发送的数据包,并根据所述数据包中另一包处理模块的源标识对所述数据包进行处理。
8.如权利要求6所述的数据包处理装置,其特征在于,所述路由子模块为多个;
所述包交换模块还包括:
调度子模块,用于当多个端口中一个端口接收到数据包时,从所述多个路由子模块中选择一个路由子模块用于从所述接收到数据包的端口接收并转发所述数据包。
9.如权利要求5所述的数据包处理装置,其特征在于,所述装置还包括:
与所述包交换模块相连接的测试模块,用于产生测试数据包,在所述测试数据包中增加待测试包处理模块的标识作为目的标识,将所述测试数据包发送给所述包处理模块。
10.如权利要求5所述的数据包处理装置,其特征在于,所述包交换模块个数为多个,所述多个包交换模块中一个包交换模块至少与另一包交换模块相连接。
11.如权利要求10所述的装置,其特征在于,所述包交换模块中的任一包交换模块包括:
路由子模块和多个端口;
所述多个端口用于与多个包处理模块和至少一个其它包交换模块相连接;
所述路由子模块包括:
获取子模块:用于通过所述多个端口中的第一端口接收与所述第一端口相连接的包处理模块发送的数据包,解析所述数据包获取目的标识;
端口查询子模块,用于在所述多个端口中查询对应所述获取子模块获取的目的标识的端口作为第二端口;
处理子模块,用于如果所述端口查询子模块没有查询到对应所述目的标识的端口,将所述数据包转发给另一包交换模块;或者,如果所述查询子模块查询到对应所述目的标识的第二端口,通过所述第二端口发送所述数据包。
12.如权利要求5-11中任一所述的数据包处理装置,其特征在于,所述包处理模块为实现按照通信协议处理数据包功能的可编程逻辑器件或现场可编程门阵列。
13.一种通信设备,包括权利要求5-11中任一所述的数据包处理装置。
14.如权利要求13所述的通信设备,包括基站或基站控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101095563A CN101626343B (zh) | 2009-08-05 | 2009-08-05 | 数据包交换的方法、装置和通信设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101095563A CN101626343B (zh) | 2009-08-05 | 2009-08-05 | 数据包交换的方法、装置和通信设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101626343A CN101626343A (zh) | 2010-01-13 |
CN101626343B true CN101626343B (zh) | 2012-04-04 |
Family
ID=41522037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101095563A Active CN101626343B (zh) | 2009-08-05 | 2009-08-05 | 数据包交换的方法、装置和通信设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101626343B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012070111A (ja) * | 2010-09-22 | 2012-04-05 | Fuji Xerox Co Ltd | 通信システム |
CN102438007B (zh) * | 2011-10-11 | 2015-02-04 | 武汉滨湖电子有限责任公司 | 一种雷达终端虚拟总线模块组织方法 |
CN104168199B (zh) * | 2013-05-15 | 2019-07-16 | 中兴通讯股份有限公司 | 包处理方法及装置 |
CN106559838B (zh) * | 2015-09-24 | 2019-12-06 | 大唐移动通信设备有限公司 | 业务处理优化方法及装置 |
CN108881358B (zh) * | 2017-09-12 | 2019-11-19 | 视联动力信息技术股份有限公司 | 一种视联网终端以及基于视联网终端的服务处理方法 |
CN112165430B (zh) * | 2020-09-24 | 2024-02-13 | 阿波罗智联(北京)科技有限公司 | 数据路由方法、装置、设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514605A (zh) * | 2003-03-27 | 2004-07-21 | 中国科学院计算机网络信息中心 | 一种层次式交换网络系统 |
CN1625160A (zh) * | 2003-12-12 | 2005-06-08 | 威盛电子股份有限公司 | 可控制数据包传送的交换器及相关方法 |
CN1992713A (zh) * | 2005-12-30 | 2007-07-04 | 西门子(中国)有限公司 | 一种防止介质访问控制层欺骗的方法及其装置 |
EP1290837B1 (en) * | 2000-06-05 | 2007-10-24 | Qlogic Switch Products, Inc. | Hardware-enforced loop-level hard zoning for fibre channel switch fabric |
-
2009
- 2009-08-05 CN CN2009101095563A patent/CN101626343B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1290837B1 (en) * | 2000-06-05 | 2007-10-24 | Qlogic Switch Products, Inc. | Hardware-enforced loop-level hard zoning for fibre channel switch fabric |
CN1514605A (zh) * | 2003-03-27 | 2004-07-21 | 中国科学院计算机网络信息中心 | 一种层次式交换网络系统 |
CN1625160A (zh) * | 2003-12-12 | 2005-06-08 | 威盛电子股份有限公司 | 可控制数据包传送的交换器及相关方法 |
CN1992713A (zh) * | 2005-12-30 | 2007-07-04 | 西门子(中国)有限公司 | 一种防止介质访问控制层欺骗的方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101626343A (zh) | 2010-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104935516B (zh) | 基于软件定义网络的通信系统及方法 | |
CN101626343B (zh) | 数据包交换的方法、装置和通信设备 | |
CN102938794B (zh) | 地址解析协议arp消息转发方法、交换机和控制器 | |
CN103905463B (zh) | 一种适用于多路径传输的连接管理与控制方法 | |
EP2544417B1 (en) | Communication system, path control apparatus, packet forwarding apparatus and path control method | |
CN107925623A (zh) | 覆盖网络的互连 | |
CN107801249A (zh) | 无线通信系统的资源分配方法及其设备和系统 | |
CN108768692A (zh) | 一种网络创建方法、相关设备及系统 | |
CN106559302A (zh) | 单播隧道建立方法、装置和系统 | |
CN103701945B (zh) | 一种地址转换方法和装置 | |
CN104202398B (zh) | 远程控制的方法、装置及系统 | |
CN104022936A (zh) | 一种隧道建立方法和装置 | |
CN101242370B (zh) | 实现以太网与帧中继互联的方法与协议转换设备 | |
CN108075949A (zh) | 一种vpws环境实现rfc2544的方法及设备 | |
CN103354509A (zh) | 一种链路连接信息的获取方法和设备 | |
CN107820262A (zh) | 参数配置方法、装置及系统 | |
CN102326370B (zh) | 一种报文处理方法、设备和系统 | |
CN104506396B (zh) | 设备全端口Full Mesh性能的测试方法及系统 | |
CN104469822A (zh) | 一种测试方法、基站及系统 | |
CN110855464A (zh) | 一种网络拓扑结构调整方法和装置 | |
CN105429901B (zh) | 上行数据包转发方法及装置、下行数据包转发方法及装置 | |
CN108093041A (zh) | 单通道vdi代理服务系统及实现方法 | |
CN105933235A (zh) | 数据通信方法及装置 | |
CN103986714B (zh) | 将总线控制网络接入avb网络的代理实现方法及装置 | |
CN109753392A (zh) | 网络桥接装置、总线测试的方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |