首页 > 代码库 > 组播学习笔记(五)源树+共享树详解

组播学习笔记(五)源树+共享树详解

一、组播路由表主要内容:

1、源

2、目的

3、入接口

4、RPF接口

5、RPF邻居


二、pim协议

pim(协议无关协议),此处协议无关是指单播协议无关,PIM可以基于任意单播协议工作。注意,组播是基于单播进行工作的,虽有组播表但是最终是查找单播路由表寻找出口。

IP协议号为103

不必发送组播更新,通过hello和hold,join报文来维持邻居关系,因此开销小。

hello时间30s,发向224.0.0.13(所有开启pim的功能的交换机都会监听此地址)

hold时间:3.5*30s=1分45秒


三、dense模式工作机制

1、泛洪:组播路由器从RPF接口接收到组播流,则朝其他非RPF接口发出

2、修剪:组播路由器下流若无参与组播host则将此接口修剪


技术分享


修剪机制:

1、叶子节点,如G,身后已无任何host,则直接朝RPF接口显示发送prune组播修剪消息(发向224.0.0.13)。此时D会接收到G的修剪信息,默认等待10s。在D的等待时间,若H身后有host需要此组播流。则H需要发送一个显示的join信息,提示D继续发送组播流信息。否则将被修剪。

2、非叶子节点,如F,从RPF接口(红色接口)收到组播流,保留。从蓝色非RPF接口收到组播流,则将此非RPF接口修剪掉。修剪的作用为F不再朝此RPF接口发送组播流。同理,E从F接收到组播流,也会将此接口修剪掉,不再朝此非RPF接口发送组播流。最终EF链路上将再无组播流。

3、每三分钟进行一次泛洪和修剪,所有路由器都会生成(S,G)表项并维持,如G也会保留(S,G)表项,以便日后有host加入组播组时可以接收到组播流量。因此,dense模式下无关的路由器都需要保持(S,G)消耗资源,此为dense源树的缺点

4、多LH

技术分享

host向上发送IGMP的加组消息,为了防止从A\B收到两份相同的组播报文。此时A\B将会发送一个assort报文,决定由谁向host发送组播流,剩下的路由器保持静默。同时也保证了A\B不会将彼此修剪掉,导致host无法接收到流量。


四、sparse模式工作机制

sparse不同于dense的默认所有路由器都需要组播流,sparse采用显示加入,需要组播流的路由器发送一个加组消息。拉取数据

技术分享

第一部分:从LH到RP拉取数据

1、host1向I(最后一条路由器LH)发送一个IGMP的加组消息,I接收到之后,由于不知道源地址,因此生成一条(*,G)条目,并向自己的RPF接口发送join消息,即F0/0接口(对于共享树而言,RPF接口为指向RP的接口);

2、F收到之后也生成一条(*,G)条目,同时向S0/0接口发出join消息;不断递归到RP处,此时从LH到RP的拉取动作已完成;


第二部分:从源到RP

1、此时RP收到了F的join信息,由于RP并不知道源在什么地方,此时需要源向RP发送一个源注册消息,告知RP自己的地址。

2、source发送一个注册报文给FH,由FH封装之后递交给RP.报文格式如下:

技术分享

RP收到报文解封之后获知source的IP为1.1.1.1,组为224.1.1.1,同步生产一条(S,G)条目,同时查找去往source(1.1.1.1)的RPF接口,朝其发送一条join消息。此时B收到了RP的join消息,本地生成一条(S,G)条目,并朝自己的RPF接口发送给一个join消息,发送到了FH。



第三部分、共享树多点链路拉取数据问题

技术分享

与源树相同,如上拓扑,host发送join消息,A\B需选取pimDR决定由谁想上拉取数据



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

组播学习笔记(五)源树+共享树详解