一种VRRP负载均衡的方法和装置与流程

文档序号:14124556阅读:407来源:国知局
一种VRRP负载均衡的方法和装置与流程
本发明涉及一种vrrp负载均衡的方法和装置。
背景技术
:vrrp设计采用主备模式,以保证当主路由设备发生故障时,备份路由设备可以在不影响内外数据通信的前提下进行功能切换,不需要再修改内部网络的参数,vrrp组内多个路由设备都映射为一个虚拟的路由设备;vrrp保证同时只有一个路由设备在代表虚拟路由设备进行数据包的发送,而主机则是把数据包发向该虚拟路由设备,转发数据包的路由设备被选择成为主路由设备称为主路由器,其他设备则成为主路由设备的备份设备,称为备份路由器;如果主路由器在某个时候由于某种原因而无法工作,处备份路由器将被选择来代替原来的主路由设备;vrrp使得局域网主机的网关有了备份,且网关间的切换对用户而言是透明不感知的。当主路由器正常工作时,会每隔一段时间发送一个vrrp通告报文维持vrrp组的状态,如果备份路由器在一定时间内没有收到来自主路由器的通告报文,则备份路由器会变成主路由器,发出vrrp通告报文,根据报文中的优先权进行新主路由器的选举;由新的主路由器提供实际的网关服务;在现有的vrrp协议中,vrrp路由器有三种状态:初始化状态、主路由器状态和备份路由器状态,当vrrp路由器的接口down时,vrrp路由器处于初始化状态,当接口up,路由器处于主路由器状态,发出vrrp通告报文,竞选主路由器和备份路由器;优先权高的为主路由器,定期发出vrrp通告报文维持vrrp组的状态,转发用户数据,响应主机发出的对虚拟路由器网关ip地址的arp请求;备份路由器不转发数据,不响应对vrrp路由器虚拟网关ip地址的arp请求。现有的vrrp协议工作方式存在如下缺陷:一个vrrp备份组中只有一个路由器处于主路由器状态且转发数据,备份路由器只处于备份状态,这样备份路由器都处于空闲状态,不参与转发,存在负载均衡问题。为解决上负载均衡的问题,目前采用的技术方案为:在连接局域网的路由设备上配置多个备份组,局域网中的主机分别以各备份组的虚拟ip作为网关,路由设备互相作为主路由设备和备份路由设备,不同主机发往其它网络的数据包将由该主机网关对应的备份组的主路由设备进行路由转发,通过这种设计实现不同路由设备的路由冗余,并同时分担了来自局域网的流量即实现了负载平衡,该技术方案存在的一个显著问题是无法动态实现负载均衡的问题,在某个网段中存在不同ip地址的网关,需要用户手动填写网关的ip地址信息,同时不同主机之间的流量差距较大,不同vrrp路由器在性能上也存在差异也会导致负载均衡的效果不理想。技术实现要素:本发明的目的在于克服现有技术之不足,提供一种vrrp负载均衡的方法和装置。本发明解决其技术问题所采用的第一种技术方案是:一种vrrp负载均衡的方法,包括一组vrrp路由器;其特征在于:其包括如下步骤:a.通过主路由器选举算法得出各个vrrp路由器的优先权,所述主路由器选举算法应用的公式为:,其中,n为路由器cpu的核数,cpui表示第i个cpu的频率,单位为mhz,m为路由器内存条个数,memoryj表示第j个内存的大小,单位为gbyte,bandwidth为出口带宽,单位为gbps,α、β和γ分别为cpu、内存和出口带宽的权重比例,通过比较各个vrrp路由器的优先权,值大的为主路由器,如果优先权相同,则根据ip地址大小,值大的为主路由器;b.选出的主路由器初始化并且定时更新vrrp负载均衡表和用户分配表,所述vrrp负载均衡表包括vrrp路由器虚拟组的组号、接口mac地址、优先权、是否为主路由器、用户数和剩余出口带宽;所述用户分配表包括用户mac地址、转发用户mac的vrrp路由器接口的mac地址、用户存在时间和用户是否删除;c.vrrp路由器初始化并且定时更新在线用户信息和更新本路由器剩余出口带宽,通过信息同步报文定期向主路由器同步在线用户信息和同步本路由器剩余出口带宽,如果vrrp路由器是主路由器,则直接更新vrrp负载均衡表和用户分配表;主路由器收到用户arp广播请求报文后根据负载均衡算法选择转发该用户数据的vrrp路由器,同时向该用户发送包含转发用户数据的vrrp路由器接口实mac地址的特殊arp应答,并更新vrrp负载均衡表和用户分配表;d.主路由器定期发送vrrp通告报文,非主路由器的vrrp路由器检测是否收到vrrp通告报文,如果是则定期检测本路由器在线的用户数和剩余出口带宽,通过信息同步报文,将在线用户数和剩余出口带宽发送给主路由器,否则变更自己的状态为主路由器,往外发送vrrp通告报文,进入主路由器选举。在另一较佳实施例中,所述负载均衡算法包括:用户发出arp广播请求报文,请求网关的mac地址,vrrp路由器收到同时更新用户arp表,用户arp表包括用户mac和用户ip,主路由器根据arp请求报文中的用户mac,先检查用户分配表中的用户mac,如果存在,则更新用户分配表中的用户存在时间,重置值为0,如果不存在,则检查vrrp负载均衡表;通过如下规则选择转发该用户的vrrp路由器:检查剩余出口带宽,选择剩余出口带宽最大值的,如果剩余出口带宽相同,选择用户数最少的,如果用户数相同,选择优先权最大的,如果优先权相同,选择vrrp路由器接口mac地址最小的。在另一较佳实施例中,所述vrrp路由器更新在线用户信息的方法包括:转发用户数据的vrrp路由器检查用户的arp表,如果发现用户arp老化时间小于1分钟,检查用户的流量计数:统计报文特征符合源ip地址为用户ip地址,源mac地址为用户mac地址的ip报文计数是否增加,如果有增加,则说明用户在线,直接更新用户arp表、用户更新表,所述用户更新表包括:用户mac、用户ip和是否删除用户,设置用户更新表中对应该用户的ip和mac的是否删除用户为0,说明用户在线;如果没有,则对这些用户ip发送免费单播arp报文,如果vrrp路由器有收到用户ip的arp应答,则设置用户更新表中对应该用户的ip和mac的是否删除用户为0,说明用户在线,如果vrrp路由器没有收到用户ip的arp应答,则设置用户更新表中对应该用户的ip和mac的是否删除用户为1,说明用户不在线,同时在主路由器的用户分配表中删除。在另一较佳实施例中,所述vrrp路由器更新本路由器剩余出口带宽的方法包括:每隔一个固定周期,vrrp路由器统计在线的用户arp数和剩余出口带宽,更新带宽更新表,所述带宽更新表包括在线用户数和剩余出口带宽。在另一较佳实施例中,所述信息同步报文包括:标准ip报文格式中ip协议号[134,254]为未分配,取[134,254]其中任意整数作为vrrp路由器间同步信息的协议号标志,源地址为vrrp路由器所在vrrp组的接口地址,目的地址为vrrp组主路由器的接口地址,数据字段的类型取值为0表示发送用户在线信息同步报文,此时长度取值表示后面有几个ip和mac组合,一个ip和mac组合共10个字节,包括一个ip4个字节,一个mac6个字节,类型取值为1表示发送剩余出口带宽,此时长度取值用2个字节的数据来表示带宽的大小,范围在[0,65535]表示最大带宽是65535m。在另一较佳实施例中,所述所述特殊arp应答包括:封装arp报文的数据帧中,目的mac为用户mac,源mac地址为vrrp路由器接口地址,arp报文的协议字段中,发送端mac地址为vrrp路由器接口地址,发送端ip为vrrp组的虚拟ip,目的mac地址为用户mac地址,目的ip为用户ip。在另一较佳实施例中,所述免费单播arp报文包括:封装arp报文的数据帧中,目的mac为用户mac,源mac地址为vrrp路由器接口地址,arp报文的协议字段中,发送端mac地址为vrrp路由器接口地址,发送端ip为vrrp组的虚拟ip,目的mac地址全为0,目的ip为用户ip。本发明解决其技术问题所采用的第二种技术方案是:一种实现vrrp负载均衡的装置,包括一组vrrp路由器;该组路由器应用上述任一项的一种vrrp负载均衡的方法。与现有技术相比,本发明的有益效果是:综合vrrp路由器的cpu、内存和出口带宽的性能,提出vrrp优先权的产生算法,根据优先权、转发的用户数、剩余出口带宽等综合指标以动态调整负责转发用户数据的路由器;让用户和流量均衡的分布在vrrp路由器上,提高了部署效率和灵活性;解决了现有技术中处于备份路由器状态的vrrp路由器不参与负载均衡的问题,或者参与负载均衡,但是无法实现动态负载调整问题;主路由器在向用户同步负责转发的vrrp路由器网关信息时,采用含特殊用户和vrrp路由器特征的特殊arp报文,能使用户独立更新网关信息的同时不影响其他用户的网关信息,互不干扰;vrrp路由器采用新设计的信息同步报文向主路由器定期同步在线用户信息和剩余出口带宽信息,对用户无感知,提高了整体方案的可用性和用户体验。以下结合附图及实施例对本发明作进一步详细说明;但本发明的一种vrrp负载均衡的方法和装置不局限于实施例。附图说明图1是本发明的技术方案流程图;图2是本发明的vrrp路由器更新在线用户信息的流程图;图3是本发明一具体实施例示意图。具体实施方式以下参见图3的具体实施例结合图1和图2的流程来说明本发明的一种vrrp负载均衡的方法,其包括r1,r2,r3三台路由器。r1,r2,r3三台路由器分别在端口1开启改进后的vrrp协议,r4路由器是r1,r2,r3的出口路由器,与r1,r2,r3互联端口的带宽分别为1g,1g和100m,r1,r2,r3的配置参数分别如下:r1:ip=192.168.1.1/24,mac=0000.0000.0001,加入vrrp组1,vrrp组1的虚拟ip地址=192.168.1.254/24。r1的cpu参数:主频3.3ghz,内核数:10,内存参数:单根容量16gb,条数:4。r2:ip=192.168.1.2/24,mac=0000.0000.0002,加入vrrp组1,vrrp组1的虚拟ip地址=192.168.1.254/24。r2的cpu参数:主频3.0ghz,内核数:8,内存参数:单根容量16gb,条数:2。r3:ip=192.168.1.3/24,mac=0000.0000.0003,加入vrrp组1,vrrp组1的虚拟ip地址=192.168.1.254/24。r3的cpu参数:主频3.4ghz,内核数:4,内存参数:单根容量16gb,条数:1。pc1:ip=192.168.1.10/24,mac=0000.0000.0010,网关ip地址=192.168.1.254/24。pc2:ip=192.168.1.11/24,mac=0000.0000.000011,网关ip地址=192.168.1.254/24。通过主路由器选举算法得出各个vrrp路由器的优先权,所述主路由器选举算法应用的公式为:,其中,n为路由器cpu的核数,cpui表示第i个cpu的频率,单位为mhz,m为路由器内存条个数,memoryj表示第j个内存的大小,单位为gbyte,bandwidth为出口带宽,单位为gbps,α、β和γ分别为cpu、内存和出口带宽的权重比例,通过比较各个vrrp路由器的优先权,值大的为主路由器,如果优先权相同,则根据ip地址大小,值大的为主路由器。选出的主路由器r1初始化并且定时更新vrrp负载均衡表和用户分配表,vrrp负载均衡表包括vrrp路由器虚拟组的组号、接口mac地址vrrp_router_mac、优先权、是否为主路由器、用户数和剩余出口带宽;所述用户分配表包括用户mac地址、转发用户mac的vrrp路由器接口的mac地址vrrp_router_mac、用户存在时间timer和用户是否删除delete,1表示删除用户,0表示不删除用户,由于还没有用户,所以用户分配表为空。表1vrrp负载均衡表表2用户分配表用户macvrrp_router_mactimerdelete0000vrrp路由器初始化并且定时更新在线用户信息和更新本路由器剩余出口带窝,如果vrrp路由器是主路由器,则直接更新vrrp负载均衡表和用户分配表;用户更新表包括:用户mac、用户ip和是否删除用户,1表示删除用户,0表示不删除用户,vrrp路由器每隔一个固定周期t,vrrp路由器统计在线的用户arp数和剩余出口带宽,更新带宽更新表,带宽更新表包括在线用户数和剩余出口带宽,vrrp路由器r1、r2和r3初始化用户更新表和带宽更新表,由于还未有用户,因此用户更新表为空。表3用户更新表vrrp路由器用户mac用户ip是否删除r1000r2000r3000表4带宽更新表vrrp路由器在线用户数剩余出口带宽r101000mr201000mr30100mvrrp路由器通过信息同步报文定期向主路由器同步在线用户信息和同步本路由器剩余出口带宽,信息同步报文包括:标准ip报文格式中ip协议号[134,254]为未分配,取[134,254]其中任意整数作为vrrp路由器间同步信息的协议号标志,源地址为vrrp路由器所在vrrp组的接口地址,目的地址为vrrp组主路由器的接口地址,数据字段的类型取值为0表示发送用户在线信息同步报文,此时长度取值表示后面有几个ip和mac组合,一个ip和mac组合共10个字节,包括一个ip4个字节,一个mac6个字节,类型取值为1表示发送剩余出口带宽,此时长度取值用2个字节的数据来表示带宽的大小,范围在[0,65535]表示最大带宽是65535m。主路由器r1定期发送vrrp通告报文,非主路由器的vrrp路由器r2和r3检测是否收到vrrp通告报文,如果是则定期检测本路由器在线的用户数和剩余出口带宽,通过信息同步报文,将在线用户数和剩余出口带宽发送给主路由器r1,如果否则变更自己的状态为主路由器,往外发送vrrp通告报文,进入主路由器选举。r2和r3通过信息同步报文定期向主路由器r1同步在线用户信息和同步本路由器剩余出口带宽,主路由器r3收到报文后进行更新。由于还未有用户,用户信息更新报文中用户数据字段为空,vrrp路由器r2和r3发给主路由器r1的信息同步报文中:r2发送报文的字段值如下:(目的mac,源mac)=(0000.0000.0001,0000.0000.0002)(目的ip,源ip)=(192.168.1.1,192.168.1.2)(类型,长度,ip,mac)=(0,0,null)(类型,长度,大小)=(1,2,1000),表示剩余出口带宽是1000m。r3发送报文的字段值如下:(目的mac,源mac)=(0000.0000.0001,0000.0000.0003)(目的ip,源ip)=(192.168.1.1,192.168.1.3)(类型,长度,ip,mac)=(0,0,null)。(类型,长度,大小)=(1,2,100),表示剩余出口带宽是100mpc1上线,发出arp广播请求报文,请求网关的mac地址,vrrp路由器都会收到,同时更新用户arp表。表5用户arp表用户mac用户ip0000.0000.0010192.168.1.10主路由器r1收到用户arp广播请求报文后根据负载均衡算法,选择负责转发该用户的vrrp路由器。(1)选择剩余出口带宽最大值的,r1,r2的带宽都是1000m,结果为r1和r2。(2)选择用户数最少的,因为r1,r2的在线用户都为0,结果为r1和r2。(3)选择优先权最大的,因为r1的优先权大于r2的优先权,结果为r1。选择r1为转发pc1的vrrp路由器,主路由器向pc1发送包含转发用户数据的vrrp路由器接口实mac地址的特殊arp应答,特殊arp应答报文特征:(目的mac,源mac)=(0000.0000.0010,0000.0000.0001)(send_mac,send_ip,target_mac,target_ip)=(0000.0000.0001,192.168.1.254,0000.0000.0010,192.168.1.10)pc1收到上述特征的特殊arp应答报文后,更新自己arp表中网关的信息为:(网关mac,网关ip)=(0000.0000.0001,192.168.1.254),将数据发给r1,由r1进行转发。主路由器更新用户分配表和vrrp负载均衡表。表6vrrp负载均衡表表7用户分配表用户macvrrp_router_mactimerdelete0000.0000.00100000.0000.000100经过5分钟,转发用户数据的vrrp路由器r1检查用户的arp表,发现用户arp老化时间小于1分钟,检查用户的流量计数:统计报文特征符合源ip地址为用户ip地址,源mac地址为用户mac地址的ip报文计数增加了,说明用户在线,直接更新用户arp表、用户更新表,每隔一个固定周期t,vrrp路由器统计在线的用户arp数和剩余出口带宽,假设pc1当前发送数据量为10mbps,r1更新用户更新表和带宽更新表,由于用户在主路由器上,不用发送报文,r1直接更新本机对应的表项即可。表8vrrp负载均衡表pc2上线,发出arp广播请求报文,请求网关的mac地址。vrrp路由器都会收到,同时更新用户arp表。表9arp表用户mac用户ip0000.0000.0010192.168.1.100000.0000.0011192.168.1.11主路由器r1收到用户arp广播请求报文后根据负载均衡算法,选择负责转发该用户的vrrp路由器。选择剩余出口带宽最大值的,r1、r2和r3的带宽分别是990m、1000m和100m,结果为r2。选择r2为转发pc2的vrrp路由器,主路由器r1向pc2发送包含转发用户数据的vrrp路由器接口实mac地址的特殊arp应答,特殊arp应答报文特征:(目的mac,源mac)=(0000.0000.0011,0000.0000.0001)(send_mac,send_ip,target_mac,target_ip)=(0000.0000.0002,192.168.1.254,0000.0000.0011,192.168.1.11)pc2收到上述特征的特殊arp应答报文后,更新自己arp表中网关的信息为:(网关mac,网关ip)=(0000.0000.0002,192.168.1.254)主路由器r1更新用户分配表和vrrp负载均衡表。表10vrrp负载均衡表表11用户分配表用户macvrrp_router_mactimerdelete0000.0000.00100000.0000.00015min00000.0000.00110000.0000.000200vrrp路由器更新用户更新表和带宽更新表表12用户更新表vrrp路由器用户mac用户ip是否删除r10000.0000.0010192.168.1.100r20000.0000.0011192.168.1.110r3000表13带宽更新表vrrp路由器在线用户数剩余出口带宽r11990mr211000mr30100mvrrp路由器通过信息同步报文定期向主路由器同步在线用户信息和同步本路由器剩余出口带宽,r2和r3通过信息同步报文定期向主路由器r1同步在线用户信息和同步本路由器剩余出口带宽,主路由器r1收到报文后进行更新。有用户pc1和pc2,vrrp路由器r2和r3发给主路由器r1的信息同步报文中,假设用户pc1和pc2此时统计的报文发送速率为8mbps和12mbps。r2发送报文的字段值如下:(目的mac,源mac)=(0000.0000.0001,0000.0000.0002)(目的ip,源ip)=(192.168.1.1,192.168.1.2)(类型,长度,ip,mac)=(0,1,192.168.1.10,0000.0000.0010)(类型,长度,大小)=(1,2,988),表示剩余出口带宽是988m。r3发送报文的字段值如下:(目的mac,源mac)=(0000.0000.0001,0000.0000.0003)(目的ip,源ip)=(192.168.1.1,192.168.1.3)(类型,长度,ip,mac)=(0,0,null)(类型,长度,大小)=(1,2,100),表示剩余出口带宽是100m。主路由器r1更新用户分配表和vrrp负载均衡表。表14vrrp负债均衡表表15用户分配表用户macvrrp_router_mactimerdelete0000.0000.00100000.0000.000110min00000.0000.00110000.0000.00025min0用户pc2下线过4分钟,r2路由器检查在线用户表中arp存活时间小于1分钟且无流量的用户,检测结果为pc2,r2发送免费单播arp报文探测pc2是否在线,免费单播arp报文特征如下:封装arp报文的数据帧中,(dest_mac,source_mac)=(0000.0000.0011,0000.0000.0002);arp报文的协议字段中,(sender_mac,sender_ip,target_mac,target_ip)=(0000.0000.0002,192.168.1.254,全0,192.168.1.11)由于pc2已经下线,没有设备对此arp报文进行应答,r2检测3次后,确定pc2已经下线。r2路由器更新自己的用户更新表和带宽更新表。表16用户更新表vrrp路由器用户mac用户ip是否删除r10000.0000.0010192.168.1.100r20000.0000.0011192.168.1.111r3000表17带宽更新表vrrp路由器在线用户数剩余出口带宽r11990mr201000mr30100mvrrp路由器r2和r3通过信息同步报文定期向主路由器r1同步在线用户信息和同步本路由器剩余出口带宽,主路由器r1收到报文后进行更新。用户pc1在线和pc2下线,vrrp路由器r2和r3发给主路由器的信息同步报文中,假设用户pc1此时统计的报文发送速率为15mbps。r2发送报文的字段值如下:(目的mac,源mac)=(0000.0000.0001,0000.0000.0002)(目的ip,源ip)=(192.168.1.1,192.168.1.2)(类型,长度,ip,mac)=(0,0,null)(类型,长度,大小)=(1,2,1000),表示剩余出口带宽是1000m。r3发送报文的字段值如下:(目的mac,源mac)=(0000.0000.0001,0000.0000.0003)(目的ip,源ip)=(192.168.1.1,192.168.1.3)(类型,长度,ip,mac)=(0,0,null)(类型,长度,大小)=(1,2,100),表示剩余出口带宽是100m。主路由器r1更新用户分配表和vrrp负载均衡表。表18vrrp负债均衡表表19用户分配表上述实施例仅用来进一步说明本发明的一种vrrp负载均衡的方法和装置,但本发明并不局限于实施例,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均落入本发明技术方案的保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1