1 前言

    FAST(FPGA bAsed SDN swiTh)是基于FPGA的可重构SDN交换架构。平台(硬件板卡)无关是FAST的重要特点。因此,需要定义FAST交换逻辑与FPGA平台相关逻辑的接口。这些接口包括:(1)报文输入和输出接口;(2)管理配置接口;(3)协处理器接口;(4)辅助信号(如时钟与复位信号等)接口。

    FAST中将平台相关逻辑称为支持FAST的FPGA操作系统(OS),FAST交换逻辑称为FAST用户模块(UM)。

    FAST UM规范确定了FPGA OS与FASTUM的接口。基于FAST UM规范开发的逻辑可在支持FASTFPGA OS的不同硬件平台上无缝移植。

2 FAST UM的总体结构

2.1UM接口概述

FAST UM定义了8类接口:FromPort,ToPort,FromCPU,ToCPU,Ctrl,AUX,FromMatch和ToMatch,支持FAST的FPGAOS需要支持前6个接口,带有TCAM或专用查表实现逻辑(如基于SBV算法的查表逻辑)的平台可根据规范的定义提供额外的FromMatch和ToMatch两个接口。UM逻辑通过调用FrmMatch/ToMatch接口实现转发查表中的匹配操作。

FAST UM的接口如图1所示,各接口简要说明如下。

FromPort:FASTUM从该接口接收网络接口到达的报文;

ToPort:FASTUM将发送的报文从该接口发出;

ToCPU接口:FAST UM通过该接口把硬件需要定向到软件处理得分组交送CPU处理;

FromCPU:CPU软件通过FromCPU接口将发送给FPGA数据平面的分组送给FAST UM逻辑处理。

Ctrl:CPU根据虚拟地址空间的定义,通过该接口提供的读写操作原语,对FAST UM内部的寄存器、各类控制表进行维护管理。

AUX:FASTOS向UM提供的时钟、复位、时间戳等信息,以及UM发出的控制平台相关外设(如显示屏)的信号等。

ToMatch:发往Match协处理器的查表请求,包括288位的key和288位的掩码;

FromMatch:从Match查表协处理器返回的查表结果。

图1 FAST UM接口逻辑结构

    特定平台的FPGA OS还可以提供其他扩展接口,如外部的SRAM/DDR存储器访问接口等,在后续版本的FAST UM规范中将对这些扩展接口进行定义。

2.2 数据通路分组格式

    FAST UM在FromPort、ToPort、FromCPU、ToCPU四个接口采用相同的分组传输格式,数据宽度为134位,其中128位为报文数据,包括32字节的Meatdata和分组数据,最高6位为控制信息。如图2所示。

    MetaData格式将在第4节定义,报文数据的格式为接口收发的以太网报文格式。其中以太网报文格式中不包含最后的4字节CRC字段,接收时,FPGA OS负责接收时进行CRC校验和剥离,发送时,FPGA OS会计算分组的CRC字段并附加在报文最后。

    数据通路的[133:132]位为报文数据的头尾标识。01标识报文头部,11标识报文中间数据,10标识报文尾部。由于不同报文具有不同长度,因此在报文数据最后一排可能存在一些无效的字节。数据报文的最后一拍的[131:128]位用来标识无用字节的个数。其中0000表示16个字节全部有效;0001标识最低1个字节无效,最高15个字节有效;以此类推,1111表示最低15个字节无效,最高1个字节有效。

图2 传送报文的数据格式

    时钟频率为125MHz,因此可测算每个接口的理论上带宽为16Gbps(128bit*125MHz)。

2.3 MetaData格式

    MetaData0主要包含报文分组处理的中间信息,定义如下。

表1 Metadata_0数据字段含义

信号名称 宽度 功能
InPort/OutPort [127:120] FromPort和ToCPU接口为接收的端口号,FromCPU和ToPort接口为分组发出的端口号。
Length [119:108] 分组长度,不包含MetaData,最长为4K,最短为60字节(去掉CRC域的最小以太网帧长度)。
SrcModuleID [107:100] ToCPU/FromCPU接口报文通信时,源功能模块的ID。
DstModuleID [99:92] ToCPU/FromCPU接口报文通信时,目的功能模块ID。
保留 [91:81] 保留
Seq_Num [80:64] 报文接收序号,由FPGA OS在分组接收时标记,每个输入接口维护一个独立的序列号
TimeStamp [63:0] 报文接收时间戳,由FPGA OS在分组接收时标记

 

     MetaData1为用户自定义信息,由用户在设计FAST UM和相应软件模块时确定,本规范不做约定。

