虚拟专用网络聚合的制作方法

文档序号:15106011发布日期:2018-08-04 16:54阅读:316来源:国知局

常规虚拟专用网络(VPN)使用隧道发送、加密和认证来提供两个或更多设备之间的安全通信。例如,客户端计算设备可以连接到VPN服务器,并且客户端计算设备可以经由VPN服务器通过公共网络(诸如公共互联网)与专用网络上的设备安全地通信。尽管VPN技术相对安全,仍有可能会危及VPN安全。具体地,“中间人”攻击可能会导致危及数据安全。在这种攻击中,恶意行为者可能能够捕获跨VPN连接传送的数据,攻击者可能能够将数据引入连接。

移动设备通常具有多个无线电和其他网络接口,并且许多设备具有同时连接到多个网络的能力。客户端设备使用优选网络(诸如WiFi网络)而非更昂贵的移动数据连接,可以建立到VPN服务器的VPN网络。



技术实现要素:

提供本发明内容是为了介绍下文在具体实施方式中进一步描述的本公开的简化概念。本发明内容不旨在标识所要求保护的主题的基本特征,也不旨在用于确定所要求保护的主题的范围。

本公开的示例提供VPN聚合,其中客户端侧逻辑建立到公共目的地(诸如应用服务器)的多个VPN连接。当两个或多个网络被用于建立不同的VPN连接时,客户端侧逻辑采用各种技术跨多个VPN连接之间分发与单个目的地相关联的流量以及应用连接。跨多个VPN分发流量可以改善应用流量的可用带宽。使用多个VPN也可以提高连接的安全性。试图损坏一个VPN隧道的攻击者可能无法获得所有数据,除非攻击者能够损坏这两个VPN隧道。

附图说明

参考附图对具体实施方式进行了阐述。在这些图中,附图标记的最左边的数字表示附图标记首次出现的数字。在不同的图中使用相同的附图标记表示相似或相同的项。

图1是图示了用于聚合多个VPN连接的示例环境的框图。

图2是图示了用于聚合多个VPN连接的路由器客户端设备202的示例环境的框图。

图3图示了使得能够通过多个接入网络利用多个VPN连接的示例客户端设备的框图。

图4图示了使得能够通过多个接入网络利用多个VPN连接的示例路由器客户端设备的框图。

图5图示了使得能够聚合多个VPN连接的示例服务器计算系统的框图。

图6是图示了利用不同位置中的VPN服务器之间的VPN连接聚合的示例数据中心环境的框图。

图7图示了描绘了用于客户端设备在多个VPN连接之间分发流量的示例过程的流程图。

图8图示了描绘了用于监控和调整通过多个聚合的VPN连接来分发流量的示例过程的流程图。

图9图示了描绘了用于与聚合多个VPN的应用服务器相关联的VPN聚合组件的示例过程的流程图。

具体实施方式

本申请的实施例包括VPN隧道的聚合,其中客户端设备(诸如客户端计算设备、网络边缘设备(诸如路由器)或其他客户端设备)使用两个或更多VPN连接与单个目的地(诸如应用服务器)通信。客户端设备包括VPN聚合逻辑,其选择两个或更多个接入网络,通过这些接入网络建立到两个或更多个VPN服务器的VPN连接。客户端设备在两个或更多个VPN连接中分发流量。与VPN服务器中的一个或多个VPN服务器相关联或与应用服务器相关联的VPN聚合组件接收所有应用流量,必要时重新排序流量,并且将其转发给应用服务器。类似的通信发生在另一方向上。VPN聚合组件从应用服务器(或通信会话的其他端点)接收发往客户端设备的流量。VPN聚合组件在VPN服务器之间分发流量。客户端VPN聚合逻辑接收流量并且向客户端应用提供数据。通过在客户端和服务器之间的多个VPN连接中分发流量,实施例可以提高可用于应用连接的总体数据吞吐量。此外,通过在多个VPN连接中在客户端和服务器之间分发流量,实施例可以提高VPN连接的安全性。例如,采用“中间人”攻击的攻击者可能会损坏VPN连接中的其中一个VPN连接,但会发现难以同时损坏两个VPN连接,特别是在两个VPN连接通过不同接口设备、通过不同的接入网络、和/或使用不同的VPN隧道发送、VPN加密、VPN加密密钥、认证证书等建立的情况下。

在一些实施例中,客户端逻辑将数据流分解成多个部分,其在本文中可以被称为“小流(flowlet)”。小流包含数据流的一个或多个分组或帧。诸如基于攻击者可能难以确定的连接跳变模式,来自单个流的不同小流可以在多个VPN连接之间进行分发。可以基于往返延迟时间、所测量的吞吐量或其他性能数据来在VPN连接上分发小流,以便提供增加的流量流或者减少由VPN聚合组件乱序(out of order)接收的分组的数目。实施例可以向不同的应用提供不同的流分发技术,从而为不同的应用提供性能和安全性之间的不同均衡。例如,客户端逻辑可能为某些应用利用单个VPN连接,以便提高实时应用(诸如音频应用或视频应用)的低时延性能。客户端侧逻辑可以诸如通过将应用流量分解为小流并且使用不同的VPN连接来传输小流来为另一应用提供增加的安全性和/或吞吐量性能。在不背离实施例的范围的情况下,可以使用用于在多个VPN隧道上分发流量的其他方案。

如本文中所使用的,“流”是指包括双向流量在内的数据通信流量,其由应用与应用服务器之间的应用通信会话(或者仅“应用会话”)定义。一些示例应用包括web浏览器、电子邮件客户端、文件传输协议客户端、文件服务器、媒体播放器应用、手机应用等。应用服务器可以包括web服务器、电子邮件服务器、FTP服务器、媒体服务器、文件服务器等。应用通信会话包括应用和应用服务器之间的通信会话,尽管通信会话可以在两个客户端设备之间或两个服务器设备之间。通信会话也可能是多点的。单个应用通信会话可以由源地址、目的地地址、协议、源端口和目的地端口的五元组中的一些或全部来定义或确定。源地址和目的地地址可以包括诸如IP版本4(IPv4)或IP版本6(IPv6)地址之类的互联网协议(IP)地址。附加地,可以使用其他源和目标地址类型,诸如媒体访问控制(MAC)地址或其他地址。

五元组中的协议可以包括传输控制协议(TCP)、用户数据报协议(UDP)、流传输控制协议(SCTP)、数据报拥塞控制协议(DCCP)以及其他许多协议。这些协议通常可能属于或可能被称为属于开放系统互连模型(OSI模型)的“传输层”,尽管这些协议可能不严格符合针对传输层协议的OSI模型所提供的定义。就本文中使用“传输层”或其他OSI模型术语(诸如应用层、网络层、“层2”等)来描述协议或其他概念而言,这些OSI术语的使用并不意指暗示任何这样的协议或概念都严格符合OSI模型中的定义,尽管这样的协议或概念确实可能满足这些定义。

5元组中的目的地端口信息可以指示各种更高层协议(例如,开放系统互连模型(OSI模型)下的应用层协议)。在一些实施例中,这种更高层协议包括超文本传输协议(HTTP)(通常但不一定由TCP或UDP端口80指示)、HTTP安全(HTTPS)(通常但不一定由TCP或UDP端口443指示)、FTP(通常但不一定由TCP或UDP端口20指示(用于数据传输)和端口21(用于FTP控制)指示)、安全壳(SSH)(通常但不一定由TCP或UDP端口22指示)、实时传输协议(RTP)(通常但不一定由TCP指示或UDP端口5004指示)。更高层协议可以包括各种基于电子邮件的协议,诸如各种版本的邮局协议(POP,诸如POP2POP3)(通常但不一定由TCP或UDP端口109(POP2)或端口110(POP3)指示)、各种版本的互联网消息访问协议(IMAP,诸如IMAP4)(通常但不一定由TCP端口143指示)、消息传送应用编程接口(MAPI)(通常但不一定由TCP或UDP端口135指示)、简单邮件传输协议(SMTP)(通常但不一定由TCP或UDP端口25指示)等等。在不背离实施例的范围的情况下,可以使用其他示例目的地端口和相关联的更高层协议。有数万个官方的、注册的和非官方的TCP和UDP端口被定义并且处于使用中,实施例不限于它们中的一个或多个。此外,尽管端口号可能是特定协议的官方端口(例如由互联网地址编码分配机构(IANA)定义的),但其他端口可能与特定协议相关联。例如,尽管端口443可能是HTTPS的官方端口,但客户端和应用服务器可能被配置为利用某个其他端口号来指示HTTPS连接。

五元组中的源端口信息可以是与分组相关联的任何端口号。源端口通常被客户端和应用服务器用来区分来自多个应用请求中的流量。因此,在相同客户端设备发送具有相同源地址、目的地地址、协议和目的地端口的多个分组但是这些分组具有不同的源端口的情况下,不同的源端口可以指示分组与相同的客户端或客户端应用和应用服务器之间的不同的通信会话相关联。例如,客户端设备上的web浏览器客户端软件可以建立到相同应用服务器的两个HTTP连接(诸如在两个不同的浏览器窗口中)以获得不同的网页,并且这可能(尽管可能不会)导致多个源端口被利用,从而产生两个应用通信会话。在实施例中,五元组数据中的一个或多个数据可以用来定义或确定应用通信会话,使得具有相同五元组元素(相同的源和目的地地址、协议、以及相同的源和目的地端口)的所有分组被视为属于相同的通信会话,因此属于相同的“流”。

通信会话可以基于除了上文所描述的五元组之外的其他数据(诸如较高层协议数据流数据)来确定或定义。在一些实施例中,客户端侧聚合逻辑或服务器侧VPN聚合组件可以根据在较高层流量流中找到的状态信息来确定会话。使用HTTP作为一个示例,可以基于客户端和HTTP服务器来定义HTTP会话,该客户端和HTTP服务器交换SYN和SYN_ACK命令来请求并接受要在客户端和服务器之间建立的TCP会话。在这些交换之后,客户端可以交换针对来自服务器的数据的请求,诸如通过发布HTTP_GET命令和HTTP_200_OK回复,以及其他类型的HTTP交换通信。HTTP会话可以以发出FIN命令和ACK回复来结束。因此,实施例可以基于TCP会话的生命周期来确定应用通信或“流”。

