你知道直播,小区视频点播等是怎么实现的吗?其实现就是运用了组播!
信息从信息源发送给组播成员,肯定不能全网无选择的传播,那不是组播,那就是广播了,路由器不支持广播,却支持组播!为了让信息更快的到达组播成员,需要建立组播路由和组播成员管理。
1、组播协议由两部分协议组成
1)组成员管理协议;IGMP协议
用于管理组播组成员的加入和离开;以及组员查询。
IGMP协议⼯作在主机(组播成员)和最后⼀跳路由器之间,如上图中的蓝⾊部分。
2)组播路由协议;PIM协议
运行在三层在组播设备之间,用于建立和维护组播路由表,并正确高效的转发组播报文。
其工作在组播发送端与最后⼀跳路由器之间,做信息路由。
2、组成员管理协议:IGMP协议
1)Internet 组管理协议,英文全称:Internet Group Management Protocol,简称IGMP协议。该协议是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。
2)IGMP提供了在转发组播数据包到目的地最后阶段所需的信息,实现如下双向的功能:
⑴ 主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息。
⑵ 路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所 连网段组成员关系的收集与维护。
3)IGMP ⼯作机制
IGMP共有三个版本,即IGMP v1、v2 和 v3。
接下来,以 IGMPv2 作为例⼦,说说路由器常规查询组播成员和加入/离开组播组这两个功能的⼯作机制。
(1)主机加入/离开组播
加入很简单,只需要向组播路由器发送一个加入的加入报文即可。这里主要讲组播成员的离开。
离开组播组的情况⼀,⽹段中仍有该组播组:
(2)主机 1 要离开组 224.1.1.1,发送 IGMPv2 离组报⽂,报⽂的⽬的地址是 224.0.0.2(表示发向⽹段内的所有路由器)
(3)路由器 收到该报⽂后,以 1 秒为间隔连续发送 IGMP 特定组查询报⽂(共计发送 2 个),以便确认该⽹络是否还有 224.1.1.1 组的其他成员。
(4)主机 3 仍然是组 224.1.1.1 的成员,因此它⽴即响应这个特定组查询。路由器知道该⽹络中仍然存在该组播组的成员,于是继续向该⽹络转发 224.1.1.1 的组播数据包。
离开组播组的情况⼆,⽹段中没有该组播组:
(5)主机 1 要离开组播组 224.1.1.1,发送 IGMP 离组报⽂。
(6)路由器收到该报⽂后,以 1 秒为间隔连续发送 IGMP 特定组查询报⽂(共计发送 2 个)。此时在该⽹段内,组 224.1.1.1 已经没有其他成员了,因此没有主机响应这个查询。
(7)⼀定时间后,路由器认为该⽹段中已经没有 224.1.1.1 组播组成员了,将不会再向这个⽹段转发该组播地址的数据包。
(8)路由器组播成员查询
(9)路由器会周期性发送⽬的地址为 224.0.0.1 (表示同⼀⽹段内所有主机和路由器) IGMP 常规查询报⽂。
(10)主机1 和 主机 3 收到这个查询,随后会启动「报告延迟计时器」,计时器的时间是随机的,通常是 0~10 秒,计时器超时后主机就会发送 IGMP 成员关系报告报⽂(源 IP 地址为⾃⼰主机的 IP 地址,⽬的 IP 地址为组播地址)。如果在定时器超时之前,收到同⼀个组内的其他主机发送的成员关系报告报⽂,则⾃⼰不再发 送,这样可以减少⽹络中多余的 IGMP 报⽂数量。
(11)路由器收到主机的成员关系报⽂后,就会在 IGMP 路由表中加⼊该组播组,后续⽹络中⼀旦该组播地址的数据到达路由器,它会把数据包转发出去。
3、组播路由协议:PIM协议
组播路由协议的主要任务就是构造组播的分布树,使组播分组能够传送到相应的组播组成员。根据对网络中的组播成员的分布和使用的不同,组播路由协议分为两类:密集模式路由协议(DM)和稀疏模式路由协议(SM)。
(1) 密集模式组播(PIM-DM)
密集模式组播路由协议适用于小型网络。它假设网络中的每个子网都存在至少一个对组播组感兴趣的接收站点。因此,组播数据包被扩散到网络中的所有点。与此伴随着相关资源(带宽和路由器的CPU等)的消耗。为了减少这些宝贵网络资源的消耗,密集模式组播路由协议对没有组播数据转发的分支进行剪枝操作,只保留包含接收站点的分支。为了使剪掉的分支中有组播数据转发需求的接收站点可以接收组播数据流,剪掉的分支可以周期性地恢复成转发状态。为了减少等待剪枝分支恢复转发状态的延时时间,密集模式组播路由协议使用嫁接机制主动加入组播分布树。这种周期性的扩散和剪枝现象是密集模式协议的特征。 一般说来,密集模式下数据包的转发路径是“有源树”——以“源”为根、组员为枝叶的一棵树。
密集模式下的典型路由协议是密集模式下的协议无关组播(Protocol-Independent Multicast-Dense Mode,PIM-DM)、距离向量组播路由协议(Distance Vector Multicast Routing Protocol,DVMRP)。
(2) 稀疏模式组播(PIM-SM)
稀疏模式默认所有机器都不需要收组播包,只有明确指定需要的才转发。接收站点为接收到特定组的数据流,必须向该组对应的“汇聚点”发送加入消息,加入消息所经过的路径就变成了共享树的分支。发送组播时,组播报文发送到汇聚点,再沿以汇聚点为根的组员为枝叶的“共享树”转发。为避免共享树的分支由于不被更新而被删除,稀疏模式组播路由协议通过向分支周期性地发送加入消息来维护组播分布树。
发送端如果想要给特定的地址发送数据,首先要在汇聚点进行注册,之后把数据发向汇聚点。当数据到达了汇聚点后,组播数据包被复制并沿着分发树路径把数据传给对其感兴趣的接收者。复制仅仅发生在分发树的分支处,这个过程能自动重复直到数据包最终到达目的地。
稀疏模式下的典型路由协议是稀疏模式下的协议无关组播。