CN109756429A - 带宽分配方法及设备 - Google Patents
带宽分配方法及设备 Download PDFInfo
- Publication number
- CN109756429A CN109756429A CN201711078855.6A CN201711078855A CN109756429A CN 109756429 A CN109756429 A CN 109756429A CN 201711078855 A CN201711078855 A CN 201711078855A CN 109756429 A CN109756429 A CN 109756429A
- Authority
- CN
- China
- Prior art keywords
- transmission channel
- bandwidth
- data
- transmission
- inactive
- 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.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请提供了一种带宽分配方案,该方案中在当前传输通道需要传输数据时,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,然后回收所述未活动的传输通道的带宽配额,累加至全局可用带宽中,并从从所述全局可用带宽中,为所述当前传输通道分配带宽配额。其中,未活动的传输通道是指预设时长内没有进行过数据传输的传输通道,在任意一个传输通道需要传输数据时,均可以不断重复上述处理过程,各个传输通道带宽的回收和分配均是动态的,无需加锁,适用于高并发的场景。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种带宽分配方法及设备。
背景技术
目前现有的***中,一般使用TC(traffic control)框架进行流量控制,从而实现带宽分配。由于TC框架的处理时机是在协议栈中靠近网卡驱动的位置,即靠近物理层,处于数据发送路径中较为靠后的位置,由于无法对来自上层的数据进行控制,有可能会使发送路径中的某个缓冲区被占满或者大量占用,造成buffer bloat(缓存过满)的问题。并且TC框架的处理都是基于队列的,在处理过程中需要加锁,因此并发处理性能较差。此外,TC框架受限于协议字段的位宽(一般最多支持128个分类),无法支持大规模的精细粒度的带宽分配,例如无法支持连接级别的带宽分配。
申请内容
本申请的一个目的是提供一种带宽分配方案,用以解决现有技术中并发处理性能较差的问题。
为实现上述目的,本申请提供了一种带宽分配方法,该方法包括:
在当前传输通道需要传输数据时,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,其中,所述未活动的传输通道为:预设时长内没有进行过数据传输的传输通道;
回收所述未活动的传输通道的带宽配额,累加至全局可用带宽中;
从所述全局可用带宽中,为所述当前传输通道分配带宽配额。
进一步地,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,包括:
检测预设数量的其它传输通道的活动状态,并在所述预设数量的其它传输通道中,确定未活动的传输通道。
进一步地,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,包括:
获取其它传输通道对应的时间戳信息,其中,所述时间戳信息在其对应传输通道进行数据传输时更新;
比较其它传输通道的时间戳信息和当前时间,获取比较结果;
若比较结果超过预设时长,将对应的传输通道确定为未活动的传输通道。
进一步地,该方法还包括:
在创建传输通道时,将所述传输通道的上下文信息写入到数据结构的一个未占用的数据项中,其中,所述数据结构中每个已占用的数据项与一个传输通道对应,所述上下文信息包括对应传输通道的时间戳信息和标记信息,所述标记信息用于将数据项的状态标记为已占用。
进一步地,所述上下文信息还包括所述传输通道的保底带宽值,所述保底带宽值为所述传输通道在传输数据时至少需要分配的带宽配额。
进一步地,该方法还包括:
在释放传输通道时,回收所述传输通道的带宽配额,累加至全局可用带宽中,并删除所述传输通道在对应数据项中的内容,并使得所述数据项的状态更新为未占用。
进一步地,所述数据结构的数据项中还保存有对应传输通道的带宽配额;
回收所述未活动的传输通道的带宽配额,包括:
在所述未活动的传输通道对应的数据项中,将其带宽配额清零;
为所述当前传输通道分配带宽配额,包括:
向所述当前传输通道对应的数据项中,写入其带宽配额。
进一步地,在为所述当前传输通道分配带宽配额之后,包括:
从所述数据结构中当前传输通道的数据项中读取其带宽配额;
获取需要传输的数据的流量和当前传输通道的带宽占用之和,作为目标流量;
在所述目标流量未超过所述带宽配额时,传输所述数据。
基于本申请的另一方面,还提供了一种带宽分配设备,该设备包括:
状态检测装置,用于在当前传输通道需要传输数据时,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,其中,所述未活动的传输通道为:预设时长内没有进行过数据传输的传输通道;
带宽回收装置,用于回收所述未活动的传输通道的带宽配额,累加至全局可用带宽中;
带宽分配装置,用于从所述全局可用带宽中,为所述当前传输通道分配带宽配额。
进一步地,所述状态检测装置,用于检测预设数量的其它传输通道的活动状态,并在所述预设数量的其它传输通道中,确定未活动的传输通道。
进一步地,所述状态检测装置,用于获取其它传输通道对应的时间戳信息,其中,所述时间戳信息在其对应传输通道进行数据传输时更新;比较其它传输通道的时间戳信息和当前时间,获取比较结果;若比较结果超过预设时长,将对应的传输通道确定为未活动的传输通道。
进一步地,该设备还包括:
控制装置,用于在创建传输通道时,将所述传输通道的上下文信息写入到数据结构的一个未占用的数据项中,其中,所述数据结构中每个已占用的数据项与一个传输通道对应,所述上下文信息包括对应传输通道的时间戳信息和标记信息,所述标记信息用于将数据项的状态标记为已占用。
进一步地,所述上下文信息还包括所述传输通道的保底带宽值,所述保底带宽值为所述传输通道在传输数据时至少需要分配的带宽配额。
进一步地,所述带宽回收装置,还用于在释放传输通道时,回收所述传输通道的带宽配额,累加至全局可用带宽中;
所述控制装置,还用于在释放传输通道时,删除所述传输通道在对应数据项中的内容,并使得所述数据项的状态更新为未占用。
进一步地,所述数据结构的数据项中还保存有对应传输通道的带宽配额;
所述控制装置,还用于在所述未活动的传输通道对应的数据项中,将其带宽配额清零,以及向所述当前传输通道对应的数据项中,写入其带宽配额。
进一步地,该设备还包括:
数据传输装置,用于在为所述当前传输通道分配带宽配额之后,从所述数据结构中当前传输通道的数据项中读取其带宽配额,获取需要传输的数据的流量和当前传输通道的带宽占用之和,作为目标流量;以及在所述目标流量未超过所述带宽配额时,传输所述数据。
此外,本申请还提供了一种带宽分配设备,该设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行前述的方法。
本申请提供的方案中,在当前传输通道需要传输数据时,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,然后回收所述未活动的传输通道的带宽配额,累加至全局可用带宽中,并从从所述全局可用带宽中,为所述当前传输通道分配带宽配额。其中,未活动的传输通道是指预设时长内没有进行过数据传输的传输通道,在任意一个传输通道需要传输数据时,均可以不断重复上述处理过程,各个传输通道带宽的回收和分配均是动态的,无需加锁,适用于高并发的场景。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例提供的一种带宽分配方法的处理流程图;
图2为本申请实施例中创建传输通道时的处理流程图;
图3为本申请实施例中释放传输通道时的处理流程图;
图4为采用本申请实施例提供的带宽分配方法进行数据发送时的处理流程图;
图5为本申请实施例中定义的数组的示意图;
图6为本申请实施例提供的一种带宽分配设备的结构示意图;
图7为本申请实施例提供的另一种带宽分配设备的结构示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请实施例提供了一种带宽分配方法,用于对每个传输通道分配适当的带宽配额,从而对传输通道流量进行控制,该方法的处理流程如图1所示,包括:
步骤S101,在当前传输通道需要传输数据时,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道。其中,传输通道是指数据收发的通道,不仅仅可以用于分配网络带宽,如网络数据的传输,也可以用于分配其它方式数据传输的带宽,如分配进程间的数据传输或者分配I/O(输入输出)场景中的存储带宽等。在用于网络数据的传输时,传输通道可以是两设备之间的建立的连接,在用于进程之间数据的传输时,传输通道可以是消息队列等,在I/O场景中数据的读写时,传输通道可以是I/O的通道(例如流、文件等)。带宽是指单位时间能够传输的数据量。
当本方案应用于分配网络带宽时,可以适用于采用RDMA(Remote Direct MemoryAccess,远程直接内存访问)、InfiniBand(无限带宽)等技术的高性能网络,也可以适用于传统的以太网(例如TCP/IP网络)或者各类虚拟化网络的环境。
在传输数据时,可以根据相应的传输协议在内核态或者用户态实现本申请实施例提供的方法,即可完成网络带宽的分配。例如,在采用RDMA的高性能网络中,发送端设备通过网络把数据直接传输至接收端设备的一块存储区域中,在此过程中接收端设备的CPU仅需要在初始化和传输结束时进行一次处理即可,而无需在传输过程中进行介入,大部分的处理都会在用户态完成。而TCP/IP网络在传输数据时,需要CPU参与直接把数据传输到接收端设备的指定存储区域的操作,因此大部分的处理都会在内核态完成。由此,本申请实施例提供的带宽分配方案不局限于在内核态或者用户态实现,可以根据实际应用的场景选择实现于内核态或者用户态。
在分配粒度上,可以根据实际需求进行设定。例如在网络带宽分配的场景中,根据分配粒度的粗细,可以选择细粒度的连接级别的分配,或者也可以选择粒度较粗的进程级别、进程组级别的分配。其中,每个进程组可以包含至少一个进程,而每个进程会对应一个或者多个连接。在方案实现时,将传输通道定义为连接、进程或者进程组即可实现相应粒度的带宽分配。
当前传输通道是指当前需要发送数据的传输通道,需要在当前时刻为其分配带宽配额,作为其传输数据的带宽上限值,从而对流量进行控制,实现带宽分配。其它传输通道对应于当前传输通道,是指除了当前传输通道之外的一个或者多个传输通道,这些传输通道有可能当前正在传输数据,也有可能刚刚完成数据传输,或者也可能已经较长时间未传输数据。未活动的传输通道是指在预设时长内没有进行过数据传输的传输通道,例如例如该预设时长设定为5秒,那么未活动的传输通道即为5秒内没有进行过数据传输的传输通道。
在本申请的一种实施例中,可以为每个传输通道维护一个时间戳信息,该时间戳信息在其对应的传输通道进行数据传输时更新,例如连接1在00:15:11发送了数据,则其对应的时间戳信息将会更新为00:15:11,此后若又在00:15:14发送了数据,则其对应的时间戳信息将会再次更新为00:15:14。
由此,在检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道时,可以先获取其它传输通道对应的时间戳信息,然后比较其它传输通道的时间戳信息和当前时间,获取比较结果,若比较结果超过预设时长,将对应的传输通道确定为未活动的传输通道。以前述连接1为例,在检测连接1的活动状态时,若当前时间为00:15:20,则比较结果为相差6秒,表示连接1已经有6秒种未传输过数据,若设定的预设时长为5秒,则可以确定连接1为未活动的连接。
步骤S102,回收未活动的传输通道的带宽配额,累加至全局可用带宽中。其中,带宽配额是指一个传输通道当前已经占用的带宽,全局可用带宽是指带宽上限中未被占用的带宽,可以用来分配给当前需要传输数据的传输通道,例如带宽上限为10MB,在当前时刻已经存在3条正在传输数据的连接,为这些连接分配的带宽配额分别1MB、2MB和3MB,则此时的全局可用带宽即为4MB,若其中带宽配为1MB的连接在传输完数据并进入未活动状态时,则可以回收其带宽配额,累加至全局可用带宽中,此时的全局可用带宽则变为5MB。
通过检测其它传输通道的活动状态,可以从其它传输通道中确定未活动的传输通道,由于未活动的传输通道已经在较长的时间内未进行过数据传输,那么可以认为这些传输通道在短时间不进行数据传输的可能性也较大,因此可以回收其带宽配额,将其带宽配额清零,并累加至全局可用带宽中。
在实际场景中,可以选择预设数量的其它传输通道进行检测,并在预设数量的其它传输通道中,确定未活动的传输通道,选择检测的其它传输通道可以采用随机的方式,也可以是根据设定的选取策略,例如随机选取64个连接进行检测,或者选取总传输通道数量的N%。
步骤S103,从全局可用带宽中,为当前传输通道分配带宽配额。实际场景中,为当前传输通道分配的带宽配额可以是当前所有的全局可用带宽,也可以是全局可用带宽中的一部分,例如可以由用户设定一个带宽值,为该传输通道分配该值的带宽配额,也可以根据该传输通道在传输数据时的历史流量估算出合适的带宽值,为该传输通道分配带宽配额。
在本申请的一个实施例中,在实施本申请的带宽分配方案之前,可以先基于全局可用带宽和当前传输通道需要分配的带宽配额进行判定,若全局可用带宽能够大于或等于当前传输通道需要分配的带宽配额,则可以无需执行步骤S101和S102进行带宽的回收,而直接执行步骤S103为当前传输通道分配带宽配额。
例如,带宽上限为10MB,在当前时刻已经存在3条正在传输数据的连接,为这些连接分配的带宽配额分别1MB、2MB和3MB,则此时的全局可用带宽即为4MB。若此时需要创建的新连接所需要的带宽配额仅为2MB,则当前的全局可用带宽可以满足新连接的带宽分配,从而可以直接在4MB的全局可用带宽,为新创建的连接分配2MB的带宽。
在为当前传输通道分配相应的带宽配额之后,可以将该带宽配额作为数据传输的流量上限值。在传输数据时,获取需要传输的数据的流量和当前传输通道的带宽占用之和,作为目标流量,然后比较目标流量和分配的带宽配额,若目标流量未超过带宽配额时,则可以传输数据,否则根据传输策略选择重试、推迟发送或者丢弃等。
本申请的方案可以实现于发送侧或者接收侧,在发送侧实现时,通过当前传输通道传输数据即为数据的发送过程,因此当需要发送的目标流量超过带宽配额时,会根据发送策略选择重试、推迟发送或者丢弃数据等处理。而在接收侧实现时,通过当前传输通道传输数据即为数据的接收过程,当需要接收的目标流量超过带宽配额时,会根据接收策略选择丢弃数据、请求发送端重发等处理。
在任意一个传输通道需要传输数据时,均可以不断重复上述处理过程,各个传输通道带宽的回收和分配均是动态的,无需加锁,适用于高并发的场景。与TC框架不同,本申请实施例的方案应用于发送侧时可以在协议栈的socket(套接字)中实现,处于数据发送路径中较为靠前的位置,能够抑制buffer bloat的发生。
为了使得带宽分配的过程更加高效,可以将各个传输通道的管理成本转嫁到控制平面(传输通道的创建和释放),从而保证数据平面(数据发送)的简单高效。由此,定义了一个数据结构用于管理传输通道的上下文信息,该上下文信息至少包含了对应传输通道的时间戳信息和标记信息。数据结构中的每个数据项中保存一个传输通道的上下文信息,当一个数据项已经写入了上下文信息时,其状态即为已占用,反之数据项的状态可以是为占用,标记信息可以用于将数据项的状态标记为已占用,由此保证了可以单独对每个传输通道进行带宽分配。
在创建传输通道时,将传输通道的上下文信息写入到数据结构的一个未占用的数据项中。在实际场景中采用的数据结构可以是数组,此外也可以使用其它任意可行的数据结构,例如矩阵、数据序列等。数组的每个数组项用于存放一个传输通道的上下文信息,为了更好的支持大规模的精细粒度的带宽分配,可以采用多维数组,并结合bitmap算法优化相应数组项的查找。由于时间戳信息也存放在数组中,需要更新时间戳信息或者读取时间戳信息时可以访问数组进行操作。图2示出了创建传输通道时的示意图。
在此种情况下,选择预设数量的其它传输通道进行检测,确定未活动的传输通道时,可以从当前传输通道对应的数组项开始,每次扫描固定数量的数组项。例如当前传输通道对应的数组项的下标为100,则可以扫描下标为101~164的64个数组项,获取其中的时间戳信息,进行活动状态的检测。
此外,上下文信息中还可以包含传输通道的保底带宽值,保底带宽值是指传输通道在传输数据时至少需要分配的带宽配额。例如若一条连接需要传输较为重要的信息,因此在其需要传输数据时,至少需要保证其256KB的带宽配额。
在释放传输通道时,回收传输通道的带宽配额,累加至全局可用带宽中,并删除传输通道在对应数据项中的内容,并使得数据项的状态更新为未占用,从而后续创建的新的传输通道可以使用该数据项。此外,数据结构的数据项中还可以保存有对应传输通道的带宽配额,若需要读取或者修改上述信息,可以直接访问数据结构中的数据项,例如回收未活动的传输通道的带宽配额时,可以访问相应的数据项,在未活动的传输通道对应的数据项中,将其带宽配额清零。在为当前传输通道分配带宽配额,也可以直接访问数据项,向当前传输通道对应的数据项中,写入其带宽配额。在每次创建或者释放传输通道之后,都会更新目前的传输通道数量。图3示出了创建传输通道时的示意图。
而在传输数据时,也会从数据结构中当前传输通道的数据项中读取其带宽配额,然后获取需要传输的数据的流量和当前传输通道的带宽占用之和,作为目标流量,然后比较目标流量和分配的带宽配额,若目标流量未超过带宽配额时,则可以传输数据,否则根据传输策略选择重试、推迟发送或者丢弃等。由此,在数据传输时,仅需要从数据结构中读取相应传输通道的带宽配额即可,对于传输通道的管理主要是在控制平面中,即传输通道的创建和释放时,此种方式保证了数据平面的简单高效,并且可以在连接级别对带宽进行分配。
图4为采用本申请实施例提供的方法实现数据发送的处理流程图,该实施例用于实现连接级别的带宽分配,保存连接上下文信息的数据结构采用数组,每个数组项(slot)保存了一个连接的上下文信息,包含时间戳信息、该连接的保底带宽值和一个标记信息,如图5所示。当连接创建时,将其上下文信息写入到一个未占用的slot中,将该slot标记为已占用,使得该slot对连接对应起来,此外连接的带宽配额(已经占用的带宽)也可以写入slot中,后续可以直接访问该slot来获取或者更新关于该连接的信息。
本实施例中实现数据发送的处理流程包括:
步骤S401,在通过该连接发送给数据时,首先会计算该连接当前的带宽占用,然后加上本次需要发送的数据的数据量,作为进行判断的目标流量。计算当前的带宽占用的计算方式可以使用滑动窗口算法、令牌桶算法或者其它类似算法。
此外,也可以使用其它方式计算目标流量,例如可以在当前时刻预估未来某一时刻的目标流量,由此可以提前进行步骤S402的判断,选择相应的发送策略。预估未来可能的目标流量方式可以包括但不限于如下几种:例如基于该连接在之前N秒内的带宽占用计算平均值的方式,或者是基于历史数据中传输某类数据的平均带宽占用等方式。
步骤S402,将目标流量和分配给该连接的带宽配额进行比较,看是否超过了带宽配额。其中,该连接的带宽配额是基于图1所示的方法确定。
步骤S403,如果目标流量超过带宽配额,则直接返回,根据策略选择重试或者推迟发送。
步骤S404,如果目标流量未超过带宽配额,则更新连接的当前带宽占用。
步骤S405,通过该连接发送数据。
基于同一发明构思,本申请实施例中还提供了实现上述带宽分配方法的设备,所述设备对应的方法是前述实施例中的方法,并且其解决问题的原理与该方法相似。
本申请实施例提供的一种带宽分配设备,用于对每个传输通道分配适当的带宽配额,从而对传输通道流量进行控制。该设备的结构如图6所示,至少包括状态检测装置610、带宽回收装置620和带宽分配装置630。其中,状态检测装置610可以在当前传输通道需要传输数据时,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道。其中,传输通道是指数据收发的通道,不仅仅可以用于分配网络带宽,如网络数据的传输,也可以用于分配其它方式数据传输的带宽,如分配进程间的数据传输或者分配I/O(输入输出)场景中的存储带宽等。在用于网络数据的传输时,传输通道可以是两设备之间的建立的连接,在用于进程之间数据的传输时,传输通道可以是消息队列等,在I/O场景中数据的读写时,传输通道可以是I/O的通道(例如流、文件等)。带宽是指单位时间能够传输的数据量。
当本方案应用于分配网络带宽时,可以适用于采用RDMA(Remote Direct MemoryAccess,远程直接内存访问)、InfiniBand(无限带宽)等技术的高性能网络,也可以适用于传统的以太网(例如TCP/IP网络)或者各类虚拟化网络的环境。
在传输数据时,可以根据相应的传输协议在内核态或者用户态实现本申请实施例提供的方法,即可完成网络带宽的分配。例如,在采用RDMA的高性能网络中,发送端设备通过网络把数据直接传输至接收端设备的一块存储区域中,在此过程中接收端设备的CPU仅需要在初始化和传输结束时进行一次处理即可,而无需在传输过程中进行介入,大部分的处理都会在用户态完成。而TCP/IP网络在传输数据时,需要CPU参与直接把数据传输到接收端设备的指定存储区域的操作,因此大部分的处理都会在内核态完成。由此,本申请实施例提供的带宽分配方案不局限于在内核态或者用户态实现,可以根据实际应用的场景选择实现于内核态或者用户态。
在分配粒度上,可以根据实际需求进行设定。例如在网络带宽分配的场景中,根据分配粒度的粗细,可以选择细粒度的连接级别的分配,或者也可以选择粒度较粗的进程级别、进程组级别的分配。其中,每个进程组可以包含至少一个进程,而每个进程会对应一个或者多个连接。在方案实现时,将传输通道定义为连接、进程或者进程组即可实现相应粒度的带宽分配。
当前传输通道是指当前需要发送数据的传输通道,需要在当前时刻为其分配带宽配额,作为其传输数据的带宽上限值,从而对流量进行控制,实现带宽分配。其它传输通道对应于当前传输通道,是指除了当前传输通道之外的一个或者多个传输通道,这些传输通道有可能当前正在传输数据,也有可能刚刚完成数据传输,或者也可能已经较长时间未传输数据。未活动的传输通道是指在预设时长内没有进行过数据传输的传输通道,例如例如该预设时长设定为5秒,那么未活动的传输通道即为5秒内没有进行过数据传输的传输通道。
在本申请的一种实施例中,可以为每个传输通道维护一个时间戳信息,该时间戳信息在其对应的传输通道进行数据传输时更新,例如连接1在00:15:11发送了数据,则其对应的时间戳信息将会更新为00:15:11,此后若又在00:15:14发送了数据,则其对应的时间戳信息将会再次更新为00:15:14。
由此,在检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道时,状态检测装置610可以先获取其它传输通道对应的时间戳信息,然后比较其它传输通道的时间戳信息和当前时间,获取比较结果,若比较结果超过预设时长,将对应的传输通道确定为未活动的传输通道。以前述连接1为例,在检测连接1的活动状态时,若当前时间为00:15:20,则比较结果为相差6秒,表示连接1已经有6秒种未传输过数据,若设定的预设时长为5秒,则可以确定连接1为未活动的连接。
带宽回收装置620用于回收未活动的传输通道的带宽配额,累加至全局可用带宽中。其中,带宽配额是指一个传输通道当前已经占用的带宽,全局可用带宽是指带宽上限中未被占用的带宽,可以用来分配给当前需要传输数据的传输通道,例如带宽上限为10MB,在当前时刻已经存在3条正在传输数据的连接,为这些连接分配的带宽配额分别1MB、2MB和3MB,则此时的全局可用带宽即为4MB,若其中带宽配为1MB的连接在传输完数据并进入未活动状态时,则可以回收其带宽配额,累加至全局可用带宽中,此时的全局可用带宽则变为5MB。
状态检测装置610通过检测其它传输通道的活动状态,可以从其它传输通道中确定未活动的传输通道,由于未活动的传输通道已经在较长的时间内未进行过数据传输,那么可以认为这些传输通道在短时间不进行数据传输的可能性也较大,因此带宽回收装置620可以回收其带宽配额,将其带宽配额清零,并累加至全局可用带宽中。
在实际场景中,状态检测装置可以选择预设数量的其它传输通道进行检测,并在预设数量的其它传输通道中,确定未活动的传输通道,选择检测的其它传输通道可以采用随机的方式,也可以是根据设定的选取策略,例如随机选取64个连接进行检测,或者选取总传输通道数量的N%。
带宽分配装置630用于从全局可用带宽中,为当前传输通道分配带宽配额。实际场景中,带宽分配装置为当前传输通道分配的带宽配额可以是当前所有的全局可用带宽,也可以是全局可用带宽中的一部分,例如可以由用户设定一个带宽值,为该传输通道分配该值的带宽配额,也可以根据该传输通道在传输数据时的历史流量估算出合适的带宽值,为该传输通道分配带宽配额。
在本申请的一个实施例中,在实施本申请的带宽分配方案之前,带宽分配装置630可以先基于全局可用带宽和当前传输通道需要分配的带宽配额进行判定,若全局可用带宽能够大于或等于当前传输通道需要分配的带宽配额,则可以无需由状态检测装置610和带宽回收装置620进行检测和带宽回收,而直接由带宽分配装置630为当前传输通道分配带宽配额。
例如,带宽上限为10MB,在当前时刻已经存在3条正在传输数据的连接,为这些连接分配的带宽配额分别1MB、2MB和3MB,则此时的全局可用带宽即为4MB。若此时需要创建的新连接所需要的带宽配额仅为2MB,则当前的全局可用带宽可以满足新连接的带宽分配,从而可以直接在4MB的全局可用带宽,为新创建的连接分配2MB的带宽。
在为当前传输通道分配相应的带宽配额之后,可以将该带宽配额作为数据传输的流量上限值。在传输数据时,带宽分配设备的数据传输装置能够获取需要传输的数据的流量(即需要传输的数据量)和当前传输通道的带宽占用之和,作为目标流量,然后比较目标流量和分配的带宽配额,若目标流量未超过带宽配额时,则可以传输数据,否则根据传输策略选择重试、推迟发送或者丢弃等。
本申请的方案可以实现于发送侧或者接收侧,在发送侧实现时,通过当前传输通道传输数据即为数据的发送过程,因此当需要发送的目标流量超过带宽配额时,会根据发送策略选择重试、推迟发送或者丢弃数据等处理。而在接收侧实现时,通过当前传输通道传输数据即为数据的接收过程,当需要接收的目标流量超过带宽配额时,会根据接收策略选择丢弃数据、请求发送端重发等处理。
在任意一个传输通道需要传输数据时,均可以不断重复上述处理过程,各个传输通道带宽的回收和分配均是动态的,无需加锁,适用于高并发的场景。与TC框架不同,本申请实施例的方案应用于发送侧时可以在协议栈的socket(套接字)中实现,处于数据发送路径中较为靠前的位置,能够抑制buffer bloat的发生。
为了使得带宽分配的过程更加高效,可以将各个传输通道的管理成本转嫁到控制平面(传输通道的创建和释放),从而保证数据平面(数据发送)的简单高效。由此,定义了一个数据结构用于管理传输通道的上下文信息,该上下文信息至少包含了对应传输通道的时间戳信息和标记信息。数据结构中的每个数据项中保存一个传输通道的上下文信息,当一个数据项已经写入了上下文信息时,其状态即为已占用,反之数据项的状态可以是为占用,标记信息可以用于将数据项的状态标记为已占用,由此保证了可以单独对每个传输通道进行带宽分配。由此本申请实施例提供的一种带宽分配装置中,还可以包含控制装置,用于实现控制平面的相关处理。
控制装置在创建传输通道时,将传输通道的上下文信息写入到数据结构的一个未占用的数据项中。在实际场景中采用的数据结构可以是数组,此外也可以使用其它任意可行的数据结构,例如矩阵、数据序列等。数组的每个数组项用于存放一个传输通道的上下文信息,为了更好的支持大规模的精细粒度的带宽分配,可以采用多维数组,并结合bitmap算法优化相应数组项的查找。由于时间戳信息也存放在数组中,需要更新时间戳信息或者读取时间戳信息时可以访问数组进行操作。图2示出了创建传输通道时的示意图。
在此种情况下,状态检测装置在选择预设数量的其它传输通道进行检测,确定未活动的传输通道时,可以从当前传输通道对应的数组项开始,每次扫描固定数量的数组项。例如当前传输通道对应的数组项的下标为100,则可以扫描下标为101~164的64个数组项,获取其中的时间戳信息,进行活动状态的检测。
此外,上下文信息中还可以包含传输通道的保底带宽值,保底带宽值是指传输通道在传输数据时至少需要分配的带宽配额。例如若一条连接需要传输较为重要的信息,因此在其需要传输数据时,至少需要保证其256KB的带宽配额。
在释放传输通道时,带宽回收装置也会回收传输通道的带宽配额,累加至全局可用带宽中,同时控制装置会删除传输通道在对应数据项中的内容,并使得数据项的状态更新为未占用,从而后续创建的新的传输通道可以使用该数据项。此外,数据结构的数据项中还可以保存有对应传输通道的带宽配额,若需要读取或者修改上述信息,可以直接访问数据结构中的数据项,例如回收未活动的传输通道的带宽配额时,可以访问相应的数据项,在未活动的传输通道对应的数据项中,将其带宽配额清零。在为当前传输通道分配带宽配额,也可以直接访问数据项,向当前传输通道对应的数据项中,写入其带宽配额。在每次创建或者释放传输通道之后,都会更新目前的传输通道数量。图3示出了创建传输通道时的示意图。
而在传输数据时,带宽控制设备的数据发送装置会从数据结构中当前传输通道的数据项中读取其带宽配额,然后获取需要传输的数据的流量和当前传输通道的带宽占用之和,作为目标流量,然后比较目标流量和分配的带宽配额,若目标流量未超过带宽配额时,则可以传输数据,否则根据传输策略选择重试、推迟发送或者丢弃等。由此,在数据传输时,仅需要从数据结构中读取相应传输通道的带宽配额即可,对于传输通道的管理主要是在控制平面中,即传输通道的创建和释放时,此种方式保证了数据平面的简单高效,并且可以在连接级别对带宽进行分配。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个如图7所示的设备,该设备包括用于存储计算机程序指令的存储器710和用于执行程序指令的处理器720,其中,当该计算机程序指令被该处理器执行时,触发该设备运行基于前述根据本申请的多个实施例的方法和/或技术方案,。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (17)
1.一种带宽分配方法,其中,该方法包括:
在当前传输通道需要传输数据时,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,其中,所述未活动的传输通道为:预设时长内没有进行过数据传输的传输通道;
回收所述未活动的传输通道的带宽配额,累加至全局可用带宽中;
从所述全局可用带宽中,为所述当前传输通道分配带宽配额。
2.根据权利要求1所述的方法,其中,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,包括:
检测预设数量的其它传输通道的活动状态,并在所述预设数量的其它传输通道中,确定未活动的传输通道。
3.根据权利要求1所述的方法,其中,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,包括:
获取其它传输通道对应的时间戳信息,其中,所述时间戳信息在其对应传输通道进行数据传输时更新;
比较其它传输通道的时间戳信息和当前时间,获取比较结果;
若比较结果超过预设时长,将对应的传输通道确定为未活动的传输通道。
4.根据权利要求3所述的方法,其中,该方法还包括:
在创建传输通道时,将所述传输通道的上下文信息写入到数据结构的一个未占用的数据项中,其中,所述数据结构中每个已占用的数据项与一个传输通道对应,所述上下文信息包括对应传输通道的时间戳信息和标记信息,所述标记信息用于将数据项的状态标记为已占用。
5.根据权利要求4所述的方法,其中,所述上下文信息还包括所述传输通道的保底带宽值,所述保底带宽值为所述传输通道在传输数据时至少需要分配的带宽配额。
6.根据权利要求4或5所述的方法,其中,该方法还包括:
在释放传输通道时,回收所述传输通道的带宽配额,累加至全局可用带宽中,并删除所述传输通道在对应数据项中的内容,并使得所述数据项的状态更新为未占用。
7.根据权利要求4所述的方法,其中,所述数据结构的数据项中还保存有对应传输通道的带宽配额;
回收所述未活动的传输通道的带宽配额,包括:
在所述未活动的传输通道对应的数据项中,将其带宽配额清零;
为所述当前传输通道分配带宽配额,包括:
向所述当前传输通道对应的数据项中,写入其带宽配额。
8.根据权利要求7所述的方法,其中,在为所述当前传输通道分配带宽配额之后,还包括:
从所述数据结构中当前传输通道的数据项中读取其带宽配额;
获取需要传输的数据的流量和当前传输通道的带宽占用之和,作为目标流量;
在所述目标流量未超过所述带宽配额时,传输所述数据。
9.一种带宽分配设备,其中,该设备包括:
状态检测装置,用于在当前传输通道需要传输数据时,检测其它传输通道的活动状态,并从其它传输通道中确定未活动的传输通道,其中,所述未活动的传输通道为:预设时长内没有进行过数据传输的传输通道;
带宽回收装置,用于回收所述未活动的传输通道的带宽配额,累加至全局可用带宽中;
带宽分配装置,用于从所述全局可用带宽中,为所述当前传输通道分配带宽配额。
10.根据权利要求9所述的设备,其中,所述状态检测装置,用于检测预设数量的其它传输通道的活动状态,并在所述预设数量的其它传输通道中,确定未活动的传输通道。
11.根据权利要求9所述的设备,其中,所述状态检测装置,用于获取其它传输通道对应的时间戳信息,其中,所述时间戳信息在其对应传输通道进行数据传输时更新;比较其它传输通道的时间戳信息和当前时间,获取比较结果;若比较结果超过预设时长,将对应的传输通道确定为未活动的传输通道。
12.根据权利要求11所述的设备,其中,该设备还包括:
控制装置,用于在创建传输通道时,将所述传输通道的上下文信息写入到数据结构的一个未占用的数据项中,其中,所述数据结构中每个已占用的数据项与一个传输通道对应,所述上下文信息包括对应传输通道的时间戳信息和标记信息,所述标记信息用于将数据项的状态标记为已占用。
13.根据权利要求12所述的设备,其中,所述上下文信息还包括所述传输通道的保底带宽值,所述保底带宽值为所述传输通道在传输数据时至少需要分配的带宽配额。
14.根据权利要求12或13所述的设备,其中,所述带宽回收装置,还用于在释放传输通道时,回收所述传输通道的带宽配额,累加至全局可用带宽中;
所述控制装置,还用于在释放传输通道时,删除所述传输通道在对应数据项中的内容,并使得所述数据项的状态更新为未占用。
15.根据权利要求12所述的设备,其中,所述数据结构的数据项中还保存有对应传输通道的带宽配额;
所述控制装置,还用于在所述未活动的传输通道对应的数据项中,将其带宽配额清零,以及向所述当前传输通道对应的数据项中,写入其带宽配额。
16.根据权利要求15所述的设备,其中,该设备还包括:
数据传输装置,用于在为所述当前传输通道分配带宽配额之后,从所述数据结构中当前传输通道的数据项中读取其带宽配额,获取需要传输的数据的流量和当前传输通道的带宽占用之和,作为目标流量;以及在所述目标流量未超过所述带宽配额时,传输所述数据。
17.一种带宽分配设备,其中,该设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711078855.6A CN109756429B (zh) | 2017-11-06 | 2017-11-06 | 带宽分配方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711078855.6A CN109756429B (zh) | 2017-11-06 | 2017-11-06 | 带宽分配方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109756429A true CN109756429A (zh) | 2019-05-14 |
CN109756429B CN109756429B (zh) | 2023-05-02 |
Family
ID=66399537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711078855.6A Active CN109756429B (zh) | 2017-11-06 | 2017-11-06 | 带宽分配方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109756429B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147109A (zh) * | 2019-05-21 | 2019-08-20 | 重庆长安汽车股份有限公司 | 一种自动驾驶***的原始模型开发*** |
CN112804084A (zh) * | 2020-12-28 | 2021-05-14 | 中金数据(武汉)超算技术有限公司 | 一种基于网络互联线路的带宽管理方法及装置 |
CN114598649A (zh) * | 2022-03-17 | 2022-06-07 | 苏州浪潮智能科技有限公司 | 内核带宽管理方法、装置、存储设备及存储介质 |
WO2023207521A1 (zh) * | 2022-04-29 | 2023-11-02 | 北京有竹居网络技术有限公司 | 流量拥塞控制方法、装置、计算机可读介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028641A1 (en) * | 2001-07-30 | 2003-02-06 | Zhi-Li Zhang | Method and apparatus for a bandwidth broker in a packet network |
CN101599908A (zh) * | 2009-07-15 | 2009-12-09 | 杭州华三通信技术有限公司 | 一种带宽的自动分配方法和设备 |
CN106533982A (zh) * | 2016-11-14 | 2017-03-22 | 西安电子科技大学 | 基于带宽借用的动态队列调度装置及方法 |
-
2017
- 2017-11-06 CN CN201711078855.6A patent/CN109756429B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028641A1 (en) * | 2001-07-30 | 2003-02-06 | Zhi-Li Zhang | Method and apparatus for a bandwidth broker in a packet network |
CN101599908A (zh) * | 2009-07-15 | 2009-12-09 | 杭州华三通信技术有限公司 | 一种带宽的自动分配方法和设备 |
CN106533982A (zh) * | 2016-11-14 | 2017-03-22 | 西安电子科技大学 | 基于带宽借用的动态队列调度装置及方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147109A (zh) * | 2019-05-21 | 2019-08-20 | 重庆长安汽车股份有限公司 | 一种自动驾驶***的原始模型开发*** |
CN112804084A (zh) * | 2020-12-28 | 2021-05-14 | 中金数据(武汉)超算技术有限公司 | 一种基于网络互联线路的带宽管理方法及装置 |
CN112804084B (zh) * | 2020-12-28 | 2022-09-13 | 中金数据(武汉)超算技术有限公司 | 一种基于网络互联线路的带宽管理方法及装置 |
CN114598649A (zh) * | 2022-03-17 | 2022-06-07 | 苏州浪潮智能科技有限公司 | 内核带宽管理方法、装置、存储设备及存储介质 |
CN114598649B (zh) * | 2022-03-17 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 内核带宽管理方法、装置、存储设备及存储介质 |
WO2023207521A1 (zh) * | 2022-04-29 | 2023-11-02 | 北京有竹居网络技术有限公司 | 流量拥塞控制方法、装置、计算机可读介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109756429B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3367251B1 (en) | Storage system and solid state hard disk | |
CN109756429A (zh) | 带宽分配方法及设备 | |
US20180343131A1 (en) | Accessing composite data structures in tiered storage across network nodes | |
CN104090847B (zh) | 一种固态存储设备的地址分配方法 | |
US10860493B2 (en) | Method and apparatus for data storage system | |
US11397668B2 (en) | Data read/write method and apparatus, and storage server | |
US10303374B2 (en) | Data check method and storage system | |
US9525727B2 (en) | Efficient and scalable pull-based load distribution | |
CN110196770B (zh) | 云***内存数据处理方法、装置、设备及存储介质 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
US10884667B2 (en) | Storage controller and IO request processing method | |
CN111309644B (zh) | 一种内存分配方法、装置和计算机可读存储介质 | |
CN110321331A (zh) | 利用多级散列函数来确定存储地址的对象存储*** | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN115334082A (zh) | 负载均衡方法、装置、计算机设备、存储介质和产品 | |
US7660964B2 (en) | Windowing external block translations | |
US20140351550A1 (en) | Memory management apparatus and method for threads of data distribution service middleware | |
CN103475520B (zh) | 一种分布式网络中的事务处理控制方法及装置 | |
CN102137091A (zh) | 一种过负荷控制方法、装置、***及客户端 | |
CN106294191B (zh) | 处理表的方法、访问表的方法和装置 | |
CN108132759B (zh) | 一种文件***中管理数据的方法和装置 | |
CN105450679A (zh) | 进行数据云存储的方法及*** | |
CN105808150A (zh) | 用于混合式储存设备的固态硬盘快取*** | |
KR20190048227A (ko) | 블록체인 기반 데이터 관리 방법 및 그 장치 | |
CN110046040B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |