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

抽絲剝繭:從 Linux 源碼探索 eBPF 的實現

系統 Linux
BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB 是 socket.accept() 接受連接請求并完成連接建立的操作符,也是眾多 `sock_ops` 操作符[40] 中的一個。這些操作符,可以被看作是 事件 Event[41],程序的觸發則是由事件驅動的。

去年學習 eBPF,分享過 幾篇 eBPF 方面的學習筆記[1],都是面向 eBPF 的應用。為了準備下一篇文章,這次決定從 Linux 源碼入手,深入了解 eBPF 的工作原理。因此這篇又是一篇學習筆記,假如你對 eBPF 的工作原理也感興趣,不如跟隨我的腳步一起。文章中若有任何問題,請不吝賜教。

這里不會再對 eBPF 進行過多的介紹,可以參考我的另一篇 使用 eBPF 技術實現更快的網絡數據包傳輸[2],結合 追蹤 Kubernetes 中的數據包[3] 可以了解 eBPF 的基本內容以及其在網絡加速方面的應用。

接下來我們還是使用 eBPF sockops[4] 中的程序 bpf_sockops[5] 為例, 配合 Linux v6.8[6] 源碼探索 eBPF 的工作原理。

注:由于公眾號排版問題閱讀可能不友好,可以點擊閱讀原文跳轉到博客閱讀。

圖片圖片

BPF 程序操作

在 load.sh[7] 腳本中,完成了程序的加載和掛載操作,下面的命令使用 bpftool[8] 分別完成 BPF 程序的加載和掛載。

#load
sudo bpftool prog load bpf_sockops.o "/sys/fs/bpf/bpf_sockop"
#attach
sudo bpftool cgroup attach "/sys/fs/cgroup/unified/" sock_ops pinned "/sys/fs/bpf/bpf_sockop"

這里 bpftool 是對內核函數 bpf() 封裝的命令行工具,用于管理和操作 BPF 程序與 Map。

加載

sudo bpftool prog load bpf_sockops.o "/sys/fs/bpf/bpf_sockop"

命令 bpftool prog load 將 bpf_sockops.o 加載到路徑 /sys/fs/bpf/bpf_sockop 中。

bpftool 對 BPF 程序的加載是由調用 `bpf()`[9] 指定命令 BPF_PROG_LOAD 并傳入 加載選項`bpf_prog_load_opts`[10] 來完成的:

syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr))
  • syscall bpf()[11] bpf 系統函數
  • bpf_prog_load[13] 為程序分配內存、初始化、檢查證書、運行 verifier、創建文件描述符(fd)等
  • \_\_sys_bpf[12] 執行 bpf 命令 BPF_PROG_LOAD

加載成功后的程序,然后就可以進行掛載了。

掛載

sudo bpftool cgroup attach "/sys/fs/cgroup/unified/" sock_ops pinned "/sys/fs/bpf/bpf_sockop"

命令 bpftool cgroup attach 將加載(pin 到文件系統中)的程序 /sys/fs/bpf/bpf_sockop 掛載到 cgroup /sys/fs/cgroup/unified/,掛載的類型為 sock_ops。這個 sock_ops 是 bpftool 所使用的庫 libbpf 定義,也被是 ELF 部件名,對應著 BPF 程序類型[14] BPF_PROG_TYPE_SOCK_OPS,掛載類型[15] 為 BPF_CGROUP_SOCK_OPS。

在 eBPF 編程中,ELF(Executable and Linkable Format)文件用于存儲編譯后的 eBPF 程序和相關數據。ELF 文件由多個部分(sections)組成,每個部分包含不同類型的信息,比如程序代碼、符號表、調試信息等。

libbpf 類型 sock_ops => BPF 程序類型 BPF_PROG_TYPE_SOCK_OPS => 掛載類型 BPF_CGROUP_SOCK_OPS,對應到程序 bpf_sockops.c 中部件名(__section)為 sockops 的代碼塊。

關于 sock_ops 掛載點:

sock_ops 通常指的是在 Linux 內核中處理套接字操作的一系列函數和操作。

sock_ops 具體可以包括一系列的操作,如創建套接字、綁定套接字到特定地址和端口、監聽來自其他套接字的連接請求、接受連接請求、發送和接收數據、以及關閉套接字等。這些操作通常通過一組預定義的 API 來提供,例如 POSIX 套接字 API,它定義了一系列函數,如 socket()、bind()、listen()、accept()、send()、recv() 和 close() 等,供應用程序調用。

這次 bpftool 是通過 bpf() 執行執行 BPF_PROG_ATTACH 并傳入 掛載選項 `bpf_prog_attach_opts`[16] 來完成的。

syscall(__NR_bpf, BPF_PROG_ATTACH, &attr, sizeof(attr))
  • syscall bpf()[17] bpf 系統函數

cgroup_bpf_prog_attach[19]

\_\_cgroup_bpf_attach[21]

bpf_prog_put[22] 檢查 cgroup 上是否存在相同掛載類型的程序,如果存在,則進行替換。

static_branch_inc[23] 如果不存在,則將 cgroup_bpf_enabled_key 計數器中,該掛載類型的計數 +1。

cgroup_bpf_prog_attach[20]

bpf_prog_attach[18]

cgroup_bpf_enabled_key 特定類型 cgroup BPF 程序的計數器。

!!! 在運行時,會用到該計數器。

到此,我們已經成功將程序掛載到 cgroup 的 sock_ops 上。

套接字操作 sock_ops

套接字的操作很多,這里以連接建立過程中服務端 accept 操作為例。

圖片圖片

依然是從系統調用 accept 開始。

  • accept[24]

do_accept[26] 此處 ops->accept() 中的 ops 對應著 proto_ops inet_stream_ops[27] 有狀態的 socket(如 TCP) 的相關操作

inet_accept[29]  sk1->sk_prot->accept() 這里的 sk_prot 提供了 TCP 協議 `proto tcp_prot`[30] 的具體操作

tcp_v4_rcv[34] 此時第一次握手剛開始,sock(套接字在內核協議棧這層的體現) 的狀態還是 TCP_LISTEN

tcp_v4_do_rcv[35] 在連接成功建立前,每次握手都會對狀態進行處理。

tcp_init_transfer[37] sock 的狀態被設置為 BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB,開始進行數據傳輸。

BPF_CGROUP_RUN_PROG_SOCK_OPS[39] 執行掛載類型為 BPF_CGROUP_SOCK_OPS 的 BPF 程序。

bpf_skops_established[38]

tcp_rcv_state_process[36] 我們直接看最后一次握手,也就是收到客戶端的 ACK,完成與客戶端連接的建立。

tcp_prot.accept[31]

inet_csk_accept 開始處理三次握手,調用 TCP 協議的實現來處理。inet_init[32] 注冊了 IPPROTO_TCP 也就是 TCP 協議的實現,也就是 net_protocol tcp_protocol[33],其 handler 為 tcp_v4_rcv。

inet_stream_ops.accept[28]

\_\_sys_accept4_file[25]

BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB 是 socket.accept() 接受連接請求并完成連接建立的操作符,也是眾多 `sock_ops` 操作符[40] 中的一個。這些操作符,可以被看作是 事件 Event[41],程序的觸發則是由事件驅動的。例如:

  • 如果客戶端發起連接請求并完成三次握手后的操作符是 BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB;
  • 套接字進入監聽狀態時的操作符是 BPF_SOCK_OPS_TCP_LISTEN_CB;
  • 數據被確認 BPF_SOCK_OPS_DATA_ACK_CB
  • TCP 狀態改變 BPF_SOCK_OPS_STATE_CB

最后就是 BPF 程序的執行了,不多做贅述,有興趣的看這里的 分析[42]。

參考資料

[1] 幾篇 eBPF 方面的學習筆記: https://atbug.com/search?s=ebpf

