一种流量控制方法、装置、设备及可读存储介质 |
|||||||
申请号 | CN202010975195.7 | 申请日 | 2020-09-16 | 公开(公告)号 | CN112134809B | 公开(公告)日 | 2024-04-23 |
申请人 | 山东云海国创云计算装备产业创新中心有限公司; | 发明人 | 葛海亮; 李仁刚; 阚宏伟; 刘钧锴; | ||||
摘要 | 本 发明 公开了一种流量控制方法、装置、设备及可读存储介质,该方法包括:FPGA卡向对端FPGA卡发送数据;接收对端FPGA卡发送的流量调控数据包; 对流 量调节数据包进行解析,得到速度调控信息;利用速度调控信息,对数据发送速度进行调节。在该方法中,无需网关等设备的情况下,便可实现数据发送速度根据对端FPGA卡发送的流量调控包进行调整。并且,相较于现有的仅能实现停-等式流量控制机制,该方法能够对数据传输速度进行调节,能够满足更多实际流控情况的需求。 | ||||||
权利要求 | 1.一种流量控制方法,其特征在于,包括: |
||||||
说明书全文 | 一种流量控制方法、装置、设备及可读存储介质技术领域[0001] 本发明涉及计算机应用技术领域,特别是涉及一种流量控制方法、装置、设备及可读存储介质。 背景技术[0002] FPGA(Field Programmable Gate Array,现场可编程门阵列)加速卡大量应用在数据中心。这种FPGA加速卡一般带有标准的MAC(Media Access Control,以太网)网络口,在工程实际中,两个FPGA加速卡通过MAC网络口互联的情形大量存在。对于FPGA加速卡之间的网络流量如何控制成为日益关键的工程实际问题。 [0003] 在全双工MAC控制框架下,流量控制机制是通过PAUSE(格式符合IEEE 802.3协议的以太网帧)功能实现的一种简单的停‑等式流量控制机制。这种流量控制机制只是实现了简单的停‑等流量操作。而其他方案中,会牵扯到网关等设备实现流量控制。 [0004] 综上所述,如何有效地解决FPGA卡间的流量控制等问题,是目前本领域技术人员急需解决的技术问题。 发明内容[0005] 本发明的目的是提供一种流量控制方法、装置、设备及可读存储介质,以在FPGA卡之间实现更加精准的流量控制。 [0006] 为解决上述技术问题,本发明提供如下技术方案: [0007] 一种流量控制方法,包括: [0008] FPGA卡向对端FPGA卡发送数据; [0009] 接收所述对端FPGA卡发送的所述流量调控数据包; [0010] 对所述流量调节数据包进行解析,得到速度调控信息; [0011] 利用所述速度调控信息,对数据发送速度进行调节。 [0012] 优选地,对所述流量调节数据包进行解析,得到速度调控信息,包括: [0013] 对所述流量调节数据包对应的帧进行解析,得到数据与填充字段对应的数据内容; [0014] 从所述数据内容中提取出所述速度调控信息。 [0015] 优选地,从所述数据内容中提取出所述速度调控信息,包括: [0016] 从所述数据内容中提取控制阶段信息、调控时长信息和参考速度信息中的至少一种所述速度调控信息。 [0017] 优选地,对所述流量调节数据包对应的帧进行解析,得到数据与填充字段对应的数据内容,包括: [0019] 按照字节定义,对所述数值进行解析,得到所述数据内容。 [0020] 优选地,若所述速度调控信息包括所述调控时长信息和所述参考速度信息,相应地,利用所述速度调控信息,对数据发送速度进行调节,包括: [0021] 在所述调控时长信息对应的时间段内,按照所述参考速度信息对应的数据发送速度进行数据发送; [0022] 或,在所述调控时长信息对应的时间段内,将所述数据发送速度自当前数据发送速度平滑过渡到与所述参考速度信息对应。 [0023] 优选地,还包括: [0024] 接收所述对端FPAG卡发送的数据,并获取数据接收速度; [0025] 利用所述数据接收速度确定是否需调节所述数据发送速度; [0026] 如果是,则向所述对端FPGA卡,发送所述流量调控数据包。 [0027] 优选地,利用所述数据接收速度确定是否需调节所述数据发送速度,包括: [0028] 按照各个调控范围,从对应调控阶段中确定出与所述数据接收速度对应的目标调控阶段; [0029] 若所述目标调控阶段对应需调控,则确定需调节所述数据发送速度; [0030] 若所述目标调控阶段对应无需调控,则确定无需调节所述数据发送速度。 [0031] 一种流量控制装置,包括: [0032] 数据发送模块,用于FPGA卡向对端FPGA卡发送数据; [0033] 流量调控数据包接收模块,用于接收所述对端FPGA卡发送的所述流量调控数据包; [0034] 速度调控信息获取模块,用于对所述流量调节数据包进行解析,得到速度调控信息; [0035] 速度调控模块,用于利用所述速度调控信息,对数据发送速度进行调节。 [0036] 一种流量控制设备,包括: [0038] 处理器,用于执行所述计算机程序时实现上述流量控制方法的步骤。 [0039] 一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述流量控制方法的步骤。 [0040] 应用本发明实施例所提供的方法,FPGA卡向对端FPGA卡发送数据;接收对端FPGA卡发送的流量调控数据包;对流量调节数据包进行解析,得到速度调控信息;利用速度调控信息,对数据发送速度进行调节。 [0041] 在本方法中,在FPGA卡向对端FPGA卡发送的数据的情况下,若接收到对端FPGA卡发送的流量调控数据包,则可通过对流量调控数据包进行解析,得到速度调控信息。然后基于速度调控信息对数据发送速度进行调节。也就是说,在本方法中,无需网关等设备的情况下,便可实现数据发送速度根据对端FPGA卡发送的流量调控包进行调整。并且,相较于现有的仅能实现停-等式流量控制机制,本方法能够对数据传输速度进行调节,能够满足更多实际流控情况的需求。 [0043] 为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 [0044] 图1为本发明实施例中一种流量控制方法的实施流程图; [0045] 图2为本发明实施例中一种流量控制方法对应的应用系统; [0046] 图3为本发明实施例中另一种流量控制方法的实施流程图; [0047] 图4为本发明实施例中一种流量控制方法的具体实施流程图; [0048] 图5为本发明实施例中一种流量控制装置的结构示意图; [0049] 图6为本发明实施例中一种流量控制设备的结构示意图; [0050] 图7为本发明实施例中一种流量控制设备的具体结构示意图。 具体实施方式[0051] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 [0052] 请参考图1,图1为本发明实施例中一种流量控制方法的流程图,该方法包括以下步骤: [0053] S101、FPGA卡向对端FPGA卡发送数据。 [0054] 其中,FPGA卡和对端FPGA卡对应数据传输的源端和终端。FPGA卡和对端FPGA卡之间的型号可以相同也可以不同。 [0055] FPGA卡向对端FPGA卡发送数据的同时,对端FPGA卡可以根据实际处理情况,确定是否需对数据发送速度进行调节,如需要调节可向FPGA卡发送流量调控数据包。 [0056] 还需要说明的是,在本发明实施例中FPGA卡和对端FPGA卡仅相对而言,FPGA卡也可以接收对端FPGA卡发送的数据。即,FPGA卡和对端FPGA卡之间可以单工、半双工或全双工方式进行数据传输。 [0057] S102、接收对端FPGA卡发送的流量调控数据包。 [0058] 其中,流量调控数据包即对端FPGA卡确定需要进行流量调控,进而发送的调控数据包。该调控数据包可携带具体的关于速度调控的信息。 [0059] S103、对流量调节数据包进行解析,得到速度调控信息。 [0060] 可按照流量调节数据包对应的传输协议,对流量数据包进行解析,得到速度调控信息。具体的,即根据具体的帧格式定义,对流量数据包对应的数据帧进行解读,得到该流量调节数据包所携带的速度调控信息。 [0061] 其中,速度调控信息即为用于参考进行数据发送速度调节的调控信息。该速度调控信息可以具体为速度参数,如具体包括调控数据发送速度的具体参考速度、速度调节的时长、速度调节方向(如加速或减速)的一种或多种;该速度调控信息可以具体为也可以为调控阶段的标签(如预先定义调控阶段对应调控数据发送速度的具体模式)。 [0062] 在本发明的一种具体实施方式中,上述步骤S103可具体包括: [0063] 步骤一、对流量调节数据包对应的帧进行解析,得到数据与填充字段对应的数据内容。 [0064] 其中,流量调控数据包帧格式可采用IEEE802.3以太网帧格式。请参考表1,在此基础上预先定义出用于调控网络流量的数据帧,位于Data and Pad(数据与填充)字段。 [0065] 表1,流量调控数据包帧格式 [0066] Preamble SFD dst MAC src MAC Length Type IP head UDP head Data and Pad FCS[0067] 其中,Preamble:前导码,7个字节,用于数据传输过程中的双方发送、接收的速率的同步; [0068] SFD:帧开始符,1个字节,表明下一个字节开始是真实数据(目的MAC地址); [0069] dst MAC:目的MAC地址,6个字节,指明帧的接受者; [0070] src MAC:源MAC地址,6个字节,指明帧的发送者; [0071] Length:长度,2个字节,指明该帧数据字段的长度; [0072] Type:类型,2个字节,指明帧中数据的协议类型; [0073] IP head:IP,数据报帧头; [0074] UDP head:UDP数据报帧头; [0075] Data and Pad:自定义的用于流量控制数据格式; [0076] FCS:帧校验序列。 [0077] 具体的,即按照流量调节数据包对应的帧格式对流量调节数据包进行解析,得到数据与填充字段对应的数据内容。 [0078] 具体的,读取得到该数据内容的实现过程,包括: [0079] 步骤1、依次按照相应指定字节长度,从数据与填充字段中读取数值; [0080] 步骤2、按照字节定义,对数值进行解析,得到数据内容。 [0081] 为便于描述,请参考图2,下面将上述2个步骤结合起来进行说明。 [0082] 在图2中,其中,TX侧流量监测模块,用于监测MAC TX的数据流速。RX侧流量监测与TX控制模块,用于监测MAC RX的接收数据流速度,以及控制MAC TX的数据流发送速度。对端模块流量调整指示模块,用于通过MAC TX发送流量调控数据包到对方,来调控对方的MAC TX流量发送。MAC TX与MAC RX是FPGA中MAC发送端与接收端。其中,FPGA A卡可以为对端FPGA卡,当然FPGA B卡也可以为对端FPGA卡。 [0083] 其中,Data and Pad即本实施例中用于流量控制的自定义数据帧。具体格式请参考表2。 [0084] 表2,Data and Pad定义 [0085] ctrl_flag ctrl_action ctrl_rate ctrl_time ctrl_stop ctrl_warning other_data[0086] 其中,ctrl_flag:4字节,包括但不限于一个特征码字,如0x8808_593d来代表本数据包是用于FPGA来调控网络流量的。 [0087] ctrl_action:2bit,其中数值1表示用于对方网络流量预警阶段,表示本卡(即FPGA卡)当前MAC RX流量(数据接收速度)处于接近阈值;数值2表示对方网络流量需要调控阶段,表示本FPGA卡当前MAC RX侧流量(数据发送速度)刚刚跃过阈值;数值3表示需要对方网络流量停止阶段,表示本卡当前MAC RX侧流量严重跃过阈值。数值0表示对方无需反应。 [0088] ctrl_rate:2字节,表示在ctrl_action=1或者2时,命令对方需要将它的MAC TX侧的网络流量调整到相对应的参考速度。 [0089] ctrl_time:2字节,本次流量调控的持续时间,数值0表示本次流量调控结束。 [0090] ctrl_stop:1bit,为0无效,1表征需要对方的MAC TX端停止发包。 [0091] ctrl_warning:2bit,在ctrl_action=1或者2时,数值1表示需要对方的MAC TX端发送速度降低,数值2表示需要对方的MAC TX端发送速度增大。数值0表示默认值,无效。 [0092] other_data:其它报文数据。 [0093] 即数据内容,即指对Data and Pad字段中的读取的数值对应的内容含义。 [0094] 步骤二、从数据内容中提取出速度调控信息。 [0095] 根据数据内容可以得到速度调控信息。例如,若ctrl_stop为1,则确定速度调控信息中包括停止数据发送。 [0096] 其中,步骤二可具体包括:从数据内容中提取控制阶段信息、调控时长信息和参考速度信息中的至少一种速度调控信息。 [0097] 即,可提取出控制阶段信息、调控时长信息和参数速度信息中的至少一种能够用于调节数据发送速度的信息。 [0098] S104、利用速度调控信息,对数据发送速度进行调节。 [0099] 得到速度调控信息之后,便可基于该深度调控信息对数据发送速度进行调节。具体的,若速度调控信息包括具体的速度参数,可直接将数据发送速度调节至与速度参数匹配;若速度调节信息为调控阶段的标签,则根据对应的调控阶段的具体模式,对数据发送速度进行调节。 [0100] 在本发明的一种具体实施例方式中,若速度调控信息包括调控时长信息和参考速度信息,相应地,步骤S104可分以下两种情况: [0101] 情况1、在调控时长信息对应的时间段内,按照参考速度信息对应的数据发送速度进行数据发送。 [0102] 也就是说,限定了调整后的速度与参考速度信息匹配,且持续的时间与调控时长信息对应的时间段。 [0103] 举例说明,若当前的数据发送速度为V1,而参考数据信息对应的参考速度为V2,则直接将数据发送速度从V1调整为V2,并在调控时长信息对应的时间段T内持续保持为V2。 [0104] 情况2、在调控时长信息对应的时间段内,将数据发送速度自当前数据发送速度平滑过渡到与参考速度信息对应。 [0105] 也就是说,限定了调整后的速度与参考速度信息匹配,且调整数据发送速度的调整耗时需与调控时长信息对应的时间段。 [0106] 举例说明,若当前的数据发送速度为V1,而参考数据信息对应的参考速度为V2,则在在调控时长信息对应的时间段T内,将数据发送速度从V1调整为V2。 [0107] 需要说明的是,可根据实际需求,选择情况1或情况2对应的调节方式进行执行。 [0108] 应用本发明实施例所提供的方法,,FPGA卡向对端FPGA卡发送数据;接收对端FPGA卡发送的流量调控数据包;对流量调节数据包进行解析,得到速度调控信息;利用速度调控信息,对数据发送速度进行调节。 [0109] 在本方法中,在FPGA卡向对端FPGA卡发送的数据的情况下,若接收到对端FPGA卡发送的流量调控数据包,则可通过对流量调控数据包进行解析,得到速度调控信息。然后基于速度调控信息对数据发送速度进行调节。也就是说,在本方法中,无需网关等设备的情况下,便可实现数据发送速度根据对端FPGA卡发送的流量调控包进行调整。并且,相较于现有的仅能实现停-等式流量控制机制,本方法能够对数据传输速度进行调节,能够满足更多实际流控情况的需求。 [0110] 需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。 [0111] 在本发明的一种具体实施例方式中,在上述实施例的基础上,FPGA卡还可以向对端FPGA卡发送调节数据发送速度对应的流量调控数据包。当然,对端FPGA卡发送流量调控数据包的具体实现也可参照于此。 [0112] 请参考图3,图3为本发明实施例中另一种流量控制方法的实施流程图,实现过程包括: [0113] S201、接收对端FPAG卡发送的数据,并获取数据接收速度。 [0114] 即,FPGA卡在接收对端FPGA卡发送的数据时,可对数据接收速度进行监控,从而得到数据接收速度。 [0115] S202、利用数据接收速度确定是否需调节数据发送速度。 [0116] 得到数据接收速度之后,可基于数据接收速度确定是否需要调节数据的发送速度。这里的数据发送速度是指对端FPGA卡发送数据给本卡的速度,而非本卡向外发送数据的速度。 [0117] 具体的,FPGA卡可以根据当前的处理效率,所处理效率与数据接收速度匹配,则可无需调节,若处理效率与数据接收速度不匹配(如处理效率过低,无法有效处理所接收的数据,或,处理效率高,还可以处理更多的数据)则需进行调节。 [0118] 当然,也可直接设置调节阈值,判断数据发送速度与调节阈值的对应关系,即可确定是否需要进行调节。例如,设置一个上限阈值和下限阈值,若数据接收速度大于上限阈值,则确定需要调节数据发送速度(如降速或停发);若数据接收速度小于下限阈值,则确定需要调节数据发送速度(如加速)。 [0119] 在本发明的一种具体实施方式中,判断过程具体包括: [0120] 步骤一、按照各个调控范围,从对应调控阶段中确定出与数据接收速度对应的目标调控阶段; [0121] 步骤二、若目标调控阶段对应需调控,则确定需调节数据发送速度; [0122] 步骤三、若目标调控阶段对应无需调控,则确定无需调节数据发送速度。 [0123] 为了便于描述,下面将上述三个步骤结合起来进行说明。 [0124] 请参考表3, [0125] 表3,MAC RX侧速度X与调控策略说明列表 [0126] [0127] 其中,MAC RX侧流量有一个上限阈值与下限阈值,上限阈值表示最大速度,下限阈值表示最小速度。 [0128] 也就是说,通过当前的数据接收速度可确定调控阶段,然后明确当前是否要进行数据发送速度调节。 [0129] 如果判断结果为是,则执行步骤S203的步骤;若判断结果为否,则执行可无操作。 [0130] S203、向对端FPGA卡,发送流量调控数据包。 [0131] 关于流量调控包的具体帧格式,以及如何携带调控信息可参照上述实施例。 [0132] 对端FPGA接收到流量调控数据包之后,可参照上述实施例所描述的数据发送速度的具体调节过程进行处理。 [0133] 为了便于理解,请参考图4,下面结合具体的应用流程为例,对上述流量控制方法进行详细说明。 [0134] 步骤1、FPGA板卡(即PPGA卡)上电初始化,更新上限阈值寄存器与下限阈值寄存器中的数值,进入步骤2。 [0135] 步骤2、对端FPGA卡的MAC TX发送数据,本FPGA卡的MAC RX接收数据,进入步骤3。 [0136] 步骤3、本FPGA卡的MAC RX侧数据接收速度和表3中的做匹配,进入步骤4。 [0137] 步骤4、判断是否需要调控流量,如果否,那么跳转步骤2,如果是,那么步骤5。 [0138] 步骤5、本FPGA卡通过MAC TX端发送流量调控数据包给对端FPGA卡。 [0139] 步骤6、对端FPGA卡的MAC RX端接收到并解析数据调控数据包,计时开始,进入步骤7; [0140] 步骤7、对方根据收到的数据调控数据包的数据,调整它的MAC TX端发送速度,调整速度是由当前速度逐步调整到ctrl_rate的参考速度,对方MAC TX发送数据,本FPGA卡的MAC RX接收数据,进入步骤8。 [0141] 步骤8、根据计时器时间和ctrl_time做比较,判断计时是否到,若是,那么步骤2,若否,那么进入步骤9。 [0142] 步骤9、调整网络流量速度是否符合预期,若是,那么进入步骤2,若否,那么进入步骤7。 [0143] 可见,本发明实施例所提供的流量控制方法,能够实现在FPGA板卡间网络拥塞的预防以及网络流量的定量调控。满足实际工程需求有一定的现实意义。 [0144] 相应于上面的方法实施例,本发明实施例还提供了一种流量控制装置,下文描述的流量控制装置与上文描述的流量控制方法可相互对应参照。 [0145] 参见图5所示,该装置包括以下模块: [0146] 数据发送模块101,用于FPGA卡向对端FPGA卡发送数据; [0147] 流量调控数据包接收模块102,用于接收对端FPGA卡发送的流量调控数据包; [0148] 速度调控信息获取模块103,用于对流量调节数据包进行解析,得到速度调控信息; [0149] 速度调控模块104,用于利用速度调控信息,对数据发送速度进行调节。 [0150] 应用本发明实施例所提供的装置,FPGA卡向对端FPGA卡发送数据;接收对端FPGA卡发送的流量调控数据包;对流量调节数据包进行解析,得到速度调控信息;利用速度调控信息,对数据发送速度进行调节。 [0151] 在本装置中,在FPGA卡向对端FPGA卡发送的数据的情况下,若接收到对端FPGA卡发送的流量调控数据包,则可通过对流量调控数据包进行解析,得到速度调控信息。然后基于速度调控信息对数据发送速度进行调节。也就是说,在本装置中,无需网关等设备的情况下,便可实现数据发送速度根据对端FPGA卡发送的流量调控包进行调整。并且,相较于现有的仅能实现停-等式流量控制机制,本装置能够对数据传输速度进行调节,能够满足更多实际流控情况的需求。 [0152] 在本发明的一种具体实施方式中,速度调控信息获取模块103,具体用于对流量调节数据包对应的帧进行解析,得到数据与填充字段对应的数据内容;从数据内容中提取出速度调控信息。 [0153] 在本发明的一种具体实施方式中,速度调控信息获取模块103,具体用于从数据内容中提取控制阶段信息、调控时长信息和参考速度信息中的至少一种速度调控信息。 [0154] 在本发明的一种具体实施方式中,速度调控信息获取模块103,具体用于依次按照相应指定字节长度,从数据与填充字段中读取数值;按照字节定义,对数值进行解析,得到数据内容。 [0155] 在本发明的一种具体实施方式中,若速度调控信息包括调控时长信息和参考速度信息,相应地,速度调控模块104,具体用于在调控时长信息对应的时间段内,按照参考速度信息对应的数据发送速度进行数据发送;或,在调控时长信息对应的时间段内,将数据发送速度自当前数据发送速度平滑过渡到与参考速度信息对应。 [0156] 在本发明的一种具体实施方式中,还包括: [0157] 调控发起模块,用于接收对端FPAG卡发送的数据,并获取数据接收速度;利用数据接收速度确定是否需调节数据发送速度;如果是,则向对端FPGA卡,发送流量调控数据包。 [0158] 在本发明的一种具体实施方式中,调控发起模块,具体用于按照各个调控范围,从对应调控阶段中确定出与数据接收速度对应的目标调控阶段;若目标调控阶段对应需调控,则确定需调节数据发送速度;若目标调控阶段对应无需调控,则确定无需调节数据发送速度。 [0159] 相应于上面的方法实施例,本发明实施例还提供了一种流量控制设备,下文描述的一种流量控制设备与上文描述的一种流量控制方法可相互对应参照。 [0160] 参见图6所示,该流量控制设备包括: [0161] 存储器332,用于存储计算机程序; [0162] 处理器322,用于执行计算机程序时实现上述方法实施例的流量控制方法的步骤。 [0163] 具体的,请参考图7,图7为本实施例提供的一种流量控制设备的具体结构示意图,该流量控制设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在流量控制设备301上执行存储器332中的一系列指令操作。 [0165] 上文所描述的流量控制方法中的步骤可以由流量控制设备的结构实现。 [0166] 相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种流量控制方法可相互对应参照。 [0167] 一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的流量控制方法的步骤。 |