一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Bond机制的PRP协议实现方法与流程

2022-11-09 22:49:39 来源:中国专利 TAG:

一种基于bond机制的prp协议实现方法
技术领域
1.本发明属于高可用通信技术领域,特别是涉及一种基于bond机制的prp协议实现方法。


背景技术:

2.iec 62439-3:2016制定了(parallel redundancy protocol,prp)并行冗余协议标准,prp是控制领域为提高网络通信的可靠性,在tcp/ip基础上改进的一种零丢包通信机制,prp通过连接在两个独立的子网上的两个网口发送复制的、在数据尾部追加prp特定信息(帧号、长度、prp协议类型、端口号等)字段的报文,接收方也通过连接在独立的子网上的两个网口接收报文,通过对数据尾部prp特定信息判断,提交先接收到的报文,丢弃后接收到的重复帧。
3.linux操作系统已经得到广泛应用,但当前主流的3.10、4.4、4.14、4.19、5.4等内核版本并不支持prp协议。最新的(2020年8月后)内核版本开始在链路层增加对prp协议支持,但需要向低版本内核反向移植,且不支持与网络中同时存在普通单节点和prp双节点的通信。
4.linux内核提供了多网卡的bond驱动机制,该机制可以将多个网卡进行绑定,提供多种工作模式,包括平衡轮询、双冗余、平衡xor、广播等7种工作模式。当将两个或多个物理网卡通过bond驱动进行绑定时,生成一个虚拟的名为bond开头的管理网卡(在此称master网卡),两个或多个物理网卡称为slave网卡。虽然bond驱动也提供双冗余模式,这种模式采用主从备份切换技术,根据网络状态来切换网络,但切换时间长,造成系统延迟过大甚至丢帧,可靠性不高。


技术实现要素:

