精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

降低20%鏈路耗時,Trip.com APP QUIC應用和優化實踐

移動開發 移動應用
近幾年隨著QUIC協議在IETF的標準化發展,越來越多的國內外大廠開始在生產環境對QUIC進行落地,以此提升某些業務場景下的服務性能。

作者簡介:競哲,攜程資深后端開發工程師,關注網絡協議、RPC、消息隊列以及云原生等領域。

一、背景

QUIC 全稱 quick udp internet connection,即“快速 UDP 互聯網連接”(和英文 quick 諧音,簡稱“快”),是由 google 提出的使用 udp 進行多路并發傳輸的協議,是HTTP3的標準傳輸層協議。近幾年隨著QUIC協議在IETF的標準化發展,越來越多的國內外大廠開始在生產環境對QUIC進行落地,以此提升某些業務場景下的服務性能。

Trip.com App作為一個面向國際化的App,承載了大量海外用戶的請求,這些請求需要從海外回源到上海,具有鏈路長、網絡不穩定等特點。在這樣的背景下,我們嘗試使用QUIC對App的傳輸鏈路進行了優化,并與目前的TCP傳輸鏈路進行對比實驗。結果表明,QUIC協議的落地降低了Trip.com App大約20%的鏈路耗時,大大提升了用戶的體驗。

二、QUIC簡介

簡單來說,QUIC是基于UDP封裝的安全的可靠傳輸協議,通過TLS1.3來保證傳輸的安全性,并通過協議標準來保證基于UDP傳輸的可靠性。目前QUIC協議已經成為新一代HTTP協議HTTP3的標準底層協議。QUIC在整個網絡協議棧中的位置如下所示:

相較于TCP協議,QUIC主要具備以下優勢:

三、QUIC服務端落地實踐

QUIC的落地需要客戶端與服務端的共同支持,客戶端我們使用了Google的開源Cronet網絡庫,服務端基于Nginx的官方quic分支。為了滿足我們的業務與部署場景,客戶端與服務端都對原生的代碼進行了一些改造。本文主要介紹服務端的改造內容以及整體架構。

3.1 服務端整體架構

服務端的整體分層如圖所示:

其中:

  • AX是公網的負載均衡器,通過配置可以做到將相同客戶端ip+port的數據包轉發到下游的同一臺實例上。
  • Nginx Stream層是基于Nginx實現的數據包轉發層,主要用來支持連接遷移的功能。
  • Nginx QUIC即QUIC服務端,基于Nginx的官方quic分支開發改造,用來接收QUIC數據包,并解析出Http請求轉發到公司的API Gateway上。

為了充分利用CPU的性能,提升整個系統的高可用性,Nginx Stream和Nginx QUIC都是集群多進程部署。這就為請求轉發、實現連接遷移和0-RTT帶來了一系列問題。下面針對遇到的問題以及我們的解決方案進行簡單的介紹。

3.2 集群多進程部署

由于我們在多進程部署Nginx QUIC服務端時采用reuseport的形式監聽端口,所以在介紹多進程部署之前,先簡單介紹Linux系統的reuseport機制和Nginx的進程模型。

所謂reuseport,簡單理解就是允許多個套接字對同一ip+port進行監聽。Linux在接收到數據時,會根據四元組轉發數據到相應的套接字,即來源于同一個客戶端的數據總會被分發給相同的套接字。Nginx基于這個特性,在啟動時,對于配置reuseport的端口,會在創建與進程數量一致的套接字,監聽同一端口,并為每個進程分配其中的一個套接字。這樣便實現了多進程監聽同一端口的功能,并且來源于同一源ip+port的數據總是會被分發給同一進程。

有了以上理論基礎,我們來看集群多進程部署時,我們的系統會出現什么問題。由于Nginx Stream層主要用來支持連接遷移,所以此處暫時先忽略NginxStream的存在,即服務的架構為AX直連Nginx QUIC集群。

