TSN协议之冗余协议——IEEE 802.1 CB

2023-11-16

在车载通信领域,我们时常面临一个困惑,要是通信线路异常断开了怎么办?这里的异常断开不仅指物理上的断开,也可能是受电磁干扰等导致线路通信功能的异常等。解决此类问题,一个显而易见的解决方案就是增加冗余路径,即把数据传输2~N份以进行备份,这样就不用担心数据的丢失了。

原理很简单,但受限于成本因素及协议原理等,实现起来并不容易。常见的车载通信协议——CAN/LIN/FlexRay/Most/Ethernet,只有FlexRay和Ethernet能实现上述的冗余通信。FlexRay可使用双通道通信,两个通道可用来发送相同的信息,以牺牲通信速率的代价来换取冗余传输。但FlexRay通信速率有限,单通道最高通信速率为10Mbps,该速率对传输车内线控信号足够,但用于传输无人驾驶相关的传感器信号,就捉襟见肘了。以太网可实现通信速率(百兆、千兆等)与冗余传输的兼顾,是一个优质的解决方案,但受限于汽车电气拓扑、芯片等的发展水平,现阶段该技术暂未推广,但不可否认该技术的强大。今天小怿就带领大家认识认识以太网实现冗余的方案,即TSN协议族中的IEEE 802.1 CB协议。

IEEE 802.1 CB协议定义了车载以太网中实现冗余传输的方案,协议全称Frame Replication and Elimination for Reliability,简称FRER。下面小怿将依次介绍该协议的应用场景、协议原理、实现方式等。

 

应用场景

 

理论上讲,整车各类数据流可进行以下区分,如表1所示:

表 1 数据流量类别

 

上表中,关键性列为“高”的数据流,理应进行冗余传输,以实现更高级别的功能安全。一般来讲,是否使用冗余协议,由功能决定,如果某功能对数据的丢包无法容忍,那么,需考虑使用冗余协议FRER以实现可靠传输。

使用FRER实现冗余时,前提条件是网络中数据的传输有冗余路径—备选路径,这就对网络拓扑的形式提出了要求:网络中必须能够形成环路,以使Talker端的数据能沿不同路径到达Listener端。以下两图可直观理解FRER对网络拓扑形式的需求。图1域控制器架构中,各域节点通过以太网连接在一起,域内各节点通过CAN/Ethernet等互联,域节点之间未形成环形拓扑,因此,无法使用FRER进行冗余设计。图2 Zonal架构中,主干网上以太网节点数量增多,节点的处理能力及可靠性要求更高,网络中也形成了闭环,此时,可使用FRER使数据沿不同路径传输,以实现高可靠性。

图 1 典型域控制器架构(摘自“Automotive Plug and Play from theory to implementation”报告)

 

图 2 Zonal架构(摘自“Automotive Plug and Play from theory to implementation”报告)

 

总之,FRER应用于对数据传输有高可靠性需求,且网络可提供数据传输冗余路径的以太网拓扑中。

 

协议原理

 

FRER原理简单:Talker端发送数据时,FRER功能将数据包复制,沿不同路径传输;Listener端接收数据时,FRER功能删除复制的数据包,只保留一个数据包。当然,不强制要求作为终端节点的Talker或Listener支持FRER功能,FRER功能可通过网桥来实现,此时,网桥称为Talker的代理或Listener的代理。

下图中,End System A是数据流的Talker端,End System G是数据流的Listener端,两者之间有多个交换机Relay System。终端A不具备FRER功能,需由交换机B进行代理,此时,B称为Talker(终端A)的FRER代理;G具备FRER功能,其不需要代理。虚线表示数据流及其流动方向,红色圆框表示节点具备的FRER功能(主要功能,非全部功能)。

图 3 FRER原理示意图

 

要想实现数据流沿不同路径(甚至是所有可能路径)的传输,需要由多个节点配合实现,各节点需具备不同的FRER功能,以共同实现数据的冗余传输。FRER功能组件如表2所示:

表 2 FRER功能组件

 

上表中,Sequencing function有3个子功能,见表3:

表 3 Sequencing function子功能

 

FRER所有的功能组件均与两个参数相关,即stream_handle子参数及sequence_number子参数。

  • stream_handle子参数与流识别功能相关,节点根据数据帧的MAC、VLAN、Priority、IP等信息,判断数据帧是否需经过FRER功能组件处理,如需进行处理,给其分配一个stream_handle子参数,该stream_handle子参数决定了数据帧会经过哪些FRER组件的处理,所有具备FRER功能的节点,其必须具备Stream identification功能。
  • sequence_number子参数与数据帧的复制及删除相关,在Talker端,对数据包按序进行编号,并将sequence_number编码至数据帧中;在数据接收方,根据sequence_number子参数判定数据帧是否是之前接收包的复制品,如果是,即删除。

以图3的系统为例,节点B、C、F及G具备FRER功能的节点,以节点B及F为例,其内部详情如下。

 

节点B(交换机,Talker端FRER代理)

图 4 节点B内部FRER协议栈示意图

 

节点B中,对于从A节点处来的数据流,其处理流程如下:

(1)Stream identification组件使用IP地址等对数据流进行识别,如果需要进行FRER处理,则传往高层由FRER组件进行处理;如不需要,则通过NSTF传输,不经过FRER功能组件;

(2)Sequence generation function组件对数据包进行编号,从0~65535循环;

(3)Sequence encode function将(2)中的编号编码进数据帧中,以使数据帧携带编号信息;

(4)Active Destination MAC and VLAN Stream identification组件改变数据包的MAC、VLAN等信息,进而使数据包沿不同的路径传输;其取代了流分离的功能。

 

节点F(交换机,两条路径在此交汇)

图 5 节点F内部FRER协议栈示意图

 

节点F中,两条不同路径上的数据流在此处汇聚,节点F的处理流程如下:

(1)Stream identification组件对数据流进行识别,对需经过FRER功能组件处理的数据帧传往高层处理;

(2)Sequence decode function组件去除数据帧中编码的sequence_number子参数等内容,以使数据帧能被Stream Transfer Function识别;

(3)Sequence recovery function根据数据包的sequence_number子参数,判断数据包是否是之前接收的数据包的复制包,如果不是,则保留该包,如果是,则删除。

(4)Sequence encode function组件往数据帧中编码sequence_number子参数,以使报文携带编号信息,方便后续节点进行帧删除操作。

(5)Stream identification组件视需改变数据帧的MAC或VLAN。

以上是FRER协议的基本原理,其实,每一个FRER功能组件的背后,都需进行复杂的参数配置,可能涉及复杂的算法,篇幅原因,本文不进行具体讲述。FRER协议原理简单,但深入理解并使用不是一件容易的事。

 

实现方式

 

在第1章节提到过,FRER应用于网络中能形成回环的网络,数据流的传输路径,需提前静态配置。

一般来讲,FRER功能组件的布置很灵活。在静态配置好的数据传输路径上,节点或交换机根据其自身所在位置,选用合适的FRER功能组件,各节点配合实现系统中数据流的冗余传输。各节点选用的FRER组件,一般遵循以下原则:

(1)Talker端(或Talker的FRER代理端)需支持流识别功能、序号生成功能、序号编码功能、流分离功能(可由流识别功能实现)

(2)Listener端(或Listener的FRER代理端)需支持流识别功能、序号恢复功能及潜在错误检测功能、序号解码功能

(3)如果路径上某交换机是2~N条路径的交汇节点,该节点需支持流识别功能、序号恢复功能及潜在错误检测功能、序号编码/解码功能

(4)如果路径上某交换机处分离出2~N条路径,该节点需支持流识别功能、序号编码/解码功能、流分离功能(可由流识别功能实现)

(5)任何具备FRER功能组件的节点,均需支持流识别功能

 

总结

 

IEEE 802.1 CB协议是TSN协议族的一个子协议,其用于实现车载Ethernet网络中数据的冗余传输,适用于对数据传输有高可靠性传输需求的应用。随着智能驾驶汽车的发展,越来越多的传感器数据直接被用于车控,这类数据流与功能安全强相关,需考虑数据传输的可靠性需求。使用以太网传输传感器数据流,配合TSN协议实现数据传输的可靠性需求、通信QoS及安全等,能较好地满足智能驾驶汽车对数据传输的需求。

TSN由一组协议组成,网络设计者可根据需求选取不同的协议,以实现不同的需求。TSN各协议按其功能,可分为以下几类:传输协议、时钟同步协议、QoS服务质量协议、冗余及安全协议、资源管理协议等。IEEE 802.1 CB协议是冗余协议,与其它协议关联性不强,可单独使用或配合其它协议使用,是车载以太网通信中需重点关注的一个协议。

TSN协议目前在车内的应用暂处于预研阶段,但随着智能驾驶的发展、域控制器及中央计算单元架构的演化及车规级芯片的量产,其必将在车载网络中发挥越来越重要的作用。

由于篇幅有限,我们今天就介绍到这里了,请大家持续关注我们的公众号,有任何疑问都可以在下方评论区留言哦,我们收到后会第一时间为您解答。欢迎大家一起关注TSN技术的进展,一起探讨,共同进步。

扫一扫,更多精彩呈现~

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TSN协议之冗余协议——IEEE 802.1 CB 的相关文章

  • 达尔文商品体系

    一 背景介绍 最初是由天猫发起的 针对天猫品牌混乱 原始商品信息错误和商家重复铺货 商家的宝贝 库存价格等信息杂乱无章 商家发布商品流程冗长 管理商品非常不便 消费者也很难找到确定的商品相关信息 前台的搜索应用困难等问题 旨在规范商品信息确

