计算机工程
COMPUTER ENGINEERING
1999年 第25卷 第8期 Vol.25 No.8 1999



一个新型组播会话目录服务体系
舒南燕，方乐，白雪峰，徐公权
摘要：介绍分层媒体传输模型基础上的新型组播会话目录服务体系，可提高分层媒体传输中的信道带宽利用效率，并降低目录服务客户端的启动延迟。
关键词：组播；目录服务；分层媒体
New Architecture for Multicast Session Directory Service
Shu Nanyan,Fang Le,Bai Xuefeng,Xu Gongquan
(Center of CAD/CAI Multimedia Making,Fu Dan University,Shanghai 200433)
【Abstract】The concept of layered media is helpful to the situation in thqat scalability of real-time application remains challenged by the inherent heterogeneity of the underlying Internet.We propose a new architecture for multicast session directory service client.
【Key words】Multicast;Directory service;Layered media
　　近来借助于新型协议和工具，在 Internet 上实时组播 [1] 逐步成熟。实时组播是建立在一系列协议堆上的，协议堆的底部是 IP 组播协议，它提供有效的一对多数据传输。但目前的组播应用尚存在以下问题。 
　　(1) 各主机以不同速率连接在 Internet 上，导致了 Internet 底层固有的异构性，而 IP 组播服务不保证可靠传输，也不提供任何形式的阻塞控制。因此，基于一对多传输的组播服务需要有一定的控制机制以防止不合理的带宽使用－避免组播信息阻塞通向某些主机的慢速连接而另一些网段负荷不足。 
　　(2) 为了确保会话公告不占用过多的带宽，送往广域 Mbone 的会话公告的带宽被限制在 200b/s ，当会话发起方 25 个公告平均信息长度为 500B 的会话时，这种限制将导致单个会话的多次公告间隔时间达到十几到几十分钟。同时由于不可靠的组播，目录服务客户端必须等待 10-20 分钟才能看到某个会话公告。 
　　这是 Internet 上发展组播应用程序时不能回避的两个问题。在相当程度上，这两个问题的解决情况将影响组播应用在 Internet 上的推广。不仅需要有针对每个问题的解决方法，更需要在现有协议框架上综合考虑。 
1 背景知识 
1.1 分层媒体传输 
　　分层媒体传输是 Deering [2] 提出的一个端对端的解决方案，针对在底层异构的 Internet 上 IP 组播服务缺乏阻塞控制机制的问题。媒体分层的思想是：使用一个层次化的编码算法， 将源数据编码成一系列的层 l1 ,l2 ,..ln , 一个解码器在其余层缺失的情况下能将一个有序的层次子集 (l1 ,l2 ,..li ， 1<i<n) 解码。解码器端可用的层次越多，重组信号产生的扭曲就越少。最底层为 " 基层 " ，高层为 " 提高层 " 。每个层对应一个组播组。在基本的 IP 组播服务模型中，接受端加入或离开组播组接收不同的层，根据其本身能力调整它所受的服务。这种基本架构被细化为一种特殊的协议框架－接收端驱动分层组播 RLM(Receiver-driven Layered Multicast) 
1.2 scope －组播范围界定 
　　" 组播范围 " 是一种限制组播数据传播范围的机制。通过限制只在有管理意义的网络区域内传输公告信息，降低了传输带宽，同时在不同区域之间可复用有限的组播地址集，提高了网络的可扩展性。 
　　如何界定组播范围？ IP 组播服务模型提供两种机制。当 IP 组播最初建立时， IP 报文头里用来限制报文在路径上跳跃时间的 Time-To-Live(TTL) 域被用来限制区域。报文经过路由器时 TTL 域减 1 。当减少到 0 时，报文被丢弃。由于用户可能对网络的拓扑情况不是很了解，导致不能正确设置合适的 TTL ，因此 TTL 限制并不十分有效。另一种方法可以让网络管理员通过设置 TTL 阈值定义简单的管理区域。设置了 TTL 阈值的路由器将丢弃任何 TTL 域低于阈值的组播包。然而 TTL 界定方法缺乏灵活性，并且 TTL 界定方法与某些组播路由协议的交互性很差。所以 " 系统管理界定 " 被提出作为 TTL 界定的替代。 
　　在 " 系统管理界定 " 中，边界由组播地址而不是由 TTL 域来界定。网络管理员为该范围选择一系列地址，并在区域边界上配置所有的组播路由器，使路由器丢弃所有经过区域边界准备发往地址范围内地址的包。 
　　" 系统管理界定 " 的一个通常用法是圈定一个使用高速带宽连接的区域，使高速传输不会漏向较低速的网络。 
1.3 建立 IP 组播基础上的 SAP 
　　SAP-Session Announcement Protocol 服务公告协议。 SAP 使用会话公告模式，定期公告会话描述至一个共知的引导地址，公告中描述特定媒体流和特定组播地址的绑定。在客户端，会话目录工具维护一张表格，列出了所有近来通过 SAP 公告的会话描述。因为会话公告包括了启动实际应用所需的所有信息，当用户选择一个程序时，会话目录工具可以运行相应的应用，使用户从烦琐的命令行参数和地址处理中解脱出来。当会话目录工具收到一个描述时，定时器被设置。定时器超时后会话被删除。定时器时间大约被设定在几倍于公告间隔。正常操作时，一个激活的会话描述被定期的信息不断刷新。当一个会话过期或应用程序宣告其停止运行时，会话描述最终超时。使用该项技术的协议称为 " 公告 - 监听协议 " ，它不仅简单而且强壮，如果一个信息在网络上丢失，公告描述将被下一次传输的信息刷新，如果应用程序崩溃，公告会自动超时。 
　　SAP 及其补充地址分配算法依靠 " 组播范围 " 概念提高可扩展性。在每个管理界定的区域内，运行一个 SAP 实例。由区域边界上的组播路由器限制针对局部区域的会话公告只在该局部区域内发送，从而降低公告带宽，空间复用组播地址，同时也保证了主机只收到他们能够参与的会话的公告。 
　　SDP(Session Description Protocol)- 会话描述协议定义了一个标准格式，包括媒体信道描述 ( 媒体类型和格式，传输协议，网络地址和端口 ) ，时间信息和其他会话描述信息。 SAP 会话公告以 SDP 报文形式传播。 
2 一个新型会话目录服务体系 
2.1 新型会话目录服务体系及 " 代理 " 机制的引入 
　　媒体分层传输模型简单直观，但是其中的一些问题必须在具体实现中加以解决： 
　　首先是地址分配问题。使用该模型，会话目录服务必须公布媒体流在其上传输的一列组播组的地址。这些地址由会话发起方在创建会话时分配。一个直接的方法是为包括所有参与者的最小组播范围分配一块地址。但是会产生如图 1 所示的问题： 

