一种信誉流量控制方法

文档序号:7655941阅读:115来源:国知局
专利名称:一种信誉流量控制方法
技术领域
本发明涉及高速数据通信网络端到端的链路流量控制,特别涉及一种 信誉流量控制方法。
背景技术
高速通信网络通常由两种网络实体组成,处理节点和交换机,其中的 处理节点包括网卡和主机。如图l所示,网卡与交换机的通信端口相连, 主机把数据包发送给网卡,经过交换机到达目的节点以实现数据通信过 程。
在数据通信过程中,为了避免交换机接收緩沖区溢出,导致数据包丢
失,需要采用流量控制策略。流量控制可采用专用物理通道,Xon/Xoff或 基于信誉(Credit-based)等方法实现。由于串行数据传输方法的采用以及 总线带宽的迅速提升,釆用专用物理通道的实现方法不仅不易与总线串行 化技术结合,还要求额外的连接线,相对而言成本较高。因此,目前高速 通信中多采用基于Xon/Xoff或信誉的方法。Xon/Xoff —般适用于虫洞 (Wormhole)交换方式,对于采用虚切入(Virtual Cut Through)交换方式 的交换机则 一般采用基于信誉的流量控制方法。
网络中的交换机或处理节点采用点到点的方式进行连接。每个连接在 物理链路两端的通信实体(两端都为交换机,或一端为交换机另一端为处 理节点)包含若干个虚通道(Virtual Channel),流量控制是基于每个虚通 道进行的。每个交换机端口或处理节点都包含接收模块,发送模块和流量 控制模块,它们分别用于接收和发送物理链路上的数据包以及进行发送模 块和接收模块的流量控制。
通信实体进行流量控制时的基本过程如下 一个通信实体的接收模块
接收到通信对端的流控包,并把流控包中的信息传递给本身的流控模块。 该流控模块经过同步处理,将流控包中所包含的信誉值发送(信誉值表示 发送模块能够发送最大数据量)给发送模块。发送模块可发送不超过该信
誉值的数据量。随着数据的发送,信誉值逐步减少。当要发送的数据包长 度大于剩余信誉值时,发送模块不能进行数据发送,直到接收模块接收到 通信对端的流控包,得到新的信誉值,且该信誉值的大小比所要发送数据 包的长度大时,发送模块才能继续发送。
在上述过程中,流控包的发送时机对性能有重要影响。 一方面当发送 模块信誉值不足时,如果通信对端有足够的空闲空间却没有及时补充新的 信誉值,发送模块就不能发送新的数据包,造成物理链路的浪费,导致交
换机吞吐率下降;另一方面如果通信对端频繁发送信誉信息,就会占用大 量物理通道导致正常的数据包无法发送,这样也会影响交换机性能。因此, 如何选择流控包的发送时机,对于提高交换机的性能有重要的影响。但在 现有的方法,如在AMD HyperTransport协议规范中,对流控包的发送时 机采用固定方法,而没有考虑接收緩沖区剩余空间和当前流量特征。