[2] 使用 eBPF 技術實現更快的網絡數據包傳輸: https://atbug.com/accelerate-network-packets-transmission/

[3] 追蹤 Kubernetes 中的數據包: https://atbug.com/tracing-network-packets-in-kubernetes/

[4] eBPF sockops: https://github.com/addozhang/ebpf-sockops/

[5] bpf_sockops: https://github.com/addozhang/ebpf-sockops/blob/master/bpf_sockops.c#L28

[6] Linux v6.8: https://github.com/torvalds/linux/tree/v6.8

[7] load.sh: https://github.com/addozhang/ebpf-sockops/blob/master/load.sh

[8] bpftool: https://github.com/libbpf/bpftool

[9] bpf(): https://github.com/torvalds/linux/blob/715d82ba636cb3629a6e18a33bb9dbe53f9936ee/kernel/bpf/syscall.c#L5559

[10] 加載選項bpf_prog_load_opts: https://github.com/torvalds/linux/blob/05c31b4ab20527c4d1695130aaecc54ef59a0e54/tools/lib/bpf/bpf.h#L64

[11] syscall bpf(): https://github.com/torvalds/linux/blob/715d82ba636cb3629a6e18a33bb9dbe53f9936ee/kernel/bpf/syscall.c#L5559

[12] __sys_bpf: https://github.com/torvalds/linux/blob/715d82ba636cb3629a6e18a33bb9dbe53f9936ee/kernel/bpf/syscall.c#L5456

[13] bpf_prog_load: https://github.com/torvalds/linux/blob/715d82ba636cb3629a6e18a33bb9dbe53f9936ee/kernel/bpf/syscall.c#L2595

[14] BPF 程序類型: https://github.com/torvalds/linux/blob/d17aff807f845cf93926c28705216639c7279110/tools/include/uapi/linux/bpf.h#L964

[15] 掛載類型: https://github.com/torvalds/linux/blob/d17aff807f845cf93926c28705216639c7279110/tools/include/uapi/linux/bpf.h#L1000

[16] 掛載選項 bpf_prog_attach_opts: https://github.com/torvalds/linux/blob/05c31b4ab20527c4d1695130aaecc54ef59a0e54/tools/lib/bpf/bpf.h#L321C8-L321C28

[17] syscall bpf(): https://github.com/torvalds/linux/blob/715d82ba636cb3629a6e18a33bb9dbe53f9936ee/kernel/bpf/syscall.c#L5466

[18] bpf_prog_attach: https://github.com/torvalds/linux/blob/715d82ba636cb3629a6e18a33bb9dbe53f9936ee/kernel/bpf/syscall.c#L3936

[19] cgroup_bpf_prog_attach: https://github.com/torvalds/linux/blob/v6.8/kernel/bpf/cgroup.c#L1130

[20] cgroup_bpf_prog_attach: https://github.com/torvalds/linux/blob/v6.8/kernel/bpf/cgroup.c#L733

[21] __cgroup_bpf_attach: https://github.com/torvalds/linux/blob/v6.8/kernel/bpf/cgroup.c#L607

[22] bpf_prog_put: https://github.com/torvalds/linux/blob/v6.8/kernel/bpf/cgroup.c#L700

[23] static_branch_inc: https://github.com/torvalds/linux/blob/v6.8/kernel/bpf/cgroup.c#L702

[24] accept: https://github.com/torvalds/linux/blob/v6.8/net/socket.c#L2016

[25] __sys_accept4_file: https://github.com/torvalds/linux/blob/v6.8/net/socket.c#L1969

[26] do_accept: https://github.com/torvalds/linux/blob/v6.8/net/socket.c#L1929

[27] proto_ops inet_stream_ops: https://github.com/torvalds/linux/blob/eef00a82c568944f113f2de738156ac591bbd5cd/net/ipv4/af_inet.c#L1051

[28] inet_stream_ops.accept: https://github.com/torvalds/linux/blob/eef00a82c568944f113f2de738156ac591bbd5cd/net/ipv4/af_inet.c#L1058