图 1 多数据源的分层媒体接收端适应 
　　媒体流分两层，由某主机发起， R ， S1 ， S2 参加。两个组播地址代表两层数据流。若 R 没有针对单独数据源修剪流量的能力。 R 只能参加基层，否则从 S1 来的高速数据流将阻塞慢速连接。若 R 具有针对数据源的修剪能力， R 可以加入提高层传输而修剪掉由 S1 来的提高层。这样 R 接收由 S2 来的高速传输就不会阻塞与 S1 的链路。广而言之，如果所有传输的参与方共用一套组播地址，接收端必须有能力针对单独的数据源修剪流量。目前的组播服务模型不提供这种特性。而且至少若干年后，才能大规模地扩展 IP 组播服务使之有这种能力。 
　　其次， RLM 模型通过增加订阅的层定期试探未使用的带宽。这种试探是破坏性的，特别当接受方知道高带宽的提高层超过其与发送方的实际物理连接能力，而仍然做未使用带宽的试探，宝贵的带宽将浪费在超时重传上。这种情况类似于对一条建立在低速调制解调连接上的 TCP 连接，增大拥塞窗以至于超过 modem 线的实际物理能力。 
　　目录服务体系较好地解决上述两个问题。针对第一个问题，管理范围边界上的路由器将防止高速 " 提高层 " 流到管理范围外。针对第二个问题，由于已限定了不同速率媒体流的传输范围，接收端无需再做带宽的探测。但是，当前 Internet 会议创建体系并不支持这种地址分配方式。在当前的体系中，由会话发起方为媒体流分配所有的地址，而我们需要在本地管理范围内分配 " 提高层 " 地址。显然，一个会话发起方不可能为网络中每一个能使用 " 提高层 " 的局部管理范围分配所需的地址。为此，我们进一步引入 " 代理 " 机制，由会话发起方为其所在的管理范围分配 " 提高层 " 地址，而在远程区域，由 " 代理 " 代为在当地公告地址。 " 代理 " 机制的引入可解决地址分配问题，同时，比起其他方法，其优点在于： " 代理 " 可以由一个程序实现，能在其中实现一些其他的功能，解决目录服务中的其他问题。 
2.2 由 " 代理 " 支持分层媒体格式 
　　SDP 按最初的定义可以描述分层会话，并允许由多个 SDP 信息组成一个 SDP 负荷。当描述所有层不在同一范围内传输的分层会话时，需要多个 SDP 信息，并且 SDP 信息要提供相应的保障机制，当不同层传输到不同范围时，能够重组已分层的会话并正确公告。 
　　(l) 会话描述 
　　SDP 描述分层会话，要在媒体信道描述中确定一列连续地址作为将公告的区域。不连续的地址不能被描述。当会话的不同层被传播至不同的范围时，如果只用一个 SDP 信息，有两种情况可能发生：如果这时一个包含所有地址的公告在广域内被公布，所有接收者会看见提高层的地址，然而这些地址对于管理区域外的接收端并不有效，而在 IP 组播服务模型中，接收端难以确定是否和另一主机处于同一区域。所以，如果一个公告包含了提高层的地址，接收端不易确定提高层是否可用；相反，如果会话公告只在管理范围内传输，这样范围外的接收端不能看见对基层的公告，而这原本是应当被接收到的。所以要描述上述目录服务体系中的会话，须使用多个 SDP 信息。每个 SDP 信息中包含同一管理范围内的一列连续地址，但不包括不同范围内的地址。当使用 SDP 信息描述 SAP 公告时，信息在某个范围内公告，信息也在同一区域内组播。 
　　(2) 信息重构 
　　会话目录工具必须识别组成同一个公告的单独的 SDP 信息。这由 SDP 中的一个域 "o=" 保证。在每个会话中，对组成同一个公告的所有信息 "o=" 域设置得一样，客户端可以识别组成一个公告的所有信息。一旦相应的信息被接收到，还需 要启动相应的媒体工具重排信息。这由 SDP" 属性 "(attribute) 机制完成。 SDP 属性采用 " 名字：值 " 的规范形式。层属性句法如下： a = layers:<first> [-<last>][/<total>] 
　　 带括号的参数为可选。属性包含层数或一个层范围 ( 如 2 或 4-7) ，可选的是总层数。如果出现总数，则直到所有层地址被接收，一个公告才算完整。对一些分层传输方案，层总数无需对每个接收端都相同。在这种情况下，总层数不确定，如果到某个时刻的全部层都接收到，一个公告即被认为完成。也有可能一个或多个包含更高层地址的信息尚未到达，公告即被认为完成。所以在决定公告已经完整前，应用程序应该为可能到来的提高层等待一小段时间。 
　　(3) 代理完成缺失层的分配 
　　上述的 SDP 信息结构使会话公告代理有能力发现不完整的会话公告。当规定了会话总层数，而在本地范围内一些层未被分配时，在任何本地成员加入会话前，代理必须分配缺少的层。如果有很多类似的不完整会话组，为所有的会话分配地址会浪费组播地址。因为广域范围内公布的会话总数不多，可以暂时不考虑这个问题。可能的解决方法是在代理内部定义一种策略，决定哪些会话保留不完整状态。另外，可定义一种机制，让用户自己向代理表达对某个会话的兴趣，代理分配缺失的层，完整该公告来回应用户。 
　　对于未定义总层数的会话，问题比较难解决。一个会话无论何时都可被认为是完整的。但是如果局部参与者对会话有一定兴趣，一个代理不知道是否应该分配本地高带宽提高层。在实现中，可设置代理对每个会话具有一个目标层数。当遇到一个层数少于目标值的会话，另分配层使总层数达到目标数。 
2.3 由 " 代理 " 实现降低目录服务客户端启动延迟 
　　代理是人为实现的程序，在代理中实现其他的功能可以解决目录服务体系中的其他问题。 
　　如前所述，由于 SAP 公告所用带宽的限制，造成目录服务客户端较长的启动延迟。一种解决方法是在代理中加入 cache ，当代理监听所有的 SAP 公告时，它顺便维护一个 cache ，其中包括当前被公告的会话。当一个目录服务客户端启动时， cache 中的内容被迅速传播到客户端，而降低了客户端的启动时间。我们可以建立一条从客户端到 cache 的 TCP 连接实现会话目录客户端和 cache 间的通信。通过 TCP 通道传递所有的变化，如会话的创建，更新，超时等。对于少量客户端而言，这种解决方法是有效的，但是不易扩展到很多客户端的环境。对于很多客户， cache 必须承担同时维护许多 TCP 连接的重荷。由于所有的会话更新必须向所有的客户分别传输，到 cache 的带宽不能得到有效利用。 
　　更好的解决方法是在代理中引入由 Amir 提出的 " 软网 关 " 的概念。代理中 " 软网关 " 的实现如下所述：由软件实现两个 SAP 会话的协议实例，一个运行在全局 SAP 会话范围，一个运行在本地管理界定区域。前一个协议实例监听广域信道上的 SAP 公告，输出一个描述当前会话更新的列表，该列表作为后一个协议实例的输入。广域 SAP 信道上被接收的每个会话公告被该 " 软网关 " 在本地范围内重新公告。由于在本地区域内的带宽上限远高于广域范围内的上限，结果使得会话描述的发送更频繁，会话客户端的列表也被更快地更新。 
　　" 软网关 " 可以大大降低会话目录客户端的启动时间。假设总共有 N 个会话需要公告，平均长度为 size ，累计用于 SAP 的带宽为 bw ， SAP 信息由 UDP 包携带发送，而 UDP 不保证可靠发送。那么，在会话目录客户端在启动阶段，如果一个会话公告丢失，则客户端必须等到公告被重传。 n 表示会话目录客户端收到所有公告前预计需传输的公告数， p 为包独立丢失率。会话目录客户端接收到所有公告前预计的时间为： 

