虚拟路由设备标识冲突检测方法、装置、设备及存储介质与流程

文档序号:32482360发布日期:2022-12-09 23:26阅读:45来源:国知局
虚拟路由设备标识冲突检测方法、装置、设备及存储介质与流程

1.本发明涉及通信及云计算技术领域,尤其涉及一种虚拟路由设备标识冲突检测方法、装置、设备及存储介质。


背景技术:

2.同一网段内的所有主机通常都配置有一个相同的默认网关,主机发往其它网段的报文通过默认网关进行转发,从而实现主机与外部网络的通信。当默认网关发生故障时,网段内所有主机将无法与外部网络通信。
3.默认网关为用户的配置操作提供了方便,但是对网关设备提出了很高的稳定性要求,增加网关是提高链路可靠性的常见方法,此时如何在多个出口之间进行选路就成为需要解决的问题。
4.虚拟路由器冗余协议(virtual router redundancy protocol,vrrp)它通过把几台路由设备联合组成一台虚拟的路由设备,并为该虚拟路由设备指定虚拟ip地址,通过一定的机制来保证当主路由设备出现故障时,可以及时将业务切换到备路由设备上,从而保障业务的高可用性。vrrp通过选举机制决定哪台路由设备承担转发任务,局域网内的主机仅需要知道这台虚拟路由设备的虚拟ip地址,并将其设置为网关的ip地址即可,局域网内的主机即可通过这台虚拟路由设备与外部网络进行通信。
5.vrrp在提高可靠性的同时,简化了主机的配置。在具有组播或广播能力的局域网(如以太网)中,借助vrrp能在某台路由器出现故障时仍然提供高可靠的链路,有效避免单一链路发生故障后网络中断的问题。
6.vrrp协议的正常工作依赖于vrrp报文的正确收发。vrrp只定义了一种报文格式,即通告(advertisement)报文,它被封装在ip报文中,ip报文头部的协议号字段值通常为112,报文的目的ip地址通常是组播地址224.0.0.18。
7.vrrp报文格式中包括有虚拟路由设备标识(vritual router identification,vrid)字段,该字段用于在网络中唯一标识一个虚拟路由设备,取值范围是1~255,属于同一个vrrp组的路由设备需使用相同的vrid。
8.由于目前vrid都是用户自己配置的,多个使用vrrp协议的软件很容易出现vrid配置冲突的问题。比如keepalive软件就使用了vrrp,而实际开发中,一个软件系统中可能会用到openstack、ceph等多个软件,而openstack、ceph等这些软件又都使用了keepalive软件,由于这些软件彼此不感知对方的存在,所以很容易出现vrid配置冲突的问题,一旦出现vrid冲突,就会导致vrrp选举失败。比如a和b是一个集群,c和d是一个集群,正常应该在a和b之间选举出一个主路由器master,c和d之间选举出一个master,一共选举出两个master。如果两个集群都配置vrid为1,vrrp协议会误以为a、b、c、d是一个集群,选举出一个master,而实际上这是两个集群,彼此没有关联,如此将会导致有一个集群工作不正常。


技术实现要素:

9.有鉴于此,本发明提供一种虚拟路由设备标识冲突检测方法、装置、设备及存储介质,用于解决vrid冲突的技术问题。
10.基于本发明实施例的一方面,本发明提供了一种虚拟路由设备标识冲突检测方法,该方法应用于使用虚拟路由冗余协议vrrp的设备(设备a),该方法包括:
11.所述设备向网络发送虚拟路由设备标识vrid检查报文,所述vrid检查报文中携带所述设备的虚拟路由设备标识vrid和集群标识;
12.所述设备根据是否在预设应答时间范围内接收到vrid应答报文来判断是否存在vrid冲突;
13.若所述设备在预设应答时间范围内接收到其它设备发送的vrid应答报文,则判定网络中存在vrid冲突;
14.若在预设应答时间范围内未接收到其它设备发送的vrid应答报文,则判定网络中不存在vrid冲突。
15.进一步地,在接收到所述vrid应答报文后,该方法还包括:
16.通过发送报文探测未被占用的vrid;
17.在探测到未被占用的vrid后,使用未被占用的vrid修改所述设备的vrid并更新本地的vrid配置。
18.进一步地,所述通过发送报文探测未被占用的vrid的方法为:
19.按预设规则生成新vrid;
20.所述设备在网络中发送携带所述新vrid和所述设备的集群标识的vrid检查报文;
21.若在预设应答时间范围内未接收到其它设备发送的vrid应答报文,则判定所述新vrid未被占用。
22.进一步地,所述方法还包括:
23.所述设备在网络中发送携带所述未被占用的vrid和所述设备的集群标识的vrid修改报文,以使与所述设备位于同一集群中的其它设备基于vrid修改报文修改其vrid为所述未被占用的vrid。
24.进一步地,基于vrrp通告报文格式实现所述vrid检查报文、vrid应答报文和vrid修改报文。
25.基于本发明实施例的另一方面,本发明还提供一种虚拟路由设备标识冲突检测方法,所述方法应用于使用虚拟路由冗余协议vrrp的设备(设备c),该方法包括:
26.所述设备接收虚拟路由设备标识vrid检查报文,所述vrid检查报文中携带虚拟路由设备标识vrid和集群标识;
27.所述设备在判定所述vrid检查报文中的集群标识与自身的集群标识不同且所述vrid检查报文中的vrid与自身的vrid相同时,向发送所述vrid检查报文的设备发送vrid应答报文,所述vrid应答报文中携带所述设备自身的vrid和集群标识。
28.进一步地,所述方法还包括:
29.所述设备接收vrid修改报文,所述vrid修改报文中携带的集群标识与所述设备自身的集群标识相同时,所述设备将自身的vrid标识修改为所述vrid修改报文中携带的vrid。
30.基于本发明实施例的一方面,本发明提供了一种虚拟路由设备标识冲突检测装置,所述装置应用于使用虚拟路由冗余协议vrrp的设备(设备a),该装置可以软件、硬件或软硬结合的方式实现。当以软件模块方式实现时,当该软件模块的程序代码被加载到设备的存储介质中,由处理器读取存储介质中的程序代码进行执行,从而实现该装置中各组成模块的功能,该装置包括:
31.报文探测模块,用于向网络发送虚拟路由设备标识vrid检查报文,所述vrid检查报文中携带所述设备的虚拟路由设备标识vrid和集群标识;
32.冲突判断模块,用于根据是否在预设应答时间范围内接收到vrid应答报文来判断是否存在vrid冲突;若在预设应答时间范围内接收到其它设备发送的vrid应答报文,则判定网络中存在vrid冲突;若在预设应答时间范围内未接收到其它设备发送的vrid应答报文,则判定网络中不存在vrid冲突。
33.进一步地,所述装置还包括:vrid生成模块和vrid更新模块;
34.vrid生成模块,用于在接收到所述vrid应答报文后,按预设规则生成新vrid;
35.所述报文探测模块,还用于在网络中发送携带所述新vrid和所述设备的集群标识的vrid检查报文;
36.所述冲突判断模块,还用于根据是否在预设应答时间范围内接收到其它设备发送的携带所述新vrid的vrid应答报文来判断所述新vrid是否被占用;
37.vrid更新模块,用于在探测到未被占用的vrid后,使用未被占用的vrid修改所述设备的vrid并更新本地的vrid配置。
38.进一步地,所述vrid更新模块还用于在网络中发送携带所述未被占用的vrid和所述设备的集群标识的vrid修改报文,以使与所述设备位于同一集群中的其它设备基于vrid修改报文修改其vrid为所述未被占用的vrid。
39.基于本发明实施例的一方面,本发明还提供一种虚拟路由设备标识冲突检测装置,所述装置应用于使用虚拟路由冗余协议vrrp的设备(设备c),该装置可以软件、硬件或软硬结合的方式实现。当以软件模块方式实现时,当该软件模块的程序代码被加载到设备的存储介质中,由处理器读取存储介质中的程序代码进行执行,从而实现该装置中各组成模块的功能,该装置包括:
40.vrid应答模块,用于接收虚拟路由设备标识vrid检查报文,根据vrid检查报文中携带的虚拟路由设备标识vrid和集群标识判断是否存在vrid冲突;在判定所述vrid检查报文中的集群标识与自身的集群标识不同且所述vrid检查报文中的vrid与自身的vrid相同时,向发送所述vrid检查报文的设备发送vrid应答报文,所述vrid应答报文中携带所述设备自身的vrid和集群标识,以通知发送所述vrid检查报文的设备存在vrid冲突。
41.进一步地,所述装置还包括:
42.vrid修改模块,用于接收vrid修改报文,判断所述vrid修改报文中携带的集群标识是否与所述设备自身的集群标识相同,在判定相同时将所述设备自身的vrid标识修改为所述vrid修改报文中携带的vrid。
43.本发明对vrrp协议进行了扩展,增加用于发现和解决vrid冲突的vrrp报文类型,通过所添加的报文自动检测网络中是否存在vrid冲突,件检测到冲突后可自动探测不产生冲突的vrid并进行vrid的修改,从而避免vrid冲突,提高了虚拟设备的智能性和高可用性。
附图说明
44.为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其他的附图。
45.图1为本发明一实施例提供的vrrp通告报文的结构示意图;
46.图2为本发明一实施例中检测vrid冲突的步骤流程;
47.图3为本发明一实施例中vrrp通告报文的字段内容呈现示例;
48.图4为本发明一实施例中探测未被占用的vrid和修改vrid的步骤流程示意图;
49.图5为本发明提供的实现本发明提供的虚拟路由设备标识冲突检测方法的电子设备结构示意图。
具体实施方式
50.在本发明实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明实施例。本发明实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本发明中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
51.应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
52.在复杂的分布式集群网络中,可能在同一网络中会有多组设备或软件同时使用vrrp协议,例如在一个网络中部署有使用vrrp的虚拟路由器以及使用keepalive组件实现高可用的虚拟服务器,而keepalive也使用了vrrp协议。如果用户手动配置这些都使用vrrp协议的多组设备,将它们的vrid错误地都配置一样的,则会产生vrid冲突导致网络或业务故障。
53.为了解决多组使用vrrp协议的设备组可能产生vrid冲突的技术问题,本发明提供了一种虚拟路由设备标识冲突检测方法,通过该方法实现vrid冲突的自动检测以及在发现vrid冲突时自动进行vrid修改,从而避免vrid冲突。本发明的核心思想是:对vrrp协议进行改进,增加用于发现和解决vrid冲突的vrrp报文类型,通过所添加的报文自动检测网络中是否存在vrid冲突,件检测到冲突后可自动探测不产生冲突的vrid并进行vrid的修改,从而避免vrid冲突,提高了虚拟设备的智能性和高可用性。
54.图1为本发明一实施例提供的vrrp通告报文的结构示意图。已有的vrrp通告报文的报文类型type字段为1,本发明在已有vrrp通告报文格式的基础上,新增用于vrid冲突检测的报文类型。通告报文各字段的含义说明如下:
55.版本/version字段:用于标识vrrp协议版本。
56.类型/type字段:用于定义vrrp通告报文的类型。
57.虚拟路由设备标识/vrid字段:用于在网络中唯一的标识由多个路由设备组成的
虚拟路由设备,取值范围是1~255,属于同一个vrrp组的路由设备需使用相同的vrid。
58.优先级/priority字段:用于标识路由设备的优先级,取值范围是0~255,该值越大,则vrrp优先级越高,路由设备也就越有可能成为master。
59.ip地址个数/count ip address:vrrp组中虚拟ip地址的个数。这个字段的值指示了该报文后续的“ip地址”字段的个数。
60.认证类型/authentication type字段:用于指示vrrp报文的认证类型,有以下三种情况:
61.当该字段为0时,表示无认证(non authentication);
62.当该字段为1时,表示明文认证方式(simple text password);
63.当该字段为2时,表示md5认证方式(ip authentication header)。
64.通告间隔/advertisement interval:用于指示vrrp报文的发送时间间隔(单位为秒),缺省情况下,vrrp的报文发送时间间隔为1s。
65.校验和/checksum字段:用于存放报文校验。
66.ip地址/ip address字段:用于存放vrrp虚拟ip地址。
67.认证数据/authentication data字段:用于存放vrrp认证数据,当vrrp明文认证或md5认证被激活时,该字段则填充相应的数据。
68.本发明实施例基于vrrp通告报文的基本格式,新增用于检测vrid冲突、vrid冲突响应、vrid修改三种报文类型,并基于新增的报文类型实现vrid冲突检测以及在发现冲突时自动进行vrid修改的步骤流程。
69.图2为本发明一实施例中检测vrid冲突的步骤流程。在该实施例中所示例的网络中包括两个虚拟路由设备,分别为位于集群标识为1111的集群和集群标识为2222的集群中。位于1111集群的虚拟路由设备1由设备a和设备b组成,位于2222集群的虚拟路由设备2由设备c和设备d组成。虚拟路由设备1和虚拟路由设备2使用了默认的相同的vrid或被管理员错误地配置为相同的vrid。假设虚拟路由设备2先于虚拟路由设备1启动,虚拟路由设备1中的主路由设备为设备a。vrid冲突检测的步骤包括:
70.步骤101.虚拟路由设备1中的主路由设备a向网络发送vrid检查报文,其中vrid检查报文中携带设备a的虚拟路由设备标识vrid和集群标识;
71.虚拟路由设备1中的主路由设备a上线后,可主动向所在网络以广播或组播方式发送vrid检查报文,vrid检查报文为本发明新增的用于检测网络中是否存在vrid冲突的报文类型。vrid检查报文基于vrrp通告报文的格式实现,通过指定新的报文类型字段值来标识。vrrp通告(advertisement)报文通常被封装在ip报文中以组播方式发送,ip报文头部的协议号字段值通常为112,报文的目的ip地址通常采用组播地址224.0.0.18。
72.图3为本发明一实施例中vrrp通告报文的字段内容呈现示例,vrrp通告报文中携带了认证字符串/authentication string字段(可复用认证数据/authentication data字段或另外新增),值为“1111”,通过认证字符串来标识发送通告报文的路由设备所属的集群,所述集群可理解为由多个为完成某项业务或功能的服务器组成的设备群组,集群内的服务器可运行vrrp协议来实现设备高可用等特性。
73.本发明一实施例中,将类型/type字段值为2的vrrp通告报文作为vrid检查报文来检测网络中是否存在vrid冲突。在vrid检查报文中也携带认证字符串,通过认证字符串来
表明路由设备所属的集群。
74.步骤102.与主路由设备a同属于虚拟路由设备1的设备b收到设备a发送的vrid检查报文时,根据集群标识判定位于同一集群,不做应答。
75.设备b与设备a同属于虚拟路由设备1且同属于一个集群,因此设备b配置的vrid与设备a的一致且认证字符串的值也是一致的。设备b接收到设备a发送的vrid检查报文时,解析报文获得报文中携带的vrid及认证字符串,判断是否与自身配置的vrid和集群标识一致,如果一致则不做应答。
76.比如设备a和设备b的vrid均为1,认证字符串为“1111”,设备b收到设备a发的vrid检查报文后,不做应答,若发送vrid检查报文的设备在指定时间范围例如3秒内没有收到vrid检查报文的响应报文,则判定网络内没有vrid冲突。
77.步骤103.与发送vrid检查报文不在同一集群的设备c和设备d收到设备a发送的vrid检查报文时,根据检查报文携带的vrid和认证字符串判定vrid冲突时,向设备a发送vrid应答报文。
78.本发明基于vrrp通告报文格式的基础上新增了vrid应答报文类型,用于向发送vrid检查报文的设备通知存在vrid冲突,指示后上线的虚拟路由设备修改vrid。例如,指定类型/type字段值为3作为vrid应答报文类型,vrid应答报文中携带应答设备的vrid和集群标识。
79.以图2为例,位于集群2222中的设备c和设备d接收到集群1111中的设备a发送的vrid检查报文后,解析报文获得报文中携带的vrid和认证字符串,得到vrid为1集群标识为1111,通过认证字符串判定设备a与自身不在同一集群但vrid相同,说明存在vrid冲突,因此设备c和/或设备d向设备a发送vrid应答报文,应答报文中的类型type字段值为3,vrid为1,认证字符串携带设备c和设备d的集群标识2222。设备a收到应答报文后,判定网络中存在vrid冲突,设备a可向管理人员发出告警消息或记录告警信息,也可自动进行vrid冲突的规避处理,例如后续步骤的vrid探测和修改步骤。
80.步骤104.设备a接收到vrid应答报文后,通过vrid检查报文探测未被占用的vrid,在探测到未被占用的vrid后,设备a修改自身的vrid为未被占用的vrid并更新本地vrid配置;
81.设备a在发出vrid为1的vrid检查报文后,若在预设的响应时间范围内未收到vrid应答报文,说明不存在vrid冲突,设备a和设备b可继续使用虚拟路由设备标识1。若设备a在发出vrid检查报文后,在预设的响应时间范围内收到vrid应答报文,说明存在vrid冲突,设备a需要修改vrid标识以避免产生vrid冲突。
82.设备a在接收到vrid应答报文后,通过应答报文中vrid仅能知道哪个vrid标识产生了冲突,但并不知道哪个vrid标识不冲突,因此,设备a需要探测未被占用的vrid。例如,设备a记录应答报文反馈的冲突的vrid标识,然后通过预设的vrid生成规则生成新vrid,并通过发送携带新生成的vrid的vrid检查报文以探测新生成的vrid是否会产生冲突,从而确定新生成的vrid是否被占用。
83.本发明不限定生成新vrid标识的方法,例如可以采用随机方式生成一个与记录的冲突vrid不同的vrid,或采用网络标识+当前时间的方式生成新vrid标识等方式。
84.图4为本发明一实施例中探测未被占用的vrid和修改vrid的步骤流程示意图。设
备a收到vrid为1的应答报文后,得知vrid标识1已经被占用,则按标识大小,按顺序(例如以步长1自增)探测未被占用的vrid。设备a继续发送vrid=2的检查报文,假如收到了应答报文,则说明vrid=2也已经被使用,则继续发送vrid=3的检查报文,假如在预设的应答时间范围内,没有收到应答报文,则说明vrid=3未被占用,可以使用。
85.设备a判定新生成的vrid未被占用后,设备a修改自身的vrid为新生成的vrid并将新生成的vrid记录在本地配置文件中。设备c和/或设备d接收到设备a发送的vrid=3的检查报文后,根据认证字符串判断自身与设备a处于不同的集群中且本端未使用vrid=3,则默认不做应答。设备b在接收到设备a发送的vrid=3的检查报文后,根据认证字符串判断自身与设备a处于相同的集群中但本端未使用vrid=3,则也默认不做应答。
86.步骤105.设备a在网络中发送vrid修改报文,其中携带通过探测确定的未被占用的vrid以及设备a的集群标识;
87.本发明新增一种报文类型即vrid修改报文,用于指示在同一集群或路由设备组中的设备将vrid修改为修改报文中携带的vrid。例如,基于vrrp通告报文的格式,新增类型/type字段值为4的报文作为vrid修改报文,vrid修改报文中携带经探测确定的未被占用的vrid以及发送报文的设备所在的集群或路由设备组标识。
88.如图4的示例,设备a在预设应答时间范围内未接收到vrid应答报文判定新生成的vrid不会产生冲突后,发送类型/type字段值为4的vrid修改报文,其中携带vrid字段为3,认证字符串“1111”表示自身位于集群1111中,通过该修改报文指示位于同一集群中的设备b将其vrid修改为3。
89.步骤106.设备b接收到vrid修改报文后,根据修改报文中携带的集群标识判定与设备a位于同一集群时,将自身的vrid修改为修改报文中携带vrid并更新本地配置文件;
90.设备b接收到主设备a发送的vrid修改报文后,解析报文获得报文中携带的vrid和认证字符串,通过认证字符串中携带集群标识判定自己和设备a是否处于同一集群或路由设备组中,如果是处于同一集群或路由设备组中,则修改自身的vrid为修改报文中的vrid,并自动将报文中不产生冲突的vrid写入到本地配置文件中进行持久化,这样后续设备b重新启动后依然使用vrid=3,从而避免再次进行vrid探测过程。
91.图5为本发明提供的实现本发明提供的虚拟路由设备标识冲突检测方法的电子设备结构示意图,该设备500包括:诸如中央处理单元(cpu)的处理器510、通信总线520、通信接口540以及存储介质530。其中,处理器510与存储介质530可以通过通信总线520相互通信。存储介质530内存储有计算机程序,当该计算机程序被处理器510执行时即可实现本发明提供的方法的一个或多个步骤的功能。
92.其中,存储介质可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
93.应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存
储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本发明描述的过程的操作,除非本发明另外指示或以其他方式明显地与上下文矛盾。本发明描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
94.进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本发明所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
95.以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1