- 1 -
中国科技论文在线
P2P 即时通讯的发布/订阅系统的设计与实
现
邹雯*
作者简介:邹雯 女 硕士研究生 计算机应用技术多媒体方向. E-mail: zouwen630@
(北京邮电大学电子工程学院,北京 100876)
摘要:随着多媒体网络时代的来临,基于主题的文本信息的发布/订阅系统由于形式单一已
经逐渐不能满足企业及个人的需求。在发布/订阅系统的基础上研究多媒体技术,实现基于
主题的多媒体发布/订阅系统,可以满足用户多元化的需求,因此有着非常广阔的应用前景。
本文致力于基于 DDS 标准的多媒体发布/订阅系统设计,提出了基于 Open DDS 实现
RTC/RTCP 协议的可行性方案;并且以 P2P 即时通讯为例,在 Windows 上使用 C/C++语言,
实现了多媒体信息的订阅和发布。
关键词:多媒体技术;发布/订阅技术;RTC/RTCP 协议;P2P
中图分类号:TP319
Design and Implementation of the Publish/Subscribe System
On the P2P Instant Messaging
Zou Wen
(Electronic Engineer School,Beijing university of Posts and Telecommunications, Beijing
100876)
Abstract: As the era of multimedia network coming, and the modle of the text publish/subscribe
system is monotonous, it can't satisfy the demand of the enteprise and individual. So the
implementation of the multimedia publish/subscribe system based on the topic will produce wide
application prospect. This paper focuses on the design of multimedia publish/subscribe system and
proposing the feasible plan to realize RTP/RTCP protocol in OpenDDS. And take the implementation
of P2P instant messaging for example, the mulitimedia information publishing/subscribing is realized
in the Windows platform by using the C/C++ programing language.
Key words: Multi-Media technology; Publish/Subscribe system; RTC/RTCP protocl; P2P
0 引言
与传统的通信机制相比,发布/订阅通信机制具有异步、节点动态加入、传输效率高、
容错性强、扩展性好、多点通信等众多特点,使通信的参与者在空间、时间和控制流上实现
完全解藕,提供了异步、匿名和一对多通信的模式,能很好地满足大规模、高动态的分布式
系统的需要[1]。随着 Internet 网络的广泛应用和信息传输技术的快速发展,早期,在银行、
证券、制造业企业的信息化等多个领域,已经有很多成熟的基于主题的文本信息发布/订阅
系统产品,但是基于主题的多媒体发布/订阅系统却尚未发现有成熟的案例。
然而,人们对信息的最直接有效的获取途径是视觉和听觉,所以 Internet 上的传输内容
已逐渐由单纯的文字传输转变成为包含视频、音频的多媒体数据传输,实现网络中的视音频
流式传输和实时语音、视频通信已经成为人们迫切需求的网络应用,这样,多媒体技术就应
运而生了。多媒体技术不仅使 Internet 使用者能获得更为丰富多样的信息,同时也代表着多
媒体网络时代的来临。它的出现极大的丰富了人们的各项活动,带动了一大批新兴产业,给
人们的工作、生活和娱乐带来了巨大的变革[2]。所以,在发布/订阅系统的基础上研究多媒体
- 2 -
中国科技论文在线
技术,实现基于主题的多媒体发布/订阅系统,将产生广阔的应用前景。
1 DDS 标准与多媒体技术
DDS 标准与 O pen DDS
实时系统的数据分发服务(Data Distribution Service, DDS)是对象管理组织(OMG)颁
布的国际中间件标准,用于分布式实时系统的发布/订阅通信。它的目标在于促进分布式系
统中数据高效、可靠地分发[3]。DDS 规范标准化了分布式实时系统中数据发布、传递和接收
的接口和行为,定义了以数据为中心的发布/订阅机制,规范使用 UML 语言描述服务,明确
定义了数据分发服务的通用应用层端口,利用网络中间件技术完成实时通信系统的通信需
求,提供了一个平台无关的数据模型,从而可以映射到多种具体实际的平台和编程语言中[4]。
DDS 规范关键点之一就是标准化了用于创建分布式应用的底层通信模型和应用程序编
程接口(API),并详细描述了两个层次的接口,低层是数据为中心的发布/订阅(Data-Centric
Publish and Subscribe, DCPS)层,高层是数据本地重构(Data Local Reconstruction, DLRL)
层[5],如图 1-1 所示:
图 1-1 DDS 规范总体框图
OpenDDS 是对象管理组织(OMG)数据分发服务(DDS)的 C++开放源码实现。使用
ACE(Adaptive Communication Environment)提供跨平台环境,实现了 DDS 标准中的以数
据为中心的发布/订阅(DCPS)层。
OpenDDS 实现的 DCPS 层包括一个或多个域,如图 1-2 所示,域主要由数据写入者、
数据读入者、发布者、订阅者及全局数据空间的信息仓库几个对象组成。一个域代表一个通
信范围,只有同一个领域的发布者和订阅者才能交互。
实时应用
传输平台
数据重组层 DLRL
DDS 规范
数据发布订阅层 DCPS
- 3 -
中国科技论文在线
图 1-2 DCPS 层域内实体关系图
每个发布者都有一个与之关联的数据写入者,当数据通过适当的数据写入者与发布者通
信时,发布者负责发布数据写入者所描述的数据类型的数据;当发布者与数据写入者关联时
就形成了一个发布。订阅者负责接收发布的数据并使数据能被接收方的应用程序所使用,能
接收并分发不同类型的数据。为了访问接收到的数据,应用程序必须使用和订阅者相关联的
数据读入者;当订阅者与数据读入者关联后就形成了订阅。主题将发布和订阅联系在一起:
发布方在 DDS 中间件上发布一个主题后,订阅方可以根据主题来订阅发布方发布的信息;
中间件信息仓库通过检查发布方和订阅方的主题和 QoS 是否匹配,决定是否在发布方和订
阅方建立连点对点连接。
P2P 即时通讯技术
P2P(peer-to-peer)点对点又称为对等互联网络技术,该技术 OpenDDS 是对象管理组
织(OMG)数据分发服务(DDS)的 C++开放源码实现。使用 ACE(ACE 依赖于网络中用
户的本地计算机的计算能力,用户可以直接连接到另一用户的计算机进行通讯,而不是把任
务都集中在较少的几台服务器上,用户需要连接到服务器才能通讯。所以,P2P 把权力交给
了用户,改变了互联网以服务器为中心的状态,减少了对服务器的依赖性。通俗地说,P2P
将人们直接联系了起来,让人们可以在互联网上互相直接通讯,使得网络上的沟通变得更加
直接、更加便利。
2 多媒体发布/订阅系统的设计
Open DDS 的可插拔传输层
OpenDDS 实现是基于对 OMG 平台相关模型(PSM)交互式数据语言(IDL)的严格解释。
在大多数情况下,用 OMG 实现 CORBA/IDL 的 C++语言定义 DDS 规范中的 IDL 如何成为
C++应用程序编程接口(APIs),这些接口对用户开放。
OpenDDS 使用 DDS 标准定义的 CORBA 接口来初始化及控制服务的使用。数据传输经
由 OpenDDS 特有的可插拔传输层完成,该传输层允许使用 TCP、UDP、可靠多播和不可靠
多播传输等一系列传输协议的服务。传输经由代理对象创建,并且与使用它们进行传输数据
的发布者和订阅者相关联。同时,可插拔传输层还允许使应用开发者实现自定义的协议[6]。
- 4 -
中国科技论文在线
如下图 2-1 所示:
图 2-1 OpenDDS 可插拔传输架构
RTP/RTCP 协议
RTP/RTCP 协议族[7]由两个相关的协议构成:RTP(Realtime Transfer Protocol)用于数
据传输,位于 UDP 协议之上,在功能上独立于下面的传输层(UDP)和网络层,但不能单
独作为一个层次存在,通常是利用低层的 UDP 协议对实时视音频数据进行组播或单播,从
而实现多点或单点视音频数据的传输;RTCP(Realtime Transfer Control Protocol)用于统计、
管理和控制 RTP 传输,RTP 的控制协议,负责监视网络的服务质量、通信带宽以及正在进
行的与会者会话上传递的信息,单独运行在底层协议上。在网络层次中,RTP/RTCP 被划分
在传输层,是一种应用型的传输层协议;在网络传输过程中,RTP/RTCP 不处理连接建立工
作,其下层网络既可以是有连接的,也可以是无连接的。RTP 用于数据封装时的情景如图
2-2 所示。
图 2-2 RTP 数据封装
多媒体发布/订阅系统的架构设计
OpenDDS 的数据传输经由 OpenDDS 特有的可插拔传输层完成,该传输层允许使用一
系列传输协议的服务。如今,OpenDDS 已实现了 TCP、UDP、可靠多播和不可靠多播传输。
传输经由代理对象创建,并且与使用它们进行传输数据的发布者和订阅者相关联。同时,可
数据(净荷类型)
数据(净荷类型)
数据(净荷类型)
数据(净荷类型)
RTP 头
RTP 头UDP 头
RTP 头UDP 头 IP 头
应用层 应用层
DCPS层 发布者
QoS
DCPS层 订阅者
QoS
可插拔数据传输
可插拔传输
传输 工厂
可插拔传输
传输 工厂
TCP UDP 其他
- 5 -
中国科技论文在线
插拔传输层还允许使应用开发者实现自定义的协议。所以,通过可插拔传输层可以实现流媒
体传输。下图是多媒体发布/订阅系统的架构设计。
图 2-3 多媒体发布/订阅系统架构的设计
发布者发布流媒体主题信息,订阅端订阅流媒体主题信息,当发布端与订阅端的主题匹
配后,发布端与订阅端即可建立连接,发布端的视音频数据通过 RTP/RTCP 层的封装,通
过 OpenDDS 可插拔层使用 TCP/UDP 协议传输给订阅端。
3 P2P 即时通讯发布/订阅系统
系统的方案设计
随着宽带网络的普及,改变了传统网络通讯的质量和形式,人们对网络通讯要求不再只
是局限于普通文字,利用视音频通信可以让天各一方的人实时感受到对方的音容笑貌。视音
频通信研究就是为了满足发布者和订阅者之间进行 P2P 即时通讯的需要,发布者作为被动
接受他人视频通信的一方,而订阅者作为主动请求视频通信方,则发布者发布 P2P 即时通
讯的主题,订阅者订阅;当主题匹配成功,若订阅者请求通信,发布者接受请求,则发布者
和订阅者之间就可以通过摄像头和扬声器进行 P2P 即时通讯[8]。
发布者选择发布视音频通信类型的数据时,将主题的一些基本描述、发布者的 IP 地址、
欲发布的视音频通信名称等信息,通过代理层提供的与数据库信息交互服务,存入数据服务
- 6 -
中国科技论文在线
层的分布式数据库中;当数据服务层的信息仓库的发布/订阅流媒体主题匹配成功之后,代
理层接受匹配事件;订阅者收到代理层转发而来的匹配事件,获取视音频通信需要的发布者
IP 地址、视音频通信名称等信息,通过这些信息可以实现订阅者与发布者之间视音频通信。
此功能的研究关键在于:发布者发布视音频通信类型的主题时,必须开启对订阅者请求
通信的监听,当监听到请求时,发布者则与订阅者进行 P2P 即时通讯。同样类似于一个
Server-Client 模型,发布者作为服务器 Server 端,订阅者作为客户 Client 端,当 Server 端监
听到 Client 端的服务请求,则向 Client 端提供服务,此时的服务为视音频通信。因此,可以
借鉴如今一些比较成熟的视音频通信技术作为解决方案。
利用 Microsoft DirectShow 应用程序开发包,将视音频的采集和发送通过 TCP 传输,控
制命令通过 UDP 传输,视频、音频、文字的传输分别设置为启用不同的线程,互不干扰。
当发布者发布视音频通信类型的主题时,提供发布者 IP 地址、视音频通信名称信息,同时
监听之后主题匹配的订阅者的视音频通信请求;然后,数据代理层与数据终端层进行信息交
互,同样的信息在数据代理层与数据服务层之间交互,在数据服务层的信息仓库中进行发布
/订阅主题的匹配;代理层接受匹配事件向订阅者转发,订阅者收到匹配通知,则通过匹配
事件信息(发布者 IP 地址和视音频通信名称),请求服务器端的视音频通信;至此,发布
者就与订阅者建立连接,即可进行视音频通信[9]。
系统的功能模块
图3-1是基于DDS的规范标准的系统功能模块图
图 3-1 系统的功能模块图
下面通过描述各模块的功能,来说明系统如何实现 P2P 实时视音频通信的数据分发:
发布模块,用于获取发布信息(发布视音频通信主题的发布者 IP 地址和视音频通信名
称),这些信息将发往系统的主题匹配模块进行缓存以待匹配;若主题匹配成功,接收主题
匹配模块的匹配事件通知,当匹配事件为 P2P 即时通讯主题时,则发布者开启监听视音频
通信请求;
订阅模块,用于获取订阅信息(包含一些基本信息和用于匹配的限制信息),这些信息
同样将发往系统的主题匹配模块进行缓存以待匹配;若主题匹配成功,接收主题匹配模块的
匹配事件通知,当匹配事件为 P2P 即时通讯主题时,则订阅者向发布者发送视音频通信请
求;
- 7 -
中国科技论文在线
主题匹配模块,用于基于主题的发布/订阅匹配,并将匹配成功的事件信息向发布模块、
订阅模块发送;根据用户要求,使用相应的匹配规则和算法对发布/订阅文件主题的名称、
QoS 等内容进行精确匹配、模糊匹配或范围匹配;如果两者信息匹配,就将包含基本主题信
息和主题特有信息发送给对应的发布模块、订阅模块;
P2P 即时通讯模块,用于发布者与匹配的订阅者进行 P2P 即时通讯;当发布/订阅主题
匹配成功后,发布者、订阅者均接收到匹配事件信息,根据信息发布者监听视音频通信请求、
订阅者请求视音频通信连接,发布者响应建立连接,发布者则与订阅者进行 P2P 即时通讯。
4 P2P 即时通讯发布/订阅系统的具体实现
系统的工作流程图
如图 4-1 所示的发布/订阅视音频通信主题流程图,左边为视音频通信主题发布者流程
图,右边为订阅者的流程图。
图 4-1 发布/订阅视音频通信主题流程图
- 8 -
中国科技论文在线
系统的操作界面和流程
下面是依照上述工作流程图实现的 P2P 即时通信发布/订阅系统。
发布 P2P 即时通讯主题的消息时,进入相应类型主题的发布界面(如图 4-2),填写发
布该主题所需的相关信息,除了主题名称、发布单位、QoS 等级等一些发布主题的基本信息
外,还包括发布者 IP 地址、视音频通信名称等属于视音频通信主题的特有信息[10];
图 4-2 发布视音频通信主题的界面
订阅视音频通信主题时,进入相应类型主题的订阅界面(如图 4-3),填写各类限制信
息后发送订阅主题(其中发布和订阅主题操作是完全独立,彼此互不影响);
图 4-3 订阅视音频通信主题的界面
- 9 -
中国科技论文在线
发布/订阅视音频通信类型的主题时,同样需要发布者和订阅者双方同时连接代理才能
进行 P2P 即时通讯;发布者与代理连接时,代理向发布者返回发布主题的相关信息,发布
者则开启视音频通信监听端口,等待订阅者的视音频通信请求;当订阅者与代理连接时,代
理将匹配订阅主题的相关信息发送给订阅者,其中包含该匹配主题的发布者 IP 地址、视音
频通信名称等,订阅者则可向发布者请求视音频通信(如图 4-4);
图 4-4 视音频通信界面
发布者和订阅者双方建立连接后,发布者与订阅者就可以通过摄像头、麦克风进行 P2P
即时通讯,整个系统功能全部实现。
[参考文献] (References)
[1]HUANG Gang, WANG Qian-Xiang, MEI Hong, YANG Fu-Qing. Research on Architecture-Based Reflective
Middleware. Journal of Software, 2003, 14(11):1819-1826.
[2]PARDO-CASTELOTE G. OMG Data-Distribution Service (DDS): Architectural Overview. Proceeding of the
23 rd International Conference on Distributed Computing Systems Workshop,2003[C],[.]:[.],2003:200-206.
[3]Cugola G, Nitto ED, Fuggetta A. The JEDI event-based infrastructure and its application to the development of
the OPSS WFMS. IEEE Trans. on Software Engineering, 2001,27(9):837-850.
[4]Eugster PT, Felber PA, Guerraoui R, Kcrmarrcc AM. The many faces of publish/subscribe. ACM Computing
Surveys, 2003, 35(2): ll4-131.
[5]Object Management Group. Common Object Request Broker Architecture: Core Specification Version
[OL]. (2004-3-1)[2007-11-5].
[6]P. T. Eugster, R. Guerraoui, and F. Sventek. Distributed asynchronous collections: Abstractions for
publish/subscribe interaction. In Proceedings of the 14th European Conference on Object-Oriented Programming
(ECOOP 2000), volume 1850 of Lecture Notes in Computer Science, pages 252–276. Springer-Verlag, June 2000.
[7]Professor Ben Lee, Benjamin Hacker, Michael Meeuwsen, and Kevin Molskness, “Protocols for Media
Streaming Over IP Networks,” October 2002
[8]李国辉,涂丹,张军等著.《多媒体通信网络》.人民邮电出版社.2010 年
[9] “Mirror Image Pioneers Next Generation of Content Delivery: New Web Computing Suite Offers e-Businesses
a Smarter Way to Use Content to Create a More Engaging Web Experience,”
[10] Colin Perkins, USC Information Sciences Institute, “RTP: Multimedia Streaming over IP”