用于虚拟软交换的方法和装置制造方法
【专利摘要】本发明涉及用于虚拟软交换的方法和装置。在一些实施例中,一种非瞬态处理器可读介质存储用于使处理器执行以下操作的代码:在隧道服务器接收寻址到通信设备的数据单元;以及定义数据单元的第一实例和数据单元的第二实例。经由在至少隧道服务器和与第一网络关联的第一基站之间定义的第一隧道,向通信设备发送数据单元的第一实例。经由在至少隧道服务器和与第二网络关联的第二基站之间定义的第二隧道,向通信设备发送数据单元的第二实例。当在数据单元的第二实例之前接收数据单元的第一实例时,通信设备丢弃数据单元的第二实例。
【专利说明】用于虚拟软交换的方法和装置
【技术领域】
[0001]这里描述的一些实施例主要地涉及用于在无线设备中实现从一个无线接口到另一无线接口的虚拟软交换的方法和装置,这些方法和装置可以允许具有高服务质量并且具有最少的连通中断或者无中断的高效操作,例如包括语音应用和视频应用的应用。
【背景技术】
[0002]无线设备、比如便携手持机具有连接到具有不同2层(L2)协议的多个网络接口的能力。这样的无线设备可以例如具有电气和电子工程师协会(IEEE)802.11无线接口和第三代移动通信(3G)或者第四代移动电信(4G)蜂窝接口。用于这样的无线设备的鲁棒无线通信系统需要针对语音应用和视频应用二者维持高服务质量(QoS)而连通中断最少或者无中断。此外,通常使用网际协议(IP)地址保持来实施无线语音应用和视频应用,从而网络特征、比如路由、基本防火墙、流量管理等可以恰当工作。
[0003]为了实现具有高QoS的鲁棒无线通信系统,在维持最少QoS水平和最少连通中断之时应当通常执行在无线设备内从一个无线接口到另一无线接口的交换。如今在物理层在蜂窝应用中运用称为“软交换的”一些已知交换技术,其中组合来自多个基站的信号,以创建可以恢复的更鲁棒信号。此外,可以将存在的从蜂窝接口到无线保真(WiFi)接口的其它已知交换利记sbobet网址为“硬交换”技术。硬交换技术涉及到在给定的时间点将设备从正在连接到蜂窝网络切换到正在连接到WiFi网络。
[0004]因而存在对用于实现涉及到多个不同网络连接的虚拟软交换技术的方法和装置的需要。另外,存在对组合来自多个网络的接收,以保证在网络之间的交换期间、在源设备与目的地设备之间的更鲁棒“虚拟链路”的需要。这样的方法和装置可以帮助保证其中在网络之间的转变期间使用两个网络的无损交换。
【发明内容】
[0005]在一些实施例中,一种非瞬态处理器可读介质存储用于使处理器执行以下操作的代码:在隧道服务器接收寻址到通信设备的数据单元;以及定义数据单元的第一实例和数据单元的第二实例。经由在至少隧道服务器和与第一网络关联的第一基站之间定义的第一隧道向通信设备发送数据单元的第一实例。经由在至少隧道服务器和与第二网络关联的第二基站之间定义的第二隧道向通信设备发送数据单元的第二实例。当在数据单元的第二实例之前接收数据单元的第一实例时,通信设备丢弃数据单元的第二实例。
【专利附图】
【附图说明】
[0006]图1是根据一个实施例的虚拟软交换系统的示意图示。
[0007]图2是根据一个实施例的通信设备的系统框图。
[0008]图3是根据一个实施例的隧道服务器的系统框图。
[0009]图4是根据一个实施例的封装的数据单元的框图。[0010]图5是根据图示根据一个实施例的使用虚拟软交换以从源设备向目的地设备传送数据的方法的流程图。
【具体实施方式】
[0011 ] 在一些实施例中,一种非瞬态处理器可读介质包括用于使处理器在隧道服务器接收寻址到通信设备的数据单元并且基于数据单元定义数据单元的第一实例或者副本和数据单元的第二实例或者副本的代码。经由在至少隧道服务器和与第一网络关联并且操作地耦合到通信设备的第一基站之间定义的第一隧道,向通信设备发送数据单元的第一实例或者副本。经由在至少隧道服务器和与第二网络关联并且操作地耦合到通信设备的第二基站之间定义的第二隧道向通信设备发送数据单元的第二实例或者副本。当在数据单元的第二实例之前接收数据单元的第一实例时,通信设备丢弃数据单元的第二实例。类似地,通信设备当在数据单元的第一实例之前接收数据单元的第二实例时丢弃数据单元的第一实例。
[0012]在一些实施例中,隧道服务器可以被配置用于接收寻址到通信设备的数据单元。隧道服务器可以例如是虚拟专用网络(VPN)隧道服务器、通用分组无线电服务隧道传输协议(GTP)隧道服务器、网际协议安全(IPsec)隧道服务器、通用路由封装(GRE)隧道服务器、因特网协议中的因特网协议(IP中的IP)隧道服务器、无线电接入点控制和设置协议(CAPffAP)隧道服务器,等等。通信设备可以是服务器或者主机机器、如比例如web服务器、应用服务器、代理服务器、telnet服务器、文件传送协议(FTP)服务器或者个人计算设备、比如台式计算机、膝上型计算机、个人数字助理(PDA)、标准移动电话、写字板个人计算机(PC)等。隧道服务器可以被配置用于基于数据单元定义数据单元的第一实例或者副本和数据单元的第二实例或者副本。在一些实施例中,隧道服务器可以被配置用于经由第一隧道向通信设备发送数据单元的第一副本,该第一隧道是在隧道服务器与通信设备之间定义的并且包括、穿越和/或穿过具有第一网络类型的第一网络的至少一部分网络。隧道可以例如是虚拟专用网络(VPN)隧道、通用分组无线电服务隧道传输协议(GTP)隧道、网际协议安全(IPsec)隧道、因特网协议中的因特网协议(IP中的IP)隧道、无线电接入点控制和设置协议(CAPWAP)隧道,等等。在一些实施例中,隧道服务器可以被配置用于经由第二隧道向通信设备发送数据单元的第二副本,该第二隧道是在隧道服务器与通信设备之间定义的并且包括、穿越和/或穿过具有可以与第一网络类型不同的第二网络类型的第二网络的至少一部分。
[0013]在一些实施例中,隧道服务器可以被配置用于在第一时间接收具有第一数据类型(例如语音数据、文字数据、视频数据、音频数据等)的第一数据单元。第一数据单元寻址到通信设备。隧道服务器可以基于第一数据单元定义第一数据单元的第一实例或者副本和第一数据单元的第二实例或者副本。可以经由在隧道服务器与通信设备之间定义的并且具有第一网络内的至少一部分的第一隧道,向通信设备发送第一数据单元的第一实例或者副本。可以经由在隧道服务器与通信设备之间定义的并且具有第二网络内的至少一部分的第二隧道,向通信设备发送第一数据单元的第二实例或者副本。在一些实施例中,隧道服务器可以被配置用于在第二时间接收具有第一数据类型(例如语音数据、文字数据、视频数据、音频数据等)的第二数据单元。第二数据单元寻址到通信设备。隧道服务器可以基于第二数据单元定义第二数据单元的第一实例或者副本和第二数据单元的第二实例或者副本。可以经由在隧道服务器与通信设备之间定义的并且具有第一网络内的至少一部分的第一隧道,向通信设备发送第二数据单元的第一实例或者副本。可以经由在隧道服务器与通信设备之间定义的并且具有第二网络内的至少一部分的第二隧道,向通信设备发送第二数据单元的第二实例或者副本。在这样的实施例中,第二时间在第一时间之后,并且第二网络不同于第一网络。在这样的实施例中,隧道服务器可以向通信设备发送不同类型的数据。类似地,在一些实施例中,隧道服务器可以经由第一隧道和第二隧道从通信设备接收不同类型的数据。
[0014]如在本说明书中使用的那样,除非上下文另有明示,单数形式“一个/ 一种”和“该”包括复数引用。因此例如措词“一个网络”旨在于意味着单个网络或者网络组合。
[0015]图1是根据一个实施例的虚拟软交换系统100的图示。在这一实施例中,在隧道模式中实施虚拟软交换系统100。在隧道模式中,在网络中的通信设备与隧道服务器之间建立隧道。在这样的模式中,虚拟软交换过程出现于通信设备与隧道服务器之间。在隧道传输模式中,通信设备可以通过两个不同接口发送和/或接收具体数据单元的两个用隧道传输的副本。只要通信设备执行重复和隧道传输并且存在隧道服务器,发送数据单元的多个副本这样的模式就可以在现有WiFi和蜂窝网络之上发生。
[0016]参照图1,虚拟软交换系统100包括多个通信设备110、170、180 ;两个基站120、130 ;隧道服务器150 ;以及两个网络140和160。网络140和160可以是实施为有线网络和/或无线网络的任何类型的网络、如比如局域网络(LAN)、广域网络(WAN)、虚拟网络、电信网络。基站120可以经由通信链路122可操作地耦合到通信设备110。通信链路122可以例如是WiFi连接、蓝牙连接、根据协议如3G或者4G操作的蜂窝连接,或者比如以太网或者数字用户线(DSL)连接的有线连接。基站130可以经由通信链路132操作地耦合到通信设备110。通信链路132可以例如是WiFi连接、蓝牙连接或者根据协议如3G或者4G操作的蜂窝连接。通信设备110、170和180可以例如是服务器或者主机机器、如比如web服务器、应用服务器、代理服务器、telnet服务器、文件传送协议(FTP)服务器,或者个人计算设备、比如台式计算机、膝上型计算机、个人数字助理(PDA)、标准移动电话、写字板个人计算机(PC)等。通信设备170和180可以经由隧道服务器150以及网络140和160向通信设备110发送数据单元。通信设备170和180可以经由网络140和160以及隧道服务器150从通信设备110接收数据单元。
[0017]如下文进一步讨论的那样,通信设备110可以经由与在隧道服务器150与通信设备110之间定义的第一隧道关联的第一基站120接收数据单元的第一实例或者副本。通信设备110也可以经由与在隧道服务器150与通信设备110之间定义的第二隧道关联的第二基站130接收数据单元的第二实例或者副本。通信设备110可以经由与在通信设备110与隧道服务器150之间定义的第一隧道关联的第一基站120发送数据单元的第一实例或者副本。通信设备110也可以经由与在通信设备110与隧道服务器150之间定义的第二隧道关联的第二基站120发送数据单元的第二实例或者副本。
[0018]在一些实施例中,当在通信设备110与基站120 (或者130)之间的通信链路122 (或者132)是WiFi链路时,基站120 (或者130)可以是WiFi接入点、W1-Fi路由器、W1-Fi阵列、无线局域网络(WLAN)等。在其它实施例中,如果在通信设备110与基站120(或者130)之间的通信链路122 (或者132)是蜂窝链路,则基站120 (或者130)可以是蜂窝基站。在这样的实施例中,基站120(或者130)可以例如是基站收发器(BTS)或者小区塔等。在更多其它实施例中,当在通信设备110与基站120 (或者130)之间的通信链路122 (或者132)是有线链路时,基站120 (或者130)可以例如是有线路由器、无线交换机(例如接入交换机)等。
[0019]隧道服务器150可以例如是虚拟专用网络(VPN)隧道服务器、通用分组无线电服务隧道传输协议(GTP)隧道服务器、网际协议安全(IPsec)隧道服务器、通用路由封装(GRE)隧道服务器、因特网协议中的因特网协议(IP中的IP)隧道服务器、CAPWAP隧道服务器等。在一些实施例中,隧道服务器150可以是发起和终止多个种类、例如GTP和GRE或者GTP和CAPWAP等的隧道的混合隧道服务器。在一些实施例中,隧道服务器150可以被配置用于从通信设备170或者180接收数据单元。在这样的实施例中,隧道服务器150可以复制数据单元,以产生数据单元的第一实例或者副本和数据单元的第二实例或者副本。换而言之,隧道服务器150可以基于数据单元定义数据单元的第一实例或者副本和数据单元的第二实例或者副本。例如在一些实施例中,第一实例可以是从通信设备170(或者180)接收的数据单元,并且第二实例可以可以是从通信设备170 (或者180)接收的数据单元的基本上相同副本。隧道服务器150也可以用单个隧道首部封装数据单元的每个副本。隧道首部可以包括源设备的IP地址和目的地设备的IP地址,每个设备标识为隧道的“端点”。隧道首部也可以包括与将用来发送数据单元的特定隧道、如比如与基站120和通信链路122关联的第一隧道或者与基站130和通信链路132关联的第二隧道的信息。隧道服务器150可以经由网络140、基站120和通信链路122,向通信设备110发送数据单元的第一副本。在这一情况下,封装的数据单元的第一副本可以具有如下隧道首部,该隧道首部包括与第一隧道关联的信息。隧道服务器也可以经由网络140、基站130和通信链路132向通信设备110发送数据单元的第二副本。在这一情况下,封装的数据单元的第二副本可以具有如下隧道首部,该隧道首部包括与第二隧道关联的信息。
[0020]与向通信设备110发送数据单元相似,隧道服务器150也可以从通信设备110接收数据单元。例如隧道服务器150可以经由在通信设备110与隧道服务器150之间定义的第一隧道在用于目的地设备170或者180的第一时间从通信设备110接收数据单元的第一实例或者副本。隧道服务器150可以经由在通信设备110与隧道服务器150之间定义的第二隧道在用于目的地设备170或者180的第二时间从通信设备110接收数据单元的第二实例或者副本,第二隧道不同于第一隧道。在这样的实例中,隧道服务器150可以被配置用于在第二时间在第一时间之后时忽略和/或丢弃数据单元的第二副本、将数据单元的第一副本去封装并且基于第一数据单元的目的地地址向目的地设备170或者180发送与数据单元的第一副本关联的数据有效载荷。相似地,隧道服务器150可以被配置用于在第一时间在第二时间之后时忽略和/或丢弃数据单元的第一副本、将数据单元的第二副本去封装并且基于第二数据单元的目的地地址向目的地设备170或者180发送与数据单元的第二副本关联的数据有效载荷。
[0021]通常,移动无线通信设备、如比如标准移动电话或者写字板个人计算机(PC)可以包括IEEE802.11无线接口和3G或者4G蜂窝接口。在移动无线通信设备上成功操作应用(如比如语音应用和视频应用)可以涉及到通过交换过程维持高服务质量(QoS)而连通中断最少或者无中断,该交换过程改变哪个无线接口是从一个无线接口向另一无线接口运转的。交换过程可以使用虚拟软交换并且可以在交换过程期间使用蜂窝基站和WiFi接入点以组合接收以定义在源设备与目的地通信设备之间的更鲁棒“虚拟链路”。可以与无线网络类型独立地实施虚拟软交换。注意通信设备110可以在应用已经指示会话在进行中(比如语音呼叫)时并且在以下条件之下进入虚拟软交换模式:(i)在发起新WiFi接口并且通信设备110当前连接到蜂窝网络时;和/或(ii)在现有无线接口经历不良QoS并且另一无线接口(例如WiFi或者蜂窝)可用时。通信设备110可以在(i)仅一个接口可用时和/或
(i)在多个接口可用并且仅一个接口表现充分QoS时退出虚拟软交换模式。如果所有接口表现充分QoS,则可以根据预定策略选择接口,例如选择WiFi接口而不是蜂窝接口。QoS可以例如由度量、比如数据单元损失率、数据单元延时和/或数据单元抖动表征。如下文描述的那样,在封装的数据单元中的隧道首部可以例如包括序列号和时间戳,以支持生成用于这些度量的值。
[0022]注意在其它实施例中,可以在涉及到用于两个网络(例如WiFI网络和蜂窝网络)的单个运营商的情况下高效使用的本机模式中可以实施虚拟软交换系统100。在本机模式中,基站和隧道服务器可以相互通信。例如可以在基站与隧道服务器之间发送控制信号。计算设备110可以复制待传输的数据单元并且可以通过两个多接口(例如蜂窝和WiFi)发送数据单元而未向两个基站120和130用隧道传输。在这样的实例中,在两个数据单元的首部中的条目可以指示用于标识数据单元的序列号。两个基站120和130然后可以向中心点(如比如单独或者与网关组合的隧道服务器)用隧道传输数据单元,并且虚拟软交换过程可以出现。在这一模式中,涉及到的基站和隧道服务器可以被设计用于执行虚拟软交换。在一些实施例中,基站120和130以及隧道服务器150可以相互通信以协调交换过程。在这样的实施例中,基站120和130和/或隧道服务器150可以来自相同网络运营商和/或销售商。
[0023]虚拟软交换的本机模式可以使用通用分组无线电服务隧道传输协议(GTP)而不是VPN隧道传输协议来实施,并且可以包括分组数据网络网关(PGW)而不是VPN隧道服务器。在这样的实施例中,可以经由WiFi通信链路(例如WiFi路由器或者接入点)和服务网关(SGW)从源设备向PGW的第一 GTP接口发送数据单元。此外,在这样的实施例中,也可以经由蜂窝通信链路(例如经由小区塔)并且使用基于GTP的S2a移动性(SaMOG)从源设备向PGW的第二 GTP接口发送数据单元。在一些实例中,不用隧道首部封装从源设备向PGW发送的数据单元。在这样的实施例中,在数据单元的首部中的目的地设备ID地址可以用来将来自源设备的数据单元引向PGW。在其它实例中,可以至少部分通过隧道向PGW发送从源设备向PGW发送的数据单元。例如可以在无隧道传输时从源设备向SGW和SaMOG并且经由隧道从SGW和/或SaMOG向PGW发送数据单元。PGW然后可以使用目的地设备IP地址向目的地设备转发从源设备接收的数据单元。在一些实施例中,序列号可以用来确定转发哪个数据单元以及丢弃和/或忽略哪个数据单元。
[0024]在通信设备110退出虚拟软交换模式时,通信设备110进入标准操作模式。在通信设备Iio在标准操作模式中操作时的实例中,未出现通信设备110 (和/或隧道服务器150)重复传出数据单元。此外,在标准操作模式中,取决于在源设备与目的地设备之间的通信是否通过安全网络发生,通信设备110可以封装或者可以不封装传出数据单元。在其中通信通过不安全网络发生的实例中,隧道、比如VPN隧道、GTP隧道、(HTTP)隧道等可以用来从源设备向目的地设备发送数据单元。在这样的实例中,通信可以向隧道服务器150发送数据单元,并且隧道服务器150和通信设备110 二者可以封装传出数据单元并且将传入的封装的数据单元去封装。
[0025]注意这里描述的虚拟软交换系统的一些实施例独立于应用并且可以与语音应用、视频应用和其它数据应用一起工作。这样的虚拟软交换系统也可以是网络提供商中性的并且无需与网络提供商协调,但是代之以可以使用与IP接口的连通。此外,这样的虚拟软交换系统因为在IP层执行它们而可以是L2不可知的,并且可以通过包括有线接口的任何L2接口(如果可用的话)执行而无需对L2协议的特殊了解。这样的虚拟软交换系统可以实施于现有IP网络之上并且可以与L2专属技术、比如准入控制和其它QoS机制一起操作。
[0026]在一些实施例中,虚拟软交换系统不限于无线接入技术。在这样的实施例中,可以将相同虚拟软交换系统延伸至任何两个相异和/或相似技术、如比如有线连接和WiFi连接、跨越因特网的在数字用户线(DSL)之上的有损有线连接和4G无线连接,等等。尽管在图1中表示为具有从隧道服务器到通信设备的两个隧道,但是在其它实施例中,虚拟软交换系统100可以包括从隧道服务器到通信设备的任何数目的隧道和/或任何隧道组合。
[0027]在一些实施例中,在通信设备110与隧道服务器150之间发送的数据单元可以包括任何适当数据类型的数据。在一些实施例中,例如数据单元可以包括语音数据、文字数据、视频数据、音频数据等。此外,在一些实施例中,在通信设备Iio与隧道服务器150之间发送的第一数据单元可以是第一类型(例如语音数据)的数据,而在通信设备110与隧道服务器150之间发送的第二数据单元可以包括与第一类型不同的第二类型(例如视频数据)的数据。如上文和这里进一步具体描述的那样可以经由一个或者多个隧道在通信设备110与隧道服务器150之间发送第一数据单元和/或第二数据单元的多个实例和/或副本。
[0028]图2是与通信设备110相似的通信设备200的系统框图。通信设备200包括处理器210、存储器230、有线接口 240、WiFi接口 250和蜂窝接口 260。处理器210操作地耦合到存储器230、有线接口 240、WiFi接口 250和蜂窝接口 260。处理器210可以例如是通用处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)等。处理器210可以被配置用于运行和/或执行与虚拟软交换系统100关联的应用过程和/或其它模块、过程和/或功能。处理器210包括应用215、操作系统(OS)栈220和虚拟隧道接口225。尽管在图1中表示为具有单个有线接口、单个WiFi接口和单个蜂窝接口,但是在其它实施例中,通信设备200可以包括任何数目的接口和/或任何接口组合。例如在一些实施例中,通信设备可以包括两个蜂窝接口和单个WiFi接口。在其它实施例中,通信设备可以包括两个WiFi接口和单个蜂窝接口。在更多其它实施例中,通信设备可以包括一个蜂窝接口、一个WiFi接口和一个蓝牙接口。
[0029]存储器230可以例如是随机存取存储器(RAM)、存储器缓冲器、硬驱动、数据库、可擦除可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)、只读存储器(ROM)等。存储器230可以存储用于使处理器210执行与通信设备200和虚拟软交换系统100关联的模块、过程和/或功能的指令。存储器230可以例如包括与虚拟软交换系统100的通信设备200关联的路由表235。路由表235可以是在通信设备200的存储器230中存储的如下数据库,该数据库列举通向用于传出数据单元的特定网络目的地的路由。路由表235也可以列举与用于传出数据单元的那些预计的目的地路由关联的距离。路由表235也可以存储关于直接连接的网络和远程网络的路由信息(比如设备和/或接口的IP或者介质访问控制(MAC)地址)。此外,路由表235也可以包含如下“下一跳”关联,这些关联指示沿着通向目的地设备的最优路径的中间目的地。在一些实例中,下一跳关联可以是目的地设备的WiFi接口或者蜂窝接口。
[0030]应用215可以是使处理器210执行与通信设备200和虚拟软交换系统100关联的具体操作的硬件模块和/或(在存储器230中存储和/或在处理器210中执行的)软件模块。例如应用215可以与企业中的特定功能、比如电子邮件应用、记账应用、销售人员应用、薪水册应用等关联。OS栈220可以分配和访问存储器230并且在一些实例中可以用作专用寄存器以保持栈指针的当前地址、用作专用存储器空间以及用于优先高速缓存处理。OS栈220也可以基于传出数据单元的目的地IP地址从路由表225标识用于该数据单元的路由,并且可以经由处理器总线将指示符或者标识符与数据单元一起向虚拟隧道接口 225发送。
[0031]虚拟隧道接口 225通过形成在通信设备200与隧道服务器150 (在图1中)之间的隧道并且加密将从通信设备200在隧道内发送的数据流量来保证隧道的通信设备200这一端安全。参照图1和图2,虚拟隧道接口 225可以经由通信链路122和基站120形成在通信设备110与隧道服务器150之间的隧道。虚拟隧道接口 225也可以经由通信链路132和基站130形成在通信设备110与隧道服务器150之间的隧道。虚拟隧道接口 225可以复制每个传出数据单元(例如定义数据单元的至少两个实例)、执行每个传出数据单元的隧道首部封装(包括接口专属源IP地址),并且向可用WiFi接口 240或者250和/或蜂窝接口260中的每个接口发送每个封装的数据单元的副本。
[0032]虚拟隧道接口 225也可以在第一时间从WiFi接口 240或者250接收传入的封装的数据单元的第一实例或者副本,并且在与第一时间不同的第二时间从蜂窝接口 260接收传入的封装的数据单元的第二实例或者副本。在这样的实施例中,虚拟隧道接口 225如果在数据单元的第二副本之前接收数据单元的第一副本则可以忽略和/或丢弃数据单元的第二副本。此外,虚拟隧道接口 225如果在数据单元的第一副本之前接收数据单元的第二副本则也可以忽略和/或丢弃数据单元的第一副本。此外,在这样的实施例中,虚拟隧道接口225可以将接受的传入数据单元(未被丢弃)去封装并且向应用215递送数据有效载荷。
[0033]有线接口 240将通信设备200连接到有线计算机网络。参照图1和2,有线接口240可以从虚拟隧道接口 225接收封装的传出数据单元的副本并且可以向与有线通信链路122 (或者132)关联的基站120 (或者130)发送该数据单元。有线接口 240也可以从与有线通信链路122 (或者132)关联的基站120 (或者130)接收封装的传入数据单元的副本。在这样的情形中,基站120(或者130)可以是有线路由器、交换机(例如接入交换机)等。在这样的实例中,有线接口 240可以向虚拟隧道接口 225发送封装的数据单元用于去封装和进一步处理。
[0034]WiFi接口 250将通信设备200连接到无线计算机网络。参照图1和2,WiFi接口 250可以从虚拟隧道接口 225接收封装的传出数据单元的副本并且可以向与WiFi通信链路122 (或者132)关联的基站120 (或者130)发送该数据单元。WiFi接口 250也可以从与WiFi通信链路122 (或者132)关联的基站120 (或者130)接收封装的传入数据单元的副本。在这样的情形中,基站120 (或者130)可以是WiFi接入点、比如Apple AirPortExtreme基站、无线路由器如W1-Fi路由器、W1-Fi阵列、无线局域网络(WLAN)等。在这样的实例中,WiFi接口 250可以向虚拟隧道接口 225发送封装的数据单元用于去封装和进一步处理。
[0035]蜂窝接口 260可以将通信设备200连接到蜂窝网络并且可以例如是第三代移动电信(3G)接口、第四代移动电信(4G)接口、全球移动通信系统(GSM)接口等。参照图1和2,蜂窝接口 260可以从虚拟隧道接口 225接收封装的传出数据单元的副本,并且可以向与蜂窝通信链路122 (或者132)关联的基站120 (或者130)发送封装的数据单元。蜂窝接口260也可以从与蜂窝通信链路122 (或者132)关联的基站120 (或者130)接收封装的传入数据单元的副本。在这样的实例中,基站120(或者130)可以是基站收发器(BTS)或者小区它等。在这样的实例中,蜂窝接口 260可以向虚拟隧道接口 225发送封装的数据单元用于去封装和进一步处理。
[0036]图3是与隧道服务器150相似的隧道服务器300的系统框图。隧道服务器300包括处理器310、存储器320以及网络接口 330和340。参照图1和3,隧道服务器300可以经由网络接口 330和340从(或者向)通信设备110和/或170和/或180接收(或者发送)数据单元。处理器310可以例如是通用处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数据信号处理器(DSP)等。处理器310可以被配置用于运行和/或执行与隧道服务器300和虚拟软切换系统100关联的应用过程和/或其它模块、过程和/或功能。
[0037]存储器320可以例如是随机存取存储器(RAM)、存储器缓冲器、硬驱动、数据库、可擦除可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)、只读存储器(ROM)等。存储器320可以存储用于使处理器310执行与隧道服务器300和虚拟软交换系统100的操作关联的模块、过程和/或功能的指令。存储器320可以例如包括与隧道服务器300关联的路由表325。路由表325可以是在隧道服务器300的存储器320中存储的如下数据库,该数据库列举通向用于传出数据单元的特定网络目的地的路由。路由表325也可以列举与用于传出数据单元的那些投射目的地路由关联的距离。路由表325也可以存储关于直接连接的网络和远程网络的路由信息(比如设备和/或接口的IP或者介质访问控制(MAC)地址)。此外,路由表325也可以包含如下“下一跳”关联,这些关联指示沿着通向目的地设备的最优路径的中间目的地。
[0038]处理器310包括虚拟隧道接口 315。虚拟隧道接口 315可以通过形成在隧道服务器300与通信设备110之间的虚拟隧道并且加密将从隧道服务器150在隧道内发送的数据流量,来保证虚拟隧道的隧道服务器300这一端点安全。虚拟隧道接口 315可以经由通信链路122和基站120形成在隧道服务器300与通信设备110之间的隧道。虚拟隧道接口 315也可以经由通信链路132和基站130形成在隧道服务器300与通信设备110之间的隧道。在一些实施例中,虚拟隧道315可以被配置用于接收与第一 WiFi网络、第二 WiFi网络或者蜂窝网络关联的信号强度和/或质量已经降至预定阈值水平以下这样的指示,并且基于该指示终止与该网络关联的隧道。
[0039]虚拟隧道接口 315可以经由网络接口 330或者340从通信设备170或者180接收去往通信设备Iio的数据单元。在接收数据单元时,虚拟隧道接口 315可以复制传入数据单元以产生数据单元的与初始接收的数据单元分离的第二副本、执行数据单元的隧道首部封装(包括接口专属源ID地址),并且向网络接口 330发送封装的数据单元的第一副本并且向网络接口 340发送封装的数据单元的第二副本。[0040]虚拟隧道接口 315也可以经由第一隧道(例如如图1中所示经由通信链路122和基站120在通信设备110与隧道服务器300之间形成的隧道)在第一时间从通信设备110接收去往通信设备170或者180的传入数据单元的第一实例或者副本。虚拟隧道接口 315也可以经由第二隧道在第二时间从通信设备110接收去往通信设备170或者180的传入数据单元的第二实例或者副本,第二隧道不同于第一隧道(例如如图1中所示经由通信链路132和基站130在通信设备110与隧道服务器300之间形成的隧道)。在这样的实例中,虚拟接口 315可以在第二时间在第一时间之后时,忽略或者丢弃传入数据单元的第二副本。在其它实例中,虚拟隧道接口 315也可以在第一时间在第二时间之后时忽略或者丢弃传入数据单元的第一副本。这可以例如通过在传入数据单元的隧道首部中包括序列号来实现。因此可以丢弃在更晚时间到达的具有重复序列号的分组。在这样的实施例中,虚拟隧道接口 315可以将保持的传入数据单元的隧道首部去封装、识别目的地设备的目的地IP地址、在有效载荷上封装新首部以使封装的数据单元向通信设备170或者180切换或者路由,并且向与有效载荷的目的地IP地址关联的网络接口 330或者340发送这一新有效载荷。
[0041]网络接口 330和/或340可以例如是W1-Fi接口、蓝牙接口等。网络接口 330和/或340可以将隧道服务器300连接到计算机网络(140和/或160)。此外,其余网络接口330和/或340可以是蜂窝网络接口、比如第三代移动电信(3G)接口、第四代移动电信(4G)接口、全球移动通信系统(GSM)接口等。这样的网络接口 330和/或340可以将隧道服务器300连接到蜂窝计算机网络(140和/或160)。参照图1和图3,网络接口 330或者340可以从虚拟隧道接口 315接收封装的数据单元的副本,并且可以向网络140中的与在去往用于该封装的数据单元的目的地设备的路途上的“下一跳”相关联的路由器或者交换机发送该封装的数据单元。网络接口 330或者340也可以从虚拟隧道接口 315接收非封装的数据单元(隧道有效载荷)的副本,并且可以被配置用于向网络160中的与在去往用于去封装的数据单元的目的地设备的路途上的路由器或者交换机发送非封装的数据单元。网络接口 330或者340也可以经由网络160从通信设备170或者180接收去往通信设备110的非封装的数据单元。在这样的实例中,网络接口 330或者340可以向虚拟隧道接口 315发送非封装的数据单元以用于封装和进一步处理。
[0042]图4是根据一个实施例的封装的数据单元的框图。封装的数据单元包括隧道首部410和隧道有效载荷430。在一些实施例中,隧道首部410是数据单元的以下部分,其中在经由隧道发送数据单元之前在隧道服务器300或者通信设备200封装非封装的数据(隧道有效载荷430)期间向非封装的数据(隧道有效载荷430)上添加该部分。对于封装的数据单元,隧道首部410是封装的数据单元的以下部分,其中在经由隧道接收封装的数据单元时在将封装的数据单元去封装期间由隧道服务器300或者通信设备200去除该部分。隧道首部410包括分组ID415和序列值420。分组ID415可以包括源设备的IP地址和目的地设备的IP地址,该IP地址标识隧道的“端点”。序列值420可以是可以标识数据单元的单调增加的系列编号。例如具有相同序列值420的数据单元是具有相同数据有效载荷的数据单元,并且具有非相同序列值420的数据单元是不同数据单元(即具有不同数据有效载荷的数据单元)。隧道服务器300或者通信设备200识别数据单元的序列值420,以确定在实施虚拟软交换期间是否丢弃接收的数据单元之一。隧道有效载荷430可以是数据单元的以下部分,其中在由隧道服务器300封装并且向隧道中发送之前,在隧道服务器300处、从通信设备170或者180接收到该部分。在其它实例中,隧道有效载荷430可以是数据单元的以下部分,其中在由图2中的通信设备200的虚拟隧道接口 225(图2)封装并且向隧道中发送之前,在虚拟隧道接口 225处接收到该部分。隧道有效载荷430包括网络首部440和网络有效载荷450。网络首部440可以包括与隧道有效载荷430关联的5元组信息,比如源IP地址、目的地IP地址、源端口标识符、目的地端口标识符和用于数据传送的协议。网络有效载荷450例如包含从源设备向目的地设备发送的数据的加密或者非加密形式,并且可以例如包括电子邮件消息、文字消息等的部分。
[0043]图5是图示根据一个实施例的用于从源设备向目的地设备传送数据的虚拟软交换的方法的流程图。方法500包括在502例如在隧道服务器接收寻址到通信设备的数据单元。数据单元可以在路由或者切换通过网络之后到达隧道。如上文讨论的那样,隧道服务器可以例如是虚拟专用网络(VPN)隧道服务器、通用分组无线电服务隧道传输协议(GTP)隧道服务器、网际协议安全(IPsec)隧道服务器、通用路由封装(GRE)隧道服务器、网际协议中的网际协议(IP中的IP)隧道服务器、CAPffAP隧道服务器,等等。也如上文讨论的那样,通信设备可以是服务器或者主机机器、如比如web服务器、应用服务器、代理服务器、telnet服务器、文件传送协议(FTP)服务器或者个人计算设备、比如台式计算机、膝上型计算机、个人数字助理(PDA)、标准移动电话、写字板个人计算机(PC)等。
[0044]在504,例如在隧道服务器基于数据单元定义数据单元的第一实例或者副本和数据单元的第二实例或者副本。例如隧道服务器也可以用单个隧道首部封装数据单元的每个副本以定义虚拟隧道的端点。
[0045]在506,例如隧道服务器可以经由在隧道服务器与通信设备之间定义的第一隧道向通信设备发送数据单元的第一实例。如上文讨论的那样,第一隧道可以基于网络、如t匕如W1-Fi网络、蓝牙网络等。可选地,第一隧道可以基于蜂窝网络,如比如第三代移动电信(3G)网络、第四代移动电信(4G)网络、全球移动通信系统(GSM)网络,等等。
[0046]在508,例如隧道服务器例如可以经由在隧道服务器与通信设备之间定义的(与第一隧道不同的)第二隧道向通信设备发送数据单元的第二实例或者副本。如上文讨论的那样,第二隧道可以基于网络、如比如W1-Fi网络、蓝牙网络,等等。可选地,第二隧道可以基于蜂窝网络,如比如第三代移动电信(3G)网络、第四代移动电信(4G)网络、全球移动通信系统(GSM)网络,等等。在通信设备在数据单元的第二实例之前接收到数据单元的第一实例的情况下,通信设备可以忽略和/或丢弃数据单元的第二实例。如上文讨论的那样,这可以通过在传入数据单元的隧道首部中包括序列号来实现,其中可以丢弃在更晚时间到达的具有相同序列号(这指示具有相同数据有效载荷的数据单元)的数据单元。
[0047]参照图1-图3,在处于虚拟软交换模式中的时候,在通信设备200上的虚拟隧道接口 225和在隧道服务器300上的虚拟隧道接口 315可以执行数据单元复制和数据单元丢弃功能。另外,虚拟隧道借款225和315也可以监视通信链路122和132的质量,以确定何时可以终止和/或丢弃隧道之一。例如在隧道对会话的QoS提高的贡献可忽略时丢弃隧道。这可以由如下隧道表征,该隧道的数据单元递送代表作为有效载荷向目的地通信设备传递的全部数据单元中的一小部分。在一些实施例中,如果QoS在预定时段期间保持低,则可以在该时段之后重试丢弃或者拒绝的隧道。注意在丢弃隧道时,只要会话(比如语音呼叫或者视频会议呼叫)保持活跃,备选接口就保持活跃,同时在虚拟隧道接口 225和315(即在通信设备200和隧道服务器300 二者上)可以连续扫描备选网络。
[0048]这里描述的一些实施例涉及一种具有非瞬态计算机可读介质(也可以称为非瞬态处理器可读介质)的计算机存储产品,该非瞬态计算机可读介质具有在其上存储的用于执行各种计算机实施的操作的指令或者计算机代码。计算机可读介质(或者处理器可读介质)在它未包括瞬态传播信号本身(例如在传输介质、比如空间或者线缆上输送信息的传播电磁波)这一意义上为非瞬态。介质和计算机代码(也可以称为代码)可以是被设计和构造用于一个或者多个具体目的的介质和计算机代码。非瞬态计算机可读介质的例子包括但不限于:磁存储介质,比如硬盘、软盘和磁带;光学存储介质,光盘/数字视频盘(⑶/DVD)、光盘-只读存储器(⑶-ROM)和全息设备;光磁存储介质,比如光盘;载波信号处理模块;以及被特殊地配置用于存储和执行程序代码的硬件设备,比如专用集成电路(ASIC)、可编程逻辑器件(PLD)、只读存储器(ROM)和随机存取存储器(RAM)设备。这里描述的其它实施例涉及一种可以例如包括这里讨论的指令和/或计算机代码的计算机程序产品。
[0049]计算机代码的例子包括但不限于伪代码或者微指令、比如编译器产生的机器指令、用来产生web服务的代码和如下文件,这些文件包含计算机使用翻译器来执行的更高级指令。例如实施例可以使用命令式编程语言(例如C、Fortran等)、函数编程语言(Haskell、Erlang等)、逻辑编程语言(例如Prolog)、面向对象编程语言(例如Java、C++等)或者其它适当编程语言和/或开发工具来实施计算机代码的附加例子包括但不限于控制信号、加密的代码和压缩的代码。
[0050]尽管上文已经描述各种实施例,但是应当理解仅以示例方式而非限制的目的来呈现它们。在上文描述的方法规定按照某一顺序出现的某些事件时,可以修改某些事件的排序。此外,可以在可能时在并行过程中并行执行以及如上文描述的那样依序执行事件中的某些事件。
【权利要求】
1.一种非瞬态处理器可读介质,用于存储代表用于由处理器执行的指令的代码,所述代码包括用于使所述处理器执行以下操作的代码: 在隧道服务器接收寻址到通信设备的数据单元; 基于所述数据单元定义所述数据单元的第一实例和所述数据单元的第二实例; 经由在至少所述隧道服务器和与第一网络关联的第一基站之间定义的并且操作地耦合到所述通信设备的第一隧道,向所述通信设备发送所述数据单元的所述第一实例;以及 经由在至少所述隧道服务器和与不同于所述第一网络的第二网络关联的第二基站之间定义的并且操作地耦合到所述通信设备的第二隧道,向所述通信设备发送所述数据单元的所述第二实例,使得在由所述通信设备在所述数据单元的所述第二实例之前接收到所述数据单元的所述第一实例时,所述通信设备丢弃所述数据单元的所述第二实例。
2.根据权利要求1所述的非瞬态处理器可读介质,其中所述第一网络是蜂窝网络,所述第二网络是WiFi网络。
3.根据权利要 求1所述的非瞬态处理器可读介质,其中所述第一隧道与在所述通信设备与所述隧道服务器之间的虚拟专用网络(VPN)连接相关联。
4.根据权利要求1所述的非瞬态处理器可读介质,其中所述数据单元的所述第一实例包括与所述数据单元关联的序列号,所述数据单元的所述第二实例包括所述序列号。
5.根据权利要求1所述的非瞬态处理器可读介质,还包括用于使所述处理器执行以下操作的代码: 使用与所述第一隧道关联的首部来封装所述数据单元的所述第一实例;以及 在与所述第二隧道关联的首部中封装所述数据单元的所述第二实例。
6.根据权利要求1所述的非瞬态处理器可读介质,其中所述数据单元是第一数据单元,所述代码还包括用于使所述处理器执行以下操作的代码: 在所述隧道服务器和在第一时间,经由所述第一隧道从所述通信设备接收第二数据单元的第一实例; 在所述隧道服务器和在第二时间,经由所述第二隧道从所述通信设备接收所述第二数据单元的第二实例;以及 在所述第二时间在所述第一时间之后的情况下丢弃所述第二数据单元的所述第二实例。
7.根据权利要求1所述的非瞬态处理器可读介质,其中所述数据单元是第一数据单元,所述第一数据单元具有第一数据类型,所述代码还包括用于使所述处理器执行以下操作的代码: 在所述隧道服务器处,接收寻址到所述通信设备的第二数据单元,所述第二数据单元具有与所述第一数据类型不同的第二数据类型; 基于所述第二数据单元,定义所述第二数据单元的第一实例和所述第二数据单元的第二实例; 经由所述第一隧道向所述通信设备发送所述第二数据单元的所述第一实例;以及 经由所述第二隧道向所述通信设备发送所述第二数据单元的所述第二实例。
8.根据权利要求1所述的非瞬态处理器可读介质,还包括用于使所述处理器执行以下操作的代码:接收关于与所述第一网络关联的信号质量已经越过阈值的指示;以及 基于所述指示终止所述第一隧道。
9.根据权利要求1所述的非瞬态处理器可读介质,还包括用于使所述处理器执行以下操作的代码: 接收关于与所述第一网络关联的信号质量已经越过阈值的指示;以及 基于所述指示终止所述第二隧道。
10.根据权利要求1所述的非瞬态处理器可读介质,其中所述第一网络是无线网络并且所述第二网络是有线网络。
11.根据权利要求1所述的非瞬态处理器可读介质,其中所述第一隧道使用第一隧道协议,所述第二隧道使用与所述第一隧道协议不同的第二隧道协议。
12.根据权利要求1所述的非瞬态处理器可读介质,其中在所述隧道服务器与所述通信设备之间定义所述第一隧道,在所述隧道服务器与所述通信设备之间定义所述第二隧道。
13.根据权利要求1所述的非瞬态处理器可读介质,其中在所述隧道服务器与所述第一基站之间定义所述第一隧道,所述用于使所述处理器发送所述数据单元的所述第一实例的代码包括用于使所述处理器经由所述第一隧道向所述基站发送所述数据单元的所述第一实例,使得所述基站能够在向所述通信设备发送所述数据单元的所述第一实例之前从所述数据单元的所述第一实例去除与所述第 一隧道关联的隧道首部的代码。
14.一种装置,包括: 隧道服务器,被配置用于接收寻址到通信设备的数据单元,所述隧道服务器被配置用于基于所述数据单元定义所述数据单元的第一实例和所述数据单元的第二实例, 所述隧道服务器被配置用于经由第一隧道向所述通信设备发送所述数据单元的所述第一实例,所述第一隧道(I)是在所述隧道服务器与所述通信设备之间定义的并且(2)穿越具有第一网络类型的第一网络的至少一部分, 所述隧道服务器被配置用于经由第二隧道向所述通信设备发送所述数据单元的所述第二实例,所述第二隧道(I)是在所述隧道服务器与所述通信设备之间定义的并且(2)穿越具有与所述第一网络类型不同的第二网络类型的第二网络的至少一部分。
15.根据权利要求14所述的装置,其中所述隧道服务器被配置用于在第一时间发起所述第一隧道,所述隧道服务器被配置用于在所述第一时间之后的第二时间基于接收到关于所述通信设备在所述第二网络的操作范围内的指示发起所述第二隧道。
16.根据权利要求14所述的装置,其中所述第一网络是蜂窝网络,所述第二网络是WiFi网络。
17.根据权利要求14所述的装置,其中所述第一隧道与在所述通信设备与所述隧道服务器之间的虚拟专用网络(VPN)连接相关联。
18.根据权利要求14所述的装置,其中所述隧道服务器被配置用于在向所述通信设备发送所述数据单元的所述第一实例之前、使用与所述第一隧道关联的首部来封装所述数据单元的所述第一实例,所述隧道服务器被配置用于在向所述通信设备发送所述数据单元的所述第二实例之前、使用与所述第二隧道关联的首部来封装所述数据单元的所述第二实例。
19.根据权利要求14所述的装置,其中所述隧道服务器被配置用于接收关于与所述第一网络关联的信号质量已经越过阈值的指示,所述隧道服务器被配置用于基于所述指示终止所述第二隧道。
20.一种装置,包括: 隧道服务器,被配置用于从通信设备经由第一隧道在第一时间接收数据单元的第一实例,所述第一隧道(I)是在所述隧道服务器与所述通信设备之间定义的,并且(2)具有第一网络内的至少一部分, 所述隧道服务器被配置用于从所述通信设备经由第二隧道在所述第一时间之后的第二时间接收所述数据单元的第二实例,所述第二隧道(I)是在所述隧道服务器与所述通信设备之间定义的,并且(2)具有与所述第一网络不同的第二网络内的至少一部分, 所述隧道服务器在所述第二时间在所述第一时间之后的情况下丢弃所述数据单元的所述第二实例,所述隧道服务器被配置用于在所述第二时间在所述第一时间之后的情况下基于所述数据单元的所述第一实例内的目的地地址向目的地设备发送所述数据单元的所述第一实例。
21.根据权利要求20所述的装置,其中所述第一网络是蜂窝网络,所述第二网络是WiFi网络。
22.根据权利要求20所述的装置,其中所述第一隧道与在所述通信设备与所述隧道服务器之间的第一虚拟专用网络(VPN)连接关联,所述第二隧道与在所述通信设备与所述隧道服务器之间的第二 VPN连接相关联。
23.根据权利要求20所述的装置,其中所述隧道服务器被配置用于在所述第二时间在所述第一时间之后并且所述数据单元的所述第二实例的序列号等于所述数据单元的所述第一实例的序列号的情况下丢弃所述数据单元的所述第二实例。
24.根据权利要求20所述的装置,其中所述隧道服务器被配置用于接收关于与所述第一无线网络关联的信号 质量已经越过阈值的指示,所述隧道服务器被配置用于基于所述指示终止所述第一隧道。
【文档编号】H04W40/02GK103428802SQ201310148675
【公开日】2013年12月4日 申请日期:2013年4月19日 优先权日:2012年5月16日
【发明者】J·墨菲, A·乔德赫伊 申请人:丛林网络公司