计算机应用研究
APPLICATION RESEARCH OF COMPUTERS
2000　Vol.17　No.2　P.41-44



基于ATM的IP组播
冯继明　梁俊勇
摘 要 介绍了IP组播和ATM组播及当前在ATM网络中实现IP组播的方法，讨论了IETF的基于ATM的IP组播的优点与不足，描述了一个用ATM网络传输多路MPEG-I视频信号的应用。
关键词 IP ATM 组播 MPEG 组播地址解析服务器 组播服务器
1 概述
　　组播，即允许将同一数据流同时发送给一组用户，这有利于减轻网络和服务器的负载。在过去的几年中，我们已经看到在网络中使用组播的显著发展，特别是一些实时应用，Internet Mbone就是一个很好的例子，目前在局域网和城域网中更高的带宽，更低的时延又促进了高质量的组播应用的发展。这使我们看到了在广域网上使用TCP/IP协议实现真正的信息高速公路的希望。
　　网络中同时传送多路视频信号需要很高的带宽(大约2 Mbps以上)，广泛认为ATM主干网将为提供所需的带宽发挥重要的作用。但是ATM面向连接的特点在组播传输中又带来了新的问题，而在Ethernet等共享介质的网络中则是不存在这些问题的，因为共享介质的网络的链路层是自然支持组播的。虽然基于ATM的面向连接的组播应用易于开发，但在ATM上实现IP组播却遇到了问题。
　　本文中，我们比较了IP组播和ATM组播的不同，介绍了在ATM网上传输IP组播的方法Internet Engineering Task Force(IETF)的IP Multicast over ATM。
2 IP组播和ATM组播比较
　　组播，即将数据同时传送给一组用户，它无疑是网络中非常有价值的服务。在共享介质的网络中，组播是很容易实现的，因为共享介质的网络在链路层就自然支持组播，这是因为共享介质的网络，如Ethernet在链路层是以广播的方式传输数据的。但是ATM中实现的技术仍然是不成熟的。ATM组播服务就是将网络层的组播映射为ATM所支持的一对多的VC虚电路。要定义这种服务就必须充分考虑目前网络层IP组播和ATM组播的区别如表1。
表1 IP组播和ATM组播的区别
IP组播ATM 组播
双向单向
多对多一对多
无连接面向连接
无特定的组UNI 4定义的组
　　第一，IP组播是双向的，支持多对多通讯，这一点对网络视频会议应用特别有用。在ATM中，由于AAL5不允许在同一连接上插入属于其它AAL5包的信元，所以，如果AAL5收到多余的信元，AAL5包就不能被重组。ATM组播被描述为一个树结构，以发送者为根，接收者为叶结点。在允许双向组播的情况下，由叶结点发出的ATM AAL5包中的信元就会被根结点收到，如果这些信元被插入由根结点发出的AAL5包中，组播信息就不能被重组。在ATM AAL3/4中，可以用MID(Multiplex IDentifier)来标识组播组的各成员发出的包，以解决信息插错问题，由于AAL 5简单、易于实现，在ATM组播中多采用AAL5。在将来，支持多对多的VC连接的ATM将解决这一问题。支持多对多的VC连接的ATM基于多对多的连接的VP，每个结点有唯一的VCI标识。 但在目前，仍需要其它方法来支持传输IP组播的多对多连接。
　　第二，一个相关的问题是关于组播成员。在IP组播中，由于在链路层以广播方式传输数据，一个组播组中的组成员可以是网络中的任何一台机器，而发送数据的机器并不需要知道哪台机器是属于哪个组播组，甚至可以没有一个特定的发送者，组中的任何成员(甚至不是组中的成员)都可以发送数据。由于组播组之外的用户也可以接收到数据，这种方式带来了一些安全方面的问题，这个问题可以由应用程序加密解密来解决。在基于ATM UNI 3.0/3.1的组播中，在实际发送数据之前需要建立从发送方到接收方的一条一对多的VCC连接。发送者，即树结构中的根必须先知道所有的接收方，这些限制在UNI 4.0中就不存在了。在UNI 4.0中,由叶结点初始化组播组，用户可以随时加入到一个已经存在的组播组的一对多的VCC中。为了保证根结点能知道哪些叶结点被允许加入组播组中，保证哪些组播组会话是有效的,在组播中仍需要一些安全机制来检查组播组成员的合法性和有效性。
　　第三， 两种组播技术的另一个区别在于组播地址。在网络层协议中包括组地址的概念，例如IP协议的D类地址，而基于UNI 3.0/3.1 的ATM并没有这样的概念。然而UNI 4.0和ATM组地址的出现改变了这种情况，提供了一种方法进行一组网络地址于ATM地址之间的映射。 
3 基于ATM的传统IP组播扩展：MARS & MCS
　　使用ATM传输网络层组播的服务无疑是非常重要的。1994年以来IETF一直致力于寻求一种可行的解决方案。本文所描述的是基于IP 的解决方案，但是这种体系结构也可以被扩展用于其它网络层协议。这种方案在ATM网络中定义了两种新的实体：Multicast Address Resolution Server(MARS：组播地址解析服务器)与 MultiCast Server(MCS：组播服务器)。MARS提供地址解析服务，MCS用来建立与组播组成员的多对多连接。
　　在一个ATM网络中，一系列能在彼此之间建立直接VC连接(VCC)的设备称为簇(CLUSTER)，对于IP协议来说，一个簇称为一个逻辑IP子网(LIS?Logic IP Subnet)。簇之间的所有通讯则通过连接各簇的设备进行，如支持组播的IP路由器。MARS是在RFC1577中定义的ATM-ARP服务器的扩展，与ATM-ARP服务器中维护的单播（一对一）的地址映射表不同，MARS中的地址映射表是一对多的。每一个参加组播环境中的机器在加入和离开某一组播组时都通过MARS注册，并可以查询MARS得到组播组成员的信息，进行通信。
　　目前，有两种方法建立多对多连接，两者都是基于一对多的VC连接。
　　第一种被称为VC MESH。这种方法要求每一台加入组播组的机器（主机或路由器）都建立一条连接各目的地址的一对多的VC连接，并通过MARS来获得组播组成员的信息。
　　第二种被称为MCS方式，加入组播的机器建立一条连接MCS的一对一的VC连接，组播组成员发出的数据到达MCS，由MCS通过与组播组成员的一对多的VC连接转发到该组播组的所有成员 。这种方式下，仍需要MARS来进行地址注册，地址解析。
　　两种方式各有利弊。
　　●VC MESH方式与MCS方式相比的好处在于高吞吐量和低时延，这是因为在MCS方式下，需要由MCS对数据进行重组、转发。
　　●在VC MESH方式下，比MCS方式较少出现阻塞现象。由于在MCS方式下，组播组成员之间的通讯都通过MCS进行重组、转发。这样MCS的速度就直接影响整个组播组的通讯速度，容易形成系统瓶颈。MCS的故障会导致组播组不能正常工作。
　　●在VC MESH方式下，要求建立大量一对多的VC连接，因为组播组中的所有成员都要建立与其它成员之间的一对多的VC连接。这样就大量占用组播组成员的系统资源。在MCS方式下，每个组播组成员只需建立两条VC连接：一条来自MCS的一对多VC连接；一条通向MCS的一对一VC连接。
　　●在组播组成员发生改变时，VC MESH方式下，所有组播组成员都必须更新自己的一对多VC连接，影响系统效率。在MCS方式下，只需更改相关用户与MCS之间的VC连接即可。
　　●若ATM网络中存在多个组播组，在VC MESH方式下，会存在一些额外的开销。例如，在ATM网络中，存在组播组ZA、ZB以及结点D1、D2。D1、D2同时属于组播组ZA、ZB。那么，在D1和D2之间就会存在一对属于ZA的一对多VC连接和一对属于ZB的一对多VC连接，从而造成系统资源冗余、浪费。在MCS方式下，就不存在这样的问题，只需在MCS与D1、D2之间建立一条一对多的VC连接即可解决VC MESH方式下的这一问题 ，采用VC多路复用技术以降低系统开销。
　　网络层的组播技术使用D类IP地址（224.0.0.0至239.255.255.255）来确定一台加入特定组播组的主机。在网络中，要想加入某个组播组，必须先向地址224.0.0.1发送一个加入组播组的请求JoinLocalGroup，224.0.0.1是专用于Internet组成员协议(IGMP:Internet Group Membership Protocol)的保留地址，就可以开始接收IGMP报告。下一步，这台主机就向所希望加入的组播组地址（D类IP地址）发送JoinLocalGroup的请求。希望接收组播信息的主机都要产生IGMP报文，并且通过组播发送给特定组播组的其它成员。在这种情况下，路由器必须能接收这种组播报文，并将其转发到该结点所在的子网。在转发过程中使用的协议通常为DVMRP(Distance Vector Multicast Router Protocol)或 PIM(Protocol Independent Multicast)。路由器也使用地址224.0.0.1检测所有组的服务状态，并周期性地向各个组播组发送IGMP查询报文，这个查询报文可以被所有结点接收，那些仍然希望保持组成员身份的结点或者希望加入组播组的结点就响应以一个IGMP报告信息，这样，可以实现组成员的动态加入和动态离开。
　　以上是网络层的组播的过程，在ATM网络中的相应的功能是由MARS实现的。MARS是在ATM结点（Router,PC或工作站）上运行的一个进程，MARS是ATM-ARP服务器的一个发展。在实际的网络中，这两种功能通常共存于同一个平台之上。通常是由一台路由器为某个LIS提供ATM-ARP服务的，那么在两个或者多个组播组边界的路由器需要运行多个MARS进程，如果可能的话，还应该有一个备份的MARS。
　　MARS与ATM结点之间建立了一条一对一的VC连接，ATM-ARP请求/应答都是通过这一条VC连接进行的。另外MARS到特定组播组的各个成员有一条一对多的VC连接，被称为ClusterControlVC，用来检测组成员的加入和离开。
　　ATM结点进行组播通信的过程如下：
　　1)连接、加入组播组
　　首先，在ATM结点与MARS之间建立一条一对一的VC连接。并通过这条VC连接向地址224.0.0.1发出JoinLocalGroup请求。MARS接收到JoinLocalGroup请求，就会更新ClusterControlVC，将该客户作为组播树结构的叶结点，并分配一个CMI（组成员ID：Cluster Membership ID）。这时，ATM结点就成为该组播组的一个成员（图1）。一个ATM结点可属于多个组播组。