无论基于地址/协议/端口五元组中的一些或全部、更高层状态信息(诸如HTTP或如上文所描述的其他状态数据)、五元组和更高层协议数据的某个组合、如可能是适当的其他数据来定义或确定的这些示例通信组表示通信会话,其还被称为“流”。“小流”表示应用会话内的全部流数据集的子集。在实施例中,具有相同地址、协议和端口(例如,小流)的数据分组中的一些数据分组可以通过第一VPN连接来传送,而具有相同地址、协议和端口的其他分组可以通过第二VPN连接来传送。此外,返回的流量(例如,从服务器到客户端的流量)可能被视为相同流的一部分。因此,从服务器的角度来看,目的地地址和目的地端口将是客户端设备的源地址和源端口。服务器的源地址和源端口将是客户端的目的地地址和目的地端口。但是这两个方向上的这样的分组均被认为是相同流的一部分。

在各种实施例中采用各种方案以在多个VPN连接上分发来自单个流的小流。例如,小流可以通过多个VPN连接被交替地传送、可以采用连接跳变方案、可以采用负载均衡算法以在多个VPN连接之间分发流量等等。可以利用负载均衡算法来增加数据吞吐量,诸如通过利用两个VPN连接来增加可用数据吞吐量。可以采用负载均衡算法来减少或最小化乱序接收的分组的数目。由于使用一个以上的某种连接(诸如VPN连接)向相同的目的地发送流量可能产生乱序接收的分组,因此在重新排序接收器处的分组时的性能方面可能存在损失。因此,可以在发送方端(无论客户端还是服务器)上采用负载均衡算法来均衡小流,以减少或最小化被乱序接收的分组的数目。

如本文中所使用的VPN连接可以采用以下各项中的一项或多项:隧道发送、加密、认证和其他措施,以在VPN客户端和VPN服务器之间进行通信。隧道发送协议可以包括用于在其他网络流量分组或帧的数据有效载荷内携带网络流量分组或帧的各种方案中的任一方案。例如,各种层2协议帧(根据OSI模型,诸如以太网帧或其他)可以被放入IP分组的数据有效载荷中,并且通过IP网络传送,此时提取层2帧并且将其转发给下一跳或它们的目的地。在另一示例中,层3分组(诸如IP分组或其他)可以被放入其他IP分组的数据有效载荷中,并且通过IP网络传送到VPN服务器,其中封装IP分组被移除,然后原始层3分组被转发到下一跳或它们的目的地。

实施例可以利用各种加密标准中的任一种加密标准来加密跨VPN连接传送的数据。这种加密标准包括但不限于数据加密标准(DES)、Triple-DES、高级加密标准(AES)、RSA(Rivest、Shamir和Adleman)标准等。这种加密标准可以使用加密密钥(共享秘密密钥或公共密钥)以在传输之前对数据进行加密,并且使用共享秘密密钥或与公共密钥相对应的私有密钥来解密所接收的数据。

密码学的各种方法也可以用于认证和验证来自VPN连接中的发送方的消息的完整性。例如,可以生成数字签名或消息认证码,并且将其包括在通过VPN连接传输的数据中。接收方可以使用数字签名或消息认证码来验证数据是否由已知的发送方发送。在一个示例中,生成消息(例如,数据有效载荷中的数据或一些其他已知数据)的散列值(hash),并且发送方的私有密钥用于生成散列值的密码。散列值的密码是签名。接收方接收包括签名的消息。接收方解密该消息并且检查所解密的消息的散列值与所解密的签名是否相同。如果它们不匹配,则该消息未被认证。类似地,当建立VPN连接时,可以利用各种其他认证方法,诸如用户名、口令等等。实施例可以针对不同的VPN连接利用不同的隧道发送协议、加密协议、认证证书、加密密钥等等。这样,能够损坏一个VPN连接的攻击者无法重新使用认证证书或密钥来损害VPN客户端所建立的另一VPN连接。

下文参照附图对各种示例进行描述。这些示例仅仅是示例性的,并且本公开的实施例不限于下文所描述并且在附图中图示的示例。

图1是图示了用于聚合多个VPN连接的示例环境100的框图。客户端设备102被配置为同时接入网络104和接入网络106。客户端设备102可以利用各种有线或无线通信技术中的任一种通信技术来访问这些网络。接入网络104和接入网络106可以是各种无线网络中的任一种,诸如但不限于各种IEEE 802.11无线LAN兼容网络中的任一个,诸如全球移动通信系统(GSM)之类的移动通信网络、长期演进(LTE)网络等等。接入网络104和接入网络106可以包括各种个人区域网络中的任一种,其包括但不限于IEEE 802.15、等等。接入网络104和接入网络106可以包括有线连接,其包括但不限于有线以太网网络(诸如由IEEE 802.3定义的那些网络)、光纤网络等等。接入网络104和接入网络106可以提供对公共互联网或对其他广域网的访问,以访问校园区域网络、城域网络和局域网络等等。在不背离实施例的范围的情况下,可以利用其他类型的网络。接入网络104和接入网络106可以是不同类型的接入网络,诸如WiFi(802.11)网络和移动LTE网络,但是客户端设备102的一些实施例可以被配置为同时接入相同类型的多个网络。

客户端设备102建立到VPN服务器110的VPN连接108和到VPN服务器114的VPN连接112。VPN连接108和VPN连接112同时处于活动状态,即使它们不是在相同时刻建立的。客户端设备102和VPN服务器110可以建立VPN连接108以利用以下各项中的一项或多项:隧道发送、加密和认证证书。客户端设备102和VPN服务器114可以建立VPN连接112以利用以下各项中的一项或多项:隧道发送、加密和认证证书。VPN连接108和VPN连接112可以使用不同的加密密钥、不同的认证证书、不同的隧道发送协议、不同的加密标准等等。这样,能够损坏一个VPN连接的攻击者无法重新使用来自受损的VPN连接的认证证书、加密密钥、加密标准利用等来损坏由客户端设备102建立的另一VPN连接。

当与应用服务器116通信时,客户端设备102在VPN连接108和VPN连接112之中分发与在客户端设备102上执行的应用相关联的应用流量的小流。小流的分发可以基于在本具体实施方式中的别处更详细地描述的几个方案。VPN聚合组件118从VPN服务器110和VPN服务器114接收应用流量并且将其转发给应用服务器116。

应用服务器116可以在相同通信会话或流内经由VPN聚合组件118向客户端设备102传送数据。诸如通过将一些小流转发到VPN服务器110并且将一些小流转发到VPN服务器114,VPN聚合组件可以使用VPN连接108和VPN连接112分发该返回的应用流流量的一个或多个小流。客户端设备102包括VPN聚合组件(在本具体实施方式中的别处更详细描述的),其从VPN连接108和VPN连接112接收小流。客户端设备102的VPN聚合组件可以向在客户端设备102中执行的客户端应用提供数据分组。

VPN服务器110、VPN服务器114、VPN聚合组件118和应用服务器116可以驻留在数据中心或其他网络环境内的一个或多个计算系统节点上。仅仅出于说明的目的,这些组件在图1中被示为单独组件,并且这不意指暗示这些组件被容纳在单独的物理计算系统节点中,尽管它们可能如此。例如,VPN服务器110和VPN服务器114可以都存在于单个服务器节点上。VPN聚合组件118可以存在于与应用服务器116相同的物理服务器节点上。VPN聚合组件118可以存在于与一个或多个VPN服务器(诸如VPN服务器110和VPN服务器114中的一个或两个VPN服务器)相同的物理服务器节点上。在多个服务器节点之间分发这些组件的几个示例可以在本具体实施方式的别处找到。

VPN聚合组件118可以在将应用流量的分组转发到应用服务器116之前重新排序与乱序到达的特定应用流量相关联的分组。分组的重新排序可以基于序列号,诸如TCP序列号、或应用流量中的其他序列号或其他数据。在一些实施例中,VPN聚合组件118不会对分组进行重新排序。应用服务器116可以在接收到数据分组时,对该数据分组进行重新排序。类似地,客户端设备102上的VPN聚合组件可以在对乱序到达的分组进行重新排序之后将它们转发到在客户端设备102上执行的客户端应用,尽管它可以转发分组而不对它们进行重新排序。

客户端设备102和VPN聚合组件118以及客户端设备102可以采用各种手段来避免或减少乱序分组的数目。客户端设备102和/或VPN聚合组件118可以利用以下各项中的一项或多项:VPN连接的往返延迟时间、VPN连接的可用带宽或VPN连接的经测量的吞吐量,以确定要通过多个VPN连接发送的分组的比例,以避免或减少乱序到达。例如,若知道VPN连接108的往返延迟时间为110毫秒(ms)并且VPN连接112的往返延迟时间为90ms,客户端设备102和/或VPN聚合组件118可以估计所发送的分组到达另一端的时间。使用该信息,客户端设备102和/或VPN聚合组件118可以在分组通过VPN连接108和112进行传送时对分组的传送次序进行排队,使得它们被估计以按其适当次序到达。分组可能被乱序发送,使得它们的预计到达时间是有序的。

VPN聚合组件118和客户端设备102可以监控分组的到达次序并且彼此发信号以调整它们的传输。VPN聚合组件118可以确定通过VPN连接108和VPN连接112从客户端设备102到达的分组是否乱序到达。VPN聚合组件118可以确定度量,该度量指示对于某个聚合的VPN连接乱序到达的问题有多糟糕,诸如乱序到达的分组的百分比或指示乱序分组乱序到达的距离的位移度量(例如,早到达或晚到达X个分组)。基于所确定的度量,诸如基于所确定的度量满足或超过阈值,VPN聚合组件118可以向客户端设备102发信号以调整分组的传输以减少乱序到达的分组的数目。响应于该信号,发送方可以调整分组的比例、小流的大小、或分组的节奏(发送分组之间的时间间隔),其分发或使得经由多个VPN隧道按顺序分发以减少乱序到达的分组的数目。例如,在跨VPN连接108到达小流的分组倾向于乱序到达的情况下,VPN聚合组件118可以向客户端设备102发信号以通过VPN连接108传输更少的分组,使得乱序分组的百分比下降,或者使得乱序到达的分组的位移减少。类似地,客户端设备还可以监控分组的到达次序,确定度量,并且向VPN聚合组件118发信号以调整经由VPN连接108和VPN连接112向客户端设备102传送的分组的比例、小流的大小或分组的节奏。

