8组播
8.1组播的特点
- 一份组播报文,使用一个组播地址作为目的地址。组播源向一个组播地址发送且仅发送一份报文;
- 网络中部署的组播协议为此组播报文建立一棵树形路由,根连接为组播源,分支连接所有组播组成员。
8.2组播的优势
- 组播方式下,单一的信息流沿组播分发树被同时发送给一组用户,相同的组播数据流在每一条链路上最多仅有一份。相比单播来说,使用组播方式传递信息,用户的增加不会显著增加网络的负载,减轻了服务器和CPU的负荷;
- 组播报文可以跨网段传输,不需要此报文的用户不能收到此报文。相比广播来说,使用组播方式可以远距离传输信息,且只将信息传输到有接收者的地方,保障了信息的安全性;
- 组播技术有效地解决了单点发送多点接收的问题,实现了IP网络中点到多点的高效数据传送。
8.3组播的基本概念
- 组播组:组播组使用一个IP组播地址标识。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接受以该IP组播地址为目的地址的IP报文;
- 组播源:以组播地址为目的地址,发送IP报文的信源称为组播源;一个组播源可以同时向多个组播组发送数据;多个组播源可以同时向一个组播组发送报文;
- 组播组成员:组播组中的成员是动态的,网络中的用户主机可以在任何时刻加入和离开组播组;组成员可能广泛分布在网络中的任何地方;组播源通常不会同时是数据的接收者,不属于组播组成员;
- 组播路由器:网络中支持组播功能的路由器称为组播路由器。在与用户主机连接的末梢网段,提供组播组成员管理能力;实现组播路由,指导组播报文的转发;
- 组播分发树:根据组播组成员的分布情况,组播路由协议为多目的端的数据包转发建立树形路由;报文在距离组播源尽可能远的分叉路口才开始复制和分发,最终传送到组播组成员;
8.4组播的性质
组播属于一种端到端服务,按照协议层从下往上划分,IP组播基本构架包括寻址机制、主机接入、组播路由、组播应用四部分。
寻址机制:使用组播地址,将一份数据报文发送给一组接收者;
主机接入:使用组播协议,动态管理用户加入或离开,实现成员管理;
组播路由:使用组播协议,构建分发树组播路由,从组播源传给接收者;
组播应用:组播源和接收者支持组播应用软件,TCP/IP协议栈支持传输。
8.5组播寻址
- 网络层组播,使用IP组播地址寻址;
- 链路层组播(硬件组播),其为以太网时,使用组播MAC地址;
- 存在一种技术实现IP组播地址和MAC组播地址相互映射;
8.6常用组播地址
永久组地址 | 含义 |
224.0.0.0 | 不分配 |
224.0.0.1 | 网段内所有主机和路由器(等效广播) |
224.0.0.2 | 所有组播路由器地址 |
224.0.0.5 | OSPF路由器 |
224.0.0.6 | OSPF DR |
224.0.0.11 | 移动代理 |
224.0.0.12 | DHCP服务器/中继代理 |
224.0.0.13 | 所有PIM路由器 |
224.0.0.14 | RSVP封装 |
224.0.0.18 | VRRP |
224.0.0.22 | 所有使能IGMPv3的路由器 |
8.7 IP地址到MAC地址的映射
- 需要将组播IP映射到组播MAC地址;
- 组播MAC地址的高24位为01005E,MAC地址的低23位为组播IP的低23位;
- 组播MAC地址的第25位规定为0,对应IP地址的前4位1110;
- IP地址有五位地址未映射到MAC地址上,直接结果是由32个IP组播地址映射到同一MAC地址;
8.8组播路由协议的应用
- 用户主机与组播路由器之间采用IGMP(因特网组管理协议);
- 域内组播路由器之间采用PIM(协议无关组播);
- 域间组播路由器之间采用MSDP(组播源发现协议)
8.9域内组播路由协议PIM的模式
PIM是典型的域内组播路由协议,有两套独立的模式,分别为:
PIM-DM:适用于小规模,接收者分布较为密集的情况,支持ASM模型;
PIM-SM:适用于大规模,接收者分布较为稀疏的情况,同时支持ASM(任意源组播)模型和SSM(指定源组播)模型;
8.10 IGMPv1两个消息
- GQ普遍组查询消息:定期向共享网段内发送查询信息(缺省值是60秒),查询组播组存在成员,IP头的目的地址为224.0.0.1(网段内所有主机和路由器均识别),组地址全为0,不指定组播组;
- Report成员报告消息:向组播路由器发送报告消息,申请加入组播组或应答查询消息,IP头的目的地址为要加入组播组的地址,所有路由器及属于该组的所有主机都能识别并接收,同一组成员收到,不再发送,即报告被抑制;
8.11 IGMPv2三个消息
- GQ普遍组查询消息:定期向共享网段内发送查询信息(缺省值60s),查询组播组存在成员,IP头的目的地址为224.0.0.1(网段内所有主机和路由器均识别),组地址全为0,不指定组播组;(GSQ—特定组查询)
- Report成员报告消息:向组播路由器发送报告消息,申请加入组播组或应答查询消息,IP头的目的地址为要加入组播组的地址,所有路由器及属于该组的所有主机都能识别并接收,组地址字段为主机要加入的组播组地址;
- Leave离开消息:离开消息是主机主动离开组播组向组播路由器发送的消息,用于宣告自己离开某组播组;IP头目的地址为224.0.0.2,组地址字段为主机要离开的组播组地址;
8.12 IGMPv1/v2/v3的对比
IGMPv1 | IGMPv2 | IGMPv3 | |
查询器选举 | 依靠上层路由协议 | 自己选举 | 自己选举 |
成员离开方式 | 默默离开 | 主动发出离开报文 | 主动发出离开报文 |
指定组查询 | 不支持 | 支持 | 支持 |
指定源、组加入 | 不支持 | 不支持 | 支持 |
8.13 PIM定义及分类
作为一种组播路由解决方案,主要用于将网络中的组播数据流引入到有组播数据请求的组成员,实现组播数据流的转发;
现网中,应用较为广泛的实现方式主要有以下三种,分别是:
- PIM-DM:协议无关组播—密集模式;
- PIM-SM:协议无关组播—稀疏模式;
- PIM-SSM:协议无关组播—指定源组播;
8.14 PIM相关的基本概念
- PIM路由器:支持PIM协议的组播路由器称为PIM路由器,使能了PIM协议的接口称为PIM接口;
- PIM域:由PIM路由器组成的网络称为PIM网络,通过在组播设备接口上设置“边界”,将一个大的PIM网络划分为多个PIM域,“边界”可以拒绝/限制特定报文的传输;
- 组播分发树:在PIM组播域内,以组播组为单位建立一点到多点的组播转发路径。由于组播转发路径呈现树形结构,也称为组播分发树MDT;
- 叶子路由器:与用户主机相连的PIM路由器称为叶子路由器;
- 组播源DR:与组播源直接相连且负责向RP发送注册报文的PIM路由器;
- 接收者DR:与组播组成员(通常为接收者主机)直接相连且负责向该组成员转发数据的PIM路由器;
- 中间路由器:组播转发路径上,第一跳路由器与最后一跳路由器之间的PIM路由器
8.15组播分发树的特点
- 无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份;
- 被传递的组播数据在距离组播源尽可能远的分叉路口才开始复制和分发;
8.16共享树、源路径树的形成
网络中出现新成员,加入某组播组,最后一跳路由器向RP发送Join信息,逐条创建(*,G)转发表项,生成一棵以RP为根的RPT,即共享树;
网络中出现活跃的组播源时,第一跳路由器将组播数据封装在Register消息中单播发往RP,在RP上创建(S,G)表项,注册源信息形成的路径树叫源路径树;
8.17 RP选举原则
- 如果PIM-SM域中只有一个候选RP,那么这个节点就是域里的RP。
- 如果域中存在多个C-RP并都拥有不同的优先级时,则优先级最高(优先级数值越小优先级越高)的将会被选举为域中的RP;
- 如果域中存在多个C-RP并都拥有相同的优先级时,则依靠Hash算法算出的数值来决定RP,数值越大的称为RP;Hash算法参数、组地址、掩码长度和C-RP地址;
- 如果域中存在多个C-RP并都拥有相同的优先级与Hash数值时,则拥有最高IP地址的C-RP为该域的RP;
8.18小知识点
- IPv4的D类地址为组播地址,范围为224.0.0.0-239.255.255.255;
- 组播源的地址是一个单播地址;
- 组播分发树无环,不会回发数据;
- 32个组播IP地址对应1个组播MAC地址;
- MSDP是典型的域间组播路由协议,通常与MBGP协同工作,MSDP适用于各域内运行PIM-SM的情况;
- 组播地址224.0.0.0-224.0.0.255,又称之为本地管理地址,为路由协议预留的永久组地址,其TTL=1;
- 组播传输中,对于multicast source而言,是不需要知道receive是谁的,主机要接收组播流量需要加入该组即可;
- 同一台主机可以属于不同的组播组;
- IGPMv1规定,当共享网络中有多台路由器时,由组播路由协议选举查询器(根据接口IP地址选举查询器,路由小的优先);
- 当路由器周期性的发送成员关系查询报文时,每个主机都会再次启动计时器进行查询/响应/抑制;
- IGPMv1版本,成员悄悄离开组播组,不发送任何报文,路由器依旧周期性地发送成员关系查询报文,周期为60s,当路由器发送3次成员关系查询报文都没有收到响应时,认为组内已经没有成员,不再转发;
- IGMPv2的计时器增加了最大响应时间字段,以动态调整主机对组查询报文的响应时间;
- IGMPv2版本,成员离开发送Leave消息之后,路由器发送2次特定组查询之后仍没有收到成员报告,则认为没有组播成员;
- 无论何时,只要版本1的主机称为组成员,IGMPv2离开过程将被搁置;
- IGMPv3进行普遍组查询时,Group Address字段和Number of Source都为0;
- 以组播源为根,组播组成员为叶子的组播分发树称为SPT,SPT同时适用于PIM-DM和PIM-SM;
- 以RP为根,组播组成员为叶子的组播分发树称为RPT,RPT仅适用于PIM-SM
- PIM-SM协议无关组播—稀疏模式,默认所有主机都不需要接收组播包,只向明确需要组播包的主机转发;
- 共享树里所有组播流都经过RP转发到接收者,网络中可以有一个或者多个RP;
- 一个RP可以为多个组播组服务,但一个组播组只能对应一个RP;
- RP分为静态RP和动态RP,静态RP是指在PIM域中的所有PIM路由器上配置静态RP;动态RP是指在PIM域内选择几台PIM路由器,配置C-RP,从C-RP中竞选产生RP。使用动态RP,必须同时配置C-BSR,由C-BSR竞选产生BSR;
- BSR自举路由器时PIM-SM网络里的管理核心,是让整个PIM-SM网络知道RP的关键;
- C-RP周期性发送Advertisement宣告消息的默认时间是60s;
- BSR的holdtime默认为150s;
- 一个网络(或管理域内部)只能选举出一个BSR,但可以配置多个候选BSR;
- C-BSR的定时器时间默认为130s;
- BSR消息发送的目的地址是224.0.0.13,所有的PIM路由器都能接收到,该报文TTL值为1;
- PIM-SM网络中可以同时配置静态RP和动态RP,且为同一个组播组服务,动态RP的优先级较高。同时配置可以避免因单一节点故障而引起通信中断;
- 在PIM-SM网络中,任何一个新出现的组播源都必须首先在RP处“注册”;
- DR收到Register-stop消息之前将持续使用Register消息封装组播报文,注册过程不能停止;
- SPT的出发是由RP或组成员端DR触发的;
- 组成员端DR发起SPT切换后,如果建立的SPT与RPT路径不一致,则需要拆除RPT路径上的(S,G)表项,则为剪枝;
- 运行PIM-SM工作前提是用户加入的组播组在SSM组地址范围内;用户加入组播组的同时明确指定组播源的位置;设备之间运行PIM-SM协议;
- PIM-DM关键机制:邻居发现、扩散flooding、剪枝prune、嫁接graft、断言assert、状态刷新;
Hello报文(UDP):
单播45s,组播15s;
端口号是646;
Keepalive报文(TCP)
端口号是646;
报文捕捉(不隐藏倒数第二跳)
15.1.1.1 30
12.1.1.2 30
23.1.1.2 30
34.1.1.2 30
48.1.1.2 30
关闭倒数第二跳
34.1.1.2 30
48.1.1.2 30