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

接收一個網絡包到底會用到多少個隊列?

網絡 通信技術
什么情況下會出現accpet socket沒有被用戶態進程讀取呢?比如work thread通過read()讀取到一段數據后便開始直接處理這段數據而耽擱了下一段數據的讀取。

今天這篇文章,主要嘗試回答下面兩個問題:

  • 內核從網卡那里收到一個網絡包,到最終將其所攜帶的payload完整遞交給應用層,中間涉及到多少個隊列?
  • 為什么需要這么多各種各樣的隊列呢?

來吧,進入正題。

1. 大圖介紹

照例,先來介紹一下為本文所準備的大圖。這張圖是在之前的文章用圖之上修改而來,主要是添加了在TCP層所涉及到的隊列。據說這叫重復利用。

這張圖用來描繪內核從物理網卡以及虛擬網卡接收到網絡包之后的數據流。

估計你注意到了圖中的 1(1.a、1.b),2(2.a、2.b、2.c),3 這樣的標號。對內核而言,1和2是網絡包的接收入口,而3是網絡包的處理入口。

具體來說,1和2表示線路1和線路2,它倆分別代表網絡包從物理網卡進入內核以及從虛擬網卡進入內核所涉及到的一些關鍵操作。標號3表示的是內核線程從這個入口位置獲取待處理網絡設備。

圖中最右邊是TCP/IP協議棧。對于一個skb而言,協議棧對其的處理是在內核線程這個上下文中進行的。了解到這點很重要,我們總得知道到底是誰在替我們負重前行。

圖中的藍色寬箭頭表示網絡包流向用戶態的數據通道。但箭頭在TCP層由實心變成了空心,這是因為對于不同類型的網路包,用戶態所拿到的數據是不一樣的。在TCP層之下的所有層,大家處理的數據結構都是skb。而到了TCP層則需要關心這個skb到底是與握手相關還是與數據包相關。

如你所料,skb穿過鏈路層和IP層的時候,會涉及到bridge-netfilter和netfilter(iptables)所設置的基于規則的過濾過程,還有路由過程。

圖 1:數據接收流程中的隊列鳥瞰圖

我們從左到右,從下至上,順著網絡包流過的路徑,看看沿途中會碰到哪些隊列。

我們說Network namespace用來隔離包括網卡(Network Interface)、回環設備(Loopback Device)、網絡棧、IP地址、端口等等在內的網絡資源。下文所提的各類隊列也是這樣一種被隔離了的資源,所以圖1中所畫的所有這些隊列在不同的network ns中都各有一份。

2. RingBuffer

每個網卡在內存里會有若干個隊列,每個這樣的隊列叫做RingBuffer。顧名思義,它是一個環形緩沖區。當物理網卡收到網絡包,會通過DMA將其拷貝到RingBuffer。當RingBuffer滿的時候,新來的數據包將給丟棄。

這是網絡包碰到的第一個隊列。那么誰負責將這個隊列里面的網絡包消費掉呢?答案是內核線程,也即圖中的ksoftirqd。詳見后文。

3. Per CPU 隊列

每個CPU有一個自己專屬的數據結構softnet_data。其上附有兩個隊列poll_list和input_pkt_queue。這兩個隊列里的內容都由ksoftirqd來消費。圖1中所標示的ksoftirqd/4表示這個內核線程與第4個CPU核綁定在一起,也即它只會處理這個核所擁有的softnet_data上的數據。

3.1 input_pkt_queue

物理網卡由RingBuffer來緩存網絡包,那虛擬網卡要發送出去的數據暫存在哪里呢?如圖1中2.a所示,放在input_pkt_queue這個隊列里。這個過程是在函數enqueue_to_backlog()中完成的。

3.2 poll_list

所有的待處理的網卡會掛到每個CPU專屬的poll_list上。我們可以將poll_list想象成晾曬香腸的架子,而每個網絡設備則如同香腸一樣掛到架子上面等待ksoftirqd處理。

待處理的網卡包括物理網卡和虛擬網卡。簡單地來說,只要需要圖1中的內核線程處理網絡包,就需要將這個網卡掛載到poll_list隊列上。

那么這個掛載動作是由誰完成的呢?

  • 對于物理網卡,由中斷服務程序負責將網卡掛到poll_list上。如圖1中步驟1.a所示。
  • 對于虛擬網卡,如veth或者lo,則在enqueue_to_backlog()函數中將虛擬網卡掛到poll_list上。如圖1中步驟2.b所示。

到這里,我們已經碰到了三種不同的隊列了,前兩者緩存數據,而后者緩存設備列表。其中RingBuffer和input_pkt_queue隊列都用于緩存網絡包,只是一個服務的對象是物理網卡而另一個則是虛擬網卡。poll_list隊列用于緩存需要內核線程處理的設備。

無論網絡包是位于哪個隊列里,內核線程的啟動意味著網絡包開始進入TCP/IP協議棧。下面我們來看看在協議棧處理過程中用到的隊列有哪幾個。

4. listening socket所用隊列

對于服務器而言,一個典型的架構是 “監聽線程+工作線程池” 組合。下面是偽代碼。

void main(){
int listening_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

// 綁定 ip 和端口
bind(listening_socket, ...);

// 監聽
listen(listening_socket, 3 /*backlog*/);

while(accept_socket = accept(listening_socket)){
// 將accept_socket交給一個worker thread去讀取網絡數據
pthread_t worker_thread;
new_sock = malloc(sizeof(int));
*new_sock = client_sock;

// 創建一個工作線程
if( pthread_create( &worker_thread , NULL , connection_handler , (void*) new_sock) < 0)
{
return 1;
}
...
}
}

這段代碼的骨架挺簡單,主線程為listening thread,用于創建一個listening_socket,并負責基于它來接收客戶端的TCP連接。每一次客戶端與服務器的成功連接都會使得accept()函數返回一個accept_socket,listening thread還會創建一個work thread并讓它基于accept_socket與客戶端通信。

這些work thread匯聚成了一個工作線程池。當然,實際工作的代碼可不會創建無數個work thread,當已創建的work thread數量到達一個閾值后,創建動作就需要轉變成從線程池中提溜一個線程出來這樣的操作。

我將這段代碼中與本文相關的關鍵點列在這里:

  • 這段代碼完成了 “監聽線程+工作線程池” 組合這樣的骨架。
  • 監聽線程操作的socket是listening_socket。
  • 監聽線程針對listening_socket,設置了一個大小為3的backlog。
  • 工作線程操作的socket是accept_socket。

在內核中,為每個listening socket 維護了兩個隊列,它們都與連接管理相關。

  • 已經建立了連接的隊列,這些連接暫時還沒有被work thread領走。隊列里面的每個連接已經完成了三次握手,且處于ESTABLISHED狀態。這個隊列的名字叫 icsk_accept_queue,如圖1中accept_queue所示 。
  • 還沒有完全建立連接的隊列,隊列里面的每個連接還沒有完成三次握手,處于 SYN_REVD 的狀態。這個隊列也叫半連接隊列,syn queue。

示例代碼中,在調用listen()函數的時候,將backlog設置為3。它的作用其實是在控制這個icsk_accept_queue的大小。而syn queue大小則可以通過 /proc/sys/net/ipv4/tcp_max_syn_backlog配置。

服務端調用 accept() 函數,其實是從第一個隊列icsk_accept_queue中拿出一個已經完成的連接進行數據處理。如果這個隊列里是空的,那表示目前還沒有已完成握手的連接,那就把listening thread阻塞等待吧,反正它暫時也沒其它事可做。

5. accept socket所用隊列

每個accept socket包含有4種不同的隊列:backlog隊列、prequeue隊列、sk_receive_queue隊列和out_of_order_queue隊列。

其中prequeue隊列在17年后的Linux版本中已經取消了,故本文略過這個隊列。

5.1 backlog 隊列

當網絡包到達TCP,但是與之相關的accpet socket沒有被用戶態進程讀取中,那么協議棧會調用tcp_add_backlog()將這個網絡包暫存至backlog隊列中。這樣做的目的是讓內核線程可以盡快處理下一個網絡包。

什么情況下會出現accpet socket沒有被用戶態進程讀取呢?比如work thread通過read()讀取到一段數據后便開始直接處理這段數據而耽擱了下一段數據的讀取。

注意這個地方的backlog隊列和前文listening socket處所提及的backlog參數是兩回事。

5.2 sk_receive_queue和out_of_order_queue隊列

當然如果work thread因為調用read()被阻塞了,表示它正在這個accpet socket上急切地等待數據的到來,這個時候協議棧就會把網絡包優先通過函數skb_copy_datagram_msg()直接給它了。但work thread處理能力也有限度,一直給它喂數據也會噎死它,那更多的網絡包就需要sk_receive_queue隊列和out_of_order_queue隊列的幫忙了。

sk_receive_queue隊列的作用很好理解,它里面存放的是按照seq number排好序的數據。但我們都知道跨internet的傳輸會使得網絡包以亂序方式到達,這個時候就需要把這些亂序的包先放到out_of_order_queue隊列排隊了。

應用程序可以讀取到sk_receive_queue隊列和backlog隊列中的內容,但無法直接訪問out_of_order_queue隊列。為了體現這一點,二哥在圖1中特意做了處理:out_of_order_queue隊列沒有出現在通往用戶態的數據通道上。當協議棧發現out_of_order_queue隊列中的亂續包和新到的包可以拼湊成完整有序的數據流后,就將網絡包從out_of_order_queue隊列移動到sk_receive_queue隊列。

5.3 消費隊列

work thread所調用的read()函數在內核態最終通過函數tcp_recvmsg()來讀取暫存在sk_receive_queue中的數據。

每次這個sk_receive_queue隊列中的內容處理完畢后,tcp_recvmsg()還會繼續處理backlog隊列里面累積的網絡包。

6. 為什么需要隊列

行文至此,我們來回答文首的第二個問題:為什么需要這么多各種各樣的隊列呢?

答案是:效率。

把整個面向TCP連接的網絡包接收處理流程稍作總結,我們會發現重要的參與者有如下幾個:

  • 網卡,包括物理的和虛擬的網卡:負責接收網絡包。
  • 內核線程:消費網絡包,負責調用TCP/IP協議棧函數將亂序到達的網絡包整理還原成data streaming。
  • 應用程序:接收、消費data streaming。

網卡和內核線程操作的對象都是網絡包,只是各自關注的焦點不同而已。它們完成自己負責的操作任務后,需要盡快地將網絡包交給繼任者,以便抽身去處理下一個網絡包。遞交網絡包的時候,繼任者可能正在忙,你總不能在那邊傻等對吧?這個時候隊列的出現就起到了很好的緩沖作用。

比如圖1中的內核線程就是這樣,它不斷地從poll_list里面拿出需要處理的網卡并處理網卡里的網絡包。處理好的網絡包送進下文所說的幾個隊列中留待繼任者繼續處理。

我們還可以將所有這些參與者想象成制造業價值流(源于精益原則)中不同的工作中心。在這個價值流中,不同的工作中心之間通常會轉移各自的輸出(半)成品,并通過倉庫來進行一定程度的緩存,倉庫類似本文的隊列。

7. 總結

文末做一個總結。

為了可以高效地處理網絡包,同時又可以讓接收數據的各個重要組成模塊以松耦合的方式合作,各式各樣的隊列參與了網絡包的接收過程。

  • RingBuffer和input_pkt_queue最先用于緩存網卡所接收到的網絡包。
  • poll_list用于告訴內核線程,當前有哪些網絡設備正在排隊等待它的處理。
  • Server端一般用到listening socket和accept socket。

listening socket用于監聽客戶端的連接并負責生成后者,它維護了兩個隊列,分別用于緩存已經握手成功的但還沒有被工作線程領走的連接和還未完成三次握手的連接。

accept socket用于針對具體的連接進行數據通信。它用到了backlog、sk_receive_queue和out_of_order_queue這三個隊列。

文中所用高清大圖已傳至二哥的github:https://github.com/LanceHBZhang/LanceAndCloudnative。

責任編輯:武曉燕 來源: 二哥聊云原生
相關推薦

2023-09-26 16:44:14

光模塊

2020-08-04 16:56:50

Java方法參數

2023-09-04 08:08:59

2020-06-16 11:00:40

線程Java代碼

2019-01-08 09:23:16

Java字符串編碼

2024-11-06 08:49:46

2023-06-25 10:04:50

自動駕駛智能

2020-11-11 10:10:20

調用函數參數變量

2019-12-20 09:31:23

TCPHTTP瀏覽器

2019-05-29 15:17:43

TCPHTTPSSL

2019-07-09 06:13:09

TCPHTTP網絡協議

2020-12-25 13:13:22

程序員數據軟件

2013-03-06 17:27:36

僵尸網絡

2019-12-16 09:26:05

Java設計操作系統

2021-03-29 08:47:24

線程面試官線程池

2019-12-19 10:28:46

5G基站網絡

2020-07-20 15:20:44

ThreadLocalJava多線程

2019-01-02 16:31:33

程序員技術互聯網

2019-11-14 16:05:29

TCPHTTP前端

2019-01-21 16:54:24

車聯網智能手機系統iOS
點贊
收藏

51CTO技術棧公眾號

日韩中文有码在线视频| 精品露脸国产偷人在视频| 91精品国产综合久久香蕉922 | 第四色在线一区二区| 精品久久久久久中文字幕| 亚洲国产精品视频一区| 亚洲第一成年人网站| 天堂久久一区二区三区| 久久国产精品久久国产精品| 色呦呦一区二区| 日本免费一区二区三区等视频| 亚洲国产精品久久艾草纯爱| 亚洲国产精品一区二区第一页| www.国产免费| 视频在线观看国产精品| 久久91精品国产91久久跳| 色一情一交一乱一区二区三区| 高清一区二区中文字幕| 色婷婷亚洲综合| 欧美黑人在线观看| 在线a人片免费观看视频| 不卡一区在线观看| 亚洲a区在线视频| 免费看污视频的网站| 韩日成人av| 久久精品国产69国产精品亚洲| 成人免费无码大片a毛片| 久久天堂久久| 欧美三级韩国三级日本三斤| 欧美国产激情视频| 国产丝袜在线播放| 亚洲免费毛片网站| 中文字幕欧美日韩一区二区三区| 日韩电影免费| 不卡一二三区首页| 国产精品一区二区在线观看 | 希岛爱理中文字幕| 欧美日韩一区二区区别是什么 | 黄色网页在线免费看| 91玉足脚交白嫩脚丫在线播放| 51成人做爰www免费看网站| 在线视频精品免费| 久久不射中文字幕| 欧美性一区二区三区| 天堂资源在线播放| 国产在线不卡| 欧美日本亚洲视频| 日本青青草视频| 91av精品| 久久夜色精品亚洲噜噜国产mv| 国产亚洲精品精品精品| 久久成人av| 亚洲少妇中文在线| 国产一二三四五区| 国产精品中文字幕亚洲欧美| 日韩av在线网站| 国产激情第一页| 偷拍一区二区| 亚洲美女视频网站| av女人的天堂| 日本一二区不卡| 日韩亚洲综合在线| 精品无码久久久久成人漫画| 欧美日韩1区| 欧美激情中文网| 日韩三级av在线| 在线亚洲一区| 国产成人综合精品在线| 亚洲天堂视频网| 久久精品国产第一区二区三区| 国产一区二区在线播放| 国产乱码精品一区二区| 国产电影精品久久禁18| 国产在线资源一区| 天堂av在线资源| 国产日韩av一区二区| 亚洲国产一区在线| dy888亚洲精品一区二区三区| 夜夜精品视频一区二区| 日韩小视频在线播放| 三上悠亚一区二区| 欧美人动与zoxxxx乱| 性生活一级大片| 欧美人与动xxxxz0oz| 亚洲深夜福利视频| 一区二区在线观看免费视频| 亚洲三级毛片| 国产精品日韩欧美大师| h片在线免费看| 99久久99精品久久久久久| 日本一区二区三区视频免费看| 精品麻豆一区二区三区| 亚洲第一狼人社区| jizz欧美激情18| 亚洲国产精品免费视频| 亚洲精品综合精品自拍| 亚洲av无一区二区三区| 亚洲三级视频| 国产日韩中文字幕| 亚洲欧美日韩免费| 亚洲日本va午夜在线影院| 鲁一鲁一鲁一鲁一澡| 成人乱码手机视频| 亚洲欧美日韩在线高清直播| avtt天堂在线| 日韩经典中文字幕一区| 超碰97人人在线| 浮生影视网在线观看免费| 亚洲已满18点击进入久久| 成人一区二区三| xxxxxhd亚洲人hd| 日韩亚洲第一页| 亚洲va在线观看| 国产91精品欧美| 永久免费精品视频网站| 小早川怜子影音先锋在线观看| 5858s免费视频成人| xxx在线播放| 亚洲第一黄网| 97超碰人人看人人| www 日韩| 色婷婷av一区二区三区软件| 9.1在线观看免费| 忘忧草精品久久久久久久高清| 国产999精品久久久| 欧美一区二区三区成人片在线| 中文字幕综合网| 九色porny91| 亚洲资源网你懂的| ...中文天堂在线一区| 亚洲四色影视在线观看| 妺妺窝人体色www聚色窝仙踪| 男女男精品视频网| 青青影院一区二区三区四区| 美女视频在线免费| 亚洲成人黄色网| 免费日韩在线视频| 国产福利91精品一区二区三区| 五月天av影院| av日韩一区| 中文字幕亚洲激情| 中文字幕在线网址| 国产精品视频在线看| 精品国产成人av在线免| 丝袜久久网站| 欧美在线观看网址综合| 五月婷婷狠狠干| 精品国产乱码久久久久久天美 | 亚洲精品一区av| 自拍偷拍免费精品| 亚洲专区在线播放| 中文字幕一区二区三区在线观看| 自拍偷拍21p| 久久国产精品亚洲人一区二区三区 | 国产精品久久久视频| 日本欧美一区二区三区| 午夜精品一区二区在线观看 | 亚洲久久一区二区| 国产伦精品一区二区三区高清版| 俄罗斯一级**毛片在线播放| 精品少妇一区二区三区日产乱码| 久久人人爽人人爽人人| av一区二区不卡| 日本免费黄视频| 欧美欧美黄在线二区| 国产精品91一区| 在线激情免费视频| 日韩一区二区三区观看| 久久亚洲成人av| 91视频免费看| 自拍偷拍21p| 欧美亚韩一区| 欧美久久久久久| 欧美videos粗暴| 毛片精品免费在线观看| 日韩中文字幕综合| 91国偷自产一区二区使用方法| 国产精品无码无卡无需播放器| 韩国av一区二区三区| 欧美激情亚洲天堂| 免费毛片在线不卡| 91在线无精精品一区二区| jizzjizz中国精品麻豆| 亚洲日韩欧美视频| 99产精品成人啪免费网站| 精品国产31久久久久久| 狂野欧美性猛交| 成人动漫一区二区| 亚洲精品一二三四五区| 欧美日韩爆操| 日韩欧美一区二区在线观看| 欧美一级片网址| 欧美在线观看网站| 最爽无遮挡行房视频在线| 国产视频综合在线| 国产成人麻豆精品午夜在线| 日韩欧中文字幕| 精品欧美一区二区久久久久| 久久婷婷综合激情| 国产高清av片| 日韩主播视频在线| 日韩精品视频在线观看视频 | 国产一区二区三区在线视频 | 国产精品一区二区男女羞羞无遮挡| 久久精品视频在线观看| 亚洲综合20p| av不卡免费看| 妞干网这里只有精品| 精品中文字幕一区二区三区av| 亚洲在线一区二区| 视频一区在线免费看| 97超级碰碰人国产在线观看| 蜜桃视频在线观看www社区| 亚洲美女av黄| 四虎永久在线观看| 欧美一级高清大全免费观看| 波多野结衣视频在线观看| 亚洲一区二区欧美日韩| 国产一区二区精彩视频| 国产欧美一区二区精品仙草咪| 精品熟女一区二区三区| 国产精品综合久久| 国产探花在线看| 日日噜噜夜夜狠狠视频欧美人| 国产免费观看高清视频| 欧美日韩视频| 中文字幕在线亚洲三区| 欧美精品系列| 欧美日韩一区二区视频在线| 噜噜噜天天躁狠狠躁夜夜精品| 91视频免费进入| 麻豆久久久久| 国产999精品| 日韩电影免费观| 91爱视频在线| 91福利在线尤物| 久久人人爽人人爽人人片av高请 | 久久久免费观看| 尤物yw193can在线观看| 久久九九精品99国产精品| 日本亚洲精品| www.99久久热国产日韩欧美.com| 成年人视频网站在线| 国产一区二区美女视频| 黄色软件在线| 国产性色av一区二区| 国产高清视频在线播放| 亚洲香蕉av在线一区二区三区| 欧美中文在线| 亚洲精品在线观看www| 欧美精品久久久久久久久久丰满| 亚洲精品日韩丝袜精品| 青青操在线视频| 一区二区三区视频免费| 最新97超碰在线| 久久久精品2019中文字幕神马| 免费人成在线观看播放视频| 色妞欧美日韩在线| 国产秀色在线www免费观看| 久久精品国产一区二区电影| 色呦呦在线观看视频| 欧美极品少妇xxxxⅹ免费视频| 91av久久| 国产999精品久久久| 久久91视频| 亚洲综合日韩在线| 福利在线一区| 欧美精品久久久| 日韩大片在线| 男人草女人视频| 国产精品久久国产愉拍| 成人免费xxxxx在线视频| 久久精品国产秦先生| 又色又爽又黄18网站| 26uuu久久天堂性欧美| 91狠狠综合久久久久久| 亚洲视频每日更新| 日本一区二区三区免费视频| 色美美综合视频| 国产精品视频久久久久久| 精品99久久久久久| 国产三级在线| 超薄丝袜一区二区| 国产精品原创| 国产啪精品视频| 国产精品对白| 亚洲一区二区精品在线观看| 欧美视频成人| 亚洲精品高清无码视频| 男人天堂资源网| 亚洲天堂福利av| a v视频在线观看| 8v天堂国产在线一区二区| 亚洲经典一区二区三区| 亚洲人成亚洲人成在线观看| а√资源新版在线天堂| 日韩av片电影专区| 日韩精品三级| 午夜老司机精品| 亚洲日韩成人| 北条麻妃亚洲一区| 久久女同性恋中文字幕| 欧美片一区二区| 欧美无乱码久久久免费午夜一区| 亚洲国产成人精品一区二区三区| 亚洲天堂成人在线| 国产啊啊啊视频在线观看| 国产精品欧美日韩久久| 爱高潮www亚洲精品| 综合色婷婷一区二区亚洲欧美国产| 最新成人av网站| 91 视频免费观看| 国产喷白浆一区二区三区| 国产系列精品av| 91精品国产综合久久精品app| 国模吧精品人体gogo| 久久久久久高潮国产精品视| 四虎影视国产精品| 日本一区视频在线| 亚洲欧洲午夜| 岛国精品一区二区三区| 中文字幕一区二区三区不卡| 亚洲图片欧美日韩| 亚洲成在人线av| 2020国产在线视频| 成人免费视频97| 久久网站免费观看| 午夜在线观看av| 久久久久久久久久美女| 成人毛片18女人毛片| 亚洲成**性毛茸茸| 欧美人与动牲性行为| 亚洲一区久久久| 999成人网| 国产福利精品一区二区三区| 中文字幕av一区二区三区免费看| 无码人妻精品一区二区蜜桃色欲| 亚洲精品成人久久| 国产夫妻在线播放| 国产亚洲精品美女久久久m| 亚洲狠狠婷婷| 完美搭档在线观看| 亚洲18女电影在线观看| 蜜桃视频污在线观看| 欧美精品www| 国产精品chinese在线观看| 国产精品igao激情视频| 国产超碰在线一区| 国产在线视频你懂的| 亚洲激情 国产| 蜜桃视频www网站在线观看| 久久国产精品 国产精品| 老鸭窝91久久精品色噜噜导演| a级在线观看视频| 色伊人久久综合中文字幕| 精品影院一区| 国产精品嫩草影院一区二区| 日韩欧美视频专区| 99日在线视频| 一区二区视频免费在线观看| 亚洲第一天堂在线观看| 高清亚洲成在人网站天堂| 欧美挤奶吃奶水xxxxx| 日本成年人网址| 国产嫩草影院久久久久| 国产一区二区三区三州| 欧美精品免费播放| 成人动态视频| 粉嫩虎白女毛片人体| 亚洲国产精品99久久久久久久久| 亚洲图片视频小说| 久久6精品影院| 日韩av黄色在线| 色一情一乱一伦一区二区三区日本| 国产精品久久久久一区二区三区共| a毛片在线免费观看| 91av视频在线| 97精品国产福利一区二区三区| 中文在线字幕观看| 色哟哟一区二区三区| 成人在线网址| 久久国产精品99久久久久久丝袜| 免费看精品久久片| 精品亚洲永久免费| 在线免费观看羞羞视频一区二区| 在线成人免费| 国产精品333| 最近日韩中文字幕| 偷拍精品一区二区三区| 国产精品美女视频网站| 午夜激情一区| 人人爽人人爽人人片| 欧美一区二区啪啪| 在线日韩影院| 国产日产欧美一区二区| 91免费国产在线| 99热精品在线播放| 日韩女在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲区自拍偷拍|