0731-84728105
15116127200
OpenTSN网卡实现模型(1)
发布时间:2020-03-16
     TSN网卡是TSN网络提供端到端确定性交换服务的关键设备。由于应用需求不同,TSN网卡连接的端系统计算平台在计算能力,资源管理方法和通信需求等方面差异较大,因此设计尽可能满足多种应用场景需求的TSN网卡是OpenTSN开源项目的重要目标。本文分析了不同TSN端系统的差异,提出了OpenTSN网卡与端系统松耦合的实现思路。
一、TSN端系统分析
      我们认为TSN网卡连接的端系统节点主要分为三类,即I/O节点、计算节点以及支持云计算的虚拟化节点,如图1所示。

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

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