HSR 在 Openwrt 22.03上的支持及验证

HSR 介绍

HSR (High-availability Seamless Redundancy)高可靠无缝冗余协议。所属的国际标准为IEC 62439,这是一个专注于解决高可靠自动化网络传输的标准。

hsr

 

上图表示非HSR设备通过RedBox和HSR节点进行通信。HSR节点通信时,生成两个相同的数据包,一个数据包从一个端口顺时针发送,一个数据包从另一个端口逆时针发送。这样当某一个节点异常,即使顺时针方向的包不可达,逆时针方向的包也可以到达。

HSR 内核编译支持

Openwrt 22.03 使用的内核版本为:linux-5.10.111

开启HSR内核支持

在 Networking support ---> Networking options ---> 下开启

开启后,配置会保存到

添加调试工具

默认openwrt中ip 命令使用的是busybox 集成的功能有限。需要支持专有的ip工具。

在 Network -> Routing and Redirection 下选中 ip-full

在 Network -> 下选中 iperf3 ,ethtool-full,tcpdump,fping

编译

 

CONFIG_HSR 选项介绍

验证 HSR 支持生效

设备连线

将编译完毕的固件,烧录到两个相同的设备中。(每台设备应包含至少3个有线口)

设备A的 eth2 口连接到设备B的 eth3 口;

设备A的 eth3 口连接到设备B的 eth2 口。

 

配置hsr的接口

每台设备的eth2口和eth3口绑定到 hsr 接口上

 

配置设备A的hsr接口ip

配置设备B的hsr接口ip

 

调试时可能需要删除hsr接口,命令如下

连通性验证

设备A对设备B进行ping命令检测

 

在设备B上进行抓包分析

我们看到 eth2, eth3 上抓的icmp报文,ethertype 为0x892f 对应的正是HSR的协议。

在hsr0 接口上抓到的数据报文,已经是去掉了HSR填充的正常ICMP报文。

断连一根网线验证

HSR是两个接口都走数据,断掉其中一条通路,另一条通路依然可以达到。

将设备B上的eth3网线断开,依然抓包正常。