具体实施方式
针对现有技术存在的上述问题,本发明实施例提供了一种提高组播业务安全性的组播业务实现方案。
下面结合附图对本发明实施例进行详细描述。
实施例一
本实施例描述了组播业务实现流程,应用于采用了组播路由协议的系统架构。该系统架构中的路由器上启用了PIM协议,组播接收客户端设备与组播接收侧DR(Designated Router,指定路由器)上启用了IGMP协议。组播接收客户端设备上配置有权限等级(即组播业务的权限等级,以下同),组播源上配置有业务等级(即组播业务的业务等级,以下同)。
当组播接收客户端欲建立与组播源的组播业务关系时,如图2所述,其组播业务建立流程可包括:
步骤201,组播接收客户端发送IGMP成员报告报文以请求加入组播组,该报文中携带该组播接收客户端的权限等级信息。
具体实施时,当组播接收客户端欲建立与组播源的组播业务关系时,首先从该业务系统架构中的管理服务器获取组播源的组播地址(或组播组),然后发送对应组播地址的IGMP成员报告报文,并在报文中携带该客户端的权限等级信息。
步骤202,组播接收侧DR收到携带有客户端权限等级信息的IGMP成员报告报文后,在所请求加入的组播组对应的PIM(*,G)表项的出接口中,设置相应出接口的权限等级为该客户端权限等级,所述相应出接口是指接收该IGMP成员报告报文的接口。
具体实施时,组播接收侧DR收到IGMP成员报告报文后,若判断针对所请求加入的组播组还未建立有PIM(*,G)表项,则首先生成PIM(*,G)表项,其中G表示所请求加入的组播组,*表示任意组播源,该表项的出接口为该组播接收侧DR接收该IGMP成员报告报文的接口,该组播接收侧DR在该表项中的该出接口上添加该客户端的权限等级信息;若判断针对所请求加入的组播组已经建立有PIM(*,G)表项,则将接收该IGMP成员报告报文的接口添加到该表项的出接口中,并在该出接口上添加该客户端的权限等级信息。
步骤203,组播接收侧DR通过向组播源方向发送PIM(*,G)加入报文,建立组播接收侧DR到组播源侧之间的组播转发路径。
具体实施时,可采用现有方式实现该组播转发路径的建立过程。例如,组播接收侧DR逐跳向组播源方向发送PIM(*,G)加入报文,从该组播接收侧DR到RP所经过的路由器就形成了RPT(Rendezvous Point Tree,共享树或汇集树)分支(RPT以RP为根,以DR为叶子),这些路由器都在其组播转发表中生成了(*,G)表项;RP接收到该PIM(*,G)加入报文后,向组播源方向发送PIM(S,G)加入报文,从RP到组播源所经过的路由器就形成了SPT(Shortest Path Tree,最短路径树)分支,这些路由器都在其组播转发表中生成(S,G)表项。组播数据报文可从组播源经STP达到RP,再经RPT到达组播接收侧DR。当然,还可以采用其它方式建立组播源到组播接收侧DR的组播转发路径,本发明实施例对此不做限制。
进一步的,若组播接收侧DR的同一个接口下收到多个客户端发送的IGMP成员报告报文,则以收到的权限等级最高的信息作为PIM(*,G)表项中该出接口的权限等级信息。具体的,当组播接收侧DR从接口1接收到IGMP成员报告报文后,将该报文中携带的权限等级4作为PIM(*,G)表项中出接口1的权限等级,后续从接口1再次接收到IGMP成员报告报文,若该报文中携带的权限等级为5,则将PIM(*,G)表项的出接口1的业务权限等级更新为5;若再次接收到的IGMP成员报告报文中携带的权限等级为3,则不更新PIM(*,G)表项中出接口1的权限等级。
本实施例给出了组播接收侧DR收到IGMP成员报告报文后的一种具体实现过程,该过程可包括:
组播接收侧DR从接收到的IGMP成员报告报文中获取组播接收客户端的权限等级后,根据该IGMP成员报告报文的组播地址、接收接口,匹配相应的IGMP表项;
若未匹配到相应IGMP表项,说明该接口第一次接收到该组播组的IGMP成员报告报文,则根据该IGMP成员报告报文对应的组播组、接收接口、源IP地址和发包序列号及权限等级信息生成相应IGMP表项;当存在对应PIM(*,G)表项时,在该PIM(*,G)表项中添加对应的出接口并设置组播接收客户端的权限等级并同步到相应组播路由表项中,对已生成的相应组播转发表项进行刷新(刷新过程可包括:比较该组播路由表项中的业务等级信息和所添加的出接口上设置的权限等级信息,若该权限等级不低于该业务等级,则将该出接口添加到相应组播转发表项的出接口列表中。其中,组播转发表项的生成过程以及组播路由表项中的业务等级的设置过程,请见后续描述);当不存在对应PIM(*,G)表项时,生成相应的PIM(*,G)表项并添加对应出接口及设置组播接收客户端的权限等级;
若匹配到相应IGMP表项,说明该接口不是第一次接收到该组播组的IGMP成员报告报文,则比较该IGMP表项的源IP地址与IGMP成员报告报文的源IP地址是否相同,如果该两个源IP地址不相同,则比较从IGMP成员报告报文中获取的组播接收客户端的权限等级信息与匹配到的IGMP表项中的权限等级信息,并在前者高于后者时,将二者权限等级高者所对应的源IP地址和权限等级更新到该IGMP表项中,并将高的权限等级更新到相应PIM(*,G)表项中对应的出接口上,以使相应PIM(*,G)表项中的对应出接口的组播接收客户端的权限等级信息与该IGMP表项中的权限等级信息保持一致,并同步到组播路由表项;如果该两个源IP地址相同,则比较IGMP成员报告报文发包序列号与相应IGMP表项中的发包序列号,若前者不大于后者,则丢弃该IGMP成员报告报文,否则,将相应IGMP表项中的发包序列号更新为该IGMP成员报告报文的发包序列号,并更新该IGMP表项的老化时间,这样,可以防止他人伪造报文的攻击。
当组播源发送组播数据报文时,将业务等级信息携带于组播数据报文,以使组播接收侧DR在生成组播转发表项时,仅将权限等级高于或等于相应业务等级的出接口添加到组播路由转发表项中,从而避免将组播数据报文转发给业务权限等级低的组播接收客户端。
本发明实施例中,组播数据报文转发流程的一种具体实现可如图3所示,包括:
步骤301,组播源发送组播数据报文,在组播数据报文中携带该组播源的业务等级信息。
具体实施时,可以将业务等级信息配置到组播数据报文的DSCP(Differentiated Services Code Point,差分服务代码点)字段。此种情况下,需要在组播组网中的路由器上,配置组播数据报文DSCP权限映射(即定义DSCP值所对应的PHB(Per-Hop-Behavior,每下一跳行为)),以防止组播数据报文与其他报文在出端口拥塞时抢占高优先队列,或者被网络设备配置的QoS(Quality of Service,服务质量)策略更改DSCP值。优选的,可以在组播IP报文头中增加自定义选项,用来表示业务等级。
步骤302,组播数据报文沿组播转发路径到达组播接收侧DR后,接收侧DR查询组播转发表,若未查询到相应组播转发表项,则转入步骤303;若查询到相应组播转发表项,则转入步骤304。
步骤303,组播接收侧DR生成组播转发表项,然后转入步骤304。
具体实施时,组播接收侧DR若未匹配到相应组播转发表项,则先根据相应PIM(*,G)表项生成对应组播路由表项,在对应的组播路由表项中,添加该业务等级信息(如可在组播路由表项中设置一标识,用于表明相应组播源S的业务等级),并同步相同组的PIM(*,G)表项的客户端的权限等级信息的出接口信息到组播路由表项,然后根据该组播路由表项生成组播转发表项。在生成组播转发表项时,组播接收侧DR比较该组播路由表项的业务等级信息和该表项出接口中设置的组播接收客户端的权限等级信息,若客户端权限等级不低于业务等级,则将对应出接口添加到组播转发表中,否则不添加对应出接口到组播转发表项中。
步骤304,组播接收侧DR根据组播转发表项进行组播数据报文转发处理。
具体实施时,组播接收侧DR按照现有方式,根据组播转发表项中的出接口,将组播数据报文复制到各出接口处转发。
通过以上流程可以看出,一方面,组播接收客户端在IGMP成员报告中添加了该客户端的权限等级,以使组播接收侧DR在相应组播路由表项中设置出接口的权限等级;另一方面,组播源在组播数据报文中添加了业务等级;进而可使组播接收侧DR在生成组播转发表项时,仅将相应组播路由表项中权限等级不低于相应业务等级的出接口添加到相应组播转发表项中,从而仅将组播数据报文转发给不低于相应业务等级的客户端,保证了组播业务的安全性。
在组播系统架构中,组播接收侧DR可连接二层交换设备,如二层交换机(以下以二层交换机为例进行说明),通过该二层交换机连接多个组播接收客户端,以便将组播数据报文转发给多个组播接收客户端。在该系统架构下,该二层交换机既可以通过二层广播方式将组播数据报文转发给其所连接的所有组播接收客户端,也可以通过IGMP-Snooping(互联网管理协议窥探)方式将组播转发报文转发给指定组播接收客户端。
针对上述系统架构,本发明实施例优选的,在二层交换机上使能IGMP-Snooping,并进一步对IGMP-Snooping进行升级。具体的:当二层交换机侦听到客户端发送的IGMP成员报告报文后,获取报文中携带的客户端权限等级信息,然后,根据该IGMP成员报告报文的组播地址和接收端口匹配相应的IGMP-Snooping表项;若匹配到相应IGMP-Snooping表项,则比较该IGMP成员报告报文的发包序列号与相应IGMP-Snooping表项中的发包序列号,若前者不大于后者,则丢弃该IGMP成员报告报文,否则,将相应IGMP-Snooping表项中的发包序列号更新为所述IGMP成员报告报文的发包序列号;若未匹配到相应IGMP-Snooping表项,则根据该IGMP成员报告报文的组播地址、接收端口、发包序列号以及所述IGMP成员报告报文中携带的组播接收客户端的权限等级信息生成相应IGMP-Snooping表项。当二层交换机从其路由器端口(即连接组播接收侧DR的端口)接收到组播数据报文后,获取组播数据报文中携带的业务等级信息,根据该组播数据报文的组播组查询相应IGMP-Snooping表项,若相应IGMP-Snooping表项中没有设置有业务等级信息,则比较该业务等级信息与该相应IGMP-Snooping表项的成员端口的权限等级信息,若前者不高于后者,则在该相应IGMP-Snooping表项中设置该业务等级信息,并从该相应IGMP-Snooping表项的成员端口转发该组播数据报文,若前者高于后者,则删除该相应IGMP-Snooping表项;若相应IGMP-Snooping表项中设置有业务等级信息,则根据相应IGMP-Snooping表项转发该组播数据报文。具体实现时,二层交换机在获取组播数据报文中携带的业务等级信息后,可将其添加到相应IGMP-Snooping表项中,以便进行比较。
考虑到组播接收客户端在构造IGMP成员报告报文时,可能会携带高等级的权限等级信息,低权限等级的客户端在侦听高权限等级的客户端发送的IGMP成员报告报文时,可能会复制报文中的权限等级信息,甚至直接置为最高位,因此为了提高安全性,本发明实施例可对IGMP成员报告报文中携带的权限等级信息进行加密处理。
下面结合实施例二,对采用加密权限等级信息的技术方案进行详细描述。
实施例二
本实施例描述了组播业务实现流程,应用于采用了组播路由协议的系统架构。该系统架构中的路由器上启用了PIM协议,组播接收客户端设备与组播接收侧DR上启用了IGMP协议。组播接收客户端设备上配置有权限等级,组播源上配置有业务等级。组播接收客户端设备上还配置有与组播地址(或组播组)对应的密钥,具体的,当管理服务器为组播接收客户端分配组播地址时,生成相应密钥,并连同组播地址传递给组播接收客户端。
当组播接收客户端欲建立与组播源的组播业务关系时,如图4所述,其组播业务建立流程可包括:
步骤401,组播接收客户端发送IGMP成员报告报文以请求加入组播组,该报文中携带该组播接收客户端的权限等级信息和该报文的发包序列号,该权限等级信息和报文发包序列号使用相应组播组对应的密钥进行了加密处理。
具体实施时,当组播接收客户端欲建立与组播源的组播业务关系时,首先从该业务系统架构中的管理服务器获取组播源的组播地址和对应该组播地址的密钥,利用该密钥加密客户端的权限等级信息和该IGMP成员报告报文的发包序列号,然后将加密信息携带于给对应组播地址的IGMP成员报告报文中发送。其中,客户端发送IGMP成员报告报文时,需要递增报文发包序列号。
步骤402,组播接收侧DR收到携带有客户端权限等级信息的IGMP成员报告报文后,若还未获取到组播地址对应的密钥,则转入步骤403;若已获取到组播地址对应的密钥,则转入步骤404。
步骤403,组播接收侧DR生成相应组播路由表项,记录该加密信息,然后转入步骤405。
具体实施时,组播接收侧DR由于目前还没有客户端所请求加入的组播组对应的密钥,无法解密出报文中携带的客户端权限等级信息,因此执行以下步骤:根据该IGMP成员报告报文的组播地址、接收接口匹配相应的IGMP表项,若未匹配到相应IGMP表项,则生成相应IGMP表项,其中记录有组播地址、源IP地址、以及接口地址等信息,对应于该IGMP成员报告报文的组播组、源IP地址和接收接口,记录加密的权限等级信息和发包序列号,并生成PIM(*,G)表项(其中包括所请求加入的组播组(组播地址)以及接收到该IGMP成员报告报文的接口),或在PIM(*,G)表项中添加对应的出接口(在存在对应组播的PIM(*,G)表项时)。若匹配到相应IGMP表项,则用该IGMP成员报告报文中携带的加密的权限等级信息和发包序列号更新所记录的相应的加密的权限等级信息和发包序列号。
步骤404,组播接收侧DR利用对应密钥解密得到IGMP成员报告报文中携带的组播接收客户端的权限等级信息和报文发包序列号,并根据报文发包序列号判断该IGMP成员报告报文合法后,生成PIM(*,G)表项,并设置表项中的出接口权限等级为本次接收到的IGMP成员报文中携带的客户端权限等级。然后转入步骤405。
具体实施时,组播接收侧DR在收到IGMP成员报告报文后通常会生成或更新IGMP表项,该表项中记录组播地址、源IP地址、对应的IP地址以及接口地址等信息。本实施例中,组播接收侧DR还可在IGMP表项中添加发包序列号,以用于根据发包序列号判断IGMP成员报告报文的合法性。还可以在IGMP表项中增加客户端权限等级。
具体的,组播接收侧DR利用对应密钥解密得到IGMP成员报告报文中携带的组播接收客户端的权限等级信息和报文发包序列号后,根据该IGMP成员报告报文的组播地址、接收接口匹配相应的IGMP表项查询相应IGMP表项,查询结果以及后续处理可能存在几种情况之一:
情况一:匹配到相应IGMP表项
此种情况下,比较该IGMP表项的源IP地址与IGMP成员报告报文的源IP地址是否相同,如果不相同,则比较解密得到的权限等级信息与匹配到的IGMP表项中的权限等级信息,将二者权限等级高者所对应的源IP地址和权限等级更新到该IGMP表项中,将相应PIM(*,G)表项中的对应出接口的组播接收客户端的权限等级信息与该IGMP表项中的权限等级信息保持一致并同步到组播路由表项;如果相同,则比较解密得到的报文发包序列号与相应IGMP表项中的发包序列号,若前者不大于后者,则丢弃所述IGMP成员报告报文,否则,将相应IGMP表项中的发包序列号更新为解密得到的发包序列号,并更新老化时间。
情况二:未匹配到相应IGMP表项
此种情况下,根据该IGMP成员报告报文对应的组播组、接收接口、源IP地址和解密得到的发包序列号及权限等级生成相应IGMP表项;在PIM(*,G)表项中添加对应的出接口,设置组播接收客户端的权限等级并同步到组播路由表项,并对已生成的相应组播转发表项进行刷新(包括比较所述组播路由表项中的业务等级信息和所添加的出接口上设置的权限等级信息,若该权限等级不低于该业务等级,则将该出接口添加到相应组播转发表项的出接口列表中),或者生成相应的PIM(*,G)表项并添加对应出接口及设置组播接收客户端的权限等级信息。
为了进一步提高安全性,优选的,组播接收客户端在发送IGMP成员报告报文时,将自己的IP地址用相应组播组对应的密钥加密后携带于报文的载荷部分,当接收侧DR收到IGMP成员报告报文后,首先解密得到载荷部分的IP地址,再将其与报文头中的源IP地址比较,若相同,则认为该报文合法,然后按照上述操作进行处理;若不相同,则认为非法,并丢弃该报文。在IGMP成员报告报文被非法客户端截获后由非法客户端发送该IGMP成员报告报文的情况下,该IGMP成员报告报文头部的源IP地址与报文载荷部分的源IP地址通常不会相同(载荷部分的源IP地址经过加密,无法被非法客户端获知),因此通过上述方式可以一定程度上识别客户端的合法性。
步骤405,组播接收侧DR向上游发送PIM(*,G)加入报文。其中,在步骤403之后,组播接收侧DR通过向组播源方向发送PIM(*,G)加入报文,建立组播接收侧DR到组播源侧之间的组播转发路径,该步骤的具体实现同图2中的步骤203,在此不再赘述;在步骤404之后,组播接收侧DR通过向组播源方向发送PIM(*,G)加入报文,刷新转发路径上相应表项的老化时间。
当组播源发送组播数据报文时,将业务等级信息和对应组播地址的密钥携带于组播数据报文,以使组播接收侧DR根据该密钥解密之前接收到的客户端权限等级信息,并在生成组播转发表项时,仅将权限等级高于或等于相应业务等级的出接口添加到组播转发表项中,从而避免将组播数据报文转发给业务权限等级低的组播接收客户端。
本发明实施例中,组播数据报文转发流程的一种具体实现可如图5所示,包括:
步骤501,组播源发送组播数据报文,在组播数据报文中携带该组播源的业务等级信息和对应组播地址的密钥信息。
具体实施时,组播源可以将业务等级信息和对应组播地址的密钥信息携带于IP头中自定义的选项中。
步骤502,组播数据报文沿组播转发路径到达组播接收侧DR后,接收侧DR查询组播转发表,若未查询到相应组播转发表项,则转入步骤503;若查询到相应组播转发表项,则转入步骤505。
步骤503~504,组播接收侧DR生成组播转发表项,然后转入步骤505。
具体实施时,组播接收侧DR收到组播源发送过来的组播数据报文后,获取组播数据报文中携带的业务等级信息和密钥,查询相应PIM(*,G)表项,若该表项中的对应出接口的客户端权限等级和相应发包序列号还未解密,则利用该密钥对该权限等级和发包序列号进行解密,并将解密得到的权限等级添加到相应PIM(*,G)表项的对应出接口上并同步到组播路由表项,将解密得到的发包序列号添加到相应IGMP表项中;并进一步将该业务等级信息作为相应组播路由表项的业务等级信息添加到相应组播路由表项中,并根据组播路由表项刷新相应组播转发表项或生成相应组播转发表项。
组播接收侧DR在根据组播路由表项生成组播转发表项时,比较组播路由表项的业务等级信息和出接口的权限等级信息,在生成的组播转发表中,只有权限等级高于或等于业务等级的出接口才会被添加到对应表项的出接口中。
步骤505,组播接收侧DR根据组播转发表项进行组播数据报文转发处理。
具体实施时,组播接收侧DR按照现有方式,根据组播转发表项中的出接口,将组播数据报文复制到各出接口处转发。
通过以上流程可以看出,组播接收客户端在IGMP成员报告中添加了该客户端的权限等级并进行了加密处理,密钥信息随同组播数据报文发送到组播接收侧DR,从而使组播接收侧DR解密得到客户端权限等级信息后,根据组播业务的等级和客户端的权限等级进行组播数据报文转发控制,提高了组播业务的安全性。另外,通过将IGMP成员报告报文的发包序列号连同客户端的权限等级信息一起加密,使组播接收侧进一步可根据发包序列号识别合法与非法组播客户端,从而进一步提高组播业务的安全性。
在组播系统架构中,组播接收侧DR可连接二层交换机,通过该二层交换机连接多个组播接收客户端。针对上述系统架构,本发明实施例优选的,在二层交换机上使能IGMP-Snooping,并进一步对IGMP-Snooping进行升级,具体的:
当二层交换机侦听到客户端发送的IGMP成员报告报文后,与组播接收侧DR类似,二层交换机可生成IGMP表项或类似表项,以记录组播组、接口、源IP地址、发包序列号、客户端权限等级等信息。
具体的,二层交换机侦听到组播接收客户端的IGMP成员报告报文后,在已从组播数据报文中获取到相应组播组对应的密钥的情况下执行以下步骤:
使用相应密钥解密得到该IGMP成员报告报文中携带的组播接收客户端的权限等级信息和该报文的发包序列号;然后,根据所述IGMP成员报告报文的组播地址和接收端口匹配相应的IGMP -Snooping表项;若匹配到相应IGMP-Snooping表项,则比较所述IGMP成员报告报文的发包序列号与相应IGMP-Snooping表项中的发包序列号,若前者不大于后者,则丢弃所述IGMP成员报告报文,否则,将相应IGMP-Snooping表项中的发包序列号更新为所述IGMP成员报告报文的发包序列号;若未匹配到相应IGMP-Snooping表项,则根据所述IGMP成员报告报文的组播地址、接收端口、发包序列号以及所述IGMP成员报告报文中携带的组播接收客户端的权限等级信息生成相应IGMP-Snooping表项。
二层交换机在获取到加密的权限等级信息和发包序列号后,在还未从组播数据报文中获取到相应组播组对应的密钥的情况下,执行以下步骤:
根据该IGMP成员报告报文的组播地址和接收端口匹配相应的IGMP -Snooping表项;若未匹配到相应IGMP-Snooping表项,则根据该IGMP成员报告报文的组播地址、接收端口生成相应IGMP-Snooping表项,并对应于所述IGMP成员报告报文的组播地址和接收端口,记录加密的权限等级信息和发包序列号;若匹配到相应IGMP-Snooping表项,则用该IGMP成员报告报文中携带的加密的权限等级信息和发包序列号更新所记录的相应的加密的权限等级信息和发包序列号。
当二层交换机从组播接收侧DR接收到组播数据报文后,获取其中携带的业务等级信息和相应组播组对应的密钥,根据该组播数据报文的组播组查询相应IGMP-Snooping表项,若相应IGMP-Snooping表项中没有设置有业务等级信息,则比较该业务等级信息与该相应IGMP-Snooping表项的成员端口的权限等级信息,若前者不高于后者,则在该相应IGMP-Snooping表项中设置该业务等级信息,并从该相应IGMP-Snooping表项的成员端口转发该组播数据报文,若前者高于后者,则删除该相应IGMP-Snooping表项,若相应IGMP-Snooping表项中设置有业务等级信息,则根据相应IGMP-Snooping表项转发该组播数据报文。其中,若查询到的相应IGMP-Snooping表项的成员端口上的权限等级信息还未解密,则首先使用从所述组播数据报文中获取到的密钥解密相应IGMP-Snooping表项的成员端口上的权限等级信息和发包序列号,将解密得到的权限等级信息设置到相应IGMP-Snooping表项的相应成员端口上和相应IGMP-Snooping表项中,将解密得到的发包序列号设置在相应IGMP-Snooping表项中。
为了更清楚的描述本发明实施例,下面以图6所示的系统架构为例,描述本发明实施例的具体实现过程。
如图6所示,业务终端是组播源,路由器R1~R3上启用了PIM协议。R2是客户端1直连的DR,R3是客户端2连接的DR,R3通过二层交换机S1连接客户端2和客户端3,R1是业务终端1直连的DR。管理服务器为业务终端1配置权限5,为客户端1配置权限6,为客户端2配置权限5,为客户端3配置权限4;管理服务器为业务终端1分配组播地址G1。
客户端1建立与业务终端1的业务关系时,从管理服务器端获取到业务终端的组播地址G1,发送关于G1的IGMP成员报告报文,其中携带了客户端的权限等级信息6。R2收到携带客户端1权限6的关于G1的IGMP成员报告报文后,在PIM(*,G1)表项的出接口中添加客户端1的权限等级信息6。业务终端1根据管理服务器的请求,发送组播数据(S1,G1),该组播数据报文的IP头中增加有自定义选项,对应业务终端1的权限5。R2收到业务终端1发送过来的组播数据后,根据相应的PIM(*,G)表项生成相应的出接口设置有组播接收客户端的权限等级信息的组播路由表项,获取组播数据报文中的业务等级信息5,在对应的组播路由表项中,添加表项的业务等级信息5;然后比较组播路由表项的业务等级信息5和出接口的权限等级信息6,将连接客户端1的接口添加到相应组播转发表项的出接口列表中,组播数据根据组播转发表项进行转发。
组播接收侧DR(R3)收到客户端3发送的关于G1的IGMP成员报告报文后按照前述方式处理,在建立组播转发表项时,发现出接口的权限等级信息4低于业务等级信息5,则不添加对应出接口到组播转发表项中。
组播接收侧DR(R3)的同一个接口收到客户端2和客户端3发送的关于G1的IGMP成员报告报文后,R3选取权限等级最高的客户端2的权限等级信息5作为PIM(*,G1)表项的出接口权限等级信息。交换机S1侦听到客户端2和3发送IGMP成员报告报文后,获取报文中的权限等级信息,添加到IGMP-Snooping表项的成员端口上,连接客户端2的成员端口权限等级信息为5,连接客户端3的成员端口权限等级信息为4,同时在接收到组播数据时,根据组播数据的IP头携带的自定义选项,获取组播数据报文中的业务等级信息5,添加到IGMP-Snooping表项上,交换机比较表项的业务等级信息和成员端口的权限等级信息,选择向成员端口的权限等级信息高于或等于业务等级的连接客户端2的成员端口转发组播数据。
以上描述的流程中,组播接收客户端发送的IGMP成员报告报文中携带的客户端权限等级信息均未加密。下面描述的流程中,组播接收客户端在对客户端权限等级信息进行加密处理后携带于IGMP成员报告报文发送。其中,管理服务器为业务终端1分配组播地址G1时,生成密钥PW1,连同组播地址传递给业务终端1。
当客户端1建立与业务终端1的业务关系时,从管理服务器端获取到业务终端的组播地址G1和对应该组播组的密钥PW1,利用该密钥PW1加密客户端的权限等级信息6和报文发包序列号(假设初始为1),将加密后的权限等级信息和发包序列号携带于IGMP成员报告报文发送。客户端继续发送IGMP成员报告报文时,需要递增报文发包序列号(递增后为2)。
组播接收侧DR(R2)收到携带客户端1权限等级信息6的关于G1的IGMP成员报告报文后,由于没有密钥信息,先生成普通的PIM(*,G1)表项(其中包括所请求加入的组播组(组播地址)以及接收到该IGMP成员报告报文的接口),向上游发起PIM加入报文,同时记录加密后的权限等级信息和报文发包序列号。
组播接收侧DR(R2)收到业务终端1发送过来的组播数据后,获取组播数据报文中的业务等级信息5和密钥PW1,刷新对应PIM表项,在对应的PIM表项中,添加业务等级信息5;然后利用获取到的密钥PW1,解密客户端1的权限等级信息和报文发包序列号,记录报文发包序列号和IGMP成员报告报文的源IP地址(IP_C1)到IGMP表项中,刷新PIM(*,G1)表项和组播路由表项,将客户端1的权限等级信息6添加到PIM(*,G1)表项和组播路由表项的出接口中,比较组播路由表项的业务等级信息和出接口的权限等级信息,在生成的组播转发表中,只有权限高于或等于业务等级的出接口才会被添加到对应组播转发表项的出接口中,组播数据根据组播转发表项进行转发。
基于相同的技术构思,本发明实施例还提供了一种路由交换设备和二层交换设备(如二层交换机)。
参见图7,为本发明实施例提供的路由交换设备的结构示意图,该设备作为指定路由器应用于组播接收侧,该设备可包括:表处理模块701、转发处理模块702,其中:
表处理模块701,用于在本设备接收到IGMP成员报告报文后,获取其中携带的组播接收客户端的权限等级信息,并将其设置在相应组播相关路由表项(如PIM(*,G)表项)中的对应出接口上,所述对应出接口为收到所述IGMP成员报告报文的接口;以及,根据转发处理模块702的指示,生成相应的出接口设置有组播接收客户端的权限等级信息的组播路由表项,以及根据该组播路由表项生成相应的组播转发表项,其中,生成相应的组播转发表项的过程包括:获取组播数据报文中携带的组播组的业务等级信息并将其设置在相应的组播路由表项中,比较所述业务等级信息和相应组播路由表项中出接口上设置的权限等级信息,并将权限等级不低于业务等级的出接口添加到相应组播转发表项的出接口列表中;
转发处理模块702,用于在接收到相应组播数据报文后,若查询到相应组播转发表项,则根据相应的组播转发表项转发所述组播数据报文,若未查询到相应组播转发表项,则指示表处理模块701根据相应的组播相关路由表项生成相应的出接口设置有组播接收客户端的权限等级信息的组播路由表项,根据该组播路由表项生成相应的组播转发表项,并根据表处理模块701生成的相应的组播转发表项转发所述组播数据报文。
具体的,表处理模块701的处理过程可包括:从接收到的IGMP成员报告报文中获取组播接收客户端的权限等级信息;根据所述IGMP成员报告报文的组播地址、接收接口匹配相应的IGMP表项;
若未匹配到相应IGMP表项,则根据所述IGMP成员报告报文对应的组播组、接收接口、源IP地址和发包序列号及权限等级信息生成相应IGMP表项;在组播相关路由表项中添加对应的出接口,设置组播接收客户端的权限等级信息并同步到组播路由表项,对已生成的相应组播转发表项进行刷新,或者生成相应的组播相关路由表项并添加对应出接口及设置组播接收客户端的权限等级信息;其中,对相应组播转发表项进行刷新具体包括:比较所述组播路由表项中的业务等级信息和所添加的出接口上设置的权限等级信息,若该权限等级不低于该业务等级,则将该出接口添加到相应组播转发表项的出接口列表中;
若匹配到相应IGMP表项,则比较该IGMP表项的源IP地址与IGMP成员报告报文的源IP地址是否相同,如果不相同,则比较从IGMP成员报告报文中获取的组播接收客户端的权限等级信息与匹配到的IGMP表项中的权限等级信息,将二者权限等级高者所对应的源IP地址和权限等级更新到该IGMP表项中,将相应组播相关路由表项中的对应出接口的组播接收客户端的权限等级信息与该IGMP表项中的权限等级信息保持一致并同步到组播路由表项;如果相同,则比较IGMP成员报告报文发包序列号与相应IGMP表项中的发包序列号,若前者不大于后者,则丢弃所述IGMP成员报告报文,否则,将相应IGMP表项中的发包序列号更新为新得到的发包序列号,并更新老化时间。
具体的,所述IGMP成员报告报文中所携带的组播接收客户端的权限等级信息是经过相应组播组对应的密钥加密处理的,与权限等级信息一同加密的还有所述IGMP成员报告报文的发包序列号;组播数据报文中还携带有相应组播组对应的密钥,相应的:
表处理模块701可在本设备从所述IGMP成员报告报文获取到加密的权限等级信息和发包序列号后,在已经从组播数据报文中获取到相应组播组对应的密钥的情况下,执行以下步骤:使用相应密钥解密得到所述IGMP成员报告报文中携带的权限等级信息和发包序列号;根据所述IGMP成员报告报文的组播地址、接收接口匹配相应的IGMP表项;若未匹配到相应IGMP表项,则根据所述IGMP成员报告报文对应的组播组、接收接口、源IP地址和解密得到的发包序列号及权限等级信息生成相应IGMP表项;在组播相关路由表项中添加对应的出接口,设置组播接收客户端的权限等级信息并同步到组播路由表项,对已生成的相应组播转发表项进行刷新,或者生成相应的组播相关路由表项并添加对应出接口及设置组播接收客户端的权限等级信息;其中,对已生成的相应组播转发表项进行刷新具体为,比较所述组播路由表项中的业务等级信息和所添加的出接口上设置的权限等级信息,若该权限等级不低于该业务等级,则将该出接口添加到相应组播转发表项的出接口列表中;
若匹配到相应IGMP表项,则比较该IGMP表项的源IP地址与IGMP成员报告报文的源IP地址是否相同,如果不相同,则比较解密得到的权限等级信息与匹配到的IGMP表项中的权限等级信息,将二者权限等级高者所对应的源IP地址和权限等级更新到该IGMP表项中,将相应组播相关路由表项中的对应出接口的组播接收客户端的权限等级信息与该IGMP表项中的权限等级信息保持一致并同步到组播路由表项;如果相同,则比较解密得到的报文发包序列号与相应IGMP表项中的发包序列号,若前者不大于后者,则丢弃所述IGMP成员报告报文,否则,将相应IGMP表项中的发包序列号更新为解密得到的发包序列号,并更新老化时间。
或者,表处理模块701可在本设备获取到加密的权限等级信息和发包序列号后,在还未从组播数据报文中获取到相应组播组对应的密钥的情况下,执行以下步骤:根据所述IGMP成员报告报文的组播地址、接收接口匹配相应的IGMP表项;若未匹配到相应IGMP表项,则根据所述IGMP成员报告报文对应的组播组、接收接口、源IP地址生成相应IGMP表项,在组播相关路由表项中添加对应的出接口或者生成相应的组播相关路由表项并添加对应的出接口,并对应于所述IGMP成员报告报文的组播组、源IP地址和接收接口,记录加密的权限等级信息和发包序列号;若匹配到相应IGMP表项,则用所述IGMP成员报告报文中携带的加密的权限等级信息和发包序列号更新所记录的相应的加密的权限等级信息和发包序列号;
表处理模块701还用于:在本设备接收到相应组播数据报文后,获取所述组播数据报文中携带的密钥,使用获取到的密钥解密得到相应组播组、接收接口和源IP地址对应的权限等级信息和发包序列号,并将解密后的权限等级信息设置在相应组播相关路由表项的对应出接口上并同步到组播路由表项,将解密得到的发包序列号添加到相应IGMP表项中,刷新相应组播转发表项或生成相应组播转发表项。
进一步的,表处理模块701还用于:在根据所述IGMP成员报告报文对应的组播组、接收接口匹配相应的IGMP表项之前,使用相应组播组对应的密钥解密得到所述IGMP成员报告报文载荷部分携带的IP地址,并比较解密得到的IP地址与所述IGMP成员报告报文头部中的源IP地址是否相同;若两者不相同,则丢弃本次接收到的IGMP成员报告报文;其中,所述IGMP成员报告报文载荷部分的IP地址是组播接收客户端将自己的IP地址用相应组播组对应的密钥加密后携带于IGMP成员报告报文中的。
具体的,所述业务等级信息携带于组播数据报文的组播IP报文头中的DSCP字段;或者,所述业务等级信息携带于组播数据报文的组播IP报文头中的扩展选项。
参见图8,为本发明实施例提供的一种二层交换机,该交换机连接于组播接收客户端和上述作为组播接收侧DR的路由交换设备之间,且该二层交换机与组播接收客户端直连并使能了IGMP-Snooping,该交换机可应用于前述未采用加密方案的组播转发过程。该交换机可包括:IGMP-Snooping表处理模块801和转发处理模块802,其中:
IGMP-Snooping表处理模块801,用于在本设备侦听到组播接收客户端的IGMP成员报告报文后,执行:
获取其中携带的组播接收客户端的权限等级信息;
根据所述IGMP成员报告报文的组播地址和接收端口匹配相应的IGMP-Snooping表项;若匹配到相应IGMP-Snooping表项,则比较所述IGMP成员报告报文的发包序列号与相应IGMP-Snooping表项中的发包序列号,若前者不大于后者,则丢弃所述IGMP成员报告报文,否则,将相应IGMP-Snooping表项中的发包序列号更新为所述IGMP成员报告报文的发包序列号;若未匹配到相应IGMP-Snooping表项,则根据所述IGMP成员报告报文的组播地址、接收端口、发包序列号以及所述IGMP成员报告报文中携带的组播接收客户端的权限等级信息生成相应IGMP-Snooping表项;
转发处理模块802,用于在本设备从组播接收侧DR接收到组播数据报文后,获取其中携带的业务等级信息,根据所述组播数据报文的组播组查询相应IGMP-Snooping表项,若所述相应IGMP-Snooping表项中没有设置有业务等级信息,则比较该业务等级信息与该相应IGMP-Snooping表项的成员端口的权限等级信息,若前者不高于后者,则在该相应IGMP-Snooping表项中设置该业务等级信息,并从该相应IGMP-Snooping表项的成员端口转发该组播数据报文,若前者高于后者,则删除该相应IGMP-Snooping表项;若所述相应IGMP-Snooping表项中设置有业务等级信息,则根据所述相应IGMP-Snooping表项转发所述组播数据报文。
进一步的,该二层交换机还可以应用于前述实施例二的流程,此种情况下:
IGMP-Snooping表处理模块801在本设备侦听到携带加密的组播接收客户端的权限等级信息和发包序列号的组播接收客户端的IGMP成员报告报文后,在已从组播数据报文中获取到相应组播组对应的密钥的情况下,通过以下方式获取其中携带的组播接收客户端的权限等级信息:使用相应密钥解密得到所述IGMP成员报告报文中携带的组播接收客户端的权限等级信息,并进一步使用相应密钥解密得到所述IGMP成员报告报文中携带的报文的发包序列号。或者,IGMP-Snooping表处理模块801在本设备侦听到组播接收客户端的IGMP成员报告报文,并获取到加密的权限等级信息和发包序列号后,在还未从组播数据报文中获取到相应组播组对应的密钥的情况下,根据所述IGMP成员报告报文的组播地址和接收端口匹配相应的IGMP -Snooping表项;若未匹配到相应IGMP-Snooping表项,则根据所述IGMP成员报告报文的组播地址、接收端口生成相应IGMP-Snooping表项,对应于所述IGMP成员报告报文的组播地址和接收端口,记录加密的权限等级信息和发包序列号;若匹配到相应IGMP-Snooping表项,则用所述IGMP成员报告报文中携带的加密的权限等级信息和发包序列号更新所记录的相应的加密的权限等级信息和发包序列号。
相应的,转发处理模块802在本设备从组播接收侧DR接收到组播数据报文后,获取其中携带的相应组播组对应的密钥;以及,若查询到的相应IGMP-Snooping表项的成员端口上的权限等级信息还未解密,则首先指示所述IGMP-Snooping表处理模块使用从所述组播数据报文中获取到的密钥解密相应IGMP-Snooping表项的成员端口上的权限等级信息和发包序列号,将解密得到的权限等级信息设置到相应IGMP-Snooping表项的相应成员端口上和相应IGMP-Snooping表项中,将解密得到的发包序列号设置在相应IGMP-Snooping表项中。
需要说明的是,在IPV6体系中,本发明实施例中的IGMP协议可由MLD(Multicast Listener Discover,组播侦听发现)协议代替,即,组播接收端可通过MLD协议发送请求加入组播组的报文,但实现原理与本发明实施例的实现原理相同。
还需要说明的是,本发明的上述实施例是以组播路由协议的系统架构采用PIM协议为例描述的,相应的协议表项称为PIM表项,但本领域技术人员可以理解,还可以采用类似PIM协议的其它组播相关路由协议,为了与组播路由表项、组播转发表项相区别,可以将该其它组播相关协议的表项称为组播相关路由表项。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。