OpenTSN (版本3.2)交换机和网卡硬件实现架构

第一部分:OpenTSN3.2硬件组成

1.OpenTSN3.2硬件组成

OpenTSN3.2硬件包含三部分逻辑

1.交换逻辑

2.端适配逻辑

3.硬件控制点逻辑


2.OpenTSN3.2硬件逻辑组合

1.OpenTSN3.2硬件逻辑组合灵活
 

1.一个交换机:硬件控制点逻辑+交换
逻辑
2.一个网卡:硬件控制点逻辑+端适配
逻辑
3.m个交换机+n个网卡:硬件控制点逻辑+交换逻辑(1) +…+交换逻辑(m) +端适配逻辑(1) +…+端适配逻辑(n)

第二部分:OpenTSN3.2交换架构

 1.OpenTSN3.2交换逻辑

1.交换逻辑功能

 1.支持标准以太网报文和TSN报文交换
 2.支持802.1AS(透明时钟更新)
 3.支持802.1Qbv/Qch整形
  

2.交换架构 

交换架构特点: 直通式转发、 报文集中式缓存、 端交换分离、 数据控制解耦

3. 报文交换(网络接口→网络接口)处理流程

1.硬件在不同启动阶段传输的报文

 2.各个模块在传输过程中所进行的操作

网络接受模块(NRX):增加1bit头尾标识位 , 数据跨时钟域传输 ,针对PTP报文,记录其接收时间戳 ,根据以太网类型来识别标准以太网报文和TSN报文,并根据硬 件所处的阶段对报文 进行选择传输。

帧解析模块(PPA):接收报文集中缓存分配的空闲缓存ID, 构造报文描述符,并在描述符 中指定其是否查转发表以及在不查转发表时的输出接口号。报文监管:根据报文集中缓存 中空闲缓存ID数量和带宽预约 报文监管阈值、尽力转发报文 监管阈值大小关系来进行监管 , 报文位宽转换。

输入缓存接口模块(IBI):将接收的缓存ID 转换成报文缓存 基地址,将报文写入到集中缓存区。

报文集中缓存模块(PCB):维护集中缓存区中剩余缓存 ID,为每个输入接口分配空闲缓存ID,并从每个输出接 口回收被占用的缓存ID 。 针对报文组播情形,当报文 从所有组播的接口输出后, 才将其占用的缓存ID释放 。 基于时分复用原理,接收每个接口传来的报文并写入到集中缓存区,读取集中缓存 区中报文并输出给对应接口。

转发查找表模块(FTL):若描述符不需查转发表,将描述符输出给 指定接口;否则将描述符查表转发 。计算报文输出接口数量,并将其与报文缓 存ID输出给报文集中缓存,用于实现报文组播。

网络入队控制模块(NIQ):在802.1Qbv调度模式下,根据报文类型,将报文描述符写到对应队列中 。在802.1Qch调度模式下,时间敏感报文描述符写入的(奇偶) 队列由当前全局时间所在的时间槽奇偶决定,非时间敏感报文描述符写入的队列由报文类型决定 。 维护每个队列的尾地址,每接收到一个报文描述符,便更新对应队列尾地址。

网络入队管理模块(NQM):用8个队列来缓存不同类型报文的描述符,8个队列用 一个缓存区进行管理,基于链表来对每个队列的描述符进行查找。

队列门控模块(QGC):缓存8个队列在一个调度周期内的所有 门控状态 。在每个时间槽,读出队列门控状态。

网络输出调度模块(NOS):根据队列状态(是否为空)、队列门控状态(开还是关)、队列优先级来对8个队列进行调度,读出队列中报文描述符 。维护每个队列的首地 址,将调度输出的报 文缓存ID作为对应队 列新的首地址。

网络发送模块(NTX):将接收的报文缓存ID转换成基地址,从集中缓存区中读出报文,并将报文缓存ID传 给报文集中缓存进行释放 。报文位宽转换 ,针对PTP报文,计算其在交换逻辑中传输时间,并将其累加到PTP报文透明时钟域中。

第三部分:OpenTSN3.2端适配架构

1.OpenTSN3.2端适配逻辑

端适配逻辑功能:1.支持帧映射与逆映射 2. 支持802.1AS(透明时钟更新) 3.支持802.1Qbv/Qch整形

