一种数据报文发送方法、设备及系统的制作方法

文档序号:7988106阅读:490来源:国知局
一种数据报文发送方法、设备及系统的制作方法
【专利摘要】本发明实施例提供一种数据报文发送方法、设备及系统。该方法包括:当前节点存在待发送的数据报文时,判断下游节点的当前缓存剩余空间是否大于等于所述数据报文的长度;若是,所述当前节点将所述数据报文发送至所述下游节点;若否,所述当前节点将所述数据报文拆分为至少两个子数据报文,并向所述下游节点逐个发送所述子数据报文,其中,所述子数据报文的长度小于等于所述下游节点的当前缓存剩余空间。根据本发明提供一种数据报文发送方法、设备及系统,有效减少了链路空闲时间,充分了利用链路资源。
【专利说明】一种数据报文发送方法、设备及系统
【技术领域】
[0001]本发明涉及流量控制技术,尤其涉及一种数据报文发送方法、设备及系统,属于通信【技术领域】。
【背景技术】
[0002]一个复杂的网络系统由各类设备(如交换机、路由器、核心网),以及这些设备之间的连接通路组成。当源节点发送一个数据报文时,该数据报文通常需要通过网络上的若干节点才能最终到达目的地。各节点中含有缓冲区,用于暂存该节点中没有处理完毕的数据报文。当节点的缓冲区不足以缓存所接收到的数据报文时,会导致数据报文丢失,由发送端重新向该节点发送相应的数据报文,从而造成网络带宽的浪费。
[0003]针对上述问题,目前的网络系统中通常采用以下方式,来提高网络带宽的利用率:当前节点需要向下游节点转发数据报文时,检测下游节点的剩余缓存空间是否能够容纳该数据报文,若能够容纳,则向下游节点发送该数据报文;若不能够容纳,则暂时不向下游节点发送数据报文,等待下游节点的拥塞解除。
[0004]当在网络系统中的各节点采用以上方式进行数据报文发送时,虽然避免了由于数据报文接收节点的缓存不足而导致数据报文丢失和数据报文重传的问题,在一定程度上提高了网络带宽的利用率,但是由于数据报文传输的前提为:下游节点必须具备接收完整数据报文的能力,才会进行数据报文的发送,造成了链路的空闲和浪费。

【发明内容】

