通信系统中控制数据传输的方法和系统的制作方法

文档序号:7956746阅读:180来源:国知局
专利名称:通信系统中控制数据传输的方法和系统的制作方法
技术领域
本发明涉及通信网络,更具体地说,涉及一种用于传输控制协议(TCP)信息量平滑化的方法和系统。
背景技术
在安装于终端站(end station)内的某些现有的网络接口卡(NIC)中,使用长期信息流的应用程序可在更长的时间周期内传输信息。终端站又称为终端。信息可通过网络在发送终端和接收终端之间传输。该网络可包括多个实现发送终端和接收终端之间的信息传输的通信媒体和通信设备。信息可通过网络传输以不同的结构形态传输,如消息、数据包或帧。传输包含有该信息的结构形态的方法称为协议。某些传输层数据协议可控制在一定时间内可被传输的信息量。传输控制协议(TCP)便是上述协议的一种。TCP可基于拥塞窗口(congestion window)和缓慢启动(slow start)限制在一定时间内传输的信息量。在信息流传输开始时,拥塞窗口可设定为初始值。这可导致由发送终端传输至接收终端的信息量相对比较少。当接收终端接收到由发送终端传输的信息后,返回确认信息给发送终端。
收到确认信息后,发送终端可将拥塞窗口的相关值增加至比初始值大,并基于该与拥塞窗口相关的较大值传送随后的信息。这将使得在相同时间段内传送的信息量要比与拥塞窗口相关的值较小时传送的信息量大。拥塞窗口的大小可随着与拥塞窗口相关的值的增加而增加。较大的拥塞窗口可使得在发送终端和接收终端之间的信息传输率更高。在接收到随后的信息后,接收终端可发送随后的确认信息。然后发送终端可基于确认信息的接收继续增加拥塞窗口的大小。
在发送终端没有收到对之前传送的信息的确认信息的情况下,发送终端可确认接收终端没有接收到之前传输的信息。发送终端将重新传输或重新发送之前发送的没有收到对应确认信息的信息。此外,发送终端可确认网络中出现了拥塞,导致之前传输的信息没有被接收终端接收到。之前传输的信息可被发送终端视为“丢失”在网络中。基于对确认网络中出现拥塞或网络拥塞的响应,发送终端还减小拥塞窗口的大小。拥塞窗口大小的减小使得发送终端和接收终端之间的信息传输率降低。信息传输率降低后,随后可将拥塞窗口的大小再次增加。一个终端的最大信息传输率可由NIC的速度决定,该最大信息传输率可表示NIC通过通信媒体向网络传送或接收信息的最大速率。
随着NIC速度的增加,在该速度下接收和发送信息所需的处理需求也随之增加。例如,当接收终端接收到一个帧时,接收终端内的NIC卡发送通知给该接收终端内的中央处理器(CPU)。CPU执行与处理接收或发送的数据包相关的协议相关处理任务。随着NIC速度的增加,在一个时间段内发送的上述通知或中断的数量也随之增加。上述中断的量可增加至CPU不能再执行其它任务的程度。接收终端的用户可观察到应用程序内和/或用户输入响应的性能降低。
TCP卸载引擎(TOE),包括有TCP/IP(网际协议)优化后的NIC处理TCP包的技术。该技术可从CPU中卸载这些任务。TOE应用的一个例子是10Gb以太网NIC。10Gb以太网包括IEEE 802.3ae规定的标准,并可定义10Gbps的数据传输率。该传输率又称为“线路速率(line rate)”。在某些应用中,10Gb以太网可用于基于互联网小型计算机系统接口(iSCSI)提供终端间的高速互连,例如个人计算机和计算机工作站,和计算机存储设备,例如磁盘驱动器。此外,iSCSI可在包括终端站(例如个人计算机和计算机工作站)和服务器设备(例如互联网服务器、邮件服务器和流媒体服务器)的网络中提供各种设备之间的高速互连。在某些应用中,在计算机存储设备和计算机工作站之间通过网络传送的信息可持续一段比一般信息传输周期长的时间。这些长时间段信息传输又称为“长期(long lived)”信息流或“长期流”。
与网络连接的多个设备均可传输信息。多个设备产生的总信息量可能超过在一个发送终端或终端站和一个接收终端或终端站之间传输信息的网络的容量。产生的信息量的一部分可被网络内的设备抛弃。被抛弃的包含有信息的数据包视为丢失的数据包。随着NIC接口速度的增加,网络拥塞的可能性也随之增加。此外,随着长期流的数量增加,网络拥塞的可能性也可能随之增加。
比较本发明后续将要结合附图介绍的系统,现有技术的其它局限性和弊端对于本领域的普通技术人员来说是显而易见的。

发明内容
本发明提供一种用于TCP信息量平滑的系统和/或方法,以下将结合至少一副附图对其进行详细描述,并在权利要求书中给出更完整的介绍。
根据本发明的一个方面,提供一种通信系统中控制数据传输的方法,所述方法包括基于信息量定义对从TCP卸载引擎发送信息的时间进行调度。
优选地,所述调度包括以以下一种速率传输所述信息大于所述信息生成速率的速率、约等于所述信息生成速率的速率和小于所述信息生成速率的速率。
优选地,所述方法进一步包括基于所述信息的发送减少令牌计数值。
优选地,所述方法进一步包括基于确定的比率增加所述令牌计数值。
优选地,所述方法进一步包括为所述令牌计数器设置最大令牌计数值。
优选地,所述方法进一步包括基于所述令牌计数器的当前值确定是否挂起或发送当前数据包。
优选地,所述发送时间的调度基于至少以下其一进行服务级和至少一个信息流。
优选地,所述信息流包括至少以下之一协议、源地址、目的地址、源端口和目的端口以及至少与OSI协议参考模型的高协议层5至7相关的报头字段。
根据本发明的一个方面,提供一种通信系统中控制数据传输的系统,所述系统包括至少一个处理器,基于信息量定义对从TCP卸载引擎发送信息的时间进行调度。
优选地,所述调度包括以以下一种速率传输所述信息大于所述信息生成速率的速率、约等于所述信息生成速率的速率和小于所述信息生成速率的速率。
优选地,所述至少一个处理器基于所述信息的发送减少令牌计数值。
优选地,所述至少一个处理器基于确定的比率增加所述令牌计数值。
优选地,所述至少一个处理器为所述令牌计数器设置最大令牌计数值。
优选地,所述至少一个处理器基于所述令牌计数器的当前值确定是否挂起或发送当前数据包。。
优选地,所述发送时间的调度基于至少以下其一进行服务级和至少一个信息流。
优选地,所述信息流包括至少以下之一协议、源地址、目的地址、源端口和目的端口。
根据本发明的一个方面,提供一种机器可读存储器,其内存储的计算机程序包括至少一个代码段,用于在通信系统中控制数据传输,所述至少一个代码段由机器执行以使所述机器执行如下步骤基于信息量定义对从TCP卸载引擎发送信息的时间进行调度。
优选地,所述机器可读存储器进一步包括以以下一种速率传输所述信息的代码大于所述信息生成速率的速率、约等于所述信息生成速率的速率和小于所述信息生成速率的速率。
优选地,所述机器可读存储器进一步包括基于所述信息的发送减少令牌计数值的代码。
优选地,所述机器可读存储器进一步包括基于确定的比率增加所述令牌计数值的代码。
优选地,所述机器可读存储器进一步包括为所述令牌计数器设置最大令牌计数值的代码。
优选地,所述机器可读存储器进一步包括基于所述令牌计数器的当前值确定是否挂起或发送当前数据包的代码。
优选地,所述发送时间的调度基于至少以下其一进行服务级和至少一个信息流。
优选地,所述信息流包括至少以下之一协议、源地址、目的地址、源端口和目的端口以及至少与OSI协议参考模型的高协议层5至7相关的报头字段。
本发明的各种优点、各个方面和创新特征,以及具体实施例的细节,将在以下的说明书和附图中进行详细介绍。