由于AX為四層負載均衡器,所以在對UDP數據包進行轉發時,可能將隸屬于同一QUIC請求的多個UDP包轉發到不同的下游實例中,這就會導致請求無法被處理。其次,即使所有的數據包都被AX轉發到同一臺Nginx QUIC實例上,由于Nginx QUIC實例為多進程部署,如果多個數據包的源ip+port不同,也會被分發到不同的Nginx進程中。以上兩種情況都會導致正常的請求無法被處理,整個系統完全無法正常工作。

幸運的是,經過調研我們發現AX可以通過配置將來源于同一源ip+port的數據包通過同一出口ip+port轉發到同一臺服務器實例上,服務端實例通過reuseport機制就可以做到將數據分發給同一進程。這樣如果客戶端的ip+port不發生變化,其請求就會被一直轉發到同一臺服務端實例的同一進程中。

以上方案只是針對客戶端ip+port不發生變化的場景,但在移動網絡的環境下,客戶端網絡變化是十分正常的事情。當客戶端網絡發生變化時,客戶端就需要與服務端進行重新握手建立連接,這樣就會帶來額外的時延,影響用戶體驗。

雖然QUIC有對連接遷移的支持,Nginx也對連接遷移的功能進行了實現,但都是針對端對端的場景,在我們集群多進程部署的場景下無法正常工作。為此,我們對代碼以及部署架構進行了一些定制化改造以支持集群多進程部署場景下的連接遷移。

3.3 連接遷移

連接遷移是QUIC的一個重大特性。指的是當客戶端或服務端的ip+port發生變化時,兩端可以保證連接不中斷繼續通信。大多數情況下都是客戶端ip+port變化導致的連接遷移,服務端的ip+port基本不會改變。本文中討論的也是客戶端ip+port發生變化的場景。

在以TCP作為傳輸層協議的網絡鏈路中,當用戶的網絡發生變化,如移動網與wifi的切換,客戶端需要重新與服務端建立連接才可以繼續通信。由于TCP建立連接需要三次握手,這就需要消耗額外的RTT(Round-Trip Time,往返時延)。尤其在弱網或者跨地區調用的場景下,建立連接需要消耗更多的時間,這對用戶來說體驗非常差。

而由于QUIC基于UDP協議,UDP并沒有連接的概念,因此便可以在QUIC協議中通過connectionId來標識一個唯一的連接。當四元組發生改變時,只要connectionId “不變”,便可以維持連接不斷,從而實現連接遷移的功能。

3.3.1 Nginx-QUIC連接遷移功能的實現

為了利于大家對Nginx連接遷移功能實現的理解,先簡單介紹一下QUIC的握手過程中涉及到的數據包類型。客戶端在首次與服務端建立連接時,首先會發送一個Initial包。服務端收到Initial包后返回Handshake包,客戶端收到Handshake包后,便可以正常發送應用請求數據。此處我們省略了握手過程中的ACK、加解密過程,精簡后的握手流程如圖所示:

對QUIC握手流程有了大致的了解之后,我們來看Nginx是如何實現連接遷移功能的。

客戶端發起與服務器建立連接的請求時,會在Initial包中攜帶一個由客戶端隨機生成的dcid。Nginx服務端收到Initial包后,會隨機生成一個cid在Handshake包中返回,后續客戶端發送的數據包都會以這個服務端返回的cid作為dcid。握手完成后,Nginx會生成多個cid保存在內存中,并在握手完成后將這些cid發送給客戶端作為備用,cid的個數取決于客戶端與服務端 active_connection_id_limit 參數的限制。

當客戶端主動發起連接遷移時,會從備用的cid集合中取出一個作為后續數據包的dcid。Nginx收到攜帶新dcid的非探測包后,感知到客戶端發生了遷移,會對新的客戶端地址進行驗證,當驗證通過后,后續數據包都會發送給新的客戶端地址,也就完成了整個連接遷移的流程。

以上對連接遷移的實現,僅僅在端對端且服務器單進程部署的場景下可以很好地工作。但是,在實際的生產環境中,由于引入了AX等負載均衡設備,而且服務端為多機多進程部署,因此當客戶端網絡環境發生變化時,新的請求數據包可能會被轉發到新的服務器進程中。由于新的服務器進程并不包含此客戶端連接遷移所需的上下文,就會導致客戶端遷移失敗。

