概述
E2E(End to End,端到端)实现数据从发送端到接收端的保护和校验。实现CRC校验(检查数据收发的一致性)和rolling counter机制(可以检查数据的丢包,重复和乱序问题)。communication支持E2E保护的协议包括zmq(tcp, ipc, epgm), shm(cpu shm, hbmem), pcie。其中对zmq相关协议保护序列化后的meta和data部分。对于shm和pcie协议保护meta部分(data部分communication层只是透传,shm和pcie由底层链路保证data部分的正确性)。
E2E保护的数据是序列化后的meta二进制数据(zmq协议再加上data部分),在接收端校验的时候也是校验的反序列化之前的meta二进制数据(zmq协议再加上data部分)。E2E保护和校验在communication的协议实现层实现,发送端在上层对消息序列化完成之后,会对meta二进制数据(zmq协议再加上data部分)进行E2E的计算,得到一个E2E header的结构(包含CRC,rolling counter等),连同消息传输到接收端;接收端在收到消息后,会对收到的数据进行检查,包括:CRC是否一致,rolling counter是否正确连续来判断数据传输是否发生了异常,如果发生异常则会报出错误日志,并上报E2E错误事件信息到用户设置的E2E事件监听回调函数中。
具体步骤
开启E2E保护机制
支持在配置文件配置相关信息,对协议开启E2E保护
支持在配置文件单独针对participant_id配置E2E信息,只对某个节点开启E2E保护
支持注册的节点单独设置E2E信息
在接收端配置E2E事件监听回调函数
crc计算说明