5.本发明目的在于解决现有bond驱动切换时间长,造成系统延迟过大甚至丢帧,可靠性不高的问题。提出一种基于bond机制的prp协议实现方法,该方法不需修改应用程序代码和具体的物理网卡驱动,对应用程序完全透明,具有网络单点故障时不丢帧、高可靠以及部署方便灵活的特点,具备同时与普通单节点和prp双节点通信的能力,增强网络通信的可靠性与兼容性。
6.为了实现本发明目的,本发明公开了一种基于bond机制的prp协议实现方法,包括以下步骤:
7.步骤1、在linux系统的bond驱动的工作模式中新增prp协议模式,用于针对prp协议的报文进行收发处理;bond驱动中预设有mode参数,加载bond驱动时,向mode传入prp协议模式值,用于bond驱动切换模式时使用;
8.步骤2、将两个(实际应用中不限于两个物理网卡,也可以是多个物理网卡)物理网卡作为slave网卡通过bond驱动进行绑定,生成名为bondx的虚拟master网卡,其中x是指虚拟master的编号,为大于等于零的整数;
9.步骤3、当bond驱动处于prp协议工作模式下发送报文时,根据prp协议格式在报文尾部增加prp协议特征码,然后分别通过master网卡下处于link up状态(已连接状态)的slave网卡发送该prp报文;
10.步骤4、当bond驱动处于prp协议工作模式下接收报文时,根据prp协议特征码解析报文;如果接收的是prp报文,根据prp协议特征码中的帧序号判断该报文是否为首次接收,若是首次接收,则对报文尾部移除prp特征码,提交到上层协议栈;否则,该报文为重复帧,则直接丢弃。
11.进一步地,步骤2中,当bond驱动处于prp协议模式时,两个slave网卡设置相同的mac地址、组播地址和最大mtu值;两个slave网卡共用master网卡的ip地址。
12.进一步地,master网卡的mtu值设为slave网卡的最大mtu值减去prp协议特征码长度。
13.进一步地,为兼容与单节点san通信,定义san节点地址列表;san节点地址列表中地址基于mac地址或ip地址,能够向该列表动态增加或删除节点地址。
14.进一步地,步骤3中,当bond驱动处于prp协议工作模式下发送报文时,具体步骤如下:
15.步骤3-1、检查目的地址是否在san地址列表中,若目的地址在san地址列表中则直接发送报文,不采用prp协议封装通信;若目的地址不在san地址列表中,则执行步骤3-2;
16.步骤3-2、根据prp协议规定,在标准报文的尾部增加prp特征码;
17.步骤3-3、分别判断基于master网卡下的slave网卡是否为link up状态,如果是则通过各slave网卡端口分别发送prp报文;prp报文从多端口分别发送时,第二个发送的端口需要复制一份数据帧用于发送冗余。
18.进一步地,prp报文在标准以太网tcp/ip报文的数据单元与fcs校验单元之间,增加了冗余控制标识rct;冗余控制标记rct由6字节组成,包括帧序号、网口号lan、帧长度、协议后缀。
19.进一步地,步骤4中,prp协议工作模式下,通过在bond驱动中注册接收报文的回调处理函数接收报文,所述回调处理函数能够截获两个slave网卡收到的报文,并根据prp协议特征码解析报文。
20.进一步地,步骤4中,当bond驱动处于prp协议工作模式下接收报文时,具体步骤如下:
21.步骤4-1、根据prp协议特征码进行判断,如果接收的报文为非prp协议报文,直接上传到上层协议栈;否则执行步骤4-2;
22.步骤4-2、根据冗余控制标识rct中的帧序号判断该报文是否在prp协议接收窗口内;若是转4-3;否则丢弃该报文并统计;
23.步骤4-3、判断该报文是否为首次接收,若是,将该报文尾部prp特征码移除,提交到上层协议栈并进行统计;否则该报文为重复报文,则丢弃该报文并统计。
24.与现有技术相比,本发明的显著进步在于:1)本方法在linux系统下实现并行双冗余网路协议软件,具有网络单点故障时不丢帧、网络通信业务零故障恢复时间的特征,大大增强网络通信的可靠性;2)本方法同时可以兼容传统非并行冗余网络节点的单网卡设备的网络通信,能够进一步扩大系统网络的兼容性。
25.为更清楚说明本发明的功能特性以及结构参数,下面结合附图及具体实施方式进一步说明。
附图说明
26.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
27.图1为本发明中基于bond机制的prp层次图;
28.图2为本发明中prp帧格式示意图;
29.图3为本发明整体流程示意图。
具体实施方式
30.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
31.如图3所示,一种基于bond机制的prp协议实现方法,包括以下步骤:
32.步骤1、在linux系统的bond驱动的工作模式中新增prp协议工作模式,用于针对prp协议的报文进行收发处理;bond驱动中预设有mode参数,加载bond驱动时,向mode传入prp协议工作模式值,用于bond驱动切换模式时使用;
33.步骤2、将两个物理网卡作为slave网卡通过bond驱动进行绑定,生成名为bondx的虚拟master网卡,其中x是指虚拟master的编号,为大于等于零的整数;
34.步骤3、当bond驱动处于prp协议工作模式下发送报文时,根据prp协议格式在报文尾部增加prp协议特征码,然后分别通过master网卡下处于link up状态的slave网卡发送该prp报文;
35.步骤4、当bond驱动处于prp协议工作模式下接收报文时,根据prp协议特征码解析报文;如果接收的是prp报文,根据prp协议特征码中的帧序号判断该报文是否为首次接收,若是首次接收,则对报文尾部移除prp特征码,提交到上层协议栈;否则,该报文为重复帧,则直接丢弃。
36.实施例
37.prp协议格式可参考iec62439-3-2016并行冗余协议(parallel redundancy protocol,prp)标准,图1为基于bond机制的prp层次图,自底向上分别为物理网卡(a、b),链路层bond驱动,上层网络协议栈和应用程序,通过在bond驱动中进行扩展设计,实现双端口网络a、b对prp协议的收发处理;发送时在bond驱动中将标准以太网帧封装成prp报文格式;接收时,对prp报文格式解封成标准以太网协议格式提交给上层协议栈处理。本实施例的具体内容如下:
38.s1、在bond驱动的prp工作模式中增加一种工作模式即prp协议模式,用于针对prp协议进行收发处理;bond驱动中有个mode参数,加载bond驱动时,向mode传入prp协议模式值;
39.s2、定义一个san地址配置列表,san节点地址配置列表可基于mac地址或ip地址,
可向该列表动态增加或删除节点地址。
40.s3、通过ifenslave命令将两个物理网卡(slave网卡)通过bond驱动进行绑定,绑定名为bondx虚拟网卡(master网卡),(x为》=0整数)。两个slave网卡设置相同的mac地址、组播地址和最大mtu值;两个slave网卡共用master网卡的ip地址;master网卡的mtu值设为slave网卡的最大mtu值减出prp特征码长度(即为6)。
41.s4、在bond驱动发送时,当为prp工作模式时,包括以下处理步骤:
42.s4-1、检查目的地址是否在san地址列表中,如果是从当前网口发送报文;否则转下一步;
43.s4-2、根据prp协议规定,在标准报文的尾部增加prp特征码;
44.prp报文是在标准以太网tcp/ip报文的数据单元与fcs校验单元之间,增加了冗余控制标识rct(redundancy check trailer,rct)。冗余控制标记rct由6字节组成,结构如图2所示。
45.(1)帧序号:16位(bit),每次发送加1;
46.(2)网口号lan:4位(bit),网口a为1010,网口b为1011;
47.(3)帧长度(lsdu长度):12位(bit),等于用户数据区长度加6;
48.(4)协议后缀:16位(bit),设为常值0x88fb。
49.s4-3、分别判断基于master网卡下slave物理网卡是否为link up状态,如果是则分别发送prp报文。prp报文从多端口分别发送时,第二个发送的端口需要复制一份数据帧用于发送冗余。
50.s5、在bond驱动接收时,在注册master网卡接收报文的回调处理函数中,根据prp协议特征码解析报文。该回调处理函数可以截获两个slave物理网卡收到的报文。接收包括以下处理步骤:
51.s5-1、根据prp协议特征码进行判断,如果为非prp协议报文,直接上传到协议栈;否则转5-2;
52.s5-2、根据序列号判断该报文是否在接收窗口内;若是转5-3;否则丢弃该帧并统计。
53.s5-3、判断该报文是否为首次接收,若是,将该报文尾部移除prp特征码,提交到上层并进行统计;否则该报文为重复帧,则丢弃该帧并统计。
54.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
55.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献