客户端设备102和VPN聚合组件118可以采用各种负载均衡方案来通过VPN连接108和112分发小流。在一些实施例中,可用带宽和/或所测量的吞吐量(实时或历史吞吐量)可以用于建立沿着多个VPN发送的分组的比例。例如,如果接入网络104的测量的吞吐量为X兆比特每秒(Mbps),并且接入网络106的测量的吞吐量为Y Mbps,则客户端设备和VPN聚合组件118可以以如下比例传送分组:使用VPN连接108传送每X+Y分组中的X个分组和使用VPN连接112传送每X+Y分组中的每Y个分组。

客户端设备102和/或VPN聚合组件118可以利用某些流量类型的突发性质来在多个VPN连接中分发小流。一些流量流(诸如大量的数据流量(web浏览、电子邮件等)、甚至IP电话流量、视频和其他音频流量)包括混合有数据突发的无活动时段。客户端设备102和VPN聚合组件118可以标识流量的“突发”,并且将该突发指定为“小流”。为了确定突发,客户端设备102和VPN聚合组件可以确定从数据分组到达到通过多个VPN被传输期间传输无活动阈值时间段已经经过。因此,自最近传送的分组以来大于阈值时间段的针对传输所生成的分组可以被认为是新突发,并且被指定为新小流,并且因此使用不同的VPN连接来传送。这可以有助于确保分组不会乱序到达,因为突发之间的时间段可以大于VPN连接的最慢延迟时间,使得即使先前突发在较慢(较高延迟)的VPN连接上进行传送,在不同VPN连接上发送的数据突发也很可能在先前突发被发送很久之后到达。除了传输无活动时间段之外的其他度量或阈值可以用于确定突发。例如,突发可以由对请求的响应来定义,诸如由更高层协议流定义。接收方传送新请求或传送确认可以标记新突发的开始。

客户端设备102和/或VPN聚合组件118可以利用连接跳变方案来在VPN连接之间分发小流。连接跳变方案可以用于确定其中VPN隧道被用来传送一个或多个分组(例如,传送小流)的次序。例如,在存在两个VPN连接(例如,VPN连接108和VPN连接112)的情况下,客户端设备102和VPN聚合组件118使用一些共享秘密信息来确定模式。共享秘密信息可以是共享密钥(包括用于加密或解密通过VPN连接中的一个或多个VPN连接的数据的共享密钥的重用),尽管它可以是客户端设备102和VPN聚合组件都知道的任何数据并且不太可能被另一方猜出或捕获。诸如随机数发生器之类的算法可以与共享秘密信息一起被作为种子以输出随机数,该随机数可以用于确定小流通过VPN传送的次序。例如,接受共享秘密作为输入的算法可能输出以下位模式:

00001011111000100010010100010...

该算法在客户端设备102(例如,发射机)和VPN聚合组件118(例如,接收机)两者上执行。一旦发送方和发射机之间的传输被同步,客户端设备102和VPN聚合组件118就被配置为利用输出位模式来指示次序。使用该示例,客户端设备102和VPN聚合组件118可以将“0”解释为VPN连接108,而将“1”解释为VPN连接112。因此,客户端设备102传送小流(例如,应用通信会话的一个或多个分组),使得前四个通过VPN连接108传送,随后一个小流通过VPN连接112传送,随后另一小流通过VPN连接108传送,随后五个小流通过VPN连接112传送,依此类推。当利用连接跳变方案时,客户端设备102和VPN聚合组件118可以利用诸如UDP之类的无连接协议,或者以其他方式混淆通过多个VPN连接发送的分组的次序。例如,分组中的TCP序列号可能会被移除或替换为无意义数据,使得已损坏两个VPN连接的攻击者不易猜出数据要在接收机端上被重建的次序。

根据一些实施例可以利用其他小流分发方案。例如,客户端设备102可以向下传送一个VPN连接,诸如VPN连接108,而VPN聚合组件118可以向下传送另一VPN连接112。因此,出口流量被分发给一个VPN连接,并且入口流量被分发给另一VPN连接。这可以提高安全性,同时维持某些应用的性能。例如,将所有入口流量分发到一个VPN连接可以确保双向话音、视频或其他实时类型流量不会乱序到达或伴随有不合适的抖动到达,同时使已经损坏一个VPN连接的攻击者更难以捕获整个双向对话。

客户端设备102和VPN聚合组件118可以使用不同的方案来分发来自不同应用的小流。例如,可以利用连接跳变方案来确定用于来自第一应用的流的小流分发和用于第二应用的纯交替模式。即使对于在相同或重叠时间段内发生的不同应用的流,情况也可能如此。分发方案的选择可能基于策略,该策略可以是可配置的,其指示某些应用要以更高的安全性进行处理,而其他应用则要以更高的性能进行处理,或者处于两者之间的某处。当性能在策略中被指示为更为重要的情况下,可以采用针对减少乱序到达、减少延迟时间、提高数据吞吐量等中的一个或多个的分发方案。性能最高的选项可能包括针对该应用的流量仅利用单个VPN连接(诸如最高带宽和/或最快延迟时间VPN连接)。当安全性在策略中被指示为更为重要的情况下,可以利用增加跨多个VPN连接的小流分发的随机性的分发流量的方案(诸如通过利用连接跳变方案或其他)。如上文所指出的,性能和安全性的均衡可以通过例如使用一个VPN连接发送所有出口流量并且在另一VPN连接上接收所有入口流量来实现。此外,接入网络或VPN连接的选择也可以基于性能度量。在一些实施例中,客户端设备102和VPN聚合组件之间的所有流被分组在一起,对于所有数据流量,使用单个分发方案。

首先连接用于建立VPN连接的接入网络的选择可以基于安全性考虑、性能考虑、成本考虑、位置或基于其他因素。策略可以存在于客户端设备102上,这些策略指示确定某些类型的接入网络优于其他类型。例如,出于成本原因,WiFi网络可能比移动网络更受欢迎,或出于安全性原因,移动网络可能比公共WiFi网络更受欢迎。高速WiFi连接可能优于具有相对较弱信号或具有较低的测量吞吐量的移动连接。

客户端设备102可以被配置为利用多于一个接入网络,并且基于位置信息来建立多个VPN连接。在具有已知安全性的位置(诸如在公司位置处)处或在与具有已知安全移动网络的国家或辖区内的移动网络的可用连接性的位置中,可以仅利用单个接入网络来建立单个VPN连接。在其他实例中,诸如在客户端设备102处于具有不确定的移动网络安全性的位置或辖区中,或者处于具有多个不安全网络的位置(例如,不安全或公共WiFi网络)中的情况下,可以选择多个接入网络以便建立多个VPN连接。可以利用诸如基于客户端设备102中的全球定位卫星(GPS)接收器,基于移动网络三角测量信息、网络数据、网络地址或其他数据来确定位置的各种手段。在一些实施例中,可以从VPN聚合组件118动态地发信号通知该配置。这可以包括附加控制信道元素,其包括时间同步信息(或参考安全时间服务器);客户端当前连接到(或计划连接到)的网络的风险评估。这使得客户端设备102和VPN聚合组件118能够动态地管理“安全性/性能”比例。

在一些实施例中,可以利用附加安全性措施。例如,可以通过一个或多个VPN连接来发送“虚假”分组(例如,具有无用数据的分组),以便混淆已损坏VPN连接中的其中一个VPN连接的攻击者。该虚假分组可以使用已知模式来传送,使得接收机或VPN聚合组件118能够忽略它们。

图1被图示为具有两个接入网络104和106,客户端设备102分别通过其建立VPN连接108和112。但是实施例不限于仅利用两个接入网络,并且它们不限于两个VPN连接。在一些实施例中,可以通过单个接入网络建立到两个或更多个VPN服务器的两个或更多个VPN连接。在一些实施例中,接入网络104和接入网络106可以在物理上是相同的网络,但是客户端设备102可以包括两个网络接口组件,其与相同的接入网络对接以建立到相同的网络的两个不同的连接。示例可以是客户端设备102上的两个802.11无线以太网卡,每个802.11卡建立与相同的802.11无线网络的单独无线连接,并且利用那两个连接建立两个VPN连接。另一示例可以是双订户标识模块(双SIM)客户端设备,其同时建立到相同的移动无线网络的两个单独连接,并且利用那两个网络连接建立两个VPN连接。两个有线以太网端口也可以用于建立到相同的以太网接入网络的两个有线以太网连接。在不背离实施例的范围的情况下,其他示例是可能的。

图2是图示了用于聚合多个VPN连接的路由器客户端设备202的示例环境200的框图。路由器客户端设备202连接到多个接入网络,诸如接入网络104和接入网络106。路由器客户端设备202建立多个VPN连接,诸如VPN连接108和VPN连接112,其被同时维护以用于小流分发。路由器客户端设备202的操作类似于客户端设备102的操作。路由器客户端设备与一个或多个设备204对接,从而经由VPN连接108和112、VPN服务器110和114以及VPN聚合组件118向它们提供对应用服务器116的访问。路由器客户端设备202以与客户端设备102相似或相同的方式通过多个VPN连接分发小流。例如,路由器客户端设备202可以在VPN连接108和112之间交替地分发分组。路由器客户端设备202可以利用连接跳变方案。路由器客户端设备202可以利用数据流量的突发性质,并且沿着不同的VPN连接传送数据突发。路由器客户端设备202可以沿着一个VPN连接传送出口流量并且在另一VPN连接上接收入口流量。在不背离实施例的范围的情况下,可以在路由器客户端设备202和VPN聚合组件118中利用其他示例分发方案。

