组播路由协议配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用组播路由协议配置方法
IGMP协议配置
IGMP基本设置
配置路由器加入到一个组播组:
Router(config-if)# ip igmp join-group 225.2.2.2
控制某个接口下主机能够加入的组播组
ip igmp access-group access-list
【例如】
Router(config)# access-list 1 225.2.2.2 .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
IGMP版本切换
Router(config-if)# ip igmp version{2|3}
IGMP查询间隔时间:默认60s
Router(config-if)# ip igmp query-interval 120 IGMP查询超时时间:默认为2倍的查询间隔时间Router(config-if)# ip igmp query-timeout 30
IGMP查询最大响应时间:默认为10s
Router(config-if)# ip igmp query-max-response-time 8
IGMP Proxy
如图2,当C收到组播请求后,发送一条PIM-SM join的消息给B,B发送一个IGMP的请求到A,A通过一条单播链路将数据传送到
B,这个过程就需要一个IGMP的代理,配置如下:
图2
【例如】
Router A Configuration
ip address .1 255.255.255.0
ip pim dense-mode
!
interface ethernet 1
ip address .1 255.255.255.0
ip pim dense-mode
ip igmp unidirectional link
!
interface ethernet 2
ip address .1 255.255.255.0
Router B Configuration
ip pim rp-address .1 5
access-list 5 permit 239.0.0.0 0.255.255.255.255 !
ip address .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 .2 255.255.255.0
ip pim dense-mode
ip igmp unidirectional link
!
interface ethernet 1
ip address .1 255.255.255.0
ip pim sparse-mode
ip igmp mroute-proxy loopback 0
!
ip address .1 255.255.255.0
Router C Configuration
ip pim rp-address .1 5
access-list 5 permit 239.0.0.0 0.255.255.255 !
interface ethernet 0
ip address .1 255.255.255.0
ip pim sparse-mode
!
interface ethernet 1
ip address .1 255.255.255.0
ip pim sparse-mode
IGMP Snooping
开启IGMP轮询
Router(config)#ip igmp snooping
IGMP Snooping调整
在单个vlanxx启用Snooping:
ip igmp snooping vlan
IGMP 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 IGMP 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
基于静态地址的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
监控调试IGMP
show ip igmp groups
show ip igmp interface
显示内容:
(1)IGMP和CGMP在接口下是否启用。
(2)IGMP 版本。
(3)关于IGMP 的各种计时器,我们可以基于性能的原因来调整它。
(4)某一子网中的DR 和IGMP 查询者。
debug ip igmp
这条命令可以帮助我们了解当前是否发出查询信息,发查询信息的间隔以及是否收到来自接收者的对查询的响应。
PIM协议配置
PIM-DM基本配置
激活多播路由
Router(config)#ip multicast-routing
PIM-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
PIM-SM基本配置
激活多播路由
Router(config)#ip multicast-routing
需在所有路由器上配置,否则可能会形成组播路由xx。
PIM-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
PIM-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 permit 228.0.0.0
15.255.255.255
host1(config)#ip pim rp-address 122.0.0.1 1
静态 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
host1(config)#access-list 11 permit 224.0.1.40 .0
host1(config)#ip pim rp-address 192.48.1.22 11 override
PIM-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-r.0 [acl]
Auto-rp 和 .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 .1
access-list 1 permit .2
access-list 2 permit 224.0.0.0 192.168.255.255
PIMv2 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 的xx,这一xx决定了
RP 服务于多播组的范围有多大。
Priority:定义了当前BSR的优先级,优先级缺省等于0。
【例如】
ip pim bsr-candidate ethernet 0/0 192
监控调试PIM
show ip pim neighbor
Uptime显示毗邻关系存在的时间
Expires显示条目过期前的剩余时间,周期性的PIM Hello 消息用来刷新这条记录。
Mode显示接口下PIM的模式:Dense,Sparse or Sparse/Dense。
show ip pim interface
Nbr Count显示该接口连接网络中邻居的数量。
DR=.0说明该接口所连接的是P2P网络,不存在DR。
show ip rpf
xxxx显示了两条RPF 信息,这些信息都是基于单播路由表形成的。
关于每一个多播源和RP都有相关条目,记录RPF接口,上游路由器,相关路由等信息。
show ip route
不要忘了,多播的转发决断依赖于单播路由表(如RPF检验),所以在我们调试多播路由时经常检验单播路由的正确性同样重
要。
show ip mroute
这是一个多播路由表的一部分,同其它的多播路由表一样,其中包含(*,G)和(S,G) 条目,每个条目下会有流入接口,OIL 流出接口列表,RP(如果存在的话),标志位和Uptime/Expires计时器。
此外还有show ip mroute summary 和show ip mroute
count 两条命令没有列出示例。
分别用于查看多播路由表每个条目的汇总信息和统计信息。
show ip mroute active
显示当前活动的源(流量大于某个门限值,缺省为4K) 其中包含组地址,会话名称,组播源地址,域名称以及带宽占用情况。
show ip pim rp mapping
这条命令是关于PIM Sparse Mode 的。
RP 可以被自动发现,也可以被手工设置。
RP 在一个多播网络中可以存在多个,并且可以基于组播地址范围进行转发分工。
debug ip mpacket
用来解码多播包,这是一条轻易不要用的命令,特别是当有较大多播流量通过时,会加大负载,并且大量信息输出无法过滤
debug ip mroute
debug ip pim
用来查看PIM 邻居之间的消息交换,图中显示该路由器通过E0和E1口向外发出PIM 路由器查询,但只在E0口上收到了来自 172.16.6.1 的回应。
现在看到的还是debug ip pim 的输出,记录的是此向RP(172.16.8.1)发送注册消息并收到RP 发回
的RP-Reachable 消息。
mtrace/mstat命令
mtrace 命令的工作方式很特殊,让我们通过下面的图来进行解释:
xxxx,绿色箭头表示从源到接收者的多播流传递路径,红色箭头表示mtrace包传递的路径。
mtrace 采用专用的IGMP 包类型,0x 表示查询/请求,0x1E 表示响应。
查询/请求包发往与接收者相邻的末跳路由器,末跳路由器将它转为xx
的traceroute 请求,按xx路由上溯到与源相邻的首跳路由器,在此过程xx,每个经由的路由器都将查询到达时间、流入接口、流出接口、上一跳路由器地址、输入输出包计数、源/组包计数、路由协议、TTL 门限值以及转发/错误码等信息记入包xx。
首跳路由器加入自己的响应数据后将xx traceroute 信息包转换为mtrace 类型送回查询主机。
类似于xx
的traceroute 命令,mtrace 也显示多播信息的转发路径及各段xx。
可以用它来查找多播信息传递过程xx的xx断点,也可以用它来发现次佳路由。
上图显示的是mtrace 命令的输出示例,其中显示了多播数据包传递时经由的路径及每一跳的时延。
mstat 命令以图形的方式输出多播转发路径,可用于分析网络中任意两点间的多播信息转发情况,报告显示每个节点丢弃/重复包的数量以及TTL 值和xx。
主要用于在网络中查找存在大量包丢弃或包复制的节点。