999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

輕量級TCP/IP協(xié)議棧機制分析與優(yōu)化

2015-01-06 08:21:57袁中書
計算機工程 2015年2期
關鍵詞:嵌入式優(yōu)化

袁中書,陸 陽

(合肥工業(yè)大學計算機與信息學院,合肥230009)

輕量級TCP/IP協(xié)議棧機制分析與優(yōu)化

袁中書,陸 陽

(合肥工業(yè)大學計算機與信息學院,合肥230009)

輕量級TCP/IP協(xié)議棧(LwIP)主要應用于資源受限的嵌入式設備。為滿足嵌入式設備對實時性的要求,分析LwIP的內(nèi)部機制,對其進行性能瓶頸分析,并根據(jù)分析結果設計、實施LwIP的實時性和優(yōu)先級管理優(yōu)化方案。LwIP的主要性能瓶頸是內(nèi)存拷貝和校驗過程,據(jù)此給出優(yōu)化后的內(nèi)存拷貝算法和校驗算法。為滿足緊急數(shù)據(jù)對更高優(yōu)先級的要求,給出LwIP協(xié)議棧優(yōu)先級管理機制,能夠確保高優(yōu)先級標記的緊急數(shù)據(jù)包優(yōu)先傳輸于普通數(shù)據(jù)包。實驗結果表明,該優(yōu)化方法可以顯著提高LwIP的實時性能。

輕量級TCP/IP協(xié)議棧;嵌入式;實時性;優(yōu)化;優(yōu)先級;等待隊列

1 概述

隨著嵌入式系統(tǒng)在工業(yè)控制領域的廣泛應用和發(fā)展,以及控制系統(tǒng)的網(wǎng)絡化發(fā)展趨勢,嵌入式系統(tǒng)的網(wǎng)絡特性越來越受到重視[1]。基于這種趨勢,一些專門運行于嵌入式設備的TCP/IP協(xié)議棧應運而生,比較成熟的開源協(xié)議棧主要有LwIP、uIP、μC/ IP、TinyTcp等[2-3]。這些嵌入式協(xié)議棧均派生自BSD TCP/IP[4],實現(xiàn)了其最基本的通信功能。輕量級TCP/IP協(xié)議棧(Lightweight TCP/IP protocol stack,LwIP)[5]是一套用于嵌入式系統(tǒng)的開源TCP/ IP協(xié)議棧。LwIP可以移植到多種嵌入式操作系統(tǒng)上,如Linux,μCOS等,也可以在缺乏操作系統(tǒng)的裸機上獨立運行。LwIP的主要目標是在保持TCP/IP協(xié)議主要功能的基礎上減少存儲器使用量和代碼尺寸,以便適應資源有限的嵌入式環(huán)境[6]。為了滿足嵌入式應用對TCP/IP協(xié)議棧實時性的要求,本文將在實驗分析的基礎上,給出LwIP協(xié)議棧實時優(yōu)化方案,并對優(yōu)化結果進行實驗驗證。

2 LwIP分析

2.1 LwIP與嵌入式系統(tǒng)的關系

為了提高可移植性,LwIP在協(xié)議棧和操作系統(tǒng)之間增加了一個操作系統(tǒng)模擬層[7]。操作系統(tǒng)模擬層使用統(tǒng)一的接口提供定時器、進程同步及消息傳遞機制等諸如此類的系統(tǒng)服務。消息傳遞通過一個被稱作郵箱的機制來實現(xiàn),投遞到郵箱的消息被操作系統(tǒng)模擬層放到隊列中直至其他進程將它們?nèi)〕鯷8]。LwIP將所有協(xié)議駐留在同一個進程,應用程序既可以駐留在LwIP的進程中,也可以使用一個單獨的進程[9]。應用程序與協(xié)議棧通信可以采用2種方式:(1)函數(shù)調(diào)用;(2)使用LwIP提供的API通過操作系統(tǒng)的郵箱等進行通信。

2.2 LwIP模塊架構

LwIP的設計與實現(xiàn)采用了分層的結構,每層協(xié)議都作為一個獨立的模塊來實現(xiàn),層與層之間通過接口函數(shù)進行通信[10-11]。LwIP主要由IP,ICMP, UDP和TCP模塊組成[12],這些模塊完成通信功能。除此之外,LwIP還包含一些輔助模塊,例如操作系統(tǒng)模擬層、內(nèi)存管理系統(tǒng)等[13]。

