IP组播主要涉及各组播协议的各主要功能配置与管理方法。“组播路由器”也是对运行组播路由协议的三层交换机和路由器的总称。
IP组播基础
随着Internet的发展,网络中信息交互模式出现很多符合点对多点的模式,对信息安全性、有偿性、网络带宽提出了较高的要求。如视频点播等。
IP组播通信指的是IP报文从一个源发出,而被转发到一组特定的接收者。
一、IP网络的3种数据传输方式
IPv4协议定义了三种IP数据包的传输方式:单播(unicast)、广播(broadcast)和组播(multicast)。
1、单播方式的数据传输过程
单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点传输方式。采用单播方式时,系统为每个需求该数据的用户单独建立一条数据传输通路,并为该用户发送一份独立的副本数据。——因为是IP协议的单播报文,所以目的地址是单个的IP地址,而不是其他什么地址,如MAC地址。
如下图:
采用单播(Unicast)方式时,系统为每个需求该信息的用户单独建立一条数据传送通路,并为该用户发送一份独立的拷贝信息。由于网络中传输的信息量和需求该信息的用户量成正比,因此当需求该信息的用户量庞大时,网络中将出现多份相同信息流。此时,带宽将成为重要瓶颈,单播方式较适合用户稀少的网络,不利于信息规模化发送。
2、广播方式的数据传输过程
广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式。如果采用广播方式,系统会为网络中所有用户传送一个数据副本,不管它们是否需要,任何用户都会接收到广播来的数据。
如上图,用户B不需要信息,也接受到了。
3、组播方式传播数据
单播方式适合用户较少的网络,广播方式适合用户需求普遍相同的网络。但当网络中需求某数据的用户量不确定时,单播和广播方式效率很低,而且广播方式安全性差,无法控制数据的发送。
IP组播技术的出现及时解决了以上问题,也是一种点对多点传输方式。当网络中的某些用户需要特定数据时,组播数据发送者(即组播源)仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发。
二、组播基本概念
组播传输的特点是一点发出,多点接收。
在组播通信中,需要理解以下几个重要的基本概念。
1、组播组:用组播IP地址进行标识的一个集合,是一个组播成员的集合,各组播成员共享这一个组播组IP地址。组播成员自己在IP协议中配置的IP地址不是组播IP地址,仍是单播IP地址。任何用户主机(或其他接收设备),加入一个组播组就成为了该组成员,可以识别并接收发往该组播组的组播数据。——这样的主机相当于有两个IP地址,一个是单播IP,一个是组播IP。
2、组播源:以组播组IP地址为目的地址(组播源配置的也是单播IP地址),发送IP报文的信源称为组播源。但组播源通常不需要加入组播组,否则自己接收自己发送出去的数据了。一个组播源可以同时向多个组播组发送数据,多个组播源也可以同时向一个组播组发送报文。
3、组播组成员:所有加入某组播组的主机便成为该组播组的成员。组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
4、组播路由器:支持三层组播功能的路由器或三层交换机(它们不是组播组成员)。组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。
三、典型IP组播模型
根据对组播源处理方式的不同,IP组播模型有下列3种:ASM(Any-Source Multicast,任意源组播)、SFM(Source-Filtered Multicast,过滤源组播)和SSM(Source-Specific Multicast,指定源组播)。
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的基础上添加了组播源过滤策略。——这里的过滤是组播上层应用软件的功能,在上面的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(Internet Assigned 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为IP单播预留私有地址网段10.0.0.0/8、172.16.0.0 - 172.31.255.255、192.168.0.0~192.168.255.255等类似,IANA也为IP组播预留了私有网址网段239.0.0.0/8(也就是这个地址段中的组播地址可以在局域网内使用)。这些地址属于管理范围地址,可以灵活地定义组播域范围,实现不同组播域之间的地址隔离,有助于相同组播地址在不同组播域内的重复使用而不会冲突。
2、二层以太网组播MAC地址
以太网传输单播IP包的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播包时,传输目标不再是一个具体的接收者,而是一个成员不确定的组,所以对应也就需要使用组播MAC地址作为目的地址。——组播的最终目的还是接收者主机,在以太网中,最终还是需要转换为MAC地址,应为组播是一组主机的地址,所以,MAC地址也需要是一种组地址,就是组播MAC地址。
IANA规定,组播MAC地址的高25位固定为0000 0001 0000 0000 0101 1110 0,形成MAC地址25位前缀,MAC地址的低23位为组播IPv4地址的低23位。它们之间的映射关系如下图(组播IPv4地址中的低23位映射到组播MAC地址的低23位)
IANA规定,组播MAC地址的高25位固定为0000 0001 0000 0000 0101 1110 0,形成MAC地址25位前缀,MAC地址的低23位为组播IPv4地址的低23位。它们之间的映射关系如下图(组播IPv4地址中的低23位映射到组播MAC地址的低23位)
IPv6组播MAC地址的高16位为0x3333,低32位是从IPv6组播地址的低32位映射过来的。如下图IPv6组播地址FF1E::F30E:101的MAC地址映射:
也就是说,组播IP地址确定了,相应的组播MAC地址也就确定了。
五、IP组播协议
要实现一套完整的组播服务,需要在网络各个位置部署多种组播协议相互配合,共同运作。不同结构的组播网络所需使用的组播协议不完全一样。
● IGMP(Internet Group Management Protocol)在接收者主机和组播路由器之间运行,该协议定义了主机与路由器之间建立和维护组播成员关系的机制。
● 组播路由器之间运行组播路由协议,组播路由协议用于建立和维护组播路由,并正确、高效地转发组播数据包。
● 对于ASM模型,可以将组播路由分为域内和域间两大类。
● 域内组播路由协议用来在自治系统AS(Autonomous System)内发现组播源并构建组播分发树,将信息传递到接收者。域内组播路由协议包括: DVRMP、 MOSPF、 PIM。
● DVRMP是距离矢量组播路由协议(Distance Vector Multicast Routing Protocol)是一种密集模式协议。该协议有跳数限制,最大跳数32跳。
● MOSPF是OSPF路由协议的扩展协议。它通过定义新的LSA来支持组播。
● PIM(Protocol Independent Multicast)是典型的域内组播路由协议,分为DM(Dense Mode)和SM(Sparse Mode)两种模型。当接收者在网络中的分布较为密集时,适用DM;较为稀疏时,适用SM。 PIM必须和单播路由协议协同工作。
● 域间组播路由协议用来实现组播信息在AS之间的传递。
● MSDP(Multicast Source Discovery Protocol)能够跨越AS传播组播源信息。
● MPBGP (MultiProtocol Border Gateway Protocol)的组播扩展MBGP (Multicast BGP)能够跨越AS传播组播路由。
● 对于SSM模型,没有域内和域间的划分。由于接收者预先知道组播源的具体位置,因此可以借助PIM SM的部分功能直接创建组播传输路径。
下图是一个典型的单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需要结合SSM Mapping技术才能支持SSM模型。
在IPv6组播中使用MLD协议来替代IGMP协议,也是一种三层组播协议。MLD包含两个版本,分别是MLDv1和MLDv2。MLDv1的功能与IGMPv2相似;MLDv2的功能与IGMPv3相似。两个MLD版本都支持ASM模型;MLDv2可以直接支持SSM模型,而MLDv1需要结合SSM-Mapping技术才能支持SSM模型。
2、IGMP Snooping和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(MultiProtocol Border 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域的组播源数据。