在一些实施例中,路由器客户端设备202(如客户端设备102)被配置为以每个应用为基础在安全性和性能之间应用变化的均衡。例如,可以使用连接跳变方案来传送电子邮件流量,以偏爱安全性超过性能,以及全部沿着单个VPN连接分发出口IP电话流量,以便偏爱性能超过安全性。如同客户端设备102一样,路由器客户端设备202可以被配置为应用策略(其可以是可配置的策略)以确定要应用于与不同应用相关联的流量的安全性和性能的均衡。

在一些实施例中,客户端设备204中的一个或多个和路由器客户端设备202可以同时执行多点VPN。在这些实施例中,客户端设备204可以建立到VPN服务器110和114的VPN连接,VPN服务器110和114的流量在由路由器客户端设备202建立的VPN连接108和112内部传递。虽然这可能增加复杂性并且增加性能成本以及使得故障排除更加困难,但是它还可能增加安全性。

在一些实施例中,路由器客户端设备202被配置为将确定安全性和性能的均衡的策略应用于设备204中的不同的设备204。因此,来自一些设备204的流量可以被提供有安全性和性能的均衡,诸如通过跨不同的VPN连接分发不同的突发,而来自其他设备204的其他流量使用连接跳变方案被提供有更高的安全性,同时来自其他设备204的其他流量被提供有更高的性能,从而沿着单个VPN连接传送所有数据。另外,来自设备204中的不同设备204的不同应用的流量可以被单独处理。在一个示例中,第一设备204可以使用连接跳变方案来分发其所有流量,而第二设备可以使用连接跳变方案来传送其数据库接入流量,并且基于数据突发来分发IP电话流量。在一些实施例中,这种逐个设备应用的策略也可以是可配置的。

图3图示了使得能够通过多个接入网络利用多个VPN连接的示例客户端设备300的框图。客户端设备300可以与客户端设备102相同或相似。客户端设备300包括一个或多个处理器302和存储器304。应用306和应用308由一个或多个处理器302执行。应用306和应用308中的一个或两个为诸如应用服务器116之类的网络目的地生成网络流量。在图3所图示的示例中,应用306生成被传递给VPN聚合组件310的流量。

VPN聚合组件310模拟客户端设备300的联网堆栈。为了实现这一点,VPN聚合组件310可以向应用306和应用308(以及向在客户端设备300上执行的其他应用)呈现其自身作为网络接口设备驱动程序。VPN聚合组件310可以采用策略312来执行各种功能。在一些实施例中,VPN聚合组件310选择接入网络。在一些实施例中,VPN聚合组件310可以通过例如利用接入网络接口硬件314和接入网络接口硬件316来选择接入网络以发现、监控和建立接入网络连接。在一些实施例中,客户端设备300还可以包括VPN客户端318和320与其对接的一个或多个虚拟化网络接口。这可能是例如VPN客户端318和320被实例化为虚拟机或在虚拟容器内被实例化的情况。这样的虚拟网络接口将从VPN客户端318和320接收的流量经由协议栈322传递到网络接口硬件314和316以供传输(或者传递到客户端设备300内的其他虚拟化组件,诸如虚拟交换机、虚拟路由器等等)。由网络接口硬件314和316所接收的入口流量被提供给协议栈322和324以及VPN客户端318和320之前,它们被传递到虚拟网络接口。VPN聚合组件310选择与其建立VPN连接的VPN服务器。VPN聚合组件310可以基于策略312做出这些选择。

策略312可以指示要应用于与应用306和308相关联的流量的安全性和性能的均衡。策略312可以基于可用网络指示要建立的VPN连接的一个类型或多个类型,其包括隧道发送类型、加密类型、加密密钥、认证证书等等。策略312可以包括VPN服务器列表(例如,VPN服务器的IP地址或可解析名称)。策略312还可以指示VPN服务器要使用一个或多个发现机制来被发现。

VPN聚合组件310可以利用VPN客户端318和VPN客户端320经由接入网络接口硬件314和接入网络接口硬件316建立VPN连接。因此,可以使用第一接入网络经由接入网络接口硬件314建立到第一VPN服务器的第一VPN连接,并且可以使用第二接入网络经由接入网络接口硬件316建立到第二VPN服务器的第二VPN连接。如在本具体实施方式中的别处所指出的,在一些实施例中,接入网络接口硬件314和接入网络接口硬件316可以访问相同的接入网络;因此,在这些实施例中,客户端设备300可以使用相同的接入网络来建立多个VPN连接。

在确定来自诸如应用306之类的应用的流量要被传送时,VPN聚合组件310可以使得VPN连接由VPN客户端318和VPN客户端320建立。VPN聚合组件310可以使得建立到一个VPN服务器的第一VPN连接以用于来自应用308的流量。然后,在从应用308接收基于应用308由策略312指定为被赋予更高的安全性的流量(在图3中用虚线箭头图示的)时,VPN聚合组件310可以建立到第二VPN服务器的第二VPN连接,以提供增加的安全性。

如在本具体实施方式中的别处更详细讨论的,VPN聚合组件310利用各种分发方案来在多个VPN连接之间分发小流。在图3所图示的示例中,VPN聚合组件310从应用308接收流量(流量流由箭头指示)。VPN聚合组件310诸如通过向VPN客户端318和VPN客户端320中的每个客户端提供流量中的一些流量来在不同VPN连接之间分发流量。VPN客户端318与第一协议栈322对接,该第一协议栈322操作以经由接入网络接口硬件314转发流量。VPN客户端320与第二协议栈324对接,该第二协议栈324操作以经由接入网络接口硬件316转发流量。在一些实施例中,代替多个协议栈,可以使用寻址多个网络接口的单个共享协议栈。接入网络接口硬件314和接入网络接口硬件316接收传入流量,该流量然后分别向上传递到协议栈322和协议栈324。协议栈322向VPN客户端318提供流量,并且协议栈324向VPN客户端320提供流量。VPN客户端318和320向VPN聚合组件310提供入口流量。

如在本具体实施方式中的别处所描述的,VPN聚合组件310监控流量的到达。VPN聚合组件310确定指示入口流量乱序到达的程度的度量。VPN聚合组件310监控往返延迟时间和多个VPN连接的吞吐量。VPN聚合组件310基于该信息采取各种动作。VPN聚合组件310可以向VPN聚合组件(诸如VPN聚合组件118)发信号以更改跨多个VPN连接传送的分组的比例和/或节奏,以减少分组的乱序到达。VPN聚合组件310可以更改其跨VPN连接分发的分组的比例和/或节奏,以便减少乱序到达或增加跨聚合VPN连接的流量的吞吐量。对于在客户端设备300上执行的一些或全部应用,VPN聚合组件310可以重新排序或丢弃乱序到达的分组。对于在客户端设备300上执行的一些或全部应用,VPN聚合组件310可以向应用提供乱序分组,而不重新排序它们。应用本身可能会重新排序分组,或丢弃乱序分组。在一些实施例中,可以利用协议栈322和324来重新排序分组。VPN聚合组件310可以通过协议栈322或324(或不同的协议栈)中的一个协议栈发回分组,以诸如在使用TCP的情况下利用包括在一些协议栈中的重新排序逻辑。由于TCP和其他协议包括重新排序功能(诸如基于序列号),因此可以按这种方式重新排序分组。

如本具体实施方式中的别处更详细描述的,VPN聚合组件310可以跨多个VPN连接进行负载均衡。

图4图示了使得能够通过多个接入网络利用多个VPN连接的示例路由器客户端设备400的框图。路由器客户端设备400可以与路由器客户端设备202相同或相似。路由器客户端设备400包括一个或多个处理器402和存储器404。专用网络接口硬件406从多个设备(诸如设备204)接收网络流量。路由器客户端设备400包括与常规接入路由器类似的功能,诸如为访问网络的客户端设备提供默认网关,以及将流量转发到一个或多个接入网络以及从一个或多个接入网络转发流量。专用网络接口硬件406可以是各种网络接口硬件类型中的任一种,其包括有线以太网、无线以太网等等。实施例不限于任何类型或多种类型的专用网络接口硬件406。

VPN聚合组件408采用策略410来执行各种功能。VPN聚合组件408选择接入网络并且使路由器客户端设备400通过那些接入网络建立到VPN服务器的VPN连接。在一些实施例中,VPN聚合组件408可以选择接入网络,路由器客户端设备400诸如通过利用接入网络接口硬件412和接入网络接口硬件414建立到其的接入连接,以发现、监控和建立接入网络连接。VPN聚合组件408选择与其建立VPN连接的VPN服务器。VPN聚合组件408可以基于策略410做出这些选择。

策略410可以包括要应用于与应用流量相关联的流量的安全性和性能的均衡。策略410可以基于可用网络来指示要建立的VPN连接的一个类型或多个类型,其包括隧道发送类型、加密类型、加密密钥、认证证书等等。策略410可以包括VPN服务器列表。策略410还可以指示VPN服务器使用一个或多个发现机制来被发现。

VPN聚合组件408可以利用VPN客户端416和VPN客户端418来经由接入网络接口硬件412和接入网络接口硬件414建立VPN连接。因此,可以使用第一接入网络经由接入网络接口硬件412建立到第一VPN服务器的第一VPN连接,并且可以使用第二接入网络经由接入网络接口硬件414建立到第二VPN服务器的第二VPN连接。如在本具体实施方式中的别处所指出的,在一些实施例中,接入网络接口硬件412和接入网络接口硬件414可以访问相同的接入网络;因此,在这些实施例中,客户端设备400可以使用相同的接入网络来建立多个VPN连接。

在确定来自专用网络接口硬件406的流量被接收时,VPN聚合组件408可以使得VPN连接由VPN客户端416和VPN客户端418建立。VPN聚合组件408可以使得建立到一个VPN服务器的第一VPN连接以用于来自应用204的流量。然后,在从特定应用或从特定设备204接收由策略410指定为被赋予更高的安全性的流量时,VPN聚合组件408可以建立到第二VPN服务器的第二VPN连接,以提供增加的安全性。

