一种基于SMB协议的多通道实现方法及装置与流程

文档序号:11253966阅读:1089来源:国知局
一种基于SMB协议的多通道实现方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种基于smb协议的多通道实现方法及装置。



背景技术:

在存储系统中,服务器和客户端一般都由双链路、多个网口冗余配置。同一客户端与服务器同一时刻只能建立一个子进程,通过该子进程进行一个会话。

随着计算机技术的快速发展,各种通信协议也逐渐发展起来,如smb协议。在smb协议中提出了多通道的概念,使得同一客户端与服务器同时进行多个会话成为可能。

但是如何基于smb协议实现多通道,提高网络连接的可用性,提升服务器性能,是目前本领域技术人员亟需解决的技术问题。



技术实现要素:

本发明的目的是提供一种基于smb协议的多通道实现方法及装置,以提高了网络连接的可用性,提升了服务器性能。

为解决上述技术问题,本发明提供如下技术方案:

一种基于smb协议的多通道实现方法,应用于支持smb协议的服务器,所述方法包括:

在与客户端通过第一子进程建立第一会话之后,如果接收到所述客户端发送的第二连接请求,则根据所述第二连接请求,创建第二子进程;

接收所述客户端发送的针对第二会话的第二建立请求;

通过所述第二子进程将所述第二会话的相关信息发送给所述第一子进程;

通过所述第一子进程响应所述第二建立请求,建立第二会话。

在本发明的一种具体实施方式中,通过以下步骤建立所述第一会话:

接收所述客户端发送的第一连接请求;

根据所述第一连接请求,创建所述第一子进程;

基于所述第一子进程,建立所述第一会话。

在本发明的一种具体实施方式中,在所述创建第一子进程之后,还包括:

通过所述第一子进程与所述客户端进行smb协议第一协商,所述第一协商中携带所述服务器支持多通道的通告信息。

在本发明的一种具体实施方式中,在所述创建第二子进程之后,还包括:

通过所述第二子进程与所述客户端进行smb协议第二协商。

在本发明的一种具体实施方式中,在所述通过所述第二子进程将所述第二会话的相关信息发送给所述第一子进程之后,还包括:

退出所述第二子进程。

一种基于smb协议的多通道实现装置,应用于支持smb协议的服务器,所述装置包括:

子进程创建模块,用于在与客户端通过第一子进程建立第一会话之后,如果接收到所述客户端发送的第二连接请求,则根据所述第二连接请求,创建第二子进程;

建立请求接收模块,用于接收所述客户端发送的针对第二会话的第二建立请求;

信息发送模块,用于通过所述第二子进程将所述第二会话的相关信息发送给所述第一子进程;

第二会话建立模块,用于通过所述第一子进程响应所述第二建立请求,建立第二会话。

在本发明的一种具体实施方式中,还包括第一会话建立模块,用于通过以下步骤建立所述第一会话:

接收所述客户端发送的第一连接请求;

根据所述第一连接请求,创建所述第一子进程;

基于所述第一子进程,建立所述第一会话。

在本发明的一种具体实施方式中,所述第一会话建立模块,还用于:

在所述创建第一子进程之后,通过所述第一子进程与所述客户端进行smb协议第一协商,所述第一协商中携带所述服务器支持多通道的通告信息。

在本发明的一种具体实施方式中,还包括协商模块,用于:

在所述创建第二子进程之后,通过所述第二子进程与所述客户端进行smb协议第二协商。

在本发明的一种具体实施方式中,还包括子进程退出模块,用于:

在所述通过所述第二子进程将所述第二会话的相关信息发送给所述第一子进程之后,退出所述第二子进程。

应用本发明实施例所提供的技术方案,支持smb协议的服务器在与客户端通过第一子进程建立第一会话之后,如果接收到客户端发送的第二连接请求,则根据第二连接请求,创建第二子进程,在接收到客户端发送的针对第二会话的第二建立请求后,通过第二子进程将第二会话的相关信息发送给第一子进程,通过第一子进程响应第二建立请求,建立第二会话。基于smb协议实现了多通道,客户端与服务器通过多通道进行会话,提高了网络连接的可用性,提升了服务器性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中基于smb协议的多通道实现方法的一种实施流程图;

