车载以太网网络管理之UDPNM

news2024/11/28 12:53:41

前言

首先,请问大家几个小小问题,你清楚:

  • 你知道UdpNm模块的主要作用是什么吗?
  • UdpNm模块与其他AUTOSAR基础软件模块交互关系;
  • UdpNm模块的网络管理算法,状态机如何运转?
  • UdpNm模块的PNC功能如何作用?
  • UdpNm的应用场景有哪些?

今天,我们就来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:

在这里插入图片描述


正文

随着车载以太网技术的发展,越来越多的汽车厂商和供应商开始采用基于TCP/IP协议栈的通信系统,以提高车辆内部网络的性能和可靠性。然而,TCP/IP协议栈本身并不提供网络管理功能,也就是说,它不能实现节点之间的状态同步、节能控制、故障检测等功能。为了解决这个问题,AUTOSAR组织制定了一种基于UDP协议的网络管理协议,即UDP Network Management (UdpNm)

如下图1所示,描述了UdpNm在整个AUTOSAR架构中的位置关系:

在这里插入图片描述

图1 UdpNm与AUTOSAR架构关系

由上图可知UdpNm与车载以太网协议栈SoAd模块,NM模块有着密切的联系,后文将一一为大家解读,除此之外UdpNm在整个AUTOSAR架构中存在着如下限制条件,如下图2所示:

  • 在一个网络中只允许一个NM Cluster关联一个UdpNm实体;
  • 在同一个ECU中只允许一个网络与一个UdpNm实体关联;
  • UdpNm仅适用于基于TCP/IP的系统;

在这里插入图片描述

图2 UdpNm限制条件

UdpNm应用场景与特点

UdpNm是一种独立于硬件和物理层的网络管理协议,它可以与TCP/IP协议栈一起工作,实现基于TCP/IP的系统的网络管理功能。UdpNm主要有以下几个特点:

  • UdpNm基于分散的直接网络管理策略,这意味着每个网络节点只根据在通信系统内接收或发送的UDP数据包来执行自给自足的活动。UdpNm不需要任何中心节点或主节点来协调或控制其他节点。
  • UdpNm使用UDP协议作为传输层,这使得UdpNm具有较低的开销和延迟,以及较高的容错性和灵活性。UdpNm不需要建立连接或保持会话状态,也不需要对数据包进行确认或重传。
  • UdpNm支持局部网络管理功能,也就是说,它可以根据节点的通信需求和能耗情况,动态地激活或抑制部分网络群集(Partial Network Cluster, PNC)。这样可以减少不必要的数据包传输,节省网络带宽和电源消耗。
  • UdpNm支持触发传输功能,也就是说,它可以根据应用层或其他模块的请求,主动地发送或接收用户数据。这样可以提高用户数据的及时性和可靠性。

UdpNm适用于各种基于TCP/IP的车载以太网系统,例如车联网系统、音频视频系统、导航系统等。UdpNm可以实现这些系统中节点之间的状态同步、节能控制、故障检测等功能,常见的应用场景如下所示:

  • 基于TCP/IP的车载以太网系统:UdpNm可以与TCP/IP协议栈一起工作,实现车载以太网节点的协同睡眠和唤醒,提高网络效率和节省能源。
  • 分布式嵌入式系统:UdpNm可以用于基于UDP的通信系统,提供网络管理接口(Nm)和TCP/IP协议栈之间的适配,实现网络节点的状态监控和控制。
  • 多媒体应用:UdpNm可以用于支持多媒体数据传输的网络系统,提供网络节点的同步和协调功能,实现数据流的质量保证和优化。

UdpNm工作原理

在正式介绍UdpNm工作原理之前,想必大家都听过AUTOSAR CanNM模块,该模块小T在之前的文章《AUTOSAR基础篇之CanNm》已经进行了较为详细的介绍,因此有必要针对两者做一个比较,以便让大家对这两者的相同点与不同点有一个基本的认识。

UdpNm与CanNM的区别联系

如下图3所示,清晰地描述了UdpNm与CanNm两者之间的区别与联系:

在这里插入图片描述

图3 UdpNm与CanNm区别联系

