TSN网卡是TSN网络提供端到端确定性交换服務(wù)的关键设备。由于应用(yòng)需求不同,TSN网卡连接的端系统计算平台在计算能(néng)力,资源管理(lǐ)方法和通信需求等方面差异较大,因此设计尽可(kě)能(néng)满足多(duō)种应用(yòng)场景需求的TSN网卡是OpenTSN开源项目的重要目标。本文(wén)分(fēn)析了不同TSN端系统的差异,提出了OpenTSN网卡与端系统松耦合的实现思路。
一、TSN端系统分(fēn)析
我们认為(wèi)TSN网卡连接的端系统节点主要分(fēn)為(wèi)三类,即I/O节点、计算节点以及支持云计算的虚拟化节点,如图1所示。

图1 TSN端系统的分(fēn)类
其中I/O节点实现简单,对成本、體(tǐ)积和功耗要求较高,通常没有(yǒu)操作系统,难以面向TSN进行定制化设计;计算节点包含通用(yòng)CPU和操作系统,TSN网卡可(kě)以通过修改驱动程序对TSN端系统的操作进行适配;而虚拟化节点主要面向边缘计算或嵌入式云计算,需要对TSN网卡进行虚拟化,TSN网卡在提供确定性I/O的同时,还要支持I/O的虚拟化,实现不同应用(yòng)之间网络I/O的隔离。
每种TSN端系统的比较如下表所示。由于不同端节点具有(yǒu)不同的特点,在主机测和网卡侧的TSN功能(néng)划分(fēn)差异较大,因此难以实现通用(yòng)的TSN网卡设计。
值得关注的是,当TSN端节点為(wèi)虚拟化平台时,主机侧会虚拟出多(duō)个具有(yǒu)独立MAC和IP地址的节点。一方面提高了TSN网络离線(xiàn)规划的复杂性,另一方面给TSN端系统收发分(fēn)组时的确定性保证带来了新(xīn)的困难。
二、OpenTSN网卡实现思路
為(wèi)了最大限度适配不同类型的端系统,OpenTSN网卡与端系统主机侧采用(yòng)松耦合的方式,通过千兆以太网与端系统计算平台进行连接,如图2所示。与PCIe、SPI等连接方式相比,使用(yòng)千兆以太网连接的优点是:
(1)通信带宽比SPI总線(xiàn)高,基本可(kě)满足多(duō)种终端的通信带宽需求;
(2)很(hěn)多(duō)CPU已经内嵌千兆以太网,因此无需在主机侧再增加新(xīn)的网卡;
(3)网卡侧存储空间不会映射到主机侧的存储空间,不需要额外的驱动程序支持;
(4)对于虚拟化平台,主机侧可(kě)以选择支持SR-IOV的网卡,主机内部虚拟机/容器的交换可(kě)以不经过TSN网卡实现。

图2 OpenTSN网卡实现思路
除了采用(yòng)松耦合的以太网物(wù)理(lǐ)连接外,OpenTSN网卡在逻辑功能(néng)上也实现了与主机侧计算平台的解耦,主要表现在:
(1)延时确定性保证机制的解耦
OpenTSN网卡通过内设RX_buf/TX_buf,实现了端到端交换路径上,应用(yòng)与网卡间延时确定性保证与TSN网络(发送网卡-TSN网络-接收网卡)延时确定性保证机制之间的解耦。OpenTSN只需要保证从发送方网卡上的TX_buf到接收方网卡上RX_buf之间的延时确定性即可(kě)。
如果应用(yòng)对通过计算平台与网卡RX_buf/Tx_buf通信的延时有(yǒu)严格的确定性要求,可(kě)以通过定制优化计算平台的软硬件实现确定性保证,与网卡无关。
(2)TSN功能(néng)到网卡的全卸载
端系统主机侧不用(yòng)针对TSN进行任何修改。在OpenTSN网卡上实现了TSN管理(lǐ)Agent,為(wèi)全局规划提供完整的,与端系统无关的资源抽象,并接受TSN网络控制器对网卡的配置,包括RX/TX调度表配置,TSN流水線(xiàn)中的整型、调度和冗余控制等机制进行配置。
由于TSN功能(néng)全部卸载到网卡上,因此主机计算平台的处理(lǐ)不需要全网同步的时间基准。
三、总结
网卡上RX_buf/Tx_buf的设置和Tx/Rx调度表设计对OpenTSN网卡与端系统解耦十分(fēn)重要。这也是其他(tā)类型时间触发通信(如TTP)实现通信控制器与主机消息交互的方法。
TSN边缘注入时间规划功能(néng)可(kě)通过RX调度控制Rx_buf中分(fēn)组进入TSN流水線(xiàn)的时刻实现。同时,基于Tx调度,网卡也可(kě)以精确控制按指定时刻向计算平台和应用(yòng)提交接收到的分(fēn)组。
图2只给出了网卡处理(lǐ)时间触发流量(scheduled Traffic)的方法,我们将在后续文(wén)章中进一步给出OpenTSN网卡同时支持时间触发、AVB和BE流量的方法。