图1　连接到MARS的组播组用户
　　在每一个组播组中， MARS负责将该客户的地址通过ClusterControlVC通知组内的其它结点，并且将相应的D类IP地址加入ARP表中。然后：
　　VC MESH方式下：
   组中的其它结点在其一对多的VC连接中加入一个叶结点以连接新加入的结点。在新结点第一次发送数据的时候查询MARS，根据得到组播组的成员列表与其它成员之间建立一对多的VC连接。
　　MCS方式下：
　　新加入的结点与MCS之间建立一条一对一的VC连接，MCS根据新加入的结点的信息将其加入到自身到组播组成员之间的一对多的VC连接中。
　　2) 组播数据通信
　　VC MESH方式下：
　　组播组中的某个结点要与其它结点进行组播通信，该结点可以利用自身与其它结点之间的一对多的VC连接，发送接收数据。
　　MCS方式下：
　　在MCS方式下，由MCS向组播组中的成员转发数据。MCS与所有组播组成员之间建立了一条一对多的VC连接。另外，在MCS与MARS之间建立了一条ServerControlVC，MCS利用这条VC向MARS查询某个组播组中的所有成员的信息。MARS则利用这条连接查询一个簇中的可用的MCS。每一个的端结点都只有两条VC连接用于数据通讯。
　　●与MCS之间的一条一对一的VC连接，用于端结点发送组播数据。
　　●MCS与组播组成员之间的一条一对多的VC连接，用于向组播组成员转发组播数据通信。
　　组播组中的某个结点要与特定的组播组进行组播通信，该结点需要通过自身直接相连的MCS向MARS查询，得到为该组播组转发数据的MCS的地址，而不是该组播组成员的地址。源结点通过一对一的VC连接将组播数据发送给MCS，再由MCS通过与组播组的各成员之间的一对多的VC连接将组播信息转发到组中的各个成员，从而完成组播数据通信过程。
　　在LIS之间的IP组播通信则是通过允许IP组播的路由器转发的(图2)。

