CN105743812A - 在单个连接上多路复用许多客户端流 - Google Patents
在单个连接上多路复用许多客户端流 Download PDFInfo
- Publication number
- CN105743812A CN105743812A CN201511036053.XA CN201511036053A CN105743812A CN 105743812 A CN105743812 A CN 105743812A CN 201511036053 A CN201511036053 A CN 201511036053A CN 105743812 A CN105743812 A CN 105743812A
- Authority
- CN
- China
- Prior art keywords
- tcp
- client
- proxy server
- packet
- multiplexing
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/0001—Arrangements for dividing the transmission path
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3072—Packet splitting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
在单个连接多路复用许多客户端流的方法及装置。代理服务器建立与相应想要访问经多路复用TCP连接连接到代理服务器的网络服务器的客户端的多个TCP连接。基于TCP连接,分离出经TCP连接从客户端接收的TCP分组,提取分组有效载荷数据,加到客户端数据流。数据段包括来自客户端数据流的连串比特,并嵌入经多路复用TCP连接发送的多路复用(MUX)TCP分组。接收后,服务器解封数据段,将其缓冲于为重组的客户端数据流中各TCP连接分配的队列。这使得能个体控制在多路复用连接传输的用于TCP连接的分组流。多路复用TCP连接还可用于经代理服务器和客户端的TCP连接,将在网络服务器生成的分组有效载荷数据转发给客户端。
Description
背景技术
自从引入微处理器,计算机系统就变得越来越快。近似根据摩尔定律(基于英特尔公司共同创办人戈登摩尔1965年发表的预测集成电路上晶体管的数量每2年翻倍的文章),近30年来速度增长以相当均匀的速率蹿升。同时,存储器和非易失性存储的尺寸也稳定增大,这样当今许多个人计算机强于不过10-15年前的超级计算机。另外,网络通信的速度也类似地见证了天文数字增长。
处理器速度、存储器、存储和网络带宽技术的增强导致扩建及部署容量不断增大的网络。最近,引入基于云的服务,例如亚马逊(例如,亚马逊弹性计算云(EC2)和简单存储服务(S3))和微软(例如,Azure及Office365)提供的那些,导致用于公共网络基础设施的额外网络扩建,并增加大容量数据中心的部署,以支持这些运用私有网络基础设施的服务。另外,新一代(例如,4G)移动网络数据服务有望在不远的将来显著地影响陆地线路网络的使用。这些及其它影响因素的结果是计算机网络的使用在可预见的未来继续高速增长。
大量互联网业务使用超文本传输协议(HTTP)或HTTPS(HTTP的加密安全版)。HTTP根本上涉及客户端(例如,用户设备上的网络浏览器)和HTTP服务器(例如,宿于网站和/或提供对其访问的服务器上运行的网络服务器应用;如本文所用的,术语“网络”服务器和HTTP服务器可以交替使用)之间的通信。HTTP充当客户端-服务器计算模型中的请求-响应协议。在典型的HTTP请求-响应序列下,客户端提交HTTP请求消息给服务器。所述服务器,提供例如HTML文件及其它内容的资源,或代表客户端执行其它功能,返回响应消息给客户端。
图1显示了互联网基础设施100,其图解选择的互联网组件,包括网络元件、客户端设备、服务器和服务。所述互联网,一般描述为互联网云102,为互连的联网元件的大容量集合,包括由链路108互连的网关104和交换机106。客户端设备(“客户端”,认可一个客户端可以指的是设备本身或所述设备上运行的应用),描述为移动电话(客户端110和112)、平板电脑(客户端114、台式计算机(客户端116)和膝上电脑(客户端118和120),一般经由互联网服务供应商(ISP)或移动服务供应商(经移动网络访问互联网时)操作的网关104连接到互联网102。为简单起见且避免杂乱,将客户端设备与网关之间的连接显示为双向箭头;实践中,客户端设备与网关之间有各种联网元件,可以在一个以上网络元件上实现属于网关的功能。
各种服务器还连接到互联网102,描述为网络服务器122和第三方电子邮件服务器124。网络服务器122提供对网站126的“前端”访问。较大的网站,例如搜索站点、新闻站点和电子商务站点,可能有数十、数百甚至数千网络服务器处理网站业务。第三方电子邮件服务器124为概念实体,实践中可以由前端层中耦合到一个以上“中间”层中电子邮件应用服务器等的多个网络服务器实现,“中间”层又连接到“后端”层的数据存储。大型第三方电子邮件服务,例如微软Hotmail、谷歌Gmail、雅虎Mail,使用描述为数据中心128的大型数据中心(也称作服务器群)实现。
为了便利客户端与服务器之间的HTTP/HTTPS通信,首先建立TCP(传输控制协议)连接。TCP为网络协议组(IP)的核心协议之一,TCP连接有时也称作TCP/IP连接。TCP使用一对TCP端点(例如,客户端和服务器)的IP地址,其分别包括分配给TCP连接上通信链接的所述客户端和服务器的IP地址。
尽管TCP提供了可靠的传输协议,但它未定义如何在客户端与服务器之间路由TCP/IP分组。例如,图1示出由客户端110连接的网关与连接到网络服务器122的网关之间有两条多跳路径(一条为实线,另一条为虚线)。虽然可以沿给定路径转发用于某些类型的业务的分组“流”,但在未预定义用于分组的转发路径的情况下,基于最佳效率,大多数互联网业务是跳到跳转发的。
给定的HTTP服务器可以支持千级并行TCP连接,各具有不同的客户端TCP端点。这造成大量开销,例如超时的定时器和用于各客户端连接的分开的字节序列号空间。另外,各HTTP服务器具有有限带宽限制,其可能导致分组在所述HTTP服务器丢弃。虽然TCP支持拥塞控制,但其拥塞控制机制是在单独的TCP连接上实现的,而不是作为服务器工作负载的功能共同管理。
附图说明
结合附图时,参考以下详细描述会更易领会、同样也会更好理解本发明的方面及许多优点,其中除非另有规定,通篇类似编号指的是各种视图的类似部件:
图1为示出选择的互联网组件的架构视图的示意图;
图2a为示出运用代理服务器和网络服务器之间的多路复用TCP连接的示范性网络配置的示意图;
图2b为示出单独的TCP连接和图2a的多路复用TCP连接的进一步细节的链路连接图;
图2c为示出图2b的代理服务器经多个多路复用TCP连接连接到网络服务器的可选配置的链路连接图;
图2d为示出图2b的代理服务器作为代理用于多个网络服务器、所述代理和各网络服务器之间是分离的多路复用TCP连接的可选配置的链路连接图;
图3a为示出根据一个实施例的TCP分组段数据转发组件的示意图,其结合经传输数据段的多路复用TCP连接转发从客户端接收的TCP分组到网络服务器,由代理服务器实现;
图3b为示出根据一个实施例的服务器侧组件的示意图,其结合处理经多路复用TCP连接从代理服务器接收的TCP分组数据段,由网络服务器实现;
图4a为示出根据一个实施例的、用于从网络服务器接收的、于代理服务器在多路复用TCP连接上接收的多路复用TCP分组数据段的组件的示意图;
图4a'为示出用于处理于代理服务器在多路复用TCP连接上接收的多路复用TCP分组数据段的可选配置的示意图,将重组的TCP分组载入分组输出缓冲器;
图4b为示出根据一个实施例的、结合在多路复用TCP连接上从网络服务器发送TCP分组给代理服务器作为多路复用数据段的分组处理的示意图;
图5为示出多路复用TCP分组的一个实施例的框图;
图6为示出客户端、代理服务器与网络服务器之间交换的示范性消息集的消息流程图;
图7为示出在客户端、代理服务器和网络服务器之间交换的示范性命令及控制消息集的消息流程图;
图8a为安有多个服务器刀片的示范性刀片服务器机箱的正面等距视图;
图8b为图8a的刀片服务器机箱的后等距视图;
图8c为安有多个对应于图8a和8b的机架式刀片服务器的示范性刀片服务器的等距正面视图;以及
图9显示根据一个实施例的典型服务器刀片的组件的细节。
具体实施方式
本文描述了用于在单个连接上多路复用许多客户端流的方法及装置的实施例。在以下的描述中,记载了若干具体细节,以提供对本发明实施例的全面了解。然而,本领域技术人员会意识到无需一个以上所述具体细节,或用其它方法、组件、材料等也能实现本发明。在其它实例中,未详细显示或描述公知的结构、材料或操作,以避免本发明的方面难以理解。
本说明书通篇引用“一个实施例”或“某个实施例”是意指结合所述实施例描述的特定特征、结构或特性包含在本发明至少一个实施例中。因此,本说明书全文各处出现短语“在一个实施例中”或“在某个实施例中”未必全都指的是同一实施例。而且,在一个以上实施例中,可以以任意适当方式结合所述特定特征、结构或特性。
为清楚起见,本文附图中的个体组件还可以由其附图中的标记、而不是特定的编号标记。另外,指示特定类型组件(与特定组件相反)的编号可以用后随意指“典型”的“(typ)”的编号显示。要理解这些组件的配置是可能存在、但为简单清晰起见附图未示出的类似组件、或相反不用独立编号标记的类似组件所特有的。反之,不将“(typ)”解释为意指典型用于其公开的功能、实施方式、目的等的组件、元件等。
根据本文描述及示出的实施例的方面,公开了用于实现在一个TCP连接上传输来自多个客户端的通信的多路复用TCP连接的技术。这大大减少了为各客户端维持单独的TCP连接所需的开销。而且,还提供了新颖的流控制技术,其使得能够处理对应于多路复用TCP连接内客户端TCP业务的个体流,好像在客户端与服务器之间使用了单独的TCP连接。
多路复用TCP实现方式的一个方面是使用代理服务器,其使用单独的TCP连接与客户端直接通信。除了支持客户端-服务器通信,HTTP设计为允许中间网络元件改进或使能客户端与服务器之间的通信。高业务网站时常受益于代表上游服务器传递内容以改进响应时间的网络高速缓存服务器。另外,处于私有网络边界的HTTP代理服务器能够通过利用外部服务器中继消息,无需全局可路由地址就能便利用于客户端的通信。代理服务器也广泛用于大型网站,例如谷歌和亚马逊的那些。
图2a和2b分别显示了用于示出示范性多路复用TCP连接实现方式的方面的网络架构和链路连接,客户端在TCP连接上与代理服务器200通信,其配置为经代理服务器200与网络服务器122之间的多路复用连接202转发对应的HTTP业务。如前所述,客户端110、112、114、116、118和120经ISP或移动服务供应商设施,例如互联网网关等,连接到互联网102。这些客户端各想要建立与网络服务器122的HTTP连接。这一般由客户端设备的用户键入网站网络服务器122的与例如www点Amazon点com关联的URL(统一资源指示符)来实现。因为互联网上的客户端和服务器使用IP地址(例如,IPv4或IPv6),所以所述URL需要转换为对应的IP地址。域名服务器(DNS)便利URL与IP地址之间的映射。对于例如亚马逊和谷歌的大型网站,不可能使用具有单个IP地址的单个服务器来处理客户端业务。某些情况下,代理服务器用于解决这一问题。在典型的代理服务器策略下,DNS查询提供的网络地址返回所述代理服务器的地址,而不是返回与URL关联的用于所述网络服务器的IP地址。
如图2b所示,客户端110、112、114、116、118和120经相应TCP连接110T、112T、114T、116T、118T和120T连接到代理服务器200。使用常规的代理服务器时,代理服务器为各客户端连接维护与网络服务器的TCP连接。在一种常规方法下,代理服务器仅仅改变TCP/IP报头中的源及目的地IP地址,并转发原始分组(未更改源及目的地地址)。从客户端和网络服务器的角度,代理服务器的存在是透明的,意味着它们完全没意识到使用了代理服务器。
常规的代理服务器方法仍然需要为与网络服务器通信的各客户端维持的单独的TCP连接。相反,在图2a和2b所示的实施例下,TCP连接112T、114T、116T、118T和120T上传输的TCP业务划分为使用多路复用TCP连接202在代理服务器200和网络服务器122之间多路复用的客户端数据段。实现多路复用TCP连接的一个方面是分配及操作各缓冲队列,以为客户端设备和服务器之间各TCP流处理业务。另外,结合这些队列实现流管理策略,以分配相应部分的多路复用TCP连接的带宽,如带宽分配110BW、112BW、114BW、116BW、118BW和120BW所描述的。
图2c为示出图2b的可选配置的链路连接图,代理服务器200经m个多路复用TCP连接2021、2022、202m连接到网络服务器122。取决于进来的TCP连接(即,从客户端至代理服务器)的数目,随着TCP连接数目的增加,返回可能减少。进一步意识到代理服务器和网络服务器各典型地具有多个网络端口,各分配一个独立的IP地址,并能够成为TCP端点。据此,存在有利于实现并发操作的代理服务器和网络服务器之间的多个多路复用TCP连接的情形。
图2d为示出图2b另一可选配置的链路连接图,代理服务器200作为代理用于k个网络服务器1221、12222、122k,所述代理与各网络服务器之间是分离的多路复用TCP连接。因为代理服务器的工作负载一般小于网络服务器的(基于每客户端连接),可能有利于运用作为代理为多个网络服务器操作的代理服务器的实施环境。除了图2b、2c和2d所示的配置,还可以实现使用多路复用TCP连接将代理服务器连接到网络服务器的其它配置。
图3a示意性描述根据一个实施例、结合从容户端110、112、114、116、118和120接收的进站TCP分组、代理服务器200所执行的处理及转发操作。所述第一组处理操作类似于支持多个TCP连接的常规TCP端点所执行的操作。如图所示,在客户端设备与代理服务器200之间建立的对应TCP连接上,从给定的客户端设备传输一系列TCP分组300。出于说明目的,图3a描述了分组流-对应给定的HTTP请求或响应,客户端可以发送一个以上TCP分组给所述网络服务器;随着时间过去,这可能显示(从接收设备的角度)为分组流,同时注意一般与多媒体内容不相关的HTTP业务将运用无状态的HTTP连接,而不是流播连接。而且,来自客户端的大量HTTP业务可能由相对小的HTTP请求构成,其通常在单个TCP分组中传输。各TCP分组300包括分组有效载荷数据301,例如HTTP请求。
以实例说明,客户端110、112、114、116、118和120各描述为在相应TCP连接110T、112T、114T、116T、118T和120T上发送一系列分组。为了支持TCP连接,在所述TCP连接的各端打开TCP端口(软件端口,不是物理端口),这样各TCP连接(从代理服务器200的角度)可以由客户端的IP地址与TCP端口号的组合标识。(注意,假如使用多个TCP端口,给定的客户端可以建立与服务器的多个并行TCP连接)。在一个实施例中,代理服务器200使用客户端ID(标识符)映射表302来将客户端IP地址/TCP端口号组合映射到关联的客户端ID值。出于说明目的,本文附图中,用“客户端”+客户端编号+“ID”指示客户端ID,例如客户端110ID为用于客户端110的客户端ID(使用TCP连接110T时)。
至于常规的TCP端点架构,为各TCP连接(如图3a中客户端ID标识的)分配输入队列304。接收分组时,TCP连接输入队列(还可以称作缓冲器)用于暂时缓冲分组,并使用所述分组的TCP报头中的TCP字节序列重新排序任意无序的分组。另外,TCP运用用于检测丢弃的分组的机制,且将需要从TCP源(此实例中的客户端)重新传输任意丢弃的分组。为简单方便起见,将输入队列304描述为用于各TCP连接的相应单个队列。实践中,可以使用TCP端点上存储器中实现的一个以上缓冲器或队列实现它们。一般来说,取决于网络适配器架构,可以经软件层(例如,软件联网栈中的TCP层)实现输入队列,或它可以由网络适配器中的嵌入式逻辑处理,或两者结合来处理。
当在输入队列304中检测到连串TCP分组时,将全部或部分所述连串转发(Fwd)进与TCP端口关联的输出队列306。或者,输出队列306可以配置为从关联的输入队列304“提取”连串分组。在一个实施例中,各输出队列306将存有在特定TCP客户端连接上发送的连串分组有效载荷数据。而且,在一个实施例中,从所述分组有效载荷数据去除这些TCP/IP报头,并将有效载荷描述标记加到比特流,如客户端数据流307描述的,其中比特串之间的管状符号“|”表示分组有效载荷数据之间的描述。在替换策略下,所述TCP/IP报头仍在所述客户端数据流中,但会在网络服务器122的随后处理期间去除并忽略。
在一个实施例中,所述连串比特流包括在配置为代理服务器200与网络服务器122之间传输的TCP分组308中多路复用(MUX)的数据的片段(数据段)。此处所用的术语“MUXTCP”是将这些分组与从客户端接收的TCP分组300区分开来-结构上,所述MUXTCP分组包括常规的TCP分组,其包含用于便利结合多路复用TCP连接上的传输处理数据段的嵌入式报头信息,图5示出其进一步细节并在下面讨论。优选地,MUXTCP分组308尽可能大,从而减少封装的相对带宽开销损失。例如,在一个实施例中,使用巨型TCP分组和巨型以太网帧。此外,MUXTCP分组的大小可以变化,以适应其封装的数据段的总体大小。若适用,还可以在所述MUXTCP分组中实现填充。
在一个实施例中,数据封装包括对应于从客户端110、112、114、116、118和120接收的TCP分组有效载荷数据的连串比特流数据的数据段,并以以下方式在多路复用TCP连接202上发送。代理服务器200包括TCP出站流MUX和组装逻辑310,其包括队列选择器312、出站分组组装块314、以太网成帧块316和输出以太网端口队列318。如上讨论的,客户端输出队列306将各包括连串的TCP分组有效载荷比特流数据(除非清空某个队列)。还有如上参考图2b讨论的,客户端110、112、114、116、118和120各接收相应带宽分配110BW、112BW、114BW、116BW、118BW和120BW。
所述带宽分配由队列选择器310管理(结合代理服务器200和网络服务器122上的逻辑,如下所述),其选择哪些提取数据段的客户端输出队列306封装入给定的TCP分组308。可以运用各种类型的选择算法,例如轮询、加权或非加权公平排队、基于队列填充水平的选择等。因业务模式和其它因素的变化,可以动态改变分配给所述客户端的带宽片。另外注意,当建立新连接的客户端与代理服务器200之间的新客户端TCP连接时,动态分配客户端输入队列304和客户端输出队列306。类似地,当检测到TCP连接已关闭时,释放为客户端输入队列304和与那一TCP连接关联的客户端输出队列306分配的对应缓冲空间,以为新TCP连接重新分配。
出站分组组装块314将包括由队列选择器312从客户端输出缓冲器306提取的数据段的连串比特封装入MUXTCP分组308。在一个实施例中,多路复用TCP连接202作为应用于代理服务器202和网络服务器122之间传输的MUXTCP分组308的常规TCP连接操作。然而,代理服务器200处分组流的生成和网络服务器122处接收分组流的处理都使用了非常规技术。
图5示出了MUXTCP分组308的一个实施例,其包括MUXTCP/IP报头308H,随后是分组有效载荷308P,包括n个封装的数据段3091...309n,随后是TCP脚注308F。在一个实施例中,MUXTCP/IP报头308H包括用括号示出的常规TCP/IP报头字段,其包含用于代理服务器200和网络服务器122的源及目的地IP地址、TCP字节序列号等,加上可以添加到所述TCP/IP报头中可选字段的某些额外参数。在一个实施例中,所述参数包括数据/控制标记、客户端ID、字节序列号和长度(Len)。所述参数可以嵌入单独的字段,和/或可以编码,这样它们可以嵌入较少数目的字段,包括单个字段。作为另一选择,所述参数可以编码为位于分组有效载荷308P起始处的参数串等。在所示的实施例中,数据段3091...309n各包括报头311,其包含客户端ID、段长度和字节(序列)号。可以在各数据段309的末尾添加可选的分隔符数据,类似于用于分离以太网帧(例如,诸如1或0的串之类的预定字符序列)的分隔符数据。假如MUXTCP分组308丢弃且需要重新发送时,所述字节序列号用于重排序所述比特流中的字节序列。
在以太网成帧块316中,以常规方式将一个以上MUXTCP分组308封装入以太网帧。优选地,巨型以太网帧可以用于减少因以太网成帧开销造成的带宽损失。所述以太网帧接着在输出以太网端口队列318中排队,随后流至服务器122。
图3b示出了如何在网络服务器122上处理在多路复用TCP连接202上从代理服务器200接收MUXTCP分组308。通过TCP输入流DeMUX和分离逻辑320实现所述分组处理,始于将接收的MUXTCP分组缓冲在以太网输入端口缓冲器322中。在块324中,执行以太网解帧及解包以从其以太网帧提取MUXTCP分组308。如浅灰阴影所描述的,以太网输入端口缓冲器322执行的操作和以太网解帧及解包操作为对在以太网输入端口接收的TCP分组执行的常规操作。虽然为简单起见未示出,但还能使用公知技术执行涉及实现所述TCP协议的额外操作。
随后的处理操作是非普通且新颖的。在封装数据段分离块326中,分离解包的TCP分组300,以基于每客户端ID输出数据段数据的比特流。接着,队列选择器328将接收的包括用于给定客户端的连串比特的数据段推入与数据段报头311中包含的客户端ID关联的适当的TCP端口输入队列330。随后,顺序地处理所述数据段,以其原始格式生成重组的包括分组有效载荷数据301R的客户端数据流。如重组的客户端数据流110R、112R、114R、116R、118R和120R所描述的,在软件处理栈332接收用于各TCP连接的客户端数据流。所示的用于软件处理栈332的组件包括客户端流处理块334和HTTP/HTTPS层338。客户端流处理块334用于提取包含HTTP数据(例如,HTTP请求)的分组有效载荷数据,并将其转发到HTTP/HTTPS层338。在一个实施例中,实现客户端流处理块334,这样从HTTP/HTTPS层338的角度,使用常规的TCP分组发送所述HTTP数据。HTTP/HTTPS层338包括HTTP/HTTPS服务器功能块340,其配置为执行常规的HTTP或HTTPS服务器功能(视适用情况,取决于所述连接是否为HTTP或HTTPS连接)。以实例说明,这进一步由用于各客户端ID的HTTP客户端会话状态342描述,观察到HTTP本身是无状态的,而HTTP流播连接支持持久的连接。
为了支持经代理服务器200的从网络服务器122至客户端110、112、114、116、118和120的反向业务流,交换图3a和3b所示的类似组件及逻辑,如图4a、4a'和4b所示,类似编号的组件执行类似功能。另外,还增加以下规定。
更具体地,网络服务器122或连接到网络服务器122的另一服务器(例如,应用服务器)上运行的软件应用接收从客户端发送的HTTP请求,并生成客户端返回的HTTP响应。某些HTTP可以完全由HTTP/HTTPS服务器功能块340处理,例如建立和关闭HTTP及TCP连接。其它情况下,与进来的HTTP通信关联的数据有效载荷由HTTP层分离出来,并转发给可应用的应用。在相反方向,应用生成返回给HTTP客户端的HTTP响应数据。
在HTTP层338接收HTTP响应数据,增加可应用的HTTP报头(取决于HTTP响应的类型)。随后,所述HTTP响应,包括分组有效载荷数据303,添加到出站的客户端数据流,如客户端数据流110T、112T、114T、116T、118T和120T描述的。在适当的客户端输出队列346中缓冲用于各TCP连接的客户端数据流。结合打开客户端IDTCP连接,网络服务器122分配客户端输出队列346。在一个实施例中,可应用的客户端输出队列346由客户端ID映射表302的查找标识。
以类似于如何将客户端输出队列306中的客户端数据流内容从代理服务器200转发到网络服务器122的方式,在多路复用TCP连接上,将包括所述客户端数据流的所述比特流内容作为数据段转发给代理服务器200。如前所述,这包括将数据段309封装入MUXTCP分组308和在多路复用TCP连接上传输所述MUXTCP分组。
继续在图4a,接收MUXTCP分组308流,并由MUXTCP输入流DeMUX及分离逻辑320以类似如上参考图3b讨论的方式处理。在一个实施例中,结合设置客户端IDTCP连接,代理服务器200分配客户端输出队列348及客户端输入队列350。如图4a进一步示出的,队列选择器328将用于封装数据段分离块326所分离的各数据段的比特流内容推入可应用客户端输入队列350,随后所述客户端数据流或推入可应用客户端输出队列348,或从客户端输入队列提取进入所述客户端输出队列。一旦在客户端输出队列348,提取分组有效载荷数据303,并封装入TCP分组,接着可以使用常规的出站TCP分组305处理将其转发到客户端,其中从TCP/IP报头中目的地地址所标识的代理服务器200上的网络端口发送TCP分组(例如,经转发的表查找)。
图4a'显示了用于代理服务器200a的可选配置。在此配置下,将全部或部分客户端数据流转发到输出分组缓冲器352,其中提取分组有效载荷数据303,并封装入TCP分组305。然后,代理服务器200a以常规方式将TCP分组305转发到客户端110、112、114、116、118和120。
除了前面的多路复用TCP分组处理操作,代理服务器200和网络服务器122包括用于执行TCP连接设置和基于客户端的TCP连接流控制操作的额外逻辑。在代理服务器200上,代理服务器控制逻辑356(用于与TCP客户端连接)和代理服务器至网络服务器控制逻辑358便利了这些操作。在网络服务器122上,这描述为代理服务器至网络服务器控制逻辑360。代理服务器200和网络服务器122之间发送的控制消息便利了连接及客户端队列的管理。图6和7描述了对应于示范性设置和/或控制功能的消息流图。
图6显示了示出客户端120、代理服务器200和网络服务器122之间发送的消息的消息流程图。所述消息序列始于从客户端120发送到网络服务器122的HTTP请求600。如上讨论的,这可以由客户端120的用户键入用于网络服务器122所宿的网站或以通过其访问的URL来实现。作为响应,DNS服务器(未示出)将返回用于代理服务器200、而不是网络服务器122的地址。
HTTP会话为网络请求-响应事务的序列。HTTP客户端通过建立至服务器上特定端口(一般是端口80,尽管还可以使用许多其它端口)的TCP连接,启动请求。在那一端口上“侦听”的初始HTTP请求中包含的IP地址处的HTTP服务器配置为设置TCP连接。在常规方法下,一接收到所述请求,HTTP服务器就发回包括例如“HTTP/1.1200OK”的状态线的HTTP响应消息。这一消息的主体一般为请求的资源,虽然还可以返回错误消息或其它信息。
在本文提供的代理服务器方法下,出现不同的序列。一接收到HTTP请求600,代理服务器200就将这认作用于新TCP连接的请求,并将所述请求作为消息602转发给网络服务器122。网络服务器122检查看它是否能支持进一步的连接,假如能够,将包括客户端ID的新代理的连接分配请求604返回代理服务器200。作为响应,代理服务器200为那一客户端ID(如果可用)分配一组适当的队列,并返回新代理连接确认(ACK)消息606。假如代理服务器200无法分配所述客户端ID队列,它会返回不同的消息,至少此时无法支持新代理的连接。
如上讨论的,在所述客户端和所述代理服务器之间建立单独的TCP连接。因此,假如成功分配所述新代理的连接,代理服务器200返回指示已建立TCP连接的响应608和TCP端口号给客户端120。因对于给定客户端,可能建立与同一服务器的多个TCP连接(各使用不同的TCP端口),所以各唯一的TCP连接由客户端的IP地址与TCP端口号的组合标识,如上所标识的。
这时候,在客户端120和代理服务器200之间建立HTTP连接,然而,总而言之,从客户端120和网络服务器122上操作的HTTP/HTTPS服务器功能340的角度,显得HTTP连接在客户端120和网络服务器122之间。因此,客户端120为物理的HTTP端点,网络服务器122为虚拟的HTTP端点。接着,在这些HTTP端点之间交换HTTP请求和HTTP响应的随后交换(由HTTP请求610及614和HTTP响应612及616描述),各HTTP请求首先遍历所述客户端与代理服务器之间的TCP连接,接着经多路复用TCP连接转发到网络服务器,各HTTP响应遍历相反的路径。
如HTTP释放消息618所描述的,任何HTTP端点能够明确地请求释放所述HTTP连接。例如,对于表现好的网络浏览器,例如谷歌的GoogleChrome、微软的InternetExplorer、苹果的Safari或Mozilla的Firefox,当用户关闭标签页时,所述网络浏览器(包括所述客户端)发送HTTP释放消息给与用于关闭的标签页的URL关联的网络服务器。可选地,网络服务器能够经HTTP超时620(其不是分离的消息,而是由所述网络服务器内部确定的某物)检测到HTTP连接不再存在。
从这方面来看,释放所述代理的连接以及客户端ID队列资源。网络服务器122发送包括客户端ID的代理连接释放消息622给代理服务器200。作为响应,代理服务器622返回释放代理连接ACK消息,包括客户端ID。这时候,代理服务器200和网络服务器122释放为已释放的代理连接分配的客户端ID队列。
所述多路复用TCP架构的一个新颖方面是网络服务器能够为单独的TCP连接实现流控制。例如,尽管本文讨论的多路复用TCP连接与常规的隧道连接共享某些相似性,此类隧道连接仅封装分组流,没有为单独的TCP连接提供分离的带宽分配。在本文讨论的技术下,网络服务器可以动态重分配为给定分TCP连接分配的带宽,包括临时暂停所述连接。结合所述网络服务器管理的这些流控制操作,代理服务器能够对其与所述客户端的TCP连接实现(适用时)对应的TCP流控制措施,例如防止缓冲器溢流及造成分组丢弃。
在一个实施例中,使网络服务器能够通知或指示代理服务器所述网络服务器能够支持多少客户端。如图7所示,这可以用若干标识网络服务器122能够支持的客户端数目(n)的客户端支持的消息700实现。作为响应,代理服务器200返回若干客户端支持的ACK消息702。
网络服务器还可以指示代理服务器节流给定的客户端,或暂时停止为给定的客户端转发分组。例如,网络服务器122可以发送节流命令704,指示代理服务器200节流对应于特定客户端连接的分组的转发,如客户端ID标识的。作为响应,代理服务器200将用节流命令ACK消息706回应。假如仍有大量进来的数据,则网络服务器可以选择性决定临时暂停为一个以上代理连接接收TCP分组。这在图7中描述为停止连接消息708,其标识临时暂停的客户端ID以及表示暂停前发送的最后一个字节的字节序列号。代理服务器200用暂停ACK消息响应,标识所述客户端ID。
正在进行的操作期间,网络服务器可以检测到它正在服务太多的客户端(结果,被迫丢弃分组)。响应于这类情况,网络服务器122发送客户端拒绝消息712,标识对应于要拒绝的客户端连接的一个以上客户端ID。作为响应,代理服务器200返回客户端拒绝ACK消息714。而且,代理服务器200发送HTTP连接关闭消息716给可应用的客户端。
代理服务器和/或网络服务器可以发送关于一个以上队列的队列填充水平和关联的客户端ID的信息,如队列填充水平718所描述的。这类消息还可以结合节流命令发送。作为另一选择,发送的服务器可以发送节流命令或请求给接收的服务器,请求或指示接收的服务器期待或配置用于给定客户端ID的增长的连接分组流。
一般来说,代理服务器与网络服务器之间的控制消息可以在多路复用TCP连接(例如,通过给所述控制指示符设置数据/控制标记)上发送,或可以在分离的连接(未示出)上发送,有时称作回退信道、控制信道或边带连接。各种分组格式可以用来便于控制通信,所用的特定格式在本公开文件的范畴之外,如本领域公知的用于实现服务器间的控制通信。此外,图7描述的源自网络服务器122的消息在可应用的情况下还可以源自代理服务器200。例如,代理服务器还可以发出节流命令或暂时停止命令给网络服务器。
控制信息的其它实例还包括以下所述的。来自代理的控制信息可以说:“新客户端,我想使用昵称N”。作为响应,该服务器可以说:“客户端太多”或“好的。接受新客户端N”。在一个实施例中,用于客户端N的数据的序列号始于1,或某个其它预定数目(和用初始序列号做有趣事情的TCP相反,但此处,它在所述代理与所述服务器之间的TCP连接内部,因此在1开始各客户端的数据很好)。
为了启动关闭连接,所述代理或服务器可以发送控制消息,说:“客户端N完成了,我想能够重用客户端ID#N”。作为响应,接收方(适用时,代理或服务器)可以说:“我接受达到序列号S1的客户端N的数据和达到序列号S2的客户端J的数据”。
作为另一实例,所述代理可以为P-STCP连接,或许在序列号191发送(给服务器的TCP信息的内部):
客户端X,序列#15,92字节数据
客户端Y,序列#51,12字节数据
作为响应,所述服务器可以说:“我已接受你发送的达到我们TCP序列号305的全部数据”。或者它可以说:“ACK客户端X达到106,ACK客户端Y达到63”。或者,假如所述服务器再也无法从Y接受数据,它可能说:“ACK客户端Y达到53”(假如所述代理仅从Y接受了2字节数据,那么它将不得不稍后重新从Y发送其余的)。
示范性实施环境和服务器架构
预想可以在各类计算及联网设备,例如数据中心和/或服务器群环境中运用的各类服务器中实现本发明实施例的方面。一般,数据中心和服务器群中所用的服务器包括阵列式服务器配置,例如基于机架的服务器或刀片服务器。这些服务器经各种网络装置通信地互连,例如利用LAN之间适当的切换及路由设施将服务器组划分为LAN,以构成私有的内网。例如,云托管设施一般可以运用具有众多服务器的大型数据中心。
作为综述,图8a-c、9显示了典型的刀片服务器组件及系统。在典型的配置下,运用机架式机箱800为多个服务器刀片(又名刀片)802(各占据对应的槽)提供电源及通信功能。(注意,无需占用机箱中的所有槽)。又可以将一个以上机箱800安装在图8c所示的刀片服务器机架803中。一经一个以上对接连接器安装,各刀片耦合到接口板804(例如,底板或中面)。通常,接口板包括给所述刀片提供电源及通信信号的多个相应匹配连接器,包括用于刀片间耦合因特网信号的路由信号路径。在当前实践下,许多接口板提供“热交换”功能-即,能够迅速增加或移除(“热交换”)刀片,无需通过适当的电源及数据信号缓存拆卸整个机箱。
图8a和8b显示了典型的中面接口板配置。接口板804的背部耦合到一个以上电源806。所述电源时常是冗余且可热交换的,耦合到适当的电源板和调节电路,以使电源故障时能持续操作。在可选的配置中,可以使用电源阵列给整个机架的刀片提供电力,其中无一对一的电源到机箱的供电。运用多个冷却风扇808吸收通过机箱的空气以冷却服务器刀片。
所有刀片服务器所需的一个重要特征是与其它IT基础设施外部通信的能力。这由一个以上网络连接卡810(各耦合到接口板804)推动。一般来说,网络连接卡可以包括物理接口,其包含多个网络端口连接(例如,RJ-45端口),或可以包括高密度连接器,设计为直接连接到网络设备,例如网络交换机、集线器或路由器。注意,还可以使用其它网络架构,例如架顶式(ToR)交换机架构和分解的交换机架构,所述网络链路可以包括有线电缆和/或光缆。
刀片服务器通常提供用于管理个体刀片操作的某类管理接口。这一般可以由一条或多条内置的网络或通信信道推动。例如,可以将用于便利“私有”或“管理”网络及适当切换的一条以上总线内置入所述接口板,或者可以通过紧密耦合的网络电缆和网络实现私有网络。可选地,可以由耦合到所述接口板背面或正面的管理切换卡812提供切换和其它管理功能。作为另一选择,可以运用管理或配置服务器管理刀片活动,其中通过标准的计算机联网基础设施,例如以太网,处理通信。
参考图9,显示了示范性刀片900的进一步细节。如上讨论的,各刀片包括分离的计算平台,配置为执行服务器类功能,即为“卡上服务器”。因此,各刀片包括常规服务器通用的组件,包括提供内部接线(即总线)以耦合适当的集成电路(IC)的主印刷电路板(主板)901和安装到所述板的其它组件。这些组件包括耦合到系统存储器904(例如,某种形式的随机存取存储器(RAM))的一个以上处理器902(又名CPU)、高速缓存存储器906(例如,SDRAM)和固件存储设备908(例如,闪存)。提供NIC(网络接口控制器)芯片910以支持常规的网络通信功能,为的是支持刀片与外部网络基础设施之间的通信。其它所示的组件包括状态LED(发光二极管)912、一个以上RJ-45以太网端口914(为简单起见,仅示出其中之一)和接口板连接器916。额外组件包括各种无源组件(即,电阻器、电容器)、电源调节组件和外部设备连接器。
一般来说,各刀片900还可以提供板上存储。这通常经一个以上内置的磁盘控制器和耦合到一个以上磁盘驱动918的对应的连接器推动。例如,典型的磁盘控制器包括SATA控制器、SCSI控制器等。一般来说,磁盘驱动918仅包括磁驱动或固态驱动(SSD)。作为选择,所述磁盘驱动可以独立于同一或分离的机架中的刀片封装,例如可能是用于存储大量数据的附网存储(NAS)装置或后端存储子系统。
NIC910包括用于便利对应的联网操作的电路及逻辑,例如支持物理层(L1)和数据链路层操作(L2)(例如,以太网MAC操作)。通常,由处理器902上运行的操作系统托管的操作系统网络栈推动上层操作。然而,在某些实施例中,NIC可以经嵌入式逻辑等使用自己的网络栈。
一般来说,当今的服务器处理器使用片上系统(SoC)基础架构,将多个功能组件、块和接口集成在一个芯片上。在某些SoC架构下,处理器包括包含多个核的CPU。
在一个典型的数据中心部署中,网络切换元件包括机架式设备,例如会占用1U、2U或4U槽,或可以由一个以上服务器刀片实现。可选地,可以使用一个以上服务器刀片实现网络切换元件。
取决于工作负载,本文描述的代理服务器和网络服务器操作可以经一个刀片,占用机箱中部分槽的一组刀片,具有多个刀片的机箱,或现在及未来数据中心环境中部署的其它类型服务器,例如多插孔服务器来实现。在某些实施例中,所述代理服务器和网络服务器可以实现为物理实体,而其它实施例可以使用物理及虚拟实体的组合。
以下编号的条款列出了本文所述主题的更多方面:
1.一种方法,包括:
在代理服务器,建立与多个客户端的多个TCP连接,每个TCP连接使用TCP端口将客户端与所述代理服务器连接;
经多路复用的TCP连接,耦合与网络服务器通信的所述代理服务器;
在所述代理服务器接收源自所述多个客户端的进来的TCP通信,每个进来的TCP通信包括至少一个包含分组有效载荷数据的TCP分组;
缓冲在相应客户端数据流中通过给定的TCP连接接收的TCP分组中包含的所述分组有效载荷数据;
在所述代理服务器,将包括所述客户端数据流中连串比特的数据段封装入多路复用(MUX)TCP分组,其中至少一部分所述MUXTCP分组封装来自至少两个分开的客户端数据流的数据段;
通过所述多路复用的TCP连接,从所述代理服务器传送所述MUXTCP分组到所述网络服务器;以及
在所述网络服务器,
解封所述MUXTCP分组中的数据段,并重组所述客户端数据流;以及
从重组的客户端数据流提取分组有效载荷数据。
2.如事项1所述的方法,其中在第一TCP连接上接收的所述一个以上TCP分组包括从第一客户端发送的超文本传输协议(HTTP)请求,所述方法进一步包括通过以下步骤将HTTP响应返回给所述第一客户端:
将所述HTTP响应嵌入去往所述第一客户端的客户端数据流;
将包括对应于所述客户端数据流的连串比特的数据段封装入一个以上MUXTCP分组;
在所述多路复用的TCP连接上,从所述网络服务器传送所述一个以上MUXTCP分组到所述代理服务器;
从所述MUXTCP分组解封所述数据段;
重组所述客户端数据流;以及
提取所述HTTP响应,并将所述HTTP响应封装入在所述第一TCP连接上从所述代理服务器转发至去往的客户端的一个以上TCP分组。
3.如事项1或2所述的方法,进一步包括:
对于每个TCP连接,
为所述TCP连接分配所述代理服务器上的至少一个队列;以及
将包括在所述TCP连接上接收的TCP分组中包含的分组有效载荷数据的客户端数据流缓冲于为所述TCP连接分配的所述至少一个队列。
4.如事项3所述的方法,其中为每个TCP连接分配的所述代理服务器上的至少一个队列包括输出队列,所述方法进一步包括:
将包括在所述TCP连接上传输的TCP分组内包含的连串分组有效载荷数据的客户端数据流缓冲于所述代理服务器上的所述输出队列;其中为相应TCP连接分配每个输出队列;
通过使用队列选择器选择提取数据段的输出队列,生成要经所述多路复用TCP连接传输到所述网络服务器的MUXTCP分组流,所述数据段封装在所述MUXTCP分组流中的相应MUXTCP分组内。
5.如前述事项中的任一项所述的方法,进一步包括:
接收从新客户端发送的超文本传输协议(HTTP)请求,以访问经所述网络服务器访问的网站的统一资源指示符(URL);
建立所述新客户端与所述代理服务器之间的新TCP连接;以及
分配所述代理服务器和所述网络服务器每一个上的队列,以支持经所述多路复用TCP连接从所述新客户端转发在所述代理服务器接收的HTTP请求给所述网络服务器,以及经到所述代理服务器的所述多路复用的TCP连接和所述新TCP连接,转发在所述网络服务器生成的HTTP响应至所述新客户端。
6.如前述事项中的任一项所述的方法,其中所述多路复用TCP连接具有总带宽,所述方法进一步包括:
为建立的与所述代理服务器的、且在所述多路复用的TCP连接上为其转发TCP分组的每个TCP连接,分配所述多路复用的TCP连接的总带宽的相应带宽片;以及
使为个别TCP连接分配的所述带宽片能动态调整。
7.如前述事项中的任一项所述的方法,进一步包括:
使所述网络服务器及代理服务器中的至少之一能够为个别TCP连接管理在所述多路复用的TCP连接上转发的数据的传输速率。
8.如事项7所述的方法,进一步包括:
使所述网络服务器及代理服务器中的至少之一能够暂停在所述多路复用的TCP连接上转发对应于选择的TCP连接的业务。
9.如事项8所述的方法,其中所述网络服务器发送请求给所述代理服务器以暂停用于给定TCP连接的业务,所述方法进一步包括:
继续缓冲在TCP连接上从客户端接收的进来的TCP业务;
接收允许恢复用于所述TCP连接的业务的指示;以及
恢复发送对应于缓冲器中累积的、从所述代理服务器至所述网络服务器的TCP业务的数据段。
10.如前述事项中的任一项所述的方法,进一步包括:
从所述网络服务器向所述代理服务器发送信息,其标识可以多路复用且在所述多路复用的TCP连接上发送的同时数据流的最大数目;
建立对应于所述同时数据流的最大数目的多个客户端连接;
在所述代理服务器,从想要与所述网络服务器通信的新客户端接收数据;
缓冲来自所述新客户端的数据;以及
响应于确定现有的客户端与服务器进行通信,为所述新客户端协商与所述网络服务器的新客户端连接。
11.一种网络服务器装置,包括:
处理器;
存储器,在操作上耦合到所述处理器;
包括至少一个网络端口的网络适配器,在操作上耦合到所述处理器;以及
存储设备,具有其上存储的指令,包括多个软件模块,配置为由所述处理器执行以使所述网络服务器装置能够,
建立代理服务器与网络服务器之间的多路复用TCP连接,所述多路复用TCP连接配置为在包括耦合到所述网络适配器上网络端口的链路的转发路径上传输数据,其中多个客户端经相应TCP连接连接到所述代理服务器;以及
在所述多路复用TCP连接上,将去往所述多个客户端的客户端数据流数据作为多路复用(MUX)TCP分组发送给所述代理服务器,各MUXTCP分组封装一个以上数据段,其包括来自包括经代理服务器、在代理服务器和客户端之间TCP连接上转发给客户端的TCP分组中封装的分组有效载荷数据的一个以上客户端数据流的连串比特,其中至少一部分MUXTCP分组封装用于至少两条分离的客户端数据流的数据段。
12.如事项11所述的网络服务器,其中所述多个软件模块进一步配置为使所述网络服务器装置能够:
在所述多路复用TCP连接上,从所述代理服务器接收MUXTCP分组流,其中各MUXTCP分组封装一个以上数据段,各数据段包括部分从TCP客户端接收的客户端数据流;
解封所述MUXTCP分组中的数据段,并重组所述客户端数据;以及
从所述重组的客户端数据流提取分组有效载荷数据。
13.如事项12所述的网络服务器装置,其中所述多个软件模块进一步配置为使所述网络服务器装置能够:
为用于将所述多个客户端连接到所述代理服务器的各TCP连接分配存储器的存储空间内相应的一组队列,其中用于给定TCP连接的所述相应的一组队列包括至少一个输出队列和至少一个输入队列。
14.如事项12所述的网络服务器,其中各TCP连接和为所述连接分配的一组队列中的队列由唯一的客户端标识符标识。
15.如事项11-15中的任一项所述的网络服务器装置,其中所述多个模块包括软件处理栈,其中所述多个软件模块进一步配置为使所述网络服务器装置能够:
使所述软件处理栈生成的客户端数据流进入多个输出队列,其中用于各输出队列的入队客户端数据流中包含的数据去往一个客户端;
通过使用队列选择器选择提取要封装在MUXTCP分组流中的相应MUXTCP分组中的数据段的输出队列,生成MUXTCP分组流。
16.如事项15所述的网络服务器装置,其中所述多个软件模块进一步配置为使所述网络服务器装置能够:
为各TCP连接分配所述多路复用TCP连接的相应带宽片;以及
实现队列选择算法,其根据为所述TCP连接分配的带宽片,选择提取数据段的输出队列。
17.如事项16所述的网络服务器装置,其中所述多个软件模块进一步配准为使所述网络服务器装置能够:
以个别处理的方式,对经所述多路复用TCP连接传输的、与选择的TCP连接关联的客户端数据流,进行节流或暂停至少之一。
18.一种代理服务器装置,配置为作为代理服务器为网络服务器操作,包括:
处理器;
存储器,在操作上耦合到所述处理器;
多个网络端口,在操作上耦合到所述处理器;以及
存储设备,具有其上存储的指令,包括多个软件模块,配置为由所述处理器执行以使所述代理服务器装置能够,
在第一网络端口,建立与相应客户端的多个TCP连接;
建立所述代理服务器和所述网络服务器之间的多路复用TCP连接,所述多路复用TCP连接配置为在包括耦合到代理服务器装置上的第二网络端口的链路的转发路径上传输数据;
在所述多个TCP连接上,从所述多个客户端接收TCP分组;
标识要经所述代理服务器给所述网络服务器代理的TCP分组;
缓冲要经所述代理服务器装置代理的、在相应客户端数据流中给定的TCP连接上接收的TCP分组中包含的数据;
封装包括多路复用(MUX)TCP分组中连串客户端数据流的数据段,至少一部分MUXTCP分组封装包括连串的至少两个分离的客户端数据流的数据段;以及
发送从第二网络端口出站的MUXTCP分组,以在所述多路复用TCP连接上转发给所述网络服务器。
19.如事项18所述的代理服务器,其中所述多个软件模块进一步配置为使所述代理服务器装置能够:
在多路复用TCP连接上,从所述网络服务器接收MUXTCP分组流,各MUXTCP分组封装包括一个以上数据流中连串比特的一个以上数据段;
解封所述MUXTCP分组中封装的所述一个以上数据段;
重组所述客户端数据流;
标识与给定的客户端数据流关联的TCP连接;
将从所述给定客户端数据流中提取的分组有效载荷数据封装入去往与所述给定客户端数据流关联的客户端;以及
在用于所述客户端的TCP连接上,将所述TCP分组转发给去往的客户端。
20.如事项18所述的代理服务器装置,其中所述多个软件模块进一步配置为使所述代理服务器装置能够:
为用于将多个客户端连接到所述代理服务器的各TCP连接,分配所述存储器的存储空间内相应的一组队列,其中用于给定TCP连接的相应的一组队列包括至少一个输出队列,其中缓冲要经所述多路复用TCP连接转发给所述网络服务器的TCP分组。
21.如事项20所述的代理服务器装置,其中所述多个软件模块进一步配置为使所述代理服务器装置能够:
为各TCP连接分配所述多路复用TCP连接的相应带宽片;以及
实现队列选择算法,其根据为所述TCP连接分配的带宽片选择提取数据段的输出队列。
22.如事项18所述的代理服务器装置,其中所述多个软件模块进一步配置为使所述代理服务器装置能够:
从标识TCP连接的网络服务器接收节流命令和暂停命令之一;以及作为响应,
对于在所述多路复用TCP连接上传输的、与所述TCP连接关联的客户端数据流,进行节流和暂停之一。
23.至少一个非暂时性机器可读介质,具有其上存储的指令,包括多个软件模块,配置为在代理服务器和网络服务器上执行以使所述代理服务器和网络服务器能够:
在代理服务器,建立与多个客户端的多个TCP连接,各TCP连接使用TCP端口将客户端与所述代理服务器连接;
经多路复用TCP连接,耦合与所述网络服务器通信的代理服务器;
在所述代理服务器接收源自所述多个客户端的进来的TCP通信,各进来的TCP通信包括至少一个TCP分组,其包括包含超文本传输协议(HTTP)请求的数据;
从用于给定TCP连接的TCP分组提取包括HTTP请求的分组有效载荷数据,并将提取的分组有效载荷数据加到客户端数据流;
在所述代理服务器,将包括客户端数据流的连串比特的数据段封装入多路复用(MUX)TCP分组,其中至少一部分MUXTCP分组封装来自多个客户端数据流的数据段;
在所述多路复用TCP连接上,从所述代理服务器传送所述MUXTCP分组给所述网络服务器;以及
在所述网络服务器,
解封所述MUXTCP分组中的数据段,重组所述客户端数据流;以及
从重组的客户端数据流提取HTTP请求。
24.如事项23所述的至少一个非暂时性机器可读介质,其中所述多个软件模块进一步配置为,一执行就使所述代理服务器和网络服务器能够:
将HTTP请求的HTTP响应嵌入去往发送HTTP请求的客户端的客户端数据流;
将对应于所述客户端数据流的一个以上数据段封装入一个以上MUXTCP分组;
在所述多路复用TCP连接上,从所述网络服务器传送所述一个以上MUXTCP分组给所述代理服务器;
解封所述一个以上MUXTCP分组中封装的一个以上数据段;
重组所述客户端数据流;
标识与所述客户端数据流关联的TCP连接;
从所述重组的客户端数据流提取HTTP响应,并将所述HTTP响应封装入去往与所述客户端数据流关联的客户端的一个以上TCP分组;以及
在用于所述客户端的TCP连接上,将所述一个以上TCP数据转发给去往的客户端。
25.如事项24所述的至少一个非暂时性机器可读介质,其中嵌有所述HTTP响应的所述一个以上TCP分组各具有对应于用于代理服务器的IP地址的源互联网协议(IP)地址和对应于用于去往的客户端的IP地址的目的地IP地址。
26.如事项23-25中的任一项所述的至少一个非暂时性机器可读介质,其中所述多个软件模块进一步配置为,一执行就使所述代理服务器及网络服务器能够:
对于各TCP连接,
为所述TCP连接分配所述代理服务器上的至少一个队列;以及
将包括所述TCP连接上接收的TCP分组中包含的分组有效载荷数据的客户端数据流缓冲于为所述TCP连接分配的至少一个队列。
27.如事项26所述的至少一个非暂时性机器可读介质,其中为各TCP连接分配的代理服务器上的所述至少一个队列包括输出队列,且其中所述多个软件模块进一步配置为,一执行就使所述代理服务器及网络服务器:
将包括在TCP连接上传送的TCP分组中包含的连串分组有效载荷数据的客户端数据流缓冲于所述代理服务器上的输出队列;其中为相应TCP连接分配各输出队列;
通过使用队列选择器选择提取要封装在MUXTCP分组流中相应MUXTCP分组内的数据段的输出队列,生成要经多路复用TCP连接传送给网络服务器的MUXTCP分组流。
28.如事项23-27中的任一项所述的至少一个非暂时性机器可读介质,其中所述多个软件模块进一步配置为,一执行就使所述代理服务器及网络服务器能够:
接收从新客户端发送的HTTP请求,以访问用于经网络服务器访问的网站的统一资源指示符(URL);
建立所述新客户端与所述代理服务器之间的新TCP连接;以及
分配所述代理服务器和网络服务器各上的队列,以支持经多路复用TCP连接、从新客户端转发在代理服务器接收的HTTP请求给网络服务器,以及经至所述代理服务器的多路复用TCP连接和新TCP连接,将在网络服务器生成的HTTP响应转发给代理服务器。
29.如事项23-28中的任一项所述的至少一个非暂时性机器可读介质,其中所述多路复用TCP连接具有总带宽,且其中所述多个软件模块进一步配置为,一执行就使所述代理服务器及网络服务器能够:
为建立的与代理服务器的各TCP连接,和为在所述多路复用TCP连接上转发哪些TCP分组,分配所述多路复用TCP连接的总带宽的相应带宽片;以及
使为单独的TCP连接分配的带宽片能够动态调整。
30.如事项23-29中的任一项所述的至少一个非暂时性机器可读介质,其中所述多个软件模块进一步配置为,一执行就使网络服务器及代理服务器至少之一能够管理用于单独的TCP连接、在多路复用TCP连接上转发的的数据的传输速率。
31.如事项23-30中的任一项所述的至少一个非暂时性机器可读介质,其中所述多个软件模块进一步配置为,一执行就使所述网络服务器及代理服务器至少之一暂停对应于所选的TCP连接的业务在所述多路复用TCP连接上转发。
32.如事项31所述的至少一个非暂时性机器可读介质,其中所述网络服务器发送请求给代理服务器以暂停用于给定TCP连接的业务,且其中所述多个软件模块进一步配置为,一执行就使所述代理服务器和网络服务器能够:
继续缓冲在TCP连接上从客户端接收的进来的TCP业务;
接收允许恢复用于所述TCP连接的业务的指示;以及
恢复发送对应于缓冲器中累积的、从代理服务器至网络服务器的TCP业务的数据段。
33.如事项23-32中的任一项所述的至少一个非暂时性机器可读介质,其中所述多个软件模块进一步配置为,一执行就使所述代理服务器及网络服务器能够:
从网络服务器给代理服务器发送信息,其标识最大数目的可以多路复用、且在TCP连接上发送的同时数据流;
建立对应于所述最大数目的同时数据流的若干客户端连接;
在所述代理服务器,从想要与网络服务器通信的新客户端接收数据;
缓冲来自所述新客户端的数据;以及
响应于确定现有的客户端与所述服务器进行通信,为所述新客户端协商与所述网络服务器的新客户端连接。
34.一种网络服务器设备,包括:
处理器;
存储器,在操作上耦合到所述处理器;
包括至少一个网络端口的网络适配器,在操作上耦合到所述处理器;以及
部件,用于:
建立代理服务器与所述网络服务器之间的多路复用的TCP连接,所述多路复用的TCP连接配置为在包括耦合到所述网络适配器上网络端口的链路的转发路径上传输数据,其中多个客户端经相应TCP连接连接到所述代理服务器;以及
在所述多路复用的TCP连接上,向所述代理服务器发送去往所述多个客户端的作为多路复用(MUX)TCP分组流的客户端数据流数据,每个MUXTCP分组封装一个以上数据段,数据段包含来自包括所述代理服务器和客户端之间的TCP连接上、经所述代理服务器转发到所述客户端的TCP分组中封装的分组有效载荷数据的一个以上客户端数据流的连串比特,其中至少一部分MUXTCP分组封装用于至少两个分开的客户端数据流的数据段。
35.如事项34所述的网络服务器装置,进一步包括部件,用于:
在所述多路复用的TCP连接上,从所述代理服务器接收MUXTCP分组流,其中每个MUXTCP分组封装一个以上数据段,并且每个数据段包括从TCP客户端接收的一部分客户端数据流;
解封所述MUXTCP分组中的数据段,并重组所述客户端数据流;以及
从所述重组的客户端数据流提取分组有效载荷数据。
36.如事项35所述的网络服务器装置,进一步包括部件,用于:为用于将多个客户端连接到所述代理服务器的每个TCP连接分配所述存储器的存储器空间内的相应的一组队列,其中用于给定TCP连接的所述相应的一组队列包括至少一个输出队列和至少一个输入队列。
37.如事项35所述的网络服务器装置,其中由唯一的客户端标识符标识每个TCP连接和为所述连接分配的所述一组队列中的队列。
38.如事项34-38中的任一项所述的网络服务器装置,进一步包括部件,用于:
使通过软件处理栈生成的客户端数据流排队进多个输出队列,其中每个输出队列的排队的客户端数据流中包含的数据去往单个客户端;
通过使用队列选择器选择提取数据段的输出队列,生成MUXTCP分组流,所述数据段封装在MUXTCP分组流中的相应MUXTCP分组内。
39.如事项38所述的网络服务器装置,进一步包括部件,用于:
为每个所述TCP连接分配所述多路复用的TCP连接的相应带宽片;以及
实现队列选择算法,根据为所述TCP连接分配的带宽片,选择提取数据段的输出队列。
40.如事项39所述的网络服务器装置,进一步包括部件,用于:
以个别处理的方式,对于经所述多路复用的TCP连接传输且与选择的TCP连接关联的客户端数据流,进行节流或暂停中的至少之一。
41.一种代理服务器装置,配置为作为用于网络服务器的代理服务器操作,包括:
处理器;
存储器,在操作上耦合到所述处理器;
多个网络端口,在操作上耦合到所述处理器;以及
部件,用于
在第一网络接口,建立与相应客户端的多个TCP连接;
建立所述代理服务器与所述网络服务器之间的多路复用的TCP连接,所述多路复用的TCP连接配置为在包括耦合到所述代理服务器装置上的第二网络端口的链路的转发路径上传输数据;
在所述多个TCP连接上,从所述多个客户端接收TCP分组;
标识经所述代理服务器装置向所述网络服务器代理的TCP分组;
缓冲经所述代理服务器装置代理的、在相应客户端数据流中的给定的TCP连接上接收的TCP分组内包含的数据;
将包括连串所述客户端数据流的数据段封装入多路复用(MUX)TCP分组,至少一部分MUXTCP分组封装包括连串的至少两个分开的客户端数据流的数据段;以及
在所述多路复用的TCP连接上,发送从所述第二网络端口出站的、转发给所述网络服务器的MUXTCP分组。
42.如事项41所述的代理服务器装置,进一步包括部件,用于:
在所述多路复用的TCP连接上,从所述网络服务器接收MUXTCP分组流,每个MUXTCP分组封装包括一个以上客户端数据流中的连串比特的一个以上数据段;
解封所述MUXTCP分组中封装的所述一个以上数据段;
重组所述客户端数据流;
标识与给定客户端数据流关联的TCP连接;
将从所述给定客户端数据流提取的分组有效载荷数据封装入去往与所述给定客户端数据流关联的客户端的TCP分组;以及
在用于所述客户端的TCP连接上,将所述TCP分组转发给去往的客户端。
43.如事项41或42所述的代理服务器装置,进一步包括部件,用于为用于将所述多个客户端连接到所述代理服务器的每个TCP连接分配所述存储器的存储器空间中的一组相应队列,其中用于给定TCP连接的所述一组相应队列包括至少一个输出队列,其中缓冲经所述多路复用的TCP连接转发给所述网络服务器的TCP分组。
44.如事项43所述的代理服务器装置,进一步包括部件,用于:
为每个TCP连接分配所述多路复用TCP连接的相应带宽片;以及
实现队列选择算法,根据为所述TCP连接分配的带宽片,选择提取数据段的输出队列。
45.如事项41-44中的任一项所述的代理服务器装置,进一步包括部件,用于:
从标识TCP连接的所述网络服务器接收节流命令和暂停命令之一;以及作为响应
对与所述TCP连接关联的、在所述多路复用的TCP连接上传输的客户端数据流,进行节流和暂停之一。
如上讨论的,本文实施例的各方面可以由对应的软件和/或固件组件及应用程序,例如由服务器处理器等执行的软件和/或固件,推动。因此,本发明实施例可以用作在某种形式的处理器、处理内核或嵌入式逻辑,或处理器或内核上运行的虚拟机上执行、或在计算机可读或机器可读非暂时性存储介质内或上实施或实现的软件程序、软件模块、固件和/或分布式软件,或用于支持它们。计算机可读或机器可读非暂时性存储介质包括用于以机器(例如,计算机)可读的形式存储或传输数据的任意机制。例如,计算机可读或机器可读非暂时性存储介质包括以计算机或计算机器(例如,计算设备、电子系统等)可访问的形式提供(即,存储和/或传输)信息的任意机制,例如可记录/非可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。所述内容可以是直接可执行程序(“对象”或“可执行”形式)、源代码或差异码(“差量”或“插入”码)。计算机可读或机器可读非暂时性存储介质还可以包括能够从其下载内容的存储或数据库。所述计算机可读或机器可读非暂时性存储介质还可以包括设备或产品,具有销售或交货时其上存储的内容。因此,可以将交给设备存储的内容或提供用于在通信上下载的内容理解为提供一种制品,其包括具有本文所述此类内容的计算机可读或机器可读的非暂时性存储介质。
本文上述的内容称作过程、服务器或工具的各种组件可以是用于执行所述功能的部件。由本文所述的各种组件执行的操作和功能可以由处理元件上运行的软件、经嵌入式硬件等或硬件及软件组合实现。此类组件可以实现为软件模块、硬件模块、专用硬件(例如,应用特定的硬件、ASIC、DSP等)、嵌入式控制器、硬连线的电路、硬件逻辑等。软件内容(例如,数据指令、配置信息等)可以经包括计算机可读或机器可读的非暂时性存储介质的制品提供,其提供表示能够执行的指令的内容。所述内容可以使计算机执行本文所述的各种功能/操作的计算机。
虽然参考特定实施方式描述了某些实施例,但根据某些实施例还可能有其它实现方式。另外,附图所示和/或本文所述的元件或其它特征的布置和/或次序无需以所示所述的特定方式安排。根据某些实施例,还可能有许多其它布置。
在图中所示的各系统内,某些情况下的元件可能各具有相同的编号或不同的编号,暗示所表示的元件可能不同和/或相似。然而,一个元件足可以灵活地具有不同的实现方式,并与本文所示或所述的某些或全部系统工作。附图所示的各种元件可以相同或不同。哪个称作第一元件和哪个称作第二元件都是随意的。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其衍生词。应该理解这些术语不意在作为彼此的同义词。相反,在特定实施例中,“连接”可以用于指示两个以上元件互相直接物理或电接触。“耦合”可以意指两个以上元件直接物理或电接触。然而,“耦合”还可以意指两个以上元件互相不直接接触,但仍然互相协作或交互。
一个实施例为本发明的一种实现方式或实例。说明书中引用“某个实施例”、“一些实施例”或“其它实施例”意指至少在本发明的某些实施例,但未必是所有实施例中,包含结合所述实施例描述的特定特征、结构或特性。各种出现“某个实施例”、“一个实施例”或“某些实施例”未必全都指的是相同的实施例。
不是本文所述所示的全部组件、特征、结构、特性等包含在一个或多个特定实施例中。例如,即使说明书记载了“可以”、“可能”、“能够”或“可能会”包括组件、特征、结构或特性,也无需包括那个特定的组件、特征、结构或特性。假如说明书或权利要求指“一个”或“某个”元件,那不意味着仅有一个元件。假如说明书或权利要求指“一个额外”元件,那并未排除额外元件多于一个。
前面的详细描述中的斜体字母,例如“n”,用于描述整数,使用特定字母不限于特定实施例。而且,同一个字母可以用在不同的权利要求中表示不同的整数,或可以使用不同的字母。另外,所述详细描述中使用特定字母可能或无法匹配涉及所述详细说明中相同主题的权利要求中使用的字母。
如本文所用的,由术语“至少一个”连接的项目列表可能意指所列术语的任意组合。例如,短语“A、B或C至少一个”可能意指A;B;C;A和B;A和C;B和C;或A、B和C。
本发明所示实施例的上述描述,包括摘要中所描述的,不旨在详尽或将本发明限于公开的精确形式。虽然出于说明目的本文描述了用于本发明的具体实施例或实例,但如所属领域技术人员认识到的,在本发明范畴内可能有各种等同修改。
能够根据上面的详细描述对本发明进行这些修改。不应该将随后的权利要求中所用的术语解释为将本发明限于说明书和附图公开的具体实施例。相反,本发明的范畴完全由随后的权利要求确定,其根据建立的权利要求解释的理论解释。
Claims (25)
1.一种方法,包括:
在代理服务器,建立与多个客户端的多个TCP连接,每个TCP连接使用TCP端口将客户端与所述代理服务器连接;
经多路复用的TCP连接,耦合与网络服务器通信的所述代理服务器;
在所述代理服务器接收源自所述多个客户端的进来的TCP通信,每个进来的TCP通信包括至少一个包含分组有效载荷数据的TCP分组;
缓冲在相应客户端数据流中通过给定的TCP连接接收的TCP分组中包含的所述分组有效载荷数据;
在所述代理服务器,将包括所述客户端数据流中连串比特的数据段封装入多路复用(MUX)TCP分组,其中至少一部分所述MUXTCP分组封装来自至少两个分开的客户端数据流的数据段;
通过所述多路复用的TCP连接,从所述代理服务器传送所述MUXTCP分组到所述网络服务器;以及
在所述网络服务器,
解封所述MUXTCP分组中的数据段,并重组所述客户端数据流;以及
从重组的客户端数据流提取分组有效载荷数据。
2.如权利要求1所述的方法,其中在第一TCP连接上接收的所述一个以上TCP分组包括从第一客户端发送的超文本传输协议(HTTP)请求,所述方法进一步包括通过以下步骤将HTTP响应返回给所述第一客户端:
将所述HTTP响应嵌入去往所述第一客户端的客户端数据流;
将包括对应于所述客户端数据流的连串比特的数据段封装入一个以上MUXTCP分组;
在所述多路复用的TCP连接上,从所述网络服务器传送所述一个以上MUXTCP分组到所述代理服务器;
从所述MUXTCP分组解封所述数据段;
重组所述客户端数据流;以及
提取所述HTTP响应,并将所述HTTP响应封装入在所述第一TCP连接上从所述代理服务器转发至去往的客户端的一个以上TCP分组。
3.如权利要求1或2所述的方法,进一步包括:
对于每个TCP连接,
为所述TCP连接分配所述代理服务器上的至少一个队列;以及
将包括在所述TCP连接上接收的TCP分组中包含的分组有效载荷数据的客户端数据流缓冲于为所述TCP连接分配的所述至少一个队列。
4.如权利要求3所述的方法,其中为每个TCP连接分配的所述代理服务器上的至少一个队列包括输出队列,所述方法进一步包括:
将包括在所述TCP连接上传输的TCP分组内包含的连串分组有效载荷数据的客户端数据流缓冲于所述代理服务器上的所述输出队列;其中为相应TCP连接分配每个输出队列;
通过使用队列选择器选择提取数据段的输出队列,生成要经所述多路复用TCP连接传输到所述网络服务器的MUXTCP分组流,所述数据段封装在所述MUXTCP分组流中的相应MUXTCP分组内。
5.如前述权利要求中的任一项所述的方法,进一步包括:
接收从新客户端发送的超文本传输协议(HTTP)请求,以访问经所述网络服务器访问的网站的统一资源指示符(URL);
建立所述新客户端与所述代理服务器之间的新TCP连接;以及
分配所述代理服务器和所述网络服务器每一个上的队列,以支持经所述多路复用TCP连接从所述新客户端转发在所述代理服务器接收的HTTP请求给所述网络服务器,以及经到所述代理服务器的所述多路复用的TCP连接和所述新TCP连接,转发在所述网络服务器生成的HTTP响应至所述新客户端。
6.如前述权利要求中的任一项所述的方法,其中所述多路复用TCP连接具有总带宽,所述方法进一步包括:
为建立的与所述代理服务器的、且在所述多路复用的TCP连接上为其转发TCP分组的每个TCP连接,分配所述多路复用的TCP连接的总带宽的相应带宽片;以及
使为个别TCP连接分配的所述带宽片能动态调整。
7.如前述权利要求中的任一项所述的方法,进一步包括:
使所述网络服务器及代理服务器中的至少之一能够为个别TCP连接管理在所述多路复用的TCP连接上转发的数据的传输速率。
8.如权利要求7所述的方法,进一步包括:
使所述网络服务器及代理服务器中的至少之一能够暂停在所述多路复用的TCP连接上转发对应于选择的TCP连接的业务。
9.如权利要求8所述的方法,其中所述网络服务器发送请求给所述代理服务器以暂停用于给定TCP连接的业务,所述方法进一步包括:
继续缓冲在TCP连接上从客户端接收的进来的TCP业务;
接收允许恢复用于所述TCP连接的业务的指示;以及
恢复发送对应于缓冲器中累积的、从所述代理服务器至所述网络服务器的TCP业务的数据段。
10.如前述权利要求中的任一项所述的方法,进一步包括:
从所述网络服务器向所述代理服务器发送信息,其标识可以多路复用且在所述多路复用的TCP连接上发送的同时数据流的最大数目;
建立对应于所述同时数据流的最大数目的多个客户端连接;
在所述代理服务器,从想要与所述网络服务器通信的新客户端接收数据;
缓冲来自所述新客户端的数据;以及
响应于确定现有的客户端与服务器进行通信,为所述新客户端协商与所述网络服务器的新客户端连接。
11.至少一种非暂时性机器可读介质,具有其上存储的指令,包括多个软件模块,配置为在代理服务器和网络服务器上执行以使所述代理服务器和网络服务器执行前述权利要求中的任一项所述的方法。
12.一种网络服务器设备,包括:
处理器;
存储器,在操作上耦合到所述处理器;
包括至少一个网络端口的网络适配器,在操作上耦合到所述处理器;以及
部件,用于:
建立代理服务器与所述网络服务器之间的多路复用的TCP连接,所述多路复用的TCP连接配置为在包括耦合到所述网络适配器上网络端口的链路的转发路径上传输数据,其中多个客户端经相应TCP连接连接到所述代理服务器;以及
在所述多路复用的TCP连接上,向所述代理服务器发送去往所述多个客户端的作为多路复用(MUX)TCP分组流的客户端数据流数据,每个MUXTCP分组封装一个以上数据段,数据段包含来自包括所述代理服务器和客户端之间的TCP连接上、经所述代理服务器转发到所述客户端的TCP分组中封装的分组有效载荷数据的一个以上客户端数据流的连串比特,其中至少一部分MUXTCP分组封装用于至少两个分开的客户端数据流的数据段。
13.如权利要求12所述的网络服务器装置,进一步包括部件,用于:
在所述多路复用的TCP连接上,从所述代理服务器接收MUXTCP分组流,其中每个MUXTCP分组封装一个以上数据段,并且每个数据段包括从TCP客户端接收的一部分客户端数据流;
解封所述MUXTCP分组中的数据段,并重组所述客户端数据流;以及
从所述重组的客户端数据流提取分组有效载荷数据。
14.如权利要求13所述的网络服务器装置,进一步包括部件,用于:为用于将多个客户端连接到所述代理服务器的每个TCP连接分配所述存储器的存储器空间内的相应的一组队列,其中用于给定TCP连接的所述相应的一组队列包括至少一个输出队列和至少一个输入队列。
15.如权利要求12或13所述的网络服务器装置,其中由唯一的客户端标识符标识每个TCP连接和为所述连接分配的所述一组队列中的队列。
16.如权利要求12-15中的任一项所述的网络服务器装置,进一步包括部件,用于:
使通过软件处理栈生成的客户端数据流排队进多个输出队列,其中每个输出队列的排队的客户端数据流中包含的数据去往单个客户端;
通过使用队列选择器选择提取数据段的输出队列,生成MUXTCP分组流,所述数据段封装在MUXTCP分组流中的相应MUXTCP分组内。
17.如权利要求16所述的网络服务器装置,进一步包括部件,用于:
为每个所述TCP连接分配所述多路复用的TCP连接的相应带宽片;以及
实现队列选择算法,根据为所述TCP连接分配的带宽片,选择提取数据段的输出队列。
18.如权利要求17所述的网络服务器装置,进一步包括部件,用于:
以个别处理的方式,对于经所述多路复用的TCP连接传输且与选择的TCP连接关联的客户端数据流,进行节流或暂停中的至少之一。
19.如权利要求12-18中的任一项所述的网络服务器装置,进一步包括部件,用于发送多个多路复用TCP连接控制命令给所述代理服务器,并且从所述代理服务器接收多个命令响应,其中所述控制命令用于管理所述多路复用的TCP连接。
20.一种代理服务器装置,配置为作为用于网络服务器的代理服务器操作,包括:
处理器;
存储器,在操作上耦合到所述处理器;
多个网络端口,在操作上耦合到所述处理器;以及
部件,用于
在第一网络接口,建立与相应客户端的多个TCP连接;
建立所述代理服务器与所述网络服务器之间的多路复用的TCP连接,所述多路复用的TCP连接配置为在包括耦合到所述代理服务器装置上的第二网络端口的链路的转发路径上传输数据;
在所述多个TCP连接上,从所述多个客户端接收TCP分组;
标识经所述代理服务器装置向所述网络服务器代理的TCP分组;
缓冲经所述代理服务器装置代理的、在相应客户端数据流中的给定的TCP连接上接收的TCP分组内包含的数据;
将包括连串所述客户端数据流的数据段封装入多路复用(MUX)TCP分组,至少一部分MUXTCP分组封装包括连串的至少两个分开的客户端数据流的数据段;以及
在所述多路复用的TCP连接上,发送从所述第二网络端口出站的、转发给所述网络服务器的MUXTCP分组。
21.如权利要求20所述的代理服务器装置,进一步包括部件,用于:
在所述多路复用的TCP连接上,从所述网络服务器接收MUXTCP分组流,每个MUXTCP分组封装包括一个以上客户端数据流中的连串比特的一个以上数据段;
解封所述MUXTCP分组中封装的所述一个以上数据段;
重组所述客户端数据流;
标识与给定客户端数据流关联的TCP连接;
将从所述给定客户端数据流提取的分组有效载荷数据封装入去往与所述给定客户端数据流关联的客户端的TCP分组;以及
在用于所述客户端的TCP连接上,将所述TCP分组转发给去往的客户端。
22.如权利要求21所述的代理服务器装置,其中所述分组有效载荷数据包括超文本传输协议(HTTP)响应。
23.如权利要求20或21所述的代理服务器装置,进一步包括部件,用于为用于将所述多个客户端连接到所述代理服务器的每个TCP连接分配所述存储器的存储器空间中的一组相应队列,其中用于给定TCP连接的所述一组相应队列包括至少一个输出队列,其中缓冲经所述多路复用的TCP连接转发给所述网络服务器的TCP分组。
24.如权利要求23所述的代理服务器装置,进一步包括部件,用于:
为每个TCP连接分配所述多路复用TCP连接的相应带宽片;以及
实现队列选择算法,根据为所述TCP连接分配的带宽片,选择提取数据段的输出队列。
25.如权利要求20-23中的任一项所述的代理服务器装置,进一步包括部件,用于:
从标识TCP连接的所述网络服务器接收节流命令和暂停命令之一;以及作为响应
对与所述TCP连接关联的、在所述多路复用的TCP连接上传输的客户端数据流,进行节流和暂停之一。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/583337 | 2014-12-26 | ||
US14/583,337 US9923677B2 (en) | 2014-12-26 | 2014-12-26 | Multiplexing many client streams over a single connection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105743812A true CN105743812A (zh) | 2016-07-06 |
CN105743812B CN105743812B (zh) | 2019-08-27 |
Family
ID=56117053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511036053.XA Active CN105743812B (zh) | 2014-12-26 | 2015-11-26 | 通信方法、网络服务器装置以及代理服务器装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9923677B2 (zh) |
JP (1) | JP6318453B2 (zh) |
CN (1) | CN105743812B (zh) |
DE (1) | DE102015119893B4 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107666474A (zh) * | 2016-07-30 | 2018-02-06 | 华为技术有限公司 | 一种网络报文处理方法、装置及网络服务器 |
CN107872538A (zh) * | 2017-12-07 | 2018-04-03 | 浙江大华技术股份有限公司 | 解耦tcp长连接的业务处理方法、反向代理和业务服务器 |
CN107911415A (zh) * | 2017-10-20 | 2018-04-13 | 深圳市网心科技有限公司 | Tcp流的多路复用系统及其方法、存储介质与终端 |
CN110720205A (zh) * | 2017-05-04 | 2020-01-21 | 诺基亚美国公司 | 经由用户服务平台通信的方法、装置和计算机可读存储介质 |
CN110784444A (zh) * | 2019-09-09 | 2020-02-11 | 航天行云科技有限公司 | 一种嵌套数据流处理的方法及相关设备 |
CN111367650A (zh) * | 2018-12-26 | 2020-07-03 | 浙江大学 | 一种输入输出流的处理方法、装置及系统 |
CN112671933A (zh) * | 2021-02-23 | 2021-04-16 | 浙江中控技术股份有限公司 | 一种数据处理方法及系统 |
CN112929393A (zh) * | 2019-12-05 | 2021-06-08 | 中兴通讯股份有限公司 | 一种建立http/2连接的方法、系统、装置和电子设备 |
CN113366456A (zh) * | 2019-01-31 | 2021-09-07 | 日本电气株式会社 | 数据中继设备、方法、传送系统和程序 |
CN113453378A (zh) * | 2020-03-26 | 2021-09-28 | 成都鼎桥通信技术有限公司 | 一种s1应用协议链路的建立方法和装置 |
CN113472875A (zh) * | 2021-06-28 | 2021-10-01 | 深信服科技股份有限公司 | 一种连接复用方法、装置、电子设备及存储介质 |
CN113472875B (zh) * | 2021-06-28 | 2024-10-22 | 深信服科技股份有限公司 | 一种连接复用方法、装置、电子设备及存储介质 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302661B (zh) * | 2016-08-02 | 2019-08-13 | 网宿科技股份有限公司 | P2p数据加速方法、装置和系统 |
US10291750B1 (en) * | 2016-12-13 | 2019-05-14 | Juniper Networks, Inc. | Aggregating data sessions between autonomous systems |
US11102267B2 (en) * | 2017-04-14 | 2021-08-24 | Apple Inc. | Server- and network-assisted dynamic adaptive streaming over hypertext transport protocol signaling |
WO2018210411A1 (en) * | 2017-05-16 | 2018-11-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Low latency media ingestion system, devices and methods |
US10686910B2 (en) | 2018-02-02 | 2020-06-16 | Servicenow, Inc. | Distributed queueing in a remote network management architecture |
EP3753228B1 (en) * | 2018-02-15 | 2024-02-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Providing cloud connectivity to a network of communicatively interconnected network nodes |
US11249857B2 (en) | 2018-10-19 | 2022-02-15 | Netapp, Inc. | Methods for managing clusters of a storage system using a cloud resident orchestrator and devices thereof |
US10820057B2 (en) * | 2018-11-07 | 2020-10-27 | Nvidia Corp. | Scalable light-weight protocols for wire-speed packet ordering |
CN111262715B (zh) * | 2018-11-30 | 2021-04-02 | 贵州白山云科技股份有限公司 | 一种虚拟内网加速方法、系统和计算机设备 |
US11108704B2 (en) | 2018-12-04 | 2021-08-31 | Nvidia Corp. | Use of stashing buffers to improve the efficiency of crossbar switches |
CN113973093B (zh) * | 2020-07-24 | 2023-10-13 | 中移(苏州)软件技术有限公司 | 数据传输方法及装置、电子设备、可读存储介质 |
US11595502B2 (en) * | 2020-10-15 | 2023-02-28 | Pensando Systems Inc. | Methods and systems for layer 7 hardware assist and CPU task offloads |
CN114979839B (zh) * | 2021-02-27 | 2024-09-24 | 华为技术有限公司 | 一种传输控制协议代理方法及通信装置 |
US11770215B2 (en) | 2022-02-17 | 2023-09-26 | Nvidia Corp. | Transceiver system with end-to-end reliability and ordering protocols |
CN114884881B (zh) * | 2022-05-12 | 2023-07-07 | 福建天晴在线互动科技有限公司 | 一种数据压缩传输方法及终端 |
CN115348332B (zh) * | 2022-07-08 | 2023-08-29 | 宜通世纪科技股份有限公司 | 一种信令分析场景中http数据流会话的重组方法 |
CN115942006B (zh) * | 2022-12-06 | 2024-05-28 | 北京中电兴发科技有限公司 | 一种适用于网络单端口复用多路视频的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020052931A1 (en) * | 2000-10-10 | 2002-05-02 | Christopher Peiffer | HTTP multiplexor/demultiplexor |
US20070036174A1 (en) * | 2005-08-11 | 2007-02-15 | Aris Azrin B | Distributed digital subscriber line access multiplexer |
CN102986189A (zh) * | 2010-05-09 | 2013-03-20 | 思杰系统有限公司 | 用于为对应于虚通道的网络连接分配服务等级的系统和方法 |
CN103023987A (zh) * | 2012-11-27 | 2013-04-03 | 蓝盾信息安全技术股份有限公司 | 一种基于tcp连接的多路复用的方法 |
CN103081382A (zh) * | 2010-09-01 | 2013-05-01 | 佳能株式会社 | 用于多路复用网络信道的系统和方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3707927B2 (ja) | 1998-04-14 | 2005-10-19 | 富士通株式会社 | サーバスループット予約システム |
US7013338B1 (en) * | 2000-07-28 | 2006-03-14 | Prominence Networks, Inc. | Multiplexing several individual application sessions over a pre-allocated reservation protocol session |
US7801978B1 (en) * | 2000-10-18 | 2010-09-21 | Citrix Systems, Inc. | Apparatus, method and computer program product for efficiently pooling connections between clients and servers |
JP2002185488A (ja) | 2000-12-14 | 2002-06-28 | Nippon Telegr & Teleph Corp <Ntt> | 通信効率増幅装置 |
US7003572B1 (en) | 2001-02-28 | 2006-02-21 | Packeteer, Inc. | System and method for efficiently forwarding client requests from a proxy server in a TCP/IP computing environment |
US6934257B2 (en) * | 2001-04-04 | 2005-08-23 | Intel Corporation | Transferring transmission control protocol packets |
US8090866B1 (en) * | 2002-01-18 | 2012-01-03 | Cisco Technology, Inc. | TCP proxy connection management in a gigabit environment |
US7406087B1 (en) * | 2002-11-08 | 2008-07-29 | Juniper Networks, Inc. | Systems and methods for accelerating TCP/IP data stream processing |
US20080304486A1 (en) * | 2007-06-08 | 2008-12-11 | Joshua Verweyst Graessley | Multiplexed data stream protocol |
WO2010100837A1 (ja) * | 2009-03-06 | 2010-09-10 | 日本電気株式会社 | 通信レート制御方法、送信装置および通信システム |
US8780858B2 (en) * | 2010-01-05 | 2014-07-15 | Qualcomm Incorporated | Controlling transmission control protocol (TCP) transmissions in handover |
US20120054316A1 (en) | 2010-09-01 | 2012-03-01 | Canon Kabushiki Kaisha | Tcp multiplexing over a proxy |
US8400923B2 (en) * | 2010-10-15 | 2013-03-19 | Telefonaktiebolaget L M Ericsson (Publ) | Multipath transmission control protocol proxy |
US20120151087A1 (en) * | 2010-12-14 | 2012-06-14 | Nuvel, Inc. | System and method for providing a network proxy data tunnel |
US9215131B2 (en) * | 2012-06-29 | 2015-12-15 | Cisco Technology, Inc. | Methods for exchanging network management messages using UDP over HTTP protocol |
US9531846B2 (en) * | 2013-01-23 | 2016-12-27 | A10 Networks, Inc. | Reducing buffer usage for TCP proxy session based on delayed acknowledgement |
US20150256493A1 (en) * | 2014-03-05 | 2015-09-10 | David Wilson | System and Method for Document Processing |
-
2014
- 2014-12-26 US US14/583,337 patent/US9923677B2/en active Active
-
2015
- 2015-11-17 DE DE102015119893.2A patent/DE102015119893B4/de active Active
- 2015-11-24 JP JP2015228864A patent/JP6318453B2/ja active Active
- 2015-11-26 CN CN201511036053.XA patent/CN105743812B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020052931A1 (en) * | 2000-10-10 | 2002-05-02 | Christopher Peiffer | HTTP multiplexor/demultiplexor |
US20070036174A1 (en) * | 2005-08-11 | 2007-02-15 | Aris Azrin B | Distributed digital subscriber line access multiplexer |
CN102986189A (zh) * | 2010-05-09 | 2013-03-20 | 思杰系统有限公司 | 用于为对应于虚通道的网络连接分配服务等级的系统和方法 |
CN103081382A (zh) * | 2010-09-01 | 2013-05-01 | 佳能株式会社 | 用于多路复用网络信道的系统和方法 |
CN103023987A (zh) * | 2012-11-27 | 2013-04-03 | 蓝盾信息安全技术股份有限公司 | 一种基于tcp连接的多路复用的方法 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11218570B2 (en) | 2016-07-30 | 2022-01-04 | Huawei Technologies Co., Ltd. | Network packet processing method and apparatus and network server |
US11689646B2 (en) | 2016-07-30 | 2023-06-27 | Huawei Technologies Co., Ltd. | Network packet processing method and apparatus and network server |
CN107666474A (zh) * | 2016-07-30 | 2018-02-06 | 华为技术有限公司 | 一种网络报文处理方法、装置及网络服务器 |
CN107666474B (zh) * | 2016-07-30 | 2021-04-20 | 华为技术有限公司 | 一种网络报文处理方法、装置及网络服务器 |
CN110720205A (zh) * | 2017-05-04 | 2020-01-21 | 诺基亚美国公司 | 经由用户服务平台通信的方法、装置和计算机可读存储介质 |
CN110720205B (zh) * | 2017-05-04 | 2022-09-02 | 诺基亚美国公司 | 经由用户服务平台通信的电子设备 |
CN107911415A (zh) * | 2017-10-20 | 2018-04-13 | 深圳市网心科技有限公司 | Tcp流的多路复用系统及其方法、存储介质与终端 |
CN107872538A (zh) * | 2017-12-07 | 2018-04-03 | 浙江大华技术股份有限公司 | 解耦tcp长连接的业务处理方法、反向代理和业务服务器 |
CN111367650A (zh) * | 2018-12-26 | 2020-07-03 | 浙江大学 | 一种输入输出流的处理方法、装置及系统 |
CN111367650B (zh) * | 2018-12-26 | 2023-11-21 | 浙江大学 | 一种输入输出流的处理方法、装置及系统 |
CN113366456A (zh) * | 2019-01-31 | 2021-09-07 | 日本电气株式会社 | 数据中继设备、方法、传送系统和程序 |
CN110784444B (zh) * | 2019-09-09 | 2021-10-15 | 航天行云科技有限公司 | 一种嵌套数据流处理的方法及相关设备 |
CN110784444A (zh) * | 2019-09-09 | 2020-02-11 | 航天行云科技有限公司 | 一种嵌套数据流处理的方法及相关设备 |
CN112929393A (zh) * | 2019-12-05 | 2021-06-08 | 中兴通讯股份有限公司 | 一种建立http/2连接的方法、系统、装置和电子设备 |
CN113453378A (zh) * | 2020-03-26 | 2021-09-28 | 成都鼎桥通信技术有限公司 | 一种s1应用协议链路的建立方法和装置 |
CN113453378B (zh) * | 2020-03-26 | 2023-06-16 | 成都鼎桥通信技术有限公司 | 一种s1应用协议链路的建立方法和装置 |
CN112671933B (zh) * | 2021-02-23 | 2022-04-26 | 浙江中控技术股份有限公司 | 一种数据处理方法及系统 |
CN112671933A (zh) * | 2021-02-23 | 2021-04-16 | 浙江中控技术股份有限公司 | 一种数据处理方法及系统 |
CN113472875A (zh) * | 2021-06-28 | 2021-10-01 | 深信服科技股份有限公司 | 一种连接复用方法、装置、电子设备及存储介质 |
CN113472875B (zh) * | 2021-06-28 | 2024-10-22 | 深信服科技股份有限公司 | 一种连接复用方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105743812B (zh) | 2019-08-27 |
US9923677B2 (en) | 2018-03-20 |
DE102015119893A1 (de) | 2016-06-30 |
JP6318453B2 (ja) | 2018-05-09 |
US20160191672A1 (en) | 2016-06-30 |
DE102015119893B4 (de) | 2021-11-18 |
JP2016127597A (ja) | 2016-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105743812A (zh) | 在单个连接上多路复用许多客户端流 | |
US11777839B2 (en) | Data center network with packet spraying | |
US11469922B2 (en) | Data center network with multiplexed communication of data packets across servers | |
CN109479068B (zh) | 经由挂毯弹弓的网络弹射 | |
CN104205942B (zh) | 多跳错误恢复 | |
US8094575B1 (en) | Routing protocol extension for network acceleration service-aware path selection within computer networks | |
JP5862706B2 (ja) | ネットワークシステム、及びネットワークフロー追跡方法 | |
US9172756B2 (en) | Optimizing application performance in a network environment | |
US9124526B2 (en) | Switch system, and data forwarding method | |
US11349805B2 (en) | Content node selection based on classless prefix | |
US20200120031A1 (en) | Stateless distributed load-balancing | |
JP2017010537A (ja) | コンテンツセントリックネットワークにおける柔軟なコマンドおよび制御 | |
CN102143218B (zh) | web接入云体系结构及接入方法 | |
BR112012024886B1 (pt) | Roteador agrupado e método de roteamento agrupado | |
US20240080276A1 (en) | Path selection for packet transmission | |
CN113395212A (zh) | 网络装置及其操作方法和非暂时性计算机可读介质 | |
WO2017097092A1 (zh) | 缓存集群服务的处理方法及系统 | |
WO2014117474A1 (zh) | 路由方法、系统及相关设备 | |
CN102150400A (zh) | 路由器及集群路由器 | |
CN107426290A (zh) | 一种Smart Rack系统云计算优化方法 | |
Sohini | Evaluation of data centre networks and future directions | |
CN106357710A (zh) | 一种基于多核网络处理器的tcp粘合系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |