首页 > 代码库 > CCIE学习笔记之组播

CCIE学习笔记之组播

查看组播路由表:

show ip mroute

查看igmp组成员:

show ip igmp group

通用规则:

1.      无论何时,只要创建一个(SG)项而其相应的父(*G)不存在,就首先自动创建新的(*G)项。

2.      RPF接口是作为对源IP地址(或稀疏模式(*G)项,RP)的最小开销路径接口来估算的。如果多个接口开销相同,选择最高IP地址的接口作为“切入点”。(比较顺序:1.管理距离2.最长匹配3.开销,这和单播不同,单播先比较最长匹配)。

3.      在创建新的(SG)项时,其出口表提供一个来自父(*G)项的出口表副本。

4.      组播转发项的入口(RPF接口)决不能在其出口表上出现。

5.      每个组播状态项的RPF接口(即输入接口)每5秒重新计算一次,而且依据规则4对输出接口的列表做适当的调整(以防在出口表上出现输入接口)。

6.      对(*G)项的出口表的添加和删除都被复制(在通用规则4的限制下)到所有与该组有关的(SG)项。

密集模式规则

1.      密集模式(*G)的输出接口列表映射了现有的PIM-DM邻居接口或直接连接的组成员接口。

2.      密集模式(SG)项的出口在剪枝时不能删除,而是被标记为“Prune/Dense”,且仍保留在出口表上。

3.      当一个接口的PIM邻居列表上增加一个新邻居时,该接口在所有PIM-DMSG)输出列表重新设置“Forward/Dense”状态。

稀疏模式规则

1.      稀疏模式(*G)项作为显示加入操作的结果而创建的。

2.      稀疏模式(*G)项的入口总是指向RP的共享树。

3.      稀疏模式(SG)项在下列条件下创建:

接收一条(SG)加入消息/剪枝消息

上一跳路由器上切换到SPT

不可预料的(SG)到达时(*G状态不存在)

RP上收到一条注册(Register)消息

注意:PIM-SM SPT也是通过和共享树一样的基本显示加入(Explicit Join)机制创建的。

4.      增加到稀疏模式(*G)或(SG)项的出口表中的接口由如下两个条件之一决定:

当通过该接口接收到一个适当的(*G)或(SG)加入消息时

当该接口存在一个该组的直连成员时

5.      从稀疏模式(*G)或(SG)项的出口表中删除一个接口发生在如下两种之一的情形:

当通过该接口接受到一个适当的(*G)或(SG)剪枝消息(不被否决)时

当接口的有效倒计时器倒计时到0

6.      接口有效计时器重新置回3分钟有两个条件:

该接口收到适当的(*G)或(SG)加入消息(下游邻居1分钟发送一次加入消息)

在接口上接收到一个来自直连成员的IGMP Membership Report

7.      当(SG)项的RPF邻居与(*G)项的RPF邻居不同时,路由器将向共享树发送一个(SGRP位剪枝消息。即(SGRP位剪枝消息从共享树和SPT的分支点开始。

8.      稀疏模式(SG)项的RPF接口(即入口)使用源的IP地址计算的,除了设置RP位的情况外,在这种情况下,使用RPIP地址。

PIM密集模式

ip multicast-routing   //开启全局组播

(config-if)#ip pim dense-mode  //接口上开启组播

PIM转发

1.      通过输入包的源地址(S)和组地址(G)来搜索(SG)的最长匹配项

2.      SG)都不匹配则寻找(*G),注意密集模式仅使用(SG)项来转发,所以跳过这一步。

3.      如果无现有的(SG)则根据规则创建一个(SG)项。

4.      对输入包进行RPF检查,对组播路由表项的输入接口信息的维护可以不用每次进行RPF校验时都去查路由表,而只是每隔5秒对每个组播项的输入接口信息进行一次重新计算。

5.      如果检查成功则转发到所有未被剪枝的输出接口上。

PIM剪枝

在点到点链路,非RPF接口收到包后会以一个限制的速率向此接口的邻居发送剪枝消息,邻居收到后立即回应一个响应消息完成剪枝。

在多路访问网络,非RPF接口收到包之后只是简单的丢弃而不发送剪枝消息。

 

当路由器从下游邻居接收一个(SGRP位剪枝消息时:

1.      创建一个(SG)状态项(如果不存在)

2.      在该(SG)项中设置RP位(用R标记表示)

3.      根据通用规则3,用来自父(*G)项接口的一个拷贝来形成(SG)项出口表

4.      从出口表中删除该接口,即接收(SGRP位剪枝消息的接口。

5.      根据RP地址(而不是根据源地址)计算或重新计算(SG)项的RPF信息(入口和RPF邻居)

思路:有一些流转成SPT,但是又不能把共享树的流量全部剪掉,所以就生成一个(SG)表项,然后剪掉RP位剪枝消息进来的接口,因为转发是先匹配(SG)表项,所以相当于把流量剪枝了

PIM嫁接

PIM稀疏模式

配置:

全局:ip multicast-routing

接口:ip pim sparse-mode

接口:ip pim rp-address

PIM稀疏模式转发

和密集模式不同,用(*G)转发组播消息。(*G)一般根据需要创建,要么有加入消息,要么有直连主机

Register过程:

spacer.gif

接收者首先加入:

1.      源开始发送Group G信息流。

2.      路由器ARegister消息中封装包,单播到RP

3.      路由器CRP)解包,沿着共享树向下转发。

4.      RP向源发送(SG)加入消息,建立SPT

5.      RP开始接收沿着SPT向下的(SG)信息。

6.      RP向路由器A发送Register Stop

7.      路由器A停止在Register消息中封装信息

8.      SG)信息沿着单一的路径(SPT)向下游RP发包

注意:单纯的源并没有加入组播组

 

源首先注册:

1. 源开始发送Group G信息流。

2.路由器ARegister消息中封装包,单播到RP

3.路由器CRP)在共享树上没有接收者,丢弃包

4.RP向路由器A发送Register-Stop

5.路由器A停止在Register消息中封装信息,丢弃来自源的后续包

6.路由器C接收来自共享树上一个接收者的(*G)加入消息

7.RP向组中所有已知源发送(SG)加入消息

8.RP开始接收沿着SPT向下的(SG)消息

9.RP沿着共享树向下把(SG)信息转发给接收者

PIM汇聚点

静态指定:

ip pim rp-address address [group-list acl]

 

自动RP

原理:

加入组播224.0.1.40来每隔默认60s接收来自映射代理的自动RP信息,保持时间默认60*3,如果超时,切换到静态配置的RP,如果没有静态配置RP,则切换到密集模式

映射代理(mapping agent)加入224.0.1.39来接收RP候选的声明

候选RP每隔默认60s224.0.1.39组播RP通知消息,映射代理中的候选RP保持时间默认60*3

 

基本配置:

把路由器配置成候选RP(IP地址高的成为主RP)

ip pim send-rp-announce interface scope ttl[group-list acl] [interval secs]

如:ip  pim send-rp-announce  loopback0  scope 16  group-list 10

access-list 10 permit 239.254.0.00.0.255.255

把路由器配置成RP映射代理:

ip pim send-rp-discovery scope ttl

 

稀疏-密集模式

ip pim sparse-dense-mode

根据路由器是否有改组的RP信息,做出在一个接口使用稀疏模式的决定,这样可以先启动一个密集模式的网络,以后再切换到一个稀疏模式网络,而不必在网络的每个接口上改变PIM模式

 

查看RP和映射代理

show ip pim rp mapping

如果有pimv1标记,表明该信息通过自动RP了解到            

 

组播边界:

可以用来防止RP通知和RP发现消息流到网络边界之外:

int s0

ip multicastboundary 10

 

防止候选RP的欺骗:

在映射代理上全局命令:

ip pim rp-announce-filter rp-list acl[group-list acl]

如:ip pimrp-announce-filter rp-list 10 group-list 20

access-list 10 permit host 172.16.2.2

access-list 20 deny 239.0.0.0 0.0.255.255

 

否定的自动RP声明:

ip pim send-rp-announce loopback0 scope 16group-list 10

access-list 10 per 224.0.0.015.255.255.255.255

access-list 10 deny 225.1.1.0 0.0.0.255

候选RP会向组范围225.1.1.0 0.0.0.255发送一个否定的RP声明,强迫组播组仍然处于密集模式,当映射代理接收到一个否定的RP声明时,它就会否决掉任何积极的RP声明(在否决声明的组范围内),如果没有配显示的deny则不会发否定的RP声明

 

PIM自举路由器机制:

原理:

候选RP把其候选RP广播经过单播直接发送到当前候选的BSR

候选RP60秒发送一次,保持时间60*2.5=150s

BSR(候选自举路由器,bootstrap router)用一跳一跳的特殊BSR消息流(分布)把所有组到RP映射信息分布到网络中的所有路由器。

