久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 多线程网络模型全面揭秘|网络硬核系列

發布時間:2024/4/11 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 多线程网络模型全面揭秘|网络硬核系列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 導言

  • Redis 有多快?

  • Redis 為什么快?

  • Redis 為何選擇單線程?

    • 避免過多的上下文切換開銷

    • 避免同步機制的開銷

    • 簡單可維護

  • Redis 真的是單線程?

    • 單線程事件循環

    • 多線程異步任務

  • Redis 多線程網絡模型

    • 設計思路

    • 源碼剖析

    • 性能提升

    • 模型缺陷

  • 總結

  • 參考&延伸閱讀

  • References

導言

在目前的技術選型中,Redis 儼然已經成為了系統高性能緩存方案的事實標準,因此現在 Redis 也成為了后端開發的基本技能樹之一,Redis 的底層原理也順理成章地成為了必須學習的知識。

Redis 從本質上來講是一個網絡服務器,而對于一個網絡服務器來說,網絡模型是它的精華,搞懂了一個網絡服務器的網絡模型,你也就搞懂了它的本質。

本文通過層層遞進的方式,介紹了 Redis 網絡模型的版本變更歷程,剖析了其從單線程進化到多線程的工作原理,此外,還一并分析并解答了 Redis 的網絡模型的很多抉擇背后的思考,幫助讀者能更深刻地理解 Redis 網絡模型的設計。

Redis 有多快?

根據官方的 benchmark,通常來說,在一臺普通硬件配置的 Linux 機器上跑單個 Redis 實例,處理簡單命令(時間復雜度 O(N) 或者 O(log(N))),QPS 可以達到 8w+,而如果使用 pipeline 批處理功能,則 QPS 至高能達到 100w。

僅從性能層面進行評判,Redis 完全可以被稱之為高性能緩存方案。

Redis 為什么快?

Redis 的高性能得益于以下幾個基礎:

  • C 語言實現,雖然 C 對 Redis 的性能有助力,但語言并不是最核心因素。

  • 純內存 I/O,相較于其他基于磁盤的 DB,Redis 的純內存操作有著天然的性能優勢。

  • I/O 多路復用,基于 epoll/select/kqueue 等 I/O 多路復用技術,實現高吞吐的網絡 I/O。

  • 單線程模型,單線程無法利用多核,但是從另一個層面來說則避免了多線程頻繁上下文切換,以及同步機制如鎖帶來的開銷。

Redis 為何選擇單線程?

Redis 的核心網絡模型選擇用單線程來實現,這在一開始就引起了很多人的不解,Redis 官方的對于此的回答是:

?

It's not very frequent that CPU becomes your bottleneck with Redis, as usually Redis is either memory or network bound. For instance, using pipelining Redis running on an average Linux system can deliver even 1 million requests per second, so if your application mainly uses O(N) or O(log(N)) commands, it is hardly going to use too much CPU.

核心意思就是,對于一個 DB 來說,CPU 通常不會是瓶頸,因為大多數請求不會是 CPU 密集型的,而是 I/O 密集型。具體到 Redis 的話,如果不考慮 RDB/AOF 等持久化方案,Redis 是完全的純內存操作,執行速度是非常快的,因此這部分操作通常不會是性能瓶頸,Redis 真正的性能瓶頸在于網絡 I/O,也就是客戶端和服務端之間的網絡傳輸延遲,因此 Redis 選擇了單線程的 I/O 多路復用來實現它的核心網絡模型。

上面是比較籠統的官方答案,實際上更加具體的選擇單線程的原因可以歸納如下:

避免過多的上下文切換開銷

多線程調度過程中必然需要在 CPU 之間切換線程上下文 context,而上下文的切換又涉及程序計數器、堆棧指針和程序狀態字等一系列的寄存器置換、程序堆棧重置甚至是高速緩存、TLB 快表的汰換,如果是進程內的多線程切換還好一些,因為單一進程內多線程共享進程地址空間,因此線程上下文比之進程上下文要小得多,如果是跨進程調度,則需要切換掉整個進程地址空間。

如果是單線程則可以規避進程內頻繁的線程切換開銷,因為程序始終運行在進程中單個線程內,沒有多線程切換的場景。

避免同步機制的開銷

如果 Redis 選擇多線程模型,又因為 Redis 是一個數據庫,那么勢必涉及到底層數據同步的問題,則必然會引入某些同步機制,比如鎖,而我們知道 Redis 不僅僅提供了簡單的 key-value 數據結構,還有 list、set 和 hash 等等其他豐富的數據結構,而不同的數據結構對同步訪問的加鎖粒度又不盡相同,可能會導致在操作數據過程中帶來很多加鎖解鎖的開銷,增加程序復雜度的同時還會降低性能。

簡單可維護

Redis 的作者 Salvatore Sanfilippo (別稱 antirez) 對 Redis 的設計和代碼有著近乎偏執的簡潔性理念,你可以在閱讀 Redis 的源碼或者給 Redis 提交 PR 的之時感受到這份偏執。因此代碼的簡單可維護性必然是 Redis 早期的核心準則之一,而引入多線程必然會導致代碼的復雜度上升和可維護性下降。

事實上,多線程編程也不是那么盡善盡美,首先多線程的引入會使得程序不再保持代碼邏輯上的串行性,代碼執行的順序將變成不可預測的,稍不注意就會導致程序出現各種并發編程的問題;其次,多線程模式也使得程序調試更加復雜和麻煩。網絡上有一幅很有意思的圖片,生動形象地描述了并發編程面臨的窘境。

你期望的多線程編程 VS 實際上的多線程編程:

你期望的多線程VS實際上的多線程

前面我們提到引入多線程必須的同步機制,如果 Redis 使用多線程模式,那么所有的底層數據結構都必須實現成線程安全的,這無疑又使得 Redis 的實現變得更加復雜。

總而言之,Redis 選擇單線程可以說是多方博弈之后的一種權衡:在保證足夠的性能表現之下,使用單線程保持代碼的簡單和可維護性。

Redis 真的是單線程?

在討論這個問題之前,我們要先明確『單線程』這個概念的邊界:它的覆蓋范圍是核心網絡模型,抑或是整個 Redis?如果是前者,那么答案是肯定的,在 Redis 的 v6.0 版本正式引入多線程之前,其網絡模型一直是單線程模式的;如果是后者,那么答案則是否定的,Redis 早在 v4.0 就已經引入了多線程。

因此,當我們討論 Redis 的多線程之時,有必要對 Redis 的版本劃出兩個重要的節點:

  • Redis v4.0(引入多線程處理異步任務)

  • Redis v6.0(正式在網絡模型中實現 I/O 多線程)

  • 單線程事件循環

    我們首先來剖析一下 Redis 的核心網絡模型,從 Redis 的 v1.0 到 v6.0 版本之前,Redis 的核心網絡模型一直是一個典型的單 Reactor 模型:利用 epoll/select/kqueue 等多路復用技術,在單線程的事件循環中不斷去處理事件(客戶端請求),最后回寫響應數據到客戶端:

    這里有幾個核心的概念需要學習:

    • client:客戶端對象,Redis 是典型的 CS 架構(Client <---> Server),客戶端通過 socket 與服務端建立網絡通道然后發送請求命令,服務端執行請求的命令并回復。Redis 使用結構體 client 存儲客戶端的所有相關信息,包括但不限于封裝的套接字連接 -- *conn,當前選擇的數據庫指針 -- *db,讀入緩沖區 -- querybuf,寫出緩沖區 -- buf,寫出數據鏈表 -- reply等。

    • aeApiPoll:I/O 多路復用 API,是基于 epoll_wait/select/kevent 等系統調用的封裝,監聽等待讀寫事件觸發,然后處理,它是事件循環(Event Loop)中的核心函數,是事件驅動得以運行的基礎。

    • acceptTcpHandler:連接應答處理器,底層使用系統調用 accept 接受來自客戶端的新連接,并為新連接注冊綁定命令讀取處理器,以備后續處理新的客戶端 TCP 連接;除了這個處理器,還有對應的 acceptUnixHandler 負責處理 Unix Domain Socket 以及 acceptTLSHandler 負責處理 TLS 加密連接。

    • readQueryFromClient:命令讀取處理器,解析并執行客戶端的請求命令。

    • beforeSleep:事件循環中進入 aeApiPoll 等待事件到來之前會執行的函數,其中包含一些日常的任務,比如把 client->buf 或者 client->reply (后面會解釋為什么這里需要兩個緩沖區)中的響應寫回到客戶端,持久化 AOF 緩沖區的數據到磁盤等,相對應的還有一個 afterSleep 函數,在 aeApiPoll 之后執行。

    • sendReplyToClient:命令回復處理器,當一次事件循環之后寫出緩沖區中還有數據殘留,則這個處理器會被注冊綁定到相應的連接上,等連接觸發寫就緒事件時,它會將寫出緩沖區剩余的數據回寫到客戶端。

    Redis 內部實現了一個高性能的事件庫 --- AE,基于 epoll/select/kqueue/evport 四種事件驅動技術,實現 Linux/MacOS/FreeBSD/Solaris 多平臺的高性能事件循環模型。Redis 的核心網絡模型正式構筑在 AE 之上,包括 I/O 多路復用、各類處理器的注冊綁定,都是基于此才得以運行。

    至此,我們可以描繪出客戶端向 Redis 發起請求命令的工作原理:

  • Redis 服務器啟動,開啟主線程事件循環(Event Loop),注冊 acceptTcpHandler 連接應答處理器到用戶配置的監聽端口對應的文件描述符,等待新連接到來;

  • 客戶端和服務端建立網絡連接;

  • acceptTcpHandler 被調用,主線程使用 AE 的 API 將 readQueryFromClient 命令讀取處理器綁定到新連接對應的文件描述符上,并初始化一個 client 綁定這個客戶端連接;

  • 客戶端發送請求命令,觸發讀就緒事件,主線程調用 readQueryFromClient 通過 socket 讀取客戶端發送過來的命令存入 client->querybuf 讀入緩沖區;

  • 接著調用 processInputBuffer,在其中使用 processInlineBuffer 或者 processMultibulkBuffer 根據 Redis 協議解析命令,最后調用 processCommand 執行命令;

  • 根據請求命令的類型(SET, GET, DEL, EXEC 等),分配相應的命令執行器去執行,最后調用 addReply 函數族的一系列函數將響應數據寫入到對應 client 的寫出緩沖區:client->buf 或者 client->reply ,client->buf 是首選的寫出緩沖區,固定大小 16KB,一般來說可以緩沖足夠多的響應數據,但是如果客戶端在時間窗口內需要響應的數據非常大,那么則會自動切換到 client->reply 鏈表上去,使用鏈表理論上能夠保存無限大的數據(受限于機器的物理內存),最后把 client 添加進一個 LIFO 隊列 clients_pending_write;

  • 在事件循環(Event Loop)中,主線程執行 beforeSleep --> handleClientsWithPendingWrites,遍歷 clients_pending_write 隊列,調用 writeToClient 把 client 的寫出緩沖區里的數據回寫到客戶端,如果寫出緩沖區還有數據遺留,則注冊 sendReplyToClient 命令回復處理器到該連接的寫就緒事件,等待客戶端可寫時在事件循環中再繼續回寫殘余的響應數據。

  • 對于那些想利用多核優勢提升性能的用戶來說,Redis 官方給出的解決方案也非常簡單粗暴:在同一個機器上多跑幾個 Redis 實例。事實上,為了保證高可用,線上業務一般不太可能會是單機模式,更加常見的是利用 Redis 分布式集群多節點和數據分片負載均衡來提升性能和保證高可用。

    多線程異步任務

    以上便是 Redis 的核心網絡模型,這個單線程網絡模型一直到 Redis v6.0 才改造成多線程模式,但這并不意味著整個 Redis 一直都只是單線程。

    Redis 在 v4.0 版本的時候就已經引入了的多線程來做一些異步操作,此舉主要針對的是那些非常耗時的命令,通過將這些命令的執行進行異步化,避免阻塞單線程的事件循環。

    我們知道 Redis 的 DEL 命令是用來刪除掉一個或多個 key 儲存的值,它是一個阻塞的命令,大多數情況下你要刪除的 key 里存的值不會特別多,最多也就幾十上百個對象,所以可以很快執行完,但是如果你要刪的是一個超大的鍵值對,里面有幾百萬個對象,那么這條命令可能會阻塞至少好幾秒,又因為事件循環是單線程的,所以會阻塞后面的其他事件,導致吞吐量下降。

    Redis 的作者 antirez 為了解決這個問題進行了很多思考,一開始他想的辦法是一種漸進式的方案:利用定時器和數據游標,每次只刪除一小部分的數據,比如 1000 個對象,最終清除掉所有的數據,但是這種方案有個致命的缺陷,如果同時還有其他客戶端往某個正在被漸進式刪除的 key 里繼續寫入數據,而且刪除的速度跟不上寫入的數據,那么將會無止境地消耗內存,雖然后來通過一個巧妙的辦法解決了,但是這種實現使 Redis 變得更加復雜,而多線程看起來似乎是一個水到渠成的解決方案:簡單、易理解。于是,最終 antirez 選擇引入多線程來實現這一類非阻塞的命令。更多 antirez 在這方面的思考可以閱讀一下他發表的博客:Lazy Redis is better Redis。

    于是,在 Redis v4.0 之后增加了一些的非阻塞命令如 UNLINK、FLUSHALL ASYNC、FLUSHDB ASYNC。

    UNLINK 命令其實就是 DEL 的異步版本,它不會同步刪除數據,而只是把 key 從 keyspace 中暫時移除掉,然后將任務添加到一個異步隊列,最后由后臺線程去刪除,不過這里需要考慮一種情況是如果用 UNLINK 去刪除一個很小的 key,用異步的方式去做反而開銷更大,所以它會先計算一個開銷的閥值,只有當這個值大于 64 才會使用異步的方式去刪除 key,對于基本的數據類型如 List、Set、Hash 這些,閥值就是其中存儲的對象數量。

    Redis 多線程網絡模型

    前面提到 Redis 最初選擇單線程網絡模型的理由是:CPU 通常不會成為性能瓶頸,瓶頸往往是內存網絡,因此單線程足夠了。那么為什么現在 Redis 又要引入多線程呢?很簡單,就是 Redis 的網絡 I/O 瓶頸已經越來越明顯了。

    隨著互聯網的飛速發展,互聯網業務系統所要處理的線上流量越來越大,Redis 的單線程模式會導致系統消耗很多 CPU 時間在網絡 I/O 上從而降低吞吐量,要提升 Redis 的性能有兩個方向:

    • 優化網絡 I/O 模塊

    • 提高機器內存讀寫的速度

    后者依賴于硬件的發展,暫時無解。所以只能從前者下手,網絡 I/O 的優化又可以分為兩個方向:

    • 零拷貝技術或者 DPDK 技術

    • 利用多核優勢

    零拷貝技術有其局限性,無法完全適配 Redis 這一類復雜的網絡 I/O 場景,更多網絡 I/O 對 CPU 時間的消耗和 Linux 零拷貝技術,可以閱讀我的另一篇文章:Linux I/O 原理和 Zero-copy 技術全面揭秘。而 DPDK 技術通過旁路網卡 I/O 繞過內核協議棧的方式又太過于復雜以及需要內核甚至是硬件的支持。

    因此,利用多核優勢成為了優化網絡 I/O 性價比最高的方案。

    6.0 版本之后,Redis 正式在核心網絡模型中引入了多線程,也就是所謂的 I/O threading,至此 Redis 真正擁有了多線程模型。前一小節,我們了解了 Redis 在 6.0 版本之前的單線程事件循環模型,實際上就是一個非常經典的 Reactor 模型:

    目前 Linux 平臺上主流的高性能網絡庫/框架中,大都采用 Reactor 模式,比如 netty、libevent、libuv、POE(Perl)、Twisted(Python)等。

    Reactor 模式本質上指的是使用 I/O 多路復用(I/O multiplexing) + 非阻塞 I/O(non-blocking I/O) 的模式。

    更多關于 Reactor 模式的細節可以參考我之前的文章:Go netpoller 原生網絡模型之源碼全面揭秘,Reactor 網絡模型那一小節,這里不再贅述。

    Redis 的核心網絡模型在 6.0 版本之前,一直是單 Reactor 模式:所有事件的處理都在單個線程內完成,雖然在 4.0 版本中引入了多線程,但是那個更像是針對特定場景(刪除超大 key 值等)而打的補丁,并不能被視作核心網絡模型的多線程。

    通常來說,單 Reactor 模式,引入多線程之后會進化為 Multi-Reactors 模式,基本工作模式如下:

    區別于單 Reactor 模式,這種模式不再是單線程的事件循環,而是有多個線程(Sub Reactors)各自維護一個獨立的事件循環,由 Main Reactor 負責接收新連接并分發給 Sub Reactors 去獨立處理,最后 Sub Reactors 回寫響應給客戶端。

    Multiple Reactors 模式通常也可以等同于 Master-Workers 模式,比如 Nginx 和 Memcached 等就是采用這種多線程模型,雖然不同的項目實現細節略有區別,但總體來說模式是一致的。

    設計思路

    Redis 雖然也實現了多線程,但是卻不是標準的 Multi-Reactors/Master-Workers 模式,這其中的緣由我們后面會分析,現在我們先看一下 Redis 多線程網絡模型的總體設計:

  • Redis 服務器啟動,開啟主線程事件循環(Event Loop),注冊 acceptTcpHandler 連接應答處理器到用戶配置的監聽端口對應的文件描述符,等待新連接到來;

  • 客戶端和服務端建立網絡連接;

  • acceptTcpHandler 被調用,主線程使用 AE 的 API 將 readQueryFromClient 命令讀取處理器綁定到新連接對應的文件描述符上,并初始化一個 client 綁定這個客戶端連接;

  • 客戶端發送請求命令,觸發讀就緒事件,服務端主線程不會通過 socket 去讀取客戶端的請求命令,而是先將 client 放入一個 LIFO 隊列 clients_pending_read;

  • 在事件循環(Event Loop)中,主線程執行 beforeSleep -->handleClientsWithPendingReadsUsingThreads,利用 Round-Robin 輪詢負載均衡策略,把 clients_pending_read隊列中的連接均勻地分配給 I/O 線程各自的本地 FIFO 任務隊列 io_threads_list[id] 和主線程自己,I/O 線程通過 socket 讀取客戶端的請求命令,存入 client->querybuf 并解析第一個命令,但不執行命令,主線程忙輪詢,等待所有 I/O 線程完成讀取任務;

  • 主線程和所有 I/O 線程都完成了讀取任務,主線程結束忙輪詢,遍歷 clients_pending_read 隊列,執行所有客戶端連接的請求命令,先調用 processCommandAndResetClient 執行第一條已經解析好的命令,然后調用 processInputBuffer 解析并執行客戶端連接的所有命令,在其中使用 processInlineBuffer 或者 processMultibulkBuffer 根據 Redis 協議解析命令,最后調用 processCommand 執行命令;

  • 根據請求命令的類型(SET, GET, DEL, EXEC 等),分配相應的命令執行器去執行,最后調用 addReply 函數族的一系列函數將響應數據寫入到對應 client 的寫出緩沖區:client->buf 或者 client->reply ,client->buf 是首選的寫出緩沖區,固定大小 16KB,一般來說可以緩沖足夠多的響應數據,但是如果客戶端在時間窗口內需要響應的數據非常大,那么則會自動切換到 client->reply 鏈表上去,使用鏈表理論上能夠保存無限大的數據(受限于機器的物理內存),最后把 client 添加進一個 LIFO 隊列 clients_pending_write;

  • 在事件循環(Event Loop)中,主線程執行 beforeSleep --> handleClientsWithPendingWritesUsingThreads,利用 Round-Robin 輪詢負載均衡策略,把 clients_pending_write 隊列中的連接均勻地分配給 I/O 線程各自的本地 FIFO 任務隊列 io_threads_list[id] 和主線程自己,I/O 線程通過調用 writeToClient 把 client 的寫出緩沖區里的數據回寫到客戶端,主線程忙輪詢,等待所有 I/O 線程完成寫出任務;

  • 主線程和所有 I/O 線程都完成了寫出任務, 主線程結束忙輪詢,遍歷 clients_pending_write 隊列,如果 client 的寫出緩沖區還有數據遺留,則注冊 sendReplyToClient 到該連接的寫就緒事件,等待客戶端可寫時在事件循環中再繼續回寫殘余的響應數據。

  • 這里大部分邏輯和之前的單線程模型是一致的,變動的地方僅僅是把讀取客戶端請求命令和回寫響應數據的邏輯異步化了,交給 I/O 線程去完成,這里需要特別注意的一點是:I/O 線程僅僅是讀取和解析客戶端命令而不會真正去執行命令,客戶端命令的執行最終還是要回到主線程上完成

    源碼剖析

    ?

    以下所有代碼基于目前最新的 Redis v6.0.10 版本。

    多線程初始化

    void initThreadedIO(void) {server.io_threads_active = 0; /* We start with threads not active. */// 如果用戶只配置了一個 I/O 線程,則不會創建新線程(效率低),直接在主線程里處理 I/O。if (server.io_threads_num == 1) return;if (server.io_threads_num > IO_THREADS_MAX_NUM) {serverLog(LL_WARNING,"Fatal: too many I/O threads configured. ""The maximum number is %d.", IO_THREADS_MAX_NUM);exit(1);}// 根據用戶配置的 I/O 線程數,啟動線程。for (int i = 0; i < server.io_threads_num; i++) {// 初始化 I/O 線程的本地任務隊列。io_threads_list[i] = listCreate();if (i == 0) continue; // 線程 0 是主線程。// 初始化 I/O 線程并啟動。pthread_t tid;// 每個 I/O 線程會分配一個本地鎖,用來休眠和喚醒線程。pthread_mutex_init(&io_threads_mutex[i],NULL);// 每個 I/O 線程分配一個原子計數器,用來記錄當前遺留的任務數量。io_threads_pending[i] = 0;// 主線程在啟動 I/O 線程的時候會默認先鎖住它,直到有 I/O 任務才喚醒它。pthread_mutex_lock(&io_threads_mutex[i]);// 啟動線程,進入 I/O 線程的主邏輯函數 IOThreadMain。if (pthread_create(&tid,NULL,IOThreadMain,(void*)(long)i) != 0) {serverLog(LL_WARNING,"Fatal: Can't initialize IO thread.");exit(1);}io_threads[i] = tid;} }

    initThreadedIO 會在 Redis 服務器啟動時的初始化工作的末尾被調用,初始化 I/O 多線程并啟動。

    Redis 的多線程模式默認是關閉的,需要用戶在 redis.conf 配置文件中開啟:

    io-threads 4 io-threads-do-reads yes

    讀取請求

    當客戶端發送請求命令之后,會觸發 Redis 主線程的事件循環,命令處理器 readQueryFromClient 被回調,在以前的單線程模型下,這個方法會直接讀取解析客戶端命令并執行,但是多線程模式下,則會把 client 加入到 clients_pending_read 任務隊列中去,后面主線程再分配到 I/O 線程去讀取客戶端請求命令:

    void readQueryFromClient(connection *conn) {client *c = connGetPrivateData(conn);int nread, readlen;size_t qblen;// 檢查是否開啟了多線程,如果是則把 client 加入異步隊列之后返回。if (postponeClientRead(c)) return;// 省略代碼,下面的代碼邏輯和單線程版本幾乎是一樣的。... }int postponeClientRead(client *c) {// 當多線程 I/O 模式開啟、主線程沒有在處理阻塞任務時,將 client 加入異步隊列。if (server.io_threads_active &&server.io_threads_do_reads &&!ProcessingEventsWhileBlocked &&!(c->flags & (CLIENT_MASTER|CLIENT_SLAVE|CLIENT_PENDING_READ))){// 給 client 打上 CLIENT_PENDING_READ 標識,表示該 client 需要被多線程處理,// 后續在 I/O 線程中會在讀取和解析完客戶端命令之后判斷該標識并放棄執行命令,讓主線程去執行。c->flags |= CLIENT_PENDING_READ;listAddNodeHead(server.clients_pending_read,c);return 1;} else {return 0;} }

    接著主線程會在事件循環的 beforeSleep() 方法中,調用 handleClientsWithPendingReadsUsingThreads:

    int handleClientsWithPendingReadsUsingThreads(void) {if (!server.io_threads_active || !server.io_threads_do_reads) return 0;int processed = listLength(server.clients_pending_read);if (processed == 0) return 0;if (tio_debug) printf("%d TOTAL READ pending clients\n", processed);// 遍歷待讀取的 client 隊列 clients_pending_read,// 通過 RR 輪詢均勻地分配給 I/O 線程和主線程自己(編號 0)。listIter li;listNode *ln;listRewind(server.clients_pending_read,&li);int item_id = 0;while((ln = listNext(&li))) {client *c = listNodeValue(ln);int target_id = item_id % server.io_threads_num;listAddNodeTail(io_threads_list[target_id],c);item_id++;}// 設置當前 I/O 操作為讀取操作,給每個 I/O 線程的計數器設置分配的任務數量,// 讓 I/O 線程可以開始工作:只讀取和解析命令,不執行。io_threads_op = IO_THREADS_OP_READ;for (int j = 1; j < server.io_threads_num; j++) {int count = listLength(io_threads_list[j]);io_threads_pending[j] = count;}// 主線程自己也會去執行讀取客戶端請求命令的任務,以達到最大限度利用 CPU。listRewind(io_threads_list[0],&li);while((ln = listNext(&li))) {client *c = listNodeValue(ln);readQueryFromClient(c->conn);}listEmpty(io_threads_list[0]);// 忙輪詢,累加所有 I/O 線程的原子任務計數器,直到所有計數器的遺留任務數量都是 0,// 表示所有任務都已經執行完成,結束輪詢。while(1) {unsigned long pending = 0;for (int j = 1; j < server.io_threads_num; j++)pending += io_threads_pending[j];if (pending == 0) break;}if (tio_debug) printf("I/O READ All threads finshed\n");// 遍歷待讀取的 client 隊列,清除 CLIENT_PENDING_READ 和 CLIENT_PENDING_COMMAND 標記,// 然后解析并執行所有 client 的命令。while(listLength(server.clients_pending_read)) {ln = listFirst(server.clients_pending_read);client *c = listNodeValue(ln);c->flags &= ~CLIENT_PENDING_READ;listDelNode(server.clients_pending_read,ln);if (c->flags & CLIENT_PENDING_COMMAND) {c->flags &= ~CLIENT_PENDING_COMMAND;// client 的第一條命令已經被解析好了,直接嘗試執行。if (processCommandAndResetClient(c) == C_ERR) {/* If the client is no longer valid, we avoid* processing the client later. So we just go* to the next. */continue;}}processInputBuffer(c); // 繼續解析并執行 client 命令。// 命令執行完成之后,如果 client 中有響應數據需要回寫到客戶端,則將 client 加入到待寫出隊列 clients_pending_writeif (!(c->flags & CLIENT_PENDING_WRITE) && clientHasPendingReplies(c))clientInstallWriteHandler(c);}/* Update processed count on server */server.stat_io_reads_processed += processed;return processed; }

    這里的核心工作是:

    • 遍歷待讀取的 client 隊列 clients_pending_read,通過 RR 策略把所有任務分配給 I/O 線程和主線程去讀取和解析客戶端命令。

    • 忙輪詢等待所有 I/O 線程完成任務。

    • 最后再遍歷 clients_pending_read,執行所有 client 的命令。

    寫回響應

    完成命令的讀取、解析以及執行之后,客戶端命令的響應數據已經存入 client->buf 或者 client->reply 中了,接下來就需要把響應數據回寫到客戶端了,還是在 beforeSleep 中, 主線程調用 handleClientsWithPendingWritesUsingThreads:

    int handleClientsWithPendingWritesUsingThreads(void) {int processed = listLength(server.clients_pending_write);if (processed == 0) return 0; /* Return ASAP if there are no clients. */// 如果用戶設置的 I/O 線程數等于 1 或者當前 clients_pending_write 隊列中待寫出的 client// 數量不足 I/O 線程數的兩倍,則不用多線程的邏輯,讓所有 I/O 線程進入休眠,// 直接在主線程把所有 client 的相應數據回寫到客戶端。if (server.io_threads_num == 1 || stopThreadedIOIfNeeded()) {return handleClientsWithPendingWrites();}// 喚醒正在休眠的 I/O 線程(如果有的話)。if (!server.io_threads_active) startThreadedIO();if (tio_debug) printf("%d TOTAL WRITE pending clients\n", processed);// 遍歷待寫出的 client 隊列 clients_pending_write,// 通過 RR 輪詢均勻地分配給 I/O 線程和主線程自己(編號 0)。listIter li;listNode *ln;listRewind(server.clients_pending_write,&li);int item_id = 0;while((ln = listNext(&li))) {client *c = listNodeValue(ln);c->flags &= ~CLIENT_PENDING_WRITE;/* Remove clients from the list of pending writes since* they are going to be closed ASAP. */if (c->flags & CLIENT_CLOSE_ASAP) {listDelNode(server.clients_pending_write, ln);continue;}int target_id = item_id % server.io_threads_num;listAddNodeTail(io_threads_list[target_id],c);item_id++;}// 設置當前 I/O 操作為寫出操作,給每個 I/O 線程的計數器設置分配的任務數量,// 讓 I/O 線程可以開始工作,把寫出緩沖區(client->buf 或 c->reply)中的響應數據回寫到客戶端。io_threads_op = IO_THREADS_OP_WRITE;for (int j = 1; j < server.io_threads_num; j++) {int count = listLength(io_threads_list[j]);io_threads_pending[j] = count;}// 主線程自己也會去執行讀取客戶端請求命令的任務,以達到最大限度利用 CPU。listRewind(io_threads_list[0],&li);while((ln = listNext(&li))) {client *c = listNodeValue(ln);writeToClient(c,0);}listEmpty(io_threads_list[0]);// 忙輪詢,累加所有 I/O 線程的原子任務計數器,直到所有計數器的遺留任務數量都是 0。// 表示所有任務都已經執行完成,結束輪詢。while(1) {unsigned long pending = 0;for (int j = 1; j < server.io_threads_num; j++)pending += io_threads_pending[j];if (pending == 0) break;}if (tio_debug) printf("I/O WRITE All threads finshed\n");// 最后再遍歷一次 clients_pending_write 隊列,檢查是否還有 client 的中寫出緩沖區中有殘留數據,// 如果有,那就為 client 注冊一個命令回復器 sendReplyToClient,等待客戶端寫就緒再繼續把數據回寫。listRewind(server.clients_pending_write,&li);while((ln = listNext(&li))) {client *c = listNodeValue(ln);// 檢查 client 的寫出緩沖區是否還有遺留數據。if (clientHasPendingReplies(c) &&connSetWriteHandler(c->conn, sendReplyToClient) == AE_ERR){freeClientAsync(c);}}listEmpty(server.clients_pending_write);/* Update processed count on server */server.stat_io_writes_processed += processed;return processed; }

    這里的核心工作是:

    • 檢查當前任務負載,如果當前的任務數量不足以用多線程模式處理的話,則休眠 I/O 線程并且直接同步將響應數據回寫到客戶端。

    • 喚醒正在休眠的 I/O 線程(如果有的話)。

    • 遍歷待寫出的 client 隊列 clients_pending_write,通過 RR 策略把所有任務分配給 I/O 線程和主線程去將響應數據寫回到客戶端。

    • 忙輪詢等待所有 I/O 線程完成任務。

    • 最后再遍歷 clients_pending_write,為那些還殘留有響應數據的 client 注冊命令回復處理器 sendReplyToClient,等待客戶端可寫之后在事件循環中繼續回寫殘余的響應數據。

    I/O 線程主邏輯

    void *IOThreadMain(void *myid) {/* The ID is the thread number (from 0 to server.iothreads_num-1), and is* used by the thread to just manipulate a single sub-array of clients. */long id = (unsigned long)myid;char thdname[16];snprintf(thdname, sizeof(thdname), "io_thd_%ld", id);redis_set_thread_title(thdname);// 設置 I/O 線程的 CPU 親和性,盡可能將 I/O 線程(以及主線程,不在這里設置)綁定到用戶配置的// CPU 列表上。redisSetCpuAffinity(server.server_cpulist);makeThreadKillable();while(1) {// 忙輪詢,100w 次循環,等待主線程分配 I/O 任務。for (int j = 0; j < 1000000; j++) {if (io_threads_pending[id] != 0) break;}// 如果 100w 次忙輪詢之后如果還是沒有任務分配給它,則通過嘗試加鎖進入休眠,// 等待主線程分配任務之后調用 startThreadedIO 解鎖,喚醒 I/O 線程去執行。if (io_threads_pending[id] == 0) {pthread_mutex_lock(&io_threads_mutex[id]);pthread_mutex_unlock(&io_threads_mutex[id]);continue;}serverAssert(io_threads_pending[id] != 0);if (tio_debug) printf("[%ld] %d to handle\n", id, (int)listLength(io_threads_list[id]));// 注意:主線程分配任務給 I/O 線程之時,// 會把任務加入每個線程的本地任務隊列 io_threads_list[id],// 但是當 I/O 線程開始執行任務之后,主線程就不會再去訪問這些任務隊列,避免數據競爭。listIter li;listNode *ln;listRewind(io_threads_list[id],&li);while((ln = listNext(&li))) {client *c = listNodeValue(ln);// 如果當前是寫出操作,則把 client 的寫出緩沖區中的數據回寫到客戶端。if (io_threads_op == IO_THREADS_OP_WRITE) {writeToClient(c,0);// 如果當前是讀取操作,則socket 讀取客戶端的請求命令并解析第一條命令。} else if (io_threads_op == IO_THREADS_OP_READ) {readQueryFromClient(c->conn);} else {serverPanic("io_threads_op value is unknown");}}listEmpty(io_threads_list[id]);// 所有任務執行完之后把自己的計數器置 0,主線程通過累加所有 I/O 線程的計數器// 判斷是否所有 I/O 線程都已經完成工作。io_threads_pending[id] = 0;if (tio_debug) printf("[%ld] Done\n", id);} }

    I/O 線程啟動之后,會先進入忙輪詢,判斷原子計數器中的任務數量,如果是非 0 則表示主線程已經給它分配了任務,開始執行任務,否則就一直忙輪詢一百萬次等待,忙輪詢結束之后再查看計數器,如果還是 0,則嘗試加本地鎖,因為主線程在啟動 I/O 線程之時就已經提前鎖住了所有 I/O 線程的本地鎖,因此 I/O 線程會進行休眠,等待主線程喚醒。

    主線程會在每次事件循環中嘗試調用 startThreadedIO 喚醒 I/O 線程去執行任務,如果接收到客戶端請求命令,則 I/O 線程會被喚醒開始工作,根據主線程設置的 io_threads_op 標識去執行命令讀取和解析或者回寫響應數據的任務,I/O 線程在收到主線程通知之后,會遍歷自己的本地任務隊列 io_threads_list[id],取出一個個 client 執行任務:

    • 如果當前是寫出操作,則調用 writeToClient,通過 socket 把 client->buf 或者 client->reply 里的響應數據回寫到客戶端。

    • 如果當前是讀取操作,則調用 readQueryFromClient,通過 socket 讀取客戶端命令,存入 client->querybuf,然后調用 processInputBuffer 去解析命令,這里最終只會解析到第一條命令,然后就結束,不會去執行命令。

    • 在全部任務執行完之后把自己的原子計數器置 0,以告知主線程自己已經完成了工作。

    void processInputBuffer(client *c) { // 省略代碼 ...while(c->qb_pos < sdslen(c->querybuf)) {/* Return if clients are paused. */if (!(c->flags & CLIENT_SLAVE) && clientsArePaused()) break;/* Immediately abort if the client is in the middle of something. */if (c->flags & CLIENT_BLOCKED) break;/* Don't process more buffers from clients that have already pending* commands to execute in c->argv. */if (c->flags & CLIENT_PENDING_COMMAND) break;/* Multibulk processing could see a <= 0 length. */if (c->argc == 0) {resetClient(c);} else {// 判斷 client 是否具有 CLIENT_PENDING_READ 標識,如果是處于多線程 I/O 的模式下,// 那么此前已經在 readQueryFromClient -> postponeClientRead 中為 client 打上該標識,// 則立刻跳出循環結束,此時第一條命令已經解析完成,但是不執行命令。if (c->flags & CLIENT_PENDING_READ) {c->flags |= CLIENT_PENDING_COMMAND;break;}// 執行客戶端命令if (processCommandAndResetClient(c) == C_ERR) {/* If the client is no longer valid, we avoid exiting this* loop and trimming the client buffer later. So we return* ASAP in that case. */return;}}}... }

    這里需要額外關注 I/O 線程初次啟動時會設置當前線程的 CPU 親和性,也就是綁定當前線程到用戶配置的 CPU 上,在啟動 Redis 服務器主線程的時候同樣會設置 CPU 親和性,Redis 的核心網絡模型引入多線程之后,加上之前的多線程異步任務、多進程(BGSAVE、AOF、BIO、Sentinel 腳本任務等),Redis 現如今的系統并發度已經很大了,而 Redis 本身又是一個對吞吐量和延遲極度敏感的系統,所以用戶需要 Redis 對 CPU 資源有更細粒度的控制,這里主要考慮的是兩方面:CPU 高速緩存和 NUMA 架構。

    首先是 CPU 高速緩存(這里討論的是 L1 Cache 和 L2 Cache 都集成在 CPU 中的硬件架構),這里想象一種場景:Redis 主進程正在 CPU-1 上運行,給客戶端提供數據服務,此時 Redis 啟動了子進程進行數據持久化(BGSAVE 或者 AOF),系統調度之后子進程搶占了主進程的 CPU-1,主進程被調度到 CPU-2 上去運行,導致之前 CPU-1 的高速緩存里的相關指令和數據被汰換掉,CPU-2 需要重新加載指令和數據到自己的本地高速緩存里,浪費 CPU 資源,降低性能。

    因此,Redis 通過設置 CPU 親和性,可以將主進程/線程和子進程/線程綁定到不同的核隔離開來,使之互不干擾,能有效地提升系統性能。

    其次是基于 NUMA 架構的考慮,在 NUMA 體系下,內存控制器芯片被集成到處理器內部,形成 CPU 本地內存,訪問本地內存只需通過內存通道而無需經過系統總線,訪問時延大大降低,而多個處理器之間通過 QPI 數據鏈路互聯,跨 NUMA 節點的內存訪問開銷遠大于本地內存的訪問:

    因此,Redis 通過設置 CPU 親和性,讓主進程/線程盡可能在固定的 NUMA 節點上的 CPU 上運行,更多地使用本地內存而不需要跨節點訪問數據,同樣也能大大地提升性能。

    關于 NUMA 相關知識請讀者自行查閱,篇幅所限這里就不再展開,以后有時間我再單獨寫一篇文章介紹。

    最后還有一點,閱讀過源碼的讀者可能會有疑問,Redis 的多線程模式下,似乎并沒有對數據進行鎖保護,事實上 Redis 的多線程模型是全程無鎖(Lock-free)的,這是通過原子操作+交錯訪問來實現的,主線程和 I/O 線程之間共享的變量有三個:io_threads_pending 計數器、io_threads_op I/O 標識符和 io_threads_list 線程本地任務隊列。

    io_threads_pending 是原子變量,不需要加鎖保護,io_threads_op 和 io_threads_list ?這兩個變量則是通過控制主線程和 I/O 線程交錯訪問來規避共享數據競爭問題:I/O 線程啟動之后會通過忙輪詢和鎖休眠等待主線程的信號,在這之前它不會去訪問自己的本地任務隊列 io_threads_list[id],而主線程會在分配完所有任務到各個 I/O 線程的本地隊列之后才去喚醒 I/O 線程開始工作,并且主線程之后在 I/O 線程運行期間只會訪問自己的本地任務隊列 io_threads_list[0] 而不會再去訪問 I/O 線程的本地隊列,這也就保證了主線程永遠會在 I/O 線程之前訪問 io_threads_list 并且之后不再訪問,保證了交錯訪問。io_threads_op 同理,主線程會在喚醒 I/O 線程之前先設置好 io_threads_op 的值,并且在 I/O 線程運行期間不會再去訪問這個變量。

    性能提升

    Redis 將核心網絡模型改造成多線程模式追求的當然是最終性能上的提升,所以最終還是要以 benchmark 數據見真章:

    測試數據表明,Redis 在使用多線程模式之后性能大幅提升,達到了一倍。更詳細的性能壓測數據可以參閱這篇文章:Benchmarking the experimental Redis Multi-Threaded I/O。

    以下是美圖技術團隊實測的新舊 Redis 版本性能對比圖,僅供參考:

    模型缺陷

    首先第一個就是我前面提到過的,Redis 的多線程網絡模型實際上并不是一個標準的 Multi-Reactors/Master-Workers 模型,和其他主流的開源網絡服務器的模式有所區別,最大的不同就是在標準的 Multi-Reactors/Master-Workers 模式下,Sub Reactors/Workers 會完成 網絡讀 -> 數據解析 -> 命令執行 -> 網絡寫 整套流程,Main Reactor/Master 只負責分派任務,而在 Redis 的多線程方案中,I/O 線程任務僅僅是通過 socket 讀取客戶端請求命令并解析,卻沒有真正去執行命令,所有客戶端命令最后還需要回到主線程去執行,因此對多核的利用率并不算高,而且每次主線程都必須在分配完任務之后忙輪詢等待所有 I/O 線程完成任務之后才能繼續執行其他邏輯。

    Redis 之所以如此設計它的多線程網絡模型,我認為主要的原因是為了保持兼容性,因為以前 Redis 是單線程的,所有的客戶端命令都是在單線程的事件循環里執行的,也因此 Redis 里所有的數據結構都是非線程安全的,現在引入多線程,如果按照標準的 Multi-Reactors/Master-Workers 模式來實現,則所有內置的數據結構都必須重構成線程安全的,這個工作量無疑是巨大且麻煩的。

    所以,在我看來,Redis 目前的多線程方案更像是一個折中的選擇:既保持了原系統的兼容性,又能利用多核提升 I/O 性能。

    其次,目前 Redis 的多線程模型中,主線程和 I/O 線程的通信過于簡單粗暴:忙輪詢和鎖,因為通過自旋忙輪詢進行等待,導致 Redis 在啟動的時候以及運行期間偶爾會有短暫的 CPU 空轉引起的高占用率,而且這個通信機制的最終實現看起來非常不直觀和不簡潔,希望后面 Redis 能對目前的方案加以改進。

    總結

    Redis 作為緩存系統的事實標準,它的底層原理值得開發者去深入學習,Redis 自 2009 年發布第一版之后,其單線程網絡模型的選擇在社區中從未停止過討論,多年來一直有呼聲希望 Redis 能引入多線程從而利用多核優勢,但是作者 antirez 是一個追求大道至簡的開發者,對 Redis 加入任何新功能都異常謹慎,所以在 Redis 初版發布的十年后才最終將 Redis 的核心網絡模型改造成多線程模式,這期間甚至誕生了一些 Redis 多線程的替代項目。雖然 antirez 一直在推遲多線程的方案,但卻從未停止思考多線程的可行性,Redis 多線程網絡模型的改造不是一朝一夕的事情,這其中牽扯到項目的方方面面,所以我們可以看到 Redis 的最終方案也并不完美,沒有采用主流的多線程模式設計。

    讓我們來回顧一下 Redis 多線程網絡模型的設計方案:

    • 使用 I/O 線程實現網絡 I/O 多線程化,I/O 線程只負責網絡 I/O 和命令解析,不執行客戶端命令。

    • 利用原子操作+交錯訪問實現無鎖的多線程模型。

    • 通過設置 CPU 親和性,隔離主進程和其他子進程,讓多線程網絡模型能發揮最大的性能。

    通讀本文之后,相信讀者們應該能夠了解到一個優秀的網絡系統的實現所涉及到的計算機領域的各種技術:設計模式、網絡 I/O、并發編程、操作系統底層,甚至是計算機硬件。另外還需要對項目迭代和重構的謹慎,對技術方案的深入思考,絕不僅僅是寫好代碼這一個難點。

    參考&延伸閱讀

    • Redis v5.0.10

    • Redis v6.0.10

    • Lazy Redis is better Redis

    • An update about Redis developments in 2019

    • How fast is Redis?

    • Go netpoller 原生網絡模型之源碼全面揭秘

    • Linux I/O 原理和 Zero-copy 技術全面揭秘

    • Benchmarking the experimental Redis Multi-Threaded I/O

    • NUMA DEEP DIVE PART 1: FROM UMA TO NUMA

    References

    [1]?Lazy Redis is better Redis:?http://antirez.com/news/93
    [2]?Linux I/O 原理和 Zero-copy 技術全面揭秘:?https://strikefreedom.top/linux-io-and-zero-copy
    [3]?Go netpoller 原生網絡模型之源碼全面揭秘:?https://strikefreedom.top/go-netpoll-io-multiplexing-reactor
    [4]?Redis v6.0.10:?https://github.com/redis/redis/tree/6.0.10
    [5]?Benchmarking the experimental Redis Multi-Threaded I/O:?https://itnext.io/benchmarking-the-experimental-redis-multi-threaded-i-o-1bb28b69a314
    [6]?Redis v5.0.10:?https://github.com/redis/redis/tree/5.0.10
    [7]?Redis v6.0.10:?https://github.com/redis/redis/tree/6.0.10
    [8]?Lazy Redis is better Redis:?http://antirez.com/news/93
    [9]?An update about Redis developments in 2019:?http://antirez.com/news/126
    [10]?How fast is Redis?:?https://redis.io/topics/benchmarks
    [11]?Go netpoller 原生網絡模型之源碼全面揭秘:?https://strikefreedom.top/go-netpoll-io-multiplexing-reactor
    [12]?Linux I/O 原理和 Zero-copy 技術全面揭秘:?https://strikefreedom.top/linux-io-and-zero-copy
    [13]?Benchmarking the experimental Redis Multi-Threaded I/O:?https://itnext.io/benchmarking-the-experimental-redis-multi-threaded-i-o-1bb28b69a314
    [14]?NUMA DEEP DIVE PART 1: FROM UMA TO NUMA:?https://frankdenneman.nl/2016/07/07/numa-deep-dive-part-1-uma-numa/

    網絡硬核文章推薦

    • 計算機網絡硬核指南|網絡設計核心思想

    • 云網絡丟包故障定位全景指南

    • TCP協議疑難雜癥全景解析|硬核

    • 一個奇葩的網絡問題,把技術磚家"搞蒙了"

    • 談談QUIC協議原理|網絡硬核系列

    可以關注【極客重生】并星標,防止錯過后面精彩文章。

    專注分享硬核知識和技術人一起涅槃重生

    覺得內容還不錯的話,給我點個?“在看”?唄!

    總結

    以上是生活随笔為你收集整理的Redis 多线程网络模型全面揭秘|网络硬核系列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    欧美激情综合亚洲一二区 | 狠狠色噜噜狠狠狠7777奇米 | 人人超人人超碰超国产 | 亚洲国产精华液网站w | 牲欲强的熟妇农村老妇女 | 日本丰满护士爆乳xxxx | 免费看男女做好爽好硬视频 | 亚洲中文字幕无码中字 | 丰满人妻精品国产99aⅴ | 波多野结衣av在线观看 | 午夜无码人妻av大片色欲 | 成人无码影片精品久久久 | 精品厕所偷拍各类美女tp嘘嘘 | 无码人妻出轨黑人中文字幕 | 国产人成高清在线视频99最全资源 | 欧美三级a做爰在线观看 | 男女超爽视频免费播放 | 人人妻人人澡人人爽人人精品浪潮 | 久久综合给久久狠狠97色 | 亚洲成色www久久网站 | 麻豆蜜桃av蜜臀av色欲av | 2019午夜福利不卡片在线 | 水蜜桃亚洲一二三四在线 | 久久伊人色av天堂九九小黄鸭 | 人妻与老人中文字幕 | 国产高清不卡无码视频 | 久久久久成人精品免费播放动漫 | 窝窝午夜理论片影院 | 图片区 小说区 区 亚洲五月 | 久久亚洲a片com人成 | 97精品人妻一区二区三区香蕉 | 久久精品国产亚洲精品 | 成人无码影片精品久久久 | 人妻尝试又大又粗久久 | 两性色午夜免费视频 | 东京热男人av天堂 | 1000部啪啪未满十八勿入下载 | 午夜精品久久久久久久 | 久久久久99精品成人片 | 美女极度色诱视频国产 | 成人免费无码大片a毛片 | 亚洲精品国产品国语在线观看 | 亚洲国产高清在线观看视频 | 激情亚洲一区国产精品 | 亚洲精品成人福利网站 | 中文字幕中文有码在线 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 无码午夜成人1000部免费视频 | 久久精品人人做人人综合试看 | 亚洲乱亚洲乱妇50p | 成人性做爰aaa片免费看不忠 | 天天做天天爱天天爽综合网 | 丰满少妇弄高潮了www | 亚洲成a人片在线观看日本 | 久久久久久久人妻无码中文字幕爆 | 麻豆md0077饥渴少妇 | 精品 日韩 国产 欧美 视频 | 激情综合激情五月俺也去 | 熟妇人妻激情偷爽文 | 天天综合网天天综合色 | 狠狠色噜噜狠狠狠7777奇米 | 熟女少妇在线视频播放 | 国产婷婷色一区二区三区在线 | 国产成人精品优优av | 波多野结衣高清一区二区三区 | 人人妻人人澡人人爽欧美一区 | 亚洲午夜无码久久 | av香港经典三级级 在线 | 97精品国产97久久久久久免费 | 人妻少妇被猛烈进入中文字幕 | 国产精品无码一区二区桃花视频 | 国产97在线 | 亚洲 | 欧美真人作爱免费视频 | 国产疯狂伦交大片 | 黑人巨大精品欧美黑寡妇 | 亚洲国产欧美日韩精品一区二区三区 | 天天拍夜夜添久久精品 | 国产亚洲精品久久久久久久久动漫 | 久久久精品成人免费观看 | 国产偷自视频区视频 | 正在播放东北夫妻内射 | a国产一区二区免费入口 | 久久99热只有频精品8 | 亚洲日本va午夜在线电影 | 人人爽人人澡人人高潮 | 欧美日韩在线亚洲综合国产人 | 色婷婷香蕉在线一区二区 | 国产性生大片免费观看性 | 亚洲精品一区二区三区在线观看 | 久久久亚洲欧洲日产国码αv | 俺去俺来也www色官网 | 日韩欧美群交p片內射中文 | 色偷偷人人澡人人爽人人模 | 伊人久久大香线焦av综合影院 | 丰满肥臀大屁股熟妇激情视频 | 天天av天天av天天透 | 亚洲乱亚洲乱妇50p | 欧美日韩一区二区免费视频 | 99久久久无码国产aaa精品 | 亚洲成在人网站无码天堂 | 亚洲aⅴ无码成人网站国产app | 奇米影视888欧美在线观看 | 久久久久se色偷偷亚洲精品av | 色欲av亚洲一区无码少妇 | 日本一卡2卡3卡四卡精品网站 | 97se亚洲精品一区 | 精品无码成人片一区二区98 | 欧美人与动性行为视频 | 无码毛片视频一区二区本码 | 国产香蕉尹人视频在线 | 骚片av蜜桃精品一区 | 中文字幕中文有码在线 | 久久综合给合久久狠狠狠97色 | 国产午夜无码精品免费看 | 精品久久久久久亚洲精品 | 久久婷婷五月综合色国产香蕉 | 久久精品人人做人人综合试看 | 国产在线一区二区三区四区五区 | 国产人妻精品午夜福利免费 | 中文字幕亚洲情99在线 | 国产精品人人爽人人做我的可爱 | 久久亚洲精品成人无码 | 国产精品美女久久久 | 欧美放荡的少妇 | 3d动漫精品啪啪一区二区中 | 内射白嫩少妇超碰 | 精品国产国产综合精品 | 日韩人妻系列无码专区 | 精品久久综合1区2区3区激情 | 99er热精品视频 | 成 人 免费观看网站 | 亚洲成av人综合在线观看 | 三上悠亚人妻中文字幕在线 | 欧洲熟妇色 欧美 | 亚洲精品无码人妻无码 | 99er热精品视频 | 国产成人精品久久亚洲高清不卡 | 国产欧美亚洲精品a | 国产口爆吞精在线视频 | 黑人大群体交免费视频 | 清纯唯美经典一区二区 | 4hu四虎永久在线观看 | 亚洲 a v无 码免 费 成 人 a v | 日韩精品成人一区二区三区 | 日本熟妇大屁股人妻 | av无码电影一区二区三区 | 日本www一道久久久免费榴莲 | 日韩人妻少妇一区二区三区 | 欧美人妻一区二区三区 | 真人与拘做受免费视频一 | av在线亚洲欧洲日产一区二区 | 中文精品无码中文字幕无码专区 | 婷婷五月综合激情中文字幕 | 色爱情人网站 | 国产精品99久久精品爆乳 | 免费播放一区二区三区 | 欧美高清在线精品一区 | 俄罗斯老熟妇色xxxx | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲国产日韩a在线播放 | 午夜福利一区二区三区在线观看 | 国产办公室秘书无码精品99 | 波多野结衣一区二区三区av免费 | 精品国产青草久久久久福利 | 伊人久久婷婷五月综合97色 | 少妇久久久久久人妻无码 | 久久精品中文字幕一区 | 欧美老妇交乱视频在线观看 | 久久久成人毛片无码 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 久久久久久久久888 | 在线播放无码字幕亚洲 | 精品人人妻人人澡人人爽人人 | 久久无码专区国产精品s | 国产69精品久久久久app下载 | 久久99精品久久久久久动态图 | 无码帝国www无码专区色综合 | 日日摸天天摸爽爽狠狠97 | 精品国产一区二区三区av 性色 | 性生交大片免费看l | 色综合久久88色综合天天 | 欧美成人高清在线播放 | 波多野结衣高清一区二区三区 | 久久久久免费看成人影片 | 成 人 网 站国产免费观看 | 国产精品亚洲综合色区韩国 | 成人亚洲精品久久久久软件 | 人人妻人人藻人人爽欧美一区 | a在线观看免费网站大全 | 亚洲精品一区国产 | 亚洲中文字幕无码中字 | 亚洲精品一区国产 | 色婷婷综合激情综在线播放 | 日韩欧美成人免费观看 | 亚洲日本一区二区三区在线 | 女人高潮内射99精品 | 久久99热只有频精品8 | 男女下面进入的视频免费午夜 | 久久久久免费看成人影片 | 亚洲七七久久桃花影院 | 国产午夜福利亚洲第一 | 久久综合久久自在自线精品自 | 毛片内射-百度 | 97无码免费人妻超级碰碰夜夜 | 国产绳艺sm调教室论坛 | 婷婷五月综合激情中文字幕 | 少妇性荡欲午夜性开放视频剧场 | 色欲综合久久中文字幕网 | 激情亚洲一区国产精品 | 骚片av蜜桃精品一区 | 久久综合激激的五月天 | 日本精品人妻无码免费大全 | 国产精品久久久久久久影院 | 亚洲人成影院在线无码按摩店 | 激情内射亚州一区二区三区爱妻 | 成人免费视频一区二区 | 香港三级日本三级妇三级 | 在线 国产 欧美 亚洲 天堂 | 国产午夜手机精彩视频 | 精品国产麻豆免费人成网站 | 无套内谢的新婚少妇国语播放 | 熟妇人妻无码xxx视频 | 在线天堂新版最新版在线8 | 大肉大捧一进一出视频出来呀 | 色婷婷香蕉在线一区二区 | 中文字幕无码av波多野吉衣 | 国产美女精品一区二区三区 | 免费人成网站视频在线观看 | 丰满护士巨好爽好大乳 | 国产69精品久久久久app下载 | 欧美丰满熟妇xxxx | 丁香花在线影院观看在线播放 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲成av人片天堂网无码】 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产在线精品一区二区高清不卡 | 亚洲精品一区二区三区四区五区 | 国色天香社区在线视频 | 强伦人妻一区二区三区视频18 | 在线天堂新版最新版在线8 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲熟妇色xxxxx欧美老妇y | 999久久久国产精品消防器材 | 人人妻人人澡人人爽人人精品 | 一本色道婷婷久久欧美 | 蜜桃视频韩日免费播放 | 国产在线精品一区二区高清不卡 | 全球成人中文在线 | 免费无码肉片在线观看 | 无码国产激情在线观看 | 国内综合精品午夜久久资源 | 久久成人a毛片免费观看网站 | 兔费看少妇性l交大片免费 | 久久无码人妻影院 | 久久综合给久久狠狠97色 | 亚洲欧美中文字幕5发布 | 纯爱无遮挡h肉动漫在线播放 | 亚洲熟妇色xxxxx欧美老妇 | 任你躁国产自任一区二区三区 | 亚洲国产精品久久久天堂 | 国产猛烈高潮尖叫视频免费 | 亚洲精品一区二区三区在线 | 亚洲一区二区三区国产精华液 | 97夜夜澡人人爽人人喊中国片 | 亚洲熟妇色xxxxx亚洲 | 无码人妻黑人中文字幕 | 我要看www免费看插插视频 | 老司机亚洲精品影院无码 | 嫩b人妻精品一区二区三区 | 无码毛片视频一区二区本码 | 亚洲爆乳精品无码一区二区三区 | 亚洲日本va中文字幕 | aⅴ在线视频男人的天堂 | 日韩av无码一区二区三区不卡 | 精品 日韩 国产 欧美 视频 | 午夜精品久久久内射近拍高清 | 男人的天堂2018无码 | 娇妻被黑人粗大高潮白浆 | 欧洲熟妇精品视频 | 曰韩少妇内射免费播放 | 漂亮人妻洗澡被公强 日日躁 | 国产激情精品一区二区三区 | 亚洲乱码中文字幕在线 | 亚洲精品中文字幕久久久久 | 7777奇米四色成人眼影 | 老太婆性杂交欧美肥老太 | www成人国产高清内射 | 国产极品视觉盛宴 | 76少妇精品导航 | 国产熟妇另类久久久久 | 疯狂三人交性欧美 | 国产高清av在线播放 | 大肉大捧一进一出好爽视频 | 欧美三级a做爰在线观看 | 国产精品久久久久久久9999 | 欧美亚洲日韩国产人成在线播放 | 亚洲中文字幕成人无码 | 青春草在线视频免费观看 | 欧美人与动性行为视频 | 人妻插b视频一区二区三区 | 又色又爽又黄的美女裸体网站 | 日本免费一区二区三区最新 | 亚洲中文字幕av在天堂 | 大胆欧美熟妇xx | 荫蒂被男人添的好舒服爽免费视频 | 粉嫩少妇内射浓精videos | 欧美性生交xxxxx久久久 | 波多野结衣乳巨码无在线观看 | 漂亮人妻洗澡被公强 日日躁 | 精品乱码久久久久久久 | 欧美黑人巨大xxxxx | 强开小婷嫩苞又嫩又紧视频 | 暴力强奷在线播放无码 | 日韩少妇内射免费播放 | 熟女少妇在线视频播放 | 婷婷丁香五月天综合东京热 | 动漫av一区二区在线观看 | 亚洲精品www久久久 | 久久精品国产大片免费观看 | 国产麻豆精品一区二区三区v视界 | 无码一区二区三区在线观看 | 欧美 日韩 人妻 高清 中文 | 中文字幕亚洲情99在线 | 在线视频网站www色 | 久久综合给合久久狠狠狠97色 | 国产亚洲视频中文字幕97精品 | 国产国产精品人在线视 | 成熟女人特级毛片www免费 | 久久亚洲中文字幕精品一区 | 亚洲成a人一区二区三区 | 无遮挡国产高潮视频免费观看 | 丰满少妇女裸体bbw | 日韩少妇白浆无码系列 | 中文字幕 人妻熟女 | 国产农村妇女高潮大叫 | 国产无遮挡吃胸膜奶免费看 | 扒开双腿疯狂进出爽爽爽视频 | 老司机亚洲精品影院 | 麻豆国产人妻欲求不满 | 欧美日韩亚洲国产精品 | 日韩人妻少妇一区二区三区 | 国产精品视频免费播放 | 国产精品99久久精品爆乳 | 亚洲成熟女人毛毛耸耸多 | 久久99精品国产麻豆蜜芽 | 国产疯狂伦交大片 | 亚洲娇小与黑人巨大交 | 国产一区二区三区四区五区加勒比 | 国产av久久久久精东av | 亚洲阿v天堂在线 | 久久精品中文字幕一区 | 中文字幕无码免费久久99 | 久久人妻内射无码一区三区 | 又色又爽又黄的美女裸体网站 | 亚洲理论电影在线观看 | 国精产品一区二区三区 | 好屌草这里只有精品 | 性色欲情网站iwww九文堂 | 久久精品人人做人人综合试看 | 又湿又紧又大又爽a视频国产 | 国产午夜亚洲精品不卡 | 西西人体www44rt大胆高清 | 曰本女人与公拘交酡免费视频 | 丁香啪啪综合成人亚洲 | 亚洲一区二区三区四区 | 国产福利视频一区二区 | 国产一区二区三区日韩精品 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 色综合久久久久综合一本到桃花网 | 久久精品丝袜高跟鞋 | 精品国产国产综合精品 | 人妻熟女一区 | 亚洲日韩av一区二区三区四区 | 天海翼激烈高潮到腰振不止 | 在线观看国产午夜福利片 | 99精品视频在线观看免费 | 99久久精品午夜一区二区 | 麻豆成人精品国产免费 | 夜夜高潮次次欢爽av女 | www国产亚洲精品久久久日本 | av无码电影一区二区三区 | 中文字幕无码av激情不卡 | 久久人人爽人人爽人人片av高清 | 又大又硬又爽免费视频 | 国内揄拍国内精品人妻 | 亚洲成色www久久网站 | 蜜桃av抽搐高潮一区二区 | 日本精品人妻无码免费大全 | 人妻体内射精一区二区三四 | 丰腴饱满的极品熟妇 | 亚洲乱码日产精品bd | 性色欲情网站iwww九文堂 | 曰韩无码二三区中文字幕 | 无码人妻久久一区二区三区不卡 | 亚洲色大成网站www | 成人亚洲精品久久久久 | 在线 国产 欧美 亚洲 天堂 | 51国偷自产一区二区三区 | 中文字幕无码av激情不卡 | 波多野结衣一区二区三区av免费 | 扒开双腿疯狂进出爽爽爽视频 | 中文无码伦av中文字幕 | 国产精品久久久久7777 | 中文无码伦av中文字幕 | 中文精品无码中文字幕无码专区 | 国产偷抇久久精品a片69 | 精品无码国产自产拍在线观看蜜 | 又湿又紧又大又爽a视频国产 | 国产精品亚洲一区二区三区喷水 | 国产美女精品一区二区三区 | 日韩少妇白浆无码系列 | 一本久久a久久精品vr综合 | 亚洲啪av永久无码精品放毛片 | 色综合久久88色综合天天 | 国产莉萝无码av在线播放 | 欧美 日韩 人妻 高清 中文 | 无码av最新清无码专区吞精 | 国产av剧情md精品麻豆 | 亚洲 激情 小说 另类 欧美 | 天天躁夜夜躁狠狠是什么心态 | 少妇人妻大乳在线视频 | 亚洲欧美色中文字幕在线 | 亚洲男女内射在线播放 | 国产午夜视频在线观看 | 色诱久久久久综合网ywww | 日韩 欧美 动漫 国产 制服 | 国产成人久久精品流白浆 | 荫蒂被男人添的好舒服爽免费视频 | 又色又爽又黄的美女裸体网站 | 亚洲最大成人网站 | 亚洲七七久久桃花影院 | 亚洲一区二区三区四区 | 国产xxx69麻豆国语对白 | 亚洲伊人久久精品影院 | 国内少妇偷人精品视频 | 久精品国产欧美亚洲色aⅴ大片 | 大屁股大乳丰满人妻 | 国产成人无码av在线影院 | 国产精品多人p群无码 | 国产人妻大战黑人第1集 | 亚洲无人区一区二区三区 | 伊在人天堂亚洲香蕉精品区 | 久久亚洲国产成人精品性色 | 久久精品国产精品国产精品污 | 日本乱偷人妻中文字幕 | 欧美老人巨大xxxx做受 | 亚洲 日韩 欧美 成人 在线观看 | 婷婷五月综合缴情在线视频 | 国产9 9在线 | 中文 | 欧美性猛交xxxx富婆 | 大地资源网第二页免费观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 无遮挡国产高潮视频免费观看 | 国产午夜亚洲精品不卡 | 久久精品中文闷骚内射 | 亚洲七七久久桃花影院 | 亚洲综合色区中文字幕 | 国产无av码在线观看 | √天堂资源地址中文在线 | 欧美真人作爱免费视频 | 一本久久伊人热热精品中文字幕 | 撕开奶罩揉吮奶头视频 | 国产精品亚洲一区二区三区喷水 | 牲欲强的熟妇农村老妇女视频 | 国产女主播喷水视频在线观看 | 美女极度色诱视频国产 | 人人爽人人爽人人片av亚洲 | 亚洲精品鲁一鲁一区二区三区 | 久久久www成人免费毛片 | 日韩少妇白浆无码系列 | 国产人妻人伦精品1国产丝袜 | 99久久精品国产一区二区蜜芽 | 成人亚洲精品久久久久软件 | 88国产精品欧美一区二区三区 | 少妇人妻大乳在线视频 | 成人免费视频一区二区 | 久久久婷婷五月亚洲97号色 | 丰满少妇人妻久久久久久 | 日韩人妻少妇一区二区三区 | 无码国产色欲xxxxx视频 | 一本久道高清无码视频 | 久久久无码中文字幕久... | 亚洲精品久久久久久一区二区 | 亚洲综合精品香蕉久久网 | 成 人影片 免费观看 | 亚洲伊人久久精品影院 | 国产高清不卡无码视频 | 国产xxx69麻豆国语对白 | 红桃av一区二区三区在线无码av | 无码精品国产va在线观看dvd | 久久99精品国产麻豆蜜芽 | 99麻豆久久久国产精品免费 | 97无码免费人妻超级碰碰夜夜 | 又粗又大又硬毛片免费看 | 精品厕所偷拍各类美女tp嘘嘘 | 中文字幕亚洲情99在线 | 久久天天躁狠狠躁夜夜免费观看 | 国产精品久久久午夜夜伦鲁鲁 | 精品乱码久久久久久久 | 午夜精品久久久内射近拍高清 | 国产激情一区二区三区 | 日韩成人一区二区三区在线观看 | 综合激情五月综合激情五月激情1 | 国产成人一区二区三区别 | 国产精品18久久久久久麻辣 | www国产精品内射老师 | 欧美日韩一区二区综合 | 综合网日日天干夜夜久久 | 樱花草在线播放免费中文 | 激情五月综合色婷婷一区二区 | 色偷偷人人澡人人爽人人模 | 97精品国产97久久久久久免费 | 人妻尝试又大又粗久久 | 亚洲一区二区三区四区 | 欧美黑人乱大交 | 无码帝国www无码专区色综合 | 国产无套粉嫩白浆在线 | 东京热一精品无码av | 亚洲性无码av中文字幕 | 97资源共享在线视频 | 国产精品无套呻吟在线 | 奇米影视7777久久精品 | 东京热无码av男人的天堂 | 97精品国产97久久久久久免费 | 国产亚洲日韩欧美另类第八页 | 欧洲vodafone精品性 | 久久精品无码一区二区三区 | 亚洲天堂2017无码 | 久久精品国产精品国产精品污 | 成 人 网 站国产免费观看 | 中文字幕乱码亚洲无线三区 | 久久人人爽人人人人片 | 曰本女人与公拘交酡免费视频 | 成人免费无码大片a毛片 | 亚洲日本在线电影 | 亚洲色www成人永久网址 | 国语自产偷拍精品视频偷 | 中国大陆精品视频xxxx | 又大又硬又黄的免费视频 | 国产激情无码一区二区 | 国产 精品 自在自线 | 香蕉久久久久久av成人 | 国产亚洲视频中文字幕97精品 | 国产精品第一国产精品 | 九月婷婷人人澡人人添人人爽 | 青草视频在线播放 | 欧美一区二区三区视频在线观看 | 色 综合 欧美 亚洲 国产 | 国产亚洲tv在线观看 | 国产另类ts人妖一区二区 | 日本精品人妻无码免费大全 | 久久99国产综合精品 | 无码人妻黑人中文字幕 | 国产午夜无码视频在线观看 | 好爽又高潮了毛片免费下载 | 成年美女黄网站色大免费全看 | 欧美精品无码一区二区三区 | 色欲久久久天天天综合网精品 | 中文字幕无码视频专区 | av人摸人人人澡人人超碰下载 | 波多野结衣乳巨码无在线观看 | 精品人妻人人做人人爽 | 亚洲成熟女人毛毛耸耸多 | 国产国产精品人在线视 | 帮老师解开蕾丝奶罩吸乳网站 | 午夜福利一区二区三区在线观看 | 日韩精品一区二区av在线 | 国产真实夫妇视频 | 久9re热视频这里只有精品 | 成人无码精品1区2区3区免费看 | 小sao货水好多真紧h无码视频 | 亚洲午夜久久久影院 | 人人澡人人妻人人爽人人蜜桃 | 99国产精品白浆在线观看免费 | 久久久久免费精品国产 | 国产片av国语在线观看 | 亚洲中文字幕久久无码 | 久久综合九色综合欧美狠狠 | 欧洲精品码一区二区三区免费看 | 丰满少妇人妻久久久久久 | 亚洲熟悉妇女xxx妇女av | 蜜臀aⅴ国产精品久久久国产老师 | 国产成人精品优优av | 国产一区二区三区日韩精品 | 久久久久久a亚洲欧洲av冫 | 女人被爽到呻吟gif动态图视看 | 性啪啪chinese东北女人 | 任你躁国产自任一区二区三区 | 久久99热只有频精品8 | 午夜福利电影 | 风流少妇按摩来高潮 | 蜜桃臀无码内射一区二区三区 | 国内少妇偷人精品视频免费 | 人妻互换免费中文字幕 | 亚洲人成网站在线播放942 | 日日噜噜噜噜夜夜爽亚洲精品 | 色综合天天综合狠狠爱 | 欧美丰满熟妇xxxx性ppx人交 | 亚洲性无码av中文字幕 | 久久亚洲精品中文字幕无男同 | 亚洲人成影院在线无码按摩店 | 强辱丰满人妻hd中文字幕 | 亚洲另类伦春色综合小说 | 精品无码av一区二区三区 | 成人影院yy111111在线观看 | 免费观看又污又黄的网站 | 亚洲色欲久久久综合网东京热 | 日韩精品无码一区二区中文字幕 | 俺去俺来也www色官网 | 国产精品久久久久久久9999 | 男人扒开女人内裤强吻桶进去 | 国精品人妻无码一区二区三区蜜柚 | 亚洲区欧美区综合区自拍区 | 人人妻人人藻人人爽欧美一区 | 久久精品中文字幕一区 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲自偷自拍另类第1页 | 又湿又紧又大又爽a视频国产 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产精品毛片一区二区 | 荫蒂被男人添的好舒服爽免费视频 | 丰满人妻翻云覆雨呻吟视频 | 国产在热线精品视频 | 久久综合久久自在自线精品自 | 久久久www成人免费毛片 | 久久99精品久久久久婷婷 | 欧美老妇与禽交 | 亚洲呦女专区 | 欧美日韩亚洲国产精品 | 亚洲中文无码av永久不收费 | 日韩精品一区二区av在线 | 日产精品高潮呻吟av久久 | 人妻天天爽夜夜爽一区二区 | 男人的天堂av网站 | 日日摸天天摸爽爽狠狠97 | 国产超级va在线观看视频 | 又紧又大又爽精品一区二区 | 黄网在线观看免费网站 | 人妻少妇精品无码专区动漫 | 国产成人综合色在线观看网站 | 色婷婷久久一区二区三区麻豆 | 国产精品自产拍在线观看 | 亚洲男人av香蕉爽爽爽爽 | 久久精品成人欧美大片 | 亚洲aⅴ无码成人网站国产app | 亚洲成a人一区二区三区 | 国产内射老熟女aaaa | 熟女少妇人妻中文字幕 | 天天爽夜夜爽夜夜爽 | 国产av久久久久精东av | 小鲜肉自慰网站xnxx | 亚洲色www成人永久网址 | 欧美亚洲日韩国产人成在线播放 | 亚洲综合无码久久精品综合 | 在线观看国产午夜福利片 | 天天av天天av天天透 | 国产在热线精品视频 | 最近中文2019字幕第二页 | 大地资源网第二页免费观看 | 午夜精品久久久久久久 | 国产精品久久久久久久9999 | 国产美女精品一区二区三区 | 嫩b人妻精品一区二区三区 | 欧美老妇交乱视频在线观看 | 亚洲国产精品无码久久久久高潮 | 精品一区二区不卡无码av | 色综合久久中文娱乐网 | 国产人妻人伦精品1国产丝袜 | 熟女体下毛毛黑森林 | 久久久久99精品国产片 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 激情亚洲一区国产精品 | 内射老妇bbwx0c0ck | 日韩av无码一区二区三区不卡 | 亚洲欧洲日本综合aⅴ在线 | 亚洲精品美女久久久久久久 | 国产97在线 | 亚洲 | 两性色午夜视频免费播放 | 无码国内精品人妻少妇 | 国产精品美女久久久网av | 成在人线av无码免观看麻豆 | 男人和女人高潮免费网站 | 97精品人妻一区二区三区香蕉 | 国产99久久精品一区二区 | 伊人久久婷婷五月综合97色 | 中国女人内谢69xxxx | 欧美人与禽zoz0性伦交 | 中文字幕av无码一区二区三区电影 | 熟妇人妻无码xxx视频 | 日日天日日夜日日摸 | aⅴ亚洲 日韩 色 图网站 播放 | 国产欧美精品一区二区三区 | 日韩av激情在线观看 | 99久久久无码国产aaa精品 | 奇米影视888欧美在线观看 | 色欲综合久久中文字幕网 | 丰满妇女强制高潮18xxxx | 久久久精品456亚洲影院 | 国产精品久久久久9999小说 | 国产精品无码一区二区桃花视频 | 国产av一区二区三区最新精品 | 内射欧美老妇wbb | 狠狠噜狠狠狠狠丁香五月 | 丝袜人妻一区二区三区 | 国产suv精品一区二区五 | 久久综合激激的五月天 | 自拍偷自拍亚洲精品被多人伦好爽 | 精品熟女少妇av免费观看 | 天堂久久天堂av色综合 | 久久 国产 尿 小便 嘘嘘 | 亚洲国精产品一二二线 | 亚洲精品成人av在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产又爽又黄又刺激的视频 | 欧美日本精品一区二区三区 | √天堂资源地址中文在线 | 国产激情无码一区二区 | 奇米影视888欧美在线观看 | 国产精品久久久久7777 | 久青草影院在线观看国产 | 欧美精品在线观看 | 中文字幕日韩精品一区二区三区 | 白嫩日本少妇做爰 | 在线看片无码永久免费视频 | 国产免费久久久久久无码 | 强伦人妻一区二区三区视频18 | 欧美色就是色 | 在线看片无码永久免费视频 | 国产成人无码专区 | www国产亚洲精品久久久日本 | 久久精品国产日本波多野结衣 | 国产人妖乱国产精品人妖 | 最新国产乱人伦偷精品免费网站 | 国产内射爽爽大片视频社区在线 | 国产成人综合在线女婷五月99播放 | 国产亚洲精品精品国产亚洲综合 | 永久黄网站色视频免费直播 | 中文字幕无码免费久久99 | 久久久久久久人妻无码中文字幕爆 | 亚洲中文无码av永久不收费 | 国产亲子乱弄免费视频 | 欧美三级a做爰在线观看 | 免费人成在线视频无码 | 青青青爽视频在线观看 | 大乳丰满人妻中文字幕日本 | 久精品国产欧美亚洲色aⅴ大片 | 精品国精品国产自在久国产87 | 欧美放荡的少妇 | 99视频精品全部免费免费观看 | 亚洲国产欧美日韩精品一区二区三区 | 福利一区二区三区视频在线观看 | 久久99精品国产麻豆蜜芽 | v一区无码内射国产 | 宝宝好涨水快流出来免费视频 | 国产在线无码精品电影网 | 精品少妇爆乳无码av无码专区 | 国产av无码专区亚洲awww | 国产成人无码一二三区视频 | 亚洲日本va中文字幕 | 精品久久综合1区2区3区激情 | 亚洲成av人影院在线观看 | 中文无码成人免费视频在线观看 | 国产精品久久久久久久影院 | 18无码粉嫩小泬无套在线观看 | 亚洲成a人一区二区三区 | 久久综合久久自在自线精品自 | 日韩在线不卡免费视频一区 | 国产午夜无码视频在线观看 | 精品久久久久久人妻无码中文字幕 | 又大又紧又粉嫩18p少妇 | 国产人妻精品一区二区三区 | 国产人成高清在线视频99最全资源 | 精品久久久久香蕉网 | 亚洲成av人在线观看网址 | 国产69精品久久久久app下载 | 少妇被黑人到高潮喷出白浆 | 亚洲精品一区二区三区婷婷月 | 国产欧美精品一区二区三区 | 色情久久久av熟女人妻网站 | 2019午夜福利不卡片在线 | 51国偷自产一区二区三区 | 99久久精品日本一区二区免费 | 亚洲日本一区二区三区在线 | 亚洲理论电影在线观看 | 欧美亚洲日韩国产人成在线播放 | 亚洲欧美中文字幕5发布 | 天天拍夜夜添久久精品 | 精品无人区无码乱码毛片国产 | 国内精品久久久久久中文字幕 | 人妻互换免费中文字幕 | 帮老师解开蕾丝奶罩吸乳网站 | 久久亚洲中文字幕精品一区 | 无遮挡啪啪摇乳动态图 | 国产激情无码一区二区app | 国产精品无套呻吟在线 | 人妻无码αv中文字幕久久琪琪布 | 亚洲精品午夜国产va久久成人 | 国产成人无码一二三区视频 | 成人无码影片精品久久久 | 亚洲 日韩 欧美 成人 在线观看 | 99麻豆久久久国产精品免费 | 亚洲va欧美va天堂v国产综合 | 秋霞成人午夜鲁丝一区二区三区 | 免费乱码人妻系列无码专区 | 日韩精品无码免费一区二区三区 | 国产激情精品一区二区三区 | 5858s亚洲色大成网站www | aa片在线观看视频在线播放 | 亚洲自偷精品视频自拍 | 亚洲狠狠婷婷综合久久 | 国产一区二区三区精品视频 | 乱人伦人妻中文字幕无码久久网 | 久久精品成人欧美大片 | 国内精品一区二区三区不卡 | 国产疯狂伦交大片 | 亚洲一区二区三区四区 | 一本色道久久综合亚洲精品不卡 | 久久国语露脸国产精品电影 | 久久精品一区二区三区四区 | 国产成人精品优优av | 亚洲精品中文字幕乱码 | 国产精品.xx视频.xxtv | 国产成人午夜福利在线播放 | 日日噜噜噜噜夜夜爽亚洲精品 | 白嫩日本少妇做爰 | 中文字幕人成乱码熟女app | 又色又爽又黄的美女裸体网站 | 装睡被陌生人摸出水好爽 | 久久综合色之久久综合 | 黑人粗大猛烈进出高潮视频 | 青青草原综合久久大伊人精品 | www一区二区www免费 | 久久久久久九九精品久 | 77777熟女视频在线观看 а天堂中文在线官网 | 色妞www精品免费视频 | 内射爽无广熟女亚洲 | 中国大陆精品视频xxxx | 超碰97人人做人人爱少妇 | 成人女人看片免费视频放人 | 岛国片人妻三上悠亚 | aⅴ在线视频男人的天堂 | 欧美成人免费全部网站 | а天堂中文在线官网 | 少妇无码av无码专区在线观看 | 亚洲精品午夜无码电影网 | 亚洲小说春色综合另类 | 午夜丰满少妇性开放视频 | 亚洲精品一区国产 | 99久久人妻精品免费二区 | 久久人人爽人人爽人人片av高清 | 天天燥日日燥 | 一个人看的www免费视频在线观看 | 国产精品怡红院永久免费 | 欧美日韩在线亚洲综合国产人 | 日日天干夜夜狠狠爱 | 免费观看激色视频网站 | 色婷婷av一区二区三区之红樱桃 | 无码毛片视频一区二区本码 | 久久精品国产日本波多野结衣 | 久久亚洲中文字幕无码 | 日本高清一区免费中文视频 | 蜜桃臀无码内射一区二区三区 | 2019nv天堂香蕉在线观看 | 成人精品视频一区二区 | 国产免费久久久久久无码 | 欧美放荡的少妇 | 图片区 小说区 区 亚洲五月 | 亚洲综合无码一区二区三区 | 亚洲熟妇色xxxxx欧美老妇 | 国产无遮挡又黄又爽又色 | 精品国产一区二区三区四区 | 国产又爽又猛又粗的视频a片 | 未满成年国产在线观看 | 成年女人永久免费看片 | 两性色午夜视频免费播放 | 国产亚洲精品精品国产亚洲综合 | 男女性色大片免费网站 | 亚拍精品一区二区三区探花 | 国产成人精品必看 | 高清国产亚洲精品自在久久 | 中文亚洲成a人片在线观看 | 亚洲 a v无 码免 费 成 人 a v | 乱人伦人妻中文字幕无码久久网 | 久久久久久久久蜜桃 | 亚洲va中文字幕无码久久不卡 | 三上悠亚人妻中文字幕在线 | 亚洲成色www久久网站 | 中文字幕人成乱码熟女app | 久久99精品国产麻豆蜜芽 | 曰本女人与公拘交酡免费视频 | 麻豆果冻传媒2021精品传媒一区下载 | 在线精品国产一区二区三区 | 麻豆国产人妻欲求不满 | 国产人成高清在线视频99最全资源 | 免费国产成人高清在线观看网站 | 四十如虎的丰满熟妇啪啪 | 曰韩无码二三区中文字幕 | 激情内射亚州一区二区三区爱妻 | 欧美性色19p | 青春草在线视频免费观看 | 成人无码视频免费播放 | 国产麻豆精品一区二区三区v视界 | 国产做国产爱免费视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 精品无码一区二区三区爱欲 | 久久久国产一区二区三区 | 一本色道久久综合亚洲精品不卡 | 中文字幕av无码一区二区三区电影 | 伊在人天堂亚洲香蕉精品区 | 色一情一乱一伦一视频免费看 | 国产av一区二区精品久久凹凸 | 无码国模国产在线观看 | 国产午夜亚洲精品不卡 | 国产特级毛片aaaaaa高潮流水 | 亚洲va中文字幕无码久久不卡 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲综合另类小说色区 | 亚洲第一无码av无码专区 | 色老头在线一区二区三区 | 欧美老人巨大xxxx做受 | 伊人久久大香线蕉亚洲 | 国产精品亚洲综合色区韩国 | 国内丰满熟女出轨videos | 欧美日韩亚洲国产精品 | 人人妻在人人 | 无码人妻丰满熟妇区五十路百度 | 国产内射爽爽大片视频社区在线 | 乌克兰少妇xxxx做受 | 成人免费无码大片a毛片 | 国产97色在线 | 免 | 国产精品久久久久久亚洲毛片 | 麻豆国产人妻欲求不满谁演的 | 双乳奶水饱满少妇呻吟 | 天堂在线观看www | 性欧美大战久久久久久久 | 国产99久久精品一区二区 | 精品亚洲韩国一区二区三区 | 成人精品一区二区三区中文字幕 | 国产亚洲tv在线观看 | 亚洲精品一区二区三区在线观看 | yw尤物av无码国产在线观看 | 国产精品美女久久久久av爽李琼 | 四十如虎的丰满熟妇啪啪 | 黑人大群体交免费视频 | 亚洲精品中文字幕久久久久 | 在线观看国产一区二区三区 | 国产色精品久久人妻 | 性开放的女人aaa片 | 日本高清一区免费中文视频 | 青青久在线视频免费观看 | 综合网日日天干夜夜久久 | 欧美肥老太牲交大战 | 国语精品一区二区三区 | 国内丰满熟女出轨videos | 福利一区二区三区视频在线观看 | 水蜜桃av无码 | 大屁股大乳丰满人妻 | 欧美性猛交xxxx富婆 | 亚洲小说春色综合另类 | 精品无码av一区二区三区 | 亚洲s码欧洲m码国产av | 精品人人妻人人澡人人爽人人 | 奇米影视888欧美在线观看 | 国产午夜无码精品免费看 | 日本乱人伦片中文三区 | 疯狂三人交性欧美 | 色窝窝无码一区二区三区色欲 | 精品乱子伦一区二区三区 | 精品一区二区三区无码免费视频 | 精品aⅴ一区二区三区 | 狂野欧美性猛交免费视频 | 少妇性l交大片欧洲热妇乱xxx | 国产午夜无码精品免费看 | 草草网站影院白丝内射 | 国产精品亚洲五月天高清 | 亚洲自偷精品视频自拍 | 精品久久综合1区2区3区激情 | 天天拍夜夜添久久精品大 | 丰满少妇弄高潮了www | 免费国产成人高清在线观看网站 | 色婷婷综合中文久久一本 | 丰满人妻被黑人猛烈进入 | 国产精品怡红院永久免费 | 超碰97人人射妻 | 久久国产精品偷任你爽任你 | 国内少妇偷人精品视频免费 | 亚洲午夜福利在线观看 | 一本一道久久综合久久 | 亚洲成a人一区二区三区 | 精品国产一区二区三区四区在线看 | 国产婷婷色一区二区三区在线 | 西西人体www44rt大胆高清 | 日韩欧美群交p片內射中文 | 性色欲情网站iwww九文堂 | 亚无码乱人伦一区二区 | 午夜嘿嘿嘿影院 | 波多野结衣 黑人 | 少妇性荡欲午夜性开放视频剧场 | 狠狠色丁香久久婷婷综合五月 | 久久zyz资源站无码中文动漫 | 在线观看欧美一区二区三区 | 无遮挡国产高潮视频免费观看 | 天天做天天爱天天爽综合网 | 四虎影视成人永久免费观看视频 | 亚洲色大成网站www | 99精品国产综合久久久久五月天 | 波多野结衣av一区二区全免费观看 | 天堂久久天堂av色综合 | 精品国精品国产自在久国产87 | 久久精品国产一区二区三区肥胖 | 亚洲最大成人网站 | 成人欧美一区二区三区黑人免费 | 亚洲成av人片在线观看无码不卡 | 国产情侣作爱视频免费观看 | 一本久久伊人热热精品中文字幕 | 欧美35页视频在线观看 | 2020久久香蕉国产线看观看 | 国产农村乱对白刺激视频 | 亲嘴扒胸摸屁股激烈网站 | 国产精品人人妻人人爽 | 亚洲综合久久一区二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美 丝袜 自拍 制服 另类 | 国产精品理论片在线观看 | 国产香蕉97碰碰久久人人 | 国产亚洲精品久久久ai换 | 成人精品一区二区三区中文字幕 | 亚洲の无码国产の无码步美 | 久久久久99精品成人片 | 久久精品99久久香蕉国产色戒 | 麻豆人妻少妇精品无码专区 | 国产无av码在线观看 | 日本丰满护士爆乳xxxx | 国产精品人妻一区二区三区四 | 亚洲日本va中文字幕 | 日韩精品a片一区二区三区妖精 | 色狠狠av一区二区三区 | 欧美人与物videos另类 | 成年美女黄网站色大免费全看 | 又大又紧又粉嫩18p少妇 | 中文字幕无码视频专区 | 国精产品一品二品国精品69xx | 一个人免费观看的www视频 | 中文字幕无码av波多野吉衣 | 夜精品a片一区二区三区无码白浆 | 一个人看的www免费视频在线观看 | 波多野结衣乳巨码无在线观看 | 97精品国产97久久久久久免费 | 国产亚洲精品久久久久久 | 四十如虎的丰满熟妇啪啪 | 岛国片人妻三上悠亚 | 国产真人无遮挡作爱免费视频 | 亚洲精品国偷拍自产在线麻豆 | 国产精品视频免费播放 | 亚洲国产精品一区二区第一页 | 日韩人妻无码一区二区三区久久99 | 98国产精品综合一区二区三区 | 波多野42部无码喷潮在线 | 久久久国产一区二区三区 | 疯狂三人交性欧美 | 亚洲午夜无码久久 | 四虎影视成人永久免费观看视频 | 少妇高潮喷潮久久久影院 | 在线观看国产一区二区三区 | 国产av一区二区精品久久凹凸 | 久久精品女人的天堂av | 国产成人无码专区 | a片在线免费观看 | 精品国产av色一区二区深夜久久 | 疯狂三人交性欧美 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久国产精品_国产精品 | 波多野结衣av在线观看 | 国产免费久久精品国产传媒 | 免费看男女做好爽好硬视频 | 国产成人无码av片在线观看不卡 | 国产97在线 | 亚洲 | 日本xxxx色视频在线观看免费 | 中文字幕乱妇无码av在线 | 日韩成人一区二区三区在线观看 | 国产人妻人伦精品 | 特级做a爰片毛片免费69 | 鲁鲁鲁爽爽爽在线视频观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 人妻中文无码久热丝袜 | 无码av岛国片在线播放 | 国产午夜无码精品免费看 | 久久97精品久久久久久久不卡 | 成人影院yy111111在线观看 | 亚洲无人区午夜福利码高清完整版 | 女高中生第一次破苞av | 久久99精品久久久久久动态图 | 久久精品中文字幕一区 | 97久久超碰中文字幕 | 青春草在线视频免费观看 | 人妻少妇精品视频专区 | 中文字幕久久久久人妻 | 男人的天堂av网站 | 国精产品一区二区三区 | 四虎4hu永久免费 | 领导边摸边吃奶边做爽在线观看 | 日本爽爽爽爽爽爽在线观看免 | 永久免费精品精品永久-夜色 | 久久久精品欧美一区二区免费 | 久久精品国产大片免费观看 | 国产人妖乱国产精品人妖 | 67194成是人免费无码 | 少妇愉情理伦片bd | 久久99国产综合精品 | 少妇高潮喷潮久久久影院 | 丰满诱人的人妻3 | 日韩少妇白浆无码系列 | 国产精品va在线观看无码 | 国产精品久久国产三级国 | 欧美xxxx黑人又粗又长 | 亚洲の无码国产の无码步美 | 人人妻人人澡人人爽精品欧美 | 婷婷综合久久中文字幕蜜桃三电影 | 久久精品国产99久久6动漫 | 国产va免费精品观看 | 成人精品视频一区二区三区尤物 | 性史性农村dvd毛片 | 欧美自拍另类欧美综合图片区 | 色综合天天综合狠狠爱 | 欧美人与物videos另类 | 97精品国产97久久久久久免费 | 国产内射老熟女aaaa | 国产乱子伦视频在线播放 | 久久国语露脸国产精品电影 | 久久精品视频在线看15 | 捆绑白丝粉色jk震动捧喷白浆 | 精品无码国产一区二区三区av | 国产亚洲日韩欧美另类第八页 | 国产麻豆精品一区二区三区v视界 | 国产明星裸体无码xxxx视频 | 国产精品亚洲lv粉色 | 国产精品无套呻吟在线 | 在线a亚洲视频播放在线观看 | 国产情侣作爱视频免费观看 | 国产人妻人伦精品 | 成人免费视频视频在线观看 免费 | 红桃av一区二区三区在线无码av | 精品国产一区二区三区av 性色 | 国产一区二区三区精品视频 | 中国大陆精品视频xxxx | 小泽玛莉亚一区二区视频在线 | 奇米影视888欧美在线观看 | 网友自拍区视频精品 | av人摸人人人澡人人超碰下载 | 久久天天躁夜夜躁狠狠 | 日韩少妇白浆无码系列 | 国产九九九九九九九a片 | 曰本女人与公拘交酡免费视频 | 久久人人97超碰a片精品 | 国产无遮挡又黄又爽又色 | 97精品人妻一区二区三区香蕉 | 中文字幕av无码一区二区三区电影 | 麻豆md0077饥渴少妇 | 亚洲中文字幕在线无码一区二区 | 内射巨臀欧美在线视频 | 色欲综合久久中文字幕网 | 两性色午夜视频免费播放 | 麻豆蜜桃av蜜臀av色欲av | 丰满岳乱妇在线观看中字无码 | 色一情一乱一伦 | 国产另类ts人妖一区二区 | 女人被男人爽到呻吟的视频 | 久久97精品久久久久久久不卡 | 国产特级毛片aaaaaa高潮流水 | 国产99久久精品一区二区 | 亚洲区欧美区综合区自拍区 | 国产精品欧美成人 | 欧美变态另类xxxx | 超碰97人人做人人爱少妇 | 国产黑色丝袜在线播放 | 久久精品国产大片免费观看 | 麻豆精产国品 | 老熟妇仑乱视频一区二区 | 成人精品天堂一区二区三区 | 青青青手机频在线观看 | 性色欲情网站iwww九文堂 | 牲欲强的熟妇农村老妇女 | 国产明星裸体无码xxxx视频 | 久久人人爽人人人人片 | 国产精品久久久久9999小说 | 人妻人人添人妻人人爱 | 3d动漫精品啪啪一区二区中 | 暴力强奷在线播放无码 | 97久久国产亚洲精品超碰热 | 国精产品一区二区三区 | 大肉大捧一进一出好爽视频 | 午夜精品一区二区三区在线观看 | 无码av最新清无码专区吞精 | 99国产欧美久久久精品 | 久久久精品国产sm最大网站 | 国产成人精品三级麻豆 | 5858s亚洲色大成网站www | 国产午夜精品一区二区三区嫩草 | 人人澡人人妻人人爽人人蜜桃 | 日本一区二区三区免费播放 | 2020久久超碰国产精品最新 | 国产精品手机免费 | 久久久久久国产精品无码下载 | 国产人妻精品一区二区三区 | 永久免费观看美女裸体的网站 | 午夜嘿嘿嘿影院 | 蜜桃臀无码内射一区二区三区 | 曰本女人与公拘交酡免费视频 | 熟妇人妻中文av无码 | 国产成人午夜福利在线播放 | 激情亚洲一区国产精品 | 久久亚洲中文字幕精品一区 | 欧美大屁股xxxxhd黑色 | 久久精品丝袜高跟鞋 | 亚洲一区av无码专区在线观看 | 丰满人妻翻云覆雨呻吟视频 | 亚洲精品国产精品乱码视色 | 激情内射亚州一区二区三区爱妻 | 日本精品人妻无码免费大全 | 无码av最新清无码专区吞精 | 欧美丰满熟妇xxxx | 男女爱爱好爽视频免费看 | 亚洲一区二区三区播放 | 99国产精品白浆在线观看免费 | 蜜桃臀无码内射一区二区三区 | 在线天堂新版最新版在线8 | 欧美性生交活xxxxxdddd | 国产性生大片免费观看性 | 国产乱人无码伦av在线a | 四虎永久在线精品免费网址 | 成人免费视频视频在线观看 免费 | 性欧美大战久久久久久久 | 麻豆精产国品 | 奇米影视7777久久精品 | 久久久av男人的天堂 | 国产福利视频一区二区 | 国产成人综合色在线观看网站 | 兔费看少妇性l交大片免费 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲人成网站色7799 | 成熟妇人a片免费看网站 | 亚洲aⅴ无码成人网站国产app | 激情亚洲一区国产精品 | 水蜜桃色314在线观看 | 国产精品久久久久久无码 | 国产午夜精品一区二区三区嫩草 | 国内精品久久久久久中文字幕 | 香蕉久久久久久av成人 | 日韩欧美中文字幕在线三区 | 99在线 | 亚洲 | 最新版天堂资源中文官网 | 日本在线高清不卡免费播放 | 国产精品丝袜黑色高跟鞋 | 国内老熟妇对白xxxxhd | 99riav国产精品视频 | 夜夜躁日日躁狠狠久久av | 精品久久久无码人妻字幂 | 国产精品无套呻吟在线 | 青草青草久热国产精品 | 国产精品人人爽人人做我的可爱 | 国内精品久久久久久中文字幕 | 欧美一区二区三区视频在线观看 | 午夜精品一区二区三区在线观看 | 精品国产一区二区三区av 性色 | 一个人看的www免费视频在线观看 | 欧美三级a做爰在线观看 | 日本乱人伦片中文三区 | 无码人妻av免费一区二区三区 | 图片区 小说区 区 亚洲五月 | 国产免费久久精品国产传媒 | 亚洲国产精品久久人人爱 | 中文字幕无码热在线视频 | 四虎国产精品一区二区 | 国产精品香蕉在线观看 | 久久综合香蕉国产蜜臀av | 麻豆国产人妻欲求不满 | 国产另类ts人妖一区二区 | 精品偷拍一区二区三区在线看 | 国产在线精品一区二区高清不卡 | 最近中文2019字幕第二页 | 熟妇人妻无码xxx视频 | 亚洲熟妇自偷自拍另类 | 噜噜噜亚洲色成人网站 | 成熟女人特级毛片www免费 | 中文字幕人成乱码熟女app | 亚洲国产欧美日韩精品一区二区三区 | 97夜夜澡人人双人人人喊 | 国产 精品 自在自线 | 亚洲中文字幕久久无码 | 乱码av麻豆丝袜熟女系列 | 欧美丰满熟妇xxxx性ppx人交 | 国产亚洲人成在线播放 | 国产精品-区区久久久狼 | 人妻无码久久精品人妻 | 成人试看120秒体验区 | 国产 精品 自在自线 | 丰满岳乱妇在线观看中字无码 | 亚洲乱码国产乱码精品精 | 十八禁真人啪啪免费网站 | 成人三级无码视频在线观看 | 国产精品久久久一区二区三区 | 人人爽人人爽人人片av亚洲 | 色窝窝无码一区二区三区色欲 | 国产午夜亚洲精品不卡下载 | 午夜熟女插插xx免费视频 | 久久久国产一区二区三区 | 日本又色又爽又黄的a片18禁 | 中文字幕无码热在线视频 | 东京热无码av男人的天堂 | 99久久人妻精品免费二区 | 国产成人精品必看 | 无码成人精品区在线观看 | 性开放的女人aaa片 | 99久久精品国产一区二区蜜芽 | 奇米影视7777久久精品 | 日韩亚洲欧美中文高清在线 | 国产精品无码mv在线观看 | 国产午夜福利100集发布 | 欧美猛少妇色xxxxx | 激情综合激情五月俺也去 | 永久黄网站色视频免费直播 | 亚洲小说春色综合另类 | 欧美35页视频在线观看 | 国产精品自产拍在线观看 | 色综合久久网 | 欧美zoozzooz性欧美 | 天下第一社区视频www日本 | 亚洲精品成a人在线观看 | 一区二区传媒有限公司 | 欧洲极品少妇 | 精品国产福利一区二区 | 国产麻豆精品精东影业av网站 | 四虎4hu永久免费 | 亚洲日韩av片在线观看 | 国色天香社区在线视频 | 7777奇米四色成人眼影 | 亚洲精品国偷拍自产在线观看蜜桃 | 色五月丁香五月综合五月 | 欧美性生交活xxxxxdddd | 色狠狠av一区二区三区 | 国产艳妇av在线观看果冻传媒 | 亚洲成av人片在线观看无码不卡 | 成年美女黄网站色大免费全看 | 一本无码人妻在中文字幕免费 | 亚洲中文字幕va福利 | 国产无套粉嫩白浆在线 | 天天摸天天碰天天添 | 欧美性猛交xxxx富婆 | 丰满少妇人妻久久久久久 | 丰满人妻一区二区三区免费视频 | 欧美 亚洲 国产 另类 | 最近中文2019字幕第二页 | 久久www免费人成人片 | а√天堂www在线天堂小说 | 欧美自拍另类欧美综合图片区 | 国产精品美女久久久 | 国产成人综合在线女婷五月99播放 | 男女猛烈xx00免费视频试看 | 国产成人无码a区在线观看视频app | 伊人色综合久久天天小片 | 亚洲一区二区三区含羞草 | 色综合天天综合狠狠爱 | 内射老妇bbwx0c0ck | 99久久久无码国产aaa精品 | 中文字幕久久久久人妻 | 男人扒开女人内裤强吻桶进去 | 国产香蕉97碰碰久久人人 | 秋霞特色aa大片 | 内射巨臀欧美在线视频 | 一本色道久久综合狠狠躁 | 亚洲成熟女人毛毛耸耸多 | 久久久www成人免费毛片 | 国产97人人超碰caoprom | 少妇无码一区二区二三区 | 暴力强奷在线播放无码 | 国产精品无码久久av | 久久精品丝袜高跟鞋 | 久久人人爽人人爽人人片av高清 | 少妇无码一区二区二三区 | 国产精品18久久久久久麻辣 | 奇米影视7777久久精品人人爽 | 亚洲综合伊人久久大杳蕉 | 欧美性猛交内射兽交老熟妇 | 无码人妻av免费一区二区三区 | 久久综合激激的五月天 | 玩弄人妻少妇500系列视频 | 国产熟妇高潮叫床视频播放 | 国产成人综合在线女婷五月99播放 | 男人和女人高潮免费网站 | 又色又爽又黄的美女裸体网站 | 人妻少妇精品无码专区二区 | 久久久久久亚洲精品a片成人 | 久久久国产精品无码免费专区 | 婷婷综合久久中文字幕蜜桃三电影 | 中文字幕无码人妻少妇免费 | 久久 国产 尿 小便 嘘嘘 | 九九热爱视频精品 | 国产真人无遮挡作爱免费视频 | 亚洲精品久久久久中文第一幕 | 日韩人妻系列无码专区 | 激情爆乳一区二区三区 | 国产网红无码精品视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 噜噜噜亚洲色成人网站 | 国产va免费精品观看 | 99久久精品日本一区二区免费 | 久久精品女人的天堂av | 久久久成人毛片无码 | 99久久精品无码一区二区毛片 | 日本熟妇乱子伦xxxx | 亚洲熟妇自偷自拍另类 | 中文毛片无遮挡高清免费 | 中文字幕无线码 | 免费人成网站视频在线观看 | 又色又爽又黄的美女裸体网站 | 成在人线av无码免费 | 人妻无码久久精品人妻 | 亚洲国产欧美日韩精品一区二区三区 | 网友自拍区视频精品 | 色婷婷综合激情综在线播放 | 亚洲一区二区三区在线观看网站 | 丰满妇女强制高潮18xxxx | 女人被爽到呻吟gif动态图视看 | 激情爆乳一区二区三区 | 日本xxxx色视频在线观看免费 | 国产欧美亚洲精品a | 性史性农村dvd毛片 | 久久久久亚洲精品中文字幕 | 国产特级毛片aaaaaa高潮流水 | 无码纯肉视频在线观看 | 激情亚洲一区国产精品 | 国产成人精品无码播放 | 国产香蕉尹人视频在线 | 欧美喷潮久久久xxxxx | 日韩av无码中文无码电影 | 无码乱肉视频免费大全合集 | 日本熟妇乱子伦xxxx | 成人免费视频在线观看 | 亚洲最大成人网站 | 日本乱偷人妻中文字幕 | 亚洲精品成a人在线观看 | 中文字幕人妻无码一区二区三区 | 巨爆乳无码视频在线观看 | 亚洲熟女一区二区三区 | 国产精品亚洲lv粉色 | 少妇性l交大片欧洲热妇乱xxx | 精品国产一区二区三区av 性色 | 精品久久久无码人妻字幂 | 久久伊人色av天堂九九小黄鸭 | 人人妻人人藻人人爽欧美一区 | 久久人人97超碰a片精品 | 999久久久国产精品消防器材 | 国产精品无码一区二区三区不卡 | 亚洲gv猛男gv无码男同 | 久久国产精品萌白酱免费 | av无码电影一区二区三区 | 狂野欧美激情性xxxx | 亚洲欧美国产精品久久 | 野外少妇愉情中文字幕 | 国产亲子乱弄免费视频 | 国产精品va在线播放 | 中文字幕无码日韩专区 | 亚洲中文无码av永久不收费 | 久久人人爽人人爽人人片ⅴ | 中文字幕无码人妻少妇免费 | 无遮无挡爽爽免费视频 | 日韩 欧美 动漫 国产 制服 | 亚洲自偷自拍另类第1页 | 久久午夜无码鲁丝片午夜精品 | 人人妻人人澡人人爽人人精品浪潮 | a在线观看免费网站大全 | 亚洲色欲久久久综合网东京热 | 永久免费精品精品永久-夜色 | 97久久国产亚洲精品超碰热 | 免费网站看v片在线18禁无码 | 青青青爽视频在线观看 | 撕开奶罩揉吮奶头视频 | 国产内射爽爽大片视频社区在线 | 无码国内精品人妻少妇 | 少妇高潮喷潮久久久影院 | 强辱丰满人妻hd中文字幕 | 亚洲精品无码国产 | 玩弄人妻少妇500系列视频 | 亚洲乱亚洲乱妇50p | 99久久婷婷国产综合精品青草免费 | 中文无码伦av中文字幕 | 欧美性色19p | 国产精品丝袜黑色高跟鞋 | 纯爱无遮挡h肉动漫在线播放 | 丝袜 中出 制服 人妻 美腿 | 帮老师解开蕾丝奶罩吸乳网站 | 欧美老人巨大xxxx做受 | 亚洲色大成网站www | 久久久久久a亚洲欧洲av冫 | 99视频精品全部免费免费观看 | 中文字幕乱码中文乱码51精品 | 伦伦影院午夜理论片 | 77777熟女视频在线观看 а天堂中文在线官网 | 少妇性俱乐部纵欲狂欢电影 | 高潮喷水的毛片 | 久久精品国产一区二区三区 | 久久综合给久久狠狠97色 | 亚洲成a人片在线观看无码 | 无码一区二区三区在线 | 中文字幕无码视频专区 | 综合网日日天干夜夜久久 | 国产精品资源一区二区 | 国产xxx69麻豆国语对白 | 51国偷自产一区二区三区 | 中文字幕av无码一区二区三区电影 | 日本熟妇人妻xxxxx人hd | 丰满诱人的人妻3 | 人人妻人人澡人人爽欧美一区 | 婷婷丁香五月天综合东京热 | 国产精品无码成人午夜电影 | 中文久久乱码一区二区 | 久久精品成人欧美大片 | 色狠狠av一区二区三区 | 性欧美大战久久久久久久 | 无码人妻黑人中文字幕 | 国产香蕉尹人综合在线观看 | 亚洲 欧美 激情 小说 另类 | 精品国产一区二区三区四区在线看 | 欧美日韩在线亚洲综合国产人 | 少妇性俱乐部纵欲狂欢电影 | 极品尤物被啪到呻吟喷水 | 高清不卡一区二区三区 | 九月婷婷人人澡人人添人人爽 | 女人被爽到呻吟gif动态图视看 | 国产无av码在线观看 | 999久久久国产精品消防器材 | 夜精品a片一区二区三区无码白浆 | 国产精品久久国产精品99 | 欧美zoozzooz性欧美 | 精品久久久无码中文字幕 | 精品国产麻豆免费人成网站 | 国产在线无码精品电影网 | 亚洲欧美日韩成人高清在线一区 | 男人扒开女人内裤强吻桶进去 | 高潮喷水的毛片 | 国产三级久久久精品麻豆三级 | 国产午夜亚洲精品不卡 | 国产手机在线αⅴ片无码观看 | 亚洲日韩一区二区三区 | 人人妻人人藻人人爽欧美一区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 伊在人天堂亚洲香蕉精品区 | 捆绑白丝粉色jk震动捧喷白浆 | 两性色午夜视频免费播放 | 欧美xxxx黑人又粗又长 | 亚洲の无码国产の无码步美 | 亚洲 另类 在线 欧美 制服 | 俺去俺来也www色官网 | 亚洲人成影院在线无码按摩店 | 久久99精品国产.久久久久 | 一本无码人妻在中文字幕免费 | 黄网在线观看免费网站 | 51国偷自产一区二区三区 | 欧美 亚洲 国产 另类 | 国产精品人人妻人人爽 | 精品 日韩 国产 欧美 视频 | 妺妺窝人体色www在线小说 | 欧美freesex黑人又粗又大 | 久久99精品国产麻豆蜜芽 | 亚洲天堂2017无码中文 | 日日噜噜噜噜夜夜爽亚洲精品 | 国内综合精品午夜久久资源 | 免费无码肉片在线观看 | 国产综合色产在线精品 | 亚洲精品久久久久中文第一幕 | 国产人妻精品一区二区三区不卡 | 熟女俱乐部五十路六十路av | 国产精品嫩草久久久久 | 内射白嫩少妇超碰 | 夜夜夜高潮夜夜爽夜夜爰爰 | 强伦人妻一区二区三区视频18 | 亚洲 日韩 欧美 成人 在线观看 | 国产成人av免费观看 | 纯爱无遮挡h肉动漫在线播放 | 日韩人妻无码中文字幕视频 | 美女张开腿让人桶 | 麻豆精品国产精华精华液好用吗 | 国产一区二区不卡老阿姨 | 狠狠色色综合网站 | 亚洲日本va中文字幕 | 久久国产自偷自偷免费一区调 | 少妇无套内谢久久久久 | 岛国片人妻三上悠亚 | 国产精品无套呻吟在线 | 国产亚洲视频中文字幕97精品 | 99riav国产精品视频 | 男女下面进入的视频免费午夜 | 中文无码成人免费视频在线观看 | 国产办公室秘书无码精品99 | 国产av无码专区亚洲a∨毛片 | 真人与拘做受免费视频 | 国产精品资源一区二区 | 丰满人妻精品国产99aⅴ | аⅴ资源天堂资源库在线 | 欧美色就是色 | 又大又硬又黄的免费视频 | 国产精华av午夜在线观看 | 日韩亚洲欧美中文高清在线 | 一本精品99久久精品77 | 天天综合网天天综合色 | 国产av无码专区亚洲a∨毛片 | 精品无人区无码乱码毛片国产 | 天堂在线观看www | 亚洲精品中文字幕乱码 | 狂野欧美性猛xxxx乱大交 | 国产精品99爱免费视频 | 欧美第一黄网免费网站 | 久久综合九色综合欧美狠狠 | 国产熟女一区二区三区四区五区 | 狠狠噜狠狠狠狠丁香五月 | 久9re热视频这里只有精品 | 无码av最新清无码专区吞精 | 色综合天天综合狠狠爱 | www国产亚洲精品久久久日本 | 99国产欧美久久久精品 | 亚洲精品www久久久 | 日本大乳高潮视频在线观看 | 国产色在线 | 国产 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲综合另类小说色区 | 日本成熟视频免费视频 | 又粗又大又硬毛片免费看 | 又粗又大又硬毛片免费看 | 99国产精品白浆在线观看免费 | 强开小婷嫩苞又嫩又紧视频 | 九九久久精品国产免费看小说 | 色妞www精品免费视频 | 亚洲精品午夜国产va久久成人 | 亚洲精品国产品国语在线观看 | 亚洲中文字幕无码中文字在线 | 国产亚洲精品久久久久久久 | 无码一区二区三区在线观看 | 国产人妻精品一区二区三区 | 久久精品国产大片免费观看 | 99久久精品国产一区二区蜜芽 | 成 人 免费观看网站 | 伊在人天堂亚洲香蕉精品区 | 久久五月精品中文字幕 | 久久精品中文字幕一区 | 欧美日本精品一区二区三区 | 成人亚洲精品久久久久 | 国产口爆吞精在线视频 | 中文字幕av无码一区二区三区电影 | 露脸叫床粗话东北少妇 | 黑人粗大猛烈进出高潮视频 | 青草视频在线播放 | 人人爽人人澡人人高潮 | 九九久久精品国产免费看小说 | 久久无码专区国产精品s | 国产熟妇高潮叫床视频播放 | 亚洲日韩中文字幕在线播放 | а天堂中文在线官网 | 国产精品久久久久久久影院 | 色妞www精品免费视频 | 亚洲色偷偷男人的天堂 | 亚洲国产精品无码久久久久高潮 | 国产成人精品无码播放 | 俄罗斯老熟妇色xxxx | 九一九色国产 | 精品国产福利一区二区 | 四虎永久在线精品免费网址 | 亚洲另类伦春色综合小说 | 成人女人看片免费视频放人 | 亚洲色在线无码国产精品不卡 | 真人与拘做受免费视频一 | 国产艳妇av在线观看果冻传媒 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲人成网站免费播放 | 国产成人无码a区在线观看视频app | 精品人妻人人做人人爽夜夜爽 | 亚洲国产欧美国产综合一区 |