数据传输速率控制方法、装置及电子设备转让专利

申请号 : CN202211368991.X

文献号 : CN115426317B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 姚涵毅石峰王国锋

申请人 : 新华三信息技术有限公司

摘要 :

本申请实施例提供一种数据传输速率控制方法、装置及电子设备。在本实施例中,通过将在用户态中获取到的客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号发送给内核态,以便于内核态依据两端端口号监控ACK报文,当快速重传报文DUP ACK的密度大于已设定的密度阈值时,调整该目标TCP连接的当前通告接收窗口,以使得客户端依据调整后的通告接收窗口发送报文,以实现仅调整该目标TCP连接的接收窗口,控制该目标TCP连接直接的数据传输速率,不会影响其他TCP连接的正常数据传输。

权利要求 :

1.一种数据传输速率控制方法,其特征在于,该方法应用于服务端的基板管理控制器BMC,该方法包括:在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号,将所述两端端口号从所述用户态发送至内核态;所述两端端口号中的第一端口号为所述客户端上一端口对应的端口号,第二端口号为所述服务端上一端口对应的端口号;

在内核态基于所述两端端口号监控所述服务端通过所述目标TCP连接向所述客户端传输的快速重传重复确认字符DUP ACK报文;所述DUPACK报文是所述服务端在确认所述客户端发送的镜像数据包发生丢失时发送的;

若确定当前未达到设定丢包条件,则在发起快速重传事件时,若当前未记录快速重传事件次数,则记录快速重传事件次数并将该快速重传事件次数设置为设定值,并记录该快速重传事件中首个DUP ACK报文的第一发送时间戳;若当前已记录快速重传事件次数,则在已记录的快速重传事件次数上增加所述设定值;若当前快速重传事件次数为预设重传次数阈值时,记录最后一次快速重传事件中首个DUP ACK报文的第二发送时间戳;计算所述第一发送时间戳与所述第二发送时间戳的时间戳之差;依据所述时间戳之差以及所述预设重传次数阈值确定所述快速重传的密度;当所述快速重传的密度大于已设定的密度阈值时,则将所述目标TCP连接的当前通告接收窗口调整为目标通告接收窗口,以使得所述客户端依据所述目标通告接收窗口传输报文,所述目标通告接收窗口小于所述当前通告接收窗口。

2.根据权利要求1所述的方法,其特征在于,所述客户端为网络文件系统NFS,所述在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号,包括:在所述用户态中从已获得的NFS系统文件中获取第一端口号以及客户端IP地址;

以所述第一端口号和所述客户端IP地址为关键字,在已获得的TCP系统文件中查找与所述关键字对应的第二端口号。

3.根据权利要求1所述的方法,其特征在于,该方法进一步包括:

当所述快速重传的密度小于或等于已设定的密度阈值时,保持所述目标TCP连接的当前通告接收窗口不变,并记录当前未达到设定丢包条件,返回执行若确定当前未达到设定丢包条件,则基于监控到的DUP ACK报文,计算客户端的快速重传的密度的步骤;

当所述快速重传的密度大于已设定的密度阈值时,记录当前达到设定丢包条件,结束基于监控到的DUP ACK报文,计算客户端的快速重传的密度的操作。

4.根据权利要求1所述的方法,其特征在于,在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号之前,该方法进一步包括:在所述用户态中检测到镜像挂载时,则检测本次镜像挂载过程是否满足指定丢包检测条件以及所述服务端是否已开启速率控制功能,所述指定丢包检测条件为:使用指定型号的共享网卡、使用共享网口以及使用的共享网卡的工作模式为千兆及千兆以上;

若检测到本次镜像挂载过程满足指定丢包检测条件且所述服务端已开启速率控制功能时,则执行在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号的步骤。

5.根据权利要求1所述的方法,其特征在于,所述将所述两端端口号从所述用户态发送至内核态,包括:在所述用户态将所述第一端口号和所述第二端口号写入已在所述内核态新增的文件系统,以使得所述第一端口号和所述第二端口号传输至所述内核态。

