在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入理解Linux內(nèi)核協(xié)議棧 Surftrace對(duì)網(wǎng)絡(luò)報(bào)文增強(qiáng)處理

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:系統(tǒng)運(yùn)維 SIG ? 2022-05-12 17:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

文/系統(tǒng)運(yùn)維 SIG

Surftrace 是由系統(tǒng)運(yùn)維 SIG 推出的一個(gè) ftrace 封裝器和開發(fā)編譯平臺(tái),讓用戶既能基于 libbpf 快速構(gòu)建工程進(jìn)行開發(fā),也能作為 ftrace 的封裝器進(jìn)行 trace 命令編寫。項(xiàng)目包含 Surftrace 工具集和 pylcc、glcc(python or generic C language for libbpf Compiler Collection),提供遠(yuǎn)程和本地 eBPF 的編譯能力。
通過對(duì) krobe 和 ftrace 相關(guān)功能最大化抽象,同時(shí)對(duì)各種場景下的追蹤能力增強(qiáng)(比如網(wǎng)絡(luò)協(xié)議抓包),使得用戶非常快速的上手,對(duì)定位問題效率提升 10 倍以上。另外,現(xiàn)如今火到天際的技術(shù)——eBPF,Surftrace 支持通過 libbpf 及 CO-RE 能力,對(duì) bpf 的 map 和 prog 等常用函數(shù)進(jìn)行了封裝和抽象,基于此平臺(tái)開發(fā)的 libbpf 程序可以無差別運(yùn)行在各個(gè)主流內(nèi)核版本上,開發(fā)、部署和運(yùn)行效率提升了一個(gè)數(shù)量級(jí)。

Surftrace 最大的優(yōu)勢在于將當(dāng)前主流的 trace 技術(shù)一并提供給廣大開發(fā)者,可以通過 ftrace 也可以使用 eBPF,應(yīng)用場景覆蓋內(nèi)存、IO 等 Linux 各個(gè)子系統(tǒng),特別是在網(wǎng)絡(luò)協(xié)議棧跟蹤上面,對(duì) skb 內(nèi)部數(shù)據(jù)結(jié)構(gòu),網(wǎng)絡(luò)字節(jié)序處理做到行云流水,把復(fù)雜留給自己,簡單留給你。今天就讓我們來見識(shí)一下 Surftrace 在網(wǎng)絡(luò)領(lǐng)域的強(qiáng)勁表現(xiàn)吧。

一、理解 Linux 內(nèi)核協(xié)議棧

定位網(wǎng)絡(luò)問題是一個(gè)軟件開發(fā)者必備一項(xiàng)基礎(chǔ)技能,諸如 ping 連通性、tcpdump 抓包分析等手段,可以對(duì)網(wǎng)絡(luò)問題進(jìn)行初步定界。然而,當(dāng)問題深入內(nèi)核協(xié)議棧內(nèi)部,如何將網(wǎng)絡(luò)報(bào)文與內(nèi)核協(xié)議棧清晰關(guān)聯(lián)起來,精準(zhǔn)追蹤到關(guān)注的報(bào)文行進(jìn)路徑呢?

1.1 網(wǎng)絡(luò)報(bào)文分層結(jié)構(gòu)

引用自《TCP/IP 詳解》卷一。59277468-d1b0-11ec-bce3-dac502259ad0.png如上圖所示,網(wǎng)絡(luò)報(bào)文對(duì)數(shù)據(jù)報(bào)文數(shù)據(jù)在不同層進(jìn)行封裝。不同 OS 均采用一致的報(bào)文封裝方式,達(dá)到跨軟件平臺(tái)通訊的目的。

1.2 sk_buff 結(jié)構(gòu)體

sk_buff 是網(wǎng)絡(luò)報(bào)文在 Linux 內(nèi)核中的實(shí)際承載者,它在 include/linux/skbuff.h 文件中定義,結(jié)構(gòu)體成員較多,本文不逐一展開。

59614242-d1b0-11ec-bce3-dac502259ad0.png

