维护连续网络服务的制作方法

文档序号:26280832发布日期:2021-08-13 19:38阅读:95来源:国知局
维护连续网络服务的制作方法



背景技术:

现代计算设备通常支持多个网络连接。例如,膝上型计算机可以支持以太网、wi-fi(ieee802.11x)和蜂窝网络连接。如果一个网络连接失败,用户可以选择更改网络,例如通过访问膝上型计算机上的网络设置并选择其他网络来更改。

一些设备自动更改网络连接。例如,智能手机的用户可能开始在家中收听播客,手机连接到wi-fi,但然后可能决定继续在室外收听。当用户离开wi-fi范围时,智能手机检测到wi-fi丢失并切换到蜂窝服务。在有足够的缓冲的情况下,转换似乎是无缝的,用户从未注意到连接失败以及然后从wi-fi到蜂窝服务进行了故障转移。



技术实现要素:

不幸的是,当特定应用运行在其上的设备切换网络时,这些应用不支持无缝转换。例如,当网络连接更改时,涉及实时交互的web会议之类的应用可能会暂时冻结。在某些情况下,建立新连接可能需要握手或其它通信,这可以延长中断的持续时间。即使中断仅是瞬时的,它们仍可能导致沮丧和烦恼,从而减少用户体验。

与网络故障转移可导致暂时性功能丢失的传统方法相比,改进的技术同时维护多个网络路径,通过网络路径冗余地交换相同的数据,并且允许接收器选择图6至图8网络路径中的一个网络路径作为其数据的源。例如,在第一当前选择的网络路径变弱的情况下,接收器可以自动且无缝地将其数据的源切换到第二网络路径,同时第一网络路径保持可操作。假设第二网络路径已经开启并且正在传送数据,则转换几乎是瞬时的。即使在具有网络死区或干扰的环境中运行的高度交互的应用也可以保持完整的功能,而通常没有停机时间或其他功能损失。由此增强了可靠性和用户体验。

特定实施例针对一种客户端方法,该方法包括:由客户端设备监视在客户端设备和服务器之间传送数据的多个网络路径,该数据与服务器上的单个应用相关联。该方法还包括:由客户端设备经由多个网络路径中的每个网络路径从服务器接收数据,从多个网络路径中的每个网络路径接收的数据是相同的。该方法还包括:由客户端设备选择多个网络路径中的第一网络路径,从该第一网络路径接收数据以使得能够将服务器上的单个应用递送到客户端设备,以及由客户端设备至少部分地基于对多个网络路径的监视来将所选择的网络路径从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一网络路径的网络连续性的降低引起的从服务器接收数据的延迟。

进一步的实施例涉及一种客户端设备,该客户端设备被配置为执行诸如上述客户端方法的方法。还有其它实施例涉及计算机程序产品。计算机程序产品存储指令,当由客户端设备的控制电路执行该指令时,该指令使得客户端设备执行诸如上述客户端方法的方法。

其它实施例针对一种服务器方法,该方法包括:由服务器从客户端设备接收用于单个应用的应用数据。应用数据经由多个网络路径并行地接收,并且多个网络路径都传送相同的应用数据。该方法还包括将多条网络路径中的第一网络路径分配为运行在服务器上的服务器组件的应用数据的源,以及至少部分地基于从客户端设备接收的指示符将服务器组件的应用数据的源从第一网络路径调整到多条网络路径中的第二网络路径,以防止由第一网络路径的网络连续性的降低引起的数据接收的延迟。

进一步的实施例涉及一种服务器,该服务器被配置为执行诸如上述服务器方法的方法。还有其它实施例涉及计算机程序产品。计算机程序产品存储指令,当服务器的控制电路执行该指令时,该指令使得服务器执行诸如上述服务器方法的方法。

另外的实施例涉及一种系统方法,该系统方法包括:在客户端设备和服务器之间建立加密信道,该加密信道被配置为:为单个应用传送加密通信,以及监视客户端设备和服务器之间的加密信道所使用的多个网络路径。该方法还包括:由服务器经由多个网络路径中的每个网络路径通过加密信道向客户端设备发送单个应用的应用数据的集合,多个网络路径中的每个网络路径传送相同的应用数据的集合,并且由客户端设备选择多个网络路径中的第一网络路径作为用于在客户端设备上运行的客户端组件的应用数据的源。该方法还包括:由客户端设备至少部分地基于对多个网络路径的监视来将数据的源从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一路径的网络连续性的降低引起的在客户端设备与服务器之间传送数据的延迟。

一些实施例涉及一种系统,该系统被配置为执行诸如上述系统方法的方法。还有其它实施例涉及计算机程序产品。计算机程序产品存储指令,当系统的控制电路执行该指令时,该指令使系统执行诸如上述系统方法的方法。

上述发明内容是为了说明的目的而提出的,以帮助读者容易地掌握本文提出的示例特征;然而,本公开内容不旨在以任何方式阐述所需元素或限制其实施例。应当理解的是,上述特征可以以任何技术意义上的方式组合,并且所有这样的组合都旨在在本文中公开,而不管这样的组合是否明确地标识。

附图说明

通过附图中所示的特定实施例的以下描述,前述和其它特征和优点将变得清楚明白,在附图中,类似的附图标记贯穿不同的视图指代相同或相似的一部分。

图1是其中可以实践改进技术的实施例的示例环境的框图。

图2是示出了用于将saas(软件即服务)应用从服务器下载到客户端的示例布置的框图。

图3是示出了用于在图1的环境中操作客户端和/或服务器的示例方法的流程图。

图4a至图4d是客户端应用组件的图形用户界面(gui)的模拟的屏幕截图。

图5是saas工作区应用的gui的模拟的屏幕截图。

图6至图8是示出了由客户端设备、服务器、以及包括客户端设备和服务器两者的系统执行的示例方法的流程图。

具体实施例

现在将描述改进技术的实施例。应当理解的是,这些实施例是通过示例的方式提供的,以说明特定特征和原理,而不是限制性的。

一种用于操作应用的改进技术,该技术维护多个同时的网络路径,通过网络路径冗余地交换相同的数据,并且使得接收器能够选择图6至图8网络路径中的一个网络路径作为数据的源。

图1示出了其中可以实践改进技术的实施例的示例环境100。在此,客户端设备110(“客户端”)通过网络170,例如局域网(lan)、广域网(wan)、因特网和/或一些其它类型的网络或网络的组合,可操作地连接到服务器装置120(“服务器”)。客户端110可以被设置为任何用户可操作的计算机或设备,例如膝上型计算机、台式计算机、平板计算机、智能手机、个人数据助理、机顶盒、游戏系统等。服务器120可以以类似的形式设置,但是通常是在数据中心中运行且“在云中”(这意味着在因特网上)可用的服务器级计算机。在一些示例中,使用多个计算机来实现服务器120,作为分布式服务器或服务器集群的一部分。

客户端110经由多个路径180连接到网络170,该多个路径180可以包括例如以太网路径180a、wi-fi路径180b、和蜂窝数据路径180c。可以设置更多或更少数量的路径180,并且本公开不限于任何特定类型或多个特定类型的路径。在示例中,蜂窝数据路径180c是lte(长期演进)数据路径。客户端110具有显示器116,例如监视器、触摸屏等,并且显示器116被配置为呈现可由用户102操作的图形用户界面(gui)118。

如图所示,客户端110包括一个或多个通信接口112c,例如以太网端口、wi-fi天线、蜂窝天线等。客户端110还包括处理器114c(例如,一个或多个处理芯片和/或组件)的集合,以及存储器130c,该存储器130c可以包括易失性存储器(例如,ram(随机存取存储器))、和非易失性存储器(例如,一个或多个rom(只读存储器))、磁盘驱动器、固态驱动器等。处理器114c的集合和存储器130c一起形成客户端控制电路,该客户端控制电路被构造和布置为执行如本文所述的各种客户端方法和功能。另外,存储器130c包括以可执行指令的形式实现的各种软件构造。当可执行指令由处理器组114c运行时,处理器执行软件构造的操作。尽管具体示出和描述了特定软件构造,但是应当理解的是,存储器130c通常包括许多未示出的其他软件组件,例如操作系统、各种应用、进程和守护进程。

服务器120的配置可以类似于客户端110的配置,具有通信接口112s、处理器114s、和存储器130s。处理器114s和存储器130s形成服务器控制电路,该服务器控制电路被构造和布置为执行如本文所述的各种服务器方法和功能。当服务器120上的可执行指令由处理器114s运行时,处理器执行软件构造的操作。

如图1进一步所示,客户端110的存储器130c“包括”,即通过软件指令的执行来实现:软件应用132的客户端组件132c、微型vpn(虚拟专用网络)客户端134c、和链路绑定客户端140c。存储器130c还包括tcp/ip(传输控制协议/互联网协议)驱动器150c,以及附加驱动器160,例如以太网驱动器160a、wi-fi驱动器160b、和蜂窝数据驱动器160c。

现在转向服务器120,存储器130s包括软件应用132的服务器组件132s、微型vpn服务器134s、和链路绑定服务140s。存储器130s还包括tcp/ip驱动器150s,以及用于一个或多个连接路径180的一个或多个驱动器160。在特定示例中,服务器120仅使用经由以太网驱动器160d访问的单个连接路径,例如以太网。

在示例中,微型vpn客户端134c和链路绑定客户端140c被设置为相应软件库,其中每个库具有其自己的api(应用程序接口)以用于暴露其相应功能。另外,微型vpn客户端134c和链路绑定客户端140c可以各自被“定范围”到应用程序132的客户端组件132c,这意味着它们的功能被限于涉及应用程序132的通信,并且一般不扩展到在客户端设备110上运行的其他程序。例如,微型vpn客户端134c与微型vpn服务器134s协调以建立诸如网络隧道134之类的加密信道,该加密信道被限制为客户端组件132c与服务器组件132s之间的通过网络170的通信。隧道134不是应用于整个客户端设备110(这是用于传统vpn的常见布置),而是可以将隧道134限制为在客户端110和服务器120之间传递的应用程序132的网络流量。在这种布置中,由在客户端设备110上运行的其他程序执行的其他网络活动可能落在隧道134的外部,其中这种活动不受隧道134保护。因此,微型vpn为特定应用而不是为客户端机器110整体提供网络隧道134。除了其他特征之外,该特征使得微型vpn能够与链路绑定客户端140c和客户端应用代码132c一起被提供在单个可下载包中(参见图2),该单个可下载包可以被安装在客户端设备110上,从而避免了对多个安装过程的需要并且将所有相关的一部分保持在一起。在示例中,微型vpn客户端134c和服务器134s被配置为通过对经过隧道134的数据执行加密和解密来建立加密信道。它们还可以被配置为例如通过应用允许站点的白名单和/或阻止站点的黑名单来限制到网络170上的指定资源的连接。应当理解的是,这里使用的术语“信道”不限于任何一个网络路径,而是包括所有网络路径180上的所有通信。链路绑定客户端140c被配置为通过多个网络路径180引导传出数据(来自客户端组件132c),并且接收通过网络路径180到达的传入数据,选择图6至图8网络路径中的一个网络路径作为要提供给客户端组件132c的数据的源。以类似的方式,链路绑定服务器140s被配置为通过网络路径180引导传出数据(来自服务器组件132s),并且接收通过相同网络路径180到达的传入网络数据,选择网络路径180中的一个作为要提供给服务器组件132s的数据的源。在一些示例中,链路绑定客户端140c和链路绑定服务140s在osi(开放系统互连)模型的数据链路层(第2层)操作,但这不是必需的。尽管微型vpn客户端组件132c和链路绑定客户端组件140c在这里被示为软件库,但是它们可以可替换地至少部分地使用硬件和/或固件来实现。另外,应当理解的是,微型vpn客户端和服务器以及链路绑定客户端和服务仅仅是说明性的,而不旨在是限制性的。

在示例中,应用程序132是saas应用。客户端组件132c可以是web浏览器或运行从服务器组件132s下载的网页和/或其他内容的其他客户端侧程序。在示例中,应用程序132是工作区框架,即,提供从单个接口对多个子应用的用户访问的软件环境。这样的子应用在工作区框架内运行,这些子应用的传入和传出数据经由链路绑定组件140c通过隧道134。根据一些示例,隧道134应用于去往和来自应用框架的所有应用业务。

在示例操作中,客户端设备110的用户102例如通过点击或敲击快捷方式或者通过在浏览器中导航来启动客户端组件132c。基于先前建立的关联114,客户端组件132c通过网络170连接到服务器组件132s,并且隧道134通过微型vpn客户端134c和微型vpn服务器134s的动作来建立。然后,链路绑定客户端140c和链路绑定服务140s可以通过隧道134交换消息148。链路绑定客户端140c使用消息148作为用于测量路径180上的网络性能的基础。例如,传感器144测量网络速度,例如,作为往返延迟(使用ping实用工具)、带宽等。在示例中,传感器144分离地测量路径180中的每个上的网络速度或带宽,并且可以或多或少地连续地或以规则的间隔(例如,每50ms(毫秒)一次)重复其测量。尽管消息148被示出为直接连接链路绑定客户端140c和服务器140s的虚线,但这些消息实际上例如经由客户端和服务器侧驱动器160,以及通过用于每个路径180的任何支持基础结构(例如,手机塔、路由器、因特网服务提供商等)而传递通过网络170。以这种方式,传感器144获得每个路径180的实时测量。在一些实例中,传感器144识别所选择的路径144a,即,提供最高速度、带宽、一致性、经济性、和/或类似的路径180中的一个,并且例如在通过网络170发送的识别所选择的路径144a的指示符中向服务器120上的链路绑定服务140s警示所选择的路径144a的身份。