由此可见,UdpNm的整个网络管理算法与CanNm基本是一致的,只不过是控制参数的变量名有所区别,本质上是相同的切换条件

因此本文将不会过多的对UdpNm的网络管理状态机做过多的描述,如果大家需要详细了解,可以参考小T之前关于CanNm的文章《AUTOSAR基础篇之CanNm》。

针对UdpNm的自身特性,UdpNm的工作原理主要围绕如下三个部分进行展开:

  • 网络管理算法:定义了UdpNm如何根据接收和/或传输的UDP数据包来切换不同的网络状态,并执行相应的动作,定义了UdpNm如何根据不同的网络状态和条件来确定何时发送或接收UDP数据包,并说明了发送或接收UDP数据包所遵循的规则和流程。。
  • 消息格式:定义了UdpNm使用的UDP数据包中包含哪些字段和信息,并说明了各个字段和信息的含义和作用。
  • 用户数据处理:定义了UdpNm如何根据应用层或其他模块进行相应的数据处理。

网络管理算法

如下图4所示,为基于UdpNm的网络管理状态机,即对应的网络管理算法,描述的就是各网络状态之间如何进行切换:

在这里插入图片描述

图4 UdpNm网络管理状态机

与CanNm网络管理状态机一致,UdpNm模块将整个网络管理状态仍然划分为Bus Sleep Mode, Prepare Bus Sleep Mode, Network Mode 三大主体状态,其中Network Mode 可进一步划分如下三个子状态:

  • Repeat Message State:重复发送报文阶段(处于周期性发送NM报文阶段);
  • Ready Sleep State:准备休眠阶段;
  • Normal Operation State: 主动请求正常工作阶段(处于周期性发送报文阶段);

切换条件在这里不过多赘述,基本与CanNM一致,只不过UdpNm基于TCP/IP系统,调用的函数接口与配置参数名会有所差异,如需要对外发送以太网NM报文时调用的函数接口为SoAd_IfTransmit,接收以太网NM报文则是通过UdpNm_SoAdIfRxIndication来进行获取。

消息格式

如下图5所示,展示了UDP NM报文的报文格式:

在这里插入图片描述

图5 UdpNm报文格式

其中各关键参数解释如下:

  • Source Node Identifier:默认是Byte 0,通过参数UDPNM_PDU_NID_POSITION来决定,可以选择Byte 0,Byte1;
  • Control Bit Vector(CBV):默认是Byte 1,不过也可通过参数UDPNM_PDU_CBV_POSITION来决定,可以选择Byte0,Byte1;
  • 整个NM报文的长度不应超过底层传输层的MTU(Maximum Transmission Unit);

对于CBV域对于整个网络管理状态机控制也十分关键,因此也有必要再进一步解析下其中每一个bit的具体含义:

在这里插入图片描述

图6 UdpNm报文格式

如下图7所示解释了各CBV域各bit位所代表的具体含义:

在这里插入图片描述

图7 CBV域内各Bit含义说明

用户数据处理

如上图5所示,除去Byte0与Byte1,其他数据都可以作为User data来看待,可以通过函数接口UdpNm_SetUserData来设置NM报文中的User Data,也可以通过UdpNm_GetUserData接口来实现 。

UdpNm局部网络管理功能(PNC)

局部网络管理的目的只有一个,就是降低不必要的通信消耗,节约能源,因此有必要了解基于UdpNm的局部网络管理功能。局部网络管理(Partial Networking Cluster, 简称PNC) 首先针对NM报文的接收与发送进行一个基本说明:

  • 若配置参数UdpNmPnEnabled==FALSE,则UdpNm模块只会进行正常NM报文的接收,不会进行与PNC有关的处理
  • 若配置参数UdpNmPnEnabled==TRUE且NM报文中的PNI bit位为0,则UdpNm模块只会进行正常NM报文的接收,不会进行与PNC有关的处理;
  • 若配置参数UdpNmPnEnabled==TRUE且NM报文中的PNI bit位为1, 则UdpNm模块不仅会进行正常NM报文的接收,同时还会进行与PNC有关的处理;
  • 若配置参数UdpNmPnEnabled==TRUE,则UdpNm模块会在发送的NM报文中PNI bit位置1,对于局部网络管理,CBV是必须的;
  • 若配置参数UdpNmPnEnabled==FALSE, 则UdpNm模块会在发送的NM报文中PNI bit位置0;

