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

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

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

報(bào)文解析規(guī)則定義 流水線劃分提取方案

Spinal FPGA ? 來(lái)源:Spinal FPGA ? 2023-04-08 14:15 ? 次閱讀

編 者 按

之前看一篇論文《A Fast Approach for Generating Efficient Parsers on FPGAs》,里面主要講的是如何將P4的報(bào)文解析通過(guò)流水線技術(shù)映射到FPGA上實(shí)現(xiàn)。我本身不研究P4,但這篇文章里面所提到的在構(gòu)造報(bào)文解析流水線部分倒頗有意思,故作總結(jié),感興趣的小伙伴可以去翻看原文。

報(bào)文解析規(guī)則定義

這里采用原文中定義的報(bào)文頭規(guī)則定義:

1dd53e2a-d5bc-11ed-bfe3-dac502259ad0.jpg

這里面定義了七種報(bào)文頭規(guī)則(編號(hào)為A~G):

A:Ethernet—>MPLS—>MPLS—>EoMPLS—>Ethernet

B:Ethernet—>IPV4

C:Ethernet—>IPV6

D:Ethernet—>MPLS—>IPV4

E:Ethernet—>MPLS—>MPLS—>IPV4

F:Ethernet—>MPLS—>IPV6

G:Ethernet—>MPLS—>MPLS—>IPV6

流水線設(shè)計(jì)所需要盡可能的避免Stall,在真實(shí)的業(yè)務(wù)里,可能面臨的是遠(yuǎn)比這些更復(fù)雜的協(xié)議。這里我們可以定義。

流水線劃分提取

網(wǎng)絡(luò)報(bào)文解析里,只有當(dāng)前一層報(bào)文頭解析完后才能解析下一層報(bào)文規(guī)則,故而在流水線設(shè)計(jì)里,每一級(jí)流水線一般只解析一層報(bào)文頭。以上面的流水線為例,首先找出最長(zhǎng)路徑:

1df24b32-d5bc-11ed-bfe3-dac502259ad0.jpg

這里同時(shí)為各個(gè)報(bào)文頭子規(guī)則進(jìn)行編號(hào)??梢钥吹?,最長(zhǎng)規(guī)則包含了五個(gè)報(bào)文頭規(guī)則,也就意味著流水線最長(zhǎng)級(jí)數(shù)為5級(jí)。

接下來(lái)就是處理沒(méi)有在最長(zhǎng)路徑上的節(jié)點(diǎn)。以IPV6為例。這里從(1)、(2)、(3)均有可能跳轉(zhuǎn)至IPV6(7)。取其離根節(jié)(1)點(diǎn)最遠(yuǎn)的父節(jié)點(diǎn)并掛載在其下面,刪除其他對(duì)應(yīng)的跳轉(zhuǎn)關(guān)系:

1e129cd4-d5bc-11ed-bfe3-dac502259ad0.jpg

最終IPV6節(jié)點(diǎn)被放置在EoMPLS同一級(jí)節(jié)點(diǎn)處。處于流水線的第四級(jí)。這時(shí)針對(duì)IPV6報(bào)文頭的解析,將被放置在流水線第四級(jí)進(jìn)行處理:

Ethernet—>IPV6:第一級(jí)流水解析Ethernet,第二三級(jí)不做處理,第四級(jí)解析IPV6。

Ethernet—>MPLS—>IPV6:第一級(jí)解析Ethernet,第二級(jí)解析MPLS,第三級(jí)不做處理,第四級(jí)解析IPV6。

Ethernet—>MPLS—>MPLS—>IPV6:第一級(jí)解析Ethernet,第二級(jí)解析MPLS,第三級(jí)解析MPLS,第四級(jí)解析IPV6。 同樣,按照相同的規(guī)則,我們可以來(lái)處理IPV4報(bào)文頭:

1e248048-d5bc-11ed-bfe3-dac502259ad0.jpg

至此,整個(gè)流水線設(shè)計(jì)調(diào)度完成。流水線共分為五級(jí)。

針對(duì)上面的七種報(bào)文規(guī)則,我們可以一次編號(hào)為

在流水線設(shè)計(jì)中,每一級(jí)報(bào)文解析完成后攜帶當(dāng)前已成功解析的標(biāo)志頭headerType以及EthType。這里的流水線主要在于第四級(jí)的設(shè)計(jì),其他級(jí)都較為簡(jiǎn)單,為單一的匹配。在第四級(jí)里,定義了7種可能的組合:

headerType=1,流水匹配中IPV4(6),則headerType=6,報(bào)文命中規(guī)則B

