具体实施方式
如图1所示,本发明所描述分组数据服务节点间的集群方法的工作过程是这样的:
首先,PDSN选择一个要加入的集群群组并加入该群组,以后实施集群策略、交换集群信息等均将在本群组内进行;
其次,群组内各PDSN定时或不定时通告自己的集群信息,包括自己的负荷能力、当前的负荷情况、近期接入和离线的MS等等,PDSN把其他PDSN发来的这些信息记录在“集群PDSN表”和“集群MS表”中。其中,“集群PDSN表”的作用是记录集群群组内所有PDSN的负荷情况信息,从该表中可以找出负荷最轻的PDSN,该表在负载均衡时非常有用,“集群MS表”的作用是记录接入到本集群群组内的所有MS的基本情况,该表在智能选择时非常有用;
当一个MS接入到PDSN中时,PDSN首先查询集群MS表,判断该MS是从本集群群组内其他PDSN切换来的用户还是新接入的用户,如果在表中查到了该MS,那么说明该MS是从本集群群组内其他PDSN切换来的用户,否则说明该MS是新接入的用户;
对于从本集群群组内其他PDSN切换来的用户,PDSN将把该MS推荐回刚才接入的PDSN,避免MS产生不必要的切换,这种策略就叫智能选择;
对于新接入的用户,PDSN将查询集群PDSN表,从集群PDSN表中找出一个负荷最轻的PDSN,倘若自己的负荷是目前最轻的,那么PDSN将接受该MS的接入,否则将把这个新接入的MS推荐给负荷最轻的PDSN,这种策略就叫负载均衡,又称负荷分担。
PDSN对接入用户进行智能选择或负载均衡的算法如图3所示,后面我们将详细介绍该算法。集群群组中,各PDSN的集群算法相同,且各自独立运算,即使参加集群的某个PDSN发生了异常,也不会影响到其他PDSN。
当MS接入到某PDSN时,经过该PDSN的智能选择或者负载均衡运算以后,如果MS接入到其他PDSN更合适的话,那么该PDSN需要把该MS推荐给其他更合适的PDSN,推荐方法如图2所示。PDSN在把MS推荐给其他PDSN时,没有另外新增接口,而是巧妙地利用了标准的R-P接口中A11注册应答报文(A11Registration RePly,简称A11-RRP)的错误代码表达(错误代码等于136,含义是未知PDSN的IP地址),这样可以做到实施PDSN集群策略时并不需要PCF修改任何接口。
在图2描述的集群时推荐新PDSN的A11注册过程中,MS和无线网络之间建立好空中链路后,PCF将向PDSN_1发送A11注册请求(A11 RegistrationReQuest,简称A11-RRQ),A11-RRQ中已指明归属代理(Home Agent,简称HA)等于PDSN_1的IP地址,PDSN将根据前面描述的策略进行负载均衡和智能选择,如果需要把MS推荐给群组内其他PDSN,那么PDSN_1将向PCF发送一个A11-RRP,报文中包含的拒绝代码等于136,同时给出接入的最佳PDSN为PDSN_2(HA=2.1.1.1),随后PCF将根据此推荐结果重新向PDSN_2发送一个新的A11-RRQ,等PDSN_2回应了A11-RRP报文后,A11通道就建立完成了。
图3(a)给出了本发明方法中PDSN负载均衡的处理流程图;图3(b)给出本发明方法中PDSN智能选择的处理流程图。
在实际运用当中,当一个MS接入到PDSN时,PDSN首先进行的将是智能选择,在智能选择不成功时才进行负载均衡,下面将结合图3分别介绍一下负载均衡和智能选择。
在集群群组内实施负载均衡的目的在于避免有些PDSN负荷太重,而有些PDSN负荷太轻的情况发生,充分地利用网络资源,为MS提供稳定可靠地接入服务。
结合图3(a),负载均衡的工作思路如下:
1.集群PDSN定时向外界通知(组播和单播)自己的主机名称、IP地址、目前的负荷情况、自己的负荷能力等信息;
2.计算各个集群PDSN的负荷百分比,负荷百分比=目前的负荷/总的负荷能力;
3.当PCF为新接入MS新建R-P连接时,如果发现有PDSN的负荷百分比比自己的负荷百分比低10%以上,那么该PDSN就可以把MS推荐给那个负荷百分比最低的PDSN,否则就自己接纳该新接入的用户;
4.为了避免某个PDSN负荷突然过载的情况发生,集群PDSN也可以向外界不定时地主动通知自己的负荷情况;
5.如果PDSN有多个R-P网口,集群PDSN也可以在自己的几个R-P网口之间进行负载均衡,即接受PCF的建立A10/A11的请求,但同时推荐另外一个负荷较轻的R-P网口。
智能选择的目的在于避免MS在集群群组内产生不必要的切换,保证MS的通讯不被中断。例如,有PDSN1、PDSN2、PCF1、PCF2共4个网元,其中PCF1优选连接到PDSN1,PCF2优选连接到PDSN2,PDSN1和PDSN2在一个集群分组内。原先MS通过PCF1接入到PDSN1,后来MS切换到PCF2,但PCF2优先选择了PDSN2,由于PDSN1和PDSN2是同一个集群分组的,所以此时MS通过PCF2连接的最优PDSN应该是PDSN1,因为这样MS可以不用再进行PPP、移动IP(Mobile IP,简称MIP)等会话的重建,这样可以加快MS的切换速度,若MS采用的是简单IP接入方式,这样还可以保证MS的通讯不被中断。
结合图3(b),智能选择的工作思路如下:
1.所有参与集群的PDSN都记录一段时间内所有接入和离线MS的IMSI;
2.当定时器到时时就向群组内其他PDSN通知最近接入和离线MS的IMSI,如果接入或离线的MS达到一定数量时,PDSN也可以不定时地主动发送该信息;
3.各个PDSN把其他集群PDSN发送来的MS接入信息以及接入到自己的MS记录在集群MS表中;每当有新的MS接入时都要查询该集群MS表,如果查出MS刚才接入的是集群PDSN内的其他PDSN,那么PDSN将把MS重新推荐回旧的接入PDSN。
如果新接入的MS未出现在集群MS表中,说明本PDSN只需要考虑负载均衡就可以了,无需考虑智能选择。如果PDSN当前的负荷未超过了集群的门限,那么PDSN将接受PCF发出的A11-RRQ,否则将查询集群PDSN表,从中选择一个负荷最轻的PDSN,选择出来的结果可能是自己,也可能是其他集群PDSN。这里提的负载均衡不仅仅是PDSN间的负载均衡,还包括PDSN的几个R-P网口之间的负载均衡。在收到PCF的A11-RRQ报文后,PDSN发现自己的几个R-P网口的负荷不均衡时,可以接受PCF的A11-RRQ,但同时在应答报文中推荐一个负荷较轻的R-P网口,PCF会在以后传送A10报文时将向PDSN推荐的新R-P网口发送。
如果新接入的MS出现在了集群MS表中,此时就需要考虑智能选择了,因为此时应该将MS推荐回刚才接入的PDSN,这样MS无需重建先前建立的PPP连接以及MIP连接等等。如果先前接入的是PDSN自己,那么说明MS发生了PCF间、PDSN内的切换,PDSN将接受PCF发出的A11注册请求。如果先前MS接入的是其他集群PDSN,并且该PDSN工作正常,那么PDSN将根据集群IMSI表,将MS推荐回先前接入的PDSN。
当移动台接入到PDSN后,PDSN将修改集群MS表,同时把移动台信息保存起来,在合适的时候把接入的移动台的IMSI通告给其他集群PDSN。当接入到本PDSN的移动台离线时,PDSN也需要把移动台的信息保存起来,在合适的时候把近期离线的移动台的IMSI也通告给其他PDSN。
本发明通过不同的通讯端口来区分不同的集群分组,不同分组的PDSN间不相互通讯,PDSN的集群仅在本分组内进行,一个PDSN不能同时参加两个集群分组。另外,还根据参加集群的PDSN的位置的不同提供两种集群方式:紧邻集群和异地集群。
所谓紧邻集群是指所有参与集群的PDSN在一个物理子网中,一般来说,紧邻集群的PDSN通常在一个机房内。所谓异地集群是指参与集群的PDSN可以来自不同地方,它们的IP地址属于不同的物理子网,彼此之间可以有多个路由器、交换机等。
PDSN之间的集群采用UDP作为通讯的承载协议,紧邻集群采用组播方式通讯:IP=224.0.0.224、Port=10224+(nGroup—1)×10,异地集群采用单播方式通讯:IP=对端PDSN的地址、Port=10225+(nGroup—1)×10,其中nGroup为集群分组编号,范围一般为1~16。
前面描述了集群的基本算法,下面再描述一下用于交换集群信息的集群报文,以及这些集群报文的交互过程。
本发明涉及的PDSN集群报文主要有8类,如表一所示。为了保证集群报文的安全性,本发明所有参与集群的PDSN均配置一个相同的用于认证集群报文的密钥,认证算法可以采用HMAC-MD5算法。
表一 PDSN集群的报文类型及其说明
报文类型 | 报文功能说明 |
Hello报文 | 向集群群组内的其他PDSN通告本PDSN已经启动并开始加入到集群群组中。 |
通告负荷能力报文 | 向集群群组内的其他PDSN通告自己的负荷能力。 |
通告接入、离线的MS报文 | 向集群群组内的其他PDSN通告在本PDSN中接入和离线的用户信息。 |
通告在线报文 | 向集群群组内的其他PDSN通告自己在线。 |
PDSN更名报文 | 当PDSN更改自己的主机名时,通过此报文通告自己的新名称。 |
终止集群报文 | 当PDSN需要离开某集群群组时,通过此报文通知其他PDSN。 |
索要集群信息请求报文 | 主动向集群群组内的其他PDSN索要对方的所有与集群相关的信息。 |
索要集群信息应答报文 | 索要集群信息请求报文的应答报文。 |
下面将结合图4、图5、图6讲述集群报文的交互过程。
图4描述的是正常情况下PDSN刚启动时报文的发送情况。
当PDSN刚刚启动时,它还无法得到其他集群PDSN的集群信息,此时PDSN将主动向外界发布Hello报文,发布的次数一般为连续3次。其他PDSN在收到该Hello报文后随机产生一个时延(0~3秒),然后再主动地向新启动的PDSN通告自己的负荷能力以及所有已接入MS的信息,通讯方式一般采用单播的方式。PDSN在回答Hello报文时,之所以有一个时延,主要是为了避免出现所有集群PDSN同时回应Hello报文的情况发生。
随后,这个刚启动的PDSN将启动3个定时器,分别是通告PDSN在线报文定时器(t1)、通告PDSN负荷能力报文的定时器(t2)和通告近期接入和离线的MS报文定时器(t3)。集群群组内的所有PDSN均需定时发送自己在线的报文,各PDSN可以根据此报文判断哪些PDSN工作正常,哪些PDSN已经失去了联系,如果在一段时间内(一般为30秒)未收到某集群PDSN的在线报文就可以判定该集群PDSN已经工作不正常了,以后所有的智能选择以及负载均衡将把这个工作异常的PDSN排除在外。如果在更长时间内(一般为20分钟)该异常PDSN还未恢复正常工作,那么该异常PDSN的所有集群信息将被删除,其中包括在集群PDSN表中的记录和集群MS表中接入到该PDSN的所有记录。PDSN定时地向外通告自己目前的负荷情况,在执行负载均衡时,优先选择的将是集群群组内负荷最轻的PDSN,如果某个PDSN发现自己的负荷增长太快,它也可以主动地向外发布自己的负荷情况报文,而不一定要等到定时器到时时才发布。每当有MS接入或者离线时,PDSN均会把这些MS的IMSI记录下来,等通告近期接入和离线的MS报文定时器到时时再把这些IMSI通告给其他集群PDSN。
前面描述了正常情况下的报文交互顺序,在实际运用过程当中可能还会出现一些异常情况,下面我们再讨论一下在异常情况下如何实施PDSN集群报文的交互。
图5描述的是一种异常情况,即由于某种原因(例如网络通讯异常)PDSN_1、PDSN_2启动一段时间后,均未收到对方的Hello等报文,也就是说PDSN_1和PDSN_2均不知对方的存在,尽管它们工作在同一个集群分组中。一段时间后PDSN_1收到了PDSN_2的一个任意集群报文,PDSN_1在集群PDSN表中未找到PDSN_2的相关信息,那么PDSN_1将主动向PDSN_2发送一条索要集群信息请求报文,PDSN_2在收到此报文后将给PDSN_1先发送一条索要集群信息应答报文,随后PDSN_2还会发送通告负荷能力报文和通告所有已接入MS的报文,从此以后,PDSN_1和PDSN_2的集群就恢复正常了。
图6描述的是另一种异常情况,即最初PDSN_1、PDSN_2均加入了一个集群群组,并且它们之间均建立了正常的集群通讯,后来PDSN_2出现异常后重启,并向外发布一条Hello报文,PDSN_1在收到Hello报文后,将清除PDSN_2的所有集群信息,包括集群MS表中所有接入到PDSN_2中所有的MS信息,然后再把PDSN_2当成新启动的PDSN,并向PDSN_2发送通告负荷能力报文和通告MS接入信息报文。