按跳流动的BSR消息和对BSR单播的候选RP广播消除了组播的需要。

BSR消息包含一套已知的组到RP候选的映射信息,每台路由器运行相同的哈希算法为给定的组选择当前活动的RP,如果当前RP失效,则网络中的所有路由器快速容易的选出一个新的RP

可以配置多个候选BSR,但是只有一个BSR成为主BSR(优先级高),如果所有BSR失效,那么路由器会停止接收定期的BSR消息,并且其组到RP映射信息也同时到期,路由器将切换到一个静态配置的RP,如果没有则切换到密集模式。

自动RP一个RP是整个处于ACL组播范围的RP,但是在PIMv2 BSR中,因为根据哈希算法一个候选RP可能只是其ACL组播范围某一部分的RP

BSR消息组播到所有PIM路由器(224.0.0.13)组播组(TTL值为1)。PIMv2路由器相邻的路由器接收BSR消息并从其他接口重新组播出去,TTL1BSR消息含有当前BSRIP地址,如果一个路由器充当RP的时候要通过BSR消息了解到当前BSRIP地址才能把RP消息单播给当前BSR

配置:

把路由器配置成候选RP

ip pim rp-candidate loopback0 group-list 10[group-list acl][interval secs]

把路由器配置成候选BSR

ip pim bsr-candidate interfacehash-mask-length [priority]   //默认BSR优先级为0,如果掩码为30,那么每4个组播地址映射到同一个RP

 

限制BSR消息:

接口:ip pim border

注意:只是让接口既不发送也不接收PIMv2BSR消息,防止BSR消息流入或流出网络。防止了BSR流出网络那么外部的候选RP就不知道内部的当前BSR地址(在BSR消息中),也就防止了外部RP发单播消息给内部BSR

不影响正常的PIM消息流(如加入和剪枝,组播信息流等)

 

管理RP

如果一个路由器没有被配置成一个组的RP,但是这个路由器还是可能成为这个组的RP:如当一台路由器收到(*G)加入消息,而这条消息的RP地址为自己时,就会把自己当做RP;当收到注册消息而注册的RP为自己时,也会成为RP

限制命令:

所有路由器上全局:ip pimaccept-rp rp-address|auto-rp [group-list acl]

如果过滤器承认这个RP和组地址的组合那么RP就是合法的,否则拒绝或忽略,如果没有可选的group-list那么默认所有的组

如果用auto-rp那么自由已经被选作组的RP的路由器才能接收和处理(*G)加入消息和PIM注册消息

有三种形式的命令:

1.      ip pim accept-rp rp-address[group-list acl] //可出现多次

2.      ip pim accept-rp auto-rp[group-list acl]  //RP地址必须在组到RP映射缓存中,而这个猪不能是自动RP组播组(224.0.1.39224.0.1.40),和第三种形式的命令互斥

3.      ip pim accept-rp 0.0.0.0 [group-list acl] //通用RP项,与任何RP地址匹配,和第二种形式命令互斥

 

路由器从上而下匹配这个表,寻找第一个字段匹配的RP地址,如果找到且不是自动RP项则看group-list是否承认这个组,如果承认则允许这个RP地址作为该组的合法RP,否则拒绝;如果匹配的是自动RP,那么当group-list拒绝时则匹配通用RP项的group-list(如果有的话),有则允许,如果还没有才拒绝。如果匹配到结尾都没有找到匹配的第一个字段(RP),则拒绝。

例子1

ip pim accept-rp 172.16.8.2 group-list 10

ip pim accept-rp auto-rp group-list 11

ip pim accept-rp 0.0.0.0group-list 12

允许172.16.8.2成为group-list 10RPRP缓存有的可以成为group-list 11RPRP缓存有但是group-list 11拒绝的可以继续匹配group-list12,如果有则可以成为RP,没有则不允许

例子2

ip pim accept-rp 0.0.0.0group-list 12

让除了group-list 12以外的所有组都只工作在密集模式

 

注:没有必要为224.0.1.39224.0.1.40使用ip pimaccept-rp deny语句,因为这两个组会自动采用deny语句比便不干涉正常的密集模式传送自动RP信息

 

定义“最后的壕沟”RP(即所有候选RP失效则用静态RP,防止转化为密集模式):

ip pim rp-address 172.16.9.1 10

access-list 10 deny 224.0.1.39

access-list 10 deny 224.0.1.40

access-list 10 permit any

本文出自 “flyclc” 博客,请务必保留此出处http://flyclc.blog.51cto.com/1385758/1539407