用戶需要重點(diǎn)關(guān)注下面兩個(gè)結(jié)構(gòu)體成員:
unsignedchar *head, *data;
其中 head 指向了緩沖區(qū)開始,data 指向了當(dāng)前報(bào)文處理所在協(xié)議層的起始位置,如當(dāng)前協(xié)議處理位于 tcp 層,data 指針就會(huì)指向 struct tcphdr。在 IP 層,則指向了struct iphdr。因此,data 指針成員,是報(bào)文在內(nèi)核處理過程中的關(guān)鍵信標(biāo)。

1.3 內(nèi)核網(wǎng)絡(luò)協(xié)議棧地圖

下圖是協(xié)議棧處理地圖,可以保存后放大觀看(圖源網(wǎng)絡(luò))。597104f2-d1b0-11ec-bce3-dac502259ad0.png

不難發(fā)現(xiàn),上圖中幾乎所有函數(shù)都涉及到 skb 結(jié)構(gòu)體處理,因此要想深入了解網(wǎng)絡(luò)報(bào)文在內(nèi)核的處理過程,skb->data 應(yīng)該就是最理想的引路蜂。

二、Surftrace 對(duì)網(wǎng)絡(luò)報(bào)文增強(qiáng)處理

Surftrace 基于 ftrace 封裝,采用接近于 C 語言的參數(shù)語法風(fēng)格,將原來繁瑣的配置流程優(yōu)化到一行命令語句完成,極大簡化了 ftrace 部署步驟,是一款非常方便的內(nèi)核追蹤工具。但是要追蹤網(wǎng)絡(luò)報(bào)文,光解析一個(gè) skb->data 指針是遠(yuǎn)遠(yuǎn)不夠的。存在以下障礙:
  • skb->data 指針在不同網(wǎng)絡(luò)層指向的協(xié)議頭并不固定;
  • 除了獲取當(dāng)前結(jié)構(gòu)內(nèi)容,還有獲取上一層報(bào)文內(nèi)容的需求,比如一個(gè)我們?cè)?udphdr結(jié)構(gòu)體中,是無法直接獲取到 udp 報(bào)文內(nèi)容;
  • 源數(shù)據(jù)呈現(xiàn)不夠人性化。如 ipv4 報(bào)文 IP 是以一個(gè) u32 數(shù)據(jù)類型,可讀性不佳,過濾器配置困難。
針對(duì)上述困難,Surftrace 對(duì) skb 傳參做了相應(yīng)的特殊處理,以達(dá)到方便易用的效果。

2.1 網(wǎng)絡(luò)協(xié)議層標(biāo)記處理

以追蹤網(wǎng)協(xié)議棧報(bào)文接收的入口__netif_receive_skb_core 函數(shù)為例,函數(shù)原型定義:
staticint__netif_receive_skb_core(struct sk_buff *skb, bool pfmemalloc,  struct packet_type **ppt_prev);
解析每個(gè) skb 對(duì)應(yīng)報(bào)文三層協(xié)議成員的方法:
surftrace 'p __netif_receive_skb_core proto=@(struct iphdr *)l3%0->protocol`
協(xié)議成員獲取方法為@(struct iphdr *)l3%0->protocol59a2aa3e-d1b0-11ec-bce3-dac502259ad0.pngtips:
  • 可以跨協(xié)議層向上解析報(bào)文結(jié)構(gòu)體,如在 l3 層去分析 struct icmphdr 中的數(shù)據(jù)成員
  • 不可以跨協(xié)議層向下解析報(bào)文結(jié)構(gòu)體,如在 l4 層去分析 struct iphdr 中的成員

2.2 擴(kuò)充下一層報(bào)文內(nèi)容獲取方式

