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

组播拓扑:

从第一跳路由器(FH)到最后一条路由器(LH)中间会形成一个组播分发树.

组播分发树有两种模型:

1、源树模型:从源到接受者计算出一条最短路径。

如source1到host1走的路径是:source1-->A-->C-->host1

source1到host2走的路径是:source1-->A-->C-->E-->host2

source2到host1走的路径是:source2-->F-->D-->C-->host1

source2到host2走的路径是:source2-->F-->D-->C-->E-->host2

2、共享树模型:从各个源先到集中点(RP),再从集中点到host

上图拓扑假设D为集中点(RP)

第一段:从源到RP,此部分其实也是源树模型

source1-->A-->B-->D;

source2-->F-->D;

第二段:从RP到host,此部分为真正的共享树模型

D-->C-->host1

D-->C-->E-->host2

两种分发树优缺点比对:

源树:从源到host都是最优路径,但是浪费带宽资源

共享树:源到host不一定是最优路径,但是无关路由器不需在维护组播信息

二、两种模式

1、Dense mode:密集模式,可以理解为源树模式

2、sparse mode:稀疏模式,可以理解为共享树模型

pim协议可以支持以上两种模式

三、两种分发树工作机制

1、源树使用机制,源发送组播流,沿途的开启组播的路由器立即生成一条(Source,Group)条目,记录接收组播的接口,即入接口,如source1(ip地址为1.1.1.1)去往组播组224.1.1.1;则A会生成一条(S,G)条目;

2、共享树使用机制,前一段与源树工作机制一样,生成一条(S,G),后一段即从RP到LH使用的是拉机制,由于不区分源,生成的是一条(*,G)条目,由host发送加组消息,LH沿着到RP的路径上发送join组消息,从源拉取数据。

四、组播防环

组播工作机制,从一个接口接收到组播流,则朝其他所有接口发出。如上的拓扑图,容易在A/B/C/D路线上形成环路,A-->B-->D-->C-->A

组播防环机制:路由器决定仅从某一个接口接收组播流量,其余接口来的组播流量默认丢弃。

RPF接口检测机制:路由器从哪一个接口接收到来自源的组播流,也必须从此接口去往此源。否则丢弃。

如上图,F选举出红色接口为RPF接口,则从蓝色接口来的组播流默认丢弃。

对于源树而言,RPF接口是去往source的接口

对于共享树而言,RPF接口是去往RP的接口

时间: 2024-12-15 05:06:44

组播学习笔记(四)组播分发树简述+组播防环的相关文章

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

一.组播路由表主要内容: 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

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

【Unity 3D】学习笔记四十六:输入与控制——键盘事件

在游戏中,玩家控制主角移动,按键攻击,选择行走.都需要在程序中监听玩家的输入.unity为开发者提供了input库,来支持键盘事件,鼠标事件以及触摸事件.本文主要回顾键盘事件,以后会逐文复习鼠标以及触摸事件. 键盘事件 一般的PC键盘有104个不同的按键,在程序中通过监听这些按键事件,从而进一步执行逻辑操作.如:射击游戏中,W表示前进,S表示后退,A表示左移,D表示右移. 按下事件 在脚本中,用input.GetKeyDown( )方法将按键值作为参数,监听此按键是否被按下.按下返回true,否

【Unity 3D】学习笔记四十五:游戏实例——击垮围墙

用这个游戏实例来总结之前我们复习的所有关于物理引擎的知识.在游戏中,发送一个球形的炮弹来击垮前面的墙.给炮弹与墙都添加了刚体组件,给炮弹绑定了粒子系统,并且在炮弹的粒子动画中添加了5组不同的颜色,显示移动轨迹. using UnityEngine; using System.Collections; public class Script_06_14 : MonoBehaviour { //炮弹对象 private GameObject obj; //准心贴图 public Texture te

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能 说一下IHandle<T>实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双向的所以我们想动态的实现多语言切换很是方便今天我做一个小demo给大家提供一个思路 先看一下效果 点击英文  变成英文状态点chinese就会变成中文                          源码的下载地址在文章的最下边 多语言用的是资源文件建

代码管理工具 --- git的学习笔记四《重新整理git(1)》

1.创建版本库 mkdir  创建目录 cd  地址,到该地址下 pwd 显示当前目录 1.创建目录 $ mkdir startGit $ cd startGit $ pwd 显示当前目录 或者cd到桌面,然后再创建目录 2.初始化版本库 $ git init 初始化仓库 提示信息:Initialized empty Git repository in /Users/xingzai/Desktop/startGit/.git/ 建立一个空的git仓库在/Users/xingzai/Desktop

小猪的数据结构学习笔记(四)

小猪的数据结构学习笔记(四) 线性表之静态链表 --转载请注明出处:coder-pig 本章引言: 在二,三中中我们分别学习了顺序表中的线性表与单链表,线性表有点类似于 我们前面所学的数组,而单链表使用的最多的是指针,这里问个简单的问题, 如果是在以前没有指针的话,前辈先人们怎么实现单链表呢?大家思考下! 没有指针,那么用什么来代替呢?前辈先人们非常机智,想出了使用下标+游标的方式 来实现单链表的效果!也就是今天要讲的--静态链表! 当然你也可以直接跳过本章,因为有了单链表就没有必要用静态链表了

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

NLTK学习笔记(四):自然语言处理的一些算法研究

自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结的自然语言中常用的一些基本算法,算是入个门了. 递归 使用递归速度上会受影响,但是便于理解算法深层嵌套对象.而一些函数式编程语言会将尾递归优化为迭代. 如果要计算n个词有多少种组合方式?按照阶乘定义:n! = n*(n-1)*...*1 def func(wordlist): length = le