1. 引言 



       即时通信系统是随着互联网的出现而兴起的新型通信手段。即时通信已经成为继电话、电子邮件之后的第三种现代通信方式。即时通信系统作为一种低成本的、集成多种沟通方式 ( 如即时消息、视音频,文件传输 ) 为企业进行内外联系、提高工作效率、降低沟通成本、拓展商业机会等方面发挥了巨大的作用。
      
目前许多企业的工作人员,利用 QQ MSN GTalk  等即时通信软件,进行业务沟通与交流,但是由于 QQ MSN GTalk  等即时通信软件是处于开放网络环境下一种公共服务,因而它在为企业用户提供协作支持的同时,也带来了来自网络安全相关问题,存在影响工作 效率甚至信息安全隐患。主流 IM 系统在企业应用中的不足主要存在以下几个方面:
(1)
不能适应企业网络环境
       QQ
MSN GTalk 在用户验证、通讯、离线消息处理等过程中都高度依赖 Internet 网络接入条件,而国内企业部门的内部网络和 Internet  的很多通讯端口是被关闭的。
(2)
不能与企业现有的 OA 相结合
      
公共 IM 系统为扩大用户规模,其设计的功能通用性比较强,但往往无法兼顾一些企业特殊应用环境中的具体需求。
(3)
不能满足安全性要求
      
目前主流 IM 在身份认证、信息传输、信息记录等安全性设计方面还不能满足企业部门使用 IM 通讯进行商业活动的要求。
(4)
对多协议通讯的支持不够
      QQ
MSN GTalk  IM 软件由于各开发商的商业目的考虑,使用各自的协议和标准,在用户和数据传输上都无法实现互联互通。

2.企业级通信平台的需求

      本节针对上节所描述的问题,以整体解决方案方式阐述了包括了网络模型的选择、网络协议的实现和服务器端、客户端等组件的设计和开发。该系统的设计目的是实现一个企业级实时通信平台,致力于帮助企业提高运作效率、降低沟通成本、拓展商业机会。

2.1 系统功能性需求

      系统提供了音/视频通信、即时消息通信和文件传输等基础功能,使企业用户可以在此基础上根据自身企业的规范和需求定制业务能力,完成模块化的客户端定制。企业级通信系统提供业务能力包括:即时消息、语音及视频通信、文件传送、多媒体会议、电子白板、应用程序共享、企业通讯录、企业门户、办公助理、自定义web  浏览器、文件加密、短消息互通、网络流量监控、远程桌面控制和邮件收发等丰富的业务功能。

2.2 系统非功能性需求

      作为企业单位内部员工安全、简便的办公和沟通平台,企业通信平台需要保证数据通信的即时性以及通信过程和信息存储的安全性,为企业单位的使用者提供信息安全保障,同时减少系统资源的消耗,保证系统运行的低故障率。在设计开发时需要考虑以下五点:
(1)
数据通信完整性
(2)
通信安全性
(3)
通信效率
(4)
系统快速响应
(5)
系统稳定性

2.3 平台特点

       企业通信平台在语音、视频、数据、文本等媒体流结合的基础能力上设计并扩展了符合下一代网络规范的、能够运行于基于IP  的下一代网络之上,提供众多业务功能,并具备开放性特点,能够灵活集成企业办公系统,是一个针对企业业务的数字化综合通信平台。
(1)
企业级系统架构设计,让企业用户可以根据自身的实际组织架构自由定义部门结构和用户结构
(2)
与企业现有的办公OA 系统无缝连接,完成与企业信息流的集成
(3)
采用实名制用户注册,可以以用户的×××和工作证的唯一编号作为ID
(4)
平台具有良好的安全性和可靠性,在数据通信中,采用消息加密机制,确保信息在各个通路之间中的传输安全

3. 企业级通信平台的设计

        系统整合了传统的客户端/服务器网络组织模式和P2P 网络模式 ,设计了基于中心服务器模式的P2P 网络模型结构 ,在客户端与服务器建立连接完成以后,通讯在用户友间直接进行,从而大大减轻了服务器端的负荷。其网络结构如图1 所示:

 企业级网络通信系统网络结构分布

3.1 服务器端设计

       服务器端的最小子集由三台服务器程序组成,分别为:主服务器、信息查询服务器和信息中转服务器。最小子集所包含的多个服务器实质上均为独立的应用程序,每个服务程序可以单独运行在相互独立的计算机上,也可以运行在同一台计算机上,在逻辑上构成一个统一的服务器端。可以根据企业的服务器增加视频服务器、文件服务器和邮件服务器。三个服务器之间通过TCP 连接建立通讯链路。客户端和服务器之间采用TCP 协议实现网络通信。在整个服务器框架中,可以根据负载情况通过级联方式,动态地增加主服务器,信息查询服务器,信息中转服务器的数量。客户机之间采用UDP  协议实现网络通讯,企业内部的服务器端与客户端信系统如图2 所示:

                       2 企业级网络通信系统服务器端物理结构

