0731-84728105
15116127200
XS-TCAM-104x320:基于FPGA的TCAM开源实现(二)
发布时间: 2018-03-15
     在之前的公众号文章中我们为大家介绍了湖南新实设计的新IP核:XS-TCAM-104x320的硬件设计及其具体实现,本篇文章则针对XS-TCAM-104x320 IP核的软件部分API的使用进行说明,如图1所示,软件的实现是通过在FAST 软件库中添加Libbv库来实现流表数据的各类操作(图内标红部分)。本期文章将着重为大家介绍Libbv库的相关接口以及使用方法。

图1 FAST实现结构图
一、软件代码说明
      当前的XS-TCAM-104x320 IP 核共支持320条表项,每条表项基于五元组(源、目的IP地址,协议号,源、目的端口号)进行匹配,因此其软件部分声明的数据结构定义如下:
     用户在调用数据结构时,需遵守FAST-0.2.0规范,即key值与mask值需一一对应,以下是填充上述数据结构的示例代码:
     在示例代码中,proto字段为0,代表匹配ARP类型的报文,所以上述示例代码的执行结果是:添加了两条流表,一条支持ICMP报文转发到2号端口,一条支持ARP报文转发到2号端口。
     在填充完流表之后,用户可通过调用为XS-TCAM-104x320定制的API接口将流表下发到硬件中,API接口如下所示:
     用户可在任何UA应用中调用上述接口,实现对XS-TCAM-104x320流表的操作。
二、示例代码运行结果
      在该示例代码中,用户可以通过参数控制4条流表的写入位置用来测试当前流表项位于不同的地址时,硬件查表逻辑是否能正常执行。用户可在r1()和r2()两个函数中自行定义4条规则的内容,然后在运行示例代码时使用参数控制流表写入的位置,运行示例代码的命令如下所示:
     其中参数“1”是指第一条流表将写入idx为1的地址,参数“3”是指将第二条流表写入idx为3的地址。请注意,两条规则的地址相差必须大于2,否则会前后相互覆盖,造成未知的错误。最后一个参数“64”是指在idx0-idx63之间(除了用户指定的流表位置)写满随机内容的流表,用于测试整个流表空间的查表能力。
     在流表写入之后,用户根据流表将IP地址为1.2.3.4和1.2.3.5的主机分别接入1、2号端口,即可相互正常通信,如图2所示:

图2 客户端ping命令执行截图
三、源码的下载
      支持XS-TCAM-104x320的新版本FAST软件开发环境现已上传至FAST社区官方网站,用户可切换至“代码”选项卡,点击“FAST UA”选项,然后点击图3按钮即可下载新版本的软件开发环境:

图3 软件下载网页
     用户下载后可在linux中输入命令解压文件:
      解压完成之后,输入如下命令进行配置和编译:
     上述命令执行完成后,用户可在fast-0.2.0/tools/bv目录下找到上述的示例源码。
     如对XS-TCAM-104x320 IP在软硬件代码下载或测试过程中有遇到任何问题,可以通过微信直接与我们联系,我们会尽快给与回复。