surftrace 為 ethhdr、iphdr、icmphdr、udphdr、tcphdr 結(jié)構(gòu)體添加了 xdata 成員,用于獲取下一層報(bào)文內(nèi)容。xdata 有以下 5 類類型:
數(shù)據(jù) 數(shù)據(jù)類型 數(shù)據(jù)長度(字節(jié))
cdata unsgined char [] 1
sdata unsigned short [] 2
ldata unsigned int [] 4
qdata unsigned long long [] 8
Sdata char* [] 字符串
數(shù)組下標(biāo)是按照位寬進(jìn)行對(duì)齊的,比如要提取 icmp 報(bào)文中的 2~3 字節(jié)內(nèi)容,組成一個(gè) unsigned short 的數(shù)據(jù),可以通過以下方法獲取:
data=@(struct icmphdr*)l3%0->sdata[1]

2.3 IP 和字節(jié)序模式轉(zhuǎn)換

網(wǎng)絡(luò)報(bào)文字節(jié)序采取的是大端模式,而我們的操作系統(tǒng)一般采用小端模式。同時(shí),ipv4 采用了一個(gè) unsigned int 數(shù)據(jù)類型來表示一個(gè) IP,而我們通常習(xí)慣采用 1.2.3.4 的方式來表示一個(gè) ipv4 地址。上述差異導(dǎo)致直接去解讀網(wǎng)絡(luò)報(bào)文內(nèi)容的時(shí)候非常費(fèi)力。surftrace 通過往變量增加前綴的方式,在數(shù)據(jù)呈現(xiàn)以及過濾的時(shí)候,將原始數(shù)據(jù)根據(jù)前綴命名規(guī)則進(jìn)行轉(zhuǎn)換,提升可讀性和便利性。
前綴名 數(shù)據(jù)輸出形式 數(shù)據(jù)長度(字節(jié))
ip_ a.b.c.d ip字符串
b16_ 10 進(jìn)制 2
b32_ 10 進(jìn)制 4
b64_ 10 進(jìn)制 8
B16_ 16 進(jìn)制 2
B32_ 16 進(jìn)制 4
B64_ 16 進(jìn)制 8

2.4 牛刀小試

我們?cè)谝粋€(gè)實(shí)例上抓到一個(gè)非預(yù)期的 udp 報(bào)文,它會(huì)往目標(biāo) ip 10.0.1.221 端口號(hào) 9988 發(fā)送數(shù)據(jù),現(xiàn)在想要確定這個(gè)報(bào)文的發(fā)送進(jìn)程。由于 udp 是一種面向無連接的通訊協(xié)議,無法直接通過 netstat 等方式鎖定發(fā)送者。用 Surftrace 可以在 ip_output 函數(shù)處中下鉤子:
intip_output(struct net *net, struct sock *sk, struct sk_buff *skb)
追蹤表達(dá)式:
surftrace 'p ip_output proto=@(struct iphdr*)l3%2->protocol ip_dst=@(struct iphdr*)l3%2->daddr b16_dest=@(struct udphdr*)l3%2->dest comm=$comm body=@(struct udphdr*)l3%2->Sdata[0] f:proto==17&&ip_dst==10.0.1.221&&b16_dest==9988'
追蹤結(jié)果:
surftrace 'p ip_output proto=@(struct iphdr*)l3%2->protocol ip_dst=@(struct iphdr*)l3%2->daddr b16_dest=@(struct udphdr*)l3%2->dest comm=$comm body=@(struct udphdr*)l3%2->Sdata[0] f:proto==17&&ip_dst==10.0.1.221&&b16_dest==9988' echo 'p:f0 ip_output proto=+0x9(+0xe8(%dx)):u8 ip_dst=+0x10(+0xe8(%dx)):u32 b16_dest=+0x16(+0xe8(%dx)):u16 comm=$comm body=+0x1c(+0xe8(%dx)):string' >> /sys/kernel/debug/tracing/kprobe_events echo 'proto==17&&ip_dst==0xdd01000a&&b16_dest==1063' > /sys/kernel/debug/tracing/instances/surftrace/events/kprobes/f0/filter echo 1 > /sys/kernel/debug/tracing/instances/surftrace/events/kprobes/f0/enable echo 0 > /sys/kernel/debug/tracing/instances/surftrace/options/stacktrace echo 1 > /sys/kernel/debug/tracing/instances/surftrace/tracing_on <...>-2733784 [014] .... 12648619.219880: f0: (ip_output+0x0/0xd0) proto=17 ip_dst=10.0.1.221 b16_dest=9988 comm="nc" body="Hello World!  @"
通過上述命令,可以確定報(bào)文的發(fā)送的 pid 為 2733784,進(jìn)程名為 nc。

