具体实施方式
以下说明仅提供优选的示例性实施例,并且并非意图限制本发明的范围、适用性或配置。实际上,优选的示例性实施例的以下说明将为所属领域的技术人员提供实施本发明的优选的示例性实施例的有利描述。应理解,在不脱离如在所附权利要求书中阐述的本发明的精神和范围的情况下,可以对元件的功能以及布置进行各种改变。
在以下描述中给出具体细节以提供对实施例的透彻理解。然而,所属领域的技术人员应理解,所述实施例可以在没有这些具体细节的情况下实践。例如,可以以框图示出电路以免以不必要的细节混淆实施例。在其它情况下,在没有不必要的细节的情况下示出熟知的电路、过程、算法、结构以及技术以便避免混淆实施例。
还应注意,实施例可以描述为过程,过程描绘为流程图、作业图、数据流图、结构图或框图。尽管流程图可以将操作描述为顺序过程,但是许多操作可以并行或同时执行。另外,可以重新布置操作的顺序。当操作完成时,过程终止,但是过程可以具有不包含在图中的另外步骤。过程可以对应于方法、函数、过程、子例程、子程序等。当过程对应于函数时,其终止对应于函数返回到调用函数或主函数。
实施例或其各部分可以以程序指令来实施,所述程序指令可在处理单元上操作以用于执行如本文中所描述的功能以及操作。构成各种实施例的程序指令可以存储于计算机可读存储媒体中。
此外,如本文中所揭示,术语“计算机可读存储媒体”、“主存储器”或“辅助存储装置”可以表示用于存储数据的一个或多个装置,包含只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、随机存取存储器(RAM)、磁性RAM、磁芯存储器、软盘、软磁盘、硬盘、磁带、CD-ROM、快闪存储器装置、存储卡和/或用于存储信息的其它机器可读媒体。术语“计算机可读存储媒体”还可以包含但不限于,便携式或固定存储装置、光学存储媒体、磁性媒体、存储器芯片或盒式磁盘、无线信道以及能够存储、容纳或携载指令和/或数据的各种其它媒体。计算机可读存储媒体可以通过虚拟化来实现,且可以是虚拟计算机可读存储媒体,其包含在基于云的实例中的虚拟计算机可读存储媒体。
如本文所使用的术语“计算机可读存储媒体”、“主存储器”或“辅助存储装置”是指参与将指令提供到处理单元用于执行的任何媒体。主存储器或辅助存储装置仅是机器可读媒体的一个实例,所述机器可读媒体可以携载指令以用于实施本文中所描述的方法和/或技术中的任一个。此媒体可以采用许多形式,包含但不限于,非易失性媒体、易失性媒体,以及传输媒体。非易失性媒体例如包含光盘或磁盘。易失性媒体包含动态存储器。传输媒体包含同轴电缆、铜线以及光纤。传输媒体还可以采用声波或光波的形式,例如在无线电波以及红外线数据通信期间产生的声波或光波。
易失性存储装置可以用于在通过处理单元执行指令期间存储临时变量或其它中间信息。非易失性存储器或静态存储装置可以用于存储处理单元的静态信息和指令以及各种系统配置参数。
计算机可读存储媒体可以包含多个软件模块,所述软件模块可以实施为通过处理单元使用任何合适的计算机指令类型来执行的软件代码。软件代码可以存储为一系列指令或命令,或存储为计算机可读存储媒体中的程序。
在将一个或多个指令的一个或多个序列携载到处理单元以执行时可以涉及各种形式的计算机可读存储媒体。例如,最初可以在磁盘上从远程计算机载送指令。或者,远程计算机可以将所述指令加载到其动态存储器中,且向运行一个或多个指令的一个或多个序列的系统发送指令。
处理单元可以是微处理器、微控制器、数字信号处理器(DSP)、那些装置的任何组合、或经配置以处理信息的任何其它电路。
处理单元执行程序指令或代码段以用于实施本发明的实施例。此外,实施例可以由硬件、软件、固件、中间件、微码、硬件描述语言或其任意组合来实施。当在软件、固件、中间件或微码中实施时,用于执行必要任务的程序指令可以存储于计算机可读存储媒体中。处理单元可以通过虚拟化来实现,且可以是虚拟处理单元,其包含在基于云的实例中的虚拟处理单元。
本发明的实施例涉及使用计算机系统来实施本文中所描述的技术。在实施例中,本发明的处理单元可以存在于计算机平台等机器上。根据本发明的一个实施例,本文中所描述的技术由计算机系统执行,以响应于处理单元执行易失性存储器中所含有的一个或多个指令的一个或多个序列。此类指令可以从另一计算机可读媒体读取到易失性存储器中。对易失性存储器中所含有的指令的序列的执行使得处理单元执行本文中所描述的过程步骤。在替代实施例中,硬连线电路可以用于放置软件指令或与软件指令组合以实施本发明。因此,本发明的实施例不限于硬件电路以及软件的任何特定组合。
代码段可以表示进程、函数、子程序、程序、例程、子例程、模块、软件包、类别,或者指令、数据结构或程序语句的任何组合。一个代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以经由包含存储器共享、消息传递、令牌传递、网络传输等任何合适的方式传递、转发或传输。
可以由节点提供的网络接口是以太网接口、帧中继接口、光纤接口、电缆接口、DSL接口、令牌环接口、串行总线接口、通用串行总线(USB)接口、火线接口、外围组件互连(PCI)接口等。
网络接口可以通过独立的电子组件实施或者可以与其它电子组件整合。根据配置,网络接口可以不具有网络连接或具有至少一个网络连接。网络接口可以是以太网接口、帧中继接口、光纤接口、电缆接口、数字订户线(DSL)接口、令牌环接口、串行总线接口、通用串行总线(USB)接口、火线接口、外围组件互连(PCI)接口等。
本发明的当前优选的实施例可以利用网关。网关是执行不同类型的网络或应用之间的协议转换的装置。术语“网关”并不限于单一类型的装置,出于本申请的目的,可以充当用户与网络之间的桥梁的任何装置、硬件或软件都可以被视为网关。网关可以与多个多网络耦合。路由器、接入点或无线接入点都可以出于本发明的目的被视为网关。
实施例或其各部分可以以计算机数据信号来实施,所述计算机数据信号可以采用用于经由传输媒体进行通信的任何合适形式,使得所述计算机数据信号是可读的以用于通过功能装置(例如,处理单元)执行从而执行本文中所描述的操作。计算机数据信号可以包含可以经由传输媒体传播的任何二进制数字电子信号,所述传输媒体例如电子网络信道、光纤、空气、电磁媒体、射频(RF)链路等,因此,数据信号可以采用电信号、光信号、射频或其它无线通信信号等形式。在某些实施例中,可以经由计算机网络下载代码段,计算机网络例如因特网、内联网、LAN、MAN、WAN、PSTN、卫星通信系统、电缆传输系统和/或类似者。
系统
图3是根据本发明的一个实施例的计算机系统或网络节点,例如,节点101的示意性框图。节点101包括处理单元301、主存储器302、系统总线303、辅助存储装置304、局域网(LAN)接口122a和122b以及广域网(WAN)接口121a、121b和121c。辅助存储装置304和主存储器302是计算机可读存储媒体。处理单元301和主存储器302彼此直接连接。系统总线303将处理单元301直接或间接连接到辅助存储装置304、LAN接口122a和122b以及WAN接口121a、121b、121c和121d。使用系统总线303允许节点101具有增加的模块性。系统总线303将处理单元301耦合到辅助存储装置304,以及LAN接口122a和122b,以及WAN接口121a、121b、121c和121d。系统总线303可以是若干类型的总线结构中的任一个,包含使用各种总线架构中的任一个的存储器总线、外围总线以及局部总线。辅助存储装置304存储用于由处理单元301执行的程序指令。本发明的范围不限于具有五个网络接口的节点101,因此节点101可以具有更多网络接口。仅示例性地指定LAN接口122a和122b以及WAN接口121a、121b、121c和121d。
图4是根据本发明的一个实施例的计算机系统或网络节点,例如,节点102的示意性框图。节点102包括处理单元401、主存储器402、系统总线403、辅助存储装置404、LAN接口132、WAN接口131a、131b和131c。节点102的组件以与节点101的组件类似的方式彼此连接。
图5是根据本发明的一个实施例的计算机系统或网络节点,例如,节点702的示意性框图。节点702包括处理单元501、主存储器502、系统总线503、辅助存储装置504和WAN接口703。节点702的组件以与节点101的组件类似的方式彼此连接。或者,节点702还可以由图3或图4中的框图表示,使得节点702可以具有一个或多个WAN接口和一个或多个LAN接口。
图1说明根据本发明的各种实施例的网络配置。节点101通过图2中所说明的四个隧道:隧道201a、201b、201c和201d连接到节点102。LAN接口122a通过互连网络117使用连接115a和115c将节点101连接到主机103a。LAN接口122b使用连接115b将节点101连接到主机103b。
示例性地,节点101通过WAN接口121a连接到卫星网络以与节点102建立隧道201a。WAN接口121a通过使用卫星调制解调器161与卫星网络150通信;节点102通过WAN接口131a和卫星调制解调器160连接到卫星网络150以与节点101建立隧道201a。
WAN接口121a与卫星网络150之间的连接和WAN接口131a与卫星网络150之间的连接分别使用卫星调制解调器160和161。卫星调制解调器160和161可以具有用于分别通过连接112a和110a与卫星网络150通信的嵌入式天线或外部天线。WAN接口131a和121a分别通过有线或无线连接媒体114和113分别连接到卫星调制解调器160和161。优选地,连接媒体114和113是高速有线连接媒体,例如,计算机总线、通用串行总线(USB)、串行总线、并行总线、光纤、火线、雷电等。卫星调制解调器160还可以包含在含有节点102的外壳内并且卫星调制解调器161可以包含在含有节点101的外壳内。或者,节点102可以包含卫星调制解调器160插入的辅助端口。卫星调制解调器160和161经配置以将通信传输到卫星网络150以及从卫星网络150接收通信。卫星调制解调器160和161可以选自任何数目的可用卫星调制解调器,包含但不限于,Quake Global;康泰易达(Comtech EF Data);基准系统(Datum Systems);休斯网络系统(Hughes Network Systems);Newtec;天堂数据通信(Paradise Datacom);Radyne ComStream;仕诺卫星通信(Shiron Satellite Communications);Ad-vantechAMT(以前的信号处理器、SPL/ACT、ACT无线);以及TSI技术。
同样示例性地,节点101通过WAN接口121b、无线网络180和WAN接口131b与节点102建立隧道201b。WAN接口121b通过无线通信信道110b与无线网络180通信。类似地,WAN接口131b通过无线通信信道112b与无线网络180通信。通过无线通信信道110b和112b的通信可以通过无线调制解调器或蜂窝调制解调器实现。无线网络180的大小不受限制。例如,无线网络180可以是由威瑞森(Verizon)、ATT、中国移动或沃达丰(Vodafone)操作的蜂窝网络。蜂窝网络还可以是提供无线通信服务,但不拥有无线或蜂窝网络基础设施的移动虚拟网络运营商(MVNO)或移动其它授权运营商(MOLO),MVNO经由所述无线或蜂窝网络基础设施向其客户提供服务。
同样示例性地,节点101通过WAN接口121c、无线网络181、互连网络171和WAN接口131c与节点102建立隧道201c。WAN接口121c通过无线通信信道110c与无线网络181通信。无线网络181通过互连网络171与WAN接口131c通信。无线网络181的大小也不限。例如,无线网络181可以是由威瑞森(Verizon)、AT&T、中国移动或沃达丰(Vodafone)操作的蜂窝网络。无线网络181和互连网络171通过连接111a彼此通信。节点102通过连接112c与互连网络171通信。
同样示例性地,节点101通过WAN接口121d、互连网络171和WAN接口131c与节点102建立隧道201d。WAN接口121d通过连接111b与互连网络171通信。节点102使用WAN接口131c来通过连接112c与互连网络171通信。
优选地,无线网络180和181经配置用于使用合适的数字数据传送协议进行无线数字传送,所述数字数据传送协议例如,高速下行分组接入(HSDPA)和高速上行分组接入(HSUPA)、码分多址(CDMA)、演进数据优化(EVDO)、GSM演进增强数据速率(EDGE)、通用分组无线业务(GPRS)、第三代移动通信标准化伙伴项目长期演进(3GPP LTE)或用于经由无线电、微波或用于无线网络的频带进行无线数据传送的任何其它数字数据传送协议。在一个变型例中,无线网络180和181经配置用于使用全球微波接入互操作性(WiMAX)、局部多点分配业务(LMDS)、多信道多点分配业务(MMDS)、IEEE 802.11技术(例如,IEEE 802.11a、IEEE802.11b、IEEE 802.11g、IEEE 802.11n、IEEE 802.11ac和/或IEEE 802.11ad)进行无线数字传送。
WAN接口121b、121c和131b可以经由蜂窝电话、蜂窝调制解调器和/或无线通信调制解调器通过使用连接来实现。例如3GPP LTE调制解调器的蜂窝调制解调器能够与一个或多个蜂窝网络通信。蜂窝调制解调器可以是嵌入式蜂窝调制解调器或外部蜂窝调制解调器。
连接110a、112a、112c、111a、111b、115a、115b和116可以通过使用任何类型的有线或无线连接媒体来实现。例如,有线连接媒体可以包含以太网、光纤信道、数字用户回路、电缆调制解调器、帧中继、令牌环、串行总线、USB、火线、PCI等。无线连接媒体可以包含无线链路,例如,Wi-FiTM;使用无线通信协议的无线连接,例如,IEEE 802.11(无线以太网);蓝牙等。
互连网络117、171和172可以是公共互连网络(例如,因特网)、私有互连网络或混合公共和私有互连网络。例如,互连网络117和172均可以是通过隧道201a、201b、201c和201d连接在一起的局域网(LAN)。在另一实例中,互连网络117是LAN且互连网络172是因特网,使得节点102执行为用于互连网络117的网关以通过隧道201a、201b、201c和201d的至少一个隧道与因特网通信。
在两个网络之间建立隧道,例如,隧道201a、201b、201c和201d。通过隧道,来自两个不同网络的主机可以如在相同网络中通信,如在相同IP子网中。例如,隧道可以使用安全套接层(SSL)、L2TP、互联网协议安全(IPSec)和SSL、IPSec和二层隧道协议(L2TP)或点到点隧道协议(PPTP)来实施。可以在例如WAN接口121c和131c的两个网络接口之间建立一个或多个隧道。因此,可以具有在节点101与节点102之间建立的四个以上隧道,即,隧道201a、201b、201c和201d。例如,如果无线网络180可以与互连网络171通信,那么WAN接口121b还可以与WAN接口131c建立另一隧道。
数据可以存储于数据包的有效负载中。节点101将数据包封装在封装包中,并且随后通过一个或多个隧道将封装包传输到节点102。当节点102接收封装包时,节点102对封装包进行解封装以检索数据包。封装包可以分配在多个隧道,即,隧道201a、201b、201c和201d之中。
类似地,当节点102需要将数据包传输到节点101时,节点102首先将数据包封装在封装包中,并且随后通过一个或多个隧道将封装包传输到节点101。当节点101接收封装包时,节点101对封装包进行解封装以检索数据包。
本领域的技术人员将了解,隧道可以从相同或不同协议的数据报内的一种类型的协议的实现数据封装。本领域的技术人员还将了解,隧道可以用于实施虚拟专用网络(VPN)。在一个变型例中,聚合节点101与102之间的隧道以形成聚合的隧道或聚合的VPN连接。例如,聚合隧道201a、201b和201c以形成一个聚合的VPN连接。例如,聚合的VPN连接使属于一个TCP会话的数据包能够通过隧道201a、201b和201c传输和接收以利用连接到WAN接口121a、121b和121c的网络的可用性。
本领域的技术人员将了解,存在用于聚合多个隧道以形成一个聚合的隧道或连接的多个方法。2009年12月23日提交的发明名称为“用于结合的可变带宽连接的吞吐量优化(THROUGHPUT OPTIMIZATION FOR BONDED VARIABLE BANDWIDTH CONNECTIONS)”的第12/646,774号美国专利申请中揭示所述方法中的一种。
隧道组
根据本发明的一个实施例,当第一节点与第二节点形成至少两个隧道组时,一个隧道组主要用于将数据包从第一节点传输到第二节点并且另一隧道组主要用于从第二节点接收数据包。在每个隧道组中,可以存在一个或多个隧道。由于存在至少两个隧道组并且每个隧道组具有至少一个隧道,因此存在建立于第一节点与第二节点之间的至少两个隧道。通过第一节点的网络接口中的两个和第二节点的至少一个网络接口建立至少两个隧道。在一个变型例中,第二节点可以执行为用于第一节点的网关。在一个变型例中,当隧道组主要用于将数据包从第一节点传输到第二节点时,不存在通过隧道组从第二节点传输到第一节点的数据包。在一个变型例中,当隧道组主要用于将数据包从第一节点传输到第二节点时,存在通过隧道组从第二节点传输到第一节点的少量包,因为那些包用于管理隧道组,例如,传输健康检查包、建立隧道组中的一个隧道以及发送状态信息。在一个变型例中,当隧道组主要用于通过第一节点从第二节点接收数据包时,不存在通过隧道组由第一节点传输到第二节点的数据包。在一个变型例中,当隧道组主要用于通过第一节点从第二节点接收数据包时,存在通过隧道组从第一节点传输到第二节点的少量的包,因为那些包用于管理隧道组,例如,传输健康检查包、建立隧道组中的一个隧道以及发送状态信息。
示例性地,第一节点是节点101且第二节点是节点102;第一隧道组包括隧道201b和201c;并且第二隧道组包括隧道201a和201d。第一隧道组用于将数据包从节点101传输到节点102,而第二隧道组用于将数据包从节点102传输到节点101。因此,节点102可以执行为用于节点101的网关且连接到节点101的网络(例如,网络117)、主机103a和主机103b与互连网络172通信。此外,由于第一隧道组中的隧道数目可以为一个以上,因此节点101可以使用第一隧道组中的多个隧道来将数据包传输到节点102。当节点102通过第一隧道组的一个或多个隧道接收数据包时,节点102在将包传输到互连网络172之前重新排序所述包(必要时)。类似地,在另一实例中,由于第二隧道组中的隧道数目可以为一个以上,因此节点102可以使用第二隧道组中的多个隧道来将数据包传输到节点101。当互连网络172中的主机将包发送到主机103a时,节点102通过第二隧道组中的一个或多个隧道将所述包发送到节点101。随后节点101通过互连网络117将所述包发送到节点103a。
类似地,由于第二隧道组中的隧道数目可以为一个以上,因此节点102可以使用第二隧道组中的多个隧道来传输数据包。在一个变型例中,数据包属于一个会话且节点101在将所述包传输到互连网络117或主机103b之前重新排序所述包。本领域的技术人员将了解,使用多个网络接口来传输属于相同会话的数据包的有无数方法。
根据本发明的一个实施例,当隧道用于将数据包从节点101传输到节点102时,相同隧道并不用于将数据包从节点102传输到节点101。例如,当隧道201b用于将数据包从节点101传输到节点102时,隧道201b并不用于将数据包从节点102传输到节点101。为了节点102将数据包传输到节点101,必须使用其它隧道中的一个或多个,例如,隧道201a、隧道201c或/和201d。隧道管理消息由节点101发送以指示节点102不要使用隧道201b来将数据包传输到节点101。在一个变型例中,节点102可以拒绝由节点101发送的指令。拒绝指令的能力允许节点101的管理员和102的管理员具有适应变化的网络环境的更多灵活性。在一个变型例中,节点102仍可以通过隧道201b将数据包的一部分传输到节点101并且所述部分可以由节点102的管理员、节点102的管理员预配置和/或在节点101与节点102之间协商。
在一个变型例中,当隧道用于将数据包从节点101传输到节点102时,在节点101处建立隧道的对应WAN接口并不用于从节点102接收数据包。例如,当隧道201b用于将数据包从节点101传输到节点102时,WAN接口121b并不用于从节点102接收数据包。在一个变型例中,当隧道用于从节点102至节点101接收数据包时,在节点101处建立隧道的对应WAN接口并不用于将数据包传输到节点102。例如,当隧道201a用于从节点102至节点101接收数据包时,WAN接口121a并不用于将数据包传输到节点101。仅有一个用于传输或接收数据包的WAN接口可能有多个原因,包含WAN接口是半双工,连接到WAN接口的连接的网络性能不对称,通过连接到WAN接口的连接的传输或接收数据包的成本不对称等。
隧道管理消息
根据本发明的一个实施例,节点101将隧道管理消息传输到节点102,用于管理一个或多个隧道。隧道管理消息的使用包含:告知节点102隧道所属的组;告知节点102如何使用隧道;告知节点102何时通过特定隧道或隧道组传输数据包。在一个变型例中,节点101从节点102接收隧道管理消息,用于管理一个或多个隧道。因此,隧道管理消息的使用还包含:告知节点101隧道所属的组;告知节点101如何使用隧道;告知节点101何时通过特定隧道或隧道组传输数据包。
隧道管理消息包括隧道标识字段和指令字段。例如,仅示例性地,第一隧道和第三隧道属于第一隧道组,而第二隧道属于第二隧道组。在此情况下,隧道标识字段包括第一隧道、第二隧道和第三隧道的标识,且指令字段包括第一隧道和第三隧道属于第一隧道组而第二隧道属于第二隧道组的信息。因此,在接收隧道管理消息之后,节点102可以期望数据包通过第一和第三隧道到达并且使用第一和第三隧道将数据包传输到节点101,同时仅通过第二隧道将数据包传输到节点101。可以在将建立隧道时、建立隧道时或已建立隧道后发送隧道管理消息。在另一实例中,隧道管理消息包括帮助节点102识别指令字段中的隧道和对应隧道组以及隧道标识字段中的对应隧道的标识的信息。不存在隧道消息仅可以由节点101发送的限制,因此节点102也可以发送隧道消息。例如,隧道消息可以包括隧道201a和201b属于第一隧道组且隧道201c和201d属于第二隧道组的信息。在一个变型例中,隧道管理消息还包括指示隧道组是用于传输和接收两者还是仅用于传输或仅用于接收的指示符。例如,指示符指示出第一隧道组仅用于传输且第二隧道组用于传输和接收两者。
指示符可以由位、多个位、字节、多个字节、字符串、多个字符串、XML消息等表示。本领域的技术人员将了解,用于表示指示符的有多种方法。
在一个变型例中,聚合第一隧道组的一个或多个隧道和第二隧道组的一个或多个隧道以形成一个聚合的隧道。当节点101通过聚合的隧道将数据包传输到节点102时,节点101使用第一隧道组来传输数据包。由于隧道201a和201b属于第一隧道组,因此节点101通过隧道201a和201b将数据包传输到节点102。当节点102通过聚合的隧道将数据包传输到节点101时,如通过隧道管理消息指示节点102使用第二隧道组来传输数据包。由于隧道201c和201d属于第二隧道组,因此节点102通过隧道201c和201d将数据包传输到节点101。隧道管理消息还可以用于管理聚合的隧道。例如,当将隧道添加到第一隧道组时,节点101将聚合的隧道中存在再多一个隧道的隧道管理消息发送到节点102。
根据本发明的一个实施例,隧道管理消息包括用于指示隧道是用于传输和接收两者,还是仅用于传输或仅用于接收的指令字段中的指示符。例如,示例性地,隧道201a用于节点101仅从节点102接收数据包;隧道201b、201c和201d用于节点101仅将数据包传输到节点102。因此,指示符指示隧道201a仅用于接收数据包且隧道201b、201c和201d仅用于传输数据包。节点102随后根据隧道管理消息中的信息通过隧道201a将数据包传输到节点101且通过隧道201a、201b和201c从节点102接收数据。
在一个变型例中,隧道管理消息包括隧道的状态信息。状态信息可以是存储在指令字段中的信息的一部分。在一个变型例中,隧道管理消息还包括状态字段。状态字段用于保存隧道的状态的信息。例如,当节点101关于隧道的状态更新节点102时,节点101将具有状态字段中的隧道状态的隧道管理消息发送到节点102。隧道标识字段保存对应隧道的标识。在这种情况下,指令字段可以是空的,因为隧道管理消息用于状态报告目标。
在一个变型例中,隧道可以由节点101用于将数据包传输到节点102以及从节点102接收数据包。因此,隧道管理消息中的指示符显示隧道可以用于传输和接收两者。在一个变型例中,示例性地,隧道优选地由节点101用于将数据包传输到节点102并且并不优选地由节点101用于从节点102接收数据包,即使隧道能够进行传输和接收。因此,隧道管理消息中的指示符示出对应偏好。类似地,示例性地,另一隧道优选地由节点102用于将数据包传输到节点101且并不优选地由节点102用于从节点101接收数据包,即使隧道能够进行传输和接收。因此,隧道管理消息中的指示符示出另一隧道的对应偏好。
网络性能
在一个变型例中,第一隧道组包括连接到一个或多个网络的一个或多个隧道并且每个网络应具有小于150毫秒的时延。当网络时延限于小于150毫秒时,网络被视为高速网络。更重要的是,150毫秒网络时延低于卫星通信的常见网络时延。当第一隧道组的网络时延超过150毫秒时,对于节点101使用第一隧道组来将数据包传输到节点102的优点变得不显而易见,因为如果第二隧道组连接到一个或多个卫星连接,那么第一隧道组的网络时延并不会显著优于第二隧道组的网络时延。在此情况下,隧道管理消息由节点101和节点102中的任一个或两者发送到另一节点,所述隧道管理消息为最初仅用于接收的隧道组随后可以用于接收和传输两者,或最初仅用于传输的隧道组随后可以用于接收和传输两者。时延的值可以基于针对隧道组中的每个隧道观察到的时延的平均值、最大值、最小值或其它统计运算来确定。
在一个变型例中,当第一隧道组具有一个以上隧道时,节点101同时仅使用第一隧道组的一个隧道来将数据传输到节点102。所述隧道根据预定义标准(例如,网络时延、丢包率、带宽、价格、信号强度等)选自第一隧道组中的隧道。预定义标准由节点101的管理员通过web接口、命令行、系统控制台和/或任何其它数据输入机构输入。或者,通过因特网连接、内联网连接或SMS将预定义标准从远程服务器发送到节点101。预定义标准可以存储于节点101的存储媒体中,例如,辅助存储装置304或主存储器302。在一个变型例中,预定义标准首先从远程主机检索到,然后存储于节点101的存储媒体中,例如,辅助存储装置304或主存储器302。在一个变型例中,当第一隧道组具有一个以上隧道时,节点101使用链路负载均衡技术将数据包传输到节点102。
在一个实施例中,当符合第一条件时,节点101使用第二隧道组来传输数据。例如,当节点101不能够使用第一隧道组来将数据传输到节点102或第一隧道组的性能变得不可接受时,符合第一条件,节点101使用第二隧道组来传输数据。在一个实施例中,当符合第二条件时,节点101使用第一隧道组来接收数据。例如,当节点101不能够使用第二隧道组来从节点102接收数据或第二隧道组的性能变得不可接受时,符合第二条件,节点101使用第一隧道组来接收数据。条件的使用允许隧道组可以在隧道组或另一隧道组的状态或网络性能变化时重新配置的灵活性。
第一和第二条件基于以下标准中的至少一个:覆盖范围、性能、通信量拥挤和时延敏感度。例如,当第一条件基于覆盖范围时,当节点101的位置在第一隧道组所连接到的一个或多个网络的覆盖范围之外时,符合所述第一条件。当符合所述条件时,节点101无法使用第一隧道组来传输数据,因而节点101使用第二隧道组来传输数据。在另一实例中,第二条件基于覆盖范围且当节点101的位置在第二隧道组所连接到的一个或多个网络的覆盖范围之外时,符合所述第二条件。当符合第二条件时,节点101无法使用第二隧道组来接收数据,因而节点101使用第一隧道组来接收数据。
针对节点101在网络的覆盖范围之外存在多个原因。例如,当第一隧道组中的一个或多个隧道连接到不提供特定国家或区域外的覆盖的蜂窝网络时,当节点101移动出特定国家或区域时节点101变为在蜂窝网络的覆盖范围之外。在一些情形中,使用漫游服务可能不具有经济效益,并且因此节点101开始使用第二隧道组来传输数据。在另一实例中,节点101可能取决于其位置失去第二隧道组所连接到的一个或多个网络的覆盖,例如,当其在室外移动时或当其在室内移动时。第二隧道组包括通过卫星网络150建立的隧道201a。当卫星调制解调器161在室内移动并且不指向天空时,节点101可能不能够通过属于第二隧道组的隧道201a从卫星接收数据,随后节点101使用第一隧道组从节点102接收数据。
在另一实例中,第一条件基于性能且当由通过第一隧道组传输或接收的数据经历的性能变得非常差且不符合要求时,符合所述第一条件。例如,当符合第一条件时,节点101开始使用第二隧道组来传输数据。在另一实例中,第二条件基于性能且当由通过第二隧道组接收的数据经历的性能变得非常差时,符合所述第二条件。例如,当符合第二条件时,节点101开始使用第一隧道组来接收数据。
在另一实例中,当第一条件基于时延敏感度时,当数据传送为时延不敏感时符合所述第一条件。当数据传送为时延不敏感时,其可以使用具有高时延的隧道。因此,当符合第一条件且数据传送为时延不敏感时,节点101可以使用第二隧道组来传输数据,因为第二隧道组的高时延对时延不敏感的数据传送而言是可接受的。当隧道201a处于第二隧道组中时,第二隧道组可以在传输数据时具有高时延,因为例如,隧道201a通过卫星网络150建立。或者,当第二条件基于时延敏感度且从节点102到节点101的数据传送为时延敏感时,节点101使用第一隧道组来从节点102接收数据。当数据传送为时延敏感时,优选地使用具有低时延的隧道。例如,传送的数据由实时音频转换应用产生且在传输或接收数据时的任何时延都将使音频转换难以被监听到。包括隧道201a的第二隧道组可以比第一隧道组具有更高时延。因此,第一隧道组由节点101用于从节点102接收属于时延敏感数据传送的数据。
可以存在一个或多个第一条件和一个或多个第二条件。第一条件和第二条件可以基于或可以不基于相同标准。条件可以基于一或多个标准。
根据一个实施例,当隧道组具有一个以上隧道时,第一隧道组的网络时延是一个以上隧道的时延的平均时延、最大时延、最小时延或时延方差。例如,当第一隧道组的网络时延用于确定第一隧道组是否应该用于传输数据时,随后所述确定基于属于第一隧道组的一个以上隧道的时延的平均时延、最大时延、最小时延或时延方差。
在另一实例中,当第二隧道组的网络时延用于确定第二隧道组是否应该用于接收数据时,随后所述确定基于属于第二隧道组的一个以上隧道的平均时延、最大时延、最小时延或时延方差。节点101的管理员和/或节点102的管理员可以确定适合其要求的时延种类。
在本发明的一个实施例中,处理单元301基于性能标准确定第一隧道组是否应该用于传输数据。性能标准选自包括以下项的群组:包延迟、带宽、吞吐量、丢包、弃包、电力消耗和信噪比、往返时间、干扰电平、差错率、服务质量、排队延迟以及包抖动。在一个变型例中,阈值预定义以用于选定性能标准,并且当不满足阈值时,处理单元301确定使用第二隧道组来传输数据。处理单元301保持监视第一隧道组中的隧道的性能,以便确定是否满足阈值。
在一个实施例中,处理单元301基于性能标准确定第二隧道组是否应该用于接收数据。性能标准选自包括以下项的群组:网络时延、响应时间、包延迟、带宽、吞吐量、丢包、弃包、电力消耗和信噪比、往返时间、干扰电平、差错率、服务质量、排队延迟以及包抖动。在一个变型例中,阈值预定义以用于选定性能标准,并且当不满足阈值时,处理单元301确定使用第一隧道组来接收数据。处理单元301保持监视第二隧道组中的隧道的性能,以便确定是否满足阈值。
在本发明的一个实施例中,处理单元301基于一个或多个性能标准选择用于第一隧道组和第二隧道组的隧道。性能标准选自包括以下项的群组:网络时延、响应时间、包延迟、带宽、吞吐量、丢包、弃包、电力消耗、信噪比、往返时间、干扰电平、差错率、服务质量、排队延迟、使用价格、位置和包抖动。在一个变型例中,阈值预定义以用于对应于第一隧道组的选定性能标准和对应于第二隧道组的选定性能标准。例如,处理单元301确定隧道201b是否满足用于对应于第一隧道组的选定性能标准的阈值。如果隧道201b满足用于对应于第一隧道组的选定性能标准的阈值,那么隧道201b属于第一隧道组。类似地,处理单元301确定隧道201a是否满足用于对应于第二隧道组的选定性能标准的阈值。如果隧道201a满足用于对应于第二隧道组的选定性能标准的阈值,那么隧道201a属于第二隧道组。用于选择第一隧道组的隧道的性能标准以及用于选择第二隧道组的隧道的性能标准可以相同或可以不同。
如果隧道的性能不符合隧道组的性能标准,那么所述隧道可能不属于任何隧道组。
在本发明的一个实施例中,处理单元301保持监视属于第一隧道组和第二隧道组的每一个隧道的性能。例如,隧道201b和隧道201c属于第一隧道组。对应于第一隧道组的选定性能标准是网络时延和吞吐量。定义用于网络时延的阈值是150毫秒,因此隧道所连接到的网络的网络时延必须小于150毫秒。吞吐量的阈值是20Mbps,因此通过隧道的数据传输的吞吐量一般来说应该等于或大于20Mbps。处理单元301周期性地确定隧道201b是否满足网络时延和吞吐量的阈值。如果隧道201b所连接到的网络的网络时延变成显著大于150毫秒,那么处理单元301从第一隧道组移除隧道201b,因为隧道201b不满足阈值。类似地,如果通过隧道201b的数据传输的吞吐量一般来说变为小于20Mbps,那么处理单元301从第一隧道组移除隧道201b,因为隧道201b不满足阈值。在一个变型例中,隧道201b应该满足两个性能标准的阈值以保留在第一隧道组中。或者,隧道201b应该满足性能标准中的至少一个的阈值以保留在第一隧道组中。在一个变型例中,在预定义的时间周期内,仅在隧道201b尚未满足性能标准的阈值时处理单元301确定从第一隧道组移除隧道201b。例如,处理单元301周期性地确定隧道201b是否应该保留在第一隧道组中。如果隧道201b在处理单元301的三次连续确定期间不满足性能标准的阈值,那么处理单元301从第一隧道组中移除隧道201b。在另一实例中,如果处理单元301确定隧道201b所连接到的网络的网络时延已在大于15分钟内超过150毫秒,那么处理单元301从第一隧道组移除隧道201b。当从第一隧道组移除隧道201b时,处理单元301使用第一隧道组的隧道201c来传输数据。
隧道的吞吐量可以通过经由隧道传输数据包或测试包而由处理单元301确定。所估计的吞吐量可以是平均吞吐量、最小吞吐量、最大吞吐量。优选地,测试包的格式与使用隧道201b传输的数据包的格式相同。
在另一实例中,隧道201a和201d属于第二隧道组。对应于第二隧道组的选定性能标准是使用价格和丢包率。由于一些运营商可能在某一时间段内在隧道连接到网络之后要支付较高使用价格,因此在建立隧道时使用价格可能增加。处理单元301周期性地确定隧道201a和201d的使用价格是否小于阈值。如果隧道(例如,隧道201a)的使用价格变为大于阈值,那么处理单元301从第二隧道组移除隧道201a。当从第二隧道组移除隧道201a时,节点101使用隧道201d来接收数据。处理单元301还通过隧道201a和201d监视弃包率。当隧道(例如,隧道201d)的弃包率变为高于阈值时,处理单元301从第二隧道组移除隧道201d。在一个变型例中,隧道201a应该满足两个性能标准的阈值以保持在第二隧道组中。或者,隧道201a应该满足性能标准中的至少一个的阈值以保持在第二隧道组中。
根据本发明的一个实施例,隧道属于隧道组,但并未得到利用。仅示例性地,隧道201b、201b和201c属于第一隧道组并且隧道201a属于第二隧道组。第一隧道组用于将数据从节点101传输到节点102并且第二隧道组用于将数据从节点102传输到节点101。可能所有隧道201b、201b和201c不同时用于将数据从节点101传输到节点102。在一个变型例中,仅隧道201b、201b和201c中的一个用于传输数据,而另两个隧道用于备用或热故障恢复目标。在一个变型例中,隧道201b、201b和201c中的两个用于传输数据,而并不使用剩余的一个隧道。选择利用的隧道以及如何使用隧道的决策可以由节点101的管理员、节点102的管理员或操作节点101和102两者的系统操作员来预定义。可以在设定隧道之前、在隧道的建立期间和/或在建立隧道后的任何时间定义数据在所利用的隧道之中如何分配的决策。尽管此图示仅涉及第一隧道组和第一隧道组的隧道,但是其还适用于第二隧道组和第二隧道组的隧道。
在本发明的一个实施例中,仅通过节点101将优先级指派给隧道组中的每个隧道。例如,隧道201b、201c和201d属于第一隧道组。节点101将最高优先级指派给隧道201b、第二高优先级指派给隧道201c以及最低优先级指派给隧道201d。节点101在给定时间处使用属于第一隧道组的任两个隧道来传输数据。因此,由于隧道201b和201c比隧道201d具有较高优先级,因此在可能时节点101使用隧道201b和201c来传输数据。如果通过隧道201b的连接失败,那么节点101随后开始使用隧道201c和201d来传输数据。通过隧道201b的连接可能由于各种原因失败,例如通信量拥挤,隧道201b不具有足够容量、不具有网络覆盖或设备发生故障。或者,如果通过隧道201b的数据传输的性能显著退化,那么节点101停止使用隧道201b且开始使用隧道201c和201d来传输数据。
在另一实例中,隧道201a和201b属于第二隧道组。节点101将最高优先级指派给隧道201a且将最低优先级指派给隧道201b。例如,节点101配置有预定义的配置以将最高优先级指派给第二隧道组中的隧道201a,因为隧道201a通过卫星网络150建立。在另一实例中,节点101将最高优先级指派给第二隧道组中的隧道201a,因为隧道201a具有最高吞吐量和最大覆盖区域。如果通过隧道201a的连接失败,那么节点101开始使用隧道201b来接收数据。通过隧道201a的连接可能由于各种原因失败。例如,当卫星调制解调器161在室内移动时,其可以不直接指向卫星网络150且因此通过隧道201a的连接可能失败。在另一实例中,用于通过隧道201a接收数据的网络时延可能变得非常高并且连接可能由于高网络时延而失败。
根据一个或多个性能标准,将优先级指派给隧道组中的隧道或者优先级可以根据预定义的配置进行指派。预定义的配置可以由节点101的管理员或用户经由web接口、应用程序编程接口(API)、命令行接口或控制台输入。
当根据性能标准指派优先级时,节点101确定隧道组中的每个隧道的性能。例如,处理单元301可以将最高优先级指派给第一隧道组中的隧道201b,因为隧道201b具有最高吞吐量和最低弃包率。或者,处理单元301可以将最高优先级指派给第一隧道组中的隧道201b,因为隧道201b具有最低使用价格。
在本发明的一个实施例中,当隧道组中的隧道的性能退化时,不将隧道从隧道组中移除,但是节点101确定不使用所述隧道。例如,当属于第一隧道组的隧道(例如,隧道201b)的性能退化且变为不符合要求时,节点101停止使用隧道201b来传输数据,直到隧道201b的性能变为同样令人满意为止。隧道201b被标记为闲置的且节点101使用第一隧道组中的其它隧道(例如,隧道201c)来传输数据。节点101可以基于一个或多个性能标准确定隧道201b的性能已降低。例如,当通过隧道201b的数据传输的弃包率已显著增加时,节点101停止使用隧道201b来传输数据。
在另一实例中,当属于第二隧道组的隧道(例如,隧道201a)的性能退化且变为不符合要求时,节点101停止使用隧道201a来接收数据,直到隧道201a的性能再次变为令人满意为止。隧道201a被标记为闲置的且节点101使用第二隧道组中的其它隧道(例如,隧道201d)来接收数据。节点101可以基于一个或多个性能标准确定隧道201a的性能已退化。例如,当隧道201a的时延显著增加时,节点101停止使用隧道201a来接收数据。
不从隧道组移除性能已退化的隧道的益处包含节点101可在隧道的性能变为令人满意后再次开始使用所述隧道。处理单元301不需要再次确定所述隧道是否应该属于隧道组。
在一个实施例中,隧道可以属于第一隧道组和第二隧道组两者。例如,隧道201b属于第一隧道组和第二隧道组两者。隧道201b随后由节点101用于分别将数据传输到节点102以及从节点102接收数据。第一隧道组包括隧道201b和201c,并且第二隧道组包括隧道201a和201b。节点101使用隧道201b和201c来传输数据,以及隧道201a和201b来接收数据。换句话说,节点101仅使用隧道201c来传输数据,仅使用隧道201a来接收数据以及使用隧道201b来传输和接收数据。处理单元301可以选择隧道201b属于第一隧道组和第二隧道组两者,因为隧道201b具有非常好的性能,例如,高吞吐量、低弃包率、低时延、低使用价格或基于其它性能标准的良好性能。
当节点101的处理单元301或节点102的处理单元401确定隧道离开或加入隧道组时,新的隧道管理消息由处理单元发送以告知另一处理单元是否应该使用所述隧道以及如何使用所述隧道。
在一个变型例中,当隧道管理消息指示第一隧道组仅由节点101用于将数据传输到节点102时,不允许第一隧道组用于从节点101接收数据至节点102,即使已符合对应条件。类似地,当隧道管理消息指示第二隧道组仅由节点101用于从节点102接收数据时,不允许第二隧道组用于将数据传输到节点102,即使已符合对应条件。或者,新隧道管理消息由节点101或节点102发送,以更新第一隧道组和/或第二隧道组可以用于双向通信。或者,新隧道管理消息由节点101或节点102发送,以更新第一隧道组和/或第二隧道组不再用于双向通信且可以仅用于分别从节点101传输数据和/或通过节点101接收数据。
新的隧道管理消息的使用允许在已建立隧道之后改变第一隧道组和第二隧道组如何用于传输和接收数据的灵活性。在一个变型例中,新隧道管理消息用于管理一个或多个特定隧道,而不是隧道组。这允许隧道的更精细管理。
在一个变型例中,不需要在第一隧道组已用于将数据从节点102传输到节点101时传输隧道管理消息。这是因为以下事实:当数据已从第一隧道组到达节点101时,节点101能够确定节点102已确定使用第一隧道组来传输数据,而不需要隧道管理消息的协助。类似地,不需要在第二隧道组已用于将数据从节点101传输到节点102时传输隧道管理消息。
在一个变型例中,在节点101不再能够或不确定通过第二隧道组或第二隧道组的一个隧道接收数据的情况下,例如,在处于覆盖范围之外的情况下,节点101将通过使用隧道管理消息告知节点102不通过第二隧道组或第二隧道组的一个隧道进一步传输数据。类似地,在节点102不再能够或不确定通过第一隧道组或第一隧道组的一个隧道接收数据的情况下,例如,在重丢包率的情况下,节点102将通过使用隧道管理消息告知节点101不通过第一隧道组或第一隧道组的一个隧道进一步传输数据。
WAN接口选择
图6A和图6B是分别说明节点101将数据包传输到节点102以及从节点102接收数据包的本发明的一个实施例的两个流程图。
参考图1,在步骤601中,节点101首先选择节点101的第一个或多个WAN接口,例如,WAN接口121a、121b 121c和121d。当在步骤602中,节点101从主机或连接到其LAN接口122a和122b中的一个的节点接收数据包时,在步骤603中,所述节点将所述数据包封装成一个或多个封装包。本领域的普通技术人员将了解,封装数据包的步骤允许数据包通过隧道发送。在一个变型例中,步骤601和步骤602可以调换,使得在已接收到数据包之后执行WAN接口的选择。所选择的节点101的第一个或多个WAN接口主要用于将数据包从节点101传输到节点102。在一个变型例中,节点102不通过节点101的第一个或多个WAN接口将数据包传输到节点101。在一个变型例中,节点102通过节点101的第一个或多个WAN接口将少量包传输到节点101,并且所述包用于管理目标,例如,连接到第一个或多个WAN接口的连接的状态信息。
随后在步骤604中,节点101通过在步骤601中选择的第一个或多个WAN接口传输一个或多个封装包。所述第一个或多个WAN接口可以连接到有线或无线网络。
节点101还可以选择主要用于从节点102接收数据包的第二个或多个WAN接口。来自节点102的数据包可以是封装包。在一个变型例中,节点102仅通过节点101的第二个或多个WAN接口将数据包传输到节点101,使得节点101仅通过节点101的第二个或多个WAN接口从节点102接收数据包。在一个变型例中,节点102通过节点101的WAN接口(的确不属于节点101的第二个或多个WAN接口)将少量包传输到节点101;所述包用于管理目标,例如,传输健康检查包、连接到一个或多个WAN接口的连接的状态信息。因此,节点101仅通过节点101的WAN接口(不属于节点101的第二个或多个WAN接口)从节点102接收少量包。
在一个变型例中,节点101通过使用WAN接口管理消息发送第二个或多个WAN接口的节点102信息。在此情况下,所述信息包含节点101的WAN接口的标识,所述WAN接口对用于将数据包传输到节点101的节点102而言是优选的。因此,节点102可以将封装包的目标地址设定为节点101的优选WAN接口的地址。在一个变型例中,所述信息用作节点102的指令。在一个变型例中,节点102还单独确定节点101的哪些WAN接口应该用于从节点102接收数据包至节点101。
WAN接口管理消息的使用包含:告知节点102如何使用节点101的WAN接口;告知节点102何时通过节点101的特定WAN接口传输数据包。在一个变型例中,节点101从节点102接收WAN接口管理消息,用于管理一个或多个WAN接口。因此,WAN接口管理消息的使用还包含:告知节点101如何使用WAN接口;告知节点101何时通过特定WAN接口传输数据包。
如图6B所示,当在步骤611中,节点101通过WAN接口121a、121b、121c和121d中的一个从节点102接收封装包时,在步骤612中,节点101对封装包进行解封装以检索数据包。随后在步骤613中,节点101根据数据包的目标地址通过其LAN接口122a和122b中的一个将数据包传输到主机或节点。
优选的是,在步骤601处,节点101选择连接到具有小于150毫秒的网络时延的网络的第一个或多个WAN接口。这允许封装包快速到达节点102。因此,优选地不选择连接到卫星网络的WAN接口,因为卫星往返时间通常大于150毫秒。
在一个变型例中,分别在步骤603和步骤612中,由节点101执行的封装和解封装具体地允许数据通过一个或多个隧道传输到节点102以及从节点102接收到。一个或多个隧道可以经由一对WAN接口建立,例如,WAN接口121b和WAN接口131b。
在一个优选实施例中,节点102通过卫星网络(例如,通过隧道201a)将封装包传输到节点101。尽管卫星往返时间可以大于其它网络的往返时间,但是由卫星网络提供的带宽可以大于其它网络的带宽。此外,通过卫星网络将数据包和/或封装包传输到节点101对节点102的管理员而言可能更经济。
在一个变型例中,节点102的处理单元401确定节点101的哪些WAN接口用于将封装包从节点101传输到节点102。例如,节点102可以选择节点101的WAN接口121b。当节点102已做出WAN接口选择决策时,其将关于所述决策的WAN接口管理消息发送到节点101。在不具有WAN接口管理消息的情况下,节点101将不能够识别使用WAN接口121b将封装包传输到节点102的需要。
根据本发明的一个实施例,在步骤601中的WAN接口选择决策和用于节点102确定哪个WAN接口用于传输和接收封装包的WAN接口选择决策,可以根据以下项确定:连接到WAN接口的网络的网络性能、条件、网络覆盖范围、地理位置、网络使用价格等。
图6C是说明根据本发明的各种实施例的流程图。节点101分别将数据包传输到节点102以及从节点102接收数据包。节点101和节点102一起执行为连接到节点101的LAN接口122a和122b中的一个的主机或节点的代理服务器/网关。本领域的技术人员将了解,更新源地址、更新目标地址以及恢复原始目标地址的技术描述如下,一般来说由代理服务器或网关部署。
类似于图6A中所说明的流程图,在步骤631中,节点101首先选择一个或多个WAN接口,例如,WAN接口121a、121b 121c和121d。当在步骤632中,节点101从连接到其LAN接口122a和122b中的一个的主机或节点接收数据包时,在步骤633中,节点101将接收到的数据包的目标地址修改成节点102的WAN接口中的一个的地址。记录数据包的原始目标地址并且在传输数据包之前,将所述原始目标地址发送到节点102。原始目标地址用于节点102以恢复目标地址。
随后节点101通过在步骤634中选择的一个或多个WAN接口传输具有修改的目标地址的数据包。当节点102接收包时,节点102将目标地址恢复成原始目标地址且将数据包的源地址修改成节点102的一个WAN接口的地址,并且随后将数据包传输到原始目标地址。恢复原始目标地址的目标允许将数据包传输到原始目标地址。将数据包的源地址更新为节点102的一个WAN接口的地址的目标是允许原始目标地址的主机或节点能够使用节点102的一个WAN接口的地址,而不是使用节点101的一个WAN接口对所传输的数据包作出响应。当节点102接收所述响应时,其通过修改IP包的目标地址而将所述响应转发到节点101的一个WAN接口,所述IP包保持对节点101的WAN接口的地址的响应。当节点101接收保持所述响应的IP包时,节点101将IP包的源地址修改成原始目标地址的地址。
在一个变型例中,由节点101选择的用于将数据包传输到节点102的节点101的WAN接口以及由节点102选择的用于从节点102接收数据包的节点101的WAN接口可以相同或不同。例如,在步骤601中,节点101选择WAN接口121b来传输封装包,并且节点102选择WAN接口121a来接收对封装在封装包中的数据包的封装响应。类似地,例如在步骤631中,节点101选择WAN接口121c来传输数据包并且节点102选择WAN接口131c来将对数据包的响应传输到节点101。
图7说明根据本发明的各种实施例的网络配置。
节点702可以执行为用于节点101的网关、VPN网关或代理服务器,使得例如节点101、主机103b、互连网络117中的主机和节点以及主机103a可以通过节点702传输和接收数据。
根据本发明的一个实施例,节点101经配置以使用第一个或多个WAN接口来将包发送到节点702以及使用第二个或多个WAN接口来从节点702接收包。例如,节点101使用WAN接口121b和121c来将数据包发送到节点702,并且使用WAN接口121a从节点702接收数据包。节点101可以由管理员或网络运营商配置,例如,卫星网络150的运营商和无线网络180的运营商。在一个实例中,由于已配置节点101使用哪些WAN接口,因此不需要执行步骤601,因为不存在执行WAN接口选择。
图8说明节点702执行为主机103b的网关以与互连网络171中的主机通信的实例的通信步骤。
图9说明在图8的每个通信步骤处传输的IP包的结构。当主机103b将IP包901传输到互连网络171中的主机时,在步骤801中,主机103b首先将IP包901传输到节点101。IP包901可以用于服务请求、数据传送或任何其它目的。图9中说明IP包901的结构。在IP包901中,有效负载字段用于保存数据。标头部分具有目标地址字段和源地址字段。目标地址字段是互连网络171中的主机的IP地址。源地址字段是主机103b的IP地址。
在节点101已在通信步骤801中接收IP包901时,节点101将IP包901封装在IP包902中。由于节点101具有多个WAN接口,因此节点101可以选择WAN接口中的任一个来传输IP包902。或者,节点101可以选择已在IP包901已到达之前确定或配置的WAN接口。例如,节点101基于以下项选择WAN接口:通过节点101的管理员输入的配置;WAN接口所连接到的连接的时延;通过节点101的管理员输入的条件;以及从远程服务器或节点接收到的指令。
示例性地,节点101选择WAN接口121b,随后在通信步骤802中,通过连接到WAN接口121b的无线调制解调器将IP包902传输到无线网络180。IP包902的有效负载字段存储IP包901。IP包902的标头部分具有目标地址字段和源地址字段。IP包902的目标地址字段是节点702的WAN接口703的IP地址。IP包902的源地址字段是节点101的WAN接口121b的IP地址。
由于WAN接口703通过路由器704可达,因此在通信步骤803中,无线网络180将IP包902路由到路由器704。无线网络180可以通过私有互连网络或公共互连网络连接到路由器704。例如,如果节点702和无线网络180由相同管理员操作,那么无线网络180可以通过到路由器704的直接连接路由IP包902。另一方面,如果节点702和无线网络180不由相同管理员操作,那么一般来说,IP包902将通过公共互连网络被路由到路由器704。
当路由器704接收IP包902时,在通信步骤804中,所述路由器将IP包902路由到WAN接口703。在一个变型例中,路由器704执行为具有网络地址转换(NAT)能力的网关或代理服务器并且随后因此更新IP包902的目标地址。
当节点702接收IP包902时,其对IP包902进行解封装以检索IP包901。在检查IP包901的目标地址之后,节点702在IP包901的源地址上执行网络地址转换(NAT)。修改后的IP包901是IP包903。因此,IP包903是基于IP包901的。IP包903的源地址是WAN接口703的IP地址。因此,如果互连网络171中的主机作出回复,那么WAN接口703可以接收所述回复。IP包903的目标地址与IP包901的目标地址相同,所述IP包901的目标地址是主机103b尝试将IP包901发送到的互连网络171中的主机的IP地址。随后在通信步骤805中,节点702将IP包903传输到路由器704。
当路由器704接收IP包903时,在通信步骤806中,所述路由器将IP包903路由到互连网络171中的主机。在一个变型例中,路由器704执行为具有NAT能力的网关或代理服务器,并且随后因此更新IP包903的源地址。
当互连网络171中的主机接收IP包903时,主机可以作出或可以不作出回复。如果主机作出回复,那么在通信步骤807中,其应该用至少一个IP包(例如,IP包904)来回复。IP包904的目标地址和源地址分别是WAN接口703的IP地址和互连网络171中的主机的IP地址。
当路由器704接收IP包904时,在通信步骤808中,所述路由器将IP包904路由到节点702。在一个变型例中,路由器704执行为具有NAT能力的网关或代理服务器,并且随后因此更新IP包904的目标地址。
当节点702接收IP包904时,其在IP包904上执行NAT。因此,已修改IP包904且修改后的IP包904的目标地址变为主机103b的IP地址。随后节点702将修改后的IP包904封装在IP包905中且随后在通信步骤809处将IP包905传输到路由器704。IP包905的有效负载字段存储修改后的IP包904。因此,IP包905是基于IP包904的。IP包905的标头部分具有目标地址字段和源地址字段。IP包905的目标地址字段是节点101的一个WAN接口的IP地址。示例性地,节点702选择WAN接口121a。因此,IP包905的目标地址字段是WAN接口121a的IP地址。IP包905的源地址字段是WAN接口703的IP地址。
由于可以存在连接到节点101的多个WAN接口的一个以上连接,因此节点702可以选择节点101的一个WAN接口来将IP包905传输到节点101。或者,节点702可以选择已在IP包904已到达之前确定或配置的WAN接口。例如,节点702基于以下项选择节点101的WAN接口:通过节点702的管理员输入的配置;WAN接口所连接到的连接的时延;通过节点702的管理员输入的条件;以及从远程服务器或节点接收到的指令。
当路由器704接收IP包905时,在通信步骤810中,所述路由器通过卫星调制解调器160将IP包905路由到卫星网络150。在一个变型例中,路由器704执行为具有NAT能力的网关或代理服务器,并且随后因此更新IP包905的目标地址。在通信步骤811中,卫星调制解调器160将IP包905传输到卫星网络150,所述卫星网络随后将IP包905传输到卫星调制解调器161。卫星调制解调器161在通信步骤812中通过连接媒体113将IP包905转发到节点101。
当节点101接收IP包905时,其对IP包905进行解封装以检索修改后的IP包904,所述修改后的IP包与IP包906相同,并且随后在通信步骤813中根据IP包906的标头中的目标地址将IP包906传输到主机103b。
图8中示出的通信步骤说明节点101的不同WAN接口用于传输和接收IP包,即使IP包属于相同会话。
本领域的技术人员将了解,当路由器704执行NAT时,路由器704可能需要使用状态数据库来记录转换并且状态数据库一般存储于路由器704的存储单元中。
在一个变型例中,当在步骤808之后节点702接收IP包904时,所述节点不会在IP包904上执行NAT。因此,IP包904未进行修改并且IP包905封装IP包904,而不是修改后的IP包904。在步骤812后,IP包904的地址的目标通过节点101改变至IP包906。这允许NAT由节点101执行,而不是由节点702执行。这样可以减少节点702的计算资源要求。
根据本发明的一个实施例,节点101发送WAN接口管理消息以告知节点702其应该将IP包传输到节点101的哪个WAN接口。WAN接口管理消息包括WAN接口标识字段和指令字段。例如,仅示例性地,WAN接口121a和121d可以由节点101用于从节点702接收IP包,而WAN接口121b和121c无法由节点101用于从节点702接收IP包。WAN接口管理消息包括WAN接口标识字段和指令字段中的WAN接口121a和121d的标识,其保存WAN接口121a和121d可以由节点101用于从节点702接收IP包而WAN接口121b和121c无法由节点101用于从节点702接收IP包的信息。在步骤809中,可以在通过节点702传输IP包905之前任何时候发送WAN接口管理消息。在另一实例中,节点101的WAN接口的标识(其用于节点101将IP包传输到节点702)存储于WAN接口字段中并且此(这些)WAN接口仅用于传输的指令存储于指令字段中。
在一个变型例中,WAN接口管理消息包括指令字段中指示WAN接口是用于传输和接收两者还是仅用于传输或仅用于接收的指示符。例如,示例性地,所述指示符可以由位、多个位、字节、多个字节、字符串、多个字符串、XML消息等表示。本领域的技术人员将了解,用于表示指示符的有多种方法。
在一个变型例中,通过节点101或节点702中的一个确定和传输WAN接口管理消息。因此,节点101的哪个WAN接口用于发射和/或接收IP包的决策通过节点101或节点702确定。例如,节点101的管理员可以确定节点101和节点702的哪个(哪些)WAN接口用于传输和/或接收IP包。因此,WAN接口可以被设定为单向传输、单向接收或双向。
在一个变型例中,WAN接口管理消息包括WAN接口的状态信息。状态信息可以是存储在指令字段中的信息的一部分。在一个变型例中,状态存储在WAN接口管理消息的状态字段中。例如,当节点101关于WAN接口的状态更新节点102时,节点101将具有状态字段中的WAN接口状态的WAN接口管理消息发送到节点102。WAN接口标识字段保存对应WAN接口的标识。在这种情况下,指令字段可以是空的,因为WAN接口管理消息用于状态报告目标。
根据本发明的一个实施例,在两个节点的两个WAN接口之间建立一个或多个隧道并且当选择WAN接口用于传输和接收、仅传输或仅接收时,通过选定WAN接口建立的对应一个或多个隧道将受WAN接口管理消息的影响。例如,当WAN接口121a可以仅用于从节点702接收IP包并且无法用于将IP包传输到节点702时,通过WAN接口121a至WAN接口705建立的一个或多个隧道也可以仅用于从节点702接收IP包并且无法用于将IP包传输到节点702。
根据本发明的一个实施例,节点的管理员确定阐述节点的WAN接口以及另一节点的WAN接口的WAN接口对,使得在WAN接口对中阐述的WAN接口用于传输和接收、仅传输或仅接收两个节点之间的IP包。例如,管理员确定仅用于从WAN接口703接收IP包的WAN接口对、WAN接口121a和WAN接口703。在另一实例中,管理员确定WAN接口对、WAN接口121d和WAN接口703是双向的,使得WAN接口121和WAN接口703可以用于将IP包传输到彼此以及从彼此接收IP包。
根据一个实施例,节点(例如,节点102)将通过主机(例如,主机103a或103b)的访问介导到互连网络172。在一个实例中,节点102终止在开放式系统互连(OSI)参考模型或TCP/IP模型的应用层处的进入访问请求和连接。在此实例中,节点102充当应用层代理服务器来防止互连网络172中的资源直接暴露于连接到节点101的主机。节点102接收封装在包中的进入访问请求,对访问请求进行解封装以到达底层应用数据以及将包括访问请求的应用数据发送到互连网络172。
在另一实例中,节点102允许OSI参考模型或TCP/IP模型的层之间的直接连接。在此实例中节点102使用与请求主机(例如,主机103a或103b)协商的安全信道来交换数据。节点102经由隧道201a、201b、201c或201d中的一个接收安全请求,并且代表请求主机(即,主机103a或103b)向互连网络172发出请求以在请求主机与互连网络172之间建立数据连接。
图10说明用于配置节点101的网页。可以在便携式计算机、桌上型计算机、手持式计算装置、移动电话或能够显示网页1001的任何装置的显示器上显示网页1001。网页1001具有两个部分:VPN设定档1011和WAN连接优先级1012。管理员可以输入使用VPN设定档1011设定VPN以及配置WAN连接优先级1012中的WAN接口的数据的优先级、传输和接收所需的信息。所述信息用于创建属于VPN的一个或多个隧道。例如,所述信息用于创建多个隧道并且多个隧道被聚合以形成用于VPN的一个聚合的隧道。本领域的技术人员将了解,所需信号包含安全信息、身份信息和加密信息。在一个变型例中,从远程管理服务器、耦合到节点101的安全装置或预配置的数据库中检索所需信息。这样减少了管理员通过网页手动输入所需信息的负担。
WAN连接优先级1012具有三个主要部分:WAN接口标识1021、优先级选择1022和方向选择1031至1033。由于节点101具有四个WAN接口,因此WAN接口标识1021具有示出的四个WAN接口。例如,WAN接口标识1021中的“WAN 1”、“WAN 2”、“WAN 3”和“WAN 4”分别对应于WAN接口121a、121b、121c和121d。优先级选择1022用于配置WAN接口的优先级。例如,“WAN 1”的优先级被配置成“关闭”,使得处理单元301将不使用WAN接口121a来传输或接收数据业务。由于“WAN 2”、“WAN 3”、“WAN 4”的优先级被配置成“最高”,因此处理单元301使用具有相同优先级的WAN接口121b、121c和121d。方向选择1031被配置成“仅向上”,使得处理单元301仅使用WAN接口121b来传输数据。方向选择1032被配置成“仅向下”,使得处理单元301仅使用WAN接口121c来接收数据。方向选择1033被配置成“仅向上/向下”,使得处理单元301使用WAN接口121d来传输和接收数据。
在一个变型例中,从远程管理服务器、耦合到节点101的安全装置或预配置的数据库中检索用于配置WAN连接优先级1012的信息。这样减少了管理员通过网页手动输入所需信息的负担。
用于配置节点102的网页类似,且WAN接口标识1021中的WAN接口的数目将为三个,因为节点102具有三个WAN接口。
图11说明用于配置节点101的网页。网页1101的设计类似于网页1001的设计。网页1101具有两个部分:VPN设定档1111和隧道优先级1112。管理员可以输入使用VPN设定档1111设定VPN以及配置隧道优先级1112中的隧道数据的优先级、传输和接收所需的信息。在设定VPN所需的信息相同的情况下,VPN设定档1111可以与VPN设定档1011相同。
隧道优先级1112具有三个主要部分:隧道标识1121、优先级选择1122和方向选择1131至1133。由于节点101具有与节点102建立的四个隧道,因此隧道标识1121具有示出的四个隧道。例如,隧道标识1121中的“隧道A”、“隧道B”、“隧道C”和“隧道D”分别对应于隧道201a、201b、201c和201d。优先级选择1122用于配置隧道的优先级。例如,“隧道A”的优先级被配置成“关闭”,使得节点101将不使用隧道201a来传输或接收数据业务。由于“隧道B”、“隧道C”、“隧道D”的优先级被配置成“最高”,因此处理单元301使用具有相同优先级的隧道201b、201c和201d。方向选择1131被配置成“仅向上”,使得节点101仅使用隧道201b来传输数据。方向选择1132被配置成“仅向下”,使得节点101仅使用隧道201c来接收数据。方向选择1133被配置成“仅向上/向下”,使得节点101使用隧道201d来传输和接收数据。
在一个变型例中,从远程管理服务器、耦合到节点101的安全装置或预配置的数据库中检索用于配置隧道优先级1112的信息。这样减少了管理员通过网页手动输入所需信息的负担。
用于配置节点102的网页类似,且隧道标识1121中的隧道数目将相同,因为在节点101与102之间建立的隧道数目也是四个。
在一个变型例中,代替在隧道标识1121中示出隧道标识,在隧道标识1121中示出节点101和节点102的WAN接口。由于可以在节点101的一个或多个WAN接口与节点102的一个或多个WAN接口之间建立隧道,因此隧道标识可以由用于建立隧道的WAN接口来替换。
本发明的优选实施例的前述描述提供说明以及描述,但并不意欲为穷尽性的或将本发明限于所揭示的精确形式。鉴于以上教示的修改和改变是可能的,或可以从本发明的实践中获得修改和改变。