TCP協(xié)議為傳輸層協(xié)議,它為應用層提供可靠的面向連接的數(shù)據(jù)流服務[14]。TCP主要由6個函數(shù)組成,其中,tcp_write(),tcp_enqueue()與tcp_ output()對TCP輸出過程進行處理,tcp_input(), tcp_process()與tcp_receive()對TCP輸入過程進行處理。

UDP協(xié)議為應用層提供不可靠的無連接數(shù)據(jù)報服務[15]。發(fā)送UDP數(shù)據(jù)時,應用程序調(diào)用udp_ send()函數(shù),該函數(shù)調(diào)用udp_output()完成udp頭部添加等操作,然后數(shù)據(jù)被移交給ip_output_if(),進入IP層。接收時,IP層調(diào)用udp_input()函數(shù)檢查UDP頭部,找到對應的UDP PCB[16],然后調(diào)用recv()函數(shù),通知應用層做進一步處理。

2.3 LwIP數(shù)據(jù)處理

以TCP協(xié)議發(fā)送數(shù)據(jù)過程為例詳細分析LwIP數(shù)據(jù)處理流程。發(fā)送數(shù)據(jù)時,應用程序調(diào)用LwIP API接口函數(shù)LwIP_write(),LwIP_write()函數(shù)進一步調(diào)用LwIP提供給內(nèi)嵌應用程序使用的API函數(shù)netconn_write()。該函數(shù)負責POST一個發(fā)送數(shù)據(jù)包消息到郵箱。

當協(xié)議棧接收到該消息時,調(diào)用tcp_write()函數(shù),tcp_write()將控制權交給tcp_enqueue()。tcp_ enqueue()函數(shù)將應用程序數(shù)據(jù)拷貝到協(xié)議棧內(nèi)部緩沖區(qū),對發(fā)送數(shù)據(jù)進行分割與編號,封裝進pbuf,然后調(diào)用tcp_output()檢查當前窗口是否還有空間存放更多的數(shù)據(jù),填充剩余TCP報頭字段,計算TCP校驗和,最后使用ip_output()發(fā)送報文段。

ip_output()函數(shù)使用ip_route()查找適當?shù)木W(wǎng)絡接口來傳送數(shù)據(jù)包。外發(fā)網(wǎng)絡接口確定后,數(shù)據(jù)包傳給ip_output_if()進行IP頭字段的填充以及IP校驗和的計算,然后調(diào)用netif->output()函數(shù)(協(xié)議棧初始化時,該函數(shù)被初始化為low_level_ output()函數(shù))進行數(shù)據(jù)包的物理層發(fā)送。在low_ level_output()中,pbuf中的數(shù)據(jù)被拷貝到發(fā)送緩沖區(qū),默認使用的是C庫的memcpy()函數(shù),接著調(diào)用驅(qū)動函數(shù)發(fā)送數(shù)據(jù)。數(shù)據(jù)發(fā)送流程如圖1所示。

圖1 TCP協(xié)議數(shù)據(jù)發(fā)送流程

3 性能瓶頸分析

3.1 分析工具

Linux平臺上比較典型的性能分析工具是gprof[17]。gprof通過在編譯時在函數(shù)入口處插入計數(shù)器,來收集每個函數(shù)的被調(diào)用次數(shù)以及函數(shù)占用時間[18],進而找出程序中比較耗時的模塊。

3.2 測量方法

在PC機上運行TCP/IP調(diào)試工具NetAssist作為TCP服務端,接受客戶端的連接。在嵌入式Linux平臺下使用LwIP協(xié)議棧編寫TCP客戶端與服務端建立連接并發(fā)送數(shù)據(jù),每次發(fā)送1000個數(shù)據(jù)包,每個包1024 Byte。客戶端程序總共運行10次。

3.3 測量結果

使用gprof工具分析10次運行結果,得到各函數(shù)占用時間統(tǒng)計結果如圖2所示。

圖2 各函數(shù)占用時間

3.4 結果分析

在發(fā)送數(shù)據(jù)過程中,進行了2次內(nèi)存拷貝:函數(shù)tcp_enqueue()調(diào)用MEMCPY()(默認采用C庫memcpy()函數(shù)實現(xiàn))將應用程序數(shù)據(jù)拷貝到LwIP協(xié)議棧緩沖區(qū);函數(shù)low_level_output()調(diào)用memcpy()將pbuf中的數(shù)據(jù)拷貝到發(fā)送緩沖區(qū)。2次內(nèi)存拷貝耗時百分比分別為20%和16%,占總時間的36%。可見,內(nèi)存拷貝是制約LwIP協(xié)議棧實時性性能的瓶頸之一。

函數(shù)ethernet_send()調(diào)用驅(qū)動程序?qū)l(fā)送緩沖區(qū)中的數(shù)據(jù)寫入Tx隊列,進而完成物理層的數(shù)據(jù)發(fā)送,其性能取決于驅(qū)動程序的效率以及網(wǎng)絡控制器的硬件性能。

API_EVENT通過信號量機制喚醒LwIP協(xié)議棧進程,占總時間的20%,其性能取決于操作系統(tǒng)對信號量機制的實現(xiàn)方式。

函數(shù)inet_chksum_pseudo()負責TCP包頭字段的校驗;inet_chksum()負責IP報文頭字段的校驗。2次校驗過程占總時間的11%,其效率與其本身算法實現(xiàn)方式以及CPU運算速度相關。

函數(shù)netconn_connect()負責與服務端建立連接,占總時間的5%,郵箱操作占總時間的4%,其余代碼的執(zhí)行占總時間的12%。

4 優(yōu)化方法

4.1 內(nèi)存拷貝算法優(yōu)化

根據(jù)特定的體系架構,使用相應的匯編指令可以有效優(yōu)化內(nèi)存拷貝算法。本文的LwIP協(xié)議棧運行于ARM體系架構下的嵌入式Linux平臺。ARM指令集中LDM(批量加載)和STM(批量存儲)指令可以實現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳送數(shù)據(jù)[19]。使用LDM/STM指令傳送內(nèi)存數(shù)據(jù)對訪問的目標內(nèi)存地址以及數(shù)據(jù)長度有限制,目標內(nèi)存地址必須按字對齊,數(shù)據(jù)長度必須是一次傳送字節(jié)數(shù)的整數(shù)倍。緩沖區(qū)內(nèi)存地址通常都是按字對齊的,而數(shù)據(jù)長度則因應用而異。當數(shù)據(jù)長度不是LDM/STM一次傳送字節(jié)數(shù)的整數(shù)倍時,可以先使用LDM/STM指令進行塊數(shù)據(jù)傳送,多余的字節(jié)使用LDRB/STRB指令傳送。程序流程如圖3所示。

圖3 ARM匯編指令內(nèi)存拷貝流程

算法主要代碼如下:

算法ARM匯編指令內(nèi)存拷貝算法

4.2 校驗算法優(yōu)化

在LwIP中,校驗函數(shù)inet_chksum_pseudo()與inet_chksum()都是通過循環(huán)調(diào)用LwIP協(xié)議棧內(nèi)置校驗函數(shù)LwIP_standard_chksum()實現(xiàn)的。LwIP_ standard_chksum()有3種不同的實現(xiàn)方式,可以通過對宏LwIP_CHKSUM_ALGORITHM定義不同的值來選擇合適的校驗算法。3種校驗算法復雜度依次降低,校驗強度也依次減弱。

LwIP默認選擇第1種校驗算法。該算法計算每個字節(jié)的校驗和,校驗強度高,但比較耗時。基于協(xié)議棧對實時性的要求,本文選擇第3種校驗算法。該算法使用循環(huán)展開的校驗方式,對數(shù)據(jù)包頭部和尾部字節(jié)進行特殊處理,并在一次內(nèi)循環(huán)的校驗過程中,同時對8個字節(jié)的校驗和進行計算,大大提高了校驗效率。

4.3 優(yōu)先級管理機制

在實時性有嚴格要求的應用中,往往出現(xiàn)特定的緊急數(shù)據(jù)(比如警示信息等)需要以更高的優(yōu)先級發(fā)送到網(wǎng)絡上的情況,但LwIP并沒有提供這樣的傳輸機制。基于這種需求,本文通過在LwIP協(xié)議棧IP層定義緊急數(shù)據(jù)等待隊列和普通數(shù)據(jù)等待隊列的方式,建立了LwIP協(xié)議棧優(yōu)先級管理機制。當應用程序使用帶有優(yōu)先級參數(shù)的發(fā)送函數(shù)發(fā)送數(shù)據(jù)時,數(shù)據(jù)被提交到IP層,通過測試DSCP字段獲得數(shù)據(jù)包的優(yōu)先級,進而將數(shù)據(jù)包指針放到對應的等待隊列。當網(wǎng)絡接口層發(fā)送函數(shù)空閑時,優(yōu)先發(fā)送緊急隊列中的數(shù)據(jù)包,緊急隊列為空再發(fā)送普通隊列中的數(shù)據(jù)包。

