日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大规模微服务利器:eBPF + Kubernetes

發(fā)布時間:2024/4/11 编程问答 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大规模微服务利器:eBPF + Kubernetes 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

hi, 大家好,微服務(wù),云原生近來大熱,在企業(yè)積極進行數(shù)字化轉(zhuǎn)型,全面提升效率的今天,幾乎無人否認(rèn)云原生代表著云計算的“下一個時代”,IT大廠們都不約而同的將其視為未來云應(yīng)用的發(fā)展方向,從網(wǎng)絡(luò)方向來看,eBPF可能會成為“為云而生”下一代網(wǎng)絡(luò)技術(shù),今天分享一篇經(jīng)典eBPF文章,希望大家喜歡。

譯者序

本文翻譯自 2020 年 Daniel Borkmann 在 KubeCon 的一篇分享: eBPF and Kubernetes: Little Helper Minions for Scaling Microservices, 視頻見油管。翻譯已獲得 Daniel 授權(quán)。

Daniel 是 eBPF 兩位 maintainer 之一,目前在 eBPF commits 榜單上排名第一,也是 Cilium 的核心開發(fā)者之一。

本文內(nèi)容的時間跨度有 8 年,覆蓋了 eBPF 發(fā)展的整個歷史,非常值得一讀。時間限制, Daniel 很多地方只是點到,沒有展開。譯文中加了一些延展閱讀,有需要的同學(xué)可以參考。

由于譯者水平有限,本文不免存在遺漏或錯誤之處。如有疑問,請查閱原文。

http://arthurchiao.art/blog/ebpf-and-k8s-zh


  • 譯者序

  • 1 eBPF 正在吞噬世界

    • 1.1 Kubernetes 已經(jīng)是云操作系統(tǒng)

    • 1.2 兩個清晰的容器技術(shù)趨勢

  • 2 內(nèi)核面臨的挑戰(zhàn)

    • 2.1 復(fù)雜度性不斷增長,性能和可擴展性新需求

    • 2.2 永遠保持后向兼容

    • 2.3 Feature creeping normality

  • 3 eBPF 降世:重新定義數(shù)據(jù)平面(datapth)

  • 4 eBPF 長什么樣,怎么用?Cilium eBPF networking 案例研究

    • 4.1 Cilium eBPF 流程

    • 4.2 eBPF 特點

  • 5 溫故:kube-proxy 包轉(zhuǎn)發(fā)路徑

  • 6 知新:Cilium eBPF 包轉(zhuǎn)發(fā)路徑

  • 7 eBPF 年鑒

    • 不知疲倦的增長和 eBPF 的第三個方向:Linux security modules

    • bpftrace

    • BPF 專著《BPF Performance Tools》

    • Cilium 1.6 發(fā)布

    • BPF live-patching

    • 第一次 bpfconf:受邀請才能參加的 BPF 內(nèi)核專家會議

    • BPF backend 合并到 GCC

    • Cilium 1.0 發(fā)布

    • BTF(Byte Type Format)

    • Linux Plumbers 會議開辟 BPF/XDP 主題

    • 新 socket 類型:AF_XDP

    • bpffilter

    • eBPF 成為內(nèi)核獨立子系統(tǒng)

    • kTLS & eBPF

    • bpftool & libbpf

    • BPF to BPF function calls

    • eBPF 開始大規(guī)模應(yīng)用于生產(chǎn)環(huán)境

    • eBPF 添加了一個新 fast path:XDP

    • Cilium 項目發(fā)布

    • eBPF 分成兩個方向:networking & tracing

    • eBPF backend 合并到 LLVM 3.7

    • 支持將 eBPF attach 到 kprobes

    • 通過 cls_bpf,tc 變得完全可編程

    • 為 tc 添加了一個 lockless ingress & egress hook 點

    • 添加了很多 verifer 和 eBPF 輔助代碼(helper)

    • bcc 項目發(fā)布

    • 第一個 eBPF patch 合并到內(nèi)核

    • Kubernetes 提交第一個 commit

    • 前浪工具和子系統(tǒng)

    • eBPF 與前浪的區(qū)別

    • eBPF:第一個(巨型)patch

    • 2013

    • 2014

    • 2015

    • 2016

    • 2017

    • 2017 ~ 2018

    • 2018

    • 2018 ~ 2019

    • 2019 ~ 2020

  • 8 eBPF:過去 50 年操作系統(tǒng)最大的變革

  • 9 eBPF 數(shù)字榜單(截至 2020.07)

  • 10 業(yè)界趨勢

  • 11 eBPF 革命:燃燒到 Kubernetes 社區(qū)

    • 網(wǎng)絡(luò)吞吐

    • CPU 利用率

    • 東西向流量

    • 南北向流量

    • 11.1 干掉 kube-proxy/iptables

    • 11.2 Cilium 的 Service load balancing 設(shè)計

    • 11.3 XDP/eBPF vs kube-proxy 性能對比

  • 12 eBPF 和 Kubernetes:未來展望

  • 13 結(jié)束語

以下是譯文。


1 eBPF 正在吞噬世界

1.1 Kubernetes 已經(jīng)是云操作系統(tǒng)