当用户102操作gui118以控制应用132时,客户端110在基本上相同的时间并且并行地通过所有路径180向网络170发送应用数据162。例如,链路绑定客户端140c将传出应用数据162传递到tcp/ip驱动器150c。tcp/ip驱动器150c使用多路径路由将应用数据转发到以太网驱动器160a、wi-fi驱动器160b、和蜂窝数据驱动器160c。然后,客户端设备110经由以太网端口、wi-fi天线、和蜂窝手机天线发送出分组162a、162b和162c。分组162a、162b和162c都传送相同的数据162,并且并行地并且同时或几乎同时传递通过网络170,其中它们之间的任何差异都是由于沿着路径180的不同的延迟而引起。在示例中,通过所有路径发送的所有应用数据162都传递通过隧道134。

在服务器120处,分组162a、162b和162c到达驱动器160a,并且传递到tcp/ip驱动器150s,然后传递到链路绑定服务140s。链路绑定服务140s在基于从客户端设备110发送的指示符获得所选择的路径144a的身份之后,继续丢弃通过所有其它路径到达的所有分组。例如,如果以太网路径180a被建立为所选择的路径144a,则链路绑定服务140s将丢弃所有分组162b和162c,从而仅允许分组162a传递到服务器组件132s。应当理解的是,服务器120经由所有路径180接收分组162,即使服务器120仅包括以太网连接,因为分组162源自不同的源并且在它们到服务器120的途中通过不同的路径180行进。

如图1的底部所示,旨在表示所有分组的分组164包括序列标识符164a和有效载荷164b。序列标识符164a对于每个分组是唯一的,但是具有相同的序列标识符164a的相同的分组的副本可以通过不同的路径180发送。在一个实例中,链路绑定服务140s基于序列标识符164a的匹配而丢弃到达的分组。例如,链路绑定服务140s维护所有最近接收的分组的序列标识符164a的列表,并且丢弃具有与列表上已有的序列标识符164a相同的序列标识符164a的冗余分组。链路绑定服务140s可以使用其它方法来区分分组。例如,分组中的特定端口标志或其他标志符可以标识分组在其上发送的路径180。在这种情况下,链路绑定服务140s可以丢弃其端口标志或其它标志符与所选择的路径144a的端口标志或其它标识符不匹配的分组。

当服务器120将应用数据162发送到客户端设备110时,链路绑定服务140s将应用数据传递到tcp/ip驱动器150s并且通过以太网驱动器160d传递到网络170。服务器120在指向所有路径180的分组中冗余地发送相同的应用数据,使得相同的分组经由所有路径180并行地到达客户端设备110。因此,服务器120经由所有路径180发送分组,即使服务器120可以仅使用以太网连接到网络170。

客户端设备110上的驱动器160a、160b和160c接收分组162并将它们传递到tcp/ip驱动器150c,tcp/ip驱动器150c将它们传递到链路绑定客户端140c。链路绑定客户端140c中的选择器142分配所选择的路径144a作为来自服务器组件132s的分组的源。选择器丢弃来自未被指定为所选择的路径144a的所有路径的分组162d,并且将来自所选择的路径144a的分组传递到客户端组件132c。在示例中,选择器142使用与上述结合服务器描述的相同的技术来识别通过所选择的路径144a到达的分组。

在示例中,传感器144连续地或重复地监视路径180上的网络速度。如果另一路径在例如速度、经济等方面比当前选择的路径144a执行得更好,那么链路绑定客户端140c可选择执行得更好的路径作为新选择的路径144a,并且将新选择的路径144a传送到链路绑定服务140s。在特定示例中,仅wi-fi和lte路径是可用的。然后,链路绑定服务140s可以默认选择wi-fi。如果wi-fi速度降到指定的阈值146以下,则链路绑定客户端140c可选择lte作为新选择的路径144a。在一些示例中,链路绑定客户端140c仅在当前wi-fi速度降到当前lte速度以下时切换到lte。如果wi-fi速度稍后恢复,那么链路接合客户端140c可以将所选择的路径144a重新分配给wi-fi。所选择的路径144a的分配是随之发生的,因为它确定哪些分组被传递到客户端组件132c以及哪些分组被丢弃。它还可以确定服务器120上的链路绑定服务140s将哪些分组传递到服务器组件132s以及它丢弃哪些分组。然而,在示例中,所选择的路径144a的分配不影响由客户端110或服务器120发送的传出数据,因为传输是在所有路径180上并行执行的,而与当前所选择的路径144a无关。

使用所描述的布置,客户端设备110监视路径180的速度,并且在任何给定时间选择所选择的路径144a。如果wi-fi突然变弱,例如,由于用户102已经移动到wi-fi死点,则操作无缝且透明地切换到lte(或某个其它路径)。当用户102回到活动wi-fi区域时,操作无缝且透明地切换回wi-fi。用户102从不需要知道切换已经发生,并且通常不会经历服务中断。

在一些示例中,客户端110可以通过临时关闭蜂窝数据连接来节省功率和/或成本。例如,如果传感器144测量的wi-fi信号强度和/或速度始终很高,则客户端110可以临时关闭lte连接并继续进行仅wi-fi通信。然而,传感器144的速度测试可以继续,并且如果wi-fi速度或信号强度开始下降,则客户端110可以重新建立lte连接。优选地,客户端110在wi-fi信号变得不可用之前经由lte重新连接,使得从wi-fi到lte的切换可以在wi-fi信号完全丢失之前无缝地进行。在一些示例中,gui118包括允许用户102关闭不期望的路径的控件。例如,如果用户102在具有强wi-fi信号的区域中并且不打算在会话过程期间移动,则用户102可以操作gui118以关闭lte,从而减少与lte处理相关联的功耗并且可能减少成本,这可以基于所使用的分钟数。

应当理解的是,所选择的路径144a的选择可以基于多种因素。这些可以包括:例如速度、带宽、往返时间、网络强度的可变性、干扰(例如,基于丢弃的分组的数量来测量)和成本。这些因素可以以任何合适的方式组合,诸如使用组合逻辑、加权和、模糊逻辑、机器学习、神经网络等。尽管在许多情况下,所选择的路径144a可以是最快路径,但这不是必需的。例如,如果使用起来便宜和/或具有其它优点,则仍足够快以提供良好用户体验的较慢路径可被选择作为所选择的路径144a。

尽管本公开的实施例的主要操作模式是保持多个网络路径同时有效,但是不要求这些实施例始终以这种方式工作。例如,如果发现诸如wi-fi之类的网络路径提供持续强的信号并且可自由使用,则可以选择wi-fi作为所选择的路径144a,并且可以关闭在其它网络路径上的操作。以类似的方式,需要高功耗的网络路径可以被临时关闭以节省客户端设备110的电池寿命。如果传感器144检测到所选择的路径144a的性能下降,则可以恢复已经关闭的任何路径180。

另外,尽管已经描述了单个选择的路径144a,但是一些实施例允许多个选择的路径,诸如一个用于下载到客户端设备110,而另一个用于下载到服务器120。因此,客户端设备110中的选择器142为客户端设备选择所选择的路径,而服务器120中的类似的选择器(未示出)为服务器120选择所选择的路径。允许所选择的路径对于客户端和服务器而言不同反映了上传与下载性能的差异,这对于许多类型的网络路径是共同的。在这些情况下,用作选择所选择的路径的基础的测量可以基于单向延迟而不是基于往返延迟。根据一些变型,分离的计算机或其他设施可以代表客户端设备110和/或服务器120来监视网络速度或带宽。

