首页> 中国专利> 用于协调TCP/IP网络与其他网络之间的流控制的方法和设备

用于协调TCP/IP网络与其他网络之间的流控制的方法和设备

摘要

本发明提供了如下的方法和设备,其用来实现TCP/IP网络和第二网络之间的网关中的流控制协调。第二网络可以是任何类型的网络,包括另一个TCP/IP网络。在某些实现方式中,通过修改由TCP连接所观察到的往返时间,从而控制TCP/IP网络的吞吐量。在其他实现方式中,通过修改TCP窗口的大小来控制TCP/IP网络的吞吐量。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-04-26

    未缴年费专利权终止 IPC(主分类):H04L12/56 专利号:ZL2004800108256 申请日:20040512 授权公告日:20120620

    专利权的终止

  • 2012-06-20

    授权

    授权

  • 2006-07-19

    实质审查的生效

    实质审查的生效

  • 2006-05-24

    公开

    公开

说明书

技术领域

本发明涉及网络技术。更具体地说,本发明涉及使用TCP/IP协议的网络和可能使用另一种协议的一个或多个其他网络之间的流控制协调。

背景技术

利用“网关”将网络链接到一起正变得日益普遍,网关一般是诸如路由器之类的专门配置的网络设备。在一种示例中,图1的网络105是TCP/IP网络,而网络110是光纤信道(“FC”)网络。网关115是网络105和110之间的接口。

控制穿过网关115的分组流,例如在网络110和网络105之间传输的分组,可能是具有挑战性的。(在这里所使用的术语“帧”和“分组”意思相同。)控制网关115和网络105之间的链路112上的流量是不成问题的,因为它是由TCP/IP的基于窗口的流控制机制所管理。因此,如果接收缓冲区125正达到容量,则TCP/IP的流控制机制将阻止网络105发送将被网关115丢弃的额外分组。类似地,网络110使用FC协议的缓冲区对缓冲区的基于信用的流控制机制来控制从网络110发送向网关115的分组流。

然而,由于分组需要穿过网关115,例如从网络105向网络110传输的分组,因此情况很复杂。在接收缓冲区125接收到分组之后,ACK被从网关115发送到网络105。网关115处理分组,并且试图使分组入队到发送缓冲区130中,发送缓冲区130用于使分组等待传输到网络110。

例如,如果或许由于网络110中的拥塞而使网络105正以比网络110消耗分组的速度更快的速度产生分组,则可能出现问题。在这种情形中,接收缓冲区125正接收分组,网关115正向网络105发送ACK,并且向发送缓冲区130转发分组。然而,如果发送缓冲区130正以比它接收分组的速率更慢的速率发送分组,则可能要求发送缓冲区130丢弃想去往网络110的某些分组。而接收缓冲区125未接收到该问题的指示,并且继续以适于网络105和链路112的条件的速率转发分组。

因此,最好实现一种机制,以改进网络之间的网关内的流控制协调。

发明内容

本发明提供了用于实现第一网络(TCP/IP网络)和第二网络之间的网关中的流控制协调的方法和设备。第二网络可以是任何类型的网络,包括另一个TCP/IP网络。在某些实现中,通过修改由TCP连接所观察到的往返时间(“RTT”),从而控制第一网络的吞吐量。在其他实现中,通过修改TCP窗口的大小来控制第一网络的吞吐量。

本发明的某些实施例提供了第一网络和第二网络之间的网关。第一网络可以基于能够行使流控制功能的任何协议,包括但不限于光纤信道协议、TCP/IP协议和IEEE 802.2协议。第二网络是TCP/IP网络。网关被配置为用于确定第一网络的第一流状况,并且响应于该第一流状况来调整第二网络的第二流状况。

第一流状况可以是第一网络上的拥塞。网关可以通过在向第二网络上的网关发送分组时对源观察到的往返时间进行修改来调整第二流状况。网关还可以通过对第二网络上的源发起的TCP连接的窗口大小进行修改来调整第二流状况,该窗口大小用于控制到该网关的分组传输。网关还可以通过检查用于使分组等待传输到第一网络的发送缓冲区来确定第一流状况。

