组播地址是不是可以自动获取(组播转发详细解析)(1)

组播转发路径是在组播流量从源端DR开始经过不断扩散和转发以及不断的RPF检查和创建表项信息后所形成的组播分发树而构建起来的;

MDT:组播分发树(指导组播数据流转发) 是组播数据流所经过的路由器的转发路径形成的一颗无环的树

(1)源树:SPT,组播接收者的路由器到组播源的路由器路径最短的树

1 特点:转发路径最短

2 根据(S,G)转发组播数据流,上下游接口的设置规则如下: 上游接口:组播流的入接口,只能存在一个(离组播源最近的接口)下游接口:组播流的转发接口列表(离接收者最近的接口)

3 缺点:多个源存在时,存在多个(S,G)条目,对设备消耗大。 优点:转发路径最短

(2)共享树:RPT(RP汇聚点)组播接收者的路由器到RP路由器路径最短的树

1 特点:源到接收者的转发路径不是最短

2 根据(*,G)转发组播数据流,上下游接口的设置规则如下: 上游接口:组播流的入接口,只能存在一个(离RP最近的接口) 下游接口:组播流的转发接口列表(离接收者最近的接口)

3 缺点:转发路径不一定是最优路径; 优点:多个源存在时,共享一颗树,对设备消耗较小

RPF 检查是什么?作用是什么?

(1) RPF检查:RPF:反向路径转发检查。接收组播数据流之前或者接收组播协议报文时(例如BSR消息),必须执行RPF检查,检查通过接收组播流或者报文,检查不通过丢弃组播流或者报文。

1. 避免组播流环路

2 .避免重复组播流

检查过程:组播流的入接口和相应的RPF接口是否是一致,同时检查组播流的源IP地址是否与RPF neighbor一致。

a)SPT树上的RPF检查: 收到组播流,查看组播流的S,根据S查找组播路由表,单播路由表中到达S的接口为RPF接口,对比RPF接口和组播流的入接口是否一致,一致则通过

b)RPT树上的RPF检查: 是根据RP的地址来选择RPF的接口,对比组播流的入接口与到RP的接口是否一致

(2) RPF接口选择的依据(详细的rpf检查规则): 相应路由协议的优先级,如果优先级一致根据以下规则选择:

1 静态组播路由ip rpf-route-static (默认优先级为1)

2 根据MP-BGP

3 单播路由表(如果单播路由表到达源存在两个下一跳地址,选择下一跳ip地址大的作为RPF接口)

注意:如果开启掩码比较,则先按最长掩码比较,再根据路由优先级比较 默认情况下,根据组播路由的优先级来进行匹配RPF check条目,除单播路由外,MBGP路由、组播静态路由也是RPF检查的依据。

当路由器收到一份组播报文后,如果这三种路由表都存在,具体检查过程如下:

a)通过报文源地址,分别从单播路由表、MBGP路由表和组播静态路由表中各选出一条最优路由。根据以下原则从这三条最优路由中选择一条作为 RPF路由。

b)如果配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由;如果这三条路由的掩码一样,则选择优先级最高的那条路由;如果它们的优先级也相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。如果没有配置按照最长匹配选择路由,则从这三条路由中选出优先级最高的那条路由;如果它们的优先级相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。

最后,路由器会将报文的入接口与RPF路由的RPF接口进行比较。 如果一致则RPF检查通过,表明该报文来源路径正确,会将其向下游转发; 如果不一致即RPF检查失败,表明该报文来源路径错误,就将其丢弃。

(3) 针对BSR消息的RPF check

1 当一个接口收到BSR消息,会根据BSR消息中BSR的地址执行RPF check。 当发现收到BSR消息的接口不是RPF check的接口,发送BSR消息的不是自己的pim邻居,会将BSR消息丢掉。

2 BSR消息进行RPF check的作用:防止环路

PIM(协议无关组播路由协议)是什么协议?作用是什么?

作用:用于组播路由器与组播路由器之间构建组播路由表

协议无关组播:与网络层运行哪一种单播路由协议无关,但是网络层必须要运行一种单播路由协议,用于组播数据转发时进行RPF检查。

使用PIM的位置:

1 连接组播源的接口

2 需要转发组播路径经过的接口

3 连接接收者的接口(可选,运行IGMPV1的接口必须要配置PIM)

PIM协议的角色:

1 第一跳路由器:连接组播源的路由器(DR)

2最后一跳路由器:连接接收者的路由器(DR)

3 中间路由器:负责转发组播数据流