如在本具体实施方式中的别处更详细讨论的,VPN聚合组件408利用各种分发方案来在多个VPN连接之间分发小流。在图4所图示的示例中,VPN聚合组件408从专用网络接口硬件406接收流量(流量流由箭头指示)。VPN聚合组件408诸如通过向VPN客户端416和VPN客户端418中的每个客户端提供流量中的一些流量来在不同VPN连接之间分发流量。VPN客户端416与第一协议栈420对接,该第一协议栈420操作以经由接入网络接口硬件412转发流量。VPN客户端418与第二协议栈422对接,该第二协议栈422操作以经由接入网络接口硬件414转发流量。接入网络接口硬件412和接入网络接口硬件414接收传入流量,该流量然后分别向上传送到协议栈420和协议栈422。协议栈420向VPN客户端416提供流量,并且协议栈422向VPN客户端418提供流量。VPN客户端416和418向VPN聚合组件408提供入口流量。

如在本具体实施方式中的别处所描述的,VPN聚合组件408监控流量的到达。VPN聚合组件408确定指示入口流量乱序到达的程度的度量。VPN聚合组件408监控往返延迟时间和多个VPN连接的吞吐量。VPN聚合组件408基于该信息采取各种动作。VPN聚合组件408可以向VPN聚合组件(诸如VPN聚合组件118)发信号以更改跨多个VPN连接传送的分组的比例和/或节奏,以减少分组的乱序到达。VPN聚合组件408可以更改其跨VPN连接分发的分组的比例和/或节奏,以便减少分组的乱序到达。对于与客户端应用和/或设备204相关联的流量中的一些或全部流量,VPN聚合组件408可以重新排序或丢弃乱序到达的分组。对于与客户端应用和/或设备204相关联的流量中的一些或全部流量,VPN聚合组件408可以向专用网络接口硬件406提供乱序分组,而不重新排序它们。应用和/或设备204可能会重新排序分组,或丢弃乱序分组。

如本具体实施方式中别处更详细描述的,VPN聚合组件408可以跨多个VPN连接进行负载均衡。

图5图示了使得能够聚合多个VPN连接的示例服务器计算系统500的框图。服务器计算系统500包括一个或多个处理器502和存储器504。存储器存储VPN服务器110、VPN服务器114、应用服务器116和VPN聚合组件118。在一些实施例中,单个VPN服务器可以被用于维护与相同的客户端设备的多个VPN连接。服务器计算系统500可以包括其各种模块所执行的一个或多个虚拟机或应用容器。尽管服务器计算系统500被图示为包括VPN服务器110、VPN服务器114、应用服务器116和VPN聚合组件118,但是根据实施例的服务器计算系统可以仅包括这些组件中的一些组件。数据中心环境(诸如图1和图2所图示的)可以利用多个物理主机节点来提供这些组件。

VPN服务器110、VPN服务器114、应用服务器116和VPN聚合组件118中的一个或多个与协议栈506和508对接,该协议栈506和508使得分组分别在网络接口硬件510和512上传送。网络接口硬件510和512接收分组并且将它们向上传送到协议栈506和508。图5中所图示的流量流示出了流量在设备内部的VPN服务器110、VPN服务器114、应用服务器116和VPN聚合组件118之间进行传递。在虚拟化环境中,内部虚拟交换机或其他组件可以路由去往或来自这些组件的流量。

策略存储装置514可以包括与VPN连接聚合有关的各种策略。策略存储装置514包括到客户端设备的连接的分发策略。策略存储装置514中的策略可以基于与客户端设备的通信或协商来建立。这允许客户端设备影响或控制来自应用服务器116的入口流量如何被跨VPN连接分发。这样,分发策略(包括指示增加吞吐量、性能、安全性等的策略)可以基于客户端设备上的可配置设置或静态设置。策略存储装置514还可以包括VPN连接策略,其指示例如VPN隧道发送协议、加密标准、加密密钥、认证证书等等,其被允许用于建立和维护VPN连接。

图6是图示了利用不同位置中的VPN服务器之间的VPN连接聚合的示例数据中心环境600的框图。通过将VPN服务器110和114定位在不同的地理位置或连接到不同的互联网服务提供者(ISP),可以获得安全性的提高。例如,VPN服务器110和114的地理分离可能使中间人攻击者更难获得对两个VPN连接上的流量的访问,即使攻击者能够损坏这两个VPN连接。

在图6所图示的示例中,应用服务器116和VPN聚合组件118被托管在主机服务器节点604上,而VPN服务器114被托管在主机服务器节点606上。主机服务器节点604和主机服务器节点606可以处于相同的物理位置中,诸如在数据中心中,并且经由数据中心网络608彼此通信地耦合。VPN服务器110被托管在主机服务器节点610上,该主机服务器节点610可以处于不同的物理位置中,其包括例如处于完全不同的国家或大陆中。数据中心网络608经由一个或多个接入设备612(例如,路由器或其他联网设备)通信地耦合到广域网614。主机服务器节点610还通信地耦合到广域网614。VPN服务器110建立与VPN聚合组件118的通信,来自与客户端设备102的VPN连接的流量通过该通信被提供给聚合组件。此外,VPN服务器114建立与VPN聚合组件118的通信,来自与客户端设备102的VPN连接的流量通过该VPN聚合组件118被提供给聚合组件。这些通信通过连接628和630进行,这些连接在图1中用虚线图示。VPN聚合组件118与VPN服务器110和114之间的这些通信可以被加密,并且可以通过VPN连接来建立,这些VPN连接可以与客户端设备102和VPN服务器110和114之间建立的VPN连接不同。连接628和630可以包括私有线路、多协议标签交换(MPLS)连接、帧中继连接等等。图6还图示了其中VPN聚合组件118和应用服务器116被托管在相同主机服务器节点604上并且VPN服务器110和VPN服务器114被托管在其他服务器节点上的实施例。在不背离实施例的范围的情况下,其他布置是可能的。

主机服务器节点604包括一个或多个处理器616和存储器618。存储器618存储可由一个或多个处理器616执行的应用服务器116和VPN聚合组件118。主机服务器节点606包括一个或多个处理器620和存储器622。存储器622存储可由一个或多个处理器620执行的VPN服务器114。主机服务器节点610包括一个或多个处理器624和存储器626。存储器626存储VPN服务器110,该VPN服务器110可由一个或多个处理器624执行。

图7至图9描绘了示出了根据各种示例的示例过程的流程图。这些过程的操作在各个框中进行说明,并且参照这些框进行总结。这些过程被图示为逻辑流程图,其中的每个操作可以表示操作集合,其可以在硬件、软件或其组合中实现。在软件的上下文中,这些操作表示存储在一个或多个计算机存储介质上的计算机可执行指令,这些计算机可执行指令当由一个或多个处理器执行时,使得一个或多个处理器能够执行所记载的操作。通常,计算机可执行指令包括例程、程序、对象、模块、组件、数据结构等,其执行特定功能或实现特定抽象数据类型。其中操作被描述的次序不旨在被解释为限制,并且任何数目的所描述的操作可以以任何次序组合、分成子操作、和/或被并行执行以实现过程。根据本公开的各种示例的过程可以仅包括逻辑流程图中所描绘的操作中的一些或全部操作。

图7图示了描绘了用于在多个VPN连接之间分发流量的客户端设备的示例过程700的流程图。在702处,客户端设备(诸如客户端设备102或路由器客户端设备202)通过与第一接入网络对接的第一网络接口设备建立第一VPN连接。第一VPN连接通过第一VPN服务器(诸如VPN服务器110或VPN服务器114)建立。第一VPN连接可以通过以下各项中的一项或多项建立:隧道发送、加密、认证,并且第一VPN连接的建立可以包括以下各项中的任一项:加密密钥、认证证书等等。

在704处,客户端设备确定是否建立第二VPN连接。客户端设备可以基于策略存储装置中的策略来确定建立第二VPN连接,该策略指示应用流量要被提供有附加安全性。在一些实施例中,可以在确定第二网络接口卡和/或第二接入网络连接可用时,通过客户端设备建立第二VPN连接。客户端设备可以基于具有足够的信号强度、吞吐量、延迟时间等的第二接入网络来确定建立第二VPN连接。

在706处(在“是”箭头之后),客户端设备建立第二VPN连接。客户端设备通过与第二接入网络对接的第二网络接口设备建立第二VPN连接。第二VPN使用诸如VPN服务器110或VPN服务器114之类的第二VPN服务器建立。第二VPN连接可以通过以下各项中的一项或多项建立:隧道发送、加密、认证,并且第二VPN连接的建立可以包括以下各项中的任一项:加密密钥、认证证书等等。步骤704和706可以重复用于附加的VPN连接。一旦创建新VPN连接,就可以监控新VPN连接的状态。在确定新VPN连接的状态指示新VPN连接满足或超过一个或多个性能阈值时,新VPN连接可以被添加到当前现有的VPN连接的列表中,并且因此可以导致应用流量在包括新的VPN连接在内的当前现有的VPN连接之中进行分发。类似地,一旦检测到VPN连接不再可用,它可以被从当前现有的VPN连接列表中移除,并且流量不会分发给它。因此,在客户端设备检测到新接入网络的情况下,客户端设备可以建立到接入网络的连接并且通过新的接入网络建立VPN连接。如本文中所描述的,在现有当前VPN连接存在并且在建立新VPN连接之后保持活动的情况下,新的和现有的VPN连接可以被聚合以在其中分发应用流量。

在708处,客户端设备上的VPN聚合组件(诸如VPN聚合组件310)接收与应用服务器和客户端应用之间的应用连接相关联的出口应用流量。客户端应用可以在客户端设备或另一设备(诸如设备204)上执行。应用连接可以包括由目的地地址、源地址、协议、源端口和目的地端口的五元组中的一个或多个定义的流量流。应用连接可以包括由上层协议流定义的流量流。应用连接可以包括入口流量(从客户端应用到应用服务器)和出口流量(从应用服务器到客户端应用)。