headerType=2,流水匹配中IPV4(6),則headerType=6,報(bào)文命中規(guī)則D

headerType=3,流水匹配中IPV4(6),則headerType=6,報(bào)文命中規(guī)則E

headerType=1,流水匹配中IPV6(7),則headerType=7,報(bào)文命中規(guī)則C

headerType=2,流水匹配中IPV6(7),則headerType=7,報(bào)文命中規(guī)則F

headerType=3,流水匹配中IPV6(7),則headerType=7,報(bào)文命中規(guī)則G

headerType=3,流水匹配中EoMPLS(4),則headerType=4,可能命中報(bào)文命中規(guī)則A(到第五級(jí)進(jìn)一步判斷)。

如此,經(jīng)過(guò)五級(jí)流水線處理,我們可以判斷出在報(bào)文是否命中定義的規(guī)則。

個(gè)人思考

論文中這種流水線的設(shè)計(jì)思想確實(shí)值得借鑒。然而真實(shí)的業(yè)務(wù)模型里面的報(bào)文規(guī)則遠(yuǎn)遠(yuǎn)比上面的復(fù)雜許多,所造成的流水線級(jí)數(shù)勢(shì)必會(huì)更深更長(zhǎng)。且考慮到報(bào)文頭不定長(zhǎng)度的存在,在每一級(jí)流水里都不可避免的出現(xiàn)數(shù)據(jù)位移。這種不定長(zhǎng)度的數(shù)據(jù)位移在FPGA里面像現(xiàn)在普遍的512比特位寬情況下還是很消耗資源的(部分級(jí)流水可能只需要常數(shù)移位)。

作者的初衷在于建立P4到FPGA的通用映射,然而這里面所設(shè)計(jì)的帶寬可能是遠(yuǎn)大于真實(shí)業(yè)務(wù)設(shè)計(jì)所需求的帶寬的。如果想精簡(jiǎn)資源個(gè)人倒覺(jué)得可以借鑒這種報(bào)文解析調(diào)度方式采用狀態(tài)機(jī)的形式來(lái)進(jìn)行處理,畢竟在真實(shí)的業(yè)務(wù)場(chǎng)景里還是很少出現(xiàn)每拍處理一個(gè)報(bào)文頭的場(chǎng)景。可以根據(jù)不同報(bào)文規(guī)則的長(zhǎng)度,需要的帶寬以及狀態(tài)機(jī)的最大跳轉(zhuǎn)次數(shù)(對(duì)應(yīng)這里的流水線級(jí)數(shù))放置相應(yīng)數(shù)量的狀態(tài)機(jī)個(gè)數(shù),并通過(guò)RR調(diào)度保序輸出來(lái)確保真實(shí)需要帶寬。

審核編輯:湯梓紅

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

    關(guān)注

    1629

    文章

    21736

    瀏覽量

    603421
  • 流水線
    +關(guān)注

    關(guān)注

    0

    文章

    120

    瀏覽量

    25739
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7565

    瀏覽量

    88794
  • 報(bào)文
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    4029