[29] inet_accept: https://github.com/torvalds/linux/blob/eef00a82c568944f113f2de738156ac591bbd5cd/net/ipv4/af_inet.c#L780

[30] proto tcp_prot: https://github.com/torvalds/linux/blob/da7dfaa6d6f731c30eca6ffa808b83634d43e26f/net/ipv4/tcp_ipv4.c#L3314

[31] tcp_prot.accept: https://github.com/torvalds/linux/blob/da7dfaa6d6f731c30eca6ffa808b83634d43e26f/net/ipv4/tcp_ipv4.c#L3314

[32] inet_init: https://github.com/torvalds/linux/blob/eef00a82c568944f113f2de738156ac591bbd5cd/net/ipv4/af_inet.c#L1997

[33] net_protocol tcp_protocol: https://github.com/torvalds/linux/blob/eef00a82c568944f113f2de738156ac591bbd5cd/net/ipv4/af_inet.c#L1754

[34] tcp_v4_rcv: https://github.com/torvalds/linux/blob/da7dfaa6d6f731c30eca6ffa808b83634d43e26f/net/ipv4/tcp_ipv4.c#L2319

[35] tcp_v4_do_rcv: https://github.com/torvalds/linux/blob/da7dfaa6d6f731c30eca6ffa808b83634d43e26f/net/ipv4/tcp_ipv4.c#L1929

[36] tcp_rcv_state_process: https://github.com/torvalds/linux/blob/v6.8/net/ipv4/tcp_input.c#L6724

[37] tcp_init_transfer: https://github.com/torvalds/linux/blob/v6.8/net/ipv4/tcp_input.c#L6208

[38] bpf_skops_established: https://github.com/torvalds/linux/blob/v6.8/net/ipv4/tcp_input.c#L192

[39] BPF_CGROUP_RUN_PROG_SOCK_OPS: https://github.com/torvalds/linux/blob/v6.8/include/linux/bpf-cgroup.h#L350

[40] sock_ops 操作符: sock_ops

[41] 事件 Event: https://atbug.com/accelerate-network-packets-transmission/#事件驅動

[42] 分析: https://atbug.com/accelerate-network-packets-transmission/#實現

責任編輯:武曉燕 來源: 云原生指北
相關推薦

2021-06-11 18:27:10

LinuxLinux內核

2022-01-17 17:55:29

Python變量交換開發

2021-06-16 07:56:21

Redis分布式

2022-07-05 21:31:21

索引SQL分庫分表

2022-07-11 11:28:45

數據分析業務消費

2015-06-09 11:13:18

2020-05-06 08:01:39

黑客惡意攻擊網絡安全

2021-04-19 11:07:13

Windbg程序.NET

2022-04-01 15:18:42

Web 框架網絡通信

2022-09-03 15:12:40

AndroidJDK 11升級

2018-09-13 15:21:36

CTO訓練營

2024-01-03 16:39:07

2019-05-23 11:42:04

Java語法糖編程語言

2019-05-14 14:51:40

Java語法糖用法

2025-05-12 08:27:25

2015-12-28 16:09:20

物聯網市場

2019-12-10 15:30:27

SaaSIaaS云計算

2022-02-22 07:40:10

邊緣計算云原生中心云

2025-07-15 09:58:16

2020-06-09 15:15:31

運維中臺技術
點贊
收藏

51CTO技術棧公眾號

