IP组播
一,组播的特点
1,优点
效率高(控制网络流量,减少服务器及路由器的负荷)Enhanced efficiency
性能好(减少流量的冗余)Optimized performance
分布式的应用 Distributed applications
2,缺点
基于UDP的 is UDP-based
1) 尽力而为的传输方式 Best-effort delivery
2) 没有 拥塞避免 机制 No congestion avoidance
3) 重复报文 Duplicates
4) 乱序的传输 Out-of-sequence delivery
典型应用:
One-to-many
Many-to-many
Many-to-one
组播应用特点:所有接收方接收的数据都相同!需要网络中间设备的支持!
因此 目前 互联网上的在线直播都 是 单播!需要整网改造!
所有路由器开启组播功能,运行组播路由协议!
二,IP组播的编制 (Multicast) 组播, 多播
1,三层IP地址
D类
224.0.0.0~239.255.255.255
224.0.0.0~224.0.0.255 保留使用(通常用于常见的一些网络协议)
224.0.0.1 所有支持组播的主机
224.0.0.2 所有路由器
224.0.0.4 所有DVMRP路由器(DVMRP:距离矢量组播路由协议)
224.0.0.5 所有OSPF路由器
224.0.0.6 所有OSPF DR 路由器
224.0.0.13 所有PIMv2路由器(PIMv2:协议无关组播 version 2)
224.0.0.9 所有RIPv2路由器
224.0.0.10 所有EIGRP路由器
224.0.1.39 所有映射代理所在的组(裁判)
224.0.1.40 所有支持 AutoRP 的路由器所在的组
224.0.1.0~~~238.255.255.255 全局的 组播IP 地址, 公有地址
239.0.0.0~~~239.255.255.255 本地的组播IP地址(类似于单播中的私有网段)
2,以太网中对应的二层地址(组播MAC地址)
组播地址 MAC地址 映射关系
组播IP地址: 32bits
1110 28bits
↓→→→5 bits Lost
↓
01-00-5e-7f-00-01
25bits 23bits
网卡MAC地址: 48bits
224.0.0.1 ←---→01-00-5e-00-00-01 (前25bit固定)(后23bit由IP地址映射进来)
将IP组播地址的后23bit →→ 映射→→ 到 01-00-5e-0xxxxxxx-xxxxxxx-xxxxxxxx的后23bit中
因此32个组播地址 将会 对应 到 同1个MAC地址中
一个主机收到一个数据帧的时候
1)若目标MAC等于本网卡的MAC地址 →接收
2)若目标MAC等于FFFF.FFFF.FFFF →接收
若一个主机 加入 一个组播组(224.1.2.3) (该IP组播地址对应的二层MAC地址为01-00-5e-01-02-03)
此时它的网卡将还会监听目标MAC地址等于01-00-5e-01-02-03的数据帧,
因此它可以接收到该组播的数据!
因此 网卡是否监听 组播MAC地址,取决于主机 加入 / 离开 组播组与否!
由于3层组播IP与二层的组播MAC并非一一对应,
如果主机收到一个发给225.1.2.3组的数据 则该主机也会接收该数据帧
(因为组224.1.2.3和225.1.2.3所对应的二层MAC地址是一样的) 对应比例 32:1
送往第三层进行处理,在第三层可以根据组播IP地址判断并将该数据丢弃!
SAP 会话宣告协议 Session Announcement Protocol
将网络中目前存在的组播源需要播放节目的信息广播出来(辟如电视报)用户可以选择性的加入该组
组播要点:使用组播,每个人看到的内容是一样的!
三,组播中的协议
概述:
IGMP (必选协议) Host ←←←→→→Router
组播路由协议(必选协议) Router←←←→→→Router
CGMP (思科私有)(可选协议) Cisco Switch←←←→→→Cisco Router
IGMP Snooping(可选协议) →→→Switch(只需要在交换机上运行)
1, IGMP(Internet Group Management Protocol --- Internet组管理协议)
主机<------>路由器 之间,用来维护组成员的 动态 加入,离开等
1)Verson 1
a)报文类型
i,Member Query (成员查询) ---路由器定期(60s)发送
ii,Member Report(成员报告)---主机若需要加入某个组时,将发送"成员报告"消息(只有成员报告,没有成员离开)
缺点:1) 主机Host为"默默离开",路由器Router需要通告3次query后,没有主机应答来判断该网络中没有成员存在
2) IGMPv1 无法自己选择 Querier(查询器), 它依靠 3层的组播路由协议 来选举(如PIM)
例如: PIM中选择该网段中具有 [最大] 接口IP地址的路由器 成为 DR, 同时也是IGMPv1的 Querier
IGMPv1 DR = Querier = 最大接口IP地址
【注1】
一个路由器是否要往某个接口转发组播数据,取决于 该接口下是否存在该组的成员
(即组播中我们关心“有/无”的区别,而不关心组播成员的具体数量)
【注2】
[报告抑制机制]
为了避免同一个组中的主机同时对路由器Query的响应(Member Report),造成对网络的冲击,
一个主机收到Query后,开启 随机的计时器, 等待一定延迟后,再发送Member Report消息,
这样同一个组中将由其中一台主机首先 回应Member Report消息,以组播方式应答
而该组的其他主机同样能够收到该消息, 它们将取消Member Report消息的发送
2)Version 2
member-report,
member-query ( 通用组查询,指定组查询),
leave-group
i,改进
a) 增加"离开组"的消息--Leave-Group
b) 增加"指定组"的查询
version 1 中的查询只能针对"通用组"查询
c) IGMPv2可以自己选择Querier, 该网段中 路由器具有最小接口IP地址的路由器称为Querier、
PIM 中DR(负责向该网段转发数据)
DR选举原则:具有最大IP地址!
IGMP V1 中无法选举查询器,使用的就是DR (既要负责转发数据,又要负责查询,工作量大)
IGMP V2 DR选举 还是选具有最大IP地址的路由器,而 查询器选举 使用 最小IP地址
有多个出口路由器时,版本1的查询器是具有最大IP地址,版本2的查询器是具有最小IP地址
单个出口路由器时,无此问题!
IGMP v1 , IGMP v2 不兼容,若同时存在v1,v2,必须都工作在v1中!
【注】在query消息中还定义了"最大响应时间"
ii,某个主机Host离开一个组播组,
首先发送"Leave-Group"消息到224.0.0.2(所有路由器),
路由器收到离开消息后,将 发送"指定组" 查询 (目标IP为该特定组的组播IP地址(),
而"通用组"查询则是发送到224.0.0.1(所有主机),)
若本组中还有成员存在,它将回应Member Report,路由器将继续转发该组的数据;
若无成员回应,则路由器停止转发该组的数据
Reduces leave latency in comparison to V1
命令:show ip igmp interface e0
3)Version 3
基于version 2,
增加SSM(Source-Specific Multicast:指定源的组播)方面的功能
在IGMPv3的Member Report消息中添加 include(包含), exclude(排除) 字段
接收方有选择性!
若某个主机 想 指定 接收 哪些组播源发送的数据时,可以将这些组播源的IP地址添加到include字段中(相当于白名单)
若某个主机 不想 接收 哪些组播源发送的数据时,可以将这些组播源的IP地址添加到exclude字段中(相当于黑名单)
发送方发送地址:224.0.0.22
Host----->Router:
eg. IGMP v3 Report Group:224.1.1.1
(224.0.0.2) Exclude:
Router----->Host:
224.0.0.22 (无抑止) 成员都在一个组(224.1.1.1)里,但接收的数据可能来自不同的源,因此都要响应!
查看IGMP相关信息命令: show ip igmp interface s0/0
2,Layer2组播数据帧的转发问题
传统的二层交换机进行数据帧转发时,依赖于MAC地址表(单播的MAC地址信息)
三种情况:
1)---己知单播帧: 目标MAC地址在MAC-Address-Table能够查找到,精确转发,转发至某个端口
2)---未知单播帧: 目标MAC地址在MAC-Address-Table不能查找到,泛洪
3)---组播或广播帧: 泛 洪
注:二层数据帧---源MAC(单播MAC), 目的MAC(单播MAC/组播MAC/广播MAC)
三层IP报文---源IP (单播IP), 目的IP (单播IP/组播IP/广播IP)
Layer 2 Multicast Switching Solutions
-------------提高二层交换机 处理组播数据帧 时的 效率----------------原先是泛洪
1)CGMP(Cisco组管理协议)(思科私有)
在Cisco的路由器 <-----> Cisco的交换机之间运行,为Cisco的私有协议
路由器Router收到主机Host发出的"成员报告"消息后,分析IGMP的消息:
得到的信息: 主机的MAC地址<------>该组播组的组播IP地址<------>组播MAC地址 , "加入"
路由器将上述分析的结果通过CGMP协议发送给交换机
交换机可以利用这些信息,结合自己的单播MAC地址表,构造出组播MAC地址表
通过"主机的MAC地址",查找二层交换机的单播MAC地址表, 确定该主机(即加入该组播组的主机)是在哪个端口
组播MAC地址表:
组播MAC地址 端口列表
组播MAC 主机所在的端口
2层交换机能维护组播MAC地址表,对于组播数据只会转到特定端口下,而不会采用传统的泛洪方式
2层交换机并没有分析IGMP消息,工作量少,结果是由路由器分析完后再转发到交换机的
类似于C-S 结构:
Router =Server, 负责解析消息,
把结果告诉给Client,客户端进行简单处理,达到维护组播MAC地址表的目的
2) IGMP snooping(IGMP窃听) (标准)
同样目的:
维护组播MAC地址表
实现:
二层交换机 窃听 IGMP消息,并分析其中的内容,从而构造自己的组播MAC地址表
缺点:
交换机的负荷变大,对性能有一定的影响
----------------------
在稀疏模式中,如果某个网段中存在多个出口路由器,
当PC发出igmp membership report后,将由该网段 DR负责向去往RP 上游设备发出Join/Prune消息
在组播源所在 网络中,若存在多个出口路由器,则由该网段 DR负责向RP发出PIM-Register消息
由于IGMPv1中本身无法选举查询器,因此它依赖组播路由协议选出 DR作为查询器
在PIM-SM中,DR将作为IGMP查询器。
在PIM-DM中,DR本身没有什么作用,但是为了能够让IGMPv1知道查询器,它还是要选出DR,
这个DR 目的就是给IGMPv1作为查询器使用,在PIM-DM中没有其他功能