图2示出用于在客户端设备110上安装应用程序的示例布置。在此,服务器120存储可下载的应用分组210,其可以例如作为压缩档案被提供,并且其包括用于实现客户端组件132c、微型vpn客户端134c、和链路绑定客户端140c的代码。为了安装应用程序132,客户端设备110例如经由网站联系服务器120,并且通过网络170将应用分组210下载到客户端设备110。然后,客户端设备110打开应用分组210,解压缩任何压缩的内容,并且安装组件。由于所有三个组件132c、134c和140c都在单个分组210中一起提供,因此客户端设备110能够安装用于支持应用程序132经由单次下载的加密的、多路径操作的所有必要的组件。

图3示出用于基于质量属性在诸如wi-fi和lte的两个连接路径之间无缝且透明地切换的示例方法300,该质量属性本身可以基于速度、带宽、网络一致性、和/或成本;即上述用于选择所选择的路径144a的任何因素。尽管方法300集中在两个连接路径180上,但是方法300可以扩展到任何数量的这种路径。另外,尽管所描述的动作以特定顺序示出,但是顺序可以改变,并且一些动作可以同时执行。

在310处,例如作为用户102启动客户端组件132c的结果,在应用客户端132c和应用服务器132s之间建立通信会话。在示例中,通信会话经由在微型vpn客户端134c与微型vpn服务器134s之间建立的隧道134发生。经由每个连接路径180配置相应网络连接,并且对于所有路径180,客户端组件132c和服务器组件132s之间的所有通信通过隧道134。链路绑定客户端140c识别当前选择的路径144a并且继续将经由所选择的路径144a到达的数据(例如,分组)传递到客户端组件132c。因此,链路绑定客户端140c使用所选择的路径144a作为其用于所有传入应用数据162的唯一源,并且丢弃经由其它路径到达的数据162。在示例中,在传感器144进行任何网络测量之前,链路绑定服务140c默认wi-fi作为初始选择的路径144a,仅在没有检测到wi-fi信号时才切换到另一路径。

在320处,链路绑定客户端140c中的传感器144例如通过使用ping命令、带宽测量、和/或其它方法来测量所有路径180上的连接,并且产生针对每个连接路径180的质量属性(qa)。在一些示例中,质量属性仅基于相应路径的速度。在其他示例中,质量属性基于因素的任何组合,其可以包括例如速度、带宽、成本和/或一致性。

在330处,链路绑定客户端140c确定wi-fi路径(连接1)的质量属性是否已降到阈值146(thresh1)以下。例如,阈值可以是预定的或动态建立的。链路绑定客户端140c还可以确定wi-fi的质量属性是否小于lte(连接2)的质量属性。链路绑定客户端140c可以替代地或以任何组合的方式应用这些确定。

如果wi-fi的质量属性已经降到thresh1以下和/或lte的质量属性以下,则操作进行到340,于是链路绑定客户端140c进行处理经由lte到达的数据,丢弃经由wi-fi到达的任何数据。链路绑定客户端140c可将属性的此改变传送到链路绑定服务140s,链路绑定服务140s还可处理经由lte路径到达的数据,从而丢弃经由wi-fi到达的数据。然后,操作返回到320,在此重复质量属性的产生和确定。

在330处,如果针对wi-fi的质量属性没有降到thresh1以下和/或lte的质量属性以下,则操作改为进行到350,于是链路绑定客户端140c确定wi-fi路径(连接1)的质量属性是否超过第二阈值(thresh2,其优选地略高于thresh1)和/或超过lte的质量属性。如果不是,操作返回到320;否则,操作进行到360,于是链路绑定客户端140c进行到处理经由wi-fi到达的数据,丢弃经由lte到达的任何数据。如前所述,链路绑定客户端140c可将此改变传送到链路绑定服务器140s,其还可处理经由wi-fi路径到达的数据,从而丢弃经由lte到达的数据。然后,操作返回到320,在此重复上述动作。例如,可以预先确定或动态地建立thresh2。

只要应用程序132继续运行,操作就可以这种方式无限地进行。使thresh2略高于thresh1的基本原理是防止当质量属性接近thresh1时操作在源之间颤动。如果这无关紧要,那么thresh2可以简单地设置为thresh1(即,相同阈值可以用于两者)。应当理解的是,可以以任何适当的方式建立thresh1和thresh2。例如,可以基于用户活动和/或应用132的性质来动态地建立thresh1和thresh2。例如,如果应用132交换相对少的数据,则阈值可以被设置为较低的值,使得较低水平的网络性能不损害用户体验。相反,如果运行带宽更密集的应用,则阈值可以被设置为更高的值。

图4a至图4d示出各种屏幕截图118a-118d,其表示由应用程序132的客户端组件132s呈现的、并且在客户端设备110的显示器116上查看的gui118的一部分。可以将所描绘的gui的布局识别为普通智能手机应用的布局;然而,gui118a-118d不限于智能手机应用。例如,屏幕截图118a-118d可以显示在膝上型计算机或任何其他计算设备上。膝上型计算机可具有wifi连接,并且可经由蓝牙与具有lte连接的智能手机绑定(网络共享是许多智能手机的公知特征,它允许经由pan(个人局域网)来共享智能手机的数据计划)。

如图4a所示,gui118a显示用于当前活动的连接路径180的图标410。具体示出wi-fi和蓝牙pan的图标410,指示客户端设备110经由wi-fi和lte两者连接到因特网(lte连接经由蓝牙绑定的智能手机实现)。gui118显示速度指示器420,其示出针对例如由链路绑定客户端140c中的传感器144测量的两个路径(针对wi-fi的0.6mbps和针对lte的0.1mbps)的网络速度(以每秒兆比特为单位)。

图4b-4d示出另外的信息,包括图4b中针对恢复的分组的统计430(5.9mb,通过交换路径恢复的分组的数量)和保存的连接(2;通过交换路径避免丢失连接的次数)。图4c示出使用情况细分440(已经使用了来自每个路径的多少数据),以及图4d示出在延迟和损耗方面的连接质量450。在一些实施例中,图4a至图4d表示较大gui118的一部分。

图5示出这样的实施例的示例,其中整个gui118包括上述gui部分118a-118d。例如,用户102可以通过点击整个gui118上的箭头510来调用gui部分118a-118d。整个gui118为应用程序132提供用户界面,在该示例中,该应用程序132是工作区框架应用。工作区框架应用作为saas应用运行在例如web浏览器或其他容器中,并且使得用户102能够选择和运行其注册的子应用中的任意一个。所注册的子应用都在应用程序132的上下文内运行,使得它们都经由微型vpn客户端134c和链路绑定客户端140c进行通信。因此,所描述的布置使用多个路径180唯一地支持saas应用在微型vpn上的操作,即使在存在死点的情况下,多个路径180被无缝地切换以维持质量连接。