网关可以通过仅在发起确认的分组被传送到发送缓冲区时才将确认发送到第二网络上,从而修改往返时间。或者,网关可以根据部分基于发送缓冲区的缓冲区占用率的延迟函数来修改往返时间。

网关还可以部分基于发送缓冲区的缓冲区占用率来修改窗口大小。或者,网关可以通过针对由在第二网络上的网关接收到的分组发送3个或更多个确认来修改窗口大小。

本发明的某些实现方式提供了一种协调网络之间的流控制的方法。该方法包括以下步骤:确定经由网关与第二网络通信的第一网络的第一流状况,其中第二网络包括TCP/IP网络;以及响应于第一流状况来调整第二网络的第二流状况。第一网络可以基于能够行使流控制功能的任何协议,包括但不限于光纤信道协议、TCP/IP协议和IEEE 802.2协议。

第一流状况可以是第一网络上的拥塞。调整步骤可以包括在向第二网络上的网关发送分组时对源观察到的往返时间进行修改。或者,调整步骤可以包括包括修改第二网络上的源发起的连接的窗口大小,该窗口大小用于控制到网关的分组传输。确定步骤可以包括检查用于使分组等待传输到第一网络的发送缓冲区。

调整步骤可以包括仅在发起确认的分组被传送到发送缓冲区时才将确认发送到第二网络上。或者,调整步骤可以包括根据部分基于发送缓冲区的缓冲区占用率的延迟函数来修改往返时间。调整步骤可以包括部分基于发送缓冲区的缓冲区占用率来修改窗口大小。调整步骤可以包括针对由在第二网络上的网关接收到的分组发送3个或更多个确认。

本发明的替换实施例提供了一种用于控制第一网络和第二网络之间的流量的网关。第二网络包括TCP/IP网络。该网关包括:用于确定第一网络的第一流状况的设备;和用于响应于第一流状况来调整第二网络的第二流状况的设备。

其他实施例提供了一种包含在机器可读介质中的计算机程序,该计算机程序控制第一网络和第二网络之间的网关。第二网络是TCP/IP网络。该计算机程序控制网关来执行以下步骤:确定第一网络的第一流状况;和响应于第一流状况来调整第二网络的第二流状况。

本发明的其他实施例提供了一种用于调节计算机网络之间的流量的系统。该系统包括:第一网络的至少一个节点,其中第一网络包括TCP/IP网络;和用于控制第一网络和第二网络之间的流量的网关。该网关包括:用于确定第二网络的第一流状况的装置;和用于响应于第一流状况来调整第一网络的第二流状况的装置。第二网络可以是光纤信道网络。第一流状况可以至少部分根据网关内的发送缓冲区的占用率来确定的。

附图说明

图1是示出了两个网络和这两个网络之间的网关的图。

图2A示了TCP滑动窗口的概念。

图2B是示出了TCP慢启动阈值和TCP最大窗口的图。

图3示出了发送拥塞信号的过程。

图4是示出了TCP网络和另一网络之间的示例性网关的框图。

图5是示出了本发明的流控制方法的流程图。

图6A是示出了两条RTT对时间的曲线的图。

图6B是概括根据本发明逐渐改变RTT的方法的流程图。

图6C是示出了根据本发明逐渐改变RTT的方法的图。

图7A是概括根据本发明改变窗口大小的方法的流程图。

图7B是示出了根据本发明改变窗口大小的方法的图。

图8示出了用于在TCP段中编码信号的示例性位置。

图9A是概括根据本发明改变窗口大小的方法的流程图。

图9B是示出了根据本发明改变窗口大小的方法的图。

图10是示出了由中间TCP/IP网络所连接的网络的图。

图11是可配置用于实现本发明各个方面的网络设备的框图。

具体实施方式

在下面的描述中,阐述了许多细节,以便提供对本发明的全面理解。但是,本领域的技术人员应当清楚,没有这些特定细节中的某些或全部,也可以实施本发明。在其他示例中,未详细描述公知的过程步骤,以免不必要地模糊了本发明。