4 叶子路由器:与用户主机相连的PIM路由器,但连接的用户主机不一定为组成员

5 MDT:组播分发树,组播数据流所经过的路径形成的一颗无环的树

DR主要作用如下:

1 在连接组播源的共享网段,由DR负责向RP发送Register注册报文。

2 在连接组成员的共享网段,由DR负责向RP发送Join加入报文。

注1:在DM模式中也选DR,但不发挥作用

注2:每个中间网段也会选举DR,SM模式中,DR只在头一跳和最后一跳发挥作用。

PIM-SM(稀疏模式)

网络的接收者分布比较稀疏,接收者需要流量需要向RP(汇聚点)进行请求,当组播源活跃需要向RP注册,发现是否存在接收者,如果存在才会发送组播流量。

特点:

1 .使用“拉(Pull)模式”转发组播报文

2 .存在RP

3 .存在SPT以及RPT树,流量根据SPT以及RPT树转发

4. 适用于大型组播网络

工作机制

(1) 邻居发现

建立邻居的过程同PIM-DM一致,周期性的向所有PIM路由器(224.0.0.13)以组播方式发送PIM Hello报文,发现邻居以及维护邻居关系。协商参数、报文格式类型也完全一致。DR竞选规则也一致。

DR作用:

1 .在最后一跳路由器给IGMPV1充当查询器;

2 .在最后一跳路由器只有DR路由器才会向RP建立RPT树 (避免收到重复组播流);

3 .在最后一跳路由器由DR发出RPT树向SPT树切换;

4 .在第一跳路由器由DR向RP发出注册;

(2)RP发现注意问题:

1 每一个组播组只能存在一个RP;

2 .RP的地址必须要全网可达能通过IGP协议实现访问(建立rpt树);

3 .RP所在的接口地址必须要运行PIM SM。

成为RP的方式:

Pim / c-rp lo 0

Pim / static-rp x.x.x.x

手工指定

a)每台组播路由器都需要配置

b没有冗余备份(对于一个组播组)

动态发现

a)不需要每台组播路由器配置RP,可以自动学习到RP

b)有冗余备份,一个组播组可以配置多个C-RP,一个主多个备份

实现: BSR:负责收集以及通告RP的信息,网络中可以存在多台C-BSR

RP:为一个或者多个组提供RP服务。网络中可以存在多台C-RP

(3)RPT构建:

1 .由最后一跳DR路由器发起,当收到IGMP的报告消息,会产生相应的(*,G)条目,然后向去往RP的上游路由发出(*,G)的jion消息

2 .上游路由器收到(*,G)的jion消息之后,会检查(*,G)的jion消息的上游邻居接口和接收报文的接口IP地址是否是一致,如果一致创建 (*,G)的路由条目,并且继续往指向RP的上游路由器发送(*,G)的 jion消息上游接口:指向RP的接口下游接口:收到(*,G)的jion消息接口

3 .上游路由逐跳往RP发送(*,G)的jion消息构建RPT树,直达RP路由器为止,上游接口:NULL,下游接口:收到(*,G)的jion消息接口

(4)组播源注册

1 .当第一跳路由器DR收到来自组播源的流量,在第一跳路由器生成 (S,G),并且会向RP发出单播的注册报文,单播的注册报文包含组播的流量

2 .当RP收到注册报文,会检查注册报文中的(S,G)是否在RP上存在相应(*,G);

a) 如果不存在,向组播源发送注册停止报文,组播源收到注册停止消息,停止发送注册报文60S 。

b)如果存在,RP会将组播报文沿着RPT树发送给接收者,并且在RPT树上会生成相应的(S,G)条目

3 .RP会向组播源的方向发送(S,G)的jion报文,上游的路由器收到(S,G)的jion报文也会创建(S,G)的路由条目,并且继续向组播源的方向发送(S,G)的jion报文,直至组播源的第一跳路由器为止;

4 .RP从SPT树收到组播流之后,会单播向第一跳DR路由器发送注册停 止报文。

(5)SPT切换

1 好处:

a)组播源到接收者走为最优的路径

b)减轻RP的负担

2 切换条件:由最后一跳路由器的DR发起,当接收的组播流达到一定的阈值(默认为0)。

3 切换的过程:

a)当最后一跳路由器的DR组播流达到一定的阈值,会向组播源的方向发出( S,G)的jion消息;

b).当上游路由器收到(S,G)的jion消息,会将(S,G)的flag 位切换为SPT置位,上游接口为离组播源最近的接口,下游接口为接收(S,G)的jion消息接口,并且继续往组播源的方向发(S,G)的jion消息,建立SPT树;