三、實(shí)戰(zhàn):定位網(wǎng)絡(luò)問題

接下來我們從一個(gè)實(shí)際網(wǎng)絡(luò)網(wǎng)絡(luò)問題出發(fā),講述如何采用 Surftrace 定位網(wǎng)絡(luò)問題。

3.1 問題背景

我們有兩個(gè)實(shí)例通訊存在性能問題,經(jīng)抓包排查,確認(rèn)性能上不去的根因是存在丟包導(dǎo)致的。幸運(yùn)的是,該問題可以通過 ping 對(duì)端復(fù)現(xiàn),確認(rèn)丟包率在 10% 左右。59d5903e-d1b0-11ec-bce3-dac502259ad0.png通過進(jìn)一步抓包分析,可以明確報(bào)文丟失在實(shí)例 B 內(nèi)部。5a21c97c-d1b0-11ec-bce3-dac502259ad0.png通過檢查 /proc/net/snmp 以及分析內(nèi)核日志,沒有發(fā)現(xiàn)可疑的地方。

3.2 surftrace 跟蹤

在 1.1 節(jié)的地圖中,我們可以查到網(wǎng)絡(luò)報(bào)文是內(nèi)核由 dev_queue_xmit 函數(shù)將報(bào)文推送到網(wǎng)卡驅(qū)動(dòng)。因此,可以在這個(gè)出口先進(jìn)行 probe,過濾 ping 報(bào)文,加上 -s 選項(xiàng),打出調(diào)用棧:
surftrace 'p dev_queue_xmit proto=@(struct iphdr *)l2%0->protocol ip_dst=@(struct iphdr *)l2%0->daddr f:proto==1&&ip_dst==192.168.1.3' -s
可以獲取到以下調(diào)用棧:5a355636-d1b0-11ec-bce3-dac502259ad0.png由于問題復(fù)現(xiàn)概率比較高,我們可以將懷疑的重點(diǎn)方向先放在包發(fā)送流程中,即從 icmp_echo 函數(shù)往上,用 Surftrace 在每一個(gè)符號(hào)都加一個(gè) trace 點(diǎn),追蹤下回包到底消失在哪里。5a6529d8-d1b0-11ec-bce3-dac502259ad0.png

3.3 鎖定丟包點(diǎn)

問題追蹤到了這里,對(duì)于經(jīng)驗(yàn)豐富的同學(xué)應(yīng)該是可以猜出丟包原因。我們不妨純粹從代碼角度出發(fā),再找一下準(zhǔn)確的丟包位置。結(jié)合代碼分析,我們可以在函數(shù)內(nèi)部找到以下兩處 drop 點(diǎn):5aa8352a-d1b0-11ec-bce3-dac502259ad0.png通過 Surftrace 函數(shù)內(nèi)部追蹤功能,結(jié)合匯編代碼信息,可以明確丟包點(diǎn)是出在了 qdisc->enqueue 鉤子函數(shù)中。
rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK;
此時(shí),可以結(jié)合匯編信息:5abca974-d1b0-11ec-bce3-dac502259ad0.png找到鉤子函數(shù)存入的寄存名為 bx,然后通過 surftrace 打印出來。
surftrace 'p dev_queue_xmit+678 pfun=%bx'
然后將 pfun 值在 /proc/kallsyms 查找匹配。5b1217c4-d1b0-11ec-bce3-dac502259ad0.png至此可以明確是 htb qdisc 導(dǎo)致丟包。確認(rèn)相關(guān)配置存在問題后,將相關(guān)配置回退,網(wǎng)絡(luò)性能得以恢復(fù)。

四、總結(jié)