6.一种数据传输速率控制装置,其特征在于,该装置应用于服务端的基板管理控制器BMC,该装置包括:端口号获取模块,用于在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号,将所述两端端口号从所述用户态发送至内核态;所述两端端口号中的第一端口号为所述客户端上一端口对应的端口号,第二端口号为所述服务端上一端口对应的端口号;

监控模块,用于在内核态基于所述两端端口号监控所述服务端通过所述目标TCP连接向所述客户端传输的快速重传重复确认字符DUP ACK报文;所述DUPACK报文是所述服务端在确认所述客户端发送的镜像数据包发生丢失时发送的;

通告接收窗口调整模块,用于若确定当前未达到设定丢包条件,则在发起快速重传事件时,若当前未记录快速重传事件次数,则记录快速重传事件次数并将该快速重传事件次数设置为设定值,并记录该快速重传事件中首个DUP ACK报文的第一发送时间戳;若当前已记录快速重传事件次数,则在已记录的快速重传事件次数上增加所述设定值;若当前快速重传事件次数为预设重传次数阈值时,记录最后一次快速重传事件中首个DUP ACK报文的第二发送时间戳;计算所述第一发送时间戳与所述第二发送时间戳的时间戳之差;依据所述时间戳之差以及所述预设重传次数阈值确定所述快速重传的密度;当所述快速重传的密度大于已设定的密度阈值时,则将所述目标TCP连接的当前通告接收窗口调整为目标通告接收窗口,以使得所述客户端依据所述目标通告接收窗口传输报文,所述目标通告接收窗口小于所述当前通告接收窗口。

7.根据权利要求6所述的装置,其特征在于,所述客户端为网络文件系统NFS,所述端口号获取模块具体用于:在所述用户态中从已获得的NFS系统文件中获取第一端口号以及客户端IP地址;

以所述第一端口号和所述客户端IP地址为关键字,在已获得的TCP系统文件中查找与所述关键字对应的第二端口号,所述TCP系统文件用于存储基于所述目标TCP连接确定的第一端口号、客户端IP地址与第二端口号、服务端IP地址的对应关系。

8.根据权利要求6所述的装置,其特征在于,该装置还包括:

第一记录模块,用于当所述快速重传的密度小于或等于已设定的密度阈值时,保持所述目标TCP连接的当前通告接收窗口不变,并记录当前未达到设定丢包条件,返回执行若确定当前未达到设定丢包条件,则基于监控到的DUP ACK报文,计算客户端的快速重传的密度的步骤;

第二记录模块,用于当所述快速重传的密度大于已设定的密度阈值时,记录当前达到设定丢包条件,结束基于监控到的DUP ACK报文,计算客户端的快速重传的密度的操作。

9.一种电子设备,其特征在于,电子设备包括:处理器和存储器;

其中,所述存储器,用于存储机器可执行指令;

所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如权利要求1至5任一所述的方法。

说明书 :

数据传输速率控制方法、装置及电子设备

技术领域

[0001] 本申请涉及数据传输领域,尤其涉及一种数据传输速率控制方法、装置及电子设备。

背景技术

[0002] 在服务端的操作系统(Operating System,OS)中安装系统时,常常需要客户端(例如,键盘视频鼠标、网络文件系统等)将镜像数据包通过服务端的共享网卡发送到服务端的基板管理控制(Baseboard Management Controller,BMC)上,再由BMC将该镜像数据包传输至OS中,这里,镜像数据包从客户端传输到OS的过程中称为镜像挂载。在镜像挂载过程中,共享网卡通过网络控制器边带接口(Network Controller‑Sideband Interface,NC‑SI)通道将镜像数据包发送至BMC,NC‑SI是一种只支持百兆的通讯协议,当客户端与共享网卡通过千兆网连接时,镜像数据包的发送到共享网卡的速度远快于共享网卡通过NC‑SI通道向BMC发送报文的速度,因此会造成共享网卡中提供给BMC的缓冲区出现报文堆积,进一步地,该缓冲区的存储空间较小,会导致报文溢出,出现丢包情况。
[0003] 目前,镜像挂载常基于传输控制协议(Transmission Control Protocol,TCP)来实现。为了减少丢包情况,在TCP协议对应的TCP系统文件中修改通告接收窗口(即相当于修改了TCP协议的通告接收窗口),以使得客户端依据修改后的通告接收窗口发送报文。而使用TCP协议传输的数据除了上述镜像数据包之外,还有其他数据,这样的话在TCP协议对应的TCP系统文件中修改通告接收窗口就会影响其他数据的正常传输。