解決上述問題的思路就是引入一個中間的LB層,這層的主要作用是解析出udp包中的dcid,然后根據dcid轉發,把連接遷移前后的數據包轉發到同一服務器的同一進程上。

此處我們基于Nginx搭建了Nginx Stream層,作為QUIC的LB層來實現數據包轉發。由于連接遷移后,客戶端會使用全新的dcid來發送數據包,為了使得Nginx Stream層通過新dcid的也可以路由到遷移前的機器上,我們還對服務端生成客戶端dcid的邏輯進行了改造,在dcid中包含了服務端的ip+port信息。這樣,當Stream層的機器收到遷移后的數據包時,便可以根據dcid中的ip+port信息將其轉發到客戶端遷移之前的服務端機器上。

加入Nginx Stream層之后的服務端整體架構如圖所示:

以上方案只是實現了將客戶端連接遷移前后的請求轉發到同一臺服務器上,但無法保證請求被轉發到服務器的同一進程中。試想,當客戶端發生連接遷移時,AX可能會將客戶端遷移后的數據包發送到跟之前不同的Nginx Stream實例上,雖然Nginx Stream可以通過dcid中的ip+port信息將數據包轉發到同一臺Nginx QUIC實例上,但對于Nginx QUIC來說,源ip+port為Nginx Stream的ip+port,源ip+port發生了改變。由于Nginx多進程分發請求依賴了操作系統的reuseport機制,而Linux的reuseport是根據四元組進行請求分發的,因此源ip+port的改變就可能會導致請求在服務端被分發到與遷移前不同的Nginx進程中,從而導致連接遷移失敗。

為了解決這個問題,就要求NginxStream可以將數據包準確地轉發到指定機器的指定進程中。我們進行了調研,總結下來大致分為兩種解決方案:

  • 一是修改操作系統reuseport的分發機制,使其根據dcid將數據分發到指定進程。
  • 二是使不同的進程監聽不同的端口,這樣就可以通過將數據包轉發到不同端口,從而轉發到具體的進程。

第一種方案需要修改Linux內核代碼,成本較高,并且dcid在整個系統中屬于QUIC的應用層數據,我們認為不應該在操作系統代碼中嵌入應用層的數據邏輯,因此最終選擇了多端口的解決方案。

3.3.2 基于監聽多端口的連接遷移方案

為了降低NginxStream配置文件復雜度和系統的整體維護成本,以及未來支持服務端的平滑無損升級,我們讓每個進程監聽了兩種不同的端口:

  • 第1種是監聽端口listening port,主要接收客戶端的initial或0-RTT包,用來建立連接,每個進程的listening port相同;
  • 第2種是worker port,用來接收客戶端第一個包之后的所有數據包,每個進程的workerport不同。

基于此方案,由于不同進程監聽了相同的listening port,因此在建立連接時,由Linux根據四元組進行請求分發,從而實現進程間的負載均衡。一旦客戶端與服務端建立了連接,后續此客戶端所有請求報文中的dcid都包含了此服務器的ip+worker port信息,因此后續請求(包括連接遷移后的請求)都會被Nginx Stream層轉發到同一服務器的同一進程進行處理,從而實現了多進程場景下對連接遷移功能的支持。

完整的連接遷移過程如下圖:

可以看到,整個連接遷移過程對Nginx Stream來說是透明的,它只負責解析dcid中的ip+port信息,并進行數據包的轉發。Stream層并不需要感知服務端worker port的存在,僅僅在收到initial或0-RTT包時,需要根據dcid的hash值將其轉發到Nginx QUIC機器的listening port上,因此在Stream機器的配置文件中,只需要配置Nginx QUIC的listening port。這樣,如果Nginx QUIC需要修改單機的進程數,Nginx Stream層無需做任何改動。

而在Nginx QUIC端,只需在Nginx現有進程模型的基礎上,為每個進程額外分配一個worker port,并在為客戶端生成的dcid中包含ip+worker port的信息即可。

