朝花夕拾:HSR/PRP冗余协议(一)

2023-10-29

 引  言 

本文将简要介绍HSR/PRP协议本身的一些概念,和PRP协议的主要机制,并通过展示虹科与西班牙的合作伙伴SoC-e/RELYUM提供的HSR/PRP相关解决方案,使各位读者能够具体了解HSR/PRP的实际应用。

近年来,列车、工控甚至互联网等行业对网络可靠性传输的需求不断提升,加之当今的网络拓扑也越来越复杂,亟需一项兼容性好、易于使用的冗余协议。如此背景使得HSR/PRP这两项发布已久,并在电力行业已经得到广泛使用、验证的冗余协议,再次出现在人们的视野之中。

什么是HSP/PRP?

HSR/PRP全称分别为High-availability Seamless Redundancy(高可靠性无缝冗余)与Parallel Redundancy Protocol(并行冗余协议),其所属的国际标准为IEC 62439,这是一个专注于解决高可靠性自动化网络传输的标准,共有7个部分,分别描述在链路层实现冗余的多种方法:

图片

图片

IEC 62439-1:2010

而HSR/PRP协议位于其中的第3部分,即IEC 62439-3。

IEC官方协议的链接如下:https://webstore.iec.ch/publication/24438


自2008年标准发布以来,IEC 62439-3也经过了2010年、2012年、2016年的三次修订,每次修订均会修订或添加不少新的内容:

图片

IEC 62439-3 各版本修订内容

从中也可以看到实际上2008年第一版的协议中只有PRP协议,HSR协议是在2010年的第二版中才添加进去的。

最初,IEC发布此项标准主要目的是为了满足IEC 61850-5中所提到的变电站自动化应用中各通信组件或服务故障所要求的恢复时间问题,但协议设计时的通用性,使得这两项协议能不仅仅适用于变电站的应用场景下,而是成为一项工业网络中的通用解决方案。

什么是PRP冗余机制?

HSR/PRP协议分别提供独特的冗余机制进行网络链路的冗余备份,简要的机制介绍如下:

图片

名词概念

SAN:Singly Attached Node,单端口节点,不实现PRP功能

DANP:Doubly Attached Node implementing PRP,PRP的双端口节点,可直接发送PRP流量

RedBox:Redundancy Box,冗余盒,将SAN传入的流量转换成PRP流量发送出去

C Frame:原始信息帧,指代用户想要冗余备份的信息

A Frame、B Frame:附带特定字段的PRP信息帧,由原始信息帧扩展而来

PRP冗余机制的实现,主要依托于两个逻辑或物理分隔的子网(LAN A,LAN B,即所谓的A网、B网),以上图中的信息传输为例:PRP发送方(Source DANP)将原始信息帧(C Frame)复制一份,并在两份帧中添加一特定字段(RCT,下面会提到这个),形成PRP信息帧(A Frame、B Frame),分别从自身的两个端口发送出去(分别对应A网、B网),分别途径两个独立的子网到达同一个PRP接收方(Destination DANP);PRP接收方从两个端口分别接收到这两份PRP信息帧后,会经过一系列的帧处理算法进行处理,简而言之,就是依据“先来后到”的原则,将后到达的PRP信息帧消除,仅保留一份先到达的PRP信息帧,将特定字段消除后,还原成原来的原始信息,传递给上层。

那么问题来了,“A帧”和“B帧”是如何产生和消除的?具体的帧组成又是怎样的呢?请看下图:

图片

DANP内部原理图(一)

图片

DANP内部原理图(二)

这是DANP节点的简要示意图,主要分为上层(链路层以上)、LRE(Link Redundancy Entity,链路层冗余实体)子层、下层(链路层及物理层)。可以看到PRP设备的内部实现只是在标准以太网设备的MAC层中增添了一个LRE子层,这个子层内部实现了PRP信息帧的产生和消除算法。具体而言,就是在原始信息帧的基础上,增加了一个RCT(Redundancy Control Trailer,冗余控制体)字段,并针对这个字段进行一系列的处理,基于802.3标准以太网的PRP帧格式如下图所示:

图片

802.3 PRP帧格式

RCT字段由6个字节组成,内部又会细分为不同的位域,指代不同的含义,简要介绍如下:

简要介绍

Sequence Number: 16位帧序列号,LRE对同一原始信息帧复制而来的PRP帧赋予相同的序列号,并会随PRP帧的发送而递增序列号的值

LSDU size:12位载荷大小,标识Payload字段+RCT字段的总字节大小

Lan Id:4位子网ID,仅有两个值可选,0xa、0xb,代表A、B两个子网

PRP Suffix:16位PRP信息帧后缀,固定为0x88fb

LRE所实现的总体功能,就如先前所提到的:发送方向,将原始帧复制一份,打上A、B两个子网的RCT字段,向两个端口分别发送;接收方向,则是根据源MAC、RCT中的帧序列号识别某一PRP帧,后依据“先来后到”的原则,仅保留一份PRP信息帧,褪去RCT字段后传输给上层应用程序。而LRE子层内部的具体实现,有兴趣的读者可以自行移步IEC官网了解。

下面是笔者测试SoC-eMEZU开发板(已搭载SoC-e PRP IP核,用作Redbox)时的一些抓包情况,详细测试环境此处省略,仅供各位读者参考PRP抓包的一些信息:

图片

SoC-e MEZU开发板,已搭载SoC-e PRP IP核

图片

抓包情况——A网的SAN节点

可以在A网SAN节点中wireshark的抓包情况中看到,MEZU开发板转发ping帧的末尾中已经附带了6字节的RCT字段,也对应了RCT中的各个位域:

00 04:帧序列号

a:LAN ID,指示这是A网

0 5a:即十进制的90,即RCT+Payload段的长度,104减去以太网帧的14个字节的源MAC、目的MAC、帧类型(不包含前导码和FCS)

88 fb:PRP帧后缀

图片

另一边B网中的SAN节点的抓包情况也大同小异,只是LAN ID字段有所不同:

00 04:帧序列号

b:LAN ID,指示这是B网

0 5a:即十进制的90,即RCT+Payload段的长度,104减去以太网帧的14个字节的源MAC、目的MAC、帧类型(不包含前导码和FCS)

88 fb:PRP帧后缀

最后对PRP做一个简要的特点总结:

1、数据热交换,某个子网出现故障时,零恢复延时,不丢数据

2、纯二层的实现,可用于现有的任何工业以太网中,对应用层的程序透明

3、在任何网络拓扑结构中均可使用

4、支持实时应用场景的数据传输

5、需要搭建两个物理或逻辑独立的子网

虹科HSP/PRP解决方案

虹科与西班牙合作伙伴SoC-e/RELYUM给国内的客户带来了有关于HSR/PRP的多种解决方案,包括面向OEM厂商的基于FPGA的HPS(HSR/PRPSwitch)、MRS(Managed RedundantSwitch)IP核,面向工业终端用户的成品HSR/PRP板卡、交换机等等。关键特性如下:

HPS IP核:

图片

产品介绍

1、集成10/100/1000多速率MAC,可提供(R)(G)MII接口与PHY芯片对接

2、提供基于输入端口、VLANPCP(802.1Q)、DSCP TOS(IPv4/IPv6)等方式的QoS管理机制

3、支持自定义的基于源、目的MAC的报文帧过滤,支持最高4Kbytes的巨型帧

4、实现HSR/PRP冗余协议,HSR模式下支持HSR-SAN、HSR-PRP、HSR-HSR三种运行模式

5、支持1588v2混合时钟(仅从站)、IRIG-B主时钟的同步方式

6、向外部提供AXI4-Lite、UART、MDIO、CoE(Configurationover Ethernet)这四种配置IP内部的控制/统计用寄存器的手段

