一种并行冗余以太网传输协议栈系统及实现方法与流程

未命名 07-23 阅读:96 评论:0


1.本发明属于通用以太网的三层交换网络通信领域,具体涉及一种并行冗余以太网传输协议栈系统及实现方法。


背景技术:

2.并行冗余以太网适用于对可靠性和容错性要求较高的以太网数据通信领域。
3.目前针对并行冗余以太网产品不支持三层交换,大部分滑窗软实现在组播发送报文时会产生丢包的现象。目前针对并行冗余的算法主要是基于时戳过滤的算法,如果操作系统原因导致时戳不准或者精度不高,会导致时戳不精确造成的多收或者少收的丢包现象。目前的方法无论是硬件算法还是软件算法,都无法满足并行冗余以太网接收以及发送精度的需求。


技术实现要素:

4.本发明的目的在于提供一种并行冗余以太网传输协议栈系统及实现方法,以克服现有方法在三层交换和组播通信中容易出现的丢包问题,本发明扩展了原有prp协议栈不支持三层交换的问题,提高了信息传输的稳定性和准确性。
5.一种并行冗余以太网传输协议栈系统,包括站点管理模块、接收管理模块、发送管理模块和统计管理模块;
6.站点管理模块,用于保存通信站点的地址对信息和序列号信息;
7.接收管理模块,用于接收网络控制器发送的信息,并对该信息进行中的冗余信息进行过滤;然后将过滤后的信息与通信站点的地址对信息和序列号信息进行比对,然后根据比对结果通过发送管理模块进行发送;
8.发送管理模块,用于将网络层的数据进行冗余,通过网络控制器发送至需要接收的网络;
9.统计管理模块,用于对prp网络的状态信息进行统计。
10.优选的,从站点管理模块中获取通信站点的地址对信息和序列号信息,采用hash查找算法,结合链表rcu读写锁;由于网络控制器在发送时需要获取特定节点的序列号,所以需要获取节点链表的rcu读锁进行节点hash查找,如果未命中需要查找的节点信息,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁;该部分的互斥设计保证了信息发送和信息接收能够进行双工数据传输。
11.优选的,接收管理模块在接收消息时,根据接收消息对端节点链表进行hash查找,首先获取端节点链表的读锁,然后根据获取的读锁进行hash查找,如果命中需要查找的节点信息,则递增该节点的发送序列号,然后释放读锁,如果不命中,则首先释放读锁,然后获取端节点链表的写锁,再向链表中添加新节点并递增序列号,最后释放写锁。
12.优选的,接收管理模块在接收消息时,首先进行协议判断,判断prp接收函数是否为prp协议数据,如果不是prp协议数据,则将该prp接收函数的报文进行栈帧标记后直接上
传协议栈,然后退出;如果是prp协议数据,则对prp接收函数的尾部协议进行数据处理。
13.优选的,对prp接收函数的尾部协议进行数据处理包括:保存prp接收函数的尾部协议数据,供接收函数使用;去除prp接收函数的报文尾部的prp协议数据。
14.优选的,接收管理模块在接收消息时,对报文结果过滤过程中,区别通用以太网报文和prp报文:linux的skb的长度信息减去rct长度的值等于rct中的报文长度信息,说明skb中报文长度一致;否则可以判定不属于prp报文。
15.优选的,发送管理模块需要发送信息时,需要对端节点链表进行hash查找,首先获取端节点链表的读锁,然后根据获取的读锁进行hash查找,如果命中需要查找的节点信息,则递增该节点的发送序列号,然后释放读锁,如果不命中,则首先释放读锁,然后获取端节点链表的写锁,再向链表中添加新节点并递增序列号,最后释放写锁。
16.优选的,如果报文的长度小于一个单位报文长度与rct长度之差,则采用0对报文填充至报文长度尾部剩余长度与rct长度相等,然后采用rct对报文尾部进行填充。
17.一种并行冗余以太网传输协议栈方法,包括以下步骤:
18.接收到网络控制器发送的信息,对该信息进行中的冗余信息进行过滤,并对该信息进行中的冗余信息进行过滤;然后将过滤后的信息与通信站点的地址对信息和序列号信息进行比对,然后根据比对结果,将需要发送的数据进行冗余,通过网络控制器发送至需要接收的网络,同时对prp网络的状态信息进行统计。
19.优选的,从站点管理模块中获取通信站点的地址对信息和序列号信息,采用hash查找算法,结合链表rcu读写锁;由于网络控制器在发送时需要获取特定节点的序列号,所以需要获取节点链表的rcu读锁进行节点hash查找,如果未命中需要查找的节点信息,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁;该部分的互斥设计保证了信息发送和信息接收能够进行双工数据传输。
20.与现有技术相比,本发明具有以下有益的技术效果:
21.本发明一种并行冗余以太网传输协议栈系统,通过采用站点管理模块保存通信站点的地址对信息和序列号信息;采用接收管理模块接收网络控制器发送的信息,并对该信息进行中的冗余信息进行过滤;然后将过滤后的信息与通信站点的地址对信息和序列号信息进行比对,然后根据比对结果通过发送管理模块进行发送;发送管理模块将网络层的数据进行冗余,通过网络控制器发送至需要接收的网络;用于对prp网络的状态信息进行统计,解决了滑窗算法在三层交换和组播通信中出现的丢包问题,扩展了原有prp协议栈不支持三层交换的问题,通过简单的设计,提高了算法的稳定性和准确性。
附图说明
22.图1为本发明实施例中并行冗余数据发送处理流程框图。
23.图2为本发明实施例中系统框图。
具体实施方式
24.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人
员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
25.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
26.如图1所示,本发明一种并行冗余以太网传输协议栈系统,基于高性能实时并行冗余协议的以太网桥阶层协议管理,用于并行冗余以太网组网管理及数据传输管理,实现并行冗余实时以太网通信功能,提供标准的linux网络设备通信接口;具体包括站点管理模块1、接收管理模块2、发送管理模块3和统计管理模块4;
27.站点管理模块1,用于保存通信站点的地址对信息和序列号信息;
28.从站点管理模块中获取通信站点的地址对信息和序列号信息,采用hash查找算法,结合链表rcu读写锁;由于网络控制器在发送时需要获取特定节点的序列号,所以需要获取节点链表的rcu(锁机制)读锁进行节点hash查找,如果未命中需要查找的节点信息,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁;该部分的互斥设计保证了信息发送和信息接收能够进行双工数据传输。
29.接收管理模块2,用于接收网络控制器发送的信息,并对该信息进行中的冗余信息进行过滤;然后将过滤后的信息与通信站点的地址对信息和序列号信息进行比对,然后根据比对结果通过发送管理模块进行发送;
30.接收管理模块2接收消息时,采用序列号滑窗算法,设报文不发生多径乱序的情况下摒弃通过时戳来过滤报文的方法,完全通过滑窗过滤报文,实现了报文完全不多收,不少收。通过采用源mac和目的mac,即在hash元组信息中加入源mac和目的mac,混合元组解决了只有物理站点的目的mac索引组播通信时,站点的组播报文和单播报文的序列号混淆,对接收端造成的窗口聚合,导致丢包的问题。
31.接收管理模块2在接收消息时,根据接收消息对端节点链表进行hash查找,首先获取端节点链表的读锁,然后根据获取的读锁进行hash查找,如果命中需要查找的节点信息,则递增该节点的发送序列号,然后释放读锁;如果不命中,则首先释放读锁,然后获取端节点链表的写锁,再向链表中添加新节点并递增序列号,最后释放写锁。
32.接收管理模块2在接收消息时,首先需要对接收消息进行协议判断,判断接收消息的prp接收函数是否为prp协议数据,如果不是prp协议数据,则将该prp接收函数的报文进行栈帧标记后直接上传协议栈,然后退出;如果接收消息的prp接收函数是prp协议数据,则对prp接收函数的尾部协议进行数据处理。
33.对prp接收函数的尾部协议进行数据处理,具体包括:保存prp接收函数的尾部协议数据,供接收函数使用;去除prp接收函数的报文尾部的prp协议数据。
34.针对单站点给多个站点发送报文时,由于报文的目的mac需要设置成gw的mac,当这些报文被某一个站点接收到时,发送站点的序列号可能会发生跳变,当序列号跳出窗外
时,会导致丢包;因此,本技术通过将右窗口打开兼容序列号跳变:当报文的序列号超越右窗口后,只要报文的序列号不超过右窗口序列号加32768,则按照序列号在滑窗范围内进行处理,该方法解决了序列号跳变出窗口时不能正常接收的问题;或者将ip信息加入站点hash索引,使得序列号连续:将原有的hash二元组信息:《源mac+目的mac》扩展成hash三元组:《源ip+源mac+目的mac》,使得在计算经过gw的站点时通过ip进行联合确定,从而不会导致gw相同的站点混淆。
35.接收管理模块2在接收消息时,对报文结果过滤过程中,由于需要兼容通用以太网报文,所以需要区别通用以太网报文和prp报文:通过linux的skb的长度信息减去rct长度的值是否等于rct中的报文长度信息实现验证算法的必要性。
36.具体的,linux的skb的长度信息减去rct长度的值等于rct中的报文长度信息,说明skb中报文长度一致;否则可以判定不属于prp报文;通过linux skb报文l3(网络层的长度)报文数据的长度的加上以太网头部信息的值是否与rct的中的报文长度相等实现验证算法的充分性。rct中的报文长度既要等于skb-》len(二层解析出的长度);又要等于skb-》network_header-》len,确保了rct长度的准确性,从而确保了对prp报文判断的准确性。
37.由于prp的发送属于冗余发送,当报文从网络层到达prp栈时,prp栈需要将报文填充rct后从两个网络通道原子地发送出去。传统发送方法由于考虑了发送的效率,将报文的内存设计为一份,通过引用计数的方式进行修改发送;此种设计存在缺陷,当第一路报文尚未发送完成时,第二路修改rct准备发送,可能造成第一路的rct内容错误,造成接收端统计通道错误信息。本技术通过将内存拷贝成两份,对两份内存分别添加不同的rct信息避免上述问题的发生,两份内存对应不同的两个控制器通道下面的网络,通道信息分别为0x0a和0x0b。
38.发送管理模块3,用于将网络层的数据进行冗余,通过网络控制器发送至需要接收的网络;
39.发送管理模块需要发送信息时,需要对端节点链表进行hash查找,首先获取端节点链表的读锁,然后根据获取的读锁进行hash查找,如果命中需要查找的节点信息,则递增该节点的发送序列号,然后释放读锁,如果不命中,则首先释放读锁,然后获取端节点链表的写锁,再向链表中添加新节点并递增序列号,最后释放写锁。
40.单站点接收多个站点的报文时,报文的源mac地址均为gw的mac地址,此时不同站点的报文通过gw汇聚在接收站点产生窗口聚合混淆,导致丢包。因此,本技术通过在rct中添加6字节的源mac地址来区分站点信息。
41.当报文的长度小于60字节时需要进行软件层面的填充,如果软件免去填充,协议栈会自动填充。本技术采用软件填充的方式避免自动填充:如果报文的长度小于一个单位报文长度与rct长度之差,则采用0对报文填充至报文长度尾部剩余长度与rct长度相等,然后采用rct对报文尾部进行填充。具体如:如一个单位报文长度为60,rct长度为12,报文的长度小于60-12=48字节,则需要进行填充0的设置,对报文数据尾部填充0直到数据长度为48字节,然后将12字节的rct放置到从第49字节开始位置到第60字节结束。本技术通过对rct(12个字节,prp)尾部填充,避免了因自动填充导致接收端对报文兼容性的判别成普通以太网报文,造成接收端统计到序列号不连续和多收问题。
42.由于本prp采用桥阶层的虚拟设备实现,虚拟设备的mtu和物理设备的mtu需要遵
循一定的关系,如果虚拟设备的mtu与物理设备的mtu相等,会导致发送超大报文(超过1500字节)时,由于上层分段后,经过prp栈添加rct之后的长度超过物理网卡的mtu限制而导致丢包。本技术的虚拟设备的mtu等于物理设备的mtu的长度减去rct长度;如:将原有的mtu长度1500修改为1488,如果报文的长度超过1500-12=1488字节,则ip层会对数据进行分片传输,从而避免丢包的现象。
43.统计管理模块4,用于对prp网络的状态信息进行统计。
44.具体的,统计管理模块4按照设定的时间(本技术设定1s)遍历一次链表信息,删除超过设定留存时间(本技术设定10分钟)既没有发送又没有接收的站点;具体通过站点信息的最新发送时戳和最新接收时戳求最大值后加10分与当前时戳比较来判断。
45.当链表的长度达到上限后,通过冒泡排序筛出站点综合时戳(通过站点信息的最新发送时戳和最新接收时戳求最大值)最早的那个站点,删除该站点。
46.统计管理模块4用于oot超差计数,冗余报文前后间隔时间tx不da于15us;rx不大于1ms;收到上一帧旧帧时进行记录(dst==65535时)。
47.统计管理模块4loss丢包计数,落在窗口中的不连续报文和预测报文间的空隙计数,dst《win_size并且seq_i!=seq_next。
48.统计管理模块4oow超窗口计数,落在窗口右外侧,32768》dst》win_size。
49.统计管理模块4hfc历史帧计数,落在窗口左外侧(不包括上一旧帧),seq_ring_size》dst》=32768。
50.统计管理模块4chanerr通道错误计数,报文rct记录通道号和实际通道号不一致计数,slave的通道号和报文rct的通道号不一致。
51.统计管理模块4lfc链路失效计数,链路失效计数,由phy驱动进行记录,prp驱动来读。
52.根据上述方法,采用c语言对控制器驱动进行编写,编译,并完成控制器驱动的调试。测试结果表明本发明具有很好的可实施性,且性能满足预期。

