快速了解时间敏感网络(TSN)_Part2

2023-10-13 14:30

本文主要是介绍快速了解时间敏感网络(TSN)_Part2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        大家好,上期我们介绍了TSN是什么,能够给我们带来什么好处以及TSN的用途。在文章的后面也给我们的协议介绍起了个头,讲解了TSN中用到的时钟同步系统IEEE 802.1AS-Rev。

 

        今天我们就开始介绍TSN协议族中的其他成员包括:延迟(TAS和帧抢占)、流量监控(802.1Qci)和冗余(802.1CB)

 

IEEE 802.1Qbv Time Aware Shaper

        时间感知整形(TAS)可以说是TSN里的一个核心协议,正是它的应用为车内时间敏感数据提供了超低的延时及抖动的保证。我们知道,以太网的数据是在总线上串行传输的,如图5,当有多个数据在交换机出口等待被转出时(不同的数据会根据VLAN Tag中的优先级在不同的队列中排队等待),谁先出谁后出就决定了数据的延迟大小。

 

图5 以太网出口队列示意图

 

        TAS通过开关门的机制,来控制数据的发送。如图6,通过右侧的Gate Control list来控制每个队列在某一时刻的开关门状态,以右侧黑框圈出的T05举例,该时刻 队列7到队列0的开关门状态分别是CoCCoCCC(C表示关门,o表示开门)。数据只有在开门的时候才可以进行发送,也就是说该时刻只有队列6和队列3可以发送数据。

 

图6 TAS 开关门控制 (图片部分引自IEEE 802.1Q)

 

        一般来讲 Gate Control List是周期循环的,在关键数据(图7中TC1数据)发送前和发送中,我们会关闭其他数据的发送,以保证TC1数据不会受到影响。从而为TC1提供超低的延时保证。同时周期性开关门的特性也说明TAS更适合为周期性数据提供延时的保障。

 

图7 TAS举例

 

IEEE 802.1 Qbr & IEEE 802.3bu 帧抢占

        帧抢占是TSN协议族中另一个提供延迟保障机制的协议,该协议通过修改前导码将正常的以太网帧分为两类:Express MAC (EMAC 高优先级帧) 和 Preamble MAC(PMAC 低优先级帧)。通过高优先级帧可以打断正在发送的低优先级帧这一特性,减小高优先级的等待时间。以图8中的数据为例,正常情况下,第一行蓝色的PMAC帧先发送后,即使后面再来的EMAC帧也必须等待当前正在发送的PMAC帧发送完成后才能发送。但是应用了帧抢占后,EMAC帧可以打断PMAC帧进行发送,当EMAC帧发送完成后,剩余的PMAC帧再进行发送。这样一来就可以节约下了EMAC帧的等待时间。

 

图8 帧抢占举例

 

        除了帧抢占自己单独使用可降低延时之外。还可以与上面提到的TAS结合使用以减小Grandband的大小(如图9),从而在频繁开关门的情况下提高网络利用率。

 

图9 帧抢占结合TAS减小Grandband

 

        最后在应用帧抢占的时候有三点注意:

•  数据 “被且仅被” 分成两类:PMAC帧和EMAC帧

•  需要依赖底层支持,将原有的MAC层分为EMAC 和 PMAC

•  PMAC可被打断的最小帧长度为124Bytes 小于该长度不能被打断

 

IEEE 802.1Qci Per-Stream Filtering and Policing

        TSN协议族中的PSFP协议类似防火墙的机制,它可以对转发前的数据进行筛选和过滤,对特定标识的数据帧加以控制。以图10为例,正常情况下ECU1和ECU2各自发送20Mbps数据,但是由于ECU1受到网络攻击或者自身发生错误,导致发送90Mbps的数据。此时由于switch出口处支持100M带宽,那么ECU2至多能发送10Mbps的数据,因此无法正常工作。

 

        如果该系统中应用了PSFP,那么此机制可以提前根据数据流的特征(VLAN,MAC地址,IP地址等)识别出ECU1所允许发送的数据流仅能为20Mbps,因此就会对其进行错误处理,方式分为两种:

•  PSFP限制:限制数据流发送,降低到预设值

•  PSFP阻断:完全阻断错误数据流

 

        此外PSFP还可以防止网络攻击(例如ARP攻击),以及通过其中的门控机制确保被筛选出的数据在特定的时机进行发送等。

 

图10:PSFP举例

 

IEEE 802.1CB Frame Replication and Elimination for Reliability (FRER)

        802.1CB 协议主要负责数据的冗余备份传输,利用冗余机制解决环路网络拓扑中,可能由CRC、线路开路,连接器断开等导致的信息错误或丢失。如果应用了自动驾驶,并且有一个较高的功能安全等级,那么FRER几乎成为了一个关键的选择。

 

图11. R-tag 及序列号

 

        在发送时,其会为特定数据打上标签和序列码(如图11),并且在不同通路上复制传输。在链路汇聚点处,复制信息会被识别并消除,以防止接收节点的上层应用处理多个重复数据。其应用大致分为两种形式:终端节点承担FRER工作(如图12)或 Switch节点成端FRER工作(如图13)。后者相比于前者,实现起来难度较低,设计变更和复杂程度也会相对较小。

 

图12. 终端节点承担FRER功能

 

图13. Switch承担FRER功能

 

 

这篇关于快速了解时间敏感网络(TSN)_Part2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203869

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o