　　由于接收方要同时监听本地和广域的公告，其中参数 bw 是本地带宽加广域带宽 ( 固定为 200b/s) 。预计的目录工具启动时间与本地带宽的关系如图 2 所示。其中， N ＝ 30 ， size=500B ， p=0 。图中 SAP 带宽为 0 处对应没有 " 软网关 " 的情况，即客户端只在广域 SAP 信道上接收公告。由此可见，软网关使会话目录工具的启动延迟大大降低。 

图2 SAP带宽与会话目录启动时间
　　在没有软网关时，包丢失率是影响启动延迟的关键。因为在大多数情况下， " 软网关 " 和客户端之间的包丢失可以忽略不计，所以 " 软网关 " 相对于 TCP 连接有两个优点：提高带宽带来的更快的收敛，降低包丢失率带来启动延迟的降低。 
3 总结与展望 
　　底层的异构性是 Internet 上的组播应用程序必须注意的一个问题。本文在分层媒体基础上介绍的这种新的会话目录服务体系，避免了由于接收端不能针对数据源修剪流量和做无谓带宽尝试造成的性能下降，并且引入代理机制，实现会话公告的重播，大大降低了目录服务客户端的启动延迟。如前所述，代理机制为解决组播目录服务中的其他问题提供了空间。本文所述的目录服务客户端启动延迟的降低只是一个例子。代理中还可以实现其他功能。在未来的工作中，我们将讨论用户根据需要加入任意服务组合的可能性，进一步，讨论在代理中实现针对每个用户的组播服务质量的控制。总之，以代理为工具，解决组播应用程序在目录服务方面的问题，不断完善该目录服务体系将是我们今后工作的重点。 
　　Internet 上的组播应用是 Internet 上新出现的事物。由于 Internet 底层的异构性，组播服务比一对一的数据传输在流量控制等方面更复杂。如果还有大容量的多媒体数据传输，真正实现组播应用还需要更多的努力。本文所介绍的会话目录服务体系只是在这方面的一个尝试，希望能和大家探讨。 
作者单位：复旦大学CAD/CAI多媒体制作中心，上海 200433
参考文献 
1 Tanenbaum A.Computer Networks(Third Edition).U.S. ： Prentice Hall PTR, 1996 
2 Deering S. Internet Multicast Routing-State of the Art and Open Research Issues. Stockholm.: Multimedia integrated Conferencing for Europe (MICE) Seminar at the Swedish Institute of Computer Science, 1993-10 
