虹科分享 | Linux终端设备的TSN时间敏感网络协议实现

通过为以太网带来工业级的稳健性和可靠性,时间敏感网络 (TSN) 提供了 IEEE 标准通信技术,可实现来自任何供应商的符合标准的工业设备之间的互操作性。它还消除了对关键和非关键通信网络进行物理分离的需要,从而允许运营中心和公司之间直接交换数据,这是工业物联网 (IIoT) 的核心概念。本文介绍了使用专用 PCI Express (PCIe) 卡和两个最终 Linux 端点创建端到端TSN网络。为此,TSN的两个主要标准——IEEE 802.1AS(关于时钟同步)和IEEE 802.1Qbv(关于时间调度流量)已经在 Linux 设备以及配置和监控系统中实现。

1. 背景介绍

自从以太网于1983年标准化以来,它已成为工业现场总线和航空航天、汽车和运输部门中广泛使用的链路层协议。这些关键领域的大多数应用程序都需要实时运行,即必须在紧迫的期限内接收数据。 但是,以太网并不是确定性地工作的,这意味着它不能保证网络延迟时间。因此,在过去的35年中,技术专家们已经开发了各种基于传统以太网的增强功能,如工业领域的PROFINET、EtherCAT协议,航空航天领域的AFDX协议,汽车领域的TTEthernet等。它们彼此不兼容,并且与传统以太网不兼容,因为它们结合了不同的机制来保证确定性。这种差异意味着该行业的实时以太网解决方案市场目前高度分散。

此外,工业4.0和数字化进程的出现旨在通过提出运营技术 (OT)与数据网络或信息技术 (IT) 的互连来获得更高的生产力和效率(见图1)。这个概念称为IIoT,包括工厂的所有元素(传感器、机械、工业计算机)与外部数据中心的互连。这种互连允许它从工厂收集许多操作数据,以使用服务来分析它们,进而实现高度自动化以优化工厂控制流程并提高生产力和效率。 实现双方的互操作性是IIoT的重要愿望。

由于每个网络的具体特征,两个世界(OT和IT)中的技术差别很大,通常无法互操作。因此,使用当前技术来实现IT与OT的融合是重要的,否则工厂网络无法兼容传统以太网,从而无法直接访问互联网。所以,需要一种可以桥接IT和OT世界的基于以太网的标准技术,而TSN正是针对此类仅基于以太网的解决方案的方案。

虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第1张图片
图1 OT世界(工厂)和IT(数据中心)之间的边界

该方案面临着来自技术和实际应用的挑战,高成本便是其中之一,这主要是因为网络的所有交换机和元素都必须是TSN感知的。另一个挑战来自于快速变化的未完成标准,它们有时会重叠,而目前没有能力验证一致性和互操作性。网络安全和其他安全问题也是一个挑战,这主要是因为TSN强烈依赖于可作为目标的稳健同步和配置。由于缺乏标准数据模型,TSN配置也是一个问题。

因此,下文将沿着这一方向,描述TSN的两个主要标准IEEE 802.1AS(关于时钟同步)和IEEE 802.1Qbv(关于时间计划流量 (ST))的实现,建立端到端的 TSN 网络。主要内容包括:
(1) Linux内核的设置和配置,以将 TSN 插槽配置扩展到操作系统 (OS)。
(2) 在Linux中设置专用硬件。
(3) 使用专用软件工具轻松配置所有不同参数。
(4) 一种可视化工具,显示其插槽中的数据包以检查其正确行为。

2. TSN标准

TSN是由IEEE时间敏感网络任务组开发的一组标准。该任务组于2012年从现有的音频/视频桥接 (AVB) 任务组成立。AVB是为通过LAN同步音频和视频数据传输而开发的标准。TSN小组的想法是将AVB计划提供的技术解决方案迁移和调整到其他部门并发送所有类型的数据。需要注意的是,TSN本身并不是一种通信协议,而是以太网的演进。所有与TSN相关的标准都是IEEE以太网标准的一部分。例如,抢占等高级TSN功能是802.3的一部分。

随着TSN的出现,确定性的数据传输可以通过传统的以太网实现。TSN强制执行带宽和时隙,从而增加隔离度。 它允许关键数据通过与其余流量相同的通信链路发送,而不会造成延迟或干扰,从而无需创建彼此独立的工业网络。这些流量类别通过完全互操作工厂网络与互联网来促进生产现场和企业之间的数据交换。

