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

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

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

崔鵬程:初識(shí)XDP

Linux閱碼場 ? 來源:Linux內(nèi)核之旅 ? 2020-08-03 15:59 ? 次閱讀

在計(jì)算機(jī)網(wǎng)絡(luò)中,Hook鉤子在操作系統(tǒng)中用于在調(diào)用前或執(zhí)行過程中攔截網(wǎng)絡(luò)數(shù)據(jù)包。Linux內(nèi)核中暴露了多個(gè)鉤子,BPF程序可以連接到這些鉤子上,實(shí)現(xiàn)數(shù)據(jù)收集和自定義事件處理。

Linux內(nèi)核中的鉤子點(diǎn)很多,比如說網(wǎng)絡(luò)子系統(tǒng)中存在兩個(gè)鉤子:XDP和TC。它們結(jié)合在一起,可以用來處理RX和TX上兩個(gè)鏈路上靠近NIC的數(shù)據(jù)包,從而實(shí)現(xiàn)了許多網(wǎng)絡(luò)應(yīng)用的開發(fā)。今天我們簡單介紹下XDP。

XDP全稱為eXpress Data Path,是Linux內(nèi)核網(wǎng)絡(luò)棧的最底層。它只存在于RX路徑上,允許在網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)內(nèi)部網(wǎng)絡(luò)堆棧中數(shù)據(jù)來源最早的地方進(jìn)行數(shù)據(jù)包處理,在特定模式下可以在操作系統(tǒng)分配內(nèi)存(skb)之前就已經(jīng)完成處理。 XDP暴露了一個(gè)可以加載BPF程序的網(wǎng)絡(luò)鉤子。在這個(gè)鉤子中,程序能夠?qū)魅氲臄?shù)據(jù)包進(jìn)行任意修改和快速?zèng)Q策,避免了內(nèi)核內(nèi)部處理帶來的額外開銷。這使得XDP在性能速度方面成為最佳鉤子,例如緩解DDoS攻擊等 DPDK Intel DPDK全稱Intel Data Plane Development Kit,是intel提供的數(shù)據(jù)平面開發(fā)工具集,為Intel architecture(IA)處理器架構(gòu)下用戶空間高效的數(shù)據(jù)包處理提供庫函數(shù)和驅(qū)動(dòng)的支持,它不同于Linux系統(tǒng)以通用性設(shè)計(jì)為目的,而是專注于網(wǎng)絡(luò)應(yīng)用中數(shù)據(jù)包的高性能處理。 DPDK應(yīng)用程序是運(yùn)行在用戶空間上利用自身提供的數(shù)據(jù)平面庫來收發(fā)數(shù)據(jù)包,繞過了Linux內(nèi)核協(xié)議棧對數(shù)據(jù)包處理過程。Linux內(nèi)核將DPDK應(yīng)用程序看作是一個(gè)普通的用戶態(tài)進(jìn)程,包括它的編譯、連接和加載方式和普通程序沒有什么兩樣。DPDK程序啟動(dòng)后只能有一個(gè)主線程,然后創(chuàng)建一些子線程并綁定到指定CPU核心上運(yùn)行。

XDP 相對于DPDK,XDP具有以下優(yōu)點(diǎn):

無需第三方代碼庫和許可

同時(shí)支持輪詢式和中斷式網(wǎng)絡(luò)

無需分配大頁

無需專用的CPU

無需定義新的安全網(wǎng)絡(luò)模型

XDP的使用場景包括:

DDoS防御

防火墻

基于XDP_TX的負(fù)載均衡

網(wǎng)絡(luò)統(tǒng)計(jì)

復(fù)雜網(wǎng)絡(luò)采樣

高速交易平臺(tái)

XDP輸入參數(shù)XDP暴露的鉤子具有特定的輸入上下文,它是單一輸入?yún)?shù)。它的類型為 struct xdp_md,在內(nèi)核頭文件bpf.h 中定義,具體字段如下所示:


程序執(zhí)行時(shí),data和data_end字段分別是數(shù)據(jù)包開始和結(jié)束的指針,它們是用來獲取和解析傳來的數(shù)據(jù),第三個(gè)值是data_meta指針,初始階段它是一個(gè)空閑的內(nèi)存地址,供XDP程序與其他層交換數(shù)據(jù)包元數(shù)據(jù)時(shí)使用。最后兩個(gè)字段分別是接收數(shù)據(jù)包的接口和對應(yīng)的RX隊(duì)列的索引。當(dāng)訪問這兩個(gè)值時(shí),BPF代碼會(huì)在內(nèi)核內(nèi)部重寫,以訪問實(shí)際持有這些值的內(nèi)核結(jié)構(gòu) struct xdp_rxq_info。

XDP輸出參數(shù)在處理完一個(gè)數(shù)據(jù)包后,XDP程序會(huì)返回一個(gè)動(dòng)作(Action)作為輸出,它代表了程序退出后對數(shù)據(jù)包應(yīng)該做什么樣的最終裁決,也是在內(nèi)核頭文件bpf.h 定義了以下5種動(dòng)作類型:

可以看出這個(gè)動(dòng)作的本質(zhì)是一個(gè)int值。前面4個(gè)動(dòng)作是不需要參數(shù)的,最后一個(gè)動(dòng)作需要額外指定一個(gè)NIC網(wǎng)絡(luò)設(shè)備名稱,作為轉(zhuǎn)發(fā)這個(gè)數(shù)據(jù)包的目的地。

XDP的位置

最顯而易見的是,竟然可以在如此低的層面上把數(shù)據(jù)包丟棄或者回彈回去,如果面臨DDoS攻擊,采用這種方式的話,數(shù)據(jù)包就沒有必要上升到Netfilter層面再被丟棄了。說白了,XDP允許數(shù)據(jù)包在進(jìn)入Linux協(xié)議棧之前就能受到判決。這相當(dāng)于在網(wǎng)卡驅(qū)動(dòng)層面運(yùn)行了一個(gè)eBPF程序,該程序決定數(shù)據(jù)包何去何從。 而且,假設(shè)我們經(jīng)過目標(biāo)網(wǎng)絡(luò)設(shè)備的Ingress流量被我們的XDP程序drop了,專業(yè)術(shù)語叫RX流向。那么Egress流量是否也會(huì)被drop掉呢? 答案是,不會(huì)。XDP hook不會(huì)作用到Egress流量,也就是TX流向。

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

    關(guān)注

    3

    文章

    1346

    瀏覽量

    40152
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11161

    瀏覽量

    208460
  • 網(wǎng)絡(luò)設(shè)備

    關(guān)注

    0

    文章

    304

    瀏覽量

    29552

原文標(biāo)題:崔鵬程: 初識(shí)XDP

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

