具体实施方式
以下说明仅提供优选的示例性实施例且并不意图限制本发明的范围、适用性或配置。实际上,优选的示例性实施例的以下说明将为所属领域的技术人员提供实施本发明的优选示例性实施例的有利描述。应理解,在不脱离如在所附权利要求书中阐述的本发明的精神和范围的情况下可以对元件的功能以及布置进行各种改变。
在以下描述中,给出特定细节以提供对实施例的透彻理解。然而,所属领域的一般技术人员应理解,可以在没有这些具体细节的情况下实践本发明的实施例。例如,可以框图示出电路以免以不必要的细节混淆实施例。在其它情况下,可以在没有不必要的细节的情况下示出熟知的电路、过程、算法、结构以及技术以便避免混淆实施例。
并且,应注意,实施例可以描述为过程,所述过程描绘为流程图、流程图表、数据流图或框图。尽管流程图可以将操作描述为顺序过程,但是许多操作可以并行或同时执行。另外,可以重新布置操作的顺序。过程在其操作完成时终止,但是可以具有不包含在图中的另外步骤。过程可对应于方法、函数、程序、子例程、子程序等。当过程对应于函数时,过程的终止对应于函数返回到调用函数或主函数。
实施例或其各部分可以程序指令来实施,所述程序指令可在处理单元上操作以用于执行如本文中所描述的功能和操作。构成各个实施例的程序指令可以存储在存储介质中。
构成各个实施例的程序指令可以存储在存储介质中。此外,如本文所公开的,术语存储介质可以表示用于存储数据的一个或多个装置,包含只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、随机存取存储器(RAM)、磁RAM、磁芯存储器、软磁盘、软盘、硬盘、磁带、CD-ROM、快闪存储器装置、存储卡和/或用于存储信息的其它机器可读介质。
处理单元可以是微处理器、微控制器、数字信号处理器(DSP)、那些装置的任何组合,或被配置成处理信息的任何其它电路。
处理单元执行程序指令或代码段以实施本发明的实施例。此外,实施例可通过硬件、软件、固件、中间件、微码、硬件描述语言或其任何组合来实施。当用软件、固件、中间件或微码实施时,执行必需任务的程序指令可以存储在计算机可读存储介质中。处理单元可以通过虚拟化来实现,并且可以是包含基于云的实例中的虚拟处理单元的虚拟处理单元。
网络装置可以是主机或节点。主机可以是个人计算机、工作站、大型机、文件服务器、瘦客户机、PDA、智能电话或其它计算机装置。节点可以是调制解调器、集线器、网桥、路由器、接入点、网关、虚拟机或服务器。节点充当连接点、重分布点或通信终端。节点能够发送、接收或转发数据包。网络装置可通过虚拟化来实现,并且可以是虚拟网络装置。
IP包可以封装在封装IP包中。如果IP包对另一IP包进行了封装,则所述IP包也可以是封装IP包。对IP包进行了封装的IP包和封装包可以具有相同的协议或不同的协议。
连接到网络接口的接入网络可呈WAN连接的形式。
WAN连接可以呈光纤、电缆、以太网、ATM、帧中继、T1/E1、IPv4、IPv6、无线技术、Wi-Fi、WiMax、高速分组接入技术、DSL、MPLS、卫星连接、例如3G、4G、5G和3GPP长期演进(LTE)之类的蜂窝网络等形式。
可以使用例如传输控制协议(TCP)之类的面向连接的协议或例如用户数据报协议(UDP)之类的无连接协议来实施端到端连接,以传输数据包。用于部署端到端连接的众所周知的协议包含2层隧道协议(L2TP)、安全外壳(SSH)协议、多协议标签交换(MPLS)以及微软的点对点隧道协议(PPTP)。
网络接口可以是包含基于云的实例中的虚拟网络接口的虚拟网络接口。
多个隧道可以是虚拟专用网络(VPN)隧道。多个VPN隧道聚合或绑定在一起以形成一个聚合的VPN连接。所属领域的技术人员将了解,有多种方式来聚合或绑定多个VPN隧道以形成一个聚合的VPN连接。聚合的VPN连接可以被使用它的会话或应用视为一个VPN连接。聚合的VPN连接的一个实例是Peplink开发的SpeedFusion。
图4是根据本发明的实施例中的一个实施例的网络装置400的示意性框图。网络装置400包括处理单元401、主存储器402、次级存储装置403以及网络接口405a和405b。处理单元401连接到主存储器402。处理单元401经由总线404连接到次级存储装置403以及网络接口405a和405b。处理单元401控制网络装置400的所有操作。
如图4所示的网络装置400可以是路由器。网络装置400可由软件或硬件实施。如果网络装置400由硬件实施,则网络装置400可能具有底盘箱。网络接口405a和405b、处理单元401以及次级存储器403焊接在底盘箱内的电路板上。
网络装置400可以是图1A、图1D、图1E和图8所示的网络装置102或103的示例性实施例。
图1D示出针对图1A所示的网络场景的本发明的典型网络部署。在此图示中,根据本发明的实施例中的一个实施例,网络装置102和103能够发送TCP/IP包。与图1B和图1C相比,在网络装置102与网络装置103之间建立了六个隧道109a-f。根据图1B和图1C所示的场景,网络装置102与103之间的逻辑数据连接109a是在移动装置101与台式计算机104之间建立的逻辑数据连接的一部分。网络装置102与103之间的逻辑数据连接109b和109c分别是在移动装置101与移动装置106之间建立的逻辑数据连接的一部分。网络装置102与103之间的逻辑数据连接109d和109e分别是在膝上型计算机105与台式计算机104之间建立的逻辑数据连接的一部分。网络装置102与103之间的逻辑数据连接109f是在移动装置101与移动装置106之间建立的逻辑数据连接的一部分。不限制用于建立逻辑数据连接的网络装置102和网络装置103的网络接口的数目。所使用的网络接口的数目可以根据所期望的路由器和配置而变化。
在图1A所示的实施例中,网络装置102的两个网络接口和网络装置103的三个网络接口用于通过相应的接入网络130和131连接到公用/专用互联网络107。然后,可以在接入网络130中的一个、公用/专用互联网络107和接入网络131中的一个上建立逻辑数据连接。接入网络130和131是用于在网络装置102与网络装置103之间的公用/专用互联网络107内传送信息的物理数据连接。接入网络130和131可以具有类似或不同的带宽能力。
在一个实例中,当网络装置102检测到其一个LAN中的一个装置到具有通过网络装置103可到达的IP地址的另一装置之间需要新的逻辑数据连接时,网络装置102将与网络装置103建立隧道以承载这个新的逻辑数据连接。例如,逻辑数据连接是由移动装置101向移动装置106发出的网页HTTP请求。然后,在网络装置102与网络装置103之间建立隧道。
在一个实例中,在网络装置102与网络装置103之间建立的隧道可以通过至少一个无线接入网络建立。出于示例性的目的,接入网络130a可以是LTE。接入网络130b可以是光纤。接入网络131a可以是Wi-Fi。接入网络131b可以是光纤。
例如,可以通过接入网络130a和131a建立隧道。在另一实例中,可以通过接入网络130a和131b建立隧道。在另一实例中,可以通过接入网络130b和131a建立隧道。在另一实例中,可以通过接入网络130b和131b建立隧道。
不限制所建立的隧道必须是上文所提及的组合。可以与不同类型的接入网络以其它组合建立隧道。
反之亦然,当网络装置103检测到其一个LAN中的一个装置到通过网络装置102可到达的IP地址之间需要新的逻辑数据连接时,网络装置103将与网络装置102建立隧道以承载这个新的逻辑数据连接。一旦建立隧道,就可以通过隧道发送和接收属于逻辑数据连接的数据。在一个变型中,当逻辑数据连接关闭时,将移除隧道。在另一变型中,当在一段时间之后没有发送或接收数据时将移除隧道。
隧道109属于使用相同的加密协议和相同的初始化向量建立的相同组。例如,隧道109可以使用同一共享密钥。然而,隧道109中的每个隧道具有其自身的源端口和目的端口。取决于隧道109通过同一对网络接口建立的位置,隧道109的源IP地址可以相同或不同,并且隧道109的目的IP地址可以相同或不同。
图8示出本发明的网络部署。与图1D不同,在图8中,在网络装置102的一个或多个WAN接口与网络装置103的一个或多个WAN接口之间建立了四个隧道109a-d、隧道810和两个逻辑数据连接811a-b。
不限制连接的数目和连接的类型。也不限制所有逻辑数据连接必须由隧道承载。出于示例性的目的,与图1D中的图式类似,移动装置101与台式计算机104之间的第一逻辑数据连接由隧道109a承载;移动装置101与台式计算机104之间的第二逻辑数据连接和第三逻辑连接分别由隧道109b和109c承载。移动装置105与台式计算机106之间的第四逻辑数据连接由隧道109d承载。移动装置101与台式计算机104之间的两个逻辑数据连接由隧道810承载。逻辑数据连接811a是不由膝上型计算机105与台式计算机104之间的任何隧道承载的连接。逻辑数据连接811a和811b是不由膝上型计算机105与移动装置106之间的任何隧道承载的连接。
不限制所建立的隧道的数目。例如,当在网络装置103的LAN中的装置与网络装置102的LAN中的装置之间存在三个逻辑数据连接时,可以建立三个隧道。在另一实例中,当在网络装置103的LAN中的装置与网络装置102的LAN中的装置之间存在数百个逻辑数据连接时,可以建立数百个隧道。
在一个实例中,通过接入网络130a和接入网络131a建立隧道109a。通过接入网络130a和接入网络131b建立隧道109b。通过接入网络130a和接入网络131c建立隧道109c。通过接入网络130b和接入网络131a建立隧道109d。通过接入网络130b和接入网络131b建立隧道109e。通过接入网络130b和接入网络131b建立隧道109f。不限制以上文所提及的组合建立隧道。可以其任何组合建立隧道。
不限制使用相同或不同的接入网络130a-b和相同或不同的接入网络131a-c的隧道的数目。例如,可以通过接入网络130a和接入网络131a建立隧道109a-d中的每个隧道,并且可以通过接入网络130b和接入网络131b建立隧道109e-f中的每个隧道。也不限制接入网络130的接入网络或接入网络131的接入网络用于建立隧道的频繁程度。在另一实例中,通过接入网络130a和接入网络131中的任一接入网络建立隧道109a-f中的每个隧道。也不限制可用于建立隧道的接入网络130或接入网络131的数目。例如,接入网络131b和131c不用于建立任何隧道。可以仅通过接入网络131a和接入网络130的任一接入网络建立隧道。
在一个实施例中,隧道可以是聚合的隧道。多个隧道可聚合、组合或绑定在一起以形成一个聚合的隧道。所属领域的技术人员将了解,有多种方式来聚合、组合或绑定多个所建立端到端连接以形成一个聚合的端到端连接。聚合的端到端连接被使用其的会话或应用视为一个端到端连接。聚合的端到端连接可以被视为隧道、虚拟专用网络或连接或面向无连接的连接。例如,聚合的端到端连接是TCP连接。在另一实例中,聚合的端到端连接是UDP连接。在另一实例中,聚合的端到端连接是多个隧道的聚合,并且每个隧道在第一节点与第二节点之间链接。在另一实例中,聚合的端到端连接是VPN隧道,包括多个所建立的端到端连接,并且每个所建立端到端连接在第一节点与第二节点之间链接。
虽然当通过接入网络130和131建立隧道时不限制选择接入网络130和131中的哪一个,但优选的是,选择接入网络以优化包发送期间网络业务流的性能。在一个实施例中,基于策略选择接入网络。策略可以基于以下条件中的一个或多个:性能、往返时间、优先级、高可用性、距离、带宽速率、比特率、成本和介质。例如,如果基于成本选择接入网络,则在建立隧道时选择具有较低成本的接入网络。然而,如果选择仅基于成本,则所有逻辑数据连接可以选择相同的接入网络,例如接入网络130a,并且引起性能降低。
在另一实例中,如果基于成本和性能选择接入网络。逻辑数据连接可以较低成本通过接入网络建立,同时考虑网络整体性能的性能。如果另一逻辑数据连接选择具有较低成本的接入网络,则所述逻辑数据连接的成本将变得更高。不优选的是,通过所述接入网络建立逻辑数据连接。
根据以下条件中的一个或多个:包的源地址、包的目的地址、协议和应用,可以选择相同会话的包以通过具有或不具有隧道的逻辑数据连接来发送。
在一个实施例中,如果会话是HTTP会话,则选择具有隧道的逻辑数据连接。在另一实施例中,如果源地址是指定源地址和目的地,则选择具有隧道的逻辑数据连接。例如,如果IP包从膝上型计算机105发送到移动装置106,则选择具有隧道的逻辑数据连接。
图1F是示出当将TCP/IP包从所述网络装置发送到另一网络装置时在例如网络装置102或103之类的网络装置中执行的过程的流程图。出于示例性的目的,网络装置102从膝上型计算机105接收TCP/IP包,所述TCP/IP包被指定为通过网络装置103可到达的IP地址。IP地址例如属于台式计算机104。为了可读性,源自膝上型计算机105并且由网络装置102的LAN网络接口中的一个LAN网络接口接收的TCP/IP包在图1F中被称作第一TCP/IP包。在过程111处,网络装置102根据第一TCP/IP包的源地址、目的地址、源端口号和目的端口号识别第一TCP/IP包的会话。
在过程112处,网络装置102决定是否通过隧道发送第一TCP/IP包。所述决定可基于大量因素,包含用于膝上型计算机105的出站策略、网络装置102的安全策略、用于台式计算机104的出站策略和用于网络装置103的安全策略。如果不需要通过隧道发送第一TCP/IP包,则接着执行过程116以在不使用隧道的情况下发送第一TCP/IP包。如果需要通过隧道发送第一TCP/IP包,则接着在通过隧道发送第一TCP/IP包之前执行过程113。
在过程113处,如果按会话顺序第一TCP/IP包不是第一个IP包,则将执行过程115。如果按会话顺序第一TCP/IP包是第一个IP包,则网络装置102将在过程114处与网络装置103建立隧道。不限制建立隧道的方式。例如,可以使用IPSec或通用路由封装(GRE)建立隧道。优选的是,使用基于具有一致的源端口号和目的端口号的TCP的隧道协议,以便具有会话一致性。例如,当第一TCP/IP包离开膝上型计算机105时,所述第一TCP/IP包可具有源地址,即膝上型计算机-SA;目的地址,即膝上型计算机-DA;源端口号,即膝上型计算机-SP;以及目的端口号,即膝上型计算机-DP。当网络装置102通过隧道发送第一TCP/IP包时,可由第一封装包对所述第一TCP/IP包进行封装。第一封装包的源地址,即装置-SA,将是发送封装包的网络装置102的网络接口的IP地址;第一封装包的目的地址,即装置-DA,将是接收封装包的网络装置103的网络接口的IP地址;第一封装包的源端口号,即装置-SP,将是由接收封装包的网络装置103的处理单元分配的端口,并且第一封装包的目的端口号即装置-DP将是接收封装包的网络装置103的端口。
对于属于第一TCP/IP包的同一会话的包,将具有相同的膝上型计算机-SA、膝上型计算机-DA、膝上型计算机-SP和膝上型计算机-DP。对此会话的包进行封装的封装包应具有相同的装置-SA、装置-DA、装置-SP和装置-DP,以便允许会话一致性。当封装包行进通过公用/专用互联网络107时,维持会话一致性的能力可以减少丢包、较低时延方差和较大带宽分配。
为了具有更好的安全性,还优选对隧道进行加密。
在过程115处,第一TCP/IP包被封装并且通过隧道被发送。
实例1-将包从移动装置101发送到台式计算机104
在实例1中,分别在根据本发明的实施例的网络装置102和网络103中示出图2A和图2B。
图2A是示出根据本发明的实施例中的一个实施例的当通过隧道发送TCP/IP包时在网络装置102中执行的过程的流程图。应结合图1A、图1D、图1F、图5和图7来看图2A。出于示例性的目的,在此实例中,移动装置101是源装置并且台式计算机104是目的装置。因此,将包从移动装置101发送到台式计算机104。过程201到过程204是过程115的详细说明。将示出,网络装置102的处理单元将对从移动装置101接收到的包进行封装并将封装包发送到网络装置103,并且网络装置103的处理单元随后将对从网络装置102接收到的封装包进行解封装并将包发送到台式计算机104。
在过程201中,网络装置102的处理单元从移动装置101接收第一TCP/IP包。在图5中,第一TCP/IP包是TCP/IP包501。TCP/IP包501的结构遵循包结构711,所述包结构711保持报头部分701和有效负载部分702。TCP/IP包501的源地址和目的地址分别是移动装置101的IP地址和台式计算机104的IP地址。
在一个实例中,如果移动装置101在网络地址转换(NAT)装置或具有NAT功能的网络装置后方,则在将TCP/IP包501转发到网络装置103并且进一步转发到台式计算机104之前,根据NAT表将作为移动装置101的IP地址的TCP/IP包501的源地址映射并转换成另一IP地址。
在另一实例中,在将TCP/IP包501转发到网络装置103并且进一步转发到台式计算机104之前,通过网络装置102的处理单元将TCP/IP包501的源地址和源端口映射并转换成网络装置102的另一IP地址和唯一端口。
在过程202中,网络装置102的处理单元创建隧道信息。隧道信息可以包括用于封装目的的数据,例如加密信息、管理信息、网络性能信息和认证信息。隧道信息是允许通过在网络装置102与网络装置103之间建立的隧道发送TCP/IP包501的信息。在执行过程201之前,在图1F的过程114中建立隧道。
在过程203中,网络装置102的处理单元创建第一封装TCP/IP包,所述第一封装TCP/IP包是图5中的TCP/IP包502。TCP/IP包502包括报头和有效负载。TCP/IP包502的结构遵循包结构712。包结构712中的四个部分是报头部分704、隧道信息部分703、封装报头部分701和封装有效负载部分702。隧道信息部分703、封装报头部分701和封装有效负载部分702一起是有效负载部分。TCP/IP包502的报头包括报头部分704,所述报头部分704可以保持源地址,所述源地址是网络装置102的网络接口的IP地址;目的地址,其是网络装置103的网络接口的IP地址;源端口号,其是网络装置102的端口号;目的端口号,其是网络装置103的端口号;校验和以及段号。TCP/IP包502的有效负载部分保持在过程202处创建的隧道信息和在过程201处接收的TCP/IP包。因此,将TCP/IP包501封装在TCP/IP包502的有效负载部分中。
在过程204中,网络装置102经由网络接口通过隧道将TCP/IP包502发送到网络装置103。
图2B是示出当通过网络接口接收TCP/IP包时在网络装置103中执行的过程的流程图。应结合图1A、图1D、图5和图7来看图2B。
在过程211中,网络装置103从网络装置102接收TCP/IP包。出于示例性的目的,所接收的TCP/IP包是图5中的TCP/IP包502。
在过程212中,网络装置103的处理单元决定TCP/IP包502是否属于会话。可通过检测TCP/IP包502的结构来实现所述决定。
如果TCP/IP包502的有效负载不包括隧道信息,则TCP/IP包502可能不属于会话,并且随后执行过程215。例如,TCP/IP包502的结构应遵循包结构711。在过程215中,如果所接收的TCP/IP包不属于会话,则网络装置103将所接收的TCP/IP包发送到台式计算机104。出于示例性的目的,发送到台式计算机104的所接收的TCP/IP包是TCP/IP包503。结果,TCP/IP包503的有效负载应与TCP/IP包501的有效负载相同。如果TCP/IP包502的有效负载包括隧道信息,则TCP/IP包502属于会话,并且接着执行过程213。
在过程213中,从TCP/IP包502的有效负载中检索隧道信息和例如TCP/IP包503之类的TCP/IP包。因此,TCP/IP包503应与TCP/IP包501相同。
在过程214中,网络装置103的处理单元根据TCP/IP包503的报头部分中的目的地址将TCP/IP包503发送到目的装置。例如,网络装置103将TCP/IP包503发送到台式计算机104,并且TCP/IP包503的目的地址是台式计算机104的IP地址。
实例2-将包从移动装置106发送到膝上型计算机105
本发明的实施例通常可涉及通过通信信道的双向数据传输。因此,图2A和图2B所示的过程流程图还可以在任何网络装置中执行。出于示例性的目的,在此实例中,移动装置106是源装置并且膝上型计算机105是目的装置。因此,将包从移动装置106发送到膝上型计算机105。将此实例与将包从移动装置101发送到台式计算机104的实例1进行比较,在此示例中,网络装置103的处理单元将执行封装,而网络装置102的处理单元将执行解封装。
当通过网络接口接收TCP/IP包时,也可以在网络装置102中执行图2A所示的过程流程图。应结合图1A、图1D、图5和图7来看图2A。
在过程201中,网络装置103的处理单元从移动装置106接收第一TCP/IP包。在图5中,第一TCP/IP包是TCP/IP包504。TCP/IP包504的结构遵循包结构711,所述包结构711保持报头部分701和有效负载部分702。TCP/IP包504的源地址和目的地址分别是移动装置106的IP地址和膝上型计算机105的IP地址。
在一个实例中,如果移动装置106在NAT装置或具有NAT功能的网络装置后方,则在将TCP/IP包504转发到网络装置102并且进一步转发到膝上型计算机105之前,根据NAT表将移动装置106的IP地址映射并转换成另一IP地址。
在另一实例中,在将TCP/IP包504转发到网络装置102并且进一步转发到膝上型计算机105之前,通过网络装置103的处理单元将源地址和源端口映射并转换成网络装置103的另一IP地址和唯一端口。
在过程202中,网络装置103的处理单元创建隧道信息。
在过程203中,网络装置103的处理单元创建第一封装TCP/IP包,所述第一封装TCP/IP包是图5中的TCP/IP包505。TCP/IP包505的结构遵循包结构712。TCP/IP包505的报头包括报头部分704,所述报头部分704可以保持源地址,所述源地址是网络装置103的网络接口的IP地址;目的地址,其是网络装置102的网络接口的IP地址;源端口号,其是网络装置103的端口号;目的端口号,其是网络装置102的端口号;校验和以及段号。TCP/IP包505的有效负载部分保持在过程202处创建的隧道信息和在过程201处接收的TCP/IP包。因此,将TCP/IP包504封装在TCP/IP包505的有效负载部分中。
在过程204中,网络装置103经由网络接口通过隧道将TCP/IP包505发送到网络装置102。
当通过网络接口接收TCP/IP包时,也可以在网络装置102中执行图2B所示的过程流程图。应结合图1D、图5和图7来看图2B。
网络装置102在过程211中从网络装置103接收TCP/IP包。出于示例性的目的,所接收的TCP/IP包是图5中的TCP/IP包505。
在过程212中,网络装置102的处理单元决定TCP/IP包505是否属于会话。
如果TCP/IP包505的有效负载不包括隧道信息,则TCP/IP包505可能不属于会话,并且随后执行过程215。例如,TCP/IP包505的结构应遵循包结构711。在过程215中,如果所接收的TCP/IP包不属于会话,则网络装置102将所接收的TCP/IP包发送到膝上型计算机105。出于示例性的目的,发送到膝上型计算机105的所接收的TCP/IP包是TCP/IP包506。结果,TCP/IP包506应与TCP/IP包504相同。如果TCP/IP包505的有效负载包括隧道信息,则TCP/IP包505属于会话,并且接着执行过程213。
在过程213中,从TCP/IP包505的有效负载中检索隧道信息和TCP/IP包506。所检索的TCP/IP包是封装在TCP/IP包505中的TCP/IP包504。因此,TCP/IP包506应与TCP/IP包504相同。
在过程214中,接着根据TCP/IP包506的报头部分中的目的地址将TCP/IP包506发送到目的装置。在本图示中,TCP/IP包506的目的地址是膝上型计算机105的IP地址。
实例3-将包从移动装置101发送到台式计算机104
图3A是示出根据本发明的实施例的当通过隧道发送第一TCP/IP包时在网络装置102中执行的过程的流程图。应结合图1A、图1D、图1F、图6和图7来看图3A。出于示例性的目的,移动装置101是源装置并且台式计算机104是目的装置。将此实例与实例1进行比较,网络装置102不仅发送第一封装TCP/IP包,而且在发送第一封装TCP/IP包之前、之后或大约同时发送TCP/IP包。网络装置103随后将确定所接收的包是第一TCP/IP包或第一封装TCP/IP包。发送第一封装包与发送第一包的时间差应小到2ms。
当从移动装置101接收到第一TCP/IP包时,通过网络装置102的处理单元执行过程301-304。过程301-304与实例1中的过程201-204相同。在图6中,第一TCP/IP包是TCP/IP包601。
在过程301中,网络装置102的处理单元从移动装置101接收第一TCP/IP包601。TCP/IP包601的结构遵循包结构711,所述包结构711保持报头部分701和有效负载部分702。TCP/IP包601的源地址和目的地址分别是移动装置101的IP地址和台式计算机104的IP地址。
在一个实例中,如果移动装置101在NAT装置或具有NAT功能的网络装置后方,则在将TCP/IP包601转发到网络装置103并且进一步转发到台式计算机104之前,根据NAT表将作为移动装置101的IP地址的TCP/IP包601的源地址映射并转换成另一IP地址。
在另一实例中,在将TCP/IP包601转发到网络装置103并且进一步转发到台式计算机104之前,将TCP/IP包601的源地址和源端口映射并转换成网络装置102的另一IP地址和唯一端口。
在过程302中,网络装置102的处理单元创建隧道信息。在此图示中,新的源地址是网络装置102的IP地址。
在过程303中,网络装置102的处理单元创建第一封装TCP/IP包,所述第一封装TCP/IP包是图6中的TCP/IP包602。TCP/IP包602包括报头和有效负载。TCP/IP包602的结构遵循包结构712。包结构712中的四个部分与过程203中描述的TCP/IP包602的包结构相同。TCP/IP包602的报头保持源地址、目的地址、源端口号、目的端口号、校验和以及段号。TCP/IP包602的有效负载部分保持在过程302处创建的隧道信息和在过程301处接收的TCP/IP包。因此,将TCP/IP包601封装在TCP/IP包602的有效负载部分中。
在过程304中,网络装置102通过网络接口将TCP/IP包602发送到网络装置103。
在过程305中,网络装置102的处理单元决定是否符合第一条件。如果符合第一条件,则网络装置102通过网络接口进一步将TCP/IP包611转发到网络装置103。第一条件可以是以下条件的一个或多个:包的类型、IP包所属的会话、应用的类型、用户或管理员的偏好或确保不存在丢包的其它条件。
在一个实例中,属于会话的包用于视频会议。为了确保流式传输变得流畅,当通过逻辑数据连接在网络装置之间发送时,满足第一条件以避免在会话中丢失包。
在另一实例中,用户或管理员可能更希望始终满足第一条件。因此,始终发送第一包。
TCP/IP包611的结构遵循包结构711,所述包结构711保持报头部分701和有效负载部分702。在一个场景下,当不存在NAT时,TCP/IP包611的内容与TCP/IP包601的内容相同。TCP/IP包611的报头和有效负载分别是TCP/IP包601的报头和有效负载。因此,在此场景下,TCP/IP包611的源地址是移动装置101的IP地址。
在另一场景下,当存在NAT时,TCP/IP包611的报头可保持与TCP/IP包601的源IP地址和端口号不同的源IP地址以及不同的端口号。TCP/IP包611的有效负载与TCP/IP包601的有效负载相同。因此,在此场景下,TCP/IP包611的源地址是网络装置102的IP地址。
图3B是示出当通过网络接口接收TCP/IP包时在网络装置103中执行的过程的流程图。应结合图1A、图1D、图6和图7来看图3B。
在过程311中,网络装置103从网络装置102接收TCP/IP包。出于示例性的目的,所接收的TCP/IP包可以是图6所示的TCP/IP包602或TCP/IP包611。
在过程314中,网络装置103的处理单元决定是否通过隧道接收所接收的TCP/IP包。
如果通过隧道接收所接收的TCP/IP包,则随后执行过程312。
如果未通过隧道接收所接收的TCP/IP包,则随后执行过程316以从所接收的TCP/IP包中检索TCP/IP包。所检索的TCP/IP包与TCP/IP包601相同。在检索到TCP/IP包601之后,由图3B所示的网络装置103的处理单元处理过程315。稍后将论述过程312和过程315的细节。
在过程312中,网络装置103的处理单元决定所接收的TCP/IP包是否属于会话。可通过检测所接收的TCP/IP包的结构来实现所述决定。如果所接收的TCP/IP包的有效负载包括隧道信息,则所接收的TCP/IP包属于会话,并且随后执行过程313。如果所接收的TCP/IP包不属于会话,则在过程317中直接发出所接收的TCP/IP包而无需进行解封装。
在过程313中,从TCP/IP包602的有效负载中检索隧道信息和TCP/IP包603。所检索的TCP/IP包是封装在TCP/IP包602中的TCP/IP包601。因此,TCP/IP包603应与TCP/IP包601相同。
在网络装置103的处理单元处理过程313或过程316之后执行过程315。在过程315中,网络装置103的处理单元决定是否已接收到所检索的TCP/IP包。所述决定可基于TCP/IP包的报头。
如果已接收到所检索的TCP/IP包,则在过程318中,网络装置103的处理单元不将所检索的TCP/IP包发送到目的装置。
如果之前没有接收到所检索的第一TCP/IP包,则在过程319中,网络装置103的处理单元将所检索的TCP/IP包发送到目的装置。
实例4-将包从移动装置106发送到膝上型计算机105
本发明的实施例通常可涉及通过通信信道的双向数据传输。因此,图3A所示的过程流程图还可以在任何网络装置中执行。出于示例性的目的,移动装置106是源装置并且膝上型计算机105是目的装置。将此实例与实例3进行比较,网络装置103不仅发送封装TCP/IP包,而且在发送第一封装TCP/IP包之前、之后或大约同时将第一TCP/IP包发送到网络装置102。网络装置102确定所接收的包是第一TCP/IP包或第一封装TCP/IP包。
在过程301中,网络装置103的处理单元从移动装置106接收第一TCP/IP包,所述第一TCP/IP包是图6中的TCP/IP包604。TCP/IP包604的结构遵循包结构711,所述包结构711保持报头部分701和有效负载部分702。TCP/IP包604的源地址和目的地址分别是移动装置106的IP地址和膝上型计算机105的IP地址。
在过程302中,网络装置103的处理单元创建隧道信息。在此图示中,新的源地址是网络装置103的IP地址。
在过程303中,网络装置103的处理单元创建第一封装TCP/IP包,所述第一封装TCP/IP包是图6中的TCP/IP包605。TCP/IP包605的结构遵循包结构712。TCP/IP包605的报头部分保持源地址、目的地址、源端口号、目的端口号、校验和以及段号。TCP/IP包605的有效负载部分保持在过程302处创建的隧道信息和在过程301处接收的TCP/IP包。因此,将TCP/IP包604封装在TCP/IP包605的有效负载部分中。
在过程304中,网络装置103通过网络接口将TCP/IP包605发送到网络装置102。
在过程305中,网络装置103的处理单元决定是否符合第一条件。如果符合第一条件,则网络装置103通过网络接口进一步将TCP/IP包612转发到网络装置102。在一个场景下,当不存在NAT时,TCP/IP包612的内容与TCP/IP包604的内容相同。TCP/IP包612的报头和有效负载分别是TCP/IP包604的报头和有效负载。因此,在此场景下,TCP/IP包612的源地址是移动装置106的IP地址。
在另一场景下,当存在NAT时,TCP/IP包612的报头可保持与TCP/IP包604的源IP地址和端口号不同的源IP地址以及不同的端口号。TCP/IP包612的有效负载与TCP/IP包604的有效负载相同。因此,在此场景下,TCP/IP包612的源地址是网络装置103的IP地址。
图3B是示出当通过网络接口接收TCP/IP包时在网络装置102中执行的过程的流程图。应结合图1A、图1D、图6和图7来看图3B。
网络装置103在过程311中从网络装置102接收TCP/IP包。
在过程314中,网络装置102的处理单元决定是否通过隧道接收所接收的TCP/IP包。
如果通过隧道接收所接收的TCP/IP包,则随后执行过程312。出于示例性的目的,所接收的TCP/IP包可以是图6所示的TCP/IP包605或TCP/IP包612。
如果未通过隧道接收所接收的TCP/IP包,则随后执行过程316以从所接收的TCP/IP包中检索TCP/IP包。所检索的TCP/IP包与TCP/IP包604相同。在检索到TCP/IP包604之后,由图3B所示的网络装置102的处理单元处理过程315。
在过程312中,网络装置102的处理单元决定所接收的TCP/IP包是否属于会话。可通过检测TCP/IP包605的结构来实现所述决定。如果所接收的TCP/IP包的有效负载包括隧道信息,则所接收的TCP/IP包属于会话,并且随后执行过程313。如果所接收的TCP/IP包不属于会话,则在过程317中直接发出所接收的TCP/IP包而无需进行解封装。
在过程313中,从TCP/IP包605的有效负载中检索隧道信息和TCP/IP包606。所检索的TCP/IP包是封装在TCP/IP包605中的TCP/IP包604。因此,TCP/IP包606应与TCP/IP包604相同。
在网络装置102的处理单元处理过程313或过程316之后执行过程315。在过程315中,网络装置102的处理单元决定是否已接收到所检索的第一TCP/IP包。所述决定可基于TCP/IP包的报头。
如果已接收到所检索的TCP/IP包,则在过程318中,网络装置102的处理单元不将所检索的TCP/IP包发送到目的装置。
如果之前没有接收到所检索的第一TCP/IP包,则在过程319中,网络装置102的处理单元将所检索的TCP/IP包发送到目的装置。
不限制图2A、图2B、图3A和图3B的过程流程图的处理必须仅在网络装置102处执行或者必须仅在网络装置103处执行。由于网络装置可以同时发送和接收TCP/IP包,因此网络装置102和103都可以执行图2A、图2B、图3A和图3B的过程流程图的过程。