在710处,客户端设备的VPN聚合组件将流量分解成小流。小流可以包括来自单个应用连接或流的一个或多个分组。可以基于数据突发(例如,基于确定自从传送最后的出口流量突发以来已经过去了阈值时间段)来确定小流,尽管可以不以这种方式确定或定义小流。小流可以由一个或多个连续分组确定。

在712处,客户端设备的VPN聚合组件使得通过诸如第一VPN连接和第二VPN连接之类的多个VPN连接分发小流。可以基于多个VPN连接上的负载均衡来确定通过多个VPN连接的小流的分发。通过多个VPN连接分发流程部件可以基于用于减少分组乱序到达接收器处的方案来确定。可以基于安全性和性能之间的均衡来确定通过多个VPN连接的小流的分发。在一些实施例中,跨一个VPN连接接收入口流量,并且跨另一VPN连接传送出口流量。在不背离实施例的范围的情况下,用于通过多个VPN连接分发出口流程流量的其他方案是可能的。VPN聚合组件可以检测虚拟或硬件网络接口(诸如接入网络接口硬件314或316)的启用或停用。如果检测到新的活动网络接口,则可以重复步骤704和706并且可以创建新VPN连接。

在714处,客户端设备的VPN聚合组件从多个VPN连接接收入口流量。入口流量与客户端应用和应用服务器之间的连接相关联。在716处,客户端设备的VPN聚合组件聚合流量并且将流量提供给客户端应用(在客户端设备上或在诸如设备204中的一个设备之类的另一设备上执行)。尽管在一些实施例中VPN聚合组件不重新排序分组,VPN聚合组件可以在将分组提供给客户端应用之前重新排序它们。VPN聚合组件可以按根据预先确定的连接跳变模式所确定的次序获得分组。因此,分组可以在没有指示分组次序的数据的情况下到达,并且作为替代,该顺序基于连接跳变模式而确定。在这种情况下,VPN聚合组件根据次序来对分组进行排序,该次序根据预先确定的连接跳变模式确定。

图8图示了描绘了用于监控和调整通过多个集合VPN连接分发流量的示例过程800的流程图。在802处,与应用服务器相关联的客户端设备和/或VPN聚合组件监控VPN连接的可用性和一个或多个性能方面,其包括监控或检测VPN连接的启用或停用。在一些示例中,性能方面包括VPN连接的往返延迟时间、VPN连接的所测量的吞吐量、VPN连接的抖动、VPN连接的分组丢失等等。

在804处,与应用服务器相关联的客户端设备和/或VPN聚合组件确定指示分组乱序到达的程度的度量。例如,该度量可以是百分比、比例或乱序到达的其他数目个分组。该度量可以是位移的量值,诸如平均乱序分组到达的位置的数目(例如,平均乱序分组比其应当按次序到达的分组晚到达5个分组)等等。

在806处,与应用服务器相关联的客户端设备和/或VPN聚合组件向传送节点发信号以调整其传输,以便减少乱序分组的数目或位移量值。信号可以通过VPN连接中的一个VPN连接传送,诸如通过在客户端设备上的VPN聚合组件和与应用服务器相关联的VPN聚合组件之间的控制连接上的控制传输分组或其他数据分组进行传送。

在808处,与应用服务器相关联的客户端设备和/或VPN聚合组件调整通过多个VPN连接的分组的分发。分发的调整可以基于从接收器接收到的信号来调整传输以减少乱序分组。发射机可以调整跨多个VPN连接中的每个VPN连接传输的分组的比例以减少乱序分组。发射机可以基于多个VPN连接的信号和/或测量的往返延迟时间来调整多个VPN连接上的分组的节奏,即,传输次数,以便减少乱序分组的量值。该调整可以基于多个VPN连接的测量的吞吐量,并且沿着每个VPN连接传送的分组的比例可以被更改,以便调整负载均衡、增加总体吞吐量、减少乱序分组、减少抖动等等。如从808回到802的箭头所指示的,只要存在建立的VPN连接,该过程就会重复进行。

图9图示了描绘了用于与聚合多个VPN的应用服务器相关联的VPN聚合组件的示例过程900的流程图。在902处,诸如VPN聚合组件118之类的VPN聚合组件确定客户端设备(诸如客户端设备102或路由器客户端设备202)已经经由与第一接入网络对接的客户端设备的至少第一网络接口设备建立了第一VPN连接。VPN聚合组件可以基于来自VPN服务器的通信、来自客户端设备的通信或基于其他信息来确定这个情况。

在904处,VPN聚合组件确定客户端设备已经经由与第二接入网络对接的客户端设备的至少第二网络接口设备建立了第二VPN连接,第一接入网络和第二接入网络是不同的网络。步骤904可以针对附加的VPN连接而重复。

在906处,VPN聚合组件接收与应用服务器和在客户端设备上执行的客户端应用之间的连接相关联的出口应用流量。出口流量是源自应用服务器、目的地为客户端设备的流量。应用连接可以包括由以下各项中的一项或多项定义的流量流:目的地地址、源地址、协议、源端口和目的地端口的五元组。应用连接可以包括由上层协议流定义的流量流。应用连接可以包括入口流量(从客户端应用到应用服务器)和出口流量(从应用服务器到客户端应用)。

在908处,VPN聚合组件将出口流量分解成小流。小流可以包括来自单个应用连接或流的一个或多个分组。可以基于数据突发(例如,基于确定自从传送最后的出口流量突发以来已经过去了阈值时间段)来确定小流,尽管可以不以这种方式确定或定义小流。小流可以由一个或多个连续分组确定。

在910处,VPN聚合组件使得与应用服务器和客户端应用之间的连接相关联的出口应用流量至少在第一VPN连接和第二VPN连接之间进行分发。可以基于多个VPN连接上的负载均衡来确定通过多个VPN连接的小流的分发。通过多个VPN连接分发小流可以基于减少分组在接收器处乱序到达的方案来确定。可以基于安全性和性能之间的均衡来确定通过多VPN连接的小流的分发。在一些实施例中,跨一个VPN连接接收入口流量,而跨另一VPN连接传送出口流量。在不背离实施例的范围的情况下,用于通过多个VPN连接分发出口小流的其他方案是可能的。

在912处,客户端设备的VPN聚合组件从多个VPN连接接收入口流量(来自发往应用服务器的客户端设备的流量)。入口流量与客户端应用和应用服务器之间的连接相关联。在914处,VPN聚合组件聚合流量并且将流量转发给应用服务器。尽管在一些实施例中,VPN聚合组件不重新排序分组,但是VPN聚合组件可以在将分组提供给应用服务器之前重新排序它们。VPN聚合组件可以按根据预先定义的连接跳变模式确定的次序获得分组。因此,分组可以在没有指示分组次序的数据的情况下到达,并且作为替代,该次序基于连接跳变模式而确定。在这种情况下,VPN聚合组件根据该次序对分组进行排序,该次序根据预先确定的连接跳变模式确定。

根据各种非限制性示例,本文中所描述的计算系统(诸如客户端设备102,202,300,400以及服务器计算系统500以及主机服务器节点604,606和610)包括一个或多个设备,诸如服务器、存储设备、平板计算机、笔记本电脑、台式计算机、游戏控制台、媒体播放器、移动电话、手持式计算机、可穿戴式设备、智能电器、联网设备、信息亭设备等。在一个示例配置中,计算系统包括至少一个处理器。计算系统还包含允许与各种其他系统通信的一个或多个通信连接。计算系统还包括一个或多个输入设备,诸如键盘、鼠标、笔、话音输入设备、触摸输入设备等;以及一个或多个输出设备,诸如显示器(包括触摸屏显示器)、扬声器、打印机等,其经由诸如总线之类的连接通信地耦合到一个或多个处理器和计算机可读介质。

存储器304,404,504,618,622和626是计算机可读介质的示例。计算机可读介质存储可由一个或多个处理器加载和执行的计算机可执行指令,以及在这些程序的执行期间和/或与这些程序结合使用时所生成的数据。在所图示的示例中,计算机可读介质存储操作系统实例,该操作系统实例向应用306和308、客户端VPN聚合组件310和408、VPN聚合组件118、策略存储装置312,410和514、VPN客户端318,320,416和418、VPN服务器110和114、一个或多个应用服务器116、协议栈322、324、420、422、506和508提供基本系统功能。包括操作系统在内的这些组件中的一个或多个组件可能被实例化为虚拟机、应用容器或一些其他类型的虚拟化实例。

一个或多个处理器302,402,502,616,620和624可以包括一个或多个单核处理单元、一个或多个多核处理单元、中央处理单元(CPU)、图形处理单元处理单元(GPU)、通用图形处理单元(GPGPU)或硬件逻辑组件,该硬件逻辑组件例如经由来自模块或应用编程接口(API)的专门编程被配置为执行本文中所描述的功能。在备选示例中,本公开的一个或多个功能可以通过但不限于硬件逻辑组件进行或执行,这些硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)、数字信号处理单元(DSP)以及其他类型的一个或多个定制处理单元。例如,被配置为执行本文中所描述的功能中的一个或多个功能的处理单元可以表示混合设备,其包括嵌入在FPGA结构中的CPU核心。这些或其他硬件逻辑组件可以独立操作,或者在一些实例中,可以由CPU驱动。在一些示例中,计算系统的示例可以包括多个类型的多个处理单元。例如,处理单元可以是一个或多个GPGPU和一个或多个FPGA的组合。例如,如同图形处理单元(GPU)和中央处理单元(CPU)的情况一样,不同的处理单元可以具有不同的执行模型。

取决于所使用的计算设备的配置和类型,计算机可读介质(例如,存储器304,404,504,618,622和626)包括易失性存储器(诸如随机存取存储器(RAM))和/或非易失性存储器(诸如只读存储器(ROM)、闪存等)。计算机可读介质还可以包括附加的可移除存储装置和/或不可移除存储装置,其包括但不限于SSD(例如,闪存)、HDD(硬盘驱动器)存储装置或其他类型的磁存储装置、光存储装置、和/或可以为计算系统提供计算机可执行指令、数据结构、程序模块和其他数据的非易失性存储的其他存储装置。

