用于通过聚合连接传输数据的方法及系统与流程

文档序号:19521280发布日期:2019-12-27 14:12阅读:216来源:国知局
用于通过聚合连接传输数据的方法及系统与流程
本发明一般涉及计算机网络领域。更具体地,本发明涉及用于处理通过具有多个隧道的聚合连接传输的数据包、封装包以及复制封装包的方法和系统。
背景技术
:多广域网(wan)站点到站点vpn路由器是支持聚合多个互连(例如,用于访问一个或多个远程专用网络的wan连接)的带宽的路由器。在一些实施方式中,每个tcp/ip会话路由到仅一个wan。在这种配置中,单个tcp文件传输会话只能利用每端上的一个wan连接的带宽。例如,在基于会话的站点到站点虚拟专用网(vpn)连接中,vpn流量被路由至两个站点(例如,站点a和站点b)之间的多个wan连接。在一种实施方式中,最初在wan连接之间形成m×n个隧道,其中m和n分别是站点a和站点b的wan网络连接的数量。随后,应用程序tcp/ip会话在不同的隧道上路由。然而,值得注意的是,虽然基于会话的站点到站点vpn能够针对不同的会话使用不同的隧道,但是在这种类型的连接中的单个下载会话仅能够利用一个隧道。在无线通信中,包传输的质量可能是不可预测的,并且丢包率可频繁地改变。这会降低整个包传输的质量。即使每个隧道的带宽限制很高,但是丢包率也可能不会改善。需要一种解决方案来利用多个隧道来提高成功传输数据的几率,这可以通过使用复制包来实现。技术实现要素:本发明公开了用于处理在第一网络节点处接收的数据包的方法和系统。当第一网络节点从第一网络节点的网络接口接收数据包时,第一网络节点根据选择策略选择第一隧道,并且还根据该选择策略不选择或选择至少一个第二隧道。随后,第一网络节点通过第一隧道传输原始封装包(oep)。oep将数据包封装,并且每个oep具有原始封装包全局序列号(oep-gsn)。oep-gsn存储在每个oep的字段中。当选择了至少一个第二隧道时,第一网络节点还通过至少一个第二隧道传输至少一个复制封装包(dep)。至少一个dep封装数据包中的至少一个。至少一个dep中的每一个具有存储在至少一个dep中的每一个的字段中的复制封装包全局序列号(dep-gsn)。第一隧道和至少一个第二隧道可包括在聚合连接中。选择策略基于以下标准中的一个或多个:用户选择、多个隧道的性能、服务提供商、使用限制、位置、时间、使用价格、安全性、用户身份、互联网协议地址范围、通信协议、通信技术、应用和装置。根据实施例之一,第一隧道的性能被确定为优于第二隧道的性能,并且性能实质上基于隧道的延迟和带宽。根据实施例之一,oep的oep-gsn与至少一个dep的dep-gsn相同。根据实施例之一,所述至少一个dep包括oep-gsn的列表。oep-gsn的列表包含至少一个oep-gsn。根据实施例之一,当针对每个oep传输多个dep时,通过聚合连接的不同隧道来传输多个dep中的每一个。本发明还公开了用于在第二网络节点处处理通过聚合连接从第一网络节点接收的封装包的方法和系统。第二网络节点通过聚合连接的隧道中的一个接收封装包。封装包可以为oep或dep。当封装包为oep时,其封装数据包。作为替代,当封装包是dep时,其封装实质上基于数据包的数据包信息。数据包可源自第一网络节点,或者通过第一网络节点接收数据包。第二网络节点确定是否之前已经通过聚合连接接收了数据包。该确定实质上基于缺失的全局序列号(gsn)的记录。当第二网络节点确定转发数据包时,如果封装包是oep,则第二网络节点从封装包中解封装数据包。如果封装包是dep,则第二网络节点实质上基于数据包信息重新创建数据包。随后,第二网络节点将数据包转发至其目的地。在数据包的报头中指示目的地。随后,第二网络节点可更新缺失的gsn的记录。根据实施例之一,当封装包是dep且数据包信息保存多个封装的包或纠错信息时,封装包包括oep-gsn的列表。根据实施例之一,第二网络节点确定与数据包对应的gsn是否在缺失的gsn的记录中。如果gsn不在缺失的gsn的记录中,则第二网络节点确定不转发数据包,作为替代,如果gsn在缺失的gsn的记录中,则第二网络节点确定转发数据包。根据实施例之一,第二网络节点可在确定是否要转发数据包之后进一步更新预期的全局序列号。附图说明图1a示出了根据本发明的实施例的用于优化多个可变带宽连接的吞吐量的整个系统;图1b示出了根据本发明的各实施例的网络环境;图1c示出了根据被配置为优化绑定的多个可变带宽连接的吞吐量的实施例所适配的系统100;图2a示出了描绘根据本发明的实施例的用于提高绑定连接的吞吐量的方法的流程图;图2b示出了描绘根据本发明的实施例的用于提高绑定连接的吞吐量的方法的流程图;图3是示出根据本发明的实施例的可以封装在所传输的ip包中的信息的类型的示例实施例;图4a是示出根据本发明的实施例的可以封装在反馈包中的信息的类型的示例实施例;图4b是示出图4a的反馈包的字段的可能值的图表;图5描绘了适于实现本发明的处理系统的框图;图6是示出根据本发明的各实施例的用于通过聚合连接传输封装包的处理的流程图;图7是示出用于处理接收到的封装包的处理的流程图;图8a示出了根据各实施例的原始封装包(oep)的结构;图8b示出了根据本发明的实施例之一的复制封装包(dep)的结构;图8c示出了根据本发明的实施例之一的dep的结构;图9是示出根据本发明的实施例之一的用于传输dep的处理的流程图;图10是示出根据本发明的实施例之一的处理的流程图;图11是示出处理通过聚合连接接收到的封装包的处理的流程图;图12a示出了根据示例性实施例的dep的内容;图12b示出了根据实施例之一的dep的内容;图12c示出了根据实施例之一的dep的内容;以及图13是示出根据实施例之一的用于处理dep的处理的流程图。具体实施方式图1a示出了根据被配置为通过在数据传输会话期间调整隧道带宽加权模式来优化绑定的多个可变带宽连接的吞吐量的实施例所适配的系统101。系统101包括每个包括至少一个网络节点的多个站点102和104。网络节点可以被称为通信路由器。然而,本发明的范围不限于通信路由器,使得本发明能够在网关、路由器、服务器或任何其它类型的网络节点处执行。为了简单起见,图1a示出:站点102包括通信路由器106并且站点104包括通信路由器108。通信路由器106和通信路由器108可实现为支持聚合多个互联网连接的带宽的多wan路由器。通信路由器106和通信路由器108通过网络110连接。网络110可包括lan、man、wan、无线网络、pstn、互联网、内联网、外联网等。站点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、卫星连接等。还应注意,站点102和站点104均可被认为是发送方或接收方,并且关于两者之中任一站点的功能的讨论可在另一个站点上实现。换言之,系统101可被实现为对称网络。图1b示出了根据本发明的实施例之一的网络环境。在通信路由器106和通信路由器108之间建立了隧道103a、103b和103c。可以绑定隧道103a、103b和103c以形成聚合连接。根据实施例之一,通信路由器106和通信路由器108可具有多个网络接口。通信路由器106经由其多个网络接口中的一个或多个与通信路由器108的一个或多个网络接口建立隧道103a、103b和103c。通信装置106和通信装置108可用作网关、路由器、交换机、接入点、集线器、网桥等。图1c示出了根据被配置为优化绑定的多个可变带宽连接的吞吐量的实施例所适配的系统100。除了mxn个虚拟隧道116以外,系统100类似于系统101。当比如通过实现绑定的站点到站点的vpn连接在站点102和站点104之间创建绑定连接时,可创建mxn个隧道116。隧道116与站点102的网络连接和站点104的网络连接的唯一排列相对应。聚合连接可在通信路由器106和通信路由器108之间形成。隧道116可为虚拟隧道。多个所建立的隧道116可以被聚合、结合或绑定在一起以形成一个聚合连接。本领域技术人员应该理解,存在无数种方式来聚合、结合或绑定多个所建立的隧道以形成一个聚合隧道。聚合连接被正在使用其的会话或应用程序视为一个隧道。聚合连接可为端到端连接、虚拟专用网络连接或无面向连接的连接。例如,聚合连接可为tcp连接或udp连接。在另一个示例中,聚合连接是多个隧道的聚合,并且每个隧道在通信路由器106和通信路由器108之间链接。在另一个示例中,聚合连接可为包括多个所建立的隧道的vpn隧道,并且每个所建立的隧道在通信路由器106和通信路由器108之间链接。图2a示出了描绘用于提高绑定连接的吞吐量的方法200的系统100的操作的高级流程图。应当理解,图2a中提供的特定功能、功能的顺序等旨在作为根据本发明构思的示例性操作。因此,可以以不同于所示实施例的方式的各种方式来实现本文中的构思。在所示实施例的块201处,当比如通过实现绑定的站点到站点vpn连接在站点102和站点104之间建立绑定连接时,可以创建如图1c中所示的mxn个虚拟隧道116。虚拟隧道116与站点102的网络连接和站点104的网络连接的唯一排列相对应。在所示实施例的块202处,确定和/或分配隧道的默认权重。为了确定默认权重,实施例交换站点102和站点104之间的连接112和连接114的上行链路带宽数据和下行链路带宽数据。使用这种带宽数据,可以根据下述方法计算默认权重:假设站点102的连接1至连接m的下行链路带宽是d1,d2...dm,并且站点104的连接1至连接n的上行链路带宽是u1,u2,...un;站点102的连接x和站点104的连接y之间的隧道的默认权重可被定义为dw(x,y),其中dw(x,y)=dx.dy。使用上述方法来计算默认权重,如果连接112-1到连接112-3是具有对应的10m/6m、8m/4m和6m/6m的上行链路/下行链路带宽的多wan路由器的wan连接,并且连接114-1到连接114-2是具有对应的7m/5m和9m/3m的上行链路/下行链路带宽的多wan路由器的wan连接,则每个隧道的各自的默认权重将如下所示:【表001】站点102站点104dw(1,1)=6*7=42dw(1,1)=5*10=50dw(1,2)=6*9=54dw(1,2)=5*8=40dw(2,1)=4*7=28dw(1,3)=5*6=30dw(2,2)=4*9=36dw(2,1)=3*10=30dw(3,1)=6*7=42dw(2,2)=3*8=24dw(3,2)=6*9=54dw(2,3)=3*6=18注意,构思了用于计算默认权重的其它方式,因此上述内容仅是本发明的实施例的实施方式示例。注意,可以使用许多不同的加权模式来定义隧道的初始带宽。例如,可能期望仅使用接收站点的下行链路容量和发送站点的上行链路容量来在一个方向上对隧道加权。针对本发明的目的可以使用用于表征在建立绑定连接时隧道的容量的任何加权模式。当根据实施例将包从站点102路由至站点104时,以根据有效权重ew(x,y)的比率将包分配给隧道。最初,将实施例的有效权重设置为等于默认权重,ew(x,y)=dw(x,y),并且如果隧道116的带宽保持初始设置不变,则该有效权重对于包分配而言是最佳的。然而,如果用户在tcp会话中正通过绑定网络连接来下载文件时一个或多个隧道丢包,则该会话的整个吞吐量会大幅下降。在某种程度上来讲,这是因为丢包将使得tcp持续重传,虽然没有丢包的隧道未被完全占用,但tcp的流量控制也将保持较低的吞吐量。增加吞吐量的一种有效方式是避免这种丢包。为此,本发明的实施例在所示实施例的块203处当隧道正经历丢包率的增加或减少时进行识别。实施例还用于在块204处修改正在经历或已经经历了丢包率改变的隧道的有效权重。可以连续地监控丢包率信息,或者基于具体时间段来监控丢包率信息。一旦确定隧道正在经历不能接受的丢包率时(块204-1),则所示实施例块在204-2处减小隧道的有效权重。在一些实施例中,不能接受可能意味着丢包率是非零量,而其它实施例可确定不能接受的比率为超过预先定义的阈值的任何比率。实施例以逐步方式、以连续方式、以与丢包率的增加成比例地一次性减少等方式来实现有效权重减少。当以逐步方式进行减少的时候,实施例可继续监控该隧道,以便优化所实现的减少量。可以通过从路由器106或路由器108经由每个隧道发送心跳包来建立或监控隧道116。在一些实施例中,当接收端在一段时间内未能从隧道接收心跳包时,则其将该隧道视为关闭,并且该隧道将不用于路由流量。如果心跳包再次开始被接收,则该隧道可被重新建立,并且连同其它隧道一起被加权。由此,在所有包在隧道中丢失且该隧道的有效权重减少为零的情况下,实施例可利用心跳包来监控和重新建立连接。此外,当隧道恢复其各自带宽的全部或部分时,例如,确定丢包率下降(块204-3),则所示实施例用于增加这种隧道的有效权重(块204-4),以便充分地或更加充分地利用带宽。一些实施例使用预定步长来增加隧道的有效权重,直到重新获得精确的有效权重。其它实施例可与重新测量的丢包率相对应的重新测量的带宽成比例地增加有效权重。此外,实施例可基于预定线性或指数标度来增加隧道的有效权重。在调整隧道的有效权重之后,或者确定无需调整时,则在所示实施例的块205处更新系统的加权模式。该更新可包括存储任何处理的信息、在进一步处理中使用这种信息、使得系统不采取动作等。例如,可操作关于块205所执行的处理以在一段时间内平均加权模式,比如,从而减少与高度瞬态异常相关的错误。此外,如关于图2b所讨论的那样,更新的信息可在系统100上使用,以修改数据传输会话的包分配。系统100可继续在数据传输会话期间连续地或周期地实施203至205的步骤。图2b示出了这样的实施例,其中在实施加权方法200以后,至少部分地基于修改的隧道权重来分配包。具体地,所示实施例的块206进行操作以根据由方法200的操作而确定的加权模式来分配穿过隧道的包。在一些实施例中,这种分配将在数据传输会话期间改变,因此,图2b的步骤示出为循环。一些实施例每当在块205处更新系统时改变包分配。此外,块205可响应于某些丢失率改变阈值等使得改变被周期地实施。应当理解,通过方法200的操作来确定加权与在块206处将所确定的权重应用至包分配可具有不同的周期。例如,方法200可操作为使用相对短的迭代周期来提供加权模式信息的更新,而使用更长的迭代周期来基于这种加权模式信息改变包的分配。为了监控各个隧道116的带宽,本发明的一些实施例使每个传输的ip包封装有各种信息。图3示出了示出可被封装在传输的ip包中的信息类型300的示例实施例。传输的ip包可被称为封装包,即,原始封装包或复制封装包。原始封装包和复制封装包的细节在图8a、图8b和图8c中示出。版本字段302可包含关于正在使用的协议版本的信息,并且协议类型字段303可包含有效载荷包的协议类型。通常,该字段的值将与包的以太网协议类型相对应。然而,可在其它文档中定义附加值。隧道id字段304可为32位字段,并且可包含用于识别ip包的当前隧道的标识符。高级加密标准(aes)初始化向量字段306可为32位字段,并且可包含用于aes加密的初始化向量。全局序列号字段308可为32位字段,并且可包含被用于当各会话的包从它们各自的隧道出现时将各种会话的各个包重新排序为适当的顺序的序列号。每个隧道序列号(pertunnelsequencenumber)字段310可为32位字段,其可表示分配给被路由至特定隧道的每个包的序列号。aes加密有效载荷字段312可用于传输ip包的有效载荷。为了有效载荷的更高的安全性,可应用aes加密以防止来自第三方的攻击。上面讨论的每个隧道序列号可用于监控隧道中丢失的包。在一个实施例中,接收端处的路由器通过监控接收到的包的每个隧道序列号,以每f秒计算每个隧道的丢包率dr(x,y)。dr(x,y)可被表征为在时间段f内缺失的序列号除以序列号增长。时间段f的长度可变,并且在一个实施例中f等于5秒。也可使用其它方法来监控丢失的数据包,例如:发送方可周期性地通知接收端它已经发送了多少个数据包,发送方每恒定时间段向接收端发送心跳包并且接收端能够通过监控心跳包的丢失率来估算整个丢失率,通过从物理接口/装置/层获得丢失率数据,等等。接收端可向发送路由器反馈特定隧道的丢失率、有效权重、或其它带宽指示符。当发送方接收关于包丢失的信息时,一些实施例将隧道的有效权重ew(x,y)降低ew(x,y)·dr(x,y)。其它度量标准可以用于修改隧道的有效权重。在一些实施例中,发送方可接收反馈,并且有效权重可被降低大于或小于丢包率的数。可根据通信系统的特定需求来配置这种差异。上述示例提出了这样一种度量标准,其尝试将隧道的有效权重降低至防止进一步包丢失的同时最大化隧道的可用带宽量的权重。找到这种平衡的任何度量标准可为优选的。图4a示出了可被封装在反馈包中的信息类型400的示例实施例,该反馈数据包被发送至传输路由器以报告在接收端路由器处接收到的丢包率或其它带宽相关数据。类型字段402可包括与将包括在数据1字段404和数据2字段406中的数据的类型有关的数据。数据1字段404和数据2字段406的可包含可用于辅助路由器确定关于隧道数量、隧道带宽、隧道中丢失的包的数量等的隧道信息的任何信息。在图4b的图表中示出了数据字段404和406中的类型字段402的可能值的示例。诸如图3和图4中示出的封装在传输的ip数据包中的信息还可用于包缓冲和重新排序。因为每个隧道的延迟可以是不同的,所以当相同tcp会话的两个连续的包通过绑定的vpn隧道被发送至vpn对等体时,由于经由两个不同的隧道来路由这两个连续的包,所以它们可能不按序到达。如果tcp会话从vpn接收失序包,则该tcp会话将由于tcp重新传输而降速。因此,接收端应当缓冲太早到来的包,直到较慢的包到达或已经超过到期时间。有了这种缓冲,在到期时间之前来到的延迟包将被按序转发至目标装置。这种缓冲有助于优化端到端吞吐量。注意,有时在vpn连接的上下文中讨论本文中所述的实施例。提出这些讨论是为了示出绑定连接的示例实施例。本文中要求保护的发明构思不限于这种连接。事实上,可以利用本发明的实施例来实现在其中可获得并交换足够数据以便动态监控在数据传输会话中使用的多个通信路径的带宽的任何连接。如上所述,每个包可被分配两个不同的序列号、全局序列号(gsn)和每个隧道序列号(ptsn)。这些号码可用于辅助包缓冲和重新排序操作。在包被传递至上层后,接收端可更新下一个预期的每个隧道序列号(ne-ptsn)和下一个预期的全局序列号(ne-gsn)以下将描述一种在接收和解密包之后如何可以缓冲包或将包转发至目标装置的方法。1.如果包的gsn等于0,则立即将其转发至目标装置。2.检查包的ptsn是否等于ne-ptsn。如果否,则按序出队(转发至目标装置)具有比所述包的gsn小的gsn的所有包。保持所述包不处理。3.更新ne-ptsn(即,将ne-ptsn设置为ptsn+1)。4.如果gsn小于ne-gsn,则转发至目标装置。5.如果包的gsn等于ne-gsn,则更新ne-gsn(即,将ne-gsn设置为gsn+1)并且转发至目标装置。如果报头的gsn等于新的ne-gsn,则重复更新ne-gsn并且使缓冲首部从缓冲出队。6.否则(gsn大于ne-gsn),以gsn的顺序将该包入队。7.如果包在队列中的时间长于固定时间量,则将ne-gsn设置为包的gsn+1,并且按序将该包和具有比该包的gsn小的gsn的所有包出队。因此,图2和图3中讨论的封装包信息可包括这样的信息:通过响应于监控丢包率辅助隧道带宽的优化和通过辅助数据传输会话中接收到的包的有效排序,该信息优化了数据传输系统(比如,系统100)的整个吞吐量。图5示出了可用于实施根据某些实施例的系统、装置和方法的示例性基于处理器的系统500。基于处理器的系统500可表示通信路由器106和通信路由器108的架构。中央处理单元(cpu)501耦接至系统总线502。cpu501可为任何通用cpu,或者可为被设计为实现上述教导的专用cpu。本公开不受cpu501(或示例性系统500的其它部件)的架构的限制,只要cpu501(和系统500的其它部件)支持本文中所述的发明操作即可。cpu501可执行本文中所述的各种逻辑指令。例如,cpu501可根据上面结合图2描述的示例性操作流程来执行机器级指令。当执行表示图2中示出的操作步骤的指令时,cpu501变为专门配置为根据本文描述的教导的各种实施例进行操作的专用计算平台的专用处理器。系统500还包括可为sram、dram、sdram等的随机存取存储器(ram)。ram503可为存储由cpu501可执行的程序指令的辅助存储器。系统500包括可为prom、eprom、eeprom等的只读存储器(rom)504。如本领域中公知的那样,ram503和rom504保存用户和系统数据以及程序。系统500还包括输入/输出(i/o)适配器505、通信适配器511、用户接口适配器508和显示适配器509。在某些实施例中,i/o适配器505、用户接口适配器508和/或通信适配器511可使用户能够与系统500交互以输入信息。i/o适配器505将存储装置506(诸如硬盘驱动器、光盘(cd)驱动器、软盘驱动器、磁带驱动器等中的一个或者多个)连接至系统500。针对与执行上述实施例中讨论的操作关联的存储需求,除了ram503以外还利用了存储装置。通信适配器511适于将系统500耦接至网络512,这可使得能够经由这种网络512(例如,互联网或其它广域网、局域网、公共或专用交换电话网络、无线网、前述网络的任意组合)向系统500输入信息和/或从系统500输出信息。通信适配器511可被认为是网络接口,并且系统500可包括多个通信适配器511。用户接口适配器508将用户输入装置(比如,键盘513、定点装置507和麦克风514)和/或输出装置(比如,扬声器515)耦接至系统500。显示适配器509由cpu501驱动以控制显示装置510上的显示。显示适配器509传输用于转换或操纵显示装置510所使用的各种数量的像素的状态的指令,以向用户可视地呈现所期望的信息。这种指令包括用于改变状态由开至关、设置特定颜色、强度、持续时间等的指令。每个这种指令组成控制如何在显示装置510上显示和在显示装置510上显示什么的呈现指令。图6是示出根据本发明的各实施例的用于通过聚合连接将封装包从通信路由器106传输至通信路由器108的处理的流程图。聚合连接可包括多个隧道。在步骤601中,通信路由器106的cup501在多个隧道中选择隧道用于传输原始封装包(oep)。所选择的隧道可被称为第一隧道。随后,通信路由器106通过第一隧道传输oep。在步骤602中,cpu501在多个隧道中选择另一个隧道用于传输复制封装包(dep)。在步骤602中选择的隧道可被称为第二隧道。随后,通信路由器106通过第二隧道传输dep。在一个变型中,图6的处理可被周期性地执行。该处理可优选地每几秒被执行一次。作为替代,一旦接收触发就执行图6的处理。例如,当cpu501确定通过第一隧道和/或第二隧道未接收到确认或延迟接收确认时,接收触发。这可表明第一隧道和/或第二隧道的延迟已经变得非常高。随后,cpu501再次执行图6的步骤以再次选择第一隧道和第二隧道。在另一个示例中,可在用户或管理员手动地启动图6的处理时,接收触发。可根据选择策略选择第一隧道和第二隧道。在一个变型中,选择策略可基于以下标准中的一个或多个:隧道的性能、服务提供商、使用限制、位置、时间、使用价格、安全性、用户身份、互联网协议地址范围、通信协议、通信技术、应用和装置。当选择策略基于隧道的性能时,可根据诸如吞吐量、错误率、包延迟、包抖动、符号抖动、服务质量、带宽、比特误码率、包错误率、帧错误率、丢包率、排队延迟、循环时间、容量、信号电平、干扰电平、带宽延迟乘积、切换延迟时间、信号接口比和信噪比之类的性能度量标准来执行选择。用户或管理员可配置该选择策略。例如,用户可将该选择策略配置为仅基于多个隧道中的每个隧道的带宽。因此,选择具有最佳带宽的隧道作为通过其传输oep的第一隧道。选择具有次佳带宽的另一个隧道作为通过其传输dep的第二隧道。在另一个实施例中,用户可将选择策略配置为仅基于多个隧道中的每个隧道的延迟。因此,选择具有最低延迟的隧道作为通过其传输oep的第一隧道。选择具有次低延迟的另一个隧道作为通过其传输dep的第二隧道。在另一示例中,用户可将选择策略配置为基于使用限制和丢包率。选择具有最高使用限制和/或最低丢包率的隧道作为第一隧道。选择具有次最高使用限制和/或次最低丢包率的隧道作为第二隧道。在另一个变型中,选择策略基于用户选择。用户或管理员可将通信路由器106配置为使用某个隧道作为第一隧道,并且将另外某个隧道作为第二隧道。用户或管理员可通过由web接口、应用程序接口(api)、命令行接口或控制台来本地或远程地发送配置来配置通信路由器106的选择策略。本领域技术人员应当知道,在无线通信中,包传输质量可能是不可预测的,并且在某些情况下延迟可能较高。丢包率也可能较高。传输dep增加了通信路由器108接收数据的机会,因为oep可能丢失。然而,可以通过dep的传输来显著提高带宽使用。dep还可用于前向纠错(fec),这将在下文更详细地说明。参照图8a、图8b和图8c,包含在oep800和dep810和dep820中的信息类型可与图3中示出的信息类型相似。封装包对数据包进行封装。因此,当通过封装包对数据包进行封装时,数据包变为封装包。可以由通信路由器106通过其网络接口中的一个或多个从可通过通信路由器106访问的站点102中的主机或节点处接收数据包。主机或节点可位于通信路由器106的lan中。可在数据包的报头中指明数据包的源和目的地。每个封装包可分配有两个序列号,即,全局序列号和每个隧道序列号。全局序列号可用于辅助包缓冲和重新排序操作。当封装包分配有全局序列号时,指定的主机或节点根据封装包对应的全局序列号来布置到达指定主机或节点处的封装包。每个隧道序列号表明通过多个隧道中的哪个来传输封装包。图8a示出了根据各实施例的oep的结构。oep800包括ip报头801、原始封装包全局序列号(oep-gsn)802、每个隧道序列号803、其它信息804和封装的包805。oep-gsn802保存oep800的oep-gsn。ip报头801可包括版本字段302和协议类型字段303。每个隧道序列号803可以是可选的。在一个变型中,每个隧道序列号803和隧道id字段304可用于比较隧道性能和根据隧道性能重新分配包。在另一个变型中,当不包括每个隧道序列号803和隧道id字段304时,可能需要维持数据库来存储哪个隧道用于传输哪个gsn的封装包的信息。通过对数据库执行查找,可比较隧道性能。因此,包括每个隧道序列号803和隧道id字段304可在不需要维持和查找所有gsn的数据库的情况下辅助确定延迟。其它信息804可包括aes初始化向量字段306和隧道id字段304。在一个变型中,oep-gsn802、每个隧道序列号803和其它信息804包括在ip报头801的选项字段中,并且封装的包805包括在aes加密有效载荷字段312中。ip报头801的选择字段中包括oep-gsn802、每个隧道序列号803和其它信息804的好处在于:无需解封装oep800即可在这些字段中取得信息,这可显著地缩短处理时间。然而,当通过隧道传输oep800时,由于oep800经过的路由器和装置可改变ip报头801,因此,如果将它们包括在ip报头801的选择字段中,则这些字段中的信息可能会遗失。因此,作为替代,oep-gsn802、每个隧道序列号803、其它信息804和封装的包805可全部包括在aes加密有效载荷字段312中,使得当oep800经过可改变ip报头801的路由器和装置时信息不会遗失。图8b示出了根据本发明的实施例之一的dep的结构。dep810包括ip报头811、复制封装包全局序列号(dep-gsn)812、每个隧道序列号813、其它信息814和封装的包815。ip报头811可包括版本字段302和协议类型字段303。每个隧道序列号813和其它信息814可以是可选的。其它信息814可包括aes初始化向量字段306和隧道id字段304。在一个变型中,dep-gsn812、每个隧道序列号813和其它信息814包括在ip报头811的选项字段中,并且封装的包815包括在aes加密有效载荷字段312中。作为替代,dep-gsn812、每个隧道序列号813、其它信息814和封装的包815都包括在aes加密有效载荷字段312中。由于dep810包括与oep800相同的封装的包,所以在oep800遗失、丢失或者传输期间延迟,且在收到oep800之前收到dep810的情况下,dep810可用于重新创建oep800中的信息。oep-gsn802和dep-gsn812可是完全相同的。封装的包805和815可是完全相同的,如此,oep800和dep810封装相同的数据包,该数据包分别变为封装的包805和815。当通信路由器106产生dep810以传输时,其有效载荷(即,封装的包)与oep800的有效载荷相同。由于oep800和dep810具有相同的内容,因此它们的全局序列号也相同。图8c示出了根据本发明的实施例之一的dep的结构。dep820包括ip报头821、dep-gsn822、每个隧道序列号823、m个oep-gsn的列表826、其它信息824和封装的包825。因为dep820的有效载荷包含已经通过聚合连接传输的最后几个oep的信息,所以其可用于重新创建与oep相对应的缺失的封装的包。这在图12a、图12b和图12c中更加详细地说明。dep820可周期性地传输。在一个变形中,可预先定义的传输每个dep820之间的时间段。当在该时间段内传输的oep的数量为n时,dep820可包括与n个oep相对应的m个封装的包,其中,m小于或等于n,并且m的值至少为1。m个封装的包与n个oep中的m个oep中的封装的包相同。诸如封装的包825-1、825-2至825-m的m个封装的包可包括在dep820的aes加密有效载荷字段312中。m个oep-gsn的列表826包括与m个封装的包相对应的oep的oep-gsn。例如,在预先定义的时间段中传输10个oep。第一dep820可包括与10个oep中的6个oep相对应的6个封装的包,并且第二dep820可包括与剩余的4个oep相对应的4个封装的包。在预先定义的时间段之后,传输第一dep820和第二dep820。第一dep820和第二dep820可通过相同隧道或不同隧道进行传输。作为替代,第一dep820可包括分别与10个oep相对应的10个封装的包。在预先定义的时间段之后,传输第一dep820。dep820不可包括多于10个封装的包,因为每个封装的包必须与每个oep相对应。在另一个变型中,预先定义传输一个dep820之前oep的数量。因此,预先定义的数量为n。dep820可包括与n个oep相对应的m个封装的包,其中,m小于或等于n。m个封装的包可与n个oep中的m个oep中的封装的包相同。诸如封装的包825-1、825-2至825-m的m个封装的包可包括在dep820的aes加密有效载荷字段312中。例如,当定义n为5时,在每5个oep被传输之后,传输dep820,并且dep820包括与这5个oep相对应的5个封装的包。传输dep820之间的时间段可不预先定义。m个oep-gsn的列表826包括与封装的包相对应的5个oep的oep-gsn。作为替代,当定义n为5时,在每5个oep被传输之后,传输第一dep820和第二dep820。第一dep820可包括与这5个oep中的2个oep相对应的封装的包,并且第二dep820可包括与这5个oep中剩余的3个oep相对应的封装的包。dep820可用于纠正传输n个oep时可能已经发生的任何错误,因为封装的包825包含来自封装在oep中的数据包中的信息。在一个变型中,dep-gsn822、每个隧道序列号823、m个oep-gsn的列表826和其它信息824可包括在ip报头821的选项字段中,并且封装的包825包括在aes加密有效载荷字段312中。作为替代,dep-gsn822、每个隧道序列号823、m个oep-gsn的列表826、其它信息824、和封装的包825都包括在aes加密有效载荷字段312中。通过聚合连接传输的oep中的一个或多个已经丢失、遗失或延迟是可能的。即使当接收到oep时,oep中也可能存在错误。dep820可用于重新创建oep中的封装的包,并且还用于检查任何错误。关于dep820的传输和封装的包的重新创建的细节在图12a、图12b和图12c中示出。oep800通过与用于传输dep810或dep820的隧道不同的隧道传输。因此,每个隧道序号803可以与每个隧道序号813或每个隧道序号823不相同。如果oep800和dep通过相同隧道传输,并且该隧道的性能劣化,则可能oep800和dep都不能被通信路由器108成功地接收。因此,为了增加oep800或dep中的至少一者被接收的机会,通过与用于传输dep810或dep820的隧道不同的隧道来传输oep800。ip报头801、811和812中表明的源地址可为通信路由器106的网络接口之一的ip地址。ip报头801、811和812中表明的目的地址可为通信路由器108的网络接口之一的ip地址。封装的包805、815和825的源地址可为可通过通信路由器106访问的站点102中的主机或节点的ip地址。封装的包805、815和825的目的地址可为可通过通信路由器108访问的站点104中的主机或节点的ip地址。oep-gsn802、dep-gsn812和dep-gsn822可与全局序列号字段308相对应。每个隧道序列号803、813和823可与每个隧道序列号字段310相对应。因为封装包可能乱序到达,所以将数据包封装在封装包内的目的之一是当在聚合连接的另一端处接收到封装包时对数据包重新排序。该数据包还可具有不同协议,并且可被封装在封装包中,从而满足聚合连接的协议需求。图9是示出根据本发明的实施例之一的用于传输dep的处理的流程图。通信路由器106的cpu501在步骤901中确定要被传输的dep的数量。在步骤902中,cpu501确定哪个(些)隧道尚未用于传输oep或dep,并且选择所确定的隧道用于传输dep。在步骤903中,cpu501确定是否接近所选择的隧道的带宽限制,并且在步骤904中通信路由器106不通过正接近其带宽限制的隧道传输dep。如果带宽限制未接近,则在步骤905中通信路由器106通过所选择的隧道传输dep。在步骤906中,该处理结束。监控何时接近带宽限制可有助于减少拥塞,并防止隧道淹没。本领域技术人员应该知道,随着隧道的带宽限制的接近,越来越多的包可能会丢失,隧道的性能劣化。因此,优选地,停止通过正接近其带宽限制的隧道来传输dep。根据本发明的实施例之一,通信路由器106可针对一个oep传输多个dep。多个dep中的每一个通过不同的隧道传输。要被传输的dep的数量可由通信路由器106的用户或管理员定义。然而,被传输的dep的数量不可高于可用于传输dep的隧道的数量。这是因为针对每个oep通过隧道传输多个dep可能不是有益的。当隧道的性能劣化时,可能无法成功地接收到所述多个dep中的大多数。因此,这会不必要地消耗更多带宽,而未增加成功接收dep中的至少一个的机会。当用户或管理员将dep的数量定义为高于可用于传输dep的隧道的数量时,通信路由器106不传输由用户或管理员定义的dep的数量。相反,通信路由器106传输等于可用隧道的数量的dep,即每个隧道一个dep。可保留至少一个隧道用于传输oep,其余隧道可用于传输dep。出于说明目的,用户将要被传输的dep的数量定义为5。通信路由器106仅具有与通信路由器108建立的4个隧道,即第一隧道、第二隧道、第三隧道和第四隧道。各oep通过第一隧道传输。与每个oep相对应的一个dep分别通过第二隧道、第三隧道和第四隧道中的每一个来传输。因此,针对每个oep仅传输3个dep,而非5个。在一个示例中,如果用户或管理员将dep的数量定义为小于可用隧道的数量,则可根据该隧道的性能来传输dep。出于说明目的,用户将要被传输的dep的数量定义为2。通信路由器106具有与通信路由器108建立的4个隧道,即第一隧道、第二隧道、第三隧道和第四隧道。oep通过具有最佳性能的第一隧道传输。如果第二隧道和第三隧道与第四隧道相比具有更好的性能,则通过第二隧道传输一个dep,并且通过第三隧道传输另一个dep。在另一示例中,当存在多于两个的可用的隧道时,oep通过具有最佳性能的第一隧道传输。使用负载平衡技术通过其余隧道来传输dep。作为替代,dep还可以以轮询方式通过其余隧道来传输,尤其是当要被传输的dep的数量小于其余隧道的数量的时候。图7是示出用于处理所接收的封装包的处理的流程图。首先,存在的处理环境是这样一种处理环境:在通信路由器106和通信路由器108之间建立了包括多个隧道的聚合连接,并且通信路由器106通过该聚合连接向通信路由器108发送封装包。通信路由器108通过该聚合连接从通信路由器106接收封装包。该封装包可包括其目的地为可通过通信路由器108访问的主机或节点的封装的包。通信路由器108可接收封装在oep和/或dep中的多个封装的包。oep可能会比dep更早到达,反之亦然。因此,需要知道是否之前已经接收到了封装的包,无论其是封装在oep还是dep中。在步骤701中,通信路由器108从通信路由器106接收封装包。在步骤702中,通信路由器108的cpu确定是否之前已经接收到封装在封装包中的封装的包。如果封装包的全局序列号与之前已经接收到的另一个封装包的另一个全局序列号相同,则确定之前已经接收了该封装的包。如果之前已经接收到了封装的包,则在步骤703中,通信路由器108不将封装包内部的封装的包转发至目的地,并且丢弃该封装包。如果之前没有接收到该封装的包,则在步骤704中,将该封装的包转发至目的地。在步骤705中,该处理结束。当确定之前已经接收到封装的包时,则可假设该封装的包已经被转发。由于这个原因,通信路由器108不再次将封装包中的封装的包转发,并且丢弃该封装包。封装包可为oep800或dep810。参照步骤702,可以存在确定是否已经接收到封装的包的各种方法。如上所述,一种确定的方法是通过检查封装包的gsn。如果通过相同的聚合连接之前已经接收到具有相同全局序列号的任何其它封装包,则通信路由器108确定已经接收到封装的包。随后,无需转发该相同的封装的包。确定是否已经接收到封装的包的另一种方法是通过检查散列码。当封装包到达通信路由器108时,通信路由器108的cpu可在解封装该封装包之后对有效载荷(即,封装的包)应用散列函数。通过应用散列函数产生的散列码可以存储在存储介质中。存储介质可以是本地存储介质(比如,ram503)或远程存储介质(比如,远程服务器)。当向之前已经接收到的相同的封装的包应用散列函数时,散列码将是相同的。随后,通信路由器108的cpu可确定所产生的散列码是否是唯一的,或者其是否以前已经被存储。如果该散列码是唯一的,则确定以前未接收到该封装的包。如果以前已经存储了该散列码,则确定已经接收到该封装的包。尽管散列函数或种子可以改变,但是其更可能在几分钟内保持不变。因此,可使用散列码的唯一性来确定在过去的几分钟里是否已经接收到封装的包。图10是示出当通信路由器108从通信路由器106接收封装包时在通信路由器108处所执行的处理的流程图。封装包分配有全局序列号,随后由通信路由器106通过聚合连接传输至通信路由器108。封装包可为oep800或dep810。在步骤1000中,通信路由器108接收分配有第一全局序列号(gsn-1)的封装包。在步骤1001中,通信路由器108的cpu确定预期的全局序列号(e-gsn)。随后,在步骤1002中,将gsn-1与e-gsn相比较。e-gsn可用于估计下一个封装包的gsn应当是什么。如果在步骤1002中确定e-gsn比gsn-1大,则认为封装包已延迟到达。在步骤1003中,通信路由器108的cpu确定是否在缺失的gsn的记录中识别到gsn-1。如果在缺失的gsn的记录中识别到gsn-1,则在步骤1005中,更新缺失的gsn的记录以从缺失的gsn的记录中移除gsn-1。随后,通信路由器108解封装封装包以取得封装的包,并且在步骤1009中,将封装的包转发至其目的地。目的地可为站点104中的主机或节点,并且可通过通信路由器108访问。作为替代,如果在缺失的gsn的记录中未识别到gsn-1,则在步骤1004中,丢弃该封装包,并且不将其转发至目的地。封装包被丢失是因为其被认为包含之前已经接收到的封装的包。既然在缺失的gsn的记录中未找到gsn-1,这就表明之前已经接收到了具有相同gsn-1的另一个封装包,并且可能已经被转发至目的地的。在步骤1002中,如果e-gsn未被确定为比gsn-1大,则在步骤1006中,通信路由器108的cpu确定e-gsn是否等于gsn-1。如果e-gsn等于gsn-1,则在步骤1007中,如果必要的话可增加e-gsn。解封装封装包以取得封装的包,随后,在步骤1009中,将封装的包转发至目的地。如果e-gsn不等于gsn-1(即,e-gsn小于gsn-1),则认为封装包已提早到达。因此,在步骤1008中,封装包在缓冲区中存储一个预先定义的时间段。当预先定义的时间段已经期满时,则可从缓冲区中移除该封装包,并且解封装以取得封装的包。随后,在步骤1009中,封装的包被转发至目的地。作为替代,当e-gsn已经变为等于gsn-1时,则可从缓冲区移除并解封装该封装包。随后,在步骤1009中,将该封装的包转发至目的地。e-gsn可变为等于gsn-1是因为基于接收到的封装包的gsn通过通信路由器108的cpu来增加e-gsn。在一个变型中,首先可将封装包解封装以取得该封装的包,随后,在步骤1008中,将该封装的包存储在缓冲区中。当预先定义的时间段已经期满或当e-gsn变为等于gsn-1时,则可将该封装的包从缓冲区移除并转发至目的地。在步骤1010中,该处理结束。将封装包存储在缓冲区中的好处是:封装包在存储之前无需解封装,从而可节省用于解封装的计算资源。然而,与封装的包相比,封装包可消耗缓冲区中更多的空间,这可能不是令人满意的。当封装的包存储在缓冲区中时,表明相应gsn的表也与封装的包一起被存储。即使当具有更小的全局序列号的几个封装包可能会缺失(即,延迟、丢失或遗失)时,也可增加e-gsn。e-gsn持续增加是因为用于存储封装包的缓冲空间是有限的,并且一旦封装包的gsn变为等于e-gsn,就应当从缓冲区中移除封装包。与步骤1007和步骤1008相对应的详细的处理和用于计算e-gsn的方法在2013年4月11日公开的、国际公开号为w02013/049960al的、题为“methodandsystemforreductionoftimevarianceofpacketsreceivedfrombondedcommunicationlinks”(“用于减少从绑定通信链路接收的包的时间变量的方法和系统”)中公开了。在一个变型中,可根据图13的处理来执行步骤1008。通信路由器108存储通过聚合连接接收的封装包的gsn。缺失的gsn可记录在缺失的gsn的记录中。例如,通信路由器108在一个时间段内已经接收到具有gsn01、gsn02、gsn03、gsn05和gsn06的5个封装包。确定具有gsn04的包缺失。因此,gsn04被记录在缺失gsn的记录中。在一个变型中,通信路由器108存储其对应的封装的包已经被转发至目标主机或节点的每个封装包的gsn。gsn可被记录在转发的gsn的记录中。封装包可为oep800或dep810。当确定是否转发与封装包相对应的封装的包时,通信路由器108检查转发的gsn的记录。如果在转发的gsn的记录中找到封装包的gsn,则不将该封装的包转发至目标主机或节点,因为其以前已经被转发了。图11是示出处理通过聚合连接接收的封装包的处理的流程图。例如,通信路由器108通过包括多个隧道的聚合连接从通信路由器106接收封装包。封装包可包括其目的地为可通过通信路由器108访问的主机或节点的一个或多个封装的包。在步骤1100中,通信路由器108接收封装包。在步骤1101中,通信路由器106的cpu确定该封装包是否包括oep-gsn的列表。如果该封装包包括oep-gsn的列表,则其可为dep820,并且如果该封装包不包括oep-gsn的列表,则其可为oep800。当确定封装包为oep800时,在步骤1110中,通信路由器108的cpu确定该封装包的gsn(即,oep-gsn802)是否被记录在缺失的gsn的记录中。如果gsn被记录在缺失的gsn的记录中,则在步骤1112中,封装在封装包中的封装的包(比如,封装的包805)被转发至目标主机或节点。如果gsn未被记录在缺失的gsn的记录中,则确定该封装的包之前已经被接收,并且该封装的包已经被转发,因此,在步骤1111中,不再将该封装的包转发至目的地。当确定封装包为dep820时,在步骤1120中,通信路由器108的cpu确定m个oep-gsn的列表826中的至少一个oep-gsn是否被记录在缺失的gsn的记录中。如果否,则在步骤1121中,封装的包825都未被转发至目标主机或节点。如果在缺失的gsn的记录中找到至少一个oep-gsn,则在步骤1122中,通信路由器106转发与被记录在缺失的gsn的记录中的m个oep-gsn的列表中的至少一个oep-gsn相对应的封装的包。例如,如果在缺失的gsn的记录中找到仅与封装的包825-2和825-3相对应的oep-gsn,则随后在步骤1122中,仅将封装的包825-2和825-3转发至目的地,而其余的封装的包不被转发至目的地。在步骤1130中,该处理结束。根据实施例之一,当通信路由器108接收封装包时,其可通过检查隧道id来确定该封装包是oep还是dep。通信路由器106可通知通信路由器108选择第一隧道用于传输oep,并且选择第二隧道用于传输dep。因此,通信路由器108可确定通过第一隧道接收的任何包为oep,并且通过第二隧道接收的任何包为dep。然而,在一些情况中,第二隧道还可用于传输其它包,比如管理包、健康检查包等。在这种情况中,封装包可具有表明封装包是oep还是dep的附加字段。作为替代,表明封装包是oep还是dep的信息可包括在封装包的其它信息字段中。可执行检查隧道id或检查附加字段而非执行步骤1101来确定封装包是oep还是dep。图12a示出了根据示例性实施例的基于n个oep而创建的dep820的内容。为了便于查看,未在oep800-1、oep800-2、oep800-3、oep800-4和dep820-1中示出ip报头、每个隧道序列号和其它信息。虽然未示出ip报头、每个隧道序列号和其它信息,但是oep和dep中的每一个包含那些字段。通信路由器106首先从站点102中的主机或节点接收数据包1、数据包2、数据包3和数据包4。这些数据包封装在oep中。数据包1变为封装在oep800-1中的封装的包1805-1。数据包2变为封装在oep800-2中的封装的包2805-2。数据包3变为封装在oep800-3中的封装的包3805-3。数据包4变为封装在oep800-4中的封装的包4805-4。字段oep-gsn802-1、oep-gsn802-2、oep-gsn802-3和oep-gsn802-4分别包含oep-gsn1、oep-gsn2、oep-gsn3和oep-gsn4。通信路由器106通过聚合连接的第一隧道将oep800-1、oep800-2、oep800-3和oep800-4传输至通信路由器108。oep800-1、oep800-2、oep800-3和oep800-4为被传输的n个oep,并且它们的gsn分别为oep-gsn1、oep-gsn2、oep-gsn3和oep-gsn4。随后,通信路由器106针对四个oep800-1、oep800-2、oep800-3和oep800-4通过第二隧道将dep820-1传输至通信路由器108。m个oep-gsn的列表827包括oep-gsn1、oep-gsn2、oep-gsn3和oep-gsn4。如图12b和图12c中所示,信息(数据包信息)1225基于oep-gsn的封装的包1至4。传输dep820-1的目的之一是恢复在传输oep期间可能遗失的任何信息。如果四个oep中的任何一个未被通信路由器108接收到,或者在四个oep中的任何一个中存在错误,则dep820-1可用于重新创建四个oep中的任何一个,这是因为其包含来自四个oep的信息。信息1225可以或可以不包含封装的包1至4。然而,信息1225可用于重新创建封装的包1至4。图12b示出了根据实施例之一的关于图12a的四个oep的dep的内容。为了便于查看,未在dep820-2中示出ip报头、每个隧道序列号和其它信息。针对四个oep800-1、oep800-2、oep800-3和oep800-4可通过第二隧道将dep820-2传输至通信路由器108。在dep820-2中,信息1225包括封装的包1805-1、封装的包2805-2、封装的包3805-3和封装的包4805-4。用这种方法,信息1225基于封装的包1至4,因此,可以通过通信路由器108使用dep820-2中的信息1225来重新创建封装的包1至4。图12c示出了根据替代实施例的关于图12a的四个oep的dep的内容。为了便于查看,未在dep820-3中示出ip报头、每个隧道序列号和其它信息。针对四个oep800-1、oep800-2、oep800-3和oep800-4可通过第二隧道将dep820-3传输至通信路由器108。在dep820-3中,信息1225包含信息805-12和信息805-34。信息805-12和信息805-34可通过对封装的包1至4应用操作来产生。例如,该操作为异或(xor)运算。通过对封装的包1和封装的包2应用xor运算来产生信息805-12。因此,信息805-12可用于重新创建封装的包1和/或封装的包2。通过对封装的包3和封装的包4应用xor运算来产生信息805-34。因此,信息805-34可用于重新创建封装的包3和/或封装的包4。当通信路由器108接收dep820-3时,其能够使用信息805-12和信息805-34来重新创建任何缺失的封装的包1至4或纠正封装的包1至4中的任一个中的任何错误。封装的包1至4的不同的组合可被一起使用,以通过执行xor运算来在dep820-3的信息1225中产生其它类型的信息。本发明的范围不限于作为xor运算的操作,使得其能够为适于执行前向纠错的任何操作。传输dep820-3而非dep820-2的好处之一是dep820-3的传输可因为减少的开销而消耗较少的带宽。图13是示出用于处理在通信路由器108处接收的dep(比如,dep820-3)的处理的流程图。在步骤1301中,通信路由器108通过聚合连接接收dep820-3。在步骤1302中,通信路由器108的cpu确定oep-gsn的列表827中的oep-gsn。在步骤1303中,通信路由器108的cpu确定是否已经接收到与oep-gsn的列表827中的oep-gsn中的至少一个相对应的oep。更精确地说,在步骤1303中,确定是否已经接收到oep800-1、oep800-2、oep800-3和oep800-4中的至少一个。如果oep800-1、oep800-2、oep800-3和oep800-4都未接收到,则在步骤1304中,可将信息805-12和信息805-34存储在缓冲区中以供稍后处理。如果已经接收到了oep800-1、oep800-2、oep800-3和oep800-4中的至少一个,并且在步骤1309中的延迟之后,如果在步骤1305中确定全部接收了oep800-1、oep800-2、oep800-3和oep800-4,则随后在步骤1308中丢弃dep820-3。如果oep800-1、oep800-2、oep800-3和oep800-4中的至少一个但不是全部oep800-1、oep800-2、oep800-3和oep800-4已经被接收,则在步骤1306中,如果可能的话,通信路由器108可使用存储的信息805-12和/或信息805-34来重新创建与以前未接收的一个或多个oep相对应的一个或多个数据包。在步骤1307中,可将重新创建的数据包转发至其目的地。在步骤1303和步骤1305之间引入延迟是因为所有oep可能需要一些时间来到达通信路由器108。因此,在接收到oep中的一个之后,可能不会立即接收到所有oep。出于说明的目的,如果在步骤1303中确定之前接收了oep800-1,但是没有接收到oep800-2,则在步骤1306中,可使用信息805-12来重新创建数据包2。这是可能的,因为信息805-12和数据包1两者都是可用的,并且存在用于创建数据包2的足够的信息。如果之前没有接收到oep800-3和oep800-4这两者,则在步骤1306中,可能不能使用dep820-3和信息805-34来重新创建数据包3或数据包4,因为即使之前已经接收到了oep800-1和/或oep800-2,但也没有足够的信息。在另一个示例中,当通过对三个数据包执行xor运算来产生包括在dep820-3中的信息,并且之前接收到与三个数据包中的仅一个相对应的oep时,则可能不能重新创建另外两个数据包。在一个变型中,在步骤1304中,在缓冲区中存储整个dep820-3而非仅存储信息805-12和信息805-34。存储整个dep820-3的好处是在存储dep820-3之前无需解封装。如果dep820-3最终被丢弃,则可节省用于解封装的计算资源。然而,与信息805-12和信息805-34相比,dep820-3可消耗缓冲区中的更多的空间,这可能不是令人满意的。在一个变型中,在步骤1307转发数据包之前,通信路由器108将数据包在缓冲区中存储一段预先定义的时间段。当预先定义的时间段期满时,则该数据包被转发至目的地。作为替代,该数据包可存储在缓冲区中,直到e-gsn变为等于与该数据包相对应的oep-gsn,随后,将该数据包转发至目的地。在一个示例中,通信路由器106建立与通信路由器108的包括三个隧道(即,第一隧道、第二隧道和第三隧道)的聚合连接。选择第一隧道来传输oep,并且选择第二隧道和第三隧道来传输dep。用户或管理员可配置通信路由器106为传输dep810和dep820中的一种类型,或者传输dep810和dep820这两种类型。当通信路由器106配置为传输dep810时,则针对每个oep800传输至少一个dep810。如上文讨论的那样,可配置与每个oep800相对应的要被传输的dep810的数量。当通信路由器106配置为传输dep820时,针对n个oep800可传输一个dep820。数量n能够被配置。出于说明的目的,n是5,并且通信路由器106配置为:通过第一隧道针对每5个所传输的oep800传输一个dep820。因此,通信路由器106在通过第一隧道传输5个oep800之后,通过第二隧道或第三隧道传输一个dep820。如果传输了第一oep800、第二oep800、第三oep800、第四oep800和第五oep800,并且dep820包括与第一oep800、第二oep800、第三oep800、第四oep800和第五oep800的封装的包相对应的信息,则m个oep-gsn的列表826包括第一oep800的oep-gsn、第二oep800的oep-gsn、第三oep800的oep-gsn、第四oep800的oep-gsn和第五oep800的oep-gsn。dep-gsn822不与任何oep800的oep-gsn802相同。封装的包825包括分别与第一oep800、第二oep800、第三oep800、第四oep800和第五oep800相对应的封装的包825-1、封装的包825-2、封装的包825-3、封装的包825-4和封装的包825-5。当通信路由器106配置为传输dep810和dep820两者时,其可以或可以不使用相同的隧道进行传输。出于说明的目的,通信路由器106配置为针对每个oep800传输两个dep810,并且针对每5个oep800传输一个dep820。与相同的oep800相对应的两个dep810不通过相同的隧道传输。与每个oep800相对应的第一dep810可通过第二隧道传输,并且与每个oep800相对应的第二dep810可通过第三隧道传输。dep820可通过第二隧道或第三隧道传输。dep820可以以轮询方式通过第二隧道和第三隧道传输。作为替代,当通信路由器106配置为不通过相同的隧道传输dep810和dep820时,其可选择第二隧道来为每个oep800传输一个dep810,并且选择第三隧道来针对每5个oep800传输一个dep820。在一些情况下,可优选地不传输dep,因为其可能对oep的传输具有不利影响。例如,使用通信装置106的相同网络接口和/或使用通信装置108的相同网络接口来建立第一隧道和第二隧道时,通过第二隧道传输dep可延长oep通过第一隧道所经历的延迟。还可以降低oep的吞吐量。当通过站点102中的相同wan和/或站点104中的相同wan建立第一隧道和第二隧道时,可观察到类似的影响。当使用由相同运营商提供的网络来建立第一隧道和第二隧道时,也可以观察到类似的影响,因为隧道所连接的基站可能相同。此外,产生和传输dep所消耗的计算资源可能会减慢oep的传输。因此,在这些情况下,可优选地不传输dep或不传输与每个oep相对应的大量的dep。上述处理还可应用于封装从通信路由器108传输至通信路由器106的包。应当理解,本公开不限于系统500的架构。例如,任何合适的基于处理器的装置可用于实现上述教导,该装置包括但不限于路由器、个人计算机、笔记本电脑、计算机工作站、多处理器服务器、甚至移动电话。此外,某些实施例可在专用集成电路(asic)或超大规模集成电路(vlsi)上实现。事实上,本领域普通技术人员可利用能够执行根据实施例的逻辑运算的任何数量的适当的结构。虽然已经详细描述了本发明的实施例及其优点,但是应当理解,在不脱离由所附权利要求限定的本发明的精神和范围的情况下,可以在此进行各种改变、修改和替换。此外,本申请的范围不旨在限于说明书中描述的处理、机器、制造、物质组成、装置、方法和步骤的特定实施例。本领域普通技术人员从本发明的公开中将容易地理解,可以根据本发明利用当前存在或以后开发的执行与本文所述的相应实施例实质上相同的功能或实现与本文所述的相应实施例实质上相同结果的处理、机器、制造、物质组成、装置、方法或步骤。因此,所附权利要求旨在将这些处理、机器、制造、物质组成、装置、方法或步骤包括在其范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1