優(yōu)先級管理機制主要采用一個互斥信號量eth_ available和一對等待隊列emergency_wait_queue與common_wait_queue實現(xiàn)。等待隊列通過循環(huán)隊列方式實現(xiàn),如圖4所示,C語言描述如下:

圖4 等待隊列

互斥信號量eth_available分別用于函數(shù)ip_ output()與low_level_output(),為0表示網(wǎng)絡接口層發(fā)送函數(shù)正忙,為1表示空閑。函數(shù)ip_output()調(diào)用ip_output_if()發(fā)送數(shù)據(jù)之前對eth_available進行PEND操作;函數(shù)low_level_output()調(diào)用底層驅(qū)動發(fā)送數(shù)據(jù)幀之后對eth_available進行POST操作。

當數(shù)據(jù)進入IP層時,函數(shù)ip_output()通過檢查參數(shù)tos確定數(shù)據(jù)的優(yōu)先級,根據(jù)數(shù)據(jù)優(yōu)先級將數(shù)據(jù)包指針放到對應的等待隊列的rear處,然后通過PEND eth_available測試當前網(wǎng)絡接口層發(fā)送函數(shù)狀態(tài)。如果空閑,則檢查緊急隊列是否為空,如果不為空,則發(fā)送緊急隊列中head處數(shù)據(jù)包,如果為空則發(fā)送普通隊列中head處數(shù)據(jù)包;如果網(wǎng)絡接口層發(fā)送函數(shù)正忙,則將進程掛起,等待喚醒。LwIP優(yōu)先級管理機制流程如圖5所示。

圖5 LwIP優(yōu)先級管理機制流程

5 實驗與分析

測試目的:對比LwIP優(yōu)化前響應速度,優(yōu)化后普通數(shù)據(jù)響應速度以及優(yōu)化后緊急數(shù)據(jù)響應速度。

測試平臺:PC端搭載Windows XP操作系統(tǒng),運行TCP/IP調(diào)試工具NetAssist;開發(fā)板搭載嵌入式Linux操作系統(tǒng),以優(yōu)化前后的LwIP作為TCP/IP協(xié)議棧,運行測試程序。

測試方法:在不同的網(wǎng)絡負載下,測試程序向PC端發(fā)送數(shù)據(jù)包,通過記錄應用程序調(diào)用協(xié)議棧發(fā)送函數(shù)以及驅(qū)動程序在物理層發(fā)出數(shù)據(jù)2個時刻的系統(tǒng)時間來計算LwIP協(xié)議棧響應時間。網(wǎng)絡負載大小由測試程序發(fā)送數(shù)據(jù)包的頻率控制。測試程序以固定的頻率向PC上的服務端發(fā)送數(shù)據(jù)包,數(shù)據(jù)包大小為1024 Byte,一次會話發(fā)送1000個數(shù)據(jù)包,通過對每個數(shù)據(jù)包的響應時間進行算數(shù)平均得到協(xié)議棧平均響應時間。在發(fā)送普通數(shù)據(jù)的過程中隨機插入緊急數(shù)據(jù)并對其響應時間進行測試可以得到優(yōu)化后的LwIP緊急數(shù)據(jù)的響應時間。

測試結果:測試結果如表1所示,結果對比如圖6所示。

表1 LwIP協(xié)議棧響應時間μs

圖6 LwIP協(xié)議棧響應時間對比

測試結果顯示,在相同的網(wǎng)絡負載情況下,優(yōu)化后的LwIP協(xié)議棧比優(yōu)化前響應時間少12%~32%。網(wǎng)絡負載較小時,LwIP優(yōu)化前后的響應時間相差不大,約為12%;網(wǎng)絡負載較大時,優(yōu)化后的LwIP響應時間明顯小于優(yōu)化前,約為32%。此外,優(yōu)化后的協(xié)議棧緊急數(shù)據(jù)的響應時間隨網(wǎng)絡負載的增加變化較小,可見緊急數(shù)據(jù)具有更高的優(yōu)先級。

6 結束語

