CN114500176B - 用于vpn的多流负载均衡方法、装置、***及存储介质 - Google Patents
用于vpn的多流负载均衡方法、装置、***及存储介质 Download PDFInfo
- Publication number
- CN114500176B CN114500176B CN202210316106.7A CN202210316106A CN114500176B CN 114500176 B CN114500176 B CN 114500176B CN 202210316106 A CN202210316106 A CN 202210316106A CN 114500176 B CN114500176 B CN 114500176B
- Authority
- CN
- China
- Prior art keywords
- vpn
- slot
- tunnel
- slot position
- gateway cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供用于VPN的多流负载均衡方法、装置、***及存储介质。将VPN客户端与VPN网关集群之间的VPN隧道划分为多个槽位,为各槽位配置不同的隧道封装信息,通过多个槽位承载VPN客户端所在网络环境中的多条数据流,根据各槽位的隧道封装信息将其承载数据流中的原始报文封装为VPN报文发送至VPN网关集群;在VPN网关集群内,根据VPN报文的隧道封装信息,由同一网关设备上同一处理单元对来自同一槽位的VPN报文进行处理,针对同一VPN隧道内的多条数据流实现负载均衡,使得VPN客户端所在网络环境中的不同数据流可被均衡到VPN网关集群中的不同处理单元,解决单个处理单元无法满足流量处理需求的问题。
Description
技术领域
本申请涉及云计算技术领域,尤其涉及一种用于VPN的多流负载均衡方法、装置、***及存储介质。
背景技术
随着混合云技术架构的发展,越来越多的企业采用混合云技术扩展自有的IT 基础架构,企业继续使用自有的IT基础架构,例如互联网数据中心(Internet Data Center,IDC)机房、分支机构等,同时把公共云当作自有IT 基础架构的延伸,企业线下的IDC机房、分支机构通过虚拟专用网络(Virtual Private Network,VPN)接入网关与公共云上的虚拟专有云(Virtual Private Cloud,VPC)通信,组成自己的企业网络,同时使移动办公人员能在企业以外的地方接入企业网络。
其中,VPN接入网关通常采用多核架构,可以为多个企业提供云上接入服务,负责在VPN接入网关与企业的IDC机房或分支机构之间构建用于数据流传输的虚拟连接,该虚拟连接通常被称为VPN隧道。在现有技术中,每个企业对应一条VPN隧道,该企业IDC机房或分支机构内产生的各种数据流均通过该VPN隧道进行传输,并且该VPN隧道所有数据流会被映射到同一处理器核心上处理,实现企业之间的流量隔离。但是,随着企业应用规模、应用类型的扩展,需要VPN隧道传输的流量越来越大,单个处理器核心可能无法满足流量处理的需求。
发明内容
本申请的多个方面提供一种用于VPN的多流负载均衡方法、装置、***及存储介质,用以针对VPN隧道实现多流负载均衡,使得同一IDC机房或分支机构中的不同数据流可被均衡到VPN网关集群中的不同处理单元进行处理,解决单个处理单元无法满足流量处理需求的问题。
本申请实施例提供一种VPN***,包括:VPN客户端和VPN网关集群,所述VPN客户端经网络交换设备与所述VPN网关集群通信连接;所述VPN网关集群与第一网络环境互联;所述VPN客户端部署在第二网络环境中,用于与所述VPN网关集群建立VPN隧道,将所述VPN隧道划分为多个槽位并为各槽位配置不同的隧道封装信息,以承载所述第二网络环境中的多条数据流;将所述多条数据流分配到所述多个槽位上,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文,并经所述网络交换设备发送至所述VPN网关集群中;所述网络交换设备,用于根据所述VPN报文的隧道封装信息,将来自同一槽位的VPN报文分配到所述VPN网关集群中的同一网关设备上;所述网关设备,用于根据所述VPN报文的隧道封装信息,将来自同一槽位的VPN报文分配到该网关设备上的同一处理单元上进行处理。
本申请实施例还提供一种用于VPN的多流负载均衡方法,应用于部署在第二网络环境中的VPN客户端,所述方法包括:与VPN网关集群建立VPN隧道,所述VPN网关集群与第一网络环境互联;将所述VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,以承载所述第二网络环境中的多条数据流;将所述多条数据流分配到所述多个槽位上,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文;将所述VPN报文发送至所述VPN网关集群中,以使所述VPN网关集群中同一网关设备上的同一处理单元对来自同一槽位的VPN报文进行处理。
本申请实施例还提供一种用于VPN的多流负载均衡装置,可作为部署在第二网络环境中的VPN客户端实现,所述装置包括:隧道建立模块,用于与VPN网关集群建立VPN隧道,所述VPN网关集群与第一网络环境互联;槽位划分模块,用于将所述VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,以承载所述第二网络环境中的多条数据流;负载均衡模块,用于将所述多条数据流承载到所述多个槽位上,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文;报文发送模块,用于将所述VPN报文发送至所述VPN网关集群中,以使所述VPN网关集群中同一网关设备上的同一处理单元对来自同一槽位的VPN报文进行处理。
本申请实施例还提供一种网络设备,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器与所述存储器耦合,用于执行所述计算机程序以实现所述方法中的各步骤。
本申请实施例还提供一种存储有计算机程序/指令的计算机可读存储介质,当所述计算机程序/指令被处理器执行时,致使所述处理器实现所述方法中的各步骤。
在本申请实施例中,将VPN客户端与VPN网关集群之间的VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,以通过多个槽位来承载VPN客户端所在网络环境中的多条数据流,进而根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文发送至VPN网关集群;相应地,在VPN网关集群内,根据VPN报文的隧道封装信息,由同一网关设备上的同一处理单元对来自同一槽位的VPN报文进行处理,且来自不同槽位的VPN报文可由不同处理单元负责处理,最终针对同一VPN隧道内的多条数据流实现负载均衡的目的,使得VPN客户端所在网络环境中的不同数据流可被均衡到VPN网关集群中的不同处理单元进行处理,解决单个处理单元无法满足流量处理需求的问题。
另外,同一网络环境中的多条数据流对应同一VPN隧道,通过不同槽位进行负载均衡,不同槽位之间除了隧道封装信息不完全相同之外,可共享其它隧道资源,例如用于隧道加密或认证的资源,在一定程度上可节约隧道资源,例如IP资源、存储、配置和网络资源等。
进一步,在本申请一些实施例中,还可以探测各槽位所承载的数据流是否发生中断,在发生中断的情况下,通过动态修改第一槽位对应的隧道封装信息实现对传输路径上过滤规则的自动逃逸,以及对槽位状态的管理,尽量减少数据流传输中断的次数,提高数据流传输效率。
更进一步,在本申请一些实施例中,还可以针对采用非TCP协议的槽位,采用伪装TCP(FakeTCP)技术,消除VPN报文中的协议特征,将非TCP流量模拟成TCP流量,使得采用非TCP协议封装出的VPN报文可像普通TCP报文那样在网络中传输,有效避免传输路径上对VPN报文的限制,提高报文传输效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请实施例提供的一种VPN***的结构示意图;
图1b为本申请实施例提供的多条数据流与VPN隧道中多个槽位之间的对应关系示意图;
图1c为本申请实施例提供的另一种VPN***的结构示意图;
图2为本申请实施例提供的一种用于VPN的多流负载均衡方法的流程示意图;
图3为本申请实施例提供的一种用于VPN的多流负载均衡装置的结构示意图;
图4为本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了解决VPN客户端与公共云上VPC通信过程中存在VPN多流负载不均衡的问题,本申请实施例提供了一种VPN***,该***可以将VPN隧道划分为多个槽位,通过多个槽位分别承载VPN客户端提供的多条数据流,以及将同一槽位的数据流映射到VPN网关集群中的同一处理单元进行处理,将不同槽位的数据流映射到不同处理单元进行处理,可以实现对每条VPN隧道内多条流数据进行负载均衡,降低VPN隧道的承载负担,同时解决单个处理单元无法满足流量处理需求的问题。
在本申请实施例中,不限定VPN***的具体结构。在一可选实施例中,VPN***结构可如图1a所示,在该结构中,VPN***包括VPN客户端10、网络交换设备20和VPN网关集群30;其中,VPN客户端10部署在第二网络环境中,VPN网关集群30与第一网络环境互联,可以为第一网络环境提供网关服务;VPN客户端10经网络交换设备20与VPN网关集群30通信连接,并可借助于与VPN网关集群30之间的VPN隧道,使得通过VPN技术将第二网络环境接入第一网络环境。
在本实施例中,VPN网关集群30包括多个网关设备40,每个网关设备40具有一个或多个处理单元。在实现形态上,网关设备40可以是具有网关功能的物理服务器,每个处理单元可以是CPU、GPU或其它具有计算能力的计算单元。VPN网关集群30为与其互联的第一网络环境提供网关服务,具体是通过多个网关设备40为第一网络环境中的各种设备提供网关服务的,所述网关服务包括但不限于:对第二网络环境与第一网络环境之间传输的各种报文进行协议、格式等转换和转发等。其中,VPN网关集群30所互联的第一网络环境可以是一个或多个,在第一网络环境为多个的情况下,VPN网关集群30作为一种共享网关资源,可以被多个第一网络环境共享,但在隶属关系上,VPN网关集群30并不属于任何一个第一网络环境。
在本申请实施例中,不限定VPN客户端10的具体实现形态。可选地,VPN客户端10可以实现为软件形态,也可以实现为硬件形态,具体可以根据实际需求选择不同形态的VPN客户端10。例如,若VPN客户端10实现为软件形态,可以部署在第二网络环境中的某台物理设备,例如服务器上;若VPN客户端10实现为硬件形态,例如可具体实现为一种物理服务器,则可以在第二网络环境中部署该物理服务器。进一步,本申请实施例也不限定VPN客户端10在第二网络环境中的部署方式,例如,在第二网络环境中没有部署防火墙设备的情况下,可以将VPN客户端10部署在第二网络环境中并直接面向第二网络环境之外的网络环境,例如直接面向VPN网关集群30或连接于VPN客户端10与VPN网关集群30之间的运营商网络等,在该情况下,VPN客户端10可以主动与VPN网关集群30发起连接,也可以由VPN网关集群30主动与VPN客户端10发起连接,以便构建用于为第二网络环境中的各条数据流提供数据传输服务的VPN隧道;又例如,在第二网络环境中部署防火墙设备的情况下,可以将客户端10部署在防火墙设备之后,借助于防火墙设备的防护功能,可以提高VPN客户端10的安全性,但是在该情况下,VPN客户端10能够穿透防火墙设备,主动向VPN 网关集群30发起连接,以便与VPN网关集群30构建用于为第二网络环境中的各条数据流提供数据传输服务的VPN隧道。
在本申请实施例中,不限定第一网络环境和第二网络环境的具体形态,二者的形态可以相同也可以不同。例如,第一网络环境为云上VPC网络,第二网络环境为企业线下的IDC机房或者分支机构,在该情况下,借助于本实施例提供的VPN***可以将企业线下的IDC机房或者分支机构轻松接入企业在云上的VPC网络,组成自己的企业网,同时使移动办公人员能在企业以外的地方接入企业内部网络。又例如,第一网络环境和第二网络环境均为VPC网络,但两个VPC网络位于不同区域,在该情况下,借助于本实施例提供的VPN***可以将企业在不同区域的两个VPC网络互联,形成覆盖范围更广的企业网络。在本申请实施例中,借助于VPN***实现第一网络环境和第二网络环境互联,具体地,将VPN***中的VPN客户端10部署在第二网络环境中,并将VPN***中的VPN网关集群30与第一网络环境互联,在VPN客户端10与VPN网关集群30之间建立VPN隧道,第二网络环境中的各条数据流首先到达VPN客户端10,VPN客户端10经期与VPN网关集群30之间的VPN隧道发送给VPN网关集群30,进而有VPN网关集群30进行相应处理之后发送至第一网络环境中的相关设备、服务或应用,进而实现第二网络环境与第一网络环境的互联。
实际应用中,第二网络环境中可能存在多条数据流,多条数据流经同一VPN隧道发送至VPN网关集群30中。如果以VPN隧道为粒度,那么在VPN网关集群30中会将同一VPN隧道的多条数据均衡到同一处理单元上进行处理,可能存在处理单元无法满足流量处理需求的问题。为了实现对同一VPN隧道的多流负载均衡,将同一VPN隧道中的多条数据流负载均衡到不同处理单元上进行处理,在VPN客户端10与VPN网关集群30建立VPN隧道的情况下,如图1b所示,VPN客户端10可以将VPN隧道划分为多个槽位并为各槽位配置不同的隧道封装信息,以承载第二网络环境中的多条数据流,以及在第二网络环境中的多条数据流到达时,将多条数据流分配到多个槽位上。在图1b中,示出3个槽位,分别是槽位1、槽位2和槽位3,并以该VPN隧道承载6条数据流为例,分别是数据流1-数据流6;其中,数据流1和数据流2被分配或映射到槽位1上,数据流1和数据流2会使用相同的隧道封装信息进行隧道封装;数据流3和数据流4被分配或映射到槽位2上,数据流3和数据流4会使用相同的隧道封装信息进行隧道封装;数据流5和数据流6被分配或映射到槽位3上,数据流5和数据流6会使用相同的隧道封装信息进行隧道封装。可选地,在数据流1-数据流6到达VPN隧道的情况下,在确定每条数据流应该映射到哪个槽位时,可以采用哈希算法对每条数据流中原始报文对应的报文封装信息进行哈希处理,并根据哈希结果和槽位总数确定每条数据流应该映射到的槽位号;可选地,可以利用每条数据流对应的哈希结果对槽位总数取余,得到每条数据流应该映射到的槽位号。例如可以采用CrcHash(报文封装信息,例如sip,sport,dip,dport,proto) % 槽位总数(SlotTotal),得到每条数据流对应的槽位号。
在本实施例中,隧道封装信息是指将来自第二网络环境中的各条数据流中的原始报文封装成适合在VPN隧道中传输所需的报文封装信息,例如可以是四元组、五元组或七元组等信息;例如,五元组信息包括源IP地址、目的IP地址、协议类型、源端口、目的端口;七元组信息包括源IP地址、目的IP地址、协议类型、源端口、目的端口、服务类型以及接口索引。在本实施例中,在VPN客户端10和VPN网关集群30确定的情况下,不同槽位对应的隧道封装信息不完全相同,可以部分相同,部分不同,不相同的部分用于区分不同槽位,相同的部分用于限定多个槽位隶属于同一VPN隧道。假设以隧道封装信息为五元组(SrcAddr,DstAddr,SrcPort,DstPort,NextProto)为例,SrcAddr为源IP地址,DstAddr为目标IP地址,SrcPort为源端口,SrcPort为目端端口,NextProto为协议类型,可选地,本申请实施例可以采用的协议类型包括但不限于TCP协议、UDP协议、ICMP协议中的任一种,而且在报文传输过程中,允许更换不同协议类型,以适应报文传输需求。在上述五元组中,不同槽位对应的目的端口可以不同,对源端口不做限定,不同槽位对应的源端口可以相同,也可以不相同,通常为不相同;不同槽位对应的源IP地址和目的IP地址可以相同,其中,源IP地址用于指向VPN客户端10,目的IP地址用于指向VPN网关集群30。需要说明的是,这里以五元组进行示例,仅仅给出了不同槽位对应的隧道封装信息不同在具体实现上的一种示例,并不限于此。在图1b中,以不同槽位对应的源IP地址、目的IP地址和协议类型相同,不同槽位对应的源端口和目的端口不同为例进行图示。
在上述示例中,不同槽位对应的隧道封装信息共享相同的源IP地址、目的IP地址,在能够区分不同槽位的情况下,可减少IP资源的占用。除此之外,对于属于同一VPN隧道的不同槽位除了对应的隧道封装信息不完全相同之外,还会共享其它隧道资源,例如对于同一VPN隧道中的不同槽位在进行报文传输时所使用的加密参数和/或认证参数等是相同的,这也正好反映或说明了这些槽位隶属于同一VPN隧道。
在一可选实施例中,VPN客户端10在将VPN隧道划分为多个槽位并为各槽位配置不同的隧道封装信息时,可以基于预先配置的槽位数量,将VPN隧道划分为多个槽位;进一步,可以确定各槽位对应的源端口和目的端口,并将VPN客户端10的IP地址和VPN网关集群30的IP地址作为各槽位对应的源IP地址和目的IP地址,以及结合各槽位对应的源端口和目的端口,生成各槽位对应的隧道封装信息。相应地,VPN客户端10在将多条数据流分配到多个槽位上时,可以根据多条数据流对应的报文封装信息,采用哈希算法将多条数据流映射到多个槽位上,以使各槽位承载与之存在映射关系的数据流。其中,报文封装信息是与隧道封装信息对应的,但不同于隧道封装信息,报文封装信息是指将各条数据流中原始报文中携带的封装信息,通常是指四元组、五元组或七元组。相对而言,可以将报文封装信息称为内层封装信息,隧道封装信息称为外层封装信息。其中,所采用的哈希算算法包括但不限于加法哈希算法、乘法哈希算法、除法哈希算法、运算位哈希算法、查表哈希算法、混合哈希算法等中的任一种。其中,本申请实施例采用的哈希算法在一定程度上可以保证将同一条数据流映射到同一槽位上,将不同数据流映射到不同槽位上,当然,在数据流的数量多余槽位数量的情况下,两条或两条以上的数据流有可能被映射到同一槽位上。
进一步,VPN客户端10可以根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文,并经网络交换设备20发送至VPN网关集群30中。可选地,网络交换设备20在接收到VPN报文的情况下,可以根据VPN报文的隧道封装信息,将来自同一槽位的VPN报文分配到VPN网关集群30中的同一网关设备40上。进一步,网关设备40可以根据VPN报文的隧道封装信息,将来自同一槽位的VPN报文分配到该网关设备40上的同一处理单元上进行处理。这样,就可以实现由不同的处理单元处理不同槽位承载的数据流,实现同一VPN隧道的多流负载均衡。可选地,
在本实施例中,VPN客户端10基于各数据流对应的报文封装信息,例如内层五元组,对各数据流进行哈希(Hash)处理,可将各数据流映射到多个槽位上,该过程可以保证同一数据流被映射到同一个槽位(Slot)上,不同数据流可能会被映射(Hash)到不同的槽位上。在经过同一槽位对应的隧道封装信息进行封装后的VPN报文具有相同的隧道封装信息,例如外层五元组,则网络交换设备20根据VPN报文的隧道封装信息,例如外层五元组,可对来自不同槽位的VPN报文进行哈希(Hash)处理,可将来自不同槽位的VPN报文映射到多个网关设备40上,该过程可以保证来自同一槽位的VPN报文被映射到同一个网关设备40上,而来自不同槽位的VPN报文可能被映射到不同网关设备40上。在本实施例中,并不限定网络交换设备20所采用的哈希算法,例如可以是加法哈希算法、乘法哈希算法、除法哈希算法、运算位哈希算法、查表哈希算法、混合哈希算法等中的任一种。
进一步,在网络交换设备20将来自不同槽位的VPN报文映射到不同网关设备40上之后,对同一网关设备40而言,如果该网关设备40具有多个处理单元,则该网关设备40可以进一步根据各VPN报文对应的隧道封装信息,采用哈希算法对这些VPN报文进行哈希处理,可将来自不同槽位的VPN报文映射到不同处理单元上,该过程可以保证来自同一槽位的VPN报文被映射到同一个处理单元上,而来自不同槽位的VPN报文可能被映射到不同处理单元上,达到同一个VPN隧道多流负载均衡的目的。在本实施例中,并不限定网关设备40所采用的哈希算法,例如可以是RSS Hash。RSS(Receive Side Scaling)是网关设备40的一种特性,简称为多队列,在本实施例中,网关设备40具备多个RSS队列,可以将来自不同槽位的VPN报文分成不同的队列,再采用哈希算法将这些队列分配到多个处理单元上进行处理,从而将负荷分散,充分利用多个处理单元的能力,实现多流负载均衡。
在本申请实施例中,同一数据流中的报文经过层层哈希处理,最终会落到同一个处理单元上进行处理,这可以保证同一数据流的报文不乱序,提高上层协议处理的性能;而VPN隧道中来自不同数据流的报文可能会落到不同处理单元上进行处理,而不是同一VPN隧道的多条数据流全部由同一处理单元进行处理,从而实现同一VPN隧道的多流负载均衡。
在本申请实施例中,不限定VPN客户端10根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文的具体方式。可选地,VPN客户端10在获取到来自第二网络环境中各应用发送的非IP报文的情况下,可以采用各应用对应的报文封装信息,例如五元组将非IP报文封装为各应用对应数据流中的原始IP报文;进一步,根据原始IP报文的报文封装信息,采用哈希算法将原始IP报文分别映射到VPN隧道的多个槽位上,对映射到各槽位上的原始IP报文进行加密、完整性校验以及身份认证等至少一种处理,并利用各槽位对应的隧道封装信息对该槽位所承载且经过至少一种处理后的原始报文进行隧道封装,形成VPN报文,即在通过加密、完整性校验和/或身份认证之后的原始报文外层封装隧道封装信息,从而形成VPN报文;进而,经由网络交换设备20将VPN报文发送到VPN网关集群30中。可选地,为了节约VPN隧道占用或消耗的资源,除隧道封装信息中的部分信息(例如源端口和目的端口)不同之外,同一VPN隧道中的不同槽位可以共享其它VPN 隧道资源,例如,在VPN隧道支持报文加密的情况下,该VPN隧道中的不同槽位可以共享用于对原始报文进行加密所需的加密参数,所述加密参数包括加密算法和加密算法使用的密钥等;另外,在VPN隧道支持身份认证的情况下,该VPN隧道中的不同槽位可以共享用于针对原始报文进行身份认证所需的认证参数,所述认证参数包括用于身份认证的key,该key可以定期轮询。基于此,VPN客户端10在利用不同槽位对应的隧道封装信息对各槽位所承载数据流中的原始报文进行隧道封装之前,还可以使用相同的加密参数和/或认证参数,对各条数据流中的原始报文进行加密和/或身份认证处理。这样,在根据不同槽位对应的隧道封装信息对不同槽位承载的数据流进行区分的情况下,还可以提升VPN隧道的资源利用率,节约密钥、身份认证key以及存储等资源。
在本申请实施例中,并未限定VPN客户端10与VPN网关集群30之间交互的信息以及各槽位对应隧道封装信息的来源,可选地,可以由VPN客户端10与VPN网关集群30协商确定,例如槽位的数量、各槽位使用的目的端口,加密参数或认证参数等,均可由VPN客户端10与VPN网关集群30协商确定。除此之外,也可以在VPN***中增设一中心管控节点,由该中心管控节点负责对VPN客户端10与VPN网关集群30之间所需的信息进行配置和管理。
在一可选实施例中,VPN***的结构可如图1c所示,在该结构中,VPN***还包括中心管控节点50。中心管控节点50至少可用于配置VPN隧道对应的槽位数量和端口配置信息,并下发给VPN客户端10;其中,端口配置信息是指用于指示VPN隧道可以使用的多个候选端口。在本申请实施例中,并不限定候选端口的数量,可根据槽位数量适应性确定,只要候选端口的数量不少于槽位数量即可。在本实施例中,并不限定端口配置信息指示VPN隧道可以使用的多个候选端口的实现方式。例如,该端口配置信息可以包含各个具体的候选端口,假设本申请实施例中的候选端口为三个,且对应的端口号分别为8080、8081和8082,则端口配置信息可以包含端口号8080、8081和8082,用以指示VPN隧道的槽位可以使用三个候选端口。或者,该端口配置信息可以包含起始候选端口的端口号,例如8080,并限定端口号的变化步长,例如每次在前一后端端口的基础上加1或2,用以指示VPN隧道的槽位可以使用的候选端口,其中,1和2为变化步长的示例并不限于此。基于此,VPN客户端10在确定各槽位对应的源端口和目的端口时,可以从端口配置信息指示的多个候选端口中,选择各槽位对应的目的端口,并随机生成各槽位对应的源端口。其中,为不同槽位选择的目的端口一定不同,而通过随机方式生成的各槽位对应的源端口通常也会不同但。
除上述槽位数量和端口配置信息之外,中心管控节点50还可以配置VPN客户端10和VPN网关集群30在初始通信时采用的协议类型,即上文提到的五元组中的NextProto为协议类型,可选地,中心管控节点50默认配置初始采用的协议类型为TCP,之后在数据传输过程中VPN客户端10可以根据应用需求在TCP协议、UDP协议以及ICMP协议之间动态切换。除协议类型可以动态切换之外,在实际应用过程中,各槽位对应的隧道封装信息中的源端口、目的端口、源IP地址、目标IP地址等也可以动态切换或变化,以应对从VPN客户端10到VPN网关集群30之间传输路径上的各种限制,例如以应对防火墙设备拦截、互联网运营商丢包等复杂的场景,确保各槽位上的VPN报文顺利到达VPN网关集群30。关于在实际报文传输过程中动态切换源端口、目的端口、源IP地址、目标IP地址以及协议类型的相关描述可参见后续实施例,在此暂不赘述。
在本申请实施例中,不限定VPN客户端10与VPN网关集群30建立VPN隧道的具体方式,在VPN***不包括中心管控节点50的情况下,VPN客户端10可以与VPN网关集群30通过协商建立VPN隧道。进一步可选地,在VPN***包括中心管控节点50的情况下,可由中心管控节点50协助为VPN客户端10与VPN网关集群30建立VPN隧道。其中,中心管控节点50协助为VPN客户端10与VPN网关集群30建立VPN隧道可以采用下述两种可选实施方式。
在一可选实施例中,中心管控节点50可以向VPN客户端10和VPN网关集群30下发建立VPN隧道所需的第一配置信息,以在VPN客户端10与VPN网关集群30之间建立VPN隧道;其中,第一配置信息至少包括VPN客户端10的IP地址、VPN网关集群30的IP地址以及VPN隧道使用的加密参数和/或认证参数。详细来说,VPN隧道所需的加密算法/密钥、完整性校验算法/密钥、身份认证key、VPN客户端10的IP地址、VPN网关集群30的IP地址等信息均由中心管控节点50配置并下发给VPN客户端10与VPN网关集群30,在这种情况下,VPN隧道是由中心管控节点50建立的,中心管控节点50也会负责密钥的轮转;VPN客户端10直接向VPN网关集群30发送VPN报文即可。
在另一可选实施例中,中心管控节点50向VPN客户端10和VPN网关集群30下发建立VPN隧道所需的第二配置信息;其中,第二配置信息包括VPN客户端10的IP地址和VPN网关集群30的IP地址,以使VPN客户端10与VPN网关集群30协商VPN隧道使用的加密参数和/或认证参数以建立VPN隧道。详细来说,VPN客户端10的IP地址、VPN网关集群30的IP地址等明文信息由中心管控节点50配置并下发给VPN客户端10与VPN网关集群30,在这种情况下,VPN隧道所需的加密算法/密钥、完整性校验算法/密钥、身份认证key等信息需要VPN客户端10和VPN网关集群30通过IKEv1或者IKEv2协议独自协商,在协商确定VPN隧道所需的加密算法/密钥、完整性校验算法/密钥、身份认证key等信息之后,意味着VPN客户端10与VPN网关集群30建立了VPN隧道。
在本申请实施例中,加密参数包括加密算法和加密秘钥,认证参数包括身份认证秘钥(key);其中,加密参数和认证参数可以是可选参数,可以根据VPN隧道的实际需求选择是否包含加密参数或认证参数。如果VPN隧道仅支持加密功能,则可以仅包含加密参数;如果VPN隧道仅支持认证功能,则可以仅包含认证参数;如果VPN隧道同时支持加密和认证功能,则可以同时包含加密参数和认证参数。在中心管控节点50向VPN客户端10和VPN网关集群30下发的第一配置参数中包括认证参数的情况下,中心管控节点50还可以定期对认证参数进行更新,以在出现身份认证秘钥失效、丢失、出错等情况下,VPN客户端10和VPN网关集群30还可以根据更新后的身份认证秘钥进行认证,顺利建立VPN隧道。
在本申请实施例中,VPN网关集群30的IP地址会被VPN网关集群30中各网关设备共用,即VPN网关集群30中各网关设备使用的IP地址即为VPN网关集群30的IP地址。另外,本申请实施例中的VPN网关集群30可以具备唯一的IP地址,也可以同时具有多个IP地址,在不同应用场景或者对接不同VPN客户端10时,可以使用不同的IP地址。可选地,VPN网关集群30可具有多个IP地址,多个IP地址对应不同的运营商属性,例如,多个IP地址包括VPN网关集群30在第一运营商的网络中的IP地址、VPN网关集群30在第二运营商的网络中的IP地址、VPN网关集群30在第三运营商的网络中的IP地址,等等。可选地,可以根据VPN客户端10使用的运营商网络,确定VPN网关集群30使用相同运营商的IP地址,以便VPN网关集群30能够通过同一运营商网络与VPN客户端10进行报文传输,提高报文传输效率。基于此,中心管控节点50还可以根据第二网络环境的运营商属性(即VPN客户端10对应的运营商属性),确定VPN网关集群30使用运营商属性与第二网络环境相同的IP地址。例如,第二网络环境使用第一运营商的网络,则中心管控节点50可以预先配置VPN网关集群30使用第一运营商的IP地址,以使VPN客户端10与VPN网关集群30之间的报文传输尽量在同一运营商网络中,不跨运营商网络,提高报文传输效率。但是需要说明的是,进一步可选地,若VPN网关集群30当前使用的第一运营商的网络的线路出现异常或发生故障,为了保证VPN客户端10与VPN网关集群30之间能够继续进行报文传输,中心管控节点50也可以将VPN网关集群30当前使用的第一运营商的IP地址更新为其它运营商的IP地址,并将更新后的IP地址下发给VPN客户端10和VPN网关集群30,使得VPN客户端10能够使用更新后的IP地址重新与VPN网关集群30建立VPN隧道,进而基于新的VPN隧道继续与VPN网关集群30进行报文传输。关于VPN客户端10使用VPN网关集群30更新后的IP地址,重新与VPN网关集群30建立VPN隧道的过程,与上述实施例描述的VPN隧道建立过程相同或相似,在此不再赘述。进一步,在重新建立VPN隧道的基础上,VPN客户端10依旧可以采用前述或下述实施例描述的方式,将重新建立的VPN隧道划分为多个槽位,并基于该VPN隧道中的多个槽位对第二网络环境中的多条数据流进行负载均衡。
在本申请实施例中,VPN客户端10除了可以实现上述实施例中描述的功能之外,还可以根据各槽位对应的隧道封装信息,向VPN网关集群30中对应的网关设备发送探活报文,以探测各槽位所承载的数据流是否发生中断。其中,对任一槽位而言,来自该槽位的VPN报文会被网络交换设备20均衡到同一网关设备上,所以VPN网关集群30中与该槽位对应的网关设备也就是负责处理来自该槽位的VPN报文的网关设备。具体地,VPN客户端10可以针对每个槽位,利用该槽位对应的隧道封装信息生成探活报文,并通过VPN隧道将该探活报文发送出去,该探活报文到达网络交换设备20之后,网络交换设备20会根据探活报文的隧道封装信息将该探活报文分配到与该槽位对应的网关设备上,网关设备在接收到探活报文之后可以向VPN客户端10返回响应报文或确认报文等;VPN客户端10在接收到响应报文或确认报文的情况下,可以确定该槽位所承载的数据流未发生中断(可简称为该槽位连通);反之,若在一定时间内未收到响应报文或确认报文,或者连续未收到多个探活报文对应的响应报文或确认报文,则认为该槽位所承载的数据流发生中断(可简称为该槽位中断)。需要说明的是,这里确定槽位发生中断的方式仅为示例,并不限于此。
为便于描述和区分,将各槽位中发生中断的槽位称为第一槽位,第一槽位可能是任何一个槽位,换句话说,第一槽位所承载的数据流发生中断。其中,导致第一槽位发生中断的原因有可能是第一槽位对应传输路径上存在一些过滤规则,而第一槽位对应的隧道封装信息正好与这些过滤规则匹配,导致来自第一槽位的VPN报文被过滤掉而无法到达VPN网关集群30,即第一槽位所承载数据流发生中断。基于该考虑,针对与发生中断的数据流对应的第一槽位,VPN客户端10还可以动态修改第一槽位对应的隧道封装信息,以使第一槽位所承载的数据流针对传输路径上的过滤规则进行逃逸。在本申请实施例中,不限定VPN客户端10动态修改第一槽位隧道封装信息的具体方式,可选地,可以修改隧道封装信息中的任一种或多种信息,根据VPN网关集群30在云上部署方式的不同,可修改的内容也会不同。例如,在VPN网关集群30确定的情况下,则目的IP地址不能改变,可以修改源端口、目的端口、协议类型以及源IP地址中的任一种或多种;例如可以优先修改目的端口,在修改目的端口之后,可以尝试采用新的目的端口发送探活报文,如果该槽位仍旧处于中断状态,则可以进一步修改协议类型,更进一步还可以修改源端口和源IP地址等,直至该槽位恢复连通状态,或者均无法让该槽位恢复连通状态。又例如,在VPN网关集群30为多个,且允许在不同VPN网关集群30之间进行更换的情况下,这意味着VPN客户端10不仅可以修改隧道封装信息中的源端口、目的端口、协议类型或源IP地址,还可以选择或者根据中心管控节点50的控制从当前VPN网关集群30切换到其他VPN网关集群30,进而修改隧道封装信息中的目的IP地址。基于此,在第一槽位对应的隧道封装信息每次被更改的情况下,VPN客户端10都会利用更改后的隧道封装信息重新向VPN网关集群30发送探活报文,直至第一槽位恢复连通状态;其中,第一槽位恢复连通状态,说明当前隧道封装信息可逃逸该传输路径上的过滤规则,即逃逸成功,基于该隧道封装信息可以继续向VPN网关集群30传输所承载的数据流。其中,过滤规则可以为部署于第二网络环境中的防火墙设备中的过滤规则,也可以为VPN客户端10与VPN网关集群30之间使用的运营商网络中的报文过滤规则,在此不做限定。在此说明,在过滤规则是部署于第二网络环境中的防火墙设备中的过滤规则的情况下,VPN客户端10可以通过动态修改各槽位对应的隧道封装信息的方式达到穿透防火墙设备的目的。
当然,在对第一槽位对应的隧道封装信息尝试各种修改之后,有可能依旧无法让第一槽位从中断状态恢复至连通状态,即在尝试对隧道封装信息进行各种修改之后,第一槽位所承载的数据流依旧无法被成功传输至VPN网关集群30中,此种情况称为逃逸失败。在逃逸失败的情况下,VPN客户端10可以将第一槽位设置为失效状态,使第一槽位不再承载数据流,这样第一槽位所承载的数据流会被及时映射到其它处于有效状态的槽位上,确保数据流的正常传输。进一步可选地,在第一槽位处于中断状态的情况下,VPN客户端10可以基于第一槽位最新使用的隧道封装信息持续不断地生成探活报文,并向VPN网关集群30中的对应网关设备发送,以探测第一槽位是否恢复为连通状态;无论在何时探测到第一槽位重新恢复至连通状态时,可将第一槽位重新从失效状态设置为有效状态,通过这种方式,可以减少数据流传输中断的次数,提高数据流传输效率。
进一步可选地,考虑到可能因为槽位中断或其它原因,各槽位可以动态切换所使用的传输协议类型,例如可以从UDP切换为TCP,也可以从TCP切换为UDP。基于此,本申请实施例中的VPN客户端10还具有通信协议伪装功能,例如可以采用伪装TCP(FakeTCP)技术实现对非TCP协议的伪装,从而使得采用非TCP协议封装的VPN报文能够成功逃逸传输路径上的各种过滤规则。为了便于描述和区分,若存在使用非TCP协议的槽位,则将各槽位中使用非TCP协议的槽位称为第二槽位,第二槽位可能是一个或多个。基于此,VPN客户端10在根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文时,针对使用非TCP协议的第二槽位,可以采用伪装TCP(FakeTCP)技术,消除VPN报文中的协议特征,将非TCP流量模拟成TCP流量,使得采用非TCP协议封装出的VPN报文可像普通TCP报文那样在网络中传输,有效避免传输路径上对采用非TCP协议封装出的VPN报文的限制,提高报文传输效率。例如,在第二槽位使用的通信协议为UDP协议的情况下,则VPN客户端10可以采用FakeTCP技术,利用第二槽位对应的隧道封装信息向VPN网关集群30发起三次握手以模拟TCP连接的建立过程,这个过程中的VPN报文需要完全符合TCP协议的规范;在后续报文传输过程中,VPN报文可以部分符合TCP协议的规范,例如可以忽略拥塞控制、校验字段等特性,即VPN报文可以没有这些TCP协议特征,缺省这些TCP协议特征,VPN报文一方面可以穿越防火墙设备,另一方面可以保持和UDP报文一样的传输性能。另外,在采用UDP协议封装出的VPN报文头中添加TCP协议对应的部分字段,以在传输路径上过滤规则对VPN报文进行过滤时,可以将来自第二槽位的VPN报文识别为TCP协议报文,避免第二网络环境中的防火墙设备、运营商的防火墙设备以及其他过滤规则对UDP流量进行访问控制(Access ControlLists,ACL)、服务质量(Quality of Service, QoS)等限制。
在本申请实施例中,将VPN客户端10与VPN网关集群30之间的VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,以通过多个槽位来承载VPN客户端10所在网络环境中的多条数据流,进而根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文发送至VPN网关集群30;相应地,在VPN网关集群30内,根据VPN报文的隧道封装信息,由同一网关设备上的同一处理单元对来自同一槽位的VPN报文进行处理,且来自不同槽位的VPN报文可由不同处理单元负责处理,最终针对同一VPN隧道内的多条数据流实现负载均衡的目的,使得VPN客户端10所在网络环境中的不同数据流可被均衡到VPN网关集群30中的不同处理单元进行处理,解决单个处理单元无法满足流量处理需求的问题。
另外,同一网络环境中的多条数据流对应同一VPN隧道,通过不同槽位进行负载均衡,不同槽位之间除了隧道封装信息不完全相同之外,可共享其它隧道资源,例如用于隧道加密或认证的资源,在一定程度上可节约隧道资源,例如IP资源、存储、配置和网络资源等。进一步,在本申请一些实施例中,还可以探测各槽位所承载的数据流是否发生中断,在发生中断的情况下,通过动态修改第一槽位对应的隧道封装信息实现对传输路径上过滤规则的自动逃逸,以及对槽位状态的管理,尽量减少数据流传输中断的次数,提高数据流传输效率。更进一步,在本申请一些实施例中,还可以针对采用非TCP协议的槽位,采用伪装TCP(FakeTCP)技术,消除VPN报文中的协议特征,将非TCP流量模拟成TCP流量,使得采用非TCP协议封装出的VPN报文可像普通TCP报文那样在网络中传输,有效避免传输路径上对VPN报文的限制,提高报文传输效率。
基于上述,本申请实施例还提供一种用于VPN的多流负载均衡方法,该方法应用于部署在上述实施例中第二网络环境中的VPN客户端。图2为本申请实施例提供的多流负载均衡方法的流程图,如图2所示,方法包括:
S1、与VPN网关集群建立VPN隧道,VPN网关集群与第一网络环境互联;
S2、将VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,以承载第二网络环境中的多条数据流;
S3、将多条数据流分配到多个槽位上,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文;
S4、将VPN报文发送至VPN网关集群中,以使VPN网关集群中同一网关设备上的同一处理单元对来自同一槽位的VPN报文进行处理。
在一可选实施例中,在将VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息时,可以基于预先配置的槽位数量,将VPN隧道划分为多个槽位,并确定各槽位对应的源端口和目的端口,其中,不同槽位对应的目的端口不同;进一步,将VPN客户端的IP地址和VPN网关集群的IP地址作为各槽位对应的源IP地址和目的IP地址,结合各槽位对应的源端口和目的端口,生成各槽位对应的隧道封装信息。
在一可选实施例中,还可以接收中心管控节点下发的VPN隧道对应的槽位数量和端口配置信息,端口配置信息用于指示VPN隧道可以使用的多个候选端口;相应地,在确定各槽位对应的源端口和目的端口时,可以从多个候选端口中,选择各槽位对应的目的端口,并随机生成各槽位对应的源端口。
在一可选实施例中,还可以根据各槽位对应的隧道封装信息,向VPN网关集群中对应的网关设备发送探活报文,以探测各槽位所承的载数据流是否发生中断;针对与发生中断的数据流对应的第一槽位,动态修改第一槽位对应的隧道封装信息,以使第一槽位所承载的数据流针对传输路径上的过滤规则进行逃逸;以及在逃逸失败的情况下,将第一槽位设置为失效状态,不再承载数据流。
在一可选实施例中,在根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文时,针对使用非TCP协议的第二槽位,可以根据第二槽位对应的隧道封装信息,采用伪装TCP技术,将第二槽位所承载的数据流中的原始报文封装为VPN报文。
需要说明的是,关于上述方法实施例中各步骤执行的具体细节,可参见上述***实施例中相关内容的说明,在此不再赘述。上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤 S1至步骤S4的执行主体可以为设备A;又比如,步骤S1的执行主体可以为设备A,步骤S2至步骤S4的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如S1、S2等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
基于相同的实现原理,本申请实施例还提供一种用于VPN的多流负载均衡装置,该装置可作为部署在上述***实施例中第二网络环境中的VPN客户端实现。图3为本申请实施例提供的多流负载均衡装置的结构示意图,如图3所示,装置包括隧道建立模块31、槽位划分模块32、负载均衡模块33以及报文发送模块34;其中,隧道建立模块31用于与VPN网关集群建立VPN隧道,该VPN网关集群与第一网络环境互联;槽位划分模块32用于将VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,以承载第二网络环境中的多条数据流;负载均衡模块33用于将多条数据流承载到多个槽位上,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文;报文发送模块34用于将VPN报文发送至VPN网关集群中,以使VPN网关集群中同一网关设备上的同一处理单元对来自同一槽位的VPN报文进行处理。
在一可选实施例中,槽位划分模块32在将VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息时,用于:基于预先配置的槽位数量,将VPN隧道划分为多个槽位,并确定各槽位对应的源端口和目的端口,其中,不同槽位对应的目的端口不同;进一步,将VPN客户端的IP地址和VPN网关集群的IP地址作为各槽位对应的源IP地址和目的IP地址,结合各槽位对应的源端口和目的端口,生成各槽位对应的隧道封装信息。
在一可选实施例中,槽位划分模块32还用于:接收中心管控节点下发的VPN隧道对应的槽位数量和端口配置信息,端口配置信息用于指示VPN隧道可以使用的多个候选端口;相应地,在确定各槽位对应的源端口和目的端口时,可以从多个候选端口中,选择各槽位对应的目的端口,并随机生成各槽位对应的源端口。
在一可选实施例中,槽位划分模块32还用于:根据各槽位对应的隧道封装信息,向VPN网关集群中对应的网关设备发送探活报文,以探测各槽位所承的载数据流是否发生中断;针对与发生中断的数据流对应的第一槽位,动态修改第一槽位对应的隧道封装信息,以使第一槽位所承载的数据流针对传输路径上的过滤规则进行逃逸;以及在逃逸失败的情况下,将第一槽位设置为失效状态,不再承载数据流。
在一可选实施例中,负载均衡模块33在根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文时,用于:针对使用非TCP协议的第二槽位,可以根据第二槽位对应的隧道封装信息,采用伪装TCP技术,将第二槽位所承载的数据流中的原始报文封装为VPN报文。
基于相同的实现原理,本申请实施例还提供一种网络设备,图4为网络设备的结构示意图,如图4所示,网络设备包括:处理器41以及存储有计算机程序的存储器42;其中,处理器41和存储器42可以是一个或多个。
存储器42,主要用于存储计算机程序,这些计算机程序可被处理器41执行,致使处理器41控制网络设备实现相应功能、完成相应动作或任务。除了存储计算机程序之外,存储器42还可被配置为存储其它各种数据以支持在网络设备上的操作。这些数据的示例包括用于在网络设备上操作的任何应用程序或方法的指令。
存储器42,可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请实施例中,并不限定处理器41的实现形态,例如可以是但不限于CPU、GPU或MCU等。处理器41可以看作是网络设备的控制***,可用于执行存储器42中存储的计算机程序,以控制网络设备实现相应功能、完成相应动作或任务。值得说明的是,根据网络设备实现形态以及所处于场景的不同,其所需实现的功能、完成的动作或任务会有所不同;相应地,存储器42中存储的计算机程序也会有所不同,而处理器41执行不同计算机程序可控制网络设备实现不同的功能、完成不同的动作或任务。
在一些可选实施例中,如图4所示,网络设备还可包括:显示器43、电源组件44以及通信组件45等其它组件。图4中仅示意性给出部分组件,并不意味着网络设备只包括图4所示组件,针对不同的应用需求,网络设备还可以包括其他组件,例如,在存在语音交互需求的情况下,如图4所示,网络设备还可以包括音频组件46。关于网络设备可包含的组件,具体可视网络设备的产品形态而定,在此不做限定。
在本申请实施例中,当处理器41执行存储器中的计算机程序时,以用于与VPN网关集群建立VPN隧道,该VPN网关集群与第一网络环境互联;以及将VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,以承载第二网络环境中的多条数据流;进一步,将多条数据流分配到多个槽位上,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文;以及将VPN报文发送至VPN网关集群中,以使VPN网关集群中同一网关设备上的同一处理单元对来自同一槽位的VPN报文进行处理。
在一可选实施例中,处理器41在将VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息时,用于:基于预先配置的槽位数量,将VPN隧道划分为多个槽位,并确定各槽位对应的源端口和目的端口,其中,不同槽位对应的目的端口不同;进一步,将VPN客户端的IP地址和VPN网关集群的IP地址作为各槽位对应的源IP地址和目的IP地址,结合各槽位对应的源端口和目的端口,生成各槽位对应的隧道封装信息。
在一可选实施例中,处理器41还用于:接收中心管控节点下发的VPN隧道对应的槽位数量和端口配置信息,端口配置信息用于指示VPN隧道可以使用的多个候选端口;相应地,在确定各槽位对应的源端口和目的端口时,可以从多个候选端口中,选择各槽位对应的目的端口,并随机生成各槽位对应的源端口。
在一可选实施例中,处理器41还用于:根据各槽位对应的隧道封装信息,向VPN网关集群中对应的网关设备发送探活报文,以探测各槽位所承的载数据流是否发生中断;针对与发生中断的数据流对应的第一槽位,动态修改第一槽位对应的隧道封装信息,以使第一槽位所承载的数据流针对传输路径上的过滤规则进行逃逸;以及在逃逸失败的情况下,将第一槽位设置为失效状态,不再承载数据流。
在一可选实施例中,处理器41在根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文时,用于:针对使用非TCP协议的第二槽位,可以根据第二槽位对应的隧道封装信息,采用伪装TCP技术,将第二槽位所承载的数据流中的原始报文封装为VPN报文。
需要说明的是,关于上述装置实施例中各模块的具体功能以及设备实施例中处理器执行各步骤的具体内容,可参见上述***实施例中对应部分的说明,在此不做赘述。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由网络设备执行的各步骤。
上述实施例中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述实施例中的显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
上述实施例中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理***,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述实施例中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种用于VPN的多流负载均衡***,其特征在于,包括:VPN客户端和VPN网关集群,所述VPN客户端经网络交换设备与所述VPN网关集群通信连接;所述VPN网关集群与第一网络环境互联;
所述VPN客户端部署在第二网络环境中,用于与所述VPN网关集群建立VPN隧道,将所述VPN隧道划分为多个槽位并为各槽位配置不同的隧道封装信息,以承载所述第二网络环境中的多条数据流;将所述多条数据流分配到所述多个槽位上,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文,并经所述网络交换设备发送至所述VPN网关集群中;
所述网络交换设备,用于根据所述VPN报文的隧道封装信息,将来自同一槽位的VPN报文分配到所述VPN网关集群中的同一网关设备上;所述网关设备,用于根据所述VPN报文的隧道封装信息,将来自同一槽位的VPN报文分配到该网关设备上的同一处理单元上进行处理以及将来自不同槽位的VPN报文分配到该网关设备上的不同处理单元上进行处理。
2.根据权利要求1所述的***,其特征在于,所述VPN客户端将所述VPN隧道划分为多个槽位并为各槽位配置不同的隧道封装信息,具体用于:
基于预先配置的槽位数量,将所述VPN隧道划分为多个槽位;确定各槽位对应的源端口和目的端口,不同槽位对应的目的端口不同;
将所述VPN客户端的IP地址和所述VPN网关集群的IP地址作为各槽位对应的源IP地址和目的IP地址,结合各槽位对应的源端口和目的端口,生成各槽位对应的隧道封装信息。
3.根据权利要求2所述的***,其特征在于,还包括:中心管控节点,用于配置所述VPN隧道对应的槽位数量和端口配置信息,并下发给所述VPN客户端,所述端口配置信息用于指示所述VPN隧道可以使用的多个候选端口;
所述VPN客户端确定各槽位对应的源端口和目的端口,具体用于:从所述多个候选端口中,选择各槽位对应的目的端口,并随机生成各槽位对应的源端口。
4.根据权利要求3所述的***,其特征在于,所述中心管控节点还用于:
向所述VPN客户端和所述VPN网关集群下发建立所述VPN隧道所需的第一配置信息,以在所述VPN客户端与所述VPN网关集群之间建立VPN隧道;其中,所述第一配置信息至少包括:所述VPN客户端的IP地址、所述VPN网关集群的IP地址以及VPN隧道使用的加密参数和/或认证参数;
或者,
向所述VPN客户端和所述VPN网关集群下发建立所述VPN隧道所需的第二配置信息,所述第二配置信息包括:所述VPN客户端的IP地址和所述VPN网关集群的IP地址,以使所述VPN客户端与所述VPN网关集群协商VPN隧道使用的加密参数和/或认证参数以建立所述VPN隧道。
5.根据权利要求3所述的***,其特征在于,所述VPN网关集群具有多个IP地址,多个IP地址对应不同的运营商属性,所述中心管控节点还用于:根据所述第二网络环境的运营商属性,确定所述VPN网关集群使用运营商属性与所述第二网络环境相同的IP地址。
6.根据权利要求1-5任一项所述的***,其特征在于,所述VPN客户端还用于:
根据各槽位对应的隧道封装信息,向所述VPN网关集群中对应的网关设备发送探活报文,以探测各槽位所承载的数据流是否发生中断;
针对与发生中断的数据流对应的第一槽位,动态修改所述第一槽位对应的隧道封装信息,以使所述第一槽位所承载的数据流针对传输路径上的过滤规则进行逃逸;以及
在逃逸失败的情况下,将所述第一槽位设置为失效状态,不再承载数据流。
7.根据权利要求1-5任一项所述的***,其特征在于,所述VPN客户端根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文时,具体用于:
针对使用非TCP协议的第二槽位,根据所述第二槽位对应的隧道封装信息,采用伪装TCP技术,将所述第二槽位所承载的数据流中的原始报文封装为VPN报文。
8.一种用于VPN的多流负载均衡方法,其特征在于,应用于部署在第二网络环境中的VPN客户端,所述方法包括:
与VPN网关集群建立VPN隧道,所述VPN网关集群与第一网络环境互联;
将所述VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,以承载所述第二网络环境中的多条数据流;
将所述多条数据流分配到所述多个槽位上,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文;
将所述VPN报文发送至所述VPN网关集群中,以使所述VPN网关集群中同一网关设备上的同一处理单元对来自同一槽位的VPN报文进行处理以及使所述VPN网关集群中同一网关设备上的不同处理单元对来自不同槽位的VPN报文进行处理。
9.根据权利要求8所述的方法,其特征在于,将所述VPN隧道划分为多个槽位,并为各槽位配置不同的隧道封装信息,包括:
基于预先配置的槽位数量,将所述VPN隧道划分为多个槽位;确定各槽位对应的源端口和目的端口,不同槽位对应的目的端口不同;
将所述VPN客户端的IP地址和所述VPN网关集群的IP地址作为各槽位对应的源IP地址和目的IP地址,结合各槽位对应的源端口和目的端口,生成各槽位对应的隧道封装信息。
10.根据权利要求9所述的方法,其特征在于,还包括:
接收中心管控节点下发的所述VPN隧道对应的槽位数量和端口配置信息,所述端口配置信息用于指示所述VPN隧道可以使用的多个候选端口;
相应地,确定各槽位对应的源端口和目的端口,包括:从所述多个候选端口中,选择各槽位对应的目的端口,并随机生成各槽位对应的源端口。
11.根据权利要求8-10任一项所述的方法,其特征在于,还包括:
根据各槽位对应的隧道封装信息,向所述VPN网关集群中对应的网关设备发送探活报文,以探测各槽位所承的载数据流是否发生中断;
针对与发生中断的数据流对应的第一槽位,动态修改所述第一槽位对应的隧道封装信息,以使所述第一槽位所承载的数据流针对传输路径上的过滤规则进行逃逸;以及
在逃逸失败的情况下,将所述第一槽位设置为失效状态,不再承载数据流。
12.根据权利要求8-10任一项所述的方法,其特征在于,根据各槽位对应的隧道封装信息将其所承载数据流中的原始报文封装为VPN报文,包括:
针对使用非TCP协议的第二槽位,根据所述第二槽位对应的隧道封装信息,采用伪装TCP技术,将所述第二槽位所承载的数据流中的原始报文封装为VPN报文。
13.一种网络设备,其特征在于,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器与所述存储器耦合,用于执行所述计算机程序以实现权利要求8-12任一项所述方法中的步骤。
14.一种存储有计算机程序/指令的计算机可读存储介质,其特征在于,当所述计算机程序/指令被处理器执行时,致使所述处理器实现权利要求8-12任一项所述方法中的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210316106.7A CN114500176B (zh) | 2022-03-29 | 2022-03-29 | 用于vpn的多流负载均衡方法、装置、***及存储介质 |
PCT/CN2023/084291 WO2023185804A1 (zh) | 2022-03-29 | 2023-03-28 | 用于vpn的多流负载均衡方法、装置、***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210316106.7A CN114500176B (zh) | 2022-03-29 | 2022-03-29 | 用于vpn的多流负载均衡方法、装置、***及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114500176A CN114500176A (zh) | 2022-05-13 |
CN114500176B true CN114500176B (zh) | 2022-09-16 |
Family
ID=81489233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210316106.7A Active CN114500176B (zh) | 2022-03-29 | 2022-03-29 | 用于vpn的多流负载均衡方法、装置、***及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114500176B (zh) |
WO (1) | WO2023185804A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114500176B (zh) * | 2022-03-29 | 2022-09-16 | 阿里云计算有限公司 | 用于vpn的多流负载均衡方法、装置、***及存储介质 |
CN115333994B (zh) * | 2022-08-01 | 2024-05-31 | 北京金山云网络技术有限公司 | 实现vpn路由快速收敛的方法、装置以及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105009522A (zh) * | 2013-12-24 | 2015-10-28 | 华为技术有限公司 | 一种部署增值业务的方法、网络设备及增值业务设备 |
CN105939240A (zh) * | 2015-11-25 | 2016-09-14 | 杭州迪普科技有限公司 | 负载均衡方法及装置 |
CN112953808A (zh) * | 2021-03-05 | 2021-06-11 | 网宿科技股份有限公司 | Vpn数据传输方法、装置及服务器 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100420220C (zh) * | 2006-01-09 | 2008-09-17 | 华为技术有限公司 | 二层隧道协议网络服务器及其隧道建立方法 |
US20140376558A1 (en) * | 2013-06-19 | 2014-12-25 | Alcatel-Lucent Usa Inc. | Dynamic Network Service Association and On Demand Service Provisioning |
CN104158756B (zh) * | 2014-08-12 | 2017-08-15 | 浙江宇视科技有限公司 | 一种集群***对报文进行负载分担的方法和*** |
CN104184646B (zh) * | 2014-09-05 | 2017-12-22 | 深信服网络科技(深圳)有限公司 | Vpn网络数据交互方法和***及其网络数据交互设备 |
US9565167B2 (en) * | 2015-01-21 | 2017-02-07 | Huawei Technologies Co., Ltd. | Load balancing internet protocol security tunnels |
CN109076006B (zh) * | 2016-04-13 | 2021-10-15 | 诺基亚技术有限公司 | 基于覆盖网络的多租户虚拟专用网络 |
CN107181662A (zh) * | 2017-05-18 | 2017-09-19 | 迈普通信技术股份有限公司 | 一种vxlan隧道负载均衡的方法及*** |
CN110753072B (zh) * | 2018-07-24 | 2022-06-03 | 阿里巴巴集团控股有限公司 | 负载均衡***、方法、装置及设备 |
US11277343B2 (en) * | 2019-07-17 | 2022-03-15 | Vmware, Inc. | Using VTI teaming to achieve load balance and redundancy |
CN112350918B (zh) * | 2020-12-10 | 2021-03-23 | 武汉绿色网络信息服务有限责任公司 | 一种业务流量调度方法、装置、设备及存储介质 |
CN113110360A (zh) * | 2021-05-19 | 2021-07-13 | 中铁工程装备集团有限公司 | 隧道施工智能装备集群协同管控***、方法及边缘计算站 |
CN114124584B (zh) * | 2022-01-28 | 2022-05-17 | 卓望数码技术(深圳)有限公司 | 远程接入办公网络的方法、装置、***、接网设备及介质 |
CN114500176B (zh) * | 2022-03-29 | 2022-09-16 | 阿里云计算有限公司 | 用于vpn的多流负载均衡方法、装置、***及存储介质 |
-
2022
- 2022-03-29 CN CN202210316106.7A patent/CN114500176B/zh active Active
-
2023
- 2023-03-28 WO PCT/CN2023/084291 patent/WO2023185804A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105009522A (zh) * | 2013-12-24 | 2015-10-28 | 华为技术有限公司 | 一种部署增值业务的方法、网络设备及增值业务设备 |
CN105939240A (zh) * | 2015-11-25 | 2016-09-14 | 杭州迪普科技有限公司 | 负载均衡方法及装置 |
CN112953808A (zh) * | 2021-03-05 | 2021-06-11 | 网宿科技股份有限公司 | Vpn数据传输方法、装置及服务器 |
Also Published As
Publication number | Publication date |
---|---|
WO2023185804A1 (zh) | 2023-10-05 |
CN114500176A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230079033A1 (en) | Distributed ipsec gateway | |
US8885649B2 (en) | Method, apparatus, and system for implementing private network traversal | |
US11546444B2 (en) | Traffic forwarding and disambiguation by using local proxies and addresses | |
US9231820B2 (en) | Methods and apparatus for controlling wireless access points | |
US8713305B2 (en) | Packet transmission method, apparatus, and network system | |
CN114173374A (zh) | 多接入管理服务分组分类和优先级排定技术 | |
US10085253B2 (en) | Methods and apparatus for controlling wireless access points | |
CA2791523C (en) | Accessing local network resources in a multi-interface system | |
AU2018285865A1 (en) | Service peering exchange | |
CN114500176B (zh) | 用于vpn的多流负载均衡方法、装置、***及存储介质 | |
US20160119165A1 (en) | Methods and systems to manage network connections | |
US9055032B2 (en) | Secure network tunnel between a computing device and an endpoint | |
KR20180028542A (ko) | 종단간 m2m 서비스 계층 세션 | |
JP2020517132A (ja) | ポリシ制御を実装するための方法、装置、およびシステム | |
CN109450905B (zh) | 传输数据的方法和装置及*** | |
WO2012041604A1 (en) | Aggregation of mobile broadband network interfaces | |
WO2024067338A1 (zh) | 云组网***、安全访问方法、设备及存储介质 | |
CA2946909A1 (en) | Using proxy devices as dynamic data relays | |
US11647069B2 (en) | Secure remote computer network | |
US20230093915A1 (en) | Cloud router platform for sdn networks | |
US11689447B2 (en) | Enhanced dynamic encryption packet segmentation | |
CN114025010B (zh) | 建立连接的方法和网络设备 | |
WO2024027419A1 (zh) | 报文发送方法、装置及*** | |
WO2024001524A1 (zh) | 一种通信方法及装置 | |
US20230413353A1 (en) | Inter-plmn user plane integration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |