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

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

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决定由谁想上拉取数据

时间: 2024-10-10 05:15:08

组播学习笔记(五)源树+共享树详解的相关文章

算法学习笔记 KMP算法之 next 数组详解

最近回顾了下字符串匹配 KMP 算法,相对于朴素匹配算法,KMP算法核心改进就在于:待匹配串指针 i 不发生回溯,模式串指针 j 跳转到 next[j],即变为了 j = next[j]. 由此时间复杂度由朴素匹配的 O(m*n) 降到了 O(m+n), 其中模式串长度 m, 待匹配文本串长 n. 其中,比较难理解的地方就是 next 数组的求法.next 数组的含义:代表当前字符之前的字符串中,有多大长度的相同前缀后缀,也可看作有限状态自动机的状态,而且从自动机的角度反而更容易推导一些. "前

组播学习笔记(四)组播分发树简述+组播防环

组播拓扑: 从第一跳路由器(FH)到最后一条路由器(LH)中间会形成一个组播分发树. 组播分发树有两种模型: 1.源树模型:从源到接受者计算出一条最短路径. 如source1到host1走的路径是:source1-->A-->C-->host1 source1到host2走的路径是:source1-->A-->C-->E-->host2 source2到host1走的路径是:source2-->F-->D-->C-->host1 sourc

组播学习笔记(六)SPT+RP自动选举

SPT切换能够结合共享树和源树的优点.主要机制是在LH设置一个阀值,当流量超过这个阀值时,组播分发树从共享树切换成源树.默认这个阀值为0,即一旦有组播流量则从共享树切换成源树. 一开始没有组播流量抵达LH,即F时,组播分发树为共享树,host1发送IGMP join消息,LH向上发送pim join消息拉取数据,假设E为RP,此时共享树部分结束. source开始通过A向RP进行注册,RP收到了source的注册消息生成一条(S,G)条目,并向B发送join消息,B再向A发送join消息,最终从

Cocos2d-x学习笔记(十四)CCAutoreleasePool详解

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38964637 前言 之前学了那么多的内容,几乎所有的控件都要涉及内存管理类CCAutoreleasePool,所以这一次的学习笔记,我们一起来看看CCAutoreleasePool,先从CCObject的autorelease方法入手. CCObject::autorelease CCObject* CCObject::autorelease(void) { // 将

Kinect学习笔记之三Kinect开发环境配置详解

0.前言: 首先说一下我的开发环境,Visual Studio是2013的,系统是win8的64位版本,SDK是Kinect for windows SDK 1.8版本.虽然前一篇博文费了半天劲,翻译了2.0SDK的新特性,但我还是决定要回退一个版本. 其实我之前一直在用2.0的SDK在调试Kinect,但无奈实验室提供的Kinect是for Windows 1.0版本的,而且Kinect从1.8之后就好像是一个分水岭,就比如win8和win7有很大的差别,2.0版的Kinect和SDK都是相较

JQuery学习笔记系列(一)----选择器详解

笔者好长时间没有更新过博客园的笔记了,一部分原因是去年刚刚开始工作一段时间忙碌的加班,体会了一种每天加班到凌晨的充实感,之后闲暇时间了也因为自己懒惰没有坚持记笔记的习惯,现在重新拾起来. 借用古人的一段话与诸君共勉: 人之为学,不日进则日退,独学无友,则孤陋而难成:久处一方,则习染而不自觉.不幸而在穷僻之域,无车马之资,犹当博学审问, 古人与稽,以求其是非之所在.庶几可得十之五六.若既不出户,又不读书,则是面墙之士,虽子羔.原宪之贤,终无济于天下. 翻译为:人们求学(或做学问),不能天天上进,就

05.学习笔记-linux用户信息管理之文件详解

/etc/passwd用户账户信息. /etc/shadow安全用户账户信息. /etc/group组账户信息. /etc/gshadow安全组账户信息. /etc/default/useradd账户创建的默认值. /etc/skel/包含默认文件的目录. /etc/login.defsShadow密码套件配置. /etc/passwd account:用户名 password:密码 UID:用户身份证明 /etc/passwd GID:基本组ID,群体身份 /etc/group comment

iOS5 ARC学习笔记:strong、weak等详解

iOS5中加入了新知识,就是ARC,其实我并不是很喜欢它,因为习惯了自己管理内存.但是学习还是很有必要的. 在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想大家都很熟悉了,在此我也不介绍,网上有很多相关文章. 现在我们看看iOS5中新的关键字strong, weak, unsafe_unretained. 可以与以前的关键字对应学习strong与retain类似,weak与unsafe_unretained功能差不多(有点区别,等下会介绍,这两个新 关键字与

深度学习笔记——PCA原理与数学推倒详解

PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多,或者说我要存在内存中会占用我的较大内存,那么我就需要对这些个点想一个办法来降低它们的维度,或者说,如果把这些点的每一个维度看成是一个特征的话,我就要减少一些特征来减少我的内存或者是减少我的训练参数.但是要减少特征或者说是减少维度,那么肯定要损失一些信息量.这就要求我在减少特征或者维度的过程当中呢,尽