图2为本发明实施例中基于smb协议的多通道实现方法的另一种实施流程图;

图3为本发明实施例中一种基于smb协议的多通道实现装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种基于smb协议的多通道实现方法,该方法应用于支持smb(servermessageblock)协议的服务器。在实际应用中,该服务器中可以配置有多个网络适配器,多个网络适配器最好为同一规格,可以为不同品牌。例如,可以均为千兆网卡或者均为万兆网卡,或者可以采用具有rdma功能的万兆融合卡或者infiniband卡。

参见图1所示,为本发明实施例所提供的一种基于smb协议的多通道实现方法的实施流程图,该方法可以包括以下步骤:

s110:在与客户端通过第一子进程建立第一会话之后,如果接收到客户端发送的第二连接请求,则根据第二连接请求,创建第二子进程。

在本发明实施例中,客户端为支持windowsserver2012或windows8以上系统的客户端。

服务器可以与客户端通过第一子进程建立第一会话。具体的,可以通过以下步骤建立第一会话:

步骤一:接收客户端发送的第一连接请求;

步骤二:根据第一连接请求,创建第一子进程;

步骤三:基于第一子进程,建立第一会话。

为便于描述,将上述三个步骤结合起来进行说明。

服务器在正常工作过程中,如果接收客户端发送的第一连接请求,则可以根据该第一连接请求,创建第一子进程。并基于第一子进程建立第一会话。具体的,客户端可以向第一子进程发送针对第一会话的会话建立请求,第一子进程响应该会话建立请求,建立第一会话。

第一连接请求为客户端向服务器发送的第一个连接请求,在客户端发送第一连接请求之前,其与服务器之间不存在任何会话连接。

在本发明实施例中,在创建第一子进程之后,服务器还可以通过第一子进程与客户端进行smb协议第一协商,第一协商中携带服务器支持多通道的通告信息。在smb协议第一协商过程中,服务器告知客户端其支持多通道。这样客户端可以再次或多次向服务器发送连接请求。

服务器在与客户端通过第一子进程建立第一会话之后,如果接收到该客户端发送的第二连接请求,则可以根据第二连接请求,创建第二子进程。第二连接请求不同于第一连接请求,可以是相对于第一连接请求的第二个连接请求、第三个连接请求等。

s120:接收客户端发送的针对第二会话的第二建立请求。

在创建第二子进程后,客户端可以根据实际需要,向服务器发送针对第二会话的第二建立请求,服务器可以通过第二子进程接收客户端发送的针对第二会话的第二建立请求。

在本发明的一个实施例中,在创建第二子进程之后,服务器还可以通过第二子进程与客户端进行smb协议第二协商。

s130:通过第二子进程将第二会话的相关信息发送给第一子进程。

服务器接收到第二建立请求后,可以通过第二子进程将第二会话的相关信息发送给第一子进程。第二会话的相关信息可以包括会话标识sessionid和端口socket。

s140:通过第一子进程响应第二建立请求,建立第二会话。

第一子进程在接收到第二会话的相关信息后,响应第二建立请求,建立第二会话。第一子进程可以通过创建工作线程异步处理io读写请求和多个socket接口的数据收发。这样,该客户端的第二会话仍然通过第一子进程建立,客户端与服务器间通过单个子进程异步io实现多通道,进行会话。客户端与服务器建立第一会话后,二者之间形成第一个通道,客户端与服务器建立第二会话后,二者之间形成第二个通道,第二个通道后续的会话处理和第一个通道的会话处理均由第一子进程处理,当通道多于两个时,其他通道后续的会话处理可以参照第二个通道的创建流程,全部由一个子进程处理。可以提高客户端吞吐量,提高服务器的网络故障转移能力。

