齊 鋮,吳 靜
(1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010;2.特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室,四川 綿陽 621010)
基于XMPP協(xié)議的XML數(shù)據(jù)流壓縮模型研究
齊 鋮1,2,吳 靜1,2
(1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010;2.特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室,四川 綿陽 621010)
XMPP協(xié)議作為基于XML數(shù)據(jù)流的即時(shí)通信協(xié)議,可用于構(gòu)建統(tǒng)一、高效的智能家居監(jiān)控消息推送方案。針對(duì)XMPP協(xié)議存在的流量冗余較大的不足,提出了一種基于容器模型和BWT變換思想的XMPP數(shù)據(jù)流壓縮模型。該模型通過對(duì)XML數(shù)據(jù)流的容器劃分、前綴編碼和預(yù)處理,在單次掃描數(shù)據(jù)流的基礎(chǔ)上達(dá)到壓縮率的最大化。實(shí)驗(yàn)證明,該模型方案能有效節(jié)約XMPP協(xié)議通信過程產(chǎn)生的網(wǎng)絡(luò)流量,并具有可行性。
XMPP協(xié)議;流壓縮;容器模型;BWT
在智能家居系統(tǒng)的應(yīng)用背景中,通過手機(jī)等移動(dòng)終端對(duì)設(shè)備進(jìn)行遠(yuǎn)程控制、監(jiān)測(cè)是基本需求。XMPP協(xié)議(Extensible Messaging and Presence Protocol)是基于XML的開放可擴(kuò)展協(xié)議,用于在兩個(gè)或多個(gè)網(wǎng)絡(luò)實(shí)體之間進(jìn)行結(jié)構(gòu)化和可擴(kuò)展的實(shí)時(shí)信息交流。將該協(xié)議引入智能家居控制領(lǐng)域,可以為異構(gòu)設(shè)備群組成的家居體系提供統(tǒng)一的通信標(biāo)準(zhǔn)。但是XML格式數(shù)據(jù)流中大量的結(jié)構(gòu)信息造成了較大的流量冗余,給移動(dòng)控制終端造成了較大的網(wǎng)絡(luò)流量消耗。因此,基于提高協(xié)議的運(yùn)行效率、消除其流量冗余的考慮,應(yīng)該對(duì)協(xié)議雙方通信過程中產(chǎn)生的數(shù)據(jù)流進(jìn)行有效的壓縮[1]。
現(xiàn)有的XML壓縮工具,如XMill、XGrind、Xpress等都是針對(duì)靜態(tài)XML文檔,對(duì)動(dòng)態(tài)數(shù)據(jù)流的支持不理想[2]。王騰蛟等提出了一種XSC壓縮算法,該方法借助DTD和字典壓縮思想構(gòu)建高效的索引完成對(duì)數(shù)據(jù)流的實(shí)時(shí)壓縮[3]。張曉琳等提出了一種基于動(dòng)態(tài)Huffman編碼的XML數(shù)據(jù)流壓縮技術(shù),該算法利用XML Schema和動(dòng)態(tài)樹結(jié)構(gòu)進(jìn)行編碼,達(dá)到壓縮目的[4]。本文根據(jù)XMPP協(xié)議數(shù)據(jù)流傳輸?shù)奶攸c(diǎn),結(jié)合容器劃分理念和BWT的思想,構(gòu)建了一種基于容器模型和BWT預(yù)處理的非對(duì)稱XML數(shù)據(jù)流壓縮方法。該方法單次掃描數(shù)據(jù)流,不用借助DTD和XML Schema等格式定義文檔,并有較好的壓縮效率。
1.1 XML數(shù)據(jù)流壓縮算法的原理
本算法針對(duì)實(shí)時(shí)傳輸?shù)腦ML數(shù)據(jù)流,結(jié)合XML數(shù)據(jù)格式的特點(diǎn),考慮將數(shù)據(jù)流中的相關(guān)節(jié)點(diǎn)利用SAX解析器解析形成觸發(fā)事件流,并觸發(fā)對(duì)應(yīng)的處理程序,處理程序結(jié)合靜態(tài)存儲(chǔ)的字典,利用前綴索引編碼將數(shù)據(jù)分別存放到對(duì)應(yīng)結(jié)構(gòu)的結(jié)構(gòu)容器和對(duì)應(yīng)內(nèi)容的內(nèi)容容器中,達(dá)到結(jié)構(gòu)與內(nèi)容分離的目的。然后,將分離的每個(gè)容器中的內(nèi)容進(jìn)行BWT變換的預(yù)處理,變換的目的是將容器內(nèi)相關(guān)語義的編碼盡量靠攏,減小信息熵,這樣可以有效地提高對(duì)內(nèi)容進(jìn)行字典壓縮的壓縮率。
算法的整體框架圖如圖1所示。
圖1 整體框架圖
1.2 基于改進(jìn)的字典編碼的容器劃分模型
1.2.1 數(shù)據(jù)流容器劃分思想
容器劃分模型參考了標(biāo)準(zhǔn)XMill壓縮器的思想,XML數(shù)據(jù)流經(jīng)過SAX解析器后,數(shù)據(jù)流被解析成觸發(fā)事件流,根據(jù)傳輸?shù)腦ML流中的結(jié)構(gòu)和數(shù)據(jù)部分觸發(fā)事件的不同,將數(shù)據(jù)流中的結(jié)構(gòu)部分和數(shù)據(jù)部分[5]按靜態(tài)字典與前綴索引結(jié)合的方式進(jìn)行編碼,分別進(jìn)行收集和壓縮??紤]到XMPP協(xié)議是基于規(guī)范性和統(tǒng)一性格式的,即協(xié)議傳遞的數(shù)據(jù)包中的XML元素標(biāo)簽和屬性標(biāo)簽是固定的,一段通信過程的協(xié)議格式為:
stream標(biāo)簽標(biāo)志一段數(shù)據(jù)流的開始。
圖2 容器劃分模塊流程圖
1.2.2 結(jié)構(gòu)索引字典編碼
一般常用的字典編碼壓縮方法,為了算法的實(shí)時(shí)性,往往選擇動(dòng)態(tài)構(gòu)建字典的形式,這在處理大型的內(nèi)容未知的靜態(tài)XML文檔時(shí)是一種較好的處理方式[7]。但常規(guī)字典編碼方案在動(dòng)態(tài)構(gòu)建字典時(shí)會(huì)消耗較多時(shí)間。對(duì)于XMPP協(xié)議支持的通信雙方實(shí)時(shí)傳輸?shù)臄?shù)據(jù)流,基于協(xié)議結(jié)構(gòu)節(jié)點(diǎn)固定這一特性,考慮采用事先設(shè)定好的靜態(tài)字典形式,并在編碼字典索引中加入前綴索引以便接受方快速定位每一個(gè)XML節(jié)中的信息體。通過上一節(jié)抓取的實(shí)際XMPP數(shù)據(jù)流闡述改進(jìn)的字典編碼步驟。該數(shù)據(jù)流展示了XMPP客戶端test1向test2發(fā)送一段消息指令,內(nèi)容為:“uid=1&devid=2&ordercode=3&ordervalue=26”。數(shù)據(jù)流經(jīng)過SAX解析器后,由SAX的事件觸發(fā)機(jī)制,將數(shù)據(jù)流按觸發(fā)事件的不同分別引入元素、屬性和內(nèi)容三個(gè)容器中。
根據(jù)上一節(jié)所述,設(shè)定一個(gè)靜態(tài)的結(jié)構(gòu)字典,如表1所示,結(jié)構(gòu)字典中包含有標(biāo)準(zhǔn)XMPP協(xié)議中定義的全部XML節(jié)。
表1 靜態(tài)結(jié)構(gòu)字典
根據(jù)表1所示的靜態(tài)結(jié)構(gòu)字典,可以方便地將數(shù)據(jù)流中的“結(jié)構(gòu)信息”進(jìn)行字典順序編碼并得到如下結(jié)果:0a 1a 1d ff 0b 1a 1b 1c 0b 1a 1b 1c 0c 1a 1b 1c 1d 0d ff 0e ff ff;通過對(duì)以上結(jié)果的分析可以發(fā)現(xiàn),因?yàn)閰f(xié)議數(shù)據(jù)流中元素的嵌套結(jié)構(gòu)較多,而“屬性”結(jié)構(gòu)通過簡(jiǎn)單的字典編碼并不能確定其具體屬于哪一個(gè)元素。因此,本文考慮在對(duì)數(shù)據(jù)流的結(jié)構(gòu)信息進(jìn)行基礎(chǔ)的字典編碼時(shí),動(dòng)態(tài)加入與其所屬的元素對(duì)應(yīng)的前綴索引信息,如表2。
表2 前綴索引的字典編碼
包含前綴索引的字典編碼按容器劃分方法依次填入相關(guān)容器,以message節(jié)點(diǎn)為例,最終容器劃分結(jié)果以及各容器中的數(shù)據(jù)如表3所示。
表3 message節(jié)點(diǎn)容器劃分
1.3 BWT變換思想
BWT變換也稱作塊排序,是一種針對(duì)一個(gè)數(shù)據(jù)塊的排序壓縮方法,其目的是將數(shù)據(jù)塊中出現(xiàn)頻率較高、重復(fù)出現(xiàn)的數(shù)據(jù)段盡量整合到一起。其核心思想是對(duì)目標(biāo)數(shù)據(jù)塊中的內(nèi)容進(jìn)行矩陣變換。BWT變換本身并不會(huì)減小數(shù)據(jù)塊的大小,只是改變了排序順序[8]。根據(jù)信息論中關(guān)于信源信息熵的定義,將一個(gè)隨機(jī)變量的熵表示為:
(1)
其中P(xi)為信源取第i個(gè)符號(hào)的概率。
根據(jù)數(shù)據(jù)壓縮的原理,假設(shè)一個(gè)包含n個(gè)字符的字符串,每個(gè)字符的出現(xiàn)概率為p1,p2…pn,那么經(jīng)過任何壓縮算法后的二進(jìn)制占位至少為:
(2)
式(2)的結(jié)果可理解為字符串的壓縮極限:∑log2(1/pn)??梢?,對(duì)于長(zhǎng)度相同的數(shù)據(jù),p決定了壓縮極限的大小,p越大表明文件越有規(guī)律,其壓縮極限越小[9]。根據(jù)實(shí)驗(yàn)可以發(fā)現(xiàn),經(jīng)過BWT變換的數(shù)據(jù)塊,相同的字符會(huì)趨向于聚集在一起,信息熵比原始數(shù)據(jù)源小,因此有更小的壓縮極限值。
BWT變換基于字符串矩陣的變換。假設(shè)輸入的數(shù)據(jù)為字符串:“ABCACBBD”,使用BWT變換對(duì)該字符串進(jìn)行預(yù)處理,步驟如下:
(1)構(gòu)造N×N矩陣O,O中每一行是原字符串依次左移構(gòu)成。
(2)對(duì)O矩陣中的行按字典順序遞減重新排列,得到矩陣O′。
(3)輸出O′矩陣的最后一列以及原字符串在O′矩陣中的行數(shù),即(L,index)=([DCCABBAB],1),可方便進(jìn)行反變換以還原原字符串。
BWT變換將出現(xiàn)頻率較高的字母排列在一起。以常規(guī)LZW編碼為例,一段160 B的數(shù)據(jù)的原字符串與BWT變換后的字符經(jīng)過LZW編碼后的壓縮率分別為80%和71.25%,有明顯提升。XMPP協(xié)議傳輸?shù)臄?shù)據(jù)流具有較多的重復(fù)字符,適合將BWT變換引入其中作為常規(guī)數(shù)據(jù)壓縮前的預(yù)處理。在接收實(shí)體接收到經(jīng)過BWT變換的內(nèi)容后,根據(jù)前序查找的方法,以原字符串末尾為起始,可以還原字符串。
對(duì)上述容器劃分模型在Intel Core i5/3.1 GHz的PC上進(jìn)行試驗(yàn)驗(yàn)證,運(yùn)行環(huán)境為Windows7旗艦版操作系統(tǒng)。實(shí)驗(yàn)使用的服務(wù)器端為openfire3.9.3,使用的客戶端為基于Smack開發(fā)包開發(fā)的模擬用戶端。數(shù)據(jù)源為抓包軟件采集的智能空調(diào)設(shè)備與手機(jī)App之間的監(jiān)測(cè)、控制數(shù)據(jù)流。
通過表4對(duì)比可見,采用了本文所述的壓縮方案后,網(wǎng)絡(luò)中傳輸?shù)囊粋€(gè)完整通信過程所需的數(shù)據(jù)流大小與原始數(shù)據(jù)流相比有了明顯減小。
表4 一段通信數(shù)據(jù)大小
模擬用戶對(duì)智能設(shè)備進(jìn)行控制并接收設(shè)備上報(bào)的監(jiān)測(cè)信息,設(shè)備每10 s上報(bào)一次實(shí)時(shí)數(shù)據(jù),用戶每分鐘對(duì)設(shè)備發(fā)送一條控制指令。通過“科來”網(wǎng)絡(luò)流量監(jiān)測(cè)軟件對(duì)一個(gè)時(shí)段內(nèi)流經(jīng)協(xié)議端口5222的數(shù)據(jù)流量在不經(jīng)過壓縮處理、經(jīng)過基本LZW編碼壓縮處理和經(jīng)過本文壓縮模型處理后的統(tǒng)計(jì)如圖3所示。
圖3 流量統(tǒng)計(jì)對(duì)比圖
可見經(jīng)過本文設(shè)計(jì)的壓縮模型改進(jìn)的服務(wù)器端,通信協(xié)議產(chǎn)生的網(wǎng)絡(luò)流量與原始服務(wù)器和啟用了默認(rèn)LZW壓縮方案的服務(wù)器端相比有了一定的減少,且隨著時(shí)間的增加,流量節(jié)約更加明顯。
本文針對(duì)XMPP協(xié)議數(shù)據(jù)流量冗余的問題,提出了一種使用于XML數(shù)據(jù)流的基于改進(jìn)的字典編碼的容器劃分模型算法,該算法可以在不破壞協(xié)議實(shí)時(shí)性的基礎(chǔ)上,對(duì)XMPP協(xié)議通信雙方的XML流進(jìn)行結(jié)構(gòu)索引字典編碼,分結(jié)構(gòu)和內(nèi)容分別進(jìn)行壓縮,同時(shí)針對(duì)信息體中重復(fù)字符較多的特點(diǎn)對(duì)信息體采用BWT編碼預(yù)處理。實(shí)驗(yàn)證明,基于改進(jìn)的字典編碼的容器劃分模型可以有效減少XML數(shù)據(jù)流的冗余,達(dá)到節(jié)約網(wǎng)絡(luò)流量的目的。適用于需要長(zhǎng)連接的智能家居檢測(cè)、控制系統(tǒng)中。
[1] 劉涌,張彥功,梁崑濤. 移動(dòng)設(shè)備上 XMPP 功耗與帶寬的研究[J]. 小型微型計(jì)算機(jī)系統(tǒng),2013,34(2):272-276.
[2] 鐘世明,邵銳,張勝,等. 基于位置服務(wù)系統(tǒng)中XML數(shù)據(jù)流壓縮方法[J]. 武漢理工大學(xué)學(xué)報(bào),2006,30(1):29-32.
[3] 王騰蛟,高軍,楊冬青,等. 面向 XPath 執(zhí)行的 XML 數(shù)據(jù)流壓縮方法[J]. 軟件學(xué)報(bào),2005,16(5):870-877.
[4] 張曉琳,翟國(guó)峰,譚躍生,等. 基于動(dòng)態(tài)哈夫曼編碼的XML數(shù)據(jù)流壓縮技術(shù)[J]. 內(nèi)蒙古科技大學(xué)學(xué)報(bào),2007,26(4):332-336.
[5] 李瑞. XMLPre:一種基于預(yù)處理的XML壓縮算法[D]. 西安:西安電子科技大學(xué),2014.
[6] 周文瓊,王樂球,周桐,等. 基于XMPP 的企業(yè)即時(shí)通信系統(tǒng)研究與應(yīng)用[J]. 吉林大學(xué)學(xué)報(bào),2010,28(1):108-111.
[7] 許霞,馬光思,魚濤. LZW 無損壓縮算法的研究與改進(jìn)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(4):126-127.
[8] 王磊,孟昭鵬,劉亞瓊. 一種基于LFU置換的BWT壓縮算法的改進(jìn)[J]. 微計(jì)算機(jī)應(yīng)用,2008,29(3):80-83.
[9] 鄧宏貴,王晉秀,曹莉凌,等. 基于 BWT 改進(jìn)的 LZW 算法在傳感器網(wǎng)絡(luò)中的應(yīng)用[J].傳感技術(shù)學(xué)報(bào),2008,21(6):1048-1051.
Research on XML stream compression model based on XMPP protocol
Qi Cheng1,2,Wu Jing1,2
(1.School of Information Engineering, Southwest University of Science and Technology, Mianyang 621010, China;2. Robot Technology Used for Special Environment Key Laboratory of Sichuan Province, Mianyang 621010, China)
As an instant messaging protocol based on XML data stream, Extensible Messaging and Presence Protocol(XMPP) can be used in constructing a unified, efficient smart home monitoring message push program.Aiming at the disadvantage of XMPP on traffic redundancy, a XMPP stream compression model based on container model and BWT transform thought is proposed.According to container division, prefix code and pretreatment of XML stream, this model on the basis of single scanning data stream,reaches the maximization of compression ratio.Experiment proved that the program can effectively save the network traffic of XMPP communication process ,and with feasibility.
XMPP protocol; stream compression; container model; BWT
TP391
A
1674-7720(2016)01-0060-03
齊鋮,吳靜.基于XMPP協(xié)議的XML數(shù)據(jù)流壓縮模型研究[J].微型機(jī)與應(yīng)用,2016,35(1):60-62,66
2015-09-02)
齊鋮(1990-),通信作者,男,碩士研究生,主要研究方向:網(wǎng)絡(luò)通信、協(xié)議分析。E-mail:15228354495@163.com。
吳靜(1963-),女,副教授,主要研究方向:通信技術(shù)、三網(wǎng)融合。