一、简介
IPv4传输方式有三种:单播、组播、广播
- 单播:信息源为每个需要信息的主机都发送一份独立的报文
- 组播:信息源将保温发送到一个特定的组播IP地址,只有加入了这个组的主机才能接收
- 广播:信息源将信息发送给网段中的所有主机,而不管其是否需要该信息
组播适用于任何"点到多点"的数据发布
- 网络直播
- 视频会议
- 网络电视
组播相比于单播和广播有如下优势
- 相比单播,不需要将同一份信息复制几份发给不同的目的主机,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的增加
- 相比广播,由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并且能提高信息传输的安全性
组播的特点
- 无重复流量
- 高效实现为同一组用户提供相同的数据通信
实现组播的协议
IGMP:运行在用户和组播路由器之间,建立和维护组播组成员关系
PIM SM/PIM DM:协议无关组播,运行在组播路由器之间。
二、组播基本概念
组播组
用IP组播地址表示的一个集合
任何用户主机,加入一个组播组,就成为该组成员,可以识别并接受发往该组播组的组播数据
组播源
信息的发送者
一个组播源可以同时向多个组播组发送数据,多个组播源也可以先同一个组播组发送数据
组播源通常不需要加入组播组,由源测DR负责管理组播源的注册
组播组成员
所有加入某个组播组的主机便成为该组播组成员
组播组中的成员是动态的,主机可以在任何时刻加入或者离开组播组
组播组成员可以广泛分布在网络中的任何地方
组播路由器
支持三层组播功能的路由器或交换机
提供组播路由功能(PIM);在用户链接的末梢网段上管理组播组成员(IGMP)
电视节目传输过程 | 组播传递过程 |
---|---|
电视台向频道发送数据 | 组播源向组播组发送数数据 |
观众打开电视机选择这个频道 | 接收者主机加入该组播组 |
电视台播放该频道电视节目 | 接收者主机收到发送给这个组播组的数据 |
观众可以随时控制电视机的开关和频道切换 | 接收者主机可以动态加入或者退出组播组、更换加入的组播组 |
电视台=组播源;频道=组播组;观众=组播组成员;
三、组播服务模型
组播服务模型的分类是针对接收者主机的,对组播源来说没有区别(组播源发出的组播数据是以组播源自己的IP为报文源地址、组播组地址为目的地址)
两种模型:ASM,SSM
两种服务模型默认使用不同的组播组地址范围
ASM模型(Any-Source Multicast)
接收者主机加入组播组后可以接收任意源发送到该组的数据
- IGMPv1/v2、MLDv1/v2
ASM地址=任意源+组播组地址 (*,G)
要求组地址必须整个组播网络中"唯一"
- 唯一是指在同一时刻一个ASM地址只能被一种组播应用使用
- 如果在同一时刻有两个或者多个不同应用使用同一个ASM地址发送数据。会导致它们的接收者会受到来自两个源的数据,数据会混乱,也会导致网络拥塞
SSM模型(Source-Specific Multicast)
接收者主机加入组播组后可以接受特定源发送到该组的数据
- IGMPv3
SSM地址=组播源IP+组播组地址 (S,G)
不要求组地址全网唯一,需要每个组播源保持”唯一“
- 唯一是指同一个源上不同的组播应用必须使用不同的SSM地址来区分
- 不同的组播源之间可以使用相同的组地址,因为SSM模型针对每个(S,G)信息都会生产表项。节省组播组地址、不会造成网络拥塞
四、组播地址
为了使组播源和组播组成员进行通信,需要提供网络层组播,使用IP组播地址
为了在本地物理网络上实现组播信息的正确传输,需要提供链路层组播,使用组播MAC地址。
组播数据传输时,目的地不是一个具体的接收者(所以不能使用设备的MAC地址),而是一个成员组,所以需要一种技术将IP组播地址映射为组播MAC地址
IPv4组播地址
IANA将D类地址空间分配给IPv4组播使用
D类地址高四位为 1110
地址范围:224.0.0.0----239.255.255.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
- 私有地址:239.0.0.0---239.255.255.255
- SSM模型:232.0.0.0----232.255.255.255
- ASM模型
具体划分如下表:
地址范围 | 含义 |
---|---|
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组播地址(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.255)
永久组地址 | 含义 |
---|---|
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.13 | 运行PIM协议的设备 |
224.0.0.18 | 运行VRRP的设备 |
224.0.0.22 | 所有是能IGMPv3的设备 |
224.0.0.19---224.0.0.21;224.0.0.23---224.0.0.255 | 未指定 |
IPv4组播MAC地址
IANA规定组播MAC地址前24bit为01-00-5e,第25bit固定为0,剩余的23bit由组播IP地址后23bit填充
存在32个组播IP地址映射同一个组播MAC,转发时需要拆包到IP层查看DIP不是自己才会丢弃
- 解决
- 规划时避免
- IGMP-snooping技术
IPv6组播地址
IPv6地址长度128位
和IPv4组播地址相比,IPv6组播地址有了明确的Group id字段用于标识组播组
IPv6组播地址格式:
FF(8bit) + flags(4bit) + Scope(4bit) + Group ID(112bit)
-
FF:最高8位为11111111,表示此地址为组播地址。IPv6组播地址总是以FF开头
-
Flags字段:用来标识组播地址的状态
-
取值 含义 0 永久组播地址(为特定协议分配) 1 临时组播地址,ASM范围的组播地址 2 临时组播地址,ASM范围的组播地址 3 临时组播地址,SSM范围的组播地址 其他 未分配
-
-
Scope字段:用来标识组播组的应用范围
-
取值 含义 1 接口/节点本地范围(node/interface-local scope) 2 链路本地范围(link-local scope) 4 管理本地范围(admin-local scope) 5 站点本地范围(site-local scope)。类似IPv4用于私网的组播地址 8 机构本地范围(organization-local scope) E 全球范围(global scope)。类似IPv4用于公网的组播地址
-
-
Group ID:组播组标识号
IPv6常用的组播地址范围及含义
范围 | IPv6组播地址 | 含义 |
---|---|---|
节点本地范围 | FF01::1 | 所有节点地址 |
FF01::2 | 所有路由器地址 | |
链路本地范围 | FF02::1 | 网段内所有IPv6主机和路由器地址(等效广播地址) |
FF02::2 | 所有路由器地址 | |
FF02::5 | OSPFv3 IGP router | |
FF02::6 | OSPFv3 IGP DR | |
FF02::9 | RIP路由器 | |
FF02::d | 所有PIM路由器 | |
站点本地范围 | FF05::2 | 所有路由器地址 |
FF05::1:3 | 所有DHCP服务器 | |
FF::1:4 | 所有DHCP中继 |
IPv6组播MAC地址
IPv6组播MAC地址的高16位为 0x3333,剩下的32位为IPv6组播地址的低32位
IPv6的组播地址会有更多的组地址使用用一个MAC地址
IPv6地址高8位固定;128-8-32=88,有2^88个IPv6组播MAC地址重复
五、组播协议
在IP组播传输模型中,发送者不关心接收者所处的位置,只要将数据发送到约定的目的地址(目的地一般是组播路由器、RP路由器),剩下的工作交给网络中完成。
网络中的组播路由器必须收集接收者信息,并按照正确的路径实现组播报文的转发和复制。在组播的发展过程中,形成了一套完整的协议来完成
IPv4组播协议
1.组播组管理协议IGMP
Internet Group Management Protocol
- 负责IPv4组播成员管理,运行在组播网络的末节
- 管理与维护组播组成员的加入与离开,同时支持与上层组播路由协议的信息交互
- IGMPv1、IGMPv2、IGMPv3(可直接应用于SSM模型)
2.协议无关组播协议PIM
Protocol Independent Multicast
- IPv4网络组播路由协议
- 实现组播数据的路由查找和转发,将网络中的组播数据流发送到有组播数据请求的末节设备
- PIM-DM(稀疏模式)、PIM-SM(密集模式)
- 稀疏和密集指的是,组成员相对分散或者集中
3.组播源发现协议MSDP
Multicast Source Discovery Protocol
- 解决多个PIM-SM与之间互联的一种域间组播协议,用以发现其他PIM-SM域内的组播源信息
- 实现组播报文的跨域转发,将远端域内的活动信息源传递给本地域内的接收者
- 只有PIM-SM使用ASM模型时才可用
4.组播边界网关协议MBGP
MultiProtocol Border Gateway Protocol
- 实现跨AS域的组播转发
- 适用于组播源于组播接受者不在同一个AS域内
5.IGMP Snooping
- 侦听上游三层设备和用户主机之间IGMP报文建立组播数据报文的二层转发表
- 有效抑制组播数据在二层网络中扩散
IPv6组播协议
1.组播侦听发现协议MLD
Multicast Listener Discovery
- IPv6组播成员管理,运行在组播网络末节
- 在三层设备上维护与管理组播成员的加入与离开
- MLDv1、MLDv2(可直接运用于SSM模型)
2.PIM(IPv6)
- IPv6网络组播路由协议
- 实现组播数据的路由查找和转发,将网络中的组播数据流发送到有组播数据请求的末节设备
3.MLD Snooping
与IGMP snooping 基本一致