主服务器其主要功能有:
(1) 监听来自客户端的合法登陆请求;
(2)
和客户端建立TCP 连接,维持客户机在服务器上的状态;
(3)
监听来自管理模块的登陆请求;

信息中转服务器其主要功能有:
(1) 接受客户端中转文件的请求,为客户端中转文件包;
(2)
必要时中转两个或多个客户端的文字信息;

信息查询服务器其主要功能有:
(1) 接受用户身份验证;
(2)
接受客户端查询、读写数据库的请求并执行;

3.2 客户端设计

       客户端按照需求分析中的功能可划分为五个层次。分别为:网络通信层,协议解析层, 基础能力层,业务功能层,用户表示层。客户端系统的层次结构如图3 所示:

                      企业级网络通信系统客户端层次结构图

(1) 网络通信层
      
为上层提供网络支持,提供数据包发送的接口,并提供数据包的监听与数据包到达通知。针对本企业级通信平台所采用C/S P2P 混合模型的特点,通信模块与服务器之间采用TCP套接字,而与对等客户端之间的通信采用UDP 套接字。其主要功能如下:
A.
为客户端其他功能模块提供网络的底层连接;
B. 
建立与主服务器之间的TCP 连接,并提供消息的发送和监听; 
C.
建立本地监听的UDP 线程,并提供与其他客户端之间的消息发送和监听。


(2) 协议解析层
       
网络协议解析模块为下层的网络通信模块和上层的功能模块提供承上启下的接口。作为独立模块,它负责将上层的数据按照自定义的格式进行封包并提供给网络传输层,或是从网络传输层中得到通信包,按照自定义格式 进行解包,并将解包后所得到的数据提交给上层的应用。为此,该模块提供了一系列的封包和解包的函数接口,供其他功能模块调用,并与服务器协定了双方的通信协议规则。


(3) 基础能力层
      
实现统一通信系统的基本能力,向上层提供音视频通信能力、即时消息通信能力和文件传输能力,以及数据完整性检查和数据加密能力。
A.
即时消息通信模块:用于在客户间进行即时消息通信。包括在即时消息中各种消息包的解包与封包处理,消息通知与历史记录保存等。
B. 
文件传输模块:用于在客户间进行点对点的文件传输或由服务器中转传输。包括在文件传输中各种消息包的解包与封包处理,与服务器的通信,历史记录保存等。
C. 
视音频处理模块:用于在客户间进行视频、音频通信,以及音视频多播传输。包括视频   采集、压缩编码、发送、接收和回放等功能。同时负责处理视频和音频的二元同步。
 D.
数据安全模块:为保证数据的安全性 ,本系统选用数据加密后再传输的策略,同时也采用密文形式存储数据。密码算法采用了自拟的基于 Feistel 结构的算法设计,该算法由加密算法、解密算法和密钥生成三部分组成。


(4) 业务功能层
       
在基础能力层上构建一个集成的多媒体办公应用平台,提供语音会议、数据会议、视频会议、视频点播、用户登陆及状态控制、企业通讯录、好友列表、短消息互通、彩信、电子白板、应用共享、企业门户、办公助理、自定义 web  浏览器、网络流量监控、远程桌面控制和系统管理等丰富的业务能力。


(5) 用户表示层  
       
该层为用户交互模块,直接与用户进行输入输出的交互,为用户提供各种显示的视图及输入输出的接口。可以根据不同企业或机构的需求个性化自定义用户界面,以满足企业或机构的业务需要。

4. 关键技术及策略

4.1 RTP 包数据格式设计

       RTP 报文用于传送媒体数据,它由RTP 报头和数据两部分组成,RTP 数据部分称为有效载荷;RTCP 报文用于传送控制信息,以实现协议控制功能。RTP 报文和RTCP 报文将作为下层协议的数据单元进行传输。对于音视频来说,帧的设计是实现协议的核心之一。帧的格式也就决定了协议的主要内容和可以完成的功能。音视频信息流经过压缩编码后在前面加上一个 RTP  数据包头封装成RTP 包后再送交下层封装成UDP 包来发送。RTP/RTCP 本身设计了一套通用的帧格式,本平台根据系统要求对其作了增删,同时改变了某些帧的使用方式以满足实际的需要。简化后的RTP 包格式如图4 所示:

 4   简化后的RTP 包数据格式定义

4.2 RTCP 包数据格式设计

       RTP RTCP 配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。根据用户间的数据传输反馈信息,可以制定流量控制的策略。RTCP 协议一般是通过计算丢包率和抖动来进行流量的拥塞控制和网络监视。丢包率L:指在一段时间内,接收端丢失的数据包数N 除以本应收到的包数N2 -N1   
                                                                              
数学表达式为L=N /( N2 -N1 ) 
      
当丢包率小于某个阀值,表明这段时间内网络状况良好,服务器可以继续按目前的发送速率发送数据包,无须作任何的调整;如果丢包率L 大于某个阀值,表明当前的网络状况比较拥塞,服务器应放慢发送速度。
        
抖动S:指相邻的音视频包经过网络到达接收端的时延变化现象,量化为两个数据包在发送端的时间差TS2-TS1 与这两个数据包在接收端的时间比值Tr2-Tr1  
                                                                           
数学表达式为S=( Tr2-Tr1)/( TS2-TS1)
      
当抖动大于1 表示接收数据包延迟,说明网络状况比较拥塞,发送端应放慢发送速度;小于1 表示接收数据包超前,说明网络状况很畅通,发送端可以采取某种策略加快发送速度。本系统通过RTCP 包反馈的丢包率和网络延时来估测网络拥塞情况。对丢包率和延时分别设定经验阀值,如丢包率阀值设为q1=3%,往返延时阀值设为r1=300ms,当二者中有一个参数超过设定阀值时,就认为网络发生了拥塞,需要对发送速率调整。每一种RTCP 报文开始的32 位都有固定的格式,简化RTCP 的包,以减少发送和接收RTCP 报文时所需要的处理工作,简化后的RTP 包格式如图5 所示:

                          简化的RTCP 包数据格式定义

4.3 双缓冲区机制

      IP 网络是一个尽最大努力投递的网络,分组在传输过程中可能发生延迟。时延的变化会对接收端正确播放实时流造成一定困难。有效地改善包传输抖动的方法是在接收端设立缓存区,必须对数据进行缓存才交给上层进行处理。
     
本系统采用双缓冲链表进行数据的缓存。其工作原理是:建立两个队列,一个是PoolList 空闲的缓冲队列,用以接收存放数据;另一个是DataList,尚未处理的数据缓冲队列,等待处理。当网络接收端接收到一个包的数据,就从PoolList  队列头拿出一个缓冲,存放数据,然后将这个缓冲放入DataList  的适当位置等待上层程序的读取。上层程序从DataList  队列头拿出一个缓冲,读取数据,将读完的缓冲从重放回PoolList  的尾部,等待再一次地接收数据。 这样DataList  中的待读取包数据量随网络的抖动增加或减少,能够有效地避免抖动的发生。
并且在初始化时就已经确定了链表的大小,内存不会再有增量,避免了由于缓冲区引起的内存泄露。双缓冲区结构如图6 所示:

                              双缓冲区数据结构

4.4 视音频同步机制

      对于多媒体通信来说,同步可以划分为两种类型:流内同步和流间同步。 在本系统内,音频与视频流的流内同步实现比较简单,依据RTP 包头的序列号,将数据包在缓冲区内排序。对于流间同步,本系统由于采用简化了的RTP RTCP 协议对数据进行封包,去掉了RTCP 中的绝对时间戳。故采用的方法是在音视频流开始的时候,使用相同的timestamp,对音视频在某一绝对时刻,采集相应的数据,并打上相同的时间戳,以后的播放都以这个时间做基准时间来保证同步。由于音频的传输是连续的,并且一般来说不能丢失;而视频的传输是不连续的,并且允许丢失少数帧。本系统中以音频流为基准,对视频流进行控制。

5.总结

      本文主要对企业级即时通讯通信平台进行了研究,设计并实现了符合当前企业实际应用需求的企业级即时通讯通通信平台。研发过程必须花费大量的时间精力去完成,AnyChat音视频互动开发平台)是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准、AAC音频编码标准与P2P技术,整合了佰锐科技在音视频编码、多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量、宽适应性、分布式、模块化的网络音视频互动平台。企业通过佰锐提供的可扩展API接口,就可实现由企业自主定制业务逻辑,而通过服务器端的SDK,可以实现与第三方业务系统的集成,如OA系统、MIS系统,或是其它的管理系统等,不需要为AnyChat实现一套单独的用户系统。可将原始的音、视频数据(PCM、RGB、YUV)回调给上层应用,实现特殊的应用。随着应用的深入和推广,提高系统和企业部门的各种办公及业务系统的集成能力将是各企业需要解决的问题。

AnyChat下载地址: http://www.bairuitech.com/html/bairuixinwen/20120511/155.html

 

欢迎有兴趣的朋友加QQ:992139738