随机推荐

  • 批量爬虫采集大数据的技巧和策略分享

    作为一名专业的爬虫程序员 今天主要要和大家分享一些技巧和策略 帮助你在批量爬虫采集大数据时更高效 更顺利 批量爬虫采集大数据可能会遇到一些挑战 但只要我们掌握一些技巧 制定一些有效的策略 我们就能在数据采集的道路上一帆风顺 1 设立合理的请
  • 服务器虚拟机无法连接msk,无法连接mks【图文详解】

    喜欢使用电脑的小伙伴们一般都会遇到win7系统无法连接mks的问题 突然遇到win7系统无法连接mks的问题就不知道该怎么办了 其实win7系统无法连接mks的解决方法非常简单 按照1 首先检查了下 windows的防火墙设置 可以看到Vm
  • QT笔记——QProcess学习

    我们常常想通过某一个类 来启动一个外部进程 本文将讲解如何通过QProcess来进行启动外部进程 一 了解QProcess QProcess是Qt框架提供的一个类 用于在应用程序中执行外部进程 它提供了一系列函数来启动 控制和与外部进程进行
  • axios请求超时

    axios请求超时 设置重新请求的完美解决方法 自从使用Vue2之后 就使用官方推荐的axios的插件来调用API 在使用过程中 如果服务器或者网络不稳定掉包了 你们该如何处理呢 下面我给你们分享一下我的经历 具体原因 最近公司在做一个项目
  • Spring Cloud Gateway学习

    文章大纲 为什么需要网关 传统的单体架构只有一个服务开放给客户端调用 但是在微服务架构体系中是将一个系统拆分成多个微服务 那么作为客户端如何去调用这些微服务呢 如果没有网关的存在 就只能在本地记录每个微服务的调用地址 无网关的微服务架构存在
  • C++之MFC学习

    问题1 stdafx h是怎么引入进来的 define h与stdafx h之间的关系 为什么在MuisicPlayer cpp中引入stdafx h 问题2 enum class的使用 问题3 列表初始化 int window trans
  • linux重做系统分区,搜索所有硬盘分区上的linux系统,重新安装grub的方法

    电脑硬盘上 非vmware 安装了Ubuntu Fedora Debian openSUSE linuxMint Mageia elementaryOS PearOS ZorinOS Bodhi Manjaro Sparky linuxDe
  • 【星球精选】如何高效构建 Roam 与 theBrain 间细粒度双向链接?

    Roam Research 作为卡片盒很好用 只是目前缺乏中观网络可视化能力 老牌知识管理应用TheBrian 可以很好补充上这个短板 因此我希望将二者结合起来使用 只是这个过程 有些曲折 在 Obsidian 中的 excalibrain
  • redis可视工具AnotherRedisDesktopManager的使用

    redis可视工具AnotherRedisDesktopManager的使用 系列文章 macm1安装redis过程 springboot整合redis及set map list key value和实体类操作 redis可视工具Anoth
  • 龙书11_chapter_6 一:一般绘制流程

    先看BoxDemo的前几节 1 vertex input Layout 2 vertexBuffer 3 IndexBuffer 4 vertexShader 5 constant Buffer 6 pixelShader 7 render
  • Hbase存储及元数据meta

    Hbase的列族式存储 列族就是多个数据列的组合 列族式可以说是表的schema的一部分 而列不是 Hbase可以说是列簇数据库 在创建表的时候要指定列族 而不需要指定具体的列 Hbase Table组成 Table rowkey fami
  • Sqli-labs之Less-25和Less-25a

    Less 25 GET 基于错误 您所有的OR AND都属于我们 字符串单引号 Notice Undefined variable hint in C phpStudy WWW sqli Less 25 index php on line
  • Android自动化测试框架实现

    背景介绍 最近打算梳理一下不同产品领域的自动化测试实现方案 如 Android终端 Web 服务端 智能硬件等 就先从Android终端产品开始梳理吧 本文主要介绍UI自动化测试的实现 因为这类测试解决方案比较通用 Android系统层 内
  • CentOS 7下安装nginx+php+mysql

    目录 一 安装Nginx 1 安装make 2 安装g 3 安装PCRE库 4 安装zlib库 5 安装ssl 6 下载和解压nginx 7 添加nginx用户和用户组 8 配置nginx安装参数 9 编译并且安装nginx 10 启动ng
  • Windows下的mingw-Qt开发环境安装及helloworld实现

    Windows下的mingw Qt开发环境安装及helloworld实现 我用的是Qt5 7 因此本次总结是基于Qt5 7 0的 我在自学的时候使用的IDE是Qt自带的Qt creator 上手简单 配置属于自己顺手的设置很方便 此外 如果
  • element主题色切换

    在网上搜了很多主题切换方案 发现没有适合自己项目的 不得已结合根据实际情况做一个子主题切换的功能 其中参考了element 官方的theme chalk preview 感兴趣的可以自己研究一下 主要功能是基于less切换主题色 可以自定义
  • 网络安全工程师需要学什么?零基础怎么从入门到精通,看这一篇就够了

    网络安全工程师需要学什么 零基础怎么从入门到精通 看这一篇就够了 我发现关于网络安全的学习路线网上有非常多看似高大上却无任何参考意义的回答 大多数的路线都是给了一个大概的框架 告诉你那些东西要考 以及建议了一个学习顺序 但是这对于小白来说是
  • 计算机退出程序的四种方法,退出windows10系统账户的四种方法

    网友反馈说Win10系统打开某些程序时 经常会弹出提示 你要允许以下程序对此计算机进行更改吗 每回都要手动关闭 而且频繁的弹出影响办公效率 有什么办法能将此窗口给永久关闭 退出微软账户即可 接下去看下具体操作方法 退出Win10账户的方法
  • 同步与异步的区别(一看则懂)

    前端面试经常被问 同步与异步的区别是什么 答案呢 大家都知道 只是在于你怎么表达 这种问题也不是很复杂 建议在回答的时候最好结合自己的实际项目开发以及自己的理解来回答 这样的效果会比较好 面试上提的问题本来目的就是想考察你是否熟悉 是否有用
  • TSN协议之冗余协议——IEEE 802.1 CB

    在车载通信领域 我们时常面临一个困惑 要是通信线路异常断开了怎么办 这里的异常断开不仅指物理上的断开 也可能是受电磁干扰等导致线路通信功能的异常等 解决此类问题 一个显而易见的解决方案就是增加冗余路径 即把数据传输2 N份以进行备份 这样就