前文回顾
虹科干货 | Linux终端设备的时间敏感网络协议实现(1)
在上一篇文章中,我们介绍了TSN技术不断发展的背景,及其技术层面和实际应用层面的挑战,并介绍了IEEE 802.1ASrev和IEEE 802.1Qbv这两个基本标准。下面,我们将沿着这一方向探讨如何在Linux终端设备中实现TSN时间敏感网络协议。
Part 3
TSN实施的背景
TSN实施已在不同部门和应用中被广泛提出和分析。一些研究指出,确定性延迟是通过时间同步和全局调度的应用实现的,分别对应于 IEEE 802.1AS 和 802.1Qbv TSN 标准。因此,原则上可以使用这两个标准更确定地安排关键流量。但如果延迟和抖动的要求非常低,IEEE 802.1Qbv调度必须与时钟同步机制相结合,而将IEEE 802.1ASrev时钟同步于IEEE 802.1Qbv标准包括在内非常具有挑战性,比如在包含许多流的网络中决定如何调度它们是一件复杂的事情。
另一个重大挑战是将最初不支持TSN的设备集成到TSN网络中。例如,大多数分析的实现都是基于Linux操作系统的,而Linux也有实时性能的不确定性来源,例如抢占或中断,但它包括许多机制来实现更好的可靠性。
Part 4
TSN实施的方案
正如前文所述,同步带来了许多挑战。而当我们寻求使用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 中开发的。
1
IEEE 802.1ASrev实施
为实现时间敏感应用的802.1ASrev 定时和同步标准,首先确定必须参与该标准的网络时钟。图3显示了已识别的时钟和同步链路。从图中可以看出,可以区分为六个不同的时钟。
图3 需要同步的网络时钟
有必要区分同步所有时钟的方式。同步有两种:
网络同步是基于同步I210和PCIe的四个PTP硬件时钟(PHC);为此,将使用linuxptp包中包含的ptp4l命令。linuxptp是Linux的PTP实现。ptp4l实现边界时钟(BC)和普通时钟(OC)。另一方面,作为软件的系统时钟使用NTP或GPS从Internet获取时间以实现设备网络同步。尽管如此,在这种情况下,系统时钟将通过linuxptp包中包含的phc2sys命令从TSN网络获取时间,而不是直接使用硬件时间戳的gPTP。
2
IEEE 802.1Qbv实施
有两种选择可以构建一个端到端实现Qbv的网络。第一种是仅在充当talker的Linux端点的输出上激活Qbv。这样,数据包将有序地离开Linux内核,理论上在整个网络中无序传播,直到到达侦听器。但是,这不是最好的方法。从内核输出到线路,有几层注入抖动。这种抖动可能导致不符合分配的时隙。
第二种选择是在两点激活Qbv:在Linuxtalker的内核中,和在连接到talker的以太网卡的输出端口中,如图4所示。第二种方法是一直使用的方法。在两点配置相同的Qbv。以这种方式,数据包跟随线路上分配的时隙。当所有网络元素也都具有TSN感知能力时,这些时隙将一直保留到接收方。
图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的新选项,以启用套接字进行基于时间的传输,从而配置其参数。
Part 5
结果
我们已经创建了一个高级应用程序来以图形方式配置这两个标准。它使网络管理员能够配置和观察网络提供的插槽信息,类似于图5中所示的Wireshark的I/0图表,但是是实时的。概念证明是在一个专门设置的网络中开发的,该网络由通过单个交换机组成的TSN感知网络连接的两台PC(talker和listener)组成。
图5 Wireshark捕获演示插槽
第一步是检查所有不同系统之间的同步。检查PCIe板的每秒脉冲输出和PTP守护程序提供的信息,以太网卡在10ns内同步,而系统在100ns范围内(参见图6)。
图6 完全同步的系统
卡的内部交换机之间、内部交换机与i210芯片之间、芯片与PC之间都建立了gPTP关系。
已创建演示以测试补丁在端点上的操作。该演示在talker中配置Qbv补丁以发送ST和尽力而为流量。Listener接收此数据并以图形方式实时显示每个数据如何到达其插槽。由此产生的流量可以在图7中看到,由开发的应用程序的实时窗口显示。这些演示展示了标准的正确操作及其与PCIe卡的集成。结果是有序和整形的流量。
图7 创建的应用程序演示槽的实时捕获
这种实时视图允许网络设计人员跟踪网络的运行并将不同的配置调整到所需的要求。
其结果与Wireshark提供的结果相似,但在这种情况下是实时获得的。该应用程序允许对链接进行轻松管理。同时,它们有助于证明支持TSN的系统的正确操作。
使用此配置框架,设计人员可以创建具有不同配置的网络并查看其结果。图8中展示了一个更复杂的例子。在此示例中,TSN中的每种流量类型都基于虚拟局域网 (VLAN) 标签的优先级代码点(PCP) 位。在此设置中,流量分类如下:
TSN配置分布在四个时隙中,完成 10毫秒的周期时间。每个时隙的流量分配如下:(1) Free. (2) ST. (3) Free. (4)RT+BE. 可以看出,不同的流被限制在配置的slot中。
图8 车载网络的真实示例
ST由刹车信息组成。RT提供实时视频,而BE由其余信息娱乐数据组成。
Part 6
结论
本文所述工作的主要成果是构建了一个支持TSN的系统,该系统可用于提供可靠且可扩展的网络。因此,可以在Linux终端设备中实施两个主要的TSN标准并验证RELY-TSN-PCIe卡的正确操作。终端设备已包含在TSN网络中。一方面,所有网络时钟都已通过在终端设备中使用开源守护程序实施IEEE 802.1ASrev标准来同步。另一方面,我们使用公共Linux内核补丁按照IEEE 802.1Qbv标准在时隙中实现了数据包的有序发送。此外,我们还创建了一个配置和可视化工具,可帮助网络设计人员设置和了解系统的操作。由于这项工作和所使用的两种开放技术,在标准设备(即非专有设备)中实施TSN方面正在取得进展。
END
本文由虹科技术工程师翻译整理。文章出处:https://www.mdpi.com/2227-7080/10/3/55
本文中使用的RELY-TSN-PCIe板卡是由虹科合作伙伴RELYUM推出的一款智能NIC卡,它可以插入任何windows和linux电脑,且不需要在主机上安装任何特殊软件,快速引入TSN技术。它能够在TSN网络中使用典型的工业应用和软件,如SCADA、MES、OPC(UA)、MTConnect等。此外,RELY-TSN-PCIe 支持使用标准中定义的 YANG 模型进行自动配置。但是,为了便于早期试用,该板卡允许手动 TSN 配置
虹科进入TSN技术领域多年并已有丰富的技术积累,并面向国内客户推出了TSN的IP核、网卡、交换机、流量记录仪、测试工具、配置软件等多款软硬件产品,能够帮助用户快速加入TSN流量,享受新兴技术发展带来的好处。
全部0条评论
快来发表一下你的评论吧 !