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

黑科技解密!實(shí)現(xiàn)Socket進(jìn)程間遷移!

開(kāi)發(fā) 前端
今天介紹一個(gè)可以拿出去吹牛的功能:實(shí)現(xiàn)socket句柄在進(jìn)程之間遷移!為了這篇文章,xjjdog可算下了苦功夫,半夜還在翻資料。因?yàn)樾枰?yàn)證后,才能證明這項(xiàng)技術(shù)確實(shí)是正確的。

 [[409990]]

本文轉(zhuǎn)載自微信公眾號(hào)「小姐姐味道」,作者小姐姐養(yǎng)的狗。轉(zhuǎn)載本文請(qǐng)聯(lián)系小姐姐味道公眾號(hào)。

今天介紹一個(gè)可以拿出去吹牛的功能:實(shí)現(xiàn)socket句柄在進(jìn)程之間遷移!為了這篇文章,xjjdog可算下了苦功夫,半夜還在翻資料。因?yàn)樾枰?yàn)證后,才能證明這項(xiàng)技術(shù)確實(shí)是正確的。

正文。

我們的服務(wù)器上,運(yùn)行著大量的server實(shí)例(instance)。這些instance,每個(gè)都要承載著數(shù)十萬(wàn)的連接和非常繁忙的網(wǎng)絡(luò)請(qǐng)求。能夠把這樣的連接數(shù),這樣的流量,玩弄于股掌之間,是每個(gè)互聯(lián)網(wǎng)程序員的夢(mèng)想。

但軟件總是要升級(jí)的,每當(dāng)升級(jí)的時(shí)候,就需要先停掉原來(lái)的instance,然后再啟動(dòng)一個(gè)新的。在這一停一起之間,數(shù)十秒就過(guò)去了,更不要說(shuō)JAVA這種啟動(dòng)時(shí)間就能生個(gè)孩子的速度了。

傳統(tǒng)的做法,是先把這個(gè)instance從負(fù)載均衡上面摘除,然后啟動(dòng)起來(lái)再加上;對(duì)于微服務(wù)來(lái)說(shuō),就要先隔離,然后啟動(dòng)后再取消隔離。這些操作,對(duì)于海量應(yīng)用來(lái)說(shuō),就是個(gè)噩夢(mèng)。

1. 零停機(jī)更新

有沒(méi)有一種方法,能夠把一個(gè)進(jìn)程所掛載的連接(socket),轉(zhuǎn)移到另外一個(gè)進(jìn)程之上呢?這樣,我在升級(jí)的時(shí)候,就可可以先啟動(dòng)一個(gè)升級(jí)版本的進(jìn)程,然后把老進(jìn)程的socket,one by one的給轉(zhuǎn)移過(guò)去。

實(shí)現(xiàn)零停機(jī)更新。

這個(gè)是可以的。Facebook就實(shí)踐過(guò)類似的技術(shù),它們把這項(xiàng)技術(shù),叫做Socket Takeover。千萬(wàn)別用百度搜這個(gè)關(guān)鍵字,你得到的可能是一堆垃圾。

這么牛x的技術(shù),還這么有用,為什么就沒(méi)人科普呢?別問(wèn)我,我也不知道,可能大家現(xiàn)在都在糾結(jié)怎么研究茴香豆的茴字寫(xiě)法,沒(méi)時(shí)間干正事吧。

那今天就由xjjdog來(lái)介紹一下吧,順便增加一下大家以后的吹牛資本。

這個(gè)牛x的功能,是由Linux一對(duì)底層的系統(tǒng)調(diào)用函數(shù)所實(shí)現(xiàn)的:sendmsg()和recvmsg()。我們一般在發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的時(shí)候,一般會(huì)使用send函數(shù),但send函數(shù)只有在socket處于連接狀態(tài)時(shí)才可以使用;與之不同的是,sendmsg在任何時(shí)候都可以使用。

2. 技術(shù)要點(diǎn)

在c語(yǔ)言網(wǎng)絡(luò)編程中,首先要通過(guò)listen函數(shù),來(lái)注冊(cè)監(jiān)聽(tīng)地址,然后再用accept函數(shù)接收新連接。比如:

  1. int listen_fd = socket(addr->ss_family, SOCK_STREAM, 0); 
  2. ... 
  3. bind(listen_fd, (struct sockaddr *) addr, addrlen); 
  4. ... 
  5. int accept_fd = accept(fd, (struct sockaddr *) &addr, &addrlen); 

int accept_fd = accept(fd, (struct sockaddr *) &addr, &addrlen);

我們首先要做的,就是把listen_fd,從一個(gè)進(jìn)程,傳遞到另外一個(gè)進(jìn)程中去。怎么發(fā)送呢?肯定是要通過(guò)一個(gè)通道的。在Linux上,那就是UDS,全稱Unix Domain Sockets。

2.1 Unix Domain Sockets監(jiān)聽(tīng)

UDS(Unix Domain Sockets)在Linux上的表現(xiàn),是一個(gè)文件。相比較于普通socket監(jiān)聽(tīng)在端口上,一個(gè)進(jìn)程也可以監(jiān)聽(tīng)在一個(gè)UDS文件上,比如/tmp/xjjdog.sock。由于通過(guò)這個(gè)文件進(jìn)行數(shù)據(jù)傳輸,并不需要走網(wǎng)卡等物理設(shè)備,所以通過(guò)UDS傳輸數(shù)據(jù),速度是非常快的。

但今天我們不關(guān)心它有多塊,而是關(guān)心它多有用。通過(guò)bind函數(shù),我們同樣可以通過(guò)這個(gè)文件接收連接,就像端口接收連接一樣。

  1. struct sockaddr_un addr; 
  2. char *path="/tmp/xjjdog.sock"
  3. int err, fd; 
  4. fd = socket(AF_UNIX, SOCK_STREAM, 0); 
  5. memset(&addr, 0, sizeof(struct sockaddr_un)); 
  6. addr.sun_family = AF_UNIX; 
  7. strncpy(addr.sun_path, path, strlen(path)); 
  8. addrlen = sizeof(addr.sun_family) + strlen(path); 
  9. err = bind(fd, (struct sockaddr *) &addr, addrlen); 
  10. ... 
  11. accept_fd = accept(fd, (struct sockaddr *) &addr, &addrlen); 

這樣。其他的進(jìn)程,就可以通過(guò)兩種不同的方式,來(lái)連接我們的服務(wù)。

通過(guò)端口:進(jìn)行正常的服務(wù),輸出正常的業(yè)務(wù)數(shù)據(jù)。執(zhí)行正常業(yè)務(wù)

通過(guò)UDS:開(kāi)始接收l(shuí)isten_fd和accept_fd們。執(zhí)行不停機(jī)遷移socket業(yè)務(wù)

2.2 fd遷移技術(shù)要點(diǎn)

怎么遷移呢?我們關(guān)鍵看第二步。

實(shí)際上,當(dāng)新升級(jí)的服務(wù)通過(guò)UDS連接上來(lái),我們就開(kāi)始使用sendmsg函數(shù),將listen_fd給轉(zhuǎn)移過(guò)去。

我們來(lái)看一下sendmsg這個(gè)函數(shù)的參數(shù)。

  1. ssize_t sendmsg( 
  2.     int socket, 
  3.     const struct msghdr *message, 
  4.     int flags 
  5. ); 

socket可以理解為我們的UDS連接。關(guān)鍵在于msghdr這個(gè)結(jié)構(gòu)體。

  1. struct msghdr { 
  2.     void            *msg_name;      /* optional address */ 
  3.     socklen_t       msg_namelen;    /* size of address */ 
  4.     struct          iovec *msg_iov; /* scatter/gather array */ 
  5.     int             msg_iovlen;     /* # elements in msg_iov */ 
  6.     void            *msg_control;   /* ancillary data, see below */ 
  7.     socklen_t       msg_controllen; /* ancillary data buffer len */ 
  8.     int             msg_flags;      /* flags on received message */ 
  9. }; 

其中, msg_iov表示要正常發(fā)送的數(shù)據(jù),比如HelloWord;除此之外,還有兩個(gè)ancillary (附屬的) 的變量,提供了附加的功能,那就是變量msg_control和msg_controllen。其中,msg_control又指向了另外一個(gè)結(jié)構(gòu)體cmsghdr。

  1. struct cmsghdr { 
  2.     socklen_t cmsg_len;    /* data byte count, including header */ 
  3.     int       cmsg_level;  /* originating protocol */ 
  4.     int       cmsg_type;   /* protocol-specific type */ 
  5.     /* followed by */ 
  6.     unsigned char cmsg_data[]; 
  7. }; 

在這個(gè)結(jié)構(gòu)體中,有一個(gè)叫做cmsg_type的成員變量,是我們實(shí)現(xiàn)socket遷移的關(guān)鍵。

它共有三個(gè)類型。

  • SCM_RIGHTS
  • SCM_CREDENTIALS
  • SCM_SECURITY

其中,SCM_RIGHTS就是我們所需要的,它允許我們從一個(gè)進(jìn)程,發(fā)送一個(gè)文件句柄到另外一個(gè)進(jìn)程。

  1. struct msghdr msg; 
  2. ... 
  3. struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); 
  4. cmsg->cmsg_level = SOL_SOCKET; 
  5. cmsg->cmsg_type = SCM_RIGHTS; 
  6.  
  7. //socket fd列表,設(shè)置在cmsg_data上 
  8. int *fds = (int *) CMSG_DATA(cmsg); 

依靠sendmsg函數(shù),socket句柄就發(fā)送到另外一個(gè)進(jìn)程了。

3. 接收和還原

同樣的,recvmsg函數(shù),將會(huì)接收這部分?jǐn)?shù)據(jù),然后將其還原成cmsghdr結(jié)構(gòu)體。然后我們就可以從cmsg_data中獲取句柄列表。

為什么能這么做呢?因?yàn)閟ocket句柄,在某個(gè)進(jìn)程里,其實(shí)只是一個(gè)引用。真正的fd句柄,其實(shí)是放在內(nèi)核中的。所謂的遷移,只不過(guò)是把一個(gè)指針,從一個(gè)進(jìn)程中去掉,再加到另外一個(gè)進(jìn)程中罷了。

fd句柄的屬性,有兩種情況。

  • 監(jiān)聽(tīng)fd,直接調(diào)用accept函數(shù)作用在fd上即可
  • 普通fd,需要將其還原成正常的socket

圖片來(lái)自論文:(Zero Downtime Release: Disruption-free Load Balancing of a Multi-Billion User Website)

對(duì)于普通fd,肯定要調(diào)用與原新連接到來(lái)時(shí)相同的代碼邏輯。所以,一個(gè)大體的遷移過(guò)程,包括:

  1. 首先遷移listener fd到新進(jìn)程,并開(kāi)啟監(jiān)聽(tīng),以便新進(jìn)程能快速接收新的請(qǐng)求。如果我們開(kāi)啟了SO_REUSEADDR選項(xiàng),新老服務(wù)甚至能夠一起進(jìn)行服務(wù)
  2. 等待新進(jìn)程預(yù)熱之后,停掉原進(jìn)程的監(jiān)聽(tīng)
  3. 遷移原老進(jìn)程中的大量socket,這些socket可能有數(shù)萬(wàn)條,最好編碼能看到遷移進(jìn)度
  4. 新進(jìn)程接收到這些socket,陸續(xù)將其還原為正常的連接。相當(dāng)于略過(guò)了accept階段,直接就獲取了socket列表
  5. 遷移完畢,老進(jìn)程就空轉(zhuǎn)了,此時(shí)可以安全的停掉

4. End

這是一項(xiàng)黑科技,其實(shí)已經(jīng)在一些主流的應(yīng)用中使用了。你會(huì)看到一些非常眼熟的軟件,這項(xiàng)功能是它們的一大賣(mài)點(diǎn)。比如HAProxy,運(yùn)行在4層網(wǎng)絡(luò)的負(fù)載均衡;比如Envoy,Istio默認(rèn)的數(shù)據(jù)平面軟件,使用類似的技術(shù)完成熱重啟。

其實(shí),在servicemesh的推進(jìn)過(guò)程中,proxy的替換,也會(huì)使用類似的技術(shù),比如SOFA。對(duì)于golang和C語(yǔ)言來(lái)說(shuō),由于API暴露的比較好,這種功能可以很容易的實(shí)現(xiàn);但在Java中,卻有不少的困難,因?yàn)镴ava的跨平臺(tái)特性不會(huì)做這種為L(zhǎng)inux定制的API。

可以看到,sendmsg和recvmsg這兩個(gè)函數(shù),可以實(shí)現(xiàn)的功能非常的酷。它比較適合無(wú)狀態(tài)的proxy服務(wù),如果服務(wù)內(nèi)有狀態(tài)存留,這種遷移并不見(jiàn)得安全,當(dāng)然也可以嘗試把此項(xiàng)技術(shù)運(yùn)用在一些中間件上。但無(wú)論如何,這種黑科技,有一種別樣的暴力美,肯定會(huì)把windows server用戶給饞哭的。

作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。

 

責(zé)任編輯:武曉燕 來(lái)源: 小姐姐味道
相關(guān)推薦

2023-09-27 23:32:46

Python監(jiān)控進(jìn)程

2022-02-07 13:34:05

冬奧會(huì)黑科技機(jī)器人

2020-11-04 07:17:42

Nodejs通信進(jìn)程

2013-03-28 13:14:45

AIDL進(jìn)程間通信Android使用AI

2018-03-28 09:35:16

數(shù)據(jù)系統(tǒng)云服務(wù)

2018-07-23 06:38:40

AI芯片數(shù)據(jù)中心

2025-07-18 07:00:00

前端錄屏JavaScript

2017-08-06 00:05:18

進(jìn)程通信開(kāi)發(fā)

2016-07-14 16:40:56

黑科技

2016-07-07 15:38:07

京東

2013-08-27 09:24:22

SDN網(wǎng)絡(luò)軟件定義網(wǎng)絡(luò)谷歌SDN

2024-01-03 10:17:51

Linux通信

2010-01-05 10:00:48

Linux進(jìn)程間通信

2024-01-05 08:41:31

進(jìn)程間通信IPC異步通信

2023-06-08 16:41:06

人工智能

2017-07-07 10:24:56

云計(jì)算

2020-07-10 10:34:22

人工智能無(wú)人機(jī)物聯(lián)網(wǎng)

2016-11-10 19:31:00

蘇寧雙11

2021-01-22 10:58:16

網(wǎng)絡(luò)安全進(jìn)程間碼如

2011-06-13 09:15:18

AIXlinuxunix
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

风流少妇一区二区| 91精品国产视频| 色婷婷av一区二区| 午夜精品一区二区在线观看的| 超碰超碰超碰超碰| 久久综合99| 欧美电影精品一区二区| 国产成人久久777777| 九色porny在线| www.欧美日韩国产在线| 国产精品久久999| 免费看一级一片| 九九热爱视频精品视频| 91精品国产91综合久久蜜臀| 亚洲熟妇av一区二区三区漫画| 91ph在线| 91啪九色porn原创视频在线观看| 国产日韩在线看| 日韩精品手机在线| 午夜国产精品视频| 最近更新的2019中文字幕| 91精品又粗又猛又爽| 成人在线不卡| 精品国产成人av| 亚洲一区 在线播放| 九色视频网站在线观看| 国产1区2区3区精品美女| 国产精品久久久久久av下载红粉| 国产在线免费视频| 97国产成人高清在线观看| 亚洲精品中文字幕有码专区| 亚洲色图欧美自拍| 欧美三区四区| 岛国精品视频在线播放| 91免费国产精品| 久草资源在线| 中文字幕一区在线| 亚洲精品日韩精品| 国产在线网站| 久久人人爽人人爽| 久久99精品国产一区二区三区| 国产视频第二页| 久久精品国产精品亚洲精品| 国产成人综合av| 精品成人av一区二区在线播放| 午夜精品偷拍| 久热爱精品视频线路一| 四虎影视一区二区| 欧美一区电影| 尤物tv国产一区| 亚洲一二三四视频| 成人在线免费观看91| 亚洲欧美日韩精品久久亚洲区| 中文字幕免费在线播放| 99国产精品免费网站| 日韩视频一区二区三区在线播放| 中文av字幕在线观看| 亚洲国产aⅴ精品一区二区三区| 欧美在线视频日韩| 日韩av片网站| 免费一级欧美在线观看视频| 欧美日韩国产成人在线91| 手机在线成人免费视频| 日韩av懂色| 91精选在线观看| 人妻巨大乳一二三区| 秋霞午夜一区二区三区视频| 欧美成人精品二区三区99精品| 久草免费资源站| 久久精品国产亚洲5555| 日韩国产精品亚洲а∨天堂免| 青青草成人免费视频| 九九综合在线| 亚洲欧洲日韩国产| 国产精品www爽爽爽| 久久电影院7| 久久亚洲国产精品成人av秋霞| 性色av无码久久一区二区三区| 欧美人与禽猛交乱配视频| 97精品国产aⅴ7777| 少妇高潮av久久久久久| 蜜臀a∨国产成人精品| 亚洲精品免费网站| 亚洲欧美一区二区三| 久久久精品国产99久久精品芒果| 午夜精品福利一区二区| a视频在线播放| 疯狂蹂躏欧美一区二区精品| 欧美 国产 小说 另类| 欧美天堂一区二区| 免费一级在线观看播放网址| 久久精品日产第一区二区| 国产精品免费电影| 午夜精品久久久久久久96蜜桃| av激情亚洲男人天堂| 婷婷亚洲婷婷综合色香五月| 国产在线激情视频| 欧美日韩另类视频| 国产aⅴ爽av久久久久| 国产欧美一区二区三区米奇| 亚洲欧美另类国产| 国产这里有精品| 免费精品视频| 亚洲综合社区网| 久久精品国产亚洲a∨麻豆| 亚洲欧洲国产日韩| 欧美 丝袜 自拍 制服 另类| 欧美久久久网站| 亚洲精品国产福利| 亚洲xxxx3d动漫| 久久激情久久| 动漫精品视频| 人人干在线视频| 日韩欧美在线观看| 野花视频免费在线观看| 欧美精选一区二区三区| 国外成人在线视频| 国产乱淫av片免费| 久久久久99精品一区| 人妻av无码专区| 99精品视频在线免费播放| 亚洲女人被黑人巨大进入| 久草福利资源在线观看| 久久国产欧美日韩精品| 国产精品色在线| 激情欧美一区二区三区中文字幕| 大片免费播放在线视频| 午夜精品久久久久久久99水蜜桃| 老司机久久精品| 精品视频免费| 7m精品福利视频导航| 亚洲精品字幕在线| 亚洲人被黑人高潮完整版| 亚洲国产高清av| 欧美日一区二区| 日韩美女视频免费看| 姝姝窝人体www聚色窝| 亚洲精品成人少妇| 性欧美在线视频| 日韩欧美1区| 国产精品极品在线| 蝌蚪视频在线播放| 色综合久久久久综合| jizz日本免费| 亚洲综合社区| 欧洲精品在线播放| 在线观看免费污视频| 91p九色成人| 亚洲欧美国产制服动漫| 欧美日韩精品区| 不卡在线视频中文字幕| 国产一级做a爰片久久毛片男| 久久免费精品| 欧美美最猛性xxxxxx| 国产黄色片免费| 一区二区三区色| 性高潮久久久久久| 国内精品久久久久久久影视蜜臀 | 成人三级小说| 精品国产精品网麻豆系列| 免费三片在线播放| 丁香激情综合国产| 天天夜碰日日摸日日澡性色av| 精品嫩草影院| 亚洲精品极品少妇16p| 久久av超碰| 亚洲欧美一区二区三区久本道91| 中文字幕欧美人妻精品一区| 国产婷婷在线观看| 国产乱淫片视频| 国产精品福利电影一区二区三区四区| 韩国中文字幕av| 99精品综合| 91在线播放视频| 7777kkk亚洲综合欧美网站| 亚洲韩国日本中文字幕| 中文字幕第15页| 日本一区二区三区高清不卡| 一本色道久久亚洲综合精品蜜桃| 国产精品久久观看| 成人自拍视频网站| 美女福利一区二区| 久久精品久久久久久| 亚洲av综合色区无码一二三区| 午夜精品久久久久久久久久久| 久久精品国产亚洲av久| 激情久久五月天| 国产中文字幕二区| 日韩国产综合| 成人片在线免费看| 日韩av中字| 九色精品美女在线| 三级在线观看| 777a∨成人精品桃花网| 亚洲国产成人精品激情在线| 亚洲国产精品黑人久久久| 性一交一黄一片| 日韩国产精品大片| 久久综合久久久久| 成人羞羞网站入口免费| 国产成人看片| 欧美高清免费| 26uuu日韩精品一区二区| 免费av毛片在线看| 亚洲欧美国产一区二区三区| www.com欧美| 色欧美日韩亚洲| 久久精品国产亚洲AV无码麻豆| 国产亚洲1区2区3区| 中文字幕99页| 久久爱www久久做| 国产一区亚洲二区三区| 欧美精品二区| 亚洲午夜高清视频| 亚洲三级网址| 国产精品大全| 国产成人视屏| 国产精品网站入口| 波多视频一区| 性色av一区二区咪爱| 在线网址91| 中文字幕亚洲综合久久筱田步美 | 欧美一区二区三区免费观看视频| 精品国产午夜福利| 午夜国产不卡在线观看视频| 永久久久久久久| 国产精品区一区二区三| 老鸭窝一区二区| 成人精品视频一区二区三区 | 国产精品igao激情视频| 日韩精品首页| 色女人综合av| 免费视频国产一区| 麻豆成人在线播放| 日韩av三区| 国产在线欧美日韩| 91综合精品国产丝袜长腿久久| 91精品久久久久久久久中文字幕 | 欧美老年两性高潮| 中文字幕精品一区二区精| 色一情一伦一子一伦一区| 免费观看一区二区三区毛片| 性感美女久久精品| 精品91久久久| 精品福利樱桃av导航| 黄色片免费观看视频| 五月激情综合网| 中文字幕亚洲精品一区| 欧美日韩国产在线| 久久中文字幕免费| 91久久奴性调教| 日本一区二区三区久久| 欧美日韩国产高清一区二区三区| 亚洲怡红院av| 欧美一区二区三区免费视频 | 日韩精品久久久久久久酒店| 五月天中文字幕一区二区| 日本少妇性高潮| 天天色天天爱天天射综合| 国产精品午夜影院| 色综合久久久网| 中文字幕理论片| 欧美日韩国产美| www.97av.com| 亚洲国产精品久久久久秋霞蜜臀 | 国产香蕉精品| 久久综合中文色婷婷| 免费毛片在线不卡| 一本久道久久综合| 午夜精品视频| 日本成年人网址| 日本欧美一区二区三区| 男女啪啪网站视频| 国产一区二区三区免费播放| 亚洲欧美高清在线| 国产色产综合色产在线视频 | 91精品亚洲| 国产不卡一区二区视频| 久久精品男女| 中文字幕一区二区三区四| 成人免费毛片app| 免费看污片的网站| 亚洲精品免费在线| 丁香六月婷婷综合| 911精品产国品一二三产区 | 亚洲一区二区福利| 福利在线视频网站| 69久久夜色精品国产69| 欧美亚洲二区| 国产精品制服诱惑| 日韩在线理论| a天堂资源在线观看| 日韩国产一区二| 国产51自产区| 国产精品免费aⅴ片在线观看| 加勒比av在线播放| 色8久久人人97超碰香蕉987| av无码精品一区二区三区宅噜噜| 亚洲国产小视频| 免费的黄网站在线观看| 欧美在线视频在线播放完整版免费观看| a成人v在线| 精品一区二区视频| 中文精品久久| 亚洲中文字幕久久精品无码喷水| 国产精品1区二区.| 中文字幕第24页| 亚洲第一福利一区| 国产女人18毛片水18精| 日韩精品免费在线观看| 国产黄大片在线观看画质优化| 欧美在线激情网| 日韩欧美一级| 一本色道婷婷久久欧美| 亚洲综合国产| 91情侣偷在线精品国产| 欧美成人午夜精品免费| 国产成人免费av一区二区午夜 | 日本女人高潮视频| 新67194成人永久网站| 香蕉网在线视频| 国产精品久久久久国产精品日日| 日韩精品资源| 午夜69成人做爰视频| 国产精品伦一区二区| 国产精品电影观看| 九九热播视频在线精品6| 亚洲激情电影在线| 久久精品一本| 久久人人妻人人人人妻性色av| 亚洲人成网站影音先锋播放| 中文字幕观看在线| 国产午夜精品久久久| 99在线视频影院| 成人xxxxx色| 欧美久久一区| 欧美污在线观看| 亚洲美女淫视频| 国产精品国产一区二区三区四区| 亚洲三级av在线| 欧美黑人粗大| 欧美成熟毛茸茸复古| 一本一本久久| 亚洲永久无码7777kkk| 亚洲成人av免费| 二区三区在线视频| 国模精品系列视频| av日韩精品| 九九爱精品视频| 成人av一区二区三区| 国产中文字字幕乱码无限| 欧美va亚洲va在线观看蝴蝶网| 超碰人人在线| 99久久精品免费看国产一区二区三区| 亚洲91中文字幕无线码三区| 小早川怜子一区二区三区| 中文字幕一区二区三区乱码在线 | 91福利精品视频| 青青草超碰在线| 国产精品久久久久久久久久99| 伊人久久大香线蕉无限次| 37pao成人国产永久免费视频| 久久综合久久综合九色| 久久国产乱子伦精品| 伊人久久久久久久久久久| 欧美视频精品| 欧美在线观看黄| 成人激情综合网站| 天天操天天摸天天干| 国产一区二区三区四区福利| 国产精品黄色片| 欧美三级午夜理伦三级老人| 国产成a人无v码亚洲福利| 日韩精品一区二区不卡| 亚洲美女又黄又爽在线观看| 久久亚洲精品爱爱| 亚洲黄色网址在线观看| 懂色av噜噜一区二区三区av| 天码人妻一区二区三区在线看| 国产亚洲精品美女| 99视频这里有精品| 夜夜添无码一区二区三区| 91年精品国产| 91精品国产色综合久久不8| 久久久久中文字幕2018| 波多野结衣一区| 精品视频一区二区不卡| 亚洲1卡2卡3卡4卡乱码精品| 亚洲最大av网站| 亚洲综合另类| 久久爱一区二区| 亚洲激情 国产| 成人在线观看免费播放| 国产av熟女一区二区三区| 久久欧美中文字幕| 国产欧美第一页| 日韩av日韩在线观看| 欧美在线三区| 免费福利视频网站| 欧美大片免费久久精品三p|