图6至图8示出可以结合环境100执行的示例方法600、700和800。方法600可例如由结合图1描述的软件构造执行,该软件构造驻留在客户端设备110的存储器130c中并由处理器组114c运行。方法700可以例如由驻留在服务器120的存储器130s中并且由处理器组114s运行的软件构造来执行。方法800可以由驻留在客户端设备110和服务器120两者中的软件构造来执行。方法600、700和800的各种动作可以以任何合适的方式来排序。因此,可以构建实施例,其中以与所示顺序不同的顺序执行动作,这可以包括同时执行一些动作。

在图6中,方法600可以由客户端设备110执行。在动作610处,客户端设备110监视由被配置为在客户端设备110和服务器120之间传送针对单个应用132的信息的加密信道134使用的多个网络路径180。

在620处,客户端设备110经由多个网络路径180中的每个从服务器120接收单个应用132的数据162。从多个网络路径中的每个网络路径接收的数据162是相同的数据。

在630处,客户端设备110选择多个网络路径180中的第一网络路径144a作为用于客户端设备110上的客户端组件132c的数据162的源。例如,链路绑定客户端140c中的选择器142传递通过所选择的路径144a到达的分组并且丢弃通过其它路径到达的分组。

在640处,客户端设备110至少部分地基于对多个网络路径的监视来将用于客户端组件132c的数据的源从第一网络路径调整到多个网络路径180中的第二网络路径,以防止由第一网络路径的网络连续性的降低所引起的数据接收的延迟。

现在转到图7,方法700可以由服务器120执行。在710处,服务器120通过在服务器120和客户端设备110之间提供的加密信道134从客户端设备100接收用于单个应用132的应用数据。应用数据162经由多个网络路径180并行地接收,其中多个网络路径都传送相同的应用数据。

在720处,服务器分配多个网络路径180中的第一网络路径作为用于在服务器120上运行的服务器组件132s的应用数据162的源。

在730处,服务器120将用于服务器组件132s的应用数据162的源从第一网络路径调整到多个网络路径中的第二网络路径。该调整至少部分地基于从客户端设备110接收的指示符,并且用于防止由第一网络路径的网络连续性的降低引起的数据接收的延迟。

现在转到图8,方法800可以由客户端设备110和服务器120两者执行。在810处,在客户端设备110和服务器120之间建立加密信道134。加密信道134被配置为传送用于单个应用132的加密通信。加密信道134可以在客户端设备110、服务器120的指导下建立,或者基于客户端设备110和服务器120之间的协调来建立。

在820处,监视由客户端设备110和服务器120之间的加密信道134使用的多个网络路径180。例如,客户端110、服务器120和/或一些分离的计算机或设施测量网络速度、带宽、和/或与多个网络路径180中的每个有关的其它因素。

在830处,服务器120经由多个网络路径180中的每个,通过加密信道134向客户端设备110发送单个应用132的应用数据162的集合。多个网络路径180中的每个传送相同的应用数据162的集合。当客户端设备110是发送数据的设备时,客户端设备110经由多个网络路径180中的每个通过加密信道134向服务器120发送单个应用132的应用数据162的集合,其中多个网络路径180中的每个传送相同的应用数据162的集合。

在840处,客户端设备110选择多个网络路径180中的第一网络路径作为用于在客户端设备110上运行的客户端组件132c的应用数据162的源。当服务器120是接收数据的服务器时,服务器120选择多个网络路径180中的第一网络路径作为在服务器120上运行的服务器组件132s的应用数据162的源。

在840处,客户端设备110至少部分地基于对多个网络路径的监视来将数据的源从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一路径的网络连续性的降低引起的在客户端设备与服务器之间传送数据的延迟。当服务器120正在接收数据时,服务器120至少部分地基于对多个网络路径的监视来将数据的源从多个网络路径中的第一网络路径调整到第二网络路径,以防止由第一路径的网络连续性的降低引起的在服务器与客户端设备之间传送数据的延迟。

现在参考图9,其中可实现本公开的各方面的非限制性网络环境901包括:一个或多个客户端机器902a-902n、一个或多个远程机器906a-906n、一个或多个网络904、904’以及安装在计算环境901内的一个或多个电器908。客户端机器902a-902n经由网络904、904’与远程机器906a-906n通信。

在一些实施例中,客户端机器902a-902n(可类似于客户端设备110)经由中介电器908与远程机器906a-906n(可类似于服务器120)通信。所示的电器908位于网络904、904’之间,并且也可以称为网络接口或网关。在一些实施例中,电器908可以作为应用递送控制器(adc)操作,以向客户端提供对在数据中心、云中部署的或者作为软件即服务(saas)跨一系列客户端设备递送的业务应用和其他数据的访问,和/或提供诸如负载平衡等的其他功能。在一些实施例中,可以使用多个电器908,并且可以将电器908部署为网络904和/或904’的一部分。

客户端机器902a-902n通常可以被称为客户端机器902、本地机器902、客户端902、客户端节点902、客户端计算机902、客户端设备902、计算设备902、端点902、或端点节点902。远程机器906a-906n通常可被称为服务器906或服务器群906。在一些实施例中,客户端设备902可以具有充当寻求访问由服务器906提供的资源的客户端节点和充当为其他客户端设备902a-902n提供对托管资源的访问的服务器906两者的能力。网络904、904’通常可以被称为网络904。网络904可以被配置为有线和无线网络的任何组合。

服务器906可以是任何服务器类型,例如:文件服务器;应用服务器;网络服务器;代理服务器;设备;网络设备;网关;应用网关;网关服务器;虚拟化服务器;部署服务器;安全套接字层虚拟专用网络(sslvpn)服务器;防火墙;网络服务器;执行活动目录的服务器;云服务器;或者执行提供防火墙功能、应用功能、或负载平衡功能的应用加速程序的服务器。

服务器906可以执行、操作或以其他方式提供应用,该应用可以是以下中的任意一个:软件;程序;可执行指令;虚拟机;管理程序;web浏览器;基于web的客户端;客户端-服务器应用;瘦客户端计算客户端;activex控件;java小程序;与因特网协议语音(voip)通信相关的软件,如软ip电话;用于流式传输视频和/或音频的应用;用于促进实时数据通信的应用;http客户端;ftp客户端;oscar客户端;telnet客户端;或任何其它可执行指令集。

在一些实施例中,服务器906可执行远程呈现服务程序或使用瘦客户端或远程显示协议的其它程序,以捕捉由在服务器906上执行的应用生成的显示输出,并将应用显示输出发送到客户端设备902。

在其他实施例中,服务器906可以执行向客户端设备902的用户提供对计算环境的访问的虚拟机。客户端设备902可以是虚拟机。虚拟机可由例如管理程序、虚拟机管理器(vmm)、或服务器906内的任何其它硬件虚拟化技术来管理。

在一些实施例中,网络904可以是:局域网(lan);城域网(man);广域网(wan);主公共网络904;以及主专用网络904。另外的实施例可以包括使用各种协议在移动设备之间通信的移动电话网络的网络904。对于无线局域网(wlan)内的短程通信,协议可以包括802.11、蓝牙、和近场通信(nfc)。