2.OpenTSN3.2端适配架构

端适配架构特点:直通式转发、报文集中式缓存、端交换分离、数据控制解耦

 HRX(Host RX,主机接收)模块:主要功能是接收主机接口传来的报文,将报文传输时钟域由 GMII 接收时钟域切换为 TSE 内部时钟域, 并在端处理逻辑初始化时,丢弃所有的报文;在初始化完成后,才传输所有的报文。

FMD(Frame Mapping and Dispatching,报文映射与分派)模块:主要功能是实现报文位宽转换,报文监管,报文缓存,查表映射。报文位宽转换是将报文每拍数据位宽由 9bit 转换为 134bit;报文监管是指在报文集中缓存模块中剩余 pkt_bufid 个数小于 BE 报文监管阈值时,将 BE 报文丢弃, 在报文集中缓存模块中剩余 pkt_bufid 个数小于 RC 报文监管阈值时,将 RC 报文和 BE 报文丢弃;报文缓存是指将报文集中缓存模块分配的 bufid 转换为报文缓存基地址,将报文写入到集中缓存区中;查表映射是指 TCP/UDP 报文用五元组去查找映射表,将 pkt_bufid 和查表结果 TSNtag 传输给网络交换接口;非TCP/UDP 报文不查映射表,直接将 pkt_bufid 和 DMAC 字段数值(即TSNtag 语义)传输给网络交换接口。

PCB(Pkt Centralize Buffer,报文集中缓存)模块:主要功能是对架构需要转发的所有报文进行集中缓存 ,对空闲地址缓存区 pkt_bufid 进行缓存管理。每个 pkt_bufid 都需要设计一个计数器来对输出端口数量进行计数, pkt_bufid 每释放一次,将计数器减一;当pkt_bufid 使用完进行释放的时候需要检测该 pkt_bufid 对应计数器的值,只有当计数器值为 0 才能进行将 pkt_bufid 写入空闲地址缓存区中,当不为 0 意味着该 pkt_bufid 存着一个组播报文并且该报文还未从所有需要输出的端口输出。

HQM(Host Queue Manage, 主机队列管理)模块:主要功能是对从网络接口传来的报文描述符进行缓存管理, 在接收到帧逆映射模块传来的准备就绪信号后,将队列中报文描述符读出。

FIM(Frame Inverse Mapping 帧逆映射)模块:主要功能是对需要查找逆映射表的报文描述符进行查表, 将 pkt_bufid、 查表是否命中标识位和查表命中时的查表结果输出; 对不需要查找逆映射表的报文描述符直接输出。

HTX(Host TX,主机发送)模块:主要功能是从报文集中缓存区中读取报文并释放 pkt_bufid, 将查逆映射表命中的 TSN 报文修改为标准以太网报文、将查逆映射表未命中的 TSN 报文丢弃以及将无需查映射表的标准以太网报文直接输出, 在输出报文时,将报文位宽由134bit 转换为 8bit,在报文以太网头前面增加前导码和帧开始符并控制报文输出间隔, 以及将报文传输时钟域由 TSNNic 内部时钟域转换为 GMII 发送时钟域。 在读取报文时,将 pkt_bufid 映射成报文在缓存区中缓存的基地址,并根据此地址从报文集中缓存区中读出报文,在接收到报文第一拍数据时, 将查逆映射表命中的 TSN 报文的TSNtag 还原为 DMAC 并将报文以太网类型由 0x1800 改为 0x0800,若该报文未查逆映射表,则无需修改报文内容; 在接收到报文最后一拍数据时, 将 pkt_bufid 传给报文集中缓存模块进行释放, 以便后续进入 TSE 的报文使用。

NRX(Network RX,网络接收)模块: 主要功能是接收网络接口传来的报文,将报文传输时钟域从 GMII 接口接收时钟域切换到 TSE内部时钟域; 记录本模块接收时间同步报文的时间,并将其存放在TSNTag 中; 识别标准以太网报文和 TSN 报文并根据 TSE 所处的阶段来决定是否传输报文:若 TSE 处于初始化阶段,丢弃所有报文;若 TSE 处于配置阶段,传输标准以太网报文和 TSN 报文中的配置报文;若 TSE 处于时钟同步阶段,传输标准以太网报文和 TSN 报文中的非时间敏感报文;若 TSE 处于正常工作阶段, 传输标准以太网报文和 TSN 报文。

FPA(Frame Parse,帧解析)模块:主要功能是接收报文集中缓存模块分配的 pkt_bufid, 将报文每拍数据位宽由 9bit 转换为 134bit,并将位宽转换后的报文和 pkt_bufid 输出给输入缓存接口模块; 根据接收到的报文构造报文描述符, 并将其输出给转发查表模块进行查表;识别报文类型,并对 RC 报文和 BE 报文进行监管。

IBI(Input Buffer Interface,输入缓存接口)模块:主要功能是将报文数据发送给报文集中缓存模块进行缓存。本模块接收帧解析模块传来的 134bit 数据,并使用两个寄存器进行缓存,其中任何一个寄存器有数据则往报文集中缓存模块发出写请求,在接收到报文集中缓存模块传来的响应后,完成一拍数据的写入;并将帧解析模块传来的数据写入另一个寄存器中。

NIQ(Network Input Queue,网络入队控制)模块:主要功能是将报文描述符写入到网络队列管理模块中进行缓存。本模块根据接收到的报文描述符中报文类型、队列门控模块传来的门控状态将报文描述符写入对应队列中; 同时将报文描述符与队列 ID 发送给网络输出调度模块,以便网络输出调度模块对队列首地址进行管理;并且根据写入队列的信息与网络输出调度模块传来的被调度的队列 ID 来对队列中目前所写入的 bufid 数量进行管理。

NQM(Network Queue Manage,网络队列管理)模块:主要功能是对网络输出端口的队列进行集中缓存管理

QGC(Queue Gate Control,队列门控)模块:主要功能是根据全局时钟来读取门控列表中对应门控状态,并将门控列表中 8 个队列的门控状态发送给网络入队控制模块和网络输出调度模块。

NOS(Network Output Schedule,网络输出调度)模块:主要功能TSN 网卡(TSNNic3.2) 设计方案是根据调度后的队列信息从网络队列管理模块提取出报文描述符。本模块需要根据当前队列是否为空、队列优先级以及队列门控模块传来的门控状态来得出一个最优先调度的队列, 将该队列首地址作为读地址,从网络队列管理模块中读出报文描述符,将队列首地址对应的报文描述符输出给网络发送模块,并且将读出的报文描述符中 pkt_bufid作为该队列新的首地址。

NTX(Network TX,网络发送)模块:主要功能是从报文缓存区中读取报文并释放 pkt_bufid、将报文传输时钟域从 TSNNic 内部时钟域切换到 GMII 发送时钟域、构造帧前导符和帧开始符并控制报文输出的间隔。 在读取报文时,将 pkt_bufid 映射成报文在集中缓存区中缓存的基地址,并根据此地址往报文集中缓存模块读取报文, 并根据报文描述符中信息来对被映射成 TSN 报文的 DMAC 和以太网类型做修改; 将读出报文的位宽由 134bit 转换为 8bit,在接收到最后一拍数据时,将此 pkt_bufid 传输给报文集中缓存模块进行释放,以便后续进入 TSE 的报文使用。

CPA(Command Parse,命令解析)模块:负责将接收到 HCP 的写命令(写命令数据格式见附录 D)进行解析,来实现对本地寄存器、映射表、 逆映射表的配置;根据接收到的读命令(读命令数据格式见附录 D) 来读取对应寄存器或表项,并将读数据封装在读响应(读响应数据格式见附录 D)中输出给 HCP 模块。

第四部分: OpenTSN3.2硬件控制点架构

1.OpenTSN3.2硬件控制点逻辑

硬件控制点逻辑功能:1.支持帧封装与解封装 2.支持对交换机和网卡的管控 3.支持MAC自学习
4.支持802.1AS

2.OpenTSN3.2硬件控制点架构

