什么是HSR?
HSR作为一种高可靠性的工业网络传输协议,不仅能够降低网络时延和丢包率,还能提高工业物联网场景下的可靠性。本文从为什么需要HSR,HSR如何工作这几个方面展开介绍。
- 为什么需要HSR?
- HSR是如何工作的?
为什么需要HSR?
港口、汽车制造、矿产(煤矿、铁矿等各种大型矿场)等现代工业场所中,控制设备集中部署在厂级数据中心,生产设备部署在环境相对比较恶劣的地方,控制设备与生产设备之间距离较远,容易造成数据传输不稳定。
采用ERPS组网方式组成双归链路虽然能够解决数据传输不稳定的问题,但是这种方案在主链路发生故障倒换到备链路时,存在几十毫秒级的丢包,易导致生产自动化等业务系统卡顿、体验差,无法做到保障网络可靠性的同时零丢包。
随着现代工业技术的发展,机器人控制生产、生产物流自动运输、远程控制医疗设备等业务场景对不中断业务的要求越来越严格,为了解决这一问题,降低工业场景中的网络时延和丢包率,HSR技术应运而生,它作为一种高可靠性的工业网络传输协议,能够通过双链路同时转发报文,不存在主备链路切换造成的时延,这样不仅能够降低网络时延和丢包率,还能提高工业物联网场景下的可靠性,构建0倒换高可靠网络。
HSR是如何工作的?
HSR是以HSR环为基本单位,一个简单的HSR环网由DANH与RedBox节点组成,每个节点通过两个接口连接到环中。
HSR是一种基于冗余路径(HSR环)的双发选收特性,即源节点及中间节点双向发送报文,目标节点选择性接收报文后,最终发送一份报文给目标终端。
RedBox是拥有至少三个以太网端口的设备,其中至少两个端口是能够连接到一个HSR环的,其他是传统的以太网端口,用于连接终端或者控制器。RedBox用于连接非HSR节点和HSR环。
DANH是它的两个端口连接到一个HSR环的设备。DANH用于连接HSR环。
单节点SAN(Singly Attached Nodes )是指打印机或PC机等不支持HSR协议的终端节点,必须通过代理设备RedBox(冗余盒)连接到HSR环中。终端将要发送的所有帧数据传输给RedBox,RedBox将会产生相同的数据帧,通过两个不同的路径将它们发送到目的地。通过RedBox接入HSR网络的SAN节点,也称为虚拟DANH(Virtual DANH)。
转发报文方式
如下图所示,终端将要发送的所有帧数据传输给RedBox1,RedBox1将会产生相同的数据帧,通过两个不同的路径将它们发送到目的地。
- 如果路径中的任何一个由于链路故障或节点故障被破坏,帧数据则通过另一条路径仍然能够发送到其目的地。
- 如果两条路径都可以正常转发,RedBox1会将它需要发送的所有帧数据进行按照顺序标记序号,目标设备会对接收到的报文进行排序和去重,将先到的正常顺序的完整的报文进行转发,后续接收到的重复报文直接将其丢弃。如果某一条路径上出现部分报文缺失时,对该路径上先到的报文进行缓存排序,等另一条路径上缺失的这部分报文到达后按照顺序组装成完整报文,并进行转发,从而实现业务数据的零丢包。

HSR环示意图
当需要对接两个不同的HSR环网时需要用到四端口盒QuadBox(Quadruple Port Box)。一个QuadBox是拥有至少四个以太网端口的设备,绑定两个RedBox ID(两个RedBox配置不同的RedBox ID,逻辑上可以认为一个QuadBox设备等同于由两个RedBox组成),每一个RedBox所属的Eth-trunk两个成员端口连接到同一个HSR环网。
如图1-3所示,为了提高链路可靠性,QuadBoxA、QuadBoxB将两个HSR环网(HSR Ring1和HSR Ring2)对接,实现业务数据的零丢包,有效地保证两个HSR环网链路连通性。为了保障在一台QuadBox发生故障时,两个HSR环网仍然能保持连通,需要同时部署两台QuadBox来实现HSR环网互连。