隨著科技的發(fā)展,嵌入式系統(tǒng)和網(wǎng)絡技術結合得越來越緊密,網(wǎng)絡化將成為嵌入式設備的發(fā)展趨勢。在此背景下,對嵌入式TCP/IP協(xié)議棧的性能進行優(yōu)化,具有重要的意義。本文針對嵌入式系統(tǒng)對LwIP實時性的要求,通過實驗分析協(xié)議棧性能瓶頸,采用3種優(yōu)化方式,實現(xiàn)LwIP協(xié)議棧實時性能優(yōu)化。

[1] 許 剛.基于ARM11的嵌入式視頻采集系統(tǒng)設計[J].測控技術,2013,32(12):37-40.

[2] 王建平,周辰飛,朱程輝,等.一種ZigBee-TCP/IP無縫網(wǎng)關模型[J].合肥工業(yè)大學學報:自然科學版,2013, 36(9):1058-1062.

[3] 陳華兵.基于μC/OS-Ⅱ網(wǎng)絡模塊的擴展及任務調(diào)度算法的研究[D].武漢:武漢理工大學,2007.

[4] 郭傳雄,鄭少仁.對Linux操作系統(tǒng)中TCP/IP網(wǎng)絡協(xié)議的IP層排隊分析[J].計算機學報,2001,24(5): 860-865.

[5] 韓德強,楊淇善,王宗俠,等.基于μC/OS-Ⅲ的LwIP協(xié)議棧的移植與實現(xiàn)[J].電子技術應用,2013, 39(5):18-21.

[6] Dunkels A.Design and Implementation of the LwIP TCP/IPStack[D].Stockholm,Sweden:Swedish Institute of Computer Science,2001.

[7] 張 齊,勞熾元.輕量級協(xié)議棧LWIP的分析與改進[J].計算機工程與設計,2010,31(10):2169-2171.

[8] 周海瑞.嵌入式TCP/IP協(xié)議棧的設計與實現(xiàn)[D].西安:西北工業(yè)大學,2007.

[9] 孫鶴旭,邵 巖,邢關生,等.移動機器人網(wǎng)絡的嵌入式Web系統(tǒng)設計[J].計算機工程,2013,39(9):134-136.

[10] 楊高峰,顧春華.基于LwIP的ICMP路由重定向改進[J].北京聯(lián)合大學學報:自然科學版,2009,23(1): 39-42.

[11] 湯維維.數(shù)字機頂盒以太網(wǎng)接入的設計與實現(xiàn)[D].武漢:武漢理工大學,2008.

[12] 李良仁,彭雪峰.LwIP協(xié)議棧在NIOSⅡ系統(tǒng)中的移植[J].機電技術,2009,25(4):25-28.

[13] 張 潔,傅 明.LwIP協(xié)議棧在嵌入式Linux下的移植與實現(xiàn)[J].微計算機信息,2011,27(4):94-96.

[14] 馮彥君,孫利民,錢華林,等.MANET中TCP改進研究綜述[J].軟件學報,2005,16(3):434-444.

[15] Liu Guoping,Sun Jian,Zhao Yunbo.Design,Analysis and Real-time Implementation of Networked Predictive Control Systems[J].Acta Automatica Sinica,2013, 39(11):1769-1777.

[16] 蔡雄飛,王新華,郭淑琴.嵌入式TCP/IP協(xié)議LwIP的內(nèi)存管理機制研究[J].杭州電子科技大學學報, 2012,32(4):118-121.

[17] 孫曉穎,曾文藝.基于Gprof的函數(shù)調(diào)用順序研究[J].微計算機信息,2010,26(12):121-124.

[18] 張惠臻,王 超,陳 雁.嵌入式軟件性能分析方法研究與工具設計[J].計算機應用與軟件,2013,30(10): 284-287.

[19] 魏 強,金 然,王清賢.基于中間匯編的緩沖區(qū)溢出檢測模型[J].計算機工程,2009,35(3):169-172.

編輯 顧逸斐

Analysis and Optimization of Lightweight TCP/IP Protocol Stack Mechanism

YUAN Zhongshu,LU Yang
(School of Computer and Information,Hefei University of Technology,Hefei 230009,China)

Lightweight TCP/IP protocol stack(LwIP)is mainly used in resource-constrained embedded devices.In order to meet the real-time requirement of the embedded device,this paper analyzes the internal mechanism of LwIP, conducts a performance bottleneck analysis by experimental measurements,and designs the optimization program of LwIP.The main performance bottlenecks of LwIP are memory copy and verification process.Accordingly,the optimized algorithms of memory copy and checksum are presented.Additionally,in order to meet the higher priority requirement of the urgent data,this paper presents the management mechanism of the priority,and ensures that the emergency packets take precedence over ordinary data packets.Experimental tests are presented to prove that these optimization methods improve the real-time performance of LwIP.

Lightweight TCP/IP protocol stack(LwIP);embedded;real-time;optimization;priority;wait queue

袁中書,陸 陽.輕量級TCP/IP協(xié)議棧機制分析與優(yōu)化[J].計算機工程,2015,41(2):317-321.

英文引用格式:Yuan Zhongshu,Lu Yang.Analysis and Optimization of Lightweight TCP/IP Protocol Stack Mechanism[J]. Computer Engineering,2015,41(2):317-321.

1000-3428(2015)02-0317-05

:A

:TP393

10.3969/j.issn.1000-3428.2015.02.061

安徽省科技攻關計劃基金資助重大項目(11010201011)。

袁中書(1988-),男,碩士研究生,主研方向:嵌入式系統(tǒng);陸 陽,教授。

2014-02-27

:2014-03-26E-mail:yuanzhongshu_1988@163.com

猜你喜歡
嵌入式優(yōu)化
超限高層建筑結構設計與優(yōu)化思考
民用建筑防煙排煙設計優(yōu)化探討
關于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
由“形”啟“數(shù)”優(yōu)化運算——以2021年解析幾何高考題為例
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統(tǒng)通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發(fā)平臺
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應用
基于低碳物流的公路運輸優(yōu)化
主站蜘蛛池模板: 日韩精品一区二区三区免费| 亚洲成人网在线观看| 97超级碰碰碰碰精品| 日韩亚洲综合在线| 色哟哟国产精品| 国产一级视频久久| 欧美精品在线免费| 乱人伦99久久| 日本午夜三级| 国产永久在线视频| 免费一级毛片不卡在线播放| 777午夜精品电影免费看| 成人毛片免费观看| 国产麻豆91网在线看| 岛国精品一区免费视频在线观看| 天天综合色网| 亚洲精品视频网| 国产福利小视频在线播放观看| 毛片视频网址| 99热这里只有精品免费| 国产精品视频第一专区| 毛片卡一卡二| 91无码人妻精品一区二区蜜桃| 一区二区影院| 91网红精品在线观看| 欧美另类图片视频无弹跳第一页| 啪啪啪亚洲无码| 亚洲欧美另类日本| 国产午夜无码片在线观看网站| 狠狠做深爱婷婷综合一区| 国产精品免费p区| 成人一级黄色毛片| 亚洲高清国产拍精品26u| 国产无码高清视频不卡| 又黄又爽视频好爽视频| 国产成年女人特黄特色大片免费| 欧美日韩国产综合视频在线观看| 久久天天躁狠狠躁夜夜躁| 无码啪啪精品天堂浪潮av| 第一页亚洲| 精品一区二区久久久久网站| 台湾AV国片精品女同性| 香蕉色综合| 欧美一级高清片久久99| 福利在线不卡| 日韩av无码精品专区| 国产精品亚洲专区一区| 五月天综合网亚洲综合天堂网| 亚洲日本精品一区二区| 亚洲人成日本在线观看| 老色鬼久久亚洲AV综合| 国内精品小视频在线| 日本亚洲成高清一区二区三区| 最新亚洲人成网站在线观看| 丰满人妻久久中文字幕| 99这里只有精品在线| 秋霞一区二区三区| 欧美v在线| 精品成人免费自拍视频| 国产成人免费观看在线视频| 久久综合五月婷婷| 91啦中文字幕| 91无码人妻精品一区| 精品国产aⅴ一区二区三区 | 亚洲一级毛片免费观看| 日韩AV无码免费一二三区| 呦系列视频一区二区三区| 日韩欧美亚洲国产成人综合| 亚洲狠狠婷婷综合久久久久| 日韩在线观看网站| 久久福利网| 婷婷色在线视频| 欧美日韩另类国产| 91精品专区| 国产幂在线无码精品| 精品久久高清| a级毛片毛片免费观看久潮| 婷五月综合| 久久综合干| 久久久久久国产精品mv| 91精品国产情侣高潮露脸| 亚洲精品男人天堂|