0731-84728105
15116127200
FAST入门(4)软硬协同分(fēn)组处理(lǐ)模型之二
发布时间:2018-07-04
     模块是FAST平台实现分(fēn)组处理(lǐ)的基本单元,软硬件模块间高效的信息交互对实现软硬件协同分(fēn)组处理(lǐ)具有(yǒu)重要意义。元数据(Metadata)是FAST平台中模块间信息交换的核心数据结构,是控制分(fēn)组在软硬件模块间的处理(lǐ)路径以及信息交换的关键。
一、软硬件协同分(fēn)组处理(lǐ)流程
   FAST平台中传输的每个分(fēn)组都携带一个元数据块,用(yòng)于存放分(fēn)组的接收信息(如端口号,接收时刻等)、路径控制信息(如下一个模块号DMID)、处理(lǐ)的中间状态(如流分(fēn)类的标识FlowID)以及用(yòng)户自定义状态信息等。
     FPGA OS必须為(wèi)每个从端口接收的分(fēn)组创建并初始化一个元数据块,每个软件UA也必须為(wèi)其产生的分(fēn)组构建并初始化一个元数据块。当硬件模块把分(fēn)组DMID设置為(wèi)某个UA的MID,或者UA把分(fēn)组的DMID设置為(wèi)某个硬件模块的MID时,分(fēn)组需要携带元数据穿越软硬件界面,如下图所示。假设硬件流水線(xiàn)由X、Y、Z三个模块组成,作為(wèi)流水線(xiàn)最后一级的模块Z通常為(wèi)输出引擎,FPGA OS将DMID為(wèi)Z的分(fēn)组送输出接口发出。
     如果平台加载了一个软件程序A,功能(néng)是对p1接口输入,p2接口输出的所有(yǒu)分(fēn)组进行安全检查,那么A可(kě)向模块Z配置规则,将所有(yǒu)输入接口為(wèi)p1,输出接口為(wèi)p2的分(fēn)组的DMID设置為(wèi)A。因此模块Z会将分(fēn)组p的DMID设置為(wèi)A,FPGA OS会将p送到软件模块A进行处理(lǐ),同时将p的SMID设置為(wèi)Z,表示这是硬件模块Z发出的分(fēn)组。
     当A完成对p的安全检查需要继续从p2发出分(fēn)组p时,可(kě)将p的DMID设置為(wèi)Z,将p再次发送回硬件流水線(xiàn)。虽然p首先经过了硬件流水線(xiàn)中的模块X和Y,但由于DMID為(wèi)Z,所以X和Y不会处理(lǐ)分(fēn)组p,而是将其送到Z处理(lǐ)。Z发现p的SMID為(wèi)A,表示已经过安全检查,因此会将分(fēn)组DMID修改為(wèi)Z,由FPGA OS从端口发出。
二、软硬件协同处理(lǐ)中的信息交互
     元数据中除了DMID和SMID字段外,还定义了其他(tā)字段用(yòng)于模块间信息的交互。FAST2.0规范定义的元数据包含了14个字段,如下表所示:
   根据系统的性能(néng)要求,开发周期,开发人员喜好(软件开发或硬件开发),可(kě)将需要实现的网络功能(néng)划分(fēn)到不同的软硬件模块中实现(这一点后面还会详细介绍),而软硬件模块间状态信息的交互需要在元数据中携带,例如:
     (1)PST字段:硬件可(kě)进行分(fēn)组解析,包括网络协议类型或者是应用(yòng)层解析,并将解析的结果通过PST编码送UA,实现将UA分(fēn)组解析功能(néng)卸载到硬件实现;
     TSN在转发流程中扩充的单流过滤和管控(PSFP)机制主要实现三个功能(néng),一是单流测量,使用(yòng)令牌桶机制测量到达的每条流得流量和最大帧長(cháng)度是否超过预定合约;二是时间门控队列选择机制,即将全局时间(分(fēn)组到达的时刻)加入队列选择算法中考虑,重新(xīn)计算分(fēn)组内部优先级,并根据内部优先级而不是分(fēn)组VLAN头或IP头中携带的外部优先级选择输出队列号;三是入队测量,基于令牌桶机制对进入特定队列的流量进行测量,保证进入相应队列缓存的分(fēn)组流量满足一定的合约。
     (2)FlowID:硬件实现对分(fēn)组的分(fēn)类,然后将分(fēn)类的结果送UA处理(lǐ),即实现将软件的流分(fēn)类功能(néng)卸载到硬件实现;
     (3)RXTS:硬件实现对分(fēn)组接收的时间进行精确标记,软件UA可(kě)以根据这个时间戳进行时间敏感的功能(néng)处理(lǐ),这对于精准网络测量和IEEE1588时间同步控制的实现十分(fēn)关键;
     (4)UDM:用(yòng)户根据需要使用(yòng)16字节的UDM字段实现UA和特定硬件模块之间的信息传递,例如当硬件模块按照匹配的规则将分(fēn)组送给软件UA时,可(kě)以携带匹配的规则号或软件预先设置的cookie信息等。软件在将分(fēn)组发送给硬件时,也可(kě)以携带一些控制硬件处理(lǐ)的信息,如定时发送的信息等。关于UDM的使用(yòng)会在后续的实际案例中更加详细的介绍。
     因此在FAST架构下,软件UA可(kě)通过元数据与硬件模块交换更加丰富的甚至是用(yòng)户自定义的状态信息。与目前的Socket、Netlink,Libnet/Libpcap、DPDK等网络编程的API相比,FASTAPI具备更强的软硬件分(fēn)组协同分(fēn)组能(néng)力,更加容易的满足用(yòng)户定制的处理(lǐ)需求。
服務(wù)热線(xiàn)