7、支持Xilinx旗下多个系列、多个型号的FPGA,如6系列的Spartan、Virtex,7系列的Zynq,Spartan, Artix, Kintex, Virtex等

RELY-RB HSR/PRP交换机:

图片

RELY-RB——整体视图

图片

RELY-RB——正面接口

图片

RELY-RB——背面接口

图片

RELY-RB+2多口HSR/PRP交换机——正面接口

产品介绍

1、产品已经推出6年,成熟可靠,并已广泛应用于欧洲各个行业,构建高可靠性的工业网络

2、支持丰富的网管、同步、冗余等协议,如802.1Q、HSR/PRP、RSTP、SNMP、IEEE 1588v2、NTP...

3、嵌入式的网页管理器,不需要安装额外的配置软件,配置界面简洁、友好

4、“1+2+2”的以太网端口配置,提供1个交换机管理接口、2个interlink端口、2个HSR/PRP冗余端口;另有RELY-RB+2的可选型号,可提供高达“1+7+2”的端口配置

应用案例

在以太网技术和IP技术广泛应用的现在,传统的音视频广播行业也完成了向AoIP(Audio over IP)的转型,将以往需要专用硬件(HEADEND)和专用电缆所架构的音视频传输网络,由以太网/IP方案、高级应用软件以及通用服务器所替代。

但基于以太网/IP的新型的设备与网络架构也面临着新的问题:如何实现零延时的故障恢复,以在故障发生时保持所有站点间内容的紧密同步?

图片

SMPTE 2022-7冗余网络场景——实际上与PRP的相同

图片

RTP协议所处的位置——传输层

传统音视频网络的冗余采用的是SMPTE2022-7这个基于RTP(Real-timeTransport Protocol)协议的冗余标准:与PRP冗余网络的场景相同,也是两个子网,发送方在RTP报头中插入了序列号等信息(类似于PRP协议的RCT字段),接收方可以地通过识别RTP报头中的特定信息,但是此标准在AoIP网络中很明显地会出现“水土不服”——RTP是一个建立在UDP协议之上的传输层的子层,意味着相当多不基于UDP的报文(如HTTPS、SSH等等)无法通过这项标准进行冗余传输。

而PRP正是此困境的解决方案,纯二层实现使得更上层的协议能够顺利的基于PRP进行冗余传输,而RELY基于自家的RELY-PCIe、RELY-RB产品为欧洲一家老牌的音视频广播服务公司提供PRP冗余方案的实现,以下为网络的拓扑图:

图片

应用案例——音视频广播行业

网络中,曾经的HEADEND如今由数种肩负不同功能的设备组成,包括AoIP网关、配置服务器、音视频流服务器等等。这些设备通过使用RELY-PCIe或RELY-RB,接入两个独立的子网之中,构建了可靠的冗余传输网络,实现了传统音视频广播行业网络升级的最后一步。

参考资料:

[1]李俊刚,宋小会,狄军峰,魏勇.基于IEC 62439-3的智能变电站通信网络冗余设计[J].电力系统自动化,2011,35(10):70-73.

[2]SoC-e HSR-PRP IP coredatasheet

[3]wiki百科,HSR词条:

https://en.wikipedia.org/wiki/High-availability_Seamless_Redundancy

[4]wiki百科,PRP词条:

https://en.wikipedia.org/wiki/Parallel_Redundancy_Protocol

[5]Tutorial on PRP:

https://www.solutil.ch/kirrmann/IEC_62439-3/IEC_62439-3.4_PRP_Kirrmann.pdf

[6]Tutorial on HSR: 

https://www.solutil.ch/kirrmann/IEC_62439-3/IEC_62439-3.5_HSR_Kirrmann.pdf

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

