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

DeepFlow 是如何通過 Wasm Plugin 實現業務可觀測性?

開發 前端
今天我們來聊一下可觀測性領域的核心項目—— DeepFlow,即 “基于 eBPF 和 Wasm 技術,實現 Zero Code(零侵擾)和 Full Stack (全棧)的可觀測性” 。

一、如何定義 DeepFlow Wasm Plugin ?

DeepFlow 的 Wasm Plugin 機制是整個 DeepFlow Pipeline 機制中的重要組成部分,它為用戶提供了一個可編程的、安全的和資源消耗可控的運行沙箱環境。此機制為 deepflow-agent 增加了靈活性和可擴展性,使用戶能夠以一種安全可靠的方式自定義和擴展代理的功能。

1、Wasm Plugin 機制為用戶提供了可編程性

通過使用 Wasm 編程語言,用戶可以編寫自定義的插件邏輯,以滿足特定的需求和應用場景。這種可編程性使得用戶能夠根據具體的業務需求,對流量進行更細粒度的處理和分析。用戶可以通過編寫自定義的 Wasm 模塊來實現特定的協議解析、數據處理、安全策略等功能,從而高度定制化代理的行為。

2、Wasm Plugin 機制提供了安全性

Wasm Plugin 運行在一個安全的沙箱環境中,這意味著插件的執行受到嚴格的限制和監控,以確保其不會對代理的穩定性和安全性造成威脅。Wasm 的設計理念和安全機制使得插件的運行受到嚴格的隔離,防止惡意插件對代理或底層系統進行攻擊或濫用資源。這種安全性保證了代理的運行環境的可信度和可靠性。

3、Wasm Plugin 機制還具有資源消耗可控性

通過限制插件的資源使用,例如 CPU 時間、內存等,Agent 可以有效地控制插件的運行消耗,以避免插件對代理性能產生不利影響。這種資源消耗可控性使得代理能夠在處理大規模流量時保持高效和穩定,避免因插件的運行而引起的性能下降或崩潰。

綜上,DeepFlow Wasm Plugin 機制通過增強原生支持的協議、支持私有協議解析、提供零侵擾分布式追蹤和自定義脫敏功能等,為用戶提供了更強大和靈活的工具。這些增強功能使得用戶能夠深入分析和處理協議數據,滿足不同業務場景需求,并提升系統的性能、安全性和可擴展性。

二、DeepFlow Wasm Plugin 到底是如何工作的?

在深入了解 Wasm Plugin 的執行流程之前,建議先對 Deepflow 協議解析有一個基本的認識。了解 Deepflow 協議解析的概念和原理可以為理解 Wasm Plugin 的執行流程提供有益的背景知識。

當我們提及 Wasm Plugin 時,通常作用于 Web 瀏覽器中執行高性能的計算任務,而 Deepflow 協議解析則涉及到數據傳輸和處理的協議層面。通過深入了解 Deepflow 協議解析,我們可以更好地理解 Wasm Plugin 在數據傳輸和處理過程中的作用和應用。因此,在探討 Wasm Plugin 的執行流程之前,對 Deepflow 協議解析進行一個基本的認識是非常有幫助的,它為我們建立起了一個更完整和全面的技術背景,使我們能夠更好地理解和應用 Wasm  Plugin 的相關概念和功能。

在 deepflow-agent 中,數據包從原始字節轉化為應用層結構的過程涉及以下幾個關鍵階段。在這些階段中,我們會使用到一些重要的數據結構和接口,它們發揮著關鍵的作用,具體可參考:

1、L7Protocol(第七層協議):其源碼位于 l7_protocol.rs 文件中。L7Protocol 用于標識不同的協議常量,例如 HTTP、HTTPS、DNS 等。通過使用 L7Protocol,我們可以在流量中準確地識別和標記不同的應用層協議。

2、L7ProtocolParser(第七層協議解析器):其源碼位于 l7_protocol_log.rs 文件中。這個 trait 主要用于協議的判斷和解析,它能夠根據特定的規則和模式,從流量數據中解析出 L7ProtocolInfo(第七層協議信息)。L7ProtocolParser 的實現類可以根據具體的協議特征,進行解析和識別,從而獲得有關協議的詳細信息。

