為(wèi)了支持更加灵活的用(yòng)户逻辑定制,以及基于集中缓存的交换输出调度,解决目前TSN交换开发过程中遇到的用(yòng)户逻辑定制复杂等问题,经讨论和征求现有(yǒu)用(yòng)户意见,FAST流水線(xiàn)模型由3.0版本升级到3.1版本。
一、3.0版本存在的问题
FAST3.0流水線(xiàn)模型如图1所示。其主要特点是增加了Pre-Ingress流水線(xiàn)段,避免GPP(通用(yòng)分(fēn)组解析)将IEEE1588v2的PTP协议帧定向到软件处理(lǐ)或丢弃,同时将GOE(通用(yòng)输出引擎)直接与UDO(用(yòng)户定义输出)连接,取消了UDO到GOE的反压流控信号,避免了分(fēn)组输出延时的不确定性,為(wèi)基于FAST架构的TSN交换实现奠定了基础。
图1 FAST流水線(xiàn)3.0版本的结构
然而,FAST用(yòng)户在TSN交换功能(néng)开发时也面临了两个问题。一是基于FIFO结构的PBuf(分(fēn)组缓存)只支持先来先服務(wù)的输出调度算法,限制了其他(tā)输出调度算法的应用(yòng);二是Pbuf的写入和读出逻辑分(fēn)别与GPP和GAC(通用(yòng)转发动作)模块绑定,强制用(yòng)户必须同时使用(yòng)PBuf缓存管理(lǐ)和GPP/GAC的功能(néng),限制了用(yòng)户自定义逻辑的灵活性。
二、3.1版本简介
FAST流水線(xiàn)3.1版本模型如图2所示,对比3.0版本主要有(yǒu)三个主要变化。
(1)基于BID的Pbuf管理(lǐ)
Pbuf按照RAM的方式组织,内部存储被划分(fēn)為(wèi)多(duō)个分(fēn)组缓冲區(qū),每个缓冲區(qū)使用(yòng)體(tǐ)格BID(缓冲區(qū)ID)表示。每个到达流水線(xiàn)的分(fēn)组都会被分(fēn)配一个BID,BID嵌入分(fēn)组的元数据在流水線(xiàn)中传递。当流水線(xiàn)需要从Pbuf读出分(fēn)组时,根据分(fēn)组的BID向Pbuf发出读出请求。由于BID机制可(kě)以支持非FIFO的分(fēn)组读出顺序,因此可(kě)以支持流水線(xiàn)采用(yòng)更加复杂的分(fēn)组输出调度策略。
(2)Pbuf管理(lǐ)与GPP和GAC解耦
FAST流水線(xiàn)3.0版本及以前均将Pbuf和写入和读出逻辑分(fēn)别嵌入GPP和GAC模块,因此使用(yòng)Pbuf时默认需要流水線(xiàn)配置GPP和GAC模块,这给用(yòng)户逻辑定制带来不便。例如很(hěn)多(duō)用(yòng)户交换场景(例如二层TSN交换)并不需要对IP的解析,而GPP包含了IPv4/IPv6以及传输层协议的解析,默认使用(yòng)GPP使得用(yòng)户的逻辑难以简化。
图2 FAST 3.1的流水線(xiàn)扩展模型
在FAST流水線(xiàn)3.1版本中,Ingress流水線(xiàn)的第一个模块固定為(wèi)IBM(Ingress缓存管理(lǐ)),IBM从CBM(集中缓存管理(lǐ))获取一个空闲的BID,将分(fēn)组写入该BID,并将BID嵌入分(fēn)组元数据中。在Egress流水線(xiàn)中嵌入EBM(Egress缓存管理(lǐ))模块,负责根据从上游接收到的分(fēn)组元数据中德BID从CBM中读取分(fēn)组,向下游模块发出。
CBM负责Pbuf中空闲缓冲區(qū)BID的维护,IBM每接收一个分(fēn)组就分(fēn)配一个BID,EBM没读取一个分(fēn)组就回收一个BID。
由于流水線(xiàn)元数据中需要携带BID信息,因此需要将原有(yǒu)FAST架构中的元数据定义进行修改,主要是取消元数据中的SeqNum序列号字段和缩短分(fēn)组長(cháng)度字段,详细见《FAST元数据格式规范》。
(3)模块的颜色标注
為(wèi)了进一步區(qū)分(fēn)模块的属性,支持用(yòng)户利用(yòng)现有(yǒu)成熟模块进行快速原型实现以及完全定制自己的模块,FAST模块引入颜色标注机制。
表1列車(chē)数据类型与TSN数据类型映射表
颜色 |
类型 |
知识产权属性 |
知识产权属性 |
绿色 |
要求基于FAST开发必须使用(yòng)的基础模块 |
任意使用(yòng),无知识产权问题 |
IBM、CBM、EBM |
黄色 |
推荐基于FAST开发的用(yòng)户使用(yòng)的通用(yòng)模块 |
任意使用(yòng),无知识产权问题 |
GPP,GKE,GME,GAC,GOE |
白色 |
用(yòng)户自定义的模块 |
开发者拥有(yǒu)知识产权 |
1588-GAC,1588-UDO等 |
FAST社區(qū)会严格测试保证绿色和黄色模块的质量,并提供文(wén)档和技术支持。白色模块质量有(yǒu)开发用(yòng)户负责。经用(yòng)户授权和FAST社區(qū)测试,白色模块也会变成黄色模块。
附:FAST流水線(xiàn)版本历史
版本 |
时间 |
改动 |
1.0 |
2016.12 |
初始的FAST流水線(xiàn)版本,主要特点包括:
(1)标准的五级流水線(xiàn)(用(yòng)户定义的解析、关键字提取,查表,转发action,输出引擎);
(2)用(yòng)户通过扩充标准五级流水線(xiàn)模块功能(néng),实现定制逻辑
|
2.0 |
2018.6 |
(1)支持用(yòng)户通过插入自己的模块扩展流水線(xiàn)的处理(lǐ)功能(néng),而无需修改已有(yǒu)的五级流水線(xiàn)逻辑
|
3.0 |
2019.1 |
在2.0版本基础上:
(1)增加了Pre-Ingress流水線(xiàn)段,支持对GPP不支持的协议帧进行解析和处理(lǐ)
(2)将GOE直接与UDO连接,避免了分(fēn)组输出延时的不确定性,為(wèi)支持TSN提供保证 |
3.1 |
2019.3 |
在3.0版本基础上:
(1)将分(fēn)组缓冲區(qū)(PB)由单FIFO队列模式改為(wèi)基于RAM的随机存取的方式,支持有(yǒu)优先级區(qū)别的分(fēn)组缓存和输出调度算法;
(2)将分(fēn)组写入PB的逻辑从GPP模块中独立出来,将从PB读出分(fēn)组的逻辑从GAC模块分(fēn)离出来,有(yǒu)助于用(yòng)户逻辑定制时,使用(yòng)流水線(xiàn)提供的分(fēn)组缓存管理(lǐ)机制,而定制自己的分(fēn)组解析和转发动作逻辑。
(3)修改相应的元数据格式定义;
(4)FAST流水線(xiàn)模块的颜色标注机制; |