PIM-SM(PIM Sparse Mode,稀疏模式)
RP是RPT的树根,以RP为分界点,可以将组播网络划分为两部分,一部分是从RP到接收者,另一部分是从源到RP。RP一方面从组播源接收组播流量,另一方面需要组播流量的组播路由器朝着RP的方向发送PIM加入报文,从而在自己与RP之间构建RPT的一段分支,随后RP负责将其从源接收的组播流量沿着RPT转发下去,一个RP可以同时为多个组播组服务
报文类型
| 报文类型 | 报文功能 |
|---|---|
| Hello | 用于PIM邻居发现、协议参数协商,以及PIM邻居关系维护等 |
| Register(注册) | 用于实现源的注册过程。这是一种单播报文,在源的注册过程中,组播流量被第一跳路由器封装在单播注册报文中发往RP |
| Register-Stop(注册停止) | RP使用该报文通知第一跳路由器停止通过注册报文发送组播流量 |
| Join/Prune(加入/剪枝) | 加入报文用于加入组播分发树,剪枝则用于修剪组播分发树 |
| Bootstrap(自举) | 用于BSR选举。另外BSR也使用该报文向网络中扩散C-RP(Candidate-RP,候选RP)的汇总信息 |
| Assert(断言) | 用于断言机制 |
| Candidate-RP-Advertisement(候选RP通告) | C-RP使用该报文向BSR发送通告,报文中包含该C-RP的IP地址及优先级等信息 |
RPT加入过程
PIM-SM与PIM-DM的工作方式不同,PIM-SM不会像PIM-DM那样,直接将组播流量推送到全网,运行PIM-SM的路由器需要使用PIM加入报文构建RPT的分支。
- 如图,初始情况下,网络中的RPT没有任何分支,因此RP在收到组播流量后,会直接将其丢弃
- 当PC1宣告加入组播组239.1.1.87,它通过发送IGMP成员关系报告宣告自己加组
- 最后一跳路由AR4收到这个IGMP成员关系报告后在自己的PIM路由表中创建(,239.1.1.87)表项,将收到IGMP报文的接口G0/0/1添加到该组播表项的下游接口列表中,并朝着RP的方向发送(,239.1.1.87)PIM加入报文,AR4会在其单播路由表中查询到达RP的路由,从而得到上游接口,以及上游PIM邻居的地址
- AR5收到了AR4发送的加入报文后,知道AR4想加入RPT,于是在其PIM路由表中创建(,239.1.1.87)表项,然后将收到加入报文的接口添加G2/0/0到该表项的下游接口列表中。由于自己并非RP,因此AR5需要继续朝着RP的方向发送(,239.1.1.87)加入报文。通过查询单播路由表,AR5发现了到达RP的出接口G0/0/1,于是向上游AR3发送(*,239.1.1.87)加入报文
- AR3接收到AR5发来的(,239.1.1.87)加入报文,将创建(,239.1.1.87)表项,将收到该报文的接口(G0/0/1)添加到表项的下游接口列表中,由于它本身就是RP,因此从最后一跳路由器AR4到RP的这段RPT的分支就构建完成了。此后,如果RP从MCS1收到了发往239.1.1.87的组播流量,便开始向下游接口转发该组播流量,那么AR4就能够在RPT上接收(*,239.1.1.87)组播流量并将转发到接收者所在的接口
- 现在假设PC2也加入组播组239.1.1.87,于是它发送IGMP成员关系报告以宣告自己加组
- AR6收到PC2发送的IGMP成员关系报告后,创建(,239.1.1.87)表项,并且将相应的接口G0/0/1添加到该表项的下游接口列表中,然后从上游接口向AR5发送(,239.1.1.87)PIM加入报文,请求加入RPT
- AR5收到AR6的(,239.1.1.87)PIM加入报文后,发现本地已经存在(,239.1.1.87)表项,于是将接收该报文的接口G2/0/1加入到(,239.1.1.87)表项的下游接口列表中,并开始将(,239.1.1.87)组播流量转发到这个接口
PRT剪枝过程
- 当PC2发送IGMP离组报文,宣告自己离开离开组播组239.1.1.87
- AR6收到这个报文后,会在接收报文的接口上进行特定组查询,由于AR6的直连网段中并不存在239.1.1.87组的其他成员,因此AR6将该接口从组播表项(,239.1.1.87)的下游接口G0/0/1从下游接口列表中删除。完成这个操作后,AR6发现(,239.1.1.87)表项的下游接口列表为空,意味着不再需要(,239.1.1.87)的组播流量,于是从上游接口发送一个(,239.1.1.87)的PIM剪枝报文,试图将自己从RPT上剪除
- AR5收到(,239.1.1.87)的PIM剪枝报文后,在自己的(,239.1.1.87)表项的下游接口列表中将接收该报文的接口G2/0/1删除。执行完成这个操作后,由于下游接口列表中还有另外的接口,因此AR5自己还需要(*,239.1.1.87)组播流量,会保持现状
- 一段时间后,PC1页离开组播组239.1.1.87,PC1通过发送IGMP离组报文宣告自己离组
- AR4收到这个IGMP离组报文后,针对该组播组进行特定组查询,发现这个接口上已经没有239.1.1.87组播组的其他成员了,因此AR4将该接口G0/0/1从(,239.1.1.87)表项的下游接口列表中删除。完成这个操作后,AR4发现该表项的下游接口列表已经为空,于是从上游接口发送(,239.1.1.87)PIM剪枝报文,试图将自己从PRT中剪除
- AR5收到这个(,239.1.1.87)PIM剪枝报文后,将接收该报文的接口G2/0/0从自己的(,239.1.1.87)表项的下游接口列表中删除,而执行完这个操作后,AR5发现该表项的下游接口列表已经为空,如此一来,网络中当前已经不存在RPT的任何分支,因此自己也不再需要(,239.1.1.87)组播流量了,它将MCS1发送过来(,239.1.1.87)组播流量丢弃
源的注册过程
- 当组播源MCS1开始向组239.1.1.87发送组播流量后,这些组播流量首先被第一跳路由器AR1收到,后者现在要将组播报文发向RP。AR1将启动一个注册(Register)过程以便将组播报文送达RP。AR1必须事先知道组播组239.1.1.87与RP(3.3.3.3)的映射关系,然后AR1通过查询自己的单播路由表寻找到达RP的路径。为了确保组播报文能够准确到达RP,AR1将其收到的组播报文封装PIM注册报文中。注册报文是单播报文,缺省时其源IP地址为AR1的接口IP地址10.1.1.254,目的IP地址是RP的IP地址3.3.3.3
- 封装着组播报文的注册报文被AR1发送给AR2,再被AR2转发到AR3(实际上对于AR2而言,这只是一个发往AR3的普通单播报文),现在报文达到了RP
- RP将注册报文解封装,得到里面的组播报文,它将这个组播报文沿着RPT转发下去(假设当前RPT已经建立完成,PC1是组播组239.1.1.87的成员)。实际上,当RP收到第一个注册报文并成功解封装后,RP就已经知道了组播源的IP地址,此时RP在自己的单播路由表中查询到达组播源的路径及出接口,然后朝着组播源的方向发送(10.1.1.1,239.1.1.87)PIM加入报文,试图在自己与源之间构建一颗SPT。这个加入报文被RP发往自己的上游邻居AR2
- AR2收到这个(10.1.1.1,239.1.1.87)PIM加入报文后,创建(10.1.1.1,239.1.1.87)表项,并将接收该报文的接口G0/0/1添加到下游接口列表中,然后继续向自己的上游邻居AR1发送(10.1.1.1,239.1.1.87)PIM加入报文
- AR1收到AR2发送的(10.1.1.1,239.1.1.87)PIM加入报文后,将接收该报文的接口G0/0/0添加到(10.1.1.1,239.1.1.87)表项的下游接口列表中。此时AR1到RP之间的SPT就构建完成了
- 现在,当AR1再次收到MCS1发往239.1.1.87的组播报文时,由于(10.1.1.1,239.1.1.87)表项的下游接口列表为非空,因此AR1将组播报文从下游接口转发出去。另外,AR1依然将组播报文封装在注册报文中,通过单播的方式发往RP
- AR2收到AR1发送的组播报文后,发现组播报文是在(10.1.1.1,239.1.1.87)表项的上游接口到达,因此该报文通过了RPF检查,AR2将其从自己的下游接口G0/0/1转发给AR3。而单播的注册报文也会被AR2转发给AR3
- 此时对于AR3而言,一方面会在SPT上收到(10.1.1.1,239.1.1.87)组播报文,另一方面对单播注册报文解封装后又会得到同一组播报文的另一份拷贝,这是两份相同的组播报文,显然是没有意义的。实际上由于SPT已经构建完成,RP已经能够直接从SPT接收组播流量,因此AR1没有必要再将组播报文封装在注册报文中发往RP,RP通过向AR1发送一个PIM注册停止报文,以便让AR1停止向其发送注册报文
- AR1收到注册停止报文后,不再将组播报文封装在注册报文中发往RP。于是,组播报文只是顺着SPT从AR1转发到RP
RPT到SPT的切换过程
PC1是组播组239.1.1.87的接收者,AR4在自己与RP之间建立了一段RPT的分支,而RP则在自己与AR1之间建立了SPT。如此,组播流量将从MCS1发出,沿着SPT先到达RP,然后由RP将组播流量沿着RPT转发下去。然而这是一条次优路径,更优的路径是组播流量到达AR2后,直接被转发给AR5,而不用从RP绕一下,另一个问题是,所有的组播流量都需先经过RP进行分发,当流量特别大时,RP的负担将变得非常重,也就容易引发故障
PIM-SM的SPT切换机制可以很好解决这个问题。如图,当AR4在其RPT上收到组播报文时,便立即知晓了组播源的IP地址(也就是该报文的源IP地址),那么AR4便可以在自己与组播源之间建立一段SPT的分支,然后通过该SPT的分支直接从源获取组播流量,由于该SPT分支是直接建立在自己与源之间的,因此接收组播流量的路径必定是最优的
SPT的切换机制是发生在与组播接收者直连的最后一跳路由器上的,缺省时,AR4在RPT上收到第一份组播报文后立即触发SPT切换
- 组播报文沿着RPT到达最后一跳路由器AR4,AR4收到组播报文后,便知晓了MCS1的地址,AR4将立即启动SPT切换(可以通过在AR4上设置组播流量的速率阈值,使得当组播流量的速率达到指定的阈值后,才触发SPT切换。缺省时,最后一跳路由器只要一收到组播报文,便立即进行SPT切换)。AR4朝着MCS1的方向发送(10.1.1.1,239.1.1.87)的PIM加入报文
- 上游邻居AR5收到了AR4的(10.1.1.1,239.1.1.87)的PIM加入报文后,将接收该报文的接口G2/0/0添加到(10.1.1.1,239.1.1.87)表项的下游接口列表中。然后在单播路由表中查询到达MCS1的路由,明确了到达MCS1的出接口及下一跳IP地址后,AR5向上游邻居AR2发送(10.1.1.1,239.1.1.87)的PIM加入报文
- AR2此时已经存在(10.1.1.1,239.1.1.87)表项,AR2将收到加入报文的接口G2/0/0添加到该表项的下游接口列表中。现在,AR2的(10.1.1.1,239.1.1.87)表项的下游接口列表存在两个接口,一个是连接RP的接口G0/0/1,另一个是连接AR5的接口G2/0/0。当AR2再从AR1接收(10.1.1.1,239.1.1.87)组播流量时,便会将该流量从这两个下游接口转发出去。
- 由于AR5此时已经处于SPT上,同时还在RPT上,因此AR5会分别在SPT及RPT上收到重复的组播流量,这显然是多余的。因此,AR5会开始进行RPT修剪过程,将自己从RPT上剪除。当AR5开始在SPT上收到AR2转发过来的(10.1.1.1,239.1.1.87)组播流量后,AR5将朝着RP的方向发送一个特殊的(10.1.1.1,239.1.1.87)剪枝报文,试图将自己从RPT上剪除。该剪枝报文中设置RP比特位,这个剪枝报文会一路发往RP
- AR3收到AR5发送的(10.1.1.1,239.1.1.87)的剪枝报文后,将接收报文的接口G0/0/1从(10.1.1.1,239.1.1.87)表项的下游接口列表中删除。完成这个操作后,AR3发现此时该表项的下游接口列表为空,意味着不再需要从SPT上接收组播组239.1.1.87的组播流量,因此它朝着MCS1的方向发送(10.1.1.1,239.1.1.87)剪枝报文,试图将自己从SPT上剪除
- AR2收到AR3发送的(10.1.1.1,239.1.1.87)剪枝报文后,将接收该报文的接口G0/0/1从(10.1.1.1,239.1.1.87)表项的下游接口列表中删除。此时,组播流量将沿着SPT从MCS1流向PC1
PIM-SM DR
DR的选举依赖于PIM的Hello报文,当设备的接口激活PIM后,该接口便开始发送Hello报文,PIM使用Hello报文发现并建立邻居关系,Hello报文中携带着接口的DR优先级以及IP地址等信息。当设备在接口上收到其他邻居发送过来的Hello报文后,便会将自己的DR优先级和IP地址与报文中的内容进行比较,从而选举出该网段中的DR。DR的选举规则如下:
- 当网络中的设备都支持DR优先级时,DR优先级的值越大,优先级越高
- 如果DR的优先级相同,或者接入该网段的设备中至少有一台设备不支持在Hello报文中携带DR优先级,那么接口IP地址最大的设备将成为该网段的DR
DR的角色是可抢占的,如果一个网段中已经存在DR,而后又出现了一台新的设备,且该设备的接口DR优先级要高于当前DR,那么它将会抢占其角色,成为该网段的新DR。华为网络设备缺省的接口DR优先级为1,可以在接口视图下使用pim hello-option dr-priority命令修改该接口的DR优先级
在PIM-DM中DR仅有一种作用,就是作为IGMPv1的查询器
//修改DR的优先级
pim hello-option dr-priority 1000
案例
//AR1
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.1.254 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.12.1 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
pim
static-rp 3.3.3.3
#
//AR2
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.23.2 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
ip address 10.1.24.2 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
pim
static-rp 3.3.3.3
#
//AR3
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.34.3 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.23.3 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
pim
static-rp 3.3.3.3
#
//AR4
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.34.4 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.24.4 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
ip address 192.168.1.254 255.255.255.0
pim sm
igmp enable
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
pim
static-rp 3.3.3.3
#
静态RP
//查看RP信息
display pim rp-info
- static-rp命令可以在一台路由器上多次执行,但是同一个ACL只能映射到一个静态RP。如果static-rp命令不关联任何ACL,那么只能配置一个静态RP
- 缺省情况下,路由器将优先选择BSR发现的动态RP,可以通过preferred关键字修改优先顺序
- 所有PIM-SM路由器(包括RP本身)需要有针对RP完全一致的认知。同一个组播组,在所有的PIM-SM路由器上必须映射到相同的RP
- 一个特定的组播组只能被映射到唯一的RP上。如果在同一个PIM-SM网络中,一个组播组被映射到了不同的RP,那么组播的工作显然是会出问题的
BSR(BootStrap Router)
RP相当于组播网络中的一个组播数据汇聚中心,而BSR(BootStrap Router)则相当于组播网络中的管理中心,管理着动态选举RP的整个过程。
BSR的工作机制
首先网络中会选举出一台BSR,BSR被选举出来之后,它将向整个网络通告自己的存在。网络中的PIM-SM路由器会侦听BSR所泛洪的通告并保存BSR的相关信息,而C-RP(Candidate-RP,候选RP)则纷纷向BSR发送自己的候选通告。BSR收集所有C-RP发送过来的候选通告后,将这些通告加以汇总,然后将汇总的信息向全网进行泛洪。网络中所有的PIM-SM路由器都会收到这个汇总信息,然后各自基于这些信息,采用相同的算法进行计算,最终得到组播组与RP的映射关系。由于每台PIM-SM路由器所收到的C-RP信息集合是一致的,而且基于这些信息采用相同的算法进行计算,因此得出的组播组与RP的映射关系必然也是相同的
概念
| 标题 | 描述 |
|---|---|
| C-BSR | 网络中允许存在一台或者多台C-BSR,C-BSR(Candidate-BSR,候选BSR)是BSR的候选者,它们都有意愿成为BSR,在成为BSR之前,它们之间要进行选举,胜出的C-BSR成为该网络的BSR。BSR的选举是通过PIM自举(BootStrap)报文进行的,报文中包含C-BSR的优先级、哈希掩码长度,以及其IP地址等信息。网络中优先级值最大的C-BSR胜出成为BSR,如果优先级相等,那么拥有最大IP地址的C-BSR将会胜出 |
| BSR | 在一个PIM-SM网络中,可以存在一台或多台C-BSR,但只会存在一台BSR,它是从所有C-BSR中选举产生的。BSR周期性向网络中泛洪自举报文,以通告自己的信息。所有C-RP都会知晓BSR的地址。BSR负责收集C-RP发送过来的信息,将C-RP信息汇总后泛洪到整个PIM-SM网络中。实际上BSR并不决定组播组与RP的映射关系,它只是简单地将C-RP的信息汇总并扩散,而决定组播组与RP映射关系的是每一台PIM-SM路由器自己 |
| C-RP | C-RP是RP的候选者,网络中允许存在一台或多台C-RP,这些C-RP可以为不同的组播组范围服务,而且组播组范围可以有重叠。C-RP获知BSR的地址后,将自己负责的组播组范围,RP优先级及IP地址等信息以单播的形式发送给BSR |
| RP | 如果PIM-SM路由器采用BSR自动发现RP,那么每一台PIM-SM路由器会基于BSR泛洪的、关于所有C-RP的信息进行计算,最终将组播组映射到RP。所有PIM-SM路由器针对相同的组播组,都会映射到同一台RP。一台PIM-SM路由器可以是C-BSR,同时又是一台C-RP |
BSR工作机制
所有的路由器都运行了PIM-SM,其中AR3和AR5是C-BSR,AR2和AR4是C-RP;假设AR5的BSR优先级是100,AR3的BSR优先级值为0;AR4的RP优先级是100,AR2的RP优先级是0
- 初始时,AR3和AR5都认为自己是BSR,它们都向网络中泛洪PIM自举报文,该报文以组播的方式发送,目的IP地址是组播IP地址224.0.0.13。自举报文会被扩散到全网(实际上自举报文是逐跳地传遍整个网络的),这使得所有的C-BSR都能知晓网络中其他C-BSR的信息。自举报文中包含着多个重要信息,其中有两个信息在这个比较关键:C-BSR优先级、C-BSR的IP地址。以AR5为例,它会从自己连接AR3、AR4和AR6的接口都发送自举报文,其中,从连接AR4的接口发出的自举报文的源地址为10.1.45.5,目的IP地址是224.0.0.13,该自举报文的TTL值为1,也就是只会传递1跳。再以AR4为例,它收到这个自举报文后,会记录报文中的相关信息,并重新产生自举报文,然后继续向其连接AR1及AR2的接口泛洪。AR4在其连接AR1的接口上泛洪的自举报文,源IP地址为该接口的IP地址10.1.14.4,目的IP地址为224.0.0.13,报文中承载着C-BSR AR5信息随着自举报文的逐条传递,最终扩散到全网
- 现在AR3和AR5都知道了对方的存在,也知道了对方的BSR优先级和IP地址。由于AR5的优先级更高,因此AR5胜出成为该网络的BSR。选举胜出后,AR5将继续周期性(缺省发送间隔为60秒)向网络中泛洪自举报文,而AR3则不再发送包含自己C-BSR信息的自举报文
- 当网络中的C-RP(AR2和AR4)明确了当前的BSR后,便开始周期性发送PIM C-RP通告(Candidate-RP-Advertisement,候选RP通告)报文。该报文以单播形式发送,报文发往当前的BSR。以AR2为例,假设AR2使用其Loopback0接口的地址2.2.2.2作为C-RP地址,那么AR2产生的C-RP通告报文的源IP地址为2.2.2.2,而目的IP地址为5.5.5.5,AR2和AR4通过查询自己的单播路由表获取到达BSR的路径。以AR2为例,AR2发往BSR的C-RP通告报文,该报文中包含一些用于RP选举的信息,“priority”字段填写的是该C-RP的优先级,这个优先级的值越大,则优先级越低;“Holdtime”字段则指示BSR等待接收该C-RP发送的C-RP通告报文的超时时间;“RP”字段填写的是该C-RP的IP地址;“Group”字段填写的是C-RP所服务的组播组范围
- BSR收到了C-RP发送过来的通告后,便知晓了每台C-RP的信息,它将这些信息进行汇总,然后封装在自己的自举报文中,周期性向网络中泛洪。最终,全网的PIM-SM路由器都发现了网络中所有的C-RP及其相关信息。由于PIM-SM路由器都是从同一台BSR接收了C-RP的汇总信息,因此每台PIM-SM路由器最终获取到的信息是一致的
- 最后,每台PIM-SM路由器都基于C-RP汇总信息,使用相同的算法进行计算,得到每个组播组对应的RP
采用的算法如下:
- C-RP所服务的组播组范围与该组播组地址匹配度最长的C-RP胜出;
- 如果C-RP所服务的组播组范围相同,则C-RP优先级值最小的胜出
- 如果C-RP的优先级相同,那么进行哈希计算,将组播组地址、BSR哈希掩码、C-RP的IP地址作为哈希函数的输入,得到哈希结果,哈希值最大的胜出
- 如果哈希值相等,则C-RP的IP地址最大的胜出
在本例中,由于AR4服务的组范围是239.0.0.0/24,而AR2则是224.0.0.0/24,因此对于组播组239.0.0.1至239.0.0.255而言,网络中所有的PIM-SM路由器将会认为AR4是这些组播组对应的RP,而对于除了组播组239.0.0.1至239.0.0.255之外的其他组播组,由于超出了AR4所服务的范围,因此AR2将会成为它们的RP。通过这种方式实现RP的负载分担
//AR1
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.1.254 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.14.1 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
ip address 10.1.12.1 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
//AR2
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.23.2 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
ip address 10.1.24.2 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
pim sm
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
pim
c-rp LoopBack0
#
//AR3
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.23.3 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.35.3 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
ip address 10.1.36.3 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
pim sm
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
pim
c-bsr LoopBack0
#
//AR4
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.14.4 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.45.4 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
ip address 10.1.24.4 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
pim sm
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
pim
c-rp LoopBack0 group-policy 2000 priority 100
#
//AR5
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.45.5 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.35.5 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
ip address 10.1.56.5 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface LoopBack0
ip address 5.5.5.5 255.255.255.255
pim sm
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
pim
c-bsr priority 100
c-bsr LoopBack0
#
//AR6
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
ip address 10.1.56.6 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.36.6 255.255.255.0
pim sm
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
ip address 192.168.1.254 255.255.255.0
pim sm
igmp enable
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#