3、L7ProtocolInfo(第七層協議信息):其源碼位于 l7_protocol_info.rs 文件中。L7ProtocolInfo 是由 L7ProtocolParser 解析出來的數據結構,它包含了有關協議的詳細信息,例如協議類型、協議版本、源IP地址、目標IP地址等。L7ProtocolInfo 在后續的會話聚合和分析中發揮著重要的作用。

4、L7ProtocolInfoInterface(第七層協議信息接口):其源碼同樣位于 l7_protocol_info.rs 文件中。所有的 L7ProtocolInfo 都需要實現這個接口,以提供一致的方法和屬性。通過實現 L7ProtocolInfoInterface,我們可以對協議信息進行統一的操作和處理,以滿足后續的需求。

5、L7ProtocolSendLog(發送到深度流分析服務器的第七層協議日志):其源碼位于 pb_adapter.rs 文件中。L7ProtocolSendLog 是一個結構體,用于將解析后的第七層協議信息統一發送到深度流分析服務器。通過使用 L7ProtocolSendLog,我們可以將協議信息傳遞給服務器進行進一步的處理和分析。

通過以上組件和接口的協同工作,deepflow-agent 能夠準確地識別和解析不同的應用層協議,并將相關的協議信息發送到 deepflow-server器,為后續的流量分析和應用提供有價值的數據基礎。這些組件和接口的設計和實現,為 deepflow-agent 的功能和性能提供了堅實的基礎。

綜上所述,針對 Deepflow 協議解析而言,其整體的流程可概括為如下:

了解完 Deepflow 的協議解析后,我們回到 Wasm plugin,Wasm plugin 整體的執行流程如下所示:

針對上述執行流程結構,其中序列化/反序列化的結構主要涉及如下6個,具體可參考如下:

  • VmCtxBase

在目前所有的 Export 函數調用的時候,host 會將 VmCtxBase 序列化到線性內存,序列化的格式參考:vm.rs#L199

同樣地,instance 也會反序列化,具體代碼可以參考:mod.rs#L152

  • L7ProtocolInfo

在 Export 函數 parse_payload 最后,instance 會序列化 L7ProtocolInfo 到線性內存,

host 也會反序列化。

  • VmHttpReqCtx

在 http 請求解析完成返回之前,會調用 Export 函數 on_http_req,host 會序列化 VmCtxBase 和 VmHttpReqCtx 到 instance 的線性內存

VmHttpReqCtx 的序列化的代碼和格式可以參考:vm.rs#L328instance 反序列化的代碼參考:serde.go#L173

  • VmHttpRespCtx

在 http 響應解析完成返回之前,會調用 Export 函數 on_http_resp,host 會序列化 VmCtxBase 和 VmHttpRespCtx 到 instance 的線性內存

VmHttpRespCtx 的序列化的格式參考:vm.rs#L395

instance 反序列化的代碼參考:serde.go#L232

  • Trace,[]KeyVal

在 Export 函數 on_http_req/on_http_resp 返回之前,instance 會將 Trace 和 []KeyVal 序列化到線性內存

序列化的代碼和格式可以參考:serde.go#L515

反序列化的代碼和格式可參考:abi_import.rs#L376

三、如何基于 Golang SDK 開發 DeepFlow Wasm Plugin ?

通常而言,Wasm Plugin 可支持多種語言進行開發。這里,我們以 Golang 為例,簡要解析如何使用 Golang 快速開發 Wasm Plugin。需要注意的是,本項目中 Golang SDK 編譯需要用到 TinyGo 工具鏈。

為什么需要 TinyGo ?

TinyGo 是一個專門為嵌入式設備和 WebAssembly(Wasm)環境設計的 Go 編程語言工具鏈。它是 Go 語言的一個輕量級替代品,旨在在資源受限的環境中運行和編譯 Go 代碼。

TinyGo 的目標是提供一個高效的 Go 編譯器和運行時環境,以便在小型設備和嵌入式系統上運行 Go 程序。相較于標準的 Go 編譯器,TinyGo 優化了編譯輸出的大小和性能,以適應資源受限的環境。這使得開發者可以使用 Go 語言的簡潔性和強大的工具生態系統來構建嵌入式系統、物聯網設備和其他資源有限的應用。