在实际应用中,客户端可以决定使用哪个连接进行会话,会话在至少存在一个连接时有效。服务器在处理i/o操作时可以由工作线程处理,在多通道的网络收发操作可以通过异步处理,充分发挥服务器多cpu和网卡的rss性能。

在本发明的一个实施例中,通过第二子进程将第二会话的相关信息发送给第一子进程之后,可以退出第二子进程。避免第二子进程占用过多资源。

需要说明的是,在本发明实施例各步骤中的客户端均表示同一客户端。

应用本发明实施例所提供的方法,支持smb协议的服务器在与客户端通过第一子进程建立第一会话之后,如果接收到客户端发送的第二连接请求,则根据第二连接请求,创建第二子进程,在接收到客户端发送的针对第二会话的第二建立请求后,通过第二子进程将第二会话的相关信息发送给第一子进程,通过第一子进程响应第二建立请求,建立第二会话。基于smb协议实现了多通道,客户端与服务器通过多通道进行会话,提高了网络连接的可用性,提升了服务器性能。

如图2所示,为本发明实施例的一种具体示例,client为客户端、child1为第一子进程、child2为第二子进程,主要流程如下:

客户端向服务器的主smbd发送连接请求(connect);

主smbd创建第一子进程(fork);

服务器通过第一子进程与客户端进行smb协议协商(negotiate);

客户端向第一子进程发送针对第一会话的第一建立请求(sessionsetup);

第一子进程响应第一建立请求,建立第一会话;

客户端再次向服务器的主smbd发送连接请求(connect);

主smbd创建第二子进程(fork);

服务器通过第二子进程与客户端进行smb协议协商(negotiate);

客户端向第二子进程发送针对第二会话的第二建立请求(sessionsetup(bind)req);

第二子进程将第二会话的相关信息(sessionid、passsocket)发送给第一子进程;

第一子进程响应第二建立请求,建立第二会话(sessionsetup(bind)rep);

第二子进程退出(die)。

相应于上面的方法实施例,本发明实施例还提供了一种基于smb协议的多通道实现装置,应用于支持smb协议的服务器,下文描述的一种基于smb协议的多通道实现装置与上文描述的一种基于smb协议的多通道实现方法可相互对应参照。

参见图3所示,该装置包括以下模块:

子进程创建模块310,用于在与客户端通过第一子进程建立第一会话之后,如果接收到客户端发送的第二连接请求,则根据第二连接请求,创建第二子进程;

建立请求接收模块320,用于接收客户端发送的针对第二会话的第二建立请求;

信息发送模块330,用于通过第二子进程将第二会话的相关信息发送给第一子进程;

第二会话建立模块340,用于通过第一子进程响应第二建立请求,建立第二会话。

应用本发明实施例所提供的装置,支持smb协议的服务器在与客户端通过第一子进程建立第一会话之后,如果接收到客户端发送的第二连接请求,则根据第二连接请求,创建第二子进程,在接收到客户端发送的针对第二会话的第二建立请求后,通过第二子进程将第二会话的相关信息发送给第一子进程,通过第一子进程响应第二建立请求,建立第二会话。基于smb协议实现了多通道,客户端与服务器通过多通道进行会话,提高了网络连接的可用性,提升了服务器性能。

在本发明的一种具体实施方式中,还包括第一会话建立模块,用于通过以下步骤建立第一会话:

接收客户端发送的第一连接请求;

根据第一连接请求,创建第一子进程;

基于第一子进程,建立第一会话。

在本发明的一种具体实施方式中,第一会话建立模块,还用于:

在创建第一子进程之后,通过第一子进程与客户端进行smb协议第一协商,第一协商中携带服务器支持多通道的通告信息。

在本发明的一种具体实施方式中,还包括协商模块,用于:

在创建第二子进程之后,通过第二子进程与客户端进行smb协议第二协商。

在本发明的一种具体实施方式中,还包括子进程退出模块,用于:

在通过第二子进程将第二会话的相关信息发送给第一子进程之后,退出第二子进程。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1