一种隧道调整方法和装置与流程

文档序号:14411283阅读:167来源:国知局
本发明涉及移动通讯领域,特别是涉及一种隧道调整方法和装置。
背景技术
::随着互联网的快速发展,cpe(customerpremiseequipment,客户终端设备)作为一种较为便携式的通讯终端得到了广泛的应用,用户以及运营商对网络传输中的安全越来越重视,l2tp网络作为当前流行的网络安全隧道协议广受应用,如何更好地利用当前的l2tp协议,在保证网络传输安全的前提下,需要更好地分配隧道用户会话,以提升带宽利用率和用户体验。目前,为了在通信网络中实现二层隧道协议(l2tp)隧道负载均衡,在网络中的源设备分别与多台目的设备之间建立所述l2tp隧道,并给定各隧道建立用户数的比例。进一步的,将各隧道的加权数和用户数相乘以得到各隧道的权值,其中,加权数可以根据给定的比例确定;当用户上线时,选择所有隧道中权值最低的隧道建立用户连接,以及当任意一隧道的用户数变化时,重新计算该隧道的权值。然而上述隧道负载均衡方式存在以下问题:1)仅简单地利用隧道的加权数和用户数相乘来得到各隧道的权值,并依据权值最低的隧道给新上线的用户建立链接,这就导致如果a用户的实际流量非常大,但b、c、d用户的流量之和也不如a用户,那么仍然会将新用户分配到a相同的隧道,这就导致实际情况下a所在的隧道负载更加大于b、c、d所在隧道,未能充分利用带宽,导致用户体验不好。2)仅针对新用户的链接建立来进行隧道分配,如果a、b用户在隧道1,c、d在隧道2,此时a的流量大量下降,那就仍会导致隧道2的负载大于隧道1,无法进行用户的隧道调整,仍会浪费带宽,导致用户体验不佳。针对上述问题,目前尚未提出有效的解决方案。技术实现要素:本发明提供一种隧道调整方法和装置,用以解决现有技术中即使用户会话的流量发生变化,也无法进行隧道调整,而导致的资源浪费和用户体验度差的技术问题。为解决上述技术问题,一方面,本发明提供一种隧道调整方法,该方法包括:获取各隧道中各用户会话的权值;获取所述各隧道的隧道权值;根据所述各用户会话的权值和/或所述各隧道的隧道权值,进行隧道调整。在一个实施方式中,在获取各隧道中各用户会话的权值之前,上述方法还包括:建立链路状态表;确定各隧道中各用户会话的权值;根据所述各隧道中各用户会话的权值,确定所述各隧道的隧道权值;将所述各用户会话的权值和各隧道的隧道权值,添加至所述状态链路表中。在一个实施方式中,确定各隧道中各用户会话的权值,包括:根据所述各用户会话的平均速率和平均时延,确定所述各用户会话的权值。在一个实施方式中,根据所述各用户会话的平均速率和平均时延,确定所述各用户会话的权值,包括:对所述各用户会话的平均速率和平均时延进行加权运算;将加权运算的结果作为该用户会话的权值。在一个实施方式中,根据所述各用户会话的权值和/或所述各隧道的隧道权值,进行隧道调整,包括:接收用户会话建立请求;响应于所述用户会话建立请求,在隧道权值最小的隧道建立用户会话。在一个实施方式中,根据所述各用户会话的权值和/或所述各隧道的隧道权值,进行隧道调整,包括:确定是否到对隧道进行调整的时间点;如果已经到达对隧道进行调整的时间点,则计算隧道权值最大的隧道和隧道权值最小的隧道的隧道权值的平均值;从所述隧道权值最大的隧道中,查找出用户会话的权值与所述平均值之间的差值最小的用户会话;将查找出的用户会话的权值与所述平均值之间的差值最小的用户会话,切换至所述隧道权值最小的隧道。在一个实施方式中,将查找出的用户会话的权值与所述平均值之间的差值最小的用户会话,切换至所述隧道权值最小的隧道,包括:在所述隧道权值最小的隧道中,建立第一会话,其中,所述第一会话为所述查找出的用户会话的权值与所述平均值之间的差值最小的用户会话;在第一会话和第二会话中同时传输数据,其中,所述第二会话为隧道权值最大的隧道中查找出的用户会话的权值与所述平均值之间的差值最小的用户会话;在确定所述第一会话和所述第二会话中传输的数据一致之后,断开所述第二会话。在一个实施方式中,确定是否到对隧道进行调整的时间点,包括:确定所述各隧道中是否有一条或多条隧道的隧道权值超出预设阈值;如果有一条或多条隧道的隧道权值超出所述预设阈值,则确定达到对隧道进行调整的时间点。在一个实施方式中,所述隧道包括:二层隧道协议隧道。另一方面,本发明还提供一种隧道调整装置,该装置包括:第一获取模块,用于获取各隧道中各用户会话的权值;第二获取模块,用于获取所述各隧道的隧道权值;调整模块,用于根据所述各用户会话的权值和/或所述各隧道的隧道权值,进行隧道调整。在一个实施方式中,上述装置还包括:建立模块,用于在获取各隧道中各用户会话的权值之前,建立链路状态表;第一确定模块,用于确定各隧道中各用户会话的权值;第二确定模块,用于根据所述各隧道中各用户会话的权值,确定所述各隧道的隧道权值;添加模块,用于将所述各用户会话的权值和各隧道的隧道权值,添加至所述状态链路表中。在一个实施方式中,所述第一确定模块具体用于根据所述各用户会话的平均速率和平均时延,确定所述各用户会话的权值。在一个实施方式中,所述第一确定模块包括:加权单元,用于对所述各用户会话的平均速率和平均时延进行加权运算;生成单元,用于将加权运算的结果作为该用户会话的权值。在一个实施方式中,所述调整模块包括:接收单元,用于接收用户会话建立请求;建立单元,用于响应于所述用户会话建立请求,在隧道权值最小的隧道建立用户会话。在一个实施方式中,所述调整模块包括:确定单元,用于确定是否到对隧道进行调整的时间点;计算单元,用于在确定已经到达对隧道进行调整的时间点的情况下,计算隧道权值最大的隧道和隧道权值最小的隧道的隧道权值的平均值;查找单元,用于从所述隧道权值最大的隧道中,查找出用户会话的权值与所述平均值之间的差值最小的用户会话;切换单元,用于将查找出的用户会话的权值与所述平均值之间的差值最小的用户会话,切换至所述隧道权值最小的隧道。在一个实施方式中,所述切换单元包括:建立子单元,用于在所述隧道权值最小的隧道中,建立第一会话,其中,所述第一会话为所述查找出的用户会话的权值与所述平均值之间的差值最小的用户会话;传输子单元,用于在第一会话和第二会话中同时传输数据,其中,所述第二会话为隧道权值最大的隧道中查找出的用户会话的权值与所述平均值之间的差值最小的用户会话;断开单元,用于在确定所述第一会话和所述第二会话中传输的数据一致之后,断开所述第二会话。在一个实施方式中,所述确定单元包括:第一确定子单元,用于确定所述各隧道中是否有一条或多条隧道的隧道权值超出预设阈值;第二确定子单元,用于在确定有一条或多条隧道的隧道权值超出所述预设阈值的情况下,确定达到对隧道进行调整的时间点。本发明有益效果如下:通过各用户会话的权值和/或各隧道的隧道权值,进行隧道调整,因为考虑到了每个用户会话的权值以及隧道权值,从而可以使得调整结果更为有效,提升了带宽利用率和用户体验。附图说明图1是本发明实施例中隧道调整方法的一种方法流程图;图2是本发明实施例中隧道调整装置的一种结构框图;图3是本发明实施例中隧道调整装置的另一种结构框图;图4是本发明实施例中隧道调整方法的另一种方法流程图。具体实施方式为了解决现有技术现有技术中即使用户会话的流量发生变化,也无法进行隧道调整,而导致的资源浪费和用户体验度差的技术问题,本发明提供了一种隧道调整方法和装置,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。如图1所示,在本发明实施例中提供了一种隧道调整方法,可以包括以下步骤:步骤101:获取各隧道中各用户会话的权值;为了获取各用户会话的权值,可以采用实时测量的方式,也可以是采用预先计算的方式。如果采用预先计算的方式,可以设置一张记录链路状态的表,将各个用户会话的权值或者是各个隧道的隧道权值记录在里面,在需要的时候,直接查找读取就可以。例如:在获取各隧道中各用户会话的权值之前,建立链路状态表;确定各隧道中各用户会话的权值;根据所述各隧道中各用户会话的权值,确定所述各隧道的隧道权值;将所述各用户会话的权值和各隧道的隧道权值,添加至所述状态链路表中。其中,各隧道中各用户会话的权值可以是根据各用户会话的平均速率和平均时延确定。即,可以通过采集每个用户会话一定时间内网络流量(即平均速率)以及进行这一段时间内多次ping检测所得到的平均时延,对二者进行一定的加权计算。其中,加权计算可以根据具体的网络环境需求(即,不同的隧道可能承载的业务也是不同的,这就对不同的隧道的网络特征会有不同的要求)来设置。例如:如果此隧道是进行ftp大数据下载(包含但不局限于ftp),则可以对速率的权值相对增加,从而保证此隧道能够更好的进行高速率大流量的数据传输。如果此隧道是进行http上网(包含但不局限于http),则可以对时延的权值相对增加,从而保证对网络流畅度以及响应时间的要求。上述隧道的隧道权值可以是通过对该隧道的用户会话的权值进行累加得到的。步骤102:获取所述各隧道的隧道权值;在获取隧道权值的时候,可以是实时计算的,也可以是通过查表获得的,具体的获取方式,可以根据实际情况和需要选择,本申请对此不作限定。步骤103:根据所述各用户会话的权值和/或所述各隧道的隧道权值,进行隧道调整。基于各用户会话的权值和/或各隧道的隧道权值,进行隧道调整可以包括以下两个方面:1)新建新的用户会话:在接收用户会话建立请求之后,可以响应于该用户会话建立请求,在隧道权值最小的隧道建立用户会话。2)对隧道中用户会话进行切换调整,以实现隧道负载均衡具体地,可以先确定是否到对隧道进行调整的时间点;如果已经到达对隧道进行调整的时间点,则计算隧道权值最大的隧道和隧道权值最小的隧道的隧道权值的平均值;从所述隧道权值最大的隧道中,查找出用户会话的权值与所述平均值最接近的用户会话;将查找出的用户会话的权值与所述平均值最接近(即两者之间差值最小)的用户会话,切换至所述隧道权值最小的隧道。为了保证在切换过程中业务的不中断,将查找出的用户会话的权值与所述平均值最接近的用户会话,切换至所述隧道权值最小的隧道,可以包括:在所述隧道权值最小的隧道中,建立第一会话,其中,所述第一会话为所述查找出的用户会话的权值与所述平均值之间的差值最小的用户会话;在第一会话和第二会话中同时传输数据,其中,所述第二会话为隧道权值最大的隧道中查找出的用户会话的权值与所述平均值之间的差值最小的用户会话;在确定所述第一会话和所述第二会话中传输的数据一致之后,断开所述第二会话。考虑到一直进行状态调整的话,系统负荷过大,因此,为了减少系统负荷,可以设置一个阈值,确定各隧道中是否有一条或多条隧道的隧道权值超出预设阈值;如果有一条或多条隧道的隧道权值超出所述预设阈值,则确定达到对隧道进行调整的时间点。该阈值在实际实现的时候可以根据上一次记录表中记录的各个隧道的隧道权值的均值确定。上述隧道可以包括但不限于:二层隧道协议隧道。基于同一发明构思,本发明实施例中还提供了一种隧道调整装置,如下面的实施例所述。由于隧道调整装置解决问题的原理与隧道调整方法相似,因此隧道调整装置的实施可以参见隧道调整方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图2是本发明实施例的隧道调整装置的一种结构框图,如图2所示,可以包括:第一获取模块201、第二获取模块202和调整模块203,下面对该结构进行说明。第一获取模块201,可以用于获取各隧道中各用户会话的权值;第二获取模块202,可以用于获取所述各隧道的隧道权值;调整模块203,可以用于根据所述各用户会话的权值和/或所述各隧道的隧道权值,进行隧道调整。在一个实施方式中,上述隧道调整装置可以包括:建立模块,用于在获取各隧道中各用户会话的权值之前,建立链路状态表;第一确定模块,用于确定各隧道中各用户会话的权值;第二确定模块,用于根据所述各隧道中各用户会话的权值,确定所述各隧道的隧道权值;添加模块,用于将所述各用户会话的权值和各隧道的隧道权值,添加至所述状态链路表中。在一个实施方式中,第一确定模块201具体可以用于根据所述各用户会话的平均速率和平均时延,确定所述各用户会话的权值。在一个实施方式中,第一确定模块201可以包括:加权单元,用于对所述各用户会话的平均速率和平均时延进行加权运算;生成单元,用于将加权运算的结果作为该用户会话的权值。在一个实施方式中,调整模块203可以包括:接收单元,用于接收用户会话建立请求;建立单元,用于响应于所述用户会话建立请求,在隧道权值最小的隧道建立用户会话。在一个实施方式中,调整模块203可以包括:确定单元,用于确定是否到对隧道进行调整的时间点;计算单元,用于在确定已经到达对隧道进行调整的时间点的情况下,计算隧道权值最大的隧道和隧道权值最小的隧道的隧道权值的平均值;查找单元,用于从所述隧道权值最大的隧道中,查找出用户会话的权值与所述平均值之间的差值最小的用户会话;切换单元,用于将查找出的用户会话的权值与所述平均值之间的差值最小的用户会话,切换至所述隧道权值最小的隧道。在一个实施方式中,切换单元可以包括:建立子单元,用于在所述隧道权值最小的隧道中,建立第一会话,其中,所述第一会话为所述查找出的用户会话的权值与所述平均值之间的差值最小的用户会话;传输子单元,用于在第一会话和第二会话中同时传输数据,其中,所述第二会话为隧道权值最大的隧道中查找出的用户会话的权值与所述平均值之间的差值最小的用户会话;断开单元,用于在确定所述第一会话和所述第二会话中传输的数据一致之后,断开所述第二会话。在一个实施方式中,确定单元可以包括:第一确定子单元,用于确定所述各隧道中是否有一条或多条隧道的隧道权值超出预设阈值;第二确定子单元,用于在确定有一条或多条隧道的隧道权值超出所述预设阈值的情况下,确定达到对隧道进行调整的时间点。下面结合一具体实施例对上述隧道调整方法进行具体说明,然而值得注意的是,该具体实施例仅是为了更好地说明本发明,并不构成对本发明的不当限定。在cpe中设置l2tp隧道链路状态表,在该表中记录所有隧道以及用户会话数据,例如,该表可以有:tunnelid、sessionid、sessionweight、tunnelweight等参数,其中,tunnelid以及sessionid是l2tp隧道以及用户的id由相关协议进行数据的提供,sessionweight是用户会话的权值,此权值的计算可以包含单位时间内的用户会话数据流量(可以通过iptables功能提供,当然不仅限于iptables进行速率的统计,还可以通过其它方式确定),以及在一定时间内增加ping检测功能(由cpe设备在用户会话中构建icmp报文,并发送到l2tp用户会话的对端),计算当前用户会话的时延,从而获得当前用户会话的状态信息,将二者进行一定的加权计算,得出相应的用户会话权值。tunnelweight(隧道权重)就是各个隧道中所有sessionweight(用户会话权值)的叠加,此隧道状态表可以设置为每隔一段时间自动更新(这主要是考虑到网络流量的不稳定性)或是在有新的用户会话建立的时候也要先进行数据的更新(即权值的计算)。l2tp隧道链路状态表可以如下表1所示。表1表1中权值与阀值可以按照以下方式设定:1)关于权值的计算,其中session(用户会话)weight可以通过采集每个用户会话一定时间内网络流量(即平均速率)以及进行这一段时间内多次ping检测所得到的平均时延,对二者进行一定的加权计算。其中,加权计算可以根据具体的网络环境需求(即不同的隧道可能承载的业务也是不同的,这就对不同的隧道的网络特征会有不同的要求)来设置。如果此隧道是进行ftp大数据下载(包含但不局限于ftp),则可以对速率的权值相对增加,从而保证此隧道能够更好的进行高速率大流量的数据传输。如果此隧道是进行http上网(包含但不局限于http),则对时延的权值相对增加,从而保证对网络流畅度以及响应时间的要求。tunnelweight是此隧道内所有的sessionweight之和。2)关于阀值的计算,阀值为所有隧道的平均权值(这里的平均权值可以是上一次常规更新链路状态表时所得到的平均值)的300%,如表1中,此时的阀值为124。当由于某个用户会话导致本条隧道的权值大于124,则认为超过了阀值,则会强制进行链路状态表的更新。此阀值的设置作用是为了更好的优化隧道的网络带宽,避免出现突然的流量爆炸的时候瞬间阻塞隧道,导致数据的丢失,甚至网络的瘫痪。软切换,可以应用于l2tp隧道中用户会话进行性调整的情况,这里以三个隧道为例进行说明(其中,可以包含但不仅限于三个隧道)。由表1可以看出,tunnel23900的权值是51、tunnel45690的权值是58,tunnel55750的权值是15。情形1:如果现在要建立新的用户会话。则直接在tunnel55750隧道中建立。情形2:当时间节点到了,用户会话的隧道状态会进行调整,将权值最大的隧道与权值最小的隧道进行数据的平均,即58加15除以2,得出数据36,然后计算出58-36为22则将最接近22的这个用户会话,由表1中数据可知session3525这个用户会话会被从tunnelid45690中调整到tunnel55750。当用户会话进行调整时,会先在新的隧道即tunnel55750中建立此用户会话,此时,建立好会话后,cpe设备会将传输的数据报文进行复制标记,在新旧用户会话中同时传输,隧道另一端的设备则会比较新旧会话中的所有被标记的报文,当新的用户会话的数据完全能够与旧的用户会话一致之后,再断开旧的用户会话。新的l2tp隧道链路状态表可以如下表2所示:表2tunnelidsessionidsessionweighttunnelweight2390018728152390016525202390012462162390051456907462404569040557504566915557503525185575033由表2中,隧道用户会话3525调整到了tunnel55750,再计算三个权值为51、40、33,最高与最低的平均数是44,与任意一个tunnelweight的差值小于其tunnel中任意sessionweight的值,故调整结束。在本例中,还提供了一种均衡装置,如图3所示,该装置可以包括如下模块:监听模块、l2tp状态链路表模块、软切换模块、防火墙模块和高级策略路由模块。其中,监听模块,用于监听所有的用户会话,并判断是否是已知的用户会话。l2tp状态链路表模块,用于记录各个隧道中用户会话信息及隧道状态权值。软切换模块,用于在调整用户会话的时候,优先在新隧道中建立被调整的用户会话,当数据完全流通后,再切断当前隧道的用户会话,从而实现用户会话的不中断,很好地提升用户体验。防火墙模块,用于将不同的用户会话进行标记。高级策略路由,用于根据防火墙模块的标记并结合动态路由表中的对应信息将打上特定标签的数据流进行策略分配。如图4所示,可以包括以下步骤:步骤1:cpe设备对lan侧传入的用户会话数据进行监听。步骤2:cpe设备对传输的用户会话进行记录,提取关键信息,例如:会话号、数据目的地址、源地址、目的端口和源端口。步骤3:查找自建的链路状态表中的条目,如果查找到,则进行步骤5,如果没有查找到,则进行步骤4。步骤4:如果没有查找到,则新建用户会话,此时查询链路状态表中的信息,寻找到权值最低的隧道并新建这个用户会话,计算其权值并将其记录到链路状态表中。步骤5:如果是已有的用户会话,设备会实时监控所有隧道内的用户会话并计算权值,只是为了避免过于频繁的调整用户会话所在的隧道,这些权值并不会实时更新到链路状态表中,但此处会设置一个阀值,如果某条隧道的权值超过了这个阀值,则会优先发起更新链路状态表的工作,继而进行软切换。如果未超过阀值,则按照原有的用户会话进行数据的传输。步骤6:在一段时间后,设备根据这一段时间内的各个隧道状态信息计算平均权值,从而更新状态链路表,并根据权值进行软切换。步骤7:根据链路数据表项,利用netfilter的mangle链功能来对通过cpe的对不同的用户会话报文进行不同的标签标记工作。步骤8:根据netfilter规则配置的标签来进行高级策略路由的配置,将不同的报文传输利用不同的用户会话进行数据的传输。在上例中,对l2tp隧道中用户会话的进行了智能建立和调整,相对于现有技术中,l2t隧道会话建立是随机的,这样当隧道十分拥塞时,仍有可能在此隧道进行新用户会话的建立,这就导致即使别的隧道十分畅通,仍然无法有效的利用其带宽,给用户体验带来了很大的困扰。虽然有些实现方式是根据用户会话数来调整不同隧道中的用户,仍会显得十分的生硬,因为即使某个隧道中用户会话数很多,但也许这些用户会话仅仅是进行低流量的数据传输,而一个用户会话数较少的隧道中的某个用户会话正在进行大数据的传输。在本例中,通过各用户会话的权值和/或各隧道的隧道权值,进行隧道调整,因为考虑到了每个用户会话的权值以及隧道权值,从而可以使得调整结果更为有效,可以使得隧道资源得到更为有效的利用。进一步的,在控制用户会话处于可以切换隧道的方式,使得隧道资源可以更为有效地分配,从而提升了带宽利用率和用户体验。显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1