在具有不同流量控制能力的多个网络上 实现流量控制的方法和装置 对相关申请的交叉引用
本申请要求美国临时申请序列号60/017,504,递交于1996年5月10日(代理人档案号ASCOM-107Xq800),和美国临时申请序列号60/019,701,递交于1996年6月20日(代理人档案号ASCOM-107Aq800)的优先权。
有关联邦资助的研究或发展的陈述不适用
本发明的背景
本发明主要涉及计算机网络领域,尤其是扩展附连于传统地不另外支持这样流量控制的网络的网络主机之间端到端的低层流量控制。
传输控制协议(TCP)是和Internet协议(IP)一起使用的标准传送协议,它既是LAN上的主数据通信协议,又是用于构造全球Internet的基本协议。TCP是为适应于支持多网络应用的协议的分层层次而设计的面向连接的、端到端可靠的协议。TCP在附连于同一个或不同的但互连的计算机通信网络的主计算机的进程对之间提供可靠的进程间通信。TCP设想它能从下层协议得到一简单的、可能不可靠的数据字(datagram)服务。而且,TCP能在通信系统(从硬连线连接到包交换或电路交换的网络)的广阔频谱上工作。
量子流量控制(QFC)是一以量子化缓冲状态反馈为特征的信元中继协议。QFC支持异步传输模式(ATM)的可用位速率(ABR)信元服务,该信元服务对于其支持对未使用的且因此可用的信元丢失率不大于链路错误率的网络带宽的瞬时访问能力而被判别。ABR服务被设计用于应用的带宽需求事先很难预测的突发应用。该服务使用QFC协议来提供一反馈机制,该反馈机制控制源速率来确保零信元丢失而不管网络拥挤。QFC是一逐段的协议,该协议使用缓冲状态计算来确保沿着数据通路的每一段不能发送多于它具有的缓冲器空间的数据给下一段,这样防止溢出和数据丢失。
提供链路级流量控制的QFC实现的一个例子见于美国专利申请号08/(代理人参考号ASCOM-102DX),在这里被引用作为参考。
TCP和IP处在链路层网络之上或由其承载。这样的链路层网络传统地有LAN如以太网或FDDI、WAN如X.25或帧中继,以及由路由器之间的串行线路组成的IP网络。TCP/IP通信以包形式(长度可以是几百个或几千个8位字节)被发送。如果一个包由于拥挤或传输碰撞在一网络上被丢失,TCP检测到这个丢失并在超时后重新传输该包。更高层的流量控制协议如TCP利用端到端的流量控制来确保接收者不被发送者超过,并采取措施防止沿着通信通路的网络拥挤。
尽管这些机制在细节处不同,TCP和QFC都结合了流量控制,利用缓冲器可用信息来提供可靠服务。
已经有了值得注意的以开发ATM的应用作为链路层网络来实现TCP/IP通信为目标的努力。每个TCP/IP包在源端必须被分割成一串ATM信元,并在目的端被重新组合成一个包。单个信元的丢失都导致整个包(其长度可能为几十个或几百个单元)的重新传输。如果由于ATM层的拥挤,信元被随机地丢失,需求重新传输包的结果最好不过是ATM网络非常低效地被使用,在最坏情况下会导致网络完全拥挤而崩溃。
当TCP/IP通信的源和目的地直接和ATM网络相连接,如图1中主机A和B之间的情况,如由QFC提供的流量控制,能确保源以不快于目的地主机以及网络所能接受的速率传输通信流。对ATM层的任何可靠流量控制协议来说保持正确。然而,期望扩展ATM层流量控制的优点到被连接至不同LAN(或扩展的LAN)的源及目的地主机,每一个LAN被依次连接到ATM网络上而不需要对支持主机的网络(主机网络)或主机自身作任何改变,并以对主机网络透明的方式。
本发明的简要概述
本发明提供了扩展附连于不另外支持这样流量控制的网络上的主机系统之间端到端的低层流量控制的能力,而不需要对主机网络或主机自身作任何改变。在第一个实施例中,本发明扩展ATM网络流量控制到通过ATM网络进行通信的LAN上的主机。这些LAN一般被认为是传统网络,尽管“传统”不意谓着专指那些当前人们知道已存在的网络,如XDSL和以太网,包括千兆位的以太网。事实上,本发明适用于任何支持高层的、端到端流量控制的网络。
在一个实施例中,本发明可将ATM用作为链路层网络以承载TCP/IP通信。如前面提到的,高层流量控制协议,如TCP,提供端到端的闭环流量控制。当与低层流量控制一起被使用时,有在同一通信流同一时间工作的两个独立的闭环流量控制协议,一个在传输层另一个在ATM层。这两个层的独立工作可能导致当低层协议对流减速时,高层协议可能加速,从而导致后续包的丢失和不稳定的行为的情况。这样独立的、多层控制环被认为是不协调的,归因于没有从低层向高层的任何控制信息的传送。
本发明可适用的其他高层协议的例子包括DecNet和突发模式的IPX;这些仅代表当前存在的合适协议的范围,并举例说明本发明可应用的和将来可能被开发的协议类型。
本发明利用协调的、多层控制环。图1也描述了代表源主机的主机C和代表目的地主机的主机D,每个都被直接连接到LAN(通过路由器、桥、以太网转换器、信元转换路由器或其他传统的互连设备依次被连接到一个带有ATM网络接口的设备)并最好支持QFC的情况。这样的转换器被称为“ATM附连的边缘设备”。在现有技术中,ATM层的流量控制仅在ATM网络边界的ATM转换器之间起作用,而TCP流量控制在端到端之间起作用。当TCP防止目的地主机被源主机超过时,ATM层不协调的流量控制不能防止ATM网络被源主机超过。作为结果,包可能在最接近于主机C的ATM转换器处丢失,而使主机超时并重新传送这个包。
本发明针对第一个实施例中的这种情况,通过以对主机C及其附连的网络透明的方式向主机C提供ATM层流量控制。这通过使用被称为“输入流(instream)窗口管理(IWM)”的方法,耦合ATM层反馈信息到承载于TCP头中的TCP的窗口公告上来实现。通过和TCP的耦合,该链路层流量控制反馈被透明传送到网络主机上;不需要对传统网络或主机作改变。
更高层次的窗口公告在ATM附连的边缘设备处可观察到。从而,可能利用IWM进程以提供低层和高层流量控制之间所需的协调。ATM层的边缘设备在透明层窗口之上被提供以显式控制。主机D将TCP头上的窗口公告发送回源主机C。最接近于主机D的LAN的ATM转换器,也被称作为出口智能边缘设备或“出口IED”,将由主机D公告的窗口的右边用作为指示在给定时间内主机D能接收多少字节。该出口IED使用那个信息来确保它不会转发更多的字节数给主机D。结果是,窗口右边的限度被反映在出口IED提供给它上游邻居的QFC的“转发计数”值中。该出口IED以及沿着该连接的所有其他ATM网络元件避免在朝着主机D的方向上的信元丢失。
在源主机被直接连接到LAN的情况下,例如图3中的主机C,一出口智能边缘设备或“出口IED”可以确保那个LAN不能使那个IED的LAN端输入缓冲器溢出。这通过出口IED检查来自于目的地主机,主机D的TCP头中的窗口和确认数,并如果需要,进一步抑制被源主机C看到的TCP公告的窗口信息(如果需要的话)来实现。向上游被传送到数据源中的,窗口的被修改值被称作为“输入窗口”。
该输入IED也可以需要产生它自己的TCP头,即使没有从目的地主机到达的TCP头。这在该输入IED开始在它的LAN侧输入缓冲池上有更多的可用空间,并需要将这个状态通知源主机时是必须的。这些本地产生的TCP头在源主机看来是带有零长度段的TCP头。通过入口IED传送的、来自于目的地主机的TCP头被称作为被修改的确认或“被修改的ACK”,同时那些被入口IED产生的本地TCP头被称作为被产生的确认或“被产生的ACK”。被修改的ACK和被产生的ACK被入口IED所使用以确保提供给源主机的入口窗口值与最后被供给的入口窗口值以及被目的地主机提供的窗口实际值相一致。这样,由ATM网络所实现的流量控制通过出口IED被扩展到目的地主机以及通过入口IED被扩展到源主机。
附图的简要描述
与附图一起,参考下列描述,本发明将被更完全地理解。
图1描述了根据结合有可靠流量控制协议的ATM网络而配置的不同主机;
图2描述了直接连接到一QFC ATM网络的两台主机之间的数据和流量控制通路;
图3描述了不直接连接到一QFC ATM网络的两台主机之间的数据和流量控制通路;
图4描述了根据本发明的一智能边缘设备或“IED”;
图5描述了在TCP窗口公告中被提供的信息;
图6描述了本发明的另一个实施例。
本发明的详细描述
分层控制环路的协调关键,如由本发明提供的,在于高层流量控制窗口是可以观察到,且因此可在低层边缘设备中是可操作的事实。据此,本发明提供“输入流窗口管理(IWM)”来提供低层(例如异步传输模式或ATM)和高层(例如传输控制协议/Internet协议或TCP/IP)协议之间的协调。为进一步描述本发明的主题,美国临时专利申请号60/017,504(代理人参考号ASCOM-107Xq800)和60/019,701(代理人参考号ASCOM-107Aq800)被结合在此作为参考。
IWM,如后面所描述,提供关于协调的流量控制的很多优点。例如,本发明避免了高层和低层之间的死锁。IWM动态地修改基于流量控制反馈和低层的输入缓冲可用性的传输层(即TCP/IP层)窗口。IWM从高层流量控制的观点看是透明的。IWM不要求从传输层流到低层连接的一对一映射,这样避免了在单一数据流上多路复用多个流的问题。在本发明中,ATM附连的边缘设备中的输入缓冲器在所有从附连的LAN上的不同源处到达的独立传输层流之间被共享,且IWM使用缓冲器可用性和低层流量控制反馈的组合来管理传输层窗口并防止输入缓冲器的溢出。在高层和低层多点播送机制和连接被使用的方面,IWN将它们包含于协调进程中以防止单点播送和多点播送通信量之间对可用资源的争用。最后,IWM与已存在的传统设备无缝地工作,不需要改变LAN主机,已存在的低层和传输层流量控制的需求或操作细节不被干扰。
高层流量控制协议(例如TCP)通常是基于窗口的,使用一个接收者一公告的窗口来限制从源(或源主机)向接收者(或目的地主机)传输的字节数。该源主机一旦耗尽了由目的地主机传给它的数据窗口就必须停止传输,直到目的地主机提供指示更多的数据可以被传输的后续窗口为止。该窗口的尺寸,至少部分地由往返带宽乘积(RTBP)确定,该RTBP表示所述主机之间的往返时间乘以该连接的带宽。如果这个数比较高,则更多的数据可以在窗口之间传送,尽管任何丢失将很可能要求重新传输大量的数据。这样,传输协议的数据输出(即避免重新传输的效率)会受影响。
为了实现打成包数据的一致性,低层流量控制功能必须和高层流量控制功能相协调。特别是,高层反馈必须和低层中的反馈机制相关联。在一优选的实施例中,低层是一提供量子流量控制(“QFC”)的ATM网络,如在美国专利申请号08/ ,代理人参考号ASCOM-102DX,被转让给本专利申请的受让人的美国专利申请中描述的,该美国专利申请被结合在此作为参考。下面的讨论引用了使用ATM网络作为低层的优选实施例,尽管本发明适用于任何支持低层流量控制协议(提供网络内流量控制)的网络。如果低层协议保证可靠(即低丢失率)服务,则最好的所有服务由本发明提供。
从传统网络到ATM网络的流在被ATM边缘设备,入口输入/输出模块(IOM)识别后被转换。在ATM网络中,通常没有帧结构的概念。因此,高层和低层之间控制功能的协调必须发生在能顾及缓冲器容量和低层流量控制的、并具有帧结构概念的边缘设备中。特别是这种协调必须发生在沿朝向源传统网络方向的ATM附连边缘设备中。这样协调的ATM附连边缘设备在此被称作为智能边缘设备(IED)。该IED可以是一入口IED,因为流进ATM网络的数据在这个点上进入该网络,或可以是一出口IED因为存在于该ATM网络中的数据在这个点上也是如此。术语“入口”和“出口”是相对于数据流的方向而言,取决于所考虑的数据流,这样的边缘设备可以即是入口IED又是出口IED。
TCP基于窗口的流量控制使用了流量控制段,每个包括一个确认数和一个窗口,共同被称作为确认或“ACK”。在向前方向经TCP传输的每个8位字节被赋予一个顺序号。TCP目的地主机检查在传输过程中可能发生的数据损坏或没有传送。如果数据是可接收的,该目的地主机生成一ACK传送给源主机,在其中该确认数确认所有8位字节直到且包括确认数减1。如图5所示,ACK中的窗口指示了发送器可以发送的、且不会导致目的地主机的缓冲器溢出的附加字节数目。
在低层,“量子流量控制”(QFC)不考虑拥挤度而能使ATM网络保证在ATM网络内的零信元丢失,这样提供高的网络使用和效率。当TCP/IP通信源和目的地被直接连接到这样的ATM网络时,例如图1或3中主机A和B,ATM网络流量控制协议确保源主机的传输不能比目的地主机和中间网络两者的接收数据能力更快。在一优选的实施例中这个协议是QFC,其他实施例可以使用任何可靠的低层流量控制协议。在图2中,主机A和B是直接附连于ATM转换器的主机,从而支持端到端的可靠低丢失(RLL)服务。
然而,如果源和目的地主机中的任何一个或两者是被LAN附连到ATM网络上(包括经扩展的LAN),这些LAN中的每一个必须通过一IED与ATM网络对接。这是图3中主机C和D的情况。这样的IED接口能使可靠低层流量控制协议的优点扩展到不直接附连到ATM网络的主机。
图3描述了沿着主机C和D之间数据通路的ATM转换器,并指示了在ATM层的QFC流量控制、在传输层的端到端TCP流量控制以及与数据流相反的方向的流量控制数据流。尽管为了简单没有描述,在双向数据流的情况下,在两个方向上都有流量控制。
没有图3中说明的入口和出口IED,QFC流量控制仅在ATM边缘设备之间有作用。因此,当TCP防止目的地主机被源主机超过的同时,TCP单独不能防止中间的ATM网络被源主机超过。结果,包可能在最接近于主机C的ATM转换器处丢失,需要由该丢失包的主机C重新传输,或可能多次重新传输。针对这种情况,本发明能使QFC流量控制数据经入口和出口IED扩展回到源主机。
这是通过耦合该QFC反馈信息到在TCP头中承载的TCP的窗口公告来实现。再者,为了简单的目的,本说明书假设一个TCP连接被映射到在下的ATM连接。然而,本发明也能应用到每个ATM连接有多个TCP连接的情况中。此外,当数据以反方向流动时,入口IED和出口IED中的每一个都能起相反边缘设备的作用。
为了描述目的,考虑从主机C开始到主机D终止的单一方向的数据通路,如图3所示。TCP能使主机D将窗口公告发送回主机C。从和主机D相联系的出口IED的观点看,该出口IED被给予一指示:在窗口公告(图5)中窗口右边的基础上,当前主机D能从承载TCP连接的ATM连接处接收多少个字节。出口IED使用那个信息来确保它不发送多于公告数目的字节到主机D上。结果是该窗口右边限制被反映到该出口IED提供给它上游ATM转换器邻居的QFC协议缓冲器状态中。这样,该出口IED,以及所有沿着当前被考虑的连接的其他QFC元件(例如ATM转换器),避免在目的地主机D处的信元丢失。
现在考虑从源主机C处发出的单一数据通路(如图3),和相应的入口IED(如图4)。从通过网络接口卡(NIC)与主机C相联系的入口IED的观点来看,该入口IED不允许主机C溢出该入口IED的LAN侧输入缓冲器。这通过限制来自于目的地主机D处的TCP窗口公告信息来实现。该入口IED,使用与缓冲池相关联的窗口修改电路(Window Mod.Ckt.),有效地生成一逻辑的“本地窗口”,来跟踪该入口IED的LAN侧输入缓冲池上的可用的帧缓冲空间。在通过主机D被传送的该容量和对主机C可用的TCP窗口基础上,该入口IED在发送它们到源主机之前有选择地修改该TCP窗口公告。例如,如果指示另外1000个字节的数据的TCP可在一连接上被发送,但入口IED的本地窗口能支持用于该连接的500个字节,主机C将看到一个500个字节的被公告的TCP窗口。随着入口IED中的本地缓冲器空间变得可用,被入口IED修改的TCP窗口公告将被增加直到它们最终与来自于目的地主机的公告相匹配。
图4中描述的也是缓冲池中用来处理流向和该数据流相反的流量控制(F.C.)的缓冲器,和提供物理接口给高速传输网络的网络线路卡(NLC),在本优选的实施例,该高速传输网络是一ATM网络。数据通过IED以向前的方向前进处于前向引擎的控制之下。
当源主机的LAN被直接附连到入口IED,和类似地当目的地主机LAN被直接附连到入口IED时,该IWM方法是最优的。然而,如果其中的一个主机被附连到一个扩展LAN上,这个方法也发挥作用,尽管包丢失的可能性也存在于连接LAN各段的中间桥和路由器当中。
每当从目的地主机到源主机存在一个TCP ACK时,有以下格式
ACK(last_seen_seq,window)
(ACK(最后被看见序列,窗))通过入口IED,入口IED记录确认数(last_seen_seq,是该窗口的左)和ACK中该窗口的值(窗口两之间的差),并可以接着向下修改这个窗口的值。通过上游被传递到源主机的该窗口值被称作为“入口窗口”。为了使IED的操作速率最大,本发明的优选实施例中使用了观察该TCP窗口所需的功能的硬件实现,来按需求修改它们且按要求产生确认。例如,寄存器被提供用于所有与TCP窗口公告相关的记录数据值。用来解析TCP流量控制信息和用来构造合适确认的逻辑被以一个或多个特殊应用IC(ASIC)来实现。
如果低层流量控制改变了该流或高层确认的内容,则当低层准备好允许附加通信时,高层可以仍然不能传输。对于作为高层的TCP,超时可以解决这个死锁,但其他高层传输协议可能不提供这个功能。
为解决这个问题,当低层准备好接收更多的通信时,本发明的第一个实施例采用了传输层确认的自主生成。这样,入口IED可能需要自己产生ACK,甚至在没有从目的地主机到达的ACK时。这针对着入口IED在它的LAN侧输入缓冲池中获取了更多的可用空间、并需要将这传送给源主机的情况。该连接可不依赖由目的产生的ACK(仅当目的地主机实际上观察到连接上的更多TCP段时被产生的)而向前行进。这些本地产生的ACK在源主机看来是带有零长度段的TCP头。这些入口IED产生的确认被称作是“产生的ACK”,而那些由目的地主机产生且由入口IED修改的确认被称作是“修改的ACK”。
当数据流的第一个ACK通过入口IED时,那个IED可以修改该入口窗口值以使提供给源主机的该窗口值是
0Ingress_WindowTCP_Window
(0入口_窗TCP_窗)一个较小的入口窗口值代表在入口IED中对这个数据流是可用的缓冲器空间的限制。在同一数据流的后续ACK上,该入口IED可以再次修改被返回到该源主机的窗口值。该确认数可以被提高,因为最后一个窗口由值k>=0提供。入口IED可以修改来自于目的地主机的该窗口值以是该入口窗口值,以使Last_lngress_Window-kIngress_WindowTCP_Window(最后_入口_窗-k入口_窗TCP_窗)该入口IED维护“Last_Ingress_Window”以及为每个连接维护最后确认数和最后的TCP_Window。该入口IED可以通过从当前确认数中减去最后确认数的值来确定k。
入口IED从一个ACK到下一个中可实际从入口窗口值中减去k,只要它自己的确认数已增加了k。这使ACK窗口的右保持不减少。这个例子的另一个极端情况是,入口IED可以完全不限制该窗口,这样提供给源主机的窗口和由目的地主机产生的一样。
在与入口IED中本地缓冲器一样合适的被触发的,产生的ACK成为可用的情况中,该入口IED生成一个ACK,该ACK使用最后确认数的值作为当前确认数。对于该窗口值,该入口IED提供一个新的入口窗口值,以使Last_Ingress_WindowIngress_WindowLast_TCP_Window(最后_入口_窗入口_窗最后_TCP_窗)具有与先前ACK同样的确认数的产生的ACK,对源主机可以是能触发源主机快速重新传输的复制的ACK。然而,这样的重新传输不需要消耗网络资源,因为入口IED能确定被重新传输的段已经被传送给目的地主机,是一复制ACK的结果,且重新传输可以被该入口IED智能地停止和确认。
关于出口IED,每当从目的地主机到源主机的一个TCP ACK通过出口IED时,该出口IED读取确认数和ACK中的窗口并限制在出口IED处的数据流的缓冲器使用以与来自于目的地主机的窗口右相一致。缓冲器使用上这个限制经QFC向后传播通过ATM网络。
入口IED跟踪在每一个连接基础上转发给目的地主机的字节数目F。为保证没有信元丢失,出口IED必须限制缓冲器使用直到下一个ACK以使F不大于目的地主机窗口的当前的右。
如前所述,本发明适用于一对主机之间的多种网络布局,每一种提供在高层和低层的某种形式的端到端流量控制,在主机中间的至少一个网络的内部网络流量控制。例如,在图6中,两个高速网络1和2,被示出在主机E和F中间。这里,不是直接向源主机提供被修改和被产生的ACK,网络2的入口IED提供这样的信息到网络1的出口IED上。否则,高速网络1和2中的每一个相对于观察、使用和修改在主机E和F之间传递的高层流量控制信息,如上描述的原型ATM网络运行。如上,不需要对通信主机,主机E和F,或对于它们所在的网络(被标识为传统的LAN1和LAN2)作修改。这里重申,在此处所使用的“传统”是用以标识支持已知的或已被开发的高层端对端流量控制协议的网络。
上面描述的本发明的这些和其他例子期望作为实例,而本发明的实际范围仅由后面权利要求中的范围和精神所限定。