收藏 人收藏

    評論

    相關(guān)推薦

    中興通訊麗:AI與5G-A共融共創(chuàng)

    7月16日資訊,2024世界人工智能大會(huì)匯聚了全球頂尖的科學(xué)家、企業(yè)領(lǐng)袖及投資精英,共襄盛舉,深入探討AI技術(shù)的最新進(jìn)展、產(chǎn)業(yè)趨勢以及道德治理的創(chuàng)新路徑。中興通訊首席發(fā)展官麗受邀出席央視網(wǎng)《科技新觀察》節(jié)目,就人工智能時(shí)代下的數(shù)智化轉(zhuǎn)型發(fā)表了獨(dú)到見解。
    的頭像 發(fā)表于 07-16 16:24 ?544次閱讀

    【《軟件開發(fā)珠璣》閱讀體驗(yàn)】+ 初識(shí)

    非常感恩電子發(fā)燒友論壇,讓我有幸閱讀如此優(yōu)秀的作品。 今天收到了的書,非常精美! 在書的扉頁中,有劉總的簽名: 太有意義了。 書中大佬們讀了《推薦序》 還有21位大佬為此書寫了《推薦語》,給本書以極其高度的評價(jià): 本文的譯者為“死月”,他在譯者序中,表達(dá)了翻譯完本書之后的收獲“ 在翻譯完這本書之后,我對軟件工程,對需求、設(shè)計(jì)、項(xiàng)目管理、文化與團(tuán)隊(duì)合質(zhì)量和過程改進(jìn)有了全新的認(rèn)知,我也可以嘗試著為自己摘下“只會(huì)寫代碼”的標(biāo)簽了。相信在未來的職業(yè)生涯中,這本書給我?guī)淼闹R(shí)能讓我在各個(gè)地方發(fā)光發(fā)熱,在某種意義上可以幫我突破一些瓶頸。 同樣,我期望這本書也能在正在閱讀此書的你未來的職業(yè)生涯中,以某種形式為你帶來一些不一樣的視角,幫你更輕松地解決一些可能本來不那么容易解決的問題。能翻譯這本書,對我來說,已經(jīng)很值了;如果這本書還能為更多人提供價(jià)值,那真的是超值了。 在《序言》中,作者解釋了”珠璣“,珠璣的即為珍珍,在于不斷的成長。我在想,譯者為何不直接譯為”珍珠“。 在《關(guān)于作者》中,介紹了作者Karl Wiegers 學(xué)位、作品,以及他是一位愛好廣泛,同時(shí)又非常有愛心的一位大神。
    發(fā)表于 06-21 16:33

    海辰儲(chǔ)能王鵬程:新型儲(chǔ)能+綠色城市,共筑包容發(fā)展之路

    5月22日至23日,2024重慶國際友好城市合作大會(huì)在重慶召開。
    的頭像 發(fā)表于 05-28 09:33 ?323次閱讀

    東樹:進(jìn)口車增量助力消費(fèi)增長,年內(nèi)潛力巨大

    東樹指出,隨著我國汽車產(chǎn)業(yè)的發(fā)展壯大以及電動(dòng)化轉(zhuǎn)型帶來的市場需求變化,燃油車需求逐漸萎縮,進(jìn)口燃油車需求亦隨之降低。鑒于國際關(guān)系日益復(fù)雜,他建議應(yīng)提前規(guī)劃并建立多元化的進(jìn)口模式,以保持進(jìn)口車市場的穩(wěn)定。
    的頭像 發(fā)表于 05-27 10:30 ?432次閱讀

    大語言模型:原理與工程實(shí)踐+初識(shí)2

    前言 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的分支,而大語言模型是深度學(xué)習(xí)的分支。機(jī)器學(xué)習(xí)的核心是讓計(jì)算機(jī)系統(tǒng)通過對數(shù)據(jù)的學(xué)習(xí)提高性能,深度學(xué)習(xí)則是通過創(chuàng)建人工神經(jīng)網(wǎng)絡(luò)處理數(shù)據(jù)。近年人工神經(jīng)網(wǎng)絡(luò)高速發(fā)展,引發(fā)深度學(xué)習(xí)的一系列變革。 大語言模型是深度學(xué)習(xí)的應(yīng)用之一,可以認(rèn)為,這些模型的目標(biāo)是模擬人類交流,為了理解和生成人類語言。為此,模型需要在大量文本數(shù)據(jù)上訓(xùn)練,用來理解人類語言,進(jìn)而,實(shí)現(xiàn)與人類的無障礙對話交流。關(guān)于其應(yīng)用,大火的ChatGPT就是典型的例子。所以,提起大語言模型,看似離我們很遠(yuǎn),其實(shí)不然,他就貫穿在我們生活中,或是悄無聲息或是驚天動(dòng)地的改變著我們的生活。 通過這本書,我對大語言模型的認(rèn)識(shí)更深一步,不再局限于只識(shí)其名,不知其意,而是真正的了解了他的前生今世,他的意義非凡。我希望我能夠有機(jī)會(huì)把我所學(xué)付諸實(shí)踐,當(dāng)然這需要真正的領(lǐng)悟和堅(jiān)定的信心,但我相信,我可以做到!
    發(fā)表于 05-13 00:09

    三星顯示CEO:中韓OLED顯示器企業(yè)技術(shù)差距僅1年

    三星Display社長周善表示:“與中國顯示器企業(yè)的技術(shù)差距縮小到1年或1年半。為了維持技術(shù)超差距,有必要聚集人才,提高研發(fā)的效率?!?/div>
    的頭像 發(fā)表于 03-08 14:54 ?957次閱讀

    三星顯示CEO:microOLED或于2027-2028年商業(yè)化,市場前景看好

    在KAIST大學(xué)的專題講座之后,周善明確指出,microOLED市場前景廣闊。然而,這項(xiàng)針對XR設(shè)備的顯示技術(shù)仍需經(jīng)過3至4年才能進(jìn)入商業(yè)階段。
    的頭像 發(fā)表于 03-07 14:15 ?481次閱讀

    初識(shí)FPGA需要關(guān)注的注意事項(xiàng)!

    1.基礎(chǔ)問題 FPGA的基礎(chǔ)就是數(shù)字電路和HDL語言,想學(xué)好FPGA的人,建議床頭都有一本數(shù)字電路的書,不管是哪個(gè)版本的,這個(gè)是基礎(chǔ),多了解也有助于形成硬件設(shè)計(jì)的思想。在語言方面,建議初學(xué)者學(xué)習(xí)Verilog語言,VHDL語言語法規(guī)范嚴(yán)格,調(diào)試起來很慢,Verilog語言容易上手,而且,一般大型企業(yè)都是用Verilog語言。 2.EDA工具問題 熟悉幾個(gè)常用的就可以的,開發(fā)環(huán)境QuartusII ,或ISE 就可以了,這兩個(gè)基本是相通的,會(huì)了哪一個(gè),另外的那個(gè)也就很Easy了。功能仿真建議使用Modelsim ,如果你是做芯片的,就可以學(xué)學(xué)別的仿真工具,做FPGA的,Modelsim就足夠了。綜合工具一般用Synplify,初學(xué)先不用太關(guān)心這個(gè),用Quartus綜合就OK了。當(dāng)然最推薦的是各個(gè)廠商推薦的開發(fā)環(huán)境,容易進(jìn)行demo測試體驗(yàn)。 3.硬件設(shè)計(jì)思想問題 對于初學(xué)者,特別是從軟件轉(zhuǎn)過來的,設(shè)計(jì)的程序既費(fèi)資源又速度慢,而且很有可能綜合不了,這就要求我們熟悉一些固定模塊的寫法,可綜合的模塊很多書上都有,語言介紹上都有,不要想當(dāng)然的用軟件的思想去寫硬件。 4.學(xué)習(xí)習(xí)慣問題 FPGA學(xué)習(xí)要多練習(xí),多仿真,signaltapII是很好的工具,可以看到每個(gè)信號(hào)的真實(shí)值,建議初學(xué)者一定要自己多動(dòng)手,光看書是沒用的。關(guān)于英文文檔問題,如果要學(xué)會(huì)Quartus II的所有功能,只要看它的handbook就可以了,很詳細(xì),對于IT行業(yè)的人,大部分知識(shí)來源都是英文文檔,一定要耐心看,會(huì)從中收獲很多的。 5.算法問題 做FPGA的工程師,最后一般都是專攻算法了,這些基礎(chǔ)知識(shí)都是順手捏來的,如果你沒有做好搞理論的準(zhǔn)備,學(xué)FPGA始終只能停留在初級(jí)階段上。 對于初學(xué)者,數(shù)字信號(hào)處理是基礎(chǔ),應(yīng)該好好理解,往更深的方向,不用什么都學(xué),根據(jù)你以后從事的方向,比如說通信、圖像處理,雷達(dá)、聲納、導(dǎo)航定位等。
    發(fā)表于 02-22 10:57

    凌感英飛凌XDP7系列熱插拔控制器介紹

    該系列主要有兩款產(chǎn)品,XDP700主要用于電信基礎(chǔ)設(shè)施,XDP710則更適合服務(wù)器、工業(yè)和數(shù)據(jù)中心電源系統(tǒng)等應(yīng)用中,以實(shí)現(xiàn)安全的熱插拔操作和系統(tǒng)保護(hù)。
    的頭像 發(fā)表于 02-20 15:23 ?623次閱讀

    三星顯示器公司CEO榮任韓國顯示器產(chǎn)業(yè)協(xié)會(huì)會(huì)長

    據(jù)相關(guān)行業(yè)消息,韓國顯示器產(chǎn)業(yè)協(xié)會(huì)任命周善為新任會(huì)長,周善被任命為協(xié)會(huì)會(huì)長,沿襲了三星顯示器和LG顯示器的會(huì)長輪流擔(dān)任協(xié)會(huì)會(huì)長的慣例。
    的頭像 發(fā)表于 01-22 11:25 ?730次閱讀

    《深入理解FFmpeg閱讀體驗(yàn)》初識(shí)有感

    恰好有這么好的機(jī)會(huì),當(dāng)然也有緣份讓我有幸成為試讀者,特此感謝電子發(fā)燒友論壇。 【初識(shí)有感】 我今天剛拿到的書,認(rèn)真的閱讀了推薦語、序、前言這幾篇,讓我深有感觸。 第一,通過這幾篇我得知?jiǎng)⑵缋蠋?,是一?/div>
    發(fā)表于 01-07 19:48

    初識(shí)電阻與電阻器

    初識(shí)電阻與電阻器
    的頭像 發(fā)表于 12-08 17:24 ?533次閱讀
    <b class='flag-5'>初識(shí)</b>電阻與電阻器

    中興通訊CDO麗:融合進(jìn)階 數(shù)智興煤

    11月25日,中國煤炭學(xué)會(huì)2023年學(xué)術(shù)年會(huì)在北京舉行,中興通訊首席發(fā)展官麗應(yīng)邀在煤礦智能化與企業(yè)數(shù)字化轉(zhuǎn)型分論壇發(fā)表題為《融合進(jìn)階,數(shù)智興煤》的主題演講。 麗表示,作為我國能源安全穩(wěn)定供應(yīng)
    的頭像 發(fā)表于 11-25 18:50 ?643次閱讀
    中興通訊CDO<b class='flag-5'>崔</b>麗:融合進(jìn)階 數(shù)智興煤

    高性能網(wǎng)絡(luò)框架之XDP技術(shù)解析

    還沒有較好的通用用戶態(tài)協(xié)議棧開源項(xiàng)目出現(xiàn)。在這種情況下,XDP借助于eBPF虛擬機(jī)技術(shù)在網(wǎng)卡驅(qū)動(dòng)層實(shí)現(xiàn)高性能網(wǎng)絡(luò)框架,且其原生運(yùn)行在內(nèi)核態(tài)可直通內(nèi)核TCP/UDP協(xié)議棧。XDP作為一種數(shù)據(jù)面高性能框架技術(shù)為平衡高速數(shù)據(jù)處理和協(xié)議棧兼容開辟了一個(gè)新的道路。
    的頭像 發(fā)表于 11-05 11:19 ?3390次閱讀
    高性能網(wǎng)絡(luò)框架之<b class='flag-5'>XDP</b>技術(shù)解析

    海辰儲(chǔ)能 Hithium榮列 “2023年廈門市民營企業(yè)100強(qiáng)榜單”

    11月1日,2023年廈門企業(yè)家日在廈門國際會(huì)議中心召開,市委書記永輝等市領(lǐng)導(dǎo)出席,與民營企業(yè)家代表等齊聚一堂,進(jìn)一步凝聚共識(shí)、提振信心,共促進(jìn)廈門民營經(jīng)濟(jì)發(fā)展壯大。廈門市工商聯(lián)副主席、海辰儲(chǔ)能
    的頭像 發(fā)表于 11-02 09:36 ?945次閱讀