发明内容

[0004] 有鉴于此,本申请实施例提供一种数据传输速率控制方法,以在不影响其他TCP连接的正常数据传输情况下实现数据传输速率的控制。
[0005] 根据本申请实施例的第一方面,提供一种数据传输速率控制方法,该方法应用于服务端的基板管理控制器BMC,该方法包括:
[0006] 在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号,将所述两端端口号从所述用户态发送至内核态;所述两端端口号中的第一端口号为所述客户端上一端口对应的端口号,第二端口号为所述服务端上一端口对应的端口号;
[0007] 在内核态基于所述两端端口号监控所述服务端通过所述目标TCP连接向所述客户端传输的快速重传重复确认字符DUP ACK报文;所述DUPACK报文是所述服务端在确认所述客户端发送的镜像数据包发生丢失时发送的;
[0008] 若确定当前未达到设定丢包条件,则基于监控到的DUP ACK报文计算客户端的快速重传的密度;当所述快速重传的密度大于已设定的密度阈值时,则将所述目标TCP连接的当前通告接收窗口调整为目标通告接收窗口,以使得所述客户端依据所述目标通告接收窗口传输报文,所述目标通告接收窗口小于所述当前通告接收窗口。
[0009] 根据本申请实施例的第二方面,提供一种数据传输速率控制装置,该方法应用于服务端的基板管理控制器BMC,该装置包括:
[0010] 端口号获取模块,用于在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号,将所述两端端口号从所述用户态发送至内核态;所述两端端口号中的第一端口号为所述客户端上一端口对应的端口号,第二端口号为所述服务端上一端口对应的端口号;
[0011] 监控模块,用于在内核态基于所述两端端口号监控所述服务端通过所述目标TCP连接向所述客户端传输的快速重传重复确认字符DUP ACK报文;所述DUPACK报文是所述服务端在确认所述客户端发送的镜像数据包发生丢失时发送的;
[0012] 通告接收窗口调整模块,用于若确定当前未达到设定丢包条件,则基于监控到的DUP ACK报文计算客户端的快速重传的密度;当所述快速重传的密度大于已设定的密度阈值时,则将所述目标TCP连接的当前通告接收窗口调整为目标通告接收窗口,以使得所述客户端依据所述目标通告接收窗口传输报文,所述目标通告接收窗口小于所述当前通告接收窗口。
[0013] 根据本申请实施例的第三方面,提供一种电子设备,电子设备包括:处理器和存储器;
[0014] 其中,所述存储器,用于存储机器可执行指令;
[0015] 所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如第一方面的方法。
[0016] 在本实施例中,通过将在用户态中获取到的客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号发送给内核态,以便于内核态依据两端端口号监控ACK报文,当快速重传报文DUP ACK的密度大于已设定的密度阈值时,调整该目标TCP连接的当前通告接收窗口,以使得客户端依据调整后的通告接收窗口发送报文,以实现仅调整该目标TCP连接的接收窗口,控制该目标TCP连接直接的数据传输速率,不会影响其他TCP连接的正常数据传输。

附图说明

[0017] 图1是本申请实施例提供的系统安装组网示意图。
[0018] 图2是本申请实施例提供的方法流程图。
[0019] 图3是本申请实施例提供的客户端为NFS时的端口号获取流程图。
[0020] 图4是本申请实施例提供的何时获取第一端口号和第二端口号的判断过程示例图。
[0021] 图5是本申请实施例提供的快速重传的密度计算流程图。
[0022] 图6是本申请实施例提供的报文快速重传的示例图。
[0023] 图7是本申请实施例提供的装置图。
[0024] 图8是本申请实施例装置硬件结构示意图。