青青草成人免费| 青青青国产在线观看| aaa级黄色片| 日韩午夜精品| 日韩中文字幕在线播放| 久久久爽爽爽美女图片| 一区二区xxx| 欧美黑人xx片| 久久精品视频在线免费观看| 成人精品久久久| 亚洲欧美综合自拍| 一本精品一区二区三区| 日韩激情第一页| 成人免费黄色av| 韩日精品一区| 精品久久久久久中文字幕| 一区不卡字幕| 黄色片免费在线| 国产成人在线视频网址| 国产精品国产福利国产秒拍| 日干夜干天天干| 亚洲国产不卡| 在线观看免费高清视频97| 精品人妻伦一二三区久| 亚洲狼人综合| 日本韩国一区二区三区| 2018国产在线| av网址在线| 国产精品欧美一区二区三区| 六月婷婷久久| 亚洲欧美色视频| 成人午夜电影网站| 91免费看国产| 国产一区二区波多野结衣| 久久精品毛片| 57pao国产精品一区| 男人天堂中文字幕| 狠狠爱成人网| 九九热这里只有精品免费看| 免费黄色激情视频| 日韩毛片视频| 在线视频免费一区二区| 摸摸摸bbb毛毛毛片| 午夜精品福利影院| 日韩精品视频在线| 亚洲一级av无码毛片精品| 日韩精品三级| 欧美成人国产一区二区| 国产ts在线观看| 一区二区精彩视频| 日韩精品在线看片z| 一级网站在线观看| 国产乱码精品一区二区三区亚洲人 | 国产拍精品一二三| 91色在线播放| 国产精品自产自拍| 超碰97网站| 色婷婷av一区二区三| 粉嫩av一区二区三区在线播放 | 国产精品网在线观看| 日韩免费一区二区三区在线播放| 91香蕉视频免费看| 99ri日韩精品视频| 亚洲国产天堂久久综合| 亚洲综合自拍网| 蜜桃精品wwwmitaows| 亚洲人成五月天| 99久久久无码国产精品不卡| 91精品国产乱码久久久久久久| 精品激情国产视频| 欧美黄片一区二区三区| 日韩一区二区久久| 日韩暖暖在线视频| 一级黄色片免费| 国产精品77777竹菊影视小说| 高清国产一区| 国产天堂在线| 亚洲欧洲精品一区二区三区不卡| 最新黄色av网站| 国产区美女在线| 黑人巨大精品欧美一区免费视频| 久久久精品三级| 国产情侣一区在线| 亚洲国产欧美久久| 亚洲自拍偷拍图| 久久久久久久久国产一区| 高清一区二区三区四区五区| 老熟妇仑乱一区二区av| 久久国产夜色精品鲁鲁99| 成人av免费在线看| 国产乱视频在线观看| 一区二区三区在线观看视频 | 一区视频免费观看| 国产亚洲福利| 成人国产精品久久久久久亚洲| 丰满人妻妇伦又伦精品国产| 久久久久国产精品厨房| 在线成人av电影| 午夜裸体女人视频网站在线观看| 精品婷婷伊人一区三区三| 亚洲一二三av| 国产欧美日韩在线观看视频| 久久精品在线视频| 日韩 国产 欧美| 国产成人在线网站| 亚洲不卡1区| av中文在线资源| 欧美精品xxxxbbbb| 巨胸大乳www视频免费观看| 一本一道久久a久久精品蜜桃| 欧美亚洲日本黄色| 亚洲av无码片一区二区三区| 国产片一区二区三区| 国内少妇毛片视频| www.91精品| 日韩精品在线观看一区二区| 欧美又粗又大又长| 美女精品自拍一二三四| 久久精品日产第一区二区三区 | 成人免费小视频| 欧美性猛交久久久乱大交小说| 午夜视频一区二区在线观看| 在线观看国产成人av片| 国产无套丰满白嫩对白| 国产成人免费网站| 自拍偷拍视频在线| 影音成人av| 亚洲人成绝费网站色www| 国产精品成人久久| 成人污污视频在线观看| 91国在线高清视频| 久久久加勒比| 尤物yw午夜国产精品视频明星| 四虎成人永久免费视频| 不卡视频免费播放| 草草视频在线免费观看| 哺乳一区二区三区中文视频| 久久综合免费视频| 国产特黄一级片| 亚洲女厕所小便bbb| 久热精品在线观看视频| 日韩在线中文| 国产欧美一区二区三区久久人妖 | 精品国产亚洲一区二区三区在线| 中文字幕日韩视频| 最新中文字幕第一页| 久久精品日韩一区二区三区| 日韩中文字幕免费在线| 免费视频国产一区| 国产精品69av| 午夜视频在线| 9191精品国产综合久久久久久| 中国1级黄色片| 久久国产精品一区二区| 伊人色综合影院| 欧美一级大片在线视频| 欧美尺度大的性做爰视频| 午夜精品久久久久久久爽| 亚洲美女免费在线| 中文字幕18页| 一区二区国产精品| 欧美污视频久久久| 欧美高清免费| 色综合91久久精品中文字幕 | 四虎视频在线精品免费网址| 精品国产一区二区三区四区在线观看| 97成人免费视频| 亚洲综合免费观看高清完整版在线| 少妇熟女视频一区二区三区| 在线亚洲一区| 色综合视频二区偷拍在线| 久久精品资源| 高清欧美一区二区三区| 色av男人的天堂免费在线| 在线视频欧美精品| 成人在线观看免费完整| 成人视屏免费看| www.日日操| 亚洲精品va| 九九99玖玖| 高清在线一区| 国模视频一区二区三区| 国产片在线观看| 日韩欧美123| 日本精品入口免费视频| 亚洲欧美激情插| 黄色国产在线观看| 捆绑调教一区二区三区| 国产精彩视频一区二区| 欧美欧美黄在线二区| 91久久在线播放| 在线能看的av网址| www.久久色.com| 污污的视频网站在线观看| 欧美日韩一二区| 豆国产97在线 | 亚洲| 国产日韩影视精品| 一级全黄裸体片| 蜜臀久久99精品久久久画质超高清 | 亚洲一区二区偷拍精品| 夫妇交换中文字幕| 成人av手机在线观看| 黄色免费观看视频网站| 欧美福利视频| 亚洲成人午夜在线| baoyu135国产精品免费| 国产精品99久久久久久久久 | 国产美女搞久久| 爱啪啪综合导航| 久久精品国产亚洲7777| 青青草在线视频免费观看| 精品日韩成人av| 国产精品福利电影| 色狠狠桃花综合| 国产区在线观看视频| 最新高清无码专区| 色噜噜噜噜噜噜| 91色porny在线视频| 国产乱淫av片| 国产精品主播直播| www.色就是色.com| 日本伊人午夜精品| 欧美污视频网站| 日韩一级大片| 欧美日韩不卡在线视频| 亚洲乱码国产乱码精品| 中文字幕永久在线不卡| 舐め犯し波多野结衣在线观看| 波多野结衣在线aⅴ中文字幕不卡| 在线a免费观看| 精品无人码麻豆乱码1区2区| 三级在线视频观看| 肉肉av福利一精品导航| 凹凸国产熟女精品视频| 国产精品主播| 成人一对一视频| 1024成人| a级黄色一级片| 国产欧美一区二区三区国产幕精品| 青青在线视频免费观看| 欧美va天堂在线| 国产专区在线视频| 欧美日韩国产高清| 日本人妻伦在线中文字幕| 一区二区三区四区电影| 永久免费在线看片视频| 91精品一区国产高清在线gif| 一本久久a久久精品vr综合| 四虎成人av| 中文字幕日韩一区二区三区| 91精品天堂福利在线观看| 欧美一级黄色录像片| 欧美在线高清| 成年在线观看视频| 在线成人亚洲| 欧美黄色免费影院| 日本欧美一区二区在线观看| 中文字幕在线观看第三页| 麻豆精品精品国产自在97香蕉| 亚洲图色中文字幕| 福利91精品一区二区三区| 大尺度做爰床戏呻吟舒畅| 6080亚洲理论片在线观看| 亚洲男人7777| 97在线观看免费观看高清| 精品国模在线视频| 丁香花在线观看完整版电影| 久久露脸国产精品| 性欧美超级视频| 91精品视频在线| 91成人精品在线| 日本一区二区三区四区在线观看 | 精品亚洲国产视频| 国产高清av在线| 久久久精品免费| 高清在线视频不卡| 国产精品视频大全| 亚洲综合色婷婷在线观看| 韩国成人一区| 日韩免费特黄一二三区| www.国产亚洲| 性色一区二区三区| 国产大片一区二区三区| fc2成人免费人成在线观看播放| 四虎国产精品成人免费入口| 亚洲视频一区在线观看| 日韩欧美三级视频| 欧美日韩国产在线播放网站| 成人毛片视频免费看| 亚洲日本成人女熟在线观看| 国产区在线看| 日韩av免费在线| 日韩精品免费视频一区二区三区| 欧美高清视频一区| 欧美精品三级| 动漫av免费观看| 成人一级片在线观看| 日本猛少妇色xxxxx免费网站| 亚洲国产综合在线| 在线观看色网站| 日韩美女av在线| a毛片在线播放| 欧亚精品在线观看| 天堂久久av| 亚洲国产精品久久久久久女王| 好看的亚洲午夜视频在线| 777视频在线| 久久综合久久综合久久综合| 玖玖爱这里只有精品| 欧洲生活片亚洲生活在线观看| 蜜桃av噜噜一区二区三区麻豆| 亚洲欧美国产视频| 丰乳肥臀在线| 成人黄色网免费| 激情综合网站| 国产精品网站免费| 丁香婷婷深情五月亚洲| 久久久精品少妇| 在线免费视频一区二区| 午夜视频www| 欧美精品激情在线观看| 激情综合五月| 中文字幕免费在线不卡| 青娱乐精品在线视频| 国产美女喷水视频| 亚洲成人精品一区| www.热久久| 欧美成在线观看| 欧美黄视频在线观看| 美女黄色片网站| 国产真实乱对白精彩久久| 久久久久亚洲AV成人无在| 日韩欧美综合在线视频| 亚洲欧美综合一区二区| 欧美精品久久一区二区 | 日韩免费福利电影在线观看| 日本精品在线| 国产女同一区二区| 大片网站久久| 精品日韩久久久| 欧美国产一区视频在线观看| 中国a一片一级一片| 亚洲欧美在线一区二区| www.com.cn成人| 专区另类欧美日韩| 国产精品第七页| 精品福利视频导航| 神马一区二区三区| 8x拔播拔播x8国产精品| 久本草在线中文字幕亚洲| 色欲色香天天天综合网www| 成人性生交大片免费看中文| 国产亚洲精品久久久久久打不开| 精品免费日韩av| 福利影院在线看| 玛丽玛丽电影原版免费观看1977| 老司机一区二区三区| 亚洲v国产v欧美v久久久久久| 欧美系列一区二区| 精品视频在线一区二区| 亚洲专区在线视频| 亚洲经典在线看| 免费在线观看你懂的| 欧美日韩一区 二区 三区 久久精品| 免费网站看v片在线a| 97久久夜色精品国产九色| 亚洲国产欧美国产综合一区| 国产精品久久不卡| 在线一区二区视频| 成人国产免费电影| 国产精品日韩一区二区三区| 亚洲一区二区免费看| 成人性视频免费看| 精品久久久久久久久久久久包黑料| 成人性生交大片免费看网站| 欧美日韩精品免费看| 美国三级日本三级久久99| 久草网在线观看| 国产午夜精品一区理论片飘花| 欧美一级免费| 精品国产一区三区| 中文字幕+乱码+中文字幕一区| 99久久国产热无码精品免费| 97视频网站入口| 日韩久久精品网| 喷水视频在线观看| 欧美高清激情brazzers| 国产又色又爽又黄刺激在线视频| 欧美日产一区二区三区在线观看| 久久99精品视频| 六月丁香在线视频| 久久精品99久久久香蕉| 色综合久久中文| 波多野结衣网页| 日本韩国一区二区三区| 日本乱理伦在线| 亚洲国产欧洲综合997久久| 成人夜色视频网站在线观看| 伊人久久成人网| 97在线免费观看视频|