组播的优势和应用
单播:发送源针对于所有的接收者都会发送一份数据包,资源比较浪费。
广播:在广播域内不论需不需要都会接受到数据包,无法准确区分设备是否需要。
组播优势:
降低网络流量,减轻硬件负荷,减少冗余流量,节约带宽。
组播应用:
多媒体、任何“单到多”数据发布应用
组播劣势:
因为组播是基于UDP的,所以:尽力而为,没有拥塞避免机制,报文重复,报文失序
组播IP地址
一个组播组就是一个IP地址,不代表某一个具体的主机,而是表示一系列系统的集合,主机加入某个组播组即声明自己接收目的为某个IP地址的报文。
IP组播组地址:
①224.0.0.0-239.255.255.255
②“D”类地址空间,第一个字节的高四位为“1110”
(在前缀列表之中,10.0.0.0/1代表A类地址,172.0.0.0/2代表是B类地址,192.0.0.0/3代表C类地址)
组播IP模型分类
①ASM(Any-source Multicast)
ASM模型仅针对组地址提供组播分发。一个组播组地址作为一个网络服务的集合,任何源发布到该组地址的数据得到同样的服务。接收者主机加入组播组以后可以接收到任意源发送到该组的数据。
为了提高安全性,可以在路由器上配置针对组播源的过滤策略,允许或禁止来自某些组播源的报文通过。最终从接收者角度看,数据是经过筛选的。
ASM模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据,它们的接收者会同时收到来自两个源的数据。这样一方面会导致网络流量拥塞,另一方面也会给接收者主机造成困扰。
②SFM(Source-Filtered Multicast) (现在已经很少使用)
③SSM(Source-Specific Multicast)
SSM模型针对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时,可以指定只接收哪些源的数据或指定拒绝接收来自哪些源的数据。加入组播组以后,主机只会收到指定源发送到该组的数据。
SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址,因为SSM模型中针对每一个(源,组)信息都会生成表项。这样一方面节省了组播组地址,另一方面也不会造成网络拥塞。
组播IP地址分类
①永久组地址:
IANA为路由协议所预留的组播地址,用于表示一组特定的网络设备(也叫保留组播组),其中永久组地址保持不变,组成员数量可以是任意的,也可以为0。(即使成员数为0,地址依旧存在)
②临时组地址:
为用户组播组临时分配的IP地址,组成员一旦为0,那么这个组地址就接着取消,不再为这些用户当组播组使用。
224.0.0.0~224.0.0.255 为路由协议预留的永久组地址。
(224.0.1.0~231.255.255.255
233.0.0.0~238.255.255.255) 用户可用的ASM临时组地址,全网范围内有效。
232.0.0.0~232.255.255.255 用户可用的SSM临时组地址,全网范围内有效。
239.0.0.0~239.255.255.255 用户可用的ASM临时组地址,仅在特定的本地管理域内有效,称为本地管理组播地址。
其中,永久组地址中:
224.0.0.0:不分配
224.0.0.1:网段内所有主机和路由器(等效于广播地址)
224.0.0.2:所有组播路由器
224.0.0.3:不分配
224.0.0.4:DVMRP(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器
224.0.0.5:OSPF(Open Shortest Path First,开放最短路径优先)路由器
224.0.0.6:OSPF DR(Designated Router,指定路由器)
组播基本原理
组播相关协议
组播协议包括用于主机注册的组播组管理协议,和用于组播选路转发的组播路由协议。
组播组管理协议IGMP(Internet Group Management Protocol):
IGMP是负责IPv4组播成员管理的协议,运行在组播网络中的最后一段,即三层网络设备与用户主机相连的网段内。IGMP协议在主机端实现组播组成员加入与离开,在上游的三层设备中实现组成员关系的维护与管理,同时支持与上层组播路由协议的信息交互。
到目前为止,IGMP有三个版本:IGMPv1、IGMPv2和IGMPv3。
所有IGMP版本都支持ASM模型。IGMPv3可以直接应用于SSM模型,而IGMPv1和IGMPv2则需要SSM Mapping技术的支持。
协议无关组播PIM(Protocol Independent Multicast):
PIM作为一种IPv4网络中的组播路由协议,主要用于将网络中的组播数据流发送到有组播数据请求的组成员所连接的组播设备上,从而实现组播数据的路由查找与转发。
PIM协议包括PIM-SM(Protocol Independent Multicast Sparse Mode)协议无关组播-稀疏模式和PIM-DM(Protocol Independent Multicast Dense Mode)协议无关组播-密集模式。PIM-SM适合规模较大、组成员相对比较分散的网络;PIM-DM适合规模较小、组播组成员相对比较集中的网络。
在PIM-DM模式下不需要区分ASM模型和SSM模型。
在PIM-SM模式下根据数据和协议报文中的组播地址区分ASM模型和SSM模型:
如果在SSM组播地址范围内,则按照PIM-SM在SSM中的实现流程进行处理。PIM-SSM不但效率高,而且简化了组播地址分配流程,特别适用于对于特定组只有一个特定源的情况。
如果在ASM组播地址范围内,则按照PIM-SM在ASM中的实现流程进行处理。
IGMP Snooping:
IGMP Snooping功能可以使路由器工作在二层时,通过侦听上游的三层设备和用户主机之间发送的IGMP报文来建立组播数据报文的二层转发表,管理和控制组播数据报文的转发,进而有效抑制组播数据在二层网络中扩散。
与IGMP对应,IGMP Snooping就是IGMP协议在二层设备中的延伸协议,可以通过配置IGMP Snooping的版本使路由器可以处理不同IGMP版本的报文。
组播分发树
什么是组播分发树?
用来描述IP组播报文在网络中经过的路径。
组播分发树的两个基本类型:
源路径树:
以组播源作为树根,将组播源到每一个接收者的最短路径结合起来构成的转发树。
共享树:
使用放在网络的某些节点的单独的公用根。根据组播路由协议,这个根常被称为汇合点(RP)或核心,因此,共享树也可以称为RPT。
源路径树(SPT)
路径最优,延迟最小,占用内存较多
共享树(RPT)
路径不是最优的,引入额外的延迟,占用内存较少
组播数据转发
组播路由和单播路由是相反的:
单播路由关心数据报文要到哪里去。
组播路由关心数据报文从哪里来。
组播路由使用 “反向路径转发”机制(RPF, Reverse Path Forwarding)
反向路径转发
什么是RPF?
路由器收到组播数据报文后,只有确认这个数据报文是从自身连接到组播源的接口上收到的,才进行转发,否则丢弃。
RPF检查:
在单播路由表中查找到组播报文源地址的路由
1、如果该路由的出接口就是组播报文的入接口,RPF检查成功
2、否则RPF检查失败,报文丢弃。
(简单理解就是,是不是根据IP路由表中来的,是不是最优的。)