所有交换机都必须具有TSN感知能力才能利用TSN。此要求背后的主要原因是需要高级同步。另一方面,非实时节点的布线和以太网卡将保持不变。由于它是一个开放标准,不同供应商可以实现互操作,而不会出现专有协议的问题。该技术可用于几乎所有工业应用,因为它可以灵活地满足不同的延迟、抖动或容错要求。

如前所述,TSN 不是一个单一的标准,而是一组使以太网更具确定性的标准。 每个标准都以不同的速度发展,这取决于市场的发展及其需求。 其中一些标准已经过全面测试和实施,而其他标准仍处于开发的早期阶段(草案版本)。

其中两个基本标准是:

  • IEEE 802.1ASrev:该标准定义了IEEE 802.1AS协议,用于时钟同步。 通过这些,可以实现TSN的许多高级功能。
  • IEEE 802.1Qbv:该标准定义了IEEE 802.1Qbv协议,用于ST。它利用网络同步来划分带宽和时隙。

2.1. IEEE 802.1Qbv(ST增强)

使用IEEE 802.1Qbv,数据包传输被安排在一个重复周期中端到端。Qbv允许数据包确定性到达,提供延迟保证、极低的抖动和无数据包丢失。TSN中定义了三种基本类型的流量:ST、尽力而为流量 (BE)和RE。 ST适用于对实时性要求严格的关键消息。 BE是不需要任何QoS 的一般以太网流量。 此外,预留流量 (RT)适用于需要预留特定带宽并具有软实时要求的帧。

IEEE 802.1Qbv中定义的时间感知整形器 (TAS) 是根据调度算法启用或禁用帧传输的门。 TAS将以太网通信划分为固定长度、连续重复的周期。这些周期被分成时隙,在每个时隙中,分配八个优先级中的一个或多个。

每个周期中的时隙数量、它们的持续时间以及每个周期中可以传输的优先级都可以完全由应用程序配置。由于此操作,ST可以拥有专用时隙,从而确保此流量在传统以太网网络上的确定性操作。另一方面,保留和BE被容纳在每个周期的剩余时隙中。 RT保证有专用带宽,而BE可以使用剩余的带宽。 图2显示了802.1Qbv配置示例。
虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第2张图片
图2 时隙划分

Slot 1为ST预留;时隙期间不存在其他流量。另一方面,时隙2由保留流量和尽力而为流量使用。主要区别在于RT是保证的最小带宽。

由于TSN的运行基于在不同的时间间隔发送不同类型的流量,因此所有网络设备必须在纳秒级范围内同步。

2.2. IEEE 802.1ASrev(定时与同步)

IEEE 802.1ASrev是第一个发布的标准,也是当今实施最广泛TSN标准。 借助IEEE 802.1ASrev,网络终端设备和交换机具有共同的时钟,允许以小于1μs的精度进行同步,可以在不影响数据包传播延迟的情况下实现长距离同步。

IEEE 1588中定义的精确时间协议 (PTP)用于以微秒精度同步网络中设备的时钟。通用精确时间协议 (gPTP),也称为IEEE 802.1ASrev(802.1AS的后继者),是PTP的配置文件,其中包含可显着提高时钟同步准确性的功能。gPTP有一些变化使这两个协议不兼容。

gPTP中时钟域的同步和建立分四个阶段进行:

  • 确定链路上的其他设备(对端)是否能够支持 gPTP
  • 确定对端的链路延迟和时钟频率
  • 选择网络中最好的时钟作为主时钟(MasterClock)
  • 将网络中的所有节点同步到主时钟

3. TSN实施的背景介绍

TSN实施已在不同部门和应用中被广泛提出和分析。确定性延迟是通过时间同步和全局调度的应用实现的,分别对应于 IEEE 802.1AS 和 802.1Qbv TSN 标准。 因此,原则上可以使用这两个标准更确定地安排关键流量。但如果延迟和抖动的要求非常低,IEEE 802.1Qbv调度必须与时钟同步机制相结合,而将IEEE 802.1ASrev时钟同步于IEEE 802.1Qbv标准包括在内非常具有挑战性,比如在包含许多流的网络中决定如何调度它们是一件复杂的事情。

另一个重大挑战是将最初不支持TSN的设备集成到TSN网络中。 例如,大多数分析的实现都是基于Linux操作系统的,而Linux也有实时性能的不确定性来源,例如抢占或中断,但它包括许多机制来实现更好的可靠性。

4. 建议的解决方案

正如前文所述,同步带来了许多挑战。而当我们寻求使用Slot并调整线路中的流量时,这些挑战就会增加。为了,我们推出了应对这些挑战的解决方案。该方案基于一款可用于TSN协议的PCIe网卡——RELY-TSN-PCIe。该网卡基于现场可编程门阵列 (FPGA) 和英特尔i210 芯片,其中英特i210芯片支持TSN,而FPGA提供多路径(嵌入式以太网交换机)和实时功能。这种组合允许在PC中使用标准驱动程序,这在操作系统缺乏TSN支持时至关重要。 同时,它还允许Intel芯片不支持的高级调度。RELY-TSN-PCIe卡是第一个已知的TSN解决方案,它允许部署从用户终端设备及其将要使用的应用中抽象出来的确定性以太网网络。换句话说,它可以用于不同的终端设备(监控和数据采集(SCADA)、物联网网关),从而在设备中引入TSN技术并将其集成到确定性网络中。从操作系统的角度来看,插入是透明的,因为它只检测标准以太网卡。如果OS想要使用高级调度,这个方案就变得不那么透明了,但是TSN网络操作不需要这样的改变。该解决方案是在 Ubuntu 20.04 LTS 中开发的。

虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第3张图片

4.1 IEEE 802.1ASrev 实施

为实现时间敏感应用的802.1ASrev 定时和同步标准,首先确定必须参与该标准的网络时钟。图3显示了已识别的时钟和同步链路。可以看出,可以区分六个不同的时钟。

有必要区分同步所有时钟的方式。 同步有两种:(a)网络同步(b)设备-网络同步。网络同步是基于同步I210和PCIe的四个PTP硬件时钟(PHC); 为此,将使用linuxptp包中包含的ptp4l命令。linuxptp是Linux的PTP实现。ptp4l实现边界时钟(BC)和普通时钟(OC)。另一方面,作为软件的系统时钟使用NTP或GPS从Internet获取时间以实现设备网络同步。尽管如此,在这种情况下,系统时钟将通过linuxptp包中包含的phc2sys命令从TSN网络获取时间,而不是直接使用硬件时间戳的gPTP。

虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第4张图片
图3 需要同步的网络时钟

4.2 IEEE 802.1Qbv实施

有两种选择可以构建一个端到端实现Qbv的网络。第一种是仅在充当talker的Linux端点的输出上激活Qbv。这样,数据包将有序地离开Linux内核,理论上在整个网络中无序传播,直到到达侦听器。但是,这不是最好的方法。从内核输出到线路,有几层注入抖动。这种抖动可能导致不符合分配的时隙。

第二种选择是在两点激活Qbv:在Linux talker的内核中,和在连接到talker的以太网卡的输出端口中,如图4所示。第二种方法是一直使用的方法。在两点配置相同的Qbv。以这种方式,数据包跟随线路上分配的时隙。当所有网络元素也都具有TSN感知能力时,这些时隙将一直保留到接收方。

虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第5张图片
图4 Qbv网络结构

已创建内核补丁以向Linux机器提供Qbv功能。在下文中,我们将解释数据包转发在Linux机器上的工作原理、为处理时隙而创建的两个补丁,以及它们在最终Linux机器上的实现。

Linux系统上的流量转发是通过内核的流量控制(TC)子系统完成的。TC子系统代码在知识产权(IP)和将数据传输到网络的网络接口驱动程序之间运行。该子系统负责不断提供要发送给驱动程序的数据包。

TC由队列规则(qdisc)组成。qdiscs表示应用于队列的调度策略。它根据该调度程序中安装的规则重新组织到达队列的数据包,并以新的顺序发送它们。默认情况下,此调度程序维护一个先进先出(FIFO)队列。因此,需要一种能够按照802.1Qbv标准,按照时间间隔重组数据包,有序发送流量的qdisc。

vanilla Linux内核没有这种排队规则,因此开发了内核补丁,引入了在Linux系统上实施802.1Qbv的必要工具。这些补丁引入了两个新的qdisc:

  • Earliest TxTime First Qdisc (ETF) 允许应用程序控制将数据包发送到网卡驱动程序的确切时间。ETF通过缓冲数据包直到传输时间之前的可配置时间来实现这一点。
  • 时间感知优先级整形器(TAPRIO)实现了IEEE802.1Qbv标准定义的状态机的简化版本(请参阅IEEE802.1Qbv标准),允许配置一系列网关状态,其中每个状态允许或禁止流量出口对于流量类别的子集。

这些补丁还为系统套接字引入了一个名为SO_TXTIME的新选项,以启用套接字进行基于时间的传输,从而配置其参数。

5. 结果

已经创建了一个高级应用程序来以图形方式配置这两个标准。它使网络管理员能够配置和观察网络提供的插槽信息,类似于图5中所示的Wireshark的I/0图表,但是是实时的。概念证明是在一个专门设置的网络中开发的,该网络由通过单个交换机组成的TSN感知网络连接的两台PC(talker和listener)组成。

虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第6张图片
图 5. Wireshark捕获演示插槽

第一步是检查所有不同系统之间的同步。检查PCIe板的每秒脉冲输出和PTP守护程序提供的信息,以太网卡在10ns内同步,而系统在100ns范围内(参见图6)。

虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第7张图片
图6 完全同步的系统。卡的内部交换机之间、内部交换机与i210芯片之间、芯片与PC之间都建立了gPTP关系。

已创建演示以测试补丁在端点上的操作。该演示在talker中配置Qbv补丁以发送ST和尽力而为流量。Listener接收此数据并以图形方式实时显示每个数据如何到达其插槽。由此产生的流量可以在图7中看到,由开发的应用程序的实时窗口显示。这些演示展示了标准的正确操作及其与PCIe卡的集成。结果是有序和整形的流量。

虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第8张图片
图7. 创建的应用程序演示槽的实时捕获。这种实时视图允许网络设计人员跟踪网络的运行并将不同的配置调整到所需的要求。

其结果与Wireshark提供的结果相似,但在这种情况下是实时获得的。该应用程序允许对链接进行轻松管理。同时,它们有助于证明支持TSN的系统的正确操作。

使用此配置框架,设计人员可以创建具有不同配置的网络并查看其结果。 图8中展示了一个更复杂的例子。在此示例中,TSN中的每种流量类型都基于虚拟局域网 (VLAN) 标签的优先级代码点(PCP) 位。在此设置中,流量分类如下:

  • ST: 制动信息(数据分发服务(DDS)流1、VLAN11、PCP2)
  • RT: 摄像机实时视频(DDS流2、VLAN12、PCP5)
  • BE: 剩余的TCP/IP流量。(VLAN3,PCP6)

TSN配置分布在四个时隙中,完成 10 毫秒的周期时间。每个时隙的流量分配如下:(1) Free. (2) ST. (3) Free. (4) RT+BE. 可以看出,不同的流被限制在配置的slot中。

虹科分享 | Linux终端设备的TSN时间敏感网络协议实现_第9张图片
图8 车载网络的真实示例。 ST由刹车信息组成。 RT提供实时视频,而BE由其余信息娱乐数据组成。

6. 结论

本文所述工作的主要成果是构建了一个支持TSN的系统,该系统可用于提供可靠且可扩展的网络。因此,可以在Linux终端设备中实施两个主要的TSN标准并验证RELY-TSN-PCIe卡的正确操作。终端设备已包含在TSN网络中。一方面,所有网络时钟都已通过在终端设备中使用开源守护程序实施IEEE 802.1ASrev标准来同步。另一方面,我们使用公共Linux内核补丁按照IEEE 802.1Qbv标准在时隙中实现了数据包的有序发送。此外,我们还创建了一个配置和可视化工具,可帮助网络设计人员设置和了解系统的操作。由于这项工作和所使用的两种开放技术,在标准设备(即非专有设备)中实施TSN方面正在取得进展。

你可能感兴趣的:(TSN,linux,TSN,时间敏感网络,TSN应用)