多播路由技术

什么是多播转发树?

用图论术语描述从特定源节点到多播组的所有成员的一组路径,这些路径定义了图论中的树(tree,是不含任何回路的图,即一个路由器不会在一条路径上出现两次或两次以上),有时也称为转发树。每个多播路由器对应于树中的一个结点。连接两个路由器的网络则对应于树种的一条边。分组的源结点是树的根或根结点。从源结点出发,沿着一条路径到达的最后一个路由器称为叶子路由器。连接在叶子路由器上的网络称为叶子网络。

基于源的树

多播路由技术_第1张图片

为了进行多播,需要这样一棵树,源主机是树根,而多播组的成员是树叶,这棵树连接了一个多播组的所有结点,并且从树根到树叶的每一条路径都是可能的最短路径,这样的树叫最短路径树(SPT)。由多播组的源S1(IP地址为192.168.0.66)发送给多播组G(组地址为239.0.0.11)的多播分组所经过的路径,用带箭头的实现表示。带箭头的实线形成已多播源为根的SPT转发树。一般使用一组对(S,G)来表示一颗SPT树,其中S表示多播源的IP地址,G表示要加入的多播组。图中的多播源S1的SPT树可以表示为(192.168.0.66,239.0.0.11)。这种表示方式意味着,对于组内的每个多播源都存在相应的SPT树不存在一个中心多播路由器

共享树

多播路由技术_第2张图片

共享树也叫汇聚点树(RPT),汇聚点作为RPT树的公共根。与基于源的树SPT不同,发送多播分组的源主机不是直接向网络中发送多播分组,而是先把分组发往RPT树的根RP。然后再由RP向网络中的所有成员发送它收到的多播分组。先给到RP,如图中虚线;然后RP发给主机,如图中实线。RP相当于一个中心多播路由器,减少了路由器多播路由表中表项的数量。

多播路由协议

多播路由技术_第3张图片

多播路由协议可以按照密集模式和稀疏模式两种方式工作。目前密集模式下的常见协议有距离向量多播路由协议DVMRP、多播开放最短路径优先协议MOSPF和密集模式协议无关多播PIM-DM稀疏模式下的协议有稀疏模式协议无关多播PIM-SM和基于核心树的多播协议CBT

通常密集模式下的协议采用SPT树状类型,稀疏模型采用RPT进行路由

多播路由协议分为哪些类型?多播路由协议DVMRP、MOSPF、PIM-DM、PIM-SM和CBT分别属于哪一种路由协议?

答案如上两段。


距离向量多播路由协议DVMRP

是基于源的路由协议,第一个支持多播功能的路由协议,实现了具有逆向路径转发、嫁接和剪枝的基于源的多播树。

逆向路径转发(RPF)拒绝转发示例

多播路由技术_第4张图片

单播路由表中的每个表项至少有目的网络和接口两个字段。图中路由器RB的路由表中的第一个路由表项表示的意义可以这样理解,路由器RB接收到的单播分组,如果其目的网络为192.168.0.0/16,则从接口E1转发出去,即接口E1为可能到源网络192.168.0.0/16的转发接口。如图,假设从串行接口S0接收到了来自多播源192.168.0.22的分组,路由器RB查看路由表时,发现此分组不是在从RB到多播源的最短路径上转发过来的。所以,根据RPF技术,路由器RB将拒绝转发该分组,丢弃之。

剪枝和嫁接

DVMRP使用广播方式把第一个分组发送到每一个网络,然后分组还要经理两个过程:剪枝和嫁接。

  • 洪泛和剪枝

洪泛路由算法(下图虚线)是一个简单有效的路由算法,其基本思想是每个节点都是用广播转发收到的数据分组,若收到重复分组则进行丢弃处理。洪泛算法最大的问题是会产生大量的重复分组,占用网络资源,使路由器和链路的资源过于浪费,以致效率很低。

为了减轻那些不存在接受者的分支上的相关资源的浪费,这些分支上的多播路由器会向其上游路由器发送剪枝报文(实线),阻止不需要的多播分组的继续转发。这样剪枝的结果便是没有多播接受者的分支被剪枝,最初洪泛形成的转发树只剩下有接收者的分支。

多播路由技术_第5张图片

带箭头的虚线便是最初洪泛形成的转发树,然后将发送剪枝报文的删掉,如下图:

多播路由技术_第6张图片

得到剪枝后形成的转发树如下:

多播路由技术_第7张图片

  • 嫁接

嫁接是把被剪的转发树分支重新加入到多播转发树上。

多播路由技术_第8张图片

假定与路由器RD相连的网络中的主机PB想接收多播源S发送来的多播分组,由于此时RD已经在剪枝过程中被剪掉,目前它不在多播转发树中。所以RD收到加入多播组的报文后,会向其上游路由器RB发送嫁接报文,路由器RB收到RD的嫁接报文后,把与RD相连的接口置为转发状态,RD分支又回到多播转发树中。


CBT构造过程示例

CBT是共享树,及多播中的所有源结点共享这棵树,使用一个核心作为树根。

多播路由技术_第9张图片

如图,R3、R8和R6路由器连接的网络有多播组成员,R4和R7所连接的路由器没有多播组的成员,路由器R7所连接的网络中有主机想加入多播组时,主机发送一个IGMP成员关系报告报文,路由器R7收到这个报告报文,就启动了构造一棵CBT的过程,如下:

  • 定位核心路由器

  • 当一个新成员主机想加入组G时,一个与该主机直接连接的CBT路由器通过最短路径向核心结点发送加入join报文。

  • 如果接收到join报文的某个中间路由器已经是CBT的成员,它将通过join报文的逆向路径向新成员发回加入应发答join-ack报文。joinp-ack路径上的每个路由器都将执行下面的操作:创建一个新的包括多播组地址、入接口和出接口的状态项。


PIM-DM和PIM-SM

PIM-DM只支持源树,使用推的方式,把多播流向网络的各个地方转发,从而把流推给不同接收者。这种方式适用于网络中的各个子网都有接收者的情况。PIM-DM一开始向网络中的各处发多播流,路由器每隔3分钟检查一次自己是否还存在“下游”的邻居,如果没有,就把这个流剪掉。

PIM-SM使用拉的方式,只有存在接收者的网段才会接收到数据流。PIM-SM通过在共享树中转发数据包来散布组播源的信息。PIM-SM使用共享树,它需要指定一个汇聚点(RP),一旦其它路由器收到从共享树来的数据后,就知道了数据的源在哪里。于是,路由器就会向源发送PIM(S,G)加入信息。在反向路径上的每个路由器比较自己的单播路由表中它到RP的度量和它到源的度量,如果到源的度量更优,它就会继续发送PIM(S,G)加入信息。否则,PIM(S,G)信息就会沿着RP的方向来发送。这样,就生成了共享树和源树。单向共享树,靠近源的路由器先向RP注册,然后在源和RP之间生成源树,数据通过共享树(*,G)到达接收者。

如何建立源到RP的基于源的树?

PIM-SM示例

什么时候需要从共享树切换到基于源的树(源到多播组成员)?如何切换?

PIM-SM的工作过程就是SPT和RPT建立的过程。RPT可以切换成SPT,一般会在用户端设置一个阀值,当组播流超过阀值的时候,就会切换成SPT。默认阀值为0,也就是一有组播流就从RPT切换成SPT。


共享树的构建

以R3为RP的共享树,举例如下:

多播路由技术_第10张图片


多播源发现协议MSDP

用来发现其他PIM-SM域内的多播源信息,配置了MSDP对等体的RP,将其域内的活动多播源信息通过SA报文(携带多组(S,G)信息,在多个RP之间传递)通告给它的所有MSDP对等体,这样一个PIM-SM域内的多播源信息就会被传递到另一个PIM-SM域。如下图:

多播路由技术_第11张图片

你可能感兴趣的:(计算机网络,websocket,tcp/ip,java)