朝花夕拾:HSR/PRP冗余协议(一) 的相关文章

  • JAVA 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

    给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出现 你可以按任意顺
  • Map+函数式接口,“更完美” 的解决 if-else的问题

    程序员的成长之路 互联网 程序员 技术 资料共享 关注 阅读本文大概需要 4 分钟 来自 blog csdn net qq 44384533 article details 109197926 本文介绍策略模式的具体应用以及Map 函数式接
  • 2021-07-19

    7 18 7 19工作记录 1 完成了百分比折扣功能 根据商品ID查找商品信息和折扣信息 根据商品ID后四位的搜索引擎 修改选定商品的折扣信息 2 待解决问题 供货商的模糊搜索 真机演示 扫码功能 UI调整
  • IQ 调制器和 IQ 解调器

    上一篇 I Q信号 IFI IFQ信号 差分信号 单端信号知识总结 关于 IQ 调制器和 IQ 解调器 IQ 调制器可用于无线电发送器 能够以非常有序且精准的方式来更改信号的幅度和相位 以便对数据进行调制 或者将数据编码到正弦波 I 和 Q
  • 2018年9月份GitHub上最热门的Python项目

    本文我们将和大家介绍 GitHub 上 9 月份最受欢迎的 11 个Python开源项目 在这些项目中 你有在用或用过哪些呢 1 Python https github com TheAlgorithms Python Star 14125
  • 青龙面板薅羊毛教程之小米电动车

    青龙面板薅羊毛教程之小米电动车 辛辛苦苦搭建了青龙面板除了撸京豆不知道该在安排那些脚本薅羊毛可以好好看看这篇帖子 每日保底0 6 到账 一波小羊毛 不会玩的可找我免费挂 京东自助上车 点此直达 小米电动车 0撸不充值 脚本功能 领充电桩跟提
  • 小程序跳转样式布局错乱_小程序webview无法自适应问题?跳转页面出现样式错乱问题。...

    小程序webview无法自适应问题 跳转页面出现样式错乱问题 The problem that the applet webview cannot be adapted The style of the jump page appears
  • map和set的概念及使用

    1 什么是关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是
  • 新天龙官网服务器更新消息,《新天龙八部》1月20日全服更新维护公告

    亲爱的玩家 大家好 为保证游戏运行的稳定性 提升整体服务质量 新天龙八部 游戏全部服务器 除测试服务器外 将于2020年1月20日7 00 9 00进行更新维护 维护后版本号升级为3 66 5201 如果在预定时间内无法完成维护内容 开机时
  • AcWing 420. 火星人

    人类终于登上了火星的土地并且见到了神秘的火星人 人类和火星人都无法理解对方的语言 但是我们的科学家发明了一种用数字交流的方法 这种交流方法是这样的 首先 火星人把一个非常大的数字告诉人类科学家 科学家破解这个数字的含义后 再把一个很小的数字
  • 多源迁移学习网络补充知识用于具有不可见故障的机器智能诊断

    摘要 当前基于深度迁移学习的故障诊断的大多数成功需要两个假设 1 源机器的健康状态集合应当与目标机器的健康状态集合重叠 2 目标机器样本的数量跨健康状态平衡 然而 这样的假设在工程场景中是不现实的 其中目标机器遭受在源机器中看不到的故障类型
  • 华硕主板已经开启VT-D虚拟化,但是进了win10还是CPU显示Hyper-V显示已禁用

    最近X宝看i5 8400的便宜好几百大洋 就入手一台当家里照片文档FTP服务器 系统win10装好 常用软件安装完成 准备来安装Hyper V了 在 程序和功能 里面的 Hyper V的虚拟机监控程序 是灰色的 老司机了 这难不倒我 一般都
  • CmakeList--gflags

    set GFLAGS LIBRARIES usr lib x86 64 linux gnu libgflags so
  • vue-cli3+electron出现白屏现象

    近期使用electron vue cli3 0开发了一个跨平台项目 进行登录后路由跳转出现白屏现象 原因在于路由使用了history模式 history模式在electron环境中会出现 路由跳转的白屏现象 因此 需要将histroy模式修
  • deepin自带wine使用方法_忘记Windows!国产深度v20正式版来袭,永久免费使用!

    最近win10系统更新出现各种bug 真是让人头痛 但是 就在我们在win10漩涡中晕头转向的时候 很多朋友都没有留意到 我们的国产操作系统 deepin 20正式版 在9月份已经正式发布 而直至10月份 距离deepin 20正式版发布一
  • Python实现邮箱自动发送代码(包含正文图片、附件文件)

    以下为源码 仅供大家学习 抄送实现是同一封邮件发送2次 如想实现发送人和抄送人显示中文名字 在list集合中添加中文名字即可 旭旭同学测试 lt 12341324 qq com gt 测试 lt 1341 qq com gt 不足之处请大家
  • Qt 多线程/多窗口 参数传递

    文章目录 注意 传递 Qt 支持的数据类型 主线程 gt 子线程 子线程 gt 主线程 主窗口 gt 子窗口 子窗口 gt 主窗口 传递自己定义的数据类型 第一步 定义数据类型 第二步 在 main 函数中注册该数据类型 第三步 开始传参数
  • 博客同时部署Github和Coding page

    前期 注册账号不讲了 现在都是以团队注册 注册完后 记得到团队设置里面 找到实名认证 在初次使用静态网站服务前 需要团队拥有者完成实名认证 然后需要在个人设置里绑定邮箱和设置密码 顺便把公钥添加下 创建一个项目 然后点进这个项目中 部署静态
  • phpstorm 配置apache路径

    初学php 如何自动将phpstorm中的文件部署到设定好的目录中 用了 我的路径是apache里面配置的路径ServerRoot

