基于VPN的实时视频监控系统的多播实现

2012-07-18 07:40章坚武
关键词:多播数据包监控

徐 强,章坚武

(杭州电子科技大学通信工程学院,浙江杭州310018)

0 引言

随着计算机技术、网络技术、语音和视频编解码技术以及流媒体技术的不断发展与完善,视频监控业务在当今的网络时代取得了蓬勃的发展。如今,视频监控业务的重要性不言而喻,其应用领域包括城市安防、检验检疫、环境保护、气象检测、银行安保、商铺监控等等,甚至渗透到了家庭领域[1]。现在一些视频监控应用提出多点接收的需求。实现多点接收有3种方法,第1种方法是对每个接收点都发送一次单播,第2种方法是采用广播技术,第3种方法是利用多播手段。其中第3种方法最好,它也是当前互联网实现多点接收的主流技术,应用范围很广。本文由于本视频监控系统应用于虚拟专用网络,因此多播安全性得到保证。

1 视频监控系统

实时视频监控系统的原理框图如图1所示。

图1 实时视频监控网络的原理框图

视频采集模块将原始的视频模拟信号经过取样和量化转换成数字信号,为接下来的视频编码做准备工作。未编码的视频数据量特别大,如表1所示。

表1 未压缩信源的大致信息量

在现有网络环境下,直接传输如此大的信息量是不现实的。由于视频数据中存在大量的冗余信息,经过压缩之后,数据量会大幅下降,从而使得通过网络传输实时多媒体数据成为可能。rtp协议是由音频和视频传输工作组制订,专门用来在因特网上传输音频和视频的标准包格式。客户端通过接收和解包rtp数据,解码视频数据,最终播放视频,显示画面。为了方便保存证据,以便公安机关查看,本文增加了本地存储模块来保存高分辨率的视频。这就是监控系统的全部流程。与传统的视频监控系统相比,本系统采用VPN技术,此技术主要采用了隧道技术、加解密技术、密钥管理技术和使用者与设备身份认证技术。它可以将外部非法用户与合法用户隔离开来,使得非法用户无法窃取VPN网络传输的视频数据。

2 多播实现

2.1 多播介绍

多播,也称为组播,将局域网中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的数据。多播技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。在IPv4中D 类 IP 地址用于多播通信,范围从224.0.0.0 到 239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址3类。其中,局部链接多播地址范围在224.0.0.0 224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;224.0.1.0 238.255.255.255为预留多播地址,可用于全球范围(如 Internet)或网络协议;239.0.0.0 239.255.255.255 为管理权限多播地址,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。使用同一个IP多播地址接收多播数据包的所有主机构成了一个主机组,也称为多播组。

2.2 视频监控系统的多播流程

本视频监控系统中,视频采集模块将模拟的视频信号进行模数转换,得到数字的视频信号,再送入视频压缩模块。该模块采用H.264视频压缩算法,视频压缩完成后得到264视频流,在送入rtp发送模块。此模块对264视频流进行打包,根据视频流中的起始码,将视频流分割成一帧一帧,并将每一帧按照rtp打包规则分开打包,然后通过UDP协议发送到多播组,路由器根据多播组地址自动进行多播转发。此时,只要客户端加入多播组就可以通过UDP协议从多播组接收经过rtp打包过的视频数据了。接收视频数据后,对这些包重新进行排序以解决rtp包乱序到达的问题,之后就可以从排好序的rtp包中提取出视频数据并送入视频解码模块,使用H.264算法进行解压缩,解压出一帧后就送入视频播放模块进行画面回放。

2.3 Linux操作系统下多播编程实现

Linux操作系统使用Berkeley Socket API进行网络编程。Berkeley Socket采用setsockopt()的套接字选项功能来设置。对于某些选项利用getsockopt()功能可获得当前的设置[3]。setsockopt()/getsockopt()可用的组播命令如表2所示。利用Berkeley Socket实现IP组播通信的流程图如图2所示。

表2 setsockopt/getsockopt组播命令参数

IP组播通信的编程方法如下:

(1)建立多播发送套接字,首先要使用函数socket()建立一个数据报套接字,然后用bind()函数将套接字与一地址和端口号连接起来,其中,地址可选用本地IP地址或由INADDR_ANY参数任意分配一个IP地址,端口号要大于 1024[4]。相关代码如下,

图2 多播流程图

(2)设置多播的参数,例如设置IP_Multicast_TTL选项和要加入的组播组的地址结构。详细代码如下,

(3)设置IP_Add_Membership选项以便加入指定的某个多播组。如果只打算发送数据,则不必加入多播组。

其中ip_mreq结构如下:

(4)调用函数sendto()发送多播数据,调用函数recvfrom()接收多播数据;

(5)设置IP_Drop_Membership选项和要脱离的多播组的地址结构,调用setsockopt()脱离指定的组播组,例如,

(6)完毕后关闭套接字。

在步骤4中,可以将打包好的rtp视频数据包通过调用sendto()函数发送出去或者通过调用recvfrom()函数从多播组接收rtp视频数据包。

3 多播安全性

多播通信过程中,由于任何IP地址都可以随意加入某个多播组,也可以随时离开某个多播组,因此这给多播组的安全和管理带来较大的难度。此视频监控系统是基于VPN网络的,因此不属于这个VPN网络的用户是无法加入多播组的,也就接收不到多播组传输的数据,这让该视频监控系统的安全性得到了比较好的保护。

4 实验结果与分析

本文以北京瑞泰的ICETEK-DM365-KB-EZ开发板作为监控端,华为C8500和中兴N880S手机作为客户端。这两支手机均安装了使用Java语言编写的客户端程序,监控系统采用由ISO的MPEG和ITU的VCEG两个组织制定的H.264视频编码标准,视频分辨率为352×288,10帧/s,码率200kbps。在VPN网环境下(VPN网络有中国电信提供,对手机的VPN设置选项进行一些相关设置,然后输入电信提供的帐号和密码就可以进入VPN网络),进行了测试。画面清晰,视频流畅,多播功能得到了较好的实现。由于电信的3G网络的不稳定,实验过程中还是有少量马赛克出现。效果如图3所示。

图3 测试效果图

5 结束语

多播作为一点对多点的通信[5],是节省网络带宽的有效方法之一。在网络音频/视频广播的应用中,当需要将一个节点的信号传送到多个节点时,无论是采用重复点对点通信方式,还是采用广播方式,都会严重浪费网络带宽,只有多播才是最好的选择。多播能使一个或多个多播源只把数据包发送给特定的多播组,而只有加入该多播组的主机才能接收到数据包。目前,IP多播技术被广泛应用在网络音频/视频广播、AOD/VOD、网络视频会议、多媒体远程教育、“push”技术(如股票行情等)和虚拟现实游戏等方面。由于任何IP都可以自由的加入一个多播组,也可以随时随地的离开一个多播组,因此多播的安全性一直一个比较棘手的问题。本文提出使用VPN技术,可以较好的解决安全性问题。

[1] 刘聪,陈大庆,郑冬冬.TD视频监控的解决方案分析[J].电信技术,2011,(11):48-50.

[2] 刘鹏.音视频压缩技术在多媒体监控系统中的应用研究[D].西安:西北工业大学,2003.

[3] 徐立新,李宗斌.IP组播技术的API编程实践[J].微型机与应用,2002,21(6):32-34.

[4] 朱利,周俊辉,郑守淇.WINDOWS下组播通信的研究与实现[J].小型微型计算机系统,2000,21(2):132-134.

[5] 徐昌彪.IP组播及其核心技术探讨[J].计算机应用研究,2001,18(8):38-41.

猜你喜欢
多播数据包监控
胖树拓扑中高效实用的定制多播路由算法
用于超大Infiniband网络的负载均衡多播路由
InfiniBand中面向有限多播表条目数的多播路由算法
基于Jpcap的网络数据包的监听与分析
The Great Barrier Reef shows coral comeback
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
SmartSniff
PDCA循环法在多重耐药菌感染监控中的应用
GPON网络中有效的多播传输机制