Surftrace 在網(wǎng)絡(luò)層面的增強(qiáng),使得用戶只需要有相關(guān)的網(wǎng)絡(luò)基礎(chǔ)和一定的內(nèi)核知識(shí)儲(chǔ)備,就可以用較低編碼工作量達(dá)到精準(zhǔn)追蹤網(wǎng)絡(luò)報(bào)文在 Linux 內(nèi)核的完整處理過程。適合用于追蹤 Linux 內(nèi)核協(xié)議棧代碼、定位深層次網(wǎng)絡(luò)問題。


原文標(biāo)題:龍蜥開源內(nèi)核追蹤利器 Surftrace:協(xié)議包解析效率提升 10 倍! | 龍蜥技術(shù)

文章出處:【微信公眾號(hào):Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1415

    瀏覽量

    41314
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11506

    瀏覽量

    213415
  • 封裝器
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    5941

原文標(biāo)題:龍蜥開源內(nèi)核追蹤利器 Surftrace:協(xié)議包解析效率提升 10 倍! | 龍蜥技術(shù)

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux內(nèi)核網(wǎng)絡(luò)協(xié)議技術(shù)解讀

    Netfilter 是報(bào)文內(nèi)核協(xié)議必然會(huì)通過的路徑,我們從下面這張圖就可以看到,Netfilter 在內(nèi)核的 5 個(gè)地方設(shè)置了 HOOK
    發(fā)表于 11-16 12:27 ?1583次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核網(wǎng)絡(luò)</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>技術(shù)解讀

    深入理解和實(shí)現(xiàn)RTOS_連載

    臺(tái)系統(tǒng)相比較,多任務(wù)可以理解為有多個(gè)后臺(tái)程序的前后臺(tái)系統(tǒng),其中的每個(gè)任務(wù)都專注自己處理的問題,而這些任務(wù)間則需要處理一下彼此的溝通問題......深入理解和實(shí)現(xiàn)RTOS_連載3_多任務(wù)
    發(fā)表于 05-29 11:20

    深入理解和實(shí)現(xiàn)RTOS_連載

    ,其中的每個(gè)任務(wù)都專注自己處理的問題,而這些任務(wù)間則需要處理一下彼此的溝通問題......深入理解和實(shí)現(xiàn)RTOS_連載3_多任務(wù)機(jī)制設(shè)計(jì)前面我們已經(jīng)介紹過了在單核處理器上的多任務(wù)機(jī)制的
    發(fā)表于 05-30 01:02

    深入理解Linux內(nèi)核 中文版+英文原版

    深入理解Linux內(nèi)核 中文版+英文原版 經(jīng)典之作
    發(fā)表于 05-17 08:18

    深入理解LINUX內(nèi)存管理》學(xué)習(xí)筆記

    深入理解LINUX內(nèi)存管理》學(xué)習(xí)筆記1
    發(fā)表于 11-07 10:20

    深入理解Linux網(wǎng)絡(luò)技術(shù)內(nèi)幕》(EN)

    深入理解Linux網(wǎng)絡(luò)技術(shù)內(nèi)幕》(EN)
    發(fā)表于 02-06 15:17

    對(duì)深入理解

    為什么要深入理解?做C語言開發(fā)如果設(shè)置不合理或者使用不對(duì),就會(huì)溢出,溢出就會(huì)遇到無法預(yù)測亂飛現(xiàn)象。所以對(duì)
    發(fā)表于 02-15 07:01

    為什么要深入理解

    [導(dǎo)讀] 從這篇文章開始,將會(huì)不定期更新關(guān)于嵌入式C語言編程相關(guān)的個(gè)人認(rèn)為比較重要的知識(shí)點(diǎn),或者踩過的坑。為什么要深入理解?做C語言開發(fā)如果設(shè)置不合理或者使用不對(duì),就會(huì)溢出,溢出
    發(fā)表于 02-15 06:09

    深入理解LINUX內(nèi)核(中文版)_ 陳莉君/馮銳/牛欣源譯

    電子發(fā)燒友網(wǎng)站提供《深入理解LINUX內(nèi)核(中文版)_ 陳莉君/馮銳/牛欣源譯.txt》資料免費(fèi)下載
    發(fā)表于 02-11 11:16 ?0次下載

    深入理解Android網(wǎng)絡(luò)編程

    深入理解Android網(wǎng)絡(luò)編程
    發(fā)表于 03-19 11:26 ?1次下載

    米爾科技深入理解LINUX內(nèi)核簡介

    為了透徹理解Linux的工作機(jī)理,以及為何它在各種系統(tǒng)上能順暢運(yùn)行,你需要深入內(nèi)核的心臟。
    的頭像 發(fā)表于 11-25 09:34 ?2016次閱讀
    米爾科技<b class='flag-5'>深入理解</b><b class='flag-5'>LINUX</b><b class='flag-5'>內(nèi)核</b>簡介

    米爾科技Linux網(wǎng)絡(luò)技術(shù)內(nèi)幕淺談

    Linux如此的流行正是得益于它的特性豐富及有效的網(wǎng)絡(luò)協(xié)議。如果你曾經(jīng)驚嘆于Linux能夠?qū)崿F(xiàn)如此復(fù)雜的工作,或者你只是想通過現(xiàn)實(shí)中的例子
    的頭像 發(fā)表于 11-25 09:24 ?1657次閱讀
    米爾科技<b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>技術(shù)內(nèi)幕淺談

    Linux網(wǎng)絡(luò)技術(shù)中最核心的部分--TCP/IP協(xié)議

    今天給大家介紹Linux網(wǎng)絡(luò)技術(shù)中最核心的部分--TCP/IP協(xié)議 。 我們先看一下抽象的網(wǎng)絡(luò)協(xié)議
    的頭像 發(fā)表于 06-29 15:14 ?2535次閱讀

    STM32編程:是時(shí)候深入理解了<一>

    為什么要深入理解?做C語言開發(fā)如果設(shè)置不合理或者使用不對(duì),就會(huì)溢出,溢出就會(huì)遇到無法預(yù)測亂飛現(xiàn)象。所以對(duì)
    發(fā)表于 01-26 17:55 ?2次下載
    STM32編程:是時(shí)候<b class='flag-5'>深入理解</b><b class='flag-5'>棧</b>了<一>

    Linux網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)

    請(qǐng)求并與底層的網(wǎng)絡(luò)硬件進(jìn)行交互。本文將深入探討 Linux 網(wǎng)絡(luò)協(xié)議的架構(gòu)與實(shí)現(xiàn),涵蓋數(shù)據(jù)包
    的頭像 發(fā)表于 09-10 09:51 ?664次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>的實(shí)現(xiàn)
    主站蜘蛛池模板: 久久亚洲国产精品五月天 | 欧美亚洲网站 | 欧美色图亚洲 | 在线视频一本 | 4455永久在线毛片观看 | 亚洲www在线| 麻豆美女大尺度啪啪 | 都市激情亚洲综合 | 日日干夜夜操s8 | 日本在线不卡视频 | 免费又黄又爽1000禁片 | 亚洲不卡网 | 天天精品 | 毛片网站免费在线观看 | 亚洲成年人影院 | 一二三区在线观看 | 色拍拍综合网 | 狠狠色婷婷丁香六月 | 欧美一级精品高清在线观看 | 色猫av| 未成人禁止视频高清在线观看 | 美女被上视频 | ww免费视频 | 女人18毛片水多 | 国产精品综合色区在线观看 | 日日插天天操 | 欧美在线1 | 日本不卡视频在线视频观看 | 亚洲黄色成人 | 超级极品白嫩美女在线 | 午夜精品久久久久久99热 | 六月婷婷综合激情 | va在线观看| 日本口工全彩无遮拦漫画大 | 天天色天天爽 | 123456成年免费视频 | 黄色午夜影院 | 日本三级免费网站 | av免费网站在线观看 | 一级特黄高清完整大片 | 亚洲一区二区在线播放 |