发明内容
本发明的目的是克服现有流量控制方法中对流控包的发送时机过于 僵化,没有考虑接收緩沖区剩余空间和当前流量特征的缺陷,从而提供一 种能够有效提高物理链路资源和接收緩沖区资源利用率的流量控制方法。
为了实现上述目的,本发明提供了一种信誉流量控制方法,包括以下 步骤
步骤l)、上游通信端口在发送数据包前,比较所要发送数据包的大小 与所述远端信誉值计数器中的信誉值,当所要发送数据包的大小小于远端 信誉值计数器中的信誉值时,发送所述数据包,并执行下一步,否则,不 发送所述数据包;
步骤2)、根据所发送数据包的大小,减少所述远端信誉值计数器中的 信誉值;
步骤3)、下游通信端口接收数据包,并根据所述数据包的大小减少所 述本地信誉值计数器中的信誉值;
步骤4 )、下游通信端口对上游通信端口所要发送的下一个数据包的长 度进行预测;
步骤5)、根据步骤4)所得到的数据包长度预测结果,下游通信端口 的本地信誉值计数器中的信誉值,以及下游通信端口接收緩冲区空闲空间 的大小,决定是否需要向上游通信端口发送包含有新信誉值的流控包。
上述技术方案中,所述信誉值为表示信誉块大小的值。
上述技术方案中,在所述的步骤4)中,所述的对上游通信端口所要 发送的下一个数据包的长度进行预测是指
将临近时间段内,从所接收到的数据包中选择数量最多的数据包长度 类型,并将该类型数据包的长度作为所预测的下一个数据包的长度。
上述技术方案中,所述的对上游通信端口所要发送的下一个数据包的 长度进行预测包括
首先,根据最大传输单元的大小限制,对数据包长度进行分类;所述 最大传输单元为网络上能够传送的最大长度的数据包;
然后,为每种数据包长度类型设置相应的计数器;
接着,在接收数据包的过程中,根据所接收数据包的长度在相应的数 据包长度类型中,为所对应的计数器增值;
最后,在预测下一个数据包的长度时,从所有的计数器中选择值最大 的计数器,根据该计数器得到对应的数据包长度类型,将该类型数据包的 长度作为所预测的下 一 个数据包的长度。
上述技术方案中,在所述的步骤5)中,在判断是否需要向上游通信 端口发送包含有新信誉值的流控包时,将所述下游通信端口的本地信誉值 计数器中的信誉值与所述数据包长度预测结果进行比较,并将所述下游通 信端口接收緩冲区空闲空间的大小与所述数据包长度预测结果进行比较,
根据上述两个比较结果,决定是否发送流控包。
在判断是否需要向上游通信端口发送包含有新信誉值的流控包时,只 有同时满足两个判断条件才能发送流控包,所述两个判断条件是指 RemainCreditdw < creditof(PrePktLen) + creditof(RTT x BW)——条件1 FreeCreditdw >= creditof(PrePktLen) + creditof(RTT x BW)——条件2
其中,RemainCreditdw表示下游通信端口中的剩余信誉值,即下游通 信端口中本地信誉值计数器的值;
FreeCrediW表示下游通信端口接收緩沖区的空闲空间的信誉值;
PrePktLen表示数据包长度预测结果;
RTT表示物理链路回环时间,BW表示物理链路的带宽,RTTxBW 表示在物理链路回环时间内物理链路上传输的数据包大小; creditof()表示按信誉块大小所进行的规整化操作。 本发明的优点在于
本发明的信誉流量控制方法不会盲目发送流控信息,只会根据当前数 据流情况,自适应的在链路恰好需要流控信息时发送有效流控包,来保证 数据流不断流,从而提高物理链路和緩冲区资源利用率。