例如,在已示出并将在下面描述的许多网络中,仅仅描述了两个网络之间的单向分组流。但是,本领域的技术人员将理解,在多数情形中,该流将是双向的。因此,当网关被描述为具有用于接收来自第一网络的分组的接收缓冲区时,通常还存在用于使分组等待从另一个网络传输到第一网络的发送缓冲区。

根据本发明的优选实施例,TCP协议的某些方面被利用,以便提供网络之间的所需流控制。因此,在下面的段落中阐述了TCP主要特性的简要描述。TCP协议在对本领域技术人员公知的各种出版物中作了描述,包括W.Richard Stevens著的“TCP/IP Illustrated,Volume I:The Protocols”(Addison-Wesley,1994),通过引用其被结合于此。

TCP是一种可靠的传输协议,并且是面向字节流的,即,该协议在端点之间传送连续的字节流。参考图2A,分组从点A被发送到点B。在这个简单的示例中,A正发送仅去往B的分组,并且B仅发送到A的确认(“ACK”)分组。TCP协议将多个字节捆绑在一起以形成段(segment),并且将该段发送到B,然后等待来自B的ACK。在以太网中,TCP段的最大大小为1460个字节的数据,再加上40个字节的IP开销,共计1500字节,这是以太网帧的有效载荷的最大大小。

在任何给定时刻,存在被发送并被确认的段205、被发送但尚未被确认的段210和尚未被发送的段215。TCP窗口220代表在未接收到来自接收方B的ACK的情况下传输方A在任何给定时刻可以承受的最大字节数。TCP窗口220将包括已发送但尚未被确认的段,还可能包括某些尚未被发送但是很快将发送的段。在接收到段的ACK之后,窗口220“滑动”,以允许A发送其他的分组。

通过缩小窗口220的大小,可承受的数据量也减少。缩小窗口大小有效地降低了数据传输速率。通过考虑两种假设情形,可以容易地理解这种效果。

在第一情形中,窗口220小到每次只能承受一个段。因此,在传输一个段后,A必须等待,直到B已接收到该段,在窗口可以滑动之前,B已发送了ACK,并且A已接收到该ACK,从而允许A传输下一个段。换言之,A必须等待后续段的传输之间的整个“往返时间”(“RTT”)。

在第二假设情形中,窗口220比较大,并且A一次可承受很大数目(N个)的段。在此情形中,窗口滑动之前,A无需等待到已经过每个段的整个往返时间。相反,在滑动窗口之前,A只需等待到这N个段中的第一个的ACK已接收到。

将根据A接收到的关于点B处用于接收段的缓冲区中的可用空间的信息来设置窗口大小。TCP尝试不溢出B的接收缓冲区。在连接开始时,B告知A它有多少缓冲区空间可用。B持续向A发送“窗口通告”,该通告向A提供关于在B的接收缓冲区中还剩余的空间量的更新信息。

TCP还具有“拥塞窗口”,它允许TCP根据网络上的流状况(例如,拥塞)来调整其传输速率。A将使用TCP传输窗口和拥塞窗口中的小者作为“有效窗口”来确定流速率。

也可以通过调节“慢启动阈值”来调整TCP网络上的数据流。当TCP连接被建立(或者在中断之后被恢复)时,在区域225内拥塞窗口大小将从最小大小(通常是一个段)开始以指数速率增加,直到拥塞窗口大小达到慢启动阈值230。在拥塞窗口大小超过慢启动阈值230后,在区域235内拥塞窗口大小将线性增加,直到拥塞窗口大小达到最大有效窗口大小240,该窗口大小的量是在启动时协商的。

参考图3,网络300正向A发送拥塞信号305,其指示网络300上的拥塞。拥塞信号305可以仅通过丢弃分组来生成,A将将其解释为网络拥塞。作为响应,A将收缩其拥塞窗口(通常通过将拥塞窗口减少一半),从而使得A将不发送超过网络300能处理的数据。有些时候,通过专门标记的分组来发送拥塞信号305。

也可以通过增加RTT来调节网络300的数据流,因为这使窗口滑动的速率变慢。如果RTT较大,窗口将“卡”在某一位置较长时间,并且将不再发送数据。

考虑前面的讨论,可以理解,控制TCP/IP网络上的流的基本公式为:

R=Window size/RTT(方程1),其中

R为流速率;

Window size是有效窗口的稳态均值的大小;并且

RTT是传输方(例如,A)观察到的往返时间的稳态均值。

该关系提供了允许网关根据第二网络的流状况匹配TCP/IP网络流的基础。第二网络可以是任何类型的网络,包括另一个TCP/IP网络。因此,本发明的某些方法调整RTT,以便支配TCP/IP网络上的流。本发明的替换方法调整TCP/IP网络上的TCP连接的有效窗口的大小。某些方法组合这两种方法。

现在将参考图4和图5描述一种这样的方法。来自TCP/IP网络405的段被发送到接收缓冲区410,(如果必要的话)所述段被网关逻辑412所处理,然后被移动到发送缓冲区420以等待传输到网络425。网关逻辑412可以用软件、硬件(例如,集成电路)或二者的任何组合来实现。处理可以包括封装、解封装、将TCP段组装成网络425所使用的帧(例如,如果网络425使用FC协议,则是FC帧)、检测TCP段中的模式(例如,如果网关415提供了入侵检测功能),或者其他适当的处理。

在本示例中,网络425上存在间歇性拥塞,但是在网络405上无拥塞。因此,来自网络405的分组流需要被调整,以便匹配从发送缓冲区420到网络425的流。

在本实现中,网关逻辑412检查发送缓冲区420来确定网络425的流状况。仅当在发送缓冲区420中有空间时,网关逻辑412才使分组从接收缓冲区410被移动到发送缓冲区420。如果发送缓冲区420已满,则分组被保留在接收缓冲区410中,并且不生成用于这些分组的ACK。这种延迟有效地增加了RTT,并且降低了网络405和网关415之间的流速率。

网关逻辑455并行工作。假设网络425是FC网络。FC帧被接收缓冲区450接收到,但是网关逻辑455不处理这些帧,并且将处理过的帧发送到用于使分组等待传输到网络405的发送缓冲区460。FC协议的缓冲区对缓冲区流控制防止更多的帧被发送到接收缓冲区450,直到网关逻辑455从接收缓冲区450移走帧,并且腾出缓冲区的空间。对于其他类型的网络425,网关415实现类似的处理。

图5示出了根据本发明某些实现方式的方法500。方法500的步骤可以变化,并且不需要按图5示出的顺序执行。在步骤505中,来自TCP网络(例如,图4的网络405)的段被接收到并且被存储到接收缓冲区(例如,接收缓冲区410)中。在步骤510中,判断(例如,由网关逻辑412)在发送缓冲区(例如,发送缓冲区420)中是否有空间。如果有空间,并且如果必要的话,则在可选步骤515中处理在接收缓冲区头部的段。如果方法500实现在两个TCP/IP网络之间,则可以不要求处理。

然后,段被发送到发送缓冲区(步骤520),并且ACK被发送到已发送该段的TCP/IP网络上的节点(步骤525)。在替换实施例中,在步骤520或步骤515之前ACK被发送。

如果在步骤510中确定在发送缓冲区中不存在空间,则段将被保留在接收缓冲区中,并且将不发送ACK(步骤530)。如果接收缓冲区未满,则仍旧可以接收来自TCP/IP网络的段,并且将其存储在接收缓冲区中。如果接收缓冲区已满,则在某一时间延迟之后(步骤540),将再次判断在发送缓冲区中是否有空间。

方法500是有效的,但是包括了RTT中的相对突然的改变。如果例如在网络425中存在严重的拥塞,则替换方法可能是优选的。在这种情况中,缓冲区410将在很长时间中保持满状态。网络405将持续发送最后一段的拷贝,因为该分组被卡在缓冲区410中,并且没有ACK分组被发回。这不是系统资源的有效使用。

图6B示出的方法650是第一方法的细化,其包括更复杂的技术,用来确定网络425的流状况。方法650允许响应于改变网络425的流状况的改变而更缓慢地改变RTT。

图6A是示出了根据本发明某些实现的方法500和方法650之间的差别的图,将参考图6B和图6C描述后一方法。步骤函数605示出了方法500。在t1时刻,网关逻辑确定出发送缓冲区420为满,在此时刻接收缓冲区410突然停止发送ACK分组。因此,在t1时刻,响应于该检测出的流状况,RTT突然增加。

