更新时间:2024-01-10
1 组播路由协议概述
本章描述如何配置组播路由协议。如果要了解本章组播路由命令的完整描述,请参考其它有关 "组播路由命令"的章节。
传统的IP传输只允许一台主机向单个主机(单播通信)或者所有主机(广播通信),组播技术则提供第三种选择:允许一台主机向某些主机发送报文。这些主机被称为组成员。发送到组成员的报文目的地址是某个D类地址(224.0.0.0~239.255.255.255)。组播报文的传输类似于UDP,只是一种尽力保证的服务,不提供类似于TCP的可靠传输和差错控制。构成组播的应用需要发送方和接收方。发送方无需加入某个组就可以发送组播报文,而接收方必须事先加入某个组才能接收到这个组的报文。组成员的关系是动态的,主机可以随时加入或者离开某个组,而且组成员的位置和个数没有任何限制。如果需要,一台主机可以同时多个组的成员。因此,组的活动状态和组成员的个数可随着时间发生变化。
路由器通过执行组播路由协议(例如PIM-DM,PIM-SM等)来维护转发组播报文的路由表,通过IGMP协议来学习在直连网段上组成员的状态。主机通过发送IGMP Report消息来加入特定的IGMP组。
IP组播技术的上述特定非常适合于“一对多”的多媒体应用。
1.1 组播路由实现
在的路由器软件中,组播路由包括如下协议:
• IGMP运行于局域网上的路由器和主机之间,跟踪组成员的关系。
• PIM-DM/PIM-SM是动态的组播路由协议,运行在路由器之间,通过建立组播路由表来实现组播转发。
下图显示了在IP组播环境中应用到的组播协议:
1.2 组播路由配置任务列表
1.2.1 基本组播配置任务列表
• 启动组播路由(必选)
• 配置TTL门槛(可选)
• 取消组播快速转发(可选)
• 配置组播静态路由(可选)
• 配置组播边界(可选)
• 配置组播 Helper(可选)
• 配置Stub组播路由(可选)
• 监视和维护组播路由(可选)
1.2.2 igmp配置任务列表
• 更改IGMP当前运行的版本
• 配置IGMP查询间隔
• 配置IGMP Querier间隔
• 配置IGMP最大响应时间
• 配置IGMP最后一个组成员查询间隔
• IGMP静态配置
• 配置IGMP Immediate-leave列表
1.2.3 PIM-DM配置任务列表
• 调整定时器
• 指定PIM-DM版本号
• 配置状态刷新
• 配置过滤列表
• 设置DR优先级
• 清除(S,G)信息
1.2.4 PIM-SM配置任务列表
• 配置静态RP
• 配置候选BSR
• 配置候选RP
• 显示PIM-SM组播路由
• 清除PIM-SM学习的组播路由
2 基本的组播路由配置
2.1 启动组播路由
启动组播路由以允许路由器软件转发组播报文。在全局配置态下输入以下命令启动组播报文转发:
命令
|
目的
|
ip multicast-routing
|
启动组播路由。
|
2.2 端口上启动组播功能
端口上运行组播路由协议会同时激活IGMP在端口上的操作。组播路由协议包括OLNK,PIM-DM,PIM-SM或者DVMRP。在同一个端口上最多只允许一个组播路由协议运行。在路由器连接多个组播域时,可以在不同端口上运行不同的组播协议。
尽管路由器软件能够很好地充当组播边界路由器(MBR)的作用,如有可能,请尽量保证不要在路由器上同时运行多个组播路由协议,因为这样会对某些组播路由协议造成不必要的影响。例如,当PIM-DM(仅支持(S,G)表项)和BIDIR PIM-SM(仅支持(*,G)表项)运行时,会造成混乱。
2.2.1启动PIM-DM
在端口运行PIM-DM以激活密集模式组播功能,按以下步骤进行:
命令
|
目的
|
ip pim-dm
|
进入需要运行PIM-DM的端口,在端口配置态下激活PIM-DM组播路由进程。
|
2.2.2启动PIM-SM
在端口运行PIM-SM以激活稀疏模式组播功能,按以下步骤进行:
命令
|
目的
|
ip pim-sm
|
进入需要运行PIM-SM的端口,在端口配置态下激活PIM-SM组播路由进程。
|
2.3 配置TTL阈值
使用 ip multicast ttl-threshold 配置端口上允许通过的组播报文TTL的阈值,使用 no ip multicast ttl-threshold 来使用默认值。默认值为 1。
命令
|
目的
|
ip multicast ttl-threshold ttl-value
|
配置端口的 ttl 阈值。
|
示例
下面的实例演示了系统管理员配置某个端口的TTL阈值:
interface VLAN 1
ip multicast ttl-threshold 200
2.4 配置IP组播边界
使用 ip multicast boundary 配置端口组播边界,使用 no ip multicast boundary 来取消设定的边界。第二次配置该命令将覆盖掉第一次配置的命令
命令
|
说明
|
ip multicast boundary access-list
|
在端口上配置IP组播边界。
|
举例
下面的实例演示了系统管理员配置某个端口的管理边界
interface VLAN 1
ip multicast boundary acl
ip access-list standard acl
permit 192.168.20.97 255.255.255.0
2.5 配置IP组播Helper
使用 ip multicast helper-map 命令来配置在组播网络上使用组播路由来连接两个广播网络。使用no ip multicast helper-map 在与源广播网络相连的第一跳路由器上。
命令
|
说明
|
interface type number
|
进入端口配置态。
|
ip multicast helper-map broadcast group-address access-list
|
配置 ip multicast helper 命令,将广播报文转换为组播报文。
|
ip directed-broadcast
|
允许定向广播。
|
exit
|
退回到全局配置态。
|
ip forward-protocol udp [port]
|
配置允许转发的报文端口号。
|
在与目的广播网络相连的最后一跳路由器上
命令
|
说明
|
interface type number
|
进入端口配置态。
|
ip directed-broadcast
|
允许定向广播。
|
ip multicast helper-map group-address broadcast-address access-list
|
配置 ip multicast helper 命令,将组播报文转换为广播报文。
|
exit
|
退回到全局配置态。
|
ip forward-protocol udp [port]
|
配置允许转发的报文端口号。
|
举例
下面的实例演示了系统管理员配置组播 helper 命令。
路由交换机上的配置如下图所示,在第一跳路由交换机上 vlan1端口上配置ip directed-broadcast 允许处理定向广播报文。配置 ip multicast helper-map broadcast 230.0.0.1 testacl1 ,允许将 192.168.20.97/24 源地址发送的 端口号为4000的udp广播报文转换成 目的地址为 230.0.0.1的组播报文发送。
在最后一跳路由交换机 vlan 2 端口上配置 ip directed-broadcast 允许处理定向广播报文。配置 ip multicast helper-map 230.0.0.1 172.10.255.255 testacl2 ,允许将 192.168.20.97/24 源地址发送的 端口号为4000的目的地址为 230.0.0.1 的组播报文转换成目的地址为 172.10.255.255 的广播报文发送。
在与源广播网络相连的第一跳路由交换机上:
interface VLAN 1
ip directed-broadcast
ip multicast helper-map broadcast 230.0.0.1 testacl
ip pim-dm
!
ip access-list extended testacl
permit udp 192.168.20.97 255.255.255.0 any
!
ip forward-protocol udp 4000
在与目的广播网络相连的最后一跳路由交换机上
interface VLAN 2
ip directed-broadcast
ip multicast helper-map 230.0.0.1 172.10.255.255 testacl2
ip pim-dm
!
ip access-list extended testacl2
permit udp 192.168.20.97 255.255.255.0 any
!
ip forward-protocol udp 4000
2.6 配置Stub组播路由
使用 ip igmp helper-address 和 ip pim-dm neighbor-filter 来配置Stub组播路由
在stub router 与 host 相连的端口上配置。
命令
|
说明
|
interface type number
|
进入端口配置态。
|
ip igmp helper-address destination-address
|
配置 ip igmp helper-address 命令, 将多播报文中转倒 central router 上。
|
在 central router 与 stub router 相连的端口上
命令
|
说明
|
interface type number
|
进入端口配置态。
|
ip pim-dm neighbor-filter access-list
|
过滤掉所有发送到 stub router 的pim 报文。
|
举例
路由交换机 A 与 B 的配置如下图所示 :
Stub switch A Configuration
ip multicast-routing
ip pim-dm
ip igmp helper-address 10.0.0.2
Central switch B Configuration
ip multicast-routing
ip pim-dm
ip pim-dm neighbor-filter stubfilter
ip access-list stubfilter
deny 10.0.0.1
2.7 监视和维护组播路由
2.7.1.1清除组播缓存、路由表
如果怀疑特定的缓存或者路由表失效时,可以清除它的内容。在管理态下,输入如下命令:
命令
|
说明
|
clear ip igmp group [type number] [group-address | <cr>]
|
清除IGMP缓存中的表项。
|
clear ip mroute {pim-sm|pim-dm}[* | group-address | source-address]
|
清除组播路由表的表项。
|
2.7.1.2显示组播路由表和系统统计信息
通过显示IP组播路由表、有关缓存或者数据库,可以判断资源使用情况并解决网络问题。
在管理态下使用如下命令来观察组播路由的统计信息:
命令
|
说明
|
show ip igmp groups [type number | group-address]
|
显示IGMP缓存中多播组的信息。
|
show ip igmp interface [type number]
|
显示端口上IGMP的配置信息。
|
show ip mroute mfc
|
显示组播转发缓存。
|
show ip rpf [pim-dm | pim-sm |ucast ] source-addresssss
|
显示RPF信息。
|
3 IGMP配置
3.1 简介
3.1.1.1IGMP
IGMP是一类针对多播组成员管理的协议,IGMP即Internet Group Management Protocol的缩写。IGMP是一种不对称的协议,它包括主机端(Host)和路由器端(Router)两方面的内容:主机端的协议规定了作为多播组成员的主机如何向Router报告自身属于不同的多播组的身份,以及主机如何响应Router发送的Query报文的过程;Router端的协议规定了支持IGMP的Router如何获得本地网络内主机的多播组成员身份,如何根据主机的Report报文更改Router保存的多播组成员信息。
通过IGMP Router端协议在我们路由器中的实现,可以向路由器中的多播路由协议提供当前网络内多播组的成员存在情况,以决定是否需要转发多播(Multicast)报文。综上所述,为使我们的路由器支持IP报文的多播过程,需要实现多播路由协议和IGMP Router端协议。目前我们的路由器中已经实现了IGMP Router端协议,支持当前的最新版本——IGMP 版本3。
在实际应用中,没有针对IGMP单独的启动命令,IGMP-Router端功能由多播路由协议(Multicast Routing Protocol)启动。
3.2 IGMP配置
IGMP-Router端特性的配置命令主要是调整IGMP参数一类的命令,下面就简要介绍IGMP-Router端的基本配置命令。如果需要了解全部的IGMP-Router端实现的命令,请参照IGMP的命令说明文档。
3.2.1更改IGMP当前运行的版本
自从IGMP提出以来,至今已经有三个正式的版本,对应的rfc分别为:rfc1112、rfc2236和rfc3376。其中,IGMP版本1只实现了最简单的多播组成员记录功能;版本2实现了针对某个特定多播组成员的查询功能以及IGMP主机离开某特定多播组的Leave报文,降低了组成员变化的延迟时间;版本3则进一步实现了对应于主机源地址的多播组成员身份的更新和维护,另外,版本3的IGMP Router还全面兼容版本1和版本2的IGMP主机端,我们的路由器软件系统提供了对这三种版本的IGMP Router端协议的全面支持。
因为IGMP是针对路由器的端口进行配置的,也就是说,可以在不同的端口上分别配置IGMP-Router端功能(由不同端口上配置的多播路由协议分别启动),而且可以在不同端口上运行不同版本的IGMP。
需要特别指出的是,对某一个特定的多播路由器来说,在连接同一网络的不同端口中,只能在某一个端口上开启IGMP-Router功能。
要更改某一个端口上运行的IGMP-Router端协议的版本,可以在端口配置态下使用以下命令进行更改:
命令
|
目的
|
ip igmp version version_number
|
更改当前端口正在运行的IGMP的版本。
|
3.2.2配置IGMP查询间隔
无论当前运行的IGMP-Router协议的版本号为多少,多播路由器在开启了IGMP-Router端功能的端口上都会每隔一段时间发送一次IGMP General Query报文,发送地址是224.0.0.1,目的是希望获得IGMP主机响应的Report报文,从而获得此端口连接的网络上IGMP主机分别属于哪些多播组的信息。这个General Query报文发送间隔时间被称为IGMP查询间隔(IGMP Query Interval),如果把这个时间设得比较大,则路由器无法迅速获得当前IGMP主机的多播组归属信息,但如果把这个时间设得比较小,又会增加当前网络上的IGMP报文的流量。
要更改某个端口上IGMP查询间隔的大小,可以在端口配置态下使用以下命令进行更改:
命令
|
目的
|
ip igmp query-interval time
|
更改当前端口的IGMP查询间隔大小,单位为秒。
|
3.2.3配置IGMP Querier间隔
对IGMP-Router端协议版本2和版本3而言,如果在同一网络内存在同样运行IGMP-Router端协议的路由器,就需要面对一个querier选取的问题,所谓querier,是指能发送query报文的路由器(实际上即启动了IGMP-Router端协议的路由器的某个端口),在正常运行情况下,同一网络内只存在一个querier,即只有一个路由器在发送IGMP Query报文。对于IGMP-Router端协议版本1,不存在querier选取的问题,因为IGMP-Router版本1中哪台路由器能发送IGMP Query报文是由多播路由协议指定的。
对IGMP-Router端协议版本2和版本3来说,采用同样的querier选取机制:即IP地址最小的路由器为此网络中的querier,对于非querier来说,需要保存一个时钟,记录querier存在的时间,当此时钟超时后,非querier变为querier,开始向外发送IGMP Query报文,直到此路由器收到IP地址比自己小的路由器发出的IGMP Query报文并再次变为非querier。
对IGMP-Router端协议版本2来说,其他querier存在的时间间隔可以通过以下命令进行配置:
命令
|
说明
|
ip igmp querier-timeout time
|
配置其他querier存在的时间间隔,单位为秒。
|
对IGMP-Router端协议版本1来说,其querier存在的时间间隔值没有实际作用;所以上述配置命令对V2,V3都有效
3.2.4配置IGMP最大响应时间
对IGMP-Router端协议版本2和版本3而言,在发送IGMP General Query报文时,在IGMP报文中有专门的数据域指明了IGMP主机的最大响应时间,即IGMP主机必须在收到IGMP General Query报文后的最大响应时间间隔内发送对此General Query报文的响应报文。如果此最大响应时间设置得过大,则会造成IGMP主机多播组成员身份变化的延迟,如果此最大响应时间设置得过小,又会造成网络上IGMP报文的流量过大。
注意:
IGMP最大响应时间必须小于IGMP查询间隔,在使用此配置命令时,如果最大响应时间的值大于查询间隔(query-interval)时,系统会将最大响应时间的值自动调整为(query-interval - 1)秒。
对IGMP-Router端协议版本2和版本3来说,可以在端口配置态下通过以下命令设置IGMP最大响应时间:
命令
|
目的
|
ip igmp query-max-response-time time
|
配置IGMP 最大响应时间,单位为秒。
|
对IGMP-Router端协议版本1来说,此最大响应时间间隔由协议内部规定其值的大小,不可配置,所以上述配置命令仅对IGMP-Router端协议版本1无效。
3.2.5配置IGMP最后一个组成员查询间隔
对IGMP-Router端协议版本2和版本3而言,当发送针对某个特定多播组的Group Specific Query报文时,将使用最后一个组成员查询间隔作为IGMP Query报文中的主机最大响应时间,即IGMP主机必须在收到Group Specific Query报文后的最后一个组成员查询间隔内发送对此Query报文的响应报文。如果IGMP主机通过查询本身的状态发现不需要响应此Query报文,则在此时间间隔后过去后仍然不发送响应报文,则多播路由器会对已经保存的多播组成员信息进行相应的更新。如果此时间间隔设置得过大,则会造成IGMP主机多播组成员身份变化的延迟,如果此时间间隔设置得过小,又会造成网络上IGMP报文的流量过大。
对IGMP-Router端协议版本2和版本3来说,可以在端口配置态下通过以下命令设置IGMP最后一个组成员查询间隔时间:
命令
|
目的
|
ip igmp last-member-query-interval time
|
配置IGMP 最后一个组成员查询间隔,单位为毫秒。
|
对IGMP-Router端协议版本1来说,配置的最后一个组成员的查询间隔没有被使用,尽管在端口运行IGMP版本1时可以配置这条命令,但并没有实际应用效果。
3.2.6IGMP静态配置
在我们交换机对IGMP-Router端协议的实现中,除了协议规定的功能外,我们还支持端口上的静态多播组配置。所谓“静态”是与IGMP主机端报告的“动态”信息相区别,对于IGMP主机来说,它的多播组成员关系可能是变化的,假设当前它只属于多播组group1,希望接收发往多播组group1的多播报文;但经过一段时间后它可能又属于多播组group2,还希望接收发往多播组group2的多播报文;而再经过一段时间之后,此IGMP主机可能不再属于任何一个多播组,所以说主机报告的多播组归属信息是动态变化的。
与上述“动态多播组”不同,某端口如果静态配置了属于某一个多播组,则除非使用no命令取消这种配置,多播协议将认为此端口始终需要接收发往这个多播组的多播报文。另外,为了提供和IGMP-Router协议版本3更好的兼容,静态配置的多播组可以指定希望接收来自哪些源地址的多播报文,即增加了多播报文接收的source-filter功能。
可以在端口配置态下通过以下命令设置该端口的静态多播组:
命令
|
目的
|
ip igmp static-group { * | group-address} {include source-address | <cr> }
|
配置该端口下的静态多播组属性。
|
3.2.7配置IGMP Immediate-leave列表
如果路由器某端口上已经启动了IGMP版本2,且在此端口所连接的网络上仅存在一个IGMP主机,则可以通过配置IGMP Immediate-leave列表实现IGMP主机的“Immediate Leave”功能。根据IGMP版本2的规定,当某个主机要离开特定的多播组时,该主机将向所有的多播路由器发送Leave报文,而多播路由器将发送Group Specific报文以确认此端口上是否已经不再有主机需要接受发向这个多播组的多播报文。而如果配置了“Immediate Leave”功能,则可以避免IGMP主机与多播路由器之间的报文交互,也可以避免多播路由器维护的多播组成员身份变化的延迟。
注意:
因为在全局配置态和端口配置态下都能配置此条命令,但全局配置态下配置的此条命令的优先级要高于在端口配置态下配置的命令,如果先在全局配置态下配置了此命令,则后来在端口配置态下配置的命令将被忽略;如果先在端口配置态下配置了此条命令,则后来在全局配置态下配置的命令将删除原来在端口配置态下配置的命令。
对IGMP-Router端协议版本2来说,可以在端口配置态下通过以下命令设置IGMP的Immediate-leave列表:
命令
|
目的
|
ip igmp immediate-leave group-list list-name
|
配置能实现“立即离开多播组”功能的IGMP主机的访问列表。
|
ip access-list standard list-name
|
创建名字为list-name的IP标准访问列表。
|
permit source-address
|
在IP标准访问列表的配置模式下配置我们希望实现“立即离开”功能的IGMP主机的IP地址。
|
因为IGMP-Router端协议版本1和版本3对leave报文的处理流程和IGMP版本2的处理流程存在很大差异,所以上述配置命令仅对IGMP-Router端协议版本1和版本3无效。
3.3 IGMP特性配置举例
3.3.1.1更改IGMP版本示例
因为高版本的IGMP-Router端协议能完全兼容低版本的IGMP主机,所以当网络环境中存在低版本的IGMP主机时并不需要更改多播路由器运行的IGMP-Router端协议的版本,但高版本的IGMP-Router端协议不能与低版本的IGMP-Router端协议兼容,所以在当前的网络环境内如果存在运行低版本IGMP-Router端协议的路由器时,需要更改运行高版本IGMP的路由器的相关端口上的IGMP-Router端协议的版本,更改的原则是:将IGMP-Router端协议版本改为同一网段上最低的IGMP-Router端协议的版本。
假设系统管理员知道路由器的某个端口连接的网络中存在运行IGMP-Router版本1以及IGMP-Router版本2的路由器,则需要将运行高版本的IGMP-Router协议的路由器对应端口的IGMP-Router协议版本号改为1。下面的实例演示了系统管理员将某个端口(下面的例子中为VLAN 1端口)上运行的IGMP的版本改为版本1的过程:
interface VLAN 1
ip igmp version 1
3.3.1.2配置IGMP查询间隔示例
下面的实例演示了系统管理员将某个端口(下面的例子中为VLAN 1端口)上IGMP的查询间隔改为50秒的过程:
interface VLAN 1
ip igmp query-interval 50
配置IGMP Querier间隔
对IGMP-Router端协议版本2和版本3而言,如果在同一网络内存在同样运行IGMP-Router端协议的路由器,就需要面对一个querier选取的问题,所谓querier,是指能发送query报文的路由器(实际上即启动了IGMP-Router端协议的路由器的某个端口),在正常运行情况下,同一网络内只存在一个querier,即只有一个路由器在发送IGMP Query报文。对于IGMP-Router端协议版本1,不存在querier选取的问题,因为IGMP-Router版本1中哪台路由器能发送IGMP Query报文是由多播路由协议指定的。
对IGMP-Router端协议版本2和版本3来说,采用同样的querier选取机制:即IP地址最小的路由器为此网络中的querier,对于非querier来说,需要保存一个时钟,记录querier存在的时间,当此时钟超时后,非querier变为querier,开始向外发送IGMP Query报文,直到此路由器收到IP地址比自己小的路由器发出的IGMP Query报文并再次变为非querier。
对IGMP-Router端协议版本2来说,其他querier存在的时间间隔可以通过以下命令进行配置:
命令
|
目的
|
ip igmp querier-timeout time
|
配置其他querier存在的时间间隔,单位为秒。
|
对IGMP-Router端协议版本1来说,其他querier存在的时间间隔值没有实际作用;对于IGMP-Router端协议版本3来说,此时间间隔由协议内部规定其值的大小,不可配置,所以上述配置命令仅对IGMP-Router端协议版本2有效。
3.3.1.3配置IGMP Querier间隔示例
下面的实例演示了系统管理员将某个端口(下面的例子中为VLAN 1端口)上IGMP的querier间隔改为100秒的过程:
interface VLAN 1
ip igmp querier-timeout 100
3.3.1.4配置IGMP最大响应时间示例
下面的实例演示了系统管理员将某个端口(下面的例子中为VLAN 1端口)上IGMP的最大响应时间改为15秒的过程:
interface VLAN 1
ip igmp query-max-response-time 15
3.3.1.5配置IGMP最后一个组成员查询间隔示例
下面的实例演示了系统管理员将某个端口(下面的例子中为VLAN 1端口)上IGMP的最后一个组成员查询间隔改为2000毫秒的过程:
interface VLAN 1
ip igmp last-member-query-interval 2000
3.3.1.6IGMP静态配置示例
静态多播组配置命令在使用不同的参数时可以定义不同类别的静态多播组,下面的示例将分别介绍使用不同命令参数的结果:
interface VLAN 1
ip igmp static-group *
上述配置命令在VLAN 1端口上静态配置了所有的多播组,即此端口属于所有的多播组,多播路由协议将向此端口转发所有的IP多播报文。
interface VLAN 1
ip igmp static-group 224.1.1.7
上述配置命令在VLAN 1端口上静态配置了多播组224.1.1.7,即此端口属于多播组224.1.1.7,多播路由协议将向此端口转发所有发往多播组224.1.1.7的IP多播报文。
interface VLAN 2
ip igmp static-group 224.1.1.7 include 192.168.20.168
上述配置命令在VLAN 2端口上静态配置了多播组224.1.1.7,但同时定义了此多播组的source-filter为192.168.20.168,即此端口属于多播组224.1.1.7,但只接收来自192.168.20.168的IP多播报文,多播路由协议将仅向此端口转发来自192.168.20.168,发往多播组224.1.1.7的IP多播报文。
针对上面的例子,如果还希望接收来自192.168.20.169,发往224.1.1.7的IP多播报文,则可以在端口配置态下再配置一条命令:
ip igmp static-group 224.1.1.7 include 192.168.20.169
如果还需要增加其他针对这个多播组的source-filter信息,可以多次执行上述命令,定义不同的source-address。
注意:
在使用上述配置命令时,不能对同一个多播组既配置针对某个特定的source address的多播组信息,同时配置针对同一多播组的所有source address的多播组信息;类似的,不能对同一个多播组既配置针对所有source address的多播组信息,同时配置针对同一多播组的某一个特定source address的多播组信息。后面配置的命令将被忽略。举例来说,如果已经配置了命令ip igmp static-group 224.1.1.7,此时再配置命令ip igmp static-group 224.1.1.7 include 192.168.20.168时,后一条命令将被忽略。
3.3.1.7配置IGMP Immediate-leave列表示例
下面的实例演示了系统管理员将某个端口(下面的例子中为VLAN 1端口)上允许实现“立即离开”功能的访问列表名配置为imme-leave,并将某IGMP主机的地址(在下面的例子中为192.168.20.168)加入该访问列表的完整过程。通过这些配置步骤,就能保证IP地址为192.168.20.168的IGMP主机实现了“立即离开”多播组的功能。
interface VLAN 1
ip igmp immediate-leave group-list imme-leave
exit
ip access-list standard imme-leave
permit 192.168.20.168
4 PIM-DM配置
4.1 PIM-DM简介
PIM-DM(Protocol Independent Multicast Dense Mode)是一种密集模式的多播路由协议,缺省认为当组播源开始发送组播数据时,域内所有的网络节点都需要接收该数据。因而,PIM-DM采用扩散-剪枝的方式进行组播数据包的转发。组播源开始发送数据时,沿路路由器向朝着源的RPF接口之外的所有PIM激活接口转发组播数据包。这样,PIM-DM域中所有网络节点都会收到这些组播数据包。为了完成组播转发,沿路的路由器需要为组G和它的源S创建相应的组播路由项(S,G)。 (S,G)路由项包括组播源地址、组播组地址、入接口、出接口列表、定时器和标志等。
如果网络中某区域没有组播组成员,PIM-DM协议会发送剪枝消息,将通往该区域的转发接口剪枝,并且建立剪枝状态。剪枝状态对应着超时定时器。当定时器超时时,剪枝状态又重新变为转发状态,组播数据得以再次沿着这些分支流下。另外,剪枝状态包含组播源和组播组的信息。当剪枝区域内出现了组播组成员时,为了减少反应时间,协议不必等待上游剪枝状态超时,而是主动向上游发送嫁接报文,以使剪枝状态变为转发状态。
只要源S仍然发送信息到G组,第一跳路由器就会周期性地向下面的初始广播树发送(S,G)状态刷新信息,以完成刷新。PIM-DM的状态刷新机制,可以刷新下游的状态,使广播树分支的剪枝不会超时。
PIM-DM在多路访问网络中,除了涉及DR的选举外,还引入了以下机制:使用断言机制来选举唯一的转发者以防向同一网段重复转发组播数据包;使用加入/剪枝抑制机制来减少冗余的加入/剪枝消息;使用剪枝否决机制来否决不应该的剪枝行为。
在PIM-DM域中,运行PIM-DM协议的路由器周期性的发送Hello消息,用以发现邻接的PIM路由器,进行叶子网络、叶子路由器的判断,并且负责在多路访问网络中进行指定路由器(DR)的选举。
为了适用于IGMP v1,PIM-DM负责进行DR的选取。当端口上所有PIM邻居都支持DR Priority时,选择优先级最高的成为DR。如果优先级相同,则选择具有最大端口IP值的路由器为DR;如果有路由器在hello报文中没有通告它的优先权,有多个路由器存在此情况,则选择端口IP值最高的路由器为DR。
路由器的PIM-DM v2支持邻居过滤列表、无分类域间路由(CIDR)、变长子网掩码(VLSM)和IGMP v1、v2、v3。
4.2 配置PIM-DM
4.2.1调整定时器
路由协议使用几个计时器来判断发送hello报文、状态刷新控制包报文的频率。Hello报文发送间隔时间的长短影响到邻居关系是否能正确建立。
要调整计时器,在路由器端口配置模式中使用如下命令:
命令
|
目的
|
ip pim-dm hello-interval
|
经过多长时间(单位:秒)从端口向邻居发送hello报文。
|
ip pim-dm state-refresh origination-interval
|
对于与源直连的第一跳路由器,是周期性发送状态刷新报文的间隔,仅仅对上游端口进行的配置生效;对于后续路由器,是端口允许接收并处理状态刷新报文的时间间隔。
|
4.2.2配置状态刷新
在管理模式,缺省情况下允许运行转发pim密集模式状态刷新控制消息。端口配置态的配置命令,对于与源直连的第一跳路由器,是周期性发送状态刷新报文的间隔,此时仅仅对上游端口进行的配置生效;对于后续路由器,是端口允许接收并处理状态刷新报文的时间间隔。
命令
|
目的
|
ip pim-dm state-refresh origination-interval
|
在端口上收发状态刷新报文的时间间隔。
|
4.2.3配置过滤列表
PIM-DM在缺省情况下没有设置过滤列表,包括邻居过滤列表以及组播边界过滤列表,都是在端口配置态下进行配置。
如果需要禁止某台路由器或者某个网段的路由器加入PIM-DM协商,就需要配置邻居过滤列表。为了禁止或者允许某些组通过本region,就需要设置边界组过滤列表。
命令
|
目的
|
ip pim-dm neighor-filter access-list name
|
配置邻居过滤列表。
|
ip multicast boundary access-list name
|
配置组过滤列表。
|
4.2.4设置DR优先级
进行DR的选取,以便能适用于IGMP v1。缺省情况下,路由器DR优先级为1。当端口上所有PIM邻居都支持DR Priority时,选择优先级最高的成为DR。如果优先级相同,则选择具有最大端口IP值的路由器为DR;如果有路由器在hello报文中没有通告它的优先权,有多个路由器存在此情况,则选择端口IP值最高的路由器为DR。
在端口配置态下进行该命令地配置:
命令
|
目的
|
ip pim-dm dr-priority value
|
在指定端口设置本地路由器DR优先级。
|
4.2.5清除(S,G)信息
正常情况下,可能需要清除本地MRT中的(S,G)表项或者清除通过(S,G)表项转发组播报文数的统计值。在管理模式下使用如下命令:
命令
|
目的
|
clear ip mroute pim-dm {* | group [source]}
|
清除本地MRT中的(S,G)表项,这个操作将删除本地多播路由表中的全部或者部分表项,并可能影响正常的多播报文转发,本命令只能删除上游端口是由PIM-DM多播路由协议创建的(S,G)条目。
|
|
|
4.3 PIM-DM状态刷新配置举例
参见“配置状态刷新”。
5 配置PIM-SM
5.1 PIM-SM简介
PIM 是Protocol Independent Multicast(协议无关组播)的简称。它表示可以利用任意单播路由协议(比如RIP、OSPF、IS-IS、BGP 等)所生成的单播路由表为IP组播提供路由。组播路由与所采用的单播路由协议无关,只要能够通过单播路由协议产生相应的组播路由表项即可。PIM 借助RPF(Reverse Path Forwarding,逆向路径转发)机制实现对组播报文的转发。当组播报文到达设备时,首先对其进行RPF检查:若RPF 检查通过,则创建相应的组播路由表项,从而进行组播报文的转发;若RPF 检查失败,则丢弃该报文。有关RPF 的详细介绍,请参见本白皮书第二章。
根据实现机制的不同,PIM 分为以下两种模式:
PIM-DM(Protocol Independent Multicast-Dense Mode,协议无关组播-密集模式)
PIM-SM(Protocol Independent Multicast-Sparse Mode,协议无关组播-稀疏模式)
另外,SSM(Source-Specific Multicast,指定信源组播)模型通过借助PIM-SM的部分技术来实现。
稀疏模式则是针对密集模式而言的。稀疏模式的基本观点是主机必须请求之后才能够接收数据,而密集模式则是先认为主机需要接收数据。稀疏模式通常用于较大的网络当中,而密集模式则适用于较小规模,组播成员较为密集的网络。
5.2 PIM-SM配置任务列表
启动全局multicast-routing
启动pim-sm进程
配置pim-sm的邻居过滤功能
DR的选举配置
配置pim-sm候选RP
配置pim-sm候选BSR
配置SPT和RPT切换阀值
配置pim-sm的SSM功能
配置pim-sm的管理域功能
配置pim-sm指定注册报文源地址功能
配置pim-sm的anycast-rp功能
显示pim-sm本地路由条目
跟踪pim-sm调试信息
清除pim-sm路由条目
5.2.1 启动全局组播
命令:ip multicast-routing
no ip multicast-routing
命令
|
目的
|
Ip multicast-routing
|
全局组播开启
|
如果需要使用pim-sm协议,则应当在配置态下执行以下命令:
switch_config#ip multicast-routing
执行结束之后,show running 会显示以下内容:
!
ip multicast-routing
!
如果不再需要使用pim-sm协议,则应当在配置态下执行:
switch_config #no ip multicast-routing
5.2.2 启动pim-sm进程
在全局使能了multicast-routing功能之后,还需要配置支持pim-sm的接口,才能在对应端口收发pim-sm协议消息。对于每一个路由端口,组播协议对端口具有独占性。也就是如果该端口上使能了其它组播协议,则不能再配置pim-sm。
命令
|
目的
|
ip pim-sm
|
进入需要运行PIM-SM的端口,在端口配置态下激活PIM-SM组播路由进程。
|
端口上pim-sm生效的前提是:
- 端口上配置了主ip地址
- 端口协议up
- 端口上配置了pim-sm
配置实例:
switch_config# interface VLAN 1
Switch_config_v1#ip address 172.17.21.173 255.255.255.0
Switch_config_v1#ip pim-sm
配置完成以后,用show running观看结果
!
interface VLAN1
ip address 172.17.21.173 255.255.255.0
no ip directed-broadcast
ip pim-sm
!
用show ip pim-sm interface观察结果:
switch#show ip pim-sm interface
Intf Address Ver/ Nbr Hello DR DR
Mode Count Intvl Prior Addr
v1 172.17.21.173 V2/S 0 30 1 172.17.21.173
如果要停止端口上pim-sm,则在对应端口执行no命令即可
switch_config#interface vlan 1
switch_config_v1#no ip pim-sm
在端口上还可以配置其它一些pim-sm命令,诸如管理域边界范围,bsr边界,DR优先级,邻居过滤列表,hello时间间隔等,具体参见《pim-sm命令手册》。
5.2.3 配置邻居过滤列表
pim-sm在工作时也需要维护邻居关系,pim-sm通过Hello消息来完成邻居的检测和相关参数的协商。路由器在使能了pim-sm功能的接口上周期性向所有pim路由器(224.0.0.13)以组播方式发送pim-sm hello报文,收到hello消息并且参数一致则建立邻居关系。如果一个路由器没有发送Hello消息却收到了Hello消息,则此路由器认为邻居存在,而对方如果没有收到hello报文,则认为邻居不存在。
可以在对应端口配置邻居过滤列表,对收到的hello报文进行邻居过滤检查。删除邻居过滤列表或者解禁刚才被否决的邻居,则需要等到下一个hello周期,才能获知邻居信息。
命令
|
目的
|
ip pim-sm nbr-filter access-list name
|
配置邻居过滤列表。
|
配置了邻居访问列表的步骤:
- 端口上配置了主ip地址
- 端口协议up
- 端口上配置了pim-sm
- 端口上配置pim-sm标准访问列表,进行邻居过滤
配置实例(交换机在vlan端口下配置):
switch_config#interface vlan 1
switch_config_v1#ip address 172.20.21.172 255.255.255.0
switch_config_v1#ip pim-sm
switch_config_v1#ip pim-sm nbr-filter nbr_permit
switch_config_v1#exit
switch_config#ip access-list standard nbr_permit
switch_config_std_nacl#permit 172.20.21.174 255.255.255.0
配置结果,允许来自172.20.21.0/24网段的hello报文,建立邻居关系。
R172_config_std_nacl#show ip pim-s nei
PIM-SMv2 Neighbor Table
Neighbor Interface Uptime/Expires DR
Address Prior
172.20.21.173 Ethernet2/1 00:15:24/00:01:30 1(DR)
如果将配置修改为如下,端口vlan 1上只允许来自172.20.21.174的hello报文
R172_config_std_nacl#permit 172.20.21.174 255.255.255.255
调试信息如下:
2004-1-1 00:16:26 PIM-SM: rcvd hello from 172.20.21.173, filter by acl
原来建立的邻居逐渐老化直到超时删除:
R172#show ip pim-s nei
PIM-SMv2 Neighbor Table
Neighbor Interface Uptime/Expires DR
Address Prior
172.20.21.173 Ethernet2/1 00:17:21/00:00:03 1(DR)
5.2.4 DR选举
DR的选举规则是各路由器之间通过比较Hello报文中所携带的优先级和IP地址,可以为多路由器网段选举DR。
DR的作用体现在:
- 对主机IGMP(v1)消息的响应上,如果主机通过以太网链路直接连接了两个或者更多的PIM-SM路由器,则只有DR对这些消息进行通告,发送(*,g) join报文。如果接收段的DR和assert winner发生冲突,则以后者为准。
- 组播源侧的DR负责产生原始注册报文,向RP注册。
如果发现有新邻居,由DR负责转发本地存储的BSM报文。
名称
|
中英文提示
|
说明
|
dr-pri
|
dr-pri - pim-sm interface DR priority
dr-pri - pim-sm端口DR的优先级
|
|
Pri-value
|
<0-4294967294> - DR priority, preference given to larger value
<0-4294967294> DR 路由器的优先级值,大者优先
|
|
如果本地要试图成为DR,则可以通过提高本地DR优先级,以及在DR优先级相同的情况下,提高IP地址值的方式来实现。
配置了DR优先级的步骤:
第1章端口上配置了主ip地址
第2章端口协议up
第3章端口上配置了pim-sm
第4章端口上配置ip pim-sm dr-pri **
5.2.5 配置候选RP
当需要把路由器配置为候选RP的时候,使用本命令,有如下四个步骤:
- 需要成为候选rp的路由端口首先需要配置ip地址
- 端口使能pim-sm
- 进入pim-sm全局配置态: router pim-sm
- 在pim-sm全局配置态下:c-rp ***
名称
|
中英文提示
|
说明
|
c-rp
|
c-rp - To be a PIMv2 RP candidate
c-rp – 配置端口为PIMv2 RP候选者
|
|
intf-type intf-name
|
指定端口类型和接口名称,该端口的IP地址将被通告为c-rp地址
|
充当c-rp的端口上必须使能pim-sm
|
list
|
list – ip access list for group-list
list – 为组播地址指定访问列表
|
针对组地址前缀
|
std-acl
|
WORD – ip stand access list
WORD – ip标准访问列表
|
|
pri
|
pri – RP priority
pri – RP的优先级
|
|
pri-value
|
<0-255> - RP priority value
<0-255> - RP优先级值
|
值小的优先权更高,缺省值为192
|
配置实例:
switch_config#interface loopback1
switch_config_l1#ip addr 1.1.1.1 255.255.255.0
switch_config_l1#ip pim-sm
switch_config#router pim-sm
switch_config_ps#c-rp lo1 list rp-range
switch_config_ps#exit
switch_config#ip access-list stand rp-rang
switch_config_std_nacl#permit 225.1.1.0 255.255.255.0
switch_config_std_nacl#permit 226.1.1.0 255.255.255.0
上述配置,表示候选CRP地址为1.1.1.1,支持的组范围为225.1.1.0/24和226.1.1.0/24。
通过show命令,可以开到本地配置的crp情况以及运行态
switch_config#show ip pim-sm bsr
PIMv2 BSR information:
Candidate-RP: 1.1.1.1(Loopback1)
Interval of Advertisements: 60 seconds
Next Advertisement will be sent in 00:00:55
switch_config#
如果要取消路由器的候选RP功能,则在pim-sm配置态下面,no掉相应的候选RP配置即可。
switch_config#router pim-sm
switch_config_ps#no c-rp loopback1
no掉对应的配置后,通过show命令,可以显示本机当前的CRP状态。
switch_config_ps#exit
switch_config#show ip pim-sm bsr
PIMv2 BSR information:
switch_config#
此外,上述的配置均可以通过show running-confiure命令查看pim-sm配置态下的相应信息。具体使用,可以参见《pim-sm用户手册》。
5.2.6 配置候选BSR
当需要把路由器配置为候选BSR的时候,使用本命令,有如下四个步骤:
- 需要成为候选rp的路由端口首先需要配置ip地址
- 端口使能pim-sm
- 进入pim-sm全局配置态: router pim-sm
- 在pim-sm全局配置态下:c-bsr ***
参数
|
参数说明
|
intf_name
|
端口名字,如loopback0
|
hash-length
|
哈希值,可选,用于多个c-bsr时的选优
|
priority
|
优先级,可选,用于多个c-bsr时的选优
|
配置实例:
switch_config#interface loopback1
switch_config_l1#ip addr 1.1.1.1 255.255.255.0
switch_config_l1#ip pim-sm
switch_config#router pim-sm
switch_config_ps#c-bsr loopback1 30 200
上述配置,表示候选BSR被选择为EBSR后,应用与rp计算是的hash长度为30;此候选BSR参与竞选的优选权是200。
通过show命令,可以显示本地配置的候选BSR情况以及运行态
switch_config_ps#show ip pim-s bsr
PIMv2 BSR information:
I am a Candidate-BSR:Loopback1 in sz 224.0.0.0/4.
CBSR-STM state (0-c,1-p,2-e):1.
switch_config_ps#
观察CBSR的状态切换,下面表示已经选举为EBSR
switch_config_ps#show ip pim-s bsr
PIMv2 BSR information:
I am BSR in sz 224.0.0.0/4
CBSR-STM state (0-c,1-p,2-e):2.
Address of BSR: 1.1.1.1
BSR Priority: 200
Hash Mask Length: 30
Uptime: 02:54:12
BSR will expires in 00:00:51
switch_config_ps#
如果要取消路由器的候选BSR功能,则在pim-sm配置态下面,no掉相应的c-bsr配置即可。
switch_config#router pim-sm
switch_config_ps#no c-bsr loopback1
no掉对应的配置后,通过show命令,可以看出本机当前的候选BSR状态
switch_config_ps#show ip pim-s bsr
PIMv2 BSR information:
I am NCBSR in sz 224.0.0.0/4
NCBSR-STM state(0-NI,1-AA,2-AP):1
switch_config_ps#
此外,上述的配置均可以通过show running-confiure命令查看pim-sm配置态下的相应信息。具体使用,可以参见《pim-sm用户手册》。
5.2.7 配置SPT切换阀值
路由器在数据转发时需要判断是否从RPT(共享树)切换到SPT(源树),这个判断的依据就是SPT切换阀值(spt-threshold),默认情况下接收端侧收到第一个数据报文后,就发生SPT切换。我们可以设置RPT到SPT切换的阀值,单位是pps。一般情况下的处理是从RPT切换到SPT以后,不再进行回退操作。
名称
|
中英文提示
|
说明
|
spt-threshold
|
spt-threshold - Source-tree switching threshold
spt-threshold – 共享树切换到源树的阀值值。
|
|
infinity
|
Infinity - Never switch to source-tree
Infinity – 永远不切换到源树
|
|
kbps
|
<0-4294967> Traffic rate in kilobits per second
<0-4294967> 每秒钟Kbit数据速率
|
|
stand-acl
|
stand-acl – ip standard access list name for group
stand-acl – 组过滤的ip标准访问列表名
|
|
switch_config#router pim-sm
switch_config_ps#spt-threshold 1000
5.2.8 配置SSM(需要给出具体网络拓扑,举例)
SSM模型需要IGMPv3 的支持,因此应确保连接有接收者的PIM-SM设备上使能了IGMPv3功能。SSM模型是通过pim-sm的部分子集功能实现的,因此系统在使能了PIM-SM 功能的同时也具备了SSM能力。在部署pim-sm域时,建议在其所有非边界接口上均使能pim-sm。
在把来自组播源的信息传递给接收者的过程中,是采用pim-ssm 模型还是pim-sm模型,这取决于接收者订阅通道(S,G)中的组播组是否在pim-ssm组播组范围之内,所有使能了pim-sm的接口将会认为属于该范围内的组播组采用了pim-ssm模型。
在配置pim-ssm基本功能之前,需选进行单播路由的配置,以确保域内网络层互通,路由可达。
名称
|
中英文提示
|
说明
|
ssm
|
ssm - Configure Source Specific Multicast
ssm – 配置指定源的多播
|
|
Default
|
default - Use 232/8 group range for SSM
default – 指定源的多播使用232/8多播组
|
|
Range
|
range - ACL for group range to be used for SSM
range – 用访问列表限定用于指定源的多播组
|
|
std-acl
|
WORD - ip standard access list name
WORD – 配置ip标准访问列表的名字
|
|
然后分为下面三个步骤进行pim-sm的配置:
第1章在端口上使能pim-sm。
第2章进入pim-sm配置态,配置SSM组地址范围
第3章配置pim-sm其它功能(可选)
配置实例:
switch_config#interface vlan 1
switch_config_v1#ip addr 1.1.1.1 255.255.255.0
switch_config_v1#ip pim-sm
switch_config_v1#exit
switch_config#router pim-sm
switch_config_ps#ssm rang grp_range
switch_config_ps#exit
switch_config#ip access-list standard grp-range
switch_config_std#permit 233.1.0.0 255.255.0.0
switch_config_std#
上述配置并不是采用缺省的232.0.0.0/8作为SSM的组范围,而是采用配置的233.1.0.0/8作为SSM组范围。如果要取消SSM,则在pim-sm配置态下面,直接no掉ssm相关配置即可。
5.2.9 配置管理域sz
在非管理域机制中,一个pim-sm域中只有唯一的BSR,整个网络都在该BSR的管理范围之内。为了更有针对性地管理,可以将整个pim-sm域划分为多个管理域:每个管理域中各自维护一个BSR,服务于特定范围的组播组;而global域中也维护一个BSR,为所有剩余的组播组提供服务。
在管理域机制中,各管理域的边界由ZBR构成,每个管理域各维护一个BSR,服务于特定范围的组播组,属于此范围的组播协议报文(如断言报文、BSR自举报文等)无法通过管理域边界。
在应用了管理域机制的网络中,从众多C-BSR中选举出针对不同组播组的BSR。网络内的C-RP只向对应的BSR发送宣告报文,由BSR汇总为RP-SET上,并向其所服务管理域内的所有设备进行宣告。所有设备都使用统一的哈希算法,得到特定组播组所对应RP的地址。
针对一个组group,如果要查找它rp,首先按照前缀和掩码的最长匹配原则,查找这个组所对应的sz;然后在sz中,再次按照group的前缀和掩码,采用最长匹配找到对应的RP-SET,然后计算出rp。
名称
|
中英文提示
|
说明
|
admin-scope
|
admin-scope – pim-sm administrator scope
admin-scope – pim-sm管理域范围
|
Only the C-BSRs and the ZBRs need to be configured to know about the existence of the scope zones. Other routers, including the C-RPs, learn of their existence from Bootstrap messages.
|
gaddr
|
A.B.C.D – private group address prefix
gaddr – 私有sz组地址前缀
|
239.0.0.0 to 239.255.255.255
|
gmask
|
gmask – sz group mask
gmask – sz组地址掩码
|
|
分为下面三个步骤进行管理域配置:
- 在管理域边界设备ZBR上,配置本管理域组范围。
- 在管理域内,进入pim-sm配置态:
- 配置候选BSR的组范围,和管理域边界的组范围保持一致。
- 配置候选BSR,指定候选BSR端口
配置实例(交换机在vlan下配置):
1.管理域边界设备ZBR上管理域范围配置
Ra_config_v1#ip pim-sm admin-scope 225.1.1.0 255.255.255.0
2.域内pim-sm设备上候选BSR的组范围配置以及端口配置
Rb_config#interface loopback1
Rb_config_l1#ip addr 1.1.1.1 255.255.255.0
Rb_config_l1#ip pim-sm
Rb_config#router pim-sm
Rb_config_ps#c-bsr admin-scope 225.1.1.0 255.255.255.0 30 200
Rb_config_ps#c-bsr loopback1 32 250
其中,30、32表示hash掩码长度,200、250表示候选BSR优先级。当出现不一致的时候,具体配置候选BSR时指定的值优先于配置管理域时指定的值。
5.2.10 配置注册报文源地址
缺省情况下,数据源侧的DR发送register注册报文的时候,携带的是DR的地址作为注册报文的源地址。我们可以通过指定DR设备上任意活动的pim-sm端口作为注册报文的源地址。
名称
|
中英文提示
|
说明
|
reg-src
|
reg-src - Source address for PIM Register
reg-src – PIM Register消息的源地址
|
|
intf-type
intf-number
|
指定的端口类型以及端口名字
|
如果端口没有主ip地址或者是无编号网络端口,则该配置无效。指定端口的三层协议必须是up。
|
配置实例:
Rb_config#interface loopback1
Rb_config_l1#ip addr 1.1.1.1 255.255.255.0
Rb_config_l1#ip pim-sm
Rb_config#router pim-sm
Rb_config_ps# reg-src loopback 1
指定了loopback1的主地址作为注册报文的源地址。
5.2.11 配置anycast-rp功能
单一RP,在pim-sm域内的负载往往很重。为了减轻这种负担,我们可以在pim-sm域内指定多个相同的rp,由组播源以及接收者,根据最近的rp来发送注册报文以及join请求。
如果没有引入MSDP模块,在配置anycast-rp的时候,需要明确指定担当anycast-rp的邻居,并且邻居地址和充当rp的端口地址不能相同。
名称
|
中英文提示
|
说明
|
anycast-rp
|
anycast-rp –anycast rp for pim-sm
anycast-rp –指定pimsm泛播rp地址
|
|
nbr
|
nbr – anycast rp neighbor
nbr – 提供泛播rp的邻居
|
|
*.*.*.*
|
参数 *.*.*.* – anycast rp neighbor address
*.*.*.* – 泛播rp邻居地址
|
|
具体配置实例可以参考《pim-sm命令手册》。
5.2.12 显示pim-sm本地路由条目
如果希望显示PIM-SM组播路由信息,可使用show ip mroute pim-sm命令。
show ip mroute pim-sm [group-address] [source-address]
参数
参数
|
参数说明
|
group-address
|
组地址 。
|
source-address:
|
源地址。
|
缺省
无
命令模式
管理态
使用说明
使用此命令可以显示PIM-SM路由交换机的组播路由条目。
示例
Switch#show ip mroute pim-sm
IP PIM-SM Multicast Routing Table:
(source, group) RP Uptimer/Expires Flags
(*, 225.1.1.10), 9.1.1.1, 00:15:14/00:02:37,JOIN|IGMP
Upstream interface: VLAN5, RPF nbr 192.168.100.143
Downstream interface list:
VLAN2, 00:13:23/00:02:37
(192.166.1.253, 225.1.1.10), 00:15:14/00:02:46 JOIN|IGMP
Upstream interface: VLAN5, RPF nbr 192.168.100.143
Downstream interface list:
VLAN2, 00:15:14/00:02:46
相关命令
无
5.2.13 清除pim-sm路由条目
如果希望清除pim-sm的组播路由交换机中保存的组播路由的信息,可使用clear ip mroute pim-sm命令。
clear ip mroute pim-sm [ * | group-address ] [source-address]
参数
参数
|
参数说明
|
*
|
删除所有PIM-SM创建的多播路由 。
|
group-address
|
删除相关组的多播路由。
|
source-address
|
删除相关源的多播路由。
|
缺省
无
命令模式
管理态
使用说明
使用此命令可以在保存的组播路由信息发生错误时用来清除路由交换机中保存的组播路由的信息。
示例
例一:将清除本地MRT中上游端口是由PIM-SM创建的所有路由。
Switch#clear ip mroute pim-sm *
例二:将清除本地MRT中上游端口是由PIM-SM创建的组地址为239.1.1.1 的所有路由。
Switch#clear ip mroute pim-sm 239.1.1.1
例三:将清除本地MRT中上游端口是由PIM-SM创建(192.168.20.138, 239.1.1.1)。
Switch#clear ip mroute pim-sm 239.1.1.1 192.168.20.131
相关命令
无
5.2.14 跟踪pim-sm调试信息
如果希望跟踪PIM-SM的报文和状态机信息,可使用debug ip pim-sm命令。
debug ip pim-sm [alert|assert|bsr|rp|entry|event|hello|jp|nbr|packet|register|timer]
参数
参数
|
参数说明
|
alert
|
追踪pimsm模块所有事件信息
|
assert
|
追踪assert报文和状态信息
|
bsr
|
追踪bsr相关报文和事件
|
rp
|
追踪rp相关报文和事件
|
entry
|
追踪pimsm路由条目变动信息
|
event
|
追踪pimsm事件信息
|
hello
|
追踪hello模块发送接收报文信息 。
|
jp
|
追踪Join/Prune报文信息。
|
nbr
|
追踪邻居变化信息
|
packet
|
追踪pimsm收发报文信息
|
register
|
追踪register报文信息 。
|
timer
|
追踪计时器信息 。
|
缺省
无
命令模式
管理态
使用说明
使用此命令可以跟踪PIM-SM路由交换机的状态变化和报文收发。
示例
示例一 跟踪hello报文交互。
switch#debug ip pim-sm hello
2003-4-21 16:44:00 PIM-SM: VLAN5, Rcv Hello Msg, Source = 192.168.100.143, Destination = 224.0.0.13, len = 34
2003-4-21 16:44:07 PIM-SM: VLAN5, Send Hello Msg, Destination = 224.0.0.13, len = 34
2003-4-21 16:44:08 PIM-SM: VLAN2, Send Hello Msg, Destination = 224.0.0.13, len = 34
2003-4-21 16:44:10 PIM-SM: VLAN2, Rcv Hello Msg, Source = 192.168.21.144, Destination = 224.0.0.13, len = 34
示例二 跟踪JP报文交互及状态变化 。
switch#debug ip pim-sm jp
switch#PIM-SM: downstream VLAN5, RP = 192.166.100.142, GP = 224.2.127.254
SM state = PS_ST_JP_NI, ev = PS_EV_JP_JOIN.
PIM-SM: downstream VLAN5, RP = 192.166.100.142, GP = 224.2.127.254
SM state = PS_ST_JP_J, ev = PS_EV_JP_PRUNE.
PIM-SM: downstream VLAN5, RP = 192.166.100.142, GP = 239.255.255.250
SM state = PS_ST_JP_NI, ev = PS_EV_JP_JOIN.
PIM-SM: downstream VLAN5, RP = 192.166.100.142, GP = 239.255.255.250
SM state = PS_ST_JP_J, ev = PS_EV_JP_PRUNE.
2003-4-21 16:48:52 PIM-SM: VLAN5, Rcv J/P Msg, Source = 192.168.100.143, Destination = 224.0.0.13, len = 42
PIM-SM: downstream VLAN5, RP = 192.166.100.142, GP = 225.1.1.10
SM state = PS_ST_JP_NI, ev = PS_EV_JP_JOIN.
示例三 跟踪register报文交互及状态变化。
R142#debug ip pim-sm register
R142#2003-4-21 16:52:19 Line protocol on Interface VLAN5, changed state to up
2003-4-21 16:52:29 PIM-SM: VLAN5, Rcv Register Msg, Source = 192.168.100.143, Destination = 192.166.100.142, len = 57
2003-4-21 16:52:29 PIM-SM: VLAN5 Rcv Register Msg, Source = 192.168.100.143, Destination = 192.166.100.142, len = 57
相关命令
无
5.3 PIM-SM配置实例
5.3.1 pim-sm常见拓扑配置举例 (交换机在vlan端口下配置)
如上图所示拓扑:
1.所有路由器上,必须使能组播转发功能:
ip multicast-routing
2.在所有要进行组播转发的端口上必须配置pim-sm协议:
以R1为例:要配置
R1_config_e1/1#ip pim-sm
R1_config_f0/1#ip pim-sm
R1_config_f0/0#ip pim-sm
3.RP配置
3.1若是使用动态rp, 仅需在要担当 c-bsr和c-rp的路由上进行配置即可,c-bsr和c-rp不要求配置在同一台机器上
如图中:选择R2担当c-bsr和c-rp
需要成为候选bsr或候选rp的路由端口首先需要配置ip地址
R2_config_l0#ip add 6.6.6.6 255.255.255.0
R2_config_l0# ip pim-s
R2_config#router pim-sm
R2_config_ps#c-bsr loopback0
R2_config_ps#c-rp loopback0
3.2若是使用静态rp, 需要在每台pim路由上,指定rp的地址,该地址必须可达
被配置为rp地址的端口,必须配置pim-sm:
R2上配置如下:
R2_config_l0#ip add 6.6.6.6 255.255.255.0
R2_config_l0# ip pim-s
R2_config_ps#static-rp 6.6.6.6
R1和R3上仅需配置:
R1_config_ps#static-rp 6.6.6.6
R3_config_ps#static-rp 6.6.6.6
- 若要启用ssm功能,则必须整个pim域保持一致:(参见2.8)
SSM模型需要IGMPv3 的支持,因此应确保连接有接收者的PIM-SM设备上使能了IGMPv3功能。SSM模型是通过pim-sm的部分子集功能实现的,因此系统在使能了PIM-SM 功能的同时也具备了SSM能力。在部署pim-sm域时,建议在其所有非边界接口上均使能pim-sm。
在把来自组播源的信息传递给接收者的过程中,是采用pim-ssm 模型还是pim-sm模型,这取决于接收者订阅通道(S,G)中的组播组是否在pim-ssm组播组范围之内,所有使能了pim-sm的接口将会认为属于该范围内的组播组采用了pim-ssm模型。
在配置pim-ssm基本功能之前,需选进行单播路由的配置,以确保域内网络层互通,路由可达。
然后分为下面三个步骤进行pim-ssm的配置:
- 在端口上使能pim-sm。
- 进入pim-sm配置态,配置SSM组地址范围
- 配置pim-sm其它功能(可选)
配置实例:
switch_config#interface VLAN 1
switch_config_v1#ip addr 1.1.1.1 255.255.255.0
switch_config_v1#ip pim-sm
switch_config_v1#exit
switch_config#router pim-sm
switch_config_ps#ssm rang grp_range
switch_config_ps#exit
switch_config#ip access-list standard grp-range
switch_config_std_nacl#permit 233.1.0.0 255.255.0.0
switch_config_std_nacl#
上述配置并不是采用缺省的232.0.0.0/8作为SSM的组范围,而是采用配置的233.1.0.0/16作为SSM组范围。如果要取消SSM,则在pim-sm配置态下面,直接no掉ssm相关配置即可。
用以下拓扑为例进行说明:
下图,R2为rp, R3为1.1.1.0网段的dr
若要使用ssm功能转发233.1.0.0/16范围的组播流量,必须在整个pimsm域的每台路由上,配置(在上图拓扑中,即r1, r2, r3, r4都需进行配置)
switch_config#router pim-sm
switch_config_ps#ssm rang grp_range
switch_config_ps#exit
switch_config#ip access-list standard grp-range
switch_config_std_nacl#permit 233.1.0.0 255.255.0.0
当图中igmp receiver 1.1.1.2发出igmp v3的report:include(5.5.5.1,233.1.0.1)时,该lan的dr(R3),会直接向源(5.5.5.1)进行 join,而不是向rp进行join。
直连源的R1路由器,若收到(5.5.5.1,233.1.0.1)的报文,就会直接沿着已经建立的spt数转发报文,而不会向rp进行register过程。
这样由于省去了register的开销,并且完全使用spt树进行转发,效率得到了提高。
注:若是igmp receiver 1.1.1.2发送(*, 233.1.0.1)的report, 会因为此组地址被ssm范围覆盖,而不予处理。(对于落在ssm范围内的组,只处理指定源的report)。
5.3.2 多协议组播的混配 (交换机在vlan端口下配置)
如上图所示,
R3上f3/0和f0/0上,配置 ip pim-sm
E1/1上, 配置Ip pim-dm
R3作为pimsm域和pimdm域的边界, 即pmbr
此时针对每个rp, r3会生成一个(**RP)的表项, 所有pimsm域使用该rp地址的组的流量,都会沿着该(**RP)表项,流到R3, 并向R4进行转发。
因此,在使用混配功能时,不能再混合使用ssm功能,开启ssm功能的路由,不会对(**RP)表项进行处理
目前仅支持pim-sm和pim-dm的混配