图2　簇间的路由
　　在MCS方式下进行组播通信，存在这样一个现象：如结点N属于组播组A，如果N向组播组A进行组播，N发出的包又会被N接收到。为了解决这一问题，组播组中的结点在接收数据时判断数据包中的CMI，以决定是否丢弃该数据包。
　　MCS方式下的组播通信如(图3)所示，在一个簇中可以同时存在多个MCS，这样可以提供更好的灵活性、可扩展性和可靠性。

图3　组播组中的多个MCS
　　3) 退出组播组
　　一个结点想要离开所属的组播组，该结点发出LeaveLocalGroup请求之后，MARS更新相应组播组成员信息。在组播组内：
　　VC MESH方式下：
　　组播组中的其它结点更新与组播组成员之间的一对多VC连接 ，将其离开的结点从VC连接中删除。
　　MCS方式下：
　　MCS只需更新与组播组成员之间的一对多的VC连接即可：将离开结点从连接中删去。
　　在ATM组播中有一个潜在的问题，就是ROUTER- IGMP现象。在允许广播的网络中，路由器将IGMP查询请求发送到组地址到224.0.0.1，这种方式在ATM网络中效率不高。在ATM组播网络中，MARS负责回答关于组播组用户信息的查询，这和对IGMP查询请求的应答是相同的。
　　另一个问题在于VC MESH方式下所要求的连接数。如上所述，这种方式要求组成员结点的大量资源并且在组成员发生变化时需要更新组成员之间的所有一对多的VC连接，这就给ATM网络中的交换机带来了沉重的负担，这极大地限制了组播组成员的个数。在基于ATM的IP网络中一种倾向就是取消IP地址的层次性而使用平面地址(Flat address)，即在一个子网中可以有2,000个用户，这2,000个用户不能组成一个组播组。他们通常被分为50到100个用户的小组。因此，组播的需要在ATM网络中的地址规划时需要考虑的一个重要因素。
　　以上的模式可以被扩展以使组播信息能跨越传统的LAN段和ATM LIS。例如，路由器在其LAN网络接口上收到一个组播信息，就按照上述的方法将其转发到ATM网上。另外有一个工作在"Promiscuous"模式（即属于所有的组播组）的允许组播的ATM路由器将接收这些包并将它们由LAN网络接口转发出去,这样使用TCP/IP的局域网就可以通过高速的ATM网络传送组播信息。
4 在基于ATM的IP 组播的应用：视频点播系统(VOD)
　　有时组播系统并不要求多对多的连接，这样可以由每个用户来维护组播组的信息，而不需要MARS。一个典型的例子就是网络视频点播系统。在图4中所示，该系统由一个视频源和若干用户组成，用户通过路由器连接到ATM网络。在视频数据源的每一个频道都对应一个IP组播组而该组又被映射到一个到各个网络用户的ATM一对多的VC连接。用户通过某种机制发出JOIN请求，申请接收某个频道。视频数据源接收到请求后，就将该用户加入相应的一对多的VC连接。
　　具体过程如下：(如图4)

图4　使用基于ATM的IP组播的视频点播系统
　　●用户使用IGMP JOIN请求通知路由器想接收的频道。
　　●组播组结构中处于叶结点的路由器请求根路由器发送所要求的频道。
　　●路由器通知ATM交换机向一对多的VC连接增加叶结点。
　　●VOD开始通过ATM网发送组播数据。
5 结束语
　　本文介绍了ATM网络中实现IP组播的方法：IETF的基于ATM的IP组播的优点与不足。简要描述了一个用来ATM网络传输MPEG-I组播视频信号的应用OD。基于ATM的IP组播将会成为Internet上的一个有着广阔前景的新型服务。
冯继明（武汉大学计算机科学与技术学院 武汉 430072）
梁俊勇（武汉大学计算机科学与技术学院 武汉 430072）
参考文献
1，Jeremy Barnes, Dave Ginsburg, Dave Newson et al. IP Multicast of Real-time MPEG over ATM.Computer Network and ISDN Systems, 1996, 28:1929～1937
2，张宏科, 裘正定. ATM网络互联原理与工程. 北京: 清华大学出版社
收稿日期：1999年3月12日