PDU过滤算法

NM PDU过滤算法是通过三配置参数UdpNmPnInfoOffset ,UdpNmPnInfoLength,UdpNmPnFilterMaskByte来共同决定是否存在PNC请求以及什么类型的PNC请求。

若UdpNmPnInfoOffset == 3 且 UdpNmPnInfoLength == 2,则意味着仅有Byte3 与Byte4包含PNC信息,每个Bit就代表一个PNC网络,如果对应的Bit为1,则意味着对应的PNC网络被请求,如果对应的bit为0,则代表不存在对应的PNC网络被请求。

通过参数UdpNmPnFilterMaskByte便可以决定Byte3与Byte4中哪些PNC中的bit位与本ECU有关,MaskByte中bit位对应为1代表本ECU与这个PNC有关,否则便无关,进而决定我是否需要做相应的PNC网络处理。

EIRA机制逻辑

对于需要根据内部或者外部PNC请求来实现IPDU Group切换的ECU而言,那么就需要用EIRA特性,该特性能够根据接收到的PNC请求在ComM模块实现IPDU Group的切换。

EIRA全称为内部或者外部请求集合,用于收集ECU内外部PN请求。

如果参数UdpNmPnEiraCalcEnabled == TRUE, 无论是来自内部或者外部的PN请求,对应接收或者发送总线的PNC bit位将会置位;

对于EIRA机制逻辑而言,存在多少个EIRA Reset Timer完全取决于存在多少个PNC网络,因为EIRA对应的PDU Group切换对于ECU则是全局操作,与具体的物理通道无关。若只有8个PNC网络,却对应6个物理通道,那么也仅有8个PNC EIRA Reset Timer。

值得注意的事项如下:

  • 是为了避免内部的PNC请求来不及发送至总线造成丢失,因此需要确保UdpNmPnResetTime务必要大于UdpNmMsgCycleTime,同时UdpNmPnResetTime需要小于UdpNmTimeoutTime,防止当NM状态切换至Prepare Bus Sleep阶段PNC Reset Timer失效;

  • 若参数UdpNmPnEiraCalcEnabled == TRUE, 对应的PNC请求变化将会通过UdpNm调用函数接口PduR_UdpNmRxIndication将EIRA信息传输至COM模块,COM则会同步传递至ComM模块,最终完成IPDU Group的切换;

  • 若UdpNmPnEiraCalcEnabled == TRUE 且UdpNmPnEraCalcEnabled == TRUE, 对应的PNC信息将会各自进行存储。

ERA机制逻辑

ERA相比EIRA而言,少了内部请求,因为该机制主要用于外部PNC请求,即用于外部PNC请求的收集与其他通道的PNC的转发,主要面向网关节点。

若存在子网关,则特别需要注意接收到的PNC Gateway请求不能直接映射发送回去,否则就会造成主网关与子网关都无法休眠。为解决这个问题,AUTOSAR引入了Active PNC Gateway与Passive PNC Gateway概念,对于Passive PNC Gateway而言就不会将接收到的对应PNC Gateway请求直接映射发送出去。

若参数UdpNmPnEraCalcEnabled == TRUE, 且接收到的NM报文中PNC bit位置位时,将会进行后续的PNC网络处理,如转发至其他物理通道,因此每个通道需要管理所有PNC网络的状态。

对于存在8个PNC网络,且对应6个物理通道而言,ERA Reset Timer则会有48个,因为对于子网关而言,接收到的PNC网络请求不能被映射发送回去,所以有必要监控每个PNC请求的物理通道来源。

其他的值得注意的事项与EIRA机制保持一致。

UdpNm接收与发送时序关系

UdpNm模块发送NM或者接收NM时需按照一定的时序关系来进行,如下图8与图9清晰的描述了UdpNm模块发送与接收NM报文的时序关系。

发送时序

从下图8可以看出,每次Message Cycle Timer超时之后便会触发依次UdpNm的一次NM报文发送,发送接口通过调用SoAd_IfTransmit来实现,同时也会重置Message Cycle Timer计数器与UDPNM_MSG_TIMEOUT_Timer计数器

当确认UdpNm成功外发之后,SoAd模块便会通过回调函数接口UdpNm_SoAdIfTxConfirmation来通知UdpNm模块,此时UdpNm模块便会重置UDPNM_MSG_TIMEOUT_Timer计数器
在这里插入图片描述

图8 UdpNm NM报文发送时序

接收时序

如下图9所示,当接收到来自外部的NM报文时,SoAd模块通过回调函数UdpNm_SoAdIfRxIndication来实现NM报文的接收,同时也会重置UDPNM_MSG_TIMEOUT_Timer计数器
在这里插入图片描述

图9 UdpNm NM报文接收时序

UdpNm配置参数说明

如下图10所示,小T将较为重要的配置参数总结如下,以供大家参考:

在这里插入图片描述

图10 UdpNm 配置参数说明

常用函数接口说明

为了便于大家在软件开发过程中的调试,小T将UdpNm模块较为重要的一些函数列举如下,供大家参考,如下图11所示:

在这里插入图片描述

图11 UdpNm模块常用函数接口

更多精彩内容,敬请关注公号“ADAS与ECU之吾见”!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/626700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TLE4250-2G-ASEMI代理英飞凌汽车芯片TLE4250-2G

编辑:ll TLE4250-2G-ASEMI代理英飞凌汽车芯片TLE4250-2G 型号:TLE4250-2G 品牌:Infineon(英飞凌) 封装:SCT-595-5 特性:驱动芯片、汽车芯片 温度范围-40C~150C 最大输入电压:-42 V~45 V TLE4250-2G…

跨境电商app系统开发

近年来,随着跨境电商行业的发展,越来越多的企业开始关注跨境电商app系统的开发。这些系统可以帮助企业更加高效地管理跨境电商业务,提高产品销售的效率,并且为消费者提供更加方便快捷的购物体验。 跨境电商app系统的开发需要考虑…

品牌618如何宣传,才能为业绩加油助力?

传媒如春雨,润物细无声,大家好,我是51媒体 胡老师。 随着618年中消费季的临近,许多企业和品牌都已经卯足了马力,争取在年终狂欢中多多增加公司业绩,现在的618 不仅仅涉及我们的吃穿用行,而且各…

计算机网络开荒2.2-Socket编程

文章目录 一、Socket概述二、Socket API 概述三、WinSock常用API3.1 常用API3.1.1 WSAStartUP3.1.2 WSACleanup3.1.3 Socket3.1.4 Closesocket3.1.5 bind3.1.6 listen3.1.7 connect3.1.8 accept3.1.9 send, sendto3.1.10 recv, recvfrom3.1.11 etsockopt, getsockopt 3.2 网络字…

H3C 交换机的VXLAN二层转发配置

H3C 交换机的VXLAN二层转发配置 本篇介绍H3C交换机的VXLAN二层转发配置。 基本概念: 首先了解VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)的基本概念。VXLAN是基于IP网络、采用“MAC in UDP”封装形式的二层VPN技术。VXLAN可以基于…

Vue.js 中的 v-bind 指令详解

Vue.js 中的 v-bind 指令 介绍 Vue.js中的v-bind指令是一种将组件的属性绑定到Vue实例的数据的方式。v-bind指令可以用于将任何组件属性绑定到Vue实例的数据上,例如class、style、属性等。v-bind指令允许我们动态地设置组件的属性,从而使组件更加灵活和…

案例精述丨Fortinet SASE 护航跨国公司中国区网络安全升级

在全球数字化转型大潮下,跨国公司的机构、设施、人员等全球分布式特性,不但带来了广域网建设的网络复杂性,也带来了更加严峻的安全挑战。某全球知名跨国公司,在中国区进行网络安全升级改造的过程中,采用国内某IDC运营商…

阿里巴巴序列模型梳理

SIM:基于搜索的用户终身行为序列建模 论文:《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》 下载地址:https://arxiv.org/abs/2006.05639 1、用户行为序列建模回顾 1…

JDK8-1-Lambda表达式(3)-函数式接口

JDK8-1-Lambda表达式(3)-函数式接口 有且仅有一个抽象方法的接口称为函数式接口,上文 中 java.util.function.Predicate 接口就是一个函数式接口,Java 8中引入的函数式接口定义在 java.util.function 包下 java.util.function.P…

【PWN · ret2text 格式化字符串漏洞 | NX | Canary | PIE】[深育杯 2021]find_flag

这一题最终的攻击手段可以是简单的ret2text(后门函数给出),然而保护全开则确实让人汗颜。。。 更重要的是!docker的程序偏移和本地不一样!!NSSCTF题目有问题!! 目录 前言 一、题目…

openEuler22+GreatSQL+dbops玩转MGR

芬达,《芬达的数据库学习笔记》公众号作者,开源爱好者,擅长 MySQL、ansible。 背景 openEuler 是什么 openEuler22.03 LTS 是 openEuler 社区于 2022 年 3 月发布的开源操作系统(从系统版本的命名不难发现吧)。openE…

apktool for mac

安装步骤 1、Apktool下载 安装apktool Apktool下载 macOS: Download Mac wrapper script (Right click, Save Link As apktool)Download apktool-2 (find newest here)Rename downloaded jar to apktool.jarMove both files (apktool.jar & apktool) to /usr/local/bin …

sqoop系列:sqoop(离线数据同步)开发案例

目录 Apache Hadoop生态-目录汇总-持续更新 1:Mysql(RDBMS)与Hive/HDFS数据传输 1.1:列出MySQL数据有哪些数据库: 1.2:根据mysql表结构创建hive表 1.3: RDBMS导入到hdfs (1)条件导入 (2&…

cisp证书含金量如何网络安全渗透测试工程师主要工作是什么?前景如何?

sp,国家注册信息安全专业工作员,由中国信息安全测评中心认证,作为我国目前网络安全认证之一!cisp属于国家测评中心授予,目前遭到企业认可。 CISP在大部分网络安全行业变成了应聘求职的必考的证书。在信息安全行业&…

CentOS 7安装 Postgres

零、前置条件 系统CentOS 7,并已联网,已安装gcc或者g编译器,GNU make版本3.80或以上,系统有至少一个除root之外的普通用户user gcc安装-参考链接查看make命令的版本——make --version更新make版本-参考链接postgresql的使用一般…

年薪百万的高性能计算工程师很难学吗?听OpenBLAS创始人怎么说 ..

想要成为一名高性能计算工程师,入门并掌握相关基础并不困难。 关键在于兴趣和自驱力,因为这是一个偏向底层开发的领域,需要扎实的C和C编程基础。 另外,数学能力也很重要,因为算法开发涉及一些基础的数学知识。对于大部…

【支付平台】java springboot 通过ip获取所在地城市信息

如果只是想知道如何通过ip获取所在地城市信息,可直接看第三步. 如果搭建自己的支付平台,异地支付限制是必不可少的一环.因为市面上一些非法份子,会使用我们平台生成的付款码进行欺诈行为.这也是我们必须杜绝的一种现象.因此限制异地支付就是其中一种手段. 在上一篇文章【三方支…

Golang context 实现原理与源码解读

0 context入门介绍 context是Golang应用开发常用的并发控制技术,主要在异步场景中用于实现并发协调以及对 goroutine 的生命周期控制,它与WaitGroup最大的不同点是context对于派生goroutine有更强的控制力,它可以控制多级的goroutine。 con…

【Android】WMS(一)Window的类型和标志

Window、WindowManager、WMS区别 Window: Window 是 Android 中的一个视图容器,代表整个屏幕或 Activity 的一部分。每个 Window 都有自己的 Surface 对象,Surface 对象具有绘制和渲染功能,可以显示 View 和其他元素。在 Android…

Vue 的基础知识 - 判断, 循环, 事件, 通信

目录 1. 了解 Vue 七大常用属性 2. 文本插值 2.1 v-bind 绑定元素 3. 判断 4. 循环 5. 事件 6. 双向绑定 7. 自定义组件 8. Axios 异步通信 8.1 什么是Axios 8.2 为什么要使用 Axios 8.3 Axios 的简单应用 8.4 Vue 的生命周期 1. 了解 Vue 七大常用属性 1. el 属性…