具体实施方式

[0025] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0026] 在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0027] 应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0028] 为了使本领域技术人员更好地理解本申请实施例提供的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
[0029] 为了解决丢包,作为一个实施例,镜像挂载常基于传输控制协议(Transmission Control Protocol,TCP)来实现,具体地,服务端在接收到客户端发送的镜像数据包后会通过确认字符(Acknowledge character,ACK)报文将其能够接收报文的大小(即通告接收窗口)发送到客户端,以使得客户端依据该通告接收窗口发送报文。当出现丢包情况时,在TCP协议对应的TCP系统文件中修改通告接收窗口(即相当于修改了TCP协议的通告接收窗口),将修改后的通告接收窗口发送给客户端,以使得客户端依据修改后的通告接收窗口发送报文。而使用TCP协议传输的数据除了上述镜像数据包之外,还有其他数据,这样的话在TCP协议对应的TCP系统文件中修改通告接收窗口就会影响其他数据的正常传输。
[0030] 为此,本申请实施例提出了一种数据传输速率控制方法,以在不影响其他TCP连接的正常数据传输情况下实现数据传输速率的控制。
[0031] 下面对本申请实施例提供的方法进行描述:
[0032] 如图1所示,图1为本申请实施例示出的系统安装组网示意图。在本实施例中,客户端可以为键盘视频鼠标(Keyboard Video Mouse,KVM)、H5 KVM、加密H5 KVM、网络文件系统(Network File System,NFS)、通用Internet文件系统(Common Internet File System、CIFS)等等,本申请实施例并不具限定。这里的H5为新一代构建Web内容的一种语言描述方式HTML5。
[0033] 在图1所示的组网中,还包括如图1所示的服务端,该服务端包括:共享网卡、OS以及BMC。这里,共享网卡指的是服务端的BMC和OS共享使用的网卡。其中,共享网卡提供的共享网口既可以作为业务口直接与OS连接,也可以通过网络控制器边带接口(Network Controller‑Sideband Interface,NC‑SI)通道连接至BMC,以支持基板管理。这里,NC‑SI是一种只支持百兆的以太网与BMC间的通讯协议。
[0034] 在本申请实施例中,共享网卡可以为:I350,本申请实施例并不具体限定。
[0035] 基于图1所示的组网,下面通过图2对本申请实施例提供的方法进行描述,该方法应用于服务端的基板管理控制器BMC。如图1所示,该流程可包括以下步骤:
[0036] S210:在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号,将两端端口号从用户态发送至内核态;两端端口号中的第一端口号为客户端上一端口对应的端口号,第二端口号为服务端上一端口对应的端口号。
[0037] 示例性地,在本实施例中,上述用户态和内核态为BMC的两个运行状态。
[0038] 在本实施例中,上述TCP连接的第一端口为客户端上的一端口,第二端口号为服务端上的一端口。其中,服务端上的端口是固定用于镜像挂载的端口,客户端上的端口可以是随机配置的端口,本申请实施例并不具体限定。
[0039] 示例性地,在本实施例中,上述目标TCP连接可以是在服务端监控到客户端上传系统传镜像文件连接的。
[0040] 示例性地,在本实施例中,本步骤S210中,在用户态中获取目标TCP连接中的两端端口号有很多方法,可以根据不同的客户端确定,本申请实施例并不具体限定。
[0041] 例如,当客户端为上述KVM、H5 KVM以及加密H5 KVM等时,在用户态可以直接调用相关库函数获取第一端口号和第二端口号,例如,利用常规的getpeername函数获取第一端口号,利用常规的getsockname函数获取第二端口号。
[0042] 再例如,当客户端为上述NFS时,如何在在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号可参见下面实施例的举例描述,这里暂不赘述。
[0043] 在本实施例中,本步骤S210中,将两端端口号从用户态发送至内核态的具体实施方式可参见下面实施例的举例描述,这里暂不赘述。
[0044] S220:在内核态基于两端端口号监控服务端通过目标TCP连接向客户端传输的快速重传重复确认字符DUP ACK报文。
[0045] 示例性地,在本实施例中,DUP ACK报文是服务端在确认客户端发送的镜像数据包发生丢失时发送的。在本实施例中,在内核态基于两端端口号监控客户端上的一端口与服务端上一端口之间传输的DUP ACK报文。
[0046] S230:若确定当前未达到设定丢包条件,则基于监控到的DUP ACK报文计算客户端的快速重传的密度;当快速重传的密度大于已设定的密度阈值时,则将目标TCP连接的当前通告接收窗口调整为目标通告接收窗口,以使得客户端依据目标通告接收窗口传输报文,目标通告接收窗口小于当前通告接收窗口。
[0047] 示例性地,上述已设定的密度阈值可以是用户态和内核态提前设置好的,例如,可以通过智能平台管理接口(Intelligent Platform Management Interface,IPMI)命令设置。需要说明的是,在初始时,设置好该密度阈值后,后续还可以通过IPMI命令修改该密度阈值。
[0048] 示例性地,在本实施例中,本步骤S230中,当快速重传的密度大于已设定的密度阈值时,则记录当前达到设定丢包条件,并将目标TCP连接的当前通告接收窗口调整为目标通告接收窗口,不再执行基于监控到的DUP ACK报文,计算客户端的快速重传的密度的操作。这里,目标通告接收窗口小于当前通告接收窗口;当快速重传的密度小于或等于已设定的密度阈值时,保持所述目标TCP连接的当前通告接收窗口不变,并记录当前未达到设定丢包条件,返回执行若确定当前未达到设定丢包条件,则基于监控到的DUP ACK报文,计算客户端的快速重传的密度的步骤。
[0049] 相对应地,在本实施例中,本步骤S230中,确定当前未达到设定丢包条件时,直接从记录中获取即可。
[0050] 在本实施例中,上述目标通告接收窗口可以是提前依据经验设置好的,在调整当前通告接收窗口时,直接调用即可。需要说明的是,在实际处理过程中,该目标通告接收窗口可以通过IPMI命令修改。
[0051] 示例性地,在本实施例中,本步骤S230中,将目标TCP连接的当前通告接收窗口调整为目标通告接收窗口具体可以为将发送到客户端的ACK报文中的通告接收窗口字段对应的当前通告接收窗口调整为目标通告接收窗口。
[0052] 至于如何计算快速重传的密度可参见下面实施例的具体描述,这里暂不赘述。
[0053] 至此,完成图1所示流程。
[0054] 通过图1流程可以看出,本申请实施例中,通过将在用户态中获取到的客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号发送给内核态,以便于内核态依据两端端口号监控ACK报文,当快速重传报文DUP ACK的密度大于已设定的密度阈值时,调整该目标TCP连接的当前通告接收窗口,以使得客户端依据调整后的通告接收窗口发送报文,以实现仅调整该目标TCP连接的接收窗口,控制该目标TCP连接直接的数据传输速率,不会影响其他TCP连接的正常数据传输。
[0055] 对于NFS客户端,由于其自身功能实现机制原因,在获取第一端口号和第二端口号时,是在内核态调用远程过程调用(Remote Procedure Call,rpc)完成的,在用户态无法直接获取到第一端口号和第二端口号。因此,本申请实施例的一个可选实施方式提出了一种间接获取第一端口号和第二端口号的方法,下面对客户端为网络文件系统NFS时,如何在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号进行描述:
[0056] 参见图3,图3为本申请实施例提供的客户端为NFS时的端口号获取流程图。如图3所示,该流程可包括如下步骤:
[0057] S310:在用户态中从已获得的NFS系统文件中获取第一端口号以及客户端IP地址。
[0058] 示例性地,在本实施例中,上述NFS系统文件可以为/proc/fs/nfsfs/servers文件,该/proc/fs/nfsfs/servers文件是linux系统自动生成并维护的,该/proc/fs/nfsfs/servers文件中包括第一端口号以及客户端IP地址。在本步骤S310中,直接从/proc/fs/nfsfs/servers文件中获取第一端口号以及客户端IP地址。
[0059] S320:以第一端口号和客户端IP地址为关键字,在已获得的TCP系统文件中查找与关键字对应的第二端口号。
[0060] 示例性地,在本实施例中,上述TCP系统文件可以为/proc/net/tcp文件或/proc/net/tcp6文件,该TCP系统文件中存储有所有TCP连接对应的客户端端口号、客户端IP地址与服务端端口号和服务端IP地址的对应关系。在本实施例中,获取到第一端口号和客户端IP地址以后,以第一端口号和客户端IP地址为关键字,在已获得的/proc/net/tcp文件或/proc/net/tcp6文件中查找与上述关键字对应的第二端口号。
[0061] 至此,完成图3所示流程的描述。
[0062] 通过图3流程实现了客户端为网络文件系统NFS时,获取目标TCP连接中的第一端口号和第二端口号。
[0063] 参见图4,图4为本申请实施例提供的何时获取第一端口号和第二端口号的判断过程示例图。如图4所示,该流程可包括如下步骤:
[0064] S410:在用户态中检测到镜像挂载时,则检测本次镜像挂载过程是否满足指定丢包检测条件以及服务端是否已开启速率控制功能。
[0065] 示例性地,在本实施例中,上述指定丢包检测条件可以为:使用指定型号的共享网卡、使用共享网口以及使用的共享网卡的工作模式为千兆及千兆以上,即同时满足上述使用指定型号的共享网卡、使用共享网口以及使用的共享网卡的工作模式为千兆及千兆以上,才能确认满足指定丢包检测条件。
[0066] 在本实施例中,上述指定型号的共享网卡可以为I350网卡,当然,上述指定型号的共享网卡也可以为其他型号的网卡,本申请实施例并不具体限定。
[0067] 对于使用指定共享网卡的检测,以指定网卡为I350网卡为例进行描述,可通过第一预设命令(例如, NC‑SI手册中提供的NC‑SI 0x15命令)获取。例如,当在BMC用户态输入NC‑SI 0x15命令后,接收到49 33 35 30 时,就指示该网卡为I350网卡。本申请实施例对上述第一预设命令不作具体限定,可以根据实际情况设定。
[0068] 对于使用共享网口的检测,可使用常规的getifaddrs函数获取。
[0069] 对于使用的共享网卡的工作模型为千兆及以上的检测,在本实施例中,可通过第二预设命令(例如, NC‑SI手册中提供的NC‑SI 0X0A命令)获取到协商速率,若协商速率为千兆或者万兆时,确认使用的共享网卡为千兆及以上模式。
[0070] 示例性地,在本实施例中,上述速率控制功能是用户态和内核态提前配置好的,例如,可以通过IPMI命令设置。
[0071] 需要说明的是,上述对指定丢包条件的判定以及速率控制功能开启的检测可以同时进行,也可以先判定是否满足指定丢包条件,再检测是否开启速率控制功能,还可以先检测是否开启速率控制功能,再判定是否满足指定丢包条件,本申请实施例并不具体限定。
[0072] S420:若检测到本次镜像挂载过程满足指定丢包条件且服务端已开启速率控制功能时,则执行在在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号的步骤。
[0073] 示例性地,在本实施例中,若检测到本次镜像挂载过程满足指定丢包条件且服务端已开启速率控制功能时,则执行在在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号的步骤,若检测到本次镜像挂载过程不满足指定丢包条件和/或服务端未开启速率控制功能时,则不需要执行在在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号的步骤,直接通知客户端发送镜像数据包即可。
[0074] 至此,完成图4所示流程的描述。
[0075] 通过图4完成了何时获取第一端口号和第二端口号的判断过程。
[0076] 参见图5,图5为本申请实施例提供的快速重传的密度计算流程图。如图5所示,该流程可包括如下步骤:
[0077] S510:在发起快速重传事件时,若当前未记录快速重传事件次数,则记录快速重传事件次数并将该快速重传事件次数设置为设定值,并记录该快速重传事件中首个DUP ACK报文的第一发送时间戳;若当前已记录快速重传事件次数,则在已记录的快速重传事件次数上增加设定值。
[0078] 示例性地,在本实施例中,一次快速重传事件为发送预设数量的、连续的、相同的DUP ACK报文,这里,预设数量可以为3个,本申请实施例并不具体限定。
[0079] 下面对一次快速重传事件进行举例描述,如图6所示,当客户端发送的报文3丢失时,服务端会在接收报文4、报文5以及报文6后分别反馈一个DUP ACK3报文,当客户端接收到3个相同的DUP ACK3报文后,就会再发一次报文3。这里,当连续反馈了3次DUP ACK3时,就记为一次快速重传事件。
[0080] 在本实施例中,内核态会记录快速重传事件的次数。当发起快速重传事件时,若当前未记录快速重传事件次数,则当前未记录快速重传事件次数为设定值(例如,1),同时记录本次快速重传事件中首个DUP ACK报文的第一发送时间戳;若当前已记录快速重传事件次数,则在已记录的快速重传事件次数上增加上述设定值。
[0081] S520:若当前快速重传事件次数为预设重传次数阈值时,记录最后一次快速重传事件中首个DUP ACK报文的第二发送时间戳。
[0082] 示例性地,在本实施例中,上述预设重传次数阈值可以是提前通过测试得到的,例如,上述预设次数可以为50次,也可以为60次,本申请实施例并不具体限定,可以根据实际情况确定。
[0083] 在本实施例中,本步骤S520中,当当前快速重传事件次数为预设重传次数阈值时,记录最后一次快速重传事件中的首个DUP ACK报文的第二发送时间戳。
[0084] S530:计算第一时间戳与第二时间戳的时间戳之差。
[0085] S540:依据时间戳之差以及预设重传次数阈值确定快速重传的密度。
[0086] 示例性地,在本实施例中,依据时间戳之差以及预设重传次数阈值确定快速重传的密度可以有多种实现方法,例如,将上述时间戳之差以及预设重传次数阈值输入指定计算公式中,得到快速重传的密度。
[0087] 上述指定计算公式可以为下述公式:
[0088]
[0089] 其中,  表示快速重传的密度;  表示预设重传次数阈值;  表示时间戳之差。
[0090] 需要说明的是,当快速重传的密度小于或等于大于已设定的密度阈值时,将记录的当前未记录快速重传事件次数清0,重新记录快速重传事件次数。
[0091] 至此,完成图5所示流程的描述。
[0092] 通过图5所示流程计算得出了快速重传的密度。
[0093] 作为本申请实施例一个可选实施方式,上述步骤S210中,将两端端口号从用户态发送至内核态,包括:
[0094] 在用户态将第一端口号和第二端口号写入在内核态已新增的文件系统,以使得第一端口号和第二端口号传输至内核态。
[0095] 示例性地,在本实施例中,在执行上述步骤之前,在内核态中的proc目录下新增一个文件系统,也即定义一个全局变量,该文件系统用于实现第一端口号和第二端口号的传递。该文件系统包括tcp_cd_local_port文件和tcp_cd_destination_port文件,其中tcp_cd_local_port文件用于写入第二端口号,tcp_cd_destination_port文件用于写入第一端口号。
[0096] 在本实施例中,在用户态通过调用相关函数打开上述新增文件系统,进而将第一端口号写入新增文件系统的tcp_cd_destination_port文件,以及将第二端口号写入新增文件系统的tcp_cd_local_port文件。
[0097] 对于内核态,tcp_cd_local_port文件和tcp_cd_destination_port文件是内核态中定义的全局变量,因此,在用户态通过写文件的方法就可以实现修改内核态的全局变量,从而实现端口号传递。
[0098] 与前述方法的实施例相对应,本说明书还提供了装置及其所应用的终端的实施例。
[0099] 如图7所示,图7是本说明书根据一示例性实施例示出的一种数据传输速率控制装置的框图,该装置应用于服务端的基板管理控制器BMC,该数据传输速率控制装置包括:
[0100] 端口号获取模块,用于在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号,将两端端口号从用户态发送至内核态;两端端口号中的第一端口号为客户端上一端口对应的端口号,第二端口号为服务端上一端口对应的端口号;
[0101] 监控模块,用于在内核态基于两端端口号监控服务端通过目标TCP连接向客户端传输的快速重传重复确认字符DUP ACK报文;DUP ACK报文是服务端在确认客户端发送的镜像数据包发生丢失时发送的;
[0102] 通告接收窗口调整模块,用于若确定当前未达到设定丢包条件,则基于监控到的DUP ACK报文计算客户端的快速重传的密度;当快速重传的密度大于已设定的密度阈值时,则将目标TCP连接的当前通告接收窗口调整为目标通告接收窗口,以使得客户端依据目标通告接收窗口传输报文,目标通告接收窗口小于当前通告接收窗口。
[0103] 作为本申请实施例一个可选实施方式,上述客户端为网络文件系统NFS时,端口号获取模块具体用于:
[0104] 在用户态中从已获得的NFS系统文件中获取第一端口号以及客户端IP地址;
[0105] 以第一端口号和客户端IP地址为关键字,在已获得的TCP系统文件中查找与关键字对应的第二端口号。
[0106] 作为本申请实施例一个可选实施方式,该数据传输速率控制装置还包括:
[0107] 第一记录模块,用于当快速重传的密度小于或等于已设定的密度阈值时,保持目标TCP连接的当前通告接收窗口不变,并记录当前未达到设定丢包条件,返回执行若确定当前未达到设定丢包条件,则基于监控到的DUP ACK报文,计算客户端的快速重传的密度的步骤;
[0108] 第二记录模块,用于当快速重传的密度大于已设定的密度阈值时,记录当前达到设定丢包条件,结束监控DUP ACK报文的操作。
[0109] 作为本申请实施例一个可选实施方式,该数据传输速率控制装置还包括:
[0110] 检测模块,用于在用户态中检测到镜像挂载时,则检测本次镜像挂载过程是否满足指定丢包检测条件以及服务端是否已开启速率控制功能,指定丢包检测条件为:使用指定型号的共享网卡、使用共享网口以及使用的共享网卡的工作模式为千兆及千兆以上;
[0111] 执行模块,用于若检测到本次镜像挂载过程满足指定丢包检测条件且服务端已开启速率控制功能时,则执行在在用户态中获取客户端和服务端之间已建立的用于镜像挂载的目标TCP连接的两端端口号的步骤。
[0112] 作为本申请实施例一个可选实施方式,上述通告接收窗口调整模块具体用于:
[0113] 在发起快速重传事件时,若当前未记录快速重传事件次数,则记录快速重传事件次数并将该快速重传事件次数设置为设定值,并记录该快速重传事件中首个DUP ACK报文的第一发送时间戳;若当前已记录快速重传事件次数,则在已记录的快速重传事件次数上增加设定值;
[0114] 若当前快速重传事件次数为预设重传次数阈值时,记录最后一次快速重传事件中首个DUP ACK报文的第二发送时间戳;
[0115] 计算第一时间戳与第二时间戳的时间戳之差;
[0116] 依据时间戳之差以及预设重传次数阈值确定快速重传的密度。
[0117] 作为本申请实施例一个可选实施方式,上述端口号获取模块具体用于:
[0118] 在用户态将第一端口号和第二端口号写入在内核态已新增的文件系统,以使得第一端口号和第二端口号传输至内核态。
[0119] 上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0120] 对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0121] 对应地,本申请实施例还提供了图7所示装置的硬件结构图,具体如图8所示,该电子设备可以为上述实施方法的设备。如图8所示,该硬件结构包括:处理器和存储器。
[0122] 其中,所述存储器,用于存储机器可执行指令;
[0123] 所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如上所示的所对应的数据传输速率控制的方法实施例。
[0124] 作为一个实施例,存储器可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,存储器可以是:易失存储器、非易失性存储器或者类似的存储介质。具体地,存储器可以是RAM(Radom Access Memory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、DVD等),或者类似的存储介质,或者它们的组合。
[0125] 至此,完成图8所示电子设备的描述。
[0126] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0127] 本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
[0128] 应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
[0129] 以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。