• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    MQTT數(shù)據(jù)交換協(xié)議的分析與優(yōu)化

    2019-03-17 09:36:34李娜陳福朱建明黃勇峰張艷梅
    網(wǎng)絡空間安全 2019年9期

    李娜 陳?!≈旖鳌↑S勇峰 張艷梅

    摘? ?要:為了提高消息代理服務器在設備數(shù)量、傳輸消息數(shù)量增長以及網(wǎng)絡環(huán)境復雜程度增加的情況下的傳輸效率,文章選擇Mosquitto作為MQTT的消息代理服務器,使用epoll機制代替poll機制,并對其訂閱樹的存儲結構和遍歷過程進行了優(yōu)化。提出了將鍵樹多重鏈表表示法中的分支結點思想應用于訂閱樹結構和使用了哈希表的方法來管理訂閱主題和訂閱者的思想。并提出了動態(tài)空閑空間管理機制。測試結果顯示優(yōu)化之后的Mosquitto在高并發(fā)、高負荷下具有更高的性能。

    關鍵詞:Mosquitto;MQTT通信協(xié)議;發(fā)布訂閱模式;哈希表;epoll機制

    中圖分類號:TP393.0? ? ? ? ? 文獻標識碼:A

    Abstract: In order to improve the transmission efficiency of the message proxy server in the case of the number of devices, the number of transmitted messages, and the complexity of the network environment, This paper chose Mosquitto as the message proxy server of MQTT, using epoll mechanism instead of polling mechanism, and optimizing the storage structure and traversal process of its subscription tree. The idea of applying the branch node idea in the multi-linked list representation of the key tree to the subscription tree structure and using the hash table to manage the subscription topic and subscribers is proposed. And the dynamic free space management mechanism is proposed. The test results show that the optimized Mosquitto has higher performance under high concurrency and high load.

    Key words: Mosquito; MQTT communication protocol; Publish and subscribe mode; Hash table; Epoll mechanism

    1 引言

    信息技術的發(fā)展不斷改變著人們的日常生活。特別是5G網(wǎng)絡的到來,物聯(lián)網(wǎng)技術正在影響著人類衣食住行的各個方面。從簡單的智能可穿戴設備到智慧物流、農(nóng)業(yè)、工業(yè)、服務業(yè)等應用中,可以看出物聯(lián)網(wǎng)技術有巨大的發(fā)展?jié)摿褪袌銮熬?。無論從降本增效上,還是在提高人類生活質量上,物聯(lián)網(wǎng)技術都占據(jù)著重要的作用[1~3][29]。

    目前,物聯(lián)網(wǎng)在市場中的占比不斷增多,物聯(lián)網(wǎng)硬件設備的需求量也連續(xù)增長。預計到2020年,全球物聯(lián)網(wǎng)設備的連接量會達到500億臺[4~6]。其中,占比最多的為移動互聯(lián)網(wǎng)與智能終端的連接。所以,在數(shù)據(jù)傳輸方面功耗和性能都比較低。MQTT協(xié)議恰是為低帶寬、不穩(wěn)定網(wǎng)絡及計算和處置能力不足的設備所設計的,協(xié)議采用輕量型傳輸,耗費電量小,能最大程度降低網(wǎng)絡流量開銷,達到最小化消息包并高效分配與傳輸[7~9]。隨著云計算和云存儲等網(wǎng)絡應用的發(fā)展,如今的數(shù)據(jù)中心中的服務器節(jié)點數(shù)量已有百萬多個[10]。然而,目前的消息代理服務器并不能高效的管理數(shù)據(jù)流的傳輸,使得數(shù)據(jù)通信效率低下。所以,實現(xiàn)代理服務器的優(yōu)化,提高數(shù)據(jù)通信效率顯得尤為重要。

    本文選擇Mosquitto作為MQTT的消息代理服務器,使用epoll機制代替poll機制[11],并對其訂閱樹的存儲結構和遍歷過程進行了優(yōu)化,提出了將鍵樹多重鏈表表示法中的分支結點思想應用于訂閱樹結構和使用了哈希表的方法來管理訂閱主題和訂閱者的思想。同時,研究了Mosquitto[12]在用戶斷開連接時對空閑出來的空間進行管理的情況,以及新用戶連接進來時的處理過程,分析了目前這種管理方法存在的缺陷,提出了運用指定長度動態(tài)數(shù)組的方法進行空閑空間的管理。從而滿足復雜網(wǎng)絡環(huán)境或設備量劇增時數(shù)據(jù)流可以高效的進行傳輸?shù)男枨蟆?/p>

    2 相關工作

    通過國內外對于MQTT的研究可以看出,這些研究主要集中在對MQTT的應用上,并且取得了一定的成果。但是對于傳輸消息的管理方面的研究卻少之又少。對通信消息的管理以及優(yōu)化可以節(jié)省通信時長,達到高效的消息傳輸。

    在國外,由于物聯(lián)網(wǎng)技術起步比較早,所以針對MQTT的研究也比較多。有在發(fā)布訂閱機制方面的研究,也有在主題匹配算法領域的研究。其中,在主題匹配算法的研究上,Gough等人[13]提出了一種基于搜索樹的匹配算法,但是當并行發(fā)送的請求增多時或者有請求取消時,這種算法不能很好的對搜索樹進行修改。Aguilera等人[14]同樣通過遍歷發(fā)布訂閱樹獲得匹配成功的訂閱請求,但是卻只將部分重復的謂詞考慮在內。Silvia等人[15]將R-tree應用于基于內容的發(fā)布訂閱匹配中,并將三種R-tree變形用于基于內容的數(shù)據(jù)傳輸中,在避免假陰性的同時也減少了假陽性的發(fā)生。Hu等人[16]研究了參數(shù)化空間文本訂閱的位置感知發(fā)布訂閱問題,提出了過濾器驗證框架,有效的向相關訂閱者傳遞了消息。Guo等人[17]開發(fā)了一個高效的位置感知發(fā)布/訂閱系統(tǒng)Elaps,該系統(tǒng)使用R-tree進行內容匹配,當移動用戶的位置附近出現(xiàn)匹配事件時,會迅速的通知給移動用戶。

    在國內,對于MQTT的研究也不斷增多,2007年第一次出現(xiàn)對于MQTT的研究,當時國內也只有一篇文章提到了MQTT,作者李強在多個Zigbee監(jiān)測網(wǎng)絡遠程監(jiān)控的實現(xiàn)中通過MQTT協(xié)議實現(xiàn)管理應用、監(jiān)測網(wǎng)絡中網(wǎng)關節(jié)點與中間層消息代理間的數(shù)據(jù)傳輸[18]。目前,對于MQTT的研究達到了上百篇。較多的文獻針對MQTT協(xié)議在消息推送領域的應用進行了探討和研究,以探討MQTT協(xié)議在教育、醫(yī)療、通信、農(nóng)業(yè)等領域的應用[19~21]。具有代表性的文章來源于李宏等人[22],提出了基于MQTT的安卓手機防盜方法,測試表明該方法提高了安全性和可靠性。方霞[23]設計了基于MQTT的農(nóng)業(yè)物聯(lián)網(wǎng)消息推送系統(tǒng),實現(xiàn)了對農(nóng)業(yè)遠程監(jiān)控的功能。崔自賞[24]將MQTT通信協(xié)議用于電梯監(jiān)控系統(tǒng),用來實現(xiàn)終端與云服務器之間的數(shù)據(jù)傳輸,將終端獲得的電梯實時狀態(tài)信息與故障情況上傳到遠程服務器,可以達到對電梯進行實時監(jiān)控的目的。

    而且,國內對于MQTT通信協(xié)議代理服務器的研究也不斷增多。 其中曾昂[25]等人提出了一款適合大文件傳輸?shù)膫鬏敺绞?,該方式以消息為主體,每個訂閱者共享一份拷貝,統(tǒng)一進行發(fā)送,降低了內存的占用空間。任亨以 Mosquitto、Redis等開源項目為基礎設計并實現(xiàn)了一個基于 MQTT 協(xié)議的消息推送服務器, 能夠對用戶訂閱的消息進行推送, 還實現(xiàn)了用戶身份驗證、ACL 權限檢查、自動訂閱話題、熱點話題統(tǒng)計、服務器狀態(tài)監(jiān)控等功能[9]。

    由此可見,隨著MQTT協(xié)議的逐漸成熟,該協(xié)議在互聯(lián)網(wǎng)通信行業(yè)扮演著越來越重要的角色。同時,對于代理服務器內部發(fā)布訂閱匹配機制的研究在國外也在不斷的完善,技術不斷成熟,為本課題的研究提供了大量的文獻基礎。

    3 MQTT數(shù)據(jù)交換協(xié)議的優(yōu)化

    3.1發(fā)布/訂閱模式優(yōu)化設計

    發(fā)布/訂閱模式是一種消息轉發(fā)模式,在該模式中,消息的發(fā)布者和訂閱者并不需要直接建立通信,只需要通過中間的消息代理服務器進行間接通信。中間的傳輸中介稱為節(jié)點,也被成為主題(topic)。這種模式與TCP協(xié)議相比,解耦了用戶之間的依賴性。

    在Mosquitto中,將所有的topic和客戶端的訂閱關系存放在訂閱樹中。對于不同的topic,Mosquitto根據(jù)/進行分割,然后以樹形結構的方式將這些片段相連,組成一棵訂閱樹。每個節(jié)點所對應的topic為從根節(jié)點到該節(jié)點所組成的節(jié)點數(shù)。對于訂閱者來說,每個訂閱者的客戶端信息都掛在對應的topic下邊。例如有如圖1所示的訂閱樹結構。

    如圖1所示的訂閱樹,其中每個節(jié)點都是一個topic分級,每個節(jié)點對應的訂閱topic由從根節(jié)點到當前節(jié)點所經(jīng)過順序路徑節(jié)點組成。每個節(jié)點上連接的列表為訂閱從根節(jié)點到該節(jié)點組成主題的訂閱者列表。

    在Mosquitto程序中,訂閱樹中存放的topic消息包括兩大類,為系統(tǒng)topic和業(yè)務topic。一般將存儲客戶端訂閱topic的樹命名為業(yè)務子樹,將保存客戶端連接信息的子樹命名為系統(tǒng)子樹。系統(tǒng) topic用于維護系統(tǒng)消息,業(yè)務topic用于維護客戶端訂閱的主題。Mosquitto程序代碼中mqtt3_handle_publish()函數(shù)內存在一個字段retain,根據(jù)該字段的不同取值,這兩種類型的topic在生存周期、創(chuàng)建時間和存儲結果方面存在差異。

    (1)Mosquitto中訂閱樹的創(chuàng)建

    Mosquito程序在啟動時就已經(jīng)創(chuàng)建好三個節(jié)點,分別為總根節(jié)點、業(yè)務根節(jié)點和系統(tǒng)根節(jié)點,如圖2所示。

    其中,業(yè)務根節(jié)點和系統(tǒng)根節(jié)點為總根節(jié)點的子節(jié)點,在創(chuàng)建開始,業(yè)務根節(jié)點和系統(tǒng)根節(jié)點中的topic存儲不同,業(yè)務根節(jié)點存的為空字符串,系統(tǒng)根節(jié)點中存的是字符串“$SYS”。訂閱樹的創(chuàng)建過程在mqtt3_db_open()函數(shù)中實現(xiàn)。

    1)消息發(fā)布時搭建

    在Mosquitto中,當訂閱樹搭建部分為系統(tǒng)子樹或者是retain為1的消息發(fā)布時的業(yè)務子樹,在消息發(fā)布時都可以進行搭建。以向系統(tǒng)topic:$SYS/broker/version發(fā)送版本消息“Mosquitto version 1.2”為例,搭建過程如下:

    首先將發(fā)布的topic根據(jù)“/”進行拆分,存儲到鏈表中。上述topic被拆分成$SYS、broker、version三個片段。

    然后,找到對應的子根節(jié)點,根據(jù)總根節(jié)點的孩子節(jié)點中topic的存儲情況,找到存放內容為$SYS的節(jié)點為系統(tǒng)子樹根節(jié)點。

    其次,對子根節(jié)點的topic進行遍歷,遍歷節(jié)點片段“$SYS”的下一個節(jié)點片段“broker”是否存在。如果不存在,需要產(chǎn)生一個新的節(jié)點;如果已經(jīng)存在,繼續(xù)遍歷節(jié)點片段“broker”的下一個節(jié)點片段是否有“version”,無則添加,有則結束。添加節(jié)點在函數(shù)mqtt3_db_messages_queue()中調用函數(shù)_sub_add()實現(xiàn)。

    最后,釋放掉存放topic片段的鏈表。

    消息發(fā)布時訂閱樹的搭建流程如圖3所示。

    2)消息訂閱時樹的搭建

    當retain字段值為0時,業(yè)務子樹在有訂閱客戶端訂閱消息時才能創(chuàng)建。以訂閱客戶端向Mosquitto訂閱了topic:country/city/district為例,具體實現(xiàn)過程如下:

    首先將訂閱的topic根據(jù)/進行拆分,并放入鏈表中。上述topic被拆分成country、city、district三個片段。

    然后,找到對應的子根節(jié)點,根據(jù)總根節(jié)點的孩子節(jié)點中topic的存儲情況,找到存放內容為非$SYS的節(jié)點為業(yè)務子樹根節(jié)點。

    其次,遍歷業(yè)務子樹中的topic是否與拆分的發(fā)布topic鏈表中的topic相同,如果不相同則為其添加該節(jié)點。具體過程在函數(shù)mqtt3_sub_add中實現(xiàn)。

    最后,在所有訂閱節(jié)點存在于訂閱樹中之后,查看該主題的訂閱者是否存在,如果存在,將結點存入訂閱樹中,否則丟棄。釋放掉存放訂閱topic的鏈表。

    3.2? Mosquitto中訂閱樹機制的分析與優(yōu)化

    (1)優(yōu)化原因

    Mosquito通過訂閱樹來管理主題和訂閱者。其對主題的管理是用“/”將主題分隔開并存儲到一棵訂閱樹中,從樹的根節(jié)點到任意一個節(jié)點所經(jīng)過的路徑為一條主題訂閱規(guī)則。每個節(jié)點都管理著該節(jié)點所對應的訂閱列表,該列表中存儲了訂閱對應主題客戶端的主要信息。所以訂閱主題的數(shù)量和分級直接決定了樹的形狀,從而影響操作效率。在Mosquitto中對訂閱樹的主要操作為查找、插入和刪除,這些操作都需要對訂閱樹的每一個層級進行遍歷。

    以插入為例,首先將訂閱主題的每個分級與訂閱樹每層的節(jié)點進行對比,依次搜索相同的節(jié)點,如果找到,則進行下一級匹配,一直到所訂閱的主題全部匹配完成,然后將訂閱的內容掛到對應節(jié)點的訂閱者列表中。如果存在一些分級無法匹配成功,說明訂閱樹中還不存在該主題,需要將該主題中不匹配的節(jié)點加入到訂閱樹中,然后將訂閱內容掛到當前生成的節(jié)點的訂閱者列表中。具體匹配流程如圖4所示。

    如果訂閱主題當前的分級不為空,同時能夠匹配上訂閱樹中節(jié)點中的內容,則進行下一個分級內容的比較。如果訂閱主題當前的分級不為空,但是不能匹配上訂閱樹中節(jié)點中的內容,需要為訂閱樹當前分級插入一個節(jié)點,繼續(xù)以插入節(jié)點為根節(jié)點進行下一層級的匹配。如果訂閱主題列表為空,將訂閱主題的內容掛到訂閱列表中。

    Mosquito采用的這種訂閱樹的發(fā)布/訂閱模式可以提供清晰的邏輯,有利于開發(fā)和維護。但是每一個客戶端的訂閱和發(fā)布過程都需要對樹進行遍歷,當樹極其龐大,特別是訂閱客戶端網(wǎng)絡連接狀況差時的頻繁重連操作,對訂閱樹的遍歷操作不斷增加,降低了運行效率。

    (2)優(yōu)化方案

    1)優(yōu)化方案一

    對于Mosquitto中訂閱樹搜索時存在的缺陷,使用鍵樹的思想進行優(yōu)化。主要優(yōu)化方案是在訂閱樹根節(jié)點的下一個節(jié)點建立索引,索引為a-z的26個字母,第27個為其他字符,方便起見,存字母‘z的ASCII的下一個值‘{。

    鍵樹,又被稱為數(shù)字查找樹,它是一棵度大于等于2的樹,樹中的每個節(jié)點只包含組成關鍵字的符號,并不是一個或幾個關鍵字。如關鍵字是數(shù)值,則節(jié)點中存儲的為一個數(shù)位;如果關鍵字為單詞,則節(jié)點中存儲的為單詞的字母字符。這種樹形的結構會給類型為關鍵字查找的表帶來方便。

    鍵樹有兩種存儲結構,樹的孩子兄弟鏈表存儲和樹的多重鏈表存儲。其中樹的多重鏈表存儲又叫做Trie樹。若從鍵樹中某個結點到葉子結點的路徑上每個結點都只有一個孩子,則可將該路徑上所有結點壓縮成一個“葉子結點”,且在該葉子節(jié)點中存儲關鍵字及指向記錄的指針等信息。

    根據(jù)鍵樹中分支節(jié)點中的存儲思想,將發(fā)布訂閱樹中的業(yè)務根節(jié)點的下一個結點設置為27個,存儲從a-z的26個字符,第27個結點存儲為其他字符。具體結構圖如圖5所示。

    具體實現(xiàn)

    首先,初始化業(yè)務子樹的第一層葉子結點

    然后,獲取topic第一個片段的首字母,全變?yōu)樾懽帜福绻莂-z之間的英文字符,則進入對應的結點進行查找,否則進入第27個結點進行查找。

    最后topic進行匹配查找,查找過程與原始Mosquitto相同,在函數(shù)_sub_search中完成。

    2)優(yōu)化方案二

    根據(jù)Mosquitto中訂閱樹存在的缺陷,對Mosquitto的發(fā)布訂閱機制進行優(yōu)化。主要優(yōu)化方法為將訂閱樹的存儲方式變?yōu)楣1泶鎯Α91硎峭ㄟ^關鍵碼值對表直接進行訪問的數(shù)據(jù)結構,也稱為散列表。為了快速對表進行查找,通過算法函數(shù)將關鍵碼值映射到表中的一個位置,而這個算法函數(shù)也稱為散列函數(shù)或哈希函數(shù)。

    本文使用哈希表存儲主要是為了能夠根據(jù)訂閱主題快速查找到主題訂閱者列表。有學者已經(jīng)使用哈希表存儲訂閱主題和訂閱者列表[26-27]。哈希表中的key值為訂閱者訂閱的主題,內容是從根節(jié)點到當前節(jié)點所組成的topic;value值為每個主題對應的訂閱者列表的地址。哈希表組成如圖6所示。

    但是上述存儲方式也存在一定的缺陷,當訂閱主題量劇增,哈希表長度較長時,在匹配訂閱主題時,需要進行較多的主題查找,效率低下。

    本文提出在哈希表前邊添加一個鏈表進行索引。首先,將訂閱主題的第一個節(jié)點根據(jù)首字母進行分組,將大寫字母統(tǒng)一變?yōu)樾懽帜?,將第一個節(jié)點為非字母的分為一組;然后,申請一個長度為27的鏈表,前26個存儲的為主題節(jié)點首字母為‘a(chǎn)-z的哈希表的開始地址,第27個為主題節(jié)點為非字母的其他節(jié)點開始地址。具體實現(xiàn)方式如圖7所示。

    (3)優(yōu)化實現(xiàn)

    訂閱機制的優(yōu)化主要集中在文件subs.c中,具體則涉及以下接口函數(shù)。

    為了實現(xiàn)本次優(yōu)化,在subs.c文件中添加了對哈希表操作的函數(shù),和一個哈希表結構體。

    struct my_struct{

    char *name;

    struct _mosquitto_subhier *sub_node;

    UT_hash_handle hh;

    };

    其中,name是鍵(key);sub_node是值,保存結構體指針類型的節(jié)點;hh是內部使用的哈希處理句柄,只需要定義該變量,并不需要進行賦值。

    首先,初始化一個空的哈希表為g_hash_topic_table,接下來為對哈希表的操作的主要函數(shù)。

    其中,函數(shù)get_node_by_topic根據(jù)訂閱主題調用HASH_FIND_STR函數(shù)獲得訂閱節(jié)點。

    函數(shù)get_address_by_topic根據(jù)訂閱主題首字母獲取索引列表中存放的哈希表地址。

    函數(shù)set_hash_topic調用HASH_ADD_KEYPTR函數(shù)實現(xiàn)對topic的添加。

    函數(shù)del_node_by_topic調用HASH_DEL函數(shù)完成對節(jié)點的刪除操作。

    函數(shù)clear_hash_topic_table首先通過HASH_ITER對節(jié)點進行遍歷,然后調用HASH_DEL刪除節(jié)點。

    函數(shù)db_messages_quick_queue實現(xiàn)對節(jié)點的查找并添加,例如發(fā)布消息給主題a/b/c,需要尋找a/#,a/b/#,a/b/c/#,a/b/c等結構。然后調用set_hash_topic實現(xiàn)節(jié)點添加。

    函數(shù)send_topic實現(xiàn)對消息的發(fā)送功能。

    同時在原有函數(shù)中對以上函數(shù)進行調用,改變了原有函數(shù)的功能。其中在函數(shù)mqtt3_sub_add中,主要完成訂閱操作,首先根據(jù)訂閱主題首字母獲得哈希表中該主題可能所在地址范圍,然后查看哈希表中是否存在該訂閱主題,如果存在,則將訂閱內容掛載到訂閱列表中,如果不存在,則新建一個結構體存儲訂閱主題,訂閱內容掛到該主題的訂閱列表中。

    函數(shù)mqtt3_db_messages_queue主要實現(xiàn)消息發(fā)布操作,對發(fā)布主題進行拆分,搜索以‘#結尾的子主題是否在哈希表中,如果存在則進行發(fā)送。

    函數(shù)mqtt3_sub_remove和mqtt3_subs_clean_session主要實現(xiàn)清除哈希表中的context功能,首先查找該context對應的訂閱主題是否存在于哈希表中,如果存在,則刪除context,如果不存在,則直接返回。

    函數(shù)mqtt3_retain_queue實現(xiàn)對context列表的保存操作,只需要根據(jù)context對應的訂閱主題在哈希表中找到該context,然后調用函數(shù)_retain_process實現(xiàn)context的保存。

    3.2 空閑空間管理機制優(yōu)化

    Mosquitto中并沒有實現(xiàn)對空閑空間進行管理。當有連接斷開時,將空閑出數(shù)組上的位置,等待有新的連接進來時,需要掃描整個context,如果找到位置則存放新產(chǎn)生的context,否則調用realloc函數(shù)創(chuàng)建一個空間。這種遍歷查詢context會使業(yè)務處理效率低下,并且realloc每次只分配一個內存空間,當有大量的連接進來時,并且沒有空閑數(shù)組時,需要多次調用realloc函數(shù);當存在大量的連接斷開時,數(shù)組就會空閑出多個位置,造成資源的浪費。

    針對上述問題,并參考相關學者的優(yōu)化[28],在前人優(yōu)化的基礎上設置了最大空閑空間數(shù),減少了資源的浪費。

    首先,添加一個動態(tài)數(shù)組,用來存放空閑context的地址。

    當有新的連接進來時,先在這個數(shù)組中查找是否有空閑的地址,如果有,直接插入,同時把動態(tài)數(shù)組中的索引地址刪掉。

    如果沒有則調用realloc函數(shù)創(chuàng)建多個空間。例如1000個,然后將這些空間的地址放入動態(tài)數(shù)組中。

    當存在大量的連接斷開時,服務器就會存在大量的空閑空間,動態(tài)數(shù)組中存放了大量的地址索引,增加判定動態(tài)數(shù)組長度的功能,當達到一定的長度之后(例如10000個),將多余的地址所指向的空閑空間釋放掉,維持一個較少量的空閑空間數(shù)。

    4 測試與分析

    為了驗證對MQTT服務器Mosquitto優(yōu)化之后的功能和性能,本章節(jié)對優(yōu)化之后的Mosquitto進行測試。主要測試優(yōu)化后Mosquitto能否實現(xiàn)發(fā)布訂閱功能;對比優(yōu)化前后Mosquitto在性能方面的變化,并對測試結果進行分析。

    4.1 測試環(huán)境

    測試環(huán)境包括硬件環(huán)境和軟件環(huán)境。硬件環(huán)境的服務器內存大小為8GB,固態(tài)硬盤為256GB;虛擬機的內存為1GB、硬盤為20GB。軟件環(huán)境中虛擬機操作系統(tǒng)為ubuntu-14.04.4-desktop-amd64;Mosquitto版本為1.01;測試工具為mqtt-benchmark。功能測試為局域網(wǎng),性能測試為公共網(wǎng),帶寬為電信100Mbps。

    4.2 測試內容與分析

    (1)功能測試

    首先檢測能否開啟Mosquitto服務器,其次檢測能否完成消息的訂閱發(fā)布功能。功能測試使用回送地址進行,實驗設置開四個終端,其中一個終端負責開啟服務器,一個終端負責發(fā)布消息,兩個終端負責訂閱消息。運行結果如圖9至圖12所示。

    通過上圖的實驗結果可以得到優(yōu)化之后的mosquitto可以實現(xiàn)開啟服務的功能,并且可以進行對不同的訂閱主題進行發(fā)布消息。訂閱客戶端也可以獲得訂閱消息。

    (2)性能測試

    性能測試通過使用測試工具mqtt-benchmark進行。對于虛擬機,192.168.226.136上用emqttd_benchmark測試,192.168.226.129上的Mosquitto服務器。

    1)測試一

    測試不同QoS級別下,原始Mosquitto與優(yōu)化之后的Mosquitto在平均運行時長,平均時延方面的性能對比。實驗設置10個發(fā)送客戶端,每個客戶端發(fā)送1000條消息,訂閱客戶端數(shù)量為1000,QoS分別為0,1,2情況下的結果圖如圖13所示。

    從圖中運行結果對比,隨著QoS的增大,平均運行時長和平均時延不斷增大,但是時延標準差總體成減小趨勢,說明隨著QoS的增大,傳輸越來越穩(wěn)定。這是由于QoS越大,需要進行報文交換的次數(shù)也越多,導致服務器的性能以及網(wǎng)絡負載增大,使得運行時長和時延增大,同時,時延也越穩(wěn)定,符合預期設想。

    此外,在三種級別的QoS情況下,優(yōu)化之后的Mosquitto在平均運行時長和平均時延方面都要優(yōu)于原始Mosquitto,所以優(yōu)化之后的Mosquitto服務器在運行速度上有所提升。但是在時延穩(wěn)定性方面,優(yōu)化之后的Mosquitto服務器還存在改進的空間。同時,根據(jù)QoS在不同級別下的性能,可以得出在QoS要求不高的場景下,可以使用低級別的QoS來進行消息的傳輸,使得系統(tǒng)性能增大。

    2)測試二

    在QoS級別為0的情況下,測量不同消息發(fā)布數(shù)量情況下Mosquitto服務器的時延變化情況以及吞吐量情況。實驗設置20個發(fā)送客戶端,每個客戶端發(fā)送10000、20000、30000、40000、50000、60000、70000個消息。

    如圖14所示,平均運行時長結果相差較小,但是原始的Mosquitto運行時的平均時延要大于優(yōu)化之后的Mosquitto。

    3)測試三

    在QoS級別為0的情況下,測試同時在線時不同數(shù)量發(fā)送客戶端情況下,運行時間、發(fā)送時延情況。實驗設置每個客戶端發(fā)送一條消息,分別測試發(fā)送客戶端數(shù)量為1000、5000、10000、15000、20000。

    如圖15所示對比結果,當在線用戶數(shù)量較少時,原始的Mosquitto在平均運行時長、平均時延、最大時延要小于優(yōu)化之后的Mosquitto,并且傳輸穩(wěn)定性也要高,性能上優(yōu)于優(yōu)化之后的Mosquitto,但是當活躍用戶量增大時,優(yōu)化之后的Mosquitto開始表現(xiàn)出較好的性能。

    4)測試四

    在QoS級別為0的情況下,測試每條信息在不同字節(jié)大小的情況下消息發(fā)送的情況,如圖16所示。實驗設置發(fā)送客戶端數(shù)為20,每個客戶端發(fā)送10條消息,發(fā)送消息大小分別為100b、1000b、10000b、100000b、1000000b、10000000b。

    如表1、表2所示,當發(fā)送消息字節(jié)比較少的時候原始Mosquitto的發(fā)送平均時延要小于優(yōu)化之后的,同時穩(wěn)定性也更好,平均吞吐量也比較大,但是當發(fā)送消息字節(jié)數(shù)增大時,優(yōu)化之后的Mosquitto在平均時延以及穩(wěn)定性方面都優(yōu)于原始的Mosquitto,并且吞吐量也更大。

    綜上所述,優(yōu)化之后的Mosquitto在發(fā)送客戶端數(shù)量、發(fā)送消息數(shù)量以及消息字節(jié)較大的時候,都要優(yōu)于原始的Mosquitto,但是穩(wěn)定性方面需要進一步的提升。

    4 結束語

    本文通過對MQTT協(xié)議的深入學習,以及MQTT消息代理服務器Mosquitto的研究,詳細介紹了對于Mosquitto服務器內部功能實現(xiàn)的優(yōu)化。首先,對MQTT協(xié)議中的關鍵點進行學習;其次,分析了Mosquitto的訂閱/發(fā)布模式中的訂閱樹,提出了帶分支節(jié)點訂閱樹和利用帶分區(qū)的哈希表代替訂閱樹兩種優(yōu)化思想;然后,分析了Mosquitto中空閑空間遍歷情況,提出了指定長度的動態(tài)數(shù)組存儲空閑空間列表。最后,本文根據(jù)以上提出的思想進行測試,驗證了優(yōu)化之后的Mosquitto在負載較大的情況下更加高效。

    雖然目前實現(xiàn)了對Mosquitto底層代碼優(yōu)化設計,但是根據(jù)測試過程中遇到的問題,本項目還有一些不足的地方,需要作為下一步的工作繼續(xù)改進。

    (1)由于開發(fā)時間緊張,導致一些功能還未進行添加,影響服務器的性能和穩(wěn)定性。特別是在實際的網(wǎng)絡環(huán)境中運行情況復雜,容易發(fā)生異常情況,需要增加日志記錄功能和完善異常處理機制。

    (2)缺少對每個優(yōu)化情況的效果進行對比分析,需要分析各種優(yōu)化情況對于性能改進的貢獻比例,然后根據(jù)比例情況進行再次優(yōu)化調整,不斷提高Mosquitto的性能。

    (3)對Mosquitto服務器安全方面沒有進行考慮,需要提高安全認證機制。

    (4)對Mosquitto還可以進行更加深入的擴展研究。針對不同的場景可以提出更好的優(yōu)化方法。

    基金項目:

    1.國家自然科學基金(項目編號:61672104);

    2.國家自然科學基金(項目編號:U1509214);

    3.國家自然科學基金(項目編號:61702570)。

    參考文獻

    [1] 弭寶瞳,梁循,張樹森.社交物聯(lián)網(wǎng)研究綜述[J].計算機學報,2018,41(07):1448-1475.

    [2] 張玉清,周威,彭安妮.物聯(lián)網(wǎng)安全綜述[J].計算機研究與發(fā)展,2017,54(10):2130-2143.

    [3] Ganzha M, Paprzycki M, Paw?owski W, et al. Semantic interoperability in the Internet of Things; an overview from the INTER-IoT perspective ☆[J]. Journal of Network & Computer Applications, 2016, 81.

    [4] Majchrzak T A, Groenli T M. Introduction to the Minitrack on Software Development for Mobile Devices, Wearables, and the Internet-of-Things[C]// Hawaii International Conference on System Sciences. 2018.

    [5] Ghanbari A, Laya A, Alonso-Zarate J, et al. Business Development in the Internet of Things: A Matter of Vertical Cooperation[J]. IEEE Communications Magazine, 2017, 55(2):135-141.

    [6] Stolpe M. The Internet of Things: Opportunities and Challenges for Distributed Data Analysis[M]. ACM, 2016.

    [7] Handosa M, Gra?anin D, Elmongui H G. Performance evaluation of MQTT-based internet of things systems[C]// Simulation Conference. IEEE, 2018:4544-4545.

    [8] 楊鵬.基于MQTT協(xié)議的信息推送平臺系統(tǒng)的設計與實現(xiàn)[D].成都:電子科技大學,2015.

    [9] Lee S , Kim H , Hong D K , et al. Correlation analysis of MQTT loss and delay according to QoS level[C]// Information Networking (ICOIN), 2013 International Conference on. IEEE Computer Society, 2013.

    [10] 黃建洋,蘭巨龍,胡宇翔,馬騰.一種基于分段路由的多路徑流傳輸機制[J].電子學報,2018,46(06):1488-1495.

    [11] 任亨,馬躍,楊海波,賈正鋒.基于MQTT協(xié)議的消息推送服務器[J].計算機系統(tǒng)應用,2014,23(03):77-82.

    [12] Baidu Inc. Mosquitto[OL]. http://baike.baidu.com/view/9923983.htm?fr=aladdin.

    [13] Gough J, Smith G. Efficient recognition of events in a distributed system// Proceedings of the Australasian Computer Science Conference. Canberra, Australia, 1995: 173-179.

    [14] Aguilera M K, Strom R E, Sturman D C, et al. Matching events in a content-based subscription system// Proceedings of the 18th ACM Symposium on Principles of Distributed Computing. Georgia, USA, 1999: 53-61.

    [15] Bianchi S , Felber P , Gradinariu M . Content-based Publish/Subscribe using Distributed R-trees[J]. Lecture Notes in Computer Science, 2007:537-548.

    [16] Hu H , Liu Y , Li G , et al. [IEEE 2015 IEEE 31st International Conference on Data Engineering (ICDE) - Seoul, South Korea (2015.4.13-2015.4.17)] 2015 IEEE 31st International Conference on Data Engineering - A location-aware publish/subscribe framework for parameterized spatio-textual subscriptions[C]// IEEE International Conference on Data Engineering. IEEE, 2015:711-722.

    [17] Guo L , Chen L , Zhang D , et al. Elaps: An efficient location-aware pub/sub system[C]// IEEE International Conference on Data Engineering. IEEE, 2015.

    [18] 李強.多個Zigbee監(jiān)測網(wǎng)絡遠程監(jiān)控的實現(xiàn)[J].微計算機信息,2007(07):141-143.

    [19] 蔣鵬,袁嵩.基于MQTT協(xié)議的綜合消息推送[J].現(xiàn)代計算機(專業(yè)版),2014(11):11-15+21.

    [20] 姜妮,張宇,趙志軍.基于MQTT物聯(lián)網(wǎng)消息推送系統(tǒng)[J].網(wǎng)絡新媒體技術.2014(6):62-64.

    [21] 賈軍營,王月鵬,王少華.基于MQTT協(xié)議IM的研究和實現(xiàn)[J].計算機系統(tǒng)應用.2015(07):9-14.

    [22] 李宏,郭江波.基于MQTT協(xié)議的Android手機防盜方法[J].無線電工程,2018,48(05):357-361.

    [23] 方霞.基于MQTT協(xié)議的農(nóng)業(yè)物聯(lián)網(wǎng)消息推送系統(tǒng)[J].計算機技術與發(fā)展,2018,28(09):168-171.

    [24] 崔自賞,陳冰,艾武,黃明強.基于MQTT協(xié)議的物聯(lián)網(wǎng)電梯監(jiān)控系統(tǒng)設計[J].電子測量技術,2018,41(07):114-119.

    [25] 曾昂,李寧,嚴俊.Mosquitto大文件傳輸方式的研究與改進[J].計算機工程與應用,2017,53(04):123-127.

    [26] 鄭峰.基于MQTT的云推送平臺的研究及應用[D].杭州:杭州電子科技大學,2016.

    [27] 逍遙子_. Mosquitto的優(yōu)化[OL]. https://blog.csdn.net/houjixin/article/details/46413783.

    [28] 逍遙子_. Mosquitto的優(yōu)化[OL].? ?https://blog.csdn.net/houjixin/article/details/46413941.

    [29] 劉志誠.物聯(lián)網(wǎng)網(wǎng)絡信息安全生態(tài)體系構建新論[J].網(wǎng)絡空間安全,2018,9(12):85-89.

    作者簡介:

    陳福(1973-),男,漢族,遼寧朝陽人,北京科技大學,博士,中央財經(jīng)大學信息學院,教授;主要研究方向和關注領域:下一代互聯(lián)網(wǎng)、物聯(lián)網(wǎng)。

    李娜(1992-)女,漢族,山東濱州人,中央財經(jīng)大學信息學院,碩士;主要研究方向和關注領域:物聯(lián)網(wǎng)、機器學習。

    朱建明(1965-),男,漢族,山西太原人,西安電子科技大學,博士,中央財經(jīng)大學信息學院,教授;主要研究方向和關注領域:信息安全,區(qū)塊鏈技術。

    黃勇峰(1991-),男,漢族,中央財經(jīng)大學信息學院,碩士;主要研究方向和關注領域:下一代互聯(lián)網(wǎng)。

    張艷梅(1976-),女,漢族,吉林市人,中國礦業(yè)大學(北京),博士,中央財經(jīng)大學,副教授;主要研究方向和關注領域:商務智能、服務計算、金融監(jiān)管。

    另类亚洲欧美激情| 一级毛片电影观看| 寂寞人妻少妇视频99o| h视频一区二区三区| 国产片特级美女逼逼视频| 爱豆传媒免费全集在线观看| 久久久久国产网址| 亚洲成人一二三区av| 国产成人免费无遮挡视频| 免费播放大片免费观看视频在线观看| 日韩熟女老妇一区二区性免费视频| 高清在线视频一区二区三区| 亚洲成人手机| 国产精品三级大全| 成人手机av| 中文字幕免费在线视频6| 美国免费a级毛片| 国产欧美另类精品又又久久亚洲欧美| 永久免费av网站大全| 亚洲成av片中文字幕在线观看 | 老女人水多毛片| 亚洲,一卡二卡三卡| 中文精品一卡2卡3卡4更新| 汤姆久久久久久久影院中文字幕| 欧美激情极品国产一区二区三区 | 亚洲天堂av无毛| 99国产综合亚洲精品| h视频一区二区三区| 999精品在线视频| 欧美 亚洲 国产 日韩一| 精品一区在线观看国产| 亚洲国产av影院在线观看| 久久久久久久久久久久大奶| 久久久久精品人妻al黑| 亚洲欧美色中文字幕在线| 最近的中文字幕免费完整| 久久午夜福利片| 国产激情久久老熟女| 99香蕉大伊视频| 天天躁夜夜躁狠狠久久av| 90打野战视频偷拍视频| av视频免费观看在线观看| 国产亚洲av片在线观看秒播厂| 黄网站色视频无遮挡免费观看| 午夜老司机福利剧场| 午夜免费鲁丝| 一本—道久久a久久精品蜜桃钙片| 超色免费av| 肉色欧美久久久久久久蜜桃| 国产精品人妻久久久久久| 精品视频人人做人人爽| 有码 亚洲区| 一边亲一边摸免费视频| 一级片'在线观看视频| 欧美日韩视频精品一区| 大陆偷拍与自拍| 国产不卡av网站在线观看| 亚洲图色成人| 国产无遮挡羞羞视频在线观看| 午夜老司机福利剧场| 啦啦啦中文免费视频观看日本| 啦啦啦在线观看免费高清www| 亚洲熟女精品中文字幕| 国产成人精品无人区| 岛国毛片在线播放| 午夜免费观看性视频| 久久精品国产a三级三级三级| 国产69精品久久久久777片| 成年人午夜在线观看视频| 国产日韩一区二区三区精品不卡| 一本—道久久a久久精品蜜桃钙片| 制服诱惑二区| 亚洲av日韩在线播放| 亚洲,欧美,日韩| 亚洲国产看品久久| 亚洲欧美一区二区三区国产| 好男人视频免费观看在线| 亚洲av电影在线观看一区二区三区| 亚洲美女视频黄频| 日韩av不卡免费在线播放| 人人妻人人澡人人爽人人夜夜| 18禁国产床啪视频网站| videos熟女内射| 久热久热在线精品观看| 少妇熟女欧美另类| 精品一区二区三区视频在线| 91精品国产国语对白视频| 九色成人免费人妻av| 亚洲国产av新网站| 免费人妻精品一区二区三区视频| 精品福利永久在线观看| 国产有黄有色有爽视频| 日本黄色日本黄色录像| 免费黄频网站在线观看国产| 亚洲国产av新网站| 我的女老师完整版在线观看| 99久久综合免费| 久久久亚洲精品成人影院| 午夜福利视频在线观看免费| 国产乱来视频区| 侵犯人妻中文字幕一二三四区| 一区二区三区乱码不卡18| 午夜免费鲁丝| 成人漫画全彩无遮挡| 狂野欧美激情性xxxx在线观看| 国产国拍精品亚洲av在线观看| 99热国产这里只有精品6| 国产黄频视频在线观看| 久久99蜜桃精品久久| 亚洲av中文av极速乱| 亚洲av欧美aⅴ国产| 大话2 男鬼变身卡| 亚洲第一区二区三区不卡| 黑丝袜美女国产一区| 国产精品一区二区在线观看99| 久久久久久久久久成人| 亚洲欧美成人精品一区二区| 考比视频在线观看| 亚洲精华国产精华液的使用体验| 亚洲精品久久成人aⅴ小说| 丁香六月天网| 国产日韩欧美亚洲二区| 国产日韩欧美亚洲二区| 久久精品国产a三级三级三级| 亚洲图色成人| 国产欧美日韩一区二区三区在线| 飞空精品影院首页| 侵犯人妻中文字幕一二三四区| 中文乱码字字幕精品一区二区三区| 嫩草影院入口| 热re99久久国产66热| 毛片一级片免费看久久久久| 中文字幕最新亚洲高清| 成人影院久久| 观看美女的网站| 欧美性感艳星| 国产亚洲最大av| 亚洲精品乱久久久久久| 欧美精品国产亚洲| 18禁裸乳无遮挡动漫免费视频| 一区二区av电影网| 波多野结衣一区麻豆| 欧美日韩成人在线一区二区| 男的添女的下面高潮视频| 午夜福利,免费看| 久久免费观看电影| 超色免费av| 狠狠婷婷综合久久久久久88av| 国产高清不卡午夜福利| 免费大片18禁| www.熟女人妻精品国产 | 国产精品一区www在线观看| 99久国产av精品国产电影| 9191精品国产免费久久| 99久久精品国产国产毛片| 亚洲精品日本国产第一区| 欧美日韩av久久| 午夜激情av网站| 午夜激情av网站| 黄网站色视频无遮挡免费观看| 水蜜桃什么品种好| 侵犯人妻中文字幕一二三四区| 人妻少妇偷人精品九色| 少妇 在线观看| 久久人人爽人人片av| 99热6这里只有精品| 51国产日韩欧美| 亚洲精品成人av观看孕妇| 秋霞在线观看毛片| 99热6这里只有精品| 99热6这里只有精品| 久久精品久久久久久久性| 韩国精品一区二区三区 | 伊人亚洲综合成人网| 男女下面插进去视频免费观看 | 国产免费一区二区三区四区乱码| 久久精品国产综合久久久 | 高清视频免费观看一区二区| 尾随美女入室| 久久女婷五月综合色啪小说| 精品国产一区二区三区久久久樱花| 最近最新中文字幕大全免费视频 | 夫妻性生交免费视频一级片| 老司机影院毛片| 满18在线观看网站| 男人爽女人下面视频在线观看| 日韩欧美精品免费久久| 国产精品熟女久久久久浪| 狂野欧美激情性bbbbbb| 青春草国产在线视频| 如何舔出高潮| 亚洲国产精品国产精品| 男人添女人高潮全过程视频| 热99久久久久精品小说推荐| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 夫妻午夜视频| 丰满迷人的少妇在线观看| 久久久久久久精品精品| 高清不卡的av网站| 精品久久久精品久久久| a级毛片黄视频| 婷婷色av中文字幕| 亚洲av在线观看美女高潮| 国产一区有黄有色的免费视频| 午夜免费观看性视频| 精品人妻在线不人妻| 99re6热这里在线精品视频| 国产白丝娇喘喷水9色精品| 日本-黄色视频高清免费观看| av网站免费在线观看视频| 亚洲激情五月婷婷啪啪| av福利片在线| 国产欧美另类精品又又久久亚洲欧美| 亚洲内射少妇av| 成人影院久久| 中文字幕av电影在线播放| 一级毛片我不卡| 久久久久网色| 日韩一区二区三区影片| 狠狠精品人妻久久久久久综合| 极品少妇高潮喷水抽搐| 亚洲精品久久成人aⅴ小说| 高清视频免费观看一区二区| 亚洲av电影在线进入| 久久久久久久久久久久大奶| 成人国产av品久久久| 免费观看在线日韩| 纵有疾风起免费观看全集完整版| 一区二区三区精品91| 亚洲av男天堂| 一级a做视频免费观看| 一本大道久久a久久精品| 男人舔女人的私密视频| 免费少妇av软件| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 午夜老司机福利剧场| 热99国产精品久久久久久7| 热re99久久精品国产66热6| 丁香六月天网| 亚洲,欧美,日韩| 国产精品久久久久久久电影| 亚洲精品视频女| 国产国语露脸激情在线看| 亚洲国产欧美在线一区| 亚洲精品av麻豆狂野| 熟女人妻精品中文字幕| 久热久热在线精品观看| 国产日韩欧美在线精品| av视频免费观看在线观看| 女人久久www免费人成看片| 天天躁夜夜躁狠狠久久av| 又大又黄又爽视频免费| 啦啦啦在线观看免费高清www| 成人无遮挡网站| 秋霞在线观看毛片| 韩国精品一区二区三区 | 日韩大片免费观看网站| 中文字幕最新亚洲高清| 日韩欧美精品免费久久| 建设人人有责人人尽责人人享有的| 久久精品国产亚洲av天美| 国产精品国产av在线观看| 精品酒店卫生间| 天天操日日干夜夜撸| 波多野结衣一区麻豆| 国产一区亚洲一区在线观看| xxxhd国产人妻xxx| a级毛片黄视频| 飞空精品影院首页| 久久国产精品男人的天堂亚洲 | 日韩三级伦理在线观看| 校园人妻丝袜中文字幕| 五月天丁香电影| 黄色 视频免费看| 欧美97在线视频| 夫妻性生交免费视频一级片| 亚洲精品自拍成人| 日韩制服骚丝袜av| 丰满乱子伦码专区| 成人无遮挡网站| a级毛色黄片| 国产精品久久久av美女十八| 久久精品国产亚洲av涩爱| 中文天堂在线官网| 美女主播在线视频| 在线观看国产h片| 美国免费a级毛片| 中文字幕另类日韩欧美亚洲嫩草| 边亲边吃奶的免费视频| 国产国语露脸激情在线看| 成人漫画全彩无遮挡| 亚洲国产色片| 国产免费又黄又爽又色| videosex国产| 日本色播在线视频| 夫妻午夜视频| 国产免费一区二区三区四区乱码| 欧美丝袜亚洲另类| 欧美变态另类bdsm刘玥| 中文字幕人妻丝袜制服| 又大又黄又爽视频免费| 91在线精品国自产拍蜜月| 97在线人人人人妻| 日韩人妻精品一区2区三区| 亚洲欧洲日产国产| 免费日韩欧美在线观看| 少妇精品久久久久久久| 成人免费观看视频高清| 亚洲av中文av极速乱| 少妇的逼好多水| 精品少妇内射三级| 成人二区视频| 精品人妻在线不人妻| 免费高清在线观看日韩| av福利片在线| 久久综合国产亚洲精品| 久久精品夜色国产| 国产免费又黄又爽又色| 欧美最新免费一区二区三区| 波多野结衣一区麻豆| 欧美少妇被猛烈插入视频| 在现免费观看毛片| av黄色大香蕉| 国产一区二区三区综合在线观看 | 久久久久久人人人人人| 最近中文字幕高清免费大全6| 日本与韩国留学比较| 亚洲性久久影院| 岛国毛片在线播放| 久久99精品国语久久久| 啦啦啦在线观看免费高清www| 性色avwww在线观看| 熟妇人妻不卡中文字幕| 欧美+日韩+精品| 亚洲精品久久久久久婷婷小说| 丰满乱子伦码专区| 亚洲欧美一区二区三区国产| 久久人人97超碰香蕉20202| 肉色欧美久久久久久久蜜桃| 91久久精品国产一区二区三区| 伊人久久国产一区二区| 最新的欧美精品一区二区| 国产激情久久老熟女| 色婷婷久久久亚洲欧美| 日韩成人伦理影院| 少妇被粗大猛烈的视频| 91精品伊人久久大香线蕉| 如何舔出高潮| 亚洲,欧美,日韩| 18在线观看网站| 久久人人爽人人爽人人片va| 色婷婷久久久亚洲欧美| 国产xxxxx性猛交| 精品熟女少妇av免费看| 99久久中文字幕三级久久日本| 久久韩国三级中文字幕| 亚洲国产成人一精品久久久| 国产探花极品一区二区| 如日韩欧美国产精品一区二区三区| 欧美国产精品一级二级三级| 欧美日韩av久久| 欧美变态另类bdsm刘玥| 男女啪啪激烈高潮av片| 午夜久久久在线观看| 午夜激情av网站| 久久这里有精品视频免费| 少妇高潮的动态图| 国产精品秋霞免费鲁丝片| 亚洲情色 制服丝袜| 午夜精品国产一区二区电影| 看免费成人av毛片| 免费在线观看黄色视频的| 在线观看免费高清a一片| 熟妇人妻不卡中文字幕| 成人亚洲欧美一区二区av| 国产极品粉嫩免费观看在线| 日日摸夜夜添夜夜爱| 自线自在国产av| 久久久久久久久久久免费av| 看非洲黑人一级黄片| 午夜福利视频精品| 国产亚洲av片在线观看秒播厂| 精品熟女少妇av免费看| 日韩中文字幕视频在线看片| 在线 av 中文字幕| 国产成人精品一,二区| 永久免费av网站大全| 欧美国产精品一级二级三级| 在线免费观看不下载黄p国产| 蜜桃在线观看..| 制服诱惑二区| 校园人妻丝袜中文字幕| 女的被弄到高潮叫床怎么办| 欧美激情极品国产一区二区三区 | 国产精品一区www在线观看| 亚洲精品一二三| 国产 一区精品| 免费观看无遮挡的男女| 97在线人人人人妻| 男女下面插进去视频免费观看 | 精品亚洲成a人片在线观看| 欧美日韩综合久久久久久| 黑人高潮一二区| 亚洲欧美日韩另类电影网站| 亚洲精品美女久久av网站| 日韩制服骚丝袜av| 丝袜脚勾引网站| 国产一区二区三区综合在线观看 | 欧美成人精品欧美一级黄| 最近中文字幕2019免费版| 日韩av免费高清视频| a 毛片基地| 最后的刺客免费高清国语| 国产xxxxx性猛交| 大香蕉久久成人网| 国产免费一区二区三区四区乱码| 欧美97在线视频| 街头女战士在线观看网站| 在线观看免费高清a一片| 成人综合一区亚洲| 两性夫妻黄色片 | 久久久精品区二区三区| 大香蕉久久网| 国产精品人妻久久久影院| 日韩一区二区三区影片| 伦理电影大哥的女人| 国产男人的电影天堂91| 久久精品久久久久久久性| 久久女婷五月综合色啪小说| 国产男女内射视频| 久久99热6这里只有精品| 国产精品一区二区在线观看99| av又黄又爽大尺度在线免费看| 99热这里只有是精品在线观看| 久久久久久久久久久免费av| 午夜激情久久久久久久| 丰满饥渴人妻一区二区三| 看免费成人av毛片| 中文精品一卡2卡3卡4更新| 国产精品国产三级国产专区5o| 人人妻人人澡人人爽人人夜夜| 国产精品免费大片| 在线观看www视频免费| 日韩熟女老妇一区二区性免费视频| 国产精品三级大全| 午夜精品国产一区二区电影| 久久人妻熟女aⅴ| 两个人看的免费小视频| 精品人妻一区二区三区麻豆| 国产精品偷伦视频观看了| 日本av手机在线免费观看| 在线观看人妻少妇| 在线观看免费日韩欧美大片| 99久久综合免费| 久久久精品免费免费高清| 国产麻豆69| 成年人午夜在线观看视频| 欧美激情极品国产一区二区三区 | 女人被躁到高潮嗷嗷叫费观| 免费观看在线日韩| 视频中文字幕在线观看| 一个人免费看片子| 国产精品 国内视频| 日日爽夜夜爽网站| 秋霞伦理黄片| 精品一区二区三区四区五区乱码 | 国产精品三级大全| 午夜福利视频在线观看免费| 国产一区二区三区av在线| 一二三四在线观看免费中文在 | 2022亚洲国产成人精品| 亚洲 欧美一区二区三区| 成人午夜精彩视频在线观看| 久久精品久久久久久噜噜老黄| 国语对白做爰xxxⅹ性视频网站| 另类亚洲欧美激情| 精品国产乱码久久久久久小说| 9热在线视频观看99| av有码第一页| 多毛熟女@视频| 精品亚洲成国产av| 如日韩欧美国产精品一区二区三区| 春色校园在线视频观看| 99re6热这里在线精品视频| 亚洲成国产人片在线观看| 妹子高潮喷水视频| 边亲边吃奶的免费视频| 大片免费播放器 马上看| 美女中出高潮动态图| 国产一区二区在线观看av| 在线免费观看不下载黄p国产| 老司机影院毛片| 人人澡人人妻人| 亚洲三级黄色毛片| 免费播放大片免费观看视频在线观看| 侵犯人妻中文字幕一二三四区| 波野结衣二区三区在线| 国国产精品蜜臀av免费| 亚洲av在线观看美女高潮| 2022亚洲国产成人精品| 99久久精品国产国产毛片| 精品少妇黑人巨大在线播放| 又粗又硬又长又爽又黄的视频| 狠狠精品人妻久久久久久综合| 国产永久视频网站| 国产成人免费无遮挡视频| 另类亚洲欧美激情| 桃花免费在线播放| 国产老妇伦熟女老妇高清| 国产不卡av网站在线观看| 免费在线观看黄色视频的| 日韩成人av中文字幕在线观看| 久久国产精品男人的天堂亚洲 | 免费看av在线观看网站| 日产精品乱码卡一卡2卡三| 妹子高潮喷水视频| 五月伊人婷婷丁香| 欧美 日韩 精品 国产| 99热国产这里只有精品6| 成人二区视频| 蜜臀久久99精品久久宅男| 国产亚洲精品久久久com| 国产高清不卡午夜福利| av国产精品久久久久影院| 少妇被粗大的猛进出69影院 | 国产免费视频播放在线视频| 蜜桃在线观看..| 大码成人一级视频| 十八禁高潮呻吟视频| 26uuu在线亚洲综合色| 99热这里只有是精品在线观看| 一级片免费观看大全| 午夜福利影视在线免费观看| 90打野战视频偷拍视频| av在线播放精品| 深夜精品福利| 制服人妻中文乱码| 两个人免费观看高清视频| 在线观看三级黄色| 男女午夜视频在线观看 | 99热这里只有是精品在线观看| 人成视频在线观看免费观看| 18禁在线无遮挡免费观看视频| 深夜精品福利| 久久ye,这里只有精品| 亚洲精品久久成人aⅴ小说| 亚洲精品色激情综合| 精品人妻一区二区三区麻豆| 最黄视频免费看| 亚洲精品中文字幕在线视频| 日产精品乱码卡一卡2卡三| 精品久久国产蜜桃| 国产xxxxx性猛交| 日韩中文字幕视频在线看片| 国产亚洲精品第一综合不卡 | 国产精品久久久久久久久免| 日本与韩国留学比较| 一边摸一边做爽爽视频免费| 日韩一本色道免费dvd| 国产精品一区www在线观看| 国产福利在线免费观看视频| 99久国产av精品国产电影| 中文字幕另类日韩欧美亚洲嫩草| 亚洲国产最新在线播放| 日韩,欧美,国产一区二区三区| 色视频在线一区二区三区| 伦精品一区二区三区| 久久午夜综合久久蜜桃| 久久毛片免费看一区二区三区| 日本猛色少妇xxxxx猛交久久| 成年动漫av网址| 午夜激情久久久久久久| 男人添女人高潮全过程视频| 免费久久久久久久精品成人欧美视频 | 国产欧美另类精品又又久久亚洲欧美| 国产亚洲精品第一综合不卡 | 中文字幕免费在线视频6| 成人黄色视频免费在线看| 国产精品蜜桃在线观看| 日本午夜av视频| 国产欧美日韩一区二区三区在线| 少妇被粗大猛烈的视频| 天天躁夜夜躁狠狠躁躁| 国产精品一国产av| 国产精品蜜桃在线观看| 久久精品久久久久久噜噜老黄| 亚洲美女搞黄在线观看| 精品久久久久久电影网| 国产日韩欧美亚洲二区| 一本色道久久久久久精品综合| av黄色大香蕉| 一本—道久久a久久精品蜜桃钙片| 男女午夜视频在线观看 | 成年av动漫网址| 汤姆久久久久久久影院中文字幕| 青春草国产在线视频| 最新的欧美精品一区二区| 久久精品久久久久久久性| 亚洲色图 男人天堂 中文字幕 | 久热这里只有精品99| 色哟哟·www| 少妇被粗大的猛进出69影院 | 久久久久精品性色| 亚洲精品日韩在线中文字幕| 黄网站色视频无遮挡免费观看| 国产精品无大码| 久久久久久久大尺度免费视频| 制服诱惑二区| 久久久久久久国产电影| 少妇人妻久久综合中文| 国产高清三级在线| 男女高潮啪啪啪动态图| 深夜精品福利| 中文字幕av电影在线播放| 夫妻性生交免费视频一级片|