IGMP技术总结(2)
http://blog.csdn.net/livelylittlefish/article/details/4286424
5. 组播模型分类
根据接收者对组播源处理方式的不同,组播模型分为以下三类:
· ASM 模型:Any-Source Multicast,任意信源组播
在ASM 模型中,任意一个发送者都可以作为组播源向某组播组地址发送信息。众多接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。在ASM 模型中,接收者无法预先知道组播源的位置,但可以在任意时间加入或离开该组播组。
· SFM 模型:Source-Filtered Multicast,信源过滤组播
该模型继承了ASM 模型,从发送者角度来看,两者的组播组成员关系完全相同。SFM 模型在功能上对ASM 模型进行了扩展。在SFM 模型中,上层软件对收到的组播报文的源地址进行检查,允许或禁止来自某些组播源的报文通过。因此,接收者只能收到来自部分组播源的组播数据。从接收者的角度来看,只有部分组播源是有效的,组播源被经过了筛选。
· SSM 模型:Source-Specific Multicast,指定信源组播
在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息。该模型为用户提供了一种能够在客户端指定组播源的传输服务。
SSM 模型与ASM 模型的根本区别在于:SSM 模型中的接收者已经通过其它手段预先知道了组播源的具体位置。SSM 模型使用与ASM/SFM 模型不同的组播地址范围,直接在接收者与其指定的组播源之间建立专用的组播转发路径。
6. IP组播
§ 对于IP 组播,需要关注下列问题:
· 组播源将组播信息传输到哪里?即组播寻址机制;
· 网络中有哪些接收者?即主机注册;
· 这些接收者需要从哪个组播源接收信息?即组播源发现;
· 组播信息如何传输?即组播路由。
§ IP 组播属于端到端的服务,组播机制包括以下四个部分:
· 寻址机制:借助组播地址,实现信息从组播源发送到一组接收者;
· 主机注册:允许接收者主机动态加入和离开某组播组,实现对组播成员的管理;
· 组播路由:构建组播报文分发树(即组播数据在网络中的树型转发路径),并通过该分发树将报文从组播源传输到接收者;
· 组播应用:组播源与接收者必须安装支持视频会议等组播应用的软件,TCP/IP 协议栈必须支持组播信息的发送和接收。
为了让组播源和组播组成员进行通信,需要提供网络层组播地址,即IP 组播地址。同时必须存在一种技术将IP 组播地址映射为链路层的组播MAC 地址。
§ IP 组播地址
· IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用,范围从224.0.0.0 到239.255.255.255,具体分类及其含义如下表所示。
IPv4 组播地址的范围及含义
地址范围 |
含义 |
224.0.0.0~224.0.0.255 |
永久组地址。除224.0.0.0 保留不做分配外,其它地址供路由协议、拓扑查找和协议维护等使用,常用的永久组地址及其含义如表1-3 所示。对于以该范围内组播地址为目的地址的数据包来说,不论其TTL(Time to Live ,生存时间)值为多少,都不会被转发出本地网段 |
224.0.1.0~238.255.255.255 |
用户组地址,全网范围内有效。包含两种特定的组地址:232.0.0.0/8:SSM 组地址;233.0.0.0/8:GLOP 组地址 |
239.0.0.0~239.255.255.255 |
本地管理组地址,仅在本地管理域内有效。使用本地管理组地址可以灵活定义组播域的范围,以实现不同组播域之间的地址隔离,从而有助于在不同组播域内重复使用相同组播地址而不会引起冲突。详情请参见RFC 2365 |
说明:
· 组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。
· GLOP 是一种AS(Autonomous System,自治系统)之间的组播地址分配机制,将AS 号填入该范围内组播地址的中间两个字节中,每个AS 都可以得到255 个组播地址。有关GLOP 的详细介绍请参见RFC 2770。
永久组地址 |
含义 |
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 指定路由器/备用指定路由器 |
224.0.0.7 |
ST(Shared Tree ,共享树)路由器 |
224.0.0.8 |
ST 主机 |
224.0.0.9 |
RIP-2(Routing Information Protocol version 2 ,路由信息协议版本2)路由器 |
224.0.0.11 |
移动代理 |
224.0.0.12 |
DHCP(Dynamic Host Configuration Protocol ,动态主机配置协议)服务器/中继代理 |
224.0.0.13 |
所有PIM(Protocol Independent Multicast , 协议无关组播)路由器 |
224.0.0.14 |
RSVP(Resource Reservation Protocol ,资源预留协议)封装 |
224.0.0.15 |
所有CBT(Core-Based Tree ,有核树)路由器 |
224.0.0.16 |
指定SBM(Subnetwork Bandwidth Management ,子网带宽管理) |
224.0.0.17 |
所有SBM |
224.0.0.18 |
VRRP(Virtual Router Redundancy Protocol ,虚拟路由器冗余协议) |
§ 以太网组播MAC 地址
· 以太网传输单播IP 报文的时候,目的MAC 地址使用的是接收者的MAC 地址。但是在传输组播数据包时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用组播MAC 地址。
· IANA规定,IPv4 组播MAC地址的高24 位为0x01005E,第25 位为0,低23 位为IPv4 组播地址的低23 位。IPv4 组播地址与MAC地址的映射关系如下图所示。
IPv4 组播地址与MAC 地址的映射关系
· 由于IPv4 组播地址的高4 位是1110,代表组播标识,而低28 位中只有23 位被映射到IPv4 组播MAC 地址,这样IPv4 组播地址中就有5 位信息丢失。于是,就有32 个IPv4 组播地址映射到了同一个IPv4 组播MAC 地址上,因此在二层处理过程中,设备可能要接收一些本IPv4 组播组以外的组播数据,而这些多余的组播数据就需要设备的上层进行过滤了。
7. 组播协议
通常,我们把工作在网络层的IP 组播称为“三层组播”,相应的组播协议称为“三层组播协议”,包括IGMP、PIM、MSDP、MBGP 等;把工作在数据链路层的IP 组播称为“二层组播”,相应的组播协议称为“二层组播协议”,包括IGMP Snooping、组播VLAN 等。
· 三层组播协议
三层组播协议包括组播组管理协议和组播路由协议两种类型,它们在网络中的应用位置如下图。
三层组播协议的应用位置
(1) 组播组管理协议
在主机和与其直接相连的三层组播设备之间通常采用组播组的管理协议IGMP(Internet Group Management Protocol,互联网组管理协议),该协议规定了主机与三层组播设备之间建立和维护组播组成员关系的机制。
(2) 组播路由协议
组播路由协议运行在三层组播设备之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由建立了从一个数据源端到多个接收端的无环(loop-free)数据传输路径,即组播分发树。
对于ASM 模型,可以将组播路由分为域内和域间两大类:
· 域内组播路由用来在AS 内部发现组播源并构建组播分发树,从而将组播信息传递到接收者。在众多域内组播路由协议中,PIM(Protocol Independent Multicast,协议无关组播)是目前较为典型的一个。按照转发机制的不同,PIM 可以分为DM(Dense Mode,密集模式)和SM(Sparse Mode,稀疏模式)两种模式。
· 域间组播路由用来实现组播信息在AS 之间的传递,目前比较成型的解决方案有:MSDP(Multicast Source Discovery Protocol,组播源发现协议)能够跨越AS 传播组播源的信息;而MP-BGP(MultiProtocol Border Gateway Protocol,多协议边界网关协议)的组播扩展MBGP(Multicast BGP)则能够跨越AS 传播组播路由。
对于SSM 模型,没有域内和域间的划分。由于接收者预先知道组播源的具体位置,因此只需要借助PIM-SM 构建的通道即可实现组播信息的传输。
· 二层组播协议
二层组播协议包括IGMP Snooping和组播VLAN等,它们在网络中的应用位置如下图。
二层组播协议的应用位置
(1) IGMP Snooping
IGMP Snooping(Internet Group Management Protocol Snooping,互联网组管理协议窥探)是运行在二层设备上的组播约束机制,通过窥探和分析主机与三层组播设备之间交互的IGMP 报文来管理和控制组播组,从而可以有效抑制组播数据在二层网络中的扩散。
(2) 组播VLAN
在传统的组播点播方式下,当连接在二层设备上、属于不同VLAN 的用户分别进行组播点播时,三层组播设备需要向该二层设备的每个VLAN 分别发送一份组播数据;而当二层设备运行了组播VLAN 之后,三层组播设备只需向该二层设备的组播VLAN 发送一份组播数据即可,从而既避免了带宽的浪费,也减轻了三层组播设备的负担。
8. 组播报文的转发机制
在组播模型中,IP 报文的目的地址字段为组播组地址,组播源向以此目的地址所标识的主机群组传送信息。因此,转发路径上的组播路由器为了将组播报文传送到各个方位的接收站点,往往需要将从一个入接口收到的组播报文转发到多个出接口。与单播模型相比,组播模型的复杂性就在于:
· 为了保证组播报文在网络中的传输,必须依靠单播路由表或者单独提供给组播使用的路由表(如MBGP 路由表)来指导转发;
· 为了处理同一设备在不同接口上收到来自不同对端的相同组播信息,需要对组播报文的入接口进行RPF(Reverse Path Forwarding,逆向路径转发)检查,以决定转发还是丢弃该报文。RPF 检查机制是大部分组播路由协议进行组播转发的基础。
9. IGMP SSM Mapping
IGMP SSM Mapping 通过在路由器上配置SSM 静态映射规则,从而为运行IGMPv1 或IGMPv2 的接收者主机提供对SSM 模型的支持。
SSM 模型要求在接收者主机所在的网段,路由器能够了解主机加入组播组时所指定的组播源。如果接收者主机上运行的是IGMPv3,则可以在IGMPv3 的报告报文中直接指定组播源的地址;如果某些接收者主机只能运行IGMPv1 或IGMPv2,则在IGMPv1 或IGMPv2 的报告报文中无法指定组播源的地址。这种情况下需要通过在路由器上配置IGMP SSM Mapping 功能,将IGMPv1 或IGMPv2报告报文中所包含的(*,G)信息映射为(G,INCLUDE,(S1,S2...))信息。
在下图所示的SSM网络中,Host A、Host B和Host C上分别运行IGMPv1、IGMPv2 和IGMPv3。
在不允许将Host A和Host B升级为IGMPv3 的情况下,若要为Host A和Host B也提供SSM组播服务,则需在Router A上使能IGMP SSM Mapping并配置相应的映射规则。
IGMP SSM Mapping组网图
配置完成后,当Router A 收到来自主机的IGMPv1 或IGMPv2 报告报文时,首先检查该报文中所携带的组播组地址G,然后根据检查结果的不同分别进行处理:
(1) 如果G 不在SSM 组地址范围内,则提供ASM 组播服务。
(2) 如果G 在SSM 组地址范围内:
§ 若Router A 上没有G 对应的IGMP SSM Mapping 规则,则无法提供SSM 组播服务,丢弃该报文;
§ 若Router A 上有G 对应的IGMP SSM Mapping 规则,则依据规则将报告报文中所包含的(*,G)信息映射为(G,INCLUDE,(S1,S2...))信息,可以提供SSM 组播服务。
IGMP SSM Mapping 不对IGMPv3 的报告报文进行处理。
10. IGMP Proxy
在一些简单的树型网络拓扑中,边缘设备上并不需要运行复杂的组播路由协议(如PIM),可以通过在这些设备上配置IGMP Proxying(IGMP 代理)功能,使其代理下游主机来发送IGMP 报文及维护组成员关系,并基于该关系进行组播转发。在上游设备看来,配置了IGMP Proxying 功能的设备(称为IGMP 代理设备)不再是一个PIM 邻居,而只是一台主机。
如上图所示,IGMP Proxying中定义了以下两种接口类型:
§ 上行接口:又称代理接口,指IGMP 代理设备上运行IGMP Proxying 功能的接口,即朝向组播分发树树根方向的接口。由于该接口执行IGMP 协议的主机行为,因此也称为主机接口(Host Interface)。
§ 下行接口:指IGMP 代理设备上除上行接口外其它运行IGMP 协议的接口,即背向组播分发树树根方向的接口。由于该接口执行IGMP 协议的路由器行为,因此也称为路由器接口(Router Interface)。
IGMP 代理设备上维护着一个组成员关系数据库(Membership Database),将所有下行接口维护的组成员关系记录都存到这个数据库中。组成员关系记录的结构如下:(Multicast-address,Filter-mode,Source-list),每条记录都是各下行接口上具有相同组地址的成员关系记录的合集。
上行接口正是依据这个数据库来执行主机行为——当收到查询报文时根据当前数据库状态响应报告报文,或者当数据库变化时主动发送报告或离开报文;而下行接口则执行路由器行为——参与查询器的选举、发送查询报文并根据报告报文维护组成员关系等。
11. 组播传输的特点
· “组播组”是一个用IP 组播地址进行标识的接收者集合,主机通过加入某组播组成为该组播组的成员,从而可以接收发往该组播组的组播数据。组播源通常不需要加入组播组。
· 信息的发送者称为“组播源”,一个组播源可以同时向多个组播组发送信息,多个组播源也可以同时向一个组播组发送信息。
· 所有加入某组播组的主机便成为该组播组的成员,组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
· 支持三层组播功能的路由器或三层交换机统称为“组播路由器”或“三层组播设备”。组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。组播路由器本身也可能是组播组的成员。
12. 组播技术的优点
· 提高效率:减轻信息源服务器和网络设备CPU 的负荷;
· 优化性能:减少冗余流量;
· 分布式应用:使用最少的网络资源实现点到多点应用。
13. 组播相对单播、广播的优势
· 相比单播来说,组播的优势在于:由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。
· 相比广播来说,组播的优势在于:由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性;另外,广播只能在同一网段中进行,而组播可以实现跨网段的传输。
组播信息传输与电视节目传输的类比
步骤 |
电视节目的传送过程 |
组播方式的信息传输过程 |
1 |
电视台S 通过频道G 传送电视节目 |
组播源S 向组播组G 发送组播数据 |
2 |
用户U 将电视机的频道调至频道G |
接收者U 加入组播组G |
3 |
用户U 能够收看到由电视台S 通过频道G 传送的电视节目了 |
接收者U 能够收到由组播源S 发往组播组G 的组播数据了 |
4 |
用户U 关闭电视机或切换到其它频道 |
接收者U 离开组播组G |
14. 组播技术应用
· 多媒体、流媒体的应用,如:网络电视、网络电台、实时视/音频会议;
· 培训、联合作业场合的通信,如:远程教育、远程医疗;
· 数据仓库、金融应用(股票);
· 其它任何“点到多点”的数据发布应用。