图10描绘了用于实践客户端设备902、设备908和/或服务器906的实施例的计算设备900的框图。计算设备900包括一个或多个处理器903、易失性存储器922(例如,随机存取存储器(ram))、非易失性存储器928、用户接口(ui)923、一个或多个通信接口918、以及通信总线950。

非易失性存储器928可以包括:一个或多个硬盘驱动器(hdd)或其它磁或光存储介质;一个或多个固态驱动器(ssd),例如闪存驱动器或其他固态存储介质;一个或多个混合磁性和固态驱动器;和/或一个或多个虚拟存储卷,例如云存储,或这样的物理存储卷和虚拟存储卷或其阵列的组合。

用户接口923可以包括图形用户接口(gui)924(例如,触摸屏、显示器等)和一个或多个输入/输出(i/o)设备926(例如,鼠标、键盘、麦克风、一个或多个扬声器、一个或多个相机、一个或多个生物计量扫描仪、一个或多个环境传感器、以及一个或多个加速度计等)。

非易失性存储器928存储操作系统915、一个或多个应用916、和数据917,使得例如操作系统915和/或应用916的计算机指令由处理器903在易失性存储器922之外执行。在一些实施例中,易失性存储器922可以包括一个或多个类型的ram和/或可以提供比主存储器更快的响应时间的高速缓冲存储器。数据可以使用gui924的输入设备输入或从i/o设备926接收。计算机900的各种元件可以经由通信总线950通信。

所示的计算设备900仅被示为示例客户端设备或服务器,并且可以由具有任何类型的机器或机器的集合的任何计算或处理环境来实现,该机器或机器的集合可以具有能够如本文所述进行操作的合适的硬件和/或软件。

处理器903可以由一个或多个可编程处理器实现以执行一个或多个可执行指令(例如,计算机程序)来执行系统的功能。如本文所使用的,术语“处理器”描述执行功能、操作或操作序列的电路。功能、操作或操作序列可以被硬编码到电路中,或者通过保存在存储器设备中并由电路执行的指令来软编码。处理器可以使用数字值和/或使用模拟信号来执行功能、操作或操作序列。

在一些实施例中,处理器可以在一个或多个专用集成电路(asic)、微处理器、数字信号处理器(dsp)、图形处理单元(gpu)、微控制器、现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、多核处理器或具有相关联的存储器的通用计算机中实现。

处理器903可以是模拟、数字或混合信号。在一些实施例中,处理器903可以是一个或多个物理处理器,或者一个或多个虚拟(例如,远程定位或云)处理器。包括多个处理器核和/或多个处理器的处理器可以提供用于并行、同时执行指令的功能,或者用于对多于一个数据片并行、同时执行一个指令的功能。

通信接口918可包括一个或多个接口,以使得计算设备100能够通过包括蜂窝连接的各种有线和/或无线连接来访问诸如局域网(lan)、广域网(wan)、个人区域网(pan)或因特网的计算机网络。

在所描述的实施例中,计算设备900可以代表客户端设备的用户执行应用。例如,计算设备900可以执行由管理程序管理的一个或多个虚拟机。每个虚拟机可以提供执行会话,在该执行会话中,应用代表用户或客户端设备执行,例如托管桌面会话。计算设备900还可执行终端服务会话以提供托管桌面环境。计算设备900可以提供对远程计算环境的访问,该远程计算环境包括一个或多个应用、一个或多个桌面应用、以及一个或多个应用可以在其中执行的一个或多个桌面会话。

已经描述了一种用于管理网络170上的通信的改进技术。该技术同时保持多个网络路径180,通过所有网络路径180冗余地交换相同的数据162,并且允许接收器(例如,选择器142)选择网络路径180中的一个作为其数据的源。在第一当前选择的网络路径(例如,wi-fi)变弱的情况下,接收器142自动且无缝地将其数据的源切换到第二网络路径(例如,lte),同时第一网络路径保持可操作。假定第二(lte)网络路径已经开启并且已经在传送数据,则转换几乎是瞬时的。用户体验被极大地改善,因为即使在具有不一致的网络的环境中运行的高度交互的应用也可以保持完全的功能而一般没有停机时间。由此增强了可靠性和用户体验。

以下段落描述了根据本公开的方法、系统和计算机可读介质的示例实施方式。

根据一些示例,一种方法包括由客户端设备监视在客户端设备和服务器之间传送数据的多个网络路径,该数据与服务器上的单个应用相关联。该方法还包括由客户端设备经由多个网络路径中的每个网络路径从服务器接收数据,从多个网络路径中的每个网络路径接收的数据是相同的。该方法还包括由客户端设备选择多个网络路径中的第一网络路径,从该第一网络路径接收数据以使得能够将服务器上的单个应用递送到客户端设备,以及由客户端设备至少部分地基于对多个网络路径的监视来将所选择的网络路径从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一网络路径的网络连续性的降低引起的从服务器接收数据的延迟。

一种方法可以如上所述地执行,以及还可以涉及在第一网络路径和第二网络路径都是可操作的并且正在传送数据时,执行将所选择的网络路径从第一网络路径调整到第二网络路径。

另一种方法可以根据以上任一段落所述地执行,并且还可以涉及经由第一网络路径和第二网络路径两者向服务器发送应用数据的集合,其中第一网络路径和第二网络路径并行地传送相同的应用数据的集合。

一种方法可以根据以上任一段落所述地执行,并且可以还包括在将所选择的网络路径从第一网络路径调整到第二网络路径之后,丢弃经由第一网络路径到达的单个应用的数据。

一种方法可以根据以上任一段落所述地执行,其中单个应用的数据以分组的形式从服务器到达,每个分组具有序列标识符,并且丢弃经由第一网络路径到达的单个应用的数据包括:基于经由所第一网络路径到达的分组的序列标识符与经由第二网络路径到达的分组的序列标识符匹配,将经由第一网络路径到达的分组标识为冗余。

一种方法可以根据以上任一段落所述地执行,其中第一网络路径是wi-fi网络路径,以及第二网络路径是蜂窝网络路径。根据一些变型,蜂窝网络路径是lte(长期演进)网络路径。

一种方法可以根据以上任一段落所述地执行,并且可以还包括测量第一网络路径的速度,其中将所选择的网络路径从第一网络路径调整到第二网络路径至少部分地基于第一网络路径的速度降到阈值以下。

一种方法可以根据以上任一段落所述地执行,并且还可以包括测量第二网络路径的速度,其中将所选择的网络路径从第一网络路径调整到第二网络路径是基于第二网络路径的速度超过第一网络路径的速度。

一种方法可以根据以上任一段落所述地执行,其中测量第一网络路径的速度包括测量客户端设备与服务器之间经由第一网络路径的往返传输时间。

一种方法可以根据以上任一段落所述地执行,并且还可以包括从服务器下载应用分组,该应用分组包括(i)应用的客户端组件、(ii)微型vpn客户端组件、和(iii)链路绑定客户端组件。微型vpn客户端组件被配置为在应用的客户端组件与服务器上的应用之间建立加密信道。该链路绑定客户端组件被配置为:(i)通过多个网络路径并行地发送来自应用的客户端组件的数据,以及(ii)基于监视来调整针对应用的客户端组件的所选择的网络路径。