技术特征:
1.一种并行冗余以太网传输协议栈系统,其特征在于,包括站点管理模块、接收管理模块、发送管理模块和统计管理模块;站点管理模块,用于保存通信站点的地址对信息和序列号信息;接收管理模块,用于接收网络控制器发送的信息,并对该信息进行中的冗余信息进行过滤;然后将过滤后的信息与通信站点的地址对信息和序列号信息进行比对,然后根据比对结果通过发送管理模块进行发送;发送管理模块,用于将网络层的数据进行冗余,通过网络控制器发送至需要接收的网络;统计管理模块,用于对prp网络的状态信息进行统计。2.根据权利要求1所述的一种并行冗余以太网传输协议栈系统,其特征在于,从站点管理模块中获取通信站点的地址对信息和序列号信息,采用hash查找算法,结合链表rcu读写锁;由于网络控制器在发送时需要获取特定节点的序列号,所以需要获取节点链表的rcu读锁进行节点hash查找,如果未命中需要查找的节点信息,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁;该部分的互斥设计保证了信息发送和信息接收能够进行双工数据传输。3.根据权利要求1所述的一种并行冗余以太网传输协议栈系统,其特征在于,接收管理模块在接收消息时,根据接收消息对端节点链表进行hash查找,首先获取端节点链表的读锁,然后根据获取的读锁进行hash查找,如果命中需要查找的节点信息,则递增该节点的发送序列号,然后释放读锁,如果不命中,则首先释放读锁,然后获取端节点链表的写锁,再向链表中添加新节点并递增序列号,最后释放写锁。4.根据权利要求1所述的一种并行冗余以太网传输协议栈系统,其特征在于,接收管理模块在接收消息时,首先进行协议判断,判断prp接收函数是否为prp协议数据,如果不是prp协议数据,则将该prp接收函数的报文进行栈帧标记后直接上传协议栈,然后退出;如果是prp协议数据,则对prp接收函数的尾部协议进行数据处理。5.根据权利要求4所述的一种并行冗余以太网传输协议栈系统,其特征在于,对prp接收函数的尾部协议进行数据处理包括:保存prp接收函数的尾部协议数据,供接收函数使用;去除prp接收函数的报文尾部的prp协议数据。6.根据权利要求5所述的一种并行冗余以太网传输协议栈系统,其特征在于,接收管理模块在接收消息时,对报文结果过滤过程中,区别通用以太网报文和prp报文:linux的skb的长度信息减去rct长度的值等于rct中的报文长度信息,说明skb中报文长度一致;否则可以判定不属于prp报文。7.根据权利要求4所述的一种并行冗余以太网传输协议栈系统,其特征在于,发送管理模块需要发送信息时,需要对端节点链表进行hash查找,首先获取端节点链表的读锁,然后根据获取的读锁进行hash查找,如果命中需要查找的节点信息,则递增该节点的发送序列号,然后释放读锁,如果不命中,则首先释放读锁,然后获取端节点链表的写锁,再向链表中添加新节点并递增序列号,最后释放写锁。8.根据权利要求4所述的一种并行冗余以太网传输协议栈系统,其特征在于,如果报文的长度小于一个单位报文长度与rct长度之差,则采用0对报文填充至报文长度尾部剩余长度与rct长度相等,然后采用rct对报文尾部进行填充。
9.一种并行冗余以太网传输协议栈方法,其特征在于,包括以下步骤:接收到网络控制器发送的信息,对该信息进行中的冗余信息进行过滤,并对该信息进行中的冗余信息进行过滤;然后将过滤后的信息与通信站点的地址对信息和序列号信息进行比对,然后根据比对结果,将需要发送的数据进行冗余,通过网络控制器发送至需要接收的网络,同时对prp网络的状态信息进行统计。10.根据权利要求9所述的一种并行冗余以太网传输协议栈方法,其特征在于,从站点管理模块中获取通信站点的地址对信息和序列号信息,采用hash查找算法,结合链表rcu读写锁;由于网络控制器在发送时需要获取特定节点的序列号,所以需要获取节点链表的rcu读锁进行节点hash查找,如果未命中需要查找的节点信息,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁;该部分的互斥设计保证了信息发送和信息接收能够进行双工数据传输。

技术总结
本发明公开了一种并行冗余以太网传输协议栈系统及实现方法,通过采用站点管理模块保存通信站点的地址对信息和序列号信息;采用接收管理模块接收网络控制器发送的信息,并对该信息进行中的冗余信息进行过滤;然后将过滤后的信息与通信站点的地址对信息和序列号信息进行比对,然后根据比对结果通过发送管理模块进行发送;发送管理模块将网络层的数据进行冗余,通过网络控制器发送至需要接收的网络;用于对PRP网络的状态信息进行统计,解决了滑窗算法在三层交换和组播通信中出现的丢包问题,扩展了原有PRP协议栈不支持三层交换的问题,通过简单的设计,提高了算法的稳定性和准确性。性。性。


技术研发人员:郑欣 高洪宇 杭欣静 范捷
受保护的技术使用者:西安微电子技术研究所
技术研发日:2023.03.21
技术公布日:2023/7/22
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