热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

AUTOSAR的E2E通信

AUTOSAR标准的安全通信为支持功能安全,AUTOSAR标准结合ISO26262功能安全标准,在基础软件层从安全执行、安全通信以及安全内建测试三个方面

AUTOSAR标准的安全通信
为支持功能安全,AUTOSAR标准结合ISO 26262功能安全标准,在基础软件层从安全执行、安全通信以及安全内建测试三个方面做出了规范,并规范了使用方法,本文主要介绍其安全通信部分。


1.安全通信组成部分

为了支持安全通信,AUTOSAR提供了三种机制,数据顺序控制、PDU复制和K/N的投票机制以及端到端的保护机制。其中数据顺序控制在COM中实现;PDU复制和N分之K(简称K/N)的投票机制涉及到COM和PduR模块;端到端的保护机制借助于端到端保护库(E2E库)来实现。


1.1 COM模块

COM模块为应用程序提供基于信号的数据服务接口,并根据信号自身预定义的发送类型来发送报文。本模块还提供了附加的服务接口可用于检测是否成功发送报文、成功接收报文以及报文是否超时等。对于多个通信通道的ECU,本模块还提供了一个用于不同通信总线之间的信号路由即信号网关的功能。
同时,为了支持安全通信,本模块提供了两种机制,数据顺序控制和K/N的投票机制来增强通信的安全。


1.2 PduR模块

PduR模块主要提供两类服务:


  1. 承上启下衔接上层和下层:发送时派发从高层模块的PDU到低层模块,并支持上层到下层的1对多映射即多播机制;接收时派发从底层模块如If或者TP接收的PDU给高层模块(COM,PduR)。
  2. 通信网络中的网关功能:网关功能有两种:从一个接口层到另外一个相同或者不同总线类型的接口层;从一个TP到另外一个相同或者不同总线类型的TP层。其中,路由协议基于一个静态的路由表和PDU ID的概念。

1.3 E2E保护库

E2E是一个端到端的通信保护库,只依赖于循环校验(简称CRC)库。为确保软件的开放分层,应当考虑如下的通信故障检测:
1) 点对点通信的丢帧。
2) 无意义的重复发送相同的消息。
3) 发送过程中的消息丢失。
4) 接收到伪装正确源地址的消息。
5) 接收到的消息序号和发送的消息序号不一致。
6) 消息在传输过程中损坏。
7) 未在指定的时间内接收到消息。
8) 防止数据总线被错误节点过度请求服务。
9) 一个故障节点的损坏导致整个总线的故障。

E2E支持的通信故障源包括:


  1. 软件故障
    例如COM通信协议栈和RTE的软件模块,因为系统性质本身可能包含隐藏的错误。系统故障可能发生在规范、设计、制造、操作、维护的任何阶段的系统生命周期。他们出现的情况总是相同的(如触发源的条件)。软件故障可能会导致中断通信,接收溢出,发送空消息等。为防止软件故障的产生,应当采取适当的程序监控或E2E技术措施进行检查和处理是必要的。
  2. 硬件随机故障
    硬件随机故障通常源自硬件电气过载,退化,老化或受外部条件(例如环境压力)影响。一个硬件随机故障不能完全避免,但其概率可以通过适当的技术措施(例如诊断)评估。
  3. 外部环境因素
    这些因素包括电磁干扰(EMI),静电放电(ESD),空气湿度,腐蚀,温度,机械应力(如震动)等等。

2.安全通信关键技术

本章分别介绍SmartSAR Core在AUTOSAR的安全通信实现中,采用的三个关键技术,分别是数据顺序控制机制、PDU复制和K/N的投标机制、端对端的保护机制。


2.1 数据顺序控制机制

AUTOSAR COM模块基于PDU计数器提供了数据顺序控制机制,乱序的PDU,比如重复的或者在丢失的PDU之后接收到的PDU就能被检测出来并丢弃。这种机制需要发送端和接收端配合使用。


  1. 发送端
    在发送端,对于配置了计数器的PDU,在COM初始化时或者PDU组以TRUE的方式启动时设置计数器为0。以后,在每次发送PDU之前,都会递增这个计数器。如果调用PduR的向下发送服务返回失败,则执行减一操作,也就是对于一个PDU每成功发送一次,则对这个它的顺序控制计数器执行加一操作。
  2. 接收端
    在接收端,对于配置了计数器的PDU,在COM初始化时或者PDU组以TRUE的方式启动时设置计数器为0。以后,无论顺序计数器的值怎样,都应接受到来PDU。一旦接受一个包含顺序计数器的PDU,COM模块应设置下一个期待的值为接收到的计数器的下一个值。
    如果一个顺序计数器是4位的,它有从0到15这16个可能值。如果一个接收到一个PDU,并且接收到的计数器是15,则下一个期待的值应为0。不论接收到的值是否和实际期待的值相等,新的期待的值都应被更新。
    接收到一个包含顺序计数器的PDU时,COM应先设置下一个期待的值,然后丢弃这个PDU,当且仅当这个PDU符合以下条件:
    收到的PDU的顺序计数器小于期待的PDU计数器,或者接收到的PDU顺序计数器大于期待的PDU计数器和一个配置的容错阈值的和。
    如果发生顺序计数器不匹配,COM可以调用这个PDU的一个回调函数来通知用户。
    PDU顺序计数器是4位,配置的容错阈值为1,则匹配情况如下表 1所示。
    表 1 顺序计数器为4位,容错阈值为1的样例表

期待的PDU计数器接收到的计数器的值动作
66正常接收
67正常接收
68丢包
61丢包
1515正常接收
150正常接收
151丢包

2.2 PDU复制和K/N的投票机制

安全相关的PDU可能需要在下层被复制来防止数据的损坏或丢失。在AUTOSAR中,PDU的复制在PduR中以多播的形式来实现。复制的PDU的比较和投票机制在COM中实现。由于复制的PDU没有校验或者签证以供比较使用,就需要在接收方存储并比较整个PDU。


  1. 发送端
    在发送端,只需要在PduR中为对应的PDU配置多播路径即可。但是,必须要确保复制的PDU配置有顺序计数器,为了在接收端基于顺序计数器来进行投票。
    对于K/N的投票机制,应确保复制N份PDU发送出去。
  2. 接收端
    在接收端,负责对接收到的复制的PDU进行投票,并只向RTE传递成功发送的一直的PDU的消息。复制的PDU要配置有顺序计数器。然而,建议配置容错阈值为0,避免情况太复杂。
    对于K/N的投票机制,至少接收到相同的K份数据才保证数据是可靠的,才能提交这个PDU的消息给RTE。

2.3 端到端的保护机制

端到端的保护需要发送端和接收端的配合使用才能检查出错误。
发送端的流程如图 1所示。首先,PDU的发送方初始化配置结构体和状态结构体;然后用最新的信号的值更新PDU;取得PDU的数据;根据这些参数调用E2E_PXXProtect,执行E2E的逻辑,加入CRC校验信息,加入数据计数器信息,最后把数据一起发送到总线上。其中CRC校验信息可用来检查一位到两位错等硬件错误,数据计数器信息可以辅助检查到顺序出错等问题。
在这里插入图片描述

图 1 E2E的发送方
接收端的流程如图 2所示。首先,PDU的接收方初始化配置结构体和状态结构体;然后接收PDU;取得PDU的数据;根据这些参数调用E2E_PXXCheck,执行E2E的逻辑,检查CRC校验信息,检查数据计数器信息,如果都没有错误才把收到的PDU中的数据提交给应用。其中CRC校验信息可用来检查一位到两位错等硬件错误,数据计数器信息可以辅助检查到顺序出错等问题。

在这里插入图片描述

图2 E2E的接收方


推荐阅读
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 一个初秋的雨夜,我独自漫步在校园的小道上,心中突然涌起对理想爱情的憧憬。这篇文章将分享我对理想伴侣的期望,以及与他共度美好时光的愿景。 ... [详细]
  • 越来越多的家庭在装修淋浴房时选择不铺设传统瓷砖,而是采用四边走水的设计,这种设计不仅排水迅速,还能提升整体美感。本文将详细介绍这一趋势及其优点。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 本文详细介绍了MySQL数据库服务器(mysqld)和客户端(mysql)的区别,并提供了多种启动和关闭MySQL服务器的方法。通过这些方法,您可以更好地管理和维护MySQL数据库。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 如何在服务器上配置SSL证书
    SSL证书是用于验证互联网上身份的一种数字凭证,通过启用HTTPS协议,确保用户与服务器之间的通信安全。本文将详细介绍如何在API和服务器上配置SSL证书,以提升网站的安全性和可信度。 ... [详细]
  • 解决启动时遇到 'NTLDR is Missing' 错误
    本文详细介绍了如何解决 Windows XP 系统启动时出现的 'NTLDR is Missing' 错误,提供了多种修复方法。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • Ping 命令的高级用法与技巧
    本文详细介绍了 Ping 命令的各种高级用法和技巧,帮助读者更好地理解和利用这一强大的网络诊断工具。 ... [详细]
  • 国联物流是一家由国家出资设立的国有企业,全称为湖南国联物流有限公司,成立于2001年3月,前身为株洲国联货运部。公司现办公地点位于湖南长沙,专注于大件运输、药品配送及第三方物流服务。 ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
author-avatar
倒颠0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有