CN117857658A - 一种基于三栈融合的流量通信和动态切换方法及装置 - Google Patents

一种基于三栈融合的流量通信和动态切换方法及装置 Download PDF

Info

Publication number
CN117857658A
CN117857658A CN202311735913.3A CN202311735913A CN117857658A CN 117857658 A CN117857658 A CN 117857658A CN 202311735913 A CN202311735913 A CN 202311735913A CN 117857658 A CN117857658 A CN 117857658A
Authority
CN
China
Prior art keywords
computing node
tcp
storage node
node
rdma
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311735913.3A
Other languages
English (en)
Inventor
韩杏玲
樊小平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202311735913.3A priority Critical patent/CN117857658A/zh
Publication of CN117857658A publication Critical patent/CN117857658A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种基于三栈融合的流量通信和动态切换方法及装置,属于高性能网络领域,该方法通过融合协议栈支持RDMA、用户态TCP和内核态TCP协议三栈合一,能够屏蔽不同传输协议的内部实现差异,为应用提供统一的通信接口,相比于单传输协议的协议栈,应用无需关注各个传输协议的内部实现差异和编程接口,简单易用,不仅能够同时发挥RDMA和TCP协议的技术优势,同时也能够解决只利用RDMA协议无法大规模组网的问题。

Description

