具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1为本申请根据一示例性实施例示出的一种隧道标识的转换应用场景图,图1中包括客户端、负载均衡设备、多台VPN设备(图中列举了3台VPN设备)、服务器。其中,所述客户端可以是PC(Personal Computer,个人计算机)、手机、平板设备等,用于利用VPN设备为其分配的隧道标识访问服务器,以实现VPN业务访问;所述负载均衡设备可以是防火墙,用于将所有客户端的流量调度到不同的VPN设备上,以减轻VPN设备的压力;所述VPN设备的数量可以根据客户端的数量设置,用于为客户端分配隧道标识,并将客户端发送的携带有该隧道标识的业务报文转发至服务器。
在现有技术中,例如,客户端1和客户端2需要接入VPN业务时,客户端1和客户端2分别向负载均衡设备发送接入请求报文1和接入请求报文2,负载均衡设备利用负载均衡调度算法为接入请求报文1和接入请求报文2分配VPN设备,假设接入请求报文1分配的是VPN设备1,接入请求报文2分配的是VPN设备2,负载均衡设备将接入请求报文1转发至VPN设备1上,将接入请求报文2转发至VPN设备2,VPN设备1和VPN设备2根据接收到的接入请求报文,对接入请求报文中携带的客户端的信息进行认证,在认证成功后,为客户端分配隧道标识,假设VPN设备1为客户端1分配隧道标识1,VPN设备2为客户端2也分配了隧道标识1,在向客户端做出应答(也可称为控制报文)时,VPN设备1返回的应答先经过负载均衡设备,VPN设备2返回的应答后经过负载均衡设备,从而负载均衡设备的表项中最终记录的是隧道标识1与VPN设备2的设备信息,在客户端1和客户端2接收到应答后,均会向负载均衡设备发送携带隧道标识1的业务报文,负载均衡设备利用隧道标识1获取到对应的VPN设备2的设备信息,并将客户端1和客户端2的业务报文均转发到VPN设备2上,由于所述客户端1没有在VPN设备2上进行认证,所以当VPN设备2接收到客户端1发送的业务报文时不会进行处理,导致客户端1的业务异常。
在本申请实施例中,当负载均衡设备接收到VPN设备返回的应答(下面称为控制报文)时,首先获取该VPN设备的IP地址对应的设备标识,并根据预设规则获取最小可用节点的节点标识,通过利用设备标识和节点标识生成的隧道标识替换控制报文中的隧道标识,以避免不同VPN设备为不同的客户端分配相同隧道标识,导致客户端业务异常的问题。
图2为本申请根据一示例性实施例示出的一种隧道标识的转换方法的实施例流程图,在本申请实施例中,客户端进行VPN业务访问时,与VPN设备的交互是基于L2TP(Layer 2Tunneling Protocol,第二层隧道协议)进行的交互,由于L2TP支持两端点间使用多隧道,因此,客户端可以利用隧道标识通过VPN设备进行VPN业务访问。如图2所示,该实施例应用于负载均衡设备上,包括以下步骤:
步骤201:接收来自VPN设备的控制报文,该控制报文携带有VPN设备的IP地址和第一隧道标识。
在执行步骤201之前,客户端在接入VPN业务时,会向负载均衡设备发送接入请求,负载均衡设备通过负载均衡调度算法(例如,加权轮询调度算法)为该接入请求分配VPN设备,然后将该接入请求发送到分配的VPN设备上,然后VPN设备为该客户端的接入请求指定一个可用的第一隧道标识,并将该第一隧道标识发送至负载均衡设备。
由此可知,负载均衡设备会接收到来自VPN设备的控制报文,并且该控制报文中携带有第一隧道标识和VPN设备的IP地址。其中,该控制报文的源IP地址为该VPN设备的IP地址。
针对VPN设备为该客户端的接入请求指定一个可用的第一隧道标识的过程,在一个例子中,该客户端的接入请求中可以携带期望隧道标识,因此VPN设备可以先获取接入请求中携带的期望隧道标识,若该期望隧道标识指向的隧道不可用,则VPN设备重新指定一条可以进行业务传输的隧道,该隧道的标识为第一隧道标识;若该期望隧道标识指向的隧道可用,则VPN设备将该期望隧道标识作为第一隧道标识。在另一个例子中,VPN设备可以直接为该客户端的接入请求指定一个可用的第一隧道标识。
步骤202:获取该VPN设备的IP地址对应的设备标识,并根据预设规则获取最小可用节点的节点标识。
在执行步骤202之前,负载均衡设备可以从预设的VPN设备集群中获取所有VPN设备的数量,并利用该数量确定设备标识的标记位数,然后再针对每个VPN设备,根据改标记位数为该VPN设备进行编号,并将该编号确定为该VPN设备的设备标识,最后将该VPN设备的IP地址与该设备标识添加到地址与标识对应表中。
其中,预设的VPN设备集群指的是与负载均衡设备连接的所有VPN设备,并且VPN设备集群中记录有所有VPN设备的IP地址;VPN设备的设备标识可以数字,也可以是字符,也可以是数字与字符的组合,下面以数字为例进行说明,例如,VPN设备集群中的VPN设备的数量为7个,由于通常情况下,在计算机中存储数字是以二进制形式进行存储,因此可以确定设备标识的标记位数为3,即,可以分别将7个VPN设备编号为000(数字0)、001(数字1)、010(数字2)、011(数字3)、100(数字4)、101(数字5)、110(数字6),如表1所示,为一种示例性的地址与标识对应表。
VPN设备的IP地址 |
设备标识 |
IP0 |
000 |
IP1 |
001 |
IP2 |
010 |
IP3 |
011 |
IP4 |
100 |
IP5 |
101 |
IP6 |
110 |
表1
针对获取该VPN设备的IP地址对应的设备标识的过程,负载均衡设备可以利用该VPN设备的IP地址查找地址与标识对应表,并获取该VPN设备的IP地址对应的设备标识。如表1所述,例如,VPN设备的IP地址为IP1,那么可以获取到对应的设备标识为001。
针对根据预设规则获取最小可用节点的节点标识的过程,负载均衡设备可以从数组链表中获取最小可用节点的地址,再获取该最小可用节点的地址指向的节点所记录的节点标识。
针对从数组链表中获取最小可用节点的地址的过程,负载均衡设备可以将数组链表中的首节点所记录的下一个可用节点的地址作为最小可用节点的地址,并利用该最小可用节点所记录的下一个可用节点的地址替换首节点所记录的下一个可用节点的地址。
其中,该数组链表包括N个节点,每个节点中记录有本节点标识和下一个可用节点的地址,所述N为预设数值的节点标识的标记位数次方,该节点标识可以是数组链表中节点的数字编号,即数组链表的下标,由于计算机通常以二进制形式存储数字,因此,预设数值为2,数组链表的节点数为2的节点标识的标记位数次方,该节点标识的标记位数由第二隧道标识的标记位数与设备标识的标记位数确定。
针对该节点标识的标记位数由第二隧道标识的标记位数与设备标识的标记位数确定的过程,第二隧道标识由预设标记位数组成,该节点标识的标记位数为该预设标记位数与设备标识的标记位数之差。其中,由于在L2TP协议中隧道标识由16为比特数组成,因此该预设标记位数可以为16,例如,设备标识的标记位数为3,则该节点标识的标记位数为16-3=13。
下面以一个例子说明节点标识的获取过程,例如,数组链表中的首节点所记录的可用节点的地址为第四个节点的地址,以及本节点标识为0000 0000 00000(数字0),那么第四个节点的地址指向的节点所记录的节点标识为0000 00000001 1(数字3),表示节点标识1和节点标识2已经被用,目前最小可用节点的节点标识为0000 0000 0001 1,并且,负载均衡设备会利用第四个节点所记录的下一个可用节点的地址,即第五个节点的地址,替换首节点所记录的第四个节点的地址,当负载均衡设备下一次再获取最小可用节点的节点标识时,会获取到第五个节点的节点标识0000 0000 0010 0(数字4)。
步骤203:利用该设备标识和该节点标识获得第二隧道标识。
具体地,负载均衡设备可以按照预设组合顺序,将该设备标识与该节点标识进行组合,得到第二隧道标识。
其中,该预设组合顺序可以是设备标识在前,节点标识在后,也可以是设备标识在后,节点标识在前,这里并不做限定。
下面以一个例子进行说明,例如,设备标识在前,节点标识在后,VPN设备1针对客户端1返回的控制报文1,VPN设备2针对客户端2返回的控制报文2,控制报文1和控制报文2携带的第一隧道标识均为0010 0000 0010 1101(数字45),假设针对控制报文1,负载均衡设备获取到最小可用节点的节点标识为0000 0000 0001 1,VPN设备1的设备标识为001;针对控制报文2,获取到最小可用节点的节点标识为0000 0000 0010 0,VPN设备2的设备标识为010,从而,得到控制报文1的第二隧道标识为0010 0000 0000 0011,控制报文2的第二隧道标识为0100 0000 0000 0100。
由步骤201至步骤203描述可知,针对不同的VPN设备,即使指定的第一隧道标识相同,由于其设备标识不同,以及获取到的节点标识也不同,因此负载均衡设备利用设备标识和节点标识获得的第二隧道标识也就不同,这样,即使两个客户端分配到了相同的第一隧道标识,其对应的第二隧道标识不同,负载均衡设备同样也可以区分不同的客户端对应不同的VPN设备。
步骤204:利用该第二隧道标识替换控制报文中的第一隧道标识,并将该控制报文转发到客户端上。
针对将控制报文转发到客户端上的过程,可以按照现有的转发流程进行转发,不再赘述。客户端在接收到控制报文时,可以利用第二隧道标识进行VPN业务访问。
负载均衡设备在用第二隧道标识替换第一隧道标识之前,可以将第一隧道标识、第二隧道标识以及VPN设备的IP地址记录到会话保持表项中,并且,负载均衡设备在将该控制报文转发到客户端上之后,接收到来自该客户端的业务报文(正向业务报文),该业务报文携带有该第二隧道标识,可以利用该第二隧道标识查找会话保持表项,获取对应的第一隧道标识和VPN设备的IP地址,并利用该第一隧道标识替换该业务报文中的第二隧道标识,并将该业务报文发送到该VPN设备的IP地址指向的VPN设备上,此外,VPN设备再将该正向业务报文转发到服务器上,服务器针对该正向业务报文向客户端返回反向业务报文。与此同时,当负载均衡设备接收到来自该VPN设备转发的反向业务报文时,利用第一隧道标识和该VPN设备的IP地址查找会话保持表项,获取到对应的第二隧道标识,并用第二隧道标识替换第一隧道标识,并将该反向业务报文转发到该客户端上。从而,保证了客户端的业务正常。
需要说明的是,通常情况下,客户端向服务器发送的报文方向可以为“正向”,服务器根据接收到的正向报文返回的报文方向可以为“反向”。
需要进一步说明的是,该数组链表中除了首节点之外,每个节点中还可以记录上一个可用节点的地址,并且在该节点被用之后,将已用标识添加到该节点中,以指示该节点已被使用,当客户端断开VPN业务时,可以释放数组链表中已用的节点标识,下面对释放数组链表的过程进行详细说明,为了区分描述方便,已被使用的节点所记录的前一个节点的地址和后一个节点的地址,可以称为该节点所记录的上一个节点的地址和下一个节点的地址。
当负载均衡设备接收到来自客户端的下线报文时,获取该下线报文携带的第二隧道标识,并根据预设组合顺序获取相应的节点标识,并从已被使用的节点中获取该节点标识对应的节点,并删除该节点所记录的已用标识。然后判断该节点所记录的上一个节点的地址指向的节点是否被用,若未被使用,则利用该上一个节点所记录的下一个可用节点的地址替换该节点所记录的下一个节点的地址,并利用该节点的地址替换上一个节点所记录的下一个可用节点的地址;若已被使用,则针对该已被使用的节点,继续判断该已被使用的节点所记录的上一个节点的地址指向的节点是否被用,直到查找到未被使用的节点,并用该未被使用的节点所记录的下一个可用节点的地址替换该节点所记录的下一个节点的地址,并利用该节点的地址替换该未被使用的节点所记录的下一个可用节点的地址。
基于步骤204描述可知,负载均衡设备通过释放数组链表中已用的节点标识,可以避免数组链表中的节点被用完,而无法获得第二隧道标识。
由上述实施例可知,负载均衡设备在接收到来自VPN设备的控制报文时,获取控制报文携带VPN设备的IP地址对应的设备标识,并根据预设规则获取最小可用节点的节点标识,然后再利用该设备标识和该节点标识获得第二隧道标识,并利用该第二隧道标识替换该控制报文中携带的第一隧道标识,并将该控制报文转发到客户端上。基于上述实现方式,由于负载均衡设备通过利用设备标识和节点标识获得第二隧道标识,针对不同的VPN设备,即使为两个客户端指定的第一隧道标识相同,由于设备标识和节点标识均不同,得到的第二隧道标识也不同,从而,这两客户端能够利用不同的第二隧道标识向负载均衡设备发送业务报文,负载均衡设备可以通过不同的第二隧道标识,区分这两客户端对应的VPN设备的IP地址和第一隧道标识,并用第一隧道标识替换第二隧道标识,并将业务报文发送到该VPN设备的IP地址指向的VPN设备上,保证了客户端的业务正常。
与前述隧道标识的转换方法的实施例相对应,本申请还提供了隧道标识的转换装置的实施例。
本申请隧道标识的转换装置的实施例可以应用在负载均衡设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请根据一示例性实施例示出的一种负载均衡设备的硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。
图4为本申请根据一示例性实施例示出的一种隧道标识的转换装置的实施例结构图,如图4所示,该实施例应用于负载均衡设备上,该装置包括:接收单元410、获取单元420、获得单元430、替换单元440、转发单元450。
其中,接收单元410,用于接收来自VPN设备的控制报文,所述控制报文携带有所述VPN设备的IP地址和第一隧道标识;
获取单元420,用于获取所述VPN设备的IP地址对应的设备标识,并根据预设规则获取最小可用节点的节点标识;
获得单元430,用于利用所述设备标识和所述节点标识获得第二隧道标识;
替换单元440,用于利用所述第二隧道标识替换所述控制报文中的第一隧道标识;
转发单元450,用于将所述控制报文转发到客户端上。
在一个可选的实现方式中,获取单元420,具体用于在获取所述VPN设备的IP地址对应的设备标识的过程中,利用所述VPN设备的IP地址查找地址与标识对应表;获取所述VPN设备的IP地址对应的设备标识。
在另一个可选的实现方式中,所述装置还包括(图4中未示出):对应表建立单元;
所述对应表建立单元,用于从预设的VPN设备集群中获取所有VPN设备的数量;利用所述数量确定设备标识的标记位数;针对每个VPN设备,根据所述标记位数为所述VPN设备进行编号,并将所述编号确定为所述VPN设备的设备标识;将所述VPN设备的IP地址与所述设备标识添加到所述地址与标识对应表中。
在另一个可选的实现方式中,所述第二隧道标识由预设标记位数组成,所述节点标识的标记位数为所述预设标记位数与所述设备标识的标记位数之差;获取单元420,还具体用于在根据预设规则获取最小可用节点的节点标识的过程中,将数组链表中的首节点所记录的下一个可用节点的地址作为最小可用节点的地址;其中,所述数组链表包括N个节点,每个节点中记录有本节点标识和下一个可用节点的地址,所述N为预设数值的节点标识的标记位数次方;获取所述最小可用节点的地址指向的节点所记录的节点标识,并将所述节点标识确定为最小可用节点的节点标识;利用所述最小可用节点所记录的下一个可用节点的地址替换首节点所记录的下一个可用节点的地址。
在另一个可选的实现方式中,获得单元430,具体用于按照预设组合顺序,将所述设备标识与所述节点标识进行组合,得到第二隧道标识。
在另一个可选的实现方式中,所述装置还包括(图4中未示出):
记录单元,用于在所述替换单元440利用所述第二隧道标识替换所述控制报文中的第一隧道标识之前,将所述第一隧道标识、所述第二隧道标识以及所述VPN设备的IP地址记录到会话保持表项中;
所述装置还包括(图4中未示出):
业务报文处理单元,用于在所述转发单元450将所述控制报文转发到客户端上之后,接收来自所述客户端的业务报文,所述业务报文携带有第二隧道标识;利用所述第二隧道标识查找所述会话保持表项,获取对应的第一隧道标识和VPN设备的IP地址;利用所述第一隧道标识替换所述业务报文中的第二隧道标识,并将所述业务报文发送至所述VPN设备的IP地址指向的VPN设备上。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可知,负载均衡设备在接收到来自VPN设备的控制报文时,获取控制报文携带VPN设备的IP地址对应的设备标识,并根据预设规则获取最小可用节点的节点标识,然后再利用该设备标识和该节点标识获得第二隧道标识,并利用该第二隧道标识替换该控制报文中携带的第一隧道标识,并将该控制报文转发到客户端上。基于上述实现方式,由于负载均衡设备通过利用设备标识和节点标识获得第二隧道标识,针对不同的VPN设备,即使为两个客户端指定的第一隧道标识相同,由于设备标识和节点标识均不同,得到的第二隧道标识也不同,从而,这两客户端能够利用不同的第二隧道标识向负载均衡设备发送业务报文,负载均衡设备可以通过不同的第二隧道标识,区分这两客户端对应的VPN设备的IP地址和第一隧道标识,并用第一隧道标识替换第二隧道标识,并将业务报文发送到该VPN设备的IP地址指向的VPN设备上,保证了客户端的业务正常。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。