一种方法可以根据以上任一段落所述地执行,其中使用虚拟专用网络(vpn)来实现加密信道,该vpn传送单个应用的信息,而不传送在客户端设备上运行的其他应用的信息。

根据一些示例,一种客户端设备包括控制电路,该控制电路具有耦接到存储器的处理器的集合。该控制电路被配置为:(a)监视在客户端设备与服务器之间传送数据的多个网络路径,该数据与服务器上的单个应用相关联,(b)经由多个网络路径中的每个网络路径从服务器接收数据,从多个网络路径中的每个网络路径接收的数据是相同的,(c)选择多个网络路径中的第一网络路径,从第一网络路径接收数据以使得能够将服务器上的单个应用递送到客户端设备;以及(d)至少部分地基于对多个网络路径的监视来将所选择的网络路径从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一网络路径的网络连续性的降低引起的从服务器接收数据的延迟。

一种客户端设备可以根据以上任一段落所述地提供,其中控制电路还被配置为:在第一网络路径和第二网络路径两者都可操作并且正在传送数据时,将所选择的网络路径从第一网络路径调整到第二网络路径。

一种客户端设备可以根据以上任一段落所述地提供,其中控制电路还被配置为:经由第一网络路径和第二网络路径两者将应用数据的集合发送到服务器,第一网络路径和第二网络路径并行地传送相同的应用数据的集合。

一种客户端设备可以根据以上任一段落所述地提供,其中控制电路还被配置为:在将所选择的网络路径从第一网络路径调整到第二网络路径之后,丢弃经由第一网络路径到达的单个应用的数据。

一种客户端设备可以根据以上任一段落所述地提供,其中单个应用的数据以分组的形式到达,每个分组具有序列标识符,以及控制电路还被配置为:通过基于经由第一网络路径到达的分组的序列标识符与经由第二网络路径到达的分组的序列标识符匹配,将经由第一网络路径到达的分组标识为冗余,来丢弃经由第一网络路径到达的单个应用的数据。

一种客户端设备可以根据以上任一段落所述地提供,其中控制电路还被配置为:测量第一网络路径的速度,以及至少部分地基于第一网络路径的速度低于阈值,将所选择的网络路径从第一网络路径调整到第二网络路径。

一种客户端设备可以根据以上任一段落所述地提供,其中控制电路还被配置为:测量第二网络路径的速度,以及基于第二网络路径的速度超过第一网络路径的速度,将所选择的网络路径从第一网络路径调整到第二网络路径。

一种客户端设备可以根据以上任一段落所述地提供,其中被配置为测量第一网络路径的速度的控制电路还被配置为:测量客户端设备与服务器之间经由第一网络路径的往返传输时间。

一种客户端设备可以根据以上任一段落所述地提供,其中控制电路还被配置为:从服务器下载应用分组,应用分组包括(i)应用的客户端组件、(ii)微型vpn客户端组件、和(iii)链路绑定客户端组件,微型vpn客户端组件被配置为在应用的客户端组件和服务器上的应用之间建立加密信道,链路绑定客户端组件被配置为:(i)通过多个网络路径并行地发送来自应用的客户端组件的数据,以及(ii)基于监视来调整针对应用的客户端组件的所选择的网络路径。

在一些示例中,计算机程序产品包括具有指令的一组非暂时性计算机可读介质,该指令在被客户端设备的控制电路执行时使得客户端设备执行一种方法,该方法包括:(a)监视在客户端设备与服务器之间传送数据的多个网络路径,该数据与服务器上的单个应用相关联,(b)经由多个网络路径中的每个网络路径从服务器接收数据,从多个网络路径中的每个网络路径接收的数据是相同的,(c)选择多个网络路径中的第一网络路径,从第一网络路径接收数据以使得能够将服务器上的单个应用递送到客户端设备,以及(d)至少部分地基于多个网络路径的监视来将所选择的网络路径从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一网络路径的网络连续性的降低引起的从服务器接收数据的延迟。

在一些示例中,一种服务器方法包括:(a)由服务器从客户端设备接收用于单个应用的应用数据,该应用数据是经由多个网络路径并行接收的,多个网络路径都传送相同的应用数据,(b)将多个网络路径中的第一网络路径分配为用于在服务器上运行的服务器组件的应用数据的源,以及(c)至少部分地基于从客户端设备接收的指示符,将用于服务器组件的应用数据的源从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一网络路径的网络连续性的降低引起的数据接收的延迟。

一种服务器方法可以根据以上任一段落所述地执行,并且还可以包括在第一网络路径和第二网络路径都可操作时将应用数据的源从第一网络路径调整到第二网络路径,并且传送应用数据。

一种服务器方法可以根据以上任一段落所述地执行,并且还可以包括经由第一网络路径和第二网络路径两者向客户端设备发送应用数据的集合,第一网络路径和第二网络路径并行地传送相同的应用数据的集合。

一种服务器方法可以根据以上任一段落所述地执行,并且还可以包括在将应用数据的源从第一网络路径调整到第二网络路径之后,丢弃经由第一网络路径到达的应用数据。

一种服务器方法可以根据以上任一段落所述地执行,其中来自客户端设备的应用数据以分组的形式到达,每个分组具有序列标识符,并且其中丢弃经由第一网络路径到达的应用数据包括:基于经由第一网络路径到达的分组的序列标识符与经由第二网络路径到达的分组的序列标识符匹配,将经由第一网络路径到达的分组标识为冗余。

一种服务器方法可以根据以上任一段落所述地执行,其中第一网络路径是wi-fi网络路径,并且第二网络路径是蜂窝网络路径。根据一些变型,蜂窝网络路径是lte(长期演进)网络路径。

一种服务器方法可以根据以上任一段落所述地执行,并且还可以包括至少部分地基于第一网络路径的速度降到阈值以下来将应用数据的源从第一网络路径调整到第二网络路径。

一种服务器方法可以根据以上任一段落所述地执行,并且还可以包括基于第二网络路径的速度超过第一网络路径的速度来将应用数据的源从第一网络路径调整到第二网络路径。

一种服务器方法可以根据以上任一段落所述地执行,并且还可以包括基于从客户端设备接收到的将第二网络路径标识为当前选择的网络路径的指示符来将应用数据的源从第一网络路径调整到第二网络路径。

一种服务器方法可以根据以上任一段落所述地执行,并且还可以包括向客户端设备发送应用分组,应用分组包括:(i)单个应用的客户端组件、(ii)微型vpn客户端组件、和(iii)链路绑定客户端组件,微型vpn客户端组件被配置为在服务器上的单个应用与应用的客户端组件之间建立加密信道,链路绑定客户端组件被配置为(i)通过多个网络路径并行地发送来自单个应用的客户端组件的数据,以及(ii)调整用于单个应用的客户端组件的应用数据的源。

一种服务器方法可以根据以上任一段落所述地执行,其中使用虚拟专用网络(vpn)来实现加密信道,该vpn为单个应用而不是其它应用传送信息。