3与CPU软件(UA)的通信

     FAST UM与CPU上软件UA的通信包括控制路径的通信和数据路径上的通信。控制路径通信主要实现CPU上控制软件对FAST UM的配置,各类查找表的更新,以及对各类状态寄存器和计数器的读取。数据路径通信主要是指FAST UM将分组定向到CPU软件处理,以及CPU软件将分组发往FAST UM进行处理和转发。

3.1控制路径通信

    FAST控制路径的通信主要基于虚拟地址空间的思想,即在FAST UM与FAST UA在设计时首先确定软件可访问的各类硬件资源的虚拟地址,然后UA通过对虚拟地址的读写来访问这些硬件资源。关于虚拟地址空间的详细内容见《FAST设计规范(二):虚拟地址空间规范》。

    Ctrl接口实现FPGA OS与FASTUM之间控制路径的通信,其基本时序类似与Cpu访问慢速外设的总线时序,FPGA OS是总线访问的master端,而FAST UM是总线访问的Slave端。

    FPGA OS可通过PCIe总线,或者以太网与本地或远端的CPU上的UA进行通信,具体通信的方式对FastUM和UA设计透明。

3.2数据路径通信

    FAST UM与UA之间的数据通路通信是FAST中支持CPU/FPGA异构平台上软硬件协同分组处理的关键。其核心思想是为独立的软件线程和硬件逻辑块统一分配8比特的MID(ModuleID)。其中编号为0-127的MID标识硬件模块,128-255的MID标识软件模块。在UM和UA通信过程中,通过MetaData可以显式的指定通信的目的MID和源MID。

    FAST平台的FPGA OS和平台软件负责根据每个在UM和UA之间穿越分组的目的MID进行路由。路由的实现方法对FAST UM和UA的设计透明。

4与查表协处理器的通信

4.1接口设计考虑

    UM通过ToMatch接口向查表协处理器提交288位的key数据,从FromMatch接口接收返回的查表结果,包括是否匹配,以及匹配的规则ID等。

    UM可以通过ToMatch接口连续地向查表协处理器提交查表请求,查表协处理器必须保证这些查表结果按照UM提交的顺序通过FromMatch接口返回查表结果。

    ToMatch和FromMatch接口设计均采用简单的FIFO写接口,避免了UM和查表协处理器由于同步而带来的复杂性。

4.2平台实现的考虑

    不同的平台提供查表的规则宽度为288比特,每比特都可以带掩码。支持的规则数目不限,设为2X条(X为正整数),则FromMatch返回的ruleID宽度为X位。

    平台通过虚拟地址空间的定义,支持软件访问(读写)查表协处理器中的规则,即对查表协处理器的管理无需通过UM。

附录AFAST UM的引脚和时序说明

A1:FromPort接口

表A-1  FromPort接口信号列表

信号名称 方向 宽度 信号描述
port2um_data_wr input 1 数据接收模块向UM上传数据FIFO的写信号,高有效;
port2um_data input 134 数据接收模块向UM上传的数据FIFO的数据信号;
um2port_data_alful output 1 数据FIFO已经达到不能再写一个最大报文的阀值,高为不能写数据到UM,等待该信号为低才能继续写下一个完整报文数据;
port2um_data_valid input 1 同步数据FIFO的有效FIFO,表示一个完整的数据报文已经写入数据FIFO中,为1表示数据是正确数据,为0表示数据为错误数据;
port2um_data_valid_wr input 1 同步数据FIFO的有效FIFO的写信号,为高表示有一个完整报文。

 

    FromPort接口数据接收模块向UM发送报文数据,具体操作步骤如下:

(1)数据接收模块检测数据FIFO中是否有一个完整的数据报文,如果有进行下一步操作,如果没有在该状态等待,直到有一个完整数据报文,然后进行下一步操作;

(2)数据接收模块检测UM向自己发送的um2port_data_alful,如果为高,在该状态等待,如果为低,进行下一步操作;

(3)数据接收模块向UM发送数据报文,把port2um_data_wr信号置高,同时检查报文的首尾标识;

(4)当检查到[133:132]为2’b10(报文尾),停止读取报文,数据接收模块置port2um_data_valid_wr和port2um_data_valid信号为高,同时进入下一个数据报文的发送,如此循环。

图A-1 UM与报文接收模块的输入控制时序关系