[0005]针对现有技术中的缺陷,本发明提供一种数据报文发送方法、设备及系统,用以有效减少链路空闲时间,充分利用链路资源。
[0006]第一方面,提供一种数据报文发送方法,包括:
[0007]当前节点存在待发送的数据报文时,判断下游节点的当前缓存剩余空间是否大于等于所述数据报文的长度;
[0008]若是,所述当前节点将所述数据报文发送至所述下游节点;若否,所述当前节点将所述数据报文拆分为至少两个子数据报文,并向所述下游节点逐个发送所述子数据报文,其中,所述子数据报文的长度小于等于所述下游节点的当前缓存剩余空间。
[0009]在第一方面的第一种可能的实现方式中,所述待发送的数据报文包括所述当前节点从上游节点接收的构成所述数据报文的全部子数据报文;
[0010]相应地,所述当前节点将所述数据报文发送至所述下游节点,包括:
[0011] 所述当前节点将构成所述数据报文的全部子数据报文,合并为所述数据报文,并发送至所述下游节点。
[0012]在第一方面的第二种可能的实现方式中,所述当前节点将所述数据报文拆分为至少两个子数据报文,包括:
[0013]所述当前节点判断,若按照预设的拆分子数据报文数量阈值,对所述数据报文进行拆分,拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间;
[0014]若是,则将所述数据报文拆分为数量小于等于所述拆分子数据报文数量阈值的子数据报文;
[0015]若否,则等待所述下游节点更新所述当前缓存剩余空间,并根据更新后的当前缓存剩余空间,重新执行所述判断拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间的操作。
[0016]结合第一方面或第一方面的第一或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述当前节点将所述数据报文拆分为至少两个子数据报文之后,且向所述下游节点逐个发送所述子数据报文之前,还包括:
[0017]所述当前节点在各所述子数据报文中设置唯一的子标识,并设置用于指示所述子标识有效的使能位;
[0018]相应地,所述向所述下游节点逐个发送所述子数据报文之后,还包括:
[0019]所述当前节点接收所述下游节点返回的、携带有所述子标识的确认报文或否定确认报文,并根据所述确认报文或否定确认报文所携带的所述子标识,对重新播送缓存进行
清理和/或进行重传。
[0020]第二方面,提供一种数据报文发送设备,包括:
[0021]判断模块,用于当存在待发送的数据报文时,判断下游节点的当前缓存剩余空间是否大于等于所述数据报文的长度;
[0022]发送处理模块,用于若所述判断模块判断为是,将所述数据报文发送至所述下游节点;若所述判断模块判断为否,将所述数据报文拆分为至少两个子数据报文,并向所述下游节点逐个发送所述子数据报文,其中,所述子数据报文的长度小于等于所述下游节点的当前缓存剩余空间。
[0023]在第二方面的第一种可能的实现方式中,所述待发送的数据报文包括数据报文发送设备从上游节点接收的构成所述数据报文的全部子数据报文;相应地,所述发送处理模块还用于:
[0024]将构成所述数据报文的全部子数据报文,合并为所述数据报文,并发送至所述下游节点。
[0025]在第二方面的第二种可能的实现方式中,所述发送处理模块用于:
[0026]判断若按照预设的拆分子数据报文数量阈值对所述数据报文进行拆分,拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间;
[0027]若是,则将所述数据报文拆分为数量小于等于所述拆分子数据报文数量阈值的子数据报文;
[0028]若否,则等待所述下游节点更新所述当前缓存剩余空间,并根据更新后的当前缓存剩余空间,重新执行所述判断拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间的操作。
[0029]结合第二方面或第 二方面的第一或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述发送处理模块还用于:
[0030]在将所述数据报文拆分为至少两个子数据报文之后,且向所述下游节点逐个发送所述子数据报文之前,在各所述子数据报文中设置唯一的子标识,并设置用于指示所述子标识有效的使能位;
[0031]相应地,在所述向所述下游节点逐个发送所述子数据报文之后,接收所述下游节点返回的、携带有所述子标识的确认报文或否定确认报文,并根据所述确认报文或否定确认报文所携带的所述子标识,对重新播送缓存进行清理和/或进行重传。
[0032]第三方面,提供一种数据报文发送系统,包括本发明提供的数据报文发送设备,以及与所述数据报文发送设备连接的下游节点。
[0033]根据本发明实施例的数据报文发送方法、设备及系统,,由于当前节点在发送数据报文时,根据链路上的缓存资源自动判断是否对数据报文进行拆分发送,即,如果下游节点提供的缓存空间不能够容纳待发送的完整的数据报文,只要满足下游节点现有的缓存空间能够容纳待发送的数据报文的部分数据,就可以将大报文拆分为小报文,先行传送完整报文的一部分到下游节点,等到下游节点能够继续接收的时候,再发送剩余的TLP报文。因此,有效减少了链路空闲时间,避免了链路资源的浪费,并且降低了传输报文的整体延时。
【专利附图】

