板间通信方法及接口板的制作方法

文档序号:7971841阅读:151来源:国知局
专利名称:板间通信方法及接口板的制作方法
技术领域
本发明涉及一种板间通信方法,尤其涉及一种应用于分布式设备中进行板间通信的能够提高实际有效带宽利用率的板间通信方法,及应用于分布式设备中的能够达到同样效果的接口板。
背景技术
分布式设备,如分布式路由器等,具有多个接口板,每个接口板都具有若干个接口。在工作时,每个接口板可以自行完成数据包的转发,也可以与其他接口板协作完成数据包的转发。因此,分布式设备的转发方式可以分为两种,一种是板内转发,另一种是板间转发。
如图1所示,现有分布式设备主要包括主板10,备板20,若干个分布式的接口板,每个接口板上具有若干接口,并且主板10,备板20及若干个接口板均连接到系统总线30上。板内转发是指数据包在一个接口板上的不同接口之间进行转发的转发方式,如图1中的数据包传输方向61,从接口板43的接口53送入转发设备,经转发后,从同一接口板43的接口54送出,完成板内转发;板间转发是指数据包在不同接口板上的接口之间进行转发的转发方式,如图1中的数据包传输方向62,从接口板41的接口51送入转发设备,经转发后,从另一接口板42的接口52送出,完成板间转发。
现有技术的缺陷在于在板间转发方式中,被转发的数据包除了数据包的数据体本身以外,还需要携带一些附加信息,这些附加信息与要转发的数据体一起作为一个数据包,从一个接口板转发到另一个接口板。例如,在应用Free BSD(Free Berkeley Systems Distribution)网络操作系统时,这个数据包也被称为MBUF(Memory Buffers)。MBUF包括MBUF头和数据体两部分。其中,数据体用来存放要转发的数据信息,MBUF头用于存放附加的上下文信息,主要包括两种1、为了进行后续处理而需要进行保存的数据。例如,在IP输入(IP_Input)过程中,在进行网络地址翻译(Network Address Translation,简称NAT)时,保存的原始IP地址会被替换成新的IP地址,这样就丢失了原始的IP地址。为了在后续处理中仍然能够得到翻译前的原始IP地址,现有技术的做法是将该原始的IP地址保存在MBUF头中。
2、为了在各个处理过程中进行参数传递。例如,以太输入(Eth_Input)过程中,底层驱动软件会将入接口的接口索引号(ifIndex)传递过来,为了使后续各个处理过程也能得到该信息,现有技术的做法是在函数接口中进行调用,或者是将该信息记录在MBUF头中。由于MBUF伴随整个转发流程,因此第二种方法更为方便,应用也更广泛。
MBUF头与数据体两部分可以在物理上连续或不连续分布。在板间转发时,MBUF头和数据体都要从一个接口板转发到另一个接口板,但有的时候,需要转发的数据体信息量很小,而相比之下,MBUF头的长度却很大,从而造成传输小数据体时,实际的有效带宽利用率很低。例如,假设一个MBUF头长度为256字节,需要传输的小数据体长度为64字节,此时,实际有效带宽利用率仅为64/(256+64)=20%。即,如果备板总线带宽为10G,那么实际有效利用的带宽仅为2G,可见实际有效带宽利用率非常低。

发明内容
本发明的目的在于,提供一种板间通信方法及接口板,使得在板间进行数据包传输时,提高实际有效带宽利用率。
为实现上述目的,本发明提供了一种板间通信方法,包括入接口板接收到一个数据包后,将该数据包的包头中的冗余数据块删除,将包头中的必要数据块组合成压缩包头,并将压缩包头与数据包中的数据体组合成压缩数据包;将压缩数据包发送给出接口板;出接口板接收到压缩数据包后,根据压缩包头创建冗余数据块,将必要数据块和冗余数据块组合成恢复包头,将恢复包头与压缩数据包中的数据体组合成恢复数据包。
为实现上述目的,本发明提供了一种接口板,包括数据块处理模块,用于在发送或接收数据包时,删除或创建冗余数据块;数据包组合模块,用于在发送或接收数据包时,将来自于数据块处理模块的必要数据块组合成压缩包头,并将该压缩包头与数据包中的数据体组合成压缩数据包;或者,将来自于数据块处理模块的必要数据块和冗余数据块组合成恢复包头,并将恢复包头与压缩数据包中的数据体组合成恢复数据包。
在本发明中,由于实际进行板间传输的数据包的包头仅包括必要数据块,因此,大大减少了包头数据的长度,从而提高了实际有效带宽利用率。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