相反,方法650提供了响应于网络425的流状况的改变而更缓慢地改变RTT,如曲线610所示。方法650的各种实现将导致曲线610的不同斜率。例如,方法650的某些实现将产生线性函数,其他实现将产生指数函数,等等。优选地,曲线610单调增加。

图6B是一般概括了方法650的流程图。根据某些实现,这些步骤由网关逻辑412执行。在步骤615中,确定用于发送接收自TCP/IP网络的分组的发送缓冲区的占用率或“充满度”。在步骤620中,至少部分基于占用率确定,来计算ACK延迟。在步骤626中,根据该计算延迟由网关发送的下一ACK。通过周期性地确定发送缓冲区的占用率并应用可变ACK延迟,与单独使用方法500可能实现的情况相比,可以实现更缓慢的RTT改变。

现在将参考图4和图6C更描述方法650的更详细的实现方式。根据本方法,下面的指数加权移动平均(“EWMA”)公式被用来计算“平均缓冲区大小”:

avg_buf[n]=(_beta_*current_buf_size[n])+((1-_beta_)*avg_buf[n-1])(方程2),其中:

avg_buf[n]是在第n个时间间隔时平均发送缓冲区占用率;

current_buf_size[n]是在第n个时间间隔时发送缓冲区占用率;并且

beta是例如0≤beta≤1的加权参数。

发送缓冲区例如可以是图4的发送缓冲区420。优选地,每个(第n个)时间间隔的长度是固定的,并且等于或稍长于在网络425上传输最大大小的分组所要求的时间。

图6C是根据本发明某些实现方式要应用到ACK分组的归一化延迟函数660的曲线图。如图6C所述,buf_lo和buf_hi是对阈值区域670定界的两个avg_buf[n]值。根据某些实现,当avg_buf[n]具有在阈值区域670中的值时,ACK被延迟根据如下延迟函数计算出的量D。

D=d(avg_buf[n])(方程3)

该延迟函数优选地在阈值区域670内单调增加,在区域665中为0,并且在区域675中为最大值(“D_Max”)。在某些实现中,延迟函数在阈值区域670中线性增加。

D_Max是ACK将经历的最大延迟。根据某些实现,D_Max的值可以如下确定:

D_Max=(M*8)/(R*c_max)(方程4),其中

R是发送缓冲区和网络(例如,发送缓冲区420和网络425之间的链路499)之间的链路的速率;

c_max是用于根据网络上的拥塞,调整R来提供有效的传输速率

Re=R*c的拥塞因子c的最大可容忍值;并且

M是在网络上传输的分组的平均大小。

拥塞因子c的范围可以是从0到1。当网络不是拥塞的时,c=1,并且Re=R。当网络拥塞时,c在0到1之间,并且Re<R。

当由于拥塞而导致发送缓冲区满时,在一个分组离开发送缓冲区时,可以从接收缓冲区(例如,接收缓冲区410)传送M个字节。这每隔(M*8)/Re=(M*8)/(R*c_max)秒发生。

在优选实现中,当发送缓冲区已满,并且拒发对应的ACK时,TCP段被无限期保存在接收缓冲区中。换言之,当发送缓冲区已满时方法650优选默认为方法500。

本发明的其他实现调整TCP窗口大小,以便控制TCP/IP网络上的流速率。尽管窗口大小可能被突然改变,但是窗口大小优选地被缓慢改变。在某些这种实施例中,网关415向传输节点(例如,图4的传输节点402)发送显式信号,通知应当缩小窗口大小。

图7A是概括根据某些这种实现的方法700的步骤的流程图。在步骤705中,确定发送缓冲区的占用率。在步骤710中,基于确定出的占用率,计算出窗口函数的值。在可选步骤715中,判断该窗口函数值是否已改变。如果已改变,则向TCP/IP网络上的传输节点发送信号,以指示新的窗口大小。如果未改变,该方法则返回到步骤705。

现在将参考图4、图7B和图7C描述一个这种实现的细节。在此实现中,方程2用来确定avg_buf[n]。如上所述,buf_lo和buf_hi是刻画阈值区域730的两个avg_buf[n]值(参见图7B)。当avg_buf[n]被确定为在阈值区域730中时,信号被发送到TCP流量402的源,以指示其窗口参数应当如下:

w=f(avg_buf[n])*current_w(方程5);

w_thresh=f(avg_buf[n])*current_w_thresh(方程6);和

w_max=f(avg_buf[n])*original_w_max(方程7),其中:

w是新的TCP窗口大小;

w_thresh是TCP“慢启动阈值”;

w_max是最大TCP窗口大小;

original_w_max是在TCP会话被发起时协商的最大TCP窗口大小;并且

f(avg_buf[n])是窗口大小函数,在这里也被称作反馈函数,其在区域735中等于1,在区域730中随着avg_buf[n]增加而单调减小,并且在区域740中接近0。例如,在某些实现中,f(avg_buf[n])是单调减的线性函数。

在一个这种实现中,当avg_buf[n]在区域730中时,该函数由下述方程支配:

f(avg_buf[n])=(buf_hi-avg_buf[n])/(buf_hi-buf_lo)(方程8)

当avg_buf[n]在区域735中时,不采取任何动作。当avg_buf[n]在区域740中时,发送指示窗口应当被设置到最小大小的信号。

区域730可以进一步被划分为任何数量的子区域742。这些子区域的跨度优选等于avg_buf[n]的范围。根据某些实施例,当avg_buf[n]在一个子区域内时,将只发送单个窗口大小信号。在某些这种实施例中,在每个子区域中,f(avg_buf[n])具有单个预定值。在其他实施例中,当avg_buf[n]仍在一个子区域中时,将只计算一次f(avg_buf[n])。

如果存在发起于多个源的多个TCP会话,则通知每个会话用相同的因子f(avg_buf[n])调整其max_window_size。然而,在avg_buf[n]仍在一个具体的子区域中时,这种通知优选只应当执行一次。

优选地,当发送缓冲区满时,方法700默认为方法500。

窗口大小信号可以以任何适当的方式被发送。在某些实现中,TCP段800的选项字段805之一(参见图5)被编码具有窗口大小信号。

方法900包括通过传输伪ACK来仿真拥塞,以便调整TCP/IP网络中的TCP源的窗口大小。实际上,TCP协议具有内嵌的机制,用于通过降低其传输速率来对拥塞作出反应。如果在接收到的段之间存在间隙,即,可能由于拥塞而使分组已被网络丢弃,则接收节点将保持发送针对按顺序接收到的最后一段的ACK。当传输节点接收到至少3个针对同一个段的ACK时,它就假定在接收到的重复ACK所针对的段之后传输的段已由于拥塞而丢失。传输节点执行所谓的“快速重传”以及紧随其后的“快速恢复”,其包括重传假定丢失了的(一个或多个)段,将拥塞窗口和慢启动阈值减为一半,并且继续从检测到重复ACK所中断的点进行传输。

例如,假定传输节点已传输了段1到15。假设接收节点接收到了段1到9,以及11到15,但是未接收到段10。接收节点将针对段1到段8发送一个ACK,并且针对段9发送5个ACK(实际上,一个是对段9的确认,而另外4个则是响应于段11到15而发送的)。传输节点将假定段9是按顺序接收到的最后一段。因此,它将使拥塞窗口和慢启动阈值缩小50%,并且如果当前窗口允许的话,则重传段10,然后从段16起继续传输。一旦接收到段10,接收节点将生成从段10起的累积确认,可能包括在段15之后由传输节点发送的段中的某些。重要的是要注意,在执行快速重传后,因为拥塞窗口已被减半,所以传输节点已降低了它的速率。

因此,方法900的优选实施例通过针对最近接收到的段发送3个ACK以缩小传输节点的窗口大小,来利用现有TCP协议的该特性。即使没有接收到乱序的段,也发送这3个ACK。

图9A是示出了根据本发明某些实现的方法900的流程图。在步骤905中,确定出发送缓冲区(例如,图4的发送缓冲区420)的占用率。与前述方法中一样,发送缓冲区占用率被用作发送缓冲区中的分组将被传输过的网络(例如,网络425)中的拥塞级别的度量。

