CN103518358B - 为单个流ICA提供QoS的系统和方法 - Google Patents
为单个流ICA提供QoS的系统和方法 Download PDFInfo
- Publication number
- CN103518358B CN103518358B CN201280022722.6A CN201280022722A CN103518358B CN 103518358 B CN103518358 B CN 103518358B CN 201280022722 A CN201280022722 A CN 201280022722A CN 103518358 B CN103518358 B CN 103518358B
- Authority
- CN
- China
- Prior art keywords
- priority
- packet
- network
- equipment
- transport layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 120
- 230000005540 biological transmission Effects 0.000 claims description 158
- 230000004044 response Effects 0.000 claims description 40
- 239000000872 buffer Substances 0.000 claims description 32
- 238000009826 distribution Methods 0.000 claims description 24
- 238000001914 filtration Methods 0.000 claims description 24
- 230000006835 compression Effects 0.000 description 67
- 238000007906 compression Methods 0.000 description 67
- 238000005457 optimization Methods 0.000 description 64
- 238000004891 communication Methods 0.000 description 58
- 230000008859 change Effects 0.000 description 57
- 238000005516 engineering process Methods 0.000 description 46
- 238000012790 confirmation Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 36
- 230000008569 process Effects 0.000 description 33
- 238000003860 storage Methods 0.000 description 27
- 238000012546 transfer Methods 0.000 description 22
- 230000001133 acceleration Effects 0.000 description 21
- 230000007246 mechanism Effects 0.000 description 20
- 230000015654 memory Effects 0.000 description 19
- 230000003139 buffering effect Effects 0.000 description 16
- 230000006399 behavior Effects 0.000 description 14
- 238000002372 labelling Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 8
- 239000000243 solution Substances 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 5
- 230000001276 controlling effect Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 241000208340 Araliaceae Species 0.000 description 2
- 241000277275 Oncorhynchus mykiss Species 0.000 description 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 235000014510 cooky Nutrition 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 235000008434 ginseng Nutrition 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000501754 Astronotus ocellatus Species 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241000721662 Juniperus Species 0.000 description 1
- 240000000233 Melia azedarach Species 0.000 description 1
- 206010062575 Muscle contracture Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 208000006111 contracture Diseases 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 1
- RGNPBRKPHBKNKX-UHFFFAOYSA-N hexaflumuron Chemical compound C1=C(Cl)C(OC(F)(F)C(F)F)=C(Cl)C=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F RGNPBRKPHBKNKX-UHFFFAOYSA-N 0.000 description 1
- LELAOEBVZLPXAZ-UHFFFAOYSA-N iberin Chemical compound CS(=O)CCCN=C=S LELAOEBVZLPXAZ-UHFFFAOYSA-N 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000009021 linear effect Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000009022 nonlinear effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 231100000572 poisoning Toxicity 0.000 description 1
- 230000000607 poisoning effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/41—Flow control; Congestion control by acting on aggregated flows or links
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明针对用于经由单个传输层连接为协议数据单元流提供服务质量(QoS)的系统。该系统包括在发送者和接收者中间的装置。该装置经由单个传输层连接接收承载多个协议数据单元的多个分组。多个协议数据单元的每个协议数据单元标识优先级。多个协议数据单元中的一个或多个具有与所述多个协议数据单元的其他协议数据单元的优先级不同的优先级。该装置可包括用于为多个协议数据单元的协议数据单元预定窗口确定平均优先级的过滤器,以及用于分配该平均优先级作为单个传输层连接的连接优先级的引擎。在向单个传输层连接的连接优先级分配协议数据单元预定窗口的平均优先级的同时,该装置经由单个传输层连接传输承载协议数据单元预定窗口内的那些协议数据单元的多个分组。
Description
相关申请
本申请要求在2011年3月11日提交的、标题为“Systems and Methodsof QoS for Single Stream ICA”的美国临时专利申请NO.61/451874的权益和优先权,出于各种目的,将该美国临时专利申请通过引用全部包含于此。
技术领域
本申请总的涉及数据通信网络。本申请尤其涉及用于将服务质量应用于经由单个传输层连接承载的多优先级数据流的系统和方法。
背景技术
远程显示客户机和服务器之间的单个传输层连接可用于所有通信。ICA客户机是一种远程显示客户机。在ICA协议中,可使用分配了优先级的“虚拟流或虚通道”来表达通信延迟要求。高优先级的虚通道可能有望具有较低的通信延迟。例如,对于GUI交互可能期望保持低延迟,以提高人类感知的响应能力。要实现这个目标,可在高优先级虚通道中发送GUI交互事件,而可在低优先级通道中发送批量数据传输(例如文件复制)。
发明内容
本解决方案致力于根据传输层连接中所传输的各个分组的不同优先级,向该传输层连接提供服务质量(QoS)。ICA协议使得QoS装置能够从网络分组中提取优先级信息或标签,以便根据流的优先级来发送分组。通常,单个网络分组仅包含ICA的一个虚通道的有效载荷。由于多个虚拟流在时间和空间上被复用到单个传输层连接,对于承载ICA的单个连接来说,可能期望基于虚通道优先级进行无序分组传送。此外,传输控制协议(TCP)的传输层连接不支持无序传送。为使执行服务质量更有挑战性,尝试在单个TCP流内对分组进行重新排序可能增加延迟并且浪费带宽,这是TCP实现的重传算法造成的。在对分组进行重新排序的情况下,典型的TCP重传算法采取小的、通常为常数的重新排序窗口,并且调用“快速”重传。使用这种ICA,可在每个连接的基础上执行QoS,例如通过以其他连接为代价为某些连接给予带宽优先。
实现用于这些协议类型的每连接QoS的一个方法是将所有缓冲的分组或协议数据单元(PDU)的最大优先级分配为连接优先级。例如,在对本地驱动进行典型文件复制或者打印的情况下,由于用户接口反馈(例如进度报告和动画)引起的用户接口更新,相应的连接将具有混合的批量的较低优先级流量和较高优先级流量。由于在同一个连接上多路复用多个通道,分配最大优先级可能不是最佳方法。频繁的用户接口更新实际上会导致所有缓冲的分组的“刷新”。该刷新可能不会对批量传输连接产生任何感知上的改进:进度条和动画更新仍会排在批量流量后。在另一方面,刷新对具有交互式流量的竞争连接的作用可能不太令人满意且不明显。采用这种方法,性能可能是缓冲的PDU数量的倒数。缓冲的(例如等待被发送的)PDU越多,该方法的有效性越低。对于由中间装置(例如WAN优化应用)维护的分开的连接,缓冲问题可能更为重要。预计这样的应用中的缓冲量比严格QoS应用中要高。
另一种方法是使用单个连接内分组的平均优先级,例如等待被发送的缓冲的分组或者传输中的分组的平均优先级。换句话说,该解决方案可以平均批量“居多”的连接为代价,给予平均交互“居多”的连接更多带宽。在一些方面,平均或“居多”方法是有用的。该解决方案可能并不试图改善批量打印或文件复制连接的延迟(由于采用TCP有序传送难以实现),而是为交互式连接保持可以接受的延迟。平均窗口还可以等于、大于或小于缓冲的PDU的数量。此外,考虑到连接的链接利用率,链接利用率可以是使“平均”非线性或自适应的因子。
在一些方面,本解决方案的实施例可使用多个不同的技术来实现平均方法或策略。在一些实施例中,例如可经由“矩形窗(boxcar)”FIR(有限脉冲响应)类型的过滤器实现直线平均。可使用具有大窗口的IIR(无限脉冲响应)过滤器来节省空间。在一些实施例中,该系统并不存储PDU,而是仅存储它们的优先级。例如,对于采用8个不同优先级的实施例,每PDU可使用3位状态。此外,可使用任何类型的FIR和/或IIR过滤器。例如,在一些实施例中,可使用滞后、对称或不对称过滤。在一些实施例中,可使用“快速提高”效应,然而在一些实施例中,可使用“长下降(longfall)”效应。例如,当遇到低优先级的PDU时,系统可快速地降低连接优先级,并且接着基于时间和具有特定优先级的PDU的数量来缓慢地提高连接优先级。
在一些实施例中,可以用字节来替代PDU。取代对PDU采样/计数,系统可以对能被计数的每个虚通道中的字节进行采样和/或计数。对字节而不是对PDU进行计数会使得该算法与PDU大小的差别无关。在进一步的实施例中,可将连接优先级转换为标准TOC/差分服务QoS位/分组,其标记为采用其他外部QoS装置或者与其一起工作。
在使用标准QoS装置时,当在同一TCP会话内分配不同优先级标签时可考虑单个连接内的重新排序的影响。通常,标准QoS装置并不维护每个TCP连接的状态。反而,这些标准QoS装置可假设单个连接内的所有分组将具有相同的优先级。为了满足该设定,一种方法就是显示或隐式地对连接优先级的变化进行“速率限制”。例如,选择大的过滤器窗口将隐式地限制速率。另一种方法是在没有传输中的分组时将优先级从低改变为高。
在一些方面,本解决方案针对用于经由单个传输层连接为协议数据单元流提供服务质量(QoS)的方法。该方法包括由装置经由单个传输层连接接收承载多个协议数据单元的多个分组。多个协议数据单元中的每个协议数据单元标识优先级。多个协议数据单元中的至少一个或多个包括与多个协议数单元中的其他协议数据单元的优先级不同的优先级。该方法可包括由该装置为多个协议数据单元的协议数据单元预定窗口确定平均优先级并且分配该平均优先级作为该单个传输层连接的连接优先级。该方法还包括在为单个传输层连接的连接优先级分配协议数据单元预定窗口的平均优先级的同时,由该装置经由单个传输层连接传输承载协议数据单元预定窗口内的那些协议数据单元的多个分组。
在一些实施例中,该方法包括由该装置经由单个传输层连接接收承载远程显示协议的多个协议数据单元的多个分组。每个协议数据单元可以与远程显示协议的虚通道相对应,并且该虚通道可具有优先级或者经由远程显示协议被分配优先级。在一些实施例中,该方法包括由该装置缓冲多个分组,直到多个分组的连接优先级被分配给该传输层连接。
在一些实施例中,该方法包括由该装置的过滤器基于有限脉冲响应(FIR)过滤来确定平均优先级。在一个实施例中,该方法包括由该装置的过滤器基于无限脉冲响应(IIR)过滤来确定平均优先级。在一些实施例中,该方法包括由装置将预定窗口标识为包括预定数量的协议数据单元。在一些实施例中,该方法包括由装置在多个分组中设置差分服务代码点(DSCP)字段,以与分配给单个传输层连接的连接优先级相对应。
在一些实施例中,该方法包括由装置传输具有经由互联网协议(IP层)或传输层中的一个标识的连接优先级的多个数据分组的第一分组,且第一分组承载具有经由传输层之上的协议标识的优先级的第一协议数据单元。在一些实施例中,该方法包括由装置确定第二多个协议数据单元的第二协议数据单元预定窗口的第二平均优先级,并且由装置分配该第二平均优先级作为单个传输层连接的连接优先级。该方法还可以包括在为单个传输层连接的连接优先级分配第二协议数据单元预定窗口的第二平均优先级的同时,由装置经由单个传输层连接传输承载第二协议数据单元预定窗口内的那些协议数据单元的第二多个分组。
在一些方面,本解决方案针对用于经由单个传输层连接为协议数据单元流提供服务质量(QoS)的系统。该系统包括在发送者和接收者中间的装置。该装置经由单个传输层连接接收承载多个协议数据单元的多个分组。多个协议数据单元中的每个协议数据单元标识优先级。多个协议数据单元中的至少一个或多个具有与多个协议数据单元中的其他协议数据单元的优先级不同的优先级。该装置可包括过滤器和引擎,所述过滤器用于为多个协议数据单元的协议数据单元预定窗口确定平均优先级,以及所述引擎用于分配该平均优先级作为单个传输层连接的连接优先级。在为单个传输层连接的连接优先级分配协议数据单元预定窗口的平均优先级的同时,该装置经由单个传输层连接传输承载协议数据单元预定窗口内的那些协议数据单元的多个分组。
在一些实施例中,该装置经由单个传输层连接接收承载远程显示协议的多个协议数据单元的多个分组,每个协议数据单元与虚通道相对应,该虚通道配有优先级。在一些实施例中,该引擎缓冲多个分组,直到多个分组的连接优先级被分配给该传输层连接。
在一些实施例中,过滤器基于有限脉冲响应(FIR)过滤来确定平均优先级。在一些实施例中,过滤器基于无限脉冲响应(IIR)过滤来确定平均优先级。在一些实施例中,该引擎将预定窗口标识为包括预定数量的协议数据单元。在一些实施例中,该引擎在多个分组中设置差分服务代码点(DSCP)字段,以与分配给单个传输层连接的连接优先级相对应。
在一些实施例中,该装置传输具有经由互联网协议(IP层)或传输层中的一个标识的连接优先级的多个数据分组的第一分组,且该第一分组承载具有经由传输层之上的协议标识的优先级的第一协议数据单元。在一些实施例中,过滤器为第二多个协议数据单元的第二协议数据单元预定窗口确定第二平均优先级,并且该引擎分配该第二平均优先级作为单个传输层连接的连接优先级。在为单个传输层连接的连接优先级分配第二协议数据单元预定窗口的第二平均优先级的同时,该装置经由单个传输层连接传输承载第二协议数据单元预定窗口内的那些协议数据单元的第二多个分组。
在附图和下文的描述中详细阐述本发明的各种实施例的细节。
附图说明
通过参考下面结合附图的描述,本发明的前述和其它目的、方面、特征和优点,将会更加明显并更易于理解,其中:
图1A是客户机通过一个或多个网络优化设备访问服务器的网络环境的实施例的框图;
图1B是客户机通过一个或多个网络优化设备连同其他网络设备访问服务器的网络环境的又一个实施例的框图;
图1C是客户机通过单独部署的或者与其他网络设备一起部署的单个网络优化设备访问服务器的网络环境的又一个实施例的框图;
图1D和1E是计算装置的实施例的框图;
图2A是用于处理客户机与服务器之间的通信的设备的实施例的框图;
图2B是部署设备的网络优化特征的客户机和/或服务器的又一个实施例的框图;
图3是使用网络优化特征与服务器通信的客户机的实施例的框图;
图4A是用于向单个连接内不同优先级分组的数据流提供服务质量(QoS)的系统的实施例的框图;以及
图4B是用于向单个连接内不同优先级分组的数据流提供服务质量(QoS)的方法的实施例的流程图。
从下面结合附图所阐述的详细描述,本发明的特征和优点将更明显,其中,同样的参考标记在全文中标识相应的元素。在附图中,同样的附图标记通常指示相同的、功能上相似的和/或结构上相似的元素。
具体实施方式
为了阅读下述对本发明的各种实施例的描述,下面对于说明书的部分以及它们各自内容的描述是有用的:
-A部分描述有益于实施本发明的实施例的网络环境和计算环境;
-B部分描述用于向远程用户加速传送计算环境的系统和设备架构的实施例;
-C部分描述用于加速客户机和服务器之间的通信的客户机代理的实施例;
-D部分描述用于对具有多优先级数据流的单个连接提供服务质量的系统和方法的实施例。
A.网络和计算环境
在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可在其中部署这样的实施例的网络和计算环境是有帮助的。现在参见图1A,描述了网络环境的实施例。概括来讲,网络环境包括经由一个或多个网络104、104’、104”与一个或多个服务器106a-106n(同样总的称为服务器106,或远程机器106)通信的一个或多个客户机102a-102n(同样总的称为本地机器102,或客户机102)。在一些实施例中,客户机102经由一个或多个网络优化设备200、200’(总的称为设备200)与服务器106通信。在一个实施例中,网络优化设备200被设计为、配置为或适合于优化广域网(WAN)网络流量。在一些实施例中,第一设备200与第二设备200’结合或协同工作来优化网络流量。例如,第一设备200可位于分支机构和WAN连接之间而第二设备200’位于WAN和公司局域网(LAN)之间。设备200、200’可一起工作以优化在分支机构中的客户机和公司LAN上的服务器之间的WAN相关的网络流量。
虽然图1A示出了在客户机102和服务器106之间的网络104、网络104’和网络104”(总的称为网络104),但客户机102和服务器106可以位于同一个的网络104上。网络104、104’、104”可以是相同类型的网络或不同类型的网络。网络104可为局域网(LAN)(例如公司内网),城域网(MAN),或者广域网(WAN)(例如互联网或万维网)。网络104、104’、104”可为专用网络或公网。在一个实施例中,网络104’和网络104”可为专用网而网络104可为公网。在一些实施例中,网络104可为专用网而网络104’和/或网络104”可为公网。在又一个实施例中,网络104、104’、104”可都为专用网。在一些实施例中,客户机102可位于公司企业的分支机构中,经由网络104上的WAN连接与位于公司数据中心中的公司LAN上的服务器106进行通信。
网络104可以是任何类型和/或形式的网络,并且可包括任何下列任何一种网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括诸如红外信道或者卫星频带的无线链路。网络104的拓扑可为总线型、星型或环型网络拓扑。网络104以及网络拓扑可以是本领域普通技术人员所知的能够支持此处描述的操作的任何这样的网络或网络拓扑。
如图1A所示,第一网络优化设备200被显示在网络104和104’之间,并且第二网络优化设备200’也在网络104’和104”之间。在一些实施例中,设备200可位于网络104上。例如,公司企业可在分支机构中部署设备200。在其它实施例中,设备200可以位于网络104’上。在一些实施例中,设备200可以位于网络104’或网络104”上。例如,设备200可位于公司的数据中心。在一个实施例中,设备200和200’在同一网络上,在又一个实施例中,设备200和200’在不同的网络上。
在一个实施例中,设备200是用于加速、优化或者以其他方式改善任何类型和形式的网络流量的性能、操作或服务质量的装置。在一些实施例中,设备200是一个性能增强代理。在其它实施例中,设备200是任何类型和形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备200是由位于佛罗里达州Ft.Lauderdale的Citrix Systems公司出品的被称为WANScaler的产品实施例中的任何一种。在其它实施例中,设备200包括由位于华盛顿州Seattle的F5Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任何一种。在又一个实施例中,设备200包括由位于加利福尼亚州Sunnyvale的Juniper NetWorks公司出品的WX和WXC WAN加速装置平台中的任何一种。在一些实施例中,设备200包括由加利福尼亚州San Francisco的Riverbed Technology公司出品的虹鳟(steelhead)系列WAN优化设备中的任何一种。在其它实施例中,设备200包括由位于新泽西州Roseland的Expand Networks公司出品的WAN相关装置中的任何一种。在一个实施例中,设备200包括由位于加利福尼亚州Cupertino的Packeteer公司出品的任何一种WAN相关设备,例如由Packeteer提供的PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备200包括由位于加利福尼亚州San Jose的Cisco Systems公司出品的任何WAN相关设备和/或软件,例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。
在一些实施例中,设备200为分支机构或远程办公室提供应用和数据加速服务。在一个实施例中,设备200包括广域文件服务(WAFS)的优化。在又一个实施例中,设备200加速文件的传送,例如经由通用互联网文件系统(CIFS)协议。在其它实施例中,设备200在存储器和/或存储装置中提供高速缓存来加速应用和数据的传送。在一个实施例中,设备200在任何级别的网络堆栈或在任何的协议或网络层中提供网络流量的压缩。在又一个实施例中,设备200提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的传送。例如,在一个实施例中,设备200提供传输控制协议(TCP)优化。在其它实施例中,设备200提供对于任何会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。在下文的B部分中讨论设备200的架构、操作和优化技术的进一步的细节。
仍参考图1A,网络环境可包括多个逻辑分组的服务器106。在这些实施例中,服务器的逻辑分组可以被称为服务器群38。在这些实施例的一些中,服务器106可为地理上分散的。在一些情况中,群38可以作为单个实体被管理。在其它实施例中,服务器群38包括多个服务器群38。在一个实施例中,服务器群代表一个或多个客户机102执行一个或多个应用程序。
在每个群38中的服务器106可为不同种类。一个或多个服务器106可根据一种类型的操作系统平台(例如,由华盛顿州Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其它服务器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个群38的服务器106不需要与同一群38内的另一个服务器106物理上接近。因此,被逻辑分组为群38的服务器106组可使用广域网(WAN)连接或城域网(MAN)连接互联。例如,群38可包括物理上位于不同大陆或大陆的不同区域、国家、州、城市、校园或房间的服务器106。如果使用局域网(LAN)连接或一些直连形式来连接服务器106,则可增加群38中的服务器106间的数据传送速度。
服务器106可指文件服务器、应用服务器、web服务器、代理服务器或者网关服务器。在一些实施例中,服务器106可以有作为应用服务器或者作为主应用服务器工作的能力。在一个实施例中,服务器106可包括活动目录。客户端102也可称为客户端节点或端点。在一些实施例中,客户机102可以有作为客户机节点寻求访问服务器上的应用的能力,也可以有作为应用服务器为其它客户机102a-102n提供对寄载的应用的访问的能力。
在一些实施例中,客户端102与服务器106通信。在一个实施例中,客户端102可与群38中的服务器106的其中一个直接通信。在又一个实施例中,客户端102执行程序邻近应用(program neighborhood application)以与群38内的服务器106通信。在又一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户端102通过网络104与群38中的服务器106通信。通过网络104,客户机102例如可以请求执行由群38中的服务器106a-106n寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供识别和提供与寄载所请求的应用的服务器106’相关的地址信息所需的功能。
在一个实施例中,服务器106提供web服务器的功能。在又一个实施例中,服务器106a接收来自客户机102的请求,将请求转发到第二服务器106b,并使用来自服务器106b对该请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得客户机102可用的应用的列举以及与由该应用的列举所识别的应用的服务器106相关的地址信息。在又一个实施例中,服务器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户端102直接与服务器106通信以访问所识别的应用。在又一个实施例中,客户机102接收由执行服务器106上所识别的应用而产生的诸如显示数据的应用输出数据。
与其他设备一起部署
现在参考图1B,描述了网络环境的又一个实施例,在其中,网络优化设备200和诸如网关、防火墙或加速设备的一个或多个其他设备205、205’(总的称为设备205或第二设备205)部署在一起。例如,在一个实施例中,设备205是防火墙或安全设备,而设备205’是LAN加速设备。在一些实施例中,客户机102可通过一个或多个第一设备200和一个或多个第二设备205与服务器106通信。
一个或多个设备200和205可以位于在客户机102和服务器106之间的网络或网络通信路径中的任一点处。在一些实施例中,第二设备205可与第一设备200位于同一网络104上。在其他实施例中,第二设备205可位于与第一设备200不同的网络104上。在又一个实施例中,第一设备200和第二设备205在同一网络上,例如网络104,而第一设备200’和第二设备205’在同一网络上,例如网络104’。
在一个实施例中,第二设备205包括任何类型和形式的传输控制协议或传输后终止装置,例如网关或防火墙装置。在一个实施例中,设备205通过与客户机建立第一传输控制协议连接并且与第二设备或服务器建立第二传输控制协议连接来终止传输控制协议。在又一个实施例中,设备205通过改变、管理或控制在客户机和服务器或第二设备之间的传输控制协议连接的行为来终止传输控制协议。例如,设备205可以改变、排队、转发或传输网络分组以有效地终止传输控制协议连接或者起到终止该连接的作用或模拟为终止该连接。
在一些实施例中,第二设备205是性能增强代理。在一个实施例中,设备205提供虚拟专用网(VPN)连接。在一些实施例中,设备205提供安全套接字层VPN(SSL VPN)连接。在其他实施例中,设备205提供基于Ipsec(互联网协议安全)的VPN连接。在一些实施例中,设备205提供任何一个或多个下列功能:压缩、加速、负载平衡、交换/路由、缓存和传输控制协议(TCP)加速。
在一个实施例中,设备205是由位于佛罗里达州Ft.Lauderdale的CitrixSystems公司出品的被称为访问网关、应用防火墙、应用网关或NetScaler的产品实施例中的任何一种。这样,在一些实施例中,设备200包括执行诸如SSL VPN连通、SSL卸载、交换/负载平衡、域名服务解析、LAN加速和应用防火墙的服务或功能的任何逻辑、功能、规则或操作。
在一些实施例中,设备205提供在客户机102和服务器106之间的SSLVPN连接。例如,第一网络104上的客户端102请求建立到第二网络104’上的服务器106的连接。在一些实施例中,第二网络104”是不能从第一网络104路由的。在其它实施例中,客户端102位于公用网络104上,而服务器106位于专用网络104’上,例如公司网。在一个实施例中,客户机代理拦截第一网络104上的客户机102的通信,加密该通信,并且经第一传输层连接发送该通信到设备205。设备205将第一网络104上的第一传输层连接与到第二网络104上的服务器106的第二传输层连接相关联。设备205接收来自客户端代理的被拦截的通信,解密该通信,并且经第二传输层连接发送该通信到第二网络104上的服务器106。第二传输层连接可以是池化的传输层连接。在一个实施例中,设备205为在两个网络104和104’之间的客户机102提供端到端安全传输层连接。
在一个实施例中,设备205寄载虚拟专用网络104上的客户机102的内部网互联网协议或者IntranetIP地址。客户机102具有本地网络标识符,诸如第一网络104上的互联网协议(IP)地址和/或主机名称。当经由设备205连接到第二网络104’时,设备205在第二网络104’上为客户机102建立、分配或者以其它方式提供IntranetIP(内部网IP),其是诸如IP地址和/或主机名称的网络标识符。使用客户机的所建立的IntranetIP,设备205在第二或专用网104’上监听并接收指向该客户机102的任何通信。在一个实施例中,设备205在第二专用网络104上用作或者代表客户机102。
在一些实施例中,设备205具有加密引擎,所述加密引擎提供用于操控诸如SSL或TLS的任何安全相关协议或其中涉及的任何功能的处理的逻辑、商业规则、功能或操作。例如,加密引擎加密并解密通过设备205传输的网络分组,或其任何部分。加密引擎也可代表客户机102a-102n、服务器106a-106n或设备200、205来设置或建立SSL或TLS连接。因此,加密引擎提供SSL处理的卸载和加速。在一个实施例中,加密引擎使用隧道协议来提供在客户机102a-102n和服务器106a-106n间的虚拟专用网络。在一些实施例中,加密引擎使用加密处理器。在其它实施例中,加密引擎包括运行在加密处理器260上的可执行指令。
在一些实施例中,设备205为在客户机102和服务器106之间的通信提供下列一个或多个加速技术:1)压缩、2)解压缩、3)传输控制协议池、4)传输控制协议多路复用、5)传输控制协议缓冲、以及6)高速缓存。在一个实施例中,设备200通过打开与每一服务器106的一个或者多个传输层连接并且维持这些连接以允许由客户机经由互联网的重复数据访问,来为服务器106缓解由重复打开和关闭到客户机102的传输层连接所造成的大量处理负载。该技术此处称为“连接池”。
在一些实施例中,为了经由池化的传输层连接无缝拼接从客户机102到服务器106的通信,设备205通过在传输层协议级修改序列号和确认号来转换或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在到来的分组(即,自客户机102接收的分组)的情况中,所述分组的源网络地址被改变为设备205的输出端口的网络地址,而目的网络地址被改为目的服务器的网络地址。在发出的分组(即,自服务器106接收的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设备205的输出端口的网络地址,而目的地址被从设备205的网络地址改变为请求的客户机102的网络地址。分组的序列号和确认号也被转换为到客户机102的设备205的传输层连接上的由客户机102所期待的序列号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以计及这些转换。
在又一个实施例中,设备205为客户机102和服务器106之间的通信提供交换或负载平衡功能。在一些实施例中,设备205根据层4有效载荷或应用层请求数据来分配流量并将客户机请求定向到服务器106。在一个实施例中,尽管网络分组的网络层或者层2标识了目的服务器106,但设备205利用承载为传输层分组的有效载荷的数据和应用信息来确定服务器106以便分发网络分组。在一个实施例中,设备205的健康监控程序监控服务器的健康来确定分发客户机请求到哪个服务器106。在一些实施例中,如果设备205检测到某个服务器106不可用或者具有超过预定阈值的负载,设备205可以将客户机请求定向或者分发到另一个服务器106。
在一些实施例中,设备205用作域名服务(DNS)解析器或以其他方式提供对来自客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS请求。在一个实施例中,设备205以设备205的IP地址或其所寄载的IP地址来响应客户机的DNS请求。在此实施例中,客户机102把用于该域名的网络通信发送到设备200。在又一个实施例中,设备200以第二设备200’的或其所寄载的IP地址来响应客户机的DNS请求。在一些实施例中,设备205使用由设备200确定的服务器106的IP地址来响应客户机的DNS请求。
在又一个实施例中,设备205为客户机102和服务器106之间的通信提供应用防火墙功能。在一个实施例中,策略引擎295’提供用于检测和阻断非法请求的规则。在一些实施例中,应用防火墙防御拒绝服务(DoS)攻击。在其它实施例中,设备检查所拦截的请求的内容,以识别和阻断基于应用的攻击。在一些实施例中,规则/策略引擎包括用于提供对多个种类和类型的基于web或互联网的脆弱点的保护的一个或多个应用防火墙或安全控制策略,例如下列的一个或多个:1)缓冲区泄出,2)CGI-BIN参数操纵,3)表单/隐藏字段操纵,4)强制浏览,5)cookie或会话中毒,6)被破坏的访问控制列表(ACLs)或弱密码,7)跨站脚本处理(XSS),8)命令注入,9)SQL注入,10)错误触发敏感信息泄露,11)对加密的不安全使用,12)服务器错误配置,13)后门和调试选项,14)网站涂改,15)平台或操作系统弱点,和16)零天攻击。在一个实施例中,对下列情况的一种或多种,设备的防火墙以检查或分析网络通信的形式来提供HTML格式字段的保护:1)返回所需的字段,2)不允许附加字段,3)只读和隐藏字段强制(enforcement),4)下拉列表和单选按钮字段的一致,以及5)格式字段最大长度强制。在一些实施例中,设备205的应用防火墙确保cookie不被修改。在其它实施例中,设备205通过执行合法的URL来防御强制浏览。
在其他实施例中,应用防火墙设备205保护在网络通信中包含的任何机密信息。设备205可以根据策略引擎的规则或策略来检查或分析任一网络通信以识别在网络分组的任一字段中的任一机密信息。在一些实施例中,应用防火墙在网络通信中识别信用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信的编码部分可以包括这些出现或机密信息。基于这些出现,在一个实施例中,应用防火墙可以对网络通信采取策略行动,诸如阻止发送网络通信。在又一个实施例中,应用防火墙可以重写、移动或者以其它方式掩盖该所识别的出现或者机密信息。
尽管总的称为网络优化或第一设备200和第二设备205,但第一设备200和第二设备205可以是相同类型和形式的设备。在一个实施例中,第二设备205可执行与第一设备200相同的功能,或部分相同的功能,反之亦然。例如,第一设备200和第二设备205都可以提供加速技术。在一个实施例中,第一设备200可执行LAN加速而第二设备205执行WAN加速,或者反之亦然。在又一个实施例中,第一设备200也可以与第二设备205一样是传输控制协议终止装置。而且,尽管设备200和205被显示为在网络上单独的装置,但设备200和/或设备205可以是客户机102或服务器106的一部分。
现参考图1C,描述了用于部署设备200的网络环境的其他实施例。在如图1C的上部所描述的又一个实施例中,设备200可以部署为网络104上单个设备或单个代理。例如,设备200可以被设计、构建或调整来执行此处所讨论的WAN优化技术,而不需要第二协同设备200’。在如图1C的下部所描述的其他实施例中,可以将单个设备200与一个或多个第二设备205部署在一起。例如,诸如Citrix WANScaler设备的WAN加速第一设备200可以与LAN加速或应用防火墙第二设备205(例如Citrix NetScaler设备)部署在一起。
计算装置
客户机102、服务器106和设备200和205可以被部署为和/或执行在任何类型和形式的计算装置上,诸如能够在任何类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或者设备。图1C和1D描述了可用于实施客户机102、服务器106或设备200的实施例的计算装置100的框图。如图1C和1D所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图1C所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的指示装置127。每个计算装置100也可包括其它可选元件,例如一个或多个输入/输出装置130a-130b(总的使用附图标记130表示),以及与中央处理单元101通信的高速缓存存储器140。
中央处理单元101是响应并处理从主存储器单元122取出的指令的任何逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由加利福尼亚州Mountain View的Intel公司制造的微处理器单元;由伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由加利福尼亚州SantaClara的Transmeta公司制造的微处理器单元;由纽约州White Plains的International Business Machines公司制造的RS/6000处理器;或者由加利福尼亚州Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任何一种,或者能够按照这里所说明的那样运行的任何其它处理器。
主存储器单元122可以是能够存储数据并允许微处理器101直接访问任何存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器DRAM、快速页模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发式扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率SDRAM(DDRSDRAM)、增强型SRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储芯片的任何一种,或者能够像这里所说明的那样运行的任何其它可用存储芯片。在图1C中所示的实施例中,处理器101通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1D中,主存储器122可以是DRDRAM。
图1D描述了在其中主处理器101通过第二总线与高速缓存存储器140直接通信的实施例,第二总线有时也称为后端总线。其他实施例中,主处理器101使用系统总线150和高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1C中所示的实施例中,处理器101通过本地系统总线150与多个I/O装置130进行通信。可以使用各种不同的总线将中央处理单元101连接到任何I/O装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)与显示器124通信。图1D说明了主处理器101通过超传输(HyperTransport)、快速I/O或者InfiniBand直接与I/O装置130通信的计算机100的一个实施例。图1D还描述了在其中混合本地总线和直接通信的实施例:处理器101使用本地互连总线与I/O装置130进行通信,同时直接与I/O装置130进行通信。
计算装置100可以支持任何适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装像任何客户机代理120或其部分的软件和程序的任何其它装置。计算装置100还可以包括存储装置128,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任何程序的应用软件程序。或者,可以使用安装装置116的任何一种作为存储装置128。此外,操作系统和软件可从例如可引导CD的可引导介质运行,诸如一种用于GNU/Linux的可引导CD,该可引导CD可自knoppix.net作为GNU/Linux分发获得。
此外,计算装置100可以包括通过多种连接接口到局域网(LAN)、广域网(WAN)或互联网的网络接口118,所述多种连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25)、宽带连接(如ISDN、帧中继、ATM)、无线连接、或上述任何或所有连接的一些组合。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100接口到能够通信并执行本文所述的操作的任何类型的网络的任何其它设备。计算装置100中可以包括各种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1C所示,I/O装置130可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127(如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接以接纳手持USB存储装置,例如由位于加利福尼亚州Los Alamitos的Twintech Industry公司制造的USB闪存驱动系列装置。
在一些实施例中,计算装置100可以包括多个显示装置124a-124n或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任何一种I/O装置130a-130n和/或I/O控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任何类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n接口、通信、连接或以其他方式使用显示装置。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n接口。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置124a-124n中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a-124n中的一个或多个可以由一个或多个其它计算装置提供,诸如例如通过网络与计算装置100连接的计算装置100a和100b。这些实施例可以包括被设计和构造为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任一类型的软件。本领域的普通技术人员会认识和理解可以将计算装置100配置成具有多个显示装置124a-124n的各种方法和实施例。
在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥170,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线。
图1C和1D中描述的那类计算装置100通常在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任何操作系统,如Windows操作系统,不同发行版本的Unix和Linux操作系统,用于Macintosh计算机的任何版本的MAC任何嵌入式操作系统,任何实时操作系统,任何开源操作系统,任何专有操作系统,任何用于移动计算装置的操作系统,或者任何其它能够在计算装置上运行并完成这里所述操作的操作系统。典型的操作系统包括:WINDOWS3.x、WINDOWS95、WINDOWS98、WINDOWS2000、WINDOWS NT3.51、WINDOWS NT4.0、WINDOWS CE和WINDOWS XP,所有这些均由位于华盛顿州Redmond的微软公司出品;由位于加利福尼亚州Cupertino的苹果计算机出品的MacOS;由位于纽约州Armonk的国际商业机器公司出品的OS/2;以及由位于犹他州盐湖城的Caldera公司发布的可免费使用的Linux操作系统或者任何类型和/或形式的Unix操作系统,以及其它。
在其它实施例中,计算装置100可以有符合该装置的不同的处理器、操作系统和输入设备。例如,在一个实施例中,计算机100是由Palm公司出品的Treo180、270、1060、600或650智能电话。在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。此外,计算装置100可以是任何工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、任何其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信装置。
B.系统和设备架构
现参考图2A,描述了用于传送和/或操作客户机上的计算环境的设备200的系统环境和架构的实施例。在一些实施例中,服务器106包括用于向一个或多个客户机102传送计算环境或应用和/或数据文件的应用传送系统290。总的来说,客户机102经由网络104和设备200与服务器106通信。例如,客户机102可驻留在公司的远程办公室里,例如分支机构,而服务器106可驻留在公司数据中心。客户机102包括客户机代理120以及计算环境215。计算环境215可执行或操作用于访问、处理或使用数据文件的应用。可经由设备200和/或服务器106传送计算环境215、应用和/或数据文件。
在一些实施例中,设备200向客户机102加速传送计算环境215或者其任何部分。在一个实施例中,设备200通过应用传送系统290加速计算环境15的传送。例如,可使用此处描述的实施例来加速从公司中央数据中心到远程用户位置(例如公司的分支机构)的流应用(streaming application)及该应用可处理的数据文件的传送。在又一个实施例中,设备200加速客户机102和服务器106之间的传输层流量。在又一个实施例中,设备200控制、管理、或调整传输层协议以便加速计算环境的传送。在一些实施例中,设备200使用缓存和/或压缩技术来加速计算环境的传输。
在一些实施例中,基于多个执行方法并且基于通过策略引擎295所应用的任一验证和授权策略,应用传送管理系统290提供将计算环境传送到远程的或者其它的用户的桌面的应用传送技术。使用这些技术,远程用户可以从任何网络连接装置100获取计算环境并且访问存储应用和数据文件的服务器。在一个实施例中,应用传送系统290可驻留在服务器106上或在其上执行。在又一个实施例中,应用传送系统290可驻留在多个服务器106a-106n上或在其上执行。在一些实施例中,应用传送系统290可在服务器群38内执行。在一个实施例中,执行应用传送系统290的服务器106也可存储或提供应用和数据文件。在又一个实施例中,一个或多个服务器106的第一组可执行应用传送系统290,而不同的服务器106n可存储或提供应用和数据文件。在一些实施例中,应用传送系统290、应用和数据文件中的每一个可驻留或位于不同的服务器。在又一个实施例中,应用传送系统290的任何部分可驻留、执行、或被存储于或分发到设备200或多个设备。
客户机102可包括用于执行使用或处理数据文件的应用的计算环境215。客户机102可通过网络104、104’和设备200请求来自服务器106的应用和数据文件。在一个实施例中,设备200可以将来自客户机102的请求转发到服务器106。例如,客户机102可能不具有本地存储或者本地可访问的应用和数据文件。响应于请求,应用传送系统290和/或服务器106可以传送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以把应用作为应用流来传输,以在客户机102上的计算环境215中操作。
在一些实施例中,应用传送系统290包括Citrix Systems公司的CitrixAccess SuiteTM的任一部分(例如MetaFrame或Citrix Presentation ServerTM),和/或微软公司开发的Windows终端服务中的任何一个。在一个实施例中,应用传送系统290可以通过远程显示协议或者以其它方式通过基于远程计算或者基于服务器计算来传送一个或者多个应用到客户机102或者用户。在又一个实施例中,应用传送系统290可以通过应用流来传送一个或者多个应用到客户机或者用户。
在一个实施例中,应用传送系统290包括策略引擎295,其用于控制和管理对应用的访问、应用执行方法的选择以及应用的传送。在一些实施例中,策略引擎295确定用户或者客户机102可以访问的一个或者多个应用。在又一个实施例中,策略引擎295确定应用应该如何被传送到用户或者客户机102,例如执行的方法。在一些实施例中,应用传送系统290提供多个传送技术,从中选择应用执行的方法,例如基于服务器的计算、本地流式传输或传送应用给客户机120以用于本地执行。
在一个实施例中,客户机102请求应用程序的执行而包括服务器106的应用传送系统290选择执行应用程序的方法。在一些实施例中,服务器106从客户机102接收证书。在又一个实施例中,服务器106从客户机102接收对于可用应用的列举的请求。在一个实施例中,响应该请求或者证书的接收,应用传送系统290列举对于客户机102可用的多个应用程序。应用传送系统290接收执行所列举的应用的请求。应用传送系统290选择预定数量的方法之一来执行所列举的应用,例如响应策略引擎的策略。应用传送系统290可以选择执行应用的方法,使得客户机102接收通过执行服务器106上的应用程序所产生的应用输出数据。应用传送系统290可以选择执行应用的方法,使得本地机器102在检索包括应用的多个应用文件之后本地执行应用程序。在又一个实施例中,应用传送系统290可以选择执行应用的方法,以通过网络104流式传输应用到客户机102。
客户机102可以执行、操作或者以其它方式提供应用,所述应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java程序、或者可以在客户机102上执行的任何其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或者基于远程的应用。在一个实施例中,服务器106可以使用任何瘦-客户端或远程显示协议来显示输出到客户机102,所述瘦-客户端或远程显示协议例如由位于佛罗里达州Ft.Lauderdale的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于华盛顿州Redmond的微软公司出品的远程桌面协议(RDP)。应用可使用任何类型的协议,并且它可为,例如,HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括和VoIP通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,应用包括涉及到实时数据通信的任一应用,例如用于流式传输视频和/或音频的应用。
在一些实施例中,服务器106或服务器群38可运行一个或多个应用,例如提供瘦客户端计算或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群38作为一个应用来执行Citrix Systems Inc.的Citrix AccessSuiteTM的任一部分(例如MetaFrame或Citrix Presentation ServerTM),和/或微软公司开发的Windows终端服务中的任何一个。在一个实施例中,该应用是位于佛罗里达州Fort Lauderdale的Citrix Systems Inc.开发的ICA客户机。在其它实施例中,该应用包括由位于华盛顿州Redmond的Microsoft公司开发的远程桌面(RDP)客户机。另外,服务器106可以运行一个应用,例如,其可以是提供电子邮件服务的应用服务器,例如由位于华盛顿州Redmond的Microsoft公司制造的Microsoft Exchange,web或Internet服务器,或者桌面共享服务器,或者协作服务器。在一些实施例中,任一应用可以包括任一类型的所寄载的服务或产品,例如位于加利福尼亚州Santa Barbara的Citrix Online Division提供的GoToMeetingTM,位于加利福尼亚州Santa Clara的WebEx Inc.提供的WebExTM,或者位于华盛顿州Redmond的Microsoft公司提供的Microsoft Office Live Meeting。
示例设备架构
图2A也示出设备200的示例实施例。仅通过示例来提供图2A的设备200的架构并且不意于以任一方式受限。设备200可包括任何类型和形式的计算装置100,例如上文结合图1D和1E所讨论的任何元件或部分。概括来讲,设备200具有用于经由网络104接收和/或传输通信的一个或多个网络堆栈267A-267N和一个或多个网络端口266A-266N。设备200还具有用于优化、加速或以其他方式改善经过设备200的任何网络流量或通信的质量、操作或性能。
设备200包括操作系统或在操作系统的控制之下。设备200的操作系统可以是任何类型和/或形式的Unix操作系统,尽管本发明并未这样限制。这样,设备200可以运行任何操作系统,如任何版本的Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任何版本的Mac任何的嵌入式操作系统、任何的网络操作系统、任何的实时操作系统、任何的开放源操作系统、任何的专用操作系统、用于移动计算装置或网络装置的任何操作系统、或者能够运行在设备200上并执行此处所描述的操作的任何其它操作系统。
设备200的操作系统分配、管理或以其他方式将可用的系统存储器分离到被称为内核或系统空间和用户或应用空间中。通常保留内核空间用于运行内核,所述内核包括任何设备驱动器,内核扩展或其他内核相关软件。就像本领域技术人员所知的,内核是操作系统的核心,并提供对设备200的资源和硬件相关的元件的访问、控制和管理。根据设备200的实施例,内核空间也包括与网络优化引擎250或其任何部分协同工作的多个网络服务或进程。另外,内核的实施例将依赖于通过设备200安装、配置或以其他方式使用的操作系统的实施例。与内核空间不同,用户空间是由用户模式应用或以其他方式运行于用户模式的程序所使用的操作系统的存储区域或部分。用户模式应用不能直接访问内核空间而使用服务调用以访问内核服务。操作系统使用用户或应用空间来执行或运行应用以及供应用户级程序、服务、进程和/或任务。
设备200具有一个或多个网络端口266,用于通过网络104传输和接收数据。网络端口266提供在计算装置和网络104或另一个装置100之间的物理和/或逻辑接口,用于传输和接收网络通信。网络端口266的类型和形式取决于网络的类型和形式以及用于连接到网络的介质的类型。而且,网络端口266和网络堆栈267的、为其供应的或者其使用的任何软件可运行在内核空间或用户空间。
在一个实施例中,设备200具有一个网络堆栈267,例如基于TCP/IP的堆栈,用于在网络105上与客户机102和/或服务器106通信。在一个实施例中,网络堆栈267用于与诸如网络104第一网络以及第二网络104’通信。在又一个实施例中,设备200可具有两个或多个网络堆栈,例如第一网络堆栈267A和第二网络堆栈267N。第一网络堆栈267A可与第一网络端口266A联合使用以在第一网络104上通信。第二网络堆栈可与第二网络端口266N联合使用以在第二网络104’上通信。在一个实施例中,网络堆栈267包括用于为由设备200产生的一个或多个网络分组进行排队的一个或多个缓冲器。
网络堆栈267可包括任何类型和形式的软件、或硬件或其组合,用于提供与网络的连接和通信。在一个实施例中,网络堆栈267包括用于网络协议组的软件实现。网络堆栈267可包括一个或多个网络层,例如为本领域技术人员所公认和了解的开放式系统互联(OSI)通信模型的任何网络层。这样,网络堆栈267可包括用于下列OSI模型的任何一层的任何类型和形式的协议:1)物理链路层;2)数据链路层;3)网络层;4)传输层;5)会话层);6)表示层,以及7)应用层。在一个实施例中,网络堆栈267可包括在互联网协议(IP)的网络层协议上的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在以太网协议上承载TCP/IP协议,所述以太网协议可包括IEEE广域网(WAN)或局域网(LAN)协议的任何族,例如被IEEE802.3覆盖的这些协议。在一些实施例中,网络堆栈267包括任何类型和形式的无线协议,例如IEEE802.11和/或移动互联网协议。
考虑到基于TCP/IP的网络,可使用任何基于TCP/IP的协议,包括消息应用编程接口(MAPI)(email)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议,以及IP语音(VoIP)协议。在又一个实施例中,网络堆栈267包括任何类型和形式的传输控制协议,诸如修改的传输控制协议,例如事务TCP(T/TCP),带有选择确认的TCP(TCP-SACK),带有大窗口的TCP(TCP-LW),例如TCP-Vegas协议的拥塞预测协议,以及TCP欺骗协议。在其他实施例中,网络堆栈267可使用诸如IP上UDP的任何类型和形式的用户数据报协议(UDP),例如用于语音通信或实时数据通信。
另外,网络堆栈267可包括支持一个或多个层的一个或多个网络驱动器,例如TCP驱动器或网络层驱动器。网络层驱动器可作为计算装置100的操作系统的一部分或者作为计算装置100的任何网络接口卡或其它网络访问组件的一部分被包括。在一些实施例中,网络堆栈267的任何网络驱动器可被定制、修改或调整以提供支持此处描述的任何技术网络堆栈267的定制或修改部分。
在一个实施例中,设备200使用单个网络堆栈267来提供或维持在客户机102和服务器106之间的传输层连接。在一些实施例中,设备200通过改变、管理或控制在客户机和服务器之间的传输控制协议连接的行为来有效地终止传输层连接。在这些实施例中,设备200可使用单个网络堆栈267。在其他实施例中,设备200终止第一传输层连接,例如客户机102的TCP连接,并建立客户机102使用的或代表客户机102的到服务器106的第二传输层连接,例如,终止在设备200和服务器106的第二传输层连接。可通过单个网络堆栈267建立第一和第二传输层连接。在其他实施例中,设备200可使用多个网络堆栈,例如267A和267N。在这些实施例中,在第一网络堆栈267A可建立或终止第一传输层连接,且在第二网络堆栈267N可建立或者终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和传输网络分组,并且另一个网络堆栈可用于在第二网络上接收和传输网络分组。
如图2A所示,网络优化引擎250包括一个或多个下列元件、组件或模块:网络分组处理引擎250、LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295’。网络优化引擎250或其任何部分可包括软件、硬件或软件和硬件的任何组合。而且网络引擎250的、为其供应的或由其使用的任何软件可运行在内核空间或用户空间。例如,在一个实施例中,网络优化引擎250可运行在内核空间。在又一个实施例中,网络优化引擎250可运行在用户空间。在又一个实施例中,网络优化引擎250的第一部分可运行在内核空间而网络优化引擎250的第二部分可运行在用户空间。
网络分组处理引擎
网络分组引擎240,通常也称为分组处理引擎,或分组引擎,负责控制和管理对由设备200通过网络端口266和网络堆栈267接收和传输的分组的处理。网络分组引擎240可操作在网络堆栈267的任一层。在一个实施例中,网络分组引擎240操作在网络堆栈267的层2和层3.在一些实施例中,分组引擎240在网络层(例如,TCP/IP实施例中的IP层)拦截或以其他方式接收分组。在又一个实施例中,分组引擎240操作在网络堆栈267的层4。例如,在一些实施例中,分组引擎240在传输层拦截或以其他方式接收分组,例如在TCP/IP实施例中的TCP层拦截分组。在其他实施例中,分组引擎240操作在层4之上的任何会话或应用层。例如,在一个实施例中,分组引擎240在传输层协议层之上拦截或以其他方式接收的网络分组,例如在TCP实施例中的TCP分组的有效载荷。
分组引擎240可包括用于在例如接收网络分组或者传输网络分组的处理期间排队一个或多个网络分组的缓冲器。另外,分组引擎240与一个或多个网络堆栈267通信以通过网络端口266发送和接收网络分组。分组引擎240包括分组处理定时器。在一个实施例中,分组处理定时器提供一个或多个时间间隔以触发输入的(即,接收的)或输出的(即,传输的)网络分组的处理。在一些实施例中,分组引擎240响应于定时器来处理网络分组。分组处理定时器向分组引擎240提供任何类型和形式的信号以通知、触发或传输时间相关的事件、间隔或发生。在许多实施例中,分组处理定时器以毫秒级操作,例如100ms、50ms、25ms、10ms、5ms或1ms。
在操作期间,分组引擎240可与诸如LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和/或策略引擎295’的网络优化引擎250的任一部分接口、集成或通信。因此,可响应于分组处理定时器和/或分组引擎240来执行LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295’的任何逻辑、功能或操作。在一些实施例中,在由分组处理定时器提供的时间间隔粒度(例如,少于或等于10ms的时间间隔),可执行加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩引擎238的任何逻辑、功能或操作。例如,在一个实施例中,高速缓存管理器232可响应于集成分组引擎240和/或分组处理定时器242来执行任何高速缓存的对象的终止。在又一个实施例中,高速缓存的对象的终止或无效时间被设定为与分组处理定时器的时间间隔相同的粒度级,例如每10ms。
高速缓存管理器
高速缓存管理器232可包括软件、硬件或软件和硬件的任何组合,以将数据、信息和对象存储到在存储器或存储中的高速缓存、提供高速缓存访问以及控制和管理高速缓存。由高速缓存管理器232处理和存储的数据、对象或内容可包括任何格式(例如标记语言)的数据,或者通过任何协议的通信的任何类型的数据。在一些实施例中,高速缓存管理器232复制存储在其他地方的原始数据或先前计算、生成或传输的数据,其中相对于读高速缓存存储器或存储元件,需要更长的访问时间以取得、计算或以其他方式得到原始数据。一旦数据被存储在高速缓存中,通过访问高速缓存的副本而不是重新获得或重新计算原始数据即可进行后续操作,因此而减少了访问时间。在一些实施例中,高速缓存可以包括设备200的存储器中的数据对象。在又一个实施例中,高速缓存可以包括设备200的任一类型和形式的存储元件,诸如硬盘的一部分。在一些实施例中,装置的处理单元可提供由高速缓存管理器232使用的高速缓存存储器。在又一个实施例中,高速缓存管理器232可使用存储器、存储区或处理单元的任何部分和组合来高速缓存数据、对象或其它内容。
另外,高速缓存管理器232包括用于执行设备200的任何高速缓存技术的任何逻辑、功能、规则或操作。在一些实施例中,高速缓存管理器232可作为应用、库、程序、服务、进程、线程或任务而操作。在一些实施例中,高速缓存管理器232可包括任何类型的通用处理器(GPP),或者任何其他类型的集成电路,例如现场可编程门阵列(FPGA),可编程逻辑设备(PLD),或者专用集成电路(ASIC)。
策略引擎
策略引擎295’包括用于提供和应用一个或多个策略或规则到设备200的任一部分的功能、操作或配置的任何逻辑、功能或操作。策略引擎295’可包括例如智能统计引擎或其它可编程应用。在一个实施例中,策略引擎295’提供配置机制以允许用户识别、指定、定义或配置用于网络优化引擎250或其任何部分的策略。例如,策略引擎295’可提供用于缓存哪些数据、何时缓存该数据、为谁缓存该数据、何时终止高速缓存中的对象或刷新高速缓存的策略。在其他实施例中,除了对安全、网络流量、网络访问、压缩或由设备200执行的任何其它功能或操作的访问、控制和管理之外,策略引擎236可包括任何逻辑、规则、功能或操作以确定和提供对设备200所高速缓存的对象、数据、或内容的访问、控制和管理。
在一些实施例中,策略引擎295’可基于下列的任何一个或多个来提供和应用一个或多个策略:用户、客户机的标识、服务器的标识、连接的类型、连接的时间、网络的类型或网络流量的内容。在一个实施例中,策略引擎295’基于网络分组的任何协议层的字段或首部来提供和应用策略。在又一个实施例中,策略引擎295’基于网络分组的任一有效载荷来提供和应用策略。例如,在一个实施例中,策略引擎295’基于对被承载为传输层分组的有效载荷的应用层协议内容的特定部分的识别来应用策略。在又一个实施例中,策略引擎295’基于由客户机、服务器或用户证书识别的任何信息来应用策略。在又一个实施例中,策略引擎295’基于例如通过任何类型和形式的端点检测(参见下面所描述的客户机代理的收集代理示例)所获得的关于客户机102的任何属性或特征来应用策略。
在一个实施例中,策略引擎295’和应用传送系统290的策略引擎295联合或协同工作。在一些实施例中,策略引擎295’是应用传送系统290的策略引擎295的一个分布式的部分。在又一个实施例中,应用传送系统290的策略引擎295被部署于或执行在设备200上。在一些实施例中,策略引擎295、295’都操作在设备200上。在又一个实施例中,设备200的策略引擎295’或其一部分操作在服务器106上。
多协议和多层压缩引擎
压缩引擎238包括用于压缩一个或多个协议的网络分组(例如由设备200的网络堆栈267使用的任何协议)的任何逻辑、商业规则、功能或操作。压缩引擎238也可被称为多协议压缩引擎238,这是由于其可以被设计、构建为或能够压缩多个协议。在一个实施例中,压缩引擎238使用对上下文不敏感的压缩,其可在不了解数据类型的情况下对数据进行压缩。在又一个实施例中,压缩引擎238使用对上下文敏感的压缩。在该实施例中,压缩引擎238利用数据类型的知识来从一系列合适的算法中选择特定的压缩算法。在一些实施例中,使用特定协议的知识来执行上下文敏感的压缩。在一个实施例中,设备200或压缩引擎238可使用端口号(例如,公知端口),以及来自连接本身的数据来确定要使用的合适的压缩算法。一些协议仅使用一种类型的数据,仅要求当连接建立时可被选择的单个压缩算法。其他协议在不同的时间包含不同类型的数据。例如,POP、IMSP、SMTP和HTTP都移动夹杂其他协议数据的任意类型的文件。
在一个实施例中,压缩引擎238使用增量型压缩算法。在又一个实施例中,压缩引擎238使用首地点压缩以及搜索在高速缓存、存储器或盘中存储的数据间的重复模式。在一些实施例中,压缩引擎238使用无损压缩算法。在其他实施例中,压缩引擎238使用有损压缩算法。在一些情况下,数据类型的知识和有时来自用户的许可被要求使用有损压缩算法。压缩不限于协议的有效载荷。协议本身的控制字段也可以被压缩。在一些实施例中,压缩引擎238使用与用于有效载荷的算法不同的算法。
在一些实施例中,压缩引擎238在网络堆栈267的一个或多个层进行压缩。在一个实施例中,压缩引擎238在传输层协议处进行压缩。在又一个实施例中,压缩引擎238在应用层协议处进行压缩。在一些实施例中,压缩引擎238在层2-4协议处进行压缩。在其他实施例中,压缩引擎238在层5-7协议处进行压缩。在又一个实施例中,压缩引擎238压缩传输层协议和应用层协议。在一些实施例中,压缩引擎238压缩层2-4协议和层5-7协议。
在一些实施例中,压缩引擎238使用基于存储器的压缩、基于高速缓存的压缩或基于盘的压缩或上述的任一组合。这样,压缩引擎238也可以被称为多层压缩引擎。在一个实施例中,压缩引擎238使用在存储器(例如RAM)中存储的数据历史。在又一个实施例中,压缩引擎238使用在高速缓存(例如处理器的L2高速缓存)中存储的数据历史。在其他实施例中,压缩引擎238使用存储到盘或存储单元的数据历史。在一些实施例中,压缩引擎238使用基于高速缓存的、基于存储器的和基于盘的数据历史的分层结构。压缩引擎238可首先使用基于高速缓存的数据来确定用于压缩的一个或多个数据匹配,然后可检查基于存储器的数据以确定用于压缩的一个或多个数据匹配。在另一种情况下,压缩引擎238可在检查基于高速缓存的和/或基于存储器的数据历史之后检查盘存储来找出用于压缩的数据匹配。
在一个实施例中,多协议压缩引擎238双向压缩在客户机102a-102n和服务器106a-106n间任一基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议以及IP上语音(VoIP)协议。在其它实施例中,多协议压缩引擎238提供基于超文本标记语言(HTML)的协议的压缩,并且在一些实施例中,提供任何标记语言的压缩,例如可扩展标记语言(XML)。在一个实施例中,多协议压缩引擎238提供任何高性能协议的压缩,例如设计用于设备200到设备200通信的任何协议。在又一个实施例中,多协议压缩引擎238使用修改的传输控制协议来压缩任何通信的任何载荷或任何通信,例如事务TCP(T/TCP)、带有选择确认的TCP(TCP-SACK)、带有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预报协议以及TCP欺骗协议(TCP spoofing protocol)。
同样的,多协议压缩引擎238为用户加速经由桌面客户机以及甚至移动客户机访问应用的性能。所述桌面客户机例如Micosoft Outlook和非web瘦客户机,例如由像Oracle、SAP和Siebel的通用企业应用所启动的任何客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过与访问网络堆栈267的分组处理引擎240集成,多协议压缩引擎能够压缩由传输层协议携带的任何协议,例如任何应用层协议。
LAN/WAN检测器
LAN/WAN检测器238包括用于自动检测慢速侧连接(例如,诸如内部网的广域网(WAN)连接)和关联端口267,以及快速侧连接(例如,局域网(LAN)连接)和关联端口267的任何逻辑、商业规则、功能或操作。在一些实施例中,LAN/WAN检测器238监控设备200的网络端口267上的网络流量以便检测同步分组(有时被称为“加标记的”网络分组)。同步分组识别网络流量的类型或速度。在一个实施例中,同步分组识别WAN的速度或WAN类型的连接。LAN/WAN检测器238也识别对加标记的同步分组的确认分组的接收以及其在哪个端口上被接收。接着,设备200将自身配置为操作所识别的、加标记的同步分组到达的端口以使得该端口上的速度被设置为与连接到该端口的网络相关联的速度。那么,另一个端口被设置为与连接到该端口的网络相关联的速度。
为了本文讨论的方便,“快速”侧可参考关于与广域网(WAN)(例如,互联网)的连接,并且以该WAN的网络速度操作。类似地,“慢速”侧可参考关于与局域网(LAN)的连接并且以LAN的网络速度操作。然而,应指出网络的“快速”和“慢速”侧可以在每连接的基础上改变并且是对于网络连接的速度或者网络拓扑类型的相关术语。这样的配置可以用在复杂的网络拓扑中,其中网络仅在与相邻网络比较时是“快速”或“慢速”,而不是绝对的“快速”或“慢速”。
在一个实施例中,LAN/WAN检测器238可用于使设备200自动发现其所连接的网络。在又一个实施例中,LAN/WAN检测器238可用于检测在网络104中部署的第二设备200’的存在或在场。例如,根据图1A的操作中的自动发现机制起到以下作用:将设备200和200’置于与链接客户机102和服务器106的连接在一条线上。设备200和200’处于连接两个LAN的低速链路(例如,互联网)的端点处。在一个示例实施例中,设备200和200’各自包括两个端口,一个端口与“较低”速度的链路连接而另一个端口与“较高”速度的链路(例如,LAN)连接。到达一个端口的任一分组被复制到另一个端口。因此,设备200和200’各自被配置为充当两个网络104之间的桥。
当诸如客户机102的端节点打开与诸如服务器106的另一个端节点的新的TCP连接时,客户机102向服务器106发送具有同步(SYN)首部位组的TCP分组或SYN分组。在本例中,客户机102打开到服务器106的传输层连接。当SYN分组穿过设备200时,设备200给该分组插入、附加或以其他方式提供特有的TCP首部选项,以宣告其存在。如果该分组穿过第二设备(在该示例中设备200’),第二设备记录该SYN分组中的首部选项。服务器106用同步确认(SYN-ACK)分组来响应该SYN分组。当SYN-ACK分组穿过设备200’时,TCP首部选项被标记(例如,附加、插入或添加)到该SYN-ACK分组以便向设备200宣告设备200’的存在。当设备200收到该分组时,设备200,200’此时互相察觉并且该连接可以被适当地加速。
关于LAN/WAN检测器238的操作,描述了使用SYN分组来检测网络的“快速”侧和“慢速”侧的方法或过程。在客户机102和服务器106之间建立传输层连接的期间,设备200通过LAN/WAN检测器238确定SYN分组是否被加了确认(ACK)标记。如果其被加了标记,设备200将接收加标记的SYN分组(SYN-ACK)的端口标识或配置为“慢速”侧。在一个实施例中,设备200可选择在将该分组复制到另一个端口之前ACK标记从该分组删除。如果LAN/WAN检测器238确定该分组未加标记,那么设备200将接收未加标记的分组的端口标识或配置为“快速”侧。设备200接着给该SYN分组加上ACK标记并将该分组复制到另一个端口。
在又一个实施例中,LAN/WAN检测器238使用SYN-ACK分组来检测网络的快速侧和慢速侧。设备200通过LAN/WAN检测器238确定SYN-ACK分组是否被加了确认(ACK)标记。如果其被加了标记,设备200将接收加标记的SYN分组(SYN-ACK)的端口标识或配置为“慢速”侧。在一个实施例中,设备200可选择在将该分组复制到另一个端口之前从该分组删除ACK标记。如果LAN/WAN检测器238确定该分组未加标记,那么设备200将接收未加标记的分组的端口标识或配置为“快速”侧。LAN/WAN检测器238确定SYN分组是否被加了标记。如果该SYN分组没有被加标记,那么设备200将该分组复制到另一个端口。如果该SYN分组被加了标记,那么该设备在将该分组拷贝到另一个端口之前给SYN-ACK分组加标记。
设备200、200’可以添加、插入、修改、附加或以其他方式提供TCP选项首部中的任何信息或数据,以提供关于网络连接、网络流量或者设备200的配置或操作的任何信息、数据或特征。在这种方式中,设备200不仅向另一个设备200’宣告其存在或者标记较高或较低速度的连接,该设备200还通过TCP选项首部提供关于该设备或该连接的其他信息和数据。TCP选项首部信息可能是对设备有用的或由设备用于控制、管理、优化、加速或改善经过设备200的网络流量,或者以其他方式配置其自身或网络端口的操作。
尽管通常LAN/WAN检测器238被结合检测网络连接的速度或设备的存在来描述,但LAN/WAN检测器238可被用于将设备200的任何类型的功能、逻辑或操作应用到网络流量的端口、连接或流。更具体地,每当设备在不同的端口执行不同的功能时都可以自动分配端口,其中给任务分配端口可以在该单元操作期间,和/或每个端口的网络段的性质可被设备200发现。
流控制
流控制器220包括用于优化、加速或以其他方式改善网络分组的传输层通信的性能、操作或服务质量或者在传输层的分组的发送的任何逻辑、商业规则、功能或操作。流控制器(有时也被称为流控制模块)调节、管理和控制数据传输速率。在一些实施例中,流控制器220被部署在或连接在网络104中的带宽瓶颈处。在一个实施例中,流控制器220有效地调节、管理和控制带宽的使用或利用。在其他实施例中,流控制模块也可以被部署在延迟转换(从低延迟到高延迟)的网络上的位置和具有介质损失的链路(例如无线或卫星链路)上的位置。
在一些实施例中,流控制器220可包括用于控制网络传输的接收速率的接收器侧流控制模块和用于控制网络分组的传输速率的发送器侧流控制模块。在其他实施例中,第一流控制器220包括接收器侧流控制模块并且第二流控制器220’包括发送器侧流控制模块。在一些实施例中,第一流控制器220被部署在第一设备200上并且第二流控制器220’被部署在第二设备200’上。同样,在一些实施例中,第一设备200控制接收器侧上的数据流而第二设备200'控制来自发送器侧的数据流。在又一个实施例中,单个设备200包括用于经过设备200的网络通信的接收器侧和发送器侧的流控制。
在一个实施例中,配置流控制模块220以使瓶颈处的带宽被更充分地利用,以及在一些实施例中,配置流控制模块220以使瓶颈处的带宽不被过度利用。在一些实施例中,流控制模块220透明地缓冲(或者重新缓冲例如发送器已经缓冲的数据)经过具有相关联的流控制模块220的节点间的网络会话。当会话经过两个或多个流控制模块220时,一个或多个流控制模块控制会话的速率。
在一个实施例中,用有关瓶颈带宽的预定数据来配置流控制模块200。在又一个实施例中,流控制模块220可被配置为检测瓶颈带宽或与其关联的数据。与诸如TCP的传统网络协议不同,接收器侧流控制模块220控制数据传输速率。接收器侧流控制模块220通过将传输速率限制转发到发送器侧流控制模块220来控制发送器侧流控制模块(例如,220)的数据传输速率。在一个实施例中,接收器侧流控制模块220在由接收器(例如服务器106)向发送器(例如客户机102)发送的确认(ACK)分组(或信号)上捎带这些传输速率限制。接收器侧流控制模块220响应于由发送器侧流控制模块220'发送的速率控制请求来执行这一工作。可以在由发送器106发送的数据分组上捎带来自发送器侧流控制模块220’的请求。
在一些实施例中,流控制器220操纵、调整、模拟、改变、改进或以其他方式修改传输层协议的行为以便提供传输层的传送、数据速率和/或带宽利用的改善的性能或操作。流控制器220可在传输层实现多个数据流控制技术,包括但不限于1)预确认,2)窗口虚拟化,3)重新拥塞技术,3)本地重传技术,4)波前检测和消除二义性,5)传输控制协议选择性确认,6)事务边界检测技术和7)重新分组。
尽管此处通常将发送器描述为客户机102,将接收器描述为服务器106,但发送器可以是诸如网络104上任一计算装置100或者服务器106的任一端点。同样地,接收器可以是客户机102或者网络104上的任何其他计算装置。
预确认
概括来讲预确认流控制技术,在一些实施例中,流控制器220处理确认并为发送器重传确认,有效地终止发送器与网络连接的下游部分的连接。参考图1B,描述用来实现该特征的,设备200在网络架构中的一个可能的部署。在该示例实施例中,发送计算机或者客户机102在网络104上例如经由交换机传输数据,其确定该数据发往VPN设备205。由于所选择的网络拓扑,发往VPN设备205的所有数据穿过设备200,使得设备200可以将任一必要的算法应用到该数据。
进一步在该示例中,客户机102传输由设备200接收的分组。当设备200接收从客户机102向接收者传输的经过VPN设备205的分组时,设备200保留分组的副本并且将该分组向下游转发到VPN设备205。设备200接着生成确认分组(ACK)并且将ACK分组发送回客户机102或者发送端点。该ACK(即预确认)使发送器102相信分组已经被成功传输、释放发送器的资源用于后续的处理。在要求重传分组的事件中,设备200保留该分组的副本,使得发送器102不必处理数据的重传。提前生成确认可以被称为“提前确认(preack)”。
如果要求重传分组,设备200将分组重传到发送器。设备200可以确定当发送器处于传统系统中时是否需要重传,例如,在预定时间段之后对于该分组如果没有接收到确认则确定分组丢失。为此,设备200监控由例如服务器106(或者任何其他下游网络实体)的接收端点生成的确认,以便其可以确定是否已经成功传送分组或者需要重传分组。如果设备200确定分组已经被成功传送,则设备200能够自由地丢弃所保存的分组数据。设备200还可以禁止转发对已经由发送端点接收的分组的确认。
在上述实施例中,设备200经由流控制器220通过预确认(也称为“提取确认”)的传送来控制发送器102,如同设备200是接收端点本身一样。由于设备200不是端点并且实际上不消耗数据,所以设备200包括用于给发送端点提供溢出控制的机制。如果没有溢出机制,设备200将耗尽存储器,因为设备200存储已经向发送端点提取确认的但还没有被确认为由接收端点接收的分组。因此,在发送器102传输分组到设备200快于设备200向下游转发分组的情况下,设备200中可用于存储未被确认的分组数据的存储器将迅速填满。用于溢出控制的机制允许设备200控制来自发送器的分组的传输以避免该问题。
在一个实施例中,设备200或者流控制器220包括固有的“自同步(self-clocking)”溢出控制机制。该自同步归因于这样的顺序,其中设备200可以被设计为向下游传输分组并向发送器102或者106发送ACK。在一些实施例中,设备200直到其向下游传输分组后为才提前确认分组。以此方式,发送器102将以设备200能够传输分组的速率而不是以设备200从发送器100接收分组的速率来接收ACK。这有助于调节来自发送器102的分组的传输。
窗口虚拟化
设备200可以实现的另一个溢出控制机制是使用TCP窗口大小参数,其告知发送器接收器允许该发送器填满多少缓冲区。预确认中的非零窗口大小(例如至少一个最大段大小(MSS)的大小)允许发送端点继续向设备传输数据,而零窗口大小禁止进一步的数据传输。相应地,设备200可以例如当设备200的缓冲区变满时通过适当地设置每一预确认中的TCP窗口大小来调节来自发送器的分组的流量。
另一项用来降低该附加开销的技术是应用滞后作用(hysteresis)。当设备200将数据传送到较慢侧时,设备299中的溢出控制机制可以在向发送器发送非零窗口通告之前要求可用的最小数量的空间。在一个实施例中,设备200在发送非零窗口分组(例如,四个分组的窗口大小)之前进行等待直到存在最小的预定数量的分组(诸如四个分组)的可用空间为止。由于对于四个数据分组的每个组仅发送两个ACK分组,而不是对于四个数据分组要发送八个ACK分组,因此这将开销降低到大约原来的四分之一。
设备200或流控制器220可用于溢出控制的另一技术是TCP延迟ACK机制,其跳过ACK来降低网络流量。TCP延迟ACK自动延迟ACK的发送,直到接收到两个分组或直到发生固定的超时为止。该机制单独导致开销减半,而且,通过将分组的数量增加到两个以上,降低了附加的开销。但是仅延迟ACK本身不足以控制溢出,并且设备200还可以使用在ACK上的通告窗口机制来控制发送器。当这样做时,在一个实施例中,设备200通过延迟ACK很长时间来避免触发发送器的超时机制。
在一个实施例中,流控制器220不对一组分组的最后一个分组进行提取确认。通过不提取确认最后一个分组或者该组中分组的至少一个,设备避免对一组分组的错误确认。例如,如果设备将发送对最后一个分组的预确认而该分组随后丢失,那么发送器在分组没有被传送时已经欺骗认为其被传送。考虑到分组已被传送,发送器将丢弃该数据。如果设备也丢失该分组,那么不能将该分组重传到接收者。通过不对一组分组的最后一个分组进行提前确认,发送器直到该分组被传送时才将其丢弃。
在又一个实施例中,流控制器220可以使用窗口虚拟化技术来控制网络连接的带宽利用或者流速。虽然根据检查诸如RFC1323的传统文献其可能不是直接明显的,但是用于诸如TCP的传输层协议的发送窗口是有效的。由于发送窗口消耗缓冲区空间(尽管在发送器上),所以发送窗口类似于接收窗口。发送器的发送窗口包括还没有被接收器确认的、由应用发送的所有数据。在要求重传的情况下,必须在存储器中保留该数据。由于存储器是共享资源,所以一些TCP堆栈的实现限制了该数据的大小。当发送窗口满时,应用程序尝试发送更多的数据导致阻塞应用程序直到空间可用为止。随后接收的确认将释放发送窗口存储器并且不再阻塞应用程序。在一些实施例中,该窗口大小就是一些TCP实现中的套接字缓冲区大小。
在一个实施例中,流控制模块220被配置为提供对增加的窗口(或缓冲区)大小的访问。该配置还可以被称为窗口虚拟化。在作为传输层协议的TCP的实施例中,TCP首部可以包括对应窗口比例(window scale)的位串。在一个实施例中,“窗口”可以在发送、接收或二者的上下文中提及。
窗口虚拟化的一个实施例是将预确认设备200插入到TCP会话中。参考图1A和1B的任何一个环境,建立例如客户机102(为讨论方便,现称为源节点102)的源节点与例如服务器106(为讨论方便,现称之为目标节点106)的目标节点之间数据通信会话的初始化。对于TCP通信,源节点102最初将同步信号(“SYN”)通过其局域网104传输到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP首部选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。
尽管具有例如16k字节的小缓冲区大小的端节点,但设备200经由流控制模块220提供窗口(或缓冲区)来允许提高会话内的数据缓冲能力。然而,RFC1323要求对大于64k字节的任何缓冲区大小进行窗口缩放(windowscaling),其必须在会话初始化(SYN、SYN-ACK信号)时设置。此外,窗口缩放对应于数据路径中的最小公分母,经常是具有小的缓冲区大小的端节点。该窗口比例通常是0或1的比例,其对应于高达64k或者128k字节的缓冲区大小。注意到,由于窗口大小被限定为每一分组中的、随窗口比例改变的窗口字段,窗口比例建立缓冲区的上限,但并不保证该缓冲区实际上就那么大。每个分组在窗口字段中指示接收器处当前可用的缓冲区空间。
在使用窗口虚拟化技术进行缩放的一个实施例中,在连接建立(即,会话初始化)期间,当第一流控制模块220从源节点102接收SYN信号(或者分组)时,流控制模块220源节点102(其是之前的节点)的窗口比例或者如果之前的节点的比例丢失则为窗口比例存储0。第一流控制模块220还在SYN-FCM信号中修改该比例,例如将该比例从0或者1增加到4。当第二流控制模块220接收SYN信号时,其存储来自第一流控制信号的增加的比例并且将该SYN信号中的比例重置为源节点103的比例值以用于到目标节点106的传输。当第二流控制器220接收到来自目标节点106的SYN-ACK信号时,其存储来自目标节点106的比例(例如,0或1)的比例并且将其修改为与SYN-ACK-FCM信号一起发送的增加的比例。第一流控制节点220接收并且记录所接收的窗口比例并且将被发回源节点102的窗口比例修订为降回到初始比例(例如0或者1)。基于上面在连接建立期间的窗口变换对话,会话的每个后续分组(例如TCP分组)的中的窗口字段必须随窗口变换对话而改变。
如上所述,窗口比例表示出大于64k的缓冲区大小,并且可以不需要窗口虚拟化。因此,窗口比例的变换可以用于表示在每个流控制模块220中的增加的缓冲区容量。该缓冲区容量的增加可作为窗口(或缓冲区)虚拟化而被提及。该缓冲区大小的增加允许更大的分组从各自的端节点102和106进出。注意到,TCP中的缓冲区大小典型地以字节表示,但是为了讨论的方便,由于“分组”和虚拟化相关,在此处描述中可以使用“分组”。
通过举例描述由流控制器220执行的窗口(或缓存区)虚拟化。在该示例中,源节点102和目标节点106被配置为与具有16k字节的有限的缓存区容量的传统端节点相似,其大约等于10个数据分组。通常,端节点102、106在能够传输下一组分组之前必须进行等待,直到该分组被传输并且收到确认为止。在一个实施例中,使用在流控制模块220中的增加的缓冲区容量,当源节点103传输其数据分组时,第一流控制模块220接收该分组,将该分组存储在其较大容量的缓存区(例如512个分组容量)中,并且立即将指示分组接收的确认信号(“REC-ACK”)发送回到源节点102。源节点102接着可以“刷新”其当前缓冲区,将10个新的数据分组载入到缓存区,并且将这些传输到第一流控制模块220上。再次,第一流控制模块220将REC-ACK信号发送回到源节点102,并且源节点102刷新其缓冲区并且对其载入10个更新的分组用于传输。
当第一流控制模块220接收到来自源节点的数据分组时,其相应地将该数据分组载入到缓冲区中。当其准备好时,第一流控制模块220可以开始将数据分组传输到第二流控制模块230,其也具有增加的缓存区大小,例如以便接收512个分组。第二流控制模块220’接收数据分组并且开始每次传输10个分组到目标节点106。在第二流控制节点220处接收的、来自目标节点106的每个REC-ACK致使又有10个分组被传输到目标节点106,直到所有的数据分组被传送为止。因此,本发明能够通过利用装置之间的流控制模块220、220’的较大的缓冲区来增加在源节点(发送器)102和目标节点(接收器)106之间的数据传输吞吐量。
注意到通过之前描述的“预确认”数据的传输,发送器(或源节点102)被允许传输比没有预确认时可能传输的数据更多的数据,因此造成更大的窗口大小。例如,在一个实施例中,流控制模块220、220’处于缺乏大窗口的节点(例如,源节点102或者目标节点106)附近时,该技术是有效的。
重新拥塞
流控制器220的另一个技术或者算法被称为重新拥塞。众所周知标准的TCP拥塞避免算法在面对特定网络条件(包括:大的RTT(往返时间)、高分组丢失率,以及其它)时性能低下。当设备200检测到诸如长的往返时间或者高的分组丢失的拥塞条件时,设备200插入、代入更适合该特定网络调节的替代的拥塞避免算法。在一个实施例中,重新拥塞算法使用预确认来有效地终止发送器和接收器之间的连接。设备200接着使用不同的拥塞避免算法从自身重新发送分组到接收器。重新拥塞算法可以依赖于TCP连接的特征。设备200监控每个TCP连接,在不同的维度将其特征化,选择适合用于当前特征的重新拥塞算法。
在一个实施例中,当检测到由往返时间(RTT)限制的TCP连接时,应用表现为多个TCP连接的重新拥塞算法。每个TCP连接操作在其自身性能限度内,但是聚合带宽获得了更高的性能水平。该机制中的一个参数是所应用的并行连接的数量(N)。N值过大则连接束获得超过其合理份额的带宽。N值过小则连接束获得低于其合理份额的带宽。建立“N”的一个方法依赖于设备200监控实际连接的分组大小、RTT和分组丢失率。将这些数字插入TCP响应曲线方程来提供本配置中单个TCP连接的性能的上限。如果连接束中每个连接正获得与计算出的上限性能基本相同的性能,则应用额外的并行连接。如果当前束正获得低于上限的性能,则减少并行连接的数量。依次方式,由于单独的连接束包含的并行性不比消除协议自身所强加的限制所需的并行性更多,所以维持了系统的整体公平性。进一步,每个单独的连接保留TCP兼容性。
建立“N”的另一个方法是使用并行流控制算法,例如TCP“Vegas”算法或者其改进版本“稳定的Vegas”。在该方法中,与连接束中的连接相关联的网络信息(例如,RTT、丢失率、平均分组大小等等)被聚集并且被应用到替代的流控制算法。该算法的结果进而被分布到控制其数量(即,N)的束的连接之间。可选地,束中的每个连接仍旧使用标准TCP拥塞避免算法。
在又一个实施例中,并行束中的单独的连接被虚拟化,即不建立实际的单独的TCP连接。事实上拥塞避免算法被修改为表现得就好像存在N个并行连接一样。该方法的优点在于对于经过多个网络节点而言就如同单个连接一样。因此重新拥塞算法不影响这些节点的QOS、安全性和其他监控方法。在又一个实施例中,并行束中的单独的连接是真实存在的,即独立的。为束中的并行连接的每一个建立TCP连接。不必修改用于每个TCP连接的拥塞避免算法。
重传
在一些实施例中,流控制器220可以使用本地重传技术。实施预确认的一个原因是为经过高损的链路(例如无线)作准备。在这些实施例中,预确认设备200或者流控制模块220最好位于无线链路“之前”。这使得要进行的重传更接近于高损链路,免去了网络的剩余部分的重传负担。设备200可提供本地重传,在这种情形中,由于链路错误而丢弃的分组由设备200直接重传。由于这消除了在端节点(诸如服务器106)和任一网络104的基础设施上的重传负担,所以这是有益的。利用设备200提供本地重传,丢弃的分组可以被重传通过高损链路而不必由端节点重传且不会引起端节点的数据传输率的对应下降。
实施预确认的另一个原因是避免接收超时(RTO)惩罚。在标准TCP中,即使是成功接收传输中的较大百分比的分组,但仍存在多种情况导致RTO。使用标准TCP算法,在一个RTT窗口中丢弃不只一个分组有可能会导致超时。此外,如果重传的分组被丢弃,则大部分TCP连接经历超时。在具有高带宽延迟产品的网络中,甚至相对小的分组丢失率也会导致频繁的重传超时(RTO)。在一个实施例中,设备200使用重传和超时算法来避免过早的RTO。设备200或者流控制器220基于每一分组来维持重传的计数。每传输一个分组,将计数加一,然后设备200继续传输分组。在一些实施例中,仅有当一个分组已经被重传预定的次数后才宣告RTO。
波前检测和消除二义性
在一些实施例中,设备200或者流控制器220在管理和控制网络流量中使用波前检测和消除二义性技术。在该技术中,流控制器220使用传输标识符或者号码来确定是否需要重传特定数据分组。举例来说,发送器在网络上传输数据分组,其中所传输的数据分组的每一个实例与一个传输号码相关联。可以理解,分组的传输号码与分组的序列号不相同,因为序列号标记分组中的数据,而传输号码标记该数据的传输的实例。传输号码可以是对于该目的可用的任意信息,包括与分组相关联的时间戳或者简单地增加的号码(类似于序列号或者分组号)。因为数据段可以被重传,所以不同的传输号码可以与特定的序列号相关联。
由于发送器传输数据分组,所以发送器保持被确认的数据分组传输的实例的数据结构。数据分组传输的每个实例由其序列号和传输号码标记。通过保持对于每个分组的传输号码,发送器保留数据分组的传输顺序。当发送器接收到ACK或者SACK时,发送器确定与接收器(在所接收的确认中)指示的已经接收的分组相关联的最高的传输号码。具有较低传输号码的任何未完成的未经确认的分组被假设为已丢失。
在一些实施例中,当到达分组已经被重传时,发送器呈现出模糊的情形:标准的ACK/SACK没有包含足够的信息来使发送器确定该到达分组的哪个传输触发了该确认。从而,在接收到模糊确认之后,发送器消除该确认二义性以将其与传输号码相关联。在不同的实施例中,多个技术的其中之一或者组合可以被用来解决该模糊性。
在一个实施例中,发送器在所传输的数据分组中包含标识符,然后,接收器在确认中返回该标识符或者该标识符的函数。该标识符可以是时间戳(例如在RFC1323中描述的TCP时间戳)、序列号、可以被用来在分组传输的两个或多个实例之间进行解析的任何其他信息。在TCP时间戳选项被用来消除确认的二义性的实施例中,使用高达32位唯一的信息来标记每个分组。接收到数据分组时,接收器通过确认将该唯一信息回送到发送器。发送器确保最初发送的分组和其重传的一个或者多个版本包含对于时间戳选项的不同值,这允许其明确地消除ACK的模糊性。发送器可以将该唯一信息保持在例如用来保存所发送的数据分组的状态的数据结构中。由于该技术与工业标准相兼容并且因此很少或不会遇到互操作性的问题,所以该技术是有益的。然而,该技术在一些实现中可能要求十个字节的TCP首部空间,这降低了网络上有效吞吐率并且减少了可用于其他TCP选项的空间。
在又一个实施例中,分组中的另一个字段,诸如IP ID字段,被用来以与上述TCP时间戳选项相似的方式来消除二义性。发送器安排该分组的最初和重传版本的ID字段值,以使在IP首部中具有不同的ID字段。在接收器或其代理装置接收到数据分组时,接收器将ACK分组的ID字段设置为触发该ACK的分组的ID字段的函数。由于该方法不需要发送额外的数据,保持了网络和TCP首部空间的效率,所以该方法是有益的。所选择的函数应有极大可能消除二义性。在优先实施例中,发送器选择IP ID值且将最高有效位设置为0。当接收器响应时,IP ID值被设置为相同的IP ID值,且最高有效位被设为1。
在另一个实施例中,与非模糊性确认相关联的传输号码被用来消除模糊确认的二义性。该技术基于这样的原理:由于两个分组在时间上更接近地传输,则对于这两个分组的确认将倾向于时间上更接近地接收。由于对于未被重传的分组所接收的确认可容易地与传输号码相关联,所以这样的分组不会导致模糊性。因此,可以将这些已知的传输号码与所接收的在时间上接近于已知确认的模糊确认的可能的传输号码相比较。发送器将模糊确认的传输号码与最近已知的所接收的传输号码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如果接收到对数据分组1的确认并且最后所接收的确认是针对数据分组5,那么发送器通过假设数据分组1的第三个实例导致了该确认来解决该模糊性。
选择性确认
设备200或者流控制器220的另一项技术是实现传输控制协议选择性确认或TCP SACK的实施例以确定已经收到哪些分组或没有收到哪些分组。该技术允许发送器明确地确定已经由接收器收到的分组的列表以及没有收到的分组的精确的列表。可以通过修改发送器和/或接收器或者通过将发送器侧和接收器侧流控制模块220插入到发送器和接收器之间的网络路径中来实现该功能。参考图1A或者1B,发送器(例如客户机102)被配置为通过网络104向接收器(例如服务器106)传输数据分组。作为响应,接收器将被称为SACK分组的TCP选择性确认选项返回给发送器。在一个实施例中,尽管此处为了简便仅讨论一个方向的通信,但是该通信是双向的。接收器保持包含接收器实际已收到的数据分组的序列号的一组范围的列表或者其他适合的数据结构。在一些实施例中,该列表根据序列号以升序或者降序排列。接收器还保持放弃的(left-off)指针,其包括对列表的引用并且指示从之前生成的SACK分组的放弃点。
当接收到数据分组时,接收器生成SACK分组并将其传输回到发送器。在一些实施例中,SACK分组包括多个字段,每个字段可以保留序列号的范围来指示一组已接收的数据分组。接收器用包括触发SACK分组的正在到达(landing)分组的序列号的范围来填充该SACK分组的第一字段。剩余可用的SACK字段用已收到的分组的列表的序列号的范围来填充。当该列表中的范围超过可以被载入SACK分组的范围时,接收器使用放弃指针来确定哪个范围被载入SACK分组。接收器从有序的列表连续插入SACK范围,从指针引用的范围开始并且沿列表持续向下,直到消耗完SACK分组的TCP首部中的可用的SACK范围空间。如果到达末端,则接收器环绕到列表的开始。在一些实施例中,两个或三个附加的SACK范围可以被添加到SACK范围信息。
一旦接收器生成SACK分组,接收器将确认发送会发送器。然后,接收器在列表中将放弃的指针前进一个或者多个SACK范围项。例如,如果接收器插入四个SACK范围,则放弃指针可以在列表中被推进两个SACK范围。当所推进的放弃的指针到达列表的末端,则指针被重置为列表的开始,从而有效地环绕已知所接收范围的列表,环绕该列表使得系统甚至能在SACK分组大量丢失的情况下良好地运行,这是由于一旦列表被环绕,则由于丢失的SACK分组导致的未被通信的SACK信息将最终被通信。
因此可以理解,SACK分组可以通信关于接收器的情况的多个细节。首先,SACK分组指示在SACK分组生成时接收器刚刚收到该SACK信息的第一字段中的数据分组。其次,SACK信息的第二和随后的字段指示接收器已经收到这些范围中的数据分组。SACK信息还暗示接收器在SACK分组生成时没有接收落入SACK信息的第二和随后的字段之间的任何一个数据分组。本质上,SACK信息中的第二和随后的字段之间的范围是所接收的数据中的“孔”,其中的数据是已知的未被传送的数据。因此,使用该方法,当SACK分组具有足够空间来包括多余两个的SACK范围时,接收器可以向发送器指示还没有被接收器接收的数据分组的范围。
在另一个实施例中,发送器使用上述的SACK分组结合上述重传技术来假定哪些数据分组已经被传送到接收器。例如,当重传算法(使用传输号码)宣告分组丢失时,发送器认为该分组仅是条件性丢失,因为有可能是识别该分组的接收的SACK分组丢失,而不是数据分组本身丢失。发送器因此将该分组添加到潜在丢失的分组的列表,称之为假定丢失的列表。每当SACK分组到达,将来自SACK分组的数据的已知丢失范围和假定丢失列表中的分组相比较。包括已知丢失的数据分组被宣告实际丢失并被随后重传。以此方式,组合这两个方案来将更好的关于已丢失且需要重传哪些分组的信息给予发送器。
事务边界检测
在一些实施例中,设备200或流控制器220使用被称为事务边界检测的技术。在一个实施例中,该技术适合于乒乓(ping-pong)表现的连接。在TCP层,乒乓行为是当一个通信器(发送器)发送数据然后等待来自另一个通信器(接收器)的响应。乒乓行为的例子包括远程程序调用、HTTP和其他。以上描述的算法使用重传超时来从与事务相关的最后的一个分组或多个的丢弃进行恢复。由于在一些实施例中,TCP RTO机制极端粗略,例如在所有情况中要求最小1秒的值,在这些情况下可以看到差的应用行为。
在一个实施例中,数据的发送器或耦合到发送器的流控制模块220检测所发送的数据中的事务边界。在检测到事务边界时,发送器或者流控制器220发送额外的分组,额外的分组的接收从接收器生成额外的ACK或者SACK响应。额外的分组的插入优选地限于改善的应用响应时间和网络能力利用之间的平衡。所插入的额外的分组的数量可以根据与该连接相关联的当前丢失率来进行选择,对于较高的丢失率的连接选择更多的分组。
检测事务边界的一个方法是基于时间的。如果发送器已经发送数据并停止,则在一段时间之后发送器或流控制模块220宣告事务边界。这可以和其他技术相结合。例如,由发送器在TCP首部中设置PSH(TCP推送)位可以指示事务边界。因此,将基于时间的方法和这些附加的试探方法相组合可以提供对于事务边界的更精确的检测。在另一个技术中,如果发送器或者流控制模块220理解应用协议,其可以解析协议数据流并且直接确定事务边界。在一些实施例中,可以独立于任一基于时间的机制使用此最后的行为。
响应于检测事务边界,发送器或流控制模块220向接收器传输额外的数据分组以便从接收器引发确认。因此,额外的数据分组应该使得接收器将响应于接收数据分组来至少产生ACK或SACK。在一个实施例中,简单地重传事务的最后一个或多个分组。相比于仅发送虚拟的数据分组,如果最后一个或多个分组已经被丢弃,这就具有重传所需数据的增加的益处。在又一个实施例中,发送最后一个或多个分组的片段,允许发送器来消除来自于其最初分组的这些分组到来的二义性。这使接收器避免错误的混淆任意重新排序自适应算法。在又一个实施例中,任意数量的公知的前向纠错技术可被用来为所插入的分组生成额外的数据,这允许重新构造接收器处丢失的或以其他方式错过的数据。
在一些实施例中,当对事务中的最后的数据分组的确认被丢弃时,此处描述的边界检测技术有助于避免超时。当发送器或流控制模块220接收对于这些额外的数据分组的确认时,发送器可以从这些额外的确认来确定最后的数据分组是否已经被接收或这需要被重传,从而避免超时。在一个实施例中,如果最后的分组已经被接收但是它们的确认被丢弃,则流控制模块220生成对该数据分组的确认,并且将该确认发送到发送器,从而告知发送器该数据分组已经被传送。在又一个实施例中,如果没有收到最后的分组,则流控制模块220向发送器发送一个分组来使发送器重传丢弃的数据分组。
重新分组
在又一个实施例中,设备200或流控制器220使用重新分组技术来改善传输层网络流量。在一些实施例中,TCP性能和分组大小成比例。因此增加分组大小能改进性能,除非其引起大大增加的分组丢失率或其他非线性效应,例如IP分片。通常,有线介质(诸如铜缆或光纤)具有极低的误码率,低到可以忽略不计。对于这些介质,在分片发生之前,最大化分组大小是有益的(通过底层传输介质的协议来限制最大化的分组大小)。但是对于具有较高丢失率的传输介质(例如,诸如WiFi等的无线技术,或者诸如电力线网络等高损环境),增加分组大小可能导致较低的传输率,因为介质引发的错误导致整个分组被丢弃(即,介质引发的错误超过对于该介质的标准纠错码的能力),从而增加了分组丢失率。分组丢失率中的显著大的增加实际上否定了增加的分组大小的任何性能益处。在一些情况中,对于TCP端点来选择最优的分组大小可能是困难的。例如,最优的分组大小可以根据每个链路的性质在传输路径时发生变化。
通过将设备200或流控制模块220插入到传输路径中,流控制器220监控链路的特征并且根据所确定的链路特征重新分组。在一个实施例中,设备200或流控制器220将具有连续数据的分组重新分组为少量的较大分组。在又一个实施例中,设备200或流控制器220通过将一系列大分组分为大量的较小的分组来对分组进行重新分组。在其他实施例中,设备200或流控制器220监控链路特征并且通过重新组合来调整分组大小以提高吞吐量。
QoS
仍参考图2A,在一些实施例中,流控制器220可以包括QoS引擎236,(也被称为QoS控制器)。在又一个实施例中,例如,设备200和/或网络优化引擎250包括单独的但与流控制器220通信的QoS引擎236。QoS引擎236包括用于执行改善任何网络连接的性能、操作或服务质量的一个或多个服务质量(QoS)技术的任何逻辑、商业规则、功能或操作。在一些实施例中,QoS引擎236包括为不同用户、应用、数据流或连接提供不同优先级的网络流量控制和管理机制。在其他实施例中,QoS引擎236为用户、应用、数据流或连接控制、维持或确保特定水平的性能。在一个实施例中,QoS引擎236为用户、应用、数据流或连接控制、维持或确保特定部分的带宽或网络容量。在一些实施例中,QoS引擎236监控对应于用户、应用、数据流或连接的性能或服务质量的所达到的水平,例如数据速率和延迟。响应于监控,QoS引擎236动态地控制或调整网络分组的调度优先级来获得期望水平的性能或服务质量。
在一些实施例中,QoS引擎236根据一个或多个类别或等级的服务来优先排序、调度和传输网络分组。在一些实施例中,服务类别或等级可以包括:1)尽最大努力,2)控制的负载,3)有保证的或者4)定性的。对于尽最大努力类的服务,设备200作出合理的努力来传送分组(标准服务水平)。对于控制的负载类的服务,设备200或QoS引擎236近似传输介质的标准的分组错误丢失或者近似轻度负载网络条件下的尽最大努力服务的行为。对于有保证类的服务,设备200或QoS引擎236保证来在连接期间以确定的速率传输数据的能力。对于定性类的服务,设备200或QoS引擎236将定性类服务用于要求或期望优先排序的流量的应用、用户、数据流或者连接,但不能对资源需求或服务水平进行定量。在这些情况中,设备200或QoS引擎236基于QoS引擎236的任意逻辑或配置或者基于商业规则或策略来确定服务类别或优先级。例如,在一个实施例中,QoS引擎236根据策略引擎295、295’指定的一个或多个策略来优先排序、调度和传输网络分组。
协议加速
协议加速器234包括用于优化、加速或以其他方式改善一个或多个协议的性能、操作或服务质量的任何逻辑、商业规则、功能或操作。在一个实施例中,协议加速器234在网络堆栈的层5-7的加速任何应用层协议。在其他实施例中,协议加速器234加速传输层或者层4协议。在一个实施例中,协议加速器234加速层2或层3的协议。在一些实施例中,协议加速器234被配置、构建或设计来根据数据类型、协议的特征和/或行为来优化或加速一个或多个协议的每一个。在又一个实施例中,协议加速器234被配置、构建或设计来改善用户体验、响应时间、网络或者计算机负载,和/或关于协议的网络或带宽利用。
在一个实施例中,协议加速器234被配置、构建或设计来最小化文件系统访问上的WAN延迟的影响。在一些实施例中,协议加速器234优化或加速CIFS(通用互联网文件系统)协议的使用来改善文件系统访问时间或对数据和文件的访问时间。在一些实施例中,协议加速器234优化或加速NFS(网络文件系统)协议的使用。在又一个实施例中,协议加速器234优化或加速文件传输协议(FTP)的使用。
在一个实施例中,协议加速器234被配置、构建或设计来优化或加速承载为有效载荷的或使用任何类型和形式的标记语言的协议。在其他实施例中,协议加速器234被配置、构建或设计来优化或加速超文本传输协议(HTTP)。在又一个实施例中,协议加速器234被配置、构建或设计来优化或加速承载有效载荷或以其他方式使用XML(可扩展标记语言)的协议。
透明并且多点部署配置
在一些实施例中,设备200和/或网络优化引擎250对于通过诸如WAN链路的网络连接或链路的任何数据流是透明的。在一个实施例中,设备200和/或网络优化引擎250以这样的方式操作:通过WAN的数据流是由任何网络监控、QoS管理或网络分析工具可识别的。在一些实施例中,设备200和/或网络优化引擎250不创建用于传输可以隐藏、遮掩或以其他方式使网络流量不透明的数据的任何隧道或流。在其他实施例中,设备200透明地操作,因为设备不改变网络分组的任何源和/或目标地址信息或端口信息,诸如互联网协议地址或端口号。在其他实施例中,设备200和/或网络优化引擎250被认为对于网络架构中的网络、应用、客户机、服务器或其他设备或计算装置透明地操作或运转。也就是在一些实施例中,设备是透明的,因为不必修改网络上的任何装置或设备的网络相关配置来支持设备200。
可以下面的部署配置的任何一个来部署设备200:1)串行流量,2)代理模式,3)虚拟串行模式。在一些实施例中,设备200可以与以下的一个或多个串行部署:路由器、客户机、服务器或者另一个网络装置或设备。在其他实施例中,设备200可以与以下的一个或多个并行部署:路由器、客户机、服务器或者另一个网络装置或设备。在并行部署中,路由器、客户机、服务器或者其他网络设备可以被配置为转发、转换或通过网络至设备200或者经由设备200转发、转换或通过网络。
在串行的实施例中,设备200与路由器的WAN串行部署。以此方式,来自WAN的所有流量在到达LAN的目的地之前穿过该设备。
在代理模式的实施例中,设备200被部署为客户机和服务器之间的代理装置。在一些实施例中,设备200使客户机与网络上的资源间接连接。例如,客户机经由设备200连接到资源,并且设备通过连接到该资源、不同的资源、或者通过从高速缓存供应该资源来提供资源。在一些情况中,设备可以对于不同的目的来改变客户机请求或者服务器响应,诸如对于此处所讨论的任何优化技术。在其他实施例中,设备200通过透明地拦截并转发到客户机和/或服务器的请求和响应来作为透明代理运行。不使用客户机侧配置,设备200可以将客户机请求重定向到不同的服务器或网络。在一些实施例中,设备200可以在穿过该设备的任何网络流量上执行任何类型和形式的网络地址转换(被称为NAT)。
在一些实施例中,设备200以虚拟串行模式配置来部署。在该实施例中,具有路由或转换功能的路由器或网络装置被配置为转发、路由或以其他方式提供发往网络或设备200的网络分组。设备200接着在该网络分组上执行任一期望的处理,诸如此处讨论的任一WAN优化技术。当完成处理时,设备200将经处理的网络分组转发到路由器以传输到网络上的目的地。以此方式,设备200可以并行耦合到路由器,但仍如同设备200串行一样操作。该部署模式还提供透明性,因为当分组被处理并经由设备通过网络传输时,保留了源和目标地址以及端口信息。
端节点部署
尽管在上文网络优化引擎250总是结合设备200来描述,但是网络优化引擎250或其任何部分可以被部署、分布或以其他方式操作在诸如客户机102和/或服务器106的任一端节点上。由此,客户机或服务器可以提供此处所描述的结合一个或多个设备200或者不结合设备200的网络优化引擎250的任何系统和方法。
现参考图2B,描述部署在一个或多个端节点的网络优化引擎250的示例实施例。总的来说,客户机102可以包括第一网络优化引擎250’并且服务器106可以包括第二网络优化引擎250’’。客户机102和服务器106可以建立传输层连接并且交换穿过或不穿过设备200的通信。
在一个实施例中,客户机102的网络优化引擎250’执行此处描述的技术来优化、加速或以其他方式改善与服务器106通信的网络流量的性能、操作或服务质量。在又一个实施例中,服务器106的网络优化引擎250’’执行此处描述的技术来优化、加速或以其他方式改善与客户机102通信的网络流量的性能、操作或服务质量。在一些实施例中,客户机102的网络优化引擎250’和服务器106的网络优化引擎250’’执行此处描述的技术来优化、加速或以其他方式改善在客户机102与服务器106之间通信的网络流量的性能、操作或服务质量。在又一个实施例中,客户机102的网络优化引擎250’结合设备200执行此处描述的技术来优化、加速或以其他方式改善与客户机102通信的网络流量的性能、操作或服务质量。在又一个实施例中,服务器106的网络优化引擎250’’结合设备200执行此处描述的技术来优化、加速或以其他方式改善与服务器106通信的网络流量的性能、操作或服务质量。
C.客户机代理
现参考图3,描述客户机代理120的实施例。客户机102包括客户机代理120,用于经由网络104与设备200、设备205和/或服务器106来建立、交换、管理和控制通信。在一些实施例中,客户机120(其也可以被称为WAN客户机)加速WAN网络通信和/或用于通过网络设备200通信。总的来说,客户机102在计算装置100上操作,该计算装置100拥有带有内核模式302以及用户模式303的操作系统,以及带有一个或多个层310a-310b的网络堆栈267。客户机102可以已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可通过网络堆栈267与网络104通信。所述应用之一,诸如web浏览器,也可包括第一程序322。例如,可在一些实施例中使用第一程序322来安装和/或执行客户机代理120,或其中任何部分。客户机代理120包括拦截机制或者拦截器350,用于从网络堆栈267拦截来自一个或者多个应用的网络通信。
与设备200一样,客户机102具有网络堆栈267,其包括任何类型和形式的软件、或硬件或其组合,用于提供与网络104的连接和通信。客户机102的网络堆栈267包括上文结合设备200所描述的任何一个网络堆栈实施例。在一些实施例中,客户机代理120或其任何部分被设计和构建为与由客户机102的操作系统安装或以其他方式提供的网络堆栈267一起操作或联合工作。
在进一步的细节中,客户机102或设备200(205)的网络堆栈267可包括任何类型和形式的接口,用于接收、获得、提供或以其它方式访问与客户机102的网络通信相关的任何信息和数据。在一个实施例中,与网络堆栈267的接口包括应用编程接口(API)。接口也可包括任何函数调用、钩子或过滤机制,事件或回调机制、或任何类型的接口技术。网络堆栈267通过接口可接收或提供与网络堆栈267的功能或操作相关的任何类型和形式的数据结构,例如对象。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括、引用或识别在网络堆栈267的协议层处理的网络分组的一部分,例如传输层的网络分组。在一些实施例中,数据结构325包括内核级别数据结构,而在其他实施例中,数据结构325包括用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈267的一部分、或者运行在内核模式302中的网络驱动程序或其它软件相关的数据结构、或者由运行或操作在操作系统的内核模式的服务、进程、任务、线程或其它可执行指令获得或收到的任何数据结构。
此外,网络堆栈267的一些部分可在内核模式302执行或操作,例如,数据链路或网络层,而其他部分在用户模式303执行或操作,例如网络堆栈267的应用层。例如,网络堆栈的第一部分310a可以给应用提供对网络堆栈267的用户模式访问,而网络堆栈267的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可包括网络堆栈267的一个或多个更上层,例如层5-7的任何层。在其它实施例中,网络堆栈267的第二部分310b包括一个或多个较低的层,例如层1-4的任何层。网络堆栈267的第一部分310a和第二部分310b的每一个可包括网络堆栈267的任何部分,位于任何一个或多个网络层,处于用户模式203、内核模式202,或其组合,或在网络层的任何部分或者到网络层的接口点,或用户模式203和内核模式202的任何部分或到用户模式203和内核模式202的接口点。
拦截器350可以包括软件、硬件、或者软件和硬件的任何组合。在一个实施例中,拦截器350在网络堆栈267的任一点拦截或以其他方式接收网络通信,并且重定向或者传输网络通信到由拦截器350或者客户机代理120所期望的、管理的或者控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈267的网络通信并且传输该网络通信到设备200,用于在第二网络104上传输。在一些实施例中,拦截器350包括驱动器或是驱动器,例如被构建和设计来与网络堆栈267对接并一同工作的网络驱动器。在一些实施例中,客户机代理120和/或拦截器350操作在网络堆栈267的一个或者多个层,诸如在传输层。在一个实施例中,拦截器350包括过滤器驱动器、钩子机制、或者连接到网络堆栈的传输层的任一形式和类型的合适网络驱动器接口,诸如通过传输驱动器接口(TDI)。在一些实施例中,拦截器350连接到诸如传输层的第一协议层和诸如传输协议层之上的任何层的另一个协议层,例如,应用协议层。在一个实施例中,拦截器350可以包括遵守网络驱动器接口规范(NDIS)的驱动器,或者NDIS驱动器。在又一个实施例中,拦截器350可以包括微型过滤器或者微端口驱动器。在一个实施例中,拦截器350或其部分在内核模式202中操作。在又一个实施例中,拦截器350或其部分在用户模式203中操作。在一些实施例中,拦截器350的一部分在内核模式202中操作,而拦截器350的另一部分在用户模式203中操作。在其它实施例中,客户机代理120在用户模式203操作,但通过拦截器350连接到内核模式驱动器、进程、服务、任务或者操作系统的部分,诸如以获取内核级数据结构225。在其它实施例中,拦截器350为用户模式应用或者程序,诸如应用。
在一个实施例中,拦截器350拦截或接收任何的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以设置目的地信息,诸如到期望位置的目的地IP地址和/或端口用于定位。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350把该连接的目的地信息设置为客户机代理120监听的客户机102的本地IP地址和端口。例如,客户机代理120可以包括为重定向的传输层通信监听本地IP地址和端口的代理服务。在一些实施例中,客户机代理120随后将重定向的传输层通信传送到设备200。
在一些实施例中,拦截器350拦截域名服务(DNS)请求。在一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在又一个实施例中,拦截器发送所拦截的DNS请求到设备200以进行DNS解析。在一个实施例中,设备200解析DNS请求并且将DNS响应传送到客户机代理120。在一些实施例中,设备200经另一个设备200’或者DNS服务器106来解析DNS请求。
在又一个实施例中,客户机代理120可以包括两个代理120和120’。在一个实施例中,第一代理120可以包括在网络堆栈267的网络层操作的拦截器350。在一些实施例中,第一代理120拦截网络层请求,诸如互联网控制消息协议(ICMP)请求(例如,查验和跟踪路由)。在其它实施例中,第二代理120’可以在传输层操作并且拦截传输层通信。在一些实施例中,第一代理120在网络堆栈210的一层拦截通信并且与第二代理120’对接或者将所拦截的通信传送到第二代理120’。
客户机代理120和/或拦截器350可以以对网络堆栈267的任何其它协议层透明的方式在协议层操作或与之对接。例如,在一个实施例中,拦截器350可以以对诸如网络层的传输层之下的任何协议层和诸如会话、表示或应用层协议的传输层之上的任何协议层透明的方式在网络堆栈267的传输层操作或与之对接。这允许网络堆栈267的其它协议层如所期望的进行操作并无需修改以使用拦截器350。这样,客户机代理120和/或拦截器350可以与传输层对接以安全、优化、加速、路由或者负载平衡经由传输层承载的任一协议提供的任一通信,诸如TCP/IP上的任一应用层协议。
此外,客户机代理120和/或拦截器350可以以对任何应用、客户机102的用户、客户机102和/或与客户机102通信的诸如服务器或设备200、206的任何其它计算装置100透明的方式在网络堆栈267上操作或与之对接。客户机代理120和/或拦截器350可以以无需修改应用的方式被安装和/或执行在客户机102上。在一个实施例中,客户机代理120或其任何部分被以对客户机102、设备200、205或服务器106的任何网络配置透明的方式被安装和/或执行。在一些实施例中,客户机代理120或其任何部分被以无需修改客户机102、设备200、205或服务器106的任何网络配置的方式被安装和/或执行。在一个实施例中,客户机102的用户或者与客户机102通信的计算装置未意识到客户机代理120或其任何部分的存在、执行或者操作。同样,在一些实施例中,相对于应用、客户机102的用户、客户机102、诸如服务器或设备200、205的另一个计算装置、或者在由拦截器350连接的协议层之上和/或之下的任何协议层透明地来安装、执行和/或操作客户机代理120和/或拦截器350。
客户机代理120包括流客户机306、收集代理304、SSL VPN代理308、网络优化引擎250和/或加速程序302。在一个实施例中,客户机代理120包括由佛罗里达州Fort Lauderdale的Citrix Systems公司开发的独立计算架构(ICA)客户机或其任一部分,并且也被称为ICA客户机。在一些实施例中,客户机代理120包括应用流客户机306,用于从服务器106流式传输应用到客户机102。在又一个实施例中,客户机代理120包括收集代理304,用于执行端点检测/扫描并且用于为设备200和/或服务器106收集端点信息。在一些实施例中,客户机代理120具有一个或多个网络加速或优化程序或代理,例如网络优化引擎250和加速程序302。在一个实施例中,加速程序302加速客户机102和服务器106之间的经过设备205’的通信。在一些实施例中,网络优化引擎250提供此处所讨论的WAN优化技术。
流客户机306是应用、程序、进程、服务、任务或者可执行指令集,所述应用、程序、进程、服务、任务或者可执行指令集用于接收和执行从服务器106所流式传输的应用。服务器106可以流式传输一个或者多个应用数据文件到流客户机306,用于播放、执行或者以其它方式引起客户机102上的应用被执行。在一些实施例中,服务器106发送一组压缩或者打包的应用数据文件到流客户机306。在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案文件中,例如CAB、ZIP、SIT、TAR、JAR或其它档案文件。在一个实施例中,服务器106解压缩、解包或者解档应用文件并且将该文件发送到客户机102。在又一个实施例中,客户机102解压缩、解包或者解档应用文件。流客户机306动态安装应用或其部分,并且执行该应用。在一个实施例中,流客户机306可以是可执行程序。在一些实施例中,流客户机306可以能够启动另一个可执行程序。
收集代理304是用于识别、获取和/或收集关于客户机102的信息的应用、程序、进程、服务、任务或者可执行指令集。在一些实施例中,设备200发送收集代理304到客户机102或者客户机代理120。可以根据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它实施例中,收集代理304发送在客户机102上收集的信息到设备200。在一个实施例中,设备200的策略引擎236使用所收集的信息来确定和提供客户机到网络104的连接的访问、验证和授权控制。
在一个实施例中,收集代理304包括端点检测和扫描机制,其识别并且确定客户机的一个或者多个属性或者特征。例如,收集代理304可以识别和确定任何一个或多个以下的客户机侧属性:1)操作系统和/或操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和5)文件。收集代理304还可以识别并确定客户机上任何一个或多个以下软件的存在或版本:1)防病毒软件;2)个人防火墙软件;3)防垃圾邮件软件,和4)互联网安全软件。策略引擎236可以具有基于客户机或客户机侧属性的任何一个或多个属性或特性的一个或多个策略。
SSL VPN代理308是应用、程序、进程、服务、任务或者可执行指令集,所述应用、程序、进程、服务、任务或者可执行指令集用于建立从第一网络104到第二网络104’、104”的安全套接字层(SSL)虚拟专用网(VPN)连接,或从客户机102到服务器106的SSL VPN连接。在一个实施例中,SSLVPN代理308建立从公共网104到专用网104’或104”的SSL VPN连接。在一些实施例中,SSL VPN代理308和设备205联合工作以提供SSL VPN连接。在一个实施例中,SSL VPN代理308建立与设备205的第一传输层连接。在一些实施例中,设备205建立与服务器106的第二传输层连接。在又一个实施例中,SSL VPN代理308建立与客户机上应用的第一传输层连接,以及与设备205的第二传输层连接。在其他实施例中,SSL VPN代理308和WAN优化设备200联合工作以提供SSL VPN连通。
在一些实施例中,加速程序302是用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机与服务器106的通信和/或对服务器106的访问,诸如访问由服务器106提供的应用。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个下列加速技术:1)多协议压缩,2)传输控制协议池,3)传输控制协议多路复用,4)传输控制协议缓冲,以及5)通过高速缓存管理器的高速缓存。另外,加速程序302可执行由客户机102接收和/或发送的任何通信的加密和/或解密。在一些实施例中,加速程序302以集成的方式或者格式执行一个或者多个加速技术。另外,加速程序302可以对作为传输层协议的网络分组的有效载荷所承载的任一协议或者多协议执行压缩。
在一个实施例中,加速程序302被设计、构建或配置为与设备205一起工作以提供LAN侧加速或者提供通过设备205提供的加速技术。例如,在由Citrix System公司出品的NetScaler设备205的一个实施例中,加速程序302包括NetScaler客户机。在一些实施例中,加速程序302在例如分支机构中的远程装置中提供独立的NetScaler加速技术。在其他实施例中,加速程序302和一个或多个NetScaler设备205联合工作。在一个实施例中,加速程序302提供网络流量的LAN侧或基于LAN的加速或优化。
在一些实施例中,网络优化引擎250可以被设计、构建或配置为与WAN优化设备200一起工作。在其他实施例中,网络优化引擎250可以被设计、构建或配置为用或不用设备200提供设备200的WAN优化技术。例如,在由Citrix System公司出品的WANScaler设备200的一个实施例中,网络优化引擎250包括WANScaler客户机。在一些实施例中,网络优化引擎250在例如分支机构的远程位置中提供独立的WANScaler加速技术。在其他实施例中,网络优化引擎250和一个或多个WANScaler设备200联合工作。
在又一个实施例中,网络优化引擎250包括加速程序302、或加速程序302的功能、操作和逻辑。在一些实施例中,加速程序302包括网络优化引擎250或网络优化引擎250的功能、操作和逻辑。在又一个实施例中,网络优化引擎250作为从加速程序302分开的程序或可执行指令集而被提供或安装。在其他实施例中,网络优化引擎250和加速程序302可被包括在同一程序或同一可执行指令集中。
在一些实施例中,仍参见图3,第一程序322可以用于自动地、静默地、透明地或者以其它方式安装和/或执行客户机代理120或其任何部分。在一个实施例中,第一程序322包括插件组件,例如ActiveX控件或Java控件或脚本,其加载到应用并由应用执行。例如,第一程序包括由web浏览器应用加载和运行的ActiveX控件,例如在存储器空间或应用的上下文中。在又一个实施例中,第一程序322包括被例如浏览器的应用载入并执行的可执行指令集。在一个实施例中,第一程序322是被设计和构造为安装客户机代理120的程序。在一些实施例中,第一程序322通过网络从另一个计算装置获得、下载、或接收客户机代理120。在又一个实施例中,第一程序322是安装程序或即插即用管理器,用于在客户机102的操作系统上安装诸如网络驱动和客户机代理120或其任何部分的程序。
在一些实施例中,客户机代理120的每一或任一部分(流客户机360、收集代理304、SSL VPN代理308和拦截代理350)可作为单独的应用、程序、进程、服务、任务或可执行指令集而被安装、执行、配置或操作。在其他实施例中,客户机代理120的每一或任一部分可以一起作为单个客户机代理120而被安装、执行、配置或操作。
D.用于具有不同优先级分组的单个连接的QoS的系统和方法
现参考图4A和4B,描述了用于为具有多优先级数据流的连接提供服务质量(QoS)的本解决方案的实施例。本解决方案的实施例通过对穿过连接的协议数据单元(PDU)或字节流的窗口执行过滤或平均,来提供基于连接的优先级。基于过滤或平均为连接设置优先级。尽管底层PDU可能具有与为连接设置的一个优先级不同的优先级,可将该连接的优先级设置为这些PDU的平均优先级。该系统向穿过中间装置的每个连接提供基于连接的优先级。随着经由连接传输的PDU或字节的优先级发生变化,系统可动态地改变该连接的优先级。系统可缓慢或迅速或者以任何速率控制方式来改变连接的优先级。系统可基于其他因素(例如,链接利用率)来动态或者自适应地改变连接的优先级。
现参考图4A,描述了用于为连接提供QoS的系统的实施例,该系统可以在连接内承载不同优先级的数据流。简要概括,诸如中间设备(例如设备200)或者客户机上的代理120的中间装置,可接收或拦截经由多个连接410A-410N(总的称作连接410)的数据流。连接可以是任何类型和形式的传输层连接,如TCP连接或UDP连接。连接可穿过一个或多个网络104。连接可包括多个连接:中间装置和一个端点之间的第一连接,以及中间装置和另一个端点之间的第二连接。传输层连接可承载传输层之上的一个或多个协议,如任何应用层和/或会话协议。例如,传输层连接可承载远程显示协议,如ICA或RDP。每个协议层可包括数据和/或字段或者有时被称作协议数据单元(PDU)的协议结构。在一些实施例中,发送者、接收者和/或中间装置可通过传输层连接来加密这些PDU或者对该PDU采用隧道技术。
由传输连接410承载的任何协议可以为协议中的PDU或数据流标识优先级。在一些实施例中,协议数据的发送者可在PDU的字段中标记、设置或插入值来标识优先级。PDU的协议可使用通道在同一连接上传输具有不同优先级的数据。每个通道具有不同的预定优先级或者可以其他方式被设置或分配不同的优先级。协议的结构(例如头部或字段),可用于标识通道和/或优先级。在一些实施例中,在相同的连接上,同一协议的每个PDU具有与同一协议的另一个PDU相同或不同的优先级。如此,在一些实施例中,在相同连接上传输的PDU流具有变化的优先级,或者具有随时间变化的优先级。每个连接410A-410N可承载具有相同或不同优先级的PDU的分组。例如,单个连接410N可承载多通道协议,如ICA,其中每个通道承载具有不同于另一通道的优先级的数据。
中间装置包括具有QoS引擎236的网络优化引擎250。QoS引擎的过滤器420基于过滤器窗口422将过滤器420A-420N应用于经由每个连接410A-410N接收的数据流的优先级。QoS引擎基于过滤为每个连接设置连接优先级430A-430N,其中过滤可产生窗口中优先级的平均值。在设置连接优先级时,QoS引擎可在连接的网络流量的任何层处设置任何字段或协议结构(例如经由分组头部中任何ToC/Diff位),以标识设置的优先级。QoS引擎可基于已过滤的优先级的变化自适应地改变连接的优先级,并且也可以基于链接利用率424自适应地改变连接的优先级。QoS可将任何速率限制425控制应用于任何连接的优先级的变化速率。
在进一步的细节中,中间装置可包括本文描述的设备200、205’的任何实施例。在一些实施例中,中间装置是WAN优化装置。在一些实施例中,中间装置可包括本文描述的客户机代理120的任何实施例。在一些实施例中,该代理可以在发送者上执行。在一些实施例中,该代理可以在接收者上执行。在一些实施例中,中间装置可包括本文描述的网络优化250的任何实施例。在一些实施例中,中间装置可代理传输层连接。在一些实施例中,中间装置可终止来自一个端点(如发送者)的传输层连接,并且建立到接收者的第二层连接。在这些实施例中,中间装置可将从发送者到接收者的传输层连接分解为多个传输层连接。中间装置可对发送者和/或接收者(如客户机和服务器)透明地分解这些连接。
中间装置可建立、代理或者以其他方式处理多个传输层连接410A-410N。在任何一个连接内,数据流可包括不同优先级的数据或PDU。在一些实施例中,穿过连接的一个或多个分组,或者其中的任何数据或PDU,可具有或者被设置为优先级A,而穿过同一连接的一个或多个其他分组,或者其中的任何数据或PDU,可具有或者被设置为优先级B,依此类推。在一些实施例中,同一连接内经由分组承载的协议数据单元可能具有不同的优先级。在一些实施例中,连接内的第一字节流或字节组可具有一个优先级,而同一连接内的另一个或者随后的字节流或字节组具有不同的优先级。在一些实施例中。由连接承载的协议可包括多个虚拟流或虚通道。在一些实施例中,该协议是ICA。协议的每个通道可被分配或使用一个或多个优先级。连接内的每个通道可具有不同于另一个通道的优先级。可经由分组的头部内的任何标签、标记、字段或值或者分组的字段来设置或标识任何通道、PDU或者字节流/组的优先级。在一些实施例中,可在发送者和接收者之间协商优先级。在一些实施例中,可在发送者和中间装置和/或接收者和中间装置之间协商优先级。
用于任何通道、PDU或字节流/组的优先级范围可包括任何范围。在一些实施例中,优先级可以是基于数值的,例如范围0-X、1-N等。在一些实施例中,优先级可以是基于字符串的,例如低、中或高。可采用一对或更多优先级别来粗略的划分优先级,或者可采用多个优先级别来粒度划分优先级。优先级可与通道的类型或名称相对应。在一些实施例中,可基于通道的类型或名称来预先确定优先级。
经由通道、PDU或者字节,可在单个传输层连接内在时间和/或空间上多路复用多个优先级数据流。在一些实施例中,任何通道、PDU或字节的优先级随着时间以任何程度或者粒度而改变。在一些实施例中,任何通道、PDU或字节的优先级可在一段时间内保持不变。在一些实施例中,任何通道、PDU或字节的优先级可改变但在一段时间内保持一致。在一些实施例中,优先级可在每个PDU或者分组的有效载荷之后改变。在一些实施例中,优先级可在一系列PDU、分组的有效载荷或分组之后改变。在一些实施例中,优先级可能并不在每个PDU或分组的有效载荷之后改变。在一些实施例中,优先级可能并不在一系列PDU、分组的有效载荷或分组后改变。
中间装置的优化引擎250可对连接410A-410N的网络流量执行本文描述的任何优化。在一些实施例中,优化引擎包括QoS引擎236。在一些实施例中,QoS引擎包括结合图2A描述的任何实施例。QoS引擎可包括在中间装置上执行本文描述的用于基于任何过滤和连接来确定优先级的可执行指令。QoS引擎可过滤每个连接内数据流的不同优先级,以便为该连接确定优先级430A-430N。中间装置可存储或缓冲数据流,并且接着根据连接的优先级430A-430N传输该缓冲的数据流。QoS引擎可使用限定的空间和/或时间窗口,其中通过该窗口来过滤优先级。由于每个连接内的优先级随着时间和空间变化,QoS可调整或改变为每个连接建立的优先级430A-430N。
QoS引擎可为每个分组、PDU或字节组识别、提取或确定优先级。QoS可以在存储装置或装置的存储元件(如缓冲区)中存储该优先级。QoS可存储由中间装置接收的关于任何分组、PDU或字节组的优先级。QoS可存储当前在发送者和接收者之间传输的任何分组、PDU或字节组的优先级。QoS可存储等待被中间装置传输的任何分组、PDU或字节组的优先级。QoS可存储在当前窗口内的任何分组、PDU或字节组的优先级。QoS可存储在先前窗口内的任何分组、PDU或字节组的优先级。QoS可存储多个窗口的任何分组、PDU或字节组的优先级。QoS可存储预定时间段内的优先级。QoS可存储预定数量的分组、PDU或字节的优先级。QoS引擎可将优先级存储为PDU、分组或字节组的状态。在一些实施例中,该系统并不存储PDU、分组或字节组,而是仅存储它们的优先级。在一些实施例中,例如在具有8个不同优先级的系统中,每个PDU可使用3位状态。
QoS引擎可包括任何类型和形式的过滤器420。过滤器可基于通道、PDU或者字节。过滤器可包括对优先级执行数学或统计操作的逻辑、操作或者功能,该优先级例如是由中间装置标识和存储的优先级。过滤器可为连接计算多个PDU的优先级值的平均值。过滤器可为连接计算字节流的优先级值的平均值。过滤器可跨越穿过连接的多个通道计算优先级值的平均值。过滤器可计算窗口422内多个PDU、通道或字节的优先级值的平均值。过滤器可计算优先级值的移动均值。过滤器可计算优先级值的加权平均值。在一些实施例中,权重可基于具有分配的优先级的字节或PDU的数量。在一些实施例中,权重可基于窗口内承载分配的优先级的分组的数量。在一些实施例中,权重可基于穿过连接的特定通道(例如在窗口内)的PDU数量。
过滤器可包括任何类型和形式的数字过滤器。过滤器包括任何类型和形式的模拟过滤器。在一些实施例中,过滤器包括有限脉冲响应(FIR)过滤器。在一些实施例中,过滤器包括矩形窗过滤器。在一些实施例中,过滤器包括无限脉冲响应(IIR)过滤器。在一些实施例中,过滤器包括被设计和构造为对一个或多个输入(例如多个优先级)执行平均功能或过滤器,且提供平均值作为输出的可执行指令。在一些实施例中,过滤器可包括硬件装置或电子电路,其根据设计和/或构造的该过滤器所执行的过滤或平均的类型,对一个或多个输入(例如多个优先级)执行平均功能或过滤器,并且提供平均值作为输出。
窗口422,有时被称作平均窗口或均值窗口,可包括基于任何测量单位的窗口大小,如字节大小或者时间。窗口的大小可基于时间,例如预定时间段内的优先级或者频率。窗口大小可基于空间,例如接收或缓冲的PDU或字节的数量。窗口大小可基于时间和空间,例如在一段时间内接收的PDU或字节的数量。窗口的大小可基于优先级的变化或者基于优先级的变化速率。窗口可以是滚动窗口,其可以与先前或随后的窗口重叠或者不重叠。窗口可基于采样或采样计划,例如对窗口内多个优先级进行采样。采样可基于时间和/或基于空间(例如,预定时间段内每第n个优先级)。
每个连接可具有相同窗口或不同窗口。QoS引擎可基于每个连接的链接利用率为该连接分配窗口。QoS引擎可基于中间装置的链接利用率为每个连接分配窗口。QoS引擎可基于每个连接的历史操作和/或性能统计为该连接分配窗口。QoS引擎可基于链接利用率或历史统计改变每个连接的窗口。QoS引擎可以预定的频率改变每个连接的窗口。
QoS引擎可基于将过滤器应用于连接内优先级的窗口的结果来确定或建立连接优先级或者基于连接的优先级。QoS引擎可建立关于每个新的或者随后的窗口的连接优先级。QoS可基于预定频率确定或建立连接优先级,该预定频率可以是基于时间或窗口的。QoS可为连接确定或建立单个优先级,用于在连接内传输分组、PDU或字节。该单个优先级可与该连接内底层分组、PDU或字节的优先级相同或者不同。QoS可为将由中间装置经由连接传输到接收者的分组、PDU或字节确定或建立连接优先级。QoS可为连接确定或建立优先级,用于传输其中已确定了优先级的窗口的分组、PDU或字节。
QoS引擎或网络优化引擎250可在将由中间装置传输的网络分组中设置任何QoS字段或位。QoS引擎或网络优化引擎250可在网络堆栈任何层的任何头部中设置任何QoS字段或位。在一些实施例中,QoS引擎或网络优化引擎250可在网络或IP层中设置任何优先级头部或字段。在一些实施例中,QoS引擎或网络优化引擎250可在传输层中设置任何优先级头部或字段。在一些实施例中,QoS引擎或网络优化引擎250可在从中确定了平均优先级的PDU、数据或通道的层下方的任何层中设置任何优先级头部或字段。在一些实施例中,QoS引擎或网络优化引擎250可在从中确定了平均优先级的PDU、数据或通道的层上方的任何层中设置任何优先级头部或字段。QoS引擎或网络优化引擎250可在由分组承载的任何协议中设置任何QoS字段或位。QoS引擎或网络优化引擎250可在由分组承载的任何有效载荷中设置任何QoS字段或位。在一些实施例中,QoS引擎可设置分组的任何DIFFserv(差分服务模型)位。在一些实施例中,QoS引擎可设置分组的任何服务类型(ToS)位。
QoS引擎可提供自适应或动态的基于连接的优先级,除了每个连接内PDU、通道或字节的优先级,该优先级还考虑其他因素。QoS引擎可监控和测量由中间装置到一个或多个接收者的链接利用率。QoS引擎可监控和测量每个连接的链接利用率。QoS引擎可监控和测量中间装置和/或连接的带宽利用率。例如,QoS引擎可确定经由中间装置正被发送的字节数量。QoS引擎可确定经由中间装置正被发送的字节或PDU的传输速率。QoS引擎可确定经由连接正被发送的字节数量。QoS引擎可却确定经由连接正被发送的PDU的传输速率。QoS引擎可监控和测量中间装置和/或连接的吞吐量利用率。
基于利用率,QoS引擎可调整已分配或者将要分配给任何连接的优先级。QoS引擎可与过滤器相接、与其集成或与其通信,或者对该过滤器进行响应。在一些实施例中,过滤器对该监控和链接利用率的确定进行响应。在一些实施例中,QoS引擎可将基于利用率的权重或其他因素作为输入提供给过滤器。在一些实施例中,QoS引擎可提高由过滤器确定的连接优先级的权重。在一些实施例中,QoS引擎可降低由过滤器确定的连接优先级的权重。在一些实施例中,QoS引擎独立于过滤器基于利用率来调整连接的优先级。例如,QoS引擎可为连接分配来自过滤器的优先级,并且随着利用率的变化,QoS引擎相应地改变该连接的优先级。尽管QoS引擎可基于利用率改变同一连接的已分配优先级,过滤器还可基于连接内PDU、通道或字节流的优先级,不断地改变将要分配或者已被分配给同一连接的优先级。
QoS引擎可提供对基于连接的优先级的变化的速率控制425。QoS引擎可控制优先级的变化速率。QoS引擎可控制连接优先级的变化有多快或多慢。QoS引擎可允许仅在预定量内改变连接的优先级,例如,一次改变一个百分比。QoS引擎可允许在预定数量的窗口之后改变连接的优先级。QoS引擎可允许在预定数量的字节或PDU之后改变连接的优先级。QoS引擎可允许在预定时间段之后改变连接的优先级。QoS引擎可允许基于利用率或其变化来改变连接的优先级。例如,引擎QoS引擎可允许当利用率在预定阈值内时改变连接的优先级。
QoS引擎可响应于变化速率动态地调整该预定量。QoS引擎可响应于分配给连接的优先级值动态地调整该预定量。例如,QoS引擎可允许较慢或较快地改变较低的优先级。在一些实施例中,QoS引擎可允许较慢或较快地改变较高的优先级。例如,QoS引擎可在遇到低优先级的PDU时快速降低连接优先级,并且接着基于时间以及具有特定优先级的PDU数量缓慢地提高连接优先级。QoS引擎可仅允许连接优先级以优先级的预定级别、数量或粒度进行变化。QoS引擎可以以优先级的预定级别、数量或粒度来调节优先级的变化。QoS引擎可以仅允许连接优先级随时间以预定速率进行变化。QoS引擎可以以预定速率来调节优先级的变化速率。
中间装置可以例如由QoS或网络优化引擎接收第一组分组并在收到它们时缓冲该第一组分组,对这样的分组执行优先级过滤、为连接分配连接优先级,以及在为连接应用或生效基于那些分组确定的连接优先级的同时,经由该连接传输那些缓冲的分组。中间装置,例如经由QoS或网络优化引擎,可接收下一组或随后一组分组并在接收时缓冲它们、对这样的分组执行优先级过滤、为连接分配连接优先级,并且在为该连接应用或生效基于那些分组确定的连接优先级的同时,经由该连接传输下一组或随后一组分组的那些缓冲的分组。如此,在一些实施例中,由于连接被分配连接优先级,中间装置可通过该连接传输作为连接优先级的基础的那些分组。例如,中间装置可为窗口分配连接优先级,并且在向连接分配关于该窗口的连接优先级的同时传输该窗口中的那些分组。
QoS引擎可基于分配给每个连接的优先级从中间装置传输分组。例如,QoS引擎可首先传输连接优先级高于第二连接的第一连接的一个或多个分组。QoS引擎可使用任何类型和形式的确定优先级方法,以基于分配给每个连接的优先级从中间装置传输分组。在一些实施例中,QoS引擎在将被传输的分组或PDU中设置优先级。在一些实施例中,中间装置将分组传输到QoS装置,以使用基于连接的优先级为该连接执行QoS。
现参考图4B,描述用于为承载多个优先级数据流的连接确定基于连接的优先级的方法的实施例。简要概括,在步骤450,中间装置为每个连接识别在该连接内的虚通道、接收的PDU或字节的优先级。在步骤455,中间装置将过滤器应用于PDU/字节的计数/采样。在步骤460,基于过滤,中间装置向连接分配优先级。因此,尽管连接内的PDU或字节具有不同的优先级,但该连接基于对这些不同优先级进行过滤具有单个优先级。中间装置可连续识别和过滤PDU/字节优先级,从而为连接分配优先级。中间装置可基于链接利用率和/或速率控制来调整连接的优先级。在步骤465,中间装置基于分配给连接的优先级传输该连接的PDU/字节。
在步骤450,中间装置识别由中间装置接收的或者穿过该中间装置的连接内的优先级。中间装置可为连接接收和缓冲将要为其标识优先级的分组。中间装置可为连接接收和缓冲将要为其标识优先级的PDU、数据或者传输层分组的有效载荷的字节。中间装置可为每个单个传输层连接接收承载多个协议数据单元的多个分组。多个协议数据单元中的每个协议数据单元可标识多个分组中另一个协议数据单元的相同或不同优先级。在一些实施例中,中间装置可为每个单个传输层连接接收承载远程显示协议(如ICA或RDP)的多个协议数据单元的多个分组。每个协议数据单元可标识虚通道或者与其相对应,其中该虚通道可具有优先级。
中间装置可从经由连接承载的网络堆栈的任何层处的任何协议的任何头部或字段,识别虚通道、PDU或者字节组的优先级。中间装置可从承载虚通道、PDU或字节组的协议的任何头部或字段,识别该虚通道、PDU或字节组的优先级。中间装置可从连接的传输层之上的协议的任何头部或字段,识别虚通道、PDU或字节组的优先级。中间装置可从由连接的传输层分组承载的有效载荷中识别虚通道、PDU或字节组的优先级。
中间装置可根据从PDU识别的每个优先级实例来标识优先级。中间装置可从数据或字节流内识别的每个优先级实例来标识优先级。中间装置可为每个连接在预定窗口内标识优先级。中间装置可基于虚通道、PDU或字节组来采样优先级。中间装置可向中间装置的存储器或存储元件存储优先级。中间装置可存储来自窗口的优先级组。中间装置可使用数据结构、数组或对象将标识的优先级保存在存储器中。中间装置可具有按逐个连接的形式来存储或保存标识的优先级的数据结构、数组或对象。
在步骤455,中间装置为连接将过滤器应用于一组优先级。中间装置的过滤器可基于有限脉冲响应(FIR)过滤来确定平均优先级。中间装置的过滤器可基于无限脉冲响应(IIR)过滤来确定平均优先级。中间装置的过滤器可依据预定数量的协议数据单元来指定、配置或标识用于过滤的预定窗口或者将用于过滤的预定窗口指定、配置或标识为预定数量的协议数据单元。中间装置可为由该中间装置接收的多个协议数据单元的协议数据单元预定窗口确定平均优先级。中间装置的过滤器可依据预定时间和/或空间条件来指定、配置或标识用于过滤的预定窗口,或者将用于过滤的预定窗口指定、配置或标识为预定的时间和/或空间条件。
中间装置将过滤器应用于穿过该中间装置或者由该中间装置管理的每个连接的一组优先级。中间装置可应用过滤器以便基于穿过连接或由该连接承载的数据的不同优先级来生成、计算或提供该连接的优先级值。中间装置可将过滤器应用到一个或多个优先级窗口。中间装置可应用过滤器以便确定对一组优先级(如优先级窗口)的平均类型。中间装置可应用该过滤器以对一组优先级(如优先级窗口)作加权平均。在将过滤器应用于一组优先级时,中间装置可将其他因素看作对该过滤器的输入,例如链接利用率和速率控制策略。中间装置可应用过滤器来确定对协议或者连接的传输层之上的协议层中承载的优先级的平均类型。
在步骤460,中间装置可基于过滤来向连接分配优先级。中间装置可将来自过滤器的平均优先级分配给相应的传输层连接作为连接优先级。中间装置可基于将过滤应用于经由连接接收的优先级的第一窗口来向该连接分配初始优先级。中间装置可基于将过滤应用于优先级的随后窗口来重新分配、调整或以其他方式改变连接优先级。中间装置可基于中间装置的链接利用率为任何一个或多个连接调整优先级。中间装置可基于任何一个或多个连接的链接利用率为该连接调整优先级。中间装置可连续地识别连接内的优先级、将过滤应用于优先级并且调整连接的优先级。中间装置可以控制调整连接优先级的速率。在一些实施例中,尽管过滤优先级可能产生更高的速率变化,但中间装置可将所产生的优先级调节或调整到较低的优先级。在一些实施例中,尽管过滤优先级可产生较低的速率变化,但中间装置可将产生的优先级增加或调整到较高的优先级。在一些实施例中,中间装置可通过设置将被传输的分组或PDU的任何QoS位或字段,例如ToS或Diffserv位,来为连接设置优先级。如此,在一些实施例中,中间装置在多个分组(这些分组的每一个可与过滤的窗口相对应)中设置差分服务代码点(DSCP)字段,以便与分配给传输层连接的连接优先级相对应。中间装置可传输具有经由互联网协议(IP层)或传输层中的一个标识的连接优先级的一个或多个数据分组,并且该一个或多个数据分组承载具有经由传输层上方协议标识的优先级的第一协议数据单元。
在步骤465,中间装置可基于当前分配给连接的优先级来传输该连接的分组、PDU或字节组。在为传输层连接的连接优先级分配协议数据单元预定窗口的平均优先级的同时,中间装置可经由该传输层连接传输承载协议数据单元预定窗口内的那些协议数据单元的多个分组。中间装置可在设置连接的连接优先级时,对于其中已确定连接优先级的窗口,传输缓冲的那些分组。对于在其中已确定连接优先级的窗口,中间装置可传输缓冲的那些分组,同时将该连接的连接优先级设置为这样的连接优先级。中间装置可缓冲分组的下一窗口直到确定分组的下一窗口的连接优先级,并且将其分配给该连接。在为下一窗口设置连接的连接优先级时,中间装置可传输缓冲的分组。
对于中间装置可为其分配优先级的多个连接,中间装置可在该多个连接之间应用任何服务质量方法或算法。中间装置可考虑用于经由中间装置传输分组、PDU或字节组的每个连接的当前优先级。较高优先级连接可比较低优先级连接得到更多的传输时间和/或更大量的数据的传输。在一些实施例中,中间装置根据已经基于连接的优先级设置的分组、PDU或字节组的任何QoS设置,来传输该分组、PDU或字节组。在一些实施例中,中间装置根据已经基于连接的优先级设置的ToS或Diffserv设置,来传输分组、PDU或字节组。在一些实施例中,中间装置根据基于连接的优先级的QoS设置(如ToS或Differv设置)将分组、PDU或字节组传输到另一QoS系统或装置,用于QoS处理和传输。
可对于由中间装置接收和处理的分组流连续执行以上任何步骤。例如,中间装置为第二、下一或随后的多个协议数据单元的第二个、下一个或随后的协议数据单元预定窗口,标识第二个、下一个或随后的平均优先级,并且分配确定的平均优先级作为该传输层连接的连接优先级。在为传输层连接的连接优先级分配关于第二个、下一个或随后的协议数据单元预定窗口的第二个、下一个或随后的平均优先级的同时,中间装置可经由该单个传输层连接传输承载第二个、下一个或随后的协议数据单元预定窗口内的那些协议数据单元的第二、下一或随后的多个分组。
Claims (20)
1.一种用于经由单个传输层连接为协议数据单元流提供服务质量(QoS)的方法,所述方法包括:
(a)由装置经由单个传输层连接接收承载多个协议数据单元的多个分组,所述多个协议数据单元中的每个协议数据单元标识优先级,所述多个协议数据单元中的至少一个或多个包括与所述多个协议数据单元中的其他协议数据单元的第二优先级不同的第一优先级;
(b)由所述装置为所述多个协议数据单元的协议数据单元预定窗口确定平均优先级;
(c)由所述装置将所述平均优先级分配为所述单个传输层连接的连接优先级;以及
(d)在向所述单个传输层连接的连接优先级分配协议数据单元预定窗口的平均优先级的同时,由所述装置经由所述单个传输层连接传输承载协议数据单元预定窗口内的那些协议数据单元的多个分组。
2.根据权利要求1所述的方法,其中步骤(a)还包括由所述装置经由所述单个传输层连接接收承载远程显示协议的多个协议数据单元的多个分组,每个协议数据单元与虚通道相对应,所述虚通道分配有优先级。
3.根据权利要求1所述的方法,其中步骤(a)还包括由所述装置缓冲所述多个分组,直到所述多个分组的连接优先级被分配给所述传输层连接。
4.根据权利要求1所述的方法,其中步骤(b)还包括由所述装置的过滤器基于有限脉冲响应(FIR)过滤来确定所述平均优先级。
5.根据权利要求1所述的方法,其中步骤(b)还包括由所述装置的过滤器基于无限脉冲响应(IIR)过滤来确定所述平均优先级。
6.根据权利要求1所述的方法,其中步骤(b)还包括由所述装置将所述预定窗口标识为包括预定数量的协议数据单元。
7.根据权利要求1所述的方法,其中步骤(c)还包括由所述装置在所述多个分组中设置差分服务代码点(DSCP)字段,以与分配给所述单个传输层连接的连接优先级相对应。
8.根据权利要求1所述的方法,其中步骤(d)还包括由所述装置传输具有经由互联网协议(IP)层或传输层中的一个标识的连接优先级的多个数据分组的第一分组,且所述第一分组承载具有经由传输层之上的协议标识的优先级的第一协议数据单元。
9.根据权利要求1所述的方法,还包括由所述装置为第二多个协议数据单元的第二协议数据单元预定窗口确定第二平均优先级,并且由所述装置将第二平均优先级分配为所述单个传输层连接的连接优先级。
10.根据权利要求9所述的方法,还包括在向所述单个传输层连接的连接优先级分配第二协议数据单元预定窗口的第二平均优先级的同时,由所述装置经由所述单个传输层连接传输承载第二协议数据单元预定窗口内的那些协议数据单元的第二多个分组。
11.一种用于经由单个传输层连接为协议数据单元流提供服务质量(QoS)的系统,所述系统包括:
在发送者和接收者中间的装置,其经由单个传输层连接接收承载多个协议数据单元的多个分组,所述多个协议数据单元中的每个协议数据单元标识优先级,所述多个协议数据单元中的至少一个或多个包括与所述多个协议数据单元中的其他协议数据单元的第二优先级不同的第一优先级;
所述装置的过滤器,其为所述多个协议数据单元的协议数据单元预定窗口确定平均优先级;
所述装置的引擎,其将所述平均优先级分配为所述单个传输层连接的连接优先级;以及
其中,在向所述单个传输层连接的连接优先级分配协议数据单元预定窗口的平均优先级的同时,所述装置经由所述单个传输层连接传输承载协议数据单元预定窗口内的那些协议数据单元的多个分组。
12.根据权利要求11所述的系统,其中所述装置经由所述单个传输层连接接收承载远程显示协议的多个协议数据单元的多个分组,每个协议数据单元与虚通道相对应,所述虚通道分配有优先级。
13.根据权利要求11所述的系统,其中所述引擎缓冲所述多个分组,直到所述多个分组的连接优先级被分配给所述传输层连接。
14.根据权利要求11所述的系统,其中所述过滤器基于有限脉冲响应(FIR)过滤来确定所述平均优先级。
15.根据权利要求11所述的系统,其中所述过滤器基于无限脉冲响应(IIR)过滤来确定所述平均优先级。
16.根据权利要求11所述的系统,其中所述引擎将所述预定窗口标识为包括预定数量的协议数据单元。
17.根据权利要求11所述的系统,其中所述引擎在所述多个分组中设置差分服务代码点(DSCP)字段,以与分配给所述单个传输层连接的连接优先级相对应。
18.根据权利要求11所述的系统,其中所述装置传输具有经由互联网协议(IP)层或传输层中的一个标识的连接优先级的多个数据分组的第一分组,且所述第一分组承载具有经由传输层之上的协议标识的优先级的第一协议数据单元。
19.根据权利要求11所述的系统,其中所述过滤器为第二多个协议数据单元的第二协议数据单元预定窗口确定第二平均优先级,并且所述引擎将第二平均优先级分配为所述单个传输层连接的连接优先级。
20.根据权利要求19所述的系统,其中在向所述单个传输层连接的连接优先级分配第二协议数据单元预定窗口的第二平均优先级的同时,所述装置经由所述单个传输层连接传输承载第二协议数据单元预定窗口内的那些协议数据单元的第二多个分组。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161451874P | 2011-03-11 | 2011-03-11 | |
US61/451,874 | 2011-03-11 | ||
US61/451874 | 2011-03-11 | ||
PCT/US2012/027906 WO2012125347A1 (en) | 2011-03-11 | 2012-03-06 | SYSTEMS AND METHODS OF QoS FOR SINGLE STREAM ICA |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103518358A CN103518358A (zh) | 2014-01-15 |
CN103518358B true CN103518358B (zh) | 2016-08-24 |
Family
ID=45833530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280022722.6A Expired - Fee Related CN103518358B (zh) | 2011-03-11 | 2012-03-06 | 为单个流ICA提供QoS的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9237106B2 (zh) |
EP (1) | EP2684318B1 (zh) |
CN (1) | CN103518358B (zh) |
WO (1) | WO2012125347A1 (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8489562B1 (en) | 2007-11-30 | 2013-07-16 | Silver Peak Systems, Inc. | Deferred data storage |
US8811431B2 (en) | 2008-11-20 | 2014-08-19 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data |
US8929402B1 (en) | 2005-09-29 | 2015-01-06 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data by predicting subsequent data |
US8755381B2 (en) | 2006-08-02 | 2014-06-17 | Silver Peak Systems, Inc. | Data matching using flow based packet data storage |
US8885632B2 (en) | 2006-08-02 | 2014-11-11 | Silver Peak Systems, Inc. | Communications scheduler |
US8307115B1 (en) | 2007-11-30 | 2012-11-06 | Silver Peak Systems, Inc. | Network memory mirroring |
US10805840B2 (en) | 2008-07-03 | 2020-10-13 | Silver Peak Systems, Inc. | Data transmission via a virtual wide area network overlay |
US10164861B2 (en) | 2015-12-28 | 2018-12-25 | Silver Peak Systems, Inc. | Dynamic monitoring and visualization for network health characteristics |
US8743683B1 (en) | 2008-07-03 | 2014-06-03 | Silver Peak Systems, Inc. | Quality of service using multiple flows |
US9717021B2 (en) | 2008-07-03 | 2017-07-25 | Silver Peak Systems, Inc. | Virtual network overlay |
US9130991B2 (en) | 2011-10-14 | 2015-09-08 | Silver Peak Systems, Inc. | Processing data packets in performance enhancing proxy (PEP) environment |
US9626224B2 (en) | 2011-11-03 | 2017-04-18 | Silver Peak Systems, Inc. | Optimizing available computing resources within a virtual environment |
JP6021487B2 (ja) * | 2012-07-18 | 2016-11-09 | キヤノン株式会社 | 情報処理システム、制御方法、サーバ、情報処理装置およびコンピュータプログラム |
US9438483B2 (en) * | 2012-10-15 | 2016-09-06 | At&T Intellectual Property I, L.P. | System and method of implementing quality of service over a packet-based Network |
US20140281002A1 (en) * | 2013-03-14 | 2014-09-18 | General Instrument Corporation | Devices, systems, and methods for managing and adjusting adaptive streaming traffic |
US9584633B2 (en) * | 2013-03-15 | 2017-02-28 | Tria Network Systems, LLC | Method and system for managing network communications |
US9781046B1 (en) | 2013-11-19 | 2017-10-03 | Tripwire, Inc. | Bandwidth throttling in vulnerability scanning applications |
US9813343B2 (en) * | 2013-12-03 | 2017-11-07 | Akamai Technologies, Inc. | Virtual private network (VPN)-as-a-service with load-balanced tunnel endpoints |
US9973407B2 (en) | 2014-01-10 | 2018-05-15 | International Business Machines Corporation | Bandwidth-sensitive content sharing system |
US9948496B1 (en) | 2014-07-30 | 2018-04-17 | Silver Peak Systems, Inc. | Determining a transit appliance for data traffic to a software service |
US9875344B1 (en) * | 2014-09-05 | 2018-01-23 | Silver Peak Systems, Inc. | Dynamic monitoring and authorization of an optimization device |
CN105704060B (zh) * | 2014-11-26 | 2018-11-02 | 网宿科技股份有限公司 | 一种基于单连接多请求的流量控制方法 |
WO2016107636A1 (en) * | 2014-12-29 | 2016-07-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for enhancing rendering of displayable content |
US10349452B2 (en) | 2014-12-30 | 2019-07-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for providing quality enhancements to an application residing on a user terminal |
CN105376088B (zh) * | 2015-09-09 | 2018-07-24 | 上海斐讯数据通信技术有限公司 | 基于BroadCom SDK的运营商QoS模型实现方法及系统 |
US10757079B2 (en) * | 2016-01-12 | 2020-08-25 | Jens Schmidt | Method and system for controlling remote session on computer systems using a virtual channel |
US10149160B2 (en) | 2016-05-11 | 2018-12-04 | Bank Of America Corporation | Recognizing and authenticating mobile devices based on unique cross-channel bindings |
US10432484B2 (en) | 2016-06-13 | 2019-10-01 | Silver Peak Systems, Inc. | Aggregating select network traffic statistics |
US9967056B1 (en) | 2016-08-19 | 2018-05-08 | Silver Peak Systems, Inc. | Forward packet recovery with constrained overhead |
US10659476B2 (en) | 2016-09-12 | 2020-05-19 | Architecture Technology Corporation | Transparent bridge for monitoring crypto-partitioned wide-area network |
WO2018140018A1 (en) * | 2017-01-26 | 2018-08-02 | Hitachi, Ltd. | User-driven network traffic shaping |
US10257082B2 (en) | 2017-02-06 | 2019-04-09 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows |
US10771394B2 (en) | 2017-02-06 | 2020-09-08 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows on a first packet from DNS data |
US10892978B2 (en) | 2017-02-06 | 2021-01-12 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows from first packet data |
US11044202B2 (en) | 2017-02-06 | 2021-06-22 | Silver Peak Systems, Inc. | Multi-level learning for predicting and classifying traffic flows from first packet data |
CN110352610B (zh) * | 2017-03-01 | 2023-05-05 | Lg电子株式会社 | 在无线通信系统中发送tcp ack分组的方法及其装置 |
US10834011B2 (en) * | 2017-06-29 | 2020-11-10 | Itron Global Sarl | Packet servicing priority based on communication initialization |
CN107770088B (zh) * | 2017-09-06 | 2021-12-24 | 创新先进技术有限公司 | 一种流量控制方法及装置 |
US11212210B2 (en) | 2017-09-21 | 2021-12-28 | Silver Peak Systems, Inc. | Selective route exporting using source type |
CN107833437B (zh) * | 2017-11-17 | 2019-06-28 | 中国航空工业集团公司西安航空计算技术研究所 | 基于带延迟的多通道多优先级控制命令的语音告警方法 |
US10637721B2 (en) | 2018-03-12 | 2020-04-28 | Silver Peak Systems, Inc. | Detecting path break conditions while minimizing network overhead |
US20190306067A1 (en) * | 2018-03-30 | 2019-10-03 | Konica Minolta Laboratory U.S.A., Inc. | End-to-end priority network delivery enforcing application protocol |
US11329924B2 (en) | 2020-06-03 | 2022-05-10 | Cisco Technology, Inc. | Systems and methods for adapting a WAN egress shaper rate |
US11463366B1 (en) | 2020-09-22 | 2022-10-04 | Architecture Technology Corporation | Autonomous network optimization using network templates |
US12093156B2 (en) * | 2021-10-14 | 2024-09-17 | International Business Machines Corporation | Connection pool management using predicted authentication data |
US11683250B2 (en) * | 2021-10-22 | 2023-06-20 | Palo Alto Networks, Inc. | Managing proxy throughput between paired transport layer connections |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0782302A2 (en) * | 1995-12-04 | 1997-07-02 | Lucent Technologies Inc. | Method and apparatus for controlling data transfer rates of sources in ATM networks |
WO2001047185A3 (en) * | 1999-12-21 | 2002-04-25 | Santa Wiryaman | Integrated access point network device |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7046631B1 (en) | 1999-01-22 | 2006-05-16 | Alcatel Canada Inc. | Method and apparatus for provisioning traffic dedicated cores in a connection oriented network |
CA2376962A1 (en) * | 2001-04-02 | 2002-10-02 | Lucent Technologies Inc. | Method and system for umts packet transmission scheduling on uplink channels |
US7570656B2 (en) * | 2001-06-18 | 2009-08-04 | Yitran Communications Ltd. | Channel access method for powerline carrier based media access control protocol |
WO2003085924A1 (en) * | 2002-04-05 | 2003-10-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Object transfer control in a communications network |
US7263065B1 (en) * | 2002-08-30 | 2007-08-28 | At&T Corp. | Network having multiple QoS levels |
AU2003210363B2 (en) * | 2003-02-26 | 2009-03-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Transmission control method in an ARQ system |
US8140698B2 (en) * | 2003-04-30 | 2012-03-20 | International Business Machines Corporation | Method and system for efficient data transmission in interactive networked environments |
TWI228008B (en) * | 2003-07-15 | 2005-02-11 | Benq Corp | Method for transmitting data in radio access network |
WO2005046282A1 (ja) * | 2003-11-07 | 2005-05-19 | Mitsubishi Denki Kabushiki Kaisha | 移動局、通信システム、通信制御方法 |
JP4086304B2 (ja) * | 2004-04-23 | 2008-05-14 | 株式会社東芝 | 通信装置、通信システム、および通信制御プログラム |
JP4012172B2 (ja) * | 2004-05-28 | 2007-11-21 | 株式会社東芝 | 無線通信装置及び無線通信方法 |
US7616596B2 (en) * | 2005-10-27 | 2009-11-10 | Samsung Electronics Co., Ltd | Apparatus and method of determining uplink priority in wireless mobile communication system |
US7564788B2 (en) * | 2005-12-02 | 2009-07-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Flow control for low bitrate users on high-speed downlink |
US7656882B2 (en) * | 2006-06-28 | 2010-02-02 | Samsung Electronics Co., Ltd. | Method and system for peak scheduling in a wireless network |
US8948206B2 (en) * | 2006-08-31 | 2015-02-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Inclusion of quality of service indication in header compression channel |
US7760642B2 (en) * | 2007-03-12 | 2010-07-20 | Citrix Systems, Inc. | Systems and methods for providing quality of service precedence in TCP congestion control |
US7796510B2 (en) * | 2007-03-12 | 2010-09-14 | Citrix Systems, Inc. | Systems and methods for providing virtual fair queueing of network traffic |
CN101360271B (zh) * | 2007-08-01 | 2015-05-27 | 华为技术有限公司 | 电路域业务数据的无线承载方法、装置及系统 |
US8301755B2 (en) * | 2007-12-14 | 2012-10-30 | Bmc Software, Inc. | Impact propagation in a directed acyclic graph |
US8045563B2 (en) * | 2007-12-27 | 2011-10-25 | Cellco Partnership | Dynamically adjusted credit based round robin scheduler |
JP2009199453A (ja) * | 2008-02-22 | 2009-09-03 | Hitachi Ltd | クライアントが適正か不適正かを判定する方法及び記憶制御装置 |
US8594126B2 (en) * | 2009-03-31 | 2013-11-26 | Freescale Semiconductor, Inc. | Receiving node in a packet communications system and method for managing a buffer in a receiving node in a packet communications system |
JP2012525058A (ja) * | 2009-04-24 | 2012-10-18 | エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート | 送信装置および再送方法 |
EP2433461B1 (en) * | 2009-05-20 | 2013-02-13 | Telefonaktiebolaget LM Ericsson (publ) | Methods and apparatuses for communicating priority information for use in scheduling the transmission of data |
-
2012
- 2012-03-06 WO PCT/US2012/027906 patent/WO2012125347A1/en unknown
- 2012-03-06 EP EP12708999.3A patent/EP2684318B1/en active Active
- 2012-03-06 CN CN201280022722.6A patent/CN103518358B/zh not_active Expired - Fee Related
- 2012-03-06 US US13/413,508 patent/US9237106B2/en active Active
-
2016
- 2016-01-11 US US14/992,751 patent/US10164895B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0782302A2 (en) * | 1995-12-04 | 1997-07-02 | Lucent Technologies Inc. | Method and apparatus for controlling data transfer rates of sources in ATM networks |
WO2001047185A3 (en) * | 1999-12-21 | 2002-04-25 | Santa Wiryaman | Integrated access point network device |
Also Published As
Publication number | Publication date |
---|---|
US10164895B2 (en) | 2018-12-25 |
US20120230345A1 (en) | 2012-09-13 |
EP2684318B1 (en) | 2019-12-11 |
US9237106B2 (en) | 2016-01-12 |
EP2684318A1 (en) | 2014-01-15 |
WO2012125347A1 (en) | 2012-09-20 |
US20160127251A1 (en) | 2016-05-05 |
CN103518358A (zh) | 2014-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103518358B (zh) | 为单个流ICA提供QoS的系统和方法 | |
CN102405631B (zh) | 用于中间设备压缩通过远程显示协议传递的数据的系统和方法 | |
CN103229460B (zh) | 用于经由流控制隧道提供服务质量的系统和方法 | |
CN103384991B (zh) | 用于加密网络流量的服务质量的系统和方法 | |
CN102986189B (zh) | 用于为对应于虚通道的网络连接分配服务等级的系统和方法 | |
CN103354989B (zh) | 用于中间装置中的多级服务质量分类的系统和方法 | |
CN103152279B (zh) | 用于在tcp拥塞控制中提供服务质量优先的系统和方法 | |
CN101682565B (zh) | 用于通过代理进行动态带宽控制的系统和方法 | |
CN102948131B (zh) | 用于经由wan设备分离代理ssl的系统和方法 | |
CN103988483B (zh) | 用于网络加速器的动态适应的系统和方法 | |
CN103516725B (zh) | 用于使用压缩历史来改进网络性能的系统和方法 | |
CN104486032A (zh) | 用于提供基于代理的服务质量的系统和方法 | |
US9210081B2 (en) | Systems and methods for bridging a WAN accelerator with a security gateway | |
CN101682621B (zh) | 用于高速缓存操作的系统和方法 | |
US7283468B1 (en) | Method and system for controlling network traffic within the same connection with different packet tags by varying the policies applied to a connection | |
WO2010042580A1 (en) | Systems and methods for allocating bandwidth by an intermediary for flow control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160824 |