在具有高延时及封包遗失率的网络中使用传输控制协议来最大化带宽利用率的制作方法

文档序号:7738742阅读:795来源:国知局
专利名称:在具有高延时及封包遗失率的网络中使用传输控制协议来最大化带宽利用率的制作方法
技术领域
本发明主要涉及计算系统及网络,更具体地,涉及用于避免由数据传输量降低引起的网络延时及丢失的系统及方法。
背景技术
TCP为最广泛使用的网络协议之一。TCP最重要的特征为可靠的有序传递。TCP被需要可靠数据连接的许多网络应用及服务使用。一组广泛的应用层协议(该组广泛的应用层协议总体上形成现今的WEB及网络连接的基础)使用TCP作为传送层协议。其中有HTTP、FTP、邮件协议、数据库远程访问协议。 基于SSL的VPN也使用TCP。TCP如此风行且普遍以致多数现有计算机网络以TCP为特征。 TCP已变得如此常见以致几乎所有(若非所有)广泛使用的操作系统具有内建式TCP应用。然而,TCP的主要缺点为不能利用网络信道(TCP在该网络信道上操作)的整个可用带宽。此缺点源于已提及的TCP的主要优点可靠有序的传递。更精确地,提供TCP可靠性的多种机制(如滑动窗口及阻塞避免机制)也造成了 TCP的效率低下。TCP的可靠传递基于数据确认机制,即,所发送的每一数据部分由接收器侧在收到时加以确认。为此目的,在TCP封包中所发送的每一数据部分提供有序号,该序号存在于 TCP片段报头中。一旦接收到数据,接收器侧通过设定反向TCP片段报头的适当确认号而将确认发送至数据传输侧。因此,输入的片段的确认号字段表示已离开网络且由接收器侧接受的数据字节的最大数量。显而易见,在发送另一数据部分之前等待每一单一数据部分的确认将花费过长时间,此为使用滑动窗口机制的原因。TCP规范使用术语发送窗口大小来表示可预先发送而无需等待确认的数据量(以字节为单位)。换句话说,最近发送的数据字节的序号与最近接收的确认号之间的差值不得超出发送窗口大小值。一旦接收到新的确认, 则移位该窗口,且允许传输新的数据部分。此滑动窗口机制相当简单且同时提供可靠传递及良好产出率的可能性。但明显的传输量上限起因于此传输速率受限于发送窗口大小除以RTT[字节/秒]值,其中RTT为连接往返时间(自传输至确认最近确认的数据字节所经过的时间)。可容易地看到,RTT(网络路径延时)越高,特定发送窗口大小可达到越低的传输速率。上述限制实际上非常严峻,以致TCP很少用作时间关键或性能关键传输的传送。 诸如需要高传送率但可靠传递并非关键的V0IP服务反而替代地使用不可靠但快速的UDP 传送,其它类似协议/服务也是如此。
10
TCP的性能问题随着网络带宽变得越高而越加糟糕。当前使用的TCP发送窗口大小计算算法通常在100至200毫秒延时的情况下并不允许利用宽带连接多于10%至30% 的可用带宽。已进行许多尝试来克服所述限制。所有所述尝试都基于增大发送窗口大小且将该发送窗口大小保持为高,因为没有任何方法来通过操纵TCP协议而减少当前网络延时。熟知的TCP修改Tahoe、Reno、New Reno及Vegas都提议发送窗口大小计算及传输 /再传输控制的不同方法且描述用于TCP主要阶段(缓慢启动、阻塞避免、快速再传输及快速恢复)的固有TCP运行算法。TCP Tahoe因此执行缓慢启动及阻塞避免阶段。在缓慢启动期间,阻塞窗口大小最初被设定至最大片段大小,接着以在每一到达确认上所确认的数据大小进行增加,因此呈指数地增大。引入阻塞窗口临限值。当阻塞窗口大小达到阻塞窗口临限值时,TCP进入阻塞避免阶段,在此期间阻塞窗口大小线性地增大(以每一到达确认上所确认的数据大小除以阻塞窗口大小)。将临限值最初设定为最大窗口大小。在封包丢失时,将临限值设定为阻塞窗口大小的一半且涉及缓慢启动算法。使传输量显著降低的主要TCP Tahoe问题为延后丢失检测(Tahoe仅通过超时设定而检测丢失)及周期性缓慢启动后馈(fallback)。TCP Reno保留了 TCP Tahoe的基本概念,然而引入了称作“快速再传输”的技术, 该技术允许早期封包丢失检测。根据快速再传输技术,封包丢失必须由远程接收器通过多个重复确认来立即加以表示。在立即封包再传输之后,TCP Reno并不返回至缓慢启动,而执行快速恢复。将窗口临限值及阻塞窗口大小设定为初始阻塞窗口大小的一半。接着,阻塞窗口大小增大每一到达的重复确认上的MSS,且在阻塞窗口大小超出当前未确认的数据大小的情况下允许新数据传输。在执行快速恢复(其在收到最近确认时结束)之后,TCP Reno返回至阻塞避免。TCP New-Reno继承TCP Reno机制,但实施经修改的快速恢复阶段。在封包丢失检测的时刻之前发送至网络的所有封包确认之前,不退出快速恢复。部分确认(未覆盖到丢失检测之前所传输的全部数据量)被视为连续丢失的证据且立即再传输更多封包。TCP Vegas为TCP Reno修改。TCP Vegas使用基于预期及真实的带宽估计的额外阻塞避免机制,且根据该机制来调整阻塞窗口大小。TCP Vegas也在由通过无法预期的高 RTT检测发起的重复确认表示封包丢失之前,执行早期再传输。本发明不遵从上述技术,而是使用新技术来实现上述修改不能实现的最优带宽利用率。

发明内容
本发明的实施例可包括两个方面TCP协议修改,及将此修改引入现有OS的技术。 可组合或分开地使用这些方面。TCP协议修改意味着修改现有TCP实施以引入在数据传输/再传输期间的新的 TCP协议运行及发送窗口大小计算的新算法以改善TCP的性能。引入技术意味着使用在现有计算机系统中实施TCP修改的软件,而无需移除或停用可能已作为现有计算机系统的主机OS的部分的现有TCP实施,而替代地修改现有TCP实施的运行且以恰当方式重新取得部分数据传输控制以达到所要结果。
本发明中引入的TCP修改允许最大化可用带宽利用率。根据本发明的实施例的 TCP修改方案的优点为不存在在发送器侧及接收器侧的TCP实施处进行相同修改的操作的要求(根据一些实施例,该修改仅需要存在于发送器侧)。这区分了本发明的实施例与 TCP修改的先前尝试(其需要兼容的修改以在连接的两侧处操作,诸如SACK、窗口缩放及其它)。


图1为本发明的具体实施例的技术介绍,其针对执行具有内建TCP通信协议支持和通信数据流的操作系统的计算机系统。图2说明本发明的具体实施例的处理子系统架构及操作。图3说明本发明的具体实施例的封包关联算法。图4说明本发明的具体实施例的连接实体建立算法。图5说明本发明的具体实施例的输出封包处理算法。图6说明本发明的具体实施例的输入封包处理算法。图7说明本发明的具体实施例的传输算法。图8说明本发明的具体实施例的具有超时检查及PLC的再传输算法。图9说明根据本发明的一些实施例的SWND计算算法。图10说明典型计算系统1000,其可用于实施本发明的实施例中的处理功能性。
具体实施例方式本发明的实施例引入了 TCP协定的修改,该修改主要涉及其数据传输/再传输算法,特别地,涉及不同TCP运行时间阶段期间的发送窗口大小计算。不同TCP修改可通过其阻塞避免技术来加以区分。TCP Tahoe, Reno及New-Reno 使用所谓的“反应性”阻塞避免,上述意味着该修改仅可在阻塞已发生之后检测阻塞。“反应性”阻塞避免假定发送窗口大小一直增大直至检测到封包丢失为止。封包丢失被视为阻塞证据,且基于特定修改来采取所需行动。这样的反应可包括发送窗口大小及发送窗口临限值大小调整、执行再传输或快速再传输以及进入缓慢启动或快速恢复阶段。此“反应性”阻塞避免的一个缺点为实际上并没有避免阻塞。TCP继续增大发送窗口大小直至信道阻塞为止,且未来测量仅减小阻塞及防止某一时间段的封包丢失。以这样的方式,TCP实施从一种阻塞转至另一种阻塞,此举引起传输速率细微改变且充分地减小总传输量。TCP Vegas使用称作“前瞻性”阻塞避免的不同机制。其概念为在阻塞真实地发生之前避免阻塞。TCP Vegas使用不同估计以用于调整发送窗口大小及进行再传输决策。这些不同的估计基于预期的与真实的传输量差值及基准与当前RTT差值。这些测量确实真实地允许避免多数阻塞、平滑化传输速率及最优化带宽使用。所有TCP修改对于每个连接阶段使用类似的发送窗口大小计算算法。通常使用两个估计量接收窗口大小及阻塞窗口大小。且将发送窗口大小设定为两者中最小的。在缓慢启动阶段期间,将阻塞窗口大小最初设定为最大片段大小且接着呈指数地增大。在接收到每一新确认时,阻塞窗口增大由远程侧所确认的数据字节的数量。执行此
12指数增大直至阻塞窗口大小达到发送大小临限值为止,此时进入阻塞避免阶段。阻塞避免阶段假定阻塞窗口大小线性地增大。在每一新确认到达时,阻塞窗口大小增大由所确认的字节数目除以阻塞窗口大小。本发明的实施例无需如其它TCP修改那样清楚地区分缓慢启动阶段与阻塞避免阶段;缓慢启动阶段与阻塞避免阶段可使用新“阻塞避免下的传输”阶段代替。在阻塞避免下的传输阶段期间,当前实施例可基于当前RTT值按照指数规律或线性地增大发送窗口大小或减小发送窗口大小。本发明的实施例也可在“再传输”阶段期间(当其再传输丢失的封包时)使用不同规则。当发生以下情形之一时认为发生封包丢失特定封包的再传输超时期满、特定封包的第3个重复确认已到达、或封包在由接收器所表示的选择性确认间隙外, 而稍后的封包已在该选择性确认间隙内。根据本发明的实施例,发送窗口大小调整决策可基于以下记载。网络路径延时视中间路由器的队列充满度(fullness)而定。一旦队列为空,则所有封包立即由路由器转发,且不存在因封包在路由器队列中等待服务而引起的额外延时。此事实识别网络路径并不阻塞,且路由器应对在当前速率下的传输。在此状况下,封包及该封包的确认可在最短的可能时间内通过网络路由。一旦路由器的队列开始填满封包,网络延时即开始增长,从而在封包穿越的每一路由器处获得一小增量。此事实允许本发明的一些实施例隐含地追踪网络路径路由器的队列充满度,且因此估计网络路径是否阻塞以便进行发送窗口大小调整决策。即使网络路径最初部分地阻塞,在发送窗口大小调整(且因此额外封包注入)之后计算的RTT与最小RTT之间的差值为网络状态改变的证据。且该差值的大小用于进行发送窗口大小调整决策。此技术称作“基于延时的窗口调整”。此技术也考虑诸如RTT变化及RTT改变速度等参数,RTT改变速度有助于进行关于发送窗口调整的时间及大小的更精确决策。本发明的一些实施例可使用以下参数来执行发送窗口大小调整过程1. RTT-往返时间或往返延迟时间,传输封包与收到该封包的确认之间所消逝的时间。2. MIN_RTT-在连接操作的预定时段期间所注意到的最小RTT(在下文描述MIN_ RTT寿命)。3. NEff_RTT-最近确认的片段的RTT。4. S_RTT-平滑化的 RTT 估计量,S_RTT = (S_RTT* (RTT_Sff-l) +NEff_RTT) /RTT_Sff, 其中RTT_SW为RTT平滑窗口大小,因此S_RTT为针对最近RTT_SW确认所测量的NEW_RTT 值的一种平均值。S_RTT事实上类似于原始TCP的平滑化RTT估计量。5. RTT_AVAR-对每一确认进行测量且对于VAR_SW数量的确认平滑化的RTT绝对变化,其中 VAR_Sff 为变化平滑窗口 大小。RTT_AVAR = (RTT_AVAR* (VAR_Sff-l) +NEff_AVAR) / VAR_SW,其中 NEW_AVAR 为近期测量的绝对变化,NEff_AVAR = NEW_RTT_S_RTT。6. RTT_RVAR-RTT 相对变化,RTT_RVAR = RTT_AVAR/S_RTT。7. RTT_AGRff-对每一确认进行测量且对于GRW_SW数量的确认平滑化的RTT绝对增长,其中 GRW_SW 为增长平滑窗口 大小。RTT_AGRW = (RTT_AGRW* (GRff_Sff-l) +NEff_AGRff) / GRW_SW,其中NEW_AGRW为近期测量的绝对增长,NEff_AGRff =新S_RTT-先前S_RTT。说明书
5/16 页8. RTT_RGRff-RTT 相对增长,RTT_RGRff = RTT_AGRW/S_RTT。9. RTO-再传输超时,RTO = S_RTT*tot,其中tot为超时临限值。10. ACK_DS-经确认的数据大小,由最近接收的确认数量所确认的字节数。11. MAX_RWND-接收侧曾通告的最大接收窗口大小。12. NEW_RWND-近期通告的远程接收器窗口大小。13. SWND-发送窗口大小,允许在无确认的情况下发送的字节数。14. AffND-实际窗口大小,已发送但仍未经确认的字节数。15. SWND_GRW-在每一 SWND增大时测量且平滑化的发送窗口大小增长。此值为最近MIN_RTT时段期间经平滑化之SWND±曾长。SWND_GRW在每次SWND递增时与SWND递增相同值,且在此后根据以下公式立即平滑化:SWND_GRW = SWND_GRff-SWND_GRff* (dt/MIN_RTT), 其中dt为自最近平滑化所经过的时间间隔。SWND_GRW不应低于0。16. EIRT-指数增大RTT临限值,NEW_RTT不得超过MIN_RTT之时间值(MIN_RTT的部分)(因为SWND可能呈指数地增大)。17. EIGT-指数增大增长临限值,RTT_RGRW/RTT_RVAR (或 RTT_AGRW/RTT_AVAR)不应超出的值(因为SWND可能呈指数地增大)。18. EIID-指数增大增量除数,SffND增量在指数增大期间所除以的值。19. LIRT-线性增大RTT临限值,NEW_RTT不得超过MIN_RTT的时间值(MIN_RTT的部分)(因为SWND可能呈指数地增大)。20. LIGT-线性增大增长临限值,如果RTT_RGRW/RTT_RVAR不超出此值,则SWND可线性地增大。21. LIID-线性增大增量除数,SffND增量在线性增大期间所除以的值。22. CART-阻塞避免RTT临限值(此时间值按MIN_RTT的部分测量);如果NEW_RTT 比MIN_RTT超出CART,则减小SWND以避免阻塞。23. CAGT-阻塞避免增长临限值,如果RTT_RGRW/RTT_RVAR超出此值,则减小SWND 以避免阻塞。24. CAffT-阻塞避免窗口增长临限值。如果SWND_GRW超出CAWT,则SWND线性地减小,否则SWND按比例地减小。25. OAWT-溢出避免窗口临限值。如果RWND低于此值,则传输被暂停直至再次通告 RWND足够高为止。26. CCRT-特性改变RTT临限值。当SRTT超出此临限值时,预期网络状态显著改变且重设并刷新诸如MIN_RTT的基本连接参数。27. CADD-阻塞避免减量除数,SffND减量在阻塞避免减小期间所除以的值。观.PDDD-成比例减小减量除数,SWND减量在阻塞避免或封包丢失时成比例减小期间所除以的值。根据一些实施例,阻塞避免下的传输阶段开始于连接操作的一开始。最初将发送窗口大小设定为m*MSS,其中“m”为片段中的最小窗口大小,且“MSS”为此特定连接的最大片段大小。接着,针对每一输入的非重复确认调整发送窗口大小。根据如上文所提及表示通道状态的RTT值及RTT增长量值进行SWND调整决策。在一些实施例中,存在4个通道状态空闲、占用、几乎阻塞、阻塞。“空闲”、“占用”及“几乎阻塞”通道状态分别由低、中间及高RTT值(相对于MIN_RTT)表示。“阻塞”状态由封包丢失以及高RTT值表示。在判定网络处于“空闲”状态时SWND呈指数地增大,且在RTT变得较高且网络变为“占用”时SWND 线性地增大。高RTT很可能为接近阻塞的证据,在路由器队列几乎填满时RTT确实通常增长,且不管此特定连接正尝试以过高速率传输还是某一其它连接已获得相同瓶颈的带宽的部分实际上并无差异。因此,当检测到网络状态为“几乎阻塞”时,减小SWND以避免可能的阻塞。已发生封包丢失且网络状态变为“阻塞”的状况并不视为处于“阻塞避免下的传输” 阶段且将稍后加以描述。应用关于RTT增长速度的额外条件以判定SWND调整的时亥Ij。RTT在网络阻塞时通常并不即刻地增大,而是连续地增长。当网络处于稳定状态时,RTT通常围绕5_1 17振荡, RTT增长因此围绕0振荡。但RTT增长已变得引人注意的事实意味着RTT将很可能继续增大。此举允许本发明的实施例预先进行SWND调整决策。一些网络不稳定性以及接近“几乎阻塞”状态的网络可能引起较小的RTT增长。在此状况下,本发明的实施例可暂时停止增大 SffND直至情况稳定为止。但当RTT增长变得足够快时,最可能的是此特定连接或某一其它连接已开始阻塞网络,且没有理由地等待直至(NEW_RTT-MIN_RTT)差值超出临限值才开始减小SWND。替代地,本发明的实施例可基于RTT增长的速率而开始减小SWND。此技术允许本发明的实施例比RTT差值技术提前某些若干封包检测接近的阻塞。此举至关重要,因为这些封包通常为在可能的阻塞期间可能已丢失的封包。当RTT增长在零以下过低时,也停止增大SWND。此负增长值表示由完成其传输的某一连接或阻塞后信道清除引起之网络不稳定,SffND在这些状况下不应在小RTT上增大直至情况稳定为止。如果SWND在不稳定期间增大,则SWND可能超出其对于特定网络路径的实际最大可能值。然而,SffND在负RTT增长值上并不减小,因为其并不表示接近阻塞。因为不同网络及网络路径以不同RTT变化大小为特征,因此RTT增长可通过除以 RTT变化来加以调整,此举可避免在高RTT变化(或振荡)因持续的RTT增长而混淆时,进行多数不合适的SWND调整决策。如果NEW_RTT < = MIN_RTT* (1+EIRT)且 | RTT_RGRW/RTT_RVAR | < = EIGT,则发送窗口大小呈指数地增大。此条件来自于以下结论如果RTT足够低,则网络处于“空闲”状态,且允许SWND快速增长以便迅速达到最大带宽利用率。指数增量通常并不为恒定值,且视NEW_RTT而定,指数增量越接近于MIN_RTT* (1+EIRT),增量越小。根据以下公式计算指数增量ACK_DS*{[1-(NEW_RTT-MIN_RTT)/(MIN_RTT*EIRT)]*(1-1/EIID)+1/EIID}。换句话说,指数增量处于 ACK_DS (当 NEW_RTT = MIN_RTT 时)与 ACK_DS/EIID (当 NEWR_TT = MIN_ RTT*(1+EIRT)时)值之间。此允许在RTT差值接近临限值时逐渐地减小指数SWND增长。当 MIN_RTT* (1+EIRT) < NEff_RTT < = MIN_RTT* (1+LIRT)且 EIGT < | RTT_RGRff/ RTT_RVAR| <= LIGT时,发送窗口大小线性地增大。这是因为在此条件下,RTT仍足够低,但网络已在一定程度上被占用且因此SWND必须以更精确的方式增大。线性增量也不为恒定值而是视NEW_RTT而定。用于线性增量的公式为(ACK_DS/SWND)*{[ (1+LIRT)/ (LIRT-EIRT)-(NEW_RTT-MIN_RTT)/(MIN_RTT* (LIRT-EIRT)) ]* (1/LIID)}。换句话说,线性增量处于 ACK_DS/LIID(当 NEW_RTT = MIN_RTT*(1+EIRT)+1/ ①时)与 0(当 NEW_RTT = MIN_RTT*(1+LIRT)时)之间。当 NEW_RTT > MIN_RTT* (1+CART)或 | RTT_RGRW/RTT_RVAR | > CAGT (意味着网络
15几乎阻塞且应改变传输速率)时,减小发送窗口大小。使SWND减小SWND_GRW/CADD,即,使 SffND大致减小其在RTT毫秒之前的值,因为此被认为是连续SWND (且因此AWND)增大已使网络状态恶化的时间。由于在等于当前RTT的时间经过之前系统无法注意到其测量是否已带来任何结果,因此不允许SWND比每MIN_RTT —次更频繁地递减。如果NEW_RTT > MIN_RTT* (1+CART)或 | RTT_RGRW/RTT_RVAR | > CAGT 但 SWND_GRW <CAWT,则网络由其它连接阻塞,因为当前连接正以恒定的稳定速率传输。因此,SWND应根据新出现的条件加以调整。根据熟知公式SWND/RTT来执行可用带宽的估计,且因为RTT已改变,因此SWND也可以相同速率改变。因此,SffN = SWND* (MIN_RTT/NEff_RTT)。基于上文所述原因,SffND不应比每MIN_RTT —次更频繁地递减。两个上述SWND减量概念允许避免由临时网络不稳定、特定连接过大传送率或部分地暂时占用可用带宽的小的偶然性传输引起的阻塞。但大传送改变可用带宽及其它网络特性历时相当长的时间段(这实际上意味着当前连接不再于其先前用于的网络中操作), 且连接运行时间变量及估计也应改变。所有运行时间参数计算基于MIN_RTT值,该值为曾注意到的最小RTT且为基本网络路径特性之一。但如果网络状态已充分改变,则可认为此特性不再有效。如果S_RTT达到MIN_RTT* (1+CCRT)值,则该值识别充分网络状态改变,该改变可触发MIN_RTT重设。在此状况下,可将MIN_RTT重设为S_RTT*f,其中“f ”为最小RTT 调整因子。因此,可将MIN_RTT寿命判定为由充分的S_RTT增大所识别的显著网络状态改变之间的时段。用于将系统置于“阻塞避免下的传输”阶段的主要传输条件为AWND < SffND ;然而, 可能施加更多的限制以避免远程接收器缓冲区溢出。原始TCP协议将SWND设定为CWND与 RWND中最小的。本发明的实施例并不直接使用RWND估计量,因为其通常对SWND施加相当严格的限制,甚至对于所启用的窗口缩放选项也是如此。RWND表示远程接收器此刻准备好接受的字节数,原始TCP实施在超出此限制的情况下将不发送更多数据。然而,本发明的实施例可忽略此限制以便使固有的SWND过度增长且允许更快的传输速率。RWND仍可保持对本发明的实施例有用的参数,因为该实施例中的一些在NEW_RWND < MAX_RWND*0AWT时不传输额外数据,即使满足AWND < SWND的条件。此可确保远程接收器缓冲区不溢出。如果所通告的RWND开始降得过低,则此识别在远程接收器缓冲区中存在许多错误排序的封包且此刻正执行重排序,或远程接收器不能够以当前传送率接受封包。如果传送率不立即减小, 则这些条件均导致缓冲区溢出及大量封包遗失率。由于这些原因,本发明的实施例提供暂停传输直至再次通告足够大的RWND。根据本发明的一些实施例,可使用第二运行时间阶段,此为“再传输”阶段。在再传输阶段期间,再传输先前检测为丢失的封包,且不管是否满足所有条件,不允许任何正常传输。如上文所提及,封包丢失通过以下之一来识别特定片段的RTO已期满,特定片段的第 3个重复确认已到达,或封包在由接收器所表示的选择性确认间隙外,而稍后的封包已在该选择性确认间隙内。RTO值在每一 RTT测量时根据以下公式计算RT0 = S_RTT*a+RTT_AVAR*b。若在定期检查期间发现RTO时段已自特定封包发送时间消逝,则认为封包丢失,系统进入“再传输”模式且再传输封包。RTO期满通常表示归因于阻塞或一些其它严重网络(或远程接收器)问题的大量封包丢失,因为由小阻塞引起的意外丢失或丢失最可能借助于第3个重复确认或SACK而被尽早发现。一旦系统已在RTO期满时进入“再传输”模式,则将SWND调整至SWND = SWND* (MIN_RTT/RT0),且对于下一 MIN_RTT时段且直至退出“再传输”阶段,不再允许SWND减小以避免过大的SWND速率减小。封包丢失也可由第3个重复确认或SACK选项识别,其中报告未接收到特定封包而接收到随后封包。此事件也将极端TCP推入“再传输”阶段中且引起丢失封包的再传输。 然而,此封包丢失表示通常识别此刻网络轻度阻塞或丢失是意外的,因此可使用较小SWND 减量。因此,可将SWND调整至SWND = SWND* (MIN_RTT/L_RTT),其中L_RTT为“封包丢失 RTT",即自发送丢失封包的时刻到表示该封包丢失的时刻所测量的往返时间。接着,对于下一 MIN_RTT时段且直至退出“再传输”阶段,不允许SWND再减小。紧随丢失封包确认之后,系统退出“再传输”阶段且重新进入“阻塞避免下的传输” 阶段。然而,封包丢失确实常常导致稍后在“再传输”退出时的大量确认,其视在认为有丢失封包之后远程侧接收到的封包数而定。甚至在“处于丢失状态(on loss) ”SWND调整之后,AffND也由于大量确认而显得比在“再传输”阶段退出时的SWND低得多,此为一常见情况。此情况导致几乎立即以过大速率传输相当大量的数据,此举导致甚至更显著的网络阻塞。可对“再传输”阶段退出执行额外SWND调整以便避免此情形。如果在“再传输”阶段退出时SWND > AWND+MSS*m,则将SWND设定为AWND+MSS*m,其中MSS为对于连接的最大片段大小且“m”为最小窗口大小(以MSS计)。本发明的实施例可仅涉及TCP传输及再传输机制。其不需要干涉TCP连接建立/ 关闭/重设技术中任一个。此外,本发明的实施例不需要知晓经由TCP使用的上层协议或所传送的数据。实施例可将经由TCP传送的数据处理为原始八字节流,且不进行尝试来干涉上层内容/操作、修改、复制或将其传递至第三方。因此,根据本发明的实施例的TCP传输/再传输机制修改不需要打断TCP的可靠有序传递特征或中断TCP兼容性。在运行具有内建式TCP实施的OS的机器处布署技术的描述多数常用操作系统已具有TCP实施。内建式OS TCP实施的替换可能相当复杂。因此,本发明的一些实施例以下列技术为特征将上述惯常TCP实施的修改引入至具有内建式TCP实施的操作系统,而不完全替换现有TCP实施。此技术经开发为弹性的且与多数广泛使用的OS兼容。一些实施例的一个特性在于并非替换现有内建式TCP实施本身,而是实施例可修改其运行且自原始实施部分地重新取得传输/再传输控制,以便根据上述TCP修改提供TCP运行。能够进行网络连接的所有当前OS实施ISO的OSI概念的某一变化,根据该变化, 网络协议实施为子系统的堆栈,每一子系统服务于相应OSI层(或邻近层的集合)。本发明的实施例可能需要在网络与实体层之间的层处截取/产生封包以适当地操作的能力。现有 OS通常确实提供此能力。因此,本发明的实施例可由放置在网络连接与实体层实施之间某处的软件来执行,且可变为额外中间子系统,该额外中间子系统对于本地端发送器看似远程接收器且对于远程接收器看似发送器。执行本发明的实施例的软件可由封包捕获子系统及连接处理子系统组成。封包捕获子系统提供封包截取及产生能力。此子系统为软件的外部通信接口,且可允许与本地端TCP实施的其余部分及远程接收器交换封包。连接处理子系统为应用上述TCP流量控制修改的子系统。
封包捕获子系统为外部子系统且可由第三方封包捕获软件以及经特定设计以用于本发明的实施例的软件来表示。在此软件提供允许至少在数据链路或网络层处捕获(截取)并传输封包的最小API的情况下,本发明的实施例可能能够被衰减以与任何封包捕获软件一起使用为封包捕获子系统。连接处理子系统实施TCP修改自身。连接处理子系统依次包括若干子系统输入子系统、筛选子系统、处理子系统、输出子系统。输入子系统与输出子系统形成连接处理子系统数据接口。输入子系统负责从封包捕获子系统接收封包,以及经由筛选子系统将接收的封包传递至处理子系统。输出子系统负责自处理子系统接收封包,以及将接收的封包转发至封包捕获子系统。筛选子系统允许将封包自输入透明地转发至输出,从而避免涉及处理子系统。可根据预定及使用者定义的准则筛选出封包,该准则允许将TCP修改仅应用于所需连接,从而使其余连接的运行保持不变。如果可用的封包捕获子系统提供一些筛选能力,则此封包捕获子系统可用以实施筛选子系统的至少一部分。在封包捕获子系统处的早期封包筛选可避免跨子系统数据传送的不必要的时间消耗,从而提高总体性能。处理子系统执行上述TCP修改。处理子系统追踪当前处理的连接的状态且执行数据传输/再传输。每一连接可与TCP连接实体相关联,该TCP连接实体可表示为识别码、数据及变量。连接的识别码为一组网络地址,该组网络地址允许明确地区分特定连接与其它连接,且使所捕获的封包与特定连接实体相关联以用于进一步处理。连接数据储存由传输及再传输缓冲区表示,该缓冲区分别含有准备好发送的封包及已发送且有待确认的封包。 连接实体具有反映网络及连接自身的当前状态的一组广泛运行时间变量,诸如SWND、AWND、 RTT、变化等。本发明的一些实施例用以修改原始内建式TCP运行的两个主要技术为先占式欺骗数据确认以及封包丢失隐藏。原始内建式TCP实施不能以高于SWND/RTT的速率传输,且原始SWND通常不够高以达成所需传送率。本发明的实施例可能不知当前原始SWND值,同时也不可改变该当前原始SWND值。因此,可使用先占式欺骗数据确认(PSDA)技术。PSDA包括发出早期确认(在真实确认到达前),并将其转发至原始TCP实施,此举迫使该原始TCP实施使发送窗口边缘移位并传输新数据。因此,本发明的实施例可获得足够封包以填充SWND,且以所需速率执行传输。PSDA也可能使原始TCP自其再传输缓冲区删除早期确认的封包,但本发明的实施例可通过实施其固有再传输机制来解决此问题。PSDA以两种方式执行发出具有先占式欺骗确认号的空封包,或将真实的输入封包的确认号修改为先占式欺骗确认号。先占式欺骗确认号在考虑以下特征的情况下进行计算当前软件连接实体传输缓冲区应始终包含足够的数据以在下一真实数据确认之后填充SWND-AWND差值。将此差值估计为每一真实确认所确认的数据的平均大小。先占式欺骗确认号也可能需要满足以下限制其不应覆盖尚未由原始TCP实施发送且由当前软件缓冲的数据,S卩,先占式欺骗确认号永远不应超出[最近缓冲的封包序号]+ [最近缓冲之封包数据大小]值,因为将这些确认号传递至原始TCP可能导致其未定义的运行且中断连接操作。封包丢失隐藏(PLC)用于防止原始TCP实施注意到实际丢失的封包并再传输该封包。尽管原始TCP封包再传输对于本发明的实施例的操作并不关键(重复封包在处理时被丢弃),但再传输涉及额外耗时的数据传送且使总体性能降低。此外,如果未自原始TCP隐藏已经先占式欺骗确认的数据(此数据已在欺骗确认时自原始TCP再传输缓冲区被移除) 的丢失,则其可能不可预测地运行。PLC利用PSDA实施且部分地由其超覆(overridden)。 可区分出两种PLC =RTO期满表示的丢失的隐藏及第3个重复确认表示的丢失的隐藏。在收到第3个重复确认时,本发明的实施例进入“再传输”阶段且不传输新封包, 这意味着连接实体的传输缓冲区不清空且先占式欺骗确认号不增大。在此状况下,先占式欺骗确认号对于每一输入的重复确认递增1以避免欺骗原始TCP的重复确认。若先占式欺骗确认号达到[最近缓冲的封包序号]+[最近缓冲的封包数据大小]值,则其不再递增,因此,在每一重复确认到达时向原始TCP欺骗式地确认最近缓冲的数据字节(其显然也是由原始TCP最近传输的)。RTO期满隐藏由PSDA部分地超覆,因为多数封包在其RTO期满之前已经预先确认。 然而,如果RTO自未由先占式欺骗确认覆盖的封包的缓冲时刻起已期满,则确认此封包数据的特殊空欺骗封包被发出且转发至原始TCP。接着,将先占式欺骗确认号调整至最近欺骗确认的封包的[序号]+ [数据大小]。然而,本发明的实施例的RTO计算无需与原始TCP RTO计算相关。因此,原始TCP实施可针对特定封包在当前软件发出对其的欺骗确认之前检测其内部RTO期满。此并非为重要问题,因为RTO表示的丢失并非操作关键的,在此状况下, 表示为丢失的封包仍存在于原始TCP再传输缓冲区中且被再传输,其仅引起总体性能的不适当降低,但并非引起连接操作崩溃。总体处理子系统操作可通过以下算法集合来加以描述封包关联、连接实体建立、 输出封包处理、输入封包处理、传输、具有超时检查及PLC的再传输。处理子系统的操作始于等待新的封包接收。如果在此等待期间满足一些停止条件,则处理子系统放弃此等待且终止其操作。否则,一旦接收到封包,则传递该封包以进行处理。处理子系统假定其接收的封包已通过筛选或封包捕获子系统筛选。其仍需要封包关联机制,该机制判定所接收的封包与哪一特定连接相关。本发明的实施例可操作以下术语本地IP/端口及远程IP/端口,该本地IP/端口及该远程IP/端口分别表示本地端及远程主机的网络/传送地址。连接实体的识别码由这两对地址表示。如果封包地址集合匹配同一识别码,则将所接收的封包判定为属于当前追踪的连接之一。一旦判定封包的连接,则在特定连接实体内容中处理该封包。如果封包的连接未判定,则在检查预定新连接建立条件之后将该封包透明地转发至输出子系统。本发明的实施例可能需要在连接建立期间对于特定连接所协商的一些基本信息, 其可由本发明进一步处理。因此,仅当建立新连接时且本发明的软件正监视通信时可建立用于进行进一步处理的新连接实体。一些实施例在连接已处于其操作中的情况下并不建立用于进一步处理的新连接实体(在此状况下,该连接可由筛选子系统筛选出且由原始TCP 实施处理)。新实体建立的主要条件可为收到具有SYN标识集合的网络至TCP (远程至本地主机)封包。自此连接建立封包获得诸如最大窗口大小、窗口尺度及最大片段大小的重要运行时间参数。若不满足上述连接保存条件,则不建立新连接实体,且将封包转发至输出子系统而不进行任何处理。在使封包与如上所述的当前现有连接实体之一相关联之后,根据封包方向而在其内容中处理该封包。若以下方程序成立,则将输出(本地至远程主机)封包添加至连接传输缓冲区 [新封包序号]=[最近封包序号]+ [最近封包数据大小]。此条件保证仅排序良好的封包由处理子系统缓冲以用于传输。同时,丢弃重复或无序封包。在已缓冲新的输出封包之后,涉及传输算法。输入(远程至本地主机)封包用于获得基本连接状态信息。输入封包不经储存, 而是在将可选的较少修改应用于其以满足PSDA及PLC要求之后透明地向上转发至TCP。在输入封包接收时所采取的第一操作是连接再传输缓冲区检查,该检查出于检测经确认的封包或再传输请求的目的而执行。在确认检查期间也执行RTT计算。若来自连接再传输缓冲区的封包通过输入封包确认([经缓冲的封包序号]+ [经缓冲的封包数据大小] <=[输入封包确认号]),则将NEW_RTT设定为等于从该经缓冲的封包传输至收到其确认所消逝的时间。若检测到经缓冲封包的第3个重复确认,则将L_RTT设定为等于从该经缓冲的封包传输至收到第3个重复确认所消逝的时间。接着将经确认及所请求的再传输封包分别自再传输缓冲区删除,或加标记以用于再传输。接着,刷新或重新计算运行时间变量,诸如RWND、 AWND、S_RTT、RTT变化及增长。在刷新这些变量之后,重新计算主要参数SWND。由于SWND、 AffND及RWND可能已改变且现在可能允许新封包都传输,因此调用传输算法。传输算法包括发送条件检查,检查成功之后的传输缓冲区封包提取及传输。传输算法始于初始封包选择及发送条件检查。自传输缓冲区选择具有最小序号的封包,且检查以下发送条件SffND > AWND+[选定的封包数据大小]及NEW_RWND > MAX_RWND*0AWT。若满足以上条件,则将该封包自传输缓冲区提取、传输,且将该封包的副本保存至再传输缓冲区。AWND接着增加所传输封包的数据大小。在一循环中重复这些操作直至传输缓冲区被清空或不满足传输条件。超时检查及利用PLC的再传输算法可划分为两部分。在PLC阶段期间,检查来自传输缓冲区与再传输缓冲区的封包以判定RTO时段是否已从最初缓冲每一单独封包的时刻(即,原始TCP实施传输该封包的时刻)消逝。若这些封包存在且尚未借助于PSDA方法加以确认,则发出特殊丢失隐藏欺骗确认封包,并将其转发至原始TCP以防止其注意到RTO 期满及再传输。丢失隐藏欺骗确认号必须通过自缓冲时刻起期满的RT0,覆盖最近缓冲的封包。接着,将先占式欺骗确认号设定为丢失隐藏欺骗确认号。超时检查及再传输阶段假定来自再传输缓冲区的封包将针对RTO期满加以检查,且加上标记以用于再传输。接着,再传输在输入封包处理或超时检查期间被加上标记以用于再传输的所有封包,但施加以下限制以避免过大的再传输速率允许特定封包每MIN_RTT仅被再传输一次,且总体再传输速率不应超出所估计的可用带宽。图1图示了将本发明的实施例引入执行OS的计算机系统的技术,该OS具有内建式TCP协议支持及通信数据流。实施本发明的实施例的软件被引入至数据发送器系统,且在物体与传送ISO OSI模型层之间执行其操作。此软件在本发明中称作“极端TCP”。数据发送器系统可为一般个人计算机,或经由TCP协议发送数据的任何计算机。该软件截取网络封包并借助于所截取的封包修改及新封包产生,来改变TCP操作的标准流程。将极端TCP 软件106引入至数据发送器系统100,数据发送器系统100经由在本地TCP 102与远程TCP 103之间建立的TCP连接,执行至远程数据接收器系统的数据传输。极端TCP软件106中
20断本地TCP 102与远程TCP 103之间的直接连接流,且变为执行固有TCP修改的中间虚拟主机。极端TCP软件由连接处理子系统107及封包捕获子系统108组成。封包捕获子系统 108截取输入与输出方向的网络封包,且将其重定向至连接处理子系统107。可将网络封包的正常流向描述为实体及数据流的以下序列[本地TCP 102-数据流133-本地网络接口 104-数据流127-网络105-数据流128-远程TCP 103]及反向方向的倒序。输出封包的重定向的流向看似为[本地TCP 102-数据流120-封包捕获子系统108-数据流121-连接处理子系统107-数据流125-封包捕获子系统108-数据流126-本地网络接口 104-数据流127-网络105-数据流128-远程TCP 103],且输入封包遵循此流向[远程TCP 103-数据流129-网络105-数据流130-本地网络接口 104-数据流131-封包捕获子系统108-数据流121-连接处理子系统107-数据流125-封包捕获子系统108-数据流132-本地TCP 102]。连接处理子系统107由输入子系统109、筛选子系统110、处理子系统111及输出子系统112组成。输入子系统109及输出子系统112负责连接处理子系统107与封包捕获子系统108之间的通信。筛选子系统110筛选出不相关封包,且经由数据流113将该不相关封包转发至输出子系统112,且接着立即且透明地转发至封包捕获子系统108。筛选子系统110可完全地或部分地借助于封包捕获子系统108来实施(若可通过其提供适当特征)。处理子系统111应用本发明的实施例的协议修改的实施。其架构及操作总体由图 2表示且细节由图3至图9给出。在处理子系统111、本地TCP102与远程TCP103之间可存在若干不同的虚拟数据通信流。虚拟数据流114表示为[本地TCP 102-数据流120-封包捕获子系统108-数据流121-输入子系统109-数据流122-筛选子系统110-数据流123-处理子系统111]。处理子系统111经由虚拟数据流114接收来自本地TCP 102的数据、缓冲该数据并根据极端 TCP协议修改概念来经由虚拟数据流116将其传输/再传输至远程TCP 103。虚拟资料流 116表示为[处理子系统111-数据流124-输出子系统112-数据流125-封包捕获子系统 108-数据流126-本地网络接口 104-数据流127-网络105-数据流128-远程TCP 103]。 远程TCP 103经由虚拟数据流117向处理子系统111确认所接收的数据,虚拟数据流117 表示为[远程TCP 103-数据流129-网络105-数据流130-本地网络接口 104-数据流 131-封包捕获子系统108-数据流121-输入子系统109-数据流122-筛选子系统110-数据流123-处理子系统111]。处理子系统借助于经由虚拟数据流115传达的PSDA及PLC来修改本地TCP 102的运行,虚拟数据流115表示为[处理子系统111-数据流124-输出子系统112-数据流125-封包捕获子系统108-数据流132-本地TCP 102]。图2图示了处理子系统架构及操作。实线表示处理子系统主循环的控制流。处理子系统无限地等待以下之一满足停止条件、超时检查时间已到,或经由数据流207自筛选 /输入子系统接收到新封包。处理子系统在满足停止条件时立即停止。若超时检查时间已到,则将控制传递至具有超时检查及PLC的再传输算法206,在其完成时将处理子系统置于等待状态。若自筛选/输入子系统接收到新封包,则执行封包关联201。若成功地使最近接收的封包与当前处理的连接实体之一相关联,则根据封包方向分别经由控制流210及数据流211或控制流212及数据流213,将控制及数据传递至输出封包处理203或输入封包处理204之一。输出封包处理算法203缓冲所接收的封包且执行PSDA,PSDA发出先占式欺骗确认封包,并经由数据流208将其转发至输出子系统。输入封包处理算法204刷新连接状态及运行时间变量、修改所接收的封包(出于PSDA及PLC的目的)及经由数据流214 将其转发至输出子系统。接着将控制传递至传输算法205,该算法205通过经由数据流209 将先前缓冲的封包转发至输出子系统而传输该先前缓冲的封包。具有超时检查及PLC的再传输算法检查RTO期满表示的丢失及PLC必要性、发出丢失隐藏欺骗确认封包及经由数据流215将其转发至输出子系统,且接着通过经由数据流216将所需封包转发至输出系统而重新传输所需封包。接着,将处理子系统置于等待状态。若新封包不与当前处理的连接实体之一相关联,则传递该新封包以用于处理至连接实体建立算法202,该连接实体建立算法 202检查建立表示此封包连接的新实体是否可能。经由控制流217及数据流218,将控制及数据传送至连接实体建立算法。连接实体建立接着经由数据流220将封包转发至输出子系统,并经由流219将控制传递至再传输算法206。图3图示了封包关联算法。其自处理子系统主循环接收控制(经由控制流300) 及数据(经由数据流30 。接着检查封包以属于当前处理的连接实体。若对于所接收的封包未发现匹配的连接实体,则将控制(经由控制流301)及数据(经由数据流303的封包) 传递至连接实体建立算法。若发现了匹配的连接实体,则分别经由控制流304及数据流306 或控制流307及数据流308,将控制及数据传递至输出封包处理算法或输入封包处理算法。图4图示了连接实体建立算法。其自封包关联算法接收控制(经由控制流400)及数据(经由数据流402的封包)。若满足新的连接实体建立条件,则建立新实体并经由数据流403将新实体保存至连接实体缓冲区405。接着经由数据流407将封包转发至输出子系统,且经由控制流406将控制传回至处理子系统主循环,而不管是否满足新实体建立条件。图5图示了输出封包处理算法。其自封包关联算法接收控制(控制流504)及数据(经由数据流506的封包)。检查所接收的封包以匹配排序良好的连续数据传输的条件。 若封包为重复或错误排序的,则将其放弃并丢弃。若封包为良好排序的,则将其保存至连接实体传输缓冲区505 (经由数据流508)。接着检查PSDA必要性,且发出先占式欺骗确认封包,并经由数据流507将该封包转发至输出子系统。在完成时将控制传递至传输算法(控制流501)。图6图示了输入封包处理算法。其自封包关联算法接收控制(流60 及数据(经由数据流611的封包)。检查来自连接实体再传输缓冲区610的封包,以待由所接收的封包确认或请求再传输。若封包经确认,则刷新NEW_RTT且自再传输缓冲区610删除经确认的封包。若删除再传输请求,则标记所需封包以用于进一步再传输。当检查完所有经缓冲的封包时,刷新连接状态及运行时间变量。此处进行明显为极端TCP协议修改的本质的SWND 的计算(算法607)。接着修改所接收的封包以使其匹配PSDA及PLC的要求,并经由数据流 612将其转发至输出子系统。将控制传递至传输算法(流608)。图7图示了传输算法。其自输出封包处理算法(经由控制流608)或输入封包处理算法(经由控制流501)接收控制。因此,自传输缓冲区505选择封包并检查发送条件。 若允许传输特定封包,则将该特定封包自传输缓冲区505提取、传输(通过经由数据流705 转发至输出子系统),并且接着将该特定封包的副本保存至再传输缓冲区610。一旦不满足传输条件或传输缓冲区505已清空,则将控制传递至再传输算法(经由控制流703)。图8图示了具有超时检查及PLC的再传输算法。其自处理子系统主循环(流800)或传输算法(流70 或连接建立算法(流406)接收控制。针对丢失隐藏欺骗确认必要性, 检查来自传输缓冲区505及再传输缓冲区610的第一封包。若RTO自特定封包缓冲的时刻起已期满,且封包尚未借助于PSDA而经欺骗确认,则发出PLC确认并经由数据流813将该 PLC确认转发至输出子系统。同时针对RTO表示的丢失,检查来自再传输缓冲区610的封包。若RTO自封包传输时刻起已期满,则怀疑其丢失且对其加标记以用于再传输。接着,该算法再传输先前加标记的封包,从而经由数据流814将先前加标记的封包传递至输出子系统。在再传输完成时将控制传回至处理子系统主循环(控制流802)。图9图示了根据本发明的一些实施例的SWND计算算法1.如果封包已经确认1. 1.如果 NEW_RTT <= MIN_RTT* (1+EIRT)且 | RTT_RGRW/RTT_RVAR | <= EIGT, 则 SWND = SWND+ACK_DS*{[1-(NEW_RTT-MIN_RTT)/(MIN_RTT*EIRT)]*(1-1/EIID)+1/EIID} (SffND呈指数地增大)。1. 2. MIN_RTT* (1+EIRT) < NEff_RTT < = MIN_RTT* (1+LIRT)且 EIGT < | RTT_RGRff/ RTT_RVAR < = LIGT,则 SWND = SffND+(ACK_DS/SWND)*{[(1+LIRT)/(LIRT-EIRT)-(NEff_ RTT-MIN_RTT) / (MIN_RTT* (LIRT-EIRT)) ] * (1/LIID)} (SWND 线性地增大)。1. 3.如果[NEW_RTT > MIN_RTT* (1+CART)或 | RTT_RGRW/RTT_RVAR | > CAGT]且 SWND_GRW > = CAWTJIJ SffND = SWND-SWND_GRW/CADD (SWND 线性地减小)。1. 4.如果 NEW_RTT > MIN_RTT* (1+CART)或 | RTT_RGRW/RTT_RVAR | > CAGT]且 SWND_GRW < CAWT,贝丨J SffND = SWND* (MIN_RTT/NEff_RTT) (SWND 按比例地减小)。2.若检测到丢失2. 1.如果表示RTO期满表示的丢失,则SWND = SWND* (MIN_RTT/RT0) (SWND按比例地减小)。2. 2.如果检测到SACK表示的丢失的第3个重复确认,则SWND = SWND* (MIN_RTT/ L_RTT) (SWND按比例地减小)。图10图示了典型计算系统1000,其该系统1000可用以实施本发明的实施例中的处理功能性。此类型的计算系统可用于(例如)客户端及服务器中。本领域的技术人员也将认识到如何使用其它计算机系统或架构来实施本发明。计算系统1000可表现为(例如)桌上型、膝上型或笔记型计算机、掌上型计算装置(PDA、手机、掌上型计算机等)、大型机、服务器、客户端,或对于给定应用或环境可能所需或适当的任何其它类型的专用或通用计算装置。计算系统1000可包括一个或多个处理器,诸如处理器1004。处理器1004可使用通用或专用处理引擎而实施,诸如微处理器、微控制器或其它控制逻辑。在此实例中,处理器1004连接至总线1002或其它通信媒体。计算系统1000也可包括主存储器1008,诸如随机存取存储器(RAM)或其它动态存储器,以用于储存信息及待由处理器1004执行的指令。主存储器1008也可用于在执行待由处理器1004执行的指令期间储存临时变量或其它中间信息。计算系统1000同样可包括耦接至总线1002以用于储存静态信息及用于处理器1004的指令的只读存储器(“ROM”) 或其它静态储存器件。计算系统1000也可包括信息储存系统1010,该信息储存系统1010可包括(例如) 媒体驱动器1012及可移除式储存接口 1020。媒体驱动器1012可包括驱动器或其它机构以
23支持固定的或可移除的储存媒体,诸如硬盘驱动器、软盘驱动器、磁带驱动器、光盘驱动器、 CD或DVD驱动器(R或RW),或其它可移除的或固定的媒体驱动器。储存媒体1018可包括 (例如)硬盘、软盘、磁带、光盘、⑶或DVD,或可通过媒体驱动器1012读取及写入的其它固定的或可移除的媒体。如这些实例所图示的,储存媒体1018可包括其中储存有特定计算机软件或数据的计算机可读储存媒体。在替代实施例中,信息储存系统1010可包括其它类似组件以用于允许将计算机程序或其它指令或数据加载至计算系统1000中。这样的组件可包括(例如)可移除式储存单元1022及接口 1020,诸如程序盒式储存器(program cartridge)及盒式(cartridge) 接口、可移除式存储器(例如,闪存或其它可移除式存储器模块)及存储器槽,及允许将软件及数据自可移除式储存单元1022转移至计算系统1000的其它可移除式储存单元1022 及接口 1020。计算系统1000也可包括通信接口 10M。通信接口 IOM可用以允许在计算系统 1000与外部装置之间转移软件及数据。通信接口 IOM的实例可包括调制解调器、网络接口(诸如以太网络或其它NIC卡)、通信端口(诸如USB端口)、PCMCIA槽及卡,等等。经由通信接口 IOM传送的软件及数据呈信号的形式,该信号可为能够通过通信接口 IOM接收的电子、电磁、光学或其它信号。经由信道10 将这些信号提供至通信接口 10M。此信道10 可载运信号且可使用无线媒体、导线或电缆、光纤或其它通信媒体而实施。信道的一些实例包括电话线、蜂巢式电话链路、RF链路、网络接口、区域或广域网络,及其它通信信道。在此文献中,术语“计算机程序产品,,、“计算机可读媒体,,等等可大体上用以意指诸如存储器1008、储存器件1018或储存单元1022等媒体。这些及其它形式的计算机可读媒体可涉及储存用于由处理器1004使用的一个或多个指令,以使该处理器执行指定操作。 通常称作“计算机程序代码”(其可以计算机程序或其它分组的形式来进行分组)的这些指令在执行时使计算系统1000执行本发明的实施例的特征或功能。应注意,程序代码可直接使处理器执行指定操作、经编译以使处理器执行指定操作,和/或与其它软件、硬件和/或韧件(例如,用于执行标准功能的链接库)组合以使处理器执行指定操作。在使用软件来实施组件的实施例中,软件可储存于计算机可读媒体中且可使用 (例如)可移除式储存驱动器1014、驱动器1012或通信接口 IOM加载至计算系统1000中。 控制逻辑(在此实例中为软件指令或计算机程序代码)在由处理器1004执行时使处理器 1004执行本文中所描述的本发明的功能。应了解,为达成清楚目的,以上描述已参考不同功能单元及处理器来描述本发明的实施例。然而,显而易见的是,可使用功能性于不同功能单元、处理器或域之间的任何适合分配,而不有损于本发明。例如,图示的由单独处理器或控制器执行的功能性可由同一处理器或控制器执行。因此,对特定功能单元的提及仅应视为对用于提供所述功能性的适合构件的提及,而非表示严格的逻辑或物体结构或组织。上文结合TCP协议论述了本发明的一些示范性实施例。本发明不限于此,且可经调适以用于利用滑动窗口概念的其它协议。尽管本发明已结合一些实施例加以描述,但其并不意欲限于本文中所陈述的特定形式。而是,本发明的范畴仅受权利要求限制。此外,尽管一特征可能结合特定实施例加以描述,但本领域的普通技术人员将认识到,所述实施例的各种特征可根据本发明加以组合。
此外,尽管个别地列出,但多个构件、组件或方法步骤可通过(例如)单一单元或处理器来实施。此外,尽管个别特征可包括在不同权利要求中,但这些特征可能有利地加以组合,且包括在不同权利要求中并不意味着特征的组合不可行和/或不利。同样,将特征包括在权利要求的一个范畴中并不意味着限于此范畴,而是该特征可在适当情况下同样适用于其它权利要求的范畴。也必须注意的是,当用于本说明书及所附的权利要求中时,除非本文另有清楚表示,否则单数形式“一”及“该”包括多个表示物。此外,应了解,在不偏离本发明的精神及范围的情况下,本领域的普通技术人员可进行各种修改及变更。本发明不受上述说明性细节的限制,而是根据权利要求的范围加以界定。尽管上文仅详细描述特定示范性实施例,但本领域的普通技术人员将易了解,许多修改在示范性实施例中是可能的,而不实质上偏离本发明的新颖教导及优势。因此,所有这些修改意欲包括在本发明的范围内。
权利要求
1.一种经由网络通过计算机传输数据而同时避免阻塞的方法,所述传输根据利用滑动窗口的协议来执行,所述方法包含以下步骤计算所传输片段的往返时间(RTT);以及基于所计算的RTT修改发送窗口的大小,其中所述修改不根据传输速率。
2.根据权利要求1所述的方法,其中所述协议为传输控制协议(TCP)。
3.—种经由网络通过计算机传输数据而同时避免阻塞的方法,所述传输根据利用滑动窗口的协议来执行,所述方法包含以下步骤当第一次传输数据时,根据第一模式控制发送窗口的大小;以及当在判定已传输的数据可能已被所述网络遗失而再传输所述已传输的数据时,根据第二模式控制所述发送窗口的大小,其中控制所述发送窗口的大小的第一模式和第二模式不相同。
4.根据权利要求3所述的方法,其中所述协议为传输控制协议(TCP)。
5.一种经由网络通过计算机传输数据而同时避免阻塞的方法,所述传输根据利用滑动窗口的协议来执行,所述方法包含以下步骤计算所传输片段的往返时间(RTT);以及基于所计算的RTT和所计算的RTT的改变速率,修改发送窗口的大小。
6.根据权利要求5所述的方法,其中所述协议为传输控制协议(TCP)。
7.根据权利要求5所述的方法,其中所述发送窗口的大小的修改进一步基于所计算的 RTT在一时间段内的变化。
8.—种经由网络通过计算机传输数据而同时避免阻塞的方法,所述传输根据利用滑动窗口的协议来执行,所述方法包含以下步骤计算所传输片段的往返时间(RTT); 判定所传输的片段是否可能已被所述网络遗失;基于所计算的RTT及对片段是否可能已被遗失的判定,决定在至少四个状态的一种状态中进行操作,这些状态表示在所述网络中逐渐变大的阻塞程度,其中所述至少四个状态中的第一、第二及第三状态与逐渐变大的RTT相关联,且与遗失片段的不存在相关联,以及所述至少四个状态中的第四状态与片段可能已被遗失的判定相关联; 在所述第一状态中进行操作期间,呈指数地增大发送窗口的大小; 在所述第二状态中进行操作期间,线性地增大发送窗口的大小; 在所述第三状态中进行操作期间,线性地减小所述发送窗口的大小;以及在所述第四状态中进行操作期间,根据不同于在所述第三状态期间所使用的公式的公式来减小所述发送窗口的大小。
9.根据权利要求8所述的方法,其中所述协议为传输控制协议(TCP)。
10.根据权利要求8所述的方法,其中在所述第四状态中进行操作期间,再传输先前已传输且判定为已被遗失的片段。
11.根据权利要求10所述的方法,其中已判定为已被遗失的片段的所有再传输在所述第四状态中进行操作期间执行。
12.根据权利要求10所述的方法,其中一旦进入所述第四状态,所述发送窗口大小就减小,并且在从所述第四状态退出之前,所述发送窗口大小不再次减小。
13.根据权利要求8所述的方法,其中在哪种状态中进行操作的判定基于最后计算的 RTT (NEff_RTT)与表示最近计算的最小RTT的预定MIN_RTT值之间的差值。
14.根据权利要求13所述的方法,进一步包括以下步骤计算RTT的当前增长,且其中在哪种状态中进行操作的判定至少部分地基于所述RTT的当前增长。
15.根据权利要求14所述的方法,其中所述RTT的当前增长是基于针对预定数目的确认,连续RTT之间的改变的平滑化运行平均值。
16.根据权利要求14所述的方法,其中所述至少四个状态包括第五状态,所述第五状态表示在未判定片段可能已被遗失时RTT的负当前增长,且所述方法进一步包括以下步骤在所述第五状态中进行操作期间,保持所述发送窗口恒定。
17.根据权利要求8所述的方法,其进一步包括以下步骤在所述第三状态中进行操作期间,判定阻塞是否主要由根据权利要求8的方法的操作或由所述网络上的其它计算机或实体发送的数据引起,且基于所述判定使用两个不同公式以减小所述发送窗口。
18.—种经由网络通过连接至所述网络的计算机传输数据的方法,所述计算机包括且执行TCP堆栈软件,所述TCP堆栈软件配置成经由所述网络从连接至所述网络的其它计算机接收输入数据,且根据所述传输控制协议(TCP)的有效且接受的版本来运行,该方法包括通过以下步骤修改所述TCP堆栈软件的运行,而不显著修改所述TCP堆栈软件利用所述计算机执行TCP修改软件;在所述输入数据到达所述TCP堆栈软件之前,利用所述TCP修改软件存取所述输入数据;在所述输入数据到达所述TCP堆栈软件之前,利用所述TCP修改软件修改所述输入数据,所述输入数据的修改配置成使所述TCP堆栈软件的运行发生改变;以及将经修改的输入数据发送至所述TCP堆栈软件。
19.根据权利要求18所述的方法,其中所述方法在根本不修改所述TCP堆栈软件的情况下执行。
20.根据权利要求18所述的方法,其中所述输入数据的修改在所述输入数据到达所述计算机之后执行。
21.根据权利要求18所述的方法,其中所述输入数据的修改包括将网络片段添加至所述输入数据,所述网络片段由所述TCP堆栈软件处理为已由连接至所述网络的其它计算机接收的片段。
22.根据权利要求18所述的方法,其中所述输入数据的所述修改包括修改在所述输入数据中储存为现有输入网络片段的数据。
23.根据权利要求18所述的方法,其中所述TCP堆栈软件的运行的改变使所述TCP堆栈软件与所述TCP修改软件一起基于比所述TCP协议所允许的发送窗口大小大的有效发送窗口(SWND)大小来通信。
24.根据权利要求23所述的方法,其中所述输入数据的所述修改包括将一个或多个先占式确认放置在所述输入数据中。
25.根据权利要求M所述的方法,其中所述先占式确认放置在由所述TCP修改软件建立及添加的新网络片段内。
26.根据权利要求M所述的方法,其中所述先占式确认放置在所述输入数据的现有网络片段内,从连接至所述网络的远程计算机接收所述现有网络片段,且由所述TCP修改软件存取所述现有网络片段,并且放置所述先占式确认的步骤包括修改所述现有网络片段内的现有确认。
27.根据权利要求23所述的方法,进一步包括以下步骤利用所述TCP堆栈软件将数据传输到连接至所述网络的远程计算机;利用所述TCP修改软件截取所述TCP堆栈软件传输的数据;及利用所述TCP修改软件选择性地缓冲、传输以及再传输所述数据。
28.根据权利要求27所述的方法,其中所述通过所述TCP修改软件选择性地缓冲、传输以及再传输所述数据应使得允许所述TCP修改软件与所述TCP堆栈软件一起根据比所述传输控制协议所允许的发送窗口大小大的发送窗口(SWND)大小来传输数据,否则所述数据传输遵照所述传输控制协议。
29.根据权利要求18所述的方法,其中所述利用所述TCP修改软件修改所述输入数据的步骤包括以对所述TCP堆栈软件隐藏任何封包丢失条件的方式修改所述输入数据。
30.根据权利要求四所述的方法,进一步包括利用所述TCP修改软件检测封包丢失条件;以及利用所述TCP修改软件执行所述封包丢失条件所必需的任何再传输。
31.一种包含计算机可执行指令的计算机可读媒体,所述指令配置成由处理器执行,且配置成使所述处理器经由网络传输数据而同时避免阻塞,所述传输根据利用滑动窗口的协议进行执行,所述指令进一步配置成使所述处理器进行以下步骤计算所传输的片段的往返时间(RTT);以及基于所计算的RTT修改发送窗口的大小,其中所述修改不根据传输速率。
32.根据权利要求31所述的计算机可读媒体,其中所述协议为传输控制协议(TCP)。
33.一种包含计算机可执行指令的计算机可读媒体,所述指令配置成由处理器执行,且配置成使所述处理器经由网络传输数据而同时避免阻塞,所述传输根据利用滑动窗口的协议来执行,所述指令进一步配置成使所述处理器执行以下步骤当第一次传输数据时,根据第一模式控制发送窗口的大小;以及在判定已传输的数据可能已被所述网络遗失上,在再传输所述已传输的数据时,根据第二模式控制发送窗口的所述大小,其中控制所述发送窗口的大小的第一模式和第二模式不相同。
34.根据权利要求33所述的计算机可读媒体,其中所述协议为传输控制协议(TCP)。
35.一种包含计算机可执行指令的计算机可读媒体,所述指令配置成由处理器执行,且配置成使所述处理器经由网络传输数据而同时避免阻塞,所述传输根据利用滑动窗口的协议来执行,所述指令进一步配置成使所述处理器进行以下步骤计算所传输片段的往返时间(RTT);以及基于所计算的RTT以及所计算的RTT的改变速率修改发送窗口的大小。
36.根据权利要求35所述的计算机可读媒体,其中所述协议为传输控制协议(TCP)。
37.根据权利要求35所述的计算机可读媒体,其中所述发送窗口的大小的修改进一步基于所计算的RTT在一时间段内的变化。
38.一种包含计算机可执行指令的计算机可读媒体,所述指令配置成由处理器执行,且配置成使所述处理器经由网络传输数据而同时避免阻塞,所述传输根据利用滑动窗口的协议来执行,所述指令进一步配置成使所述处理器进行以下步骤计算所传输片段的往返时间(RTT); 判定所传输的片段是否可能已被所述网络遗失;基于所计算的RTT及片段是否可能已被遗失的判定,决定在至少四个状态的一种状态中进行操作,这些状态表示所述网络中逐渐变大的阻塞程度,其中所述至少四个状态中的第一、第二及第三状态与逐渐变大的RTT相关联,且与遗失片段的不存在相关联,以及所述至少四个状态中的第四状态与片段可能已被遗失的判定相关联; 在所述第一状态中进行操作期间,呈指数地增大发送窗口的大小; 在所述第二状态中进行操作期间,线性地增大发送窗口的大小。 在所述第三状态中进行操作期间,线性地减小所述发送窗口的大小;及在所述第四状态中进行操作期间,根据不同于在所述第三状态期间所使用的公式的公式来减小所述发送窗口的大小。
39.根据权利要求38所述的计算机可读媒体,其中所述协议为传输控制协议(TCP)。
40.根据权利要求38所述的计算机可读媒体,其中在所述第四状态中进行操作期间, 再传输先前已传输且判定为已被遗失的片段。
41.根据权利要求40所述的计算机可读媒体,其中已判定为已被遗失的片段的所有再传输在所述第四状态中进行操作期间执行。
42.根据权利要求40所述的计算机可读媒体,其中一旦进入所述第四状态,所述发送窗口大小就减小,且在从所述第四状态退出之前,所述发送窗口大小不再次减小。
43.根据权利要求38所述的计算机可读媒体,其中在哪种状态中进行操作的判定基于最后计算的RTT(NEW_RTT)与表示最近计算的最小RTT的预定MIN_RTT值之间的差值。
44.根据权利要求43所述的计算机可读媒体,进一步包括计算RTT的当前增长,且其中在哪种状态中进行操作的判定至少部分地基于所述RTT的当前增长。
45.根据权利要求44所述的计算机可读媒体,其中所述RTT的当前增长是基于针对预定数目的确认,连续RTT之间的改变的平滑化运行平均值。
46.根据权利要求44所述的计算机可读媒体,其中所述至少四个状态包括第五状态, 所述第五状态表示在未判定片段可能已被遗失时的RTT的负当前增长,且所述指令进一步配置成使所述处理器进行以下步骤在所述第五状态中进行操作期间,保持所述发送窗口恒定。
47.根据权利要求38所述的计算机可读媒体,其中所述指令进一步配置成使所述处理器进行以下步骤在所述第三状态中进行操作期间,判定阻塞是否主要由所述处理器所发送的数据或由所述网络上的其它计算机或实体所发送的数据引起,且基于所述判定使用两个不同公式以减小所述发送窗口。
48.一种包含计算机可执行指令的计算机可读媒体,所述计算机可执行指令包含TCP 修改软件,所述计算机可执行指令配置成由处理器执行,所述处理器为连接至网络的计算机的一部分,所述计算机包含且执行TCP堆栈软件,所述TCP堆栈软件配置成使所述计算机经由所述网络从连接至所述网络的其它计算机接收输入数据,且根据所述传输控制协议 (TCP)的有效且接受的版本来运行,所述指令通过使所述处理器执行以下步骤来修改所述 TCP堆栈软件的运行,而不显著修改所述TCP堆栈软件在所述输入数据到达所述TCP堆栈软件之前,存取所述输入数据;在所述输入数据到达所述TCP堆栈软件之前,修改所述输入数据,所述输入数据的修改使所述TCP堆栈软件的运行发生改变;以及将经修改的输入数据发送至所述TCP堆栈软件。
49.根据权利要求48所述的计算机可读媒体,其中所述指令根本不修改所述TCP堆栈软件。
50.根据权利要求48所述的计算机可读媒体,其中所述输入数据的修改在所述输入数据到达所述计算机之后执行。
51.根据权利要求48所述的计算机可读媒体,其中所述输入数据的修改包括将网络片段添加至所述输入数据,所述网络片段由所述TCP堆栈软件处理为已由连接至所述网络的其它计算机接收的片段。
52.根据权利要求48所述的计算机可读媒体,其中所述输入数据的修改包括修改所述输入数据中储存为现有输入网络片段的数据。
53.根据权利要求48所述的计算机可读媒体,其中所述TCP堆栈软件的运行的改变使所述TCP堆栈软件与所述TCP修改软件一起根据比所述TCP协议所允许的发送窗口大小大的有效发送窗口(SWND)大小来通信。
54.根据权利要求53所述的计算机可读媒体,其中所述输入数据的修改包括将一个或多个先占式确认放置在所述输入数据中。
55.根据权利要求M所述的计算机可读媒体,其中所述先占式确认放置在由所述TCP 修改软件建立及添加的新网络片段内。
56.根据权利要求M所述的计算机可读媒体,其中所述先占式确认放置在所述输入数据的现有网络片段内,从连接至所述网络的远程计算机接收所述现有网络片段,且由所述 TCP修改软件存取所述现有网络片段,且放置所述先占式确认的步骤包括修改所述现有网络片段内的现有确认。
57.根据权利要求53所述的计算机可读媒体,其中所述TCP堆栈软件进一步配置成将数据传输到连接至所述网络的远程计算机,且所述指令进一步使所述处理器进行以下步骤截取所述TCP堆栈软件传输的数据;以及选择性地缓冲、传输以及再传输所述数据。
58.根据权利要求57所述的计算机可读媒体,其中所述通过所述TCP修改软件选择性地缓冲、传输以及再传输所述数据应使得允许所述TCP修改软件与所述TCP堆栈软件一起根据比所述传输控制协议所允许的发送窗口大小大的发送窗口(SWND)大小来传输数据, 否则所述数据传输遵照所述传输控制协议。
59.根据权利要求48所述的计算机可读媒体,其中所述修改输入数据的步骤包括以对所述TCP堆栈软件隐藏任何封包丢失条件的方式修改所述输入数据。
60.根据权利要求59所述的计算机可读媒体,其中所述指令配置成进一步使所述处理器执行以下步骤利用所述TCP修改软件检测封包丢失条件;以及利用所述TCP修改软件执行所述封包丢失条件所必需的任何再传输。
61.一种连接至网络的计算系统,所述计算系统包括处理器及存储器,所述存储器包括多个指令,所述指令配置成使所述处理器经由网络传输数据而同时避免阻塞,所述传输根据利用滑动窗口的协议来执行,所述指令进一步使所述处理器执行以下步骤计算所传输片段的往返时间(RTT);以及基于所计算的RTT修改发送窗口的大小,其中所述修改不根据传输速率。
62.根据权利要求61所述的计算系统,其中所述协议为传输控制协议(TCP)。
63.一种连接至网络的计算系统,所述计算系统包括处理器及存储器,所述存储器包括多个指令,所述指令配置成使所述处理器经由网络传输数据而同时避免阻塞,所述传输根据利用滑动窗口的协议来执行,所述指令进一步使所述处理器执行以下步骤当第一次传输数据时,根据第一模式控制发送窗口的大小;以及在判定已传输的数据可能已被所述网络遗失而再传输所述已传输的数据时,根据第二模式控制发送窗口的大小,其中控制所述发送窗口的大小的第一模式和第二模式不相同。
64.根据权利要求63所述的计算系统,其中所述协议为传输控制协议(TCP)。
65.一种连接至网络的计算系统,所述计算系统包括处理器及存储器,所述存储器包括多个指令,所述指令配置成使所述处理器经由网络传输数据而同时避免阻塞,所述传输根据利用滑动窗口的协议来执行,所述指令进一步使所述处理器执行以下步骤计算所传输片段的往返时间(RTT);以及基于所计算的RTT及所计算的RTT的改变速率修改发送窗口的大小。
66.根据权利要求65所述的计算系统,其中所述协议为传输控制协议(TCP)。
67.根据权利要求65所述的计算系统,其中所述发送窗口的大小的修改进一步基于所计算的RTT在一时间段内的变化。
68.一种连接至网络的计算系统,所述计算系统包括处理器及存储器,所述存储器包括多个指令,所述指令配置成使所述处理器经由网络传输数据而同时避免阻塞,所述传输根据利用滑动窗口的协议来执行,所述指令进一步使所述处理器执行以下步骤计算所传输片段的往返时间(RTT); 判定所传输的片段是否可能已被所述网络遗失;基于所计算的RTT及片段是否可能已被遗失的判定,决定在至少四个状态的一种状态中进行操作,这些状态表示所述网络中逐渐变大的阻塞程度,其中所述至少四个状态中的第一、第二及第三状态与逐渐变大的RTT相关联,且与遗失片段的不存在相关联,以及所述至少四个状态中的第四状态与片段可能已被遗失的所述判定相关联; 在所述第一状态中进行操作期间,呈指数地增大发送窗口的大小;在所述第二状态中进行操作期间,线性地增大发送窗口的大小;在所述第三状态中进行操作期间,线性地减小所述发送窗口的大小;以及在所述第四状态中进行操作期间,根据不同于在所述第三状态期间所使用的公式的公式来减小所述发送窗口的大小。
69.根据权利要求68所述的计算系统,其中所述协议为传输控制协议(TCP)。
70.根据权利要求68所述的计算系统,其中在所述第四状态中进行操作期间,再传输先前已传输且判定为已被遗失的片段。
71.根据权利要求70所述的计算系统,其中已判定为已被遗失的片段的所有再传输在所述第四状态中进行操作期间执行。
72.根据权利要求70所述的计算系统,其中一旦进入所述第四状态,所述发送窗口大小就减小,且在从所述第四状态退出之前,所述发送窗口大小不再次减小。
73.根据权利要求68所述的计算系统,其中在哪种状态中进行操作的判定基于最后计算的RTT(NEW_RTT)与表示最近计算的最小RTT的预定MIN_RTT值之间的差值。
74.根据权利要求73所述的计算系统,其中所述指令进一步使所述处理器执行计算 RTT的当前增长的步骤,且其中在哪种状态中进行操作的判定至少部分地基于所述RTT的当前增长。
75.根据权利要求74所述的计算系统,其中所述RTT的当前增长是基于针对预定数目的确认,连续RTT之间的改变的平滑化运行平均值。
76.根据权利要求74所述的计算系统,其中所述至少四个状态包括第五状态,所述第五状态表示在未判定片段可能已被遗失时RTT的负当前增长,且所述指令进一步配置成使所述处理器执行以下步骤在所述第五状态中进行操作期间,保持所述发送窗口恒定。
77.根据权利要求78所述的计算系统,其中所述指令进一步配置成使所述处理器执行以下步骤在所述第三状态中进行操作期间,判定阻塞是否主要由所述处理器的所述操作,或由所述网络上的其它计算机或实体所发送的数据引起,且基于所述判定使用两个不同公式以减小所述发送窗口。
78.一种连接至网络的计算系统,所述计算系统包括处理器及存储器,所述存储器包括多个指令,所述多个指令包含TCP堆栈软件及TCP修改软件,所述TCP堆栈软件配置成经由所述网络从连接至所述网络的其它计算机接收输入数据,且根据所述传输控制协议 (TCP)的有效且接受的版本来运行,所述TCP修改软件配置成通过使所述处理器执行以下步骤,使所述处理器修改所述TCP堆栈软件的所述运行,而不显著修改所述TCP堆栈软件在所述输入数据到达所述TCP堆栈软件之前,存取所述输入数据;在所述输入数据到达所述TCP堆栈软件之前,修改所述输入数据,所述输入数据的所述修改配置成引起所述TCP堆栈软件的所述运行的改变;以及将所述经修改的输入数据发送至所述TCP堆栈软件。
79.根据权利要求78所述的计算系统,其中所述处理器由于执行所述TCP修改软件而根本不修改所述TCP堆栈软件。
80.根据权利要求78所述的计算系统,其中所述输入数据的所述修改在所述输入数据到达所述计算机之后执行。
81.根据权利要求78所述的计算系统,其中所述输入数据的所述修改包括将网络片段添加至所述输入数据,所述网络片段由所述TCP堆栈软件处理为已由连接至所述网络的其它计算机接收的片段。
82.根据权利要求78所述的计算系统,其中所述输入数据的所述修改包括修改所述输入数据中储存为现有输入网络片段的所述数据。
83.根据权利要求78所述的计算系统,其中所述TCP堆栈软件的运行的改变使所述 TCP堆栈软件与所述TCP修改软件一起根据比TCP协议所允许的发送窗口大小大的有效发送窗口大小(SWND)来通信。
84.根据权利要求83所述的计算系统,其中所述输入数据的所述修改包括将一个或多个先占式确认放置在所述输入数据中。
85.根据权利要求84所述的计算系统,其中所述先占式确认放置在由所述TCP修改软件建立及添加的新网络片段内。
86.根据权利要求84所述的计算系统,其中所述先占式确认放置在所述输入数据的现有网络片段内,从连接至所述网络的远程计算机接收所述现有网络片段,且由所述TCP修改软件存取所述现有网络片段,且放置所述先占式确认之步骤包括修改所述现有网络片段内的现有确认。
87.根据权利要求83所述的计算系统,其中所述TCP堆栈软件进一步将数据传输到连接至所述网络的远程计算机,且所述TCP修改软件进一步使所述处理器执行以下步骤截取所述TCP堆栈软件传输的所述数据;以及选择性地缓冲、传输以及再传输所述数据。
88.根据权利要求87所述的计算系统,其中在执行所述TCP修改软件时,通过所述处理器选择性地缓冲、传输以及再传输所述数据使得允许所述TCP修改软件与所述TCP堆栈软件一起根据比所述传输控制协议所允许的发送窗口大小大的发送窗(SWND)大小来传输数据,否则所述数据传输遵照所述传输控制协议。
89.根据权利要求78所述的计算系统,其中在执行所述TCP修改软件时通过所述处理器修改所述输入数据的步骤包括以对所述TCP堆栈软件隐藏任何封包丢失条件的方式修改所述输入数据。
90.根据权利要求89所述的计算系统,其中所述TCP修改软件进一步配置成使所述处理器执行以下步骤利用所述TCP修改软件检测封包丢失条件;以及执行所述封包丢失条件所必需的任何再传输。
全文摘要
本发明公开了一种通过TCP传输来最大化当前可用网络路径带宽的利用率的方法。本发明的实施例允许自动地检测及利用所述当前可用带宽的较大部分(或甚至整个带宽)以用于利用本发明的每一特定连接及网络路径。此外,本发明的一些实施例提供应用所述技术的软件可仅在数据发送器侧执行,且可与标准接收器通信。根据本发明的实施例,实施本发明的所述软件可放置在TCP/IP协议驱动器与网络接口驱动器之间。此中间软件可自TCP/IP驱动器隐藏真实网络状态,且利用先占式欺骗数据确认及封包丢失隐藏而使TCP连接SWND边缘移位。
文档编号H04L12/56GK102484609SQ200980158117
公开日2012年5月30日 申请日期2009年10月21日 优先权日2009年1月16日
发明者瓦迪姆·斯米尔诺夫 申请人:主线网络控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1