3.4 0-RTT實現

QUIC的另一個重要特性是支持0-RTT建立連接,它通過UDP+TLS1.3構建安全的互聯服務。對于TLS1.3來說,如果是首次建立連接需要1-RTT,非首次可以實現0-RTT。

當客戶端與服務端第一次建立連接時,服務端會依賴加密層的TLS會生成加密的New Session Ticket返回給客戶端,并將解密的ticket_key保存在本地。客戶端在發起0-RTT請求時,會在報文的PSK中帶上NewSession Ticket。服務端收到報文時,通過ticket_key對PSK中的信息進行解密。如果解密成功,則可以恢復之前的session,后續直接進行安全通信。如果失敗,則需要重新握手建立TLS連接。

0-RTT實現示意圖如下:

可以看到,服務端支持0-RTT的關鍵就是需要包含恢復session所需的ticket_key。但是,nginx中生成的ticket_key是保存在進程的上下文中的,由于nginx中各個進程的上下文是相互獨立的,因此不同進程間的ticket_key無法共享。

并且0-RTT握手時數據包中的dcid由客戶端隨機生成,不包含路由信息,所以Nginx Stream層也無法通過dcid將0-RTT請求轉發到之前已經與客戶端建連的進程中。這就導致如果服務端進程無法解密收到的0-RTT數據包,就會導致0-RTT握手失敗,客戶端需要重新發起1-RTT握手請求。

為了解決這個問題,我們引入了Redis,使得服務端集群中的各機器各進程共享ticket_key。一個進程在生成ticket_key之前,先去查找redis是否已經存在ticket_key,如果已經存在直接查詢出來作為當前進程ticket_key,如果不存在直接生成并且存入Redis。這樣可以保證在各個進程中的ticket_key相同,最終的效果是如果A進程加密的session,0-RTT時被轉發到了B進程,因為A、B進程的ticket_key相同,B進程也可以解密session,完成連接的建立。

改造后的0-RTT流程如下所示:

四、總結

QUIC協議由于其強大的拓展性與靈活性,以及弱網環境下呈現出來的優勢,近幾年逐漸被各大廠商應用在生產環境中。我們針對IBU業務海外流量大的特點,基于Nginx官方的quic分支進行改造,在生產環境實現了多機多進程環境下0-RTT、連接遷移等功能,并取得了Trip.com App請求總體平均耗時減少20%的良好效果。后續我們也會緊跟社區步伐,將更多QUIC的優秀特性更新集成到我們的服務中,推動QUIC協議在攜程更好地落地。

責任編輯:未麗燕 來源: 攜程技術
相關推薦

2024-07-17 09:22:17

2021-10-18 12:01:17

iOS自動化測試Trip

2022-04-28 15:34:00

應用優化實踐

2022-06-21 07:51:15

云原生應用鏈路

2023-07-20 15:46:24

2021-11-18 10:01:00

Istio 全鏈路灰度微服務框架

2010-05-10 17:00:38

鏈路負載均衡

2017-01-23 21:05:00

AndroidApp啟動優化

2017-10-25 20:42:13

頻播放量秒拍鏈路優化

2025-06-24 09:51:47

2022-08-02 07:46:26

C端編譯過程幸福里APP

2022-03-22 22:05:39

區塊鏈支付模式

2022-04-27 10:53:34

web優化性能

2023-01-30 22:34:44

Node.js前端

2019-03-20 11:20:31

VueWeb 前端

2024-09-26 21:40:52

數據飛輪數據倉庫數據中臺

2024-09-26 17:19:22

數據飛輪數據操作

2023-10-30 07:25:37

數據湖數據處理

2025-03-04 08:53:10

2023-05-31 14:54:32

點贊
收藏

51CTO技術棧公眾號