随机推荐

  • CentOS 7二进制文件安装nodejs

    根据自己的经验编写在linux系统CentOS下安装nodejs的过程 本篇介绍二进制文件直接解压安装的过程 方法 步骤 1 如图所示 在nodejs官网下载压缩包 根据自己的系统是32位还是64位选择压缩包 别选错类型哦 2 安装前要先安
  • sklearn——加载数据集

    1 通用数据集 API 根据所需数据集的类型 有三种主要类型的数据集API接口可用于获取数据集 方法一 loaders 可用来加载小的标准数据集 在玩具数据集中有介绍 方法二 fetchers 可用来下载并加载大的真实数据集 在真实世界中的
  • 无法生成“F:\system voiume information”下的常规文件夹列表拒绝访问

    1 产生问题 将桌面从属性 位置直接改到了F盘 F盘上的东西全显示在桌面上 2 解决问题 1 点击还原默认值后显示要下图 选择否 win10可以用 然后再次移动到你需要的位置即可 2 win7可以用 win10并没有用成 1 按win r
  • 图的创建和遍历

    图的定义 由顶点的有穷非空集合和顶点之间边的集合组成的数据类型 图的表示 G V E G表示一个图 V是图G的顶点集合 E为图G的边的集合 图的逻辑结构 多对多 图的存储结构 邻接矩阵 邻接表 十字链表 邻接多重表 图的一些无聊术语 顶点i
  • 多源bfs

    这是 LeetCode 上的 1162 地图分析 难度为 中等 与 单源最短路 不同 多源最短路 问题是求从 多个源点 到达 一个 多个汇点 的最短路径 在实现上 最核心的搜索部分 多源 BFS 与 单源 BFS 并无区别 并且通过建立 虚
  • 日常管理的五条小建议

    原文作者 Johanna Rothman著作 门后的秘密 卓越管理的故事 有时候 你需要为工作理一理头绪 你需要给自己一些喘息的机会 停下来 思考一会儿 这里有一些小建议 可以帮助你处理好日常管理工作 计划并安排一对一会谈 做管理意味着你要
  • 基于Hadoop的Knn算法实现

    Knn算法的核心思想是如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别 则该样本也属于这个类别 并具有这个类别上样本的特性 该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别 Knn方法在类
  • Qt配置设置,修改全文字体大小颜色,背景颜色

    这是完成时的demo 选择所需 点击确认修改 全局修改 效果第二张图 在没有点击确认修改时 字体等按钮的改变只会在文本框里面体现出来 点击确认才会修改全局的东西 点击恢复默认时 字体字号颜色控件全部恢复初始状态 当点击确认修改 全局才会改为
  • python大文件的上传

    python大文件的上传 下载是同样的套路 下面是简单的代码 server端代码 import socket import json import struct buffer 1024 这里使用1024在上传视频的时候不容易出错 如果选择更
  • MATLAB智能优化算法 - 粒子群算法及MATLAB实例仿真

    一 粒子群算法理论 粒子群算法来源于鸟类集体活动的规律性 进而利用群体智能建立简化模型 它模拟的是鸟类的觅食行为 将求解问题的空间比作鸟类飞行的时间 每只鸟抽象成没有体积和质量的粒子 来表征一个问题的可行解 1 1 粒子群算法建模 粒子群算
  • 信号槽的概念与使用

    下面对Qt所设计的信号槽机制进行解析 部分摘自网络 信号 当对象改变其状态时 信号就由该对象发射 emit 出去 而且对象只负责发送信号 它不知道另一端是谁在接收这个信号 这样就做到了真正的信息封装 能确保对象被当作一个真正的软件组件来使用
  • python之实现ts转MP4

    import subprocess import os def convert ts to mp4 input path output path ffmpeg cmd f ffmpeg i input path c copy output
  • kconfig与Makefile运行机制

    前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式 模块和直接编译进内核 并介绍了模块的一种编译方式 在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢 在我们实际内核的移植配置过程中经常听说的内
  • 复旦微魔方FM33FR0xx——FL库笔记-GPIO

    一 引用文件 include fm33lg0xx fl gpio h 1 GPIO初始化定义 typedef struct uint32 t pin PIN uint32 t mode 功能模式 uint32 t outputType 输出
  • 常见路由协议分类及区别

    按路由生成方式分类 路由根据路由表生成方式可以分为 直连路由 静态路由 动态路由 1 直连路由 路由器接口所连接的子网的路由方式称为直连路由 2 静态路由 静态路由是由网络规划者根据网络拓扑 使用命令在路由器上配置的路由信息 这些静态路由信
  • MySQL~数据库的设计

    二 数据库的设计 1 多表之间的关系 1 1 三种分类 一对一 分析 一个人只有一个身份证 一个身份证只能对应一个人 如 人和身份证 一对多 如 部门和员工 分析 一个部门有多个员工 一个员工只对应一个部门 多对多 如 学生和课程 分析 一
  • 表格对角线两边打字_表格斜线一分为二怎么打字(excel斜杠分割表格打字)

    在整理表格的时候 相信许多朋友都会涉及到表格斜线的制作 比如单斜线和双斜线来区分不同维度项目 下面我们就来学习一下 如何通过Excel快速来添加我们的表格斜线 案例一 两步快速制作单表格单斜线 第一步 首先在单元格中依次输入文字 月份和姓名
  • 数据的异常值处理

    爬取职位并且对职位进行词频数据分析 老板直聘 修改爬取到的内容进行整理 刚开始的样子 其实比这个样子还要乱 而我要的数据的样子应该是整齐的 所以我把职位描述往后的内容做了replace替换 replace 职位描述 将职位描述往后的空格部分
  • 实现 Kafka 分区内消费者多线程顺序消费

    在1个topic中 有3个partition 那么如何保证数据的顺序消费 生产者在写的时候 可以指定一个 key 被分发到同一个 partition 中去 而且这个 partition 中的数据一定是有顺序的 消费者从 partition
  • 朝花夕拾:HSR/PRP冗余协议(一)

    引 言 本文将简要介绍HSR PRP协议本身的一些概念 和PRP协议的主要机制 并通过展示虹科与西班牙的合作伙伴SoC e RELYUM提供的HSR PRP相关解决方案 使各位读者能够具体了解HSR PRP的实际应用 近年来 列车 工控甚至