一种基于三栈融合的流量通信和动态切换方法及装置
技术领域
本发明属于高性能网络领域,尤其涉及一种基于三栈融合的流量通信和动态切换方法及装置。
背景技术
多年来,TCP/IP协议一直是互联网通信的支柱,传统的内核TCP协议栈功能性能稳定,可靠性强,但是由于中断处理、内核拷贝等机制的存在,导致内核协议栈有很多的性能瓶颈。用户态TCP协议栈可以绕过内核,直接将网络硬件设备的数据给用户态的应用程序使用,可以减少中断和内存拷贝,相比于内核TCP协议栈,性能有大幅度提升。但是高性能计算、分布式存储等应用对网络的要求是超高带宽、超低延迟和超高可靠性,用户态TCP仍然难以满足高性能计算业务的诉求,RDMA能够直接通过网络接口访问内存数据,无需操作系统内核的介入,因此业界一般采用RDMA来替代TCP协议。
但是RDMA网络对于丢包是非常敏感的,在无损状态下可以满速率传输,而一旦发生丢包重传,性能会急据下降,在AZ内部节点通信时,可以通过在交换机上开启PFC和RDMA网卡的拥塞控制机制来避免拥塞丢包,保证RDMA网络的高性能,然而研究表明,大规模RDMA网络容易发生死锁和PFC风暴,从而降低性能,因此当跨AZ通信时,仍然采用RDMA协议,效果并不理想,RDMA网络难以大规模部署。
发明内容
本发明针对现有技术的问题,提供一种基于三栈融合的流量通信和动态切换方法及装置,所采用的技术方案为:
第一方面,一种基于三栈融合的流量通信和动态切换方法,所述方法包括:
S01,对各计算节点和存储节点的融合协议栈进行初始化处理;
S02,根据计算节点,通过发送协商消息记录时间点t1,根据所述协商消息的回复记录时间点t2;
S03,根据配置的往返延时阈值,通过所述时间t1和t2之间的往返延时判断所述计算节点和存储节点是否处于同一个AZ;
S04,当所述计算节点和存储节点属于同一个AZ时,通过集成RDMA作为传输协议建立读写请求;
S14当所述计算节点和存储节点不属于同一个AZ时,通过用户态TCP作为传输协议建立读写请求;
S05,当所述计算节点和存储节点的传输协议出现异常时,所述计算节点将业务数据迁移至内核TCP;
S06,根据所述S04重新建立所述计算节点和存储节点间的读写请求;并将所述内核TCP内的业务数据按照对应的传输类型迁移至所述存储节点内。
进一步的,S04具体包括:
S041,当所述计算节点和存储节点处于同一个AZ,且支持集成RDMA,则选择集成RDMA作为所述计算节点的传输协议;
S042,根据计算节点创建QP,通过QP协商消息在存储节点创建QP,完成所述计算节点和所述存储节点间的RDMA通道;
S043,根据所述RDMA QP通道,所述计算节点向存储节点发出读写请求,实现业务通信。
进一步的,S05具体包括:
S051,所述融合协议栈监控到IB device异常,QP处于error状态,通过所述计算节点建立内核态TCP socket,并向存储节点发送通道连接请求,完成通道连接创建;
S052,所述计算节点将业务数据迁移至所述内核TCP通道,保持读写状态。
进一步的,S06具体包括:
S061,通过所述计算节点回收QP资源并通知存储节点回收QP资源,周期性检查IB网卡状态;
S062,当网卡状态恢复后,重新建立所述计算节点和所述存储节点间的RDMA QP通道;
S063,根据所述RDMA QP通道,通过所述计算节点将业务数据重新迁回RDMA QP内。
进一步的,S14具体包括:
S141,当所述计算节点和存储节点处于不同AZ,且其RTBB大于往返延时阈值、同时支持用户态TCP,则选择用户态TCP作为所述计算节点的传输协议;
S142,根据计算节点创建用户态TCP socket,并向存储节点发起建链请求,通过所述存储节点回复建链请求完成建链;
S143,根据所述建链,通过计算节点向存储节点发出读写请求,实现业务通信。
进一步的,S05具体包括:
S151,所述计算节点出现用户态TCP通道异常时,底层协议栈关闭用户态TCPsocket并创建内核态TCPsocket,向存储节点发出内核态TCP通道连接请求,完成通道创建;
S152,所述计算节点将业务数据迁移至所述内核TCP,保持读写状态。
进一步的,S06具体包括:
S061,所述计算节点重新创建用户态TCP socket,并于存储节点建立用户态TCP通道;
S062,根据所述用户态TCP通道,通过所述计算节点将业务数据重新迁回至用户态TCP内。
第二方面,本发明实施例提供一种基于三栈融合的流量通信和动态切换装置,用于实现第一方面所述的基于三栈融合的流量通信和动态切换方法,所述装置包括:
对外接口模块:用于为应用软件提供统一的调用接口;
连接管理模块,用于实现计算节点和存储节点之间控制消息的协商和传输协议的自适应选择;
任务调度模块,用于管理所述连接管理模块的连接切换,和任务动态的加载和卸载;
任务执行模块,用于将协议中的数据处理封装成任务,并加入到任务执行队列中;
传输协议模块;用于各个底层协议栈的发送和接收处理,包括RDMA协议处理单元、用户态TCP协议处理单元和内核态TCP协议处理模单元。
第三方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时,实现如上述第一方面所述的方法。
第四方面,本发明实施例提供一种计算机存储介质,所述计算机可读取存储介质中存储有计算机程序,所述计算机程序被处理器执行时,用实现如第一方面所述的方法。
本发明有益效果如下:
本发明方法融合协议栈屏蔽三种传输协议的内部实现差异,对上层业务提供统一的调用接口,做到简单易用;
通过主动探测网络环境,并根据通信节点之间的往返时延,自适应选择使用RDMA或者用户态TCP,无需应用干预,能够充分利用网络资源,提升通信性能;
实时监测连接状态和网卡状态,一旦发生网络拥塞或者误操作,导致原有通道不可用时,立即将传输协议切换至高可靠的内核态TCP通道,并在故障恢复后,主动恢复RDMA或者用户态TCP通道,将业务数据重新迁回,整个过程业务完全不用感知,而且可以保证业务通信不中断,可以极大提升通信稳定性和可靠性;
通过融合协议栈既能充分发挥RDMA高性能低时延的优势,同时利用TCP协议作为补充,解决RDMA网络难以大规模网络部署的问题,达到简单易用,高性能,高可靠的目的。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于三栈融合的流量通信和动态切换方法的传输协议自适应选择流程图;
图2是本发明实施例提供的一种基于三栈融合的流量通信和动态切换方法的传输协议故障切换流程图;
图3为本发明实施例提供的一种基于三栈融合的流量通信和动态切换装置的示意图;
图4是本发明实施例提供的传输协议自适应原理示意图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。应该理解,这些描述只是示例性的,并非用于限定本发明的范围。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明公开的概念。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的方法和系统的例子。
首先,对本发明涉及的部分名词进行解释:
TCP(Transmission Control Protocol,传输控制协议):一种提供IP环境下数据可靠传输的协议。
RDMA(Remote Direct Memory Access,远程直接内存访):一种无需经过操作系统/CPU的处理,即可直接读写其他服务器内存数据的技术。
AZ(Availability Zone,可用区),一个或者几个相近的数据中心组成,AZ之间通过低延迟光纤网络互联。
PFC(Priority-based Flow Control,基于优先级的流量控制),基于优先级的流量控制技术,使能了PFC功能的队列,称之为无损队列。当下游设备的无损队列发生拥塞时,下游设备会通知上游设备会停止发送该队列的流量,从而实现零丢包传输。
RTT(Round-Trip Time,往返时延),从发送端发送数据开始,到发送端收到来自接收端的确认,总共经历的时延。
QP(Queue Pair,工作队列),RDMA中对于一个连接的抽象描述。
ACK(Acknowledge character),确认字符,在数据通信中,接收侧发给发送侧的一种传输类控制字符。表示发来的数据已确认接收无误。
实施例一:
图1示出了一种基于三栈融合的流量通信和动态切换方法的传输协议自适应选择流程图;
图2示出了一种基于三栈融合的流量通信和动态切换方法的传输协议故障切换流程图;
本实施例提供的基于三栈融合的流量通信和动态切换方法,包括:
首先,按照S01,对各计算节点A和存储节点C的融合协议栈进行初始化处理;
下一步,按照S02,根据计算节点A,通过发送协商消息记录时间点t1,根据所述协商消息的回复记录时间点t2;
计算节点A创建QP,并发出QP协商消息,包括QP的起始序列号,QP编号,本端gid等信息,存储节点C收到协商消息后,创建QP,并连接QP,同时回复QP协商消息,计算节点A收到回复消息后,连接QP,通知业务连接可用;
下一步,按照S03,根据配置的往返延时阈值,通过所述时间t1和t2之间的往返延时判断所述计算节点A和存储节点C是否处于同一个AZ;
计算节点A计算到存储节点C之间的往返时延RTTA=t2-t1,一般来说同一个AZ内,节点往返时延会小于100us,跨AZ节点往返时延一般会有1ms左右,因此配置阈值threshold为200us,当往返时延小于threshold可认为通信节点在同一个AZ内,否则是跨AZ通信。
下一步,按照S041,当所述计算节点A和存储节点C处于同一个AZ,且支持集成RDMA,则选择集成RDMA作为所述计算节点A的传输协议;
由于RTTA小于threshold,且双方节点都支持RDMA,使用RDMA作为传输协议。
下一步,按照S042,根据计算节点A创建QP,通过QP协商消息在存储节点C创建QP,完成所述计算节点A和所述存储节点C间的QP连接;
计算节点A创建QP,发出QP协商消息,包括QP的起始序列号,QP编号,本端gid等信息,存储节点C收到协商消息后,创建QP,并连接QP,同时回复QP协商消息。
下一步,按照S043,根据所述QP连接,所述计算节点A向存储节点C发出读写请求,实现业务通信;
计算节点A创建RDMA通道QP,并发出QP协商消息,包括QP的起始序列号,QP编号,本端gid等信息,存储节点C收到协商消息后,创建QP,并连接QP,同时回复QP协商消息,计算节点A收到回复消息后,连接QP,通知业务连接可用。
下一步,按照S051,所述融合协议栈监控到IB device异常,QP处于error状态,通过所述计算节点建立内核态TCP连接,并向存储节点发送连接请求,完成连接创建;
计算节点A数据发送任务选取不到可用的数据通道,通知连接管理模块立即创建内核态TCP通道,并向存储节点C发出内核态TCP通道创建请求,存储节点C回复请求,内核TCP通道创建成功;
下一步,按照S052,所述计算节点将业务数据迁移至所述内核TCP,保持读写状态;
即计算节点A重传业务数据时选择内核态TCP通道,将业务数据迁移到内核态TCP通道上,保证IO不中断;
下一步,按照S061,通过所述计算节点A回收QP资源并通知存储节点C回收QP资源,周期性检查IB网卡状态;
通过计算节点A回收QP资源,并通知存储节点C回收QP资源,同时周期性检查IB网卡状态;
计算节点A复位QP状态,并通知对端存储节点C进行复位操作,初始化QP,并尝试与存储节点C重新进行QP协商,直至两端QP连接成功,将RDMA通道状态设置为可用;
下一步,按照S062,当网卡状态恢复后,重新建立所述计算节点A和所述存储节点C间的QP连接;
当网卡恢复后,尝试创建QP,直至QP可以创建成功,并尝试与存储节点C进行QP协商,直至两端QP连接成功;
最后,按照S063,根据所述QP连接,通过所述计算节点A将业务数据重新迁回RDMAQP内。
即通过计算节点A将业务数据重新迁回至RDMA QP上。
计算节点A数据发送任务选择到RDMA通道,将业务数据重新迁回至RDMA通道上;
计算节点A监测内核态TCP通道长时间未使用,销毁内核态TCP通道,并向存储节点C发出销毁请求,存储节点C同步销毁内核态TCP通道。
实施例二:
图1示出了一种基于三栈融合的流量通信和动态切换方法的传输协议自适应选择流程图;
图2示出了一种基于三栈融合的流量通信和动态切换方法的传输协议故障切换流程图;
本实施例提供的基于三栈融合的流量通信和动态切换方法,包括:
首先,按照S01,对各计算节点B和存储节点C的融合协议栈进行初始化处理;
下一步,按照S02,根据计算节点B,通过发送协商消息记录时间点t1,根据所述协商消息的回复记录时间点t2;
计算节点B创建QP,并发出QP协商消息,包括QP的起始序列号,QP编号,本端gid等信息,存储节点C收到协商消息后,创建QP,并连接QP,同时回复QP协商消息,计算节点B收到回复消息后,连接QP,通知业务连接可用;
下一步,按照S03,根据配置的往返延时阈值,通过所述时间t1和t2之间的往返延时判断所述计算节点B和存储节点C是否处于同一个AZ;
计算节点B计算到存储节点C之间的往返时延RTTA=t2-t1,一般来说同一个AZ内,节点往返时延会小于100us,跨AZ节点往返时延一般会有1ms左右,因此配置阈值threshold为200us,当往返时延小于threshold可认为通信节点在同一个AZ内,否则是跨AZ通信。
下一步,按照S141,当所述计算节点B和存储节点C处于不同AZ,且其RTBB大于往返延时阈值、同时支持用户态TCP,则选择用户态TCP作为所述计算节点B的传输协议;
通过获取RTTB,由于RTTB大于阈值threshold,表明计算节点B和存储节点C跨AZ,且计算节点B和存储节点C都支持用户态TCP,因此计算节点B采用用户态TCP作为传输协议。
下一步,按照S142,根据计算节点B创建用户态TCP socket,并向存储节点C发起建链请求,通过所述存储节点C回复建链请求完成建链;
下一步,按照S143,根据所述建链,通过计算节点B向存储节点C发出读写请求,实现业务通信。
计算节点B利用S142中创建的连接,调用数据发送接口,向存储节点C发出读写IO请求,数据发送任务选取到用户态TCP通道,将数据从用户态TCP通道投递到网络中,存储节点C从用户态TCP通道接收到数据,业务实现正常通信;
下一步,按照S151,所述计算节点B出现用户态TCP通道异常时,底层协议栈关闭用户态TCPsocket并创建内核态TCPsocket,向存储节点C发出内核态TCP连接请求,完成TCP通道创建;
计算节点B创建用户态TCP socket,并向存储节点C发起建链请求,存储节点C回复建链请求,建链成功,计算节点B通知业务连接可用;
下一步,按照S152,所述计算节点B将业务数据迁移至所述内核TCP,保持读写状态。
计算节点B通过步骤S151创建的连接,调用消息发送接口,向存储节点C发出读写IO请求,业务实现正常通信。
下一步,按照S061,所述计算节点B创建用户态TCP socket,并于存储节点C建立用户态TCP连接;
计算节点B发现用户态TCP通道异常,底层协议栈关闭TCPsocket,立即创建内核态TCPsocket,并向存储节点C发出内核态TCP连接请求,存储节点C回复请求,通道创建成功;
计算节点B监控到用户态TCP socket异常,设置用户态TCP通道为不可用状态;
计算节点B数据发送任务选取不到可用的数据通道,通知连接管理模块立即创建内核态TCP通道,并向存储节点C发出内核态TCP通道创建请求,存储节点C回复请求,内核态TCP通道创建成功,设置为可用状态;
计算节点B重传业务数据时选择内核态TCP通道,将业务数据立即迁移至内核态TCP通道,保证IO不中断
下一步,按照S062,根据所述用户态TCP通道,通过所述计算节点B将业务数据重新迁回至用户态TCP内;
计算节点B尝试重新创建用户态TCP socket,创建成功之后,尝试与存储节点C进行建立用户态TCP连接,直至连接创建成功;然后通过计算节点B将业务数据重新迁回至用户态TCP通导上。
计算节点B销毁出错的用户态TCP socket,重新创建用户态TCP socket,并尝试与存储节点C重新进行建立用户态TCP连接,直至两端连接成功,将用户态TCP通道设置为可用状态
计算节点B数据发送任务选择到用户态TCP通道,将业务数据重新迁回至户态TCP通道上;
计算节点B监测内核态TCP通道长时间未使用,销毁内核态TCP通道,并向存储节点C发出销毁请求,存储节点C同步销毁内核态TCP通道
本发明通过探测通信节点之间的RTT,根据RTT判断通信双方节点是否位于同一个AZ内,为通信节点自适应选择合适的传输协议,无需应用干预,能够充分利用网络资源,提升通信性能;
同时实时监测连接状态和网卡状态,一旦发生网络拥塞或者网卡异常,导致原有连接不可用时,立即将传输协议切换至高可靠的内核态TCP协议,并在故障恢复后,主动恢复至RDMA或者用户态TCP连接,将业务数据重新迁回,整个过程业务完全不用感知,而且可以保证业务通信不中断,可以极大提升通信稳定性和可靠性;
本发明通过融合协议栈支持RDMA、用户态TCP和内核态TCP协议三栈合一,能够屏蔽不同传输协议的内部实现差异,为应用提供统一的通信接口,相比于单传输协议的协议栈,应用无需关注各个传输协议的内部实现差异和编程接口,简单易用,不仅能够同时发挥RDMA和TCP协议的技术优势,同时也能够解决只利用RDMA协议无法大规模组网的问题。
实施例三:
图2示出了一种基于三栈融合的流量通信和动态切换装置示意图,为实现实施例一所述的方法,如图2所示,本实施例提供的基于三栈融合的流量通信和动态切换装置,包括:
对外接口模块:用于为应用软件提供统一的调用接口;包括融合协议栈资源初始化接口、连接创建接口、数据发送接口、任务处理接口。资源初始化接口中进行各个底层协议栈资源初始化;连接创建接口中创建一个从客户端节点到服务器端节点的一条连接,并返回连接号给应用软件;应用软件调用数据发送接口将数据从一个指定的连接号上发送出去;应用软件循环调用任务处理接口,处理融合协议栈中的各类事件,比如数据异步发送,数据接收等。
连接管理模块,用于实现通信节点双方的控制消息协商,传输协议自适应选择,数据连接创建、状态监测和故障切换等功能;
融合传输栈为AZ内的通信节点优先选择RDMA、为跨AZ通信节点选择用户态TCP,主要是考虑到跨AZ的通信链路信道传输时延大且难以保证无损传输,考虑到RDMA对丢包非常敏感,因此跨AZ节点之间通信已经不适用RDMA。
传输协议自适应选择:支持主动探测通信节点之间的RTT,根据RTT来判断通信节点是否位于同一个AZ内,一般来说同一个AZ内,节点往返时延会小于100us,跨AZ节点往返时延一般会有1ms左右,因此配置阈值threshold为200us,当RTT小于threshold可认为通信节点在同一个AZ内,否则是跨AZ通信(200us并不是绝对情况,可以作为一个参数根据实际网络环境进行配置)。
数据连接创建:融合协议栈中的连接是客户端节点到服务端节点通信连接的抽象描述,通过连接号进行管理。一个连接下管理了多个数据通道,一个通道是一个具体传输协议的通信实例,比如RDMA传输协议下的一个QP,或者TCP传输协议的一个TCP socket。连接初始化时,只会创建高优先级通道,如RDMA通道或者用户态TCP通道,只有当发生故障高优先级通道不可用时,才会创建内核态TCP通道,且当高优先级通道恢复可用后,会及时销毁内核态TCP通道以节约资源;
连接状态监测:实时监控节点上连接状态,设置通道管理状态机,当出现故障时,会设置通道状态为不可用。这样一来,当此时有数据需要发送时就会选不出可用的RDMA通道或者用户态TCP通道,从而触发内核态TCP通道的创建,来保证业务流量不中断。
连接自动修复:融合协议栈具有连接自动修复功能,当通道状态为不可用,会周期性通过复位错误通道或者创建新通道的方式尝试恢复出错通道。当高优先级通道恢复后,通道状态设置为可用,当后续有数据需要发送时可将数据迁回至RDMA或者用户态TCP通道上,实现业务高效稳定传输。
任务调度模块,用于管理所述连接管理模块的连接切换,和任务动态的加载和卸载;
根据连接管理模块中通道使用情况,实现任务动态加载和卸载,比如当本节点上只创建了RDMA类型的通道时,任务调度模块只会加载RDMA类型的任务进行处理;当发生故障创建了内核态TCP通道时,才会加载内核态TCP类型的任务进行处理,且当故障恢复并销毁内核态TCP通道后,内核态TCP类型的任务也会进行卸载,尽可能避免CPU执行无效任务导致CPU资源的浪费。
任务执行模块,是数据面的高性能处理模块,各个协议中的数据发送和数据接收处理都抽象封装成一个个的任务,通过任务调用模块加入到任务执行队列中,应用软件循环调用任务处理接口触发任务执行。任务类型主要包括以下四种:
数据异步发送任务:为了保证数据的可靠传输,融合协议栈以工作线程为粒度创建了异步发送队列,应用软件调用数据发送接口时只是将数据入队到异步发送队列中。数据发送任务会依次尝试将异步发送队列中的数据投递到网络中,并从指定的连接中优先挑选高优先级通道进行发送,只有当高优先级通道不可用时,再去查看内核态TCP通道是否可用,如果内核态TCP通道可用,直接从内核态TCP通道进行发送;直接如果此时内核态TCP通道未创建时,会通知连接管理模块进行创建;当所有通道都不可用时,会周期性尝试发送,直至将数据包投递到网络中。
数据发送成功确认任务:融合协议栈底层传输协议采用可靠RDMA和TCP,当数据被对端接收后,对端都会回复ack进行确认,融合协议栈会调用底层传输协议接口,向底层查询数据包是否被对端ack,只有被ack的数据报文,才会向应用软件进行发送成功确认,以此来保证数据的可靠传输。
数据重传任务:融合协议栈底层传输协议虽然为可靠传输,但是底层数据通道异常时,仍可能遇到数据包丢失情况,为保证数据的完全可靠传输,融合传输栈在公共框架上设计了重传机制。当数据包被投递到网络中后,会为数据包打上一个时间戳,当该数据包超出5s仍未进行发送成功确认,就会进行一次重传,并更新时间戳,直至数据包被成功确认或者是长时间网络异常导致重传次数达到上限,才会将数据包从发送队列中清除,向应用软件返回发送失败。
数据接收任务:调用底层协议栈提供的接口,进行数据接收,并将收到的数据包递交给应用软件进行处理。
传输协议模块;用于各个底层协议栈的发送和接收处理,即提供统一的API接口与调用各个底层协议栈接口,其中,协议栈接口包括RDMA协议处理单元、用户态TCP协议处理单元和内核态TCP协议处理模单元。
实施例四:
本实施例还提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现实施例一或二的方法;
在实际应用中,处理器可以是专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(ProgrammableLogic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器(Microcontroller Unit,MCU)、微处理器或其他电子元件实现,用于执行上述实施例中的方法。
本实施例所实现的方法,如实施例一所记载。
实施例五:
本实施例还提供一种计算机存储介质,所述计算机可读取存储介质中存储有计算机程序,计算机程序被一个或多个处理器执行时,实现实施例一或二的方法;
其中,计算机可读存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本实施例所实现的方法,如实施例一或二所记载。
最后应说明的是,以上实施例仅用以说明本发明实施例的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种基于三栈融合的流量通信和动态切换方法,其特征在于,包括:
S01,对各计算节点和存储节点的融合协议栈进行初始化处理;
S02,根据计算节点,通过发送协商消息记录时间点t1,根据所述协商消息的回复记录时间点t2;
S03,根据配置的往返延时阈值,通过所述时间t1和t2之间的往返延时判断所述计算节点和存储节点是否处于同一个AZ;
S04,当所述计算节点和存储节点属于同一个AZ时,通过集成RDMA作为传输协议建立读写请求;
S14当所述计算节点和存储节点不属于同一个AZ时,通过用户态TCP作为传输协议建立读写请求;
S05,当所述计算节点和存储节点的传输协议出现异常时,所述计算节点将业务数据迁移至内核TCP;
S06,根据所述S04重新建立所述计算节点和存储节点间的读写请求;并将所述内核TCP内的业务数据按照对应的传输类型迁移至所述存储节点内。
2.根据权利要求1所述的一种基于三栈融合的流量通信和动态切换方法,其特征在于,S04具体包括:
S041,当所述计算节点和存储节点处于同一个AZ,且支持集成RDMA,则选择集成RDMA作为所述计算节点的传输协议;
S042,根据计算节点创建QP,通过QP协商消息在存储节点创建QP,完成所述计算节点和所述存储节点间的RDMA QP通道;
S043,根据所述RDMA QP通道,所述计算节点向存储节点发出读写请求,实现业务通信。
3.根据权利要求2所述的一种基于三栈融合的流量通信和动态切换方法,其特征在于,S05具体包括:
S051,所述融合协议栈监控到IB device异常,QP处于error状态,通过所述计算节点建立内核态TCP连接,并向存储节点发送TCP socket连接请求,完成通道创建;
S052,所述计算节点将业务数据迁移至所述内核TCP,保持读写状态。
4.根据权利要求3所述的一种基于三栈融合的流量通信和动态切换方法,其特征在于,S06具体包括:
S061,通过所述计算节点回收QP资源并通知存储节点回收QP资源,周期性检查IB网卡状态;
S062,当网卡状态恢复后,重新建立所述计算节点和所述存储节点间的RDMA QP通道;
S063,根据所述RDMA QP通道,通过所述计算节点将业务数据重新迁回RDMA QP内。
5.根据权利要求1所述的一种基于三栈融合的流量通信和动态切换方法,其特征在于,S14具体包括:
S141,当所述计算节点和存储节点处于不同AZ,且其RTBB大于往返延时阈值、同时支持用户态TCP,则选择用户态TCP作为所述计算节点的传输协议;
S142,根据计算节点创建用户态TCP socket,并向存储节点发起建链请求,通过所述存储节点回复建链请求完成建链;
S143,根据所述建链,通过计算节点向存储节点发出读写请求,实现业务通信。
6.根据权利要求5所述的一种基于三栈融合的流量通信和动态切换方法,其特征在于,S05具体包括:
S151,所述计算节点出现用户态TCP通道异常时,底层协议栈关闭用户态TCP socket并创建内核态TCP socket,向存储节点发出内核态TCP socket连接请求,完成通道创建;
S152,所述计算节点将业务数据迁移至所述内核TCP,保持读写状态。
7.根据权利要求6所述的一种基于三栈融合的流量通信和动态切换方法,其特征在于,S06具体包括:
S061,所述计算节点重新创建用户态TCP socket,并于存储节点建立用户态TCP通道;
S062,根据所述用户态TCP通道,通过所述计算节点将业务数据重新迁回至用户态TCP内。
8.一种基于三栈融合的流量通信和动态切换装置,其特征在于,所述装置包括:
对外接口模块:用于为应用软件提供统一的调用接口;
连接管理模块,用于实现计算节点和存储节点之间控制消息的协商和传输协议的自适应选择;
任务调度模块,用于随传输协议动态变化中,任务动态的加载和卸载;
任务执行模块,用于将协议中的数据处理封装成任务,并加入到任务执行队列中;
传输协议模块;用于各个底层协议栈的发送和接收处理,包括RDMA协议处理单元、用户态TCP协议处理单元和内核态TCP协议处理模单元。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如权利要求1至7中任意一项所述的基于三栈融合的流量通信和动态切换方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读取存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如权利要求1至7中任意一项所述的基于三栈融合的流量通信和动态切换方法。
CN202311735913.3A 2023-12-15 2023-12-15 一种基于三栈融合的流量通信和动态切换方法及装置 Pending CN117857658A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311735913.3A CN117857658A (zh) 2023-12-15 2023-12-15 一种基于三栈融合的流量通信和动态切换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311735913.3A CN117857658A (zh) 2023-12-15 2023-12-15 一种基于三栈融合的流量通信和动态切换方法及装置

Publications (1)

Publication Number Publication Date
CN117857658A true CN117857658A (zh) 2024-04-09

Family

ID=90532000

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311735913.3A Pending CN117857658A (zh) 2023-12-15 2023-12-15 一种基于三栈融合的流量通信和动态切换方法及装置

Country Status (1)

Country Link
CN (1) CN117857658A (zh)

Similar Documents

Publication Publication Date Title
US10965519B2 (en) Exactly-once transaction semantics for fault tolerant FPGA based transaction systems
JP3932994B2 (ja) サーバ引継システムおよびその方法
US7840682B2 (en) Distributed kernel operating system
RU2345408C2 (ru) Улучшение доступности и масштабируемости в системе передачи сообщений способом, прозрачным для приложения
US7043550B2 (en) Method for controlling group membership in a distributed multinode data processing system to assure mutually symmetric liveness status indications
US8667184B2 (en) Distributed kernel operating system
US7203748B2 (en) Method for detecting the quick restart of liveness daemons in a distributed multinode data processing system
US20060179147A1 (en) System and method for connection failover using redirection
KR20040086583A (ko) 두 종단점 사이의 구성 가능한 보증 및 특징을 갖는메시징 전달
CN103370903A (zh) 用于冗余服务器配置中的客户端恢复策略的方法和系统
JP5695558B2 (ja) サーバ故障時におけるクライアント・アプリケーションのより速い回復を可能にするための方法
CN102648612B (zh) 用于管理面向连接的按序传送环境中的连接的方法和系统
US20100082822A1 (en) Technique for realizing high reliability in inter-application communication
US11381505B2 (en) Acknowledgment storm detection
EP3920035B1 (en) Message transmission/reception method, communication device, and program
CN117857658A (zh) 一种基于三栈融合的流量通信和动态切换方法及装置
US8549345B1 (en) Methods and apparatus for recovering from a failed network interface card
CN114826888A (zh) 一种消息发送方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination