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

探索 Ebpf 在 Node.Js 中的應(yīng)用

開發(fā) 前端
ebpf 是現(xiàn)代 Linux 內(nèi)核提供的非常復(fù)雜和強(qiáng)大的技術(shù),它使得 Linux 內(nèi)核變得可編程,不再是完全的黑盒子。隨著 ebpf 的發(fā)展和成熟,其應(yīng)用也越來越廣泛,本文介紹如何使用 ebpf 來追蹤 Node.js 底層的代碼。

 [[437683]]

前言

ebpf 是現(xiàn)代 Linux 內(nèi)核提供的非常復(fù)雜和強(qiáng)大的技術(shù),它使得 Linux 內(nèi)核變得可編程,不再是完全的黑盒子。隨著 ebpf 的發(fā)展和成熟,其應(yīng)用也越來越廣泛,本文介紹如何使用 ebpf 來追蹤 Node.js 底層的代碼。

介紹

ebpf 的設(shè)計思想雖然很簡單,但是實(shí)現(xiàn)和使用上非常復(fù)雜。ebpf 本質(zhì)上內(nèi)核實(shí)現(xiàn)了一個虛擬機(jī),用戶可以把自己編寫的 c 代碼加載進(jìn)內(nèi)核中執(zhí)行,從而參與內(nèi)核的邏輯處理。這聽起來很簡單,但是整個技術(shù)其實(shí)非常復(fù)雜,從實(shí)現(xiàn)來說,內(nèi)核需要對加載的代碼進(jìn)行非常多而復(fù)雜的校驗,以保證安全性,內(nèi)核還需要實(shí)現(xiàn)一個虛擬機(jī)來執(zhí)行用戶的代碼和在內(nèi)核代碼中加入支持 ebpf 機(jī)制的邏輯。從使用來說,使用或編寫 ebpf 代碼對我們來說成本非常高,我們需要學(xué)會搭建環(huán)境,需要了解如何編譯 ebpf 程序,甚至還需要了解 Linux 內(nèi)核的一些知識。不過隨著 ebpf 多年的發(fā)展,這種情況已經(jīng)改善了很多。ebpf 的介紹在網(wǎng)上有很多,這里就不多介紹。

使用

下面來看一下如何基于 libbpf 寫一個 ebpf 程序。ebpf 程序分為兩個部分,第一部分是 ebpf 代碼。hello.bpf.c

  1. #include <linux/bpf.h> 
  2. #include <bpf/bpf_helpers.h> 
  3.  
  4. SEC("tracepoint/syscalls/sys_enter_execve"
  5. int handle_tp(void *ctx){ 
  6.     int pid = bpf_get_current_pid_tgid()>> 32; 
  7.     char fmt[] = "BPF triggered from PID %d.\n"
  8.     bpf_trace_printk(fmt, sizeof(fmt), pid); 
  9.     return 0; 
  10.  
  11. char LICENSE[] SEC("license") = "Dual BSD/GPL"

以上是被加載進(jìn)內(nèi)核執(zhí)行的代碼,主要是利用內(nèi)核的 tracepoint 機(jī)制,給 sys_enter_execve 函數(shù)插入一個鉤子,每次執(zhí)行到這個函數(shù)時,鉤子函數(shù)就會被執(zhí)行。另一部分是負(fù)責(zé)把 ebpf 代碼加載進(jìn)內(nèi)核的代碼。hello.c

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #include <string.h> 
  4. #include <assert.h> 
  5. #include <errno.h> 
  6. #include <fcntl.h> 
  7. #include <unistd.h> 
  8. #include <sys/resource.h> 
  9. #include <bpf/libbpf.h> 
  10. #include "hello.skel.h" 
  11.  
  12. int main(int argc, char **argv){ 
  13.     struct hello_bpf *skel; 
  14.     int err; 
  15.  
  16.     /* Open BPF application */ 
  17.     skel = hello_bpf__open(); 
  18.     /* Load & verify BPF programs */ 
  19.     err = hello_bpf__load(skel); 
  20.     /* Attach tracepoint handler */ 
  21.     err = hello_bpf__attach(skel); 
  22.     printf("Hello BPF started, hit Ctrl+C to stop!\n"); 
  23.     // output 
  24.     read_trace_pipe(); 
  25.  
  26. cleanup: 
  27.     hello_bpf__destroy(skel); 
  28.     return -err; 

這里只列出核心的代碼,hello.c 的邏輯很簡單,打開 ebpf 然后加載到內(nèi)核,最后查看 ebpf 程序的輸入。這就是 ebpf 程序的整體邏輯,過程都差不多,重點(diǎn)是確定我們需要做什么事情,然后寫不同的代碼。最后,如果不再需要追蹤的時候,可以銷毀 ebpf 代碼。

應(yīng)用

在 ebpf 之前,內(nèi)核對我們來說是一個黑盒子。有了 ebpf 之后,內(nèi)核對我們透明了很多。但是軟件是分層的,我們平時直接和內(nèi)核打交道并不多,我們更關(guān)心上層軟件的情況。具體來說,當(dāng)我們使用一個 Node.js 的時候,除了關(guān)心業(yè)務(wù)代碼,我們也需要關(guān)心 Node.js 本身的代碼。但是 Node.js 對我們來說也是個黑盒子,我們不知道它具體做了什么事情或者某一個時刻的運(yùn)行狀態(tài),這樣非常不利于我們排查問題或者了解系統(tǒng)的運(yùn)行情況。有了 ebpf 后,我們就可以做更多的事情了。Linux 內(nèi)核提供了非常多的代碼追蹤技術(shù),其中有一種是 uprobe,uprobe 是一種動態(tài)追蹤應(yīng)用代碼的技術(shù),比如我們想了解 Node.js 的 Libuv 中的 uv_tcp_listen 函數(shù),那么我們就可以通過 ebpf 去實(shí)現(xiàn)這種效果。有了這種能力,我們就可以掌握系統(tǒng)更多的數(shù)據(jù)和信息。

實(shí)現(xiàn)

應(yīng)用層使用 uprobe 比 kprobe 復(fù)雜,kprobe 是用于追蹤內(nèi)核函數(shù),因為內(nèi)核知道它的函數(shù)對應(yīng)的虛擬地址,所以我們只需要告訴它函數(shù)名就可以實(shí)現(xiàn)對該函數(shù)的追蹤,但是 uprobe 則不一樣,uprobe 是用于追蹤應(yīng)用層代碼的,內(nèi)核并不知道或者說不應(yīng)該關(guān)注某個函數(shù)對應(yīng)的虛擬地址,所以這個難題需要應(yīng)用層解決。下面來看一下具體的實(shí)現(xiàn)。uprobe.bpf.c

  1. #include <linux/bpf.h> 
  2. #include <linux/ptrace.h> 
  3. #include <bpf/bpf_helpers.h> 
  4. #include <bpf/bpf_tracing.h> 
  5. #include "uv.h" 
  6.  
  7. char LICENSE[] SEC("license") = "Dual BSD/GPL"
  8. SEC("uprobe/uv_tcp_listen"
  9. int BPF_KPROBE(uprobe, uv_tcp_t* tcp, int backlog, uv_connection_cb cb){ 
  10.     bpf_printk("uv_tcp_listen start %d \n", backlog); 
  11.     return 0; 
  12.  
  13. SEC("uretprobe/uv_tcp_listen"
  14. int BPF_KRETPROBE(uretprobe, int ret){ 
  15.     bpf_printk("uv_tcp_listen end %d \n", ret); 
  16.     return 0; 

這里我們實(shí)現(xiàn)了對 libuv 的 uv_tcp_listen 函數(shù)進(jìn)行追蹤,包括函數(shù)開始執(zhí)行和執(zhí)行完畢兩個追蹤點(diǎn)。定義完 ebpf 程序后,來看一下如何加載到內(nèi)核。uprobe.c

  1. int main(int argc, char **argv){ 
  2.     struct uprobe_bpf *skel; 
  3.     long base_addr, uprobe_offset; 
  4.     int err, i; 
  5.         // 要追蹤的可執(zhí)行文件 
  6.     char execpath[50] = "/usr/bin/node"
  7.     char * func = "uv_tcp_listen"
  8.         // 計算某個函數(shù)在可執(zhí)行文件里的地址偏移 
  9.     uprobe_offset = get_elf_func_offset(execpath, func); 
  10.  
  11.     /* Load and verify BPF application */ 
  12.     skel = uprobe_bpf__open_and_load(); 
  13.  
  14.     /* Attach tracepoint handler */ 
  15.     skel->links.uprobe = bpf_program__attach_uprobe(skel->progs.uprobe, 
  16.                             false /* not uretprobe */, 
  17.                             -1, /* any pid */ 
  18.                             execpath, 
  19.                             uprobe_offset); 
  20.  
  21.     skel->links.uretprobe = bpf_program__attach_uprobe(skel->progs.uretprobe, 
  22.                                true /* uretprobe */, 
  23.                                -1 /* any pid */, 
  24.                                execpath, 
  25.                                uprobe_offset); 
  26.  
  27.         // ... 
  28. cleanup: 
  29.     uprobe_bpf__destroy(skel); 
  30.     return -err; 

uprobe.c 的重點(diǎn)在于計算某個函數(shù)在某個可執(zhí)行文件的地址信息,這個主要是利用 elf 文件來判斷,elf 是代碼編譯后生成的一個可執(zhí)行文件,它里面可以記錄了關(guān)于可執(zhí)行文件的一些元數(shù)據(jù)(也可以通過 readelf -Ws exen_file 查看),比如符號表里記錄了函數(shù)的信息,拿到相關(guān)信息后,設(shè)置 uprobe 和 uretprobe就可以了。通過上面的 ebpf 代碼,我們就可以追蹤到 uv_tcp_listen 函數(shù)的調(diào)用情況,有了這種能力,我們就可以隨便監(jiān)聽自己想監(jiān)聽的函數(shù)。除了 uprobe 之后,我們還可以利用內(nèi)核的 kprobe 監(jiān)聽內(nèi)核函數(shù)。比如下面的 ebpf 代碼就可以實(shí)現(xiàn)對創(chuàng)建進(jìn)程的追蹤。

  1. SEC("kprobe/__x64_sys_execve"
  2. int BPF_KPROBE(__x64_sys_execve){ 
  3.     pid_t pid; 
  4.     pid = bpf_get_current_pid_tgid() >> 32; 
  5.     bpf_printk("KPROBE ENTRY pid = %d", pid); 
  6.     return 0; 
  7.  
  8. SEC("kretprobe/__x64_sys_execve"
  9. int BPF_KRETPROBE(__x64_sys_execve_exit){ 
  10.     pid_t pid; 
  11.  
  12.     pid = bpf_get_current_pid_tgid() >> 32; 
  13.     bpf_printk("KPROBE EXIT: pid = %d\n", pid); 
  14.     return 0; 

總結(jié)

簡單地介紹了一下強(qiáng)大的 ebpf 技術(shù)和在 Node.js 中的應(yīng)用,但是這只是個簡單的例子,我們還有很多事情需要做,比如能否結(jié)合 addon 來使用,如何支持動態(tài)能力等等。另外因為 C++ 代碼編譯后的函數(shù)名和原來的是不太一樣的,這可能會導(dǎo)致我們通過函數(shù)名找虛擬地址時找不到,這里也還有很多需要研究的地方。總的來說,ebpf 不僅對 Node.js 來說非常有價值,對其他應(yīng)用層來說意義也是一樣的。這是一個非常值得探索的技術(shù)方向。

代碼倉庫:https://github.com/theanarkh/libbpf-code

 

責(zé)任編輯:武曉燕 來源: 編程雜技
相關(guān)推薦

2020-12-08 06:28:47

Node.js異步迭代器

2021-04-06 10:15:29

Node.jsHooks前端

2021-12-18 07:42:15

Ebpf 監(jiān)控 Node.js

2023-06-30 08:05:41

2025-01-13 00:00:00

2020-07-31 13:35:34

Node.js應(yīng)用分析前端

2017-04-10 13:28:32

Node.jsJavaScript

2021-08-20 09:00:00

Node.js開發(fā)API

2014-03-07 13:43:32

Node.jsNode

2016-08-11 14:02:02

NodeJS前端

2020-04-15 15:48:03

Node.jsstream前端

2021-05-21 09:36:42

開發(fā)技能代碼

2024-01-05 08:49:15

Node.js異步編程

2011-11-10 11:08:34

Node.js

2013-11-01 09:34:56

Node.js技術(shù)

2022-01-11 17:23:12

配置Node.jsNode

2015-03-10 10:59:18

Node.js開發(fā)指南基礎(chǔ)介紹

2012-03-09 09:11:29

Node.js

2017-03-20 13:43:51

Node.js內(nèi)存泄漏

2017-03-19 16:40:28

漏洞Node.js內(nèi)存泄漏
點(diǎn)贊
收藏

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

久色国产在线| 精品人妻午夜一区二区三区四区 | 亚洲激情自拍| 日韩成人黄色av| 成人性生生活性生交12| а√天堂在线官网| 99久久精品免费精品国产| 国产精品福利在线观看| 欧美成人黄色网| 一本色道久久综合狠狠躁的番外| 欧美人妇做爰xxxⅹ性高电影 | а√天堂资源地址在线下载| 99久久久无码国产精品| 国产精品久久久久久一区二区| 亚洲熟女毛茸茸| 国产人妖ts一区二区| 欧美综合色免费| 蜜臀av色欲a片无码精品一区 | 久久久精品电影| 国产精品无码永久免费不卡| 国产精品一级在线观看| 色综合网色综合| 国产免费裸体视频| av国产在线观看| av电影在线观看一区| 成人h片在线播放免费网站| 国产成人无码一区二区三区在线 | www.欧美精品一二区| 国产美女91呻吟求| 亚洲精品久久久久久久蜜桃| 伊人久久久大香线蕉综合直播 | 丝袜美腿一区二区三区| 欧美风情在线观看| 搜索黄色一级片| heyzo久久| 国产视频久久网| 91成人在线观看喷潮蘑菇| 国产精品原创视频| 91国产免费看| 日本成年人网址| 三级在线观看视频| 天天综合网天天综合色| 男人的天堂avav| 91精品久久久久久粉嫩| 亚洲欧美视频在线观看| 亚洲女人毛片| 日本网站在线免费观看视频| 欧美激情自拍偷拍| 日韩欧美在线一区二区| 欧美人体大胆444www| 99久久婷婷国产综合精品电影| 成人情视频高清免费观看电影| 国产黄色一区二区| 国产成人亚洲综合a∨婷婷| 亚洲综合社区网| 国产乱淫片视频| 国产一区二区成人久久免费影院 | 久久久久久久久久久人体 | 麻豆网站在线看| 欧美国产丝袜视频| 亚洲视频精品一区| 蜜桃视频网站在线| 亚洲人吸女人奶水| 4444亚洲人成无码网在线观看| 中文字幕有码在线观看| 一区二区三区四区蜜桃| 轻点好疼好大好爽视频| 成年男女免费视频网站不卡| 午夜久久福利影院| 国产精品秘入口18禁麻豆免会员| 在线最新版中文在线| 欧美色图在线视频| 牛夜精品久久久久久久| 亚洲人成网站在线在线观看| 欧美一区二区三区视频免费播放| 中文写幕一区二区三区免费观成熟| 亚洲一区二区三区在线免费| 亚洲精品福利在线观看| 亚洲女优在线观看| 99久久影视| 欧美激情在线狂野欧美精品| 天海翼一区二区| 日韩高清在线电影| 91久久久久久| 神马午夜精品95| 久久精品人人爽人人爽| 一区二区成人国产精品| 欧美卡一卡二| 色哦色哦哦色天天综合| 亚洲第一色av| 日韩人体视频| 久久精品视频在线播放| 日韩欧美亚洲国产| 日产国产高清一区二区三区| 91精品久久香蕉国产线看观看| 亚洲欧洲综合在线| 亚洲欧洲日产国码二区| 极品美女扒开粉嫩小泬| 日本综合视频| 亚洲第一黄色网| 亚洲图片第一页| 亚洲国内精品| 国产精品一区二区久久国产| 成人免费视频国产| 中文字幕不卡三区| 国产手机免费视频| 久久麻豆视频| 日韩成人黄色av| www欧美com| 日本午夜精品一区二区三区电影 | 国产一区二区三区电影在线观看| 欧美成人四级hd版| 无码人妻丰满熟妇区bbbbxxxx| 国产一区久久久| 日韩欧美电影一区二区| wwwww亚洲| 欧美福利视频导航| 超碰97人人干| 好吊日精品视频| 国产激情视频一区| 无码国产精品一区二区免费16 | 人人干人人干人人干| 久久国产精品第一页| 精品一区二区日本| 18网站在线观看| 欧美午夜电影网| 魔女鞋交玉足榨精调教| 亚洲日本免费| 亚洲最大的网站| 黄色网页网址在线免费| 在线精品国精品国产尤物884a| 国产情侣久久久久aⅴ免费| 欧美3p视频| 国产精品视频久久久| 嫩草在线播放| 大伊人狠狠躁夜夜躁av一区| 黄色a级三级三级三级| 久久国产成人精品| 国产精品久久久久久久久久| 四虎精品成人影院观看地址| 午夜欧美2019年伦理| 国产精品一级无码| 欧美日本三区| www.久久爱.cn| 国产最新在线| 911精品产国品一二三产区| 日本一卡二卡在线播放| 日韩成人av影视| 视频一区视频二区视频三区高| 老司机深夜福利在线观看| 精品福利在线导航| 久久精品免费在线| 99久久99久久精品免费看蜜桃| 人妻夜夜添夜夜无码av| 国内自拍欧美| 26uuu亚洲伊人春色| 亚洲av电影一区| 欧美日韩美女视频| 日韩网站在线播放| 乱码第一页成人| 日本视频一区二区不卡| 搜成人激情视频| 色偷偷偷亚洲综合网另类 | 一区二区三区四区日本视频| 精品调教chinesegay| 日本a级c片免费看三区| 国产色产综合产在线视频| www.天天射.com| 99九九热只有国产精品| 91传媒视频在线观看| 美女航空一级毛片在线播放| 亚洲黄色成人网| 亚洲第一网站在线观看| 中文字幕中文乱码欧美一区二区 | www污在线观看| 日韩mv欧美mv国产网站| 国产精品99久久99久久久二8| avtt亚洲| 精品国产乱码久久久久久久久| 91在线看视频| 国产精品视频一二| 被黑人猛躁10次高潮视频| 亚洲一级黄色| 神马影院一区二区| 久久99成人| 欧美一乱一性一交一视频| 成人资源www网在线最新版| 欧美一区二区在线免费播放| 国产精品99精品无码视| 国产欧美一区二区精品性色 | 久9re热视频这里只有精品| 国产成人av在线| 2021国产在线| 亚洲欧美福利视频| 国产高清视频免费| 色综合久久久久综合体| 777777国产7777777| 91美女片黄在线观看91美女| 国产探花在线看| 99综合视频| 一区二区不卡在线| 天堂av一区二区三区在线播放| 国产日本欧美一区二区三区| 3344国产永久在线观看视频| 日韩在线一区二区三区免费视频| 人人妻人人澡人人爽久久av| 欧美日韩视频在线观看一区二区三区| 麻豆视频在线观看| 欧美国产精品一区二区三区| 人妻av一区二区| 经典一区二区三区| 欧美xxxxx在线视频| 欧美视频官网| 一本一生久久a久久精品综合蜜| 日韩精品导航| 91免费看网站| 久久精品黄色| 日本欧美一级片| 春色校园综合激情亚洲| 久久综合国产精品台湾中文娱乐网 | 亚洲在线免费| 激情视频小说图片| 色爱综合网欧美| 欧美日韩精品一区| 加勒比视频一区| 91丝袜脚交足在线播放| 激情久久一区二区| 国产激情久久久久| 午夜日韩成人影院| 国产69久久精品成人| 久久大胆人体| 欧美激情在线一区| 免费毛片在线看片免费丝瓜视频 | 久久国产精品99精品国产 | 亚洲人午夜精品免费| 人妻视频一区二区三区| 精品噜噜噜噜久久久久久久久试看| 91禁在线观看| 欧美日韩激情一区二区三区| 成人av网站在线播放| 欧美色视频日本高清在线观看| 日产精品久久久久久久| 亚洲h在线观看| 久久精品免费在线| 亚洲18色成人| 国产大片中文字幕| 亚洲图片一区二区| 国产精品2020| 天天操天天色综合| 天天操天天摸天天干| 午夜精品福利一区二区三区蜜桃| 日韩av在线电影| 亚洲成人自拍一区| 国产亚洲第一页| 亚洲国产cao| 男人的天堂一区二区| 亚洲电影一级黄| 成人午夜淫片100集| 色综合中文综合网| 久久久久久亚洲av无码专区| 欧美系列亚洲系列| 91久久国语露脸精品国产高跟| 欧美精品乱码久久久久久| 国产精品自拍电影| 日韩视频在线你懂得| 亚洲高清在线观看视频| 亚洲黄一区二区| 黄色的视频在线免费观看| 色综合影院在线| 国产黄a三级三级三级av在线看| 欧美高清激情视频| 欧美电影免费看| 成人激情免费在线| 成人黄色av网址| 青娱乐一区二区| 自拍视频亚洲| 欧美成人xxxxx| 久久国产夜色精品鲁鲁99| 欧美人与性动交α欧美精品| 91在线观看视频| 任你操精品视频| 亚洲亚洲人成综合网络| 在线永久看片免费的视频| 51精品久久久久久久蜜臀| 成人h动漫精品一区二区无码 | 色婷婷精品久久二区二区蜜臂av | 久久成人免费网站| 麻豆tv在线观看| 国产欧美一区二区在线观看| 欧美国产日韩在线观看成人| 欧美日韩国产在线看| 亚洲专区在线播放| 亚洲黄色片网站| 免费a级在线播放| 欧美亚洲成人免费| 国产高清亚洲| 日本一区高清在线视频| 国产精品mv在线观看| 中文字幕第80页| 成人动漫一区二区在线| 国产精品无码无卡无需播放器| 一二三区精品视频| 伊人久久亚洲综合| 亚洲国产三级网| 中中文字幕av在线| 国产精品久久999| 精品国产午夜肉伦伦影院| 亚洲一区二区三区乱码| 在线 亚洲欧美在线综合一区| 91福利国产成人精品播放| fc2成人免费人成在线观看播放 | 国产一二三区在线| 久久久久中文字幕2018| 国产精品色婷婷在线观看| 色狠狠久久av五月综合| 国产精品毛片| 亚洲图片欧美另类| 亚洲男人天堂一区| 久久久国产免费| 日韩精品中文字幕在线观看| 欧美一卡二卡| 亚洲精品欧美一区二区三区| 精品大片一区二区| 欧美污视频网站| 床上的激情91.| 欧美精品乱码视频一二专区| 欧美精选一区二区| 91xxx在线观看| 国产97人人超碰caoprom| 日韩动漫一区| 131美女爱做视频| gogo大胆日本视频一区| 国产一级片免费观看| 欧美一级专区免费大片| 九色porny丨首页在线| 国产欧美 在线欧美| 日韩欧美三级| 污污网站在线观看视频| 国产精品免费丝袜| 中文字幕一区二区三区四区视频 | 久久中文在线| 人妻少妇精品视频一区二区三区| 五月天欧美精品| 亚洲 国产 欧美 日韩| 欧美国产精品日韩| 99国产精品免费网站| 国产亚洲精品久久久久久久| 国产精一品亚洲二区在线视频| 91人妻一区二区三区蜜臀| 欧美久久久久久久久中文字幕| 欧美天天影院| 成人免费午夜电影| 亚洲乱码电影| 乱码一区二区三区| 亚洲成av人影院在线观看网| 你懂的网站在线| 91精品国产乱码久久久久久久久| 欧美色图五月天| 国产极品美女高潮无套久久久| 久久久久88色偷偷免费| 最近中文字幕在线免费观看| 色琪琪综合男人的天堂aⅴ视频| 未满十八勿进黄网站一区不卡| 亚洲精品偷拍视频| 国产+成+人+亚洲欧洲自线| 日韩久久久久久久久| 日韩精品免费观看| 欧美最新精品| 一本一本a久久| 国产成人综合在线播放| 好吊操这里只有精品| 亚洲人成在线观看网站高清| 欧美成a人片免费观看久久五月天| 中文视频一区视频二区视频三区| 国产成人啪免费观看软件 | 国产精品亚洲综合久久| 免费福利视频网站| 欧美理论电影在线| 999av小视频在线| 日韩精品一区二区三区四区五区| 久久电影网站中文字幕| 国产精品30p| 一区二区三区四区视频| 欧美中文高清| 熟女性饥渴一区二区三区| 国产精品国产三级国产普通话三级 | 久久综合一区| 精品一区二区三区蜜桃| 中日韩黄色大片| 久久久精品一区二区三区| 精品国产影院| 依人在线免费视频| 婷婷久久综合九色综合绿巨人| 成人精品一区二区| 粉嫩av四季av绯色av第一区| 秋霞影院一区二区| 久久精品99国产精| 中日韩午夜理伦电影免费| 99香蕉久久| gogogo高清免费观看在线视频|