在步骤910中,基于发送缓冲区占用率,判断是否调整TCP/IP网络中的传输节点(例如,节点402)的窗口大小。如果确定出应当缩小窗口大小,则在步骤915中重复的ACK(优选3个或更多个ACK)被发送到该传输节点。这些重复ACK是在作出缩小窗口决定时针对最后接收到的段而产生的,并且在未在它们之中插入针对后继段的ACK的情况下被接连发送。如果窗口大小无需缩小,则过程返回到步骤905。

现在将参考图9B描述方法900的更详细实现。根据该实现,重复ACK是根据概率曲线918生成的。在区域920中,当avg_buf[n]小于buf_lo时,存在发送重复ACK的最小概率。在本示例中,P(avg_buf[n])在区域920中等于0,这指示出将生成重复ACK的概率为0。在区域925中,当avg_buf[n]在buf_lo与buf_hi之间时,P(avg_buf[n])单调增加到最大值(例如,1)。在某些这种实现中,P(avg_buf[n])在buf_lo与buf_hi之间线性增加。在区域930中,当avg_buf[n]大于buf_hi时,P(avg_buf[n])保持在最大值。

优选地,如同前述方法,当发送缓冲区为满时,方法900提供与方法500相同的结果。

现在将参考图10描述本发明的各种示例性应用和上下文。网络1005和网络1010由网关1015连接。类似地,网络1010和1020由网关1025连接。优选地,网关1015和1025都配置为实现前述本发明的方法中的一种或多种。

根据本发明的某些实现,网络1010是TCP/IP网络,例如因特网。网络1005和1020中的至少一个可以是FC网络,例如,存储区域网(“SAN”)。例如,网络1005可以是位于Berkeley,California的SAN,而网络1020可以是位于Boston,Massachusetts的SAN,它们利用网络1010提供由网关1015和1025封装并解封装的FC帧的长距离传输。某些这种网关的示例在美国专利申请No.10/351,167和10/350,574(律师案卷CISCP333)中作了描述,这两个申请都于2003年1月23日提交,并且都出于一切目的通过引用结合于此。

网关1015和1025中的至少一个也可以被布置在两个TCP/IP网络之间。例如,网关1015可以是企业网络1005和因特网1010之间的入侵检测设备。根据这些实施例,网关1015充当智能防火墙,并且例如能够检查每个分组并检测会致使分组被传输或丢弃的某些模式。

或者,网关1015和1025中的至少一个也可以被布置在TCP/IP网络(例如,网络1010)和超级计算机网络(例如,网络1020)之间。超级计算机网络可以例如根据IEEE 802.2LLC协议工作,该协议是一种适于超高速计算机集群的快速、简单而可靠的协议。

现在参考图11描述示例性网络设备1160,该设备适于实现根据本发明某些实现的网关415、1015和/或1025的功能。网络设备1160包括主中央处理单元(CPU)1162、接口1168和总线1167(例如,PCI总线)。

一般来说,接口1168包括适于与适当的媒体通信的端口1169。在某些实现中,一个或多个接口1168包括至少一个独立的处理器1174和(在某些示例中)易失性RAM。独立处理器1174例如可以是ASIC或任何其他适当的处理器。根据某些这种实施例,这些独立处理器1174至少执行这里描述的网关逻辑的某些功能,例如,流控制、将来自FC网络的帧封装为TCP/IP分组等。在某些实施例中,一个或多个接口1168控制例如媒体控制和管理之类的通信密集型任务。通过向通信密集型任务提供分离的处理器,接口1168允许主微处理器1162有效地执行其他功能,例如,路由计算、网络诊断、安全功能等。

接口1168一般提供为接口卡(某些时候称作“线路卡”)。通常,接口1168控制通过网络发送和接收分组,并且有时支持与网络设备1160一起使用的其他外设。这些接口中可以提供的有FC接口、以太网接口、帧中继接口、电缆接口、DSL接口、令牌环接口等。另外,可以提供各种非常高速的接口,例如快速以太网接口、G比特以太网接口、ATM接口、HSSI接口、POS接口、FDDI接口、ASI接口、DHEI接口等。

