賈夫松 王希常
摘 要:基于當(dāng)前監(jiān)控系統(tǒng)的特點(diǎn),本文進(jìn)行基于FreeSWITCH的遠(yuǎn)程監(jiān)控系統(tǒng)的研究。針對(duì)當(dāng)前人們對(duì)監(jiān)控的需求,以開源的軟交換機(jī)FreeSWITCH為軟交換平臺(tái),以SIP協(xié)議為信令協(xié)議,設(shè)計(jì)實(shí)現(xiàn)了一種方便,廉價(jià),高效和實(shí)時(shí)的監(jiān)控系統(tǒng)。該系統(tǒng)與傳統(tǒng)的監(jiān)控系統(tǒng)相比較,靈活性好,擴(kuò)展性高,即擺脫了對(duì)硬件設(shè)施的依賴,又實(shí)現(xiàn)了高品質(zhì)的視頻監(jiān)控,實(shí)踐表明該系統(tǒng)處理能力強(qiáng),視頻效果好,通過(guò)對(duì)SIP信令和視頻數(shù)據(jù)包的分離來(lái)減小服務(wù)器壓力,對(duì)處理并發(fā)視頻流傳輸具有良好的效果,為開發(fā)監(jiān)控系統(tǒng)提供了參考價(jià)值。
關(guān)鍵詞:VoIP;FreeSWITCH;SIP協(xié)議;多媒體
遠(yuǎn)程監(jiān)控系統(tǒng)是一種讓身首異處的人們通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)“實(shí)時(shí)、方便、可視”的通信技術(shù)。傳統(tǒng)的監(jiān)控系統(tǒng)采用專門的硬件來(lái)完成監(jiān)控業(yè)務(wù),這種設(shè)計(jì)依賴硬件,費(fèi)用高、可擴(kuò)展性不強(qiáng),更無(wú)法實(shí)現(xiàn)異地實(shí)時(shí)監(jiān)控。隨著VoIP(Voice over IP)技術(shù)的興起和計(jì)算機(jī)處理能力的增強(qiáng),可在計(jì)算機(jī)上利用軟件實(shí)現(xiàn)實(shí)時(shí)監(jiān)控。這里以支持SIP協(xié)議的FreeSWITCH為平臺(tái)搭建監(jiān)控系統(tǒng)。
SIP協(xié)議是基于文本的應(yīng)用層協(xié)議,可以綜合語(yǔ)音、數(shù)字和視頻業(yè)務(wù),支持終端能力檢測(cè),這里采用SIP協(xié)議作為信令協(xié)議。該系統(tǒng)除了信令控制以為,還需要媒體處理,要求終端使用相同的視頻編碼這里采用的是H.264。本文基于以上分析,設(shè)計(jì)一種擴(kuò)展性高、管理方便的遠(yuǎn)程監(jiān)控系統(tǒng)。
1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)與分析
1.1 FreeSWITCH介紹
FreeSWITCH是一款開源的、跨平臺(tái)的、伸縮性極好的、免費(fèi)的、多協(xié)議的電話軟件換平臺(tái)。它能原生地運(yùn)行于Windows、Max OS X、Linux、BSD及Solaris等諸多平臺(tái)上,支持SIP、H323、Skype、Google Talk等多種通信協(xié)議,并很容易地與各種開源的PBX系統(tǒng)(如sipXecs、Call Weaver、Bayonne、YATE及Asterisk等)互通,而且支持很多高級(jí)的SIP特性,如Presence、BLF、SLA以及TCP、TLS和sRTP等。它也可以作為一個(gè)SBC進(jìn)行透明的SIP代理(proxy)以支持其他媒體,如T.38等。
1.2 系統(tǒng)結(jié)構(gòu)分析
以FreeSWITCH為核心組件,結(jié)合其他軟件和設(shè)備,設(shè)計(jì)一種基于SIP協(xié)議的遠(yuǎn)程監(jiān)控系統(tǒng),該系統(tǒng)選用SIP協(xié)議作為信令協(xié)議,完成注冊(cè)、代理、重定向等功能。該系統(tǒng)主要有FreeSWITCH構(gòu)成服務(wù)器,終端設(shè)備是有一款支持SIP協(xié)議的攝像機(jī)和IP軟電話。系統(tǒng)的整體結(jié)構(gòu)如圖所示。
功能方面:FreeSWITCH作為服務(wù)器,其主要功能是接受終端的注冊(cè),處理交互控制信令,并協(xié)調(diào)終端之間的會(huì)話連接。終端則是進(jìn)行對(duì)數(shù)據(jù)的采集、處理、發(fā)送、接受、播放,從而實(shí)現(xiàn)實(shí)時(shí)的、有效的監(jiān)控服務(wù)。
2 系統(tǒng)功能實(shí)現(xiàn)
2.1 功能模塊
FreeSWITCH由一個(gè)穩(wěn)定的核心(Core)和一些外圍模塊組成,外圍模塊可以動(dòng)態(tài)加載,比如mod_sofia/mod_socket等。
Core的主要功能:Core是利用APR庫(kù)(Apache提供的跨平臺(tái)的C庫(kù))來(lái)完成,完成內(nèi)存管理/線程管理/常用算法/數(shù)據(jù)結(jié)構(gòu)等,還包括動(dòng)態(tài)庫(kù)的加載卸載、呼叫控制、日志管理、存儲(chǔ)、內(nèi)核任務(wù)調(diào)度等
外圍模塊(Mod_xxx):可加載卸載外圍模塊的FreeSWITC的一個(gè)特色,功能的擴(kuò)展主要依靠外圍動(dòng)態(tài)模塊的增加來(lái)實(shí)現(xiàn),每個(gè)模塊加載后提供相應(yīng)的API和APP來(lái)進(jìn)一步增強(qiáng)FreeSWITCH的功能,Core和模塊之間通過(guò)調(diào)用API實(shí)現(xiàn)與Core的交互。
2.2 SIP的實(shí)現(xiàn)
FreeSWITCH的SIP功能是在mod_sofia模塊中實(shí)現(xiàn)的,F(xiàn)reeSWITCH并沒(méi)有自己開發(fā)新的SIP協(xié)議棧,而是使用了比較成熟的Nokia的開源SIP協(xié)議棧Sofia-SIP。
mod_sofia是FreeSWITCH中最重要的一個(gè)模塊,所有的SIP通話都是從它開始和終止。它實(shí)現(xiàn)了SIP注冊(cè)、呼叫、終止等一系列的SIP特性。
Endpoint:在FreeSWITCH中,實(shí)現(xiàn)一些互聯(lián)協(xié)議接口的模塊稱為Endpoint。FreeSWITCH支持很多類型的Endpoint,如SIP、H.323等。這些不同的Endpoint主要使用不同的控制協(xié)議跟其他的Endpoint通話。SIP Profile相當(dāng)于SIP UA,在啟動(dòng)后它會(huì)監(jiān)聽一個(gè)”IP地址:端口”對(duì)。
UA首先向FreeSWITCH內(nèi)部的SIP(sofia_SIP)模塊發(fā)起注冊(cè)。然后發(fā)出Invite請(qǐng)求,該請(qǐng)求帶有SDP(Session De-scription Protocol)的媒體信息,協(xié)商雙方媒體功能,發(fā)起呼叫實(shí)現(xiàn)互通。
2.3 媒體繞過(guò)(Bypass Media)
FreeSWITCH作為服務(wù)器,用戶發(fā)起的SIP消息通過(guò)FreeSWITCH進(jìn)行建立連接,連接建立之后的媒體流相對(duì)SIP消息的龐大的,如果都通過(guò)FreeSWITCH轉(zhuǎn)發(fā)會(huì)給服務(wù)器造成巨大壓力,所以采用媒體繞過(guò)技術(shù),即真正的媒體流使用點(diǎn)對(duì)點(diǎn)傳輸,不經(jīng)過(guò)FreeSWITCH,直接通過(guò)RTP的點(diǎn)對(duì)點(diǎn)傳輸。設(shè)置Bypass Media:在Profile中添加如下設(shè)置。
3 系統(tǒng)搭建與測(cè)試
3.1 安裝
FreeSWITCH安裝Linux Ubuntu14.04系統(tǒng)當(dāng)中,終端則運(yùn)行在同一網(wǎng)絡(luò)下。準(zhǔn)備一個(gè)支持SIP協(xié)議的攝像機(jī)并注冊(cè)在FreeSWITCH上面。
本文軟電話采用的是能運(yùn)行于安卓系統(tǒng)下的Jitsi,電腦端可采用Microsip,注冊(cè)過(guò)程類似,并調(diào)試雙方為同一編碼方式,本文采用H.264。注冊(cè)檢測(cè),在FreeSWITCH上輸出sofia status profile internal reg。
3.2 測(cè)試
攝像機(jī)以一個(gè)SIP客戶端的方式注冊(cè)到FreeSWITCH上,攝像機(jī)不會(huì)主動(dòng)發(fā)起呼叫,我們用軟電話呼叫攝像機(jī)時(shí),攝像機(jī)會(huì)自動(dòng)應(yīng)答,就可以通過(guò)軟電話觀看攝像機(jī)了,本文測(cè)試中,攝像機(jī)的地址為192.168.1.216,軟電話地址為192.168.1.17,F(xiàn)reeSWITCH的地址為192.168.1.21。
4 結(jié)語(yǔ)
本文基于FreeSWITCH軟交換機(jī)設(shè)計(jì)了一種簡(jiǎn)單、高效的遠(yuǎn)程監(jiān)控系統(tǒng)。該系統(tǒng)使用SIP協(xié)議進(jìn)行信令交互,并結(jié)合RTP協(xié)議和終端設(shè)備的特點(diǎn),實(shí)現(xiàn)了遠(yuǎn)程監(jiān)控系統(tǒng)的基本功能。該系統(tǒng)與硬件系統(tǒng)相比,價(jià)格上更具優(yōu)勢(shì),而性能上該系統(tǒng)的擴(kuò)展性和維護(hù)性也具有較大優(yōu)勢(shì)。并且媒體繞過(guò)技術(shù)使得服務(wù)器具有高并發(fā)性,處理能力更加簡(jiǎn)潔高效。當(dāng)然該系統(tǒng)只是基本達(dá)到了遠(yuǎn)程實(shí)時(shí)監(jiān)控的功能,在監(jiān)控控制,記錄方面還需做進(jìn)一步完善,使其更加符合監(jiān)控系統(tǒng)的特點(diǎn)和要求。
參考文獻(xiàn):
[1]Rosenberg,J.Framework for Conferencing with the Session Initiation Protocol [S].IETF Internal Draft,2003.
[2]J.Rosenberg,H.Schulzrinne,et.al,SIP:Session Initiation Protocol[S]. IETF RFC3261,2002.
[3]DuJjinfang, ZhangLingkao, FreeSWITCH:The Definitive Guide, Beijing, China Machine Press, 2014.
[4]Yan Wei, Pan Aimin, Computer Network. BeiJing, Tsinghua University Press.
[5]Asterisk:Theroadtothe future, CHN2.0[EB/01].http//asterisker.cn.2010.
作者簡(jiǎn)介:賈夫松(1991-),男,漢族,山東泰安人,碩士,計(jì)算機(jī)網(wǎng)絡(luò);王希常(1964-),男,漢族,山東茌平縣人,研究員,處長(zhǎng),九三學(xué)社社員,博士,計(jì)算機(jī)圖像。