IP组播在一些多用户定向发送的网络应用中使用非常普遍,如远程多媒体会议、远程教学、视频点播、定向电子商务,以及ISP的IPTV(网络电视)等。学好IP组播基础知识及配置与管理方法,对网络管理员来说非常必要。
IP组播就像IP单播一样是一个相对独立的领域,涉及的知识面非常广。所包含的协议也非常多,如三层的IGMP、MLD、PIM、MSDP、MBGP和IGMP SMM Mapping等,二层的有IGMP Snooping、IGMP Snooping Proxy、MLD Snooping、MLD Snooping Proxy和IGMP SMM Snooping Mapping等。本章先单独介绍与IP组播相关的基础知识,组播路由和转发原理、各种IP组播协议的主要功能及工作原理,以及各种组播协议的主要应用。
IP组播基础
随着Internet的发展,网络中交互的各种数据、话音和视频信息越来越多,同时新兴的电子商务、网上会议、网上拍卖、视频点播、远程教学等服务,大多符合点对多点的模式,对信息安全性、有偿性、网络带宽提出了较高的要求。
作为IP传输3中方式之一,IP组播通信指的是IP报文从一个源发出,而被转发到一组特定的接收者。相较于传统的单播和广播,IP组播可以有效节约网络带宽、降低网络负载。
一、IP网络的3种数据传输方式
IPv4协议定义了三种IP数据包的传输方式:单播(unicast)、广播(broadcast)和组播(multicast)。通过对三种包传播方式比较式介绍,可以看到组播方式的优越性。
1、单播方式的数据传输过程
单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点传输方式。采用单播方式时,系统为每个需求该数据的用户单独建立一条数据传输通路,并为该用户发送一份独立的副本数据。
如下图:
假设用户C(HostC)需要从数据源(Source)获取数据,则数据源必须和用户C的设备建立单独的传输通道。由于网络中传输的数据量和要求接收该数据的用户量成正比,因此当需要相同数据的用户数量很庞大时,数据源主机必须要将多份内容相同的数据发送给用户。这样一来,网络带宽将成为数据传输中的瓶颈,不利于数据规模化发送。
2、广播方式的数据传输过程
广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式。如果采用广播方式,系统会为网络中所有用户传送一个数据副本,不管它们是否需要,任何用户都会接收到广播来的数据。
如上图,假设用户A、c需要从数据源获取数据,则数据源通过路由器广播该数据,但这时网络中本来不需要接收该数据的用户B也同样接收到该数据,这样不仅信息的安全性得不到保障,而且会造成同一网段中信息泛滥。该传输方式不利于与特定对象进行数据交互,并且浪费了大量的带宽。
3、组播方式传播数据
单播方式适合用户较少的网络,广播方式适合用户需求普遍相同的网络。但当网络中需求某数据的用户量不确定时,单播和广播方式效率很低,而且广播方式安全性差,无法控制数据的发送。
IP组播技术的出现及时解决了以上问题,也是一种点对多点传输方式。当网络中的某些用户需要特定数据时,组播数据发送者(即组播源)仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发。
如上图,假设用户A、C需要从数据源获取数据,为了将数据顺利地传输给真正需要该数据的用户,需要将用户A、C组成一个接收者集合(就是组播组),由网络中各路由器根据该集合中各接收者的分布情况进行数据转发和复制,最后准确地传输给实际需要的接收者A和C。
综上,相比单播传输方式,组播传输方式由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。相比广播传输方式,组播传输方式由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性。
二、组播基本概念
组播传输的特点是一点发出,多点接收。如上图,网络中存在信息发送源Source,感兴趣的用户HostA和HostC提出信息需求,Source发出的数据只有HostA和HostC会接收到。
在组播通信中,需要理解以下几个重要的基本概念。
1、组播组:用组播IP地址进行标识的一个集合,是一个组播成员的集合,各组播成员共享这一个组播组IP地址。相当于iStack堆叠和CS集群中,各成员交换机共享使用同一个管理IP地址一样。但要注意,组播成员自己在IP协议中配置的IP地址不是组播IP地址,仍是单播IP地址。任何用户主机(或其他接收设备),加入一个组播组就成为了该组成员,可以识别并接收发往该组播组的组播数据。
2、组播源:以组播组IP地址为目的地址(组播源配置的也是单播IP地址),发送IP报文的信源称为组播源。但组播源通常不需要加入组播组,否则自己接收自己发送出去的数据了。上图中的Source就是一个组播源。一个组播源可以同时向多个组播组发送数据,多个组播源也可以同时向一个组播组发送报文。
3、组播组成员:所有加入某组播组的主机便成为该组播组的成员。如上图中的HostA和HostC。组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
4、组播路由器:支持三层组播功能的路由器或三层交换机(它们不是组播组成员),如上图中的各个Router。组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。
三、典型IP组播模型
根据对组播源处理方式的不同,IP组播模型有下列3种:ASM(Any-SourceMulticast,任意源组播)、SFM(Source-Filtered Multicast,过滤源组播)和SSM(Source-SpecificMulticast,指定源组播)。
1、ASM模型
简单说,ASM(任意源组播)模型就是任意源都可以成为组播源。由此可知,ASM模型中的组播源是不限定的,任意一个发送者都可以成为组播源,然后向某组播组地址发送数据,显然安全性较差。接收者通过加入对应的组播组就可以获得发往改组播组的任意组播数据,而且接收者无法预先知道组播源的位置,但可以在任意时间加入或离开该组播组。
为提高安全性,可以在路由器上配置针对组播源的过滤策略,允许或禁止来自某些组播源的报文通过。最终从接收者角度看,数据是经过筛选的。
ASM模型中组播组可以使用的组播IP地址为224.0.1.0~231.255.255.255、233.0.0.0~238.255.255.255。但要求组播组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM组播组地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组播组地址发送数据,它们的接收者会同时收到来自两个源的数据。这样一方面会导致网络流量拥塞,另一方面也会给接收者主机造成困扰。
2、SFM模型
SFM(过滤源组播)模型继承了ASM模型,从发送者角度来看两者的组播组成员关系完全相同,也可以是任意组播源。但是,在SFM模型中组播上层应用软件可以根据收到的组播包的源IP地址进行过滤,允许或禁止来自某些组播源的包通过。这样一来,接收者就可以只接收允许通过的组播源发送来的组播数据。即SFM在ASM的基础上添加了组播源过滤策略。
3、SSM模型
现实生活中,用户可能只对某些组播源发送的组播数据感兴趣,而不愿接收其他源发送的数据。SSM(指定源组播)模型就是一种为用户提供能够在客户端指定组播源的传输服务。
SSM模型与ASM模型的根本区别在于:SSM模型中的接收者已经通过其他手段预先知道了所需接收组播数据的组播源的具体位置,限定了可接收的组播源。然后,SSM模型使用与ASM/SFM模型不同的组播组地址范围(为232.0.0.0~232.255.255.255)直接在接收者和其指定的组播源之间建立专用的组播转发树。
四、IP组播地址
由于组播数据的接收者是一个组播组内的多个主机,因此,需要面对数据源该将数据发往何处、目的地址如何选取的问题,就是组播寻址。与单播中的IP寻址或者MAC寻址一样,为了让组播源和组播成员进行通信,需要提供网络层组播地址,即IP组播地址。同时必须存在一种技术将IP组播地址映射为链路层MAC组播地址。
注意:不要认为在IP组播中所有组播设备上的IP地址都是使用组播地址。实际上只有组播组IP地址是组播IP地址,而像组播源、接收者主机的IP地址仍是单播IP地址。
1、三层组播IP地址
根据IANA(InternetAssigned Numbers Authority,因特网编号授权委员会)规定,IP地址分为五类:即A类、B类、C类、D类和E类。单播包按照网络规模大小分别使用A、B、C三类IP地址。组播包的目的地址使用D类IP地址,D类地址不能出现在IP包的源IP地址字段(也就是不能作为组播源地址,换言之,组播源的IP地址仍是单播地址)。E类地址保留以后使用。
在单播数据传输过程中,一个数据包传输的路径是从源地址路由到目的地址,利用“逐跳(hop-by-hop)”的原理在IP网络中传输。然而在IP组播环境中,数据包的目的地不是一个,而是一组,形成组地址(可理解为所有接收者的单播地址与一个组播组地址形成了映射关系)。所有的数据接收者都加入一个组内,并且一旦加入之后,流向该组地址的数据立即向接收者传输,组中的所有成员都能接收到数据包,这个组就是“组播组”。
组播组具有以下几个特点
(1)组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。
(2)组播组可以是永久的也可以是临时的。
(3)由IANA分配组播组地址的组播组称为永久组播组(又称保留组播组)。
对于永久组播组,要注意以下几点:
(1)永久组播组的IP地址保持不变,但组中的成员构成可以发生变化。
(2)永久组播组中成员的数量可以是任意的,甚至可以是零。
(3)那些没有保留下来供永久组播组使用的IP组播地址,可以被临时组播组使用。
D类组播地址范围是224.0.0.0~239.255.255.255,其中包括了很多地址,但不同地址段有不同用途,如下表,记住这个表中各个组播段的使用范围相当重要,这样就不会在配置组播网络中错误的使用了不该在特定环境下使用的组播地址。
根据IANA的约定,224.0.0.0~224.0.0.255网段地址被预留给本地网络中的路由协议使用,如下表说明:
与IANA为IP单播预留私有地址网段10.0.0.0/8等类似,IANA也为IP组播预留了私有网址网段239.0.0.0/8(也就是这个地址段中的组播地址可以在局域网内使用)。这些地址属于管理范围地址,可以灵活地定义组播域范围,实现不同组播域之间的地址隔离,有助于相同组播地址在不同组播域内的重复使用而不会冲突。
2、二层以太网组播MAC地址
以太网传输单播IP包的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播包时,传输目标不再是一个具体的接收者,而是一个成员不确定的组,所以对应也就需要使用组播MAC地址作为目的地址。
IANA规定,组播MAC地址的高25位固定为0000 00010000 0000 0101 1110 0,形成MAC地址25位前缀,MAC地址的低23位为组播IPv4地址的低23位。它们之间的映射关系如下图(组播IPv4地址中的低23位映射到组播MAC地址的低23位)
由于IPv4组播地址的高4位是1110,代表组播标识,而低28位中只有23位被映射到MAC地址,这样IP地址中就会有5位数据丢失,直接的结果是出现了32(2的5次方)个IP组播地址映射到同一组播MAC地址上。
IPv6组播MAC地址的高16位为0x3333,低32位是从IPv6组播地址的低32位映射过来的。如下图IPv6组播地址FF1E::F30E:101的MAC地址映射:
五、IP组播协议
要实现一套完整的组播服务,需要在网络各个位置部署多种组播协议相互配合,共同运作。不同结构的组播网络所需使用的组播协议不完全一样。
下图是一个典型的单PIM域组播网络示意图,整个组播网络是由路由器或三层交换机+二层交换机组成的。
从图中可以看出在这些组播设备上运行的组播协议包括PIM(协议无关组播,同时由IPv4和IPv6版本)、IPv4网络的IGMP(因特网组管理协议),IPv6网络中的MLD(组播监听器发现)、IPv4网络的IGMP Snooping(因特网组管理协议嗅探),IPv6网络中的MLD Snooping(组播监听器发现嗅探)。
下图12-7是一个跨PIM-SM域的组播网络示意图,与上图所示的单PIM域组播网络相比,在运行的组播协议上仅需在PIM域边界组播路由器上多了一个实现跨PIM域连接的MSDP(组播源发现协议)。而12-8是一个跨AS域组播网络示意图,与12-7所示的跨PIM域组播网络相比,在运行的组播协议又仅需在AS边界组播路由器上多了一个用于不同AS组播连接的MBGP(组播边界管理协议)。
1、IGMP和MLD
在IP组播传输模型中,发送者不关心接收者所处的位置,只要将数据发送到约定的目的地址,剩下的工作就交给网络去完成。网络中的路由器设备必须收集接收者的信息,并按照正确的路径实现组播报文的转发和复制。
接收者信息的收集和管理的工作通过IGMP(InternetGroup Management Protocol,因特网组管理协议)或MLD(Multicast Listener Discovery,组播监听器发现)协议来完成的。其中,IGMP用于IPv4网络,MLD用于IPv6网络。用于为主机侧提供组播组成员动态加入与离开服务,为路由器侧提供组成员关系的维护与管理服务,同时与上层组播路由协议进行信息交互。
IGMP包含3个版本,分别是IGMPv1、IGMPv2和IGMPv3。新版本完全兼容旧版本。目前应用最广泛的是IGMPv2。在组播模型方面,3个版本都支持ASM模型;IGMPv3可以直接支持SSM模型,而IGMPv1和IGMPv2需要结合SSMMapping技术才能支持SSM模型。
在IPv6组播中使用MLD协议来替代IGMP协议,也是一种三层组播协议。MLD包含两个版本,分别是MLDv1和MLDv2。MLDv1的功能与IGMPv2相似;MLDv2的功能与IGMPv3相似。两个MLD版本都支持ASM模型;MLDv2可以直接支持SSM模型,而MLDv1需要结合SSM-Mapping技术才能支持SSM模型。
2、IGMPSnooping和MLD Snooping
IGMP Snooping和MLD Snooping协议是运行在组播路由器和用户主机之间的二层交换机上的二层组播协议,配置在VLAN内。其中,IGMP Snooping用于IPv4网络,MLD Snooping用于IPv6网络,用来侦听路由器和主机之间发送的IGMP、MLD报文建立组播数据的二层转发表,从而管理和控制组播数据在二层网络中的转发。
3、PIM和MSDP
组播报文转发路径的建立,有多种组播路由协议可以完成。目前应用广泛的是PIM(Protocol Independent Multicast,协议无关组播)协议。PIM是一种域内组播路由协议,当跨PIM域传递组播源信息时,需要MSDP(Multicast Source Discovery Protocol,组播源发现协议)支持;当跨AS域建立组播路由时则同时需要MSDP和MBGP(MultiProtocolBorder Gateway Protocol,组播边界网关协议)支持。
PIM是用于IPv4或IPv6组播网络中域内组播路由器之间的组播路由与转发,用来在自治系统AS内发现组播源并构建组播分发树,将信息传递到接收者。在一个小型网络中,所有的组播路由器都在一个PIM组播域内。他可以动态响应网络拓扑变化,维护组播路由表,并按照路由表项执行转发。PIM有两套独立的模式:
(1)DM(Dense Mode):适用于小规模、接收者分布较为密集的情况,支持ASM模型。
(2)SM(Sparse Mode):适用于大规模、接收者分布较为稀疏的情况,同时支持ASM模型和SSM模型。
如图12-6,为了便于控制和管理组播资源(组播组、组播源和组播组成员),需要将组播资源在域间进行隔离,从而形成一个个隔离的PIM-SM域。图12-7所示为跨PIM-SM域的组播网络。由于PIM协议依赖于单播路由表,所以组播转发路径与单播转发路径是一致的。当组播源与接收者分布在不同的AS中时,需要跨AS建立组播转发树,如图12-8.此时可以部署MBGP协议,生成一张独立于单播路由的组播路由表,使组播数据通过组播路由表进行传输。
MSDP目前仅用于IPv4组播网络中域间组播路由器之间的域间组播源信息共享,但只对ASM服务模型有意义。它可以实现源所在域内的路由器将本地源信息传播给其他域内的路由器,以及不同域的路由器之间传递源信息。为了使不同的PIM-SM域之间组播数据能够互通,需要在域间部署MSDP协议。MSDP通过在各个PIM-SM域之间建立MSDP对等体关系,对等体之间交互SA(Source Active,源激活)消息来传递组播信息,从而实现接收者主机可以接收其他PIM-SM域的组播源数据。