硬件控制点架构特点:模块化设计、 流水线处理

 HRX(HCP RX, hcp 接收)模块: 主要功能是接收控制接口传来的报文,将报文传输时钟域从 GMII 接收时钟域切换到架构内部时钟域,以及记录控制接口接收时间同步报文的时间,并存放在 TSNTag中。根据硬件控制点逻辑所处的阶段来决定是否传输报文:若硬件控制点逻辑处于初始化阶段,丢弃所有报文;若硬件控制点逻辑处于配置阶段,只传输配置报文;若硬件控制点逻辑处于时钟同步阶段,传输非时间敏感报文;若硬件控制点逻辑处于正常工作阶段,接收所有
报文。

MSL(Mac-address Self Learning, MAC 自学习)模块: 主要功能是维护 MAC 转发表中表项内容;识别并丢弃查(MAC 转发)表未匹配命中报文,从查 MAC 转发表未命中报文中提取出 SMAC 和输入接口号 inport,当 MAC 转发表中不存在该表项{SMAC,inport}时,将该表项{SMAC,inport}直接写到 MAC 转发表中。

HFP(Hcp Frame Parse,帧解析)模块:主要功能是从报文中提取以太网类型,将以太网类型和接收时间戳组成报文描述符;对控制接口传来的报文和状态上报报文进行选择,将控制接口传来的报文及其描述符先缓存在队列中,在硬件控制点无上报请求时,将队列中的报文及其描述符读出并输出给下一级模块,若硬件控制点有上报请求且控制接口传来的报文未进行传输时,将状态上报报文输出给下一级模块。

DMUX(DeMUltipleXer,数据分配器)模块:主要功能是根据以太网类型对报文进行分派,并根据硬件控制点所处的阶段决定是否丢弃报文。本模块在初始化阶段将所有报文丢弃,在配置阶段/时钟同步阶段/正常工作阶段将接收到的 TSMP 报文(交换机配置帧、 PTP封装帧、 ARP 封装帧)及其描述符分派给解封装与分派模块,在时钟同步阶段/正常工作阶段将接收到的非 TSMP 报文(标准以太网非IP 报文、 PTP 报文、 NMAC 状态上报报文)分派给帧封装模块进行封装处理。

DDM(Decapsulation_Dispatch_Module,解封装与分派)模块:将接收到的交换机配置帧、 PTP 封装帧、 ARP 封装帧分别解封装成NMAC 配置帧、 PTP 帧、 ARP 响应帧,并将 NMAC 配置帧分派至配置与状态管理模块,记录 PTP 帧发送的时间戳,将其和 ARP 响应帧
分派至数据选择器模块。

FEM( Frame_Encapsulation_Module,帧封装)模块:主要功能是将接收到的 ARP 请求帧、 PTP 帧、 NMAC 状态上报帧封装到TSMP 报文中,针对 PTP 帧,会记录其接收时间戳、计算透明时钟并累加到透明时钟域。

MUX(MUltipleXer,数据选择器)模块:主要功能是对封装后的帧和解封装后的帧进行选择,并输出到控制发送模块。

CSM(Configuration and State Manage,配置与状态管理)模块:主要功是对接收到的 NMAC 报文进行解析,生成写命令;根据接收到的报文接收/发送/丢弃脉冲进行计数;以及周期性上报状态。

GTS( Global_Time_Sync,全局时钟同步)模块:主功能是维护一个 48bit 的全局时钟并根据接收到的本地时钟与主时钟的偏移值offset 对全局时钟进行修正;维护一个局部时钟,将局部时钟传给其它模块,用于记录时间同步报文在硬件控制点的接收/发送时钟,进而计算时间同步报文在硬件控制点中传输的透明时钟;维护一个上报周期计数器,当每经过一个上报周期输出一个上报脉冲信号。

TSC(Time_Slot_Calculation,时间槽计算)模块:根据全局时间、时间槽长度和周期,计算当前时刻处于一个周期内的哪个时间槽。

HTX(HCP TX, hcp 发送)模块:主要功能是计算时间同步报文的透明时钟并更新透明时钟域、将报文传输时钟域从内部处理时钟域切换到 GMII 发送的时钟域、增加帧前导符和帧开始符后将报文从控制接口输出。

第五部分: 总结

OpenTSN3.2硬件架构优势
1.功能扩展性强
2.硬件逻辑组合灵活
3. 报文交换延时低
4. 硬件缓存资源占有较少
 


 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤圆好吃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值