Kubernetes 正在吞噬世界(eating the world)。越來越多的企業(yè)開始遷移到容器平臺上 ,而 Kubernetes 已經(jīng)是公認(rèn)的云操作系統(tǒng)(Cloud OS)。從技術(shù)層面來說,

  • Linux 內(nèi)核是一切的堅實基礎(chǔ),例如,內(nèi)核提供了 cgroup、namespace 等特性。

  • Kubernetes CNI 插件串聯(lián)起了關(guān)鍵路徑(critical path)上的組件。例如,從網(wǎng)絡(luò)的 視角看,包括,

    • 廣義的 Pod 連通性:一個容器創(chuàng)建之后,CNI 插件會給它創(chuàng)建網(wǎng)絡(luò)設(shè)備,移動到容 器的網(wǎng)絡(luò)命名空間。

    • IPAM:CNI 向 IPAM 發(fā)送請求,為容器分配 IP 地址,然后配置路由。

    • Kubernetes 的 Service 處理和負載均衡功能。

    • 網(wǎng)絡(luò)策略的生效(network policy enforcement)。

    • 監(jiān)控和排障。

    1.2 兩個清晰的容器技術(shù)趨勢

    今天我們能清晰地看到兩個技術(shù)發(fā)展趨勢:

  • 容器的部署密度越來越高(increasing Pod density)。

  • 容器的生命周期越來越短(decreasing Pod lifespan)。甚至短到秒級或毫秒級。

  • 大家有興趣的可以查閱相關(guān)調(diào)查:

    • CNCF’19 survey report

    • sysdig’19 container usage report

    2 內(nèi)核面臨的挑戰(zhàn)

    從操作系統(tǒng)內(nèi)核的角度看,我們面臨很多挑戰(zhàn)。

    2.1 復(fù)雜度性不斷增長,性能和可擴展性新需求

    內(nèi)核,或者說通用內(nèi)核(general kernel),必須在子系統(tǒng)復(fù)雜度不斷增長( increasing complexity of kernel subsystems)的前提下,滿足這些性能和可擴展性?需求(performance & scalability requirements)。

    2.2 永遠保持后向兼容

    Linus torvalds 的名言大家都知道:never break user space。

    這對用戶來說是好事,但對內(nèi)核開發(fā)者來說意味著:我們必須保證在引入新代碼時,五年前 甚至十幾年前的老代碼仍然能正常工作。

    顯然,這會使原本就復(fù)雜的內(nèi)核變得更加復(fù)雜,對于網(wǎng)絡(luò)來說,這意味著快速收發(fā)包路徑 (fast path)將受到影響。

    2.3 Feature creeping normality

    開發(fā)者和用戶不斷往內(nèi)核加入新功能,導(dǎo)致內(nèi)核非常復(fù)雜,現(xiàn)在已經(jīng)沒有一個人能理解所有東西了。

    Wikipedia 對 creeping normality 的定義:

    Def. creeping normality: … is a process by which a major change can be accepted as normal and acceptable if it happens slowly through small, often unnoticeable, increments of change. The change could otherwise be regarded as objectionable if it took place in a single step or short period.

    應(yīng)用到這里,意思就是:內(nèi)核不允許一次性引入非常大的改動,只能將它們拆 分成數(shù)量眾多的小 patch,每次合并的 patch 保證系統(tǒng)后向兼容,并且對系統(tǒng)的影響非 常小。

    來看 Linus torvalds 的原話:

    Linus Torvalds on crazy new kernel features:

    So I can work with crazy people, that’s not the problem. They just need to?sell?their crazy stuff to me using non-crazy arguments, and in small and well-defined pieces. When I ask for killer features, I want them to lull me into a safe and cozy world where the stuff they are pushing is actually useful to mainline people?first.

    In other words, every new crazy feature should be hidden in a nice solid “Trojan Horse” gift: something that looks?obviously?good at first sight.

    Linus Torvalds,

    https://lore.kernel.org/lkml/alpine.LFD.2.00.1001251002430.3574@localhost.localdomain/

    3 eBPF 降世:重新定義數(shù)據(jù)平面(datapth)

    這就是我們最開始想將 eBPF 合并到內(nèi)核時遇到的問題:改動太大,功能太新(a crazy new kernel feature)。

    但是,eBPF 帶來的好處也是無與倫比的。

    首先,從長期看,eBPF 這項新功能會減少未來的 feature creeping normality。因為用戶或開發(fā)者希望內(nèi)核實現(xiàn)的功能,以后不需要再通過改內(nèi)核的方式來實現(xiàn)了。只需要一段 eBPF 代碼,實時動態(tài)加載到內(nèi)核就行了。

    其次,因為 eBPF,內(nèi)核也不會再引入那些影響 fast path 的蹩腳甚至 hardcode 代碼 ,從而也避免了性能的下降。

    第三,eBPF 還使得內(nèi)核完全可編程,安全地可編程(fully and safely programmable ),用戶編寫的 eBPF 程序不會導(dǎo)致內(nèi)核 crash。另外,eBPF 設(shè)計用來解決真實世界 中的線上問題,而且我們現(xiàn)在仍然在堅守這個初衷。

    4 eBPF 長什么樣,怎么用?Cilium eBPF networking 案例研究

    eBPF 程序長什么樣?如下圖所示,和 C 語言差不多,一般由用戶空間 application 或 agent 來生成。

    4.1 Cilium eBPF 流程

    下面我們將看看 Cilium 是如何用 eBPF 實現(xiàn)容器網(wǎng)絡(luò)方案的。

    如上圖所示,幾個步驟:

  • Cilium agent?生成 eBPF 程序。

  • 用 LLVM 編譯 eBPF 程序,生成 eBPF 對象文件(object file,*.o)。

  • 用 eBPF loader?將對象文件加載到 Linux 內(nèi)核。

  • 校驗器(verifier)對 eBPF 指令會進行合法性驗證,以確保程序是安全的,例如 ,無非法內(nèi)存訪問、不會 crash 內(nèi)核、不會有無限循環(huán)等。

  • 對象文件被即時編譯(JIT)為能直接在底層平臺(例如 x86)運行的 native code。

  • 如果要在內(nèi)核和用戶態(tài)之間共享狀態(tài),BPF 程序可以使用 BPF map,這種一種共享存儲?,BPF 側(cè)和用戶側(cè)都可以訪問。

  • BPF 程序就緒,等待事件觸發(fā)其執(zhí)行。對于這個例子,就是有數(shù)據(jù)包到達網(wǎng)絡(luò)設(shè)備時,觸發(fā) BPF 程序的執(zhí)行。

  • BPF 程序?qū)κ盏降陌M行處理,例如 mangle。最后返回一個裁決(verdict)結(jié)果。

  • 根據(jù)裁決結(jié)果,如果是 DROP,這個包將被丟棄;如果是 PASS,包會被送到更網(wǎng)絡(luò)棧的 更上層繼續(xù)處理;如果是重定向,就發(fā)送給其他設(shè)備。

  • 4.2 eBPF 特點

  • 最重要的一點:不能 crash 內(nèi)核。

  • 執(zhí)行起來,與內(nèi)核模塊(kernel module)一樣快。

  • 提供穩(wěn)定的 API。

  • 這意味著什么?簡單來說,如果一段 BPF 程序能在老內(nèi)核上執(zhí)行,那它一定也能繼續(xù)在新 內(nèi)核上執(zhí)行,而無需做任何修改。

    這就像是內(nèi)核空間與用戶空間的契約,內(nèi)核保證對用戶空間應(yīng)用的兼容性,類似地,內(nèi)核也 會保證 eBPF 程序的兼容性。

    5 溫故:kube-proxy 包轉(zhuǎn)發(fā)路徑

    從網(wǎng)絡(luò)角度看,使用傳統(tǒng)的 kube-proxy 處理 Kubernetes Service 時,包在內(nèi)核中的 轉(zhuǎn)發(fā)路徑是怎樣的?如下圖所示:

    步驟:

  • 網(wǎng)卡收到一個包(通過 DMA 放到 ring-buffer)。

  • 包經(jīng)過 XDP hook 點。

  • 內(nèi)核給包分配內(nèi)存,此時才有了大家熟悉的?skb(包的內(nèi)核結(jié)構(gòu)體表示),然后 送到內(nèi)核協(xié)議棧。

  • 包經(jīng)過 GRO 處理,對分片包進行重組。

  • 包進入 tc(traffic control)的 ingress hook。接下來,所有橙色的框都是 Netfilter 處理點。

  • Netfilter:在?PREROUTING?hook 點處理?raw?table 里的 iptables 規(guī)則。

  • 包經(jīng)過內(nèi)核的連接跟蹤(conntrack)模塊。

  • Netfilter:在?PREROUTING?hook 點處理?mangle?table 的 iptables 規(guī)則。

  • Netfilter:在?PREROUTING?hook 點處理?nat?table 的 iptables 規(guī)則。

  • 進行路由判斷(FIB:Forwarding Information Base,路由條目的內(nèi)核表示,譯者注) 。接下來又是四個 Netfilter 處理點。

  • Netfilter:在?FORWARD?hook 點處理?mangle?table 里的 iptables 規(guī)則。

  • Netfilter:在?FORWARD?hook 點處理?filter?table 里的 iptables 規(guī)則。

  • Netfilter:在?POSTROUTING?hook 點處理?mangle?table 里的 iptables 規(guī)則。

  • Netfilter:在?POSTROUTING?hook 點處理?nat?table 里的 iptables 規(guī)則。

  • 包到達 TC egress hook 點,會進行出方向(egress)的判斷,例如判斷這個包是到本 地設(shè)備,還是到主機外。

  • 對大包進行分片。根據(jù) step 15 判斷的結(jié)果,這個包接下來可能會:

  • 發(fā)送到一個本機 veth 設(shè)備,或者一個本機 service endpoint,

  • 或者,如果目的 IP 是主機外,就通過網(wǎng)卡發(fā)出去。

  • 相關(guān)閱讀,有助于理解以上過程:

  • Cracking Kubernetes Node Proxy (aka kube-proxy)

  • (譯) 深入理解 iptables 和 netfilter 架構(gòu)

  • 連接跟蹤(conntrack):原理、應(yīng)用及 Linux 內(nèi)核實現(xiàn)

  • (譯) 深入理解 Cilium 的 eBPF 收發(fā)包路徑(datapath)

  • 譯者注。

    6 知新:Cilium eBPF 包轉(zhuǎn)發(fā)路徑

    作為對比,再來看下 Cilium eBPF 中的包轉(zhuǎn)發(fā)路徑:

    建議和?(譯) 深入理解 Cilium 的 eBPF 收發(fā)包路徑(datapath)?對照看。

    譯者注。

    對比可以看出,Cilium eBPF datapath 做了短路處理:從 tc ingress 直接 shortcut 到 tc egress,節(jié)省了 9 個中間步驟(總共 17 個)。更重要的是:這個 datapath 繞過了 整個 Netfilter 框架(橘黃色的框們),Netfilter 在大流量情況下性能是很差的。

    去掉那些不用的框之后,Cilium eBPF datapath 長這樣:

    Cilium/eBPF 還能走的更遠。例如,如果包的目的端是另一臺主機上的 service endpoint,那你可以直接在 XDP 框中完成包的重定向(收包?1->2,在步驟?2?中對包 進行修改,再通過?2->1?發(fā)送出去),將其發(fā)送出去,如下圖所示:

    可以看到,這種情況下包都沒有進入內(nèi)核協(xié)議棧(準(zhǔn)確地說,都沒有創(chuàng)建 skb)就被轉(zhuǎn) 發(fā)出去了,性能可想而知。

    XDP 是 eXpress DataPath 的縮寫,支持在網(wǎng)卡驅(qū)動中運行 eBPF 代碼,而無需將包送 到復(fù)雜的協(xié)議棧進行處理,因此處理代價很小,速度極快。

    7 eBPF 年鑒

    eBPF 是如何誕生的呢?我最初開始講起。這里“最初”我指的是 2013 年之前。

    2013

    前浪工具和子系統(tǒng)

    回顧一下當(dāng)時的 “SDN” 藍圖。

  • 當(dāng)時有 OpenvSwitch(OVS)、tc(Traffic control),以及內(nèi)核中的 Netfilter 子系 統(tǒng)(包括?iptables、ipvs、nftalbes?工具),可以用這些工具對 datapath 進行“ 編程”:。

  • BPF 當(dāng)時用于?tcpdump,在內(nèi)核中盡量前面的位置抓包,它不會 crash 內(nèi)核;此 外,它還用于 seccomp,對系統(tǒng)調(diào)用進行過濾(system call filtering),但當(dāng)時 使用的非常受限,遠不是今天我們已經(jīng)在用的樣子。

  • 此外就是前面提到的 feature creeping 問題,以及?tc 和 netfilter 的代碼重復(fù)問題,因為這兩個子系統(tǒng)是競爭關(guān)系。

  • OVS 當(dāng)時被認(rèn)為是內(nèi)核中最先進的數(shù)據(jù)平面,但它最大的問題是:與內(nèi)核中其他網(wǎng) 絡(luò)模塊的集成不好【譯者注 1】。此外,很多核心的內(nèi)核開發(fā)者也比較抵觸 OVS,覺得它很怪。

  • 【譯者注 1】

    例如,OVS 的 internal port、patch port 用 tcpdump 都是?抓不到包的,排障非常不方便。

    eBPF 與前浪的區(qū)別

    對比 eBPF 和這些已經(jīng)存在很多年的工具:

  • tc、OVS、netfilter 可以對 datapath 進行“編程”:但前提是 datapath 知道你想做什 么(but only if the datapath knows what you want to do)。

    • 只能利用這些工具或模塊提供的既有功能。

    • eBPF 能夠讓你創(chuàng)建新的 datapath(eBPF lets you create the datapath instead)。

      • eBPF 就是內(nèi)核本身的代碼,想象空間無限,并且熱加載到內(nèi)核;換句話說,一旦加 載到內(nèi)核,內(nèi)核的行為就變了。

      • 在 eBPF 之前,改變內(nèi)核行為這件事情,只能通過修改內(nèi)核再重新編譯,或者開發(fā)內(nèi) 核模塊才能實現(xiàn)。

      譯者注

      eBPF:第一個(巨型)patch

      • 描述 eBPF 的 RFC 引起了廣泛討論,但普遍認(rèn)為侵入性太強了(改動太大)。

      • 另外,當(dāng)時 nftables (inspired by BPF) 正在上升期,它是一個與 eBPF 有點類似的 BPF 解釋器,大家不想同時維護兩個解釋器。

      最終這個 patch 被拒絕了。

      被拒的另外一個原因是前面提到的,沒有遵循“大改動小提交”原則,全部代碼放到了一個 patch。Linus 會瘋的。

      2014

      第一個 eBPF patch 合并到內(nèi)核

      • 用一個擴展(extended)指令集逐步、全面替換原來老的 BPF 解釋器。

      • 自動新老 BPF 轉(zhuǎn)換:in-kernel translation。

      • 后續(xù) patch 將 eBPF 暴露給 UAPI,并添加了 verifier 代碼和 JIT 代碼。

      • 更多后續(xù) patch,從核心代碼中移除老的 BPF。

      我們也從那時開始,順理成章地成為了 eBPF 的 maintainer。

      Kubernetes 提交第一個 commit

      巧合的是,對后來影響深遠的 Kubernetes,也在這一年提交了第一個 commit:

      2015

      eBPF 分成兩個方向:networking & tracing

      到了 2015 年,eBPF 開發(fā)分成了兩個方向:

      • networking

      • tracing

      eBPF backend 合并到 LLVM 3.7

      這一年的一個重要里程碑是 eBPF backend 合并到了 upstream LLVM 編譯器套件,因此你 現(xiàn)在才能用 clang 編譯 eBPF 代碼。

      支持將 eBPF attach 到 kprobes

      這是 tracing 的第一個使用案例。

      Alexei 主要負責(zé) tracing 部分,他添加了一個 patch,支持加載 eBPF 用來做 tracing, 能獲取系統(tǒng)的觀測數(shù)據(jù)。

      通過 cls_bpf,tc 變得完全可編程

      我主要負責(zé) networking 部分,使 tc 子系統(tǒng)可編程,這樣我們就能用 eBPF 來靈活的對 datapath 進行編程,獲得一個高性能 datapath。

      為 tc 添加了一個 lockless ingress & egress hook 點

      譯注:可參考:

      • 深入理解 tc ebpf 的 direct-action (da) 模式(2020)

      • 為容器時代設(shè)計的高級 eBPF 內(nèi)核特性(FOSDEM, 2021)

      添加了很多 verifer 和 eBPF 輔助代碼(helper)

      使用更方便。

      bcc 項目發(fā)布

      作為 tracing frontend for eBPF。

      2016

      eBPF 添加了一個新 fast path:XDP

      • XDP 合并到內(nèi)核,支持在驅(qū)動的 ingress 層 attach BPF 程序。

      • nfp 最為第一家網(wǎng)卡及驅(qū)動,支持將 eBPF 程序 offload 到 cls_bpf & XDP hook 點。

      Cilium 項目發(fā)布

      Cilium 最開始的目標(biāo)是?docker 網(wǎng)絡(luò)解決方案。

      • 通過 eBPF 實現(xiàn)高效的 label-based policy、NAT64、tunnel mesh、容器連通性。

      • 整個 datapath & forwarding 邏輯全用 eBPF 實現(xiàn),不再需要 Docker 或 OVS 橋接設(shè)備。

      2017

      eBPF 開始大規(guī)模應(yīng)用于生產(chǎn)環(huán)境

      2016 ~ 2017 年,eBPF 開始應(yīng)用于生產(chǎn)環(huán)境:

    • Netflix on eBPF for tracing: ‘Linux BPF superpowers’

    • Facebook 公布了生產(chǎn)環(huán)境 XDP+eBPF 使用案例(DDoS & LB)

      • 用 XDP/eBPF 重寫了原來基于 IPVS 的 L4LB,性能?10x。

      • eBPF 經(jīng)受住了嚴(yán)苛的考驗:從 2017 開始,每個進入 facebook.com 的包,都是經(jīng)過了 XDP & eBPF 處理的。

    • Cloudflare 將 XDP+BPF 集成到了它們的 DDoS mitigation 產(chǎn)品。

      • 成功將其組件從基于 Netfilter 遷移到基于 eBPF。

      • 到 2018 年,它們的 XDP L4LB 完全接管生產(chǎn)環(huán)境。

      • 擴展閱讀:(譯) Cloudflare 邊緣網(wǎng)絡(luò)架構(gòu):無處不在的 BPF(2019)

      譯者注:基于 XDP/eBPF 的 L4LB 原理都是類似的,簡單來說,

    • 通過 BGP 宣告 VIP

    • 通過 ECMP 做物理鏈路高可用

    • 通過 XDP/eBPF 代碼做重定向,將請求轉(zhuǎn)發(fā)到后端(VIP -> Backend)

    • 對此感興趣可參考入門級介紹:L4LB for Kubernetes: Theory and Practice with Cilium+BGP+ECMP

      2017 ~ 2018

      eBPF 成為內(nèi)核獨立子系統(tǒng)

      隨著 eBPF 社區(qū)的發(fā)展,feature 和 patch 越來越多,為了管理這些 patch,Alexei、我和 networking 的一位 maintainer David Miller 經(jīng)過討論,決定將 eBPF 作為獨立的內(nèi)核子 系統(tǒng)。

      • eBPF patch 合并到?bpf?&?bpf-next?kernel trees on git.kernel.org

      • 拆分 eBPF 郵件列表:bpf@vger.kernel.org?(archive at:?lore.kernel.org/bpf/)

      • eBPF PR 經(jīng)內(nèi)核網(wǎng)絡(luò)部分的 maintainer David S. Miller 提交給 Linus Torvalds

      kTLS & eBPF

      kTLS & eBPF for introspection and ability for in-kernel TLS policy enforcement

      kTLS 是將 TLS 處理 offload 到內(nèi)核,例如,將加解密過程從 openssl 下放到內(nèi)核進 行,以使得內(nèi)核具備更強的可觀測性(gain visibility)。

      有了 kTLS,就可以用 eBPF 查看數(shù)據(jù)和狀態(tài),在內(nèi)核應(yīng)用安全策略。?目前 openssl 已經(jīng)完全原生支持這個功能。

      bpftool & libbpf

      為了檢查內(nèi)核內(nèi) eBPF 的狀態(tài)(introspection)、查看內(nèi)核加載了哪些 BPF 程序等, 我們添加了一個新工具 bpftool。現(xiàn)在這個工具已經(jīng)功能非常強大了。

      同樣,為了方便用戶空間應(yīng)用使用 eBPF,我們提供了用戶空間 API(user space API for applications)?libbpf。這是一個 C 庫,接管了所有加載工作,這樣用戶就不需要 自己處理復(fù)雜的加載過程了。

      BPF to BPF function calls

      增加了一個 BPF 函數(shù)調(diào)用另一個 BPF 函數(shù)的支持,使得 BPF 程序的編寫更加靈活。

      2018

      Cilium 1.0 發(fā)布

      這標(biāo)志著?BPF 革命之火燃燒到了 Kubernetes networking & security 領(lǐng)域。

      Cilium 此時支持的功能:

      • K8s CNI

      • Identity-based L3-L7 policy

      • ClusterIP Services

      BTF(Byte Type Format)

      內(nèi)核添加了一個稱為 BTF 的組件。這是一種元數(shù)據(jù)格式,和 DWARF 這樣的 debugging data 類似。但 BTF 的 size 要小的多,而更重要的是,有史以來,內(nèi)核第一次變得可自 描述了(self-descriptive)。什么意思?

      想象一下當(dāng)前正在運行中的內(nèi)核,它內(nèi)置了自己的數(shù)據(jù)格式(its own data format) 和內(nèi)部數(shù)據(jù)結(jié)構(gòu)(internal structures),你能用工具來查看這些東西(you can introspect them)。還是不太懂?這么說吧,BTF 是后來的 “一次編譯、到處運行”、 熱補丁(live-patching)、BPF global data 處理等等所有這些 BPF 特性的基礎(chǔ)。

      新的特性不斷加入,它們都依賴 BTF 提供富元數(shù)據(jù)(rich metadata)這個基礎(chǔ)。

      更多 BTF 內(nèi)容,可參考?(譯) Cilium:BPF 和 XDP 參考指南(2019)

      譯者注

      Linux Plumbers 會議開辟 BPF/XDP 主題

      這一年,Linux Plumbers 會議第一次開辟了專門討論 BPF/XDP 的微型分會,我們 一起組織這場會議。其中,Networking Track 一半以上的議題都涉及 BPF 和 XDP 主題,因為這是一個非常振奮人心的特性,越來越多的人用它來解決實際問題。

      新 socket 類型:AF_XDP

      內(nèi)核添加了一個新 socket 類型?AF_XDP。它提供的能力是:在零拷貝( zero-copy)的前提下將包從網(wǎng)卡驅(qū)動送到用戶空間。

      回憶前面的內(nèi)容,數(shù)據(jù)包到達網(wǎng)卡后,先經(jīng)過 XDP,然后才為這個包分配內(nèi)存。因此在 XDP 層直接將包送到用戶態(tài)是無需拷貝的。

      譯者注

      AF_XDP?提供的能力與 DPDK 有點類似,不過

      • DPDK 需要重寫網(wǎng)卡驅(qū)動,需要額外維護用戶空間的驅(qū)動代碼。

      • AF_XDP?在復(fù)用內(nèi)核網(wǎng)卡驅(qū)動的情況下,能達到與 DPDK 一樣的性能。

      而且由于復(fù)用了內(nèi)核基礎(chǔ)設(shè)施,所有的網(wǎng)絡(luò)管理工具還都是可以用的,因此非常方便, 而 DPDK 這種 bypass 內(nèi)核的方案導(dǎo)致絕大大部分現(xiàn)有工具都用不了了。

      由于所有這些操作都是發(fā)生在 XDP 層的,因此它稱為?AF_XDP。插入到這里的 BPF 代碼 能直接將包送到 socket。

      bpffilter

      開始了 bpffilter prototype,作用是通過用戶空間驅(qū)動(userspace driver),將 iptables 規(guī)則轉(zhuǎn)換成 eBPF 代碼。

      這是將 iptables 轉(zhuǎn)換成 eBPF 的第一次嘗試,整個過程對用戶都是無感知的,其中的某些 組件現(xiàn)在還在用,用于在其他方面擴展內(nèi)核的功能。

      2018 ~ 2019

      bpftrace

      Brendan 發(fā)布了 bpftrace 工具,作為 DTrace 2.0 for Linux。

      BPF 專著《BPF Performance Tools》

      Berendan 寫了一本 800 多頁的 BPF 書。

      Cilium 1.6 發(fā)布

      第一次支持完全干掉基于 iptables 的 kube-proxy,全部功能基于 eBPF。

      這個版本其實是有問題的,例如 1.6 發(fā)布之后我們發(fā)現(xiàn) externalIPs 的實現(xiàn)是有問題 ,社區(qū)在后面的版本修復(fù)了這個問題。在修復(fù)之前,還是得用 kube-proxy:https://github.com/cilium/cilium/issues/9285

      譯者注

      BPF live-patching

      添加了一些內(nèi)核新特性,例如尾調(diào)用(tail call),這使得?eBPF 核心基礎(chǔ) 設(shè)施第一次實現(xiàn)了熱加載。這個功能幫我們極大地優(yōu)化了 datapath。

      另一個重要功能是 BPF trampolines,這里就不展開了,感興趣的可以搜索相關(guān)資料,我只 能說這是另一個振奮人心的技術(shù)。

      第一次 bpfconf:受邀請才能參加的 BPF 內(nèi)核專家會議

      如題,這是 BPF 內(nèi)核專家交換想法和討論問題的會議。與 Linux Plumbers 會議互補。

      BPF backend 合并到 GCC

      前面提到,BPF backend 很早就合并到 LLVM/Clang,現(xiàn)在,它終于合并到 GCC 了。至此,GCC 和 LLVM 這兩個最主要的編譯器套件都支持了 BPF backend。

      此外,BPF 開始支持有限循環(huán)(bounded loops),在此之前,是不支持循環(huán)的,以防止程 序無限執(zhí)行。

      2019 ~ 2020

      不知疲倦的增長和 eBPF 的第三個方向:Linux security modules

      • Google 貢獻了 BPF LSM(安全),部署在了他們的數(shù)據(jù)中心服務(wù)器上。

      • BPF verifier 防護 Spectre 漏洞(2018 年轟動世界的 CPU bug):even verifying safety on speculative program paths。

      • 主流云廠商開始通過 SRIOV 支持 XDP:AWS (ena driver), Azure (hv_netvsc driver), …

      • Cilium 1.8 支持基于 XDP 的 Service 負載均衡和 host network policies。

      • Facebook 開發(fā)了基于 BPF 的 TCP 擁塞控制模塊。

      • Microsoft 基于 BPF 重寫了將他們的 Windows monitoring 工具。

      8 eBPF:過去 50 年操作系統(tǒng)最大的變革

      Brendan 說在他的職業(yè)生涯中,eBPF 是他見過的操作系統(tǒng)中最大的變革之一(one of the biggest operating system changes),他為能身處其中而感到非常興奮。

      我接下來只能用數(shù)字證明:Brendan 的興奮是沒錯的。

      9 eBPF 數(shù)字榜單(截至 2020.07)

      eBPF 內(nèi)核社區(qū)截至 7 月份的一些數(shù)據(jù):

      • 347 個貢獻者,貢獻了 4,935 個 patch 到 BPF 子系統(tǒng)。

      • BPF 內(nèi)核郵件列表日均 50 封郵件 (高峰經(jīng)常超過日均 100)。

        • 23,395 mails since mailing list git archive was added in Feb 2019

      • 每天合并 4 個新 patch。patch 接受率 30% 左右。

      • 30 個程序(different program),27 種 BPF map 類型,141 個 BPF helpers,超過 3,500 個測試。

      • 2 個 BPF kernel maintainers & team of 6 senior core reviewers。

        • 主要貢獻來自:Isovalent(Cilium), Facebook and Google

      毫無疑問,這是內(nèi)核里發(fā)展最快的子系統(tǒng)!

      10 業(yè)界趨勢

      注意貢獻榜排名第一的就是演講者本人,譯者注。

      列舉幾個生產(chǎn)環(huán)境大規(guī)模使用 BPF 的大廠:

      • Facebook:L4LB、DDoS、tracing。

      • Netflix:BPF 重度用戶,例如生產(chǎn)環(huán)境 tracing。

      • Google:Android、服務(wù)器安全以及其他很多方面。

      • Cloudflare:L4LB、DDoS。

      • Cilium

      上圖中,右下角是前 Netfilter 維護者?Rusty Russel 說的一句,業(yè)界對 eBPF 的受認(rèn)可程度可窺一斑。

      11 eBPF 革命:燃燒到 Kubernetes 社區(qū)

      eBPF 已無處不在,而你還在使用 iptables?

      11.1 干掉 kube-proxy/iptables

      不用再忍受 iptables 復(fù)雜冗長的規(guī)則和差勁的性能了,以前沒得選,現(xiàn)在你可以做個好人:

      $ kubectl -n kube-system delete ds kube-proxy

      作為例子,我們來看看 Cilium 是怎么做 Service 的負載均衡的。

      Service 細節(jié)實現(xiàn)可參考 Cracking Kubernetes Node Proxy (aka kube-proxy)。

      譯者注。

      11.2 Cilium 的 Service load balancing 設(shè)計

      如上圖所示,主要涉及兩部分:

    • 在 socket 層運行的 BPF 程序

    • 在 XDP 和 tc 層運行的 BPF 程序

    • 東西向流量

      我們先來看 socker 層。

      如上圖所示,

      Socket 層的 BPF 程序主要處理 Cilium 節(jié)點的東西向流量(E-W)。

      • 將 Service 的?IP:Port?映射到具體的 backend pods,并做負載均衡。

      • 當(dāng)應(yīng)用發(fā)起?connect、sendmsg、recvmsg 等請求(系統(tǒng)調(diào)用)時,攔截這些請求, 并根據(jù)請求的?IP:Port?映射到后端 pod,直接發(fā)送過去。反向進行相反的變換。

      這里實現(xiàn)的好處:性能更高。

      • 不需要包級別(packet leve)的地址轉(zhuǎn)換(NAT)。在系統(tǒng)調(diào)用時,還沒有創(chuàng)建包,因此性能更高。

      • 省去了 kube-proxy 路徑中的很多中間節(jié)點(intermediate node hops)

      可以看出,應(yīng)用對這種攔截和重定向是無感知的(符合 k8s Service 的設(shè)計)。

      南北向流量

      再來看從 k8s 集群外進入節(jié)點,或者從節(jié)點出 k8s 集群的流量(external traffic), 即南北向流量(N-S):

      區(qū)分集群外流量的一個原因是:Pod IP 很多情況下都是不可路由的(與跨主機選用的網(wǎng) 絡(luò)方案有關(guān)),只在集群內(nèi)有效,即,集群外訪問 Pod IP 是不通的。

      因此,如果 Pod 流量直接從 node 出宿主機,必須確保它能正常回來。而 node IP 一般都是全局可達的,集群外也可以訪問,所以常見的解決方案就是:在 Pod 通過 node 出集群時,對其進行 SNAT,將源 IP 地址換成 node IP 地址;應(yīng)答包回來時,再進行相 反的 DNAT,這樣包就能回到 Pod 了。

      譯者注

      如上圖所示,集群外來的流量到達 node 時,由?XDP 和 tc 層的 BPF 程序進行處理, 它們做的事情與 socket 層的差不多,將 Service 的?IP:Port?映射到后端的?PodIP:Port,如果 backend pod 不在本 node,就通過網(wǎng)絡(luò)再發(fā)出去。發(fā)出去的流程我們 在前面?Cilium eBPF 包轉(zhuǎn)發(fā)路徑?講過了。

      這里 BPF 做的事情:執(zhí)行 DNAT。這個功能可以在 XDP 層做,也可以在 TC 層做,但 在 XDP 層代價更小,性能也更高。

      總結(jié)起來,這里的核心理念就是:

    • 將東西向流量放在離 socket 層盡量近的地方做。

    • 將南北向流量放在離驅(qū)動(XDP 和 tc)層盡量近的地方做。

    • 11.3 XDP/eBPF vs kube-proxy 性能對比

      網(wǎng)絡(luò)吞吐

      測試環(huán)境:兩臺物理節(jié)點,一個發(fā)包,一個收包,收到的包做 Service loadbalancing 轉(zhuǎn)發(fā)給后端 Pods。

      可以看出:

    • Cilium XDP eBPF 模式能處理接收到的全部 10Mpps(packets per second)。

    • Cilium tc eBPF 模式能處理 3.5Mpps。

    • kube-proxy iptables 只能處理 2.3Mpps,因為它的 hook 點在收發(fā)包路徑上更后面的位置。

    • kube-proxy ipvs 模式這里表現(xiàn)更差,它相比 iptables 的優(yōu)勢要在 backend 數(shù)量很多的時候才能體現(xiàn)出來。

    • CPU 利用率

      我們生成了 1Mpps、2Mpps 和 4Mpps 流量,空閑 CPU 占比(可以被應(yīng)用使用的 CPU)結(jié)果如下:

      結(jié)論與上面吞吐類似。

      • XDP 性能最好,是因為?XDP BPF 在驅(qū)動層執(zhí)行,不需要將包 push 到內(nèi)核協(xié)議棧。

      • kube-proxy 不管是 iptables 還是 ipvs 模式,都在處理軟中斷(softirq)上消耗了大量 CPU。

      12 eBPF 和 Kubernetes:未來展望

      “The Linux kernel continues its march towards becoming BPF runtime-powered microkernel.”

      “Linux 內(nèi)核繼續(xù)朝著成為 BPF runtime-powered microkernel 而前進”。這是一個非 常有趣的思考角度。

      • 設(shè)想在將來,Linux 只會保留一個非常小的核心內(nèi)核(tiny core kernel),其他所有 內(nèi)核功能都由用戶定義,并用 BPF 實現(xiàn)(而不再是開發(fā)內(nèi)核模塊的方式)。

      • 這樣可以減少受攻擊面,因為此時的核心內(nèi)核非常小;另外,所有 BPF 代碼都會經(jīng)過 verifer 校驗。

      • 極大減少 ‘static’ feature creep,資源(例如 CPU)可以用在更有意義的地方。

      • 設(shè)想一下,未來 Kubernetes 可能會內(nèi)置 custom BPF-tailored extensions,能根據(jù)用戶的應(yīng)用自動適配(optimize needs for user workloads);例如,判斷 pod 是跑在數(shù)據(jù)中心,還是在嵌入式系統(tǒng)上。

      BPF will replace Linux.

      我們的目標(biāo)是星辰大海,與此相比,kube-proxy replacement 只是最微不足道的開端。

      13 結(jié)束語

      • Try it out:https://cilium.link/kubeproxy-free

      • Contribute:https://github.com/cilium/cilium

      ????????????????

      - END -


      看完一鍵三連在看轉(zhuǎn)發(fā),點贊

      是對文章最大的贊賞,極客重生感謝你

      推薦閱讀

      Linux網(wǎng)絡(luò)新技術(shù)基石 |eBPF and XDP

      圖解Linux 內(nèi)核TCP/IP 協(xié)議棧實現(xiàn)|Linux網(wǎng)絡(luò)硬核系列

      Linux I/O 原理和 Zero-copy 技術(shù)全面揭秘

    總結(jié)

    以上是生活随笔為你收集整理的大规模微服务利器:eBPF + Kubernetes的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    国产精品国产三级国产 | 久草免费电影 | 日本黄色一级电影 | 五月天电影免费在线观看一区 | 国产一级二级三级在线观看 | 久久在线免费视频 | 99热国产精品 | 狠狠色狠狠色综合系列 | 欧美久草视频 | 在线日韩中文 | 在线观看你懂的网站 | 国产香蕉av | 亚洲h在线播放在线观看h | 中文字幕欲求不满 | av激情五月 | 欧美资源在线观看 | 精品国产1区 | 天天插伊人 | 亚州精品在线视频 | 国产精品成人国产乱 | 久久免费视频6 | 亚洲高清在线 | 婷婷九月激情 | 欧美久久综合 | 亚洲涩涩涩 | 国产成人黄色网址 | 视频在线观看国产 | 欧洲高潮三级做爰 | 国产精品成人久久久 | 麻豆一精品传二传媒短视频 | 99国产精品免费网站 | 在线观看免费高清视频大全追剧 | 久久久精品一区二区 | 成人综合婷婷国产精品久久免费 | 亚洲成av人片在线观看无 | 久久高清免费观看 | 97人人澡人人添人人爽超碰 | 免费特级黄色片 | 亚洲成av人片一区二区梦乃 | 一区二区三区韩国免费中文网站 | 天天干天天摸 | 久草久草在线 | 欧美性高跟鞋xxxxhd | 久久一区二区三区国产精品 | 天天色天天 | 国产手机免费视频 | 国产精品区在线观看 | 国产精品久久一区二区三区, | 99热精品免费观看 | 色婷婷影视| 国产91成人 | 欧美日韩在线视频一区二区 | 亚洲91中文字幕无线码三区 | 久久久久久久久久久久久影院 | 久久99免费| 黄色免费网 | 美女免费视频黄 | 久久色中文字幕 | 天天久久夜夜 | 午夜精品久久久久久久99无限制 | 国产一区二区精品在线 | 在线观看日韩免费视频 | 国产小视频在线免费观看视频 | 国产一级二级三级在线观看 | 国模视频一区二区 | av电影一区二区三区 | 成人黄色电影免费观看 | 少妇bbw搡bbbb搡bbbb| 丰满少妇在线观看 | 日日干天天爽 | 成人免费在线播放 | 午夜精品一区二区三区免费 | 四虎8848免费高清在线观看 | 日韩理论 | 一区二区三区精品久久久 | 五月婷婷综合在线观看 | 国产成人精品久久亚洲高清不卡 | 欧美国产91| 欧美日韩高清不卡 | 国内精品久久久久久久97牛牛 | 国产精品久久99精品毛片三a | 亚洲精品乱码久久久久久蜜桃91 | 91精品国产成人观看 | 午夜av影院 | 久久国产精品影视 | 伊人黄| 久久电影国产免费久久电影 | 国产精品一区二区三区在线播放 | 99久久久久国产精品免费 | 久久九九视频 | 少妇bbw撒尿 | 免费观看成人网 | 操操综合网 | 日本特黄一级 | 久久激情视频 久久 | 亚洲激情视频 | 欧美地下肉体性派对 | www.久久久久 | 波多野结衣视频一区二区三区 | 国产精品久久久久久久久久 | 久久成人在线视频 | 久久精品综合网 | 日韩视频一二三区 | 91av在线播放视频 | 欧美日韩视频一区二区三区 | 天堂视频一区 | 黄色a大片 | 国产欧美精品在线观看 | 中文字幕在线观看一区二区三区 | 天天干天天拍天天操天天拍 | 亚洲国产成人精品在线 | 五月婷婷丁香六月 | 在线观看av中文字幕 | 天天射天天 | 国产在线观看91 | 成人久久精品 | 久久久久黄 | 国产一级不卡毛片 | 日本久久久精品视频 | 色综合夜色一区 | 成人av一级片 | 国产高清不卡在线 | 亚洲 欧洲 国产 日本 综合 | 日韩资源在线 | 色综合天天做天天爱 | 色婷婷www | 亚洲一区二区视频 | 国产精品欧美激情在线观看 | 丁香花五月 | 伊人久久国产精品 | 韩国一区二区三区在线观看 | 欧美精品你懂的 | 国产精品99久久久 | 99这里只有久久精品视频 | 五月综合激情婷婷 | 中文字幕黄色网 | 免费看片成年人 | 91精品一区二区在线观看 | 成年人电影毛片 | 91九色视频在线 | 国产无套精品久久久久久 | 在线一区观看 | 狠狠狠色丁香婷婷综合久久88 | 00av视频| 国产成a人亚洲精v品在线观看 | 18av在线视频 | 日p视频在线观看 | 日韩在线| 国产成人精品一区二区三区福利 | 99久久电影 | 五月天亚洲综合小说网 | 国产精品九九久久久久久久 | 午夜av片 | av国产在线观看 | 国产亚洲永久域名 | 日韩av中文 | 丁香五婷| 天堂久久电影网 | 日韩国产精品一区 | 欧美淫aaa免费观看 日韩激情免费视频 | 亚洲视频1区2区 | 欧洲精品码一区二区三区免费看 | 久久美女视频 | 特级免费毛片 | 亚洲在线黄色 | 夜色资源网 | 激情偷乱人伦小说视频在线观看 | 天天综合导航 | 日韩欧美高清在线 | 日韩av电影免费观看 | 成人一级| 亚洲狠狠丁香婷婷综合久久久 | 国产免费xvideos视频入口 | 亚洲播播| 日韩午夜av | 日韩欧美一区二区三区在线 | 成人av高清在线观看 | 欧美日韩高清一区二区三区 | 日韩性色 | 日韩在线不卡av | 亚洲欧美观看 | 成年人视频在线免费观看 | 日韩免费在线观看 | 五月天久久婷婷 | 97av在线视频免费播放 | 久久久久久国产精品久久 | 欧美精品一区二区免费 | 久久久久久久久久久久久影院 | 免费激情在线电影 | 欧美一级久久 | 91精品视频一区二区三区 | 在线观看一区二区视频 | 91喷水| 国产午夜精品视频 | 91免费网| 毛片激情永久免费 | 天天干天天做 | 日韩中文字幕电影 | 久久综合九色欧美综合狠狠 | 最近中文字幕mv | 悠悠av资源片 | 五月婷影院 | 亚洲视频电影在线 | 国产1区2区 | 黄色资源在线 | 久久av免费 | 久草在线播放视频 | 国产精品1区 | 91日韩在线 | 久久国内精品视频 | 99视频这里只有 | 在线观看免费国产小视频 | 久久精品中文视频 | 欧美乱淫视频 | 超碰成人免费电影 | 99久久精品一区二区成人 | 日韩色av色资源 | 99色| 天天色中文 | 久草www | 国产精品一区二区果冻传媒 | 精品国产久 | 国产综合片 | 丁香国产视频 | 国产精品九九九九九 | 国产麻豆果冻传媒在线观看 | 久久综合免费视频 | 国产一级二级在线观看 | a一片一级 | 国产中文字幕一区二区 | 黄色av免费看 | 久久99国产综合精品 | 国产精品久久中文字幕 | 狠狠色丁香婷综合久久 | 97超碰在线免费观看 | 日韩xxxbbb | 成人全视频免费观看在线看 | 欧美日韩另类视频 | 四虎www com | 97精品视频在线播放 | 综合久久精品 | 日本视频久久久 | 四虎小视频 | 91热视频| 久久成熟 | 久久综合福利 | 亚洲精品高清视频 | 一区二区三区免费在线观看视频 | 国产一级片在线播放 | 9色在线视频 | 日本中文字幕一二区观 | 国产经典av | 一区二区三区高清在线 | 色中色资源站 | 91在线观看黄 | 欧美在线视频一区二区三区 | 日韩伦理片一区二区三区 | 中文不卡视频 | 亚洲欧洲xxxx | 精品一区二区在线免费观看 | 国产手机在线观看 | 亚洲视频综合 | 亚洲一级片 | 国内外成人免费在线视频 | 国产高清视频色在线www | 亚洲播播 | 骄小bbw搡bbbb揉bbbb | 国产精品欧美日韩在线观看 | 日韩欧美电影 | 韩日成人av | 久久99在线观看 | 色欧美视频 | 久久久亚洲麻豆日韩精品一区三区 | 成人精品一区二区三区中文字幕 | 91av在线免费播放 | 日韩精品黄| 成人黄色毛片 | 欧美网站黄色 | 99热.com | 欧美日本日韩aⅴ在线视频 插插插色综合 | 中文字幕在线一区观看 | 国产丝袜网站 | 国产一级电影网 | 国产精品第三页 | 国产91在线观看 | 天堂在线成人 | 婷婷色资源 | 精品视频免费看 | 国产手机在线观看视频 | 日韩69av| 亚洲视频一区二区三区在线观看 | 国产不卡在线播放 | 中文字幕一区在线观看视频 | 一本一本久久a久久 | 成人免费xxxxxx视频 | 日韩av网站在线播放 | 8x成人免费视频 | 亚洲伦理电影在线 | 偷拍久久久| 国内成人精品视频 | 久草在线高清 | 日韩免费一级a毛片在线播放一级 | 亚洲精品人人 | 99视频国产精品免费观看 | 日韩午夜电影院 | av直接看| 91精品人成在线观看 | 亚欧日韩成人h片 | 超级碰碰免费视频 | 中文在线免费看视频 | 草久电影| 五月婷婷视频在线观看 | 五月天婷婷综合 | 超碰97人人爱 | 中文字幕 国产视频 | 国产96在线观看 | 麻豆免费在线视频 | 色永久免费视频 | 天天色欧美 | 亚洲欧美日韩在线看 | 一区二区视频欧美 | 91亚洲精品乱码久久久久久蜜桃 | 在线观看亚洲电影 | 日韩激情在线视频 | av在线最新 | 在线视频18在线视频4k | 99久精品| 91麻豆精品国产91久久久无限制版 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产69久久久 | 五月婷婷网站 | 亚洲久草网 | 欧美在线1区 | 99r在线观看 | 婷婷色中文网 | 国产精品中文久久久久久久 | 色综合久久88色综合天天 | 97小视频 | 国产精品久久久久久久久免费 | 欧美视频在线观看免费网址 | 国产在线999 | 一区二区三区视频网站 | 99中文字幕 | 久免费视频 | 久久狠狠干| 亚洲作爱| 91成人在线看| 五月天婷亚洲天综合网精品偷 | 国产精品18久久久久久久网站 | 在线国产日本 | 久久99国产一区二区三区 | 久久dvd| 国产剧情一区二区 | 日韩亚洲国产精品 | 精品一区三区 | 久久毛片视频 | 国产成人99久久亚洲综合精品 | 精品免费观看视频 | av中文在线影视 | 成人av影院在线观看 | 精品久久久久久电影 | www.黄色小说.com | 手机在线日韩视频 | 亚洲视屏在线播放 | 狠狠ri| av中文字幕日韩 | 93久久精品日日躁夜夜躁欧美 | 中文字幕免费高清在线 | 色婷婷国产 | 免费手机黄色网址 | 91探花视频 | 国产精品日韩久久久久 | 成人av一级片 | 伊人激情综合 | 午夜体验区 | 中文字幕精品一区二区精品 | 99精品久久只有精品 | 在线a亚洲视频播放在线观看 | 国产精品理论片在线观看 | 精品xxx| 成年人在线免费看视频 | 亚洲一级久久 | 蜜臀av网址| 色久天| 精品1区二区 | 在线三级av| japanesefreesex中国少妇 | 久久精品第一页 | 国产精彩视频一区二区 | 国产精品毛片一区二区在线看 | 久操视频在线观看 | 人人网av | 六月丁香婷婷在线 | 奇米7777狠狠狠琪琪视频 | 99热这里是精品 | 久久久久久久久久久久国产精品 | 国产精品久久久久久麻豆一区 | 天天干,天天操 | 99国产免费网址 | 欧美日韩国产网站 | 久久久久久久久久网站 | 91在线小视频| 亚洲伊人成综合网 | 日韩免费中文 | 新版资源中文在线观看 | www.五月天| 又黄又爽的免费高潮视频 | 中文字幕三区 | 国产九九热视频 | 久久久久免费电影 | 日韩视频免费 | 日本中文字幕在线看 | 亚洲夜夜网 | 久久亚洲影视 | 国产精彩视频 | 一区二区三区四区五区在线 | 韩国精品视频在线观看 | 精精国产xxxx视频在线播放 | 久久精品艹 | 日韩美av在线| 国产日产精品一区二区三区四区的观看方式 | 国产精品自产拍在线观看桃花 | 亚洲欧美色婷婷 | 激情深爱 | 日韩手机在线观看 | 91九色自拍 | 国产精品麻 | 99这里有精品 | 色福利网| 91在线视频观看免费 | 97网在线观看 | 激情av一区二区 | 日韩在线网址 | 久久夜av | 在线免费观看一区二区三区 | 99久久精品免费看国产四区 | 91高清一区 | 91试看 | 欧美日韩中字 | 欧美一级电影免费观看 | 国产1级毛片 | 国产手机在线精品 | 久草在线欧美 | 国产视频午夜 | 免费看片网址 | 日本久久成人中文字幕电影 | 久久草网站 | 色综合久久中文字幕综合网 | 又黄又刺激又爽的视频 | 97超碰人人干| 青青河边草观看完整版高清 | 国产成人精品久久久久 | 国产一区 在线播放 | 亚洲精品网址在线观看 | 亚洲综合成人婷婷小说 | 国产中文字幕一区二区三区 | 丁香视频全集免费观看 | 日韩成人免费在线 | 五月婷婷在线播放 | 国产做爰视频 | 色妞色视频一区二区三区四区 | 一区二区精品在线视频 | 亚洲经典中文字幕 | 成人午夜精品福利免费 | 国产精品免费视频观看 | 美女视频黄是免费的 | 国产亚洲精品xxoo | 午夜国产一区 | av 在线观看 | 69av在线视频| 国产在线观看你懂得 | 精品久久久久久久久亚洲 | 99免费在线视频 | 国产成人精品久久亚洲高清不卡 | 日日日日干 | 国产精品丝袜在线 | 日韩在线精品视频 | 亚洲精品欧美专区 | 日韩在线观看小视频 | 黄色av成人在线观看 | 日本黄色一级电影 | 精品国产精品久久一区免费式 | 日韩在线免费电影 | 香蕉视频在线观看免费 | 久久精品成人欧美大片古装 | 黄污在线看 | 天天艹天天 | 日韩久久午夜一级啪啪 | 亚洲精品久久久蜜桃 | 中文字幕一区二区三区乱码在线 | 四虎国产精品免费观看视频优播 | 欧美精品在线观看免费 | 天堂av在线网 | 热久在线 | 欧美亚洲久久 | 日韩av成人| 视频在线观看91 | 国产精品久久久久久久午夜 | 在线影院av | 不卡的一区二区三区 | 中文字幕视频播放 | 一区二区三区免费在线观看 | 久久久久99精品国产片 | av中文资源在线 | av在线播放一区二区三区 | 婷婷免费在线视频 | 国产亚洲久久 | 激情五月开心 | 黄色免费在线视频 | 久久久久久久久久亚洲精品 | 99精品国产99久久久久久福利 | 最近的中文字幕大全免费版 | 国产爽视频 | 免费看网站在线 | 亚洲码国产日韩欧美高潮在线播放 | 精品久久久久久亚洲 | 高清久久久 | 久久国产精品99久久久久久老狼 | 伊人网av| 欧美精品一区二区在线观看 | 欧美91精品久久久久国产性生爱 | 91在线永久| 免费又黄又爽视频 | 亚洲最大的av网站 | 久久天 | 国产一级一片免费播放放 | 久草在线资源免费 | 日韩高清在线看 | 日本h视频在线观看 | 国产午夜精品在线 | 色99在线| 美女在线免费观看视频 | 免费亚洲视频 | 又黄又爽的免费高潮视频 | 五月综合激情婷婷 | 伊人五月天 | 91香蕉视频在线下载 | 91精品视频一区 | 国产三级香港三韩国三级 | 国产午夜三级一区二区三 | 黄色大全在线观看 | 色婷婷视频网 | 91麻豆精品国产91久久久久久 | 亚洲免费专区 | 91av社区| 婷婷国产在线 | 中文在线免费视频 | 精品96久久久久久中文字幕无 | 国内精品久久久久久久影视麻豆 | 久久精品xxx | www天天干| 日本视频高清 | 国产精品一区二区三区视频免费 | 中文字幕第一页在线播放 | 免费看黄的 | 国产精品va在线 | 欧美性生活免费 | 中文区中文字幕免费看 | 人人超碰97 | 成人午夜黄色影院 | 波多野结衣亚洲一区二区 | 九九热在线观看视频 | 日韩免费在线观看视频 | 人人添人人澡人人澡人人人爽 | 久久夜色精品国产欧美一区麻豆 | 天天草天天爽 | 在线成人免费av | 97人人爽人人 | 一区二区三区在线观看中文字幕 | 欧美aa一级 | 91丨九色丨丝袜 | 国产麻豆精品传媒av国产下载 | 日韩一区正在播放 | 一级性生活片 | 亚洲涩综合 | www夜夜| 成人免费看片98欧美 | 午夜久久久精品 | 天天干.com | av福利在线看 | 亚洲日韩精品欧美一区二区 | 韩国在线一区二区 | 国产精品久久久久久69 | 欧美午夜a| 久久精品爱视频 | 国产精品网址在线观看 | 91在线视频在线观看 | 中文字幕一区二区三区四区在线视频 | 三级免费黄色 | av免费观看高清 | 日韩视频中文 | 99视频国产在线 | 国产淫片免费看 | av免费高清观看 | 精品久久网 | 日韩高清一二区 | 九九综合久久 | 在线va网站 | 久久久一本精品99久久精品 | 久草精品在线 | 国产视频黄 | 亚洲欧美观看 | 激情av一区二区 | 国产精品一区欧美 | 久久久污 | 粉嫩av一区二区三区四区在线观看 | 久久丁香 | 亚洲乱码精品 | 日韩一二区在线观看 | 国产精品去看片 | 亚洲精品乱码久久久久久蜜桃欧美 | av中文字幕在线观看网站 | 黄色福利网站 | 免费人成在线观看网站 | 精品视频久久久久久 | 国内成人精品2018免费看 | 国产成人高清av | 欧美91视频 | 国模一二三区 | 日韩一区精品 | 91成人在线观看喷潮 | 在线观看午夜 | 月下香电影 | 亚洲午夜不卡 | 超碰在线天天 | 中文字幕日本在线观看 | 中文字幕一区二区三区四区视频 | 婷婷激情在线观看 | 久久ww| 日韩一区二区免费在线观看 | 日韩精品电影在线播放 | 91成人精品一区在线播放69 | 亚洲一级影院 | 色在线免费观看 | 国产一区电影在线观看 | 日本夜夜草视频网站 | 国产精品毛片一区视频播不卡 | 99精品国产成人一区二区 | 国产婷婷精品av在线 | 成人综合婷婷国产精品久久免费 | 亚洲精选视频免费看 | 伊人午夜视频 | 亚洲精品福利视频 | 伊人官网| 99久热在线精品视频 | 国产精品午夜免费福利视频 | 久久视频这里有久久精品视频11 | 久久久国产一区 | 97精品国自产拍在线观看 | av中文字幕亚洲 | 国产打女人屁股调教97 | 日韩免费在线一区 | 欧美精品v国产精品v日韩精品 | 亚洲国内精品在线 | 美女视频黄频大全免费 | 欧美在线视频一区二区三区 | 偷拍精偷拍精品欧洲亚洲网站 | 337p日本欧洲亚洲大胆裸体艺术 | 国产欧美高清 | 日日夜夜骑 | 五月婷婷久 | 国产自产在线视频 | 亚洲精品xxx | 久久成人一区二区 | 亚洲最大在线视频 | 天天干 天天摸 天天操 | 午夜色婷婷 | 成人av资源网 | 五月婷婷播播 | 一级黄色在线免费观看 | 色九九在线 | 免费网站在线观看成人 | 欧美视频网址 | 玖玖玖在线观看 | 午夜国产福利视频 | 中国精品少妇 | 日韩精品1区2区 | 国产91勾搭技师精品 | 99在线热播精品免费 | 一二区av | 色香com. | 91成人网页版 | 国产不卡精品 | 99国产一区二区三精品乱码 | 久草在线手机视频 | 亚洲国产中文字幕在线视频综合 | 伊人成人激情 | 九九九九九九精品任你躁 | 人人舔人人舔 | 99在线热播精品免费 | 狠狠狠色丁香婷婷综合激情 | 成人精品视频久久久久 | 婷婷六月天综合 | 国产群p | 亚洲精品在线免费观看视频 | 日韩欧美网址 | 日日干综合 | 精品五月天| 日韩电影精品 | 婷婷精品国产欧美精品亚洲人人爽 | 91资源在线播放 | 久久综合久久综合这里只有精品 | 中文字幕视频播放 | 日日操日日插 | 亚洲在线精品 | 国产日女人 | 国产区精品视频 | 在线a视频免费观看 | 亚州欧美精品 | 久久国产日韩 | 午夜精品久久久久久久爽 | 欧美性生活小视频 | av女优中文字幕在线观看 | 国产精品麻豆果冻传媒在线播放 | 一级黄色片在线免费看 | 99精品在线免费视频 | 五月天堂网 | 一区二区三区久久精品 | 国产精品18久久久久白浆 | 国产小视频在线免费观看 | 狠狠色狠狠色综合系列 | 亚洲一级片在线观看 | 在线观看的av网站 | www.天天射| 国产免费影院 | 欧美日韩在线第一页 | 亚洲手机天堂 | 欧美日一级片 | 开心激情网五月天 | 一级黄色a视频 | 久久精品在线视频 | a天堂在线看 | 夜夜夜夜夜夜操 | 亚洲乱码国产乱码精品天美传媒 | 亚洲精品国精品久久99热 | 久草国产视频 | 人人爽人人爽av | 日韩视频中文字幕 | 免费亚洲一区二区 | 国产一区二区在线免费播放 | 人人插人人 | 天天插天天干 | 国产伦精品一区二区三区在线 | 国产香蕉视频在线观看 | 久久伊人国产精品 | 狠狠网站 | 992tv在线成人免费观看 | 夜夜高潮夜夜爽国产伦精品 | 91最新在线视频 | 69国产盗摄一区二区三区五区 | 国产亚洲免费的视频看 | 国产一区二区在线精品 | 夜夜操狠狠操 | 久久91网 | 免费在线观看av网址 | 国产精品久久久久久久久费观看 | 欧美激情另类文学 | www天天干| 在线观看一区 | 国产精品专区在线 | 国产黄色片网站 | 国产日韩三级 | 午夜18视频在线观看 | 天天视频亚洲 | 久草视频视频在线播放 | 视频一区二区三区视频 | 亚洲欧美日韩在线看 | 国产麻豆剧果冻传媒视频播放量 | 91一区一区三区 | 免费电影一区二区三区 | 99精品视频免费全部在线 | 在线日韩亚洲 | 国产精品成人免费精品自在线观看 | 久久久精品高清 | 福利视频午夜 | 99爱国产精品 | 成年人免费在线播放 | 亚洲国产精品成人va在线观看 | 国产成人精品网站 | 91丝袜美腿 | 欧美福利网站 | 国产美女精品视频 | 久久这里只有精品视频首页 | 天天干人人 | av大片网址| 欧美一区二区三区在线 | www黄色软件 | 精品成人网 | 国产精品成人国产乱一区 | 天天狠狠操| 日韩午夜一级片 | 韩国精品视频在线观看 | 999久久久久久久久6666 | 国产一及片 | 亚洲精品久久久久久久蜜桃 | 毛片网站在线看 | 国产精品视频免费在线观看 | 亚洲精品久久久久久国 | 4438全国亚洲精品观看视频 | 欧美性久久久 | 在线播放你懂 | 亚洲区视频在线 | 日日夜夜爱 | www.少妇 | 国内精品视频免费 | av大全在线播放 | 久久久久久久久久久久久久电影 | 2024av | 欧美性成人 | 国产日韩精品一区二区在线观看播放 | 国产黄色视 | 中文字幕在线视频第一页 | 亚洲综合日韩在线 | 国内精品久久久久 | 很黄很污的视频网站 | 亚洲女裸体| 国产91在线免费视频 | 国产特级毛片aaaaaa毛片 | 在线免费av网 | 丁香色婷婷 | 亚洲涩涩涩 | 色天天| 亚洲资源| 久久久久久久国产精品视频 | 天天操天天干天天插 | 久久久免费观看视频 | 最近中文字幕完整视频高清1 | av片中文 | 日韩av成人在线观看 | 国产成人免费在线 | 黄色一级免费网站 | 综合伊人av | 久久天天躁狠狠躁夜夜不卡公司 | 黄色三几片 | 一区二区三区中文字幕在线 | 少妇搡bbbb搡bbb搡忠贞 | 精品一区二区综合 | 久久精品99精品国产香蕉 | 久久精品站 | 一区在线电影 | 色婷婷电影 | 玖草影院 | 午夜丁香网 | 手机看片国产 | 午夜精品一区二区三区在线视频 | 国产99久 | 欧美成人理伦片 | 国产精品一区一区三区 | a在线观看免费视频 | 久久久精品国产免费观看同学 | 亚洲另类视频在线 | 久久免费高清 | 福利视频入口 | 正在播放 久久 | 亚色视频在线观看 | 五月婷婷综合激情网 | 91超级碰碰 | 国产精品午夜久久 | 久久精品视频免费观看 | 日日夜夜精品视频 | 蜜臀精品久久久久久蜜臀 | 国产黄在线播放 | 日日干视频| 天天翘av| 国产一线二线三线性视频 | 丁香色综合 | 欧美坐爱视频 | 六月丁香在线观看 | 婷婷精品在线视频 | 中文字幕永久在线 | 蜜臀aⅴ国产精品久久久国产 | 久久精品国亚洲 | 伊人电影在线观看 | 日本中文字幕在线观看 | 亚洲精品成人 | 99这里只有 | 久久久国际精品 | 五月婷婷色| 亚洲情感电影大片 | 免费在线观看不卡av | 久久久精品免费观看 | 国产免费观看高清完整版 | 亚洲午夜久久久久久久久 | 狠狠搞,com| 在线日韩精品视频 | 精品福利视频在线 | 欧美电影黄色 | 九九视频在线播放 | 欧美极品在线播放 | 日韩特级片 | 天天综合在线观看 | 久久噜噜少妇网站 | 91桃色国产在线播放 | www.国产高清| 99视频免费 | 久久久久久久久久久网站 | 蜜桃视频在线视频 | 日日爱网站 | 在线日韩亚洲 | www色片 | 韩国一区二区在线观看 | 国产伦精品一区二区三区四区视频 | 99自拍视频在线观看 | 成年人网站免费观看 | 亚洲精品视频www | 国产精品网在线观看 | 一区 二区电影免费在线观看 | 色吊丝av中文字幕 | 国产亚洲婷婷免费 | 99福利影院 | 国产成人av免费在线观看 | 久草在线这里只有精品 | www.五月婷| 91传媒激情理伦片 | 日日爱视频 | 香蕉影院在线播放 | 在线中文字母电影观看 | 少妇高潮流白浆在线观看 | 日韩精品一区二区三区水蜜桃 | 国产亚洲精品久久久久久大师 | 麻花传媒mv免费观看 | 国内精品久久天天躁人人爽 | 午夜久久 | 一级性视频| 久久激情视频免费观看 | av大全免费在线观看 | 国产h在线播放 | 在线观看视频一区二区三区 | 日韩精品综合在线 | 日韩av中文字幕在线免费观看 | 国产视频精选在线 | 成人在线视频免费观看 | 国产一级免费视频 | 天天色棕合合合合合合 | 午夜精品久久一牛影视 | av一级在线 | 日韩免费播放 | 天海翼一区二区三区免费 | 日韩在线观看视频网站 | 久久久国产精品一区二区中文 | 免费观看黄色av | 亚洲精品在线观看视频 | 夜夜骑日日操 | 免费观看高清 | 一区二区三区免费在线 | aⅴ精品av导航 | 久久免费精彩视频 | 中文不卡视频 | 国产欧美综合在线观看 | 五月婷婷网站 | 伊人国产在线观看 | 青青久草在线视频 | 狠狠成人 | 91精品伦理| 日韩伦理片一区二区三区 | 欧美做受高潮 | 久久久久国产一区二区三区 | 97碰在线| 国产色视频一区 | 午夜久久成人 | 国产精品久久久久久久久久妇女 | 碰超在线97人人 | 激情一区二区三区欧美 | 午夜精品一二区 | 超碰成人av | 色黄www小说 | 人九九精品 | 色噜噜日韩精品欧美一区二区 | 久草精品网 | 97精品国产91久久久久久久 | 天天射天天干天天操 | 日韩欧美精品在线观看视频 | 在线a视频免费观看 | 在线国产一区二区 | 天堂网一区 | 日本中文字幕影院 | 亚洲精品视频免费在线 | 手机成人av | 久草在线最新视频 | 日日干夜夜干 | 成人观看 | 日本爱爱免费 | .精品久久久麻豆国产精品 亚洲va欧美 | 中文字幕电影一区 | 91九色蝌蚪视频 | 日韩和的一区二在线 | 日韩精品一区二区三区免费观看视频 | 国产精品免费看久久久8精臀av | 国产91影视 | www.狠狠插.com| 五月婷婷在线综合 | 日韩av影片在线观看 | 超碰在线网 | 日韩精品免费一区二区三区 | 欧洲亚洲精品 | 狠狠色丁香久久婷婷综合五月 | 热热热热热色 | 成年人国产精品 |