一种Linux模块化PRP协议栈系统技术方案

技术编号:34919017 阅读:23 留言:0更新日期:2022-09-15 07:10
本发明专利技术公开了一种Linux模块化PRP协议栈系统,在Linux系统内核中采用虚拟网络设备模块的方式实现了一个桥阶层的协议栈,利用虚拟层的处理达到了无需修改网络设备驱动即可实现对并行冗余网络设备收发流程的复杂处理,对各种网络设备兼容性很好,高效实现了在并行冗余数据到来时的实时处理性能、极大程度降低了原有算法对内存的消耗,能很好满足并行冗余协议的指标要求,结合链表RCU读写锁,由于TX在发送时需要获取特定节点的序列号,所以通过获取节点链表的RCU读锁进行节点HASH查找,如果未命中该节点,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁;保证了RX和TX能够进行双工数据传输。输。输。

【技术实现步骤摘要】
一种Linux模块化PRP协议栈系统


[0001]本专利技术属于实时、高速、高可靠的以太网数据通信领域,涉及一种并行冗余以太网传输协议实现方法,具体为一种Linux模块化PRP协议栈系统。

技术介绍

[0002]并行冗余以太网适用于对可靠性和容错性要求较高的以太网数据通信领域。
[0003](1)目前针对并行冗余以太网产品有Keyland的并行冗余模块,内部采用操作系统结合协议栈的方式实现,价格昂贵。并行冗余的实现需要结合外部特定的硬件模块来实现,没有软件直接集成到操作系统中的并行冗余产品。
[0004](2)目前针对并行冗余的算法主要是基于滑窗算法,窗口移动算法在多路径和多核心处理的环境中上会出现乱序现象,进而导致丢包。
[0005](3)目前没有直接针对Linux操作系统,通过软件的方式在协议栈中实现并行冗余特性;基本都是直接修改网络控制器驱动以实现PRP功能。采用现有的方法,实时处理性能低,对内存的消耗大。

技术实现思路

