5、组播分发树(DMT)
(1)概述
组播数据转发需要保证转发路径无环,无次优路径且无重复包。
通过RPF机制与组播路由协议,组播网络可以最终形成无环、无次优且无重复包的组播转发路径,该路径可以被称为组播分发树。
组播分发树以组播源为根,以组成员为叶子,形成转发路径,组播数据在转发时都基于组播分发树进行转发。
组播数据转发基本流程如下:
组播分发树的特点:
- 无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份。被传递的组播数据在距离组播源尽可能远的分叉路口才开始复制和分发
(2)基本概念
1)组播分发树(MDT)
PIM网络以组播组为单位在路由器上建立一点到多点的组播转发路径。由于组播转发路径呈现树型结构,也称为组播分发树MDT(Multicast Distribution Tree)。
组播分发树(Multicast distribution tree)用来描述IP组播报文在网络中经过的路径。由组播路由协议构建,是组播流量的转发路径。
组播分发树是指从组播源到接收者之间形成的一个单向无环数据传输路径。
组播分发树主要包括以下两种:
1)以组播源为根,组播组成员为叶子的组播分发树称为SPT(Shortest Path Tree,最短路径树/源树)。
SPT同时适用于PIM-DM网络和PIM-SM网络。(下左图)的RouterE→RouterD→RouterA(Router B),就是一棵以Source为根,以Host A、Host B为叶子的SPT。
2)以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树称为RPT(RP Tree,共享树)。
RPT适用于PIM-SM网络。
2)PIM路由器
在接口上使能了PIM协议的路由器即为PIM路由器。在建立组播分发树的过程中,PIM路由器又分为以下几种:
1)叶子路由器:与用户主机相连的PIM路由器,但连接的用户主机不一定为组成员,(上左图)中的Router A、Router B、Router C。
2)第一跳路由器:组播转发路径上,与组播源相连且负责转发该组播源发出的组播数据的PIM路由器。(上左图)中的Router E。
3)最后一跳路由器:组播转发路径上,与组播组成员相连且负责向该组成员转发组播数据的PIM路由器。(上左图)中的Router A、Router B。
4)中间路由器:组播转发路径上,第一跳路由器与最后一跳路由器之间的PIM路由器。(上左图)中的Router D。
补充说明1
第一跳路由器和服务器连接的接口必须使能PIM,否则路由器是无权处理从该接口接收的组播数据的。
严格上来讲,MBGP/MSDP不是组播路由协议,只是借用这两种工具来实现域间组播。
补充说明2
连接主机的接口要同时运行PIM和IGMP。
3)PIM路由表项
PIM路由表项:即通过PIM协议建立的组播路由表项。
PIM网络中存在两种路由表项:(S,G)路由表项或(*,G)路由表项。
S表示组播源,G表示组播组,*表示任意。
(S,G)路由表项:主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络适用。
(*,G)路由表项:主要用于在PIM网络中建立RPT。对于PIM-SM网络适用。
PIM路由器上可能同时存在两种路由表项。当收到源地址为S,组地址为G的组播报文,且RPF检查通过的情况下,按照如下的规则转发:
如果存在(S,G)路由表项,则由(S,G)路由表项指导报文转发。
如果不存在(S,G)路由表项,只存在(*,G)路由表项,则先依照(*,G)路由表项创建(S,G)路由表项,再由(S,G)路由表项指导报文转发。
注意:
一个(*,G)表项可以维护一个组播组(多个组播源)
一个(S,G)表项可以维护一个组播源
PIM路由表项中主要用于指导转发的信息如下:
组播源地址。
组播组地址。
上游接口:本地路由器上接收到组播数据的接口,(上左图)中的Int3。
下游接口:将组播数据转发出去的接口,(上左图)中的Int1、Int2。
PIM路由表项与组播路由表项
在不同的组播路由器上,组播路由表项会基于不同的表项汇总形成
- 最后一跳路由器的组播路由表项主要基于PIM路由表项,IGMP组表项和IGMP路由表项汇总形成
- 其余组播路由器的组播路由表项主要基于PIM路由表项形成
PIM路由表中Flag字段的意义
Flag值 |
描述 |
2msdp |
RP最近收到注册消息并学习到(S,G)信息,准备通知MSDP,在下一个SA消息中包含该(S,G)表项 |
act |
已经有实际数据到达的组播路由表项 |
del |
准备删除的组播路由表项 |
exprune |
RPT上的表项被剪枝且RPT上没有接收者对源感兴趣 |
ext |
包含了由其他组播路由协议提供的出接口的路由表项 |
loc |
在于组播源网段直连的设备上的组播路由表项 |
msdp |
RP最近从收到的MSDP SA消息中学习到的路由表项 |
niif |
为确定入接口的路由表项 |
nonbr |
找不到朝向RP或源的上游邻居地址(link-local地址)的路由表项 |
none |
无任何标志的路由表项 |
rpt |
处于共享树上但不使用共享树数据的路由表项 |
sg_rcvr |
表示路由器有源S的本地(S,G)接收者,且PIM是下游接口的Owner |
sgjoin |
表示路由器有源S的本地(S,G)接收者,但PIM不是下游接口Owner |
spt |
最短路径树上的路由表项 |
swt |
处在向SPT切换过程中的路由表项 |
upchg |
路由变化的标志,表示当前的表项在适用原来的上游转发数据,正在等待数据从新的接口到来 |
wc |
表示(*,G)表项 |
整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:****】