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

服務器性能優化之網絡性能優化

系統 Linux
今天分享一篇后臺服務器性能優化之網絡性能優化,希望大家對Linux網絡有更深的理解。

hi ,大家好,今天分享一篇后臺服務器性能優化之網絡性能優化,希望大家對Linux網絡有更深的理解。

曾幾何時,一切都是那么簡單。網卡很慢,只有一個隊列。當數據包到達時,網卡通過DMA復制數據包并發送中斷,Linux內核收集這些數據包并完成中斷處理。隨著網卡越來越快,基于中斷的模型可能會因大量傳入數據包而導致 IRQ 風暴。這將消耗大部分 CPU 功率并凍結系統。

為了解決這個問題,NAPI(中斷+輪詢)被提議。當內核收到來自網卡的中斷時,它開始輪詢設備并盡快收集隊列中的數據包。NAPI 可以很好地與現在常見的 1 Gbps 網卡配合使用。但是,對于10Gbps、20Gbps甚至40Gbps的網卡,NAPI可能還不夠。如果我們仍然使用一個 CPU 和一個隊列來接收數據包,這些卡將需要更快的 CPU。

幸運的是,現在多核 CPU 很流行,那么為什么不并行處理數據包呢?

RSS:接收端縮放


Receive Side Scaling(RSS)是所述機構具有多個RX / TX隊列過程的數據包。當帶有RSS 的網卡接收到數據包時,它會對數據包應用過濾器并將數據包分發到RX 隊列。過濾器通常是一個哈希函數,可以通過“ethtool -X”進行配置。如果你想在前 3 個隊列中均勻分布流量:

# ethtool -X eth0 equal 3

或者,如果你發現一個特別有用的魔法哈希鍵:  

# ethtool -X eth0 hkey <magic hash key>

對于低延遲網絡,除了過濾器之外,CPU 親和性也很重要。最佳設置是分配一個 CPU 專用于一個隊列。首先通過檢查/proc/interrupt找出IRQ號,然后將CPU位掩碼設置為/proc/irq/<IRQ_NUMBER>/smp_affinity來分配專用CPU。為避免設置被覆蓋,必須禁用守護進程irqbalance。請注意,根據內核文檔,超線程對中斷處理沒有任何好處,因此最好將隊列數與物理 CPU 內核數相匹配。

RPS:接收數據包控制

RSS提供硬件隊列,一個稱為軟件隊列機制Receive Packet Steering (RPS)在Linux內核實現。

當驅動程序接收到數據包時,它會將數據包包裝在套接字緩沖區 ( sk_buff ) 中,其中包含數據包的u32哈希值。散列是所謂的第 4 層散列(l4 散列),它基于源 IP、源端口、目的 IP 和目的端口,由網卡或__skb_set_sw_hash() 計算。由于相同 TCP/UDP 連接(流)的每個數據包共享相同的哈希值,因此使用相同的 CPU 處理它們是合理的。

RPS 的基本思想是根據每個隊列的 rps_map 將同一流的數據包發送到特定的 CPU。這是 rps_map 的結構:映射根據 CPU 位掩碼動態更改為/sys/class/net/<dev>/queues/rx-<n>/rps_cpus。比如我們要讓隊列使用前3個CPU,在8個CPU的系統中,我們先構造位掩碼,0 0 0 0 0 1 1 1,到0x7,然后    

#echo 7 > /sys/class/net /eth0/queues/rx-0/rps_cpus

這將保證從 eth0 中隊列 0 接收的數據包進入 CPU 1~3。驅動程序在 sk_buff 中包裝一個數據包后,它將到達netif_rx_internal()或netif_receive_skb_internal(),然后到達 get_rps_cpu()

struct rps_map {
unsigned int len;
struct rcu_head rcu;
u16 cpus[0];
};

將被調用以將哈希映射到 rps_map 中的條目,即 CPU id。得到CPU id后,enqueue_to_backlog()將sk_buff放到特定的CPU隊列中進行進一步處理。每個 CPU 的隊列在 per-cpu 變量softnet_data 中分配。

使用RPS的好處是可以在 CPU 之間分擔數據包處理的負載。但是,如果RSS 可用,則可能沒有必要,因為網卡已經對每個隊列/CPU 的數據包進行了排序。但是,如果隊列中的CPU數更多,RPS 仍然可以發揮作用。在這種情況下,每個隊列可以與多個 CPU相關聯并在它們之間分發數據包。

RFS: Receive Flow Steering

盡管 RPS 基于流分發數據包,但它沒有考慮用戶空間應用程序。應用程序可能在 CPU A 上運行,而內核將數據包放入 CPU B 的隊列中。由于 CPU A 只能使用自己的緩存,因此 CPU B 中緩存的數據包變得無用。Receive Flow Steering(RFS)進一步延伸為RPS的應用程序。

代替每個隊列的哈希至CPU地圖,RFS維護全局flow-to-CPU的表,rps_sock_flow_table:該掩模用于將散列值映射成所述表的索引。由于表大小將四舍五入到 2 的冪,因此掩碼設置為table_size - 1。

struct rps_sock_flow_table {
u32 mask;
u32 ents[0];
};

并且很容易找到索引:a sk_buff與hash & scok_table->mask。

該條目由 rps_cpu_mask劃分為流 id 和 CPU id。低位用于CPU id,而高位用于流id。當應用程序對套接字進行操作時(inet_recvmsg()、inet_sendmsg()、inet_sendpage()、tcp_splice_read()),將調用sock_rps_record_flow()來更新sock 流表。

當數據包到來時,將調用get_rps_cpu()來決定使用哪個 CPU 隊列。下面是get_rps_cpu()如何決定數據包的 CPU

ident = sock_flow_table->ents[hash & sock_flow_table->mask];
if ((ident ^ hash) & ~rps_cpu_mask)
goto try_rps;
next_cpu = ident & rps_cpu_mask;

使用流表掩碼找到條目的索引,并檢查散列的高位是否與條目匹配。如果是,它會從條目中檢索 CPU id 并為數據包分配該 CPU。如果散列不匹配任何條目,它會回退到使用 RPS 映射。

可以通過rps_sock_flow_entries調整 sock 流表的大小。例如,如果我們要將表大小設置為 32768:

#echo 32768 > /proc/sys/net/core/rps_sock_flow_entries

sock流表雖然提高了應用的局部性,但也帶來了一個問題。當調度器將應用程序遷移到新 CPU 時,舊 CPU 隊列中剩余的數據包變得未完成,應用程序可能會得到亂序的數據包。為了解決這個問題,RFS 使用每個隊列的rps_dev_flow_table來跟蹤未完成的數據包。

下面是該結構rps_dev_flow_table:到襪子流表中,類似的rps_dev_flow_table也使用table_size - 1作為掩模而表的大小也必須被向上舍入到2的冪當流量分組被入隊,last_qtail被更新

struct rps_dev_flow {
u16 cpu;
u16 filter; /* For aRFS */
unsigned int last_qtail;
};
struct rps_dev_flow_table {
unsigned int mask;
struct rcu_head rcu;
struct rps_dev_flow flows[0];
};

到 CPU 隊列的尾部。如果應用程序遷移到新 CPU,則 sock 流表將反映更改,并且get_rps_cpu()將為流設置新 CPU。在設置新 CPU 之前,get_rps_cpu() 會檢查當前隊列的頭部是否已經通過 last_qtail。如果是這樣,這意味著隊列中沒有更多未完成的數據包,并且可以安全地更改 CPU。否則,get_rps_cpu()仍將使用rps_dev_flow->cpu 中記錄的舊 CPU 。

每個隊列的流表(rps_dev_flow_table)的大小可以通過 sysfs 接口進行配置:

/sys/class/net/<dev>/queues/rx-<n>/rps_flow_cnt

建議將rps_flow_cnt設置為 ( rps_sock_flow_entries / N) 而 N 是 RX 隊列的數量(假設流在隊列中均勻分布)。

ARFS:加速接收流量轉向

Accelerated Receive Flow Steering(aRFS)進一步延伸RFS為RX隊列硬件過濾。要啟用 aRFS,它需要具有可編程元組過濾器和驅動程序支持的網卡。要啟用ntuple 過濾器。

# ethtool -K eth0 ntuple on

要使驅動程序支持aRFS,它必須實現ndo_rx_flow_steer以幫助set_rps_cpu()配置硬件過濾器。當get_rps_cpu()決定為流分配一個新 CPU 時,它會調用set_rps_cpu()。set_rps_cpu()首先檢查網卡是否支持 ntuple 過濾器。如果是,它將查詢rx_cpu_rmap為流找到合適的 RX 隊列。

