关键字:
导读:
本文以iSCSI协议为基础,对实时流媒体存储技术进行了探讨,设计实现了一个高性能的原型系统
1 引言
随着流媒体技术的发展,其应用范围在不断扩展。特别是在视频监控领域,高清网络摄像机的出现和发展,对实时视频流媒体的存储提出了新的挑战。
实时流媒体存储的主要特点是以“持续写入”为主,以“随机读出”为辅,与传统的广播电视音像资料存储系统和文件系统应用有着明显的区别。
基于网络的视频监控存储系统的存储介质主要由磁盘阵列和相应的控制系统组成,根据其结构,可分为直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)。
DAS是以服务器为中心的存储系统,在视频数量较多时,其响应能力下降比较严重,在大规模流媒体存储系统中很少采用。
NAS是直接连接在网络上的存储系统,是一种专用的存储服务器,通常采用CIFS和NFS协议,提供文件系统服务。NAS系统具有较好的网络共享能力,部署灵活,管理简单。但在大量网络并发传输持续数据时性能可能会显著下降。
SAN是一种专用的存储网络系统,提供统一的块级存储,所有存储设备可以集中管理,支持完善的冗余备份功能。SAN可以是交换式网络,也可以是共享式网络。FC-SAN的最大缺点是成本昂贵,限制了它的广泛应用。iSCSI的出现,提供了低成本SAN(IPSAN),促进了SAN的应用和发展。
网络视频监控系统对流媒体的存储需求特点可以概括为:大容量、高性能、高可靠性、部署灵活、低成本。研究表明,iSCSI性能要明显优于NFS/CIFS[1,2],采用iSCSI协议的IPSAN产品非常适合网络流媒体存储应用。
2 iSCSI简介
iSCSI(internet SCSI)[3]就是SCSI Over IP,将SCSI协议封装在IP数据包中,在IP网络上传输Block级I/O数据。目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用,ISCSI能够在LAN、WAN甚至internet上进行数据传送,使得数据的存储不再受地域的限制。
iSCSI协议定义了在TCP/IP网络上发送、接收Block(块)级的存储数据的规则和方法。ISCSI技术的核心是在TCP/IP网络上传输SCSI协议,用TCP/IP报文、iSCSI报文封装SCSI协议,使得SCSI命令和数据可以在普通以太网络上进行传输。iSCSI在以太网上传输的封装结构如图1所示。
iSCSI遵循SCSI协议的客户机-服务器体系结构,客户端称为Initiator(发起端),服务器端称为Target(目标端)。
发起端将SCSI命令和数据封装到TCP/IP包,经过网络传输,目标端收到TCP/IP包之后,将其解包获得SCSI命令和数据并执行,完成之后将返回的SCSI命令和数据封装到TCP/IP包中再传送回发起端。整个过程对用户是透明的,使用远端的存储设备就象访问本地的SCSI设备一样。
Initiator可以使用软件或硬件实现,通常以软件实现,作为操作系统内核驱动的一部分,使用现有网卡和网络协议栈,通过编程实现。Windows系统自带Initiator软件,Linux系统下存在多种开源的Initiator软件,包括Core-iSCSI、Open-iSCSI、UNH-iSCSI等。
iSCSI Target一般指专门的连接网络的数据存储设备,也可以是运行相应Target软件的通用计算机。现在有众多的存储设备提供商可以提供商用IPSAN设备,当然也有象Openfiler、UNH-iSCSI等构建在Linux系统上的开源iSCSI Target软件。作为研究用途,软件设计人员完全可以参考iSCSI RFC文档自行开发iSCSI Target软件[4,5]。
3 系统设计与实现
本文研究内容是在iSCSI设备上实现实时流媒体存储,如何实现iSCSI Initiator和Target不是本文关注的重点,因此,这里选用商用IPSAN设备和Open-iSCSI开源软件作为研究的基础。
在视频监控领域,目前主要存在两种使用iSCSI实现实时流存储的结构,分别是:
(1) 前端IP摄像机或编码器直接把码流写入IPSAN设备,如图2所示;
图2 前端IP摄像机直接把码流写入IPSAN
图3 流媒体服务器接收码流然后写入IPSAN
(2) 在后端使用服务器接收数字视频流,然后写入IPSAN,如图3所示。
第一种存储系统结构简单,节省后端服务器设备,但是要求前端设备实现存储管理,而且存储码流采用iSCSI封装,而实时监控码流一般需要使用RTP封装,必须传输至少两路码流,对前端设备的网络传输处理能力要求较高,对接入网的带宽需求较大。
第二种存储系统需要在后端使用流媒体存储服务器完成接收RTP流,然后封装成iSCSI流并写入IPSAN设备,对前端设备要求较低,前端设备只需要发出一个RTP组播码流,就可以同时为存储和实时监控服务,节省了前端接入网带宽。存储系统主要依靠后端设备完成,与前端设备的具体实现无关。
显然,由于一般前端接入网带宽有限,而后端局域网一般能够提供足够的带宽和较好的传输质量,第二种结构更适合大多数系统,本文采用第二种结构进行研究,并搭建如下的实现环境:流存储服务器系统硬件使用通用的PC服务器,采用SUSE11操作系统,采用MySQL数据库管理系统;前端使用H.264编码的网络摄像机,采用组播方式传输视频流,如图3所示。
系统主要由以下软件模块组成:
1、 摄像机信息管理:包括摄像机名称、组播组、码流类型、码流带宽等信息管理;
2、 存储计划管理:为每个摄像机制定存储计划;
3、 码流接收处理模块:根据存储计划和摄像机码流信息接收RTP数据流;
4、 存储模块:把接收的码流封装成iSCSI格式写入IPSAN设备。
5、 视频检索信息处理:生成检索信息,并写入数据库;
6、 回放和下载服务:接收用户回放或下载请求,并根据索引信息从IPSAN设备读出数据,封装到RTP数据包中发回请求者,请求者接收码流进行回放或下载保存;
7、 系统管理:系统管理模块用户信息管理、系统运行状态监控、日志管理等功能。
存储设备上视频数据的组织,不同于文件的随机读写,而是采取顺序读写方式,分块存储。系统在写满一个预定义数据块后,根据该视频数据流对应的摄像机的IP地址、写入本数据块的起止时间,自动生成一个块索引值,存储到数据库中。按照存储计划,存储到期后可依次覆盖原有视频数据。本系统利用iSCSI协议直接写磁盘块,规避了文件系统的工作机制,可以有效减少文件系统造成的磁盘碎片,提高磁盘空间的利用率。
4 实验分析
为了测试上述系统的性能,搭建以下实验环境:
网络状况:千兆以太网。
流媒体存储服务器:4核Xeon CPU,2GB内存,千兆网连接。
IPSAN存储设备:16TB硬盘,配置RAID5,千兆网连接。
网络摄像机:H.264 1080P编码,RTP组播传输,8Mbps码流带宽。
测试实时流:在另外一台服务器上使用码流转发服务软件转发50路8Mbps码流,模拟50路8Mbps实时流的环境。
对设备写入48小时后进行测试。
4.1 流媒体写入性能
使用iftop查看网络吞吐量,如图4所示,可以看到,从流媒体存储服务器(192.168.0.23)到IPSAN存储设备(192.168.0.114)的流量持续大于400Mbps。IPSAN设备在测试时间过去2秒、10秒、40秒的平均接收流量分别为418Mbps、419Mbps和420Mbps。这个数据与预期结果相符,可以认为50路8Mbps码流全部写入到IPSAN设备中。
图4 使用iftop查看网络流量
4.2 视频检索测试
使用测试程序分别对12小时、24小时、48小时、60小时和72小时的历史视频数据进行检索,响应时间分别为29ms、42ms、51ms、56ms和61ms,随着数据量的增加,检索时间也相应的缓慢增加。由于受测试设备存储空间限制,无法测试更长时间的数据,但是从图5的曲线可以推算,对于较大数据量,检索时间也在可承受范围之内。
4.3 视频回放测试
使用VLC软件通过RTSP协议对存储的视频进行播放,可见视频播放流畅、连续,没有中断,但偶尔存在少量马赛克现象,说明存在数据丢包现象。分析可能的丢包原因存在三个方面:实时流的网络传输丢包、存储丢包、回放过程的网络传输丢包。通过在流媒体存储服务器上使用工具软件抓包分析,发现实时流传输过程存在少量丢包现象。
上述结果表明,运行原型系统的一台服务器上能够满足50路8Mbps的高清视频流存储需求,其索引响应时间极短,可以满足一般系统需求。
图5 数据量和检索时间关系图
5 结束语
本文以iSCSI协议为基础,对实时流媒体存储技术进行了探讨,设计实现了一个高性能的原型系统,并进[5] 刘化君.物联网关键技术研究[J].计算机时代,2010,(7):4.
行了系统性能测试。测试结果表明,原型系统的存储和检索性能可以满足高清网络视频监控系统的需求。本文对于正在迅速增长的高清网络视频监控系统中的流媒体存储提供了很好的参考。
参考文献:
[1] 郭劲,李栋,张继征等.iSCSI,CIFS,NFS协议的性能评测[J].小型微型计算机系统,2006,27(5):833-836.
[2] 周敬利,徐锋,余胜生.Linux下基于iSCSI存储系统的实现与性能评测[J].计算机工程与科学,2004,(6):1-3.
[3] SATRAN J,METH K,SAPUNTZAKIS C,et al.Internet Small Computer Systems Interface[Z].RFC 3720,2004.
[4] 康剑斌,汪海山,屠升平等.基于流命令的SCSI目标端设计[J].计算机工程,2008,34(8):41-43.
[5] 贺再,张艳.嵌入式iSCSI协议的简化与实现[J].计算机工程,2010,36(9):279-281.
转自:《基于iSCSI技术的流媒体存储系统研究》