黃如兵,姚茂群,趙武鋒
(1.杭州師范大學(xué)杭州國(guó)際服務(wù)工程學(xué)院,浙江 杭州 311121; 2. 浙江大學(xué)信息與電子工程系,浙江 杭州310027)
嵌入式技術(shù)及通信網(wǎng)絡(luò)技術(shù)的發(fā)展,為視頻監(jiān)控系統(tǒng)開發(fā)提供了強(qiáng)大的技術(shù)保障,針對(duì)偏遠(yuǎn)地區(qū)有線網(wǎng)絡(luò)布線困難,文[1]提出GPRS/WLAN無線視頻監(jiān)控傳輸方案,但GPRS窄帶寬的數(shù)據(jù)傳輸難以實(shí)現(xiàn)監(jiān)控畫面的流暢播放.隨著第三代移動(dòng)通信技術(shù)(3G)的成熟和3G網(wǎng)絡(luò)覆蓋越來越廣泛,設(shè)計(jì)一種使用便捷的3G可移動(dòng)監(jiān)控系統(tǒng)尤為必要[2-3],文[4]中雖采用3G數(shù)據(jù)傳輸技術(shù),但使用的是電信發(fā)行較少、可分配公網(wǎng)IP地址的3G數(shù)據(jù)卡,其便于組網(wǎng)和訪問,避開了私有網(wǎng)絡(luò)的組網(wǎng)難題.隨著IPv4的日益緊張,聯(lián)通、移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商目前發(fā)行的3G數(shù)據(jù)卡僅為其分配私有IP地址[5],不能由外網(wǎng)通過IP地址實(shí)現(xiàn)直接訪問,所以傳統(tǒng)的方案無法將其作為服務(wù)端提供服務(wù).本文基于虛擬專用網(wǎng)絡(luò)VPN(virtual private network)技術(shù)[6]建立的虛擬專用網(wǎng)絡(luò),通過VPN服務(wù)器的隧道技術(shù)能夠?qū)崿F(xiàn)對(duì)3G終端的安全訪問,解決其無法作為服務(wù)端提供服務(wù)的問題.
為進(jìn)一步縮減開發(fā)周期,本文采用 B/S架構(gòu)的嵌入式移動(dòng)監(jiān)控系統(tǒng)結(jié)構(gòu)[7],用戶使用瀏覽器或已有的客戶端軟件,即可對(duì)現(xiàn)場(chǎng)進(jìn)行遠(yuǎn)程監(jiān)控.移動(dòng)監(jiān)控系統(tǒng)的監(jiān)控前端是基于S3C2440、Linux的嵌入式監(jiān)控系統(tǒng),嵌入式web服務(wù)器boa[8]與開源視頻服務(wù)器Mjpg-streamer 實(shí)現(xiàn)視頻遠(yuǎn)程傳輸和服務(wù)器登錄,監(jiān)控用戶端則采用火狐瀏覽器或者開源播放器VLC進(jìn)行實(shí)時(shí)監(jiān)控.
移動(dòng)監(jiān)控系統(tǒng)由監(jiān)控前端、VPN服務(wù)器、監(jiān)控用戶端組成,系統(tǒng)總體結(jié)構(gòu)如圖1所示.監(jiān)控前端通過3G網(wǎng)絡(luò)撥號(hào)接入Internet網(wǎng)絡(luò),再撥號(hào)接入VPN服務(wù)器;監(jiān)控用戶端的計(jì)算機(jī)、智能手機(jī)或者PAD通過撥號(hào)接入VPN服務(wù)器,由此3G監(jiān)控前端、監(jiān)控用戶端通過VPN服務(wù)器的中間作用,處于設(shè)定的虛擬局域網(wǎng)之中.此時(shí)用戶終端可以利用瀏覽器或者VLC根據(jù)設(shè)定的IP地址來實(shí)現(xiàn)對(duì)監(jiān)控前端的訪問.只要在3G信號(hào)覆蓋區(qū)域內(nèi)即可正常提供視頻的采集、壓縮、傳輸及視頻流服務(wù)器的功能.
監(jiān)控前端設(shè)計(jì)如圖2所示,嵌入式微處理器采用S3C2440芯片,基于ARM920T內(nèi)核,采用AMBA(Advanced Micro controller Bus Architecture)總線架構(gòu),時(shí)鐘頻率400 HZ.監(jiān)控前端結(jié)構(gòu)中SDRAM用于代碼運(yùn)行,NANDFLASH 作為系統(tǒng)的存儲(chǔ)單元,SDCard進(jìn)行圖片數(shù)據(jù)存儲(chǔ),JTAG用于Uboot文件燒寫,UART進(jìn)行終端運(yùn)行信息的打印,USBhost1外接采用中星微ZC301攝像頭的視頻采集模塊,USBhost2外接網(wǎng)絡(luò)模塊,其使用的是WCDMA聯(lián)通3G網(wǎng)絡(luò)的華為E1750上網(wǎng)卡.在視頻監(jiān)控前端搭建嵌入式環(huán)境,移植Uboot、Linux內(nèi)核、yaffs文件系統(tǒng),交叉編譯SDL及JPGLIB庫(kù)并移植優(yōu)化Mjpg-streamer及web服務(wù)器至開發(fā)板提供視頻服務(wù).
圖1 移動(dòng)監(jiān)控系統(tǒng)結(jié)構(gòu)
圖2 3G監(jiān)控前端內(nèi)部結(jié)構(gòu)
3G是支持高速數(shù)據(jù)傳輸?shù)男乱淮涓C移動(dòng)通訊技術(shù),具有較高的數(shù)據(jù)傳輸速率,適合視頻流、圖像、音樂等多種媒體數(shù)據(jù)的傳輸.3G存在4種標(biāo)準(zhǔn):CDMA2000,WCDMA,TD-SCDMA,WiMAX.中國(guó)國(guó)內(nèi)支持國(guó)際電信聯(lián)盟確定的3個(gè)無線接口標(biāo)準(zhǔn):中國(guó)電信的CDMA2000,中國(guó)移動(dòng)的TD-SCDMA和中國(guó)聯(lián)通的WCDMA.本文的通信網(wǎng)絡(luò)組建中,主要考慮3G網(wǎng)絡(luò)覆蓋率和傳輸速率兩方面,基于WCDMA的高速上行、下行可達(dá)5.76、7.2 Mbps的傳輸速率,為移動(dòng)監(jiān)控系統(tǒng)的數(shù)據(jù)傳輸提供了保障[9].
VPN是在開放的公用網(wǎng)絡(luò)上建立專用網(wǎng)的一種技術(shù),通過采用隧道技術(shù)、加解密技術(shù)、認(rèn)證技術(shù)、密鑰管理技術(shù)以及訪問控制技術(shù)在公網(wǎng)上建立一個(gè)臨時(shí)、安全的連接[6].它可在位于不同地方的兩個(gè)或多個(gè)局域網(wǎng)之間建立一條專有的通訊線路,但并不需要真正地去鋪設(shè)光纜之類的物理線路.VPN實(shí)現(xiàn)協(xié)議有多種方式,本系統(tǒng)采用L2TP(Layer 2 Tunneling Protocol)及IPSec(Internet Protocol Security)協(xié)議的VPN技術(shù).VPN服務(wù)器采用Windows Server 2003操作系統(tǒng),啟用服務(wù)器的遠(yuǎn)程和接入服務(wù),并配置相應(yīng)接入賬號(hào)及接入權(quán)限,為VPN服務(wù)器安裝證書進(jìn)行認(rèn)證,以確認(rèn)客戶端的合法身份.同VPN服務(wù)器一樣,VPN客戶端也要安裝計(jì)算機(jī)證書,并在客戶端上創(chuàng)建VPN連接,由“網(wǎng)上鄰居”里“新建連接向?qū)А卑床襟E創(chuàng)建客戶端.監(jiān)控前端嵌入式客戶端移植前,需先在Linux內(nèi)核中添加PPP內(nèi)核驅(qū)動(dòng),由L2TP命令完成到VPN服務(wù)器的連接請(qǐng)求,認(rèn)證通過后與服務(wù)器建立VPN,多個(gè)客戶端和中心VPN服務(wù)器建立連接后,使得服務(wù)器和多個(gè)客戶端設(shè)備處于同一網(wǎng)絡(luò)中.由此3G通信終端與中心VPN服務(wù)器建立了安全可靠的通道,各客戶端之間實(shí)現(xiàn)穿越網(wǎng)關(guān)的互聯(lián),任意通信雙方的數(shù)據(jù)在安全的環(huán)境下進(jìn)行傳輸.
圖3 基于VPN技術(shù)接入3G終端的通信網(wǎng)絡(luò)架構(gòu)
3G撥號(hào)的實(shí)現(xiàn)首先需要在Linux2.6.30操作系統(tǒng)內(nèi)核/drivers/usb/serial/option.c驅(qū)動(dòng)文件中添加相應(yīng)3G網(wǎng)卡的驅(qū)動(dòng),在內(nèi)核配置中將PPP、USB Serial Converter support 編譯進(jìn)內(nèi)核,并編寫相應(yīng)的PPP撥號(hào)腳本和配置文件,即可實(shí)現(xiàn)撥號(hào)接入Internet并可進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸[10].接入Internet網(wǎng)絡(luò)后再進(jìn)行L2TP撥號(hào)接入VPN服務(wù)器.圖3為構(gòu)建的基于VPN技術(shù)接入3G終端的通信網(wǎng)絡(luò)架構(gòu)圖,圖中計(jì)算機(jī)S(server)為中心VPN服務(wù)器,M1(mointor1)、M2(mointor2)為3G撥號(hào)的監(jiān)控前端,U1(user1)為有線局域網(wǎng)計(jì)算機(jī)用戶端,U2(user2)為3G手機(jī)用戶端.M1、M2、U1、U2和S建立VPN連接前,四者的IP地址均為私有動(dòng)態(tài)IP地址,所以無法作為服務(wù)端被訪問.當(dāng)通信網(wǎng)絡(luò)建立后,基于S計(jì)算機(jī)VPN服務(wù)器可實(shí)現(xiàn)M1、M2、U1、U2相互訪問連接,即可通過U1、U2隨時(shí)訪問監(jiān)控前端的M1、M2監(jiān)控設(shè)備.
表1 實(shí)驗(yàn)室環(huán)境下網(wǎng)絡(luò)構(gòu)架的服務(wù)器及各終端IP地址
VPN網(wǎng)絡(luò)里面的設(shè)備或者服務(wù)器都具有兩個(gè)IP地址,一個(gè)是原先聯(lián)網(wǎng)獲得的IP地址,例如在監(jiān)控系統(tǒng)調(diào)試階段,服務(wù)器IP地址39.187.160.155 是對(duì)外的公網(wǎng)IP 地址,筆者規(guī)劃的VPN 網(wǎng)絡(luò)段地址范圍為192.168.1.1~192.168.1.100,通過服務(wù)器和客戶端的配置,分別為M1、M2、U1、U2設(shè)置相應(yīng)撥號(hào)驗(yàn)證用戶并綁定如表1中所示的虛擬子網(wǎng)IP地址.VPN 服務(wù)器內(nèi)網(wǎng)將占用192.168.1.1 的IP地址,當(dāng)M1、M2、U1、U2設(shè)備通過內(nèi)置的VPN服務(wù)利用已綁定IP地址的賬號(hào)與VPN服務(wù)器建立虛擬連接,就好像設(shè)備有兩塊網(wǎng)卡一樣,M1、M2、U1、U2分別建立和服務(wù)器直接連接的網(wǎng)絡(luò),并獲得分配的虛擬專用局域網(wǎng)子IP地址.如在本通信網(wǎng)絡(luò)架構(gòu)中給M1 、M2 、U1、U2虛擬鏈接分別分配192.168.1.2、 192.168.1.3、192.168.1.4、192.168.1.5的IP地址,這樣VPN服務(wù)器S、監(jiān)控前端M1及M2、監(jiān)控用戶端U1及U2五者就可以通過虛擬IP地址192.168.1.1~192.168.1.5進(jìn)行設(shè)備之間的相互連接和訪問.
移動(dòng)監(jiān)控系統(tǒng)軟件流程如圖4所示.首先進(jìn)行設(shè)備初始化,運(yùn)行輸入、輸出函數(shù)時(shí),分別創(chuàng)建視頻采集、壓縮線程和輸出服務(wù)線程.視頻采集壓縮線程對(duì)采集的幀數(shù)據(jù)編碼為JPEG文件,捕獲并將處理后的視頻數(shù)據(jù)置于全局變量的緩沖區(qū)等待輸出服務(wù)線程的讀取和傳送.輸出服務(wù)線程包括并發(fā)服務(wù)器線程和客戶端處理線程,服務(wù)線程監(jiān)聽到客戶端請(qǐng)求后便創(chuàng)建一個(gè)新的客戶端線程處理客戶端的HTTP請(qǐng)求,服務(wù)器可以不斷地從全局緩沖區(qū)中取出JPEG數(shù)據(jù)給用戶端瀏覽器.
V4L2(Vedio For Linux Two)是Linux中視音頻設(shè)備的內(nèi)核驅(qū)動(dòng),它是linux內(nèi)核提供給用戶空間的編程接口.基于V4L2編程主要通過調(diào)用ioctl控制函數(shù)實(shí)現(xiàn)視頻采集:
fd = open (“/dev/video0”,O_RDWR)打開視頻設(shè)備,獲得視頻設(shè)備描述符;
ioctl( fd, VIDIOC_QUERYCAP, &capbility)查詢視頻設(shè)備的性能屬性;
ioctl( fd, VIDIOC_S_FMT, &fmt)設(shè)置視頻幀格式,設(shè)定幀類型像素大小等格式;
ioctl( fd, VIDIOC_REQBUFS, &reqbuf)向驅(qū)動(dòng)申請(qǐng)幀緩沖,以保存采集的幀數(shù)據(jù);
mmap( NULL, buf.length, PROT_READ |PROT_WRITE, MAP_SHARED, fd, buf.m.offset)將申請(qǐng)到的幀緩沖映射到用戶空間,用戶應(yīng)用程序可直接讀取采集到的幀數(shù)據(jù);
ioctl( fd, VIDIOC_QBUF, &buf)將申請(qǐng)的幀緩沖全部入隊(duì)列,存放采集到的數(shù)據(jù);
ioctl( fd, VIDIOC_STREAMON, &type)開始視頻的采集;
ioctl( fd, VIDIOC_DQBUF, &buf)出隊(duì)列取得采集數(shù)據(jù);
ioctl( fd, VIDIOC_QBUF, &buf)將緩沖重新入隊(duì)列尾,這樣可以循環(huán)采集;
ioctl( fd, VIDIOC_STREAMOFF, &type)停止視頻的采集;
close( fd )關(guān)閉視頻設(shè)備.
圖像編碼采用有損編碼的JPEG壓縮方式,通過變換、量化、編碼3個(gè)階段完成視頻圖像的壓縮編碼.程序設(shè)計(jì)中增加了通過HTTP協(xié)議傳輸視頻圖像的功能,使得在合適的時(shí)候可以選擇用IE、Firefox等常用網(wǎng)頁瀏覽器獲取監(jiān)控信息.
TCP/IP協(xié)議網(wǎng)絡(luò)模型是OSI七層模型的簡(jiǎn)化,可劃分為應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、網(wǎng)絡(luò)接口層.移動(dòng)監(jiān)控系統(tǒng)中使用的應(yīng)用層協(xié)議是HTTP協(xié)議,傳輸層協(xié)議是TCP協(xié)議,網(wǎng)絡(luò)數(shù)據(jù)傳輸采用Socket通信編程實(shí)現(xiàn).HTTP協(xié)議規(guī)定了服務(wù)器和瀏覽器之間的通信規(guī)則以及傳輸數(shù)據(jù)格式,通過HTTP協(xié)議,運(yùn)行于不同主機(jī)、不同操作系統(tǒng)的客戶端瀏覽器可以與web服務(wù)器進(jìn)行數(shù)據(jù)的交互.HTTP 協(xié)議通信方式是請(qǐng)求/應(yīng)答模式.通信步驟為:1)建立TCP連接;2)瀏覽器向服務(wù)器發(fā)送請(qǐng)求命令;3)服務(wù)器響應(yīng)瀏覽器的請(qǐng)求并發(fā)送數(shù)據(jù);4)關(guān)閉TCP連接.監(jiān)控系統(tǒng)的視頻數(shù)據(jù)是通過建立Socket套接字來實(shí)現(xiàn)用戶端和監(jiān)控前端的傳輸?shù)?,基于TCP協(xié)議作為傳輸層協(xié)議的Socket創(chuàng)建以及通信連接如圖5所示.
圖4 監(jiān)控系統(tǒng)軟件設(shè)計(jì)流程
圖5 基于TCP協(xié)議Socket套接字編程基本步驟
如圖3所示,由ping操作進(jìn)行網(wǎng)絡(luò)連接通斷及響應(yīng)速度的檢測(cè),S接入ADSL撥號(hào)網(wǎng)絡(luò),U1為實(shí)驗(yàn)室局域網(wǎng)中的用戶機(jī),U2端接入TD-SCDMA標(biāo)準(zhǔn)的3G網(wǎng)絡(luò),移動(dòng)監(jiān)控前端M1、M2撥號(hào)接入WCDMA標(biāo)準(zhǔn)的3G網(wǎng)絡(luò).通過向目標(biāo)主機(jī)發(fā)送要求數(shù)據(jù)包,并等待接收目標(biāo)主機(jī)回應(yīng)數(shù)據(jù)包,通過數(shù)據(jù)包往返時(shí)間估算網(wǎng)絡(luò)的響應(yīng)速度.節(jié)點(diǎn)之間進(jìn)行多次ping操作并記錄其平均耗時(shí),測(cè)試網(wǎng)絡(luò)的響應(yīng)性能,實(shí)驗(yàn)結(jié)果如表2所示.
由表2可知:1)用戶端及監(jiān)控端進(jìn)行ping虛擬IP地址操作,均能獲得數(shù)據(jù)包的往返時(shí)間,說明網(wǎng)絡(luò)連接暢通,此組網(wǎng)架構(gòu)可實(shí)現(xiàn)不同局域網(wǎng)間的互聯(lián)訪問.2) M1建立隧道前ping服務(wù)器S公網(wǎng)IP地址響應(yīng)時(shí)間為90 ms,M1建立隧道后ping服務(wù)器S虛擬IP地址響應(yīng)時(shí)間為94 ms,說明數(shù)據(jù)包封裝的報(bào)頭對(duì)數(shù)據(jù)傳輸沒有明顯的延時(shí)影響,此組網(wǎng)架構(gòu)可適用于移動(dòng)監(jiān)控系統(tǒng).
表2 響應(yīng)時(shí)間
移動(dòng)監(jiān)控前端3G撥號(hào)接入系統(tǒng)后,其上行下行速率理論值最高可達(dá)5.76、7.2 Mbps,在實(shí)驗(yàn)環(huán)境下測(cè)得其平均上傳速率為920 Kbps.當(dāng)采集的像素格式為320×240的12位YUV420圖像經(jīng)壓縮比約為20∶1的編碼后,每幀大小約為(320×240×12)/20≈46 Kb.根據(jù)多次實(shí)驗(yàn)數(shù)據(jù)分析,當(dāng)系統(tǒng)采集像素格式設(shè)定為320×240,幀率為10 f/s時(shí),系統(tǒng)運(yùn)行穩(wěn)定,同時(shí)網(wǎng)絡(luò)帶寬仍有較大富余,根據(jù)需要可進(jìn)一步提高圖像分辨率和幀率;監(jiān)控前端在戶外移動(dòng)監(jiān)測(cè)時(shí),實(shí)時(shí)性高,運(yùn)行穩(wěn)定.圖6、圖7分別為用戶端在VLC和Firefox瀏覽器監(jiān)控測(cè)試效果.
圖6 用戶端VLC監(jiān)控測(cè)試
圖7 用戶端Firefox瀏覽器監(jiān)控測(cè)試
基于VPN接入3G終端的技術(shù)具有明顯的優(yōu)勢(shì),組建龐大的監(jiān)控網(wǎng)絡(luò),僅需一個(gè)公網(wǎng)IP地址即可,大大節(jié)約IP地址,能有效解決運(yùn)營(yíng)商私有網(wǎng)絡(luò)的3G終端產(chǎn)品無法相互訪問的問題,通過隧道技術(shù)即可實(shí)現(xiàn)各端的安全互訪,此方案同樣適用于遠(yuǎn)程控制、遠(yuǎn)程辦公及資料共享等.設(shè)計(jì)的基于VPN網(wǎng)絡(luò)構(gòu)架的移動(dòng)監(jiān)控系統(tǒng),通過對(duì)系統(tǒng)的視頻采集程序、數(shù)據(jù)編碼及傳輸程序的設(shè)計(jì)及優(yōu)化,具有開銷較小、使用便捷、訪問安全、通用性極強(qiáng)的特點(diǎn).用戶端可不受地域及時(shí)間限制,遠(yuǎn)程通過手持終端、計(jì)算機(jī)打開瀏覽器即可進(jìn)行實(shí)時(shí)監(jiān)控.該系統(tǒng)可廣泛應(yīng)用于安防監(jiān)控、探測(cè)救災(zāi)、交通監(jiān)管以及為車輛、輪船等移動(dòng)設(shè)備提供監(jiān)控服務(wù).
[1]胡棟,劉峰,朱秀昌.實(shí)時(shí)多模式無線視頻傳輸原型系統(tǒng)的實(shí)現(xiàn)[J].通信學(xué)報(bào),2006,27(10):106-112.
[2]崔萍,張巖.基于WCDMA與寬帶網(wǎng)融合的行業(yè)應(yīng)用實(shí)現(xiàn)[J].通信技術(shù),2011,44(8):58-59.
[3]Faccin S M, Lalwaney P, Patil B. IP multimedia services: analysis of mobile IP and SIP interactions in 3G networks[J]. Communications Magazine,IEEE,2004,42(1):113-120.
[4]夏雪,丘耘,胡林,等.基于3G和DDNS的果園環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)[J].自動(dòng)化與儀表,2013,28(8):18-21.
[5]張逸,楊洪耕,葉茂清,等.3G技術(shù)在電能質(zhì)量監(jiān)測(cè)系統(tǒng)中的應(yīng)用[J].電力系統(tǒng)保護(hù)與控制,2012,40(17):139-144.
[6]李德水.IPSec VPN機(jī)制研究[J].現(xiàn)代電子技術(shù),2010,312(1):81-83.
[7]孫鶴旭,邵巖,邢關(guān)生,等.移動(dòng)機(jī)器人網(wǎng)絡(luò)的嵌入式Web系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2013,39(9):134-136.
[8]唐永彬,楊恢東.基于ARM11的嵌入式Web網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2011,35(9):122-124.
[9]李潺,郭志濤,李偉超,等.基于Hi3515嵌入式系統(tǒng)的無線車載監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(9):294-296.
[10]陳曾海.基于嵌入式Linux的3G-WiFi路由器研究與設(shè)計(jì)[D].北京:北京郵電大學(xué),2011.