原文標(biāo)題:Efficient Parsers on FPGA

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA中的流水線設(shè)計(jì)

    ,但是和獲得的巨大性能提升相比,可以忽略不計(jì)。2) I/O 瓶頸,比如某個(gè)運(yùn)算需要輸入 8 個(gè)數(shù)據(jù),而 memroy 只能同時(shí)提供 2 個(gè)數(shù)據(jù),如果通過(guò)適當(dāng)劃分運(yùn)算步驟,使用流水線反而會(huì)減少面積。3
    發(fā)表于 10-26 14:38

    周期精確的流水線仿真模型

    使用軟件仿真硬件流水線是很耗時(shí)又復(fù)雜的工作,仿真過(guò)程中由于流水線的沖突而導(dǎo)致運(yùn)行速度緩慢。本文通過(guò)對(duì)嵌入式處理器的流水線, 指令集, 設(shè)備控制器等內(nèi)部結(jié)構(gòu)的分析和
    發(fā)表于 12-31 11:30 ?9次下載

    什么是流水線技術(shù)

    什么是流水線技術(shù) 流水線技術(shù)
    發(fā)表于 02-04 10:21 ?3927次閱讀

    流水線中的相關(guān)培訓(xùn)教程[1]

    流水線中的相關(guān)培訓(xùn)教程[1]  學(xué)習(xí)目標(biāo)     理解流水線中相關(guān)的分類及定義;
    發(fā)表于 04-13 15:56 ?1052次閱讀

    流水線中的相關(guān)培訓(xùn)教程[3]

    流水線中的相關(guān)培訓(xùn)教程[3] (1) 寫后讀相關(guān)(RAW:Read After Write) (命名規(guī)則) :j 的執(zhí)行要用到 i 的計(jì)算結(jié)果,當(dāng)它們?cè)?b class='flag-5'>流水線中重疊執(zhí)行時(shí),j 可
    發(fā)表于 04-13 16:02 ?845次閱讀

    CPU流水線定義

    cpu流水線技術(shù)是一種將指令分解為多步,并讓不同指令的各步操作重疊,從而實(shí)現(xiàn)幾條指令并行處理,以加速程序運(yùn)行過(guò)程的技術(shù)。
    發(fā)表于 12-14 15:29 ?4696次閱讀

    電鍍流水線的PLC控制

    電鍍流水線的PLC控制電鍍流水線的PLC控制電鍍流水線的PLC控制
    發(fā)表于 02-17 17:13 ?36次下載

    FPGA之為什么要進(jìn)行流水線的設(shè)計(jì)

    流水線又稱為裝配線,一種工業(yè)上的生產(chǎn)方式,指每一個(gè)生產(chǎn)單位只專注處理某一個(gè)片段的工作。以提高工作效率及產(chǎn)量;按照流水線的輸送方式大體可以分為:皮帶流水裝配線、板鏈線、倍速鏈、插件線、網(wǎng)帶線、懸掛線及滾筒
    的頭像 發(fā)表于 11-28 07:04 ?3612次閱讀

    各種流水線特點(diǎn)及常見(jiàn)流水線設(shè)計(jì)方式

    按照流水線的輸送方式大體可以分為:皮帶流水裝配線、板鏈線、倍速鏈、插件線、網(wǎng)帶線、懸掛線及滾筒流水線這七類流水線。
    的頭像 發(fā)表于 07-05 11:12 ?7354次閱讀
    各種<b class='flag-5'>流水線</b>特點(diǎn)及常見(jiàn)<b class='flag-5'>流水線</b>設(shè)計(jì)方式

    如何選擇合適的LED生產(chǎn)流水線輸送方式

    LED生產(chǎn)流水線輸送形式分為平面直線傳輸流水線、各種角度平面轉(zhuǎn)彎傳輸流水線、斜面上傳流水線、斜面下傳流水線這四種輸送方式,企業(yè)也是可以根據(jù)L
    發(fā)表于 08-06 11:53 ?1028次閱讀

    嵌入式_流水線

    流水線一、定義流水線是指在程序執(zhí)行時(shí)多條指令重疊進(jìn)行操作的一種準(zhǔn)并行處理實(shí)現(xiàn)技術(shù)。各種部件同時(shí)處理是針對(duì)不同指令而言的,他們可同時(shí)為多條指令的不同部分進(jìn)行工作。? 把一個(gè)重復(fù)的過(guò)程分解為若干個(gè)子過(guò)程
    發(fā)表于 10-20 20:51 ?6次下載
    嵌入式_<b class='flag-5'>流水線</b>

    CPU流水線的問(wèn)題

    1989 年推出的 i486 處理器引入了五級(jí)流水線。這時(shí),在 CPU 中不再僅運(yùn)行一條指令,每一級(jí)流水線在同一時(shí)刻都運(yùn)行著不同的指令。這個(gè)設(shè)計(jì)使得 i486 比同頻率的 386 處理器性能提升了不止一倍。
    的頭像 發(fā)表于 09-22 10:04 ?2008次閱讀

    新版本Jenkins推薦使用聲明式流水線

    stage:和聲明式的含義一致,定義流水線的階段。Stage 塊在腳本化流水線語(yǔ)法中是可選的,然而在腳本化流水線中實(shí)現(xiàn) stage 塊,可以清楚地在 Jenkins UI 界面中顯示每
    的頭像 發(fā)表于 01-13 15:34 ?1008次閱讀

    什么是流水線 Jenkins的流水線詳解

    jenkins 有 2 種流水線分為聲明式流水線與腳本化流水線,腳本化流水線是 jenkins 舊版本使用的流水線腳本,新版本 Jenkin
    發(fā)表于 05-17 16:57 ?1086次閱讀

    新版本Jenkins推薦使用聲明式流水線

    stage:和聲明式的含義一致,定義流水線的階段。Stage 塊在腳本化流水線語(yǔ)法中是可選的,然而在腳本化流水線中實(shí)現(xiàn) stage 塊,可以清楚地在 Jenkins UI 界面中顯示每
    的頭像 發(fā)表于 07-20 16:43 ?695次閱讀