除了針對嵌入式設備,TinyGo 還支持 WebAssembly,使得開發者可以使用 Go 語言編寫的代碼在 Web 瀏覽器環境中運行。這使得開發者可以在瀏覽器中直接運行高性能的 Go 代碼,從而擴展了 Go 語言的應用范圍。

 針對 Wasm Plugin 的開發實現,我們可以參考:https://deepflow.io/docs/zh/integration/process/wasm-plugin/,其關鍵步驟主要涉及如下,具體:

1、 獲取 Golang SDK 進行項目創建

go mod init {ProjectName} 
go get github.com/deepflowio/deepflow-wasm-go-sdk

需要注意的是:確保在執行這些命令之前,已經正確設置了 Go 開發環境,并且可以訪問 GitHub。

2、 實現協議解析邏輯

package main


import (
        "github.com/deepflowio/deepflow-wasm-go-sdk/sdk"
)


func main(){
    sdk.Warn("plugin loaded")
    sdk.SetParser(SomeParser{})
}


type SomeParser struct {
}


func (p SomeParser) HookIn() []sdk.HookBitmap {
        return []sdk.HookBitmap{
                // 一般只需要 hook 協議解析
                sdk.HOOK_POINT_PAYLOAD_PARSE,
        }
}


func (p SomeParser) OnHttpReq(ctx *sdk.HttpReqCtx) sdk.Action {
        return sdk.ActionNext()
}


func (p SomeParser) OnHttpResp(ctx *sdk.HttpRespCtx) sdk.Action {
        return sdk.ActionNext()
}


func (p SomeParser) OnCheckPayload(ctx *sdk.ParseCtx) (uint8, string) {
    // 這里是協議判斷的邏輯, 返回 0 表示失敗
    // return 0, ""
    return 1, "some protocol"
}


func (p SomeParser) OnParsePayload(ctx *sdk.ParseCtx) sdk.Action {
    // 這里是解析協議的邏輯
    if ctx.L4 != sdk.TCP|| ctx.L7 != 1{
                return sdk.ActionNext()
    }
    return sdk.ActionNext()
}

注:以上是一個簡單的插件示例,展示了如何使用 "deepflowio/deepflow-wasm-go-sdk" 庫來開發自定義的插件,并實現不同的回調函數來處理網絡數據包。在實際的業務場景中,我們可以根據自己的需求進一步擴展和修改這些回調函數的實現邏輯,以滿足自身的場景訴求。  

3、編譯為 Wasm Plugin

# 建議 go 版本不低于1.21,tinygo 版本不低于 0.29
tinygo  build -o wasm.wasm  -target wasi -gc=precise -panic=trap -scheduler=none -no-debug *.go

執行命令后,將會生成名為"wasm.wasm"的WebAssembly文件,可以在支持 WebAssembly 的環境中加載和運行。

Wasm Plugin 開發完后,我們需要將其部署至 DeepFlow 中,針對 Wasm Plugin 的部署主要涉及如下步驟:

1、將編譯好的插件上傳至 Deepflow-Server

deepflow-ctl plugin create  --type wasm --image wasm.wasm --name wasm-devops

執行命令后,Deepflow-ctl 將會創建一個名為"wasm-devops"的 WebAssembly 插件,并將指定的 WebAssembly 文件作為插件的執行代碼。我們可以根據需要進一步配置和管理這個插件。  

2、Agent 端加載 Wasm Plugin

static_config:
  ebpf:
    # 對于 deepflow-agent 原生不支持的協議, eBPF 數據需要添加端口白名單才能上報
    kprobe-whitelist:
      port-list: 9999


  # 如果配置了 l7-protocol-enabled,別忘了放行 Custom 類型的協議
  l7-protocol-enabled:
  - Custom
  # other protocol


  wasm-plugins:
    - wasm-devops // 對應 deepflow-ctl 上傳插件的名稱

注:目前修改此配置后 deepflow-agent 會自動重啟。

3、驗證是否成功加載

kubectl -n deepflow logs -f deepflow-agent-xxxxx | grep -i plugin

至此,一個 Wasm Plugin 已成功開發完成,并應用至我們的業務場景中。

四、案例分享 - 解析 JSON 中的錯誤信息

在此案例中,被監控 HTTP API 的響應消息為 JSON 格式,當 API 出錯時 HTTP 協議的狀態碼可能仍然是 200,確切的錯誤信息通過 JSON 中的 OPT_STATUS 等字段返回:

{  "OPT_STATUS": "AUTH_HEADER_ERROR",   // 不等于 SUCCESS 時表示調用失敗  
   "DESCRIPTION": "請傳遞正確的驗證頭信息", // 詳細錯誤信息  
   ... // 其他返回字段
}

查閱 API 文檔后我們得知,OPT_STATUS 的值不等于 SUCCESS 時表示 API 調用失敗。在常規的 DeepFlow 解析流程中,會按照如下方式構造 HTTP 調用日志的各個字段:

  • response_code:賦值為 HTTP 響應頭中的狀態碼,例如 200、404、500 等
  • response_status:狀態碼小于 400 時認為正常,4XX 認為是客戶端異常,5XX 認為是服務端異常
  • response_exception:賦值為 HTTP 異常狀態碼對應的英文解釋,例如 404 時此字段賦值為 Not Found
  • response_result:當 HTTP 狀態碼為異常時賦值為整個 HTTP Payload

當我們安裝了 Wasm 插件后,我們可以在上述解析的基礎上,將失敗 API 的調用日志中的如下字段進行覆寫,以實現正確體現業務錯誤的效果:

  • response_code:當 JSON 中 OPT_STATUS != SUCCESS、且 HTTP 狀態碼小于 400 時,此值覆寫為 500
  • response_status:按照新的 response_code 重新賦值,例如 500 時賦值為服務端異常
  • response_exception:當 JSON 中的 OPT_STATUS != SUCCESS時覆寫為 DESCRIPTION 字段的值
  • response_result:當 response_code 大于等于 400 時賦值為整個 JSON Payload

我們將 Wasm 插件代碼放到了這個 GitHub 倉庫中。上述 API 行為描述的實際上是 DeepFlow 企業版中的 statistics 服務,下面演示將此 Wasm 插件注入到 DeepFlow Agent 以后,對 DeepFlow 企業版服務的自我觀測效果。首先我們在命令行中觸發一次 statistics 服務的 API 調用:

# 請求
curl https://cloud.deepflow.io/api/statistics/v1/stats/querier/DBDescription/ShowDatabases


# HTTP 響應頭
HTTP/2 401
date: Tue, 22 Aug 2023 01:44:29 GMT
content-type: application/json
content-length: 152


# HTTP 響應體
{
  "DATA": false,
  "DESCRIPTION": "請傳遞正確的驗證頭信息",
  "ERR": null,
  "LEVEL": 0,
  "OPT_STATUS": "AUTH_HEADER_ERROR"
}

上述 API 響應中,HTTP 的狀態碼為 401,OPT_STATUS=AUTH_HEADER_ERROR。我們能在 DeepFlow 頁面正確的看到客戶端異常指標(本例中插件注入在 cloud.deepflow K8s 集群的 deepflow-agent 中):

在 DeepFlow 調用日志頁面,可以看到客戶端異常的調用日志的詳情信息,整個 JSON body 放在了 response_result里面:

對該調用發起追蹤,能看到是因為fauths返回的 401 異常:

下面是詳細的調用鏈。第一步發起 DNS 請求:

第二步調用后端服務驗證 License:

第三步發起 DNS 請求 fauths 服務的地址:

第四步調用 fauth 的 /auth API 驗證權限,中間需要訪問 Redis 獲取用戶信息:

上述案例展示了 DeepFlow 中Wasm Plugin 機制的強大能力,使得在實際業務場景中能夠輕松解決問題的跟蹤、定位和分析。

通過使用自定義的 Wasm Plugin,我們可以針對特定需求開發定制化的功能,如解析 JSON 中的錯誤信息。這種能力使得我們能夠在流量處理過程中靈活地捕捉和處理問題,無論是在調試階段還是在生產環境中。

使用 DeepFlow 的 Wasm Plugin 機制,我們可以輕松地擴展原生協議的解析能力,提取更多的業務信息。特別是對于私有協議,如 Protobuf 和 Thrift,我們可以通過自定義插件來解析這些依賴 Schema 的 Payload 內容,從中提取關鍵的業務字段。這為我們深入了解協議數據提供了便利,使得我們能夠更好地理解和利用數據。

責任編輯:華軒 來源: 架構驛站
相關推薦

2023-10-13 13:40:29

2023-11-01 06:55:05

人工智能可觀測性IT