A2:ToPort接口

表A-2  ToPort接口信号列表

信号名称 方向 宽度 信号描述
um2port_data_wr output 1 UM向数据发送模块上传数据FIFO的写信号,高有效;
um2port_data output 134 UM向数据发送模块上传的数据FIFO的数据信号;
port2um_data_alful input 1 数据FIFO已经达到不能再写一个最大报文的阀值,高为不能写数据到数据收发模块,等待该信号为低才能继续写下一个完整报文数据;
um2port_data_valid output 1 同步数据FIFO的有效FIFO,表示一个完整的数据报文已经写入数据FIFO中,为1表示数据是正确数据,为0表示数据为错误数据;
um2port_data_valid_wr output 1 端口FIFO的写信号,为高表示该报文可以进行相应的转发。

 

    UM向数据发送模块发送报文数据,具体操作步骤如下:

(1)UM模块检测数据FIFO中是否有一个完整的数据报文,如果有进行下一步操作,如果没有在该状态等待,直到有一个完整数据报文,然后进行下一步操作;

(2)UM检测数据发送模块向自己发送的port2um_data_alful,如果为高,在该状态等待,如果为低,进行下一步操作;

(3)UM向数据发送模块发送数据报文,把um2port_data_wr信号置高,同时检查报文的首尾标识;

(4)当检查到[133:132]为2b’10(报文尾),停止读取报文,UM模块置um2port_data_valid_wr和um2port_data_valid信号为高,同时进入下一个数据报文的发送,如此循环。

图A-2 UM与报文发送模块的输出控制时序关系

A3:ToCPU接口

表A-3  ToCPU接口信号列表

信号名称 方向 宽度 信号描述
um2cpu_data_wr output 1 UM向软件处理模块上传数据FIFO的写信号,高有效;
um2cpu_data output 134 UM向软件处理模块上传的数据FIFO的数据信号;
cpu2um_data_alful input 1 数据FIFO已经达到不能再写一个最大报文的阀值,高为不能写数据到软件处理模块,等待该信号为低才能继续写下一个完整报文数据;
um2cpu_data_valid output 1 同步数据FIFO的有效FIFO,表示一个完整的数据报文已经写入数据FIFO中,为1表示数据是正确数据,为0表示数据为错误数据;
um2cpu_data_valid_wr output 1 端口FIFO的写信号,为高表示该报文可以进行相应的转发。

 

    UM向软件处理模块发送报文数据,具体操作步骤如下:

(1)UM模块检测数据FIFO中是否有一个完整的数据报文,如果有进行下一步操作,如果没有在该状态等待,直到有一个完整数据报文,然后进行下一步操作;

(2)UM模块检测软件处理模块给自己发送的cpu2um_data_alful,如果为高,在该状态等待,如果为低,进行下一步操作;

(3)UM向软件处理模块发送数据报文,把um2cpu_data_wr信号置高,同时检查报文的首尾标识;

(4)当检查到[133:132]为2’b10(报文尾),停止读取报文,UM模块置um2cpu_data_valid_wr和um2cpu_data_valid信号为高,同时进入下一个数据报文的发送,如此循环。

图A-3 UM与软件处理模块的输出控制时序关系

A4:FromCPU接口

表A-4  FromCpu接口信号列表

信号名称 方向 宽度 信号描述
cpu2um_data_wr input 1 软件处理模块向UM上传数据FIFO的写信号,高有效;
cpu2um_data input 134 软件处理模块向UM上传的数据FIFO的数据信号;
um2cpu_data_alful output 1 数据FIFO已经达到不能再写一个最大报文的阀值,高为不能写数据到UM,等待该信号为低才能继续写下一个完整报文数据;
cpu2um_data_valid input 1 同步数据FIFO的有效FIFO,表示一个完整的数据报文已经写入数据FIFO中,为1表示数据是正确数据,为0表示数据为错误数据;
cpu2um_data_valid_wr input 1 同步数据FIFO的有效FIFO的写信号,为高表示有一个完整报文。

    软件处理模块向UM发送报文数据,具体操作步骤如下:

(1)软件处理模块检测数据FIFO中是否有一个完整的数据报文,如果有进行下一步操作,如果没有在该状态等待,直到有一个完整数据报文,然后进行下一步操作;

(2)软件处理模块检测UM给自己发送的um2cpu_data_alful,如果为高,在该状态等待,如果为低,进行下一步操作;

(3)软件处理模块向UM发送数据报文,把cpu2um_data_wr信号置高,同时检查报文的首尾标识;

(4)当检查到[133:132]为2’b10(报文尾),停止读取报文,软件处理模块置cpu2um_data_valid_wr和cpu2um_data_valid信号为高,同时进入下一个数据报文的发送,如此循环。

图A-4 UM与软件处理模块的输入控制时序关系

A5:Ctrl接口

表A-5  CtrlInterface接口信号列表

信号名称 方向 宽度 信号描述
cs_n input 1 片选信号,低有效;
rd_wr input 1 读写命令:低表示write,高表示read;
Ale input 1 地址锁存信号;
Data input 32 地址和输入数据复用总线;
data_out output 32 读UM输出的数据总线;
ack_n output 1 应答信号,低有效。

 

    管理模块把解析后的命令及数据发送给UM,UM获得命令及数据后,对相应的地址空间进行读写操作。如果为读操作,则UM需要向管理模块返回从相应地址中读出的数据及应答信号;如果为写操作,则UM完成写操作后,只需返回应答信号即可。

因此,根据UM可获的读写两种操作命令,UM与管理模块之间的接口时序关系也分为read和write两种。

管理模块与UM之间的读操作步骤如下:

(1)管理模块输出读请求、地址;

(2)管理模块24ns之后输出地址锁存信号ale,高有效;

(3)管理模块24ns之后撤掉地址锁存信号;

(4)UM检测到ale的下降沿,采样地址并判断,如果为自己的地址空间则继续往下执行,如果不为自己的地址空间则不继续往下执行而是等待下一次操作;

(5)管理模块24ns之后撤掉读地址,输出片选,低有效;

(6)UM检测到片选信号为0,进行读操作、返回读数据data_out,等数据稳定之后将ack_n信号置0;

(7)管理模块检测到ack_n信号为0,采样数据data_out,撤掉片选、读请求;

(8)UM检测到片选信号为1,撤掉ack_n信号;

(9)管理模块检测到ack_n变为1,可以发起下一次操作。

图A-5 UM与管理模块的读操作时序关系

    管理模块与UM之间的写操作步骤如下:

(1)管理模块输出写请求、地址;

(2)管理模块24ns之后输出地址锁存信,高有效;

(3)管理模块24ns之后撤掉地址锁存信号;

(4)UM检测到ale的下降沿,采样地址并判断,如果为自己的地址空间则继续往下执行,如果不为自己的地址空间则不继续往下执行而是等待下一次操作;

(5)管理模块24ns之后撤掉写地址,输出写数据;

(6)管理模块24ns之后输出片选,低有效;

(7)UM检测到片选信号为0,进行写操作,写操作完成之后将ack_n置0;

(8)管理模块检测到ack_n信号为0,撤掉片选、请求;

(9)UM检测到片选信号为1之后,撤掉ack_n;

(10)管理模块检测到ack_n信号变为1之后,可以发起下一次操作。

图A-6UM与管理模块的写操作时序关系

A6:ToMatch接口

ToMatch接口默认查表引擎向UM提供一个宽度为288位的FIFO用于存放查表数据(key)。

 

A-6  ToMatch接口信号列表

信号名称 方向 宽度 信号描述
um2match_key_wr output 1 UM向查表引擎的key FIFO的写信号,高有效;
um2match_key output 288 UM向查表模块key FIFO的写数据;
match2um_ready Input 1 查表模块Key FIFO的状态信号,1表示FIFO已满。

 

A7:FromMatch接口

FromMatch接口认为UM为查表模块提供一个存放查表结果的,宽度为X+1RuleID FIFO。其中match2um_ruleid标识命中规则的IDX与平台支持的规则数为2X条。

 

A-7  FromMatch接口信号列表

信号名称 方向 宽度 信号描述
match2um_ruleid_wr Input 1 查表模块向UM返回的查表规则序号FIFO的写信号,高有效;
match2um_match Input 1 表示查表是否命中。1为命中,0为未命中
match2um_ruleid Input X 查表模块向UM返回的查表规则序号。
um2match_data_alful output 1 RuleID FIFO状态,1表示FIFO已满。

A8AUX接口

信号名称 方向 宽度 信号描述
ClK input 1 时钟信号,125MHz
Reset_N input 1 复位信号,低有效
TimeStamp input 64 平台提供的本地时间戳,每8ns增加1
AUX_ctrl Output Y 用户定义的控制线,控制平台相关的外设,Y与平台相关。

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注