发明内容
本申请提供了应用于多归属组网的组播数据转发方法和装置,以实现多台路由器共同承担组播转发压力,实现组播流量的负载分担。
本申请提供的技术方案包括:
一种应用于多归属组网的组播数据转发方法,该方法应用于所述多归属组网中的交换设备,包括:
监听与本设备共享同一网段的各个路由器发送的用于建立邻居关系的邻居关系报文;
当本设备接收到邻居关系报文时,识别所述邻居关系报文携带的竞选指定路由器DR优先级值是否为设定值,其中,所述设定值用于指示发送该邻居关系报文的路由器为非DR;
当所述邻居关系报文携带的竞选DR优先级值不为所述设定值时,将所述邻居关系报文携带的竞选DR优先级值修改为所述设定值,将修改后的邻居关系报文转发给其他路由器,以触发其他路由器利用该修改后的竞选DR优先级值选举DR;其中,所述其他路由器为除发送所述邻居关系报文的路由器之外、且与所述交换设备共享同一网段的路由器。
优选地,该方法进一步包括:
接收组播源或者组播接收者发送的组播组报文;
判断本地是否存在与该组播组报文的目的IP地址对应的组播转发表项,
如果是,通过该存在的组播转发表项中的路由器端口转发所述组播组报文,
如果否,从本地连接已选举出的DR的路由器端口中选择一个路由器端口转发所述组播组报文,并新建立一个与所述目的IP地址对应的组播转发表项,将转发所述组播组报文的路由器端口和所述目的IP地址对应记录至该新建立的组播转发表项。
优选地,在识别所述邻居关系报文携带的竞选指定路由器DR优先级值是否为所述设定值之前,进一步包括:确定接收到所述邻居关系报文的端口为路由器端口,识别本地是否存在与所述路由器端口对应的候选DR表项,如果否,新建立一个对应所述路由器端口的候选DR表项,将所述路由器端口,与所述邻居关系报文携带的路由器标识和竞选DR优先级值一起对应记录至该新建立的候选DR表项;
基于此,所述从本地连接已选举出的DR的路由器端口中选择一个路由器端口转发所述组播组报文包括:
从已建立的所有候选DR表项中选择出竞选DR优先级值大于所述设定值的候选DR表项,通过该选择出的其中一个候选DR表项中的路由器端口转发所述组播组报文。
优选地,所述将路由器端口,与所述邻居关系报文携带的路由器标识和竞选DR优先级值一起对应记录至该新建立的候选DR表项进一步包括:启动所述路由器端口对应的定时器;
当识别出本地存在所述路由器端口对应的候选DR表项时进一步包括:刷新该路由器端口对应的定时器。
优选地,该方法进一步包括:
实时监测各个路由器端口对应的定时器;
当监测到任一路由器端口对应的定时器超时时,删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项。
优选地,该方法进一步包括:
实时监测各个路由器端口,以及各个路由器端口连接的路由器;
当监测到任一路由器端口断开或故障,或者当检测到任一路由器端口连接的路由器故障,则删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项。
优选地,所述邻居关系报文为协议无关组播PIM问候Hello报文。
一种应用于多归属组网的组播数据转发装置,该装置应用于所述多归属组网中的交换设备,包括:
监听单元,用于监听与所述交换设备共享同一网段的各个路由器发送的用于建立邻居关系的邻居关系报文;
识别单元,用于当所述监听单元监听到所述交换设备接收到邻居关系报文时,识别所述邻居关系报文携带的竞选指定路由器DR优先级值是否为设定值,其中,所述设定值用于指示发送该邻居关系报文的路由器为非DR;
第一报文转发单元,用于在所述识别单元的识别结果为否时,将所述邻居关系报文携带的竞选DR优先级值修改为所述设定值,将修改后的邻居关系报文转发给其他路由器,以触发其他路由器利用该修改后的竞选DR优先级值选举DR;其中,所述其他路由器为除发送所述邻居关系报文的路由器之外、且与所述交换设备共享同一网段的路由器。
优选地,该装置进一步包括:
第二报文转发单元,用于接收组播源或者组播接收者发送的组播组报文,判断本地是否存在与该组播组报文的目的IP地址对应的组播转发表项,如果是,通过该存在的组播转发表项中的路由器端口转发所述组播组报文,如果否,从本地连接已选举出的DR的路由器端口中选择一个路由器端口转发所述组播组报文,并新建立一个与所述目的IP地址对应的组播转发表项,将转发所述组播组报文的路由器端口和所述目的IP地址对应记录至该新建立的组播转发表项。
优选地,该装置进一步包括:
候选DR表项单元,用于在所述识别单元识别所述邻居关系报文携带的竞选指定路由器DR优先级值是否为所述设定值之前,确定接收到所述邻居关系报文的端口为路由器端口,并识别本地是否存在与所述路由器端口对应的候选DR表项,如果否,新建立一个对应所述路由器端口的候选DR表项,将所述路由器端口,与所述邻居关系报文携带的路由器标识和竞选DR优先级值一起对应记录至该新建立的候选DR表项;
所述第二报文转发单元从本地连接已选举出的DR的路由器端口中选择一个路由器端口转发所述组播组报文包括:
从已建立的所有候选DR表项中选择出竞选DR优先级值大于所述设定值的候选DR表项,通过该选择出的其中一个候选DR表项中的路由器端口转发所述组播组报文。
优选地,所述候选DR表项单元将路由器端口,与所述邻居关系报文携带的路由器标识和竞选DR优先级值一起对应记录至该新建立的候选DR表项时进一步包括:启动所述路由器端口对应的定时器;以及,
在识别出本地存在所述路由器端口对应的候选DR表项时进一步刷新该路由器端口对应的定时器。
优选地,该装置进一步包括:
监测单元,用于实时监测各个路由器端口对应的定时器,或者,实时监测各个路由器端口,以及各个路由器端口连接的路由器;
更新单元,用于当所述监测单元监测到任一路由器端口对应的定时器超时时,删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项,或者,当所述监测单元监测到任一路由器端口断开或故障,或者当检测到任一路由器端口连接的路由器故障,则删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项。
由以上技术方案可以看出,本发明中,交换设备在路由器发送的邻居关系报文携带的竞选DR优先级值不为设定值时将其修改为所述设定值,并发送给向与本设备共享同一网段的其他路由器,其目的就是告知其他路由器,发送该邻居关系报文的路由器默认不参与组播流量转发,为非DR,即让与本设备共享同一网段的路由器均认为其相邻的路由器均为非DR,这样能够保证与本设备共享同一网段的路由器在执行DR选举时选举出多个DR。由于DR是组播数据的转发者,这样,在同一个网段选举出多个DR,该多个DR就会共同承担整个网段的组播数据转发,相比于现有技术仅将整个网段的组播数据转发集中在一个作为DR的路由器上,一方面能够实现组播流量负载均衡,另一方面能够减少路由器的组播转发压力。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
在现有组播协议中,共享同一网段的路由器之间只能选举一个作为DR,而其他的路由器作为非DR,也称BDR,该选举出的一个DR负责整个网段的组播转发,而非DR被闲置,这会引起非DR的接入链路带宽浪费,也不能实现组播流量的负载分担。
基于此,本发明提供的应用于多归属组网的组播数据转发方法中,其能保证共享同一网段的路由器选举出N个DR,N大于1,且小于或等于与该网段中的路由器数目,这样,就能使同一网段中出现多个DR,能够在接入层的交换设备上实现组播流量按需转发,并将组播流量均衡分担在与交换设备共享共享同一网段的路由器上,使共享网段上的路由器共同承担组播转发任务,从而实现组播流量的负载均衡负担。
其中,本发明中,共享同一网段的路由器选举出N个DR,具体实现时可包括:由多归属组网中的交换设备控制与其共享同一网段的路由器均认为其相邻的路由器均为非DR,这样,共享同一网段的路由器通过现有DR选举规则进行DR选举后,就会出现同一网段上的大多数路由器被选举为DR,甚至,会出现共享同一网段上的所有路由器均被选举为DR。
本发明中,作为一个实施例,交换设备如何控制与本设备共享同一网段的路由器认为其相邻的路由器均为非DR,可通过图5所示的流程实现:
图5为本发明实施例提供的交换设备的欺骗实现流程图。其中,该交换设备可以和各路由器直连,也可与各个路由器非直连,本发明并不具体限定。
如图5所示,该交换设备执行以下步骤:
步骤501,监听与本设备共享同一网段的各个路由器发送的用于建立邻居关系的邻居关系报文。
作为本发明的一个实施例,用于建立邻居关系的邻居关系报文具体实现时可为PIM Hello报文。
步骤502,当监听到本设备接收到邻居关系报文时,识别所述邻居关系报文携带的DR优先级值是否为设定值,如果否,执行步骤503,如果是,执行步骤504。
以邻居关系报文为PIM Hello报文为例,则目前PIM协议定义了表1所示的选项(Option)类型(Type):
表1
从表1可以看出,19Option用于携带竞选DR优先级值,基于此,PIMHello报文中添加19Option,以携带竞选DR优先级值。
基于此,本步骤502中,识别所述邻居关系报文携带的竞选DR优先级值是否为所述设定值具体可为:对PIM Hello报文中的19Option进行解析,识别该19Option中的竞选DR优先级值是否为设定值。
其中,邻居关系报文携带的竞选DR优先级值为设定值,指示发送该邻居关系报文的路由器为非DR。
在部署组播组网时,当路由器的竞选DR优先级值设置为0,则表示该路由器默认不参与组播流量转发,也即为非DR,基于此,为避免组播组网过多改变,本步骤502不对组播组网进行过多定义,设定值具体实现时为0。
步骤503,将所述邻居关系报文携带的竞选DR优先级值修改为所述设定值,将修改后的邻居关系报文转发给其他路由器,以触发其他路由器利用该修改后的竞选DR优先级值选举DR;其中,所述其他路由器为除发送所述邻居关系报文的路由器之外、且与所述交换设备共享同一网段的路由器。
由于路由器的竞选DR优先级值设置为0,表示该路由器默认不参与组播流量转发,为非DR,而本步骤503中,交换设备在邻居关系报文携带的竞选DR优先级值不为设定值时将其修改为所述设定值并发送给向与本交换设备共享同一网段的其他路由器,其目的就是告知其他路由器,发送该邻居关系报文的路由器默认不参与组播流量转发,为非DR,即实现了控制与本交换设备共享同一网段的路由器,使其均认为其相邻的路由器均为非DR。
步骤504,直接向与本交换设备共享同一网段的其他路由器转发所述邻居关系报文,其中,所述其他路由器为除发送所述邻居关系报文的路由器之外、且与本交换设备共享同一网段的路由器。
本步骤504与现有交换设备转发邻居关系报文的方式类似,这里不再赘述。
至此,完成图5所示的流程。
通过图5所示的流程,就能保证与所述交换设备共享同一网段的各个路由器最后接收到的邻居关系报文携带的竞选DR优先级值均为设定值。之后,该各个路由器就基于该设定值和自身的竞选DR优先级值选举其共享的同一网段的DR。
图6为本发明实施例提供的DR竞选流程图。如图6所示,该流程可包括以下步骤:
步骤601,任一路由器接收到与本路由器共享同一网段的其他各个路由器发送的且经由交换设备转发的邻居关系报文后,识别出该接收的邻居关系报文携带的竞选DR优先级值。
基于图5所示流程,可以知道,本步骤506识别出的竞选DR优先级值必然为设定值比如0。
步骤602,比较本路由器的竞选DR优先级值与步骤601识别出的竞选DR优先级值,如果前者大于后者,则选举本路由器为所述网段的DR,如果前者等于后者,则从本路由器和发送所述邻居关系报文的路由器之间选举IP地址大的路由器为所述网段的DR。
如此,通过图6所示流程就可使得同一个网段有多个路由器被选举为DR。
之后,网段中被选举为DR的路由器就负责建立组播转发树(包括RPT建立)。在现有组播协议中,一个网段中所有的工作均由唯一一台DR完成,而本发明中,一个网段中存在多台DR,也即共享同一网段上的多个路由器可充当DR,在这种情况下,就必须保证同一目的组播组IP地址的组播组报文只能通过同一个路由器端口发送,以使得同一目的组播组IP地址的所有组播组报文由同一个DR负责承担,避免同一目的组播组IP地址的不同组播组报文分散在不同DR。
这里,同一目的组播组IP地址的组播组报文可以包含:组播源发送的同一目的组播组IP相同的数据报文(即同一(S,G)),也可以包含组播接收者发送的同一目的组播组IP相同的IGMP成员关系报告报文(即同一(*,G))。
其中,如何实现同一目的组播组IP地址的组播组报文只能通过同一个路由器端口发送,交换设备需要执行以下流程:
图7为本发明实施例提供的组播数据转发流程图。如图7所示,该流程可包括以下步骤:
步骤701,交换设备接收组播源或者组播接收者发送的组播组报文。
这里,组播源发送的组播组报文可为组播源发送的目的IP地址为某一特定组播组地址的数据报文;
组播接收者发送的组播组报文可为组播接收者加入某一组播组时发送的目的IP地址为该组播组地址的IGMP成员关系报告报文。
步骤702,交换设备判断本地是否存在与该组播组报文的目的IP地址对应的组播转发表项,如果是,执行步骤703,如果否,执行步骤704。
这里,交换设备判断本地是否存在与该组播组报文的目的IP地址对应的组播转发表项具体可为:
以所述组播组报文的目的IP地址为关键字识别本地建立的组播转发表项中是否存在记录了所述关键字的组播转发表项,如果是,则表示本地存在与该组播组报文的目的IP地址对应的组播转发表项,否则,表示本地不存在与该组播组报文的目的IP地址对应的组播转发表项。
步骤703,通过该存在的组播转发表项中与所述目的IP地址对应的路由器端口转发所述组播组报文。
步骤704,从本设备的多个路由器端口中选择一个转发所述组播组报文,并新建立一个与该组播组报文的目的IP地址对应的组播转发表项,将该选择的路由器端口和所述目的IP地址对应记录至该新建立的组播转发表项。
本发明中,交换设备上的路由器端口可以通过静态方式或动态方式进行确定。其中,静态方式可由为网络管理员人为配置。而动态方式为交换设备接收到源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文的端口都视为动态路由器端口。
至此,完成图7所示的流程。
通过图7所示的流程,仅在交换设备首次接收到向某一目的IP地址发送的组播组报文时选择并计算路由器端口,而之后再接收到向该目的IP地址发送的组播组报文后,就可以直接利用之前选择的路由器端口进行组播组报文的转发,这能减少路由器端口选择的复杂度,并提高组播组报文的转发效率。
并且,通过图7所示的流程还可以看出,本发明中,不管交换设备是转发来自组播源的报文,还是转发来自组播接收者的报文,其不会向所有的路由器端口广播,而是仅选择一个路由器端口转发,这避免了组播转发无关路由端口链路带宽资源的浪费。
在上面描述的步骤704中,如何从本设备的多个路由器端口中选择一个转发所述组播组报文,下面进行描述:
作为本发明的一个实施例,本发明可预先针对路由器端口配置转发策略,基于此,上述步骤704中,可基于各个路由器端口配置的转发策略和组播组报文的目的IP地址对应选择出唯一的一个路由器端口转发所述组播组报文。以路由器端口配置的转发策略为路由器端口负责转发的网段地址;基于此,上述步骤704中,从本设备的多个路由器端口中选择一个转发所述组播组报文可为:识别该组播组报文的目的IP地址所属的网段地址,选择负责该网段地址转发的路由器端口转发所述组播组报文。
作为本发明的另一个实施例,为便于实现上述步骤704中从本设备的多个路由器端口中选择一个转发所述组播组报文,本发明需要建立候选DR表项。
其中,该候选DR表项的建立可在交换设备接收到邻居关系报文时执行,比如上述的步骤502之前或者步骤502中执行,具体参见图8所示的流程:
图8为交换设备建立候选DR表项的流程图。该流程可包括以下步骤:
步骤801,确定接收到邻居关系报文的端口为路由器端口。
由于邻居关系报文是从三层设备即路由器侧发送的,当本交换设备通过一端口收到邻居关系报文时,也意味着该端口是朝向三层设备即路由器侧的,符合IGMP协议定义的路由器端口,基于此,就可将接收到邻居关系报文的端口确定为路由器端口。
步骤802,识别本地是否存在与所述路由器端口对应的候选DR表项,如果否,执行步骤803。
具体地,步骤802可为:
以接收到所述邻居关系报文的路由器端口为关键词判断已建立的候选DR表项中是否存在包含该关键词的候选DR表项,如果是,表示本地存在与所述路由器端口对应的候选DR表项,否则,表示本地不存在与所述路由器端口对应的候选DR表项。
步骤803,新建立一个对应所述路由器端口的候选DR表项,将所述路由器端口,与所述邻居关系报文携带的路由器标识和竞选DR优先级值一起对应记录至该新建立的候选DR表项。
作为本发明的一个实施例,所述邻居关系报文携带的路由器标识可为该邻居关系报文的源IP地址,也即发送该邻居关系报文的路由器的IP地址。
如此,通过图8所示流程,交换设备即可建立候选DR表项。
基于建立的候选DR表项,上述步骤704中,从本设备的多个路由器端口中选择一个转发所述组播组报文包括:
从已建立的所有候选DR表项中选择出竞选DR优先级值大于所述设定值的候选DR表项;
从该选择出的候选DR表项中选出一个候选DR表项;
通过该选出的一个候选DR表项中的路由器端口转发所述组播组报文。
其中,从该选择出的候选DR表项中选出一个候选DR表项具体实现时可通过多种方式实现:比如随机从该选择出的候选DR表项中选出一个候选DR表项,或者按照一定算法比如哈希算法等从该选择出的候选DR表项中选出一个候选DR表项,本发明并不具体限定。
本发明中,为适应网络变化,上述步骤803中还进一步包括:启动该路由器端口对应的定时器;
并且,在上述步骤802识别出本地存在与所述路由器端口对应的候选DR表项时,进一步包括:重新刷新该路由器端口对应的定时器。
基于之所以针对路由器端口设置对应的定时器,目的是便于及时更新上述的候选DR表项和组播转发表项。
基于此,更新候选DR表项和组播转发表项的流程可包括:
实时监测各个路由器端口对应的定时器;
当监测到一路由器端口对应的定时器超时时,删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项。
如此,即可实现候选DR表项和组播转发表项的更新。
作为本发明另一实施例,候选DR表项和组播转发表项的更新还可通过以下步骤实现:
实时监测各个路由器端口,以及各个路由器端口连接的路由器;
当监测到任一路由器端口故障或该端口上的链路断开(Down),或者,监测到任一路由器端口连接的路由器故障,则删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项。
其中,实时监测各个路由器端口,以及各个路由器端口连接的路由器可通过现有PIM工作机制实现,这里不再赘述。
以上对本发明提供的方法进行了描述。
下面以图9所示组网为例对本发明提供的方法进行实例描述:
在图9中,S1为交换设备,A、B、C为路由器,路由器A的IP地址为192.168.0.100,竞选DR优先级值为1,路由器B的IP地址为192.168.0.101,竞选DR优先级值为128,路由器C的IP地址为192.168.0.102,竞选DR优先级值为0,交换设备S1与路由器A、B、C共享同一网段,该网段接入了大量主机,实现了组网的多归属。
假设S1的路由器端口P1为静态配置的,路由器A、B的竞选DR优先级值依次为1、128,均大于设定值比如0,而路由器C的竞选DR优先级值为设定值比如0。
以S1通过端口P2接收到路由器B发送的邻居关系报文为例,则S1首先确定该端口P2为路由器端口,并以该路由器端口P2为关键字判断本地是否存在包含该关键字的候选DR表项,
如果是,则刷新该路由器端口P2对应的定时器,在该邻居关系报文中的竞选DR优先级值为设定值时将该邻居关系报文向其他路由器即路由器A和路由器C发送,而在该邻居关系报文中的竞选DR优先级值不为设定值时,将该邻居关系报文的竞选DR优先级值修改为所述设定值,并将修改后的邻居关系报文向其他路由器即路由器A和路由器C发送;
如果否,则新建一个候选DR表项,将该路由器端口P2,与所述邻居关系报文携带的路由器标识和竞选DR优先级值一起对应记录至该新建立的候选DR表项,同时启动该路由器端口P2对应的定时器,并在该邻居关系报文中的竞选DR优先级值为设定值时将该邻居关系报文向其他路由器即路由器A和路由器C发送,而在该邻居关系报文中的竞选DR优先级值不为设定值时,将该邻居关系报文的竞选DR优先级值修改为所述设定值,并将修改后的邻居关系报文向其他路由器即路由器A和路由器C发送。
假如所述邻居关系报文携带的路由器标识为路由器B的IP地址192.168.0.101(记为候选DR的IP地址),邻居关系报文携带的竞选DR优先级值为128,则新建立的候选DR表项如表2:
表2
在表2中,VLAN为接收到邻居关系报文的路由器端口P2所属的VLAN,Type表示路由器端口的确定方式,在路由器端口被预先静态配置,则该路由器端口的Type取值为第一值(这里以0为例),反之,在路由器端口未被预先配置,则该路由器端口的Type取值为第二值(这里以1为例)。同样的原理,在S1通过端口P1、P3分别接收到路由器A、路由器C发送的邻居关系报文时,也会建立对应的候选DR表项,具体如表3所示:
表3
当路由器A、路由器C收到经由交换设备转发的来自路由器B的邻居关系报文后,首先比较邻居关系报文中的竞选DR优先级值和自身的竞选DR优先级值,分为2种处理结果:
1,由于邻居关系报文中的竞选DR优先级值为设定值比如0,则当自身的竞选DR优先级值大于设定值,则默认自身为DR;
2,由于邻居关系报文中的竞选DR优先级值为设定值比如0,则当自身的竞选DR优先级值等于设定值时,则比较自身的IP地址和邻居关系报文中的源IP地址,选取IP地址最大的路由器为DR。在进行组播组网部署时,路由器的竞选DR优先级值设置为设定值,即表示该路由器默认不参与组播流量转发,为非DR,因此这里的DR选举对于组播流量转发不会有影响。
而当交换设备S1进行组播数据转发时,其接收到其接入的组播源或者组播接收者发送的组播组报文,则判断本地是否存在与该组播组报文的目的IP地址对应的组播转发表项,
如果是,直接通过该存在的组播转发表项中的路由器端口转发所述组播组报文;
而如果否,由于组网部署中竞选DR优先级值为设定值表示该路由器不作为DR进行组播流量转发,基于此,交换设备S1就从本地建立的如表3所示的候选DR表项中选择竞选DR优先级值不为设定值比如0的候选DR表项,该选择的候选DR表项如表4所示:
表4
之后,利用静态或动态方式再从表4所示的候选DR表项中选择一个候选DR表项,比如该选择的候选DR表项如表5所示:
表5:
之后通过表5所示候选DR表项中的路由器端口P2转发接收的组播组报文,同时新建立一个组播转发表项,将路由器端口P2和该组播组报文的目的IP地址记录至该新建立的组播转发表项。
而当与交换设备S1共享同一网段的路由器比如A、B或C接收到组播组报文时,由于其承担DR角色,则与现有DR处理组播组报文的方式一致,比如向RP进行组播源注册或者建立组播转发树。
需要说明的是,在上述所有过程中,交换设备S1还实时监测已启动的各个路由器端口对应的定时器,当监测到任一路由器端口对应的定时器超时时,意味着该路由器端口Down,或者该路由器端口连接的路由器故障,则从本地删除包含该路由器端口的候选DR表项和组播转发表项。之后,即使上述故障被消除,包含该路由器端口的候选DR表项和组播转发表项也需要重新建立。以及,交换设备S1实时监测各个路由器端口,以及各个路由器端口连接的路由器,当监测到任一路由器端口Down或者,任一路由器端口连接的路由器故障,则删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项。
还需要说明的是,本发明中,当同一网段加入新的路由器时,交换设备上候选DR表项中会添加相应的用于连接该新路由器的路由器端口对应的候选DR表项,但已建立的组播转发表项中转发路由器端口不受影响,不会重新进行计算,仍按原计算结果进行转发,只有建立新的组播组转发表项才会将新的路由器端口考虑在内。这样处理可以尽量避免出现组播转发表项震荡,保证组播转发树一定程度稳定。
至此,完成本发明提供的方法描述。下面对本发明提供的装置进行描述:
图10为本发明实施例提供的装置结构图。该装置应用于所述多归属组网中的交换设备,包括:
监听单元,用于监听与所述交换设备共享同一网段的各个路由器发送的用于建立邻居关系的邻居关系报文;
识别单元,用于当所述监听单元监听到所述交换设备接收到邻居关系报文时,识别所述邻居关系报文携带的竞选指定路由器DR优先级值是否为设定值,其中,所述设定值用于指示发送该邻居关系报文的路由器为非DR;
第一报文转发单元,用于在所述识别单元的识别结果为否时,将所述邻居关系报文中携带的竞选DR优先级值修改为所述设定值,将修改后的邻居关系报文转发给其他路由器,以触发其他路由器利用该修改后的竞选DR优先级值选举DR;其中,所述其他路由器为除发送所述邻居关系报文的路由器之外、且与所述交换设备共享同一网段的路由器。
优选地,本发明中,如图10所示,该装置进一步包括:第二报文转发单元。
其中,第二报文转发单元用于接收组播源或者组播接收者发送的组播组报文,判断本地是否存在与该组播组报文的目的IP地址对应的组播转发表项,如果是,通过该存在的组播转发表项中的路由器端口转发所述组播组报文,如果否,从本地连接已选举出的DR的路由器端口中选择一个路由器端口转发所述组播组报文,并新建立一个与所述目的IP地址对应的组播转发表项,将转发所述组播组报文的路由器端口和所述目的IP地址对应记录至该新建立的组播转发表项。
优选地,本发明中,如图10所示,该装置进一步包括:候选DR表项单元;
其中,候选DR表项单元,用于在所述识别单元识别所述邻居关系报文携带的竞选DR优先级值是否为所述设定值之前,确定接收到所述邻居关系报文的端口为路由器端口,并识别本地是否存在与所述路由器端口对应的候选DR表项,如果否,新建立一个对应所述路由器端口的候选DR表项,将所述路由器端口,与所述邻居关系报文携带的路由器标识和竞选DR优先级值一起对应记录至该新建立的候选DR表项。
基于此,第二报文转发单元从本地连接已选举出的DR的路由器端口中选择一个路由器端口转发所述组播组报文包括:
从已建立的所有候选DR表项中选择出竞选DR优先级值大于所述设定值的候选DR表项,通过该选择出的其中一个候选DR表项中的路由器端口转发所述组播组报文。
优选地,本发明中,所述候选DR表项单元将路由器端口,与所述邻居关系报文携带的路由器标识和竞选DR优先级值一起对应记录至该新建立的候选DR表项时进一步包括:启动所述路由器端口对应的定时器;以及,
在识别出本地存在所述路由器端口对应的候选DR表项时进一步刷新该路由器端口对应的定时器。
基于此,本发明中,如图10所示,该装置进一步包括:
监测单元,用于实时监测各个路由器端口对应的定时器,或者,实时监测各个路由器端口,以及各个路由器端口连接的路由器;
更新单元,用于当所述监测单元监测到任一路由器端口对应的定时器超时时,删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项,或者,当所述监测单元监测到任一路由器端口Down或者,任一路由器端口连接的路由器故障,则删除包含该路由器端口的候选DR表项和包含该路由器端口的组播转发表项。
至此,完成图10所示的装置描述。
由以上技术方案可以看出,本发明中,交换设备在路由器发送的邻居关系报文携带的竞选DR优先级值不为设定值时将其修改为所述设定值,并发送给向与本设备共享同一网段的其他路由器,其目的就是告知其他路由器,发送该邻居关系报文的路由器默认不参与组播流量转发,为非DR,这样能够使与本设备共享同一网段的路由器均认为其相邻的路由器均为非DR,这样能够保证与本设备共享同一网段的路由器在执行DR选举时选举出多个DR。由于DR是组播数据的转发者,这样,在同一个网段选举出多个DR,该多个DR就会共同承担整个网段的组播数据转发,相比于现有技术仅将整个网段的组播数据转发集中在一个作为DR的路由器上,一方面能够实现组播流量负载均衡,另一方面能够减少路由器的组播转发压力。
进一步地,本发明中,不管交换设备是转发来自组播源的报文,还是转发来自组播接收者的报文,其不会向所有的路由器端口广播,而是仅选择一个路由器端口转发,这避免了组播转发无关路由端口链路带宽资源的浪费。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。