HSR环网对接示意图
避免报文在环网中循环转发
HSR环网中的节点不会传输已经在同一方向上传输的报文数据,这样就避免了报文在HSR环网中循环转发,不会引起广播风暴以及MAC地址表不稳定等现象,从而避免影响用户通信质量,甚至导致通信中断。当RedBox向HSR环中传输报文数据时,对报文数据的处理方式分为以下三种情况。
- 对于传输目标位于HSR环内单播报文:当单播报文数据到达目标节点时,该报文数据将不会在同一方向进行转发。
- 对于传输目标不在HSR环内的单播报文:在该场景下,由于传输的报文数据在环中没有目标节点时,该报文数据会由环中的每个节点进行转发,直到到达报文传输的源节点,则不再进行传输。
- 对于传输目标在HSR环内多播报文:当多播报文通过源节点进行传输,该报文数据会由环中的每个节点进行转发,直到到达报文传输的源节点,则不再进行传输。
目标节点位于不同HSR环内的单播或多播报文转发
在该场景下,同时部署两台QuadBox来实现HSR环网互连,并且QuadBox工作模式需要配置为hsrredboxhsr,即跨环转发HSR报文(携带HSR Tag)。如图1-4所示。

目标节点位于不同HSR环内的报文示例
此场景下的HSR转发方式如下(QuadBoxA和QuadBoxB对于报文处理方式一致):
- RedBox源节点双向发送报文。RedBox源节点有两条路径都可以正常转发(顺时针和逆时针出口方向),设备会将它需要发送的所有帧数据按照顺序标记序号,复制两份后从两个不同端口对外发送(假设顺时针发送的a系列帧和逆时针的b系列帧)。a系列帧和b系列帧会由HSR Ring1环中的每个节点进行转发,直到返回报文传输的源节点。
- QuadBox设备对报文排序、重组。QuadBox会按照接收报文的时间先后顺序,对HSR Ring1中接收到的a系列帧和b系列帧进行排序和去重,组成正常顺序的完整的报文,后续接收到的重复帧直接将其丢弃。假设QuadBoxA最终组成的报文为A,QuadBoxB最终组成的报文为B。
- QuadBox设备将报文跨环转发。QuadboxA和QuadBoxB会修改报文字段中的pathid标识(具体是指HSR Ring接入网络ID部分),然后将报文复制两份后,从HSR Ring2两个不同端口对外转发。例如,QuadboxA将A报文中的pathid字段修改为包含HSR Ring2接入网络ID后,再将报文复制为A1和A2,并从HSR Ring2所属的端口对外发送。QuadboxB将B报文中的pathid字段修改为包含HSR Ring2接入网络ID后,再将报文复制为B1和B2,并从HSR Ring2所属的端口对外发送。
- QuadBox设备之间属于HSR Ring2内的报文不会在HSR Ring2继续发送。QuadBoxA和QuadBoxB在HSR Ring2上复制的报文sequenceID相同,QuadBox不会在HSR Ring2内重复转发。例如,QuadboxA收到QuadBoxB发送过来的B2报文,确认B2报文sequenceID与A1/A2相同,则丢弃B2报文。QuadboxB收到QuadBoxA发送过来的A2报文,确认A2报文sequenceID与B1/B2相同,则丢弃A2报文。
- QuadBox设备之间属于HSR Ring2内的报文不会跨环转发到HSR Ring1。QuadBoxA在HSR Ring2接收到QuadBoxB发送的报文B2,判断pathid包含HSR Ring2接入网络ID,则不会再从HSR Ring2转发到HSR Ring1;同理,QuadBoxB在HSR Ring2接收到QuadBoxA发送的报文A2,也不会再从HSR Ring2转发到HSR Ring1。
- 最终,HSR Ring2环上的目标节点会接收到A1和B1报文,将报文排序和去重后,向目标终端转发。