XS-TCAM-104x320:基于FPGA的TCAM開源實(shí)現(xiàn)(二)
發(fā)布時(shí)間: 2018-03-15
在之前的公眾號(hào)文章中我們?yōu)榇蠹医榻B了湖南新實(shí)設(shè)計(jì)的新IP核:XS-TCAM-104x320的硬件設(shè)計(jì)及其具體實(shí)現(xiàn),本篇文章則針對(duì)XS-TCAM-104x320 IP核的軟件部分API的使用進(jìn)行說明,如圖1所示,軟件的實(shí)現(xiàn)是通過在FAST 軟件庫中添加Libbv庫來實(shí)現(xiàn)流表數(shù)據(jù)的各類操作(圖內(nèi)標(biāo)紅部分)。本期文章將著重為大家介紹Libbv庫的相關(guān)接口以及使用方法。

圖1 FAST實(shí)現(xiàn)結(jié)構(gòu)圖
一、軟件代碼說明
當(dāng)前的XS-TCAM-104x320 IP 核共支持320條表項(xiàng),每條表項(xiàng)基于五元組(源、目的IP地址,協(xié)議號(hào),源、目的端口號(hào))進(jìn)行匹配,因此其軟件部分聲明的數(shù)據(jù)結(jié)構(gòu)定義如下:
用戶在調(diào)用數(shù)據(jù)結(jié)構(gòu)時(shí),需遵守FAST-0.2.0規(guī)范,即key值與mask值需一一對(duì)應(yīng),以下是填充上述數(shù)據(jù)結(jié)構(gòu)的示例代碼:
在示例代碼中,proto字段為0,代表匹配ARP類型的報(bào)文,所以上述示例代碼的執(zhí)行結(jié)果是:添加了兩條流表,一條支持ICMP報(bào)文轉(zhuǎn)發(fā)到2號(hào)端口,一條支持ARP報(bào)文轉(zhuǎn)發(fā)到2號(hào)端口。
在填充完流表之后,用戶可通過調(diào)用為XS-TCAM-104x320定制的API接口將流表下發(fā)到硬件中,API接口如下所示:
用戶可在任何UA應(yīng)用中調(diào)用上述接口,實(shí)現(xiàn)對(duì)XS-TCAM-104x320流表的操作。
二、示例代碼運(yùn)行結(jié)果
在該示例代碼中,用戶可以通過參數(shù)控制4條流表的寫入位置用來測(cè)試當(dāng)前流表項(xiàng)位于不同的地址時(shí),硬件查表邏輯是否能正常執(zhí)行。用戶可在r1()和r2()兩個(gè)函數(shù)中自行定義4條規(guī)則的內(nèi)容,然后在運(yùn)行示例代碼時(shí)使用參數(shù)控制流表寫入的位置,運(yùn)行示例代碼的命令如下所示:
其中參數(shù)“1”是指第一條流表將寫入idx為1的地址,參數(shù)“3”是指將第二條流表寫入idx為3的地址。請(qǐng)注意,兩條規(guī)則的地址相差必須大于2,否則會(huì)前后相互覆蓋,造成未知的錯(cuò)誤。最后一個(gè)參數(shù)“64”是指在idx0-idx63之間(除了用戶指定的流表位置)寫滿隨機(jī)內(nèi)容的流表,用于測(cè)試整個(gè)流表空間的查表能力。
在流表寫入之后,用戶根據(jù)流表將IP地址為1.2.3.4和1.2.3.5的主機(jī)分別接入1、2號(hào)端口,即可相互正常通信,如圖2所示:

圖2 客戶端ping命令執(zhí)行截圖
三、源碼的下載
支持XS-TCAM-104x320的新版本FAST軟件開發(fā)環(huán)境現(xiàn)已上傳至FAST社區(qū)官方網(wǎng)站,用戶可切換至“代碼”選項(xiàng)卡,點(diǎn)擊“FAST UA”選項(xiàng),然后點(diǎn)擊圖3按鈕即可下載新版本的軟件開發(fā)環(huán)境:

圖3 軟件下載網(wǎng)頁
用戶下載后可在linux中輸入命令解壓文件:
解壓完成之后,輸入如下命令進(jìn)行配置和編譯:
上述命令執(zhí)行完成后,用戶可在fast-0.2.0/tools/bv目錄下找到上述的示例源碼。
如對(duì)XS-TCAM-104x320 IP在軟硬件代碼下載或測(cè)試過程中有遇到任何問題,可以通過微信直接與我們聯(lián)系,我們會(huì)盡快給與回復(fù)。