在一些示例中,服务器包括具有耦接到存储器的处理器的集合的服务器控制电路。该服务器控制电路被配置为:(a)从客户端设备接收用于单个应用的应用数据,该应用数据是经由多个网络路径并行接收的,多个网络路径全部传送相同的应用数据,(b)将多个网络路径中的第一网络路径分配为用于在服务器上运行的服务器组件的应用数据的源,以及(c)至少部分地基于从客户端设备接收的指示符,将用于服务器组件的应用数据的源从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一网络路径的网络连续性的降低引起的数据接收的延迟。

一种服务器可以如上段落所述地提供,其中服务器控制电路被配置为在第一网络路径和第二网络路径都可操作并且传送应用数据时,将应用数据的源从第一网络路径调整到第二网络路径。

一种服务器可以根据以上任一段落所述地提供,其中服务器控制电路还被配置为经由第一网络路径和第二网络路径两者向客户端设备发送应用数据的集合,第一网络路径和第二网络路径并行地传送相同的应用数据的集合。

一种服务器可以根据以上任一段落所述地提供,其中服务器控制电路还被配置为在将应用数据的源从第一网络路径调整到第二网络路径之后,丢弃经由第一网络路径到达的应用数据。

一种服务器可以根据以上任一段落所述地提供,其中来自客户端设备的应用数据以分组的形式到达,每个分组具有序列标识符,并且被配置为丢弃经由第一网络路径到达的应用数据的服务器控制电路还被配置为:基于经由第一网络路径到达的分组的序列标识符与经由第二网络路径到达的分组的序列标识符匹配,将经由第一网络路径到达的分组标识为冗余。

一种服务器可以根据以上任一段落所述地提供,其中服务器控制电路被配置为:至少部分地基于第一网络路径的速度降到阈值以下来将应用数据的源从第一网络路径调整到第二网络路径。

一种服务器可以根据以上任一段落所述地提供,其中服务器控制电路还被配置为:基于第二网络路径的速度超过第一网络路径的速度,将数据的源从第一网络路径调整到第二网络路径。

一种服务器可以根据以上任一段落所述地提供,其中服务器控制电路还被配置为:基于从客户端设备接收到的将第二网络路径标识为当前选择的网络路径的指示符,将应用数据的源从第一网络路径调整到第二网络路径。

一种服务器可以根据以上任一段落所述地提供,其中服务器控制电路还被配置为向客户端设备发送应用分组,应用分组包括(i)单个应用的客户端组件、(ii)微型vpn客户端组件、和(iii)链路绑定客户端组件,微型vpn客户端组件被配置为在服务器上的单个应用与应用的客户端组件之间建立加密信道,并且链路绑定客户端组件被配置为:(i)通过多个网络路径并行地发送来自单个应用的客户端组件的数据,以及(ii)调整用于单个应用的客户端组件的应用数据的源。

根据一些示例,一种计算机程序产品包括具有指令的非暂时性计算机可读介质的集合,当由服务器的服务器控制电路执行该指令时,该指令使得服务器执行一种方法,该方法包括:(a)从客户端设备接收用于单个应用的应用数据,该应用数据经由多个网络路径并行地接收,多个网络路径全部传送相同的应用数据,(b)将多个网络路径中的第一网络路径分配为用于在服务器上运行的服务器组件的应用数据的源,以及(c)至少部分地基于从客户端设备接收的指示符,将用于服务器组件的应用数据的源从第一网络路径调整到多个网络路径中的第二网络路径,以防止由第一网络路径的网络连续性的降低引起的数据接收延迟

在一些示例中,一种系统方法包括:(a)在客户端设备和服务器之间建立加密信道,该加密信道被配置为传送针对单个应用的加密通信,(b)监视由客户端设备和服务器之间的加密信道使用的多个网络路径,(c)由服务器经由多个网络路径中的每个网络路径通过加密信道向客户端设备发送单个应用的应用数据的集合,多个网络路径中的每个网络路径传送相同的应用数据的集合,(d)由客户端设备选择多个网络路径中的第一网络路径作为用于在客户端设备上运行的客户端组件的应用数据的源,以及(e)由客户端设备至少部分地基于多个网络路径的监视将数据的源从多个网络路径中的第一网络路径调整到第二网络路径,以防止由第一路径的网络连续性的降低引起的在客户端设备和服务器之间传送数据的延迟。

已经描述了某些实施例,可以进行许多替代实施例或变化。例如,尽管所描述的实施例提供了单个客户端110和单个服务器120之间的通信,但是其实施例不限于两个机器。例如,多个客户端可以在协作会话中同时运行应用程序132,经由单个服务器120或直接彼此通信,其中每个客户端充当到其它客户端中的每个的服务器。在这种布置中,每个参与的机器可以与其它机器类似地配置。例如,每个参与都机器或其任何子集可连接到各种路径170,并可经由这些路径中的任意一个接收和传送应用数据。在不限制前述内容的一般性的情况下,所公开的技术的特别有利的使用是在web会议的领域中。例如,用户可以在智能手机上开始连接到家中wi-fi的网络会议,使用驱动器上的lte来不间断地继续会议,然后一旦用户已经到达工作地,就在办公室再次使用wifi来继续会议。

尽管已经参照本公开的特定实施例示出和描述了特征,但是这些特征可以被包括并且由此被包括在所公开的实施例及其变型中的任意一个中。因此,应当理解的是,结合任何实施例公开的特征包括在任何其它实施例中。

另外,其改进或部分可以被实现为计算机程序产品,包括一个或多个非暂时性计算机可读存储介质,诸如磁盘、磁带、光盘、dvd、光盘、闪存驱动器、固态驱动器、sd(安全数字)芯片或设备、专用集成电路(asic)、现场可编程门阵列(fpga)和/或类似物。可以使用任何数量的计算机可读介质。该介质可以用指令编码,当在一个或多个计算机或其他处理器上执行该指令时,执行本文描述的一个或多个过程。这种介质可以被认为是制造品或机器,并且可以从一个机器运输到另一个机器。

如贯穿本文所使用的,词语“包括”、“包含”、“含有”和“具有”旨在以开放式方式阐述特定项目、步骤、元素或某物的各方面。此外,如本文所使用的,除非作出相反的具体陈述,否则词语“集合”意味着某物中的一个或多个。这是无论短语“的集合”后面是单数还是复数对象,并且无论它是与单数还是复数动词结合的情况。另外,尽管在本文中可以使用诸如“第一”、“第二”、“第三”等序数表达式作为形容词,但是这样的序数表达式用于识别目的,并且除非特别指出,否则不旨在暗示任何排序或序列。因此,例如,“第二”事件可以在“第一事件”之前或之后发生,或者即使没有第一事件发生。此外,在此对特定元件、特征或动作作为“第一”这样的元件、特征或动作的识别不应被解释为要求也必须存在“第二”或其他这样的元件、特征或动作。相反,“第一”项可以是唯一的一个。尽管本文公开了特定实施例,但是应当理解的是,这些实施例仅以示例的方式提供,而不应被解释为限制性的。

因此,本领域技术人员将理解,在不背离所附权利要求的范围的情况下,可以对本文公开的实施例进行形式和细节上的各种改变。

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