当在适当的软件或固件控制下动作时,在本发明的某些实现中,CPU1162可能负责实现与所期望的网络设备的功能相关联的特定功能。例如,当网络设备1160配置为中间路由器时,CPU 1162可以负责分析FC分组,封装这些分组,并且转发这些分组以传输向IP云。根据某些实施例,CPU 1162在软件的控制下实现所有这些功能,所述软件包括操作系统(例如,Windows NT)和任何其他合适的应用软件。

CPU 1162可以包括一个或多个处理器1163,例如来自Motorola微处理器族或MIPS微处理器族的处理器。在替换实施例中,处理器1163是专门设计的硬件,用于控制网络设备1160的操作。在特定的实施例中,存储器1161(例如,非易失性RAM和/或ROM)也形成CPU 1162的一部分。然而,存在多种存储器可以被耦合到系统的不同方式。存储器块1161可以用于多种目的,例如缓存和/或存储数据、编程指令等。

尽管图11示出的系统示出了本发明的一个特定网络设备,但是这决不是可以在其上实现本发明的唯一网络设备体系结构。例如,如果根据本发明的网关被实现在入侵检测设备中,则可以使用单独的系统,而不是在线路卡中实现网关功能。此外,常常使用这样的体系结构,该体系结构具有处理通信以及路由计算等的单个处理器。此外,其他类型的接口和介质也可以与该网络设备一起使用。

不管网络设备的配置如何,它都可以应用一个或多个存储器或存储器模块(例如,存储器块1165),这些存储器和存储器模块配置来存储用于通用网络操作的数据和程序指令和/或与这里所述的技术的功能相关的其他信息。这些程序指令例如可以控制操作系统和/或一个或多个应用的操作。

因为这些信息和程序指令可以被应用来实现这里所述的系统/方法,所以本发明涉及机器可读介质,这些介质包括用于执行这里所述的各种操作的程序指令、状态信息等。计算机可读介质的示例包括但不限于:诸如硬盘、软盘和磁带之类的磁介质;诸如CD-ROM盘之类的光介质;磁光介质;以及专门配置为存储并执行程序指令的硬件设备,例如只读存储设备(ROM)和随机访问存储器(RAM)。本发明也可以包含在沿适当的介质传输的载波中,例如,无线电波、光线路、电线路等。程序指令的示例包括机器可读代码和包含高级代码的文件,机器可读代码例如是由编译器生成的,高级代码可以由使用解释器的计算机执行。

其他实施例

一般来说,本发明的技术可以被实现的软件和/或硬件上。例如,它们可以被实现在操作系统内核中、独立的用户进程中、包括在网络应用中的库程序包中、专门构造的机器中,或者网络接口卡上。在本发明的特定实施例中,本发明的技术被实现在软件中,例如操作系统或在操作系统上运行的应用中。

本发明的技术的软件或软件/硬件混合实现可以被实现在通用可编程机器上,该机器由存储在存储器中的计算机程序有选择地激活或重配置。这种可编程机器可以是设计来处理网络流量的网络设备,例如路由器和交换机。这种网络设备可以具有多个网络接口,例如包括帧中继和ISDN接口。这种网络设备的特定的示例包括路由器和交换机。例如,本发明可以实现在专门配置的路由器或服务器中,以及可从San Jose,California的Cisco Systems公司获得的Cisco Aironet 350 Series Access Points中。从上面给出的描述将清楚这些机器中的某些的一般体系结构。在替换实施例中,本发明的技术可以实现在通用网络主机上,例如个人计算机或工作站。此外,本发明至少可以部分实现在网络设备或通用计算设备的卡(例如,接口卡)上。

尽管在这里示出并描述了本发明的说明性实施例和应用,但是仍可以有在本发明的原理、范围和精神内的多种变体和修改,并且在详细研究本申请后,这些变体将对本领域的普通技术人员变清楚。因此,应当认为本实施例是说明性的,而不是限制性的,并且本发明不限于这里给出的细节,而是可以在所附权利要求的范围和等同内作出修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号