本申请属于网卡芯片领域,特别涉及一种可编程的网络发送流量调度结构。
背景技术:
1、随着网络设备的高速发展,接入用户数量和每个用户的业务不断增多,服务质量(qos)越来越重要。传统的qos是软件基于端口的调度,流量管理只是基于服务等级进行业务区分,无法基于用户进行区分。因此为了区分用户流量同时根据用户业务的优先级进行调度,hqos(hierarchical qos,层次化qos)应运而生。hqos通过多级队列进一步细化区分业务流量,对多个用户、多种业务等传输对象进行统一管理和分层调度。
2、目前,市面上主流的高性能网卡芯片(100g/400g)至少支持2k个发送队列。为了降低cpu利用率,高性能网卡需要实现hqos的硬件卸载(offload)功能。
技术实现思路
1、本申请的目的在于提供一种可编程的网络发送流量调度方法和装置,旨在实现更加灵活多层次的hqos硬件卸载功能。
2、根据本申请的第一方面,提供了一种可编程的网络发送流量调度方法,包括:
3、根据hqos配置调度元素之间的关系,来构建树形分层调度结构,将所有队列映射到树形分层调度结构的叶子节点,端口映射到根节点,并通过叶子节点接收调度请求入队操作;
4、当调度请求入队时,刷新对应叶子节点的状态,当该叶子节点的状态发生变化时,刷新该叶子节点的父节点的状态,根据父节点的状态依次刷新其各层父节点,直到到达根节点:
5、从所述根节点开始,查询其子节点信息表,利用仲裁器选出本层获胜的子节点,然后将获胜的子节点作为下一层的父节点,依次迭代对各层子节点进行仲裁,直到确定仲裁获胜的叶子节点,将所述获胜的叶子节点对应的调度请求进行出队。
6、在可选的实施方式中,所述从所述根节点开始,查询根节点的子节点信息表,利用仲裁器选出获胜子节点,然后将获胜子节点作为下一层的父节点,依次迭代对各层子节点进行仲裁,进一步包括:
7、当调度空闲时,实时查询根节点状态指示,如果根节点状态指示为打开,则表示存在从所述根节点到叶子节点的分支通路,从所述根节点开始,查询本层的子节点信息表,利用仲裁器选出本层获胜的子节点,用本层获胜子节点作为下一层的父节点,依次迭代对各层子节点进行仲裁。
8、在可选的实施方式中,所述树形分层调度结构中,同一时刻仅有一层处于仲裁状态,并且一层中仅启动一个仲裁器。
9、在可选的实施方式中,所述将所述获胜的叶子节点对应的调度请求进行出队之后,还包括:
10、根据调度请求的报文长度来预扣除仲裁获胜的整个分支通路的每个节点的信用值,
11、根据物理端口的叶子节点对应队列实际出口流量,来为每个节点反馈校准信用值。
12、在可选的实施方式中,所述依次迭代对各层子节点进行仲裁,进一步包括:
13、采用以下任一种仲裁器类型对各层子节点进行仲裁:轮询(rr)、绝对优先级(sp)、差分加权轮询(dwrr)、权重公平排队(wfq)、低延时队列(llq)。
14、根据本申请的第二方面,提供了一种可编程的网络发送流量调度装置,包括:
15、调度拓扑构建单元,用于根据hqos配置调度元素之间的关系,来构建树形分层调度结构,将所有队列映射到树形分层调度结构的叶子节点,端口映射到根节点,并通过叶子节点接收调度请求入队操作:
16、节点状态刷新单元,用于当调度请求入队时,刷新对应叶子节点的状态,当该叶子节点的状态发生变化时,刷新该叶子节点的父节点的状态,根据父节点的状态依次刷新其各层父节点,直到到达根节点;
17、仲裁单元,用于从所述根节点开始,查询子节点信息表,利用仲裁器选出本层获胜的子节点,将获胜的节点作为下一层的父节点。依次迭代对各层子节点进行仲裁,直到确定仲裁获胜的叶子节点,将所述获胜的叶子节点对应的调度请求进行出队。
18、相比于相关技术,本申请的技术方案至少具备以下优点:
19、打破了传统网卡hqos硬件卸载功能固定层次的调度结构的设计瓶颈,支持3~n(n>3)层可编程调度拓扑结构,支持跨层的父子关系,调度拓扑更加灵活。本方案扩展性强,在芯片资源足够的前提下,对节点个数和调度层次没有上限。其中7层调度仅需20个周期、6层调度17个周期、5层调度14个周期、4层调度11个周期、3层调度8个周期,提高了调度性能。在未来出现更高速存储器的情况下,本方案的调度性能还有进一步的提升空间。本申请的方案软硬件交互友好,支持软件动态配置硬件调度拓扑结构、挂起/使能调度节点,只需要一个调度器,支持同一个父节点的子节点之间选择多种仲裁模式(rr、sp、dwrr、wfq、llq等)。在减少资源时,兄弟节点之间调度模式也变得更加灵活,可以适用于多种调度场景,不仅可以用于网络中发送流量的hqos调度,也可以用于其他场景下的分层流量调度。
20、本申请的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可以通过在说明书以及附图中所指出的结构和流程来实现和获取。
1.一种可编程的网络发送流量调度方法,其特征在于,包括:
2.根据权利要求1所述的可编程的网络发送流量调度方法,其特征在于,从所述根节点开始,查询根节点的子节点信息表,利用仲裁器选出获胜子节点,然后将获胜子节点作为下一层的父节点,依次迭代对各层子节点进行仲裁,进一步包括:
3.根据权利要求1所述的可编程的网络发送流量调度方法,其特征在于,所述树形分层调度结构中,同一时刻仅有一层处于仲裁状态,并且一层中仅启动一个仲裁器。
4.根据权利要求1所述的可编程的网络发送流量调度方法,其特征在于,所述将所述获胜的叶子节点对应的调度请求进行出队之后,还包括:
5.根据权利要求1所述的可编程的网络发送流量调度方法,其特征在于,所述依次迭代对各层子节点进行仲裁,进一步包括:
6.一种可编程的网络发送流量调度装置,其特征在于,包括:
7.根据权利要求6所述的可编程的网络发送流量调度装置,其特征在于,所述仲裁单元,进一步用于:
8.根据权利要求6所述的可编程的网络发送流量调度装置,其特征在于,所述树形分层调度结构中,同一时刻仅有一层处于仲裁状态,并且一层中仅启动一个仲裁器。
9.根据权利要求6所述的可编程的网络发送流量调度装置,其特征在于,所述仲裁单元,进一步用于:
10.根据权利要求6所述的可编程的网络发送流量调度装置,其特征在于,仲裁单元,进一步用于:
