tag 标签: 网络协议

相关帖子
相关博文
  • 热度 1
    2024-9-6 09:49
    321 次阅读|
    0 个评论
    IPv6协议——互联网通信协议
    引言 IPv6是互联网升级演进的必然趋势、网络技术创新的重要方向、网络强国建设的基础支撑。近些年,随着我国大力推动IPv6规模部署和应用,目前中国的IPv6渗透率已超过70%。 对于车载以太网来说,目前IPv4是车载IP通信的主流协议,但随着车辆的智能化、网联化程度不断提高,IPv6协议应用在车载以太网是一种未来趋势。 那IPv6是什么呢,它包含哪些内容呢,带着这些疑问本文将带领读者认识IPv6。对于引言提到的IPv4协议,有想了解的读者可以阅读上一篇文章《IPv4协议——互联网通信协议第四版》。 为什么需要IPv6协议 IPv6协议(Internet Protocol version 6)——互联网通信协议第六版,是互联网工程任务组( IETF )设计的用于替代 IPv4 的下一代IP协议。IPv6的出现和普及可以有效地解决IPv4地址枯竭问题。 为什么没有IPv5 IPv5曾被提出并设计用于多媒体传输,‌但由于其地址限制、‌缺乏广泛标准化和支持以及实际应用中存在的问题,‌IPv5并没有成为广泛应用的互联网协议。‌相反,‌IPv6作为更先进的协议,‌成功地满足了未来互联网的需求,‌成为了下一代互联网协议的标准。 IPv6地址表示方法 IPv6地址长度为128位,每16位地址为一组,通常分为8组,每组十六进制数间用冒号分隔,例如:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789。 RFC2373标准中规定了IPv6的规范文本表示形式: 1. 每组中的前导“0”都可以省略,2001:0DB8:0000:0023:0008:0800:200C:417A可写为2001:DB8:0:23:8:800:200C:417A。 2. 地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替,FF01:0:0:0:0:0:0:1101可写为FF01::1101。 3. 在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每个“::”代表0的个数。 IPv6地址类型 IPv6协议主要定义了三种地址类型:单播地址、组播地址和任播地址。与IPv4地址类型比较,IPv6新增了任播地址,取消了IPv4的广播地址。但在IPv6协议中,广播功能是通过组播来完成的。 单播地址 用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据 报文 将被传送给此地址所标识的一个接口。 目前常用的单播地址有:未指定地址、环回地址、链路本地地址、唯一本地地址、全局单播地址。 1. 未指定地址(0:0:0:0:0:0:0:0/128或::/128):仅用于表示某个地址不存在,等同于IPv4未指定地址0.0.0.0。未指定地址通常被用做尝试验证暂定地址唯一性数据包的源地址,并且永远不会指派给某个接口或被用做目标地址。 2. 环回地址(0:0:0:0:0:0:0:1/128或::1/128):用于标识环回接口,允许节点将数据包发送给自己,等同于IPv4环回地址127.0.0.1。 3. 链路本地地址(FE80::/10):仅用于单个链路(链路层不能跨VLAN),不能在不同子网中路由。 4. 唯一本地地址(FC00::/7、FD00::/8和FC00::/8):唯一本地地址是本地全局的,它应用于本地通信,但不通过Internet路由,将其范围限制为组织的边界。 5. 全局单播地址:等同于IPv4中的公网地址,可以在IPv6 Internet上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量。 组播地址 用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。 IPv6组播地址的最高的8位固定为1111 1111,如FF00::/8。 任播地址 用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的 路由协议 进行定义)的一个接口。 一个任播地址必须不能用作IPv6数据包的源地址,也不能分配给IPv6主机,仅可以分配给IPv6路由器。 IPv6报头格式 IPv6报文分为IPv6报头(长度固定为40字节)、扩展报头和数据部分。其中,扩展报头是可选报头,可能存在0个、1个或多个。 IPv6报头结构如下图所示: -版本号(Version) 4bits,表示当前IP协议版本号,此处协议版本号为IPv6(6)。 -流量等级(Traffic Class) 8bits,用于识别和区分IPv6报文的不同类别或优先级。 -流标签(Flow Label) 20bits,用来标识同一个流里面的报文,对于不支持Flow Label字段功能的主机或路由器,需要在发起报文时将该字段设置为零,在转发报文时不修改该字段,在接收报文时忽略该字段。 -载荷长度(Payload Length) 16bits,IPv6有效载荷长度,包含扩展报头和数据部分的长度。 -下一报头(Next Header) 8bits,标识紧跟在IPv6报头后的报头类型。 -跳数限制(Hop Limit) 8bits,该字段类似于IPv4中的 TTL ,每次转发跳数减一,该字段达到0时包将会被丢弃。 -源地址(Source Address) 128bits,标识该IPv6报文的源地址。 -目标地址(Destination Address) 128bits,标识该IPv6报文的目标地址。 IPv6扩展报头 IPv6报文中不再有“选项”字段,而是通过“下一报头”字段配合IPv6扩展报头来实现选项的功能。使用扩展头时,将在IPv6报文下一报头字段表明首个扩展报头的类型,再根据该类型对扩展报头进行读取与处理。每个扩展报头同样包含下一报头字段,若接下来有其他扩展报头,即在该字段中继续标明接下来的扩展报头的类型,从而达到添加连续多个扩展报头的目的。在最后一个扩展报头的下一报头字段中,则标明该报文上层协议的类型,用以读取上层协议数据。 IPv6扩展头使用示例 使用协议 地址配置协议 IPv6使用两种地址自动配置协议,分别为无状态地址自动配置协议( SLAAC )和IPv6动态主机配置协议( DHCPv6 )。SLAAC不需要服务器对地址进行管理,主机直接根据网络中的路由器通告信息与本机 MAC地址 结合计算出本机IPv6地址,实现地址自动配置;DHCPv6由DHCPv6服务器管理 地址池 ,用户主机从服务器请求并获取IPv6地址及其他信息,达到地址自动配置的目的。 1. 无状态地址自动配置 无状态地址自动配置的核心是不需要额外的服务器管理地址状态,主机可自行计算地址进行地址自动配置,包括4个基本步骤: (1)链路本地地址配置。主机计算本地地址。 (2)重复地址检测,确定当前地址唯一。 (3)全局前缀获取,主机计算全局地址。 (4)前缀重新编址,主机改变全局地址。 2. IPv6动态主机配置协议 IPv6动态主机配置协议DHCPv6是由IPv4场景下的 DHCP 发展而来。客户端通过向DHCP服务器发出申请来获取本机IP地址并进行自动配置,DHCP服务器负责管理并维护地址池以及地址与客户端的映射信息。 DHCPv6在DHCP的基础上,进行了一定的改进与扩充。其中包含3种角色:DHCPv6客户端,用于动态获取IPv6地址、IPv6前缀或其他网络配置参数;DHCPv6服务器,负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他配置参数;DHCPv6中继,它是一个转发设备。 路由协议 与IPv4相同,IPv6路由协议同样分成 内部网关协议 (IGP)与 外部网关协议 (EGP),其中IGP包括由RIP变化而来的RIPng,由OSPF变化而来的OSPFv3,以及IS-IS协议变化而来的IS-ISv6。EGP则主要是由BGP变化而来的BGP4+。本文不对IPv6的路由协议作更进一步展开说明,如果各位对文章中提到的IPv6路由协议内容感兴趣的,可以去网上搜索相关知识点学习拓展。 优势特点 与IPv4相比,IPv6具有以下几个优势: IPv6具有更大的地址空间。IPv4中规定 IP地址 长度为32,最大地址个数为232;而IPv6中IP地址的长度为128,即最大地址个数为2128。与32位地址空间相比,其地址空间增加了2128-232个。 IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类的原则,这使得路由器能在路由表中用一条记录表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。 IPv6增加了增强的组播支持以及对流的控制,这使得网络上的多媒体应用有了长足发展的机会,为服务质量QoS(Quality of Service)控制提供了良好的网络平台。 IPv6加入了对自动配置的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。 IPv6具有更高的安全性。在使用IPv6网络中,用户可以对网络层的数据进行加密并对IP报文进行校验,在IPv6中的加密与鉴别选项提供了分组的保密性与完整性。极大地增强了网络的安全性。 允许扩充。如果新的技术或应用需要时,IPv6允许协议进行扩充。 更好的头部格式。IPv6使用新的头部格式,其选项与基本头部分开,如果需要,可将选项插入到基本头部与上层数据之间。这就简化和加速了路由选择过程,因为大多数的选项不需要由路由选择。 IPv6的发展与前景 “第三届中国IPv6创新发展大会”指出,当前全球互联网正处在从IPv4向IPv6过渡的关键时期,作为新一代互联网协议,IPv6具有更加广阔的网络地址空间和更高的安全性,为物联网、大数据、云计算等新兴技术发展提供坚实的支撑,是全球公认的下一代互联网商业应用的解决方案。加快推进IPv6的部署和应用,对于打造竞争新优势,加快形成新质生产力,推动网络强国和数字中国建设具有重要意义。当前我国IPv6用户渗透率已超过70%,近年来推动IPv6+已显现其潜力。 总结 IPv6作为替代IPv4的下一代协议,虽然目前还未全面普及,但随着技术的发展和用户需求的增长,全面普及是不可避免的趋势。所以提前认识和了解IPv6能够帮助我们从容应对未来IPv6所带来的挑战。 北汇信息是一家专注于汽车电子测试领域的企业,对车载以太网测试有着丰富经验,并可提供相关培训、咨询服务以及测试解决方案,帮助汽车制造商和零部件供应商确保其车载以太网系统的可靠性和安全性。如果需要具体的测试服务或了解更多信息,欢迎大家来联系我们。 参考文献: 【1】《RFC 2460》 【2】《RFC 2373》
  • 热度 3
    2024-8-6 10:12
    236 次阅读|
    0 个评论
    ICMPv4协议—互联网控制报文协议
    引言 在车载以太网测试中,因为IP协议本身提供的是不可靠传输,所以如果网络出现丢包、网络错误等问题就需要及时向管理者报告错误和状态信息,此时就需要借助ICMP协议来实现这一功能。 什么是ICMPv4协议 ICMP协议全称是Internet Control Message Protocol,即互联网控制报文协议。其中,ICMPv4和ICMPv6分别指用于IPv4和IPv6的ICMP版本。目前在车载以太网里常用到的IP协议是IPv4,所以本文着重介绍ICMPv4,ICMPv6不涉及。 ICMPv4协议是TCP/IP协议簇的一个子协议,封装在IPv4报文中,主要用于在IPv4主机、路由器之间传递控制消息,用于报告网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递起着重要的作用。 ICMPv4报文格式 ICMPv4报文封装在IPv4数据报里,所以一个ICMPv4报文会包括IPv4头部、ICMPv4头部和ICMPv4 Payload。当IPv4头部的Protocol值为1时,表示为一个ICMPv4报文。 ICMPv4报头格式如下图: ICMP报头格式 类型(Type):ICMPv4报文的类型,如目标不可达报文(Type=3)。 代码(Code):ICMPv4报文类型(Type)下细化的子类型,如对于目标不可达报文(Type=3),code=1表示主机不可达,code=2表示协议不可达。 校验和(Checksum):ICMPv4报文的校验和,校验方法与IP数据报首部校验和算法相同。 报文分类 ICMPv4分为两类报文,1类是查询报文(通过对对端主机发送请求和接收对端主机发送响应的方式去传输消息,可以用来报告网络连通性等消息),1类是差错报文(报告IP数据报在传输过程中出现的错误)。 常见的ICMPv4报文类型如下: 响应请求 平时使用较多的Ping命令就是通过对端主机发送回显请求(Type=8)和接收对端主机发送的回显回答(Type=0)去判断主机之间是否通信连通。 实际测试数据如下: 目标不可达 当路由器无法根据路由表转发IP数据报到指定的目标地址时,会向发送端主机返回一个目标不可达的差错报文,并报告不可达的原因。常见的目标不可达差错报文类型有网络不可达(Code=0)、主机不可达(Code=1)、协议不可达(Code=2)、端口不可达(Code=3)等。 实际测试数据如下: 时间戳 时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。 实际测试数据如下: 参数错误报文 一旦路由器或主机发现错误的数据报首部和错误的数据报选项参数时,便丢弃该数据报,并向源主机发送参数问题(Parameter Problem)报文(Type=12)。代码Code=0表示数据报首部中的某个字段的值有错或不明确,这时ICMP报文首部的指针指向数据报中有问题的字节。 实际测试数据如下: 下表是完整的ICMP报文分类: 表1 ICMP类型 应用 ICMPv4最常见的用法是对网络进行测试和故障诊断,常用的程序是Ping 和tracert。 Ping 使用ping命令确定本地主机是否能与另一台主机成功交换数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常、网络是否通畅等。 tracert tracert 命令主要用来显示数据包到达目的主机所经过的路径。通过执行一个tracert到对方主机的命令,返回数据包到达目的主机所经历的路径详细信息,并显示每个路径所消耗的时间。 总结 ICMP协议是TCP/IP协议簇中不可或缺的一部分。通过理解和应用ICMP协议,可以更好地帮助管理员去收集各种网络信息、诊断和排除各种网络故障。 北汇信息是一家专注于汽车电子测试领域的企业,对车载以太网测试有着丰富经验,并可提供相关培训、咨询服务以及测试解决方案,帮助汽车制造商和零部件供应商确保其车载以太网系统的可靠性和安全性。如果需要具体的测试服务或了解更多信息,欢迎大家来联系我们。 参考文献: 【1】《RFC 792》
  • 热度 5
    2024-6-6 10:52
    406 次阅读|
    0 个评论
    Wi-Fi 7 是最新的Wi-Fi 网络协议,这项技术不只实现更高的输送速度和更低的延迟,且符合更多元的应用场景,如扩增实境(AR)、虚拟现实(VR)、游戏与云端计算等,它更在前身 Wi-Fi 6和Wi-Fi 6E 的基础上扩展,显著提高回应能力和可靠性。 主要新的功能包含320 MHz 信道、4K QAM、MLO (Multi-link Operation)、Multi-RU (Resource Units) 与Puncturing。 Wi-Fi 7市场上支持设备与兼容性仍不够 由于2023年Q4才刚有Wi-Fi 7芯片上市,因此目前市面上支持Wi-Fi 7的无线网络设备并不多,多以无线网卡、手机、无线路由器等产品为主。我们 透过 国外地区买到一些支持Wi-Fi 7的设备,包含Intel BE200NGW无线网卡、ASUS ROG Phone 7手机、Google Pixel 8 Pro手机、TP-Link Deco BE85 AP、TP-link BE19000 AP、ASUS RT-BE96U AP与NETGEAR Orbi 970 AP。 再透过这些设备实际联机,发现ASUS ROG Phone 7仅能以802.11 ax (Wi-Fi 6)模式联机到无线路由器,而无法以Wi-Fi 7的规格联机,在Google Pixel 8 Pro联机表现上,则是很顺利的连上并无出现问题。目前市售产品虽然硬件规格有支持最新标准,但在软件的部分可能还未完全支持,将来需要透过更新才有办法支持到Wi-Fi 7,或是与其他产品出现芯片兼容性问题都有可能造成无法联机的状况。 初窥Wi-Fi 7效能:实测Wi-Fi 7路由器、手机与电竞笔电 接下来我们就TP-link BE19000三频Wi-Fi 7路由器分别与Google Pixel 8 Pro手机和Lenovo Legion系列电竞笔电来实测Wi-Fi 7跑出来的速度有多少。为了确保无其他无线讯号干扰而影响其传输效能,因此我们选在无线屏蔽室里面来进行,测试项目包含所支持的2.4GHz/5GHz/6GHz 各个频段与不同带宽下的上传与下载的数据。 实测数据 首先,百佳泰带您来看设备在2.4GHz频段的表现,手机因为40MHz带宽没支持Wi-Fi 7,所以没有对应的测试数据,实际上传与下载速度与Wi-Fi 6差异不大,不过在Lenovo系统上可以达到500Mbps的数值则是十分优秀。 再来我们带您了解5GHz频段上的表现,当在80MHz带宽时,两项设备都可以达到1000M的速度,而在160MHz带宽时则是可以达到2G的速度,Notebook的效能会比手机稍微好一点是正常的,如果要下载一部高画质的影片几乎在一分钟之内即可完成,速度可说是飞快。 另一个亮点是在于6GHz频段的320MHz带宽表现,Google手机目前未支持Wi-Fi 7所以无法测量,不过Lenovo Notebook在上传与下载速度方面都超过3G的速度,此表现已经是远远超过Wi-Fi 6的速度。 目前我们先针对这些数据跟大家分享,未来也会持续针对其他Wi-Fi 7的产品来实际测试数据,并与大家分享。
  • 热度 6
    2023-11-8 11:08
    666 次阅读|
    0 个评论
    SAE J1939协议解读
    前言 在乘用车领域 比较熟知的是 CAN(FD)、LIN、FlexRay、Ethernet 等 通信协议 ,但对于J1939往往所知甚少。其实在CAN总线协议诞生之初,J1939协议便随之诞生,并且始终在商用车、工程机械等领域发挥着重要作用。而在乘用车领域,随着新能源汽车的发展,为了 保证电动汽车与充电基础设施互联互通 ,我国在2015年发布了GB/T 27930-《电动汽车非车载传导式充电机与电池管理系统之间的通信协议》,其使用的也正是J1939协议。因此,本期将对J1939协议做个基础介绍,方便大家快速了解J1939协议包含的内容。 什么是J1939 J1939是由美国汽车工程师 学会( Society of Automotive Engineers , 简称 SAE )开发的一系列标准,其目的是 使不同制造商的车辆和设备能够在同一个网络上进行通信,实 现数据交换和协作。J1939是基于 CAN 总 线技术 的 ,主要的通信速率是250Kbps或500Kbps,通常采用广播通信的方式,同时也支持点对点通信。 J1939诞生的背景 在20世纪后半叶,随着商用车辆、重型机械设备等对多功能化和电子化的需求急剧增加,其内部不同子系统之间需要进行高效的通信和协作来实现更先进的控制和监控功能。同时,为了在不同制造商和设备之间实现互操作性来确保不同系统之间的通信能够无缝进行,制定一套标准化的通信协议变得尤为重要。而此时CAN总线技术的出现为实时、可靠且高速的通信提供了可能。在此背景下,一直倡导在汽车和机械领域制定标准的美国汽车工程师学会(SAE)组织开发了J1939协议的一系列标准规范,该工作于1994年左右开始,并在1998年正式发布了J1939协议,成为了商用车辆和重型机械设备领域中通信和控制的主要标准之一。 J1939分层结构 J1939采用分层通信结构,主要包括物理层、数据链路层、网络层和应用层,其中CAN提供了基本的“物理层”和“数据链路层”。 这种分层结构有助于管理复杂的通信系统,使不同层次的功能分开, 同时 有助于确 保J1939协 议在不同的商用车辆和重型机械设备应用中具有灵活性和可扩展性。 图1. J1939分层结构 J1939的标准文档构成 J1939协议的标准文档构成通常包括一系列文件,这些文件共同定义了协议的规范、特性和实施细节。 1) SAE J1939: Serial Control and Communications Heavy Duty Vehicle Network。通常被称为J1939协议的顶级文档,主要包括了关于J1939协议的概述、基本原则和总体架构,以及对其他相关J1939标准和文档的引用 ,当前最新版本于2023年发布。 2) SAE J1939-01 : On-Highway Equipment Control and Communication Network。 定义了公路设备实现控制和通信网络所需J1939协议文件的最小子集 ,当前最新版本于2021年发布。 3) SAE J1939-02: Agricultural and Forestry Off-Road Machinery Control and Communication Network。定义了农林非道路机械实现控制和通信网络所需J1939协议文件的最小子集,当前最新版本于2019年发布。 4) SAE J1939-03: On-Board Diagnostics Implementation Guide。介绍了J1939协议中诊断功能的基本概念,提供了关于如何实施诊断功能的指导,当前最新版本于2021年发布。 5) SAE J1939-05: Marine Stern Drive and Inboard Spark-Ignition Engine On-Board Diagnostics Implementation Guide。提供了关于如何在船舶引擎和尾驱系统上实施诊断功能的指导,当前最新版本于2012年发布。 6) SAE J1939-11: Physical Layer, 250 Kbps, Twisted Shielded Pair。主要关注针对250 Kbps通信速率和使用屏蔽双绞线情况下的物理层规范,当前最新版本于2016年发布。 7) SAE J1939-13: Off-Board Diagnostic Connector。主要定义离线诊断设备连接器的要求,当前最新版本于2016年发布。 8) SAE J1939-14: Physical Layer, 500 kbit/s。主要定义500Kbps通信速率下的物理层规范,当前最新版本于2022年发布。 9) SAE J1939-15: Physical Layer, 250 Kbps, Un-Shielded Twisted Pair (UTP) 。 主要关注针对250 Kbps通信速率和使用非屏蔽双绞线情况下的物理层规范, 当前最新版本于2018年发布。 10) SAE J1939-21: Data Link Layer。 主要关注数据链路层规范 ,当前最新版本于2022年发布。 11) SAE J1939-22: CANFD Data Link Layer。主要关注基于CANFD的数据链路层规范,当前最新版本于2022年发布。 12) SAE J1939-31: Network Layer。主要关注网络层规范,当前最新版本于2023年发布。 SAE J1939-71: Vehicle Application Layer。主要关注应用层规范,当前最新版本于2022年发布。 13) SAE J1939-73: Application Layer - Diagnostics。主要关注应用层诊断规范,当前最新版本于2022年发布。 14) SAE J1939-74: Application - Configurable Messaging。主要定义应用层的可配置消息规范,当 前最新版本于2021年发布。 15) SAE J1939-75: Application Layer - Generator Sets and Industrial。主要关注J1939协议发电机组和工业领域的应用,当前最新版本于2021年发布。 16) SAE J1939-81: Network Management 。主要关注网络管理规范,当前最新版本于2017年发布。 17) SAE J1939-82: Compliance - Truck and Bus。主要关注卡车和公共汽车领域的合规性要求,当前最新版本于2015年发布。 18) SAE J1939-84: OBD Communications Compliance Test Cases for Heavy Duty Components and Vehicles。主要关注OBD通信的合规性测试,当前最新版本于2017年发布。 SAE J1939主要协议解读 SAE J1939物理层 J1939物理层的协议主要有J1939-11,J1939-13,J1939-14,J1939-15等。 以J1939-11为例,主要包含以下内容: 1) 通信速率:规定了通信速率为250Kbps。 2) 连接器:包括类型、引脚分配和电气特性等内容。 3) 传输线路:描述了适用于250Kbps通信速率的电缆和传输线路特性,如采用屏蔽双绞线,总线阻抗为120Ω。 4) 总线拓扑:最大线缆长度为40m,最大支线长度为1m,最大节点数量为30个。 5) 一致性测试:规范中定义的参数(如总线电平)应如何测试验证。 6) 故障:定义了不同故障情况下的通信行为。 SAE J1939 数据链路层 J1939数据链路层 的协议主要有 J1939-21,J1939-22等。 其中J1939-21主要是针对CAN数据链路层,J1939-22则主要是针对CANFD数据链路层。以J1939-21为例,其基于CAN2.0B规范定义了J1939报文的报文格式、报文类型和传输协议等,在物理层之上提供了可靠的数据传输功能,实现应用层报文的数据交换,接下来将针对J1939-21中的定义展开介绍。 3.2.1 报文格式 1) 协议数据单元(Protocol Data Unit, PDU) J1939报文使用的基于CAN2.0B的拓展帧格式定义了一个完整的标准化通讯策略,通过PDU定义了一个框架,用来组织数据帧中J1939协议相关的信息。PDU由数据帧中的ID和数据场组成,数据帧和PDU的对应关系如下图所示。 P(Priority),优先级字段,用于在仲裁过程中控制报文优先级。 EDP(Extended Data Page),为扩展数据页位,在J1939中固定取值为0。 P(Data Page),数据页位,可用来扩展参数组的数量。 PF(PDU Format),为PDU格式字段,通过不同的取值来确定参数组编号(Parameter Group Number, PGN)是按照PDU1格式还是PDU2格式。 PS(PDU Specific),特定协议数据单元字段,当PF的值为0-239时PS表示目标地址(PDU1格式),当PF的值为240-255时PS字段表示组扩展(PDU2格式),且报文只能广播。 SA(Source Address),源地址字段,整个网络中SA的值必须是唯一的。 Data Field,数据场,对于Classic CAN来说是8个字节,而CANFD则最多有64个字节数据。如果需要传输更多的数据,则需要借助J1939的传输协议。 图2. CAN2.0B帧格式与J1939PDU的对应关系 2) 参数组编号(PGN) 参数组是应用层中定义的与某个ECU相关的具有相同控制功能的若干个参数的组合,而PGN是用于唯一标识参数组的号码,在应用层中定义。PGN由三个字节组成,从最高位开始的前6个比特默认值为0,然后是EDP位和DP位,接下来两个字节分别是PF和PS。 图3. PDU与PGN的对应关系 3) 可疑参数编号 (Suspect Parameter Number, SPN) 某个特定PDU对应的PGN是由一系列参数组成的,而SPN则是指明该PGN数据场中各个字节对应的是哪些具体的参数。下图为PGN 65262这个参数组的示例,包含发动机冷却液温度、燃油温度、发动机机油温度等参数,不同的参数由不同的SPN区分。 图4. PGN与SPN的对应关系示例 3.2.2 报文类型 SAE J1939 目前支持五种报文 类型。 1) 命令 从某个源地址向特定目标地址或全局目标地址发送命令类型的参数组。目标地址接收到命令类型的报文后,应根据接收到的报文采取具体的动作。PDU1 格式(PS为目标地址)和PDU2 格式(PS为组扩展)都能用作命令。命令类型的消息可能包括传动控制、地址请求、扭矩/速度控制等等。 2) 请求 请求类型的报文提供了从全局范围或从特定目标地址 获取 信息的能力 。 请求 PGN能定向到特定目标地址的ECU来检查是否支持特定参数组(即被请求的目标地址能否传送特定PGN)。对请求的响应取决于该PGN是否被支持 , 若是被支持,响应设备会发送被请求的信息 , 若该PGN不被支持,响应的设备会发送确认PGN来作为否定消息。 3) 广播/响应 设备主动提供的报文 通常通过广播报文发出来, 如发动机周期性发往全局地址的水温、油温、油压参数组报文 。而收到命令或请求后则是通过响应报文进行回复,如变速器接收到发动机控制命令后返回响应。 4) 应答 对于特定命令、请求 需要进行 应答 ,包含肯定应答、否定应答、拒绝访问和无法应答。需要注意 应答报文必须被发送到全局地址。 5) 组功能报文 组功能报文是完成某项任务(如专用功能、网络管理、多包传输功能)的若干子功能的集合,通过请求对应组功能的PGN可以探查是否支持该组功能。 3.2.3 传输协议 当被传输的数据大于8字节(对于CANFD则是大于64字节),需要使用传输协议对参数组进行 拆包与重组 和连接管理,实现多包传输。 1) 拆包与重组 当需要传输的数据域无法用一个单独的CAN数据帧完全装载时(数据长度大于8个字节) , 例如一个PDU的数据域包含18个字节,就需要将数据域拆分 。 在拆包和重组过程中,使用数据场的第一个字节作为序列号为拆包进行排序,接收方则根据这个序列号对接收到的多个包进行排序重组。 第一个J1939报文的数据场包含序列号1和数据域的 前1- 7个字节,第二个J1939报文的数据场包含序列号2和数据域的其后的 8-14 个字节,最后一个J1939报文的数据场就包含序列号3和数据域最后的四个字节,数据场剩下未使用的字节全部 填充 为0xFF 。 2) 连接管理 连接管理指的是传输单个较大参数组的双方之间建立虚拟连接过程中涉及的建立连接、使用连接传输数据和关闭连接三个过程。连接管理使用的是PGN 60416,相关的报文称为Transport ProtocolConnection Management(TP.CM),包含Connection Mode Request to Send(TP.CM_RTS), Connection Mode Clear to Send(TP.CM_CTS), End of Message Acknowledgment(TP.CM_EndOfMsgACK), Connection Abort(TP.Conn_Abort), Data Transfer Message (TP.DT), Broadcast Announce Message(TP.CM_BAM)。点对点通信的连接管理过程如下所示: -1-建立连接 当某个发送节点需要传输超过8个字节的数据时,首先发送TP.CM_RTS报文,并且携带了需要传输数据的总长度。接收节点收到TP.CM_RTS之后,可以通过发送 TP.CM_CTS 报文表示可以发送,连接建立成功,其中TP.CM_CTS报文中携带了发送方允许发送报文的数量信息。 -2-数据传输 当发送节点收到TP.CM_CTS报文后开始通过TP.DT报文发送拆包后的数据,根据TP.CM_CTS报文中的数量信息发送特定数量后需等待下一个TP.CM_CTS报文才能继续发送数据包。 -3-关闭连接 当接收节点接收最后一个数据包后,向发送接节点发送TP.CM_EndOfMsgACK报文表示数据接收完毕关闭连接。 图5. 点对点发送的连接管理过程 对于广播发送大数据包时的连接管理则比较简单,不需要建立连接和关闭连接 ,只需要发送方通过TP.CM_BAM报文通知接收方即将会发送大包数据。 图6. 广播数据发送过程 SAE J1939网络层 SAE J1939 网络层的协议主要有J1939-31等,主要描述了J1939不同网段之间进行通信需要的服务和功能。介绍了 四种为 不同网段之间实现 互连提供功能的ECU类型:转发器( 实现 转发 功能 )、网桥( 实现 转发和过滤 功能 )、路由器( 实现 转发、过滤和地址转换 功能 )和网关( 实现 转发、过滤、地址转换和报文重组 功能 )。 SAE J1939 应用层 SAE J1939 应用层的协议主要有J1939-71,J1939-73等。 1) 3.4.1 J1939-71 J1939-71定义了针对车辆应用的信号(即SPN)和报文(即PGN)。下图分别是该规范中发动机燃气流量PGN 61450参数组的定义和发动机进气质量流量SPN 132的定义。 图7. PGN 61450定义 图8.SPN 132定义 2) 3.4.2 J1939-73 J1939-73 定义了诊断报文的类型 ,常用的有: DM1 - Diagnostic Message 1:DM1报文用于报告 当前 故障和相关的 故障信息,它提供了有关车辆或设备上发生的故障的详细信息,包括故障代码、故障位置、严重性等。DM1报文的PGN是65226,该报文是法规强制要求实现的,通常是以广播形式周期性发送。 DM 2 - Diagnostic Message 2 : DM2报文用于报告历史故障和相关的故障信息,其PGN是65227。 DM 3 - Diagnostic Message 3 : DM3报文用于清除记录的诊断故障码,其PGN是65228。 另外在J1939-73中还定义了DTC(Diagnostic Trouble Code)的格式,长度为4个字节,如下表所示。此处SPN主要用于识别诊断信息所关联的对象,FMI定义了SPN的故障模式,OC表示故障发生的次数,CM位目前协议规定其值应为0,其取值为1主要是为了兼容早期版本,此时对应的SPN还需要经过换算才能得到真实的SPN值。 表1. DTC的组成 J1939 网络管理 J1939的网络管理协议主要是J1939-81,需要注意的是此处的网络管理不是用来实现网络休眠唤醒的,而是对节点地址的配置和管理。一般情况下地址都是提前分配好的,因此针对这部分本文不再展开介绍。 总结 J1939协议由各个层级的多个规范组成,本文介绍了当前J1939包含的协议并针对部分常见协议做了介绍。协议的规范以及版本众多给不同节点之间的互操作性带来了挑战,因此针对J1939的测试验证是不可缺少的重要一环。北汇信息专注于汽车电子测试、与众多OEM合作,在针对J1939的物理层、数据链路层、应用层的测试开发和测试实施有着丰富的经验,也欢迎大家共同探讨。 参考文献 J1939-11 Physical Layer - 250k bits/s, Twisted Shielded Pair J1939-21 Data Link Layer J1939-71 Vehicle Application Layer J1939-73 Application Layer - Diagnostics https://zhuanlan.zhihu.com/p/628924045 https://copperhilltech.com/blog/guide-to-sae-j1939-parameter-group-numbers-pgn/
  • 2023-6-12 14:18
    0 个评论
    聚焦中国车载以太网市场发展的最新热点与痛点分析,AES 2023第四届中国国际汽车以太网峰会于2023年6月8日-9日在上海盛大举行。北汇信息应邀发表专题演讲,与各位参会的专家和嘉宾共同探讨DDS协议测试策略和分享实践成果。 DDS是OMG在2004年发布的中间件协议和应用程序接口(API)标准,它为分布式系统提供了低延迟、高可靠性、可扩展的通信架构标准。DDS目前在工业、医疗、交通、能源、国防领域都有广泛的应用,随着SOA在汽车行业的应用,以DDS及SOME/IP为代表的中间件技术得到日益关注和逐步应用。 北汇信息的测试专家王昊天发表了主题演讲《DDS协议测试策略探讨和实践》。基于北汇信息多年来对ECU测试策略的研究和实践,以及DDS的长期跟踪研究,我们认为对DDS中间件进行功能和性能测试是有必要的。因此,北汇信息与南京臻融软件科技合作开发了DDS协议测试套件,该产品能够在特定系统环境下验证DDS中间件的功能和性能,以及不同的DDS产品之间的互操作性。 实践出真知,不论是开源DDS还是商用的DDS,在汽车上应用时,都有缺陷或者不支持的特性存在,可能会影响整个分布式系统。此次AES峰会上,王昊天还重点探讨了DDS实践中的各种实际问题,与会专家进行了热烈探讨。 除本次分享的DDS协议测试,北汇信息已经落地实践了若干DDS相关的测试开发项目,包括基于OEM定制需求的DDS通信测试、S2S测试、DDS应用类测试,欢迎垂询探讨!
相关资源