组播地址范围:224.0.0.0 到 224.0.0.255
为路由协议预留永久组播组地址: 224.0.0.0~224.0.0.255 (不分配)
ASM使用的临时组播组地址: 224.0.1.0~231.255.255.255 233.0.0.0~238.255.255.255
SSM使用的临时组播组地址: 232.0.0.0~232.255.255.255
本地管理ASM使用组播组地址: 239.0.0.0~239.255.255.255
组播地址的作用:一个源发出,一组用户接收
区别于单播和广播:
对比单播:开销更小(单播也能实现组播的效果,不过带宽浪费高,冗余数据多)
对比广播:开销更小、安全性更高(广播不会确认接收源,故广播的安全性不高,而组播则可以很好的避免这一点)
组播协议目前都有,列举:IGMP(三个版本,v1、v2、v3),PIM、MLD(ipv6)
汇总图解:
组播IP地址和组播MAC地址的映射关系:
由IANA规定,组播MAC地址的高24bit为 0010 5E,第25bit固定为0;此时需要根据组播IP地址的后23bit进行条虫,此时会出现丢失5bit现象,以至于有32个组播IP地址映射成一个组播MAC地址(总结:组播mac是由组播ip生成过来的)
常用永久组播组地址:
224.0.0.1 -----所有节点
224.0.0.2 -----所有路由器
224.0.0.5 -----OSPF进程区域内所有路由器
224.0.0.6 -----为OSPF的DR与BDR通信使用
224.0.0.9 ------为RIPv2使用
224.0.0.12 -----为DHCP服务器/中继代理
224.0.0.13 -----为PIM使用
224.0.0.18 -----VRRP
224.0.0.22 -----为IGMPv3使用
IGMP协议 :运行于主机与组播路由器之间 组成员的加入和离开机制 组播组管理 查询器选举 成员报告抑制
作用:
主机侧:通过IGMP协议向路由器通告组成员关系
路由器侧:通过IGMP协议维护组成员关系
IGMPv1:
IGMP版本号,对于IGMPv1,该值为1
type:IGMP的消息类型 0x11:
IGMPv1成员关系查询报文 普遍组查询,查询器以组播224.0.0.1向全网发送成员查询报文,周期性60s
普遍组查询组地址为0.0.0.0 目的地址为224.0.0.1
不用选举查询器;(可以借鉴PIM的DR来充当查询器的角色)
报告报文的目的地址为组地址,同组成员可以收到,且拥有组成员抑制功能
离开组为静默离开,130s无成员回应则删除组表项
IGMPv2:
在v1的而基础上增加了离开机制、查询器选举机制(IP地址以小为优,选举时间为125s) 特定组查询,收到Leave报文发特定组查询,为想要离开的组的组地址,1s/次,发送2次(可配置修改)
Last Reporter:减少Leave报文、特定组查询和报告报文的泛洪
IGMPv3: 只接收特定源发送的组播数据
IGMP Snooping: 侦听路由器与接收者之间的报文,形成二层转发表,可以减少二层组播流量的泛洪,只传给对应的接收者,可以节省开销,减少组播流量
IGMP Snooping功能可以控制组播流量在以太网的泛洪范围,避免不同组的组播流量被别组成员接收。
功能举例:
PC1加入组播组G1
PC2加入组播组G2
由于PC1与PC2同上联同一个二层交换机
若该二层交换机:
没有开启IGMP Snooping,
则PC1将收到G1+G2数据包
PC2将收到G1+G2数据包
若开启后
PC1将收到G1数据包
PC2将收到G2数据包
当主机和上游三层设备之间传递的IGMP协议报文通过二层组播设备时,IGMP Snooping分析报文携带的信息,根据这些信息建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发。
二层组播转发表项中存在两类接口:
路由器端口(Router Port):二层组播设备上朝向三层组播设备(DR或IGMP查询器)一侧的接口,二层组播设备从此接口接收组播数据报文。
成员端口(Member Port):又称组播组成员端口,表示二层组播设备上朝向组播组成员一侧的端口,二层组播设备往此接口发送组播数据报文。
IGMP Snooping不再使用成员关系报告报文抑制机制: 由于IGMP Snooping需要监听IGMP报文才能决定端口角色,进而指导转发,所以所有组成员都需要发送IGMP组成员关系报告报文。 当IGMP Snooping设备收到成员关系报告报文后,只将成员关系报告报文从路由器接口发送出去,从而避免其余组成员收到成员关系报告报文,不触发成员关系报告报文抑制机制。
PIM协议 :组播路由器通过RPF检查来确定RPF接口,而RPF检查是通过IGP路由表项进行的,并不关心IGP路由表的路由形成 作用:PIM运行在路由器之间,生成组播的路由表项,指导组播流量的转发
模式:
DM:密集模式;适用于接收者密集,小型网络的情况,SPT树多,很多网段都有接收者,默认接收者越多就越密集;采用"推"模式
工作机制:邻居发现---- 使用Hello报文建立邻居关系------此时会选举出相应的DR 比较原则为:优先级高为优 、 IP地址以大为优
扩散与剪枝:首先由组播源把数据发送在网络中,由组播路由器开始向下游扩散,当有用户接收时,保留相应的组播流量分支;若此时有无需此流量的用户,则将其从本组播组流量的SPT树种剪去;剪枝状态超时计时器的默认值为210秒;此扩散-剪枝机制周期性每3分钟重复一次
状态刷新 :周期性刷新剪枝情况,查看是否有用户需要改变当前的剪枝状态,来达成接收组播流量
嫁接 :当有新用户接入或被剪枝的用户需要重新加入到此组播组中接收流量,此时用户端会发送相应的嫁接报文(graft),当在剪枝发生的设备收到此报文之后会将相应的用户重新接入到接收流量中,并回复确认报文(graft ack)
断言:由于网络中会存在多条组播数据流量转发路径,此时若无机制会导致同一用户会收到多份一样的数据,那么断言便是将多条路径优选出一条路径供数据转发
竞选规则: 协议优先级较小者获胜 ,开销较小者 连接接受者接口IP地址最大者
SM:稀疏模式;适用于接收者少,且遍布广,大型网络;采用"拉"模式
RP汇集点 :所有组播路由器都知道RP的位置,可按静态配置亦可按动态配置
RP是PIM-SM域中的核心路由器,担当RPT树根节点
共享树里所有组播流量都要经过RP转发给接收者
RPT共享树:主机加入某个组播组时,发送IGMP成员通告 最后一跳路由器向RP发送(*,G)Join消息(*,G)Join消息到达RP的过程中,沿途各路由器都会生成相应的(*,G)组播转发条目
SPT:最短路径树
组播源向组播组发送第一个组播报文
源端DR将该组播报文封装成Register报文并以单播方式发送给相应的RP
RP收到注册消息后,一方面从Register消息中提取出组播报文,并将该组播报文沿RPT分支转发给接收者
另一方面,RP向源端DR发送(S,G)Join消息,沿途路由器上都会生成相应(S,G)表项。从而建立了一棵由组播源至RP的SPT树
SPT树建立后,组播源发出的组播报文沿该SPT转发至RP
RP沿SPT收到该组播报文后,向源端DR单播发送Register-stop消息
Switchover机制:在SM模式中由于组播数据会首先发送到RP再转发至用户,此时会考虑到产生次优路径,即SPT+RPT非最优,此时用户端DR会根据在RP端学习到的组播源地址,重新与源端DR建立单独且最优的SPT树,不经由RP转发流量