图1为现有分布式设备的转发方式示意图;图2为本发明实施例1所述板间通信方法流程图;图3为本发明实施例1中IP转发过程举例示意图;图4为本发明实施例2所述板间通信方法流程图;图5为本发明实施例3所述板间通信方法流程图;图6为具有本发明实施例4所述接口板的分布式设备结构示意图;图7为具有本发明实施例5所述接口板的分布式设备结构示意图。
具体实施例方式
实施例1本实施例提供了一种通过对数据包的包头进行压缩,以减小包头数据长度,提高实际有效带宽利用率的板间通信方法。如图2所示,步骤101,入接口板接收到一个数据包后,将包头中的冗余数据块删除。其中,冗余数据块是指包头中不需进行板间传输的数据块。例如,设本步骤中所述的包头是指MBUF头,该包头包括A,B,C,D,E五个数据块。如图3所示,在IP转发过程中,包括以太输入(Eth_Input)、IP输入(IP_Input)、IP前转(IP_Forward)、IP输出(IP_Output)和以太输出(Eth_Output)等多个处理过程。上述处理过程需要对MBUF头中的数据块进行设置或读取,以实现参数传递。具体从图3可以看出,数据块A只在输入过程中需要进行设置或读取,数据块B只在输出过程中需要进行设置或读取,数据块D虽然在输入过程中进行了设置,但在输出过程中又被重新设置,实际上,在输入过程中设置在数据块D中的内容并没有在输出过程中进行利用。因此,数据块A、B和D中的内容都不需要进行板间传输,将数据块A、B和D作为冗余数据块从MBUF头中删除。
步骤102,将必要数据块组合成压缩包头,将压缩包头与数据包中的数据体组合成压缩数据包。如图3所示,数据块C和数据块E需要在输入过程中进行设置,然后在输出过程中进行读取,即数据块C、E中的内容需要进行板间传输,因此,将数据块C、E作为必要数据块。
步骤103,将压缩数据包发送给出接口板。具体发送方法可以根据现有的路由转发技术,通过主板等设备进行转发或透传。
步骤104,出接口板接收到压缩数据包后,根据压缩包头中的必要数据块创建冗余数据块,例如,在上例中,MBUF头中只包括数据块C、E,可以根据数据块C、E的位置顺序,创建出其他的冗余数据块A、B及D,由于冗余数据块A、B及D中的内容不需要进行板间传输,因此,出接口板只需要在相应的数据块位置上创建空白数据块即可。创建完冗余数据块后,将必要数据块和冗余数据块组合成恢复包头,将恢复包头与数据包中的数据体组合成恢复数据包,从而完成对一个数据包的传输过程。
在本实施例所述步骤中,由于实际进行板间传输的数据包的包头仅包括必要数据块,因此,大大减少了包头数据的长度。例如,MBUF头长为256字节,压缩后的压缩包头长度为64字节,则实际有效带宽利用率可以达到64/(64+64)=50%,与20%相比,实际有效带宽利用率大大提高。
需要指出的是,本实施例以应用Free BSD网络操作系统时的MBUF数据包为例进行了说明,但对于其他系统中的其他类型的数据包,只要应用本方法将包头中的冗余数据块删除,不对其进行板间传输,都可以起到提高实际有效带宽利用率的技术效果,因此对于操作系统及数据包的种类并没有限制。
另外,还需要指出的是,如果一个数据包需要向多个出接口板进行转发,步骤101中,在将数据包的包头中的冗余数据块删除之前,还应当将收到的数据包保存为备份数据包。根据该入接口板与其他出接口板对包头中的数据块的设置和读取情况,从备份数据包中删除冗余数据块,进而根据本实施例所述方法继续进行板间传输。
实施例2实施例1中所述的板间传输方法需要入接口板及出接口板的CPU参与计算,如步骤1中,入接口板的CPU需要从内存中读取接收到的数据包,然后将包头中的冗余数据块删除。相应地,步骤104中,出接口板的CPU需要将生成的恢复数据包拷贝到内存中,然后再发往相应接口。因此要占用CPU的计算能力,本实施例提出了一种解决上述问题的板间通信方法。如图4所示,步骤201,入接口板接收到一个数据包后,将包头中的冗余数据块删除。以实施例1所述的MBUF头为例,即删除冗余数据块A、B和D。
步骤202,将必要数据块进行相邻排列。在上例中,冗余数据块A、B和D被删除后,必要数据块C和E仍然分布于原有的存储地址上,彼此之间可能并不相邻。将必要数据块C、E进行相邻排列,即将不相邻的各个数据块在存储空间上相邻排列在一起。
步骤203,将经过相邻排列的必要数据块组合成压缩包头,将该压缩包头与数据包中的数据体组合成压缩数据包。在上例中,将经过相邻排列后的必要数据块C、E组合成压缩包头。
步骤204,在压缩包头中写入冗余数据块预留信息。在上例中,由于必要数据块C、E进行了相邻排列,作为出接口板的出接口板无法根据原有排列顺序判断出有哪些冗余数据块被删除,也就无法进行相应的数据信息设置及读取。为了解决这一问题,本步骤采用的方法是传输冗余数据块预留信息,在该信息中写入要求出接口板预留的冗余数据块的位置。
步骤205,将压缩数据包发送给出接口板。具体发送方法可以根据现有的路由转发技术,通过主板等设备进行转发或透传,尤其对于以PCI-X或PCI-E等交互总线方式连接的分布式设备,板间透传的过程实际上相当于板间透写对方内存的操作。在透写时,为相邻排列的必要数据块一次性指定相对地址,将压缩数据包透写于出接口板的内存中。
步骤206,出接口板接收到压缩数据包后,根据压缩包头中的冗余数据块预留信息,创建冗余数据块,将必要数据块和冗余数据块组合成恢复包头,将恢复包头与数据包中的数据体组合成恢复数据包,从而完成对一个数据包的传输过程。
在本实施例所述步骤中,由于对必要数据块进行了相邻排列,因此在数据包传输时只需要一次性指定相对地址,即可以完成数据包的传输,而不必每次都进行内存拷贝的操作,因此,在提高实际有效带宽利用率的同时,还可以降低CPU的占用率,适用于可以进行内存透写的PCI总线类分布式设备。
需要指出的是,本实施例以应用Free BSD网络操作系统时的MBUF数据包为例进行了说明,但对于其他系统中的其他类型的数据包,只要应用本方法将包头中的冗余数据块删除,并对必要数据包进行相邻排列,都可以起到提高实际有效带宽利用率,降低CPU占用率的技术效果,因此对于操作系统及数据包的种类并没有限制。
另外,还需要指出的是,步骤202、203和204的顺序并不是固定的。也可以先将必要数据块组合成压缩包头,再对其进行相邻排列,或者先将冗余数据块预留信息写入到压缩包头中,再对必要数据块进行相邻排列。只要最终使压缩包头中包含有相邻排列的必要数据块及冗余数据块预留信息,都可以达到预期效果,采取不同的顺序都是可行的。
另外,还需要指出的是,如果一个数据包需要向多个出接口板进行转发,步骤201中,在将数据包的包头中的冗余数据块删除之前,还应当将收到的数据包保存为备份数据包。根据该入接口板与其他出接口板对包头中的数据块的设置和读取情况,从备份数据包中删除冗余数据块,进而根据本实施例所述方法继续进行板间传输。
实施例3数据包的包头中的数据块大都是针对不同的业务需求而产生的,由于业务种类多种多样,从而造成数据块也有很多,因此增大了包头的数据长度。但实际上,在某一时刻,并不是所有的业务都被启动运行。为了进一步提高实际有效带宽利用率,本实施例提供了一种基于业务的配置状态,压缩包头的方法。如图5所示,步骤301,入接口板接收到一个数据包后,将包头中的冗余数据块删除。以实施例1所述的MBUF头为例,由于数据块A只在输入过程中需要进行设置或读取,数据块B只在输出过程中需要进行设置或读取,数据块D虽然在输入过程中进行了设置,但在输出过程中又被重新设置,实际上,在输入过程中设置在数据块D中的内容并没有在输出过程中进行利用。因此,数据块A、B和D中的内容都不需要进行板间传输,即删除冗余数据块A、B和D。
步骤302,将包头中未启动业务所对应的未启动数据块删除。具体可以为,通过钩子函数调用相应的业务传输函数,查询未启动业务所对应的未启动数据块,将未启动数据块删除。其中,钩子函数是指一种处理或过滤事件的回调函数,用于捕捉进程中发生的事件,每当目标事件发生时,系统都会将调用该函数,目的是为了根据不同的事件,自动进行函数调用。业务传输函数是根据业务的配置信息而预先创建的传输函数,用于根据当前设备上配置的业务来查询业务所对应的数据块。在上例中,删除冗余数据块后余下数据块C、E,假设数据块C、E分别对应不同的业务,并且数据块E所对应的业务此时并未启动,因此也就不需要传输数据块E中的数据内容。由钩子函数捕捉到这样的业务配置时,调用相应的业务传输函数,将未启动数据块E删除,只保留数据块C作为已启动必要数据块。
步骤303,将已启动必要数据块组合成压缩包头,将该压缩包头与数据包中的数据体组合成压缩数据包。在上例中,将数据块C组合成压缩包头,进而与数据体组合成压缩数据包。
步骤304,将压缩数据包发送给出接口板。具体发送方法可以根据现有的路由转发技术,通过主板等设备进行转发或透传。
步骤305,出接口板接收到压缩数据包后,通过钩子函数调用相应的业务传输函数,查询出未启动数据块;根据压缩包头中的已启动必要数据块及查询出的未启动数据块创建冗余数据块;将压缩包头中的已启动必要数据块、查询出的未启动数据块及创建的冗余数据块组合成恢复包头,进而将恢复包头与压缩数据包中的数据体组合成恢复数据包,从而完成对一个数据包的传输。例如,在上例中,由业务传输函数查询出的未启动数据块为数据块E,基于压缩包头中的必要数据块C和查询出的未启动数据块E创建冗余数据块A、B和D,将数据块A、B、C、D和E组合成恢复包头,进而与数据体组合成恢复数据包。
在本实施例所述步骤中,由于未启动数据块未进行板间传输,从而进一步提高了实际有效带宽利用率。例如,在上例中,如果数据块C和E的大小分别为32字节,则实际有效带宽利用率可以达到64/(64+32)=67%。
另外需要指出的是,如果已启动必要数据块有多个,且分布于不相邻的存储地址,则仍然可以按照实施例2中的步骤202所述方法,在将压缩数据包发往出接口板之间,将多个已启动必要数据块进行相邻排列,即将不相邻的多个已启动必要数据块在存储空间上相邻排列在一起。对于以PCI-X或PCI-E等交互总线方式连接的分布式设备,在透写内存时,为相邻排列的已启动必要数据块一次性指定相对地址,将压缩数据包透写于出接口板的内存中,从而提高CPU的利用率。
另外,还需要指出的是,如果一个数据包需要向多个出接口板进行转发,步骤301中,在将数据包的包头中的冗余数据块删除之前,还应当将收到的数据包保存为备份数据包。根据该入接口板与其他出接口板对包头中的数据块的设置和读取情况,从备份数据包中删除冗余数据块,进而根据本实施例所述方法继续进行板间传输。
实施例4本实施例提供了一种能够提高板间通信实际有效带宽利用率的接口板结构。如图6所示,为具有本实施例所述接口板的分布式设备示意图,包括主板10,备板20,接口板41、42等若干个接口板,均连接到系统总线30上;每个接口板,以接口板41为例,均设置有接口51等若干个接口,数据块处理模块411,数据包组合模块421,与系统总线30相连的总线接口431,用于收发数据包。其中,数据块处理模块411,数据包组合模块421,总线接口431及若干个接口均连接到板内总线441上。接口板42及其他接口板与接口板41结构相同。以下以接口51需要向接口52进行板间数据包传输为例,说明该设备的工作原理。
接口板41的接口51收到一个数据包后,数据块处理模块411将包头中的冗余数据块删除,如果该数据包还要向其他出接口板进行转发,在删除冗余数据块之前,还要将收到的数据包保存为备份数据包。然后将必要数据块通过板内总线441发送给数据包组合模块421;或者,为了节省CPU的占用率,还可以对必要数据块进行相邻排列,将排列后的必要数据块及冗余数据块预留信息通过板内总线441发送给数据包组合模块421。数据包组合模块421将来自于数据块处理模块411的信息组合成压缩包头,并将该压缩包头与来自于板内总线441的数据包的数据体组合成压缩数据包。数据包组合模块421将组合后的压缩数据包通过板内总线441发送给总线接口431,进而通过系统总线30发送给主板10,由主板10发送给接口板42,具体发送方法可以根据现有的路由转发技术,通过主板等设备进行转发或透传。
接口板42通过总线接口432接收到来自于接口板41的压缩数据包后,数据块处理模块412根据压缩包头创建冗余数据块,如果该压缩包头中的必要数据块未进行相邻排列,则根据必要数据块当前的位置顺序创建冗余数据块;如果该压缩包头中的必要数据块进行了相邻排列,改变了原有的位置顺序,则根据压缩包头中的冗余数据块预留信息创建冗余数据块。将该创建的冗余数据块通过板内总线442发送给数据包组合模块422。数据包组合模块422将该冗余数据块和来自于板间总线442的压缩包头中的必要数据块组合成恢复包头,进而将恢复包头与压缩数据包中的数据体组合成恢复数据包,并将该恢复数据包通过板内总线442发送给接口52,从而完成对一个数据包的传输过程。
在本实施例所述步骤中,由于实际进行板间传输的数据包的包头仅包括必要数据块及少量的冗余数据块预留信息,因此,大大减少了包头数据的长度,从而提高了实际有效带宽利用率。
实施例5本实施例所述接口板在实施例4基础上增加了函数调用模块。以接口板41为例,增加了函数调用模块511,函数调用模块511也连接在板内总线441上。接口板42及其他接口板都具有相同的结构。以下仍然以接口51需要向接口52进行板间数据包传输为例,说明该设备的工作原理。
接口板41的接口51收到一个数据包后,数据块处理模块411将包头中的冗余数据块删除,并将必要数据块通过板内总线441发送给函数调用模块511。函数调用模块511通过钩子函数调用预先设置的业务传输函数,查询出未启动业务所对应的未启动数据块,将其从必要数据块中删除。将其余的已启动必要数据块发送给数据包组合模块421。数据包组合模块421将来自于数据块处理模块411的信息组合成压缩包头,并将该压缩包头与来自于板内总线441的数据包的数据体组合成压缩数据包。数据包组合模块421将组合后的压缩数据包通过板内总线441发送给总线接口431,进而通过系统总线30发送给主板10,由主板10发送给接口板42,具体发送方法可以根据现有的路由转发技术,通过主板等设备进行转发或透传。
接口板42通过总线接口432接收到来自于接口板41的压缩数据包后,函数调用模块512通过钩子函数调用预先设置的业务传输函数,查询出未启动业务所对应的未启动数据块,并将其发送给数据块处理模块412。数据块处理模块412根据压缩包头中的已启动必要数据块及来自于函数调用模块512的未启动数据块,创建冗余数据块,并将该冗余数据块与未启动数据块一并通过板内总线442发送给数据包组合模块422。数据包组合模块422从板间总线442的压缩包头中提取出已启动必要数据块,并将其与冗余数据块及未启动数据块组合成恢复包头,进而将恢复包头与压缩数据包中的数据体组合成恢复数据包,并将该恢复数据包发送接口52,从而完成对一个数据包的传输。
由于在本实施例中,函数调用模块511将未启动数据块从必要数据块中删除,使其不在板间进行传输,因此减少了实际传输的包头大小,从而进一步提高了实际有效带宽利用率。而未启动数据块对应的是未启动业务,因此并不影响数据传输的结果。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
权利要求
1.一种板间通信方法,其特征在于,包括入接口板接收到一个数据包后,将该数据包的包头中的冗余数据块删除,将包头中的必要数据块组合成压缩包头,并将压缩包头与数据包中的数据体组合成压缩数据包;将压缩数据包发送给出接口板;出接口板接收到压缩数据包后,根据压缩包头创建冗余数据块,将必要数据块和冗余数据块组合成恢复包头,将恢复包头与压缩数据包中的数据体组合成恢复数据包。
2.根据权利要求1所述的板间通信方法,其特征在于,所述根据压缩包头创建冗余数据块包括根据压缩包头中的必要数据块创建冗余数据块。
3.根据权利要求1所述的板间通信方法,其特征在于,所述步骤包括将压缩数据包发送给出接口板之前,还将必要数据块进行相邻排列。
4.根据权利要求3所述的板间通信方法,其特征在于,所述步骤还包括将压缩数据包发送给出接口板之前,还在压缩包头中写入冗余数据块预留信息。
5.根据权利要求4所述的板间通信方法,其特征在于,所述根据压缩包头创建冗余数据块包括根据压缩包头中的冗余数据块预留信息,创建冗余数据块。
6.根据权利要求1所述的板间通信方法,其特征在于,所述步骤还包括将压缩数据包发送给出接口板之前,还将包头中的未启动业务所对应的未启动数据块删除,并将已启动必要数据块组合成压缩包头。
7.根据权利要求6所述的板间通信方法,其特征在于,所述将未启动数据块删除包括通过钩子函数调用相应的业务传输函数,查询未启动业务所对应的未启动数据块,将未启动数据块删除。
8.根据权利要求7所述的板间通信方法,其特征在于,所述步骤还包括出接口板接收到压缩数据包后,还通过钩子函数调用相应的业务传输函数,查询出未启动数据块。
9.根据权利要求8所述的板间通信方法,其特征在于,所述根据压缩包头创建冗余数据块包括根据压缩包头中的已启动必要数据块及查询出的未启动数据块创建冗余数据块。
10.根据权利要求9所述的板间通信方法,其特征在于,所述组合成恢复包头包括将压缩包头中的已启动必要数据块、查询出的未启动数据块及创建的冗余数据块组合成恢复包头。
11.根据权利要求1-10中任意项所述的板间通信方法,其特征在于,所述将数据包的包头中的冗余数据块删除之前还包括将收到的数据包保存为备份数据包。
12.根据权利要求3-5中任意项所述的板间通信方法,其特征在于,还包括为相邻排列的必要数据块一次性指定相对地址,将压缩数据包透写于出接口板的内存中。
13.一种接口板,其特征在于,包括数据块处理模块,用于在发送或接收数据包时,删除或创建冗余数据块;数据包组合模块,用于在发送或接收数据包时,将来自于数据块处理模块的必要数据块组合成压缩包头,并将该压缩包头与数据包中的数据体组合成压缩数据包;或者,将来自于数据块处理模块的必要数据块和冗余数据块组合成恢复包头,并将恢复包头与压缩数据包中的数据体组合成恢复数据包。
14.根据权利要求13所述的接口板,其特征在于,还包括函数调用模块,用于通过钩子函数调用相应的业务传输函数,查询出未启动业务所对应的未启动数据块,并将未启动数据块从来自于所述数据块处理模块的必要数据块中删除。
15.根据权利要求13或14所述的接口板,其特征在于所述接口板设置在路由器设备中,与系统总线相连。
全文摘要
本发明提供了一种板间通信方法和接口板。其中,方法包括接收到一个数据包后,将冗余数据块删除,将必要数据块组合成压缩包头,并与数据体组合成压缩数据包,发送给出接口板;接收到压缩数据包后,根据压缩包头创建冗余数据块,将必要数据块和冗余数据块组合成恢复包头,将恢复包头与数据体组合成恢复数据包。装置包括数据块处理模块,用于删除或创建冗余数据块;数据包组合模块,用于组合压缩包头、压缩数据包或恢复包头、恢复数据包。由于实际进行板间传输的数据包的包头仅包括必要数据块,因此,大大减少了包头数据的长度,从而提高了实际有效带宽利用率。
文档编号H04L29/06GK1933451SQ20061015009
公开日2007年3月21日 申请日期2006年10月26日 优先权日2006年10月26日
发明者王飓, 周顺林 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1