组播可以简单理解为把东西放在一个地方,你需要就来拿。组播源只发送一份数据,数据在网络节点间被复制、分发,且只发送给需要该信息的接受者。
传统点到点以单个用户为单位提供服务
不同用户与服务提供端的通信数据存在差异(QoS)。
新型点到多点服务端以一组用户为单位提供服务
同组用户与服务提供端的通信数据无差异。
单播方式部署点到多点会出现重复流量过多,消耗设备和链路带宽资源,难以保证传输质量。
广播方式部署点到多点会出现地域范围的限制、安全性无法保障、有偿性无法保障。
组播方式的优势:无重复流量、节省设备与带宽资源、安全性高、有偿性有保障。
IGMP告知是否有接收者
PIM构建路径分发树,实现路径转发
一个组播IP地址并不是表示具体的某台主机,而是一组主机的集合,主机声明加入某组播组即标识自己需要接收目的地址为该组播地址的数据。
永久组播组地址就是有没有成员都存在的地址
IP组播常见模型分为ASM(任意组播组)模型和SSM(特定组播组)模型
IGMP (Internet Group Management Protocol)因特网组管理协议,是TCP/IP协议族中负责IP组播成员管理的协议,它用来在接收者和与其直接相邻的组播路由器之间建立、维护组播组成员关系。(让接收者知道有哪些组播源,以及让组播源知道有哪些接受源)
IGMP协议运行于主机与组播路由器之间
IGMP协议的作用。
主机侧:通过IGMP协议向路由器通告组成员关系。
路由器侧:通过IGMP协议维护组成员关系。
IGMPv1的问题:
静默离开
组成员默默离开,不发送离开组报文。
普遍组查询130s没有收到响应报文,则路由器认为该组不存在组播成员。
查询器选举 (越大约优)
查询器选举依赖组播路由协议
IGMPv2的改进
组成员离开,组成员离开时会向查询器路由发送离组报文,然后查询器路由向离组报文发出的组发送两次特定组查询(间隔一秒),若发了两次之后没有收到成员报文,则认为不存在此成员。
独立的查询器选举机制。(IP地址最小的胜选)
基于普遍组查询进行查询器的选举
IGMPv3
路由器周期性的发送查询消息
接收端发送成员报告,指出希望加入或拒绝某些组播源发送的数据(V3新功能,特定组加入或者拒绝)
RPF检查:检查IP路由表,与IP路由表路径是否一致,如果一致择检查成功,如果不一致,择剪枝。
PIM-DM密集模式
采用“推(Push)模式”转发组播报文。
PIM-DM的关键任务:
。建立SPT (Shortest Path Tree,最短路径树)。
PIM-DM的工作机制:
。邻居发现。
。扩散与剪枝。
。状态刷新。
。嫁接。
。断言。
使用hello发现邻居,组播地址224.0.0.13
选举DR(优先级高的或者IP地址大的成为DR),也会成为查询器(v1版本)
组播数据流会向下扩散(像推一样),然后每个路由器都会常见S,G表项(S组播源,G组播组),下游节点没有组播或者成员则向上发送剪枝消息(Prune)。 每三分钟一次。
PIM DM协议采用状态刷新特性解决周期性“扩散-剪枝”带来的问题:离组播源最近的第一跳RTA周期性触发State Refresh消息。State Refresh消息在全网扩散,刷新所有设备上的剪枝定时器状态。
状态刷新使得RTE不再周期性的收到组播数据,但是当主机加入组之后,如果一直是剪枝状态,主机无法收到组播数据。
Graft机制(嫁接):新的组成员加入组播组后,快速得到组播报文。
主机如果加组就会路由发送IGMP成员关系报告,路由收到后就会向上发送嫁接消息,上游路由器收到就会发送嫁接确认消息,这时候组播流就能向下发送。
Assert机制(断言机制):为了避免重复的组播报文
断言机制竞选规则:
到组播源的单播路由协议优先级较小者获胜。
如果优先级相同,则到组播源的路由协议开销较小者获胜。
如果以上都相同,则连接到接受者MA网络接口IP地址最大者获胜。
获胜一方的下游接口称为Assert winner。
失败的为Assert Loser,PIM路由器也会把它从(S,G)表项下游接口列表中删除
简单来说就只是组播报文发下来后,路由器收到后会向相邻的路由器发送断言消息,相邻路由器收到断言消息就不会向下游路由器发组播流了。
PIM-DM的局限性:在组播成员分布较为稀疏的网络中,组播流量的周期性扩散会给网络带来较大负担
PIM-DM适用于组播分布较为密集的园区网络
PIM-SM稀疏模式
使用“拉(Pull)模式”转发组播报文。
PIM-SM的关键任务:
建立RPT(Rendezvous Point Tree,汇聚点树也称共享树)。
建立SPT (Shortest Path Tree,最短路径树)。
适用于组播成员分布较为稀疏的网络环境。
RP(汇聚点) (有静态RP和动态RP)
充当RPT树的根节点。
共享树中的所有组播流量都经过RP转发给接收者。
所有PIM路由器都要知道RP的位置。
RPT建立过程:
主机(接收者)向最后一跳DR发加组消息,最后一跳DR向上发join消息,RP收到后按原来的路径建立(*,G)表项(因为下游路由器不知道组播源在哪里)。(静态每台路由都要指向RP)
SPT建立过程:
组播源向下游发送组播数据流,第一跳DR收到组播源后会向下游转发单播报文(直接去找RP,组播报文重新封装成单播注册消息),单播消息会沿途创建(S.G)表项,RP收到注册单播消息会向第一跳DR发送停止注册消息。
(S,G)与(S,G)
Switchover机制
PIM-SM通过指定一个利用带宽的SPT阈值可以实现RPT到SPT的切换。(没超过阈值前次优路径还是没办法改变,可以修改)