c).当分叉点的组播路由器收到两份组播流,会触发(S,G)rpt 置位的剪枝报文,朝RP的方向进行发送,作用是为了删除掉RPT树上(S,G)的下游接口。

扩展问题1:RPF还有其他的哪些功能的?会不会用到掩码呢?

答:保证组播流量从正确的路径接收进来的样子演示一下,默认情况下根据RIB去往源地址所对应的下一跳和出接口判断,其二RPF具有的防次优防止环路的辅助功能;

问掩码的时候就回答RPF选路方式: 默认:组播 》MBGP 》RIB;比掩码是最长原则;其次优先级;

扩展问题2: 客户端是怎么样通过igmp加组的?

答:成员报告报文。接收者发出,用于表明加入哪个组播组中

主动发送:主动加入某个组

被动发送:收到普遍组查询报文,被动回复加入某个组,最大响应时间:10s,不可修改(因为报文中不包含此字段),单位为1s。

普遍组查询报文:由组播路由器(在IGMPv1版本中,由PIM 选出的DR周期性发出)发出,用于查询是否存在组播组,每60S发送一次,报文发送的目的地址为224.0.0.1。

响应抑制机制: 组播路由器发出查询报文后,组播组成员会启动响应定时器(1-10s 随机),响应时间先到的组成员先回复成员报告报文(同时该成员被选为 last-reporter),其他组成员收到加入组相同的成员报告报文就会取消发送成员报告报文。

扩展问题3. IGMP V2 版本的加组方式也是一样的吗?

答:不一样,V1版本是必须得运行pim,它的查询器是有PIM中的DR来充当;然后V2则不是,V2有自己的查询器选举机制(选IP小的),

(组播里面查询器选举 IP小RP选举优先级小的是优选)

查询器选举机制: 在IGMPv2机制中,IGMPv2新增本身的查询器选举机制,由普遍组查询报文进行选举,选举条件为:IP地址越小越优先。过程:刚开始所有的最后一跳路由器都认为自己为查询器相互发送查询报文,当收到查询报文之后,比较查询报文的源IP与自己接口的IP地址。如果自己接口的IP地址比较小,继续充当查询器,如果自己接口的IP地址比较大,不再发送查询报文,被动监听查询报文。如果125S没有收到,就自己充当查询器。

成员离开机制

离开报文 :由成员离开某个组播组时发出报文。只有last-reporter发送的离开报文才会触发特定组查询机制。

最大响应时间机制: 收到普遍组查询报文的主机会在0-10s的时间范围内随机挑选一个时间进行响应。例如:主机A随机选择时间,假设时间选择为5s,则主机A会等待5s后再发送成员报告报文。

Last-reporter机制: Last-reporter被称为:最后一个报告者,每一次普遍组查询报文第一个响应的主机被选为last-reporter。组播路由器通过记录主机的IP地址而记录last-reporter。

扩展问题4:RP的配置?RP的选举?

答:静态RP的配置;pim:c-rp Loopback 0;

static-rp 3.3.3.3 ;

动态RP选举工作流程

1 网络中所有的C-BSR都会以自己为BSR向所有的PIM邻居发出BSR报文Bootstrap报文也叫自举报文(组播发送);

2 PIM路由器收到C-BSR消息之后会选出最优的一台作为BSR: 选举规则:

a)比较BSR的优先级(默认为0,越大越优先);

b)比较BSR的IP地址,越大越优;

3 .网络中选出最优的BSR之后,BSR会周期性每60s泛洪BSR消息。所有的C-RP会向BSR单播发送RP的通告报文。RP通告包含(RP服务的组范围,RP的优先级,RP的IP地址);

4 .当BSR收到所有RP的通告报文之后,汇总成RP-set发送给所有的PIM邻居;

5 .PIM路由器根据收到的BSR报文中的RP-SET信息,选出最优的RP, 选举规则如下:

a).RP服务组范围的精确度,范围越精确越优;

b)RP的优先级,越小越优,RP优先级默认为0;

c)如果优先级相同,则执行Hash函数,计算结果较大者获胜;

d).如果以上都相同,则C-RP地址较大者获胜。

扩展问题5:在上述整个过程中这个自举报文都包含哪些参数信息呢?有哪些参数信息是可以手动配置的呢?

答:包括了BSR的优先级、地址、组播地址、C-rp的总数、rp地址、老化时间啊优先级等等的,可以手动配的有优先级、哈希掩码、interval间隔时间、holdtime保持时间等等

,