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

Linux高性能網絡編程之TCP連接的內存使用

運維 系統運維
當服務器的并發TCP連接數以十萬計時,我們就會對一個TCP連接在操作系統內核上消耗的內存多少感興趣。socket編程方法提供了SO_SNDBUF、SO_RCVBUF這樣的接口來設置連接的讀寫緩存,linux上還提供了以下系統級的配置來整體設置服務器上的TCP內存使用,但這些配置看名字卻有些互相沖突、概念模糊的感覺。

當服務器的并發TCP連接數以十萬計時,我們就會對一個TCP連接在操作系統內核上消耗的內存多少感興趣。socket編程方法提供了SO_SNDBUF、SO_RCVBUF這樣的接口來設置連接的讀寫緩存,linux上還提供了以下系統級的配置來整體設置服務器上的TCP內存使用,但這些配置看名字卻有些互相沖突、概念模糊的感覺,如下(sysctl -a命令可以查看這些配置):

 

  1. net.ipv4.tcp_rmem = 8192 87380 16777216  
  2. net.ipv4.tcp_wmem = 8192 65536 16777216  
  3. net.ipv4.tcp_mem = 8388608 12582912 16777216  
  4. net.core.rmem_default = 262144  
  5. net.core.wmem_default = 262144  
  6. net.core.rmem_max = 16777216  
  7. net.core.wmem_max = 16777216 

還有一些較少被提及的、也跟TCP內存相關的配置:

  1. net.ipv4.tcp_moderate_rcvbuf = 1net.ipv4.tcp_adv_win_scale = 2 

(注:為方便下文講述,介紹以上系統配置時前綴省略掉,配置值以空格分隔的多個數字以數組來稱呼,例如tcp_rmem[2]表示上面第一行最后一列16777216。)

網上可以找到很多這些系統配置項的說明,然而往往還是讓人費解,例如,tcp_rmem[2]和rmem_max似乎都跟接收緩存最大值有關,但它們卻可以不一致,究竟有什么區別?或者tcp_wmem[1]和wmem_default似乎都表示發送緩存的默認值,沖突了怎么辦?在用抓包軟件抓到的syn握手包里,為什么TCP接收窗口大小似乎與這些配置完全沒關系?

TCP連接在進程中使用的內存大小千變萬化,通常程序較復雜時可能不是直接基于socket編程,這時平臺級的組件可能就封裝了TCP連接使用到的用戶態內存。不同的平臺、組件、中間件、網絡庫都大不相同。而內核態為TCP連接分配內存的算法則是基本不變的,這篇文章將試圖說明TCP連接在內核態中會使用多少內存,操作系統使用怎樣的策略來平衡宏觀的吞吐量與微觀的某個連接傳輸速度。這篇文章也將一如既往的面向應用程序開發者,而不是系統級的內核開發者,所以,不會詳細的介紹為了一個TCP連接、一個TCP報文操作系統分配了多少字節的內存,內核級的數據結構也不是本文的關注點,這些也不是應用級程序員的關注點。這篇文章主要描述linux內核為了TCP連接上傳輸的數據是怎樣管理讀寫緩存的。

一、緩存上限是什么?

(1)先從應用程序編程時可以設置的SO_SNDBUF、SO_RCVBUF說起。

無論何種語言,都對TCP連接提供基于setsockopt方法實現的SO_SNDBUF、SO_RCVBUF,怎么理解這兩個屬性的意義呢?

SO_SNDBUF、SO_RCVBUF都是個體化的設置,即,只會影響到設置過的連接,而不會對其他連接生效。SO_SNDBUF表示這個連接上的內核寫緩存上限。實際上,進程設置的SO_SNDBUF也并不是真的上限,在內核中會把這個值翻一倍再作為寫緩存上限使用,我們不需要糾結這種細節,只需要知道,當設置了SO_SNDBUF時,就相當于劃定了所操作的TCP連接上的寫緩存能夠使用的最大內存。然而,這個值也不是可以由著進程隨意設置的,它會受制于系統級的上下限,當它大于上面的系統配置wmem_max(net.core.wmem_max)時,將會被wmem_max替代(同樣翻一倍);而當它特別小時,例如在2.6.18內核中設計的寫緩存最小值為2K字節,此時也會被直接替代為2K。

SO_RCVBUF表示連接上的讀緩存上限,與SO_SNDBUF類似,它也受制于rmem_max配置項,實際在內核中也是2倍大小作為讀緩存的使用上限。SO_RCVBUF設置時也有下限,同樣在2.6.18內核中若這個值小于256字節就會被256所替代。

(2)那么,可以設置的SO_SNDBUF、SO_RCVBUF緩存使用上限與實際內存到底有怎樣的關系呢?

TCP連接所用內存主要由讀寫緩存決定,而讀寫緩存的大小只與實際使用場景有關,在實際使用未達到上限時,SO_SNDBUF、SO_RCVBUF是不起任何作用的。對讀緩存來說,接收到一個來自連接對端的TCP報文時,會導致讀緩存增加,當然,如果加上報文大小后讀緩存已經超過了讀緩存上限,那么這個報文會被丟棄從而讀緩存大小維持不變。什么時候讀緩存使用的內存會減少呢?當進程調用read、recv這樣的方法讀取TCP流時,讀緩存就會減少。因此,讀緩存是一個動態變化的、實際用到多少才分配多少的緩沖內存,當這個連接非常空閑時,且用戶進程已經把連接上接收到的數據都消費了,那么讀緩存使用內存就是0。

寫緩存也是同樣道理。當用戶進程調用send或者write這樣的方法發送TCP流時,就會造成寫緩存增大。當然,如果寫緩存已經到達上限,那么寫緩存維持不變,向用戶進程返回失敗。而每當接收到TCP連接對端發來的ACK確認了報文的成功發送時,寫緩存就會減少,這是因為TCP的可靠性決定的,發出去報文后由于擔心報文丟失而不會銷毀它,可能會由重發定時器來重發報文。因此,寫緩存也是動態變化的,空閑的正常連接上,寫緩存所用內存通常也為0。

因此,只有當接收網絡報文的速度大于應用程序讀取報文的速度時,可能使讀緩存達到了上限,這時這個緩存使用上限才會起作用。所起作用為:丟棄掉新收到的報文,防止這個TCP連接消耗太多的服務器資源。同樣,當應用程序發送報文的速度大于接收對方確認ACK報文的速度時,寫緩存可能達到上限,從而使send這樣的方法失敗,內核不為其分配內存。

二、緩存的大小與TCP的滑動窗口到底有什么關系?

(1)滑動窗口的大小與緩存大小肯定是有關的,但卻不是一一對應的關系,更不會與緩存上限具有一一對應的關系。因此,網上很多資料介紹rmem_max等配置設置了滑動窗口的最大值,與我們tcpdump抓包時看到的win窗口值完全不一致,是講得通的。下面我們來細探其分別在哪里。

讀緩存的作用有2個:1、將無序的、落在接收滑動窗口內的TCP報文緩存起來;2、當有序的、可以供應用程序讀取的報文出現時,由于應用程序的讀取是延時的,所以會把待應用程序讀取的報文也保存在讀緩存中。所以,讀緩存一分為二,一部分緩存無序報文,一部分緩存待延時讀取的有序報文。這兩部分緩存大小之和由于受制于同一個上限值,所以它們是會互相影響的,當應用程序讀取速率過慢時,這塊過大的應用緩存將會影響到套接字緩存,使接收滑動窗口縮小,從而通知連接的對端降低發送速度,避免無謂的網絡傳輸。當應用程序長時間不讀取數據,造成應用緩存將套接字緩存擠壓到沒空間,那么連接對端會收到接收窗口為0的通知,告訴對方:我現在消化不了更多的報文了。

反之,接收滑動窗口也是一直在變化的,我們用tcpdump抓三次握手的報文:

  1. 14:49:52.421674 IP houyi-vm02.dev.sd.aliyun.com.6400 > r14a02001.dg.tbsite.net.54073: S 2736789705:2736789705(0) ack 1609024383 win 5792 <mss 1460,sackOK,timestamp 2925954240 2940689794,nop,wscale 9> 

可以看到初始的接收窗口是5792,當然也遠小于最大接收緩存(稍后介紹的tcp_rmem[1])。

這當然是有原因的,TCP協議需要考慮復雜的網絡環境,所以使用了慢啟動、擁塞窗口(參見 高性能網絡編程2----TCP消息的發送 ),建立連接時的初始窗口并不會按照接收緩存的最大值來初始化。這是因為,過大的初始窗口從宏觀角度,對整個網絡可能造成過載引發惡性循環,也就是考慮到鏈路上各環節的諸多路由器、交換機可能扛不住壓力不斷的丟包(特別是廣域網),而微觀的TCP連接的雙方卻只按照自己的讀緩存上限作為接收窗口,這樣雙方的發送窗口(對方的接收窗口)越大就對網絡產生越壞的影響。慢啟動就是使初始窗口盡量的小,隨著接收到對方的有效報文,確認了網絡的有效傳輸能力后,才開始增大接收窗口。

不同的linux內核有著不同的初始窗口,我們以廣為使用的linux2.6.18內核為例,在以太網里,MSS大小為1460,此時初始窗口大小為4倍的MSS,簡單列下代碼(*rcv_wnd即初始接收窗口):

 

  1. int init_cwnd = 4; 
  2.  if (mss > 1460*3) 
  3.   init_cwnd = 2; 
  4.  else if (mss > 1460) 
  5.   init_cwnd = 3; 
  6.  if (*rcv_wnd > init_cwnd*mss) 
  7.   *rcv_wnd = init_cwnd*mss; 

大家可能要問,為何上面的抓包上顯示窗口其實是5792,并不是1460*4為5840呢?這是因為1460想表達的意義是:將1500字節的MTU去除了20字節的IP頭、20字節的TCP頭以后,一個最大報文能夠承載的有效數據長度。但有些網絡中,會在TCP的可選頭部里,使用12字節作為時間戳使用,這樣,有效數據就是MSS再減去12,初始窗口就是(1460-12)*4=5792,這與窗口想表達的含義是一致的,即:我能夠處理的有效數據長度。

在linux3以后的版本中,初始窗口調整到了10個MSS大小,這主要來自于GOOGLE的建議。原因是這樣的,接收窗口雖然常以指數方式來快速增加窗口大小(擁塞閥值以下是指數增長的,閥值以上進入擁塞避免階段則為線性增長,而且,擁塞閥值自身在收到128以上數據報文時也有機會快速增加),若是傳輸視頻這樣的大數據,那么隨著窗口增加到(接近)最大讀緩存后,就會“開足馬力”傳輸數據,但若是通常都是幾十KB的網頁,那么過小的初始窗口還沒有增加到合適的窗口時,連接就結束了。這樣相比較大的初始窗口,就使得用戶需要更多的時間(RTT)才能傳輸完數據,體驗不好。

那么這時大家可能有疑問,當窗口從初始窗口一路擴張到最大接收窗口時,最大接收窗口就是最大讀緩存嗎?

不是,因為必須分一部分緩存用于應用程序的延時報文讀取。到底會分多少出來呢?這是可配的系統選項,如下:

  1. net.ipv4.tcp_adv_win_scale = 2 

這里的 tcp_adv_win_scale意味著,將要拿出1/(2^ tcp_adv_win_scale )緩存出來做應用緩存。即,默認 tcp_adv_win_scale配置為2時,就是拿出至少1/4的內存用于應用讀緩存,那么,最大的接收滑動窗口的大小只能到達讀緩存的3/4。

(2)最大讀緩存到底應該設置到多少為合適呢?

當應用緩存所占的份額通過tcp_adv_win_scale配置確定后,讀緩存的上限應當由最大的TCP接收窗口決定。初始窗口可能只有4個或者10個MSS,但在無丟包情形下隨著報文的交互窗口就會增大,當窗口過大時,“過大”是什么意思呢?即,對于通訊的兩臺機器的內存而言不算大,但是對于整個網絡負載來說過大了,就會對網絡設備引發惡性循環,不斷的因為繁忙的網絡設備造成丟包。而窗口過小時,就無法充分的利用網絡資源。所以,一般會以BDP來設置最大接收窗口(可計算出最大讀緩存)。BDP叫做帶寬時延積,也就是帶寬與網絡時延的乘積,例如若我們的帶寬為2Gbps,時延為10ms,那么帶寬時延積BDP則為2G/8*0.01=2.5MB,所以這樣的網絡中可以設最大接收窗口為2.5MB,這樣最大讀緩存可以設為4/3*2.5MB=3.3MB。

為什么呢?因為BDP就表示了網絡承載能力,最大接收窗口就表示了網絡承載能力內可以不經確認發出的報文。如下圖所示:

 

linux高性能網絡編程之tcp連接的內存使用

經常提及的所謂長肥網絡,“長”就是是時延長,“肥”就是帶寬大,這兩者任何一個大時,BDP就大,都應導致最大窗口增大,進而導致讀緩存上限增大。所以在長肥網絡中的服務器,緩存上限都是比較大的。(當然,TCP原始的16位長度的數字表示窗口雖然有上限,但在RFC1323中定義的彈性滑動窗口使得滑動窗口可以擴展到足夠大。)

發送窗口實際上就是TCP連接對方的接收窗口,所以大家可以按接收窗口來推斷,這里不再啰嗦。

三、linux的TCP緩存上限自動調整策略

那么,設置好最大緩存限制后就高枕無憂了嗎?對于一個TCP連接來說,可能已經充分利用網絡資源,使用大窗口、大緩存來保持高速傳輸了。比如在長肥網絡中,緩存上限可能會被設置為幾十兆字節,但系統的總內存卻是有限的,當每一個連接都全速飛奔使用到最大窗口時,1萬個連接就會占用內存到幾百G了,這就限制了高并發場景的使用,公平性也得不到保證。我們希望的場景是,在并發連接比較少時,把緩存限制放大一些,讓每一個TCP連接開足馬力工作;當并發連接很多時,此時系統內存資源不足,那么就把緩存限制縮小一些,使每一個TCP連接的緩存盡量的小一些,以容納更多的連接。

linux為了實現這種場景,引入了自動調整內存分配的功能,由tcp_moderate_rcvbuf配置決定,如下:

  1. net.ipv4.tcp_moderate_rcvbuf = 1 

默認tcp_moderate_rcvbuf配置為1,表示打開了TCP內存自動調整功能。若配置為0,這個功能將不會生效(慎用)。

另外請注意:當我們在編程中對連接設置了SO_SNDBUF、SO_RCVBUF,將會使linux內核不再對這樣的連接執行自動調整功能!

那么,這個功能到底是怎樣起作用的呢?看以下配置:

 

  1. net.ipv4.tcp_rmem = 8192 87380 16777216 
  2. net.ipv4.tcp_wmem = 8192 65536 16777216 
  3. net.ipv4.tcp_mem = 8388608 12582912 16777216 

tcp_rmem[3]數組表示任何一個TCP連接上的讀緩存上限,其中 tcp_rmem[0]表示最小上限, tcp_rmem[1]表示初始上限(注意,它會覆蓋適用于所有協議的rmem_default配置), tcp_rmem[2]表示最大上限。

tcp_wmem[3]數組表示寫緩存,與tcp_rmem[3]類似,不再贅述。

tcp_mem[3]數組就用來設定TCP內存的整體使用狀況,所以它的值很大(它的單位也不是字節,而是頁--4K或者8K等這樣的單位!)。這3個值定義了TCP整體內存的無壓力值、壓力模式開啟閥值、最大使用值。以這3個值為標記點則內存共有4種情況:

1、當TCP整體內存小于tcp_mem[0]時,表示系統內存總體無壓力。若之前內存曾經超過了tcp_mem[1]使系統進入內存壓力模式,那么此時也會把壓力模式關閉。

這種情況下,只要TCP連接使用的緩存沒有達到上限(注意,雖然初始上限是tcp_rmem[1],但這個值是可變的,下文會詳述),那么新內存的分配一定是成功的。

2、當TCP內存在tcp_mem[0]與tcp_mem[1]之間時,系統可能處于內存壓力模式,例如總內存剛從tcp_mem[1]之上下來;也可能是在非壓力模式下,例如總內存剛從tcp_mem[0]以下上來。

此時,無論是否在壓力模式下,只要TCP連接所用緩存未超過tcp_rmem[0]或者tcp_wmem[0],那么都一定都能成功分配新內存。否則,基本上就會面臨分配失敗的狀況。(注意:還有一些例外場景允許分配內存成功,由于對于我們理解這幾個配置項意義不大,故略過。)

3、當TCP內存在tcp_mem[1]與tcp_mem[2]之間時,系統一定處于系統壓力模式下。其他行為與上同。

4、當TCP內存在tcp_mem[2]之上時,毫無疑問,系統一定在壓力模式下,而且此時所有的新TCP緩存分配都會失敗。

下圖為需要新緩存時內核的簡化邏輯:

 

linux高性能網絡編程之tcp連接的內存使用

當系統在非壓力模式下,上面我所說的每個連接的讀寫緩存上限,才有可能增加,當然最大也不會超過tcp_rmem[2]或者tcp_wmem[2]。相反,在壓力模式下,讀寫緩存上限則有可能減少,雖然上限可能會小于tcp_rmem[0]或者tcp_wmem[0]。

所以,粗略的總結下,對這3個數組可以這么看:

  1. 只要系統TCP的總體內存超了 tcp_mem[2] ,新內存分配都會失敗。
  2. tcp_rmem[0]或者tcp_wmem[0]優先級也很高,只要條件1不超限,那么只要連接內存小于這兩個值,就保證新內存分配一定成功。
  3. 只要總體內存不超過tcp_mem[0],那么新內存在不超過連接緩存的上限時也能保證分配成功。
  4. tcp_mem[1]與tcp_mem[0]構成了開啟、關閉內存壓力模式的開關。在壓力模式下,連接緩存上限可能會減少。在非壓力模式下,連接緩存上限可能會增加,最多增加到tcp_rmem[2]或者tcp_wmem[2]。

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2023-11-01 11:51:08

Linux性能優化

2023-11-01 10:43:31

Linux高性能網絡編程

2024-03-18 13:43:20

Linux架構

2023-11-01 11:59:13

2023-11-01 10:38:46

Linux高性能網絡編程

2015-04-24 09:48:59

TCPsocketsocket編程

2015-03-20 09:54:44

網絡編程面向連接無連接

2023-11-01 11:27:10

Linux協程

2023-11-01 11:40:46

Linux高性能網絡編程工具

2023-11-01 10:58:31

系統調用高性能網絡編程Linux

2024-10-06 14:37:52

2024-08-06 08:22:18

2024-09-03 09:15:37

2024-10-16 11:03:30

Linux高性能編程

2023-11-01 11:07:05

Linux高性能網絡編程線程

2025-06-26 01:27:00

2023-11-01 11:20:57

2023-11-01 11:13:58

Linux信號處理定時器

2019-11-08 14:47:49

TCPIP網絡

2021-03-17 09:51:31

網絡編程TCP網絡協議
點贊
收藏

51CTO技術棧公眾號

国产成人精品影院| 欧美一区久久| 欧美日韩一二三区| 99久re热视频精品98| 免费观看的毛片| 欧美一级视频| 综合亚洲深深色噜噜狠狠网站| 亚洲一区二区久久久久久久| 日本三级2019| 日韩精品久久| 亚洲精品理论电影| 中国黄色片一级| 日韩欧美一中文字暮专区| 国产日韩欧美一区二区三区综合| 亚洲在线第一页| 精品无码一区二区三区的天堂| 午夜免费一区| 亚洲三级 欧美三级| 美女被艹视频网站| 成人1区2区| 五月天国产精品| 欧美一级黄色录像片| 激情综合闲人网| 成人午夜电影小说| 成人国产精品日本在线| 国产又粗又爽视频| 激情欧美日韩一区| y97精品国产97久久久久久| 国产精品秘入口18禁麻豆免会员| av免费观看一区二区| 99久久99久久综合| 97在线电影| 国产人妖一区二区三区| 日韩二区三区四区| 欧美亚洲一级片| 黄色小说在线观看视频| 91成人超碰| 少妇久久久久久| av网站免费在线看| 中国av一区| 亚洲美女www午夜| 男人网站在线观看| 日韩视频在线直播| 欧美一区日本一区韩国一区| 国产三级生活片| 懂色aⅴ精品一区二区三区| 色综合视频在线观看| 91视频最新入口| 亚洲精品mv| 色天天综合久久久久综合片| 国产综合免费视频| 国模冰冰炮一区二区| 久久精品首页| 国产日韩欧美麻豆| 欧美高清性xxxxhdvideosex| 五月天婷婷在线播放| 成人一道本在线| 国产精品一区二区三区在线| 免费a视频在线观看| 成人深夜在线观看| 好吊色欧美一区二区三区| 亚洲精品一区二区三区区别 | 久久久久久97三级| 久久精精品视频| 麻豆导航在线观看| 国产三区在线成人av| 亚洲成人在线视频网站| 夜级特黄日本大片_在线 | 免费人成视频在线| 在线日韩电影| 庆余年2免费日韩剧观看大牛| youjizz在线视频| 日本亚洲最大的色成网站www| 国产精品人人做人人爽| 国产精品日韩欧美一区二区三区| 亚洲一区二区三区四区在线播放| 在线观看免费黄色小视频| 久久精品国产秦先生| 91亚洲精品一区二区| 亚洲AV午夜精品| 91啪亚洲精品| 亚洲成色最大综合在线| 国产色在线观看| 五月激情综合网| 亚洲 欧美 日韩系列| 亚洲精品乱码日韩| 欧美成va人片在线观看| 国产三级国产精品| 久久一本综合| 久久青草福利网站| 99久久久无码国产精品免费蜜柚 | 欧美资源在线观看| 中文字幕无线码一区| 国产精品一品二品| 久久久综合亚洲91久久98| 在线免费观看黄色网址| 亚洲国产中文字幕| 网站一区二区三区| www.亚洲一二| 中文字幕精品一区久久久久| 国产真人真事毛片| 免播放器亚洲一区| 精品国产免费久久久久久尖叫| 在线免费观看的av网站| 亚洲国产视频一区二区| 9久久婷婷国产综合精品性色| 永久免费精品视频| 在线精品国产成人综合| 国产精品9191| 精品亚洲aⅴ乱码一区二区三区| 国产一区二区免费电影| 免费网站成人| 日本二三区不卡| 国产xxx在线观看| 欧美自拍视频| 欧美日韩福利在线观看| 中文字幕人成人乱码亚洲电影| 99久久婷婷国产综合精品| 一区二区视频在线观看| 性中国xxx极品hd| 欧美激情一区二区三区全黄| 久色视频在线播放| 精品国产第一国产综合精品| 一区二区三区 在线观看视| 国产精品99精品| 国产黑丝在线一区二区三区| 亚洲精品久久久久久一区二区| 日韩伦理在线一区| 亚洲成人黄色在线观看| wwwav国产| 国内精品伊人久久久久av影院| 日本一区二区三区视频免费看| а√天堂8资源中文在线| 日韩网站在线看片你懂的| 日韩精品一区二区三区在线视频| 日日夜夜精品视频免费| 国产精品日本一区二区| 蜜臀av在线| 欧美一区二区三区视频在线| 成人黄色短视频| 丝袜诱惑亚洲看片| 国产综合欧美在线看| 国产一级片在线| 色94色欧美sute亚洲线路一ni | 欧美成人精品激情在线观看| 中文字幕人妻一区二区在线视频| 久久九九99视频| 欧美aⅴ在线观看| 神马日本精品| 91成人免费观看网站| 天堂在线视频观看| 天天影视涩香欲综合网| 日本wwwxx| 欧美精品aa| 高清免费日韩| 国产精品电影| 亚洲欧美激情视频| 人人草在线观看| 国产午夜精品一区二区三区视频| 日韩欧美精品在线观看视频| 五月天亚洲色图| 国产成人精品久久久| 国产在线视频网址| 欧美三电影在线| fc2ppv在线播放| 国产精品911| 国产男女免费视频| 小说区图片区色综合区| 国产精品av在线播放| yw在线观看| 91精品国产综合久久久久久| 青青草成人免费| www.欧美.com| 男人女人黄一级| 夜间精品视频| 国产伦一区二区三区色一情| 一级毛片久久久| 中文字幕亚洲自拍| av网站免费大全| 亚洲成人免费视| 国产精品一二三区在线观看| 久久电影网电视剧免费观看| 久久久天堂国产精品| 免费萌白酱国产一区二区三区| 庆余年2免费日韩剧观看大牛| 午夜小视频在线| 欧美大胆人体bbbb| 日韩在线 中文字幕| 国产精品久99| 妖精视频一区二区| 免费人成在线不卡| 久久99久久久久久| 国内成人自拍| 91免费版网站在线观看| 亚洲少妇视频| 久久天天躁狠狠躁夜夜躁2014| 黄色福利在线观看| 欧美熟乱第一页| 久久久久久久久久久97| 久久蜜臀精品av| 制服下的诱惑暮生| 久久人人97超碰国产公开结果| 日本一区二区免费高清视频| 日韩欧美影院| 91一区二区三区| 韩日一区二区| 亚洲**2019国产| 精品51国产黑色丝袜高跟鞋| 日韩电影网在线| www.xxxx国产| 欧美午夜在线一二页| 日韩手机在线观看| 亚洲女同女同女同女同女同69| 香蕉网在线播放| 国产成人av一区二区三区在线观看| 日韩精品一区二区三区色欲av| 欧美黄色免费| 一本—道久久a久久精品蜜桃| 四虎影视精品| 国产欧美日韩综合一区在线观看| 91成人短视频在线观看| 欧日韩不卡在线视频| 波多野结衣精品| 久久国产精品久久国产精品| yw193.com尤物在线| 亚洲欧美日韩国产成人| 手机av免费在线观看| 日韩欧美你懂的| 国产又黄又大又粗的视频| 色婷婷一区二区三区四区| 中文字幕一区二区三区手机版| ㊣最新国产の精品bt伙计久久| 日本一级免费视频| 2021久久国产精品不只是精品| 欧美激情 亚洲| 国产91在线观看丝袜| 成人在线短视频| 国产做a爰片久久毛片| 欧美三级午夜理伦三级富婆| 久久婷婷久久| 免费大片在线观看| 欧美一级久久| 欧美精品成人网| 午夜在线播放视频欧美| 男人揉女人奶房视频60分| 尤物在线精品| 2018日日夜夜| 国产亚洲在线| 国产91美女视频| 久久一区激情| 青青青国产在线视频| 老牛影视一区二区三区| 粉嫩虎白女毛片人体| 爽好多水快深点欧美视频| av免费在线播放网站| 久久久水蜜桃av免费网站| 日本一区二区黄色| 制服诱惑一区二区| 精品www久久久久奶水| 免费视频一区| 日韩一级片播放| 另类成人小视频在线| 99久久99精品| 国产精品一区二区三区四区| 中国xxxx性xxxx产国| 99精品视频在线播放观看| 人人妻人人澡人人爽人人精品| 成人午夜短视频| caopeng视频| 中文字幕一区日韩精品欧美| 欧美卡一卡二卡三| 亚洲18女电影在线观看| 亚洲 欧美 日韩 在线| 欧美亚洲高清一区二区三区不卡| 一级黄色短视频| 精品成人佐山爱一区二区| 欧美另类自拍| 久久精品视频在线观看| 污片在线免费观看| 欧美在线视频a| crdy在线观看欧美| 国产精品一区二区三区在线 | 国产乱人伦精品一区二区三区| 激情一区二区| 亚洲免费av一区二区三区| 国产乱人伦偷精品视频免下载 | 国产av一区二区三区| 精品国产乱码久久久久久闺蜜| 可以在线观看的黄色| 中文字幕在线观看亚洲| 国产精品一区hongkong| 国产精品国语对白| 亚洲精品观看| 天天人人精品| 激情欧美一区| 国产成人黄色网址| 懂色av一区二区夜夜嗨| 日韩人妻无码一区二区三区| 亚洲日本在线看| 久久久国产精品成人免费| 91精品麻豆日日躁夜夜躁| 天堂网2014av| 久久av在线播放| 日本不卡一二三| 国产不卡一区二区在线观看 | 久久亚洲春色中文字幕久久久| 国产人与禽zoz0性伦| 欧美日韩国产在线看| 国产精品视频在线观看免费| 亚洲免费视频网站| 日本资源在线| 国产日韩在线看片| 亚洲自拍电影| 亚洲不卡中文字幕无码| 国产激情一区二区三区| 国精产品视频一二二区| 欧美视频一二三| 亚洲精品无遮挡| 欧美成人精品一区| 国外成人福利视频| 欧美重口乱码一区二区| 激情视频一区二区三区| 亚洲三级在线视频| 亚洲欧洲成人自拍| 国产成人精品亚洲| 日韩精品视频在线| 91福利区在线观看| 51精品国产人成在线观看| 久久影院一区| av网站在线不卡| 国产视频一区二区在线观看| 国产小视频在线免费观看| 亚洲精品久久久久久久久久久| 动漫一区在线| 91精品国产自产在线| 日韩精品一区二区三区免费观看| 激情五月开心婷婷| 2020国产精品| 在线天堂中文字幕| 亚洲激情视频在线| 1区2区在线| 国产一区免费视频| 一区二区三区国产盗摄| 美女黄色一级视频| 天天色天天操综合| 婷婷在线免费观看| 91高潮精品免费porn| 欧美高清视频看片在线观看 | 中文字幕影音先锋| 91精选在线观看| 国产激情在线| 91黄色精品| 激情欧美日韩| 久久国产精品无码一级毛片| 欧美性猛交xxxx乱大交3| 欧美美女色图| 国产成人精品一区二区| 日韩欧美大片| 激情文学亚洲色图| 亚洲免费观看高清| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 精品少妇一区二区30p| 高清日韩中文字幕| 国产精品沙发午睡系列| 久久久美女艺术照精彩视频福利播放| 欧产日产国产69| 色偷偷88888欧美精品久久久| 亚洲精品成a人ⅴ香蕉片| 日本aa在线观看| 99久久综合色| 亚洲综合网av| 九九精品在线播放| 日韩极品在线| 一区二区三区 日韩| 亚洲精品久久久蜜桃| 色婷婷在线视频| 国产精品高清在线观看| 888久久久| 免费看黄色aaaaaa 片| 欧美在线视频不卡| 天堂av最新在线| 久久精品国产综合精品| 蜜桃视频一区二区三区| 久草视频在线资源站| 亚洲精品日韩在线| 亚洲精品aa| 免费在线观看毛片网站| 国产精品久久久久三级| 丁香花免费高清完整在线播放 | 久久久精品一品道一区| 91中文字幕在线视频| 欧美精品激情blacked18| 你懂的视频欧美| 亚洲一区二区三区三州| 一本高清dvd不卡在线观看| 国产成人无吗| 欧洲一区二区在线观看| 国产精一品亚洲二区在线视频| 国产精品100| 伦理中文字幕亚洲|