rx_cpu_rmap是驅動維護的特殊映射。該映射用于查找哪個 RX 隊列適合 CPU。它可以是與給定 CPU 直接關聯的隊列,也可以是處理 CPU 在緩存位置最接近的隊列。獲取 RX 隊列索引后,set_rps_cpu()調用ndo_rx_flow_steer()以通知驅動程序為給定的流創建新過濾器。ndo_rx_flow_steer()將返回過濾器 id,過濾器 id 將存儲在每個隊列的流表中。

除了實現ndo_rx_flow_steer() 外,驅動程序還必須調用rps_may_expire_flow() 定期檢查過濾器是否仍然有效并刪除過期的過濾器。

SO_REUSEPORT

linux man文檔中一段文字描述其作用:

The new socket option allows multiple sockets on the same host to bind to the same port, and is intended to improve the performance of multithreaded network server applications running on top of multicore systems.

簡單說,SO_REUSEPORT支持多個進程或者線程綁定到同一端口,用以提高服務器程序的性能。我們想了解為什么這個特性這么火(經常被大廠面試官問到),到底是解決什么問題。

Linux系統上后臺應用程序,為了利用多核的優勢,一般使用以下比較典型的多進程/多線程服務器模型:

  • 單線程listen/accept,多個工作線程接收任務分發,雖CPU的工作負載不再是問題,但會存在:

      1. 單線程listener,在處理高速率海量連接時,一樣會成為瓶頸;

      2. CPU緩存行失效(丟失套接字結構socket structure)現象嚴重;

  • 所有工作線程都accept()在同一個服務器套接字上呢,一樣存在問題:

      1. 多線程訪問server socket鎖競爭嚴重;

      2. 高負載下,線程之間處理不均衡,有時高達3:1不均衡比例;

      3. 導致CPU緩存行跳躍(cache line bouncing);

      4. 在繁忙CPU上存在較大延遲;

上面模型雖然可以做到線程和CPU核綁定,但都會存在以下問題:

  • 單一listener工作線程在高速的連接接入處理時會成為瓶頸
  • 緩存行跳躍
  • 很難做到CPU之間的負載均衡
  • 隨著核數的擴展,性能并沒有隨著提升

SO_REUSEPORT支持多個進程或者線程綁定到同一端口:

  • 允許多個套接字 bind()/listen() 同一個TCP/UDP端口

       1.每一個線程擁有自己的服務器套接字。

       2.在服務器套接字上沒有了鎖的競爭。

  • 內核層面實現負載均衡。
  • 安全層面,監聽同一個端口的套接字只能位于同一個用戶下面。

其核心的實現主要有三點:

  • 擴展socket option,增加
  • SO_REUSEPORT選項,用來設置 reuseport。
  • 修改 bind 系統調用實現,以便支持可以綁定到相同的 IP 和端口。
  • 修改處理新建連接的實現,查找 listener 的時候,能夠支持在監聽相同 IP 和端口的多個 sock 之間均衡選擇

帶來意義

  • CPU之間平衡處理,水平擴展,模型簡單,維護方便了,進程的管理和應用邏輯解耦,進程的管理水平擴展權限下放給程序員/管理員,可以根據實際進行控制進程啟動/關閉,增加了靈活性。這帶來了一個較為微觀的水平擴展思路,線程多少是否合適,狀態是否存在共享,降低單個進程的資源依賴,針對無狀態的服務器架構最為適合。
  • 針對對客戶端而言,表面上感受不到其變動,因為這些工作完全在服務器端進行。
  • 服務器無縫重啟/切換,熱更新,提供新的可能性。我們迭代了一版本,需要部署到線上,為之啟動一個新的進程后,稍后關閉舊版本進程程序,服務一直在運行中不間斷,需要平衡過度。這就像Erlang語言層面所提供的熱更新一樣。

SO_REUSEPORT已知問題

  • SO_REUSEPORT分為兩種模式,即熱備份模式和負載均衡模式,在早期的內核版本中,即便是加入對reuseport選項的支持,也僅僅為熱備份模式,而在3.9內核之后,則全部改為了負載均衡模式,兩種模式沒有共存,雖然我一直都希望它們可以共存。
  • SO_REUSEPORT根據數據包的四元組{src ip, src port, dst ip, dst port}和當前綁定同一個端口的服務器套接字數量進行數據包分發。若服務器套接字數量產生變化,內核會把本該上一個服務器套接字所處理的客戶端連接所發送的數據包(比如三次握手期間的半連接,以及已經完成握手但在隊列中排隊的連接)分發到其它的服務器套接字上面,可能會導致客戶端請求失敗。

如何預防以上已知問題,一般解決思路:

1.使用固定的服務器套接字數量,不要在負載繁忙期間輕易變化。

2.允許多個服務器套接字共享TCP請求表(Tcp request table)。

3.不使用四元組作為Hash值進行選擇本地套接字處理,比如選擇 會話ID或者進程ID,挑選隸屬于同一個CPU的套接字。

4. 使用一致性hash算法。

與其他特性關系

1. SO_REUSEADDR:主要是地址復用

  1.1 讓處于time_wait狀態的socket可以快速復用原ip+port

  1.2 使得0.0.0.0(ipv4通配符地址)與其他地址(127.0.0.1和10.0.0.x)不沖突

  1.3 SO_REUSEADDR 的缺點在于,沒有安全限制,而且無法保證所有連接均勻分配。

2.與RFS/RPS/XPS-mq協作,可以獲得進一步的性能

  2.1.服務器線程綁定到CPUs

  2.2.RPS分發TCP SYN包到對應CPU核上

  2.3.TCP連接被已綁定到CPU上的線程accept()

  2.4. XPS-mq(Transmit Packet Steering for multiqueue),傳輸隊列和CPU綁定,發送   數據

  2.5. RFS/RPS保證同一個連接后續數據包都會被分發到同一個CPU上,網卡接收隊列 已經綁定到CPU,則RFS/RPS則無須設置,需要注意硬件支持與否,目的是數據包的軟硬中斷、接收、處理等在一個CPU核上,并行化處理,盡可能做到資源利用最大化。

SO_REUSEPORT的演進

  • 3.9之前內核,能夠讓多個socket同時綁定完全相同的ip+port,但不能實現負載均衡,實現是熱備。
  • Linux 3.9之后,能夠讓多個socket同時綁定完全相同的ip+port,可以實現負載均衡。
  • Linux4.5版本后,內核引入了reuseport groups,它將綁定到同一個IP和Port,并且設置了SO_REUSEPORT選項的socket組織到一個group內部。目的是加快socket查詢。

總結

Linux網絡堆棧所存在問題

  • TCP處理&多核
  • 一個完整的TCP連接,中斷發生在一個CPU核上,但應用數據處理可能會在另外一個核上
  • 不同CPU核心處理,帶來了鎖競爭和CPU Cache Miss(波動不平衡)
  • 多個進程監聽一個TCP套接字,共享一個listen queue隊列
  • 用于連接管理全局哈希表格,存在資源競爭
  • epoll IO模型多進程的驚群現象
  • Linux VFS的同步損耗嚴重
  • Socket被VFS管理
  • VFS對文件節點Inode和目錄Dentry有同步需求
  • SOCKET只需要在內存中存在即可,非嚴格意義上文件系統,不需要Inode和Dentry
  • 代碼層面略過不必須的常規鎖,但又保持了足夠的兼容性

RSS、RPS、RFS 和 aRFS,這些機制是在 Linux 3.0 之前引入的,SO_REUSEPORT選項在Linux 3.9被引入內核,因此大多數發行版已經包含并啟用了它們。深入了解它們,以便為我們的服務器系統找到最佳性能配置。

性能優化無極限,我們下期再繼續分享!

責任編輯:龐桂玉 來源: Linux學習
相關推薦

2021-11-29 11:13:45

服務器網絡性能

2023-07-04 07:19:17

物理服務器網絡

2011-03-11 15:52:59

LAMP優化

2011-03-11 15:53:02

LAMP優化

2022-09-26 09:19:38

服務器優化

2022-05-05 09:27:31

Linux服務器優化

2011-03-11 15:52:57

LAMP優化

2021-07-29 14:20:34

網絡優化移動互聯網數據存儲

2024-05-08 16:47:24

PostgreSQL數據庫

2013-07-23 09:51:32

Tomcat性能優化服務器性能優化

2011-08-01 10:49:12

服務器

2011-03-11 15:53:00

LAMP優化

2019-08-12 14:46:56

Web服務器性能

2018-06-13 10:27:04

服務器性能優化

2009-01-08 17:43:17

服務器性能磁盤

2010-05-19 10:31:07

IIS服務器

2010-05-19 10:40:59

IIS服務器

2017-03-29 14:44:20

網絡性能優化

2019-07-30 10:51:22

數據庫MySQL固態硬盤

2010-04-13 11:26:54

IIS網站服務器性能
點贊
收藏

51CTO技術棧公眾號

欧美在线你懂得| 成人久久视频在线观看| 中文字幕亚洲色图| 四虎1515hh.com| 麻豆成全视频免费观看在线看| av一区二区不卡| 国产精品久久久久福利| 九九视频免费在线观看| 深夜福利久久| 欧美va日韩va| 在线观看免费的av| 一根才成人网| 亚洲一二三四久久| 亚洲一区二区三区精品动漫| 黄色av网站免费在线观看| 丝袜美腿高跟呻吟高潮一区| 精品国偷自产在线视频| 懂色av粉嫩av蜜乳av| 亚洲国产精选| 色噜噜狠狠一区二区三区果冻| 51xx午夜影福利| 国产高清av在线| 粉嫩一区二区三区在线看| 国产精品免费福利| 中文字幕亚洲精品在线| 欧美黄色一区二区| 中文字幕国产日韩| 搡老熟女老女人一区二区| 精品一区二区三区中文字幕 | 久久久午夜精品理论片中文字幕| 亚洲一区二区三区四区在线播放 | 欧美tk丨vk视频| 91女神在线观看| 在线手机中文字幕| 亚洲不卡av一区二区三区| 中文字幕在线中文字幕日亚韩一区| 秋霞av在线| kk眼镜猥琐国模调教系列一区二区 | 亚洲第一区第一页| 国产成人精品综合久久久久99| 高清av一区| 91黄色免费观看| 黄色片一级视频| 五月天av在线| 欧美性生交xxxxxdddd| 日韩一级性生活片| 国产99re66在线视频| 亚洲啪啪综合av一区二区三区| 亚洲国产日韩美| 日韩在线资源| 亚洲欧洲精品天堂一级| 一区二区在线观| 9色在线视频| 国产精品不卡在线观看| 一区不卡字幕| 国产在线激情| 夜夜嗨av一区二区三区四季av| 色中文字幕在线观看| www.在线视频| 亚洲午夜久久久久久久久电影网| 成人免费在线视频播放| 丁香花高清在线观看完整版| 亚洲成人综合视频| 国产原创中文在线观看 | 美女搡bbb又爽又猛又黄www| 一区二区三区亚洲变态调教大结局| 日韩免费电影网站| 人妻av一区二区| 亚洲宅男一区| 色偷偷av亚洲男人的天堂| 中文字幕求饶的少妇| 午夜久久久久| 91精品国产网站| 无码人妻丰满熟妇区五十路| 美女视频网站久久| 亚洲在线第一页| 欧美一级一区二区三区| 久久五月婷婷丁香社区| 亚洲v国产v在线观看| 免费的黄网站在线观看| 亚洲激情成人在线| 女人和拘做爰正片视频| 一区在线影院| 日韩一卡二卡三卡四卡| 国产精品久久AV无码| 精品日韩毛片| 久久69精品久久久久久久电影好 | 成人ww免费完整版在线观看| 亚洲国产精品久久久久婷婷884| 免费在线观看亚洲视频| 九九久久国产| 亚洲国产毛片完整版| 少妇av片在线观看| 国产综合精品| 国产精品91在线| 性做久久久久久久| 国产欧美一区二区三区在线老狼 | 在线看一级片| 色综合一区二区| 在线a免费观看| 亚洲国产网址| 欧美成人全部免费| 国产一卡二卡三卡| 国产精品亚洲一区二区三区妖精| 欧美精品二区三区四区免费看视频 | 久久影视电视剧免费网站清宫辞电视| 国产精品第九页| 久久99精品久久久久| 精品国产二区在线| a天堂中文在线官网在线| 疯狂做受xxxx高潮欧美日本| 亚洲最大天堂网| 蜜桃a∨噜噜一区二区三区| 欧美乱大交xxxxx| 中文字幕日本视频| caoporen国产精品视频| 免费观看国产视频在线| 成人黄页网站视频| 日韩激情在线视频| 免费在线观看国产精品| 久草中文综合在线| 日本一区二区三区四区在线观看| 2001个疯子在线观看| 欧美一区二区性放荡片| 国产精品酒店视频| 久久精品盗摄| 噜噜噜噜噜久久久久久91| 久久免费电影| 日韩女优视频免费观看| 国产精品精品软件男同| 男女男精品视频网| 欧美一区二区三区四区夜夜大片| 538视频在线| 精品国产三级a在线观看| 欧美一级片在线视频| 蜜臀久久久99精品久久久久久| 久久久久久久久久久久久9999| 激情影院在线| 精品少妇一区二区三区在线播放| 91精品国产闺蜜国产在线闺蜜| 人禽交欧美网站| 日韩国产一区久久| 日韩精品第一| 日韩综合中文字幕| 国产精品久久久久久在线| 国产欧美日韩激情| 日韩av片网站| 四虎国产精品免费观看| 国产视频福利一区| 黄色网址在线免费观看| 日韩一区二区在线观看| 九九九免费视频| 成人性色生活片| 中国丰满人妻videoshd| 亚洲va久久久噜噜噜久久| 国产福利精品在线| 尤物网址在线观看| 91精品欧美一区二区三区综合在| 777777国产7777777| 国产毛片一区二区| 人妻无码一区二区三区四区| 1769国产精品视频| 欧美中文在线字幕| av免费观看一区二区| 欧美高清www午色夜在线视频| 91香蕉视频在线播放| 国产成人精品免费视频网站| 国产黄色片免费在线观看| 青青视频一区二区| 国产精品美女免费视频| dy888亚洲精品一区二区三区| 精品国产伦一区二区三区观看方式 | 四虎永久免费影院| 免费精品视频在线| 女人床在线观看| 亚洲福利网站| 成人激情电影一区二区| 欧美xxx黑人xxx水蜜桃| 国产偷亚洲偷欧美偷精品| 中文字幕观看视频| 亚洲激情图片一区| 国产综合精品在线| 国产麻豆午夜三级精品| 大肉大捧一进一出好爽视频| 成人羞羞视频播放网站| 波多野结衣成人在线| 欧美黄色网页| 欧美成人精品h版在线观看| 日本大臀精品| 欧美一区二区三区色| 欧美三级韩国三级日本三斤在线观看| 国产精品色在线| 国产午夜在线一区二区三区| 日韩成人精品在线| 日韩精品视频在线观看视频| 精品日韩欧美一区| 国产日韩欧美综合精品| 另类一区二区三区| 98精品在线视频| 18视频在线观看| 亚洲精品一区久久久久久| 国产毛片久久久久| 色偷偷久久人人79超碰人人澡| 美女视频久久久| 久久综合资源网| 免费国偷自产拍精品视频| 日韩精品高清不卡| 俄罗斯av网站| 国产一在线精品一区在线观看| 日韩精品久久久免费观看| 国产福利资源一区| 91色中文字幕| 欧美韩国亚洲| 欧美中文在线观看国产| 男女视频在线| 欧美老妇交乱视频| 日本网站在线免费观看视频| 亚洲男人7777| 天天干视频在线| 日韩免费视频线观看| 国产有码在线观看| 在线精品视频一区二区| 国产又大又黄视频| 亚洲综合免费观看高清完整版在线 | 国产精品入口免费视| 中文字幕影音在线| 91po在线观看91精品国产性色| 在线免费av导航| 久久影视电视剧免费网站| 日本中文字幕在线2020| 尤物九九久久国产精品的分类 | 2024国产精品视频| 日本69式三人交| 国产成人三级在线观看| 午夜免费福利视频在线观看| 美女任你摸久久| 亚洲污视频在线观看| 久久中文在线| 欧美一级黄色影院| 久久蜜桃精品| 精品久久久久久久无码| 日韩精品亚洲一区| 已婚少妇美妙人妻系列| 天使萌一区二区三区免费观看| 六月丁香婷婷激情| 久久这里只有| 午夜免费高清视频| 美日韩一区二区| 狠狠躁狠狠躁视频专区| 另类人妖一区二区av| 免费一区二区三区在线观看| 久久99久久99精品免视看婷婷| 男生操女生视频在线观看| 国产资源精品在线观看| 制服下的诱惑暮生| 99在线精品视频| 日本黄色网址大全| 国产精品毛片久久久久久| 久久久久亚洲AV成人无在| 国产精品国产三级国产aⅴ入口| 激情无码人妻又粗又大| 亚洲色图视频免费播放| 国产一级理论片| 一本久道久久综合中文字幕| 波多野结衣高清视频| 欧美精品第一页| 亚洲欧美激情另类| 亚洲欧美三级在线| 欧美成年黄网站色视频| 欧美大荫蒂xxx| 蜜臀久久精品| 成人久久精品视频| 好吊妞视频这里有精品| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 国产精品久久不卡| 国产欧美1区2区3区| 希岛爱理中文字幕| 欧美日韩国产精品专区| 在线观看国产黄| 精品日韩欧美一区二区| 国产网站在线播放| 九九九热精品免费视频观看网站| √天堂8资源中文在线| 国产精品夫妻激情| 中文无码日韩欧| 热re99久久精品国99热蜜月| 91精品一区二区三区综合在线爱 | 亚洲国产日韩欧美在线动漫| youjizz在线播放| 欧美黑人xxxⅹ高潮交| 亚洲综合在线电影| 99国精产品一二二线| 精品国产一区二区三区小蝌蚪| 91嫩草国产丨精品入口麻豆| 久久精选视频| 性感美女一区二区三区| 中文字幕欧美国产| 日韩福利片在线观看| 欧美精品色一区二区三区| 特黄视频在线观看| 欧美成人四级hd版| 成人免费在线观看视频| 久久国产精品高清| 一区二区免费不卡在线| 国产97色在线 | 日韩| 白白色 亚洲乱淫| 麻豆天美蜜桃91| 欧美视频一区二区三区四区 | 精品一区二区无码| 亚洲国产精品一区二区久| 黄在线免费观看| 国产精品久久一区| 精品影片在线观看的网站| 国产精品视频一二三四区| 激情综合网av| 纪美影视在线观看电视版使用方法| 亚洲国产精品久久久男人的天堂| 国产麻豆免费观看| 日韩在线视频免费观看| 三上悠亚激情av一区二区三区| 国产欧美日韩一区| 亚洲手机在线| 久久久久久久久久影视| 亚洲乱码国产乱码精品精可以看 | 欧美成人四级hd版| 亚洲综合伊人| 在线观看国产一区| 琪琪一区二区三区| 最新中文字幕av| 色婷婷久久久亚洲一区二区三区 | 色综合久久久久无码专区| 国产成人av电影在线播放| 婷婷久久综合网| 欧美另类久久久品| 免费在线观看黄色| 成人免费午夜电影| 天天天综合网| 欧美视频亚洲图片| 亚洲女同女同女同女同女同69| 91亚洲视频在线观看| 北条麻妃一区二区三区中文字幕| 992tv国产精品成人影院| 视频一区二区三区免费观看| 日本视频一区二区三区| 长河落日免费高清观看| 欧美天堂一区二区三区| 老司机在线看片网av| 亚洲综合第一页| 欧美婷婷在线| 亚洲自拍偷拍精品| 色综合中文字幕国产| av在线电影院| 成人av番号网| 欧美精品一区二区三区久久久竹菊| 韩国三级在线播放| 亚洲成人动漫av| 欧美日韩影视| 国产精品r级在线| 婷婷综合伊人| 久久免费精品国产| 色欧美乱欧美15图片| 久色视频在线| 国产在线视频一区| 欧美日韩1区2区3区| 粉嫩av懂色av蜜臀av分享| 91高清视频在线| 麻豆视频免费在线观看| 成人羞羞视频免费| 久久成人亚洲| 粉嫩av性色av蜜臀av网站| 精品久久久久一区| 精品欧美一区二区三区在线观看| 亚洲欧洲一区二区| 国产91精品免费| 少妇太紧太爽又黄又硬又爽| 自拍偷拍亚洲区| 成人av影音| 日韩精品免费播放| 亚洲黄色在线视频| 九色在线播放| 5566av亚洲| 久久久xxx| 欧美日韩偷拍视频| 亚洲男女自偷自拍图片另类| 国产精品一级在线观看| 国产中文字幕免费观看| 亚洲男同性恋视频| 亚洲欧美色视频| 亚洲精品免费av| 免费在线播放第一区高清av| 久久免费看少妇高潮v片特黄| 日韩精品视频中文在线观看 | 青青草原综合久久大伊人精品优势 | 欧美日韩精品一区二区视频| 欧美污在线观看| 色吊一区二区三区| missav|免费高清av在线看| 亚洲一二区在线| 91免费小视频| 亚洲精品久久久久久久久久久久久久 |