当前位置: 首页 > news >正文

Autosar的前世今生:E2E通信校验

在浏览项目整体框架的时候,发现E2E是一个不可绕开的点,而且处处可见Autosar框架的踪迹,因此开一个专栏,每天学习一点相关知识点

E2E(end to end)Autosar规范里规定的一种用于保证数据传输正确的概念,属于功能安全范畴

以汽车中两个ECU通信来举例,两个节点通过CAN总线进行通信,当ECU-A要将数据传给EUC-B时,采用E2E校验对数据进行保护

在这里插入图片描述

E2E的作用和特点

E2E保护概念的核心是针对安全相关的数据交换,需要在运行时进行保护,以消除通信链路中可能的失效带来的影响。

关于数据交换过程中可能的失效模式有哪些,如下:

  • 信息的重复发送,相同的信息被收到了多次
  • 信息的丢失,整条或者信息的一部分在通信过程中丢失
  • 信息的延迟,接收信息的时间异于期望的时间
  • 信息的插入,多余的内容被插入到信息中
  • 假冒的或者不正确的寻址,假冒的- - 发送者发送未认证的信息被接收端接受,或者正确的信息被错误的接收端接受
  • 信息顺序错误,数据流中的信息顺序错误
  • 信息破损,信息的内容被篡改
  • 向多个接收端发送非对称信息,接收端收到的数据不一致
  • 仅部分接收端收到发送者的信息
  • 阻塞通信通道
参数计算

按照Autosar规范的要求,E2E存在一系列的Profile(配置)每种配置在计算CRC时有各自的机制、参数、数据格式,具有非常强的灵活性,用户可以根据实际需要选择配置

Profile 1为例

  • CRC:对数据进行多项式除法计算后的余数
  • Counter:用于计数每次增加1ECU-A将计数值发给ECU-BECU-B可以依据收到的Counter值确定是否接收及时
  • Timeout monitoring:用来评价Counter是否丢失延时
  • DataID:提前定好的特殊数字,一般是16b,按照E2E P01 DataID Mode 的不同分为1A,1B,1C三种细分的配置,计算CRC时对DataID做不同处理
Profile 0x

分为E2E Profile 01E2E Profile 02E2E Profile 03E2E Profile 04E2E Profile 05E2E Profile 06

细节处可查询文档,此处不做概述

功能点
  • 校验传输过程中是否存在数据的重复发送。(通过 Counter 校验)
  • 校验发送过程中是否存在消息丢失 (通过 Counter 校验)
  • 校验是否在指定时间内接收到信息 (通过 Counter 校验)
  • 校验传输过程中是否存在数据插入 (通过 DataID 校验)
  • 校验是否接收到伪装正确源地址的消息 (通过 DataID /CRC 校验)
  • 校验传输过程中是否发生数据损坏 (通过 CRC 校验)
  • 校验传输过程中是否发生数据顺序错误 (通过Counter校验)
  • 校验接收方是否从同一发送方接收到不同的信息 (通过 CRC校验)
  • 校验发送方信息是否仅由一部分接收者接收 (通过 Counter 校验)
  • 提供 P01、 P02、 P04、 P05、 P06 数据保护与校验方法

相关文章:

  • elementUI(Vue2)和elementPlus(Vue3)图标icon差异
  • VB.NET 中的异常处理机制是什么?请提供简单的异常处理示例
  • OpenLayers基础教程——使用WebGL加载海量数据(1)
  • Docker学习笔记 - 使用配置脚本来启动image
  • golang常用库之-golang常用库之-ladon包 | 基于策略的访问控制
  • docker入门(十)—— docker-compose详解
  • stm32定时器
  • scDEA一键汇总12种单细胞差异分析方法 DESeq2、edgeR、MAST、monocle、scDD、Wilcoxon
  • K8S Storage
  • PYTorch训练和推理 指定GPU
  • docker swarm 集群创建
  • Go语言学习04~05 函数和面向对象编程
  • c++算法学习笔记 (15) 质数
  • 新手如何入门电子电路
  • 我的VSCode配置和常见插件
  • 【391天】每日项目总结系列128(2018.03.03)
  • android 一些 utils
  • canvas绘制圆角头像
  • egg(89)--egg之redis的发布和订阅
  • Java知识点总结(JavaIO-打印流)
  • Laravel Mix运行时关于es2015报错解决方案
  • Rancher-k8s加速安装文档
  • scala基础语法(二)
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue 重置组件到初始状态
  • 基于axios的vue插件,让http请求更简单
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何学习JavaEE,项目又该如何做?
  • 实习面试笔记
  • 云大使推广中的常见热门问题
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 智能合约开发环境搭建及Hello World合约
  • No resource identifier found for attribute,RxJava之zip操作符
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #Linux(权限管理)
  • (arch)linux 转换文件编码格式
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (算法二)滑动窗口
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .Net语言中的StringBuilder:入门到精通
  • @private @protected @public
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [51nod1610]路径计数
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型