[0006]本专利技术的目的在于提供一种Linux模块化PRP协议栈系统,以克服现有技术的不足。
[0007]一种Linux模块化PRP协议栈系统,包括节点管理模块、接收管理模块、发送管理模块和统计管理模块;
[0008]节点管理模块和接收管理模块用于实现并行冗余的节点和序列号管理;发送管理模块和统计管理模块用于实现对网络设备和以太网数据接口的对接。
[0009]优选的,节点管理模块用于管理PRP协议栈需要和网络上的诸外部节点通信的网络节点数据信息。
[0010]优选的,采用HASH查找算法,结合链表RCU读写锁。
[0011]优选的,获取节点链表的RCU读锁进行节点HASH查找,如果未命中该节点,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁。
[0012]优选的,接收管理模块采用序列号滑窗算法,接收到新序列号时滑窗向前移动并对下一个要到来的新序列号进行预测。
[0013]优选的,还包括用于监控多路冗余网络链路的健康状态的通道状态探测模块。
[0014]优选的,采用RCU记录所有指向共享数据的指针的使用者,当要修改该共享数据时,首先创建一个副本,在副本中修改,所有读访问线程都离开读临界区之后,指针指向新的修改副本的指针,并且删除旧数据。
[0015]优选的,在PRP的TX方向,判断待发送数据是否为SG数据,如果是SG数据,并且NIC不具备SG发送能力,需要在发送前进行一次线性化处理,如果NIC具备SG发送能力,则将SKB分解成BDMA数据的线性化数据逐个进行线性化发送。
[0016]优选的,将L3的报文先根据NIC的设备能力进行线性化处理,并留有6个字节的PRP报文尾部内存空间,然后通过递减SKB的引用计数将SKB不断通过修改PRP尾部数据后,在各个NIC通道进行发送,直到这个序列号数据帧发送完成。
[0017]优选的,对于发送来说,如果链路出现问题,该链路则不进行冗余发送,对于接收来说,如果链路出现问题,则该链路上无法接收到相应健康链路上的报文,则会对其进行统计。
[0018]与现有技术相比,本专利技术具有以下有益的技术效果:
[0019]本专利技术一种Linux模块化PRP协议栈系统,在Linux系统内核中采用虚拟网络设备模块的方式实现了一个桥阶层的协议栈,利用虚拟层的处理达到了无需修改网络设备驱动即可实现对并行冗余网络设备收发流程的复杂处理,对各种网络设备兼容性很好,高效实现了在并行冗余数据到来时的实时处理性能、极大程度降低了原有算法对内存的消耗,能很好满足并行冗余协议的指标要求。
[0020]优选的,结合链表RCU读写锁,由于TX在发送时需要获取特定节点的序列号,所以通过获取节点链表的RCU读锁进行节点HASH查找,如果未命中该节点,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁;保证了RX和TX能够进行双工数据传输。
[0021]本专利技术利用散列表、滑窗算法数据结构实现了对节点数据及序列数据的增删改查操作。配置方便,算法高效,可实现并行冗余对数据包实时处理的需求;
[0022]本专利技术针对Linux所特有的套接字缓冲区内存机制的特征,及不同的网络设备DMA传输的特点进行了很好的兼容,对SGDMA和BDMA数据的处理兼容。
附图说明
[0023]图1为本专利技术实施例中系统结构示意图。
[0024]图2为本专利技术实施例中并行冗余数据发送处理流程框图。
[0025]图3为本专利技术实施例中PEER节点的创建于删除流程图。
[0026]图4为本专利技术实施例中链表节点的查找、创建、删除流程图。
[0027]图5为本专利技术实施例中网络控制器的中断号分配示意图。
[0028]图6为本专利技术实施例中列号顺序到达多核心CPU时导致的序列号乱序现象示意图。
具体实施方式
[0029]为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。
[0030]本专利技术一种Linux模块化PRP协议栈系统,用于并行冗余以太网组网管理及数据传输管理,实现并行冗余实时以太网通信功能,提供标准的Linux网络设备通信接口。
[0031]实时并行冗余协议管理的PRP协议栈系统用于实现对端节点的管理,节点数据序列号的管理,并行冗余协议栈的发送流程,并行冗余协议栈的接收流程管理,并行冗余的设
备管理以及并行冗余协议数据的套接字缓冲区的内存兼容性。
[0032]如图1、图2所示,本专利技术一种Linux模块化PRP协议栈系统,基于HASH和滑窗算法,具体包括节点管理模块1、接收管理模块2、发送管理模块3和统计管理模块4;
[0033]为实现以上功能,需要在设备驱动层之上的二层协议栈实现并行冗余协议处理功能;二层协议栈指网络设备驱动层,PRP协议栈的实现在该网络设备驱动层L2之上并且在网络层L3之下进行,属于桥阶层L2.5实现方案,PRP协议栈在该层处理两个方向的流量:网络发送流量(从网络层L3到来的经过PRP协议栈L2.5发往网络设备驱动L2的出向报文(发送报文,发送报文需要PRP协议栈处理冗余转发);从网络设备驱动L2经过PRP协议栈进入网络层L3的入向报文(接收报文,接收报文需要PRP协议栈进行冗余过滤)。
[0034]在Linux内核协议栈中需要设计符合网络设备(L1)接口特征和符合以太网IPv4及IPv6(L3)接口特征的L2协议栈。
[0035]节点管理模块1和接收管理模块2用于实现并行冗余的节点和序列号管理;发送管理模块3和统计管理模块4用于实现对L1和L3数据接口的对接。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Linux模块化PRP协议栈系统,其特征在于,包括节点管理模块(1)、接收管理模块(2)、发送管理模块(3)和统计管理模块(4);节点管理模块(1)和接收管理模块(2)用于实现并行冗余的节点和序列号管理;发送管理模块(3)和统计管理模块(4)用于实现对网络设备和以太网数据接口的对接。2.根据权利要求1所述的一种Linux模块化PRP协议栈系统,其特征在于,节点管理模块用于管理PRP协议栈需要和网络上的诸外部节点通信的网络节点数据信息。3.根据权利要求2所述的一种Linux模块化PRP协议栈系统,其特征在于,采用HASH查找算法,结合链表RCU读写锁。4.根据权利要求3所述的一种Linux模块化PRP协议栈系统,其特征在于,获取节点链表的RCU读锁进行节点HASH查找,如果未命中该节点,则需要释放链表读锁,然后获取链表写锁对链表进行新节点的添加操作,操作完成后释放写锁。5.根据权利要求1所述的一种Linux模块化PRP协议栈系统,其特征在于,接收管理模块采用序列号滑窗算法,接收到新序列号时滑窗向前移动并对下一个要到来的新序列号进行预测。6.根据权利要求1所述的一种Linux模块化PRP协议栈系统,其特征在于,还包括用于监控多路冗余网络链路的健康状态的通道状...

【专利技术属性】
技术研发人员:郑欣杭欣静范捷杨敏跃
申请(专利权)人:西安微电子技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1