以下,结合附图来详细说明本发明的实施例,其中
图1为高速通信网络的示意图2为一个物理链路中的上下游通信端口的示意图3为数据包长度预测的硬件装置图4为本发明的信誉流量控制方法的流程图5是数据包的长度类型与数据包的预测长度对应关系表的示意图。
具体实施例方式
下面结合附图和具体实施方式
对本发明的方法进行说明。 链路通信由两个对等的通信实体组成,即互联的两个通信端口。在图 2中,把其中一个通信端口称为上游端口,另外一个通信端口称为下游端 口。每个通信端口中包含发送模块、接收模块和流量控制模块。上游的发 送模块和下游的接收模块相连,下游的发送模块和上游的接收模块相连。 流量控制模块在两个流向上相互独立且功能相同。在说明本发明的方法 前,首先对通信端口中各个模块的功能做详细说明。
接收模块的作用是接收数据流,并从所接收的数据流中提取数据包和 流控包。接收模块中包含有多个虛通道,每个虚通道有各自的接收緩沖区, 用来暂存网络上的数据包。在接收数据包的过程中,接收模块还需要不停 地检测是否有流控包插入到数据包中。如果有,则把嵌入到数据包的流控 包提取出来。
接收模块提供给流控模块四个参数。第 一 个参数为 Creditof(FreeSpace),其中的FreeSpace表示当前接收緩冲区中的空闲空间, creditof(FreeSpace)是对FreeSpace按信誉块大小进行规整化操作。该参数 的主要作用是用于流控模块进行流控包发送时机的判断和生成新的本地 信誉值。信誉值是表示信誉块大小的值,信誉块是流量控制的基本单位, 它在大小上等于一定数量的字节单元,如64字节、128字节等。第二个参 数为New Credit, New Credit是接收模块从通信对端所发送的流控包中提
取的新信誉值。接收模块利用New Credit通知流控模块进行远端信誉值的 更新操作,该参数的值表示了本地发送模块能够发送的最大数据量。第三 个参数为一位的信号量,它的作用是通知流控模块将本地信誉值自减1。 接收模块每当接收到 一个信誉块数据量时,通知流控^t块把本地信誉值进 行自减1操作。第四个参数为数据包长度,流控模块根据该值进行数据包 长度的预测。
发送模块负责发送数据包和流控包。发送数据包时,发送模块针对每 个虚通道进行长度^r查,只有发送数据包长小于远端信誉值时,数据包才 能够发送。由于流量控制通常是双向的,通信过程中的上游端口和下游端 口也是相对的,发送模块经常要同时发送数据包和流控包。因此,发送模 块时时检测有无流控包请求发送,即使在发送数据包的过程中,如果有流 控包请求,发送模块也应当把流控包插入到数据包中,以保证流控信息的 及时性。
发送模块只向流控模块提供1个信息,即当发送数据达到一个信誉块 时,通知流控模快把当前的远端信誉值进行自减l操作。
流控模块根据统计信息和状态信息来判断何时发送流控包给通信对 端,并把发送请求和发送参数(本地新信誉值(New Credit))提供给发送 模块,发送模块再根据流控模块的请求和提供的参数,发送流控包给通信 对端。
流控模块中包含两个重要的计数器。 一个是远端信誉值计数器 (RemoteCreditCnt),该计数器表示从上次接收到对方流控包后,还剩余 的信誉值。发送模块用该信誉值来判断能否发送数据包。另一个是本地信 誉值计数器(LocalCreditCnt),该计数器表示从上次发送流控包给对方后, 本地还剩余的信誉值。该计数器在大小上,约等于对方的远端信誉计数器, 是对该值的一个估计。有了该计数器后,本地流控模块就可以知道对方发 送模块能够发送的数据量大小。
流控模块根据发送模块的指示对远端信誉值计数器 (RemoteCreditCnt)进行自减1操作,根据接收模块的指示对本地信誉值 计数器(LocalCreditCnt)进行自减1操作。流控模块还要把接收到的新信 誉值更新到远端信誉计数器。此外流控模块还要根据当前緩冲区的空闲情 况,判断一个合适的时机发送流控包。该时机一方面能够保证数据包不断 流,另一方面还能够尽量减少流量控制信息对物理带宽的开销,减少对正
常数据通信的影响,提高数据吞吐率,减少数据包平均等待时间,同时能 够适应不同数据流对流控方法的影响。
流控模块要在合适时机发送流控包的一个重要前提是对上游通信端 口所要发送的下一个数据包的包长进行预测。在网络中存在着大量突发数 据包,这些数据包长度相同,且在时间上彼此相连,这就为包长预测提供 了基础。本发明中所采用的包长预测方法的基本思想是选择在临近时间段
内最大可能到达的包长。其基本实现步骤为首先根据最大传输单元 (MTU: Maximum Transfer Unit,网络上能够传送的最大长度的数据包) 的限制,对数据包长度进行分类,将数据包长度分为(0,L0 (L!+1,L2)... (Lm.rH,MTU)等m种长度类型;然后为每种数据包长度类型设置一个相 应的计数器Counteri,每当接收到该长度范围内的一个数据包后,Counteri 加1;在每次做包长预测时,选取值最大的计数器,根据所选取的计数器 从一个存储于内容可寻址存储器中的表得到数据包的预测长度。图5是存 储于内容可寻址存储器中的表的一个示例图,从该图中可以看出,对于一
定的长度区间有固定的预测值,选定一个计数器后即可得到相应的数据包 的预测长度。为了保证预测的时间局部性,当链路超过一定时间没有接收 到数据包后,所有与包长预测相关的计数器清零。对包长预测的上述操作 可通过图3中的装置图实现。在本实施例中,介绍了一种包长预测的可能 实现方式,但本领域的普通技术人员应当明白,采用其他方式的包长预测 方法也可应用于本发明的申请。
在对所要发送的数据包进行包长预测的基础上,本发明对流控包的发 送时机进行控制。在一个实施例中,对流控包的发送时机进行控制基于以 下2个条件
RemainCreditdw < creditof(PrePktLen) + creditof(RTT x BW)——条件1 FreeCreditdw >= creditof(PrePktLen) + creditof(RTT x BW)——条件2
只有同时满足了上述2个条件,下游通信端口的流控模块才会通知发 送模块发送包含有新信誉值的流控包。
上述公式中,RemainCreditdw表示下游通信模块中的剩余信誉值,它 的值等于下游通信端口中本地信誉值计数器的值;FreeCreditdw表示下游通 信模块中某一虛通道的接收緩冲区的空闲空间的信誉值,它的大小是对所 述接收緩冲区的空闲空间按信誉块大小进行规整化操作后得到的; PrePktLen表示下游通信端口的流控模块根据已往所接收到的包长度,预
测的下一个将要到来的数据包长度,也就是步骤60所得到的包长预测结 果;RTT (Round Trip Time)表示物理链路回环时间,BW表示物理链路 的带宽,RTTxBW表示在该回环时间内所包含的物理链路上传输的数据 包大小;creditof()就表示按信誉块大小所进行的规整化操作。
在上述两个条件中,不等式右端所增加的变量creditof(RTT x BW)表 示在链路上可能包含的信息量。由于发送模块发送出的数据要经过物理线 传输延迟一段时间才能到达接收模块,因此在预估通信流量时应当添加这 一变量。由于链路上的信息不可知,所以本发明采用最坏估计方法,假设 在链路上存在creditof(RTT x BW)大小的信息量。在数值上creditof(RTT x BW)跟线长和带宽有关,对于2.5Gbps网络,20米长度传输线范围内,该 值范围在l-2个信誉值之间。上述判断条件的主要思想是下游接收模块采 用预测下一个到来的数据包长度比较当前剩余信誉值。如果当前剩余值足 以满足长度需求,就不发送流控包;相反如果不能满足,就观察当前緩沖 区资源剩余情况;如果空闲资源能够满足下一个数据包长度,就立即发送 流控包,否则不发送流控包。这种方法不会盲目发送流控信息,只会根据 当前数据流情况,自适应地在链路恰好需要流控信息时发送有效流控空数 据包,以保证凄t据流不断流。
在上述实施例中,介绍了流控包发送时机的一种具体判断条件,但本 发明的技术人员应当明白,其他的判断条件也可用于本发明。
在对通信端口中的各个组成部分进行详细说明的基础上,结合一个实 施例对本发明的方法进行说明。在实施例中,为了方便描述,将采用由上 游发送模块到下游接收模块这个数据流向为例对本发明的方法进行说明。
当数据流从上游通信端口发送到下游通信端口时,流控方向为从下游 通信端口到上游通信端口。其中,流控的目的是下游通信端口为了防止自 身的接收緩冲区溢出,而对上游通信端口的发送模块进行数据发送的控 制。应当注意的是,在流控过程中,所要完成的流控操作是针对单独的虚 通道进行的,所有对参数的描述都是针对一个虚通道的描述。在前文中已 经提到, 一个流控模块包含有远端信誉值计数器和本地信誉值计数器这两 个重要的计数器,在本实施例中,由于数据流方向为从上游通信端口到下 游通信端口,因此,上游通信端口主要釆用远端信誉值计数器,而下游通 信端口主要采用本地信誉值计数器。
仍然以图2为例,对本发明的方法进行详细说明,在图2中,上游通
信端口是数据的发送端,下游通信端口是数据的接收端,参考图4,本发 明方法的具体实现步骤如下
步骤IO、对一次通信过程中的上下游通信端口分别做初始化操作,在 初始化过程中,分别为上游通信端口中的远端信誉值计数器和下游通信端 口中的本地信誉值计数器赋予初值。
在本步骤中,下游通信端口中的接收模块首先得到本次通信过程所涉 及虛通道的接收緩冲区大小,用RxBuf表示该接收緩沖区大小,然后对接 收緩沖区按信誉块大小进行规整化操作,得到所述接收緩沖区大小的信誉 值,用creditof(RxBuf)表示,将该信誉值赋予下游通信端口的本地信誉值 计数器,最后还要将该信誉值通过下游通信端口的发送模块和上游通信端 口的接收模块通知上游通信端口的远端信誉值计数器。
经过初始化过程后,上游通信端口的远端信誉值计数器和下游通信端 口的本地信誉值计数器的初始值应当相同,大小均为creditof(RxBuf)。初 始化操作是一个系统在刚开始做通信过程时所经历的阶段,在某些通信过 程中可省去这一操作。
步骤20、上游通信端口的发送模块发送虚通道中的数据,在发送数据 包的过程中,判断所要发送数据包的大小是否小于远端信誉值计数器中的 信誉值,如果小于,则执行下一步,否则,发送模块停止发送所述虚通道 中的数据,该虚通道处于闲置状态。
步骤30、发送数据包,在发送数据包的过程中,发送模块每发送一个 信誉块的数据量,就通知本通信端口中的流控模块把远端信誉值计数器的 值减1。
步骤40、下游通信端口的接收模块接收数据包,并将所接收的数据包 传送到对应虚通道的接收緩冲区中。
步骤50、下游通信端口的接收模块每接收一个信誉块的数据量,就通 知本通信端口中的流控模块将本地信誉值计数器中的值减1。
步骤60、对上游通信端口所要发送的下一个数据包的长度进行预测。 在前述说明中,已对本步骤中所要完成的工作进行了详细说明,此处不再 做重复性描述。
步骤70、根据步骤60的包长预测结果,下游通信端口的流控模块决 定是否需要通过发送模块向上游通信端口的接收模块发送包含有新信誉 值的流控包,如果需要,则执行下一步,否则,转到步骤20。
步骤80、下游通信端口的流控模块将虚通道接收緩冲区的空闲空间的 信誉值作为新的信誉值,然后用新的信誉值更新本地信誉值计数器的值。
步骤90、下游通信端口的发送模块将包含有新的信誉值的流控包发送 到上游通信端口的接收模块,通知上游通信端口的流控模块根据新的信誉 值更新远端信誉值计数器的值后,执行步骤20。上述步骤80和步骤90中 所要完成的操作属于成熟的现有技术,在此不再做重复性说明。
权利要求
1、一种信誉流量控制方法,包括以下步骤步骤1)、上游通信端口在发送数据包前,比较所要发送数据包的大小与所述远端信誉值计数器中的信誉值,当所要发送数据包的大小小于远端信誉值计数器中的信誉值时,发送所述数据包,并执行下一步,否则,不发送所述数据包;步骤2)、根据所发送数据包的大小,减少所述远端信誉值计数器中的信誉值;步骤3)、下游通信端口接收数据包,并根据所述数据包的大小减少所述本地信誉值计数器中的信誉值;步骤4)、下游通信端口对上游通信端口所要发送的下一个数据包的长度进行预测;步骤5)、根据步骤4)所得到的数据包长度预测结果,下游通信端口的本地信誉值计数器中的信誉值,以及下游通信端口接收缓冲区空闲空间的大小,决定是否需要向上游通信端口发送包含有新信誉值的流控包。
2、 根据权利要求1所述的信誉流量控制方法,其特征在于,所述信 誉值为表示信誉块大小的值。
3、 根据权利要求1所述的信誉流量控制方法,其特征在于,在所述 的步骤4)中,所述的对上游通信端口所要发送的下一个数据包的长度进 行预测是指将临近时间段内,从所接收到的数据包中选择数量最多的数据包长度 类型,并将该类型数据包的长度作为所预测的下 一 个数据包的长度。
4、 根据权利要求3所述的信誉流量控制方法,其特征在于,所述的 对上游通信端口所要发送的下一个数据包的长度进行预测包括首先,根据最大传输单元的大小限制,对数据包长度进行分类;所述 最大传输单元为网络上能够传送的最大长度的数据包;然后,为每种数据包长度类型设置相应的计数器;接着,在接收数据包的过程中,根据所接收数据包的长度在相应的数 据包长度类型中,为所对应的计数器增值;最后,在预测下一个数据包的长度时,从所有的计数器中选择值最大 的计数器,根据该计数器得到对应的数据包长度类型,将该类型数据包的 长度作为所预测的下 一 个数据包的长度。
5、 根据权利要求1所述的信誉流量控制方法,其特征在于,在所述 的步骤5)中,在判断是否需要向上游通信端口发送包含有新信誉值的流 控包时,将所述下游通信端口的本地信誉值计数器中的信誉值与所述数据 包长度预测结果进行比较,并将所述下游通信端口接收緩沖区空闲空间的 大小与所述数据包长度预测结果进行比较,根据上述两个比较结果,决定 是否发送流控包。
6、 根据权利要求5所述的信誉流量控制方法,其特征在于,在判断 是否需要向上游通信端口发送包含有新信誉值的流控包时,只有同时满足 两个判断条件才能发送流控包,所述两个判断条件是指RemainCreditdw < creditof(PrePktLen) + creditof(RTT x BW)--条件1FreeCreditdw >= creditof(PrePktLen) + creditof(RTT x BW)--条件2其中,RemainCreditdw表示下游通信端口中的剩余信誉值,即下游通 信端口中本地信誉值计数器的值;FreeCreditdw表示下游通信端口接收緩冲区的空闲空间的信誉值; PrePktLen表示数据包长度预测结果;RTT表示物理链路回环时间,BW表示物理链路的带宽,RTTxBW 表示在物理链路回环时间内物理链路上传输的数据包大小; creditof()表示按信誉块大小所进行的规整化操作。
全文摘要
本发明公开了一种信誉流量控制方法,包括当所要发送数据包的大小小于远端信誉值计数器中的信誉值时,发送所述数据包,并执行下一步,否则,不发送所述数据包;根据所发送数据包的大小,减少远端信誉值计数器中的信誉值;接收数据包,并减少所述本地信誉值计数器中的信誉值;对下一个数据包的长度进行预测;根据预测结果,信誉值,以及接收缓冲区空闲空间的大小,决定是否需要发送包含有新信誉值的流控包。本发明不会盲目发送流控信息,只会根据当前数据流情况,自适应的在链路恰好需要流控信息时发送有效流控包,以保证数据流不断流,从而提高物理链路和缓冲区资源利用率。
文档编号H04L12/56GK101115053SQ20071012075
公开日2008年1月30日 申请日期2007年8月24日 优先权日2007年8月24日
发明者刘新春, 安学军, 政 曹, 王达伟 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1