专利名称:发射控制方法和系统的制作方法
技术领域:
本发明涉及用于在通信网中控制数据重发的技术。
背景技术:
现在通常使用那些利用TCP(传输控制协议)用于发射和接收数据的设备。TCP是在OSI(开放系统互连)参考模型下所使用的一个协议,并且它在为了从一个发送器设备传输到接收机设备而把从上层中流出的数据分成数据段时被使用。TCP确保有序数据段可靠流向接收机设备。更明确地,一个编号(在下文中称为“一个序列号”)被分配给数据序列中的每个数据段以便指示所述数据段在该数据序列中的顺序。发送器设备分配一个序列号给要被发射的每个数据段的报头,并在该数据段被发射时将一个计时器初始化。如果在一个计划时间(超时)之内从接收机设备中没有关于被发射数据段的接收确认,这个时间是根据数据段发射到它的接收地并确认此接收的一个估计时间(即,数据段的估计往返时间)来判定的,则发送器设备暂时判定该数据段已被丢失而没有到达该接收机设备并且向该接收机设备重发该数据段。
在发送器设备处,当接收到一个确认时,包含在接收确认的报头中的一个数字表示该接收确认所对应的那个数据段。当接收机设备发射一个确认时,它在确认报头中的“确认号”字段中设置它接下来希望接收的那个数据段的序列号。例如,当使用从500开始并接着1000、1500等等的序列号时,一旦收到具有序列号为“500”的一个数据段后,则要被发射到发送器设备的那个确认的确认号被设置为1000。在接收到这样一个确认之时,发送器设备判定一个已发射数据段已被接收机设备安全接收,然后发射一个后续数据段。
应当指出,一个发送器设备接收到具有确认号为1000的一个确认,发送器设备没有发射具有序列号为1000的数据段,或者即使该数据段已经被发射,则该分段都没有被接收机设备所接收。即使由于具有序列号1000的数据段遗失而使具有序列号1500的一个后续数据段已经在接收机设备处被接收,则此确认号也保持设置为1000直到包含序列号1000的一个数据段在接收机设备处被接收为止。因此,未被接收机设备接收的最小的最近数据段序列号被设置一个确认号。
在上面解释的数据段传输方法中,通过仅仅在该设备处接收到来自接收机设备的先前发射数据段的一个确认之后,从发送器设备中发射一个后续数据段来保证可靠性。可是,虽然此方法保证了数据传输可靠性但是它抑制了效率。为了提高效率,TCP提供了一种根据“窗口”定义的号码发射某一数量数据段的方法。一个“窗口”是能够在接收一个确认之前被发射的若干字节或若干数据段。窗口大小由发送器设备判定如此以使它不超过接收机设备的可用缓冲区大小。当发送器设备收到一个已发射数据段(组)的确认时,一个窗口滑动这个数据段数目(其中一个数据段的确认已经被接收),然后,一个后续数据段(组)被发射到窗口已滑动的那个区域。这种方法被称为一个“滑动窗口方法”;并且通过控制窗口大小来控制数据流量。
如果当一个滑动窗口方法正被使用时例如由于无线通信的中断或者由于系统的拥塞而暂停数据流时,已发射数据段可能在系统中被丢失或者需要被暂时储存在网络中的一个节点中直到数据通信恢复为止。尤其是在无线通信环境中更可能发生损耗。数据通信恢复之后,被暂时储存在网络节点中的任意数据段能够到达接收机设备——虽然有一点点延迟。
可是,如果通信中断持续了一个相当长的时间,并且在发送器设备处一个已发射数据段发生超时,发送器设备从至今已被发射但还未被确认的数据段之中重发第一数据段。结果,接收机设备接收暂时储存在网络中的数据段(在下文中称为“原始数据段”)和重发的数据段。接收机设备然后在原始数据段的接收之后返回原始数据段的确认;并且在重发的数据段接收之后发射重发数据段的确认;这两个确认的每一个通常都具有相同的确认号。这导致这样一个问题,即发送器设备不能判定接收到的确认是关于最初已发射数据段还是关于一个重发数据段,并且因此回复一个状态判定原始数据段未到达接收机设备。
在如下两个示例中,将对于这种情形给出解释。
图10是示出在服务器设备10′(发送器设备)和客户端设备50(接收机设备)之间执行分组通信的示例序列图。出现在该图中服务器设备10′处每个箭头的初始点右边的4位数字是从服务器设备10′中发射的一个数据段的序列号;而出现在该图中接收机设备50处每个箭头的初始点左边的4位数字是包括在从客户端设备50中发射的确认消息中的一个确认号。在这里假定一个原始滑动窗口大小为三,即,可以发送三个数据段而不必接收确认。
在图10中,三个数据段(原始数据段)S1-S3初次从服务器设备10′中被发射,数据段S1、S2和S3分别具有序列号0、1000和2000。在这些数据段发射之时,在服务器设备10′处设置一个计时器。
在该图中,由于网络通信条件损耗,所以在客户端设备50处接收数据段S1、S2和S3带有一点延迟。客户端设备50在接收到原始数据段S1之后,向服务器设备10′发射具有确认号1000的一个确认R1。同样地,在接收到原始数据段S2之后客户端设备50发射具有确认号2000的一个确认R2,并且在接收到原始数据段S3之后发射具有确认号3000的一个确认R3。
如该图所示,服务器设备10′在计时器测量的一个逝去时间超过一个超时值之前没有从接收机设备50中接收到一个确认。结果,服务器设备10′在超时时刻判定原始数据段S1没有被客户端设备50接收,并且重发具有序列号0的一个数据段(重发的数据段S′1)。因为窗口大小被减小到迫近超时的一个最小值,所以在这里发射一个数据段(即,重发的数据段S′1)。
服务器设备10′随后接收确认号为1000的一个确认R1。在这里,因为上面提到的原因,所以服务器设备10′不能根据确认号1000来判断确认R1是关于原始数据段S1还是关于重发的数据段S′1。因此,服务器设备10′把确认R1作为关于重发的数据段S′1来对待,并且所述序列号为1000的数据段被重发(重发的数据段S′2)。服务器设备10′还要重发后续序列号为2000的一个数据段(重发的数据段S′3),因为在接收到确认R1之后,窗口大小增加一。
服务器设备10′随后接收确认号为2000的一个确认R2,然后,按顺序发射后续原始数据段(原始数据段S4和随后的原始数据段)。
在这个示例中,即使在客户端设备50处已安全接收到原始数据段S2和S3,则它们也要被重发(重发的数据段S′2和S′3)。也就是说,当每一个数据段S2和S3在两个不同的时间都被客户端设备50接收时,数据段S2和S3的重发导致不必要的发射--虽然这在重发时刻未被判定。另外,从图10中很清楚,响应于重发的数据段S′2和S′3,则还要发射确认R′2和R′3。因此,已经不必要地重发了总数为四的数据段。
图11示出了可能发生不必要的数据段重发的第二示例。为了防止接收机设备发射格外数量的确认,TCP提供在规定时间内可以延迟来自接收机设备的确认的发射,并且该确认可以和来自接收机设备的下一数据发射一起被发射(“延迟的确认”,RFC 2581)。可是,在一个规定时间内接收两个全尺寸数据段的情况下,应该发射确认而不必等待下一数据发射。也就是说,在短时滞后,例如相互之间的200毫秒内收到两个数据段的情况下,可以用一个确认通知两个数据段被接收来代替单个确认的使用。更明确地,接收机设备发射第二接收数据段的确认,藉此通知发送器设备关于两个数据段的接收。这个是如图11所示示例中的情况。
在图11中,正如在图10情况下所假定的,原始数据段S1、S2和S3从服务器设备10′中发射并随后被客户端设备50接收,接收时由于通信路径中的损耗而具有一些延迟。随后,客户端设备50发射确认R2。同时,服务器设备10′重发超时的数据段S1(重发的数据段S′1)。因为窗口大小被减小到迫近超时的一个最小值,所以在这里发射一个数据段(即,重发的数据段S′1)。
服务器设备10′随后接收从客户端设备50中发射的确认R2。在接收之后,服务器设备10′参考包含在确认R2中的确认号2000,并重发具有相同序列号的分段,即,原始数据段S3。服务器设备10′还要发射序列号为3000的一个后续原始数据段S4,因为在接收到确认R2之后,窗口大小增加一个数据段。
服务器设备10′随后接收从客户端设备50中发射的确认号为3000的确认R3。结果,服务器设备10′按顺序发射后续序列号为4000的原始数据段S5及后续数据段。
在这个示例中,即使实际上分段S3已被客户端设备50安全接收,原始数据段S3也还被重发;并且如图11所示,重发数据段S′3的确认R′3也还要被发射。因此,数据段S′3和确认R′3的重发构成不必要的发射。
在发送器设备不能判定一个确认是关于原始数据段还是关于重发数据段的情况下,如果判定在重发一个数据段之后接收到的一个确认是关于原始数据段的,则不执行这种不必要的数据段发射。
可是,当做出这样一个判断时,重发数据段的确认被认为是原始数据段的确认,其中窗口向前滑动,使得一个后续原始数据段将被发射。当原始数据段的这种发射被重复时,存在着已经从服务器设备10′中发射但是未到达客户端设备50的数据段数目累积增加的危险。
为了避免这种危险,在发送器设备不能判定一个确认是关于原始数据段还是关于重发数据段的情况下,默认判定一个确认是关于原始数据段的。可是,使用这种判断,发送器设备不能避免不必要的数据段重发。
为了解决这个问题,“TCP的Eifel检测算法”,R.Ludwig,M.Meyer,http//www.ietf.org/internet-drafts/draft-ietf-tsvwg-tcp-eifel-alg-04.txt,2002年7月24日,公开了一种技术,通过使用RFC 1323中定义的TCP时间标记选项来实现对于一个确认是关于原始数据段还是关于重发数据段的可靠判断。
而且,在“On Estimating End-To-End Network PathProperties.2.8 Impact of Bad Timeouts”(关于估计端对端网络通路性质。差超时的2.8影响)(Mark Allman,Vern Paxson,ACMSIGCOMM 99,1999年10月,第29卷,第4期第263-274页),Allman等人建议了一种技术使用统计信息来在有线分组通信网中的分组通信中估计一个接收到的确认是关于原始数据段还是关于重发数据段。
在Allman的提议中,在把1/2最小往返时间作为阈值的基础上执行估计,在此,最小往返时间是通过在发送器设备和接收机设备之间连接保持运行时,测量数据段被发射的时间直到该分段的确认被接收的时间所获得的多个往返时间的最小数值。在这个方法中,如果从数据段重发逝去的时间直到第一个确认被接收时的时间等于或长于该阈值,则接收到的确认被认为是关于重发数据段的;而逝去时间短于(或者等于或短于)该阈值时,接收到的确认被认为是关于原始数据段的。
判定阈值时间为最小往返时间的一半是基于如下条件1.在统计上,最初发射的数据段的确认被接收的概率大约是相同的期间从重发直到1/2最小往返时间的周期已经逝去;从重发直到3/4最小往返时间的周期已经逝去;以及从重发直到完整最小往返时间的周期已经逝去;以及2.在统计上,重发数据段的确认被接收的概率在从重发已经逝去1/2最小往返时间不久后的时间点周围迅速增加。
可是,当使用Eifel检测算法时,即使在优良的网络条件下,在发送器设备处也总是把时间标记信息附加到原始数据段上并且在接收机设备处附加到一个确认上。这意味着原始数据段和确认数据段两者大小都增加。在按通过网络发射的分段数量的比例来为用户通信计费的情况下,已发射数据数量的增加导致通信费用的增加。在网络条件很好并且数据重发情况可能很小的情况下,这种不希望的通信费用增加可能变得更显著。很清楚,这种通信费用的增加对于接收机设备或发送器设备的用户都是不理想的。
把时间标记信息包括在通信时刻使用的一个TCP报头的保留比特中来代替把该信息附加到一个数据段中较为合理。可是,现有的通信系统不支持这种方法,并且因此,为了使用这种方法需要大量修改发送器和接收机设备。
另外,甚至在使用Allman技术时,在无线部分中的数据段延迟很显著的移动通信环境中也不能获得最佳判断结果。
发明内容
本发明想要解决上面的问题,并且它的目的是提供一种技术,该技术实现一个可靠的判断判断由发送器设备接收的一个确认是原始数据段的确认还是重发数据段的确认。更明确地,在此描述的技术没有增加数据量,并且不须重新设计接收机设备而只需要对发送器设备进行一点点重新设计。
为了解决上面的问题,本发明提供一种使用在通信网中的发射控制方法,包括把序列信息分配给要按顺序从发送器设备发射到接收机设备的每个数据块;在把序列信息分配给多个数据块的每一个之后,把多个数据块发射到接收机设备;从多个数据块中重发确认信号未被接收的数据块;接收一个确认信号,该确认信号包含多个数据块中没有被接收机设备接收的最早数据块的序列信息;和根据重发数据块的序列信息以及包含在确认信号中的序列信息来判定该确认信号是否确认收到多个数据块的一个,其中,发射步骤包括当判定该确认信号确认收到多个数据块的一个时,发射所述已发射的多个数据块之后的一个数据块。数据块的一个示例是按照TCP的一个数据段。优选地,接收机设备是经由移动通信网执行分组通信的一个移动通信终端。
在一个优选实施例中,该发射控制方法还包括如下步骤在一个存储装置中存储重发数据块之后的数据块的序列信息,其中,判定步骤包括通过把储存在存储装置中的序列信息与包含在确认信号中的序列信息进行比较来执行所述判定。优选地,当包含在确认信号中的序列信息所识别的一个数据块紧跟着由储存在存储装置中的序列信息所识别的那个数据块时,判定该确认信号确认收到了多个数据块的一个。
在该发射控制方法的另一优选实施例中,根据一个窗口大小来判定在发射步骤中发射的多个数据块的数目,该窗口大小定义了不必接收确认就可以被发射的数据块数目;在这种情况下,重发步骤包括当重发在计划时间内未被确认的数据块时把窗口尺寸改变为最小尺寸,并且重发根据改变了的窗口大小所判定的数据块数目;并且发射步骤包括当判定确认信号确认收到多个数据块中的一个时增加窗口大小,如此使窗口大小等于或大于重发步骤中窗口大小被改变为最小尺寸之前的窗口大小,并且发射根据增加了的窗口大小所判定的数据块数目。
本发明还提供一个通信设备,包括分配装置,把序列信息分配给要按顺序发射到接收机设备的每个数据块;发射装置,在把序列信息分配给多个数据块的每一个之后,用于把多个数据块发射到接收机;重发装置,用于重发本多个数据块中没有接收到确认信号的一个数据块;接收装置,用于接收一个确认信号,该确认信号包含多个数据块中没有被接收机设备接收的最早数据块的序列信息;和判定装置,用于根据重发数据块的序列信息以及包含在确认信号中的序列信息来判定该确认信号是否确认收到多个数据块的一个,其中,当判定该确认信号确认收到多个数据块的一个时,该发射装置发射所述已发射的多个数据块之后的一个数据块。
在一个优选实施例中,通信设备还包括存储装置,用于存储该重发数据块之后的一个数据块的序列信息,其中该判定装置通过把储存在该存储装置中的序列信息与包含在确认信号中的序列信息进行比较来执行所述判定。优选地,当由包含在确认信号中的序列信息所识别的一个数据块紧跟着由储存在存储装置中的序列信息所识别的数据块时,所述判定装置判定确认信号确认收到了多个数据块的一个。
在另一优选实施例中,根据一个窗口大小来判定由通信设备的发射装置发射的多个数据块的数目,该窗口大小定义了不必接收确认就可以被发射的数据块数目。在这种情况下,当重发在计划时间内未被确认的一个数据块时重发装置把窗口尺寸改变为最小尺寸,并且重发根据改变了的窗口大小所判定的数据块数目;并且当判定确认信号确认收到多个数据块中的一个时发射装置增加窗口大小,如此使窗口大小等于或大于窗口大小被重发装置改变为最小尺寸之前的窗口大小,并且发射根据增加了的窗口大小所判定的数据块数目。
本呈现发明还提供一种通信系统,通过提供至少两个设备,这至少两个设备具有上面通信设备所包括的各个装置,则在上述各个实施例中由该通信系统实现所述发射控制方法。
另外,本发明提供一种程序,用于使计算机执行上述各个实施例中的发射控制方法。该程序可以被储存在各种类型的记录介质中,比如磁带、磁盘、软盘、光记录介质、磁光记录介质、DVD(数字视频光盘)、RAM等等。
关于在发送器设备处接收到的一个确认是和原始数据段有关还是和重发数据段有关,本发明实现了最佳判断,同时没有增加数据段的数据量。结果,能够防止不必要的数据段发射。而且,本发明不须重新设计接收机设备而只是对发送器设备进行一点点重新设计。
图1是示出根据本发明第一实施例的通信系统1结构的框图。
图2是示出按照实施例的服务器设备10的示例结构的框图。
图3是说明根据实施例附加到数据段的报头数据结构的图。
图4是一个序列图表,说明了根据实施例的服务器设备10和客户端设备40之间执行分组通信的示例。
图5是示出在服务器设备10处发射和接收数据段的操作流程图。
图6是用于描述根据本发明第二实施例的窗口的图。
图7是一个序列图表,示出了根据第二实施例的服务器设备10和客户端设备50之间执行分组通信的示例。
图8是示出根据第二实施例服务器设备10发射和接收数据段的操作流程图。
图9A到9C是用于描述根据第二实施例的拥塞窗口变化的图。
图10是一个序列图表,示出了在传统服务器设备10′和客户端设备50之间执行分组通信的示例。
图11是一个序列图表,示出了在传统服务器设备10′和客户端设备50’之间执行分组通信的另一示例。
具体实施例方式
以下将参考附图解释本发明的优选实施例。为了避免不必要的说明,组件说明将不重复。
A.第一实施例1.结构通信系统1的结构图1是说明根据本发明第一实施例的通信系统1的结构框图。
通信终端40连接到客户端设备50并且执行与客户端设备50的通信。移动分组通信网30提供分组通信服务给由网络30服务的通信终端40。服务器设备10经由互联网20、移动分组通信网30和通信终端40来执行与客户端设备50的分组通信。假设在当前实施例中,TCP(传输控制协议)被用来执行分组通信从而发射数据段。
服务器设备10的结构
接下来,将给出服务器设备10的结构说明。服务器设备10按照与标准计算机相同的方式来配置,因此只参照图2描述涉及本发明的那些元件。
CPU 100执行存储在存储器单元105中的程序,从而控制服务器设备10的每个元件。CPU 100包括一个计时器100a,当由CPU 100设置的一个预定时间已经过去时,其输出一个触发信号。存储器单元105包括一个RAM(随机存取存储器)102和一个ROM(只读存储器)103,以及一个HD(硬盘)104。
只读存储器103存储一个使CPU 100控制数据段发射的程序。特别地,当发射数据到客户端设备50时,CPU 100把数据分成段,给分成的每个数据段附加一个报头,并且依次发射那些数据段到客户端设备50。
在当前优选实施例中,CPU 100基于存储在硬盘104中的参数变量(在第二实施例中详述)用上述滑动窗口方法来发射数据段到客户端设备50。
图3示出附加给数据段的报头的数据结构。CPU 100给图3中所示报头的″序列号″字段分配一个序列号,输入其它必需的信息到报头的每个数据区域里,并且把报头附加到数据段。
在发射数据段到客户端设备50之后,CPU 100等候一个确认,其指示数据段已经被客户端设备50接收。附加到确认上的报头的数据结构与图3中所示的相同。在图3中所示的报头的″确认号″字段中,一个客户端设备50期待下一个接收的序列号由客户端设备50来设置。
CPU 100给计时器100a设置一个预定值(以下简称″超时值″)并且使计时器100a测量服务器设备10等候确认的逝去时间。在从计时器100a输出一个触发信号的情况下,该信号指示超时值在确认被接收之前已经过去,CPU 100判定数据段没有被客户端设备50接收。CPU100然后重新设置计时器100a的值并重发该数据段。当服务器设备10在重发之后接收到确认时,CPU 100用下述方法来判定所接收的确认对应原始数据段还是重发数据段。
在判定处理中,CPU 100首先比较包含在所接收的确认中的确认号(在下文中提到的″对比确认号″)和响应于重发段而被发射的确认所期待具有的确认号(以下简称″期待确认号″)。应当指出,响应于重发数据段而被发射的确认号是在重发数据段之后的数据段的序列号。在一个实施例中,CPU 100可以在重发时把数据段的序列号记录在RAM 102中作为一个期待确认号,其中该数据段是紧跟着该重发数据段。在刚一接收确认就执行判定处理的情况下,所记录的期待确认号被读取并且被用于比较。此外,在第二实施例中将被详细描述的是服务器设备10存储多种类型的参数变量并且将其用于拥塞控制。在这些变量当中,变量snd_nxt表示下一个将被发射的数据段的序列号;并且snd_nxt的值指示在该重发数据段之后紧跟着的数据段的序列号。因此,snd_nxt的值可以在执行判定中被用作一个期待确认号,代替在RAM 102中记录期待确认号。
在用于对比的确认号的值大于期待确认号的情况下,判定该确认对应原始数据段。简言之,CPU 100判定客户端设备50已经接收原始数据段,然后发射一个后续原始数据段。
在用于对比的确认号的值与期待确认号的值相同的情况下,不能判定该确认对应原始数据段还是重发数据段。因此,CPU 100假设确认与重发数据段相称,然后判定是否有后续到重发数据段的任何用于重发的数据段。在有这种数据段的情况下,用于重发的后续数据段被发射;而当没有这种数据段时,一个后续原始数据段被发射。
客户端设备50的结构客户端设备50具有通常被使用的计算机的结构,因此将只说明设备50具体涉及当前优选实施例的功能。
一从服务器设备10接收到一个数据段,客户端设备50就向服务器设备10发射通知数据段已经被接收的确认。指示该数据段之后紧接着的那个顺序位置的序列号被设置为包含在用于发射到服务器设备10的确认中的确认号。
在这里假设当客户端设备50正在执行同服务器设备10的分组通信时,通信终端40和移动分组通信网30之间的无线电通信环境恶化。在这种情况下,客户端设备50依次延迟接收从服务器设备10发射的数据段。在从第一个数据段被接收到第二个数据段被接收为止的时间间隔比预定时期短的情况下,只发射第二个数据段的确认,从而通知服务器设备10两个数据段都已经被接收。特别地,指示该第二数据段之后紧接着的那个顺序位置的序列号被设置为包含在用于发射到服务器设备10的确认中的确认号。
2.操作接下来,将描述当前优选实施例的操作。
图4是一个程序图,其示出在服务器设备10和客户端设备50之间执分组通信的例子。图5是说明在根据当前实施例的服务器设备10发射和接收数据段的操作流程图。假设在当前实施例中,滑动窗口方法被用来发射数据段。在第二实施例中,初始窗口大小被设置为3,并且可能被客户端设备50接收的数据段的数量相对于由服务器设备10设置的窗口大小来说是很大的。为简单起见,假设窗口大小被调整为3,而且窗口大小不因为拥塞控制而增加。在超时的情况下,服务器设备10在检测到重发超时之前立即记录窗口大小。
在图4中,序列号为0、1000和2000的数据段(原始数据段S1、S2和S3)从服务器设备10分别被发射到客户端设备50。
在图中所示的例子中,通信终端40和移动分组通信网30之间的无线通信环境已经恶化,并且原始数据段S1、S2和S3的发射已经被中止。当无线通信电环境改善并且通信得到恢复时,在网络30中已经驻留的原始数据段S1、S2和S3就被发射到客户端设备50。
另一方面,客户端设备50依次延迟接收原始数据段S1、S2和S3。在这个例子中,从原始数据段被接收到原始数据段S2被接收为止的时间间隔比预定时间短,并且确认号为2000的确认作为原始数据段S1和S2的确认被发射到服务器设备10。
现在,参照图5将给出由服务器设备10执行的操作说明。在步骤S300中,服务器设备10的CPU 100发射原始数据段S1、S2和S3,然后等候响应于原始数据段S1的接收而从客户端设备50发射来的确认。在等候确认时,CPU 100给计时器100a设置一个超时值来使之测量逝去时间(步骤S301)。
CPU 100然后判定是否有任何确认被接收(步骤S302)。当在步骤S302中判定为“否”的时候,CPU 100然后判定由计时器100a判定的超时是否出现(步骤S303)。在步骤S303中判定为“否”的情况下,程序回到步骤S302。在没有接收到确认而一个超时已经出现之前,由CPU 100重复步骤S302和S303的判定。
在这里更进一步假设,因为数据段S1到S3的到达延迟,所以逝去时间在确认R2被接收之前达到超时值。在这种情况下,在没有接收到确认的情况下(步骤S302;否,步骤S303;是),在由计时器100a测量的逝去时间达到超时值之后,从计时器100a输出一个触发信号。CPU 100然后重新设置计时器100a并进行到步骤S304。
在步骤S304中,CPU 100判定客户端设备50没有接收原始数据段S1,然后重发序列为号0(图4中的重发数据段S′1)的数据段到客户端设备50。窗口大小由于超时而被减小到一个最小值,并且在这里只有一个数据段被重发。CPU 100此外给计时器100a设置一个超时值来使之测量逝去时间。
CPU 100然后判定是否有任何确认被接收(步骤S305),并且在步骤S305中判定为“否”的情况下,CPU 100然后判定由计时器100a判断的一个超时是否出现(步骤S306)。当步骤S306的判定是“否”的时候,程序回到步骤S305。此后,在没有接收到确认而一个超时已经出现之前,由CPU 100重复步骤S305和S306的判定。
假设CPU 100随后在达到超时值之前接收到确认R2,例如在从计时器100a输出一个触发信号之前,其中,在步骤S305中判定为“是”,那么程序进行到步骤S307。
在步骤S307中,CPU 100重新设置计时器100a。CPU 100然后比较包含在确认R2中的确认号2000(对比确认号)和期待确认号1000,其中期待确认号是被期待包含在响应于在步骤S304中被发射的重发数据段的接收而被发射的确认中;期待确认号在重发时已经被存储在RAM 102中。在该示例中,因为对比确认号比期待确认号大,所以CPU 100判定确认R2对应原始数据段S1和S2。换言之,CPU 100判定原始数据段S1和S2被客户端设备50接收而没有丢失。从而,窗口大小通过参考存储在RAM 102中的信息而被恢复到超时之前的“3”,并且窗口按照原始数据段S1和S2滑动。从而,在已发射数据段S3之后紧接着的两个数据段现在可以被发射。
在步骤S309中,服务器设备10的CPU 100发射原始数据段S3之后紧接着的两个原始数据段S4和S5。在图4中示出了对应步骤S309的处理,其中,服务器设备10发射原始数据段S4和S5到客户端设备50。程序然后回到步骤S301,并且计时器100a开始测量逝去时间。
随后,在没有接收到确认而一个超时已经出现之前,由CPU 100重复步骤S302和S303的判定。
当服务器设备10执行上述处理时,原始数据段S3被客户端设备50接收。然后,确认号为3000的确认R3响应于原始数据段S3而被发射到服务器设备10。
在图5中,当确认号为3000的确认R3到达服务器设备10时,服务器设备10的CPU 100在步骤S302中判定“是”。从而,窗口再滑动一个数据段,并且服务器设备10现在可以发射在先前被发射的数据段中最后一个的数据段S5之后紧接着的一个数据段。在步骤S300中,CPU 100发射后续序列号为5000的原始数据段S6。
在图4中,在对应步骤S302的一个处理中,服务器设备10发射原始数据段S6到客户端设备50。
上文解释了数据段怎样从服务器设备10被发射到客户端设备50。
B.第二实施例接下来,将描述执行服务器设备10和客户端设备50之间的分组通信的例子。在下文中,与第一实施例相同的元件的描述将被省略。此外,同样的元件将用同样的指定附图标记来描述。
1.结构服务器设备10的结构将只给出涉及当前实施例的那些结构的描述。
服务器设备10的ROM 103存储一个用于使CPU 100执行数据段发射控制处理的程序。该处理在下面将被详细描述,并且应当指出,那些和第一实施例一样的部分在这里不会被描述。
在当前实施例中,在发射数据段到客户端设备50的过程中,CPU 100除了利用第一实施例描述的滑动窗口方法之外还利用执行拥塞控制来控制数据段的数据流。特别地,CPU 100增加或者降低窗口大小,例如多个数据段可能被发射而没有确认。每当一个已发射数据段的接收被确认时,窗口大小的变化就被发出。此外应当指出,ROM 103提前存储关于拥塞窗口控制的信息。
在以下描述中,将详述窗口拥塞控制。根据当前实施例的服务器设备10在硬盘104中存储至少五个参数变量,snd_max、snd_nxt、snd_una、snd_wnd和snd_cwnd。拥塞控制通过发射基于那些参数变量所标识的多个数据段而被执行。图6是一个框图,其描述这五个参数变量的相互关系。snd_max示出将被发射的原始数据段的序列号(图6中的序列号5000);snd_nxt示出数据段服务器设备10将发射或重发的下一个序列号(图6中的序列号5000);snd_una示出在已经被发射的数据段当中最近的未确认序列号(图6中的序列号2000)。
snd_cwnd示出可能没有接收到先前被发射的数据段的确认而由服务器设备10发射的多个数据段。一个分段按照被称为最大分段尺寸(以下简称”MSS”)的单位来被表示,其中,1MSS的缺省大小被确定为1,460字节;并且例如snd_cwnd具有3MSS的初始值。服务器设备10的CPU 100用″缓慢启动″算法来增加snd_cwnd的值,其中,每当接收到一个已发射数据段的确认时,被发射的多个数据段就按指数规律地被递增直到它的值达到一个预定阈值(例如,65,535字节);cnd_cwnd是由服务器设备10控制的一个值并且表示一个″拥塞窗口大小″。
相反,snd_wnd表示从客户端设备50被告知的通知窗口大小;并且通知窗口大小的值指示客户端设备50的一个可用缓冲区接收空间,并且用字节表示。
服务器设备10的CPU 100基于执行窗口控制来判定用于发射的窗口大小的通知窗口大小(snd_wnd)和拥塞窗口大小(snd_cwnd)的最小值。因此,发射窗口大小从来不超过通知窗口大小,并且被发射到客户端设备50的多个数据段从来不超过客户端设备50的可用缓冲空间。在当前实施例中,假设通知窗口大小比拥塞窗口大小大得多;并且为了解释起见,发射窗口大小是指″拥塞窗口大小″。
在当前实施例中,当检测到重发超时时,服务器设备10的CPU100首先设置snd_cwnd的值为1MSS,并且在检测到重发超时之前立即把snd_cwnd的值记录在RAM 102中。CPU 100用snd_una的值取代snd_nxt的值,然后重发一个由snd_nxt指定的数据段。每当接收到重发数据段的确认时,在snd_cwnd中设置的值就根据上述的缓慢启动算法被增加1MSS。
在当前实施例中,当一个确认在数据段重发之后被接收时,执行在第一实施例中描述的判定处理(图5的步骤S307;第二实施例中的图8的步骤S307)。从而,在被接收的确认对应原始数据段的情况下,拥塞窗口大小被立即恢复到重发之前的大小。特别地,拥塞窗口大小的值用snd_cwnd的值来更新,snd_cwnd的值在检测到重发超时的时候已经被存储在RAM 102中。同时,CPU 100用snd_max的值来替换snd_nxt的值,并且从一个由snd_nxt指定的数据段开始数据发射。
在当前实施例中,CPU 100执行所描述的拥塞控制,凭此在超时之前的数据流能够被迅速地恢复。
2.操作图7是一个序列图,其示出执行在服务器设备10和客户端设备50之间的分组通信的另一个例子。图8是示出通过根据当前实施例的服务器设备10的数据段的发射和接收操作流程图。图9A到9C是示出拥塞窗口大小中的变化的示意图。应当指出,同样的附图标记指示在第一实施例中被描述的同样的步骤,并且因此那里的描述被省略。
在图7中,序列号为0、1000、2000、3000和4000的数据段(原始数据段S11、S12和S13、S14、S15)从服务器设备10被发射到客户端设备50。在这时候所应用的拥塞窗口大小snd_cwnd是5MSS。如图9A中所示,最近的未确认序列号0(S11)被设置为snd_una的值。下一个将被发射的原始序列号5000被设置为snd_max;并且下一个将被发射的数据段(S16)的序列号5000被设置为snd_nxt。
在图中所示的例子中,终端40和移动分组通信网30之间的无线通信恶化,结果原始数据段S11到S15的发射被中止。当无线情况得到改善并且通信恢复时,原始数据段S11到S15依次被发射到客户端设备50。客户端设备50然后依次很大延迟地接收原始数据段S11到S15。
刚一接收到原始数据段S11,作为对原始数据段S11的接收响应,客户端设备50就发射确认号为1000的确认R11。
更进一步假设,由于数据段S11到S15的延迟接收,在确认R11的接收之前在服务器设备10处出现一个超时。简言之,即使超时值在步骤S301之后被超过之后,一个触发信号从计时器100a被输出,CPU 100也没有接收到确认。如图9A中所示,刚一超时,服务器设备10就用1MSS来更新拥塞窗口大小,并且用snd_una的值替换snd_nxt的值。
接下来在步骤S′304中,CPU 100判定原始数据段S11没有被客户端设备50接收。CPU 100然后重发具有通过snd_nxt的值指定的序列号0的数据段(图7中的一个重发数据段S′11)到客户端设备50。CPU100还给计时器100a设置一个超时值来使之测量超时值。
随后,在一个触发信号在计时器时间期满之前从计时器100a输出之前,服务器设备10的CPU 100接收确认R11,并且程序然后进行到步骤S307。
接下来,将参考图8描述服务器设备10对应上述步骤的操作。
在步骤S300中,服务器设备10的CPU 100用5MSS的拥塞窗口大小来发射五个原始数据段S11-S15。CPU 100然后执行S301到S303的处理,并且程序然后进行到步骤S′304。在步骤S′304中,CPU 100为了拥塞控制而把拥塞窗口大小改变为1MSS,并且重发序列号为0的数据段(重发数据段S′11)。随后,服务器设备10接收确认R11(步骤S305;是),并且步骤S307的处理被执行。
在步骤S307中,CPU 100比较包含在确认R11中的确认号1000(对比确认号)和用于在步骤S304中被发射的重发数据段的期待确认号(1000)。期待确认号的值可以通过参考snd_nxt的值而被获得;并且换言之,RAM 102的存储信息可以被认为与第一实施例中的相同。在这种情况下,对比确认号和期待确认号相同;并且不可能判定确认R11对应原始数据段S11还是重发数据段。因此,CPU 100判断确认R11对应重发数据段S′11。简言之,判定原始数据段S11由于数据段的丢失而没有被客户端设备50接收,并且程序进行到步骤S308。
在步骤S308中,判定重发数据段S′11之后紧接着的任何重发数据段是否存在。在这时候,snd_nxt的值是已发射数据段S12的序列号1000(见图9A)。因此,判定重发数据段的确存在,并且然后程序进行到步骤S′304。在步骤S′304中,确认R11被接收,因此拥塞窗口大小被增加到2MSS,凭此执行拥塞控制。两个后续序列号为1000和2000的数据段(S′12和S′13)然后被重发。CPU 100同时设置计时器100a。
在图7中,重发数据段S′12和S′13从服务器设备10被发射。
另一方面,客户端设备50响应于原始数据段S12、S13和S14的接收而分别发射确认号为2000、3000和4000的确认。在这里假设确认R12和R13由于在无线通信中的恶化而已经丢失。从而,确认R14被发射到服务器设备10。
在图8中,CPU 100在由计时器100a测量的逝去时间超过超时值之前接收确认R14(步骤S305;是)。程序然后进行到步骤S307。
在步骤S307中,CPU 100比较包含在确认R14中的确认号4000(对比确认号)和重发数据段S′13的期待确认号(3000)。因为对比确认号比期待确认号大,所以判定原始数据段S11到S14已经安全地被客户端设备50接收而没有丢失。程序然后进行到步骤S′309。
在步骤S′309中,CPU 100参考RAM 102中的存储信息并且立即恢复在重发超时之前存在的拥塞窗口大小。特别地,拥塞窗口大小被恢复到存储在RAM 102中的5MSS,并且更进一步由于确认R14的接收而被加1,这样总共是6MSS。如图9B中所示,snd_nxt的值用snd_max的值来替换。此外,因为原始数据段S15没有被确认,所以snd_una的值被改变为4000,其是原始数据段S15的序列号。只要拥塞窗口是从snd_una的值开始的6MSS,没有被发射而且低于拥塞窗口的5个原始数据段S16到S20被依次发射。
在图8中,序列号为5000、6000、7000、8000和9000的原始数据段S16、S17、S18、S19和S20从服务器设备10分别被发射到客户端设备50。
当发射这些原始数据段时,CPU 100接收确认R15。CPU 100然后判定原始数据段S15已经被客户端设备50接收,并且改变snd_una的值到对应原始数据段S16的序列号5000。拥塞窗口大小被增加1MSS,结果形成7MSS(参考图9C)。从而,后续原始数据段S21和S22可以被发射,并且这些数据段从服务器设备10被发射到客户端设备50。
如上所述的结构防止数据段不必要的重发以及防止在数据段的发射率的不必要的降低。此外,因为发射率被立即恢复到从重发超时之前存在的值来判定的一个值,所以由于不必要的重发所引起被降低的发射率可以被迅速地更正。
C.改进在上文中,本发明的一个优选实施例已经被说明。本发明可以在不背离本发明的主要特性的前提下而在各种其它实施例中被执行。下面是例子改进。
在上述优选实施例中,分组通信根据TCP被执行。然而,如果它执行数据块或者数据段的重发控制,本发明可以被用于不同于TCP的分组通信的通信协议。在这种情况下,数据段可以用类似在TCP中使用的滑动窗口的一个窗口来发射。
一个单独的服务器设备可以取代由服务器设备10执行的判定功能判定哪一数据段对应所接收确认。在这种情况下,在发射重发数据段之后接收到确认时,紧接着服务器设备10在一个单独服务器设备处查询确认是对应于一个原始数据段还是对应于重发数据段。这个单独的服务设备执行所述判定并把判定结果发射到服务器设备10。服务器设备10然后能够根据所发射的判定结果来判定是哪一数据段对应该确认。
在上面的实施例中,客户端设备50通过通信终端40执行与服务器设备10的分组通信。然而,客户端设备50可以包括无线通信功能并通过移动分组通信网30、互联网20,而不是通过通信终端40,与服务器设备10执行分组通信。
权利要求
1.一种使用在通信网中的发射控制方法,包括把序列信息分配给要按顺序从发送器设备发射到接收机设备的每个数据块;在把所述序列信息分配给多个数据块中的每一个之后,把所述多个数据块发射到所述接收机;从所述多个数据块中重发确认信号未被接收的数据块;接收一个确认信号,所述确认信号包含所述多个数据块中没有被所述接收机设备接收的最早数据块的序列信息;以及根据所述重发数据块的序列信息以及包含在所述确认信号中的所述序列信息来判定所述确认信号是否确认收到所述多个数据块中的一个,其中,所述发射步骤包括当判定所述确认信号确认收到所述多个数据块的一个时,发射所述已发射的多个数据块之后的一个数据块。
2.根据权利要求1的发射控制方法,其中,根据一个窗口大小来判定在所述发射步骤中发射的所述多个数据块中的数目,所述窗口大小定义了不必接收确认就可以被发射的数据块数目;所述重发步骤包括当重发在计划时间内未被确认的一个数据块时把所述窗口尺寸改变为最小尺寸,并且重发根据改变了的窗口大小所判定的数据块数目;并且所述发射步骤包括当判定所述确认信号确认收到所述多个数据块的一个时增加所述窗口大小,如此使所述窗口大小等于或大于所述重发步骤中所述窗口大小被改变为所述最小尺寸之前的窗口大小,并且发射根据增加了的窗口大小所判定的数据块数目。
3.一种通信设备,包括分配装置,把序列信息分配给要按顺序发射到接收机设备的每个数据块;发射装置,在把所述序列信息分配给多个数据块中的每一个之后,所述发射装置用于把所述多个数据块发射到所述接收机设备;重发装置,用于从所述多个数据块中重发没有接收到确认的数据块;接收装置,用于接收一个确认信号,所述确认信号包含所述多个数据块中没有被所述接收机设备接收的最早数据块的序列信息;以及判定装置,用于根据所述重发数据块的序列信息和包含在所述确认信号中的所述序列信息,判定所述确认信号是否确认收到所述多个数据块的一个;其中,当判定所述确认信号确认收到所述多个数据块中的一个时,所述发射装置发射所述已发射的多个数据块之后的一个数据块。
4.根据权利要求3的通信设备,还包括存储装置,用于存储所述重发数据块之后紧接着的一个数据块的序列信息,其中,所述判定装置通过把储存在所述存储装置中的所述序列信息与包含在所述确认信号中的所述序列信息进行比较来执行所述判定。
5.根据权利要求4的通信设备,其中,当由包含在所述确认信号中的所述序列信息所识别的一个数据块紧跟着由储存在所述存储装置中的所述序列信息所识别的所述数据块时,所述判定装置判定所述确认信号确认收到所述多个数据块中的一个。
6.根据权利要求3-5任何一个的通信设备,其中,根据一个窗口大小来判定由所述发射装置发射的所述多个数据块中的数目,所述窗口大小定义了不必接收确认就可以被发射的数据块数目;当重发在计划时间内未被确认的一个数据块时所述重发装置把所述窗口尺寸改变为最小尺寸,并且重发根据改变了的窗口大小所判定的数据块数目;并且当判定所述确认信号确认收到所述多个数据块中的一个时,所述发射装置增加所述窗口大小,如此使所述窗口大小等于或大于所述窗口大小被所述重发装置改变为所述最小尺寸之前的窗口大小,并且发射根据增加了的窗口大小所判定的数据块数目。
7.一个通信系统,包括分配装置,用于把序列信息分配给要按顺序从发送器设备发射到接收机设备的每个数据块;发射装置,在把所述序列信息分配给多个数据块中的每一个之后,所述发射装置用于把所述多个数据块发射到所述接收机;重发装置,用于从所述多个数据块中重发没有接收到确认的一个数据块;接收装置,用于接收一个确认信号,所述确认信号包含所述多个数据块中没有被所述接收机设备接收的最早数据块的序列信息;以及判定装置,用于根据所述重发数据块的序列信息和包含在所述确认信号中的所述序列信息来判定所述确认信号是否确认收到所述多个数据块的一个;其中,当判定所述确认信号确认收到所述多个数据块中的一个时,所述发射装置发射所述已发射的多个数据块之后的一个数据块。
8.一种程序产品,用于使计算机执行如下处理把序列信息分配给要按顺序从发送器设备发射到接收机设备的每个数据块的处理;在把所述序列信息分配给多个数据块中的每一个之后把所述多个数据块发射到所述接收机设备的处理;从所述多个数据块中重发未接收确认信号的那个数据块的处理;接收一个确认信号的处理,该确认信号包含所述多个数据块中没有被所述接收机设备接收的一个最早数据块的序列信息;以及根据所述重发数据块的序列信息和包含在所述确认信号中的所述序列信息来判定所述确认信号是否确认收到所述多个数据块中的一个的处理,其中,所述发射处理包括当判定所述确认信号确认收到所述多个数据块中的一个时,发射所述已发射的多个数据块之后的一个数据块。
全文摘要
本发明在重发一个数据段之后接收到一个确认时,紧接着把包含在该确认中的一个确认号与期望被包含在关于该重发数据段的确认中的一个确认号相比较。当前者比后者大时,判定该确认和原始发射的一个数据段有关。
文档编号H04L1/18GK1512710SQ20031012433
公开日2004年7月14日 申请日期2003年12月26日 优先权日2002年12月27日
发明者三宅基治, 稻村浩, 高桥修 申请人:株式会社Ntt都科摩