System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及rdma通信,具体涉及一种证券核心交易系统中多块rdma网卡实现主备模式的系统。
技术介绍
1、rdma网卡是一种融合了rdma(remote direct memory access,远程直接内存访问)技术的以太网卡。rdma技术允许网络中的计算机直接从内存里交换数据,而无需经过cpu的介入,从而显著提高了数据传输的效率,降低了延迟,并减轻了cpu的负担。在计算机网络领域,“网卡绑定”(network interface bonding),其中“bond”可以理解为将多个网络接口绑定在一起以提高网络可靠性和性能的技术手段。
2、当前主流的bond主备模式下rdma通讯架构,是由同pcie(peripheral componentinterconnect express,高速串行计算机扩展总线标准)设备(外设组件互连快速总线设备)的两个port(物理接口)建立bond绑定关系,从而与其他设备进行rdma通讯的方式。相较传统的无bond主备模式的rdma架构,此架构在应对端口断开等突发情况时具有一定的稳定性。
3、现有的bond主备模式下的rdma通讯无法跨pcie设备,意味着当一个pcie设备只有一个端口时,该方案就无法覆盖了。实际生产生活中会出现pcie设备只有一个端口的规格,或者因其他端口出现故障导致只有一个端口可用的情况,现有技术就无法解决了。同时,由于该方案下两个端口都在一张卡上,故当该板卡出现故障时,两个端口可能都无法工作,抗风险能力较弱,同时,该方案依赖硬件驱动实现,当前支持该功能的
技术实现思路
1、为了有助于解决上述技术问题,本申请提供一种证券核心交易系统中多块rdma网卡实现主备模式的系统,采用如下的技术方案:
2、一种证券核心交易系统中多块rdma网卡实现主备模式的系统,其中,所述系统包括:
3、资源管理子系统,资源管理子系统包括用户态虚拟设备的提供者模块,用户态虚拟设备的提供者模块用于创建虚拟bond模块,虚拟bond模块用于管理处于绑定状态的两个真实的rdma设备,当上层app创建或销毁rdma资源时,虚拟bond模块将同时通知两个真实rdma设备创建或销毁相应的rdma资源;
4、主备切换子系统,在主备切换子系统中,虚拟bond模块在内核态将监听linux内核bond模块的bond事件,当发生切换时,将通过共享内存的方式通知用户态,用户态接收到切换事件后将对原主设备进行队列对端断链,再对新主设备进行队列对端建链和补发数据报文的操作;
5、io传输子系统,在io传输子系统中,虚拟bond模块用于同步拷贝发送的发送/接收队列数据到一个临时队列中,以备后续主备切换时恢复io数据。
6、优选的,资源管理子系统包括互相连接的用户态虚拟设备的提供者模块和内核态虚拟设备驱动接口模块,用户态虚拟设备的提供者模块用于创建虚拟bond模块,当上层应用程序初始化资源、修改、销毁rdma资源时,虚拟bond模块将通知真实rdma设备同步创建、修改、销毁相对应的rdma资源,并通知内核态虚拟设备驱动模块创建虚拟bond模块的rdma资源。
7、优选的,虚拟bond模块通过以下方式创建rdma资源:
8、步骤s11:上层软件调用创建rdma资源的接口,若成功则执行步骤s21;
9、步骤s21:活动侧pcle设备创建rdma资源,若成功则执行步骤s31;
10、步骤s31:备份侧pcle设备创建rdma资源,若成功则执行步骤s41;
11、步骤s41:rdma软件创建rdma资源,若成功则执行步骤s51;
12、步骤s51:根据pcle设备索引建立rdma资源的映射关系,若成功则创建成功。
13、优选的,主备切换子系统包括监听模块和主备切换管理模块,监听模块用于向linux内核bond模块注册回调,实时响应主备切换事件,主备切换管理模块用于在io期间从linux内核接收到的主备切换事件,并对备用设备进行队列对端断链,对主设备进行队列对端建链。
14、优选的,主备切换管理模块通过以下方式在io期间从linux内核接收到的主备切换事件,并对备用设备进行队列对端断链,对主设备进行队列对端建链:
15、步骤s21:判断变更状态标志,若变更状态标志为1,则更新当前主设备的索引,否则执行步骤s26;
16、步骤s22:断开当前未工作设备和对端的队列对连接;
17、步骤s23:通过tcp传输控制协议连接通知对端设备本端更新后的队列编号信息;
18、步骤s24:判断本端是否做发送操作,若是,则建立和对端的队列对连接并设置状态为请求发送,若不是,则建立和对端的队列对连接并设置状态为准备接收并执行步骤s26;
19、步骤s25:判断是否有不可靠数据报报文,若是,则执行,若否,则补发发送报文;
20、步骤s26:结束。
21、优选的,在io传输子系统中,rdma软件在进行发送操作时,将创建新队列,新队列用于保存正在进行rdma传输的发送队列信息和传输状态,当主备切换时,目标设备将会从新队列中获取到之前传输的发送队列信息,将处于待传输状态的工作请求重新做发送操作处理。
22、优选的,所述系统还包括应用程序模块,应用程序模块用于通过verbs统一接口与下层的虚拟bond模块交互,发起rdma操作。
23、优选的,所述系统还包括linux bond内核模块,linux bond内核模块用于管理物理网卡的bond状态,当主用网卡故障时,触发主备切换流程,并更新主备切换状态。
24、综上所述,本申请具有以下有益效果:
25、1. 本专利技术提出了一种基于bond主备模式下跨pcie设备的rdma的通讯方案,可更好的应对pcie设备或端口故障导致的rdma数据传输失败的问题。
26、2. 本专利技术对上层应用和硬件方面没有依赖,可适配多种软件工具或硬件;
27、3. 在正常io或发生切换时的io的情况下,不涉及复杂的处理逻辑,对性能影响较小。
本文档来自技高网...【技术保护点】
1.一种证券核心交易系统中多块RDMA网卡实现主备模式的系统,其特征在于,所述系统包括:
2.根据权利要求1所述的证券核心交易系统中多块RDMA网卡实现主备模式的系统,其特征在于,资源管理子系统包括互相连接的用户态虚拟设备的提供者模块和内核态虚拟设备驱动接口模块,用户态虚拟设备的提供者模块用于创建虚拟bond模块,当上层应用程序初始化资源、修改、销毁RDMA资源时,虚拟bond模块将通知真实RDMA设备同步创建、修改、销毁相对应的RDMA资源,并通知内核态虚拟设备驱动模块创建虚拟bond模块的RDMA资源。
3.根据权利要求2所述的证券核心交易系统中多块RDMA网卡实现主备模式的系统,其特征在于,虚拟bond模块通过以下方式创建RDMA资源:
4.根据权利要求1所述的证券核心交易系统中多块RDMA网卡实现主备模式的系统,其特征在于,主备切换子系统包括监听模块和主备切换管理模块,监听模块用于向Linux内核bond模块注册回调,实时响应主备切换事件,主备切换管理模块用于在IO期间从Linux内核接收到的主备切换事件,并对备用设备进行队列对端断链,
5.根据权利要求4所述的证券核心交易系统中多块RDMA网卡实现主备模式的系统,其特征在于,主备切换管理模块通过以下方式在IO期间从Linux内核接收到的主备切换事件,并对备用设备进行队列对端断链,对主设备进行队列对端建链:
6.根据权利要求1所述的证券核心交易系统中多块RDMA网卡实现主备模式的系统,其特征在于,
7.根据权利要求1所述的证券核心交易系统中多块RDMA网卡实现主备模式的系统,其特征在于,所述系统还包括应用程序模块,应用程序模块用于通过Verbs统一接口与下层的虚拟bond模块交互,发起RDMA操作。
8.根据权利要求1所述的证券核心交易系统中多块RDMA网卡实现主备模式的系统,其特征在于,所述系统还包括Linux bond内核模块,Linux bond内核模块用于管理物理网卡的bond状态,当主用网卡故障时,触发主备切换流程,并更新主备切换状态。
...【技术特征摘要】
1.一种证券核心交易系统中多块rdma网卡实现主备模式的系统,其特征在于,所述系统包括:
2.根据权利要求1所述的证券核心交易系统中多块rdma网卡实现主备模式的系统,其特征在于,资源管理子系统包括互相连接的用户态虚拟设备的提供者模块和内核态虚拟设备驱动接口模块,用户态虚拟设备的提供者模块用于创建虚拟bond模块,当上层应用程序初始化资源、修改、销毁rdma资源时,虚拟bond模块将通知真实rdma设备同步创建、修改、销毁相对应的rdma资源,并通知内核态虚拟设备驱动模块创建虚拟bond模块的rdma资源。
3.根据权利要求2所述的证券核心交易系统中多块rdma网卡实现主备模式的系统,其特征在于,虚拟bond模块通过以下方式创建rdma资源:
4.根据权利要求1所述的证券核心交易系统中多块rdma网卡实现主备模式的系统,其特征在于,主备切换子系统包括监听模块和主备切换管理模块,监听模块用于向linux内核bond模块注册回调,实时响应主备切换事件,主备切换管理模块用于在io...
【专利技术属性】
技术研发人员:范宋锃,韩大伟,潘晓春,刘凯,林征,
申请(专利权)人:上交所技术有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。