作为IP传输三种方式之一,IP组播通信指的是IP报文从一个源发出,被转发到一组特定的接收者。相较于传统的单播和广播,IP组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于IPTV、实时数据传送和多媒体会议等网络业务中。
9.1IP组播基础
1、在点到多点的场景中组播的优势
-
- 相比单播,由于被D传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。
- 相比广播,由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性。
2、组播基本概念
组播方式示意图如图9-1所示:
图9-1:组播方式示意图
-
- 组播组:用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接收发往该组播组的组播数据。
- 组播源:信息的发送者称为“组播源”,一个组播源可以同时向多个组播组发送数据,多个组播源也可以同时向一个组播组发送报文。组播源通常不需要加入组播组。
- 组播组成员:所有加入某组播组的主机便成为该组播组的成员,组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
- 组播路由器:支持三层组播功能的路由器或交换机,组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。
3、组播服务模型
ASM(任意源组播):组成员加入组播组以后,组成员可以接收到任意源发送到该组的数据。
SSM(指定源组播):组成员加入组播组以后,组成员只会收到指定源发送到该组的数据。
4、组播IP地址
组播地址的范围和作用如表9-1所示:
表9-1:组播地址的范围和作用
范围 | 作用 |
2240.0.0-224.0.0.255 | 永久组播地址,如OSPF中的224.0.0.5/6 |
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 | 本地管理地址 |
5、组播MAC地址
IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,映射关系如图9-2所示:例如组播组地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。
图9-2:IPv4组播地址与IPv4组播MAC地址的映射关系
9.2IGMP原理
IGMP是Internet Group Management Protocol的简称,又被称为互联网组管理协议,是TCP/IP协议族中负责IPv4组播成员管理的协议。IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。
9.2.1IGMPV1
1、IGMPV1的包文类型
-
- 普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。
- 成员报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。
2、工作机制
(1)普遍组查询和响应机制,其流程如图9-3所示:
图9-3:普遍组查询和响应机制
- IGMP查询路由器每隔60S发一次general query,
- 组播组成员收到general query 后启动timer-g1定时器0-10s之间的随机值,定时器超时后发送report,它有两个作用:1回应general query, 2让其它成员不用发了
- IGMP查询器接收到HostA的报告报文后,了解到本网段内存在组播组G1的成员,则由组播路由协议生成(*,G1)组播转发表项
(2)新组成员加入机制,其流程图如图9-4所示:
图9-4:新组成员加入机制
- 主机HostC不等待普遍组查询报文的到来,主动发送针对G2的报告报文以声明加入。
- IGMP查询器接收到HostC的报告报文后,了解到本网段内出现了组播组G2的成员,则生成组播转发项(*,G2)。网络中一旦有G2的数据到达路由器,将向该网段转发。
(3)组成员离开机制,其流程图如图9-5所示:
图9-5:组成员离开机制
- 假设HostA想要退出组播组G1 HostA收到IGMP查询器发送的普遍组查询报文时,不再发送针对G1的报告报文。由于网段内还存在G1组成员HostB,HostB会向IGMP查询器发送针对G1的报告报文,因此IGMP查询器感知不到HostA的离开。
- 假设HostC想要退出组播组G2, HostC收到IGMP查询器发送的普遍组查询报文时,不再发送针对G2的报告报文。由于网段内不存在组G2的其他成员,IGMP查询器不会收到G2组成员的报告报文,则在一定时间(缺省值为130秒)后,删除G2所对应的组播转发表项。
9.2.2IGMPV2
1、包文类型
- 普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。
- 成员报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。
- 成员离开报文(Leave):成员离开组播组时主动向查询器发送的报文,用于宣告自己离开了某个组播组。
- 特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
华为Datacom网络工程师HCIP全套学习课程(全套理论+实验)-学习视频教程-腾讯课堂
2、工作机制
- 查询器选举机制
- 路由器的分类:查询器、非查询器
- 选举原则:比较IP地址,越小越优
- 离开组机制,其流程图如图9-6所示:
图9-6:离开组机制
-
- HostA向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G1的离开报文。
- 查询器收到离开报文,会发送针对组G1的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。
-
- 该网段内还存在组G1的其他成员(如图4所示的HostB),这些成员(HostB)在收到查询器发送的特定组查询报文后,会立即发送针对组G1的报告报文。查询器收到针对组G1的报告报文后将继续维护该组成员关系。
-
- 如果该网段内不存在组G1的其他成员,查询器将不会收到针对组G1的报告报文。在Timer-Membership超时后,查询器将删除(*,G1)对应的IGMP组表项。当有组G1的组播数据到达查询器时,查询器将不会向下游转发。
9.2.3IGMPV3
与IGMPv2相比,IGMPv3报文的变化如下:
- IGMPv3报文包含两大类:查询报文和成员报告报文。IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。
- 查询报文中不仅包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文(Group-and-Source-Specific Query)。该报文由查询器向共享网段内特定组播组成员发送,用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
- 成员报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。IGMPv3增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),将组播组与源列表之间的对应关系简单的表示为(G,INCLUDE,(S1、S2...)),表示只接收来自指定组播源S1、S2……发往组G的数据;或(G,EXCLUDE,(S1、S2...)),表示接收除了组播源S1、S2……之外的组播源发给组G的数据。当组播组与组播源列表的对应关系发生了变化,IGMPv3报告报文会将该关系变化存放于组记录(Group Record)字段,发送给IGMP查询器。
- 在IGMPv3中一个成员报告报文可以携带多个组播组信息,而之前的版本一个成员报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。
9.2.4IGMP snooping
IGMP Snooping (Internet Group Management Protocol Snooping)是一种IPv4二层组播协议,通过侦听三层组播设备和用户主机之间发送的组播协议报文来维护组播报文的出接口信息,从而管理和控制组播数据报文在数据链路层的转发。
1、IGMP snooping的作用
配置IGMP Snooping后,二层组播设备可以侦听和分析组播用户和上游路由器之间的IGMP报文,根据这些信息建立二层组播转发表项,控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。
2、IGMP snooping的原理
(1)端口角色
- 路由器端口
- 由协议生成的路由器端口叫做动态路由器端口。收到源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文(三层组播设备的PIM接口向外发送的用于发现并维持邻居关系的报文)的接口都将被视为动态路由器端口。
- 手工配置的路由器端口叫做静态路由器端口。
- 成员端口
- 由协议生成的成员端口叫做动态成员端口。收到IGMP Report报文的接口,二层组播设备会将其标识为动态成员端口。
- 手工配置的成员端口叫做静态成员端口。
2、IGMP Snooping SSM Mapping
IGMPv1和v2不支持SSM,所以通过在二层设备上静态配置SSM地址的映射规则,将IGMPv1和IGMPv2报告报文中的(*,G)信息转化为对应的(S,G)信息,以提供SSM组播服务。S表示组播源,G表示组播组,*表示任意组播源。缺省情况下,SSM组地址范围为232.0.0.0~232.255.255.255
3、IGMP代理
为了减少用户主机所在网段内的IGMP协议报文数量,可以在二层设备上部署IGMP Snooping Proxy功能,使其能够代理上游三层设备向下游主机发送IGMP查询报文,同时代理下游主机来向上游三层设备发送成员关系报告报文。配置了IGMP Snooping Proxy功能的设备称为IGMP Snooping代理,在其上游设备看来,它就相当于一台主机;在其下游设备看来,它相当于一台查询器。
9.3PIM原理
9.3.1 PIM DM
PIM(Protocol Independent Multicast)称为协议无关组播。这里的协议无关指的是与单播路由协议无关,即PIM不需要维护专门的单播路由信息。作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行RPF(Reverse Path Forwarding,逆向路径转发)检查,检查通过后创建组播路由表项,从而转发组播报文。
1、组播分发树MDT(Multicast Distribution Tree)
- SPT(Shortest Path Tree)也叫源树:以组播源为根,组播组成员为叶子的组播分发树
- RPT(RP Tree)也叫共享树:以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树
2、PIM路由器
- 叶子路由器:与用户主机相连的PIM路由器,但连接的用户主机不一定为组成员
- 第一跳路由器:组播转发路径上,与组播源相连且负责转发该组播源发出的组播数据的PIM路由器。
- 最后一跳路由器:组播转发路径上,与组播组成员相连且负责向该组成员转发组播数据的PIM路由器。
- 中间路由器:组播转发路径上,第一跳路由器与最后一跳路由器之间的PIM路由器。
3、PIM路由表项
- (S,G)路由表项主要用于在PIM网络中建立SPT、老化时间为210s,每隔180s扩散一次。
- (*,G)路由表项主要用于在PIM网络中建立RPT。
4、PIM-DM
(1)特点
PIM-DM主要用在组成员较少且相对密集的网络中,通过“扩散-剪枝”的方式形成组播转发树(SPT)
(2)协议报文
- Hello
每隔30s发一次,超时时间为105s,发往组播224.0.0.13
- Join/prune(加入/剪枝)
- Graft(嫁接)
- Graft-ack(嫁接确认)
- Assert(断言)
- 单播路由协议优先级较高者获胜。
- 如果优先级相同,则到组播源的开销较小者获胜。
- 如果以上都相同,则下游接口IP地址最大者获胜。
9.3.2 PIM SM
1、特点
PIM-SM模式主要用在组成员较多且相对稀疏的组播网络中,该模式建立组播分发树的基本思路是先收集组成员信息,然后再形成组播分发树。使用PIM-SM模式不需要全网泛洪组播,对现网的影响较小,因此现网多使用PIM-SM模式。
2、报文类型和功能,
报文类型和功能如表9-1所示:
表9-1:PIM SM报文类型和功能
报文类型 | 报文功能 |
Hello | 用于PIM邻居发现,协议参数协商,PIM邻居关系维护等 |
Register(注册) | 用于事先源的注册过程。这是一种单播报文,在源的注册过程中,组播数据被第一跳路由器封装在单播注册报文中发往RP |
Register-Stop(注册停止) | RP使用该报文通知第一跳路由器停止通过注册报文发送组播流量 |
Join/Prune(加入/剪枝) | 加入报文用于加入组播分发树,剪枝则用于修剪组播分发树 |
Assert(断言) | 用于断言机制 |
Bootstrap(自举) | 用于BSR选举。另外BSR也使用该报文向网络中扩散C-RP(Candidate-RP,候选RP)的汇总信息 |
Candidate-RP-Advertisement (候选RP通告) | C-RP使用该报文向BSR发送通告,报文中包含该C-RP的IP地址及优先级等信息 |
3、静态RP
每一台路由上都要配置
4、动态RP-BSR(自举协议)
(1)C-BSR(candidate-bootstrap router)候选BSR
- BSR的作用:收集C-RP的信息并形成RP-Set信息,BSR通过PIM报文将RP-Set信息扩散给所有PIM路由器。
- BSR的选举原则:
- 优选级最大的,默认为0
- 优选级相同,IP地址最大的
每隔60s发一次
(2)C-RP(candidate-RP)候选RP
- 作用:
- RP的选举原则:
- 优选级越小越好,默认为0
- HASH值最大
- IP地址最大
5、PIM SM建树过程
(1)组播接受者所连路由器向RP建共享树
- 叶路由器向上游发送join消息,直到RP
- RP生成(* G),确认上游和下游接口生成RPT
注意:每隔60s发一次join,210没有收到就会把下游接口移除
(2)头一跳路由器向RP注册
- 组播数据通过注册隧道发送给RP
- RP知道组播源后开始向组播源建SPT
- 源的组播数据通过STP到达RP后,RP向DR发送注册停止报文