【附图说明】
[0034]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0035]图1为本发明实施例的数据报文发送方法的典型应用场景示意图。
[0036]图2为本发明实施例的数据报文发送方法的流程示意图。
[0037]图3为本发明实施例的数据报文发送方法中报文重传的一个示例。
[0038]图4为本发明实施例的数据报文发送设备的结构示意图。
[0039]图5为本发明实施例的另一数据报文发送设备的结构示意图。
[0040]图6为本发明实施例的数据报文发送系统的系统架构图。
【具体实施方式】
[0041]图1为本发明实施例的数据报文发送方法的典型应用场景示意图。如图1所示,该改进的外围部件互连总线(Peripheral Component InterconnectExpress, PCIE)体系的网络为例,根据网络中数据报文的传输过程,假设网络中存在三类节点,分别是上游(Upstream)节点11、当前(Current)节点12以及下游(Downstream)节点13。其中,上游节点通过物理链路将数据报文发向当前节点12,而当前节点通过物理链路将数据报文发向下游节点13。并且,各节点例如应用基于信用(Credit-Based)的机制,即使用信用点(Credit)来表示缓存空间,当前节点12通过将下游节点13提供的Credit与待发送数据报文需消耗的Credit进行比较,来判断下游节点13能否容纳该数据报文。
[0042]其中,上游节点11、当前节点12以及下游节点13仅用于区分在传输一个数据报文时,各节点传输该数据报文的先后次序,而并非用于限制各节点在网络中的位置。而且,上游节点11、当前节点12以及下游节点13可以为网络中的任意网络设备,例如交换机、路由器或核心网设备等。下文中,结合图1所示的应用场景,对本发明实施例的数据报文发送方法进行详细说明。[0043]图2为本发明实施例的数据报文发送方法的流程示意图。如图2所示,该数据报文发送方法包括:
[0044]步骤201,当前节点存在待发送的数据报文时,判断下游节点的当前缓存剩余空间是否大于等于所述数据报文的长度;
[0045]具体地,以应用Credit-Based机制的PCIE体系的网络为例,当Current节点准备向下游节点发送一个事务层包(Transaction Lay Packet, TLP)报文的时候,Current节点首先根据Downstream节点反馈回来的Credit,判断Downstream节点是否能提供足够的缓存空间用以接收该TLP报文。其中,Current节点获取Downstream节点反馈的Credit的方式,既可以是由Current节点主动查询,也可以由Downstream节点定时反馈,本文中不做限制。
[0046]例如网络中预先约定I个Credit所对应的存储空间为a,其中a为自然数,例如为2DW。若下游节点向Current节点提供的Credit是x,表明目前下游节点的数据接收能力(即当前缓存剩余空间)是x*a个DW,例如,下游节点的数据缓存总的容量为8X 2DW=16DW,则当下游节点的缓存处于空闲时,它向当前节点提供的Credit为8。若当前节点向下游节点发送TLP报文的长度为y个DW,其中y为自然数,则需消耗的Credit为y/a个DW,例如为y/2个DW。
[0047]如果Downstream节点提供的Credit大于或者等于发送该TLP报文所需的Credit,则判定Downstream节点能够接收该TLP报文,即Downstream节点的当前缓存剩余空间大于等于该TLP报文的长度;反之,如果Downstream节点提供的Credit小于发送该TLP报文所需的Credit的话,则判定Downstream节点能够接收该TLP报文,即Downstream节点的当前缓存剩余空间小于该TLP报文的长度。
[0048]步骤202,若是,所述当前节点将所述数据报文发送至所述下游节点;若否,所述当前节点将所述数据报文拆分为至少两个子数据报文,并向所述下游节点逐个发送所述子数据报文,其中,所述子数据报文的长度小于等于所述下游节点的当前缓存剩余空间。
[0049]具体地,若通过步骤201判断获知Downstream节点的当前缓存剩余空间大于等于该TLP报文的长度,则直接向Downstream节点发送该TLP报文。若通过步骤201判断获知Downstream节点的当前缓存剩余空间小于该TLP报文的长度,则将该TLP报文拆分为多个子报文(下文中称为,小TLP报文),以使每个小TLP报文的长度小于等于Downstream节点的当前缓存剩余空间。
[0050]例如, 当前需要传送的TLP报文所需要的Credit是y,若将该TLP报文拆分为z个小TLP报文,则每个拆分后的小TLP报文所需的Credit就是y/z。其中,对于z的选取,应满足y/z小于等于X,其中X为下游节点提供的Credit。由于小TLP报文的长度小于等于Downstream节点的当前缓存剩余空间,因此当前节点可首先将一个小TLP报文发送至Downstream节点,若Downstream节点接收该小TLP报文后的缓存剩余空间仍大于等于小TLP报文的长度,则当前节点再向Downstream节点发送一个小TLP报文;若Downstream节点接收该小TLP报文后的缓存剩余空间小于小TLP报文的长度,则当前节点等待Downstream节点的更新的当前缓存剩余空间,并当更新的当前缓存剩余空间大于等于小TLP报文的长度时,当前节点再向Downstream节点发送下一个小TLP报文。
[0051]根据上述实施例的数据报文发送方法,由于当前节点发送数据报文时,根据链路上的缓存资源自动判断是否对数据报文进行拆分发送,即,如果下游节点提供的缓存空间不能够容纳待发送的完整的数据报文,只要满足下游节点现有的缓存空间能够容纳待发送的数据报文的部分数据,就可以将大报文拆分为小报文,先行传送完整报文的一部分到下游节点,等到下游节点能够继续接收的时候,再发送剩余的TLP报文。因此,有效减少了链路空闲时间,避免了链路资源的浪费,并且降低了传输报文的整体延时。
[0052]进一步地,在上述实施例的数据报文发送方法中,所述当前节点将所述数据报文拆分为至少两个子数据报文,包括:
[0053]所述当前节点判断,若按照预设的拆分子数据报文数量阈值,对所述数据报文进行拆分,拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间;
[0054]若是,则将所述数据报文拆分为数量小于等于所述拆分子数据报文数量阈值的子数据报文;[0055]若否,则等待所述下游节点更新所述当前缓存剩余空间,并根据更新后的当前缓存剩余空间,重新执行所述判断拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间的操作。
[0056]具体地,当前节点中例如预先设置有拆分子数据报文数量阈值,用于限制可拆分的子数据报文的最大数量。例如,拆分子数据报文数量阈值为4,同当前节点在对待发送的TLP报文进行拆分之前,先判断是否满足y/4 ( X,其中:X为下游节点提供的Credit,y为当前需要传送的TLP报文所需要的Credit。仅当满足y/4 ( x,当前节点对TLP报文进行拆分,例如拆分为4个小TLP报文,此外,若还满足y/2 ( x,当前节点还可以将TLP报文拆分为2个小TLP报文。
[0057]根据上述实施例的数据报文发送方法,由于在节点中预置拆分子数据报文数量阈值,能够降低节点的硬件实现的复杂度。
[0058]进一步地,在上述实施例的数据报文发送方法中,所述待发送的数据报文包括所述当前节点从上游节点接收的构成所述数据报文的全部子数据报文;
[0059]相应地,所述当前节点将所述数据报文发送至所述下游节点,包括:
[0060]所述当前节点将构成所述数据报文的全部子数据报文,合并为所述数据报文,并发送至所述下游节点。
[0061]具体地,如果Current节点收到了 Upstream节点发送过来的拆分后的子数据报文,例如共4个,并且各子数据报文的数据量为4个DW,则这4个子数据报文的数据总量为16个DW。当Current节点向Downstream节点再转发的时候,若发现Downstream节点提供的Credit大于8,即16个DW,则当前节点将该4个子数据报文合成原始的大TLP报文进行传输。更为具体地,在具体实现中,各TLP报文具有唯一对应的序列标识(Sequence ID),用于在链路两端实现TLP报文传输的保序机制。将TLP报文拆分获得小TLP报文后,各小TLP报文均携带该Sequence ID,即由同一 TLP报文拆分获得的小TLP报文携带有相同的Sequence ID。因此,Current节点可以根据是否连续接收到多个携带有相同Sequence ID的TLP报文,来判断所接收的多个TLP报文是否为由同一 TLP报文拆分获得的小TLP报文。
[0062]进一步地,拆分获得的各个小TLP报文中还可携带有由拆分节点设置的唯一子标识(SubID),以及由拆分节点设置的用于指示子标识有效的使能位。以上游节点对TLP报文进行拆分,即当前节点接收到拆分后的小TLP报文为例,进行如下说明。[0063]例如,上游节点将原始TLP报文拆分为4个小TLP报文,并对各小TLP报文按照表I进行设置。表1为SubID字段和子标识使能位(SubID Enabled)的设置示例,在该示例中,例如使用PCIE协议,对TLP报文头当中的TLP处理提示信息(TLP Processing Hint, TPH)字段中的保留(Reserve)位进行自定义扩展,并将TLP报文头的TH位设置为1,以指示当前TLP中含有提示信息(Hint)。更具体地,Reserve位的长度为2个字节,将其中的几个比特设置为SubID字段,可以根据预设的拆分子数据报文数量阈值确定,例如,。拆分子数据报文数量阈值为4,则采用2比特作为SubID字段即可,若拆分子数据报文数量阈值为8,则需采用3比特作为SubID字段。此外,还将I比特设置为SubID Enabled字段。在表1中,以采用Bit O和Bit I作为SubID字段,并采用Bit 2作为SubID Enabled字段为例。
[0064]表1
[0065]
【权利要求】
1.一种数据报文发送方法,其特征在于,包括: 当前节点存在待发送的数据报文时,判断下游节点的当前缓存剩余空间是否大于等于所述数据报文的长度; 若是,所述当前节点将所述数据报文发送至所述下游节点;若否,所述当前节点将所述数据报文拆分为至少两个子数据报文,并向所述下游节点逐个发送所述子数据报文,其中,所述子数据报文的长度小于等于所述下游节点的当前缓存剩余空间。
2.根据权利要求1所述的数据报文发送方法,其特征在于,所述待发送的数据报文包括所述当前节点从上游节点接收的构成所述数据报文的全部子数据报文; 相应地,所述当前节点将所述数据报文发送至所述下游节点,包括: 所述当前节点将构成所述数据报文的全部子数据报文,合并为所述数据报文,并发送至所述下游节点。
3.根据权利要求1所述的数据报文发送方法,其特征在于,所述当前节点将所述数据报文拆分为至少两个子数据报文,包括: 所述当前节点判断,若按照预设的拆分子数据报文数量阈值,对所述数据报文进行拆分,拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间; 若是,则将所述数据报文拆分为数量小于等于所述拆分子数据报文数量阈值的子数据报文; 若否,则等待所述下游节点更新所述当前缓存剩余空间,并根据更新后的当前缓存剩余空间,重新执行所述判断拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间的操作。
4.根据权利要求1-3任一所述的数据报文发送方法,其特征在于,所述当前节点将所述数据报文拆分为至少两个子数据报文之后,且向所述下游节点逐个发送所述子数据报文之前,还包括: 所述当前节点在各所述子数据报文中设置唯一的子标识,并设置用于指示所述子标识有效的使能位; 相应地,所述向所述下游节点逐个发送所述子数据报文之后,还包括: 所述当前节点接收所述下游节点返回的、携带有所述子标识的确认报文或否定确认报文,并根据所述确认报文或否定确认报文所携带的所述子标识,对重新播送缓存进行清理和/或进行重传。
5.一种数据报文发送设备,其特征在于,包括: 判断模块,用于当存在待发送的数据报文时,判断下游节点的当前缓存剩余空间是否大于等于所述数据报文的长度; 发送处理模块,用于若所述判断模块判断为是,将所述数据报文发送至所述下游节点;若所述判断模块判断为否,将所述数据报文拆分为至少两个子数据报文,并向所述下游节点逐个发送所述子数据报文,其中,所述子数据报文的长度小于等于所述下游节点的当前缓存剩余空间。
6.根据权利要求5所述的数据报文发送设备,其特征在于,所述待发送的数据报文包括数据报文发送设备从上游节点接收的构成所述数据报文的全部子数据报文;相应地,所述发送处理模块还用于:将构成所述数据报文的全部子数据报文,合并为所述数据报文,并发送至所述下游节点。
7.根据权利要求5所述的数据报文发送设备,其特征在于,所述发送处理模块用于: 判断若按照预设的拆分子数据报文数量阈值对所述数据报文进行拆分,拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间; 若是,则将所述数据报文拆分为数量小于等于所述拆分子数据报文数量阈值的子数据报文; 若否,则等待所述下游节点更新所述当前缓存剩余空间,并根据更新后的当前缓存剩余空间,重新执行所述判断拆分获得的子数据报文的长度是否小于等于所述下游节点的当前缓存剩余空间的操作。
8.根据权利要求5-7任一所述的数据报文发送设备,其特征在于,所述发送处理模块还用于: 在将所述数据报文拆分为至少两个子数据报文之后,且向所述下游节点逐个发送所述子数据报文之前,在各所述子数据报文中设置唯一的子标识,并设置用于指示所述子标识有效的使能位; 相应地,在所述向所述下游节点逐个发送所述子数据报文之后,接收所述下游节点返回的、携带有所述子标识的确认报文或否定确认报文,并根据所述确认报文或否定确认报文所携带的所述子标识,对重新播送缓存进行清理和/或进行重传。
9.一种数据报文发送系统,其 特征在于,包括权利要求5-8任一所述的数据报文发送设备,以及与所述数据报文发送设备连接的下游节点。
【文档编号】H04L12/70GK103905300SQ201210572445
【公开日】2014年7月2日 申请日期:2012年12月25日 优先权日:2012年12月25日
【发明者】冯煜晶, 侯锐, 张立新, 郭旭斌 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1