国产午夜视频免费_精品午夜国产_国产欧洲av,寡妇高潮的味道,特级全黄久久久久久久久,久久久亚洲高清

0731-84728105
15116127200
四行代碼定乾坤:硬件二層交換機設(shè)計與實現(xiàn)
發(fā)布時間:2022-11-04
     “我OpenBox又回來了!” 沉寂了16個月,終于又提筆開始寫《硬件二層交換設(shè)計與實現(xiàn)》。從軟件設(shè)計到硬件設(shè)計需要這么長時間嗎?答案是肯定的,不僅需要,而且這點時間還只能初入Verilog代碼編程之門。 但從網(wǎng)絡(luò)實驗教學(xué)的角度來看,這是不可接受的。故我們想換個思路,走走捷徑。然而這一走,便走了整整16月有余。 所幸略有小成,與君分享,共勉自學(xué)、自研、自證之艱辛與快樂。
     A)P4與Tofino
     書上或網(wǎng)上能找到的內(nèi)容請大家自行查找了解。見:https://p4.org
     B)FAST全軟件可編程平臺
     FAST架構(gòu)在我們之前的文章中有介紹,該平臺也是一種典型的SDN架構(gòu)設(shè)計,硬件數(shù)據(jù)平面主要包括FPGA OS和UM兩部分,核心邏輯處理在UM模塊中。UM又分成了5個不同邏輯功能流水線, 用戶可以針對此流水線進行改造升級或擴展新的流水級功能。然而,使用Verilog語言來開發(fā)FPGA芯片功能著實是一件比較有難度的事情,至少在成為一個合格的Verilog代碼工程師之前來說,確實有比較漫長和艱辛的路程要走。
     受P4編程思想的啟發(fā),我們決定將FAST架構(gòu)中的UM部分更換成具備P4開發(fā)能力的硬件邏輯部件。故該平臺依然采用多核CPU加FPGA架構(gòu),P4邏輯全采用FPGA編寫,所有功能和指令邏輯全在硬件實現(xiàn)。
     C)基本功能
     1.分組前96字節(jié)內(nèi),小于128的任意bit位,任意多個PHV對象定義;
     2.支持32字節(jié)Metadata對象編程,含16字節(jié)用戶自定義Metadata內(nèi)容;
     3.分組前60字節(jié)內(nèi),任意bit位對象查表匹配,精確匹配與帶掩碼匹配,匹配字段支持輸入端口等Metadata字段;
     4.每動作支持14條指令,支持加、減、與、或、異或、取反等操作;
     5.每個指令執(zhí)行器中含16個臨時寄存器,支持臨時變量暫存與讀取,位寬支持1到64位;
     6.支持有狀態(tài)的存儲寄存器對象定義與操作,存儲寄存器位寬支持1到64位,最大個數(shù)支持128個。支持多個寄存器對象編程;
     7.支持對分組進行協(xié)議插入與刪除,長度支持1到16字節(jié);
     8.動作與指令均支持參數(shù)化配置,即可運行前實例化,也可運行時調(diào)整;
     9.支持32種不同邏輯業(yè)務(wù)處理功能在線編譯、在線加載、在線配置、在線卸載,不影響其他業(yè)務(wù)邏輯;
     10.提供P4后端編譯器,支持用戶P4代碼編譯;
     11.提供P4運行時配置管理工具,支持用戶流表配置、動作配置和寄存器初始配置。
     擁有上述平臺編程功能后,對硬件的設(shè)計要求便會變得較為簡單。原來要花較長時間,寫較多代碼的功能,現(xiàn)在可以簡單、快速的實現(xiàn)。
     A)設(shè)計原理
     從交換機的幾個功能步驟開始,先實現(xiàn)源MAC地址的學(xué)習(xí)。從平臺功能分析,使用寄存器部件比較合適。 擬定義一個端口與MAC地址的映射表,存儲在寄存器對象中,使用源MAC地址作為寄存器對象的索引,分組輸入端口號作為該索引位置的值。在使用目的MAC查表時,亦使用MAC地址作為索引進行查找,即可獲取該地址學(xué)習(xí)存儲的端口號。
     由于MAC地址為48位,本平臺支持寄存器的深度有限,故本案例中僅取MAC地址的后4位作為索引。故實驗演示時,要求測試主機的MAC地址尾數(shù)不同。
     單播地址可以采用上述思路進行設(shè)備,那組播與廣播地址呢,我們本案例擬采用全泛洪的方式先來實現(xiàn)一個基礎(chǔ)版本。 想要做組播功能可以將組播協(xié)議配置規(guī)則送CPU處理,CPU學(xué)習(xí)到入組和退組信息后,通過P4的運行時工具進行組播MAC與相應(yīng)端口號的規(guī)則配置即可。
     B)代碼實現(xiàn)

action learn_forward()
{
     MAC_PORT.regwrite((u8)hdr.eth.smac&0xF,std_meta.ioport);
     std_meta.ioport = MAC_PORT.regread((u8)hdr.eth.dmac&0xF);
}

單播自學(xué)習(xí)與轉(zhuǎn)發(fā)

action mb_cast()
{
     MAC_PORT.regwrite((u8)hdr.eth.smac&0xF,std_meta.ioport);
     std_meta.ioport = ~std_meta.ioport;
}

多播泛洪
以上為硬件二層交換機(原型系統(tǒng))全部業(yè)務(wù)邏輯功能代碼。是的,就是這四行代碼!!!!
      A)軟件核心代碼

      B)編譯器結(jié)果

      C)硬件配置

      D)Ping通測試

C:\Users\Administrator>ping 192.168.1.198
正在 Ping 192.168.1.198 具有 32 字節(jié)的數(shù)據(jù):
來自 192.168.1.198 的回復(fù): 字節(jié)=32 時間<1ms TTL=127
來自 192.168.1.198 的回復(fù): 字節(jié)=32 時間<1ms TTL=127
來自 192.168.1.198 的回復(fù): 字節(jié)=32 時間<1ms TTL=127
來自 192.168.1.198 的回復(fù): 字節(jié)=32 時間<1ms TTL=127

     物質(zhì)守恒、能力守恒,苦難亦然守恒。
     為了讓學(xué)生們在我們平臺編寫硬件邏輯少些痛苦,我們艱苦奮斗了16個月,對P4的原理、代碼和編譯器進行了仔細琢磨、分析和領(lǐng)悟。我們認為P4是一門較為優(yōu)秀的編程語言,更是一種硬件編程的創(chuàng)新思路和具體表達形式。我們無法去破解P4的硬件實現(xiàn),固然也無從參考,而是領(lǐng)悟P4編程方式的精髓理念后,采用了原有FAST架構(gòu)和部分邏輯調(diào)整,并配置P4后端編譯適配,打造了現(xiàn)如今的支持P4的FAST架構(gòu)可編程平臺。
     本平臺結(jié)合了FAST架構(gòu)與P4可編程的雙重優(yōu)勢。支持用戶在最底層硬件到最高層軟件全方便的編程與驗證,而且編程語言均使用C語言和類似C的P4語言,進一步降低了學(xué)習(xí)與使用難度。
     下一步,做個硬件路由器?或者您有更美好的想法,我們可以試一試!
     有需要開發(fā)可編程硬件(FPGA、ASIC等)的P4后端編譯器,或獲得本平臺介紹相關(guān)源碼的客戶,請與15116127200(微信同號)聯(lián)系,閱讀更多FAST相關(guān)文章請進入以下公眾號。