组播路由协议配置(cisco)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用组播路由协议配置方法
1IGMP协议配置
1.1 IGMP基本设置
1.1.1配置路由器加入到一个组播组:
Router(config-if)# ip igmp join-group 225.2.2.2
1.1.2控制某个接口下主机能够加入的组播组
ip igmp access-group access-list
【例如】
Router(config)# access-list 1 225.2.2.2 0.0.0.0
Router(config)# interface ethernet 0
Router(config-if)ip igmp access-group 1
ACL可以同时对组播报文的源和目的地址控制,达到过滤组播源,同时也能过滤特定
接收主机的作用,例如:
Deny all state for a group G
deny igmp any host G
permit igmp any any
Deny all state for a source S
deny igmp host S any
permit igmp any any
Permit all state for a group G
permit igmp any host G
Permit all state for a source S
permit igmp host S any
Filter a particular source for a group G
deny igmp host S host G
permit igmp any host G
1.1.3IGMP版本切换
Router(config-if)# ip igmp version {2|3}
1.1.4IGMP查询间隔时间:默认60s
Router(config-if)# ip igmp query-interval 120
1.1.5IGMP查询超时时间:默认为2倍的查询间隔时间
Router(config-if)# ip igmp query-timeout 30
1.1.6IGMP查询最大响应时间:默认为10s
Router(config-if)# ip igmp query-max-response-time 8
1.2 IGMP Proxy
如图2,当C收到组播请求后,发送一条PIM-SM join的消息给B,B发送一个IGMP 的请求到A,A通过一条单播链路将数据传送到B,这个过程就需要一个IGMP的代理,配置如下:
图2
【例如】
Router A Configuration
interface ethernet 0
ip address 10.1.1.1 255.255.255.0
ip pim dense-mode
!
interface ethernet 1
ip address 10.2.1.1 255.255.255.0
ip pim dense-mode
ip igmp unidirectional link
!
interface ethernet 2
ip address 10.3.1.1 255.255.255.0
Router B Configuration
ip pim rp-address 10.5.1.1 5
access-list 5 permit 239.0.0.0 0.255.255.255.255
!
interface loopback 0
ip address 10.7.1.1 255.255.255.0
ip pim dense-mode
ip igmp helper-address udl ethernet 0
ip igmp proxy-service
!
interface ethernet 0
ip address 10.2.1.2 255.255.255.0
ip pim dense-mode
ip igmp unidirectional link
!
interface ethernet 1
ip address 10.5.1.1 255.255.255.0
ip pim sparse-mode
ip igmp mroute-proxy loopback 0
!
interface ethernet 2
ip address 10.6.1.1 255.255.255.0
Router C Configuration
ip pim rp-address 10.5.1.1 5
access-list 5 permit 239.0.0.0 0.255.255.255
!
interface ethernet 0
ip address 10.8.1.1 255.255.255.0
ip pim sparse-mode
!
interface ethernet 1
ip address 10.9.1.1 255.255.255.0
ip pim sparse-mode
1.3 IGMP Snooping
1.3.1开启IGMP轮询
Router(config)#ip igmp snooping
1.3.2IGMP Snooping调整
在单个vlan中启用Snooping:
ip igmp snooping vlan
1.3.3IGMP Snooping快速离开
ip igmp snooping vlan immediate-leave
The following example shows how to enable IGMP Immediate-Leave processing on VLAN 1:
Router(config)# ip igmp snooping vlan 1 immediate-leave
1.3.4IGMP Snooping参考多播路由
ip igmp snooping vlan mrouter
To add a multicast router port and to configure the multicast router learning method, use the ip igmp snooping vlan mrouter command in global
configuration mode.
ip igmp snooping vlan vlan-id mrouter {interface interface-id | learn
pim-dvmrp}
【例如】
Switch# configure terminal
Switch(config)# ip igmp snooping vlan 200 mrouter interface
gigabitethernet1/0/2
Switch(config)# end
1.3.5基于静态地址的IGMP Snooping
ip igmp snooping vlan vlan-id static mac-address interface interface-id 【例如】
Switch# configure terminal
Switch(config)# ip igmp snooping vlan 105 static 01-00-5e-23-33-12
interface gigabitethernet1/0/1
Switch(config)# end
1.4 监控调试IGMP
1.4.1show ip igmp groups
1.4.2show ip igmp interface
显示内容:
(1)IGMP和CGMP在接口下是否启用。
(2)IGMP 版本。
(3)关于 IGMP 的各种计时器,我们可以基于性能的原因来调整它。
(4)某一子网中的 DR 和 IGMP 查询者。
1.4.3debug ip igmp
这条命令可以帮助我们了解当前路由器是否发出查询信息,发查询信息的间隔以及是否
收到来自接收者的对查询的响应。
2PIM协议配置
2.1 PIM-DM基本配置
2.1.1激活多播路由
Router(config)#ip multicast-routing
2.1.2PIM-DM配置
在接口模式下输入
Ip pim dense-mode
【例如】
ip multicast-routing
interface FastEthernet0/1
ip address 172.16.8.1 255.255.255.0
ip pim state-refresh origination-interval 60
ip pim dense-mode
2.2 PIM-SM基本配置
2.2.1激活多播路由
Router(config)#ip multicast-routing
需在所有路由器上配置,否则可能会形成组播路由黑洞。
2.2.2PIM-SM配置
接口命令:ip pim { dense-mode | sparse-mode | sparse-dense-mode }
(1)单纯采用稀疏模式:
ip pim sparse-mode
【例如】
R1(config)# ip multicast-routing
R1(config)# ip pim rp-address 172.16.34.1
R1(config)# interface f0/0
R1(config-if)# ip pim sparse-mode
(2)Auto-RP方案网络或稀疏和密集模式混合网络:
ip pim sparse-dense-mode
【例如】
R1(config)# ip multicast-routing
R1(config)# ip pim rp-address 172.16.35.1
R1(config)# interface fa0/1
R1(config-if)# ip pim sparse-dense-mode
2.2.3PIM-SM静态RP
如果要配置Static RP,则应该在所有路由器上配置,并且所有路由器必须使用相同的 RP 地址。
当静态配置的RP失效时,路由器不可能切换到其它的备用 RP(除非使用Anycast-RP,在 RP 之间运行MSDP)。
以下命令实现静态 RP 的指定:
ip pim rp-address <address> [group-list <acl>][override]
group-list :指定组范围,缺省为 224.0.0.0/4,这是很危险,因为它把 Auto-RP 多播组(224.0.1.39和224.0.1.40)也包括进来了,注意这两个多播组是使用密模式进行维护的。
所以我们至少应该使用访问列表将这两个组排除。
override :参数指示静态配置优先于Auto-RP 学得的内容。
【例如】
host1(config)#access-list boston permit 228.0.0.0 15.255.255.255
host1(config)#ip pim rp-address 122.0.0.1 1 boston
静态RP 的配置比较容易理解,但是管理工作量很大,由于没有冗余能力,可靠性也不强,不适于在大的网络中使用。
为了保证RP的有效性,防止网络因为失效导致网络切换至密集模式,我们可以指定静态RP,但是为了防止静态RP阻碍Auto-RP 协议的运行,必须与访问列表相结合使用。
如下例:
ip pim rp-address <RP-adr >10
access-list 10 deny 224.0.1.39
access-list 10 deny 224.0.1.40
access-list 10 permit any
【例如】
host1(config)#access-list 11 permit 224.0.1.39 0.0.0.0
host1(config)#access-list 11 permit 224.0.1.40 0.0.0.0
host1(config)#ip pim rp-address 192.48.1.22 11 override
2.2.4PIM-SM自动RP
除了 Candidate RPs(RP 候选者)和MappingAgents(映射代理)路由器外,其它所有路由器能自动学习与特定组相关的 RP 地址,不需要为 RP 做任何设置。
Candidate RPs和MappingAgents路由器通过专用的两个多播地址224.0.1.39(Cisco-Announce)和 224.0.1.40(Cisco-Discovery)以PIM DM(否则在 Chicken and Egg 问题)方式传递 RP 相关信息。
网络中可以存在多个 RP 以作备份,可以通过管理范围对消息的传递加以限制,BSR 不个备这一功能,这一功能对减少多播信息对广域网带宽的占用非常有效。
●Candidate RPs
RP 候选者以固定周期向 224.0.1.39 组播地址送 RP-Announcement 消息,这个消息用来说明该路由器是一个RP 候选者,rp-announce-interval 的缺省值为 60s。
RP 声明中包括:组范围(缺省为 224.0.0.0/4)、候选 RP 的地址,保持时间缺省为三分钟,即三倍的rp-announce-interval。
在全局模式下以下述命令设置:
ip pim send-rp-announce <interface>scope <ttl> [group-list acl]。
Interface:用于指定 RP 声明中的源地址取自哪个接口。
Group-list:其中的 Deny 在不同的 IOS 版本中意义不同,12.0(1.1)以前的版本中表示当前路由器不是相应组范围的候选 RP,12.0(1.1)以后版本中表示该组范围永远采用密模式。
【例如】
host1(config)#access-list 1 deny 224.0.1.39
host1(config)#access-list 1 deny 224.0.1.40
ip pim send-rp-announce loopback 2 scope 16 group-list 1
●Mapping Agents
用于接收发自 Candidate RPs 的声明,自动加入 224.0.1.39 这个多播组。
所有声明存储在缓存中,为每个特定组范围选举具有最高 IP 地址的候选者作为 RP。
我们可以通过 show ip pim rp mapping 命令来查看 MA 的缓存。
[注意:所有 MA 的缓存内容必须一致。
]向 224.0.1.40地址发送Cisco-Discovery 消息,每 60 秒或检测到变化时发送。
消息中包含从多个候选者中选出的RP。
可以通过如下命令设置:ip pim send-rp-discovery [<interface>] scope <ttl>。
Interface:用于指定消息包源地址取自哪个接口,如果不设置,源地址为送出接口,这样将会导致一个MA以多个地址出现。
所有其它路由器自动加入 224.0.1.40 以接收 Cisco-Discovery 消息。
通过接收 Cisco-Discovery消息以确定负责特定组的 RP。
【例如】
ip pim send-rp-discovery scope 23 loopback 1
通常一个网络中应该至少设置两个 C-RP 和 MA,一台路由器可以同时担当这两种角色。
Intfc最好使用回环接口来定义。
需要支持多播的每台路由器的每个接口下都应该配置成疏密模式,因为 Auto-RP 采用密模式 PIM 工作,其它多播数据采用稀疏模式工作。
Auto-RP可以采用冗余模式,在冗余模式中,是通过比较相应端口的IP地址大小来实现的,通常是做法是对于主RP配置较高IP地址的Loopback接口,而对于冗余RP则采用较小的IP地址作为Loopback接口。
自动RP控制
Auto-RP 声明和发现消息中的 TTL 的值设成多大合适?这个跟网络结构有关,只要保证所有的MA/C-RPs 都可以收到来自C-RPs/MA 的消息就可以了。
不妨把 TTL 值设得大一些,我们可以在网络边界使用 ip multicast boundary 的命令来限定 Auto-RP 多播信息的传递,如下图。
为了防止不正确的配置导致 RP 信息的不一致,可以通过 ip pim accept-rp 命令对可接受 RP 进行限制,命令用法如下:
Ip pim accept-rp <rp-addr> [acl]
Ip pim accept-rp auto-rp [acl]
Ip pim accept-rp 0.0.0.0 [acl]
Auto-rp 和0.0.0.0 只能设置一条,acl 如果省略掉则表示224.0.0.0/4。
【例如】
ip pim accept-rp 172.17.1.1 3
access-list 3 permit 224.2.2.2
对RP 的限定可以用来控制组模式,只有通过RP 验证的组才可以使用稀疏模式。
也可以用来限定哪些(*,G)的加入消息是可接受的,还可以用来限定哪些(S,G)注册消息是可接受的。
此外,我们可以在MA 中使用RP 过滤来验证RP 候选者的有效性,进而控制RP。
命令如下:
ip pim rp-announce-filter rp-list <acl> [group-list <acl>]
rp-list 和group-list 分别用来指定哪些 C-RP 和多播信息是可以接受的。
[注意]group-list 如果不指定表示不接受一切组。
【例如】
ip pim rp-announce-filter rp-list 1 group-list 2
access-list 1 permit 10.0.0.1
access-list 1 permit 10.0.0.2
access-list 2 permit 224.0.0.0 192.168.255.255
2.2.5PIMv2 BSR模式
多个 C-BSR(引导路由器候选者)通过选举优先级和IP 地址最高者为活动 BSR,这个选举过程是抢先式的。
活动 BSR 根据 C-BSR 的优先级随时变化,作为接收者的 All Other Routers在 Accept Any 和Accept Preferred 两种状态中改变。
BSR 通过以下命令设置:
ip pim bsr-candidate <intfc> <hash-length> [priority <pri>]
<hash-length>:指定 hash mask 的长度,这一长度决定了RP 服务于多播
组的范围有多大。
Priority:定义了当前BSR的优先级,优先级缺省等于 0。
【例如】
ip pim bsr-candidate ethernet 0/0 192
2.3 监控调试PIM
2.3.1show ip pim neighbor
Uptime 显示毗邻关系存在的时间
Expires 显示条目过期前的剩余时间,周期性的PIM Hello 消息用来刷新这条记录。
Mode 显示接口下 PIM的模式:Dense,Sparse or Sparse/Dense。
2.3.2show ip pim interface
Nbr Count 显示该接口连接网络中邻居的数量。
DR=0.0.0.0 说明该接口所连接的是P2P网络,不存在DR。
2.3.3show ip rpf
上图中显示了两条 RPF 信息,这些信息都是基于单播路由表形成的。
关于每一个多播源和RP路由器都有相关条目,记录RPF接口,上游路由器,相关路由等信息。
2.3.4show ip route
不要忘了,多播的转发决断依赖于单播路由表(如RPF检验),所以在我们调试多播路由时经常检验单播路由的正确性同样重要。
2.3.5show ip mroute
这是一个多播路由表的一部分,同其它的多播路由表一样,其中包含(*,G)和(S,G) 条目,每个条目下会有流入接口,OIL流出接口列表,RP(如果存在的话),标志位和Uptime/Expires计时器。
此外还有 show ip mroute summary 和 show ip mroute count 两条命令没有列出示例。
分别用于查看多播路由表每个条目的汇总信息和统计信息。
2.3.6show ip mroute active
显示当前活动的源(流量大于某个门限值,缺省为 4K) 其中包含组地址,会话名称,组播源地址,域名称以及带宽占用情况。
2.3.7show ip pim rp mapping
这条命令是关于PIM Sparse Mode 的。
RP 可以被自动发现,也可以被手工设置。
RP 在一个多播网络中可以存在多个,并且可以基于组播地址范围进行转发分工。
2.3.8debug ip mpacket
用来解码多播包,这是一条轻易不要用的命令,特别是当有较大多播流量通过路由器时,会加大路由器负载,并且大量信息输出无法过滤
2.3.9debug ip mroute
2.3.10d ebug ip pim
用来查看 PIM 邻居之间的消息交换,图中显示该路由器通过 E0和E1口向外发出 PIM 路由器查询,但只在E0口上收到了来自172.16.6.1 的回应。
现在看到的还是 debug ip pim 的输出,记录的是此路由器向 RP(172.16.8.1)发送注册消息并收到 RP 发回的 RP-Reachable 消息。
2.3.11m trace/mstat命令
mtrace 命令的工作方式很特殊,让我们通过下面的图来进行解释:
上图中,绿色箭头表示从源到接收者的多播流传递路径,红色箭头表示mtrace包传递的路径。
mtrace 采用专用的IGMP 包类型,0x1F 表示查询/请求,0x1E 表示响应。
查询/请求包发往与接收者相邻的末跳路由器,末跳路由器将它转为单播的 traceroute 请求,按单播路由上溯到与源相邻的首跳路由器,在此过程中,每个经由的路由器都将查询到达时间、流入接口、流出接口、上一跳路由器地址、输入输出包计数、源/组包计数、路由协议、TTL 门限值以及转发/错误码等信息记入包中。
首跳路由器加入自己的响应数据后将单播 traceroute 信息包转换为 mtrace 类型送回查询主机。
类似于单播的 traceroute 命令,mtrace 也显示多播信息的转发路径及各段延时。
可以用它来查找多播信息传递过程中的中断点,也可以用它来发现次佳路由。
上图显示的是 mtrace 命令的输出示例,其中显示了多播数据包传递时经由的路径及每一跳的时延。
mstat 命令以图形的方式输出多播转发路径,可用于分析网络中任意两点间的多播信息转发情况,报告显示每个节点丢弃/重复包的数量以及TTL 值和延时。
主要用于在网络中查找存在大量包丢弃或包复制的节点。