欧美亚洲另类视频| 91精品国产欧美一区二区18| 日本精品一区二区| 中文字幕制服诱惑| 欧美aⅴ99久久黑人专区| 亚洲国产精品久久91精品| 国产黄色特级片| 精品黄色免费中文电影在线播放| 国产成人在线视频网站| 91chinesevideo永久地址| 99久久99久久精品免费看小说.| 精品三级久久久| 欧美日韩在线视频观看| 亚洲看片网站| 色一情一乱一区二区三区| 日本免费新一区视频| 欧美国产亚洲视频| 中字幕一区二区三区乱码| 欧美a级大片在线| 色婷婷av一区二区三区gif| 一本二本三本亚洲码| 日本一级在线观看| 久久se精品一区精品二区| 久久久久久亚洲精品| 亚洲综合第一区| 欧美1区二区| 7777精品伊人久久久大香线蕉超级流畅 | 精品国产乱码久久久久久88av| 国产一卡二卡三卡| 亚洲国内自拍| 久久久精品电影| 白白色免费视频| 波多野结衣在线一区二区| 欧美三级日韩三级| 亚洲爆乳无码专区| 九九色在线视频| 国产精品久久久久毛片软件| 免费电影一区| 天天操天天操天天操| 九九在线精品视频| 国产精品偷伦免费视频观看的| 影音先锋亚洲天堂| 亚洲国产专区| 欧美激情xxxxx| 午夜精品一区二区三区视频| 91麻豆国产自产在线观看亚洲| 亚洲欧洲激情在线| 久久久久国产精品区片区无码| 精品国产一级| 欧美一区二区在线看| 日韩一区二区三区久久| 91综合国产| 在线看一区二区| 欧美黄色一级片视频| 夜鲁夜鲁夜鲁视频在线播放| 午夜伦理一区二区| av网站手机在线观看| 调教一区二区| 亚洲综合自拍偷拍| 欧美国产综合在线| av老司机免费在线| 精品久久久久久久久久| www..com日韩| 小视频免费在线观看| 欧美日韩另类在线| 久久无码高潮喷水| 日本中文字幕一区二区| 在线精品亚洲一区二区不卡| 国产超碰在线播放| 欧美a视频在线| 在线播放中文一区| 波多野结衣三级视频| 精品深夜福利视频| 亚洲系列中文字幕| 国精产品久拍自产在线网站| 天天射综合网视频| 欧美成人亚洲成人日韩成人| 九九视频免费在线观看| 亚洲第一毛片| 琪琪第一精品导航| 97成人免费视频| 国产精品1区二区.| 国产日韩在线一区二区三区| 日本天堂影院在线视频| 国产精品午夜在线| 水蜜桃在线免费观看| av在线加勒比| 91国偷自产一区二区开放时间 | 麻豆免费版在线观看| 日本精品一级二级| 亚洲精品视频三区| 六月丁香久久丫| 色综合亚洲精品激情狠狠| 538任你躁在线精品视频网站| 在线视频观看日韩| 国产精品久久久久久久久久东京| 99产精品成人啪免费网站| 粉嫩一区二区三区性色av| 免费看污久久久| 日本激情视频在线观看| 亚洲国产欧美另类丝袜| 三级在线视频观看| 一区二区三区四区视频免费观看 | 亚洲第一成年网| 黄色高清无遮挡| 久久一级大片| 亚洲天堂第一页| 欧美激情一区二区视频| 天堂成人免费av电影一区| 91久久夜色精品国产网站| 瑟瑟在线观看| 一区二区三区在线观看国产| 88av.com| 看全色黄大色大片免费久久久| 伊人伊成久久人综合网站| 国产一级视频在线| 久久91精品国产91久久小草| 久久久水蜜桃| 青草av在线| 91麻豆精品国产自产在线 | 欧美精品一区在线播放| 免费又黄又爽又猛大片午夜| 成人免费不卡视频| 欧美爱爱视频网站| 成人开心激情| 日韩av影视在线| 久久久国产成人| 久久精品国产久精国产爱| 欧美h视频在线| 92久久精品| 日韩亚洲欧美成人一区| 99热99这里只有精品| 巨乳诱惑日韩免费av| 久久精品中文字幕一区二区三区 | 国产成人毛毛毛片| 国产精品第13页| 爱情岛论坛成人| 亚洲深夜福利在线观看| 51午夜精品视频| 蜜桃91麻豆精品一二三区| 亚洲欧美另类在线| 在线看的黄色网址| 日本一区二区在线看| 国产91九色视频| 欧美日韩伦理片| 精品久久久久久久中文字幕| 黄色免费视频网站| 在线精品亚洲| 国产伦精品一区二区三区四区视频 | 久久人体av| 中文字幕在线成人| 一级全黄少妇性色生活片| 亚洲国产成人午夜在线一区| 91淫黄看大片| 日韩.com| 国产情人节一区| 拍真实国产伦偷精品| 欧美精品 日韩| 91免费在线看片| 久久国产福利国产秒拍| 最新国产精品久久| 国产精品久久久久久久久久辛辛 | 2017亚洲天堂| 久久精品国产精品亚洲精品| 亚洲一区二区三区色| 青草综合视频| 欧美老女人性生活| 天天操天天操天天操| 欧美色另类天堂2015| 免费网站在线高清观看| 麻豆精品精品国产自在97香蕉 | 亚洲高清在线| 精品国产乱码久久久久软件| 成人欧美一区二区三区的电影| 亚洲欧美资源在线| 中文字幕第2页| 亚洲欧美自拍偷拍| 国产性生活毛片| 久久综合网络一区二区| 一区不卡视频| 中文在线综合| 日韩免费av在线| 免费av毛片在线看| 亚洲精品在线电影| 国产午夜无码视频在线观看| 综合中文字幕亚洲| 免费a v网站| 日韩成人一区二区| 蜜桃视频成人在线观看| 欧美18免费视频| 国产日韩欧美综合| 18video性欧美19sex高清| 亚洲天堂2020| av资源免费看| 欧美日韩在线免费观看| 日韩欧美国产成人精品免费| 成人动漫中文字幕| 污污网站免费看| 亚洲一级高清| 亚洲最大免费| 女人抽搐喷水高潮国产精品| 国产精品一区av| 久久久男人天堂| 色偷偷91综合久久噜噜| 天堂8在线视频| 欧美精品一卡两卡| 天天操夜夜操视频| 一区二区三区在线影院| 国产精久久一区二区三区| 国产丶欧美丶日本不卡视频| 噼里啪啦国语在线观看免费版高清版| 欧美a级在线| 日韩aⅴ视频一区二区三区| 99a精品视频在线观看| 国产精品亚洲网站| 香蕉伊大人中文在线观看| 美乳少妇欧美精品| av片在线免费观看| 亚洲欧美中文在线视频| 天天综合网在线| 欧美一级国产精品| 中文字幕精品无码亚| 五月天欧美精品| 日本一级二级视频| 国产精品免费看片| 加勒比综合在线| 波多野结衣视频一区| 色黄视频免费看| 美女一区二区三区在线观看| 国产乱子夫妻xx黑人xyx真爽| 欧美日韩亚洲三区| mm131午夜| 午夜久久免费观看| 一区二区三区久久网| 国产欧美一区二区三区精品观看| 激情伦成人综合小说| 视频在线亚洲| 亚洲一区二区三区毛片| 四虎国产精品永久在线国在线| 国产精品久久久久久久久久东京 | 成人h视频在线| 久久三级毛片| 国产日韩一区在线| 免费一区二区三区四区| 国产美女久久精品| 国产精品久久久久77777丨| 国产精品福利观看| 成人自拍视频网| 国产精品日韩精品| 国产成人精选| 国产主播喷水一区二区| 久久91超碰青草在哪里看| 国产精品丝袜久久久久久高清| 成人免费福利| 国产精品视频播放| 成人51免费| 147欧美人体大胆444| 秋霞一区二区| 国产日韩欧美亚洲一区| 欧美日韩直播| 欧洲视频一区二区三区| 色天天综合网| 欧美三级午夜理伦三级老人| 欧美理论在线| 日本福利视频一区| 日韩午夜激情| 国产成人精品无码播放| 蜜臀av性久久久久av蜜臀妖精| 奇米视频888| 国产精品亚洲第一区在线暖暖韩国| 免费人成视频在线播放| 成人精品在线视频观看| 不卡一区二区在线观看| 中文子幕无线码一区tr| 小泽玛利亚一区二区免费| 一区二区三区中文在线观看| 日本最新中文字幕| 在线观看av一区二区| 国产女人18毛片水真多| 精品国产一区二区三区av性色| 天堂中文在线资| 一区二区三区日韩在线| 99热国产在线| 国产91|九色| 久久亚洲精品中文字幕| 国产成人一区二区三区免费看| 亚洲人成网亚洲欧洲无码| 亚洲图片欧洲图片日韩av| 欧美精品麻豆| 免费观看成人网| 国产黄色精品视频| 日韩人妻无码一区二区三区| √…a在线天堂一区| 日韩av在线天堂| 欧美日韩综合在线| 免费观看成年人视频| 一区二区三区久久精品| 白白色在线观看| 国产精品入口尤物| 欧美人妖视频| 在线无限看免费粉色视频| 99riav国产精品| 少妇一级淫免费播放| 99热这里都是精品| 国产精品99久久久久久成人| 精品国产电影一区| 国产熟女精品视频| 亚洲网在线观看| 91美女精品| 91热福利电影| 精品国产乱码久久久久久果冻传媒| 2022中文字幕| 麻豆国产精品官网| 一区二区视频观看| 一区二区三区日韩| 在线视频欧美亚洲| 亚洲美女视频网站| 超碰97国产精品人人cao| 成人国产在线视频| 国产精品三级| 亚洲自偷自拍熟女另类| 国产成人啪免费观看软件| 色屁屁草草影院ccyy.com| 欧美日韩国产专区| www.黄色片| 久久精品国亚洲| 精品欧美一区二区三区在线观看| 国产一区在线免费| 欧美午夜不卡| 免费看的av网站| 亚洲同性gay激情无套| 最近中文字幕在线观看视频| 亚洲免费av网址| 国产在线美女| 国产亚洲欧美一区二区三区| 欧美日韩一区二区高清| 中文字幕日韩久久| 中文字幕在线播放不卡一区| 国产情侣呻吟对白高潮| 亚洲美女免费精品视频在线观看| 超碰在线cao| 激情视频一区二区| 中文亚洲欧美| 国产精品伦子伦| 性久久久久久久久久久久| 国产成人三级在线观看视频| 精品视频9999| 亚洲超碰在线观看| 日本香蕉视频在线观看| 国产成人在线免费观看| 久久精品波多野结衣| 欧美一区二区三区思思人| av片在线观看免费| 99精品国产高清在线观看| 欧美精品麻豆| 水蜜桃av无码| 黄色一级大片在线免费看国产一| 欧美高清一级大片| 欧美大片网址| 色综合av综合无码综合网站| 久久久久国产精品麻豆| 中文字幕久久久久| 久久精品一本久久99精品| 日本高清久久| 无码专区aaaaaa免费视频| 2023国产精品自拍| 国产一级片一区二区| 久久久国产一区| 77成人影视| 91猫先生在线| 国产欧美中文在线| 国产精品伦理一区| 久久久久久av| 欧美**字幕| 三日本三级少妇三级99| 亚洲尤物在线视频观看| 日韩一区二区三区中文字幕| 国产精品福利网| 自拍日韩欧美| 国产精品嫩草av| 欧美日韩亚洲综合在线 | 91av在线影院| 欧美色爱综合| 美女日批在线观看| 色综合久久综合网| 黄网页在线观看| 国产综合18久久久久久| 日韩电影免费在线看| 欧洲猛交xxxx乱大交3| 亚洲免费视频在线观看| 成人污版视频| av7777777| 亚洲欧洲www| 日韩欧美在线观看一区二区| 国产日韩专区在线| 9色精品在线| 看免费黄色录像| 亚洲欧美国产日韩中文字幕| 国产精品久久久久久av公交车 | 久久成人免费电影|