通过聚合连接传输数据包的方法和系统与流程

文档序号:11162107阅读:757来源:国知局
通过聚合连接传输数据包的方法和系统与制造工艺

本发明总体涉及计算机网络领域。更具体地,本发明涉及通过包括多个隧道的聚合连接的隧道在第一网络节点处传输所接收的数据包的方法和系统。可根据所接收的数据包的会话信息选择隧道。



背景技术:

多广域网(WAN)站点到站点VPN路由器是支持将多个互连(例如,用于访问一个或多个远程专用网络的WAN连接或隧道)的带宽聚合的路由器。在一些实施方案中,当在聚合连接中存在多个可用隧道时,每个会话的数据包可被路由至多个隧道,以便利用多个隧道的带宽。例如,在基于会话的站点到站点的虚拟专用网络(VPN)连接中,VPN流量被路由至两个站点(例如,站点A和站点B)之间的多个WAN连接。

在一些情况下,当通过聚合连接的不同隧道传输相同会话的数据包时,数据包所经历的性能可能不令人满意。这可能由于干扰而发生。当例如在公共区域中的无线通信中信号质量不好时,这更可能发生。因此,需要一种即使在其他隧道可用时,也使属于特定会话的数据包通过相同隧道传输的解决方案。使用仅一个隧道来传输特定会话的数据包的另一个优点是,其使得特定会话的所有数据包经历类似的性能。



技术实现要素:

本发明公开了通过聚合连接在第一网络节点处传输所接收的数据包的方法和系统。聚合连接包括在第一网络节点和第二网络节点之间建立的多个隧道。第一网络节点确定所接收的数据包的会话信息,并确定是否需要选择新的隧道用于传输所接收的数据包。当需要选择新的隧道时,确定散列结果(hash result)。散列结果基本上基于会话信息和可用隧道的数量。根据散列结果确定用于传输所接收的数据包的第一隧道。随后,将会话信息和第一隧道的相应的隧道ID存储在第一数据库中,并且通过第一隧道传输所接收的数据包。作为替代,当不需要选择新的隧道时,基本上基于会话信息来执行查找以确定隧道ID。随后,基于隧道ID来确定用于传输所接收的数据包的隧道,并且通过所确定的隧道来传输所接收的数据包。

根据实施例之一,会话信息至少部分基于源IP地址、目的IP地址、源MAC地址、目的MAC地址、VLAN标签、源端口号和目的端口号中的一个或多个。

根据实施例之一,当所接收的数据包是会话的第一个(即,在该会话的其他数据包当中最早地接收到所接收的数据包)时,选择新的隧道。根据实施例之一,当已经用于传输一个或多个会话的第二隧道被丢弃、中断或终止时,选择新的隧道。当第二隧道被丢弃、中断或终止时,可分别为所述一个或多个会话选择一个或多个新的隧道。当第三隧道的性能恶化时,也可以选择新的隧道,其中第三隧道已经用于传输一个或多个会话。

根据实施例之一,可用隧道被分配有权重。根据策略分配权重,策略基于以下标准中的一个或多个:隧道的性能、服务提供商、使用限制、位置、时间、使用价格、安全性、用户身份、互联网协议地址范围、通信协议、通信技术、应用和装置。

根据实施例之一,第一网络节点将会话信息和第一隧道的相应的隧道ID发送至第二网络节点。第二网络节点将会话信息和第一隧道的相应的隧道ID存储在第二数据库中。随后,第二网络节点通过第一隧道向第一网络节点传输具有会话信息的数据包。

具体实施方式

随后的描述仅提供了(多个)优选示例性实施例,不旨在限制本发明的范围、适用性或配置。相反,随后对(多个)优选示例性实施例的描述将为本领域技术人员提供用于实现本发明的优选示例性实施例的可实现描述。应当理解,在不脱离如所附权利要求中所述的本发明的精神和范围的情况下,可对元件的功能和布置做出各种改变。

在以下描述中给出具体细节以提供对实施例的透彻的理解。然而,本领域普通技术人员应当理解,也可在没有这些具体细节的情况下实践实施例。例如,可以以框图的形式示出电路,以便不以不必要的细节使实施例模糊不清。在其他情况下,可在没有不必要的细节的情况下示出公知的电路、处理、算法、结构和技术,以避免使实施例模糊不清。

此外,应当注意,可将实施例描述为以流程图、流程图表、数据流图、结构图或框图描述的处理。虽然流程图可将操作描述为顺序的处理,但是许多操作可以并列或同时地执行。此外,操作的顺序可重新排列。处理在其操作被完成时终止,但可具有未包括在附图中的附加步骤。处理可与方法、函数、过程、子例程、子程序等相对应。当处理与函数相对应时,其终止与函数返回至调用函数或主函数相对应。

实施例或其部分可体现在可在用于执行如本文中所述的功能和操作的处理单元上操作的程序指令中。构成各实施例的程序指令可存储在存储介质中。

构成各实施例的程序指令可存储在存储介质中。此外,如本文中所述,术语“存储介质”可表示用于存储数据的一个或多个装置,包括只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、随机存取存储器(RAM)、磁性RAM、磁芯存储器、软式磁碟片、软盘、硬盘、磁带、CD-ROM、闪速存储器装置、存储卡和/或用于存储信息的其它机器可读介质。术语“机器可读介质”包括但不限于便携式或固定存储装置、光学存储介质、磁性介质、存储器芯片或内存匣、无线信道和能够存储、容纳或携带指令和/或数据的各种其它介质。机器可读介质可以通过虚拟化来实现,并且可以是包括基于云的实例中的虚拟机可读介质的虚拟机可读介质。