下面将结合附图及实施例对本发明作进一步说明,附图中图1a是根据本发明一个实施例的网络和终端站的示意图;图1b是根据本发明一个实施例的用于进行传输控制协议(TCP)信息量平滑化的终端站的框图;图1c是根据本发明一个实施例的包括有网络接口卡(NIC)用于进行传输控制协议(TCP)信息量平滑化的终端站的框图;图2a是根据本发明一个实施例通过TCP网络传输数据包的示意图;图2b是根据本发明一个实施例通过TCP网络传输随后的数据包的示意图;图2c是根据本发明一个实施例在TCP网络中丢弃数据包的示意图;图3a是根据本发明一个实施依据用于进行TCP信息量平滑化的NIC内的信息量定义(traffic profile)传输信息的示意图;图3b是根据本发明一个实施例在用于进行TCP信息量平滑化的NIC内不遵循信息量定义且进行令牌桶填充的情况下进行信息传输的示意图;图3c是根据本发明一个实施例在用于进行TCP信息量平滑化的NIC内不遵循信息量定义且令牌桶已填满的情况下进行信息传输的示意图;图3d是根据本发明一个实施例在用于进行TCP信息量平滑化的NIC内遵循信息量定义且进行令牌桶清空的情况下进行信息传输的示意图;图4是根据本发明一个实施例用于以每个信息流为基础执行信息量平滑化的系统的框图;图5a是根据本发明一个实施例用于以每个服务级(COS)为基础执行信息量平滑化的系统的框图;图5b是根据本发明一个实施例用于对NIC总信息量执行信息量平滑化的系统的框图;图6a是根据本发明一个实施例用于系统内进行令牌桶填充的步骤的流程图;图6b是根据本发明一个实施例用于系统内基于令牌桶进行TCP信息量平滑化的步骤的流程图;图7是根据本发明一个实施例的入口交换机信息量平滑化的框图;图8是根据本发明一个实施例的出口交换机信息量平滑化的框图。
具体实施例方式
本发明提供一种对TCP信息量平滑化的方法和系统。信息量平滑化包括控制通信系统内的数据传输的方法,进一步包括基于信息量定义对来自TCP卸载引擎(TOE)的信息的传输时间进行调度的方法。信息量平滑化包括以大于、约等于或小于信息生成速率的速率传送来自TOE的信息。某些现有的使用TOE的网络接口卡(NIC)不能提供信息量调整机制。如果不提供信息量调整机制,网络中数据包丢失的可能性会更大。
图1a所示为根据本发明一个实施例的网络和终端站的示意图。参照图1a所示的网络包括多个以太网交换机10、20、30、40和50、外部网络60和多个终端站(包括计算机工作站和服务器)。如图1a中所示有多个计算机工作站22、24、26、32、34和36,此外还有多个服务器,包括数据库服务器12、流媒体服务器14、文件服务器16和网络管理服务器52。图中还示出了多个终端站对网络的接口11、13、15、21、23、25、31、33、35和50,以及多个网络设备对网络设备的接口41、51、53、55、57和59。
计算机工作站22、24、26、32、34和36包括终端站,可由用户用于执行程序和应用软件,例如电子邮件、互联网浏览器、数据库访问程序和媒体播放器。计算机工作站22包括与接口21连接的NIC。计算机工作站22可使用TOE通过接口21传输信息至网络,或从网络接收信息。同样地,计算机工作站24、26、32、34和36可使用各自对应的接口23、25、31、33和35。
数据库服务器12可将信息存储在一个或多个数据库内。数据库服务器12包括有与接口13连接的NIC。一个或多个包含有信息的记录可从数据库中获得,并随后通过接口13传输至该网络。一个或多个记录可通过接口13从该网络中获得并存储于数据库中。
流媒体服务器14可存储一个或多个视频、音频或多媒体程序。流媒体服务器14包括有与接口15连接的NIC。程序的至少一部分可从次级存储器中获得,和/或缓存于主存储器,并通过接口15传输至网络。通过该网络传输的持续时间可大于、约等于或小于程序的持续时间。程序可通过接口15从网络中接收并存储。
文件服务器16可将信息存储在一个或多个文件内。文件服务器16包括有与接口11连接的NIC。通过接口11可以获得文件并随后发送至该网络。通过接口11也可以从网络中接口文件并存储。
网络管理服务器52可存储与网络中各种网络通信设备和/或接口的配置和/或可用性有关的信息。网络管理服务器52还可存储与终端站以及与其连接的接口的配置和/或可用性有关的信息。网络管理服务器52包括有与接口51连接的NIC。网络管理服务器52可用于设定控制网络通信设备、接口和/或终端站的性能和操作的配置参数。网络管理服务器52可使用协议(例如简单网络管理协议(SNMP))来管理网络。网络管理服务器52可通过接口51发送包含有设定配置参数命令的信息至网络,或发送包含有报告配置参数当前值的信息至网络。网络管理服务器52还可通过接口51从网络接收包含有配置参数请求的信息。
以太网交换机10、20、30、40和50为典型的网络通信设备,用于实现与该网络连接的终端站之间的信息传输。交换机10包括一个或多个线路卡,与接口11、13、15和53连接。交换机10可通过接口13与数据库服务器12通信,通过接口10与流媒体服务器14通信,通过接口11与文件服务器16通信,通过接口53与交换机50通信。交换机10可实现从终端站12、14、16和交换机50中的任何一个到其中任何其他终端站或交换机的信息传输。
交换机20包括一个或多个线路卡,与接口21、23、25和55连接。交换机20可通过接口21与工作站22通信,通过接口23与工作站24通信,通过接口25与工作站26通信,以及通过接口55与交换机50通信。交换机20可实现从终端站22、24、26和交换机50中的任何一个到其中任何其它终端站或交换机的信息传输。
交换机30包括一个或多个线路卡,与接口31、33、35和41连接。交换机30可通过接口31与工作站32通信,通过接口35与工作站34通信,通过接口33与工作站36通信,以及通过接口41与交换机40通信。交换机30可实现从终端站32、34、36和交换机40中的任何一个到其中任何其它终端站或交换机的信息传输。
交换机40包括一个或多个线路卡,与接口41和57连接。交换机40可通过接口41与交换机30通信,以及通过接口57与交换机50通信。交换机40可实现从交换机30和50的中任何一个到其中任何其它交换机的信息传输。
交换机50包括一个或多个线路卡,与接口51、53、55、57和59连接。交换机50可通过接口51与网络管理服务器52通信,通过接口53与交换机10通信,通过接口55与交换机20通信,通过接口57与交换机40通信,以及通过接口59与外部网络60通信。交换机50可实现从终端站52和交换机10、20和40中任何一个到其中任何其它终端站、交换机或外部网络的信息传输。
外部网络60包括一个或多个直接或间接与接口59连接的网络。一个或多个终端站可与外部网络60连接。
工作过程中,图1a中所示的网络包括有使得与该网络连接的各终端站之间能够传输信息的通信系统。该网络也支持终端站向外部网络60发送信息,或从外部网络60接收信息。该网络中可能会出现网络拥塞,导致数据包丢失。例如,多个服务器12、14和16,以及多个工作站22、24、26、32、34和36可在大致重叠时间段内向外部网络60传送信息。如果接口11、13和15的总线路速率大于接口53的线路速率,交换机10处就会出现网络拥塞。如果接口21、23和25的总线路速率大于接口55的线路速率,交换机20处就会出现网络拥塞。如果接口31、33和35的总线路速率大于接口41的线路速率,交换机30处就会出现网络拥塞。如果接口53、55和57的总线路速率大于接口59的线路速率,交换机50处就会出现网络拥塞。
图1b所示为根据本发明一个实施例用于进行传输控制协议(TCP)信息量平滑化的终端站的框图。参照图1b所示为终端系统100和网络接口160。终端系统100包括中央处理单元(CPU)110、存储器控制器120、主机存储器130、主机接口140和NIC 150。NIC 150包括TOE或者支持TCP的以太网控制器(TEEC)170。
CPU 110与存储器控制器120以及主机存储器130连接。CPU 110包括有恰当的逻辑、电路和/或代码,以传输命令和/或信息包至存储器控制器120或主机存储器130。主机存储器130与CPU 110、存储器控制器120以及主机接口140连接。主机存储器130可包括恰当的逻辑、电路和/或代码,以用于存储或写以及获取或读取信息。主机存储器130可采用多种存储器技术,例如随机访问存储器(RAM)。存储器控制器120与CPU 110、主机存储器130和主机接口140连接。存储器控制器120可包括恰当的逻辑、电路和/或代码,以向主机存储器130传送命令,用以控制对主机存储器130的读/写。对读取主机存储器进行控制的结果是可以对读和/或写主机存储器130的时间进行调度。存储器控制器130可以是包括有多个集成电路的芯片组内的一个部件。主机接口140与存储器控制器120、主机存储器130和NIC 150连接。主机接口140可包括恰当的逻辑、电路和/或代码,以用于将从主机存储器130读取的信息传输给NIC 150。主机接口140还可用于将从NIC 150接收的信息传输给主机存储器130并写入其中。NIC 150与主机接口140以及网络接口160连接。NIC150可包括恰当的逻辑、电路和/或代码,以用于通过接口160将信息从主机接口140发送至网络。NIC 150可用于通过接口160从该网络接收信息,并将接收的信息传送给主机接口140。TOE 170可包括恰当的逻辑、电路和/或代码,用于执行协议处理以及创建一个或多个数据包和/或一个或多个帧,以用于通过接口140传输信息至网络。
工作过程中,CPU 110可执行应用程序中的步骤,使用NIC 150中的TOE170通过接口160传送信息至网络。CPU 110可发出指令使计算机存储设备(例如,磁盘驱动器)传输数据至主机存储器130。随后CPU 110可传送指令给存储器控制器120,使主机存储器130传输数据至主机接口140。主机接口140可传输数据至NIC 150。NIC中的TOE 170可对数据执行协议处理以创建一个或多个数据包和/或一个或多个帧,用于通过网络传输数据给接收终端。存储器控制器120可对从主机存储器130读取数据的时间进行调度,这样的话,存储器控制器120还可对从TCP卸载引擎向网络发送包含有该数据的数据包的时间进行调度。存储器控制器120可利用信息量定义来确定时间的调度。例如,信息量定义中可对从TOE向网络传输信息的速率作出规定。该速率可大于、约等于或小于信息从CPU 110传输至主机存储器130的速率。该速率还可大于、约等于或小于信息从计算机存储设备传输至主机存储器130的速率。信息传输至主机存储器130以便随后通过接口160传输至网络的速率,可视为信息生成的速率。
图1c所示为根据本发明一个实施例用于进行TCP信息量平滑化且包括有网络接口卡的终端站的框图。参照图1c所示为终端系统105和网络接口160。终端系统105包括中央处理单元(CPU)110、主机存储器130和NIC 155。NIC 155包括存储器控制器120、专用存储器135和TOE或TEEC 170。
对比图1b,图1c所示的终端系统内,存储器控制器120可位于NIC上。这样可使得至少一部分信息量的调整由NIC 155来执行。CPU 110、存储器控制器120、主机存储器130和TOE 170可参看图1b中的描述。图1c中,存储器控制器120可与TOE 170连接。专用存储器135可包括恰当的逻辑、电路和/或代码,以用于存储或写以及获取或读取信息。工作过程中,存储器控制器120和/或TOE 170可使用专用存储器135执行与信息量平滑化相关的任务。
图2a是根据本发明一个实施例通过TCP网络传输数据包的示意图。参照图2a所示为以太网交换机202、多个终端站210和220、多个接口211、221和231、多个数据包216和226以及外部网络234。以太网交换机202可包括有存储器204。终端站210可包括NIC 212和CPU 214。终端站220可包括NIC 222和磁盘驱动器224。
NIC 212可使用协议(例如TCP)通过接口211传送数据包216。NIC 222可使用协议(例如TCP)通过接口221传送数据包226。数据包216中包括有CPU 214生成的信息。数据包226包括有磁盘驱动器224生成的信息。NIC 212与接口211连接。NIC 222与接口221连接。以太网交换机202与接口211、221和231连接。
工作过程中,终端站210将数据包216发送给与外部网络234连接的接收终端站。以太网交换机202通过接口221接收数据包216。随后以太网交换机202通过接口231将数据包216发送给外部网络234。同样地,终端站220通过以太网交换机202传输数据包226至与外部网络234连接的接收终端站。接口211、221和231的线路速率大约为10Gbps。数据包216可包括有多个二进制比特,可通过接口211以10Gbps的速率擦传输。数据包226可包括多个二进制比特,可通过接口221以10Gbps的速率传输。数据包216可从终端站210传输至以太网交换机202。接收的数据包216可存储在以太网202中的存储器204内,然后通过接口231转发至外部网络234。数据包226可从终端站220传输至以太网交换机202。接收的数据包226可存储在以太网交换机202中的存储器204内,然后再通过接口231转发至外部网络234。
图2b是根据本发明一个实施例通过TCP网络传输随后的数据包的示意图。参照图2b所示为以太网交换机202、多个终端站210和220、多个接口211、221、231、多个数据包216、217、226、227以及外部网络234。以太网交换机202包括有存储器204。终端站210包括NIC 212和CPU 214。终端站220包括NIC 222和磁盘驱动器224。
对比图2a,图2b所示为在随后时间内的数据包传输。在图2b中,数据包216和226由以太网交换机202接收,并存储于存储器204中。数据包216和226可利用存储器204的整个存储容量。NIC 212可不采用信息量平滑。发送了数据包216后,终端站210可继续以10Gbps的速率发送信息,通过接口211发送随后的数据包217。NIC 222也可不采用信息量平滑。发送了数据包226后,终端站220继续以10Gbps的速率发送信息,通过接口221发送随后的数据包227。
图2c是根据本发明一个实施例在TCP网络中丢弃数据包的示意图。参照图2c所示为以太网交换机202、多个终端站210和220、多个接口211、221、231、多个数据包216、217、226、227以及外部网络234。以太网交换机202可包括有存储器204。终端站210包括NIC 212和CPU 214。终端站220包括NIC 222和磁盘驱动器224。
对比图2b,图2c所示为数据包的传输和丢弃。以太网交换机202通过接口211和221接收的信息量可通过接口231传送出去。接口211和221的总线路速率可约等于20Gbps。此总线路速率大于接口231的10Gbps的线路速率。导致的结果是,到达以太网交换机202并存储在存储器204中的数据报的速率大于从以太网交换机202发送出去以及从存储器204中重新读出的速率。如图2c中所示,数据包226从存储器204中重新读出并通过接口231发送出去。将数据包226从存储器204中读出可以释放存储器的空间,以便存储随后接收的数据包。数据包227可存储于存储器204中。但是存储器204可能没有空闲的空间来接收随后的数据包227。因此,以太网交换机202丢弃数据包227。
图3a是根据本发明一个实施依据用于进行TCP信息量平滑化的NIC内的信息量定义(traffic profile)传输信息的示意图。参照图3a所示为NIC 302。NIC 302包括令牌桶304、令牌305、TOE 350和多个数据包306、308…310。数据包306、308…310可由TOE 350生成。
NIC 302可使用信息量定义来指定信息传输的速率约等于R bps(字节/秒)。速率R bps可小于NIC 302的线路速率。只要信息量生成的速率约等于Rbps,则信息量平滑化包括对以约等于信息生成速率的速率发送来自TOE的数据包306、308…310内的信息进行调度。在给定的一段瞬时时间内,令牌桶304的状态可包括令牌305。令牌可以一定的速率(例如速率R)到达令牌桶304。与令牌桶304相关的对应的令牌计数值随着每个令牌的到达而增加。令牌计数值可增加至最大值Tmax。当前计数值达到Tmax时,视为令牌桶304已填满。在TOE 350发送数据包306之后,令牌桶304内的令牌数量将减少。该令牌数量的减少将改变与令牌桶304相关的对应令牌计数值。如果当前令牌计数值小于或等于0,信息量平滑算法将阻止NIC 302发送随后的数据包308,直到令牌计数值大于0。当前令牌计数值小于或等于0时,视为令牌桶304已被清空。如果信息生成的速率约等于R bps,那么在TOE 350发送数据包306、308和310的瞬时时间时,令牌桶304的令牌计数值将大于0。
图3b是根据本发明一个实施例在用于进行TCP信息量平滑化的NIC内不遵循信息量定义且令牌桶已填满的情况下进行信息传输的示意图。参照图3b所示为NIC 302。NIC 302包括令牌桶304、多个令牌305、307、309和311、TOE 350以及多个数据包316、318、320…322。数据包316、318、320…322可由TOE 350产生。
NIC 302可使用信息量定义来规定信息传输速率约等于R bps。速率R bps可小于NIC 302的线路速率。如果信息量的生成速率约等于Q bps,且速率Q比速率R大,信息量平滑操作包括对在有限的一段时间周期内以大致与信息生成速率相等的速率从TOE 350中发送数据包316、318、320…322内的信息进行调度。该时间周期可基于令牌桶304的状态确定。如果在一个时间增量内数据包传输速率Q大于R,令牌计数值以超过令牌补充速率的速率递减。在以大于R的速率Q传输开始时,令牌桶304的令牌计数值可达到值Tmax。这表示令牌桶304已填满且不能再接收到达的令牌。在以大于R的速率Q传输信息的时间段内,tburst可小于或等于Tmax/(Q-R)。
图3c是根据本发明一个实施例在用于进行TCP信息量平滑化的NIC内不遵循信息量定义且进行令牌桶填充的情况下进行信息传输的示意图。参照图3c所示为NIC 302。NIC 302包括令牌桶304、TOE 350和多个数据包318、320…322、324。数据包318、320…322、324可由TOE 350生成。
继续图3b的讨论,如果令牌桶304的令牌计数值达到一个小于或等于0的值,而且信息量继续以约等于Q bps(速率Q大于速率R)的速率生成时,信息量平滑化就是对以小于信息生成速率的速率发送来自TOE 350的数据包318、320…322、324内的信息进行调度。当令牌桶304为空时,信息量平滑化操作将不再允许TOE 350以约等于Q bps的速率传送信息。在这种情况下,依据数据包324生成的进度,TOE 350将不发送包含在数据包324中的信息。通过信息量平滑后,如图3c所示,数据包324的传输将被阻止。可要求包括有NIC 302的终端系统105将该信息缓存在主机存储器130内,直到安排允许该信息的传送。直到令牌桶304的令牌计数值达到大于0的值且令牌桶304不再为空时,才能允许安排由TOE 350传送数据包324。
图3d是根据本发明一个实施例在用于进行TCP信息量平滑化的NIC内遵循信息量定义且进行令牌桶清空的情况下进行信息传输的示意图。参照图3d所示为NIC 302。NIC 302包括令牌桶304、多个令牌305、307、309和311以及多个数据包336、338…340。数据包336、338…340可由TOE 350生成。
继续图3c的讨论,如果信息量生成的速率被降低为约等于T bps,其中在一个递减的时间增量中,速率T小于速率R,令牌到达令牌桶304的速率大于令牌被移除的速率。如果传输以T小于R的速率继续,令牌桶304的令牌计数值将增加。如果在一个时间段开始时,令牌桶304为空,经过一段速率T小于R的时间段后,令牌桶304的状态因增加了令牌305而改变。如果在随后的时间段内,传输仍以上述速率继续,令牌桶304的状态可随后因令牌307的到达而改变。如果传输仍以上述速率继续,令牌桶304的状态可因为增加了令牌309以及随后的令牌311而改变。随着令牌305、307、309和311加入令牌桶304,相关的令牌计数值也随之增加。在本发明的各个实施例中,该令牌计数值可增加直至达到最大值Tmax。此时,令牌桶304已满,如果令牌桶304保持在填满状态时,不会再有令牌到达。
图4是根据本发明一个实施例用于以每个信息流为基础执行信息量平滑化的系统的框图。参照图4所示,NIC 402包括信息量调整器404。该信息量调整器可对由NIC 402传送的总信息流406的至少一个部分执行信息量调整。总信息流406包括多个单独的信息流408、410…412和多个信息量调整器414、416…418。信息量调整器414可对单个信息流408执行信息调整。信息量调整器416可对单个信息流410执行信息调整。信息量调整器418可对单个信息流412执行信息调整。
一个信息流可基于由TOE或更高层协议生成的数据帧或数据包的报头中包含的信息来唯一标识。例如,信息流可基于协议、源地址、目的地址、源端口、目的端口和/或在更高层协议中建立的报头字段来唯一地标识。协议可标识用于通过网络发送数据包的协议。这些协议包括TCP、用户数据报协议(UDP)或在TCP之上运行的iSCSI。源和/或目的地址包括网际协议(IP)地址。源和/或目的端口可对用于通信中的发送终端站和接收终端站所使用的应用程序进行标识。这些端口可表示超文本传输协议(HTTP)、文件传输协议(FTP)或简单邮件传输协议(SMTP)。
在本发明的各个实施例中,信息量调整器414可使用信息量定义来对信息流408中发送的信息执行信息量调整。随后的信息量调整器416使用不同于信息量调整器414的信息量定义的一个信息量定义。信息量调整器416对信息流410中发送的信息执行信息量调整。但是该多个信息流408、410…412中的某些信息流并未执行信息量调整。
图5a是根据本发明一个实施例用于以每个服务级(COS)为基础执行信息量平滑化的系统的框图。参照图5a所示,NIC 502包括信息量调整器524。该信息量调整器可对NIC 502发送的总信息流526的至少一部分执行信息量调整。总信息流526包括多个单独的服务级528、…、528a。服务级528包括多个单独的信息流508、510…512以及信息量调整器530。服务级528a包括多个单独的信息流508a、510a…512a以及信息量调整器530a。
信息量调整器530可对各个信息流508、510…512中传送的总信息执行信息量调整。信息量调整器530a可对各个信息流508a、510a…512a中传送的总信息执行信息量调整。
一个信息流可基于TOE生成的数据帧和/或数据包的报头中包含的信息与特定的COS相关联。COS可基于服务类型(TOS)字段(例如,包含在报头信息内)被唯一地标识。多个信息流可与一个公共的COS相关联。COS可通过公共传输特征来标识信息流。例如,一个COS可标识信息流中的信息以接近常量的速率传输。另一个COS可标识信息流中的信息以变化的速率传输,但是具有特定的最大速率。COS还可用于标识使用一个或多个协议的信息流。COS还可标识信息流中信息发送的速率未指定的情况。
在本发明的各个实施例中,信息量调整器528可使用信息量定义来对发送的与COS 528相关的信息执行信息量调整。COS 528内发送的信息包括多个信息流508、510…512中传送的信息的总量。随后的信息量调整器530a可使用与信息量调整器530的信息量定义不同的一个信息量定义。COS 528a内发送的信息包括多个信息流508a、510a…512a中传送的信息的总量。多个COS528、…528a中的某些COS并未执行信息量调整。
图5b是根据本发明一个实施例用于对NIC总信息量执行信息量平滑化的系统的框图。参照图5b所示,NIC 502包括信息量调整器544。该信息量调整器对NIC 502传送的总信息流546执行信息调整。总信息流546包括信息量调整器548、多个单独的服务级552、…552a。服务级552包括多个单独的信息流508、510…512和信息流聚合器(traffic aggregator)550。信息量聚合器550可将多个信息流508、510…512中传输的信息聚合在一起。服务级552a包括多个单独的信息流508a、510a…512a和信息量聚合器550a。信息量聚合器550a将多个信息流508a、510a…512a中传输的信息聚合在一起。
信息量调整器548可对NIC 502传送的总信息执行信息调整,该总信息包括单个COS 552和COS 552a内的信息以及单个信息流508、510…512、508a、510a…512a内的信息的总和。在本发明的各个实施例中,信息量调整器548可使用信息量定义对由NIC 502传送的总信息执行信息量调整。
图6a是根据本发明一个实施例用于系统内进行令牌桶填充的步骤的流程图。参照图6a,在步骤602中,状态变量Tmax可设为预定的值。状态变量Token_Cnt=0和Token_Fill_Rate=R。状态变量Tmax用于确定令牌桶304中可存储的令牌的最大数量。变量Token_Cnt用于确定令牌桶中当前含有的令牌数量。变量Token_Fill_Rate用于确定令牌加入令牌桶304中的速率。
步骤604中表示经过了一个时间单位。步骤606中可确定令牌桶304的当前令牌计数值token_cnt是否达到最大值Tmax。如果当前令牌计数值token_cnt达到了最大值Tmax,那么步骤604后将继续下一步。如果当前令牌计数值token_cnt没有达到最大值Tmax,则以已确定的速率(例如R)来增加该令牌计数值token_cnt。因而,令牌计数值token_cnt可依据下面的等式增加Token_Cnt=Token_Cnt+R [1]然后跳回步骤604。
图6b是根据本发明一个实施例用于系统内基于令牌桶进行TCP信息量平滑化的步骤的流程图。在本发明中的各个实施例中,图6b中所示的处理流程可与图6a中的处理流程同时执行。参照图6b,步骤604中可确定需要发送的数据包是否到达TOE 350,或者之前到达的数据包是否因为执行信息量平滑化而被挂起。如果为否,处理流程将在步骤612等待直至有数据包到达。如果步骤612中确定数据包已到达或者数据包当前被挂起,则步骤614中确定当前令牌计数值token_cnt是否大于0。如果不大于0,则令牌桶可能为空。因此,步骤620中,因为执行TCP信息量调整,数据包的发送被挂起,然后回到步骤612。如果令牌计数值token_cnt大于0,那么步骤616中发送该数据包。步骤618中,可根据已发送的数据帧中含有的二进制八比特组的数量递减令牌计数值token_cnt。例如,如果发送的数据包中包括多个八比特组,即LEN,那么令牌计数值token_cnt可根据如下的式子递减Token_Cnt=Token_Cnt-LEN [2]然后回到步骤612。
本发明的各个实施例提供一种TCP信息量平滑化的方法和系统。通过执行信息量平滑,进入网络中的交换设备的大量信息量被转移。这样可进一步改善与网络连接的设备(例如计算机工作站、个人计算机和服务器)中执行的应用程序性能。这还可以通过减少所需的存储器空间来降低交换设备的成本。
本发明的各个实施例并不仅限于对使用传输控制协议(TCP)传输的信息执行信息量调整。信息量平滑包括对信息的传输时间进行调度,并可应用于由TCP卸载引擎发送的至少一个服务级内的信息或一个或多个信息流内的信息。信息流可基于协议、源地址、目的地址、源端口、目的端口和/或至少一个与OSI协议参考模型内的高协议层5至7相关的报头字段来标识。一个服务级可包括一个或多个信息流。信息量平滑还可应用于包括一个或多个信息流和/或一个或多个服务级的TOE传送的总信息量。信息量平滑也可用于各种组合情况中。例如,信息量平滑可应用于一个或多个信息流,和/或应用于一个或多个服务级,和/或应用于TOE传送的总信息量。
本发明的各个实施例可通过确定NIC传输的信息量来执行信息量平滑。传输的信息量可基于由NIC传输的信息的总比特量的至少一部分来测得。例如,可对由NIC传输的一个或多个完整帧或数据包包含的信息量执行信息量平滑,或者对一个或多个完整帧或数据包内每一个的有效载荷部分的信息量执行信息量平滑。
图7是根据本发明一个实施例的入口交换机信息量平滑化的框图。图7所示为以太网交换机702、入口704、多个缓存填充级706、708、710、712、接口715和NIC 722。NIC 722可通过接口715发送信息给入口704。入口704可基于从NIC 722接收信息来确定填充级,包括缓存填充级706、708、710或712。例如,填充级706、708、710和712分别对应1/4、1/2、3/4和完全缓存填充级。基于信息量定义以及缓存填充级的值,以太网交换机702可发送速率控制消息给NIC 722。该速率控制消息可指示NIC降低通过接口715传送信息的速率。该速率控制消息可指示NIC降低对应缓存填充级发送信息的速率。例如,对于缓存填充级706、708、710或712,速率控制消息可对应地指示NIC 722分别将信息发送的速率降低1/4、1/2、3/4或者暂停传输。对于低于缓存填充级706的缓存填充级,不发送速率控制消息。对于在缓存填充级706和708之间的缓存填充级,速率控制消息对应填充级706。对于在缓存填充级708和710之间的缓存填充级,速率控制消息对应填充级708。对于在缓存填充级710和712之间的缓存填充级,速率控制消息对应填充级710。以太网交换机702可包括有多个入口704。以太网交换机702可对一个或多个入口704使用信息量定义。或者,以太网交换机702可包括有多个入口并使用对应的多个信息量定义。以太网交换机702可使用信息量定义连同在入口704接收的与一个或多个信息流相关的信息。
图8是根据本发明一个实施例的出口交换机信息量平滑化的框图。图8所示为以太网交换机802、多个入口814、816、818、出口804、多个缓存填充级806、808、810、812、多个接口815、817、819和多个NIC 822、824、826。NIC 822可通过接口815传输信息给入口814。NIC 824可通过接口817传输信息给入口816。NIC 826可通过接口819传输信息给入口818。以太网交换机802可控制将通过任何入口814、816、818接收的信息通过出口804传送出去。以太网交换机802可通过接口821从出口804传送信息。出口804可基于从任何一个入口814、816、818接收信息来确定缓存填充级,包括填充级806、808、810或812。缓存填充级806、808、810和812表示分别对应缓存填充级706、708、710和712的缓存填充级。基于信息量定义以及表示缓存填充级的值,以太网交换机802可向任何一个NIC 822、824、826传送速率控制消息。该速率控制消息可指示NIC降低通过对应的接口向以太网交换机发送信息的速率。速率控制消息可指示NIC降低对应缓存填充级发送信息的速率。例如,对于缓存级806、808、810或812,速率控制消息可对应地指示NIC分别将信息传送速率降低1/4、1/2、3/4或暂停传输。对于低于缓存填充级806的缓存填充级,不发送速率控制消息。对于在缓存填充级806和808之间的缓存填充级,速率控制消息对应填充级806。对于在缓存填充级708和710之间的缓存填充级,速率控制消息对应填充级808。对于在缓存填充级810和812之间的缓存填充级,速率控制消息对应填充级810。该速率控制消息可基于NIC发送的信息以及在对应入口接收的信息对出口804处的填充级的影响程度发送给一个NIC或多个NIC。
以太网交换机802可包括多个入口804。以太网交换机802可使用与一个或多个入口814、816、818相关的信息量定义。以太网交换机802可包括多个入口和出口,并可基于入口和出口的组合使用对应的多个信息量定义。以太网交换机802可使用信息量定义连同与任何一个入口814、816、818接收的信息以及通过出口804发送的信息。以太网交换机802可使用与通过入口接收的以及通过出口发送的一个或多个信息流相关的信息量定义。
因此,本发明可由硬件、软件或者硬软件的结合来实现。本发明可在至少一个计算机系统中以集中的方式实现,或者以不同部件分布在几个交互连接的计算机系统中的分布式方式实现。任何种类的计算机系统或其他能够实现本发明的方法的设备都是适用的。硬件、软件和固件的一个典型结合是具有计算机程序的通用计算机系统,当该计算机程序被上载并执行时,控制该计算机系统以便实现本发明所述的方法。
本发明还可嵌入包括有能够实现所述方法的各种特征的计算机程序产品中,当该程序加载到计算机系统中时能够实现本申请所述的方法。本文中所述的计算机程序是指,例如,以任何语言、代码或符号表示的一组指令,能够直接使具有信息处理能力的系统执行特定功能,或者经过以下一种或各种处理后使具有信息处理能力的系统执行特定功能a)转换成另一种语言、代码或符号;b)以不同的材料复制。但是,本领域的普通技术人员可知的其他计算机程序的实现方法也可用于本发明。
以上已结合一定的实施例对本发明进行了描述,本领域的普通技术人员可知,可对本发明进行各种改变或等同替换而并不脱离本发明的范围。此外,根据本发明的教导进行的以适应特定的环境或材料的各种修改也并未脱离本发明的范围。因此,本发明并不限于公开的具体实施例,本发明包括落入权利要求范围内的所有实施例。
本申请全文引用并要求申请日为2005年4月22的美国临时专利申请No.60/673,898的优先权;本申请还全文引用以下专利申请美国专利申请No.10/651,459,申请日为2003年8月29日;美国临时专利申请No.60/661,064,申请日为2005年3月11日。
权利要求
1.一种通信系统中控制数据传输的方法,所述方法包括基于信息量定义对从TCP卸载引擎发送信息的时间进行调度。
2.如权利要求1所述的方法,其特征在于,所述调度包括以以下一种速率传输所述信息大于所述信息生成速率的速率、约等于所述信息生成速率的速率和小于所述信息生成速率的速率。
3.如权利要求2所述的方法,其特征在于,所述方法进一步包括基于所述信息的发送减少令牌计数值。
4.如权利要求3所述的方法,其特征在于,所述方法进一步包括基于确定的比率增加所述令牌计数值。
5.如权利要求4所述的方法,其特征在于,所述方法进一步包括为所述令牌计数器设置最大令牌计数值。
6.一种通信系统中控制数据传输的系统,所述系统包括至少一个处理器,基于信息量定义对从TCP卸载引擎发送信息的时间进行调度。
7.如权利要求6所述的系统,其特征在于,所述调度包括以以下一种速率传输所述信息大于所述信息生成速率的速率、约等于所述信息生成速率的速率和小于所述信息生成速率的速率。
8.如权利要求7所述的系统,其特征在于,所述至少一个处理器基于所述信息的发送减少令牌计数值。
9.一种机器可读存储器,其内存储的计算机程序包括至少一个代码段,用于在通信系统中控制数据传输,所述至少一个代码段由机器执行以使所述机器执行如下步骤基于信息量定义对从TCP卸载引擎发送信息的时间进行调度。
10.如权利要求9所述的机器可读存储器,其特征在于,所述机器可读存储器进一步包括以以下一种速率传输所述信息的代码大于所述信息生成速率的速率、约等于所述信息生成速率的速率和小于所述信息生成速率的速率。
全文摘要
本发明公开了一种用于传输控制协议(TCP)信息量平滑的方法和系统。信息量平滑包括在通信系统中控制数据传输的方法,所述方法进一步包括基于信息量定义文件对从TCP卸载引擎(TOE)发送信息的时间进行调度。所述方法还包括以大于、约等于或小于信息生成速率的速率发送来自TOE的信息。某些现有的采用TOE的网络接口卡(NIC)未提供支持信息量调整的机制。不提供信息量调整机制,则会使得网络中丢失数据包的可能性更大。
文档编号H04L29/06GK1832483SQ20061005929
公开日2006年9月13日 申请日期2006年3月9日 优先权日2005年3月11日
发明者布鲁斯·H·克万, 普尼特·阿加瓦尔 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1