張志龍
【摘要】實(shí)時(shí)網(wǎng)絡(luò)傳真將傳統(tǒng) PSTN傳真引入到互聯(lián)網(wǎng)上進(jìn)行傳輸,充分利用了互聯(lián)網(wǎng)的費(fèi)用低廉的優(yōu)點(diǎn),逐漸被廣大用戶所喜愛。本文結(jié)合嵌入式技術(shù)和基于 SIP的網(wǎng)絡(luò)傳真通信技術(shù),開發(fā)實(shí)現(xiàn)了在嵌入式平臺下基于 PJSIP協(xié)議的實(shí)時(shí)網(wǎng)絡(luò)傳真( FOIP)。本文以 AT91SAM9263主處理器為硬件平臺,采用了 Redboot作為底層引導(dǎo)程序,構(gòu)建嵌入式 Linux系統(tǒng)平臺。在此基礎(chǔ)上提出基于嵌入式 Linux系統(tǒng)下的軟件設(shè)計(jì)方案,并對 PJSIP和 Spandsp的移植做了描述。目前,這種實(shí)時(shí)網(wǎng)絡(luò)傳真方案已經(jīng)應(yīng)用到實(shí)際產(chǎn)品中。研究和實(shí)踐表明,該方案具備良好的性能,適用于一些特定行業(yè)和領(lǐng)域中。
【關(guān)鍵詞】傳真; SIP;實(shí)時(shí)網(wǎng)絡(luò)傳真; PJSIP;Spandsp
[Abstract] FOIP, which allows to transmit traditional PSTN fax via the Internet, is gradually getting popular because of the low cost associated with the Internet. This project developed and implemented the FOIP based on embedded platform and SIP protocol by combining embedded technology with sip. This project accomplished the embedded Linux system platform, which is based on AT91SAM9263, and use the Redboot underlying bootstrap program. Based on this, a software design scheme which is based on embedded Linux is proposed. Currently, this real time network facsimile scheme has been applied in real products. The research and practice show that this scheme has superior quality and is suitable for certain branches and fields.
[Key word] Fax, SIP, Real-time FOIP, PJSIP, Spandsp
1.引言
隨著互聯(lián)網(wǎng)通信技術(shù)還有信息處理技術(shù)的發(fā)展,傳統(tǒng)電信業(yè)務(wù)的網(wǎng)絡(luò)化得到迅速發(fā)展?;?IP的多媒體業(yè)務(wù)紛紛涌現(xiàn)。比如 IP電話取代傳統(tǒng)電話,Email取代普通信件,微信取代傳統(tǒng)短信,以及 IP視頻會議的廣泛應(yīng)用。這些網(wǎng)絡(luò)應(yīng)用無時(shí)不刻的影響著人們的現(xiàn)代生活。傳真技術(shù)也逐漸由傳統(tǒng)的電話網(wǎng)傳真過渡到網(wǎng)絡(luò)傳真。網(wǎng)絡(luò)傳真的出現(xiàn),使得人們更加高效,便捷的收發(fā)傳真,且成本低廉。
傳真通信向高速、高效、移動(dòng)、網(wǎng)絡(luò)化和集中管理方向發(fā)展[1];而傳真報(bào)文由簡單的文件傳輸向彩色圖像傳輸發(fā)展。在這種發(fā)展形勢下,傳統(tǒng)傳真通信已經(jīng)無法滿足企業(yè)或個(gè)人的要求,越來越暴露出它的缺點(diǎn)。
網(wǎng)絡(luò)傳真的主要優(yōu)點(diǎn)是節(jié)省巨大的長途電話的開支。當(dāng)用戶使用網(wǎng)絡(luò)傳真時(shí),傳真報(bào)文以 IP包數(shù)據(jù)的形式在 IP網(wǎng)上傳輸。這些 IP網(wǎng)可以是國際互聯(lián)網(wǎng),或者是企業(yè)內(nèi)部網(wǎng)等等。
本文從實(shí)時(shí)網(wǎng)絡(luò)傳真的系統(tǒng)架構(gòu),硬件以及各功能模塊的設(shè)計(jì)等方面進(jìn)行了研究和探索。
2.方案設(shè)計(jì)
實(shí)時(shí)網(wǎng)絡(luò)傳真的框架由三部分組成:底層硬件、內(nèi)核空間、用戶空間。底層硬件,負(fù)責(zé)物理數(shù)據(jù)的收發(fā)和處理;內(nèi)核空間通過 TCP/IP棧和相關(guān)驅(qū)動(dòng)提供網(wǎng)絡(luò)通信服務(wù)和硬件控制;用戶空間則通過軟件實(shí)現(xiàn)網(wǎng)絡(luò)實(shí)時(shí)傳真的主體功能。在用戶空間,同樣也有用戶協(xié)議棧,如 SIP棧、T4/T6等,完成協(xié)議的編碼與解析。整體架構(gòu)采用一個(gè)主控進(jìn)程和其他若干后臺通信進(jìn)程組成。主要模塊有三個(gè):主控模塊、 SIP信令控制管理模塊和 T.38通信模塊。由主控進(jìn)程負(fù)責(zé)調(diào)度管理各通信任務(wù)。由 T.38通信進(jìn)程負(fù)責(zé)完成通信,如圖 1所示。
2.1 硬件設(shè)計(jì)
本方案的硬件平臺主 CPU采用 AT91系列的 AT91SAM9263,其采用 ARM926EJ-S處理器,主頻可高達(dá) 240MHz,擁有豐富的外設(shè)接口;具有 DMA控制器,能夠以盡量少的 CPU時(shí)鐘執(zhí)行大批量的數(shù)據(jù)傳輸;具有 MMU(存儲管理單元),適合運(yùn)行多任務(wù)操作系統(tǒng);同時(shí),AT91SAM9263工作溫度范圍達(dá)-40℃~+85℃,完全能滿足苛刻的工作環(huán)境要求。
外設(shè)存儲器 SDRAM選用 MT48LC16M32A2,16位總線,128Mbit空間;flash存儲器選用 SST39VF6401,Norflash類型,64Mbit空間。網(wǎng)絡(luò)接口芯片采用 DM9161,可支持 10M/100M的速率。硬件框圖如圖 2所示:
2.2 軟件設(shè)計(jì)
操作系統(tǒng)采用 Linux,內(nèi)核為 2.6.23,根據(jù)硬件平臺定制。編譯選用 arm-linux交叉編譯工具鏈。引導(dǎo)程序采用 Redboot。根文件系統(tǒng)制作工具選用 Buildroot和 Busybox。
在網(wǎng)絡(luò)傳真會話的建立時(shí),采用 SIP協(xié)議,本文采用 PJSIP作為實(shí)時(shí)網(wǎng)絡(luò)傳真的信令控制管理模塊。在 SIP會話建立后,本文采用 Spandsp作為 T.38傳輸模塊。Spandsp是數(shù)字信號處理的一套庫函數(shù),用于將圖像轉(zhuǎn)換為音頻信號,或?qū)⒁纛l信號轉(zhuǎn)換為圖像。
軟件共分為三個(gè)部分:主控模塊、 SIP信令控制管理模塊和 T.38通信模塊。主控模塊作為調(diào)度管理通信過程的主要模塊,起著非常大的作用。它負(fù)責(zé)接收人機(jī)界面的命令,通知 SIP信令控制管理模塊開始建立網(wǎng)絡(luò)傳真鏈接,同時(shí)負(fù)責(zé)監(jiān)控管理通信狀態(tài),并隨時(shí)上報(bào)給人機(jī)交互模塊。主控模塊與 SIP信令控制管理模塊的交互采用管道方式。在發(fā)送端,通過命令管道,啟動(dòng) SIP信令控制管理模塊,通過響應(yīng)管道,SIP信令控制管理進(jìn)程告知其通信狀態(tài);在接收端,SIP信令控制管理進(jìn)程監(jiān)控 socket套接字,一旦有網(wǎng)絡(luò)傳真連接,則開始通信過程,同時(shí)通過管道告知通信狀態(tài)。SIP信令控制管理模塊經(jīng)過建鏈、協(xié)商,連接成功后,將啟動(dòng) T.38通信進(jìn)程進(jìn)行傳真過程。
T.38建議中規(guī)定了 SIP/SDP的呼叫建立規(guī)程[2]。中,SIP呼叫建立用于 IP環(huán)境下僅進(jìn)行傳真通信,在此環(huán)境下不提供話音通信。 SIP信令控制管理模塊采用單獨(dú)的 TCP/UDP端口發(fā)送 T.38傳真呼叫,缺省值為 5060,用于呼叫信令。當(dāng)建立網(wǎng)絡(luò)傳真連接后,使用一個(gè)隨機(jī)的 TCP端口傳送傳真信息。SIP呼叫建立共有 5個(gè)階段過程:用戶位置,用戶能力,用戶有效性,呼叫建立和呼叫處理[3]。雙方采用 SDP進(jìn)行能力協(xié)商,以確定網(wǎng)關(guān)或終端支持和使用哪些選項(xiàng)。SDP會話描述是采用 UTF-8文本字符。當(dāng)使用 UDPTL和 TCP傳送時(shí),采用特定的 T.38相關(guān)的屬性來標(biāo)識其能力[4]。
PJSIP的各個(gè)組件通過接口函數(shù) pjsip_endpt_register_module(*endpt,*module)向各 SIP終端實(shí)例注冊,并且進(jìn)行初始化。SIP終端將傳輸層接收到的消息分發(fā)到事務(wù)層、會話層及應(yīng)用層[5]。
在模塊的結(jié)構(gòu)體定義中,收到請求回調(diào)函數(shù) on_rx_request()和收到響應(yīng)回調(diào)函數(shù) on_rx_response()是模塊從 SIP終端或其他模塊收到 SIP信息的主要函數(shù)。它用非零返回值來表明該 SIP消息是否被模塊正確處理[6]。
在一個(gè) SIP消息發(fā)送之前,傳輸模塊管理器將調(diào)用發(fā)送請求回調(diào)函數(shù) on_tx_request()和發(fā)送響應(yīng)回調(diào)函數(shù) on_tx_response()。根據(jù)需要,其他模塊對 SIP消息進(jìn)行修改,最后再發(fā)送出去。
T.38通信模塊主要包括 T.30引擎、T.30消息模擬和控制、IFP組包和解包、UDPTL、 RTP、IAX2、TPTK組包和解包。如圖 3所示。
3.結(jié)束語
實(shí)時(shí)網(wǎng)絡(luò)傳真作為基于 IP技術(shù)的應(yīng)用,已經(jīng)得到廣泛的關(guān)注與發(fā)展。隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,傳真技術(shù)與網(wǎng)絡(luò)結(jié)合的趨勢不可阻擋。通過可擴(kuò)展性和可移植性良好的 SIP信令控制模塊,實(shí)現(xiàn)實(shí)時(shí)網(wǎng)絡(luò)傳真將具有相當(dāng)?shù)默F(xiàn)實(shí)意義。
本文提出的實(shí)時(shí)網(wǎng)絡(luò)傳真的實(shí)現(xiàn)方案具有良好的可移植性和可擴(kuò)展性,已經(jīng)應(yīng)用到某些領(lǐng)域中。測試結(jié)果證實(shí),該實(shí)現(xiàn)方案完全滿足使用需求。
參考文獻(xiàn)
[1]劉立柱,網(wǎng)絡(luò)傳真通信原理與技術(shù),北京,國防工業(yè)出版社,2006,4
[2] ITU-T,T.38 “Procedures for real-time Group 3 facsimile communication over IP networks”, 2007,04
[3] IETF,RFC3261 “SIP: Session Initiation Protocol”, 2002,6
[4] IETF,RFC2327 “SDP: Session Description Protocol”,1998,4
[5] 黃月祥,基于 PJSIP的嵌入式 VoIP終端的研究和實(shí)現(xiàn) [D],昆明,昆明理工大學(xué),2011, 35.
[6] Bennylp,“PJSIP-Dev-Guide Version 0.5.4”, 2006,3