2023-10-26 08:47:30

云原生數據采集

2021-05-04 18:28:23

Apache KafkSigNoz開源

2023-01-09 11:23:03

系統

2023-03-09 08:00:22

2023-05-18 22:44:09

2022-06-07 13:48:25

可觀測性架構系統開發

2024-03-27 14:43:07

.NET Core后端監控可觀測性

2024-05-28 09:37:48

2023-08-21 09:37:57

MySQL工具MariaDB

2023-09-20 16:11:32

云原生分布式系統

2022-07-05 15:50:25

Kubernetes工具DevOps
點贊
收藏

51CTO技術棧公眾號

成人在线免费观看网站| 美女一区网站| 懂色av一区二区三区蜜臀| 欧美日韩高清在线观看| 人妻丰满熟妇aⅴ无码| 国产一区二区主播在线| 一区二区不卡在线播放 | 天堂网成人在线| 国产亚av手机在线观看| 久久视频一区二区| 91免费看网站| 中文字幕xxxx| 欧美久久成人| 在线日韩中文字幕| 少妇一级淫免费观看| 精品九九久久| 欧美性xxxxx极品| 欧美另类videosbestsex日本| 日本电影一区二区在线观看| 国产一区欧美日韩| 国产精品18久久久久久麻辣| 久久久久97国产| 日韩精品一区二区三区免费观影 | 精品精品导航| 国产精品无码永久免费888| 国产成人一区二区三区免费看| 日本黄色中文字幕| 国产欧美一区二区三区国产幕精品| 日韩中文字幕精品| 97人妻人人揉人人躁人人| 高潮按摩久久久久久av免费| 正在播放亚洲一区| 99视频精品免费| 松下纱荣子在线观看| 亚洲已满18点击进入久久| 亚洲巨乳在线观看| 黄色美女网站在线观看| av在线一区二区三区| 91一区二区三区| 国产伦理一区二区| 欧美96一区二区免费视频| 啪一啪鲁一鲁2019在线视频| 国产精品久久久久久久妇| 国产精品chinese| 欧美大胆在线视频| 亚洲综合视频网站| 亚洲成av人片乱码色午夜| 综合国产在线视频| 国产wwwwxxxx| 色婷婷一区二区三区| 自拍视频国产精品| 亚洲人做受高潮| 久久视频在线| 久久精品国产电影| 在线观看亚洲网站| 午夜天堂精品久久久久| 美女扒开尿口让男人操亚洲视频网站| 日本 欧美 国产| 999国产精品| 欧美成人午夜影院| 久久久久无码国产精品不卡| 亚洲视频综合| 韩国视频理论视频久久| 青草视频在线观看免费| 久久精品系列| 国产精品视频26uuu| 中文字幕人妻一区二区在线视频| 三级不卡在线观看| 国产精品自拍偷拍| 国产乱淫a∨片免费视频| 国产一区二三区好的| 1卡2卡3卡精品视频| 黄片毛片在线看| 成人精品视频一区二区三区| 国产在线精品二区| 狠狠v欧美ⅴ日韩v亚洲v大胸| 久久精品视频一区| 伊人久久av导航| 性欧美video高清bbw| 午夜精品久久久久久久99樱桃| 18岁网站在线观看| 日韩经典一区| 91精品一区二区三区在线观看| 在线播放第一页| 青青久久av| 社区色欧美激情 | 久草视频在线资源| 爽爽淫人综合网网站| 成人日韩av在线| 亚洲aaa在线观看| 国产精品女主播av| 欧美视频在线第一页| 亚洲校园激情春色| 欧美一区二区三区在线| 国产真实乱人偷精品| 日韩精品诱惑一区?区三区| 欧美黄色性视频| 波多野结衣电车痴汉| 国产麻豆精品在线观看| 久久久综合亚洲91久久98| 男女啪啪在线观看| 欧美日韩激情视频| 91小视频在线播放| 综合亚洲自拍| 欧美国产日韩免费| 一级特黄免费视频| 成人动漫一区二区在线| 亚洲国产日韩欧美| 在线女人免费视频| 精品国产成人在线影院 | 色喇叭免费久久综合网| 97视频免费看| 99热这里是精品| 国产欧美一区二区精品婷婷| 97超碰国产精品| 国产精品99久久久久久董美香| 精品成人免费观看| 日韩av手机在线免费观看| 免费欧美日韩| 国产精品欧美久久| 成人日韩欧美| 欧美色网站导航| 一区二区三区免费在线观看视频| 在线观看免费一区二区| 国产精品久久久久久久7电影| 成人毛片在线免费观看| 亚洲欧洲国产日韩| 中文字幕国产免费| 精品av一区二区| 8050国产精品久久久久久| 精品乱子伦一区二区| 中文字幕一区二区三区视频| 超碰影院在线观看| 大香伊人久久精品一区二区 | 色屁屁www国产馆在线观看| 欧美体内she精视频| 亚洲黄色免费视频| 首页欧美精品中文字幕| 精品国产中文字幕| 国产精品论坛| 亚洲激情免费观看| 国产无码精品久久久| 成人性视频网站| aa视频在线播放| 开心激情综合| 97高清免费视频| 欧美一级性视频| 午夜久久福利影院| 国产黄色三级网站| 国产一区二区你懂的| 明星裸体视频一区二区| 97成人资源| 亚洲香蕉伊综合在人在线视看| www.国产毛片| 亚洲国产成人自拍| 国产精品久久a| 亚洲精品小说| y111111国产精品久久婷婷| 污污视频在线| 亚洲а∨天堂久久精品喷水| 久久精品视频国产| 久久久影视传媒| 亚洲欧美激情网| 日韩精品一卡| 91在线播放国产| 日本高清在线观看| 日韩成人在线免费观看| 国产亚洲欧美在线精品| 国产精品久久午夜夜伦鲁鲁| 中文字幕免费高清在线| 国产精品99免费看| 免费一区二区三区在在线视频| 校园春色亚洲色图| 中文字幕自拍vr一区二区三区| 国产欧美久久久精品免费| 亚洲一二三区视频在线观看| 四虎永久免费影院| 毛片不卡一区二区| 亚洲乱码日产精品bd在线观看| 另类在线视频| 国产精品一区二区三区久久| 日本aa在线| 国产午夜精品免费一区二区三区| 91成人一区二区三区| 亚洲尤物视频在线| 欧美高清性xxxx| 久久精品国产免费看久久精品| 在线观看17c| 亚洲伊人春色| 亚洲字幕一区二区| gay欧美网站| 久久久精品国产一区二区| 内射无码专区久久亚洲| 欧美影院午夜播放| 久久精品国产亚洲av香蕉| 欧美韩国一区二区| 少妇伦子伦精品无吗| 肉色丝袜一区二区| 僵尸世界大战2 在线播放| 欧美中文一区二区| 超碰97在线播放| 成人免费一区| 亚洲91精品在线| av免费在线观看网址| 亚洲欧美日韩视频一区| www香蕉视频| 欧美三级日韩三级国产三级| 国产精品6666| 亚洲免费观看高清完整版在线 | 日韩精品视频一二三| 亚洲性感美女99在线| 亚洲福利av| 欧美男人操女人视频| 91最新国产视频| 78精品国产综合久久香蕉| 国模精品视频一区二区三区| 免费黄色网址在线观看| 亚洲欧美综合v| 色哟哟中文字幕| 91精品国产入口| 国产精品午夜一区二区| 狠狠干狠狠久久| 国产一级av毛片| 亚洲视频一二区| 日本女人性生活视频| 2019国产精品| 黄色av网址在线观看| 国产精品888| 亚洲一二三av| 激情文学综合丁香| 日韩一级理论片| 日本中文字幕一区二区视频| 欧美三级在线观看视频| 亚洲无线视频| 97免费视频观看| 欧美在线不卡| 六月婷婷激情网| 性xxxx欧美老肥妇牲乱| 亚洲欧洲一二三| 日韩在线二区| 亚洲一区二区高清视频| 99精品在线| 制服丝袜综合日韩欧美| 999精品一区| 公共露出暴露狂另类av| 久久裸体网站| 2021狠狠干| 欧美激情第10页| 国产激情在线看| 欧美特黄一区| 可以看毛片的网址| 99国产成+人+综合+亚洲欧美| 丰满少妇大力进入| 中文精品在线| 国产一区亚洲二区三区| 久久综合影视| 特级丰满少妇一级| 久久99国产精品免费网站| 中文字幕亚洲影院| 国产一区二区三区免费看 | 欧美成人久久久| а天堂中文在线官网| 欧美肥婆姓交大片| 国产精品论坛| 国产精品免费电影| 国产在线一区不卡| 国产伦精品一区二区三区免 | 国产不卡视频在线播放| 9.1在线观看免费| 99久精品国产| 超薄肉色丝袜一二三| 亚洲欧美视频一区| 精品无码一区二区三区电影桃花| 精品久久在线播放| 亚洲精品一区二三区| 在线播放国产精品二区一二区四区| 精品美女www爽爽爽视频| 亚洲国产天堂久久国产91 | 中文字幕一区二区三区在线播放 | 天堂а√在线资源在线| 欧美高清无遮挡| 欧美色网一区| 亚洲专区中文字幕| 一道本一区二区三区| 亚洲最新免费视频| 99亚洲一区二区| 国产高清视频网站| 成人激情文学综合网| 欧美激情 一区| 亚洲福利一区二区| 亚洲精品一区二三区| 精品粉嫩超白一线天av| 国产香蕉在线| 久久免费少妇高潮久久精品99| 亚洲成人不卡| 超碰97在线播放| 日韩欧美一区二区三区在线视频 | 日本不卡视频在线| 极品白嫩的小少妇| 欧美—级在线免费片| 精品无码久久久久| 欧美日韩成人综合| 男女网站在线观看| 欧美激情视频一区二区三区不卡| 影视一区二区三区| 国产高清精品一区二区| 日韩电影二区| 国产精品自拍片| 国产精品996| 婷婷社区五月天| 日韩欧美在线中文字幕| 亚洲国产精品suv| 精品国产欧美一区二区五十路| 欧美gv在线| 国产精品国产精品| 在线精品视频在线观看高清| 国产精品无码一本二本三本色| 成人国产精品免费观看| 看免费黄色录像| 欧美另类久久久品| yiren22亚洲综合伊人22| 欧美性做爰毛片| 高清日韩中文字幕| 成人在线观看毛片| 国产老妇另类xxxxx| 成人欧美一区二区三区黑人一| 色婷婷av一区| 视频一区二区在线播放| 久久久久在线观看| 一区二区三区四区精品视频| 亚洲免费视频播放| 国产精品原创巨作av| 欧美爱爱免费视频| 在线成人免费视频| 日韩在线免费电影| 91精品久久久久久久久久另类 | 2020国产成人综合网| 中文字幕一区二区三区手机版| 日韩一级片网址| 青春草在线视频| 成人动漫在线观看视频| 欧美日韩亚洲三区| 岛国av免费观看| 亚洲午夜精品在线| 黄色av中文字幕| 97久久精品人搡人人玩| 久久资源综合| 亚欧无线一线二线三线区别| 99re这里都是精品| 在线观看免费国产视频| 亚洲国产日韩精品在线| 国产中文在线播放| 欧美极品jizzhd欧美| 久久久精品性| 少妇av片在线观看| 91精品一区二区三区在线观看| www.久久ai| 懂色一区二区三区av片| 亚洲日本免费| 亚洲av无码一区二区二三区| 一本大道久久精品懂色aⅴ| www.亚洲.com| 91视频国产一区| 精品二区久久| 极品白嫩丰满美女无套| 日本久久电影网| 美女隐私在线观看| av免费观看久久| 久久蜜桃资源一区二区老牛| 超薄肉色丝袜一二三| 日韩一区二区三区视频| 爱草tv视频在线观看992| 欧美久久电影| 精东粉嫩av免费一区二区三区| 日本中文在线视频| 亚洲福利在线视频| **在线精品| 欧美xxxx吸乳| 菠萝蜜视频在线观看一区| 97人妻一区二区精品视频| 久久成人免费视频| 网曝91综合精品门事件在线| 亚洲黄色av网址| 亚洲国产精品人人做人人爽| 黄色免费在线播放| 亚洲专区国产精品| 久久精品一本| 欧美精品99久久久| 亚洲小视频在线| 9l视频自拍九色9l视频成人| 日本成人在线免费视频| 一区二区三区在线免费播放| 日韩电影在线观看完整版| 91青草视频久久| 麻豆成人在线| 国产一卡二卡在线播放| 日韩有码在线观看| 日韩有码中文字幕在线| 一二三av在线| 91黄色在线观看|