发明内容
本发明的目的就是提供一种在VRRP网络环境下实现PIM组播的方法,以解决在组播PIM协议和VRRP协议同时应用的情况下,下游设备使用VRRP的虚拟IP地址作为到上行路由下一跳时,组播业务不能够部署应用的问题。
一种在VRRP网络环境下实现PIM组播的方法,应用于PIM域路由器,所述方法包括步骤:
发送PIM协议报文,如果发送所述PIM协议报文的路由器接口使能了VRRP,则在所述PIM协议报文中携带所述接口上配置的虚拟IP地址;
接收PIM协议报文,如果接收的PIM协议报文中携带虚拟IP地址并且本路由器未使能VRRP,则以所述虚拟IP地址为源地址按PIM协议处理;如果收到的PIM协议报文携带虚拟IP地址,并且本接收接口也使能了VRRP,则比较该虚拟IP地址与本接收接口上配置的虚拟IP地址是否相同,如果不相同,则以所述PIM协议报文携带的虚拟IP地址为源地址按PIM协议处理,如果相同,则不处理。
进一步地,所述接收的PIM协议报文为携带虚拟IP地址的PIM Hello报文时,在本路由器未使能VRRP的情况下,所述按PIM协议处理为:以所述虚拟IP地址与发送者建立PIM邻居;在本路由器接收接口使能了VRRP的情况下,所述按PIM协议处理为:比较该虚拟IP地址与本接收接口上配置的虚拟IP地址是否相同,如果不相同,则以所述PIM Hello报文携带的虚拟IP地址与发送者建立PIM邻居,如果相同,则不与发送者建立PIM邻居。通过以虚拟IP地址建立PIM邻居,实现了在VRRP与组播同时部署时,能够成功的通过虚拟IP地址向组播源发送PIM协议报文,成功建立组播。
进一步地,所述实现PIM组播的方法进一步包括选举组播指定路由器DR的步骤,具体为:
判断本路由器是否使能了VRRP,如果是,则根据其他使能了VRRP的路由器发送的PIM Hello报文中携带的优先级,判断自身是否为优先级最大的路由器,如果是,则本路由器选举为DR;在优先级一样的情况下,根据PIM Hello报文中携带的发送端口的实地址,判断自身是否为实地址最大的路由器,如果是,则本路由器选举为DR,否则不选举为DR;在优先级不为最大的情况下,则本路由器不选举为DR;如果本路由器未使能VRRP,则不选举为DR。
通过上述DR竞选方法,可以使使能了VRRP的路由设备成功竞选为DR,并能在使能了VRRP的路由器间实现DR的主备。
本发明还公开了一种在VRRP网络环境下实现PIM组播的装置,应用于PIM域路由器,所述装置包括:
发送模块,用于发送PIM协议报文,若发送所述PIM协议报文的路由器接口使能了VRRP,则在所述PIM协议报文中携带该接口上配置的虚拟IP地址;
接收模块,用于接收PIM协议报文,如果接收的PIM协议报文中携带虚拟IP地址并且本路由器未使能VRRP,则以所述虚拟IP地址为源地址按PIM协议处理;如果收到的PIM协议报文携带虚拟IP地址,并且本接收接口也使能了VRRP,则比较该虚拟IP地址与本接收接口上配置的虚拟IP地址是否相同,如果不相同,则以所述PIM协议报文携带的虚拟IP地址为源地址按PIM协议处理,如果相同,则不处理。
进一步地,所述接收模块接收的PIM协议报文为携带虚拟IP地址的PIM Hello报文时,在本路由器未使能VRRP的情况下,所述按PIM协议处理为:以所述虚拟IP地址与发送者建立PIM邻居;在本路由器接收接口使能了VRRP的情况下,所述按PIM协议处理为:则比较该虚拟IP地址与本接收接口上配置的虚拟IP地址是否相同,如果不相同,则以所述PIM Hello报文携带的虚拟IP地址与发送者建立PIM邻居,如果相同,则不与发送者建立PIM邻居。
进一步地,所述装置还包括DR竞选模块,用于根据自身是否使能了VRRP、以及PIM Hello报文中携带的优先级和IP地址信息,选举在使能了VRRP的路由器中,优先级最大的路由器为DR,在优先级相同的情况下,选举实地址最大的路由器为DR。
本发明在VRRP网络环境下实现PIM组播的方法及装置,通过扩充当前RFC协议,在PIM Hello报文中携带虚拟IP地址,使用VRRP虚拟IP地址建立PIM邻居,并建立虚拟组播DR,可以使单播和组播业务在特定组网情况下同时进行主备,同时完全兼容目前的RFC协议。特别是在OAA的组网部署中可以解决目前不能同时部署组播的问题,不仅实现了VRRP与组播的共同部署,而且实现了共同部署时的单播和组播的主备。
具体实施方式
下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。
以图1为例,通常下行设备Router-A为了实现单播主备采取虚拟IP地址1.1.1.1作为路由下一跳,而要在图1所示的网络应用中部署VRRP和组播,目前的协议实现中组播只能支持以实地址建立组播邻居以及发送PIM加入和剪枝报文,因此由于Router-A中没有与虚拟IP地址1.1.1.1相关的邻居表项,所以将导致图示组网的组播业务部署失败。
此情况下,可以考虑将虚拟IP地址当成实地址来处理,可以使用虚拟IP地址来建立PIM邻居,当Router-A使用虚拟IP地址与Router-B建立PIM邻居后,Router-A通过建立(*,G)建立共享树,组播流沿着共享树到达Router-A,Router-A向组播源发送PIM的(S,G)加入报文,此时由于Router-A的PIM邻居列表存在与虚拟IP地址1.1.1.1相关的邻居表项,因此在Router-A到组播源的路由下一跳为虚拟IP地址1.1.1.1,Router-A向组播源发送的PIM(S,G)加入能够成功,由此可以实现组播,保证组播业务的顺利转发。
本实施例以图2为例,来具体阐述在VRRP网络环境下实现PIM组播的方法。Router-A、Router-B和Router-C对应的接口在同一网段内,其中,Router-A的实地址为1.1.1.5,Router-B的实地址为1.1.1.3,Router-C的实地址为1.1.1.2。在这同一网段内,Router-A和上行的两台设备Router-B、Router-C都使能了组播,并且Router-B、Router-C和Router-A在同一共享网段内互联。在Router-B和Router-C的接口上使能VRRP,在使能了VRRP的接口上配置虚拟IP地址为:1.1.1.1,那么Router-B和Router-C组成了一个虚拟路由器,虚拟IP地址为1.1.1.1,此虚拟IP地址为Router-A的下一跳单播网关。现在要使用虚拟IP地址建立PIM邻居,使得Router-A与Router-B和Router-C以虚拟IP地址建立PIM邻居,在组播和VRRP同时部署时,也能成功实现组播业务。
由于目前的组播RFC只描述规定使用接口的实地址,而没有说明使用VRRP的虚拟地址。因此需要优化和扩充组播RFC协议,使组播不仅支持实地址,而且支持VRRP虚拟IP地址,从而解决目前遇到的应用问题。因为建立PIM邻居主要是用PIM Hello报文携带的信息来进行,PIM Hello报文的格式如图4所示,其中:
PIM Ver:PIM版本号;
Type:PIM协议报文的类型;
Reserved:保留字段;
Checksum:标准的IP校验和;
OptionType:选项类型;
OptionLength:选项长度;
OptionValue:选项值。
从上面的Hello报文格式可以看到,在报文里面可以带Option字段,用于携带参数信息;比如Option Type 19为DR优先级、Option Type 2为局域网剪枝延迟、Option Type 20为Generation ID等。
因此,本发明在使能了VRRP的接口上发送PIM Hello报文时,现在新增加一种Option Type字段30,为VRRP虚拟IP地址;在发送Hello报文的时候,将这个字段信息携带上,如图5所示,其中Option Type为30,OptionLength为4,OptionValue为虚拟IP地址。未使能VRRP的接口按照现有技术处理,不做改变。
需要说明的是,上面仅以PIM Hello报文为例描述了虚拟IP地址的携带方法,对于其他PIM协议报文,也同样采用Option type30来携带虚拟IP地址,这里不再累述。
而在接收PIM协议报文时,现有技术中以发送PIM协议报文的PIM邻居的源地址,也就是实地址来进行处理。在本发明中,增加对虚拟IP地址的支持,首先查看接收的PIM协议报文是否携带虚拟IP地址,如果携带了虚拟IP地址,则以虚拟IP地址作为源地址来进行处理,否则以报文中携带的实地址来进行处理。
需要说明的是,对于能够按照上述方法携带和识别虚拟IP地址的路由器,在本发明中称为使能了虚拟组播。使能了虚拟组播的路由器,如果发送接口使能了VRRP,则在其发送的PIM协议报文中携带虚拟IP地址;而在接收PIM协议报文时,会查看接收的报文中是否携带虚拟IP地址,如果携带虚拟IP地址,则将此虚拟IP地址作为该PIM协议报文的源地址进行处理。而未使能虚拟组播的路由器则完全按照现有技术流程处理PIM协议报文。
下面以图3为例,阐述本发明在VRRP网络环境下实现PIM组播的方法步骤,对于PIM域内任意一台路由器,包括如下步骤:
步骤301、发送PIM Hello报文,若发送PIM Hello报文的路由器接口使能了虚拟路由器冗余协议VRRP,则在PIM Hello报文中携带虚拟IP地址。
步骤302、接收PIM Hello报文,如果收到的PIM Hello报文携带虚拟IP地址并且本路由器未使能VRRP,则提取该报文所携带的虚拟IP地址,以虚拟IP地址与发送者建立PIM邻居关系。
具体的,对应到图2中,Router-B和Router-C对应的接口使能了VRRP,并且配置了虚拟IP地址1.1.1.1,当它们作为组播路由器发送PIM Hello报文时,则在PIM Hello中携带虚拟IP地址1.1.1.1。而Router-A没有使能VRRP,其发送的PIM Hello报文不做改变。
而在接收PIM Hello报文时,对于没有使能VRRP的Router-A,在接收PIM Hello报文时,则会根据PIM Hello报文中是否携带虚拟IP地址,而采取不同的处理方式,如果接收的是带有VRRP虚拟IP地址的PIM Hello报文,则获取PIM Hello报文里面的虚拟IP地址,以这个虚拟IP地址与对应的发送路由器建立组播PIM邻居;如果接收的PIM Hello报文没有携带VRRP虚拟IP地址,则按照原来的流程处理,不做任何改变,依然采取实地址和发送者建立PIM邻居。本实施例中Router-A接收来自Router-B和Router-C的PIM Hello报文,其中携带有虚拟IP地址1.1.1.1,因此以该虚拟IP地址1.1.1.1与Router-B和Router-C构成的虚拟路由器建立PIM邻居。
使能了VRRP的Router-B和Router-C接收PIM Hello报文时,若其接收的PIM Hello报文中未携带VRRP虚拟IP地址,则采取实地址和报文发送者建立PIM邻居,即当它们接收到Router-A发送的未携带虚拟IP地址的PIM Hello报文,以Router-A的实地址1.1.1.5与Router-A建立PIM邻居;若其接收到的PIM协议报文中携带虚拟IP地址时,并且该虚拟IP地址与本接口的虚拟IP地址相同,虚拟IP地址相同则说明是虚拟路由器相互之间发送的PIM协议报文,例如Router-B收到Router-C发来的PIM Hello报文,则不建立PIM邻居,具体地,Router-B和Router-C收到对方的PIM Hello报文则不与对方建立PIM邻居;若虚拟IP地址不是本接口的虚拟IP地址,例如在同一共享网段内,不仅Router-B和Router-C使能了VRRP,还有另一对路由器使能了VRRP,它们的虚拟IP地址与Router-B和Router-C的不同,则以接收到的PIMHello报文中的虚拟IP地址与发送者建立PIM邻居,即以Router-B和Router-C组成的一个虚拟路由器与另外两个路由器组成的虚拟路由器之间也能通过虚拟IP地址建立PIM邻居。
需要说明的是,路由器在接收PIM协议报文时,会判断所接收的协议报文携带的地址是否与接收接口的地址在同一网段内,如果是同一网段的地址,则认为合法,进行处理,否则丢弃该报文。本发明路由器在接收PIM协议报文时,也同样进行判断,只不过当接收的PIM协议报文携带了虚拟IP地址时,将该虚拟IP地址与接收接口进行比较,如果在同一网段,则认为合法,否则丢弃该报文,对此不再赘述。
按照上面的原则处理后,上面Router-A、Router-B、Router-C设备组播PIM邻居建立如表3:
Router-A:
Router-B:
PIM邻居 |
IP地址 |
Router-A |
1.1.1.5 |
Router-C:
PIM邻居 |
IP地址 |
Router-A |
1.1.1.5 |
表3
通过上面的处理后,下行设备Router-A可以和上行Router-B和Router-C上的VRRP虚拟接口建立组播邻居,即以VRRP虚拟IP地址1.1.1.1为标志与Router-B和Router-C组成的虚拟路由器建立组播邻居,而并不是以VRRP设备的实地址建立邻居。至此,Router-A通过虚拟IP地址1.1.1.1与Router-B和Router-C建立了PIM邻居。
需要说明的是,上述实施例以三台路由器来进行说明,事实上作为网络中的任意一台路由器,无论其是否使能了VRRP,该路由器在发送PIM Hello报文时,首先判断发送接口是否使能了VRRP,若使能了VRRP,则在发送的PIM Hello报文时携带该接口上配置的虚拟IP地址,如果未使能VRRP,则按照现有技术处理。
同样对于网络中任意一台路由器,在接收PIM Hello报文时,首先判断接收的PIM Hello报文是否携带了虚拟IP地址,然后判断本路由器是否使能了VRRP,如果接收的PIM Hello报文携带了虚拟IP地址并且本路由器未使能VRRP,则会提取该报文所携带的虚拟IP地址,以此虚拟IP地址与发送者建立PIM邻居关系;如果收到的PIM Hello报文携带虚拟IP地址,并且本路由器也使能了VRRP,则判断该虚拟IP地址与本接口的虚拟IP地址是否相同,如果相同不与发送者建立PIM邻居,如果该虚拟IP地址不是本接口的虚拟IP地址,则以接收到的PIM Hello报文中的虚拟IP地址与发送者建立PIM邻居,如果收到的PIM Hello报文没有携带虚拟IP地址,则按照现有技术处理。
从而在实际的网络中,不论该路由器是否使能了VRRP,按照上述的方法就能实现当网络同时部署VRRP和组播的时候,能够以虚拟IP地址建立PIM邻居,实现PIM组播。
上面介绍了在VRRP网络环境下PIM邻居的建立方法,接下来进一步阐述,在实现PIM组播中DR选举和其他PIM协议报文的处理步骤。仍然以图2为例,借助PIM Hello报文还可以为共享网络选举DR,各路由器之间通过比较Hello报文中所携带的优先级和IP地址,可以为多路由器网段选举DR,DR将作为该共享网络中组播数据的唯一转发者。
具体地,如图2所示,在Router-A,Router-B和Router-C组成的共享网络里,各路由器之间通过比较Hello报文中所携带的优先级和IP地址,进行DR的选举,DR竞选方法如下:
判断本路由器是否使能了VRRP,如果是,则根据其他使能了VRRP的路由器发送的PIM Hello报文中携带的优先级,判断自身是否为优先级最大的路由器,如果是,则本路由器选举为DR;在优先级一样的情况下,根据PIM Hello报文中携带的发送端口的实地址,判断自身是否为实地址最大的路由器,如果是,则本路由器选举为DR,否则不选举为DR;在优先级不为最大的情况下,则本路由器不选举为DR;如果本路由器未使能VRRP,则不选举为DR。
具体地,Router-B和Router-C使能了VRRP,假设Router-B和Router-C的优先级一样,则Router-B因为其实地址为1.1.1.3,竞选为DR。使能了VRRP的设备Router-B和Router-C作为一个虚拟路由器以虚拟IP地址与Router-A建立PIM邻居,因此对于组播而言Router-B和Router-C看成一个虚拟的DR设备,以VRRP虚拟IP地址作为组播PIM邻居的地址。Router-A只和这个虚拟的组播地址对应的虚拟路由器建立组播邻居,Router-A并不感知或者关心上面连接的是几台设备,对于Router-A来说就是一个虚拟的DR。而使能了VRRP的Router-B和Router-C之间还是需要进行通常的DR竞选,谁的优先级高IP地址大就作为实际的DR。
上述的选举方式目的是为了当使能了VRRP时,这台设备优先选举为DR设备,并将使能了VRRP的设备虚拟为一个虚拟DR,VRRP设备之间进行DR主备,DR选举好了以后,即承担转发和PIM协议中的相应的角色。由于是在同一网段内,使能了VRRP但是非DR设备也会收到下游设备的这些PIM协议报文,但是这些报文只有使能了VRRP的DR设备才能处理,由DR设备承担运行协议的角色。采用上述的DR竞选方法,使Router-B和Router-C中一台设备被选举为DR,而另一台设备作为备选DR,当主DR故障时,备DR就竞选为DR,实现了DR的主备。
需要说明的是,按照现有技术进行DR的选举并不影响本发明组播的实现,但是本发明DR选举的流程方法强调了使能了VRRP的设备优先被选举为DR,使能了VRRP的设备实现了DR的主备,有利于网络的稳定,同时也实现了路由的优化,避免路由的迂回。例如Router-A被选举为DR的话,其单播地址为虚拟IP地址,也就是说还要经过Router-B或Router-C的转发,不利于网络路由的优化。同时在网络中的路由器都未使能VRRP时,则路由器在接收到PIM Hello报文后,则判断其他路由器发送的PIM Hello报文中是否携带虚拟IP地址,如果有携带虚拟IP地址,则本路由器不选举为DR;如果其他路由器发送的PIM Hello报文中没有携带虚拟IP地址,则判断自身是否为优先级最大的路由器,如果是,则本路由器选举为DR,否则不选举为DR;在优先级一样的情况下,根据PIM Hello报文中携带的发送端口的实地址,判断自身是否为实地址最大的路由器,如果是,则本路由器选举为DR,否则不选举为DR。本发明仅考虑在VRRP网络环境下的PIM组播实现方法,因此关于上述都未使能VRRP的情况,不再赘述。
在建立了PIM邻居和选举了DR以后,网络中其他PIM协议报文,如组播加入和剪枝报文,均以发送PIM协议报文的PIM邻居的源地址来进行处理。对与任一PIM内的路由器,其在发送其他PIM协议报文的时候,方法与发送PIM Hello消息相同,如果发送的接口使能了VRRP,则在发送的报文中携带虚拟IP地址,否则按照正常流程处理;而在接收其他PIM协议报文时,若接收的PIM协议报文中携带了虚拟IP地址,则根据自身是否使能了VRRP进行如下处理:
若本路由器使能了VRRP,则判断接收的PIM协议报文中携带的虚拟IP地址是否与本路由器接收接口的虚拟IP地址相同,若相同则不予处理,否则将接收的PIM协议报文中携带的虚拟IP地址作为源地址处理。
进一步地,仍然以图1为例,下面对在VRRP网络环境下实现PIM组播后,图1所示网络应用中的单播和组播的主备的具体实施方式进行说明。
具体地,Router-B作为一个二层设备,FW-A和FW-B为三层设备形成主备,使能VRRP和组播;FW-A和FW-B作为Router-A的网关设备,Router-A以虚拟IP地址1.1.1.1与FW-A和FW-B建立组播PIM邻居。无论是单播流量还是组播流量都经过FW-A和FW-B,Router-B在上行和下行都作二层透传。
PIM依赖于拓扑收集协议维护的路由表,此路由表称作组播路由信息表(MRIB),MRIB中的路由信息可能是直接从单播路由表中获取,或者来自于诸如MBGP之类的路由协议。对于组播而言,并不必关心MRIB的创建方法,MRIB通过单播获取到上游PIM邻居的下一跳为1.1.1.1。在PIM协议中,MRIB的主要任务是为每个目的地址在支持组播协议的链路上提供下一跳路由器。
MRIB用于确定发送Join/Prune(加入/剪枝)报文的下一跳路由器,数据流沿着与Join(加入)报文相反的方向转发。如果不使用VRRP虚拟IP地址建立PIM邻居,虽然MRIB获取到PIM邻居的下一跳为1.1.1.1,但是并没有对应的虚拟地址PIM邻居,PIM协议报文也就没法发送到正确的上游设备,协议建立不起来;现在通过和虚拟DR建立PIM邻居,这样的问题就可以解决,Router-A向组播源发送PIM的(S,G)加入报文,就可以通过虚拟DR进行转发,从而成功建立共享树RPT,进而组播数据就可以通过共享树RPT发送到组播接收者。
具体地,FW-A和FW-B的虚拟IP地址1.1.1.1作为Router-A的单播下一跳路由地址,FW-A和FW-B其中一台作为主设备,另外一台作为备设备。同时,Router-A与以虚拟IP地址1.1.1.1与FW-A和FW-B建立PIM邻居,FW-A和FW-B作为Router-A的虚拟DR,FW-A和FW-B通过DR竞选,一台作为主DR,另外一台作为备DR,当主DR故障时,备DR就竞选为DR,从而实现DR的主备。可见,通过本发明的利用虚拟IP地址建立PIM邻居的方法,不仅实现了VRRP与组播的共同部署,而且实现了共同部署时的单播和组播的主备。
与本发明方法对应的,本发明还提出了一种在VRRP网络环境下实现PIM组播的装置,如图6所示,包括:
发送模块61,用于发送PIM协议报文,若发送所述PIM协议报文的路由器接口使能了VRRP,则在所述PIM协议报文中携带该接口上配置的虚拟IP地址;
接收模块62,用于接收PIM协议报文,如果接收的PIM协议报文中携带虚拟IP地址并且本路由器未使能VRRP,则以该虚拟IP地址为源地址按PIM协议处理;如果收到的PIM协议报文携带虚拟IP地址,并且本接收接口也使能了VRRP,则比较该虚拟IP地址与本接收接口上配置的虚拟IP地址是否相同,如果不相同,则以PIM协议报文携带的虚拟IP地址为源地址按PIM协议处理,如果相同,则不处理。
当接收模块62接收的PIM协议报文为PIM Hello报文,在接收的PIM Hello报文携带虚拟IP地址,并且本路由器未使能了VRRP的情况下,以该虚拟IP地址与发送者建立PIM邻居;在接收的PIM Hello报文携带虚拟IP地址,并且本路由器使能了VRRP的情况下,则比较该虚拟IP地址与本接收接口上配置的虚拟IP地址是否相同,如果不相同,则以PIM Hello报文携带的虚拟IP地址与发送者建立PIM邻居,如果相同,则不与发送者建立PIM邻居。
进一步地,本装置还包括DR竞选模块63,用于根据自身是否使能了VRRP、以及PIM Hello报文中携带的优先级和IP地址信息,选举在使能了VRRP的路由器中,优先级最大的路由器为DR,在优先级相同的情况下,选举实地址最大的路由器为DR。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。