计算机可读介质例如可以表示计算机存储器,其采用计算机存储介质的形式。计算机可读介质包括至少两种类型的计算机可读介质,即,计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可执行指令、数据结构、编程模块或其他数据之类的信息的任何过程或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于相变存储器(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术、光盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁性存储设备、或可以用于存储信息以供计算设备访问和检索的任何其他介质。相反,通信介质可以体现经调制的数据信号(诸如载波)或其他传输机制中的计算机可执行指令、数据结构、程序模块或其他数据。如本文中所定义的,计算机存储介质不包括通信介质。

本文中所描述的各种过程结合网络功能作为计算功能来执行。例如,一个计算设备或系统可以使得经由网络接口硬件向另一计算设备传送消息。这可以包括例如通过软件模块将指针、自变量或其他数据传递到联网模块。指针、自变量或其他数据可以标识被存储在存储器中或存储在寄存器中的要被传送到另一计算设备的数据。联网模块可以包括协议栈,并且可以读取由指针、自变量或其他数据标识的数据。协议栈可以将数据封装在一个或多个帧、分组、信元或其他数据联网协议结构中。协议栈可以调用网络接口设备驱动程序,以使得电信号、磁信号或光信号沿着通信介质物理传输到诸如网关、路由器、交换机、集线器等之类的网络元件。底层网络可能会将数据路由或切换到目的地。目的地计算设备可以经由网络接口卡接收数据,其导致中断被呈现给设备驱动程序。目的地计算设备的处理器向设备驱动程序传递执行线程,该执行线程使得协议栈解封装分组、帧和信元中的数据,其中数据在该分组、帧和信元中被接收。协议栈使得所接收到的数据存储在存储器、寄存器或其他位置。协议栈可以将标识存储所接收到的数据的位置的指针、自变量或其他数据传递到在目的地计算设备上执行的目的地软件模块。软件模块接收执行线程以及参数、指针或其他数据,并且从所标识的位置读取数据。

示例条款

条款A.一种计算设备,包括一个或多个处理器、存储器、以及多个编程指令,该多个编程指令被存储在存储器上并且可由一个或多个处理器执行以执行动作。这些动作包括:通过连接到第一VPN服务器的第一网络接口建立第一虚拟专用网络(VPN)连接,通过连接到第二VPN服务器的第二网络接口建立第二VPN连接,接收与应用服务器和客户端应用之间的连接相关联的应用流量,以及使得应用流量在至少第一VPN连接和第二VPN连接之间被分发。

条款B.条款A所述的计算设备,其中第一网络接口和第二网络接口在相同的网络上。

条款C.条款A或B中的任一项所述的计算设备,其中第一VPN服务器和第二VPN服务器被托管在相同的计算系统上。

条款D.条款A至C中的任一项所述的计算设备,其中多个VPN连接使用不同的隧道发送协议、不同的加密标准和不同的认证证书,其中第一VPN连接使用第一隧道发送协议、第一加密标准和第一认证证书来建立,并且第二VPN连接使用第二隧道发送协议、第二加密标准和第二认证证书来建立。具有以下各项中的至少一项:第一隧道发送协议不同于第二隧道发送协议,第一加密标准和第二加密标准不同,或者第一认证证书和第二认证证书不同。

条款E.条款A至D中的任一项所述的计算设备,其中动作还包括:检测到新VPN连接被创建,监控新VPN连接的状态,当确定新VPN连接的状态指示新VPN连接满足或超过一个或多个性能阈值时,将新VPN连接添加到当前现有的VPN连接,并且使得应用流量在包括新VPN连接在内的当前现有的VPN连接之间进行分发。

条款F.条款A至E中的任一项所述的计算设备,其中应用流量包括第一组数据分组和第二组数据分组,并且动作还包括:检测通过第一VPN连接传输第一组数据分组与从客户端应用接收第二组数据分组之间的传输无活动的阈值时段;以及通过至少基于传输无活动的阈值时段来通过第二VPN连接传送第二组数据分组,使得应用流量在第一VPN连接和第二VPN连接之间进行分发。

条款G.条款A至F中的任一项所述的计算设备,其中动作还包括:至少基于连接跳变模式来使得应用流量在至少第一VPN连接与第二VPN连接之间传输。

条款H.条款A至G中的任一项所述的计算设备,其中动作还包括:监控第一VPN连接和第二VPN连接的吞吐量;以及至少基于第一VPN连接和第二VPN连接的吞吐量的比例,使得应用流量在第一VPN连接和第二VPN连接之间被分发。

条款I.条款A至H中的任一项所述的计算设备,其中动作还包括:确定与第一VPN连接相关联的第一延迟;确定与第二VPN连接相关联的第二延迟;以及使得至少基于与第一VPN连接相关联的第一延迟和与第二VPN连接相关联的第二延迟来在第一VPN连接和第二VPN连接之间分发应用流量。

条款J.条款A至I中的任一项所述的计算设备,其中应用流量包括传入分组和传出分组,并且其中使得应用流量至少在第一VPN连接和第二VPN连接之间进行分发包括:使得传出分组利用第一VPN连接并且使得传入分组利用第二VPN连接。

条款K.条款A至J中的任一项所述的计算设备,其中动作还包括确定经由第一VPN连接接收的应用流量的第一数据分组相对于经由第二VPN连接接收的第二数据分组被乱序地接收;以及响应于确定,向与应用服务器相关联的聚合组件发信号以调整经由第一VPN连接和第二VPN连接传送的数据分组的比例。

条款L.一种计算系统,包括一个或多个处理器、存储器、以及多个编程指令,该多个编程指令被存储在存储器上并且可由一个或多个处理器执行,以确定客户端设备已经经由第一网络接口建立了与第一VPN服务器的第一VPN连接,确定客户端设备已经经由第二网络接口设备建立了与第二VPN服务器的第二VPN连接,接收与应用服务器和在客户端设备上执行的客户端应用之间的连接相关联的应用流量,以及使得应用流量在第一VPN连接和第二VPN连接之间被分发。

条款M.条款L所述的计算系统,其中多个编程指令还可由一个或多个处理器执行以实现被配置为与客户端设备建立第一VPN连接的第一VPN服务器。

条款N.条款L或M中的任一项的计算系统,其中第二VPN服务器被托管在主机节点上,并且其中多个编程指令还可由一个或多个处理器执行以经由网络与主机节点通信。

条款O.条款L至N中的任一项所述的计算系统,其中多个编程指令还可由一个或多个处理器执行以接收通过第一VPN连接由客户端设备传送的应用流量的第一一个或多个数据分组,接收通过第二VPN连接由客户端设备传送的应用流量的第二一个或多个数据分组,将第一一个或多个数据分组和第二个一个或多个数据分组聚合成组合数据流,以及向应用服务器传送组合数据流。

条款P.条款L至O中的任一项所述的计算系统,其中多个编程指令还可由一个或多个处理器执行以在第一时间接收与连接相关联的应用流量的第一数据分组,该第一数据分组经由第一VPN连接由客户端设备传送;在第二时间接收与经由第二VPN连接由客户端设备传送的连接相关联的应用流量的第二数据分组;从第一时间和第二时间以及从第一数据分组的第一序号和第二数据分组的第二序号中确定第一数据分组和第二数据分组被乱序接收到;以及至少基于确定第一数据分组和第二数据分组乱序到达,使得信号被传送到客户端设备,该信号指示调整经由第一VPN连接或第二VPN传送到客户端设备的分组的比例。

条款Q.条款L至P中的任一条款的计算系统,其中多个编程指令进一步可由一个或多个处理器执行以使得至少基于连接跳变模式来传送与第一VPN连接和第二VPN上的应用流量相关联的数据分组。

条款R.一种方法,包括:通过第一VPN服务器经由客户端设备的第一接入网络建立到客户端设备的第一虚拟专用网络(VPN)连接;通过第二VPN服务器经由客户端设备的第二接入网络建立到客户端设备的第二虚拟专用网络(VPN)连接;接收与应用服务器和与客户端设备相对应的客户端应用之间的连接相关联的应用流量;以及使得应用流量在第一VPN连接和第二VPN连接之间被分发。

条款S.条款R所述的方法,第一VPN连接使用第一隧道发送协议、第一加密标准和第一认证证书来建立,第二VPN连接使用第二隧道发送协议、第二加密标准和第二认证证书来建立,并且其中具有以下各项中的至少一项:第一隧道协议不同于第二隧道协议;第一加密标准不同于第二加密标准;或者第一认证证书不同于第二认证证书。

条款T.条款R或者S中的任一项所述的方法,还包括:通过第一VPN连接接收由客户端设备传送的应用流量的第一一个或多个数据分组;通过第二VPN连接接收由客户端设备传送的应用流量的第二一个或多个数据分组;将第一一个或多个数据分组和第二一个或多个数据分组聚合成组合数据流;以及向应用服务器传送组合数据流。

条款U.条款R至T中的任一项所述的方法,还包括:确定经由第一VPN连接从客户端设备接收的应用流量的第一一个或多个数据分组相对于经由第二VPN连接从客户端设备接收的第二一个或多个数据分组被乱序地接收;以及基于确定第一一个或多个分组相对于第二一个或多个数据分组被乱序地接收,向客户端设备发信号,以调整经由第一VPN连接和第二VPN连接传送的数据分组的比例。

条款V.一种计算设备,包括用于通过连接到第一VPN服务器的第一网络接口建立第一虚拟专用网(VPN)连接的装置;用于通过连接到第二VPN服务器的第二网络接口建立第二VPN连接的装置;用于接收与应用服务器和客户端应用之间的连接相关联的应用流量的装置;以及用于使得应用流量至少在第一VPN连接和第二VPN连接之间被分发的装置。

条款W.条款V所述的计算设备,其中第一网络接口和第二网络接口在相同的网络上。

条款X.条款V或W所述的计算设备,其中第一VPN服务器和第二VPN服务器被托管在相同的计算系统上。

条款Y.条款V至X中任一项所述的计算设备,其中多个VPN连接使用不同的隧道发送协议、不同的加密标准和不同的认证证书来建立,其中第一VPN连接使用第一隧道发送协议、第一加密标准和第一认证证书来建立,并且第二VPN连接使用第二隧道发送协议、第二加密标准和第二认证证书来建立。具有以下各项中的至少一项:第一隧道发送协议不同于第二隧道发送协议,第一加密标准和第二加密标准不同,或者第一认证证书和第二认证证书不同。

条款Z.条款V至Y中的任一项所述的计算设备,还包括用于检测新VPN连接被创建的装置;用于监控新VPN连接的状态的装置;用于在确定新VPN连接的状态指示新VPN连接满足或超过一个或多个性能阈值时,将新VPN连接添加到当前现有的VPN连接的装置;以及用于使得应用流量在包括新VPN连接在内的当前现有的VPN连接之间被分发的装置。

条款AA.条款V至Z中的任一项所述的计算设备,其中应用流量包括第一组数据分组和第二组数据分组,并且计算设备还包括用于检测通过第一VPN连接传输第一组数据分组与从客户端应用接收第二组数据分组之间的传输无活动的阈值时段的装置;以及用于通过基于传输无活动的阈值时段来至少通过第二VPN连接传送第二组数据分组,使得应用流量在第一VPN连接和第二VPN连接之间被分发的装置。

条款AB.条款V至AA中的任一项所述的计算设备,还包括用于至少基于连接跳变模式来在至少第一VPN连接与第二VPN连接之间传输应用流量的装置。

条款AC.条款V至AB中的任一项所述的计算设备,还包括用于监控第一VPN连接和第二VPN连接的吞吐量的装置;以及用于至少基于第一VPN连接和第二VPN连接的吞吐量的比例,使得应用流量在第一VPN连接和第二VPN连接之间被分发的装置。

条款AD.条款V至AC中的任一项所述的计算设备,还包括用于确定与第一VPN连接相关联的第一延迟的装置;用于确定与第二VPN连接相关联的第二延迟的装置;以及用于使得至少基于与第一VPN连接相关联的第一延迟和与第二VPN连接相关联的第二延迟来在第一VPN连接和第二VPN连接之间分发应用流量的装置。

条款AE.条款V至AD中任一项所述的计算设备,其中应用流量包括传入分组和传出分组,并且其中用于使得应用流量至少在第一VPN连接和第二VPN连接之间进行分发的装置包括用于使得传出分组利用第一VPN连接的装置;以及用于使得传入分组利用第二VPN连接的装置。

条款AF.条款V至AE中的任一项的计算设备,还包括用于确定经由第一VPN连接接收的应用流量的第一数据分组相对于经由第二VPN连接接收的第二数据分组被乱序地接收的装置;以及用于响应于确定,向与应用服务器相关联的聚合组件发信号以调整经由第一VPN连接和第二VPN连接传送的数据分组的比例的装置。

条款AG.一种计算系统,包括用于确定客户端设备已经经由第一网络接口建立了与第一VPN服务器的第一VPN连接的装置;用于确定客户端设备已经经由第二网络接口设备建立了与第二VPN服务器的第二VPN连接的装置;用于接收与应用服务器和在客户端设备上执行的客户端应用之间的连接相关联的应用流量的装置;以及用于使得应用流量在第一VPN连接和第二VPN连接之间被分发的装置。

条款AH.条款AG所述的计算系统,还包括用于实现被配置为与客户端设备建立第一VPN连接的第一VPN服务器的装置。

条款AI.条款AG或AH中的任一项所述的计算系统,其中第二VPN服务器被托管在主机节点上,并且其中计算设备还包括用于经由网络与主机节点通信的装置。

条款AJ.条款AG至AI中的任一项所述的计算系统,还包括用于接收通过第一VPN连接由客户端设备传送的应用流量的第一一个或多个数据分组的装置;用于接收通过第二VPN连接由客户端设备传送的应用流量的第二一个或多个数据分组的装置;用于将第一一个或多个数据分组和第二个一个或多个数据分组聚合成组合数据流的装置;以及用于向应用服务器传送组合数据流的装置。

条款AK.条款AG至AJ中的任一项所述的计算系统,还包括用于在第一时间接收与连接相关联的应用流量的第一数据分组的装置,该第一数据分组经由第一VPN连接由客户端设备传送;用于在第二时间接收与经由第二VPN连接由客户端设备传送的连接相关联的应用流量的第二数据分组的装置;用于从第一时间和第二时间以及从第一数据分组的第一序号和第二数据分组的第二序号中确定第一数据分组和第二数据分组被乱序接收到的装置;以及用于至少基于确定第一数据分组和第二数据分组乱序到达,使得向客户端设备传送信号的装置,该信号指示调整经由第一VPN连接或第二VPN传送到客户端设备的分组的比例。

条款AL.条款AG至AK中的任一项所述的计算系统,还包括用于使得至少基于连接跳变模式来传送与第一VPN连接和第二VPN上的应用流量相关联的数据分组的装置。

条款AM.一种方法,包括:通过连接到第一VPN服务器的第一网络接口建立第一虚拟专用网络(VPN)连接;通过连接到第二VPN服务器的第二网络接口建立第二VPN连接;接收与应用服务器和客户端应用之间的连接相关联的应用流量,以及使得应用流量至少在第一VPN连接和第二VPN连接之间被分发。

条款AN.条款AM所述的方法,其中第一网络接口和第二网络接口在相同的网络上。

条款AO.条款AM或AN所述的方法,其中第一VPN服务器和第二VPN服务器被托管在相同的计算系统上。

条款AP.条款AM至AO中的任一项所述的方法,其中多个VPN连接使用不同的隧道发送协议、不同的加密标准和不同的认证证书来建立,其中第一VPN连接使用第一隧道发送协议、第一加密标准和第一认证证书来建立,并且第二VPN连接使用第二隧道发送协议、第二加密标准和第二认证证书来建立。具有以下各项中的至少一项:第一隧道发送协议不同于第二隧道发送协议,第一加密标准和第二加密标准不同,或者第一认证证书和第二认证证书不同。

条款AQ.条款AM至AP中的任一项所述的方法,还包括:检测到新VPN连接被创建,监控新VPN连接的状态,当确定新VPN连接的状态指示新VPN连接满足或超过一个或多个性能阈值时,将新VPN连接添加到当前现有的VPN连接,并且使得应用流量在包括新VPN连接在内的当前现有的VPN连接之间被分发。

条款AR.条款AM至AQ中的任一项所述的方法,其中应用流量包括第一组数据分组和第二组数据分组,并且该方法还包括:检测通过第一VPN连接传输第一组数据分组与从客户端应用接收第二组数据分组之间的传输无活动的阈值时段;以及通过至少基于传输无活动的阈值时段来通过第二VPN连接传送第二组数据分组,使得应用流量在第一VPN连接和第二VPN连接之间被分发。

条款AS.条款AM至AR中的任一项所述的计算设备,还包括:使得至少基于连接跳变模式来在至少第一VPN连接和第二VPN连接之间传输应用流量。

条款AT.根据条款AM至AS中的任一项所述的方法,还包括:监控第一VPN连接和第二VPN连接的吞吐量;以及至少基于第一VPN连接和第二VPN连接的吞吐量的比例,使得应用流量在第一VPN连接和第二VPN连接之间被分发。

条款AU.条款AM至AT中的任一项所述的方法,还包括:确定与第一VPN连接相关联的第一延迟;确定与第二VPN连接相关联的第二延迟;以及使得至少基于与第一VPN连接相关联的第一延迟和与第二VPN连接相关联的第二延迟来在第一VPN连接和第二VPN连接之间分发应用流量。

条款AV.条款AM至AT中的任一项所述的方法,其中应用流量包括传入分组和传出分组,并且其中使得应用流量至少在第一VPN连接和第二VPN连接之间被分发包括:使得传出分组利用第一VPN连接并且使得传入分组利用第二VPN连接。

条款AW.条款AM至AV中的任一项所述的计算设备,还包括:确定经由第一VPN连接接收的应用流量的第一数据分组相对于经由第二VPN连接接收的第二数据分组被乱序地接收;以及响应于确定,向与应用服务器相关联的聚合组件发信号以调整经由第一VPN连接和第二VPN连接传送的数据分组的比例。

结论

尽管已经以特定于结构特征和/或方法动作的语言对技术进行了描述,但是应当理解,所附权利要求不一定限于所描述的特征或动作。相反,这些特征和动作被描述为示例实现方式。

上文所描述的所有方法和过程可以体现在由一个或多个通用计算机或处理器执行的软件代码模块中并且经由其被完全地自动化。代码模块可以被存储在任何类型的计算机可读存储介质或其他计算机存储设备中。可替代地,方法中的一些或全部方法可以体现在专用计算机硬件中。

除非另有特别说明,否则诸如“可以(can)”,“可能(could)”,“可能(might)”或“可能(may)”之类的条件语言在上下文内被理解为表示某些示例包括某些特征、元素和/或步骤,而其他示例不包括它们。因此,这种条件性语言通常不旨在暗示特征、要素和/或步骤对于一个或多个实施例无论如何都是其所必需的,或者一个或多个实施例无论有还是没有用户输入或提示都必然包括用于决定任何特定示例中是否包括或将执行这些特征、要素和/或步骤的逻辑。除非另有特别说明,否则诸如短语“X,Y或Z中的至少一个”之类的连接语言应当理解为表示项、术语等可以是X,Y或Z,或者其组合。

本文中所描述的和/或附图中所描绘的流程图中的任何例程描述、元素或框应当被理解为可能表示表示模块、段或者代码的部分,它们包括用于实现例程中的特定逻辑功能或块的一个或多个可执行指令。本领域技术人员应当理解,备选实现方式被包括在本文中所描述的示例的范围内,其中元素或功能可被删除,或者按照与所示出或所论述的次序不同的次序执行,其包括大致同步地执行或以相反的次序执行,这取决于所涉及的功能。应当强调,可以对上文所描述的示例做出许多变型和修改,其要素被理解为在其他可接受的示例之中。所有这些修改和变型均在本公开的范围内,并且由以下权利要求保护。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1