如本文所使用的术语“计算机可读介质”、“主存储器”或“辅助存储器”指的是参与向处理单元提供以供执行的指令的任何介质。计算机可读介质仅是机器可读介质的一个示例,其可携带用于实现本文中所述的任何方法和/或技术的指令。这种介质可采取多种形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质包括例如光盘或磁盘。易失性介质包括动态存储器。传输介质包括同轴电缆、铜线和光纤。传输介质还可以采取诸如在无线电波和红外数据通信期间产生的声波或光波的形式。

易失性存储器可用于在处理单元执行指令期间存储临时变量或其它中间信息。非易失性存储器或静态存储器可用于存储用于处理器的静态信息和指令以及各种系统配置参数。

存储介质可包括可被实现为要被使用任何合适的计算机指令类型的处理单元执行的软件代码的多个软件模块。软件代码可被存储为一系列指令或命令,或者作为程序被存储在存储介质中。

各种形式的计算机可读介质可涉及将一个或多个指令中的一个或多个序列携带至处理器以供执行。例如,指令最初可从远程计算机携带至磁盘之上。作为替代,远程计算机可将指令加载至其动态存储器中,并且将指令发送至运行一个或多个指令的一个或多个序列的系统。

处理单元可为微处理器、微控制器、数字信号处理器(DSP)、这些装置的任意组合或者被配置为处理信息的任何其它电路。

处理单元执行用于实现本发明的实施例的程序指令或代码段。此外,实施例可由硬件、软件、固件、中间件、微码、硬件描述语言或它们的任意组合实现。当在软件、硬件、中间件或微码中实现时,用于执行必要任务的程序指令可被存储在计算机可读存储介质中。处理单元可以通过虚拟化来实现,并且可以为包括基于云的实例中的虚拟处理单元的虚拟处理单元。

本发明的实施例涉及用于实现本文所描述的技术的计算机系统的使用。在实施例中,本发明的处理单元可驻留在诸如计算机平台的机器上。根据本发明的一个实施例,通过计算机系统响应于处理单元执行包含在易失性存储器中的一个或多个指令中的一个或多个序列来执行本文所述的技术。这种指令可从另一个计算机可读介质读入易失性存储器中。包含在易失性存储器中的指令的序列的执行使得处理单元执行本文中所述的处理步骤。在替代实施例中,可使用硬连线电路来代替软件指令或与软件指令组合用以实现本发明。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。

诸如程序指令的代码段可表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任意组合。代码段可通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦接至另一个代码段或硬件电路。信息、自变量、参数、数据等可经由包括存储器共享、消息传递、令牌传递、网络传输等的任何合适的方法被传递、转发或传输。

作为替代,可使用硬连线电路来代替软件指令或与软件指令组合以实现符合本发明的原理的处理。因此,符合本发明的原理的实现方式不限于硬件电路与软件的任何特定组合。

可由节点提供的网络接口为以太网接口、帧中继接口、光纤接口、电缆接口、DSL接口、令牌环接口、串行总线接口、通用串行总线(USB)接口、火线接口、外围部件互连(PCI)接口等。

网络接口可由独立的电子部件实现,或者可与其它电子部件集成。根据配置,网络接口可不具有网络连接或具有至少一个网络连接。网络接口可为以太网接口、帧中继接口、光纤接口、电缆接口、数据用户线路(DSL)接口、令牌环接口、串行总线接口、通用串行总线(USB)接口、火线接口、外围部件互连(PCI)接口、蜂窝网络接口等。

网络接口可连接至有线接入网络或无线接入网络。接入网络可携带一个或多个网络协议数据。可使用以太网、光纤、电缆、DSL、帧中继、令牌环、串行总线、USB、火线、PCI或可以传递信息的任何材料来实现有线接入网。可使用红外、高速分组接入(HSPA)、HSPA+、长期演进(LTE)、WiMax、通用分组无线服务(GPRS)、全球移动通信系统(GSM)、增强型GSM演进数据速率(EDGE)、码分多址(CDMA)、WiFi、CDMA2000、宽带CDMA(WCDMA)、时分CDMA(TD-SCDMA)、蓝牙、WiBRO、演进数据优化(EV-DO)、数字增强无绳通信(DECT)、数字AMPS(IS-136/TDMA)、集成数字增强网络(iDEN)或任何其它无线技术来实现无线接入网络。例如,网络接口可用作局域网(LAN)接口或广域网(WAN)接口。

实施例或其部分可以以计算机数据信号的形式来体现,该计算机数据信号可以为用于通过传输介质进行通信的任何合适的形式,使得其可由用于执行本文中所述的操作的功能装置(例如,处理单元)读取以供执行。计算机数据信号可包括可以通过诸如电子网络信道、光纤、空气、电磁介质、射频(RF)链路之类的传输介质进行传播的任何二进制数字电子信号,因此,该数据信号可为电信号、光信号、射频或其它无线通信信号等形式。在某些实施例中,代码段可经由诸如互联网、内联网、LAN、城域网(MAN)、广域网(WAN)、公共交换电话网(PSTN)、卫星通信系统、电缆传输系统之类的计算机网络下载。

图1A示出了作为根据本发明的各实施例的网络环境的系统100。可通过互连网络110在网络节点106和网络节点108之间建立多个隧道。多个隧道可被结合或聚合以形成聚合连接。主机111和膝上型计算机112可通过网络节点106的一个或多个网络接口连接至网络节点106。主机111和膝上型计算机112可位于网络节点106的局域网(LAN)中。类似地,主机121和服务器122可通过网络节点108的一个或多个网络接口连接至网络节点108。主机121和服务器112可位于网络节点108的LAN中。网络节点106可通过网络节点106的一个或多个广域网(WAN)接口连接至互联网络110,并且网络节点108可通过网络节点108的一个或多个WAN接口连接至互连网络110。

多个隧道可被聚合、结合或绑定在一起以形成一个聚合的连接。本领域技术人员应当理解,存在大量方式来聚合、结合或绑定多个隧道以形成一个聚合连接。聚合连接被正在使用它的会话或应用程序视为一个连接。聚合连接可被视为隧道、虚拟专用网络或面向连接或者无连接的连接。例如,聚合连接是传输控制协议(TCP)连接。在另一个示例中,聚合连接是用户数据报协议(UDP)连接。在另一个示例中,聚合连接是多个隧道的聚合,并且每个隧道建立在网络节点106和网络节点108之间。在另一个示例中,聚合的端到端连接是包括多个隧道的VPN隧道,并且每个隧道建立在网络节点106和网络节点108之间。

图1B示出了根据示出网络节点106和网络节点108之间的隧道的实施例所适用的系统100。当比如通过实现绑定的站点到站点VPN连接在站点102和站点104之间建立绑定的连接时,可创建M×N个虚拟隧道116。站点102和网络节点106可包括M个连接112,并且站点104和网络节点108可包括N个连接114。连接112和连接114是用于在站点102和站点104之间的互连网络110内传达信息的接入连接。在所示实施例中,M等于3且N等于2;然而,这些值可根据期望的装置和配置而变化。连接112和连接114可具有类似的或不同的带宽能力。此外,连接112和连接114可包括不同类型的WAN连接,比如,WiFi、电缆、DSL、Tl、3G、4G、LTE、卫星连接等。还应当注意,站点102和站点104可被认为是既是发送方又是接收方,并且关于任一个站点的功能的讨论可在另一个站点上实现。换言之,系统100可被实现为对称网络。虚拟隧道116与站点102的网络连接和站点104的网络连接的唯一的排列相对应。在网络节点106和网络节点108之间形成聚合连接。连接112和连接114体现为逻辑连接。

主机111和膝上型计算机112可位于站点102中,并且主机121和服务器122可位于站点104中。

主机(比如主机111和主机121)可为计算装置、膝上型计算机、移动电话、智能电话、台式计算机、个人数字助理或能够连接至网络节点和互连网络的任何其它电子装置。

服务器122可为数据库服务器、文件服务器、邮件服务器、打印服务器、网络服务器、游戏服务器、应用程序服务器等。服务器122是可通过互连网络110或任何其它网络且通过网络节点108连接至一个或多个客户端的计算装置。服务器121还可以是虚拟化服务器。

图2是根据本发明的实施例之一的网络节点(比如,网络节点106)的说明性框图。网络节点106包括处理单元201、主存储器202、系统总线203、辅助存储器204和多个网络接口205。处理单元201和主存储器202彼此直接连接。系统总线203将处理单元201直接地或间接地连接至辅助存储器204和多个网络接口205。使用系统总线203使得网络节点106具有增加的模块性。系统总线203将处理单元201耦接至辅助存储器204和多个网络接口205。系统总线203可以是使用各种总线架构中的任何一种的包括存储器总线、外围总线和局域总线的若干种类型的总线结构中的任何一种类型。辅助存储器204存储由处理单元201执行的程序指令。

网络节点108可具有与如图2中所示的网络节点106的框图基本相同的框图。

网络节点106和网络节点108可用作网关、路由器、交换机、接入点、集线器、网桥等。

图3是示出根据本发明的实施例之一的处理的流程图。图3的处理可在网络节点106处执行。在步骤301中,当网络节点106接收到来自主机111或膝上型计算机112的数据包时,在步骤302中,网络节点106的处理单元201确定该数据包的会话信息。关于会话信息的细节稍后讨论。在步骤303中,基于数据包的会话信息选择第一隧道来传输数据包。随后,在步骤304中,网络节点106通过第一隧道将数据包传输至网络节点108。

出于各种原因,优选地,通过相同的隧道传输相同会话的数据包。

原因之一是当属于会话的数据包通过相同的隧道传输时,数据包可能经历类似的诸如延迟、带宽之类的网络性能。因此,数据包可能按序到达网络节点108。本领域技术人员应当知道,对于某些协议(比如,TCP)而言,当一个或多个数据包丢失时,接收端可假定该一个或多个数据包被丢弃。在顺序上比该一个或多个丢失的数据包靠后的数据包可能已经到达接收端。由于传输端没有接收到与该一个或多个丢失的数据包相对应的任何确认,所以其可再次开始传输该一个或多个丢失的数据包,并且还可再次传输在顺序上靠后的数据包。由于在顺序上靠后的数据包被接收了两次,所以可能会浪费资源。为了避免这种情况,通过相同的隧道传输相同会话的数据包。

另外一个原因是:对特定会话同时使用两个或多个隧道,在传输属于该特定会话的数据包时所经历的性能可能由于干预而不令人满意。当(例如,在公共区域中的无线通信中)信号质量不好时尤其如此。可能存在这样一种情况,当属于特定会话的数据包通过相同隧道传输(即,在给定时间仅使用一个隧道)时,传输数据包时所经历的性能可能更好。出于这个原因,可能期望向会话分配隧道,使得属于该会话的数据包仅通过所选择的隧道传输。

在一个示例中,可通过检查数据包的报头来确定会话信息。基于源地址、目的地址、协议、端口号等可使用数据包的报头来确定会话信息。还可使用深度数据包检查技术来执行该确定处理从而检查数据包的有效载荷。例如,为了确定超文本传输协议(HTTP)会话的会话信息,可通过检查数据包的HTTP信息中的统一资源定位符(URL)或通过检查数据包的有效载荷中的数据来检查数据包的有效载荷。

数据包可能不属于任何会话。例如,如果数据包是地址解析协议(ARP)数据包或互联网控制消息协议(ICMP)数据包,则数据包不属于任何会话。当数据包不属于任何会话时,可随机选择用于传输该数据包的隧道。作为替代,可由用户或管理员预先定义用于传输不属于任何会话的数据包的特定隧道。UDP数据包可属于或不属于会话。本领域技术人员应当理解,存在许多通过检查源地址、目的地址和/或端口号来确定UDP数据包所属会话的方式。本领域技术人员还应当理解,UDP数据包的有效载荷中的内容可用于确定UDP数据包所属的会话。不限于仅通过数据包的报头和/或TCP/UDP的报头中的信息来识别会话。可采用DPI技术来确定会话。

在一个变型中,例如,使用数据包的源IP地址来确定会话信息。源IP地址可被转换成可为会话信息的整数值,随后,该整数值用于确定应当通过其传输数据包的第一隧道。因此,即使具有相同源IP地址的数据包属于不同的会话,它们也可能会通过相同隧道来传输。然而,属于特定会话的数据包可总是通过相同的隧道传输,因为它们的源IP地址可能相同。例如,膝上型计算机112与服务器122建立文件传输协议(FTP)会话。当属于FTP会话的数据包从膝上型计算机112到达网络节点106时,源IP地址被识别为膝上型计算机112的IP地址,并且根据该会话信息,可为该FTP会话选择第一隧道。膝上型计算机112可与主机121建立视频会议会话,并且当属于该视频会议会话的数据包从膝上型计算机112到达网络节点106时,源IP地址被识别为膝上型计算机112的IP地址。基于会话信息为传输属于视频会议的数据包而选择的隧道可以与为传输属于FTP会话的数据包而选择的隧道相同或不相同,即使会话信息(例如,源IP地址)相同。这是因为由于在选择隧道之前将选择处理应用于会话信息,因此当在不同时间执行图3的处理时,步骤303中的确定结果可能不同。

在另一个变型中,使用数据包的源IP地址和目的IP地址来确定会话信息。源IP地址和目的IP地址的组合可被转换成可为会话信息的整数值。随后,使用该会话信息来确定应当通过其来传输数据包的第一隧道。具有相同源IP地址和相同目的IP地址的数据包可通过相同的隧道传输。

在另一个变型中,在确定会话信息时也考虑数据包的端口号。当数据包具有相同的端口号时,这可以是数据包属于相同应用的指示。源IP地址、目的IP地址、目的端口号和/或源端口号的组合可被转换成可为会话信息的整数值。

在一些情况下,当数据包不是IP数据包而是第二层数据包(layer two packet)时,可使用源MAC地址和/或目的MAC地址来确定会话信息。对于通过一个(一些)虚拟LAN传输的数据包或帧,可使用可封装数据包(比如,IP数据包)的以太网帧的VLAN标签来确定会话信息。例如,当主机111将以太网帧从其VLAN中的一个处发送至网络节点106时,可使用以太网帧的VLAN标签来确定会话信息。会话信息还可基于VLAN标签和主机的MAC地址的组合。在另一个示例中,当以太网帧封装IP数据包时,会话信息可基于源IP地址(IP数据包中指定的主机的IP地址)、VLAN标签、MAC地址或它们中两个或更多个的组合。类似地,会话信息还可基于目的IP地址、目的MAC地址、目的地的VLAN标签或它们中的两个或更多个的组合中的一个或多个。

根据本发明的实施例之一,网络节点106通过将数据包封装在封装数据包中来在步骤304中将数据包传输至网络节点108。随后,将封装数据包传输至网络节点108。当封装数据包到达网络节点108时,网络节点108可将封装数据包解封装以重新得到该数据包。随后,通过网络节点108将该数据包发送至该数据包的目的地。

将数据包封装在封装数据包中的目的之一是当在聚合连接的另一端处接收到该封装数据包时对数据包重新排序,因为封装数据包可能会乱序到达。数据包还可具有不同的协议,并且可以被封装在封装数据包内以满足聚合连接的协议要求。

图4是示出根据本发明的实施例之一的处理的流程图。步骤403至步骤407是执行图3的步骤303时所涉及的详细步骤。在步骤302中确定会话信息之后,在步骤403中处理单元201确定是否之前已经接收了属于相同会话的任何其他数据包,即该数据包是否是会话的第一个,以及该数据包是否是在会话的其他数据包中被最早接收的。如果该数据包是会话的第一个数据包,则在步骤404中,处理单元201通过将散列处理应用于会话信息来执行选择处理,并且产生散列结果。在步骤405中,处理单元201选择新的隧道(比如,用于传输数据包的第一隧道)和会话的其他数据包。基本上基于散列结果来选择新的隧道。随后,在步骤406中将会话信息和新的隧道的隧道ID存储在第一数据库中。在步骤304中通过第一隧道传输数据包。

作为替代,如果数据包不是会话的第一个数据包,则在步骤407中处理单元201对第一数据库执行查找以便确定与会话信息相对应的隧道ID。随后,在步骤408中,处理单元201根据隧道ID选择用于传输数据包的第一隧道。随后,在步骤304中通过该第一隧道传输数据包。

可能需要处理单元201在两种情况下选择新的隧道。如图4中所讨论的,情况之一是当接收到的数据包是会话的第一个时。另一种情况是当正用于传输一个或多个会话的隧道被丢弃、破坏或终止以致选择新的隧道用于传输一个或多个会话时。新的隧道从可用隧道中选择。

隧道的可用性可根据诸如带宽极限、使用价格、延迟、丢包率之类的各种参数来确定。例如,如果就要接近隧道的带宽极限,则可不再将该隧道认为是可用隧道,使得不选择该隧道用于任何其他新的会话。本领域技术人员可以知道,当就要接近隧道的带宽极限时,越来越多的数据包可能被丢弃。因此,为了限制通过该隧道传输的数据包的数量,隧道可被认为不可用于新的会话。隧道仍然可用于运送先前使用该隧道的会话的数据包。

在一个变型中,代替向隧道分配权重,用户或管理员可定义每个隧道可用于传输的会话的最大数量。例如,当对于第一隧道将会话的数量定义为10时,可以为多达10个会话选择第一隧道,即,第一隧道可用于传输多达10个会话。只要第一隧道正用于传输少于10个会话,则第一隧道可被认为是可用隧道。如果隧道开始用于传输10个或更多个会话时,则可不再将第一隧道认为是进一步被选择用于新的会话的可用隧道

可用隧道的数量可不时地改变。这就是为什么相同会话信息的散列结果在不同时间可能不同的原因。当数据包不是会话的第一个数据包时,对数据库执行查找以选择用于传输数据包的隧道而不是执行散列处理的好处是会话的所有数据包随后可能通过相同的隧道传输。如果对会话的每个数据包执行散列处理,则可能为相同会话的数据包选择另一隧道,因为可用隧道的数量可能改变了。

没有限制说散列处理方法是基于会话信息来选择可用隧道的唯一方法。根据实施例之一,根据会话信息给每个会话分配任意数。该任意数对于每个会话来说可以是唯一的或可以不是唯一的。例如,处理单元201可被配置为给每个会话分配0至9的范围内的任意数,并且该任意数被随机分配。任意数还可以与隧道相对应。例如,如果分配给会话的任意数是0、1或2,则会话通过第一隧道传输。如果分配给会话的任意数是3、4、5或6,则会话通过第二隧道传输。如果分配给会话的任意数是7、8或9,则会话通过第三隧道传输。作为替代,可以为每个会话随机选择隧道,优选的为可用隧道。一旦为会话选择了隧道,则会话的数据包仅通过所选择的隧道传输,直到隧道丢弃或隧道的性能恶化为止。处理单元201可对第一数据库执行查找以确定给每个隧道分配了多少个会话,并且相应地为新的会话选择隧道。例如,如果第一隧道已经用于传输大量的会话,并且第二隧道没有用于传输许多会话,则处理单元201可选择用于传输新的会话的第二隧道,使得第一隧道不堵塞。

根据处理单元201和/或网络节点上的设计,散列处理方法和任意数方法可消耗不同的计算资源,并且导致使用一种方法或另一种方法的倾向。也可能在消耗计算资源方面的差异很小,使得在使用一种方法或另一种方法时没有性能差异。

可以应用散列处理以获得散列结果,散列结果可为在0至可用隧道数减1的范围内的数。散列结果可用于选择用于会话的隧道。例如,来自聚合连接的多个隧道的可用隧道的数量是3。于是,散列处理将会话信息映射成数1、2或3,即散列结果是1、2或3。本领域技术人员将知道,存在可应用于会话信息以便获得这种散列结果的多种散列处理。

在一个示例中,在网络节点106和网络节点108之间建立了5个隧道,即,第一隧道、第二隧道、第三隧道、第四隧道和第五隧道。可使用网络节点106和网络节点108的网络接口的不同组合来建立这五个隧道。出于说明的目的,在一个变型中,分配给隧道的隧道ID也可以是在0至(可用隧道数-1)的范围内的数,使得散列结果等于隧道中的一个的隧道ID。第一隧道、第二隧道、第三隧道、第四隧道和第五隧道可分别分配有隧道ID 0、1、2、3和4。作为替代,在另一个变型中,分配给隧道的隧道ID可以是任何字符串或数字。与每个散列结果相对应的隧道ID可被记录,以便基于散列结果确定隧道ID。为了确定应当使用哪一个隧道来传输会话的数据包,可应用以下公式:

散列结果=(会话信息)模除(可用隧道的数量)

散列结果用于通过确定隧道ID来选择用于传输数据包的隧道。根据散列结果确定隧道ID。

在一个示例中,出于说明的目的,会话信息基于源IP地址和目的IP地址。在网络节点106处接收到的数据包具有源IP地址123.123.12.1和目的IP地址456.456.45.4。会话信息可以是源IP地址和目的IP地址的任何组合。为简单起见,会话信息可以是从源IP地址和目的IP地址之和获得的整数,即,会话信息是123123121+456456454=579579575。当存在五个可用隧道时,根据上文所描述的公式来确定隧道ID:

散列结果=579579575模除5=0

因此,选择隧道ID为0的第一隧道来传输属于具有相应会话信息的会话的数据包。

在另一示例中,出于说明的目的,会话信息基于目的端口号、源IP地址和目的IP地址。在网络节点106处接收到的数据包具有源IP地址123.123.12.1、目的IP地址456.456.45.4和目的端口号21。为简单起见,会话信息可为从目的端口号和源IP地址的组合以及目的端口号和目的IP地址的组合的和获得的整数。目的端口号和源IP地址的组合可通过串接获得,即,12312312121。目的端口号和目的IP地址的组合也可通过串接获得,即,45645645421。作为这两个组合之和的会话信息为12312312121+45645645421=57957957542。当存在五个可用隧道时,根据上文所描述的公式来确定隧道ID:

散列结果=57957957542模除5=2

因此,选择隧道ID为2的第三隧道来传输属于具有相应会话信息的会话的数据包。

在另一个示例中,出于说明的目的,会话信息基于源IP地址和目的IP地址。在网络节点106处接收到的数据包具有源IP地址123.123.12.1和目的IP地址456.456.45.4。会话信息可以是源IP地址和目的IP地址的任何组合。为简单起见,会话信息可以是从源IP地址和目的IP地址之和获得的整数,即,会话信息是123123121+456456454=579579575。可用隧道的数量是3,即,第一隧道、第二隧道和第三隧道。当存在三个可用隧道时,根据上文所描述的公式来确定隧道ID:

散列结果=579579575模除3=2

例如,隧道ID是基于散列结果而确定的,并且与散列结果2相对应的隧道ID是第二隧道的隧道ID。隧道ID可为字符串。因此,选择第二隧道来传输属于具有相应会话信息的会话的数据包。出于说明的目的,处理单元201可将与散列结果1相对应的隧道ID是001A(其为第一隧道的隧道ID)记录在辅助存储器204中。因此,如果针对会话而确定的散列结果为1,则选择第一隧道来传输该会话。与散列结果2相对应的隧道ID是0B23(其为第二隧道的隧道ID)也可以被记录。因此,如果针对会话而确定的散列结果为2,则选择第二隧道来传输该会话。

在一个变型中,当会话信息基于源IP地址和目的IP地址时,会话信息可以是通过串接源IP地址和目的IP地址而获得的整数。例如,当源IP地址是123.123.12.1且目的IP地址是456.456.45.4时,会话信息可为123123121456456454。

根据本发明的实施例之一,可向聚合连接的多个隧道中的每一个分配权重。权重可由网络节点106和/或网络节点108的用户或管理员分配。作为替代,权重可由处理单元201根据策略来分配。策略可以基于以下标准中的一个或多个:隧道的性能、服务提供商、使用限制、位置、时间、使用价格、安全性、用户身份、互联网协议地址范围、通信协议、通信技术、应用和装置。当策略基于隧道的性能时,可根据诸如吞吐量、错误率、数据包延迟、数据包抖动、符号抖动、服务质量、带宽、位错误率、数据包错误率、帧错误率、丢包率、排队延迟、往返时间、容量、信号电平、干扰电平、带宽延迟乘积、切换延迟时间、信号-接口比和信噪比的性能标准来执行选择。

分配权重以使得分配给隧道的权重越高,可以针对越多数量的会话选择该隧道。例如,第一隧道分配有最高权重,第二隧道分配有次高权重,第三隧道分配有最低权重。出于说明的目的,分配给第一隧道、第二隧道和第三隧道的权重分别是50%、30%和20%。因此,可以为大约50%的会话选择第一隧道,可以为大约30%的会话选择第二隧道,并且可以为大约20%的会话选择第三隧道。

根据本发明的实施例之一,通过配置与每个隧道相对应的散列结果的数量来向多个隧道中的每一个来向多个隧道中的每一个分配权重。例如,使用任意数来获得会话的散列结果。可应用以下公式来获得散列结果:

散列结果=(会话信息)模除(任意数)

散列结果将在0至(任意数-1)的范围内变动。出于说明的目的,存在三个可用隧道,即,第一隧道、第二隧道和第三隧道。用于获得散列结果的任意数是10。于是,散列结果是在0至9的范围内的数。处理单元201配置如下:如果会话的散列结果在0至3的范围内,则应当通过第一隧道传输该会话;如果会话的散列结果在4至8的范围内,则应当通过第二隧道传输该会话;如果会话的散列结果是9,则应当通过第三隧道传输该会话。用这种方法,分配给第一隧道、第二隧道和第三隧道的权重之比分别是4:5:1。4个散列结果与第一隧道相对应,5个散列结果与第二隧道相对应,并且1个散列结果与第三隧道相对应。

根据本发明的实施例之一,当选择隧道用于将属于特定会话的数据包从网络节点106传输至网络节点108时,优选地使用相同隧道用于接收来自网络节点108的属于该特定会话的数据包。在一个变型中,为了确保属于特定会话的数据包通过相同的隧道被传输和接收,第二数据库可存储在网络节点108的存储介质中或存储在网络节点108可访问的远程服务器中。第二数据库包含关于在网络节点108处针对哪个会话信息选择哪个隧道的信息。例如,将在膝上型计算机112和主机121之间建立视频会议会话。当网络节点106接收到来自膝上型计算机112的属于视频会议会话的第一数据包(即,最早到达的数据包)时,网络节点106可执行图4的处理以选择用于该视频会议会话的隧道。对于第一数据包,网络节点106可能需要在步骤404中将散列处理应用于视频会议会话的会话信息。随后,根据散列结果选择隧道(即,第一隧道),并且通过第一隧道传输第一数据包。因此,为视频会议会话选择第一隧道。第一数据库可包含视频会议会话的会话信息以及为视频会议会话所选择的第一隧道的隧道ID。对于网络节点106,会话信息可包括源IP地址(膝上型计算机112的IP地址)、目的IP地址(主机121的IP地址)和目的端口号的信息。

另一方面,当网络节点108从主机121接收到属于视频会议会话的数据包时,其使用第二数据库来确定哪个隧道应当用于通过网络节点106向膝上型计算机112传输视频会议会话的数据包。第二数据库中的条目(entry)可以是第一数据库中的条目的反转形式,这将在下面更详细地说明。网络节点106可向网络节点108通知为视频会议会话选择了第一隧道。如记录在第一数据库中那样的视频会议会话的会话信息还可被发送至网络节点108。随后,网络节点108将为视频会议会话选择第一隧道的信息记录在第二数据库中。第二数据库可包含用于从主机121发送至膝上型计算机112的数据包的视频会议会话的会话信息。第二数据库中的会话信息可包括用于视频会议会话的源IP地址(主机121的IP地址)、目的IP地址(膝上型计算机112的IP地址)和主机121的端口号的信息。因此,当属于视频会议会话的数据包从主机121到达网络节点108时,网络节点108对第二数据库执行查找。根据记录在第二数据库中的会话信息,网络节点108随后通过第一隧道将属于视频会议会话的数据包发送至网络节点106。

对于其会话信息已经包括在第一数据库中的会话,在网络节点108处不执行散列处理的原因是使得属于特定会话的数据包通过相同隧道传输和接收。如果散列处理被应用于网络节点108处的相同会话信息,则在网络节点108处产生的散列结果可能与在网络节点106处产生的散列结果不相同。因此,在网络节点108处所选择的用于向网络节点106传输会话的隧道可不与在网络节点106处所选择的用于向网络节点108传输会话的隧道相同。随后,将在网络节点106处通过不同的隧道来发送和接收属于该会话的数据包。为了避免这种情况,网络节点108使用第二数据库来确定哪个隧道应当用于向网络节点106传输该会话的数据包。

根据本发明的实施例之一,用于将会话的数据包从网络节点106传输至网络节点108的隧道可以与或可以不与用于将相同会话的数据包从网络节点108传输至网络节点106的隧道相同。网络节点106可分别通过两个不同的隧道来传输会话的数据包和接收相同会话的数据包。例如,在FTP会话中,大部分数据可从服务器传输至客户端,而不是从客户端传输至服务器。用于将数据从服务器传输至客户端的性能需求最有可能不同于(即,优于)用于将数据从客户端传输至服务器的性能需求。出于说明的目的,FTP会话将在主机111和服务器122之间建立,其中主机111是客户端。当网络节点106从主机111接收了属于FTP会话的第一数据包(即,最早到达的数据包)时,网络节点106可执行图4的处理并选择用于将FTP会话的数据包传输至网络节点108的隧道(即,第一隧道)。第一数据库可包含FTP会话的会话信息和为FTP会话选择第一隧道的信息。会话信息可包括源IP地址(主机111的IP地址)、目的IP地址(服务器122的IP地址)和目的端口号(优选地,服务器122的端口21)的信息。

当网络节点108从服务器122接收了属于FTP会话的数据包,并且该数据包是从服务器122最早到达网络节点108的数据包时,网络节点108可执行图4的处理以选择用于通过网络节点106将该数据包和FTP会话的其他数据包传输至主机111的隧道(即,第二隧道)。第一隧道可以与第二隧道相同或可以不与第二隧道相同。FTP会话的会话信息和为FTP会话选择第二隧道的信息可以记录在第二数据库中。第一数据库可包含FTP会话的会话信息和为FTP会话选择第一隧道的信息。会话信息可包括源IP地址(服务器122的IP地址)、目的IP地址(主机111的IP地址)和目的端口号的信息。

在一个变型中,出于说明的目的,当网络节点106对FTP会话执行图4的处理时,第一隧道、第二隧道和第三隧道被认为是可用隧道,因为第一隧道、第二隧道和第三隧道的带宽极限和性能适宜于将数据包从主机111传输至服务器122。在执行散列处理之后,可以选择第一隧道、第二隧道和第三隧道中的任一个来传输属于FTP会话的数据包。出于说明的目的,网络节点108确定第三隧道的性能不适宜于将属于FTP会话的数据包从服务器122传输至主机111。因此,当网络节点108对FTP会话执行图4中所示的处理时,仅第一隧道和第二隧道被认为是可用隧道,因为第一隧道和第二隧道的性能适宜于将数据包从服务器122传输至主机111。在执行散列处理之后,可以选择第一隧道和第二隧道中的任何一个来传输属于FTP会话的数据包。

图5示出了根据本发明的实施例之一的用于监测隧道的处理。在处理单元201确定通过隧道(在步骤304中可被视为第一隧道)传输属于特定会话的数据包之后,在步骤501中,处理单元201监测第一隧道的状态。处理单元201在第一隧道被丢弃、破坏或终止时可接收到触发。还可以在第一隧道的性能恶化并变得低于预定阈值时接收触发。如果在步骤502中还没有接收到触发,则处理在步骤506中结束。如果在步骤502中接收到了触发,则处理单元201确定选择新的隧道用于传输属于特定会话的数据包。为了选择新的隧道,在步骤503中,处理单元201再次对特定会话的会话信息应用散列处理。随后,在步骤504中,处理单元201可根据在应用散列处理之后产生的散列结果来选择和确定新的隧道。现在可将新的隧道视为第一隧道。随后,在步骤505中,会话信息和新的隧道的隧道ID被存储在第一数据库中,并且处理在步骤506中结束。步骤503、步骤504和步骤505可分别类似于图4中的步骤404、步骤405和步骤406。处理单元201可对在网络节点106和网络节点108之间建立的多个隧道持续地执行图5的处理。

步骤502中的触发可由监测在网络节点106和网络节点108之间建立的隧道的状态的处理单元201的模块产生和发送。随后,该触发可由执行图5中所示的处理的处理单元201的另一模块接收。

根据实施例之一,当选择第一隧道用于多个会话(即,第一会话、第二会话和第三会话)且触发被接收时,可为会话中的少数或所有会话选择(多个)其他隧道。例如,如果触发被接收且处理单元201确定第一隧道被丢弃、破坏或终止,则为多个会话中的所有会话选择(多个)其他隧道,即,继续传输属于第一会话、第二会话和第三会话的数据包。出于说明的目的,可以为第一会话和第二会话选择第二隧道,并且可为第三会话选择第三隧道。作为替代,可为第一会话、第二会话和第三会话选择第二隧道。在另一示例中,如果触发被接收且处理单元201确定第一隧道没有被丢弃、破坏或终止,但第一隧道的性能已经恶化,则可为会话中的少数或所有会话选择(多个)其他隧道。例如,最初选择第一隧道所用于的多个会话包括视频会话会话、即时消息会话和FTP会话。网络节点106可确定为视频会议会话和即时消息会话选择另一个隧道,但继续使用第一隧道用于FTP会话。网络节点106可由用户或管理员配置以给予FTP会话较低的优先权,使得具有较差性能的隧道可用于FTP会话。因此,即使第一隧道的性能已经恶化,但属于FTP会话的数据包可继续通过第一隧道传输。应当理解,不同会话可具有不同的性能需求,因此,特定隧道的所有的会话可无需通过其他隧道传输。

在一个变型中,处理单元201即使在第一隧道的性能恶化时仍保持建立第一隧道。第一隧道可用于在其性能已经恶化时传输管理数据包、健康检查数据包、错误校正数据包等。处理单元201还可监测第一隧道的性能。在一个示例中,如果处理单元201确定第一隧道的性能已经改善并且在预定时间段内已经优于预定阈值,则可再次选择第一隧道用于最初为其选择的(多个)会话。

在一个变型中,如果处理单元201确定第一隧道的性能已经改善并且在预定时间段内已经优于预定阈值,则可将第一隧道视为用于被选择用于新的会话的可用隧道。

触发和预定阈值可由网络节点106的用户或管理员配置。用户或管理员可配置应当何时由监测隧道的状态(即,在该处应当发送触发的事件,比如隧道丢弃或性能恶化)的处理单元201的模块发送触发。

使用聚合连接而不是负载平衡的好处可以是:由于聚合连接中聚合了多个隧道,所以可以在会话仍然建立的同时相对更容易和更快地切换至另一个隧道用于传输会话的数据包。这是因为聚合连接被视为单连接,并且当通过聚合连接传输数据包时数据包被分配有全局序列号。因此,数据包可在网络节点108处被重新排序。

图6是数据库(比如,第一数据库)的内容的简要说明。表600包括会话信息列601和隧道ID列602。隧道ID列602包括与包括在会话信息列601中的会话信息相对应的隧道ID。例如,选择隧道ID为1的第一隧道来传输具有会话信息123123121的第一会话和具有会话信息45645645421的第三会话。选择隧道ID为2的第二隧道来传输具有会话信息456456454的第二会话。

处理单元201持续监测第一隧道和第二隧道的状态,如图5的步骤501所示。例如,当第一隧道被丢弃时,在步骤502中接收用于第一隧道的触发。随后,处理单元201对与第一隧道相对应的会话(即,第一会话和第三会话)的会话信息应用散列处理。因此,对会话信息123123121和45645645421应用散列处理。表610包括会话信息列601和隧道ID列603。隧道ID列603包括与包括在会话信息列601中的会话信息相对应的隧道ID。如表610中所示,在接收到触发并应用了散列处理之后,选择隧道ID为3的第三隧道来传输第一会话和第三会话。

不必通过相同隧道传输第一会话和第三会话。可以为先前通过相同隧道传输的会话选择不同的隧道。表620包括会话信息列601和隧道ID列604。隧道ID列604包括与包括在会话信息列601中的会话信息相对应的隧道ID。如表620中所示,在接收到触发并应用了散列处理之后,选择隧道ID为3的第三隧道来传输第一会话,并选择隧道ID为2的第二隧道来传输第三会话。

选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使得本领域其他技术人员能够最好地利用本发明和具有适合于预期的特定用途的各种修改的各种实施例。

附图说明

图1A示出了根据本发明的各实施例的网络环境。

图1B示出了根据示出两个网络节点之间的隧道的实施例所适用的系统。

图2是根据本发明的实施例之一的网络节点的说明性框图。

图3是示出根据本发明的实施例之一的处理的流程图。

图4是示出根据本发明的实施例之一的处理的流程图。

图5示出了根据本发明的实施例之一的用于监测隧道的处理。

图6是根据本发明的实施例之一的数据库内容的简单说明。

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