CQF是目前TSN标准定义的可实现确定性交换延时的转发模型,其交换流程可以方便的映射到FAST平台的FPGA流水线上。FAST流水线的用户定义输出(UDO)模块可实现用户定义的分组输出控制,支持TSN CQF转发模型的UDO称为CQF-UDO。

本文介绍的CQF-UDO模块主要用于CQF功能的验证。面向具体应用的CQF实现需要对输出队列数目,输出缓冲区大小等参数进行优化。

一、CQF-UDO实现结构

在FAST架构下,除了流分类,单流流量监测和基于PTP协议的全网时间同步功能由FAST基本流水线和扩展的PTP-UDA模块实现外,基于CQF的流量整型功能由CQF-UDO模块实现。基于FAST定义的标准UDO接口信号和数据交换时序,CQF-UDO可方便地与FAST基本流水线对接。

(1)模块组成

FPGA实现的CQF-UDO模块的结构如下图所示。其中Cin和Cout接口为模块的访问控制接口,软件可通过该接口对模块内部的寄存器、计数器和控制表格进行访问。模块通过PKT接口接收和发送分组,Sync_time信号用于从PTP-UDA模块接收全网同步时钟,对时间门控逻辑进行控制。

为简化设计,CQF-UDO维护4个队列,其中最高优先级的Q7和Q6以乒乓队列的形式保存时间敏感分组,Q4保存带宽预约流的分组,Q0保存Besteffort分组。当需要对时间敏感分组划分不同优先级时,则需要不同的乒乓队列保存不同优先级的时间敏感分组。

 图 CQF-UDO实现结构

为了提高存储效率,CFQ-UDO模块将所有缓存的分组缓存在共享的RAM缓冲区PB中缓存,每个输出调度队列Q0/Q4/Q6/Q7只保存分组的地址。IC从FBD获取当前空闲缓冲区的状态STA,对不同输出队列采用不同的缓冲区管理算法,决定到达的分组是丢弃还是送PB缓存。

CQF-UDO包含的主要模块和功能如下表所示。

模块代号 含义 功能
IC 输入控制 从GOE接收分组,检查元数据中携带的端口号,丢弃目的端口号非本地端口的分组,对于目的为本端口的分组,根据FBQ的状态STA实现缓冲区管理,输出缓冲区拥塞时丢弃分组(不同优先级有不同的丢弃优先级),非拥塞时将分组送分组缓冲区(PB)缓存,同时基于元数据和PB地址生成分组描述符(PD),将PD送队列选择模块。
QS 队列选择 根据PD中携带的优先级信息选择输出队列。优先级为0的PD直接写入Q0,优先级为4的送Q4之前的整形器S0,优先级为7的送时间门控逻辑G0。丢弃其他优先级分组的PD。
PB 分组缓冲区 用于输出的缓存分组及元数据信息。每块大小为512字节,因此最长的1518字节的分组加上32字节的元数据需要至少3个分组缓冲区块。
FBQ 空闲缓冲区队列 初始化后保存空闲缓冲区的地址,按需向IC模块分配,并从OC模块回收释放的缓冲区地址。
CB 控制模块 与控制软件接口,通过9个访问点提供对CQF转发逻辑的配置,收集相关的状态信息。
G0 输入门控逻辑 G0为入队开关,选择将分组写入的队列。支持两个门控实例,乒乓切换周期分别为125us和250us,分别对应音频和视频传输流的缓存需求。
G1 输出门控逻辑 G1和G2为Q7/Q6队列得出队门控开关,只有相应门控开关打开后,队列的输出调度请求才会发往TS进行调度。
S 整形器 S0和S1分别为预约带宽流量队列Q4的入队和出队的流量监测和整型,基于令牌桶实现。其中S0为带输入缓冲的令牌桶,内部包含PD缓冲区,缓冲区的长度代表支持的突发长度。S1为不带缓冲区的令牌桶实现,避免输出流量的突发侵占best effort流量的输出带宽。
TS 发送调度 采用优先级调度算法选择发送分组的描述符。
OC 输出控制 根据TS的结果,将分组从PB读出发送输出。

 

(2)关键数据结构

PKT:IC/OC与PB之间传输,以及PB保存的PKT为FAST分组结构,即FAST定义的32字节元数据(metadata)加上不含校验字段的以太网分组。UDO保存FAST元数据的原因是其中携带了分组接收时间戳,可用于后续透明时钟的修订。

BD:为PB中512字节缓冲区的地址,初始化时硬件将所有的空闲BD写入空闲缓冲区队列(FBQ),IC在接收到分组需要将分组写入PB时,首先从FBQ读取空闲BD,OC在从PB读取分组发送结束后,将BD释放写回FBQ;

PD:分组描述符,包含从分组元数据中提取出来的14位的flowID,3位的优先级Pri,以及最多3个BD信息等。其中Pri是分组携带的优先级,flowID由FAST流水线的GME模块生成,BD由输入控制模块IC获得。

二、CQF-UDO的配置管理

根据CQF-UDO的实现模型,共有9个访问点需要软件进行管理配置。这些访问点共同组成了CQF-UDO数据转发的抽象。用户可以根据不同的软件配置实现输出接口的资源预约配置,流量测量和整型,以及转发状态检测等功能。各访问点的详细信息如下表所示。

访问点 对应模块 主要内容
A0 IC (1)对接收分组数目,以及由于缓冲区溢出丢弃分组进行计数;(2)配置每个队列丢弃的阀值。
A1 QS 每个队列长度寄存器。
A2 G0 2个输入门控开关列表,每个列表只需1个比特表示,1代表进入Q7,0代表进入Q6。
A3 S0 单个带缓冲的令牌桶参数(B,r,L),以及相关计数器
A4 S1 单个缓冲令牌桶参数(B,r),以及相关计数器
A5 G1 1比特信息,1则Q7的调度请求可通过,0则屏蔽Q7的调度请求
A6 G2 1比特信息,1则Q6的调度请求可通过,0则屏蔽Q6的调度请求
A7 TS 调度器相关统计计数器
A8 OC 输出发送相关计数器

根据FAST规范,上述信息需要映射到一个32位的虚拟地址空间中。CPU上驱动通过访问这些虚拟地址对这些信息进行管理。

三、CQF-UDO对标准CQF整型处理的简化

CQF-UDO模块实现的CQF功能只是标准CQF的一个子集或是简化的实验版本,主要简化包括:

  1. 简化的入队流控机制,使用简单的令牌桶(B,r,L三个参数)实现代替802.1Q-2014规范定义的基于信用的整形器(10个参数)的功能;
  2. 使用4个输出队列代替标准的8个输出队列,因此只支持一个优先级的时间敏感流量,一个优先级的预约带宽流量以及一个优先级的BE流量。

尽管存在上述简化,CQF-UDO仍可以对TSN网络中CQF整型机制进行验证,实现确定性的传输延时保证。关于分组缓冲区PB的大小评估额设置,队列长度设置以及缓冲区管理算法将在后续文章中给出。

分类: TSN switch

发表评论

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