具有端口汇聚功能的Crossbar流量反压控制方法与流程

文档序号:18885130发布日期:2019-10-15 20:47阅读:725来源:国知局
具有端口汇聚功能的Crossbar流量反压控制方法与流程

本发明属于通信技术领域,更进一步涉及一种流量反压控制的实现方法,可用于具有端口汇聚功能的crossbar交换机中的流量控制及防止排头阻塞的反压控制。



背景技术:

近年来,随着通信技术的日益发展和网络用户数量的逐渐上升,交换机作为网络接入及转换设备变得愈发重要,而随着用户数量的逐渐攀升,交换机的端口数量和传输速率也在不断地提高,交换结构也随之从共享缓存结构向crossbar结构发展。因此,大容量交换机因运而生。然而大容量交换机在满足用户需求的同时也面临一个与网络性能密切相关的流量控制问题。流量控制可以使用户以规定合理的速率传输数据,是预防交换网络拥塞,有效提高网络性能的一种高效的方法。

杭州华三通信技术有限公司申请的专利“一种交换机流量控制方法和交换机”申请号200910170191.5公开号cn102014045a的专利申请中公开了一种检测到拥塞时,交换机接收方向发送方发送ieee802.3规定的一种pause帧,从而降低发送方发送速率的方法。该方法虽然有效的实现了流量控制,但是还存在缺陷:用户不能控制流控的速率等级,局限性很大。

现有的技术数据传输一般用于单个端口的数据传输,在涉及多个端口的数据传输时总线数量会增加,为了充分利用资源,提升交换设备的灵活性,对多个端口进行汇聚是必要的,然而,在基于端口聚合的crossbar交换架构要进行输出端口的流量控制时,会产生排头阻塞问题。



技术实现要素:

本发明的目的在于针对上述现有技术的不足,提出一种具有端口汇聚功能的crossbar流量反压控制方法,以实现不同设备速率的适配,避免输出端口产生排头阻塞问题。

本发明的技术方案是:采用基于令牌桶算法的速率整形方法来控制速率等级,实现不同设备速率的适配,采用流量控制模块产生的反馈信号避免输出端口的拥塞,其实现步骤包括如下:

(1)为令牌桶注入令牌:

(1a)对令牌桶进行初始化,即给令牌桶注入最大令牌数c,设定令牌注入周期n,并为每个令牌桶维护一个周期计数器;

(1b)判断周期计数器是否达到设定的令牌注入周期:

如果达到,则将周期计数器清零,执行(1c);

如果未达到,执行(1d);

(1c)判断令牌桶中原令牌数加注入的令牌数之和是否大于最大令牌数:

若是,则拉高令牌写使能,并将注入的令牌数更新为最大令牌数,执行(2);

若不是,则将注入的令牌数更新为原令牌数与注入的令牌数之和,执行(2);

(1d)周期计数器继续加1,返回(1b);

(2)更新令牌桶中的令牌数:

(2a)设读使能信号为数据帧的起始信号,判断令牌桶的写使能信号和读使能信号是否同时拉高:

如果同时拉高,更新令牌桶中的令牌数为(1c)中的注入令牌数与删除的令牌数之差,执行(3),其中删除的令牌数为发送的数据帧长度;

否则,判断令牌桶的写使能信号是否拉高:

若写使能信号拉高,则更新令牌桶中的令牌数为(1c)中的注入令牌数,执行(3);

若写使能信号未拉高,执行(2b);

(2b)判断令牌桶的读使能信号是否拉高:

若读使能信号拉高,则更新令牌桶中的令牌数为原令牌数与删除的令牌数之差,执行(3);

若读使能信号未拉高,则维持令牌桶中的令牌数不变,执行(3);

(3)根据用户设定的流量控制等级设定预警值,判断(2)中产生的令牌数是否小于预警值:

若小于,则将流量控制反馈信号拉高,否则,反馈信号拉低;

(4)依据流量控制反馈信号对具有端口汇聚功能的crossbar进行输入调度:

(4a)基于公平轮询算法得到待调度数据的出队调度信息;

(4b)检测(3)中产生的流量控制反馈信号:

若流量控制反馈信号为低,执行(4c);

若流量控制反馈信号为高,返回(4a);

(4c)检测(4a)中的非空队列对应的交叉节点是否空闲:

若空闲,则将该非空队列的队头数据帧写入出队帧信息fifo中,出队调度成功,执行(4d);

否则,一直等待直至该交叉节点空闲;

(4d)读取解析出队帧信息fifo,获得要出队的数据帧信息;

(5)对具有端口汇聚功能的crossbar交叉结点进行输入处理:

(5a)根据(4d)中解析的出队数据帧信息判断对应的目的交叉结点是否空闲:

若空闲,执行(5b);

否则,一直等待直至该交叉节点空闲;

(5b)根据(4d)中解析的出队数据帧信息得到出队地址,根据出队地址将数据帧搬移至目的交叉节点缓存;

(6)对具有端口汇聚功能的crossbar交叉结点进行输出处理:

(6a)采用公平轮询算法轮询纵向总线上4个交叉节点的缓存,当轮询到交叉结点缓存有数据时,读取该交叉结点缓存的数据帧信息获得输出的目的端口号;

(6b)检测(6a)中获得的输出端口是否可以接收数据:

若是,则将交叉结点缓存中的数据分发到这些输出端口;

否则,一直等待直至该输出端口可以接收数据;

本发明与现有技术相比具有如下优点:

第一,由于本发明采用令牌桶算法实现流量控制功能,引入了令牌注入周期与注入令牌数,最大令牌数相结合的方式,实现了用户可以自定义流控速率等级。

第二,由于本发明在crossbar交换网络输入调度处引入了流量控制反馈信号,使输出端口的转发隔离了流量控制的判断,避免了在具有端口汇聚功能的crossbar交换结构加入流量控制功能时由于令牌桶的流量整形限制而产生的排头阻塞问题。

附图说明

图1为本发明的实现流程图;

图2为本发明中令牌注入的子流程图;

图3为本发明中令牌更新的子流程图;

图4为本发明中的具有端口汇聚功能的交叉结点阵列crossbar结构图。

具体实施方式

下面结合附图对本发明作进一步的详细描述。

参照图1,本发明基于令牌桶算法进行流量控制的实现步骤如下:

步骤1,为令牌桶注入令牌

参照图2,本步骤的具体实现如下:

1a)对令牌桶进行初始化,即给令牌桶注入最大令牌数c,满足公式:

c+ρ×s=rmax×s

其中,ρ为流控速率;s为突发时间;rmax为系统最大速率;

1b)对每个令牌桶维护一个周期计数器,根据流控速率等级设定令牌注入周期:n=a/k,其中,a为注入令牌数;k为单位周期需要注入的令牌数,t为每个时钟周期维持的时间;

1c)判断周期计数器是否达到设定的令牌注入周期n:

如果达到,执行步骤1d),

如果未达到,执行1e);

1d)将周期计数器清零,判断原令牌数与注入的令牌数之和是否大于最大令牌数c:

若是,则拉高令牌写使能,即将令牌写使能置为1,并将注入的令牌数更新为最大令牌数;

若否,则将注入的令牌数更新为原令牌数与注入的令牌数之和;

1e)周期计数器继续加1,返回1c)。

步骤2,更新令牌桶中的令牌数

参照图3,本步骤的具体实现如下:

2a)设读使能信号为数据帧的起始信号,即只要来一帧数据帧,读使能信号就会拉高一个时钟周期,判断令牌桶的写使能信号和读使能信号是否同时拉高:

如果同时拉高,则更新令牌桶中的令牌数为1d)中的注入令牌数与删除的令牌数之差,执行步骤3,其中删除的令牌数为发送的数据帧长度;

否则,判断令牌桶的写使能信号是否拉高:

若写使能信号拉高,则更新令牌桶中的令牌数为1d)中的注入令牌数,执行步骤3;

若写使能信号未拉高,执行2b);

2b)判断令牌桶的读使能信号是否拉高:

若读使能信号拉高,则更新令牌桶中的令牌数为原令牌数与删除的令牌数之差,执行步骤3;

若读使能信号未拉高,则维持令牌桶中的令牌数不变,执行步骤3。

步骤3,判断令牌桶中的令牌数,产生流量控制反馈信号。

判断步骤2中产生的令牌数是否小于用户设定的预警值,若小于,则将反馈信号拉高,即将反馈信号置1,否则,将反馈信号置0。

步骤4,依据流量控制反馈信号对具有端口汇聚功能的crossbar进行输入调度。

本步骤是基于图4所示的交叉结点阵列crossbar的结构实现:

4a)用公平轮询算法轮询交叉结点阵列crossbar的每条横向总线上的16个输出端口fifo队列,即设当前输出的端口fifo队列号为i,则下次轮询从第i+1个端口fifo队列开始轮询:当轮询到第16个输出端口fifo队列号后,将输出端口fifo队列号置1,继续轮询,直到轮询到输出端口fifo中有非空队列为止;

4b)对轮询到的非空队列,检测步骤3中产生的流量控制反馈信号:

若流量控制反馈信号为1,则继续执行4a),该队列将不会作为调度结果写入出队帧信息fifo中;

若检测到的流量控制反馈信号为0,则执行步骤4c);

4c)检测4a)中的非空队列对应的交叉节点是否空闲:

若空闲,则将该非空队列的队头数据帧写入出队帧信息fifo中,出队调度成功,执行步骤五;

否则,一直等待直至该交叉节点空闲;

其中,所述非空队列对应的交叉节点分别如下:

非空队列1~4对应交叉结点1,

非空队列5~8对应交叉结点2,

非空队列9~12对应交叉结点3,

非空队列13~16对应交叉结点4。

步骤5:对交叉结点阵列crossbar的交叉节点进行输入处理。

5a)读取解析出队帧信息fifo,获得要出队的数据帧信息;

5b)根据5a)中解析的出队数据帧信息,判断对应的目的交叉结点是否空闲:

若空闲,执行5c);

否则,一直等待直至该交叉节点空闲;

5c)根据5a)中解析的出队数据帧信息得到出队地址,根据出队地址将数据帧搬移至目的交叉节点缓存。

步骤6:对交叉结点阵列crossbar交叉结点进行输出处理。

6a)用公平轮询调度算法轮询交叉结点阵列crossbar的一条纵向总线上的4个交叉节点的缓存,即设当前交叉结点为i,则下次轮询从第i+1个交叉结点开始轮询,当轮询到第4个交叉结点后,将交叉结点置1,继续轮询,直到轮询到交叉结点缓存中有数据为止,并读取该交叉结点缓存的数据帧信息获得输出的目的端口号;

6b)检测6a)中获得的输出端口是否可以接收数据:

若输出端口处于空闲状态,则判其可以接收数据,并将交叉结点缓存中的数据分发到这些输出端口;

否则,一直等待直至该输出端口处于空闲状态。

以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。

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