发明名称 基于cache的网络处理器的动态负载分配方法及其装置
摘要 本发明公开了一种基于cache的网络处理器的动态负载分配方法,首先报文缓冲器提取报文的源IP地址和目的IP地址后,通过流标识hash计算单元算出16位的流标识值,并利用该流标识值查找负载分配cache,确定由哪个目标处理单元处理该报文;如果负载分配cache不命中,则通过实时监控处理单元负载状况的负载计算部件给出当前负载最轻的处理单元编号作为目标处理单元;然后报文分发单元从报文缓冲单元中读取报文,按照已确定的目标处理单元将报文分配到相应的处理单元中;利用该方法得到的动态负载分配装置,包括流标识hash计算单元、负载分配cache、负载计算单元、报文缓冲单元和报文分发单元。本发明能够高效维持负载均衡并具有较强报文流保序能力。
申请公布号 CN100385881C 申请公布日期 2008.04.30
申请号 CN200510031876.3 申请日期 2005.07.15
申请人 中国人民解放军国防科学技术大学 发明人 唐玉华;张晓明;孙志刚;胡晓峰;管剑波
分类号 H04L12/56(2006.01) 主分类号 H04L12/56(2006.01)
代理机构 湖南兆弘专利事务所 代理人 赵洪
主权项 1.一种基于cache的网络处理器的动态负载分配方法,其特征在于:首先报文缓冲单元提取报文的源IP地址和目的IP地址后,通过流标识hash计算单元算出16位的流标识值,并利用该流标识值查找负载分配cache,确定由哪个目标处理单元处理该报文;如果负载分配cache不命中,则通过实时监控处理单元负载状况的负载计算单元给出当前负载最轻的处理单元号作为目标处理单元;然后报文分发单元从报文缓冲单元中读取报文,按照已确定的目标处理单元将报文分配到相应的处理单元中;所述负载计算单元维护着一张记录各个处理单元的平均队列长度的负载表,该队列长度采用指数平滑值来表示;所述指数平滑值的计算公式如下为:Avg_Queue_leni+1=Avg_Queue_leni×(1-w)+Curr_Queue_len×w其中Avg_Queue_leni表示报文到达前,输入队列的平均队列长度;Avg_Queue_leni+1 表示报文到达后,输入队列的平均队列长度;Curr_Queue_len表示报文加入队列后,输入队列的实际长度;w表示队列权值,它指定当前队列实际长度对平均队列长度的贡献;所述负载分配cache和负载计算单元共同确定目标处理单元的流程为:(1)、初始化,在网络处理器初始化时,将负载分配cache所有表项初始化为无效,即将每个表项的valid位置1;(2)、正常工作状态,对于每个到达的报文,进行如下处理:1)、将16位流标识中的低8位作为index,查找cache表项;获得的表项信息中如果表项的vaild位为1,表示无效,或者表项的tag字段与流标识字段不匹配,表示不命中;如果valid位为0且表项的tag字段与流标识高8位匹配,表示命中;2)、如果命中,则负载分配cache中处理单元标识字段即为报文所需分配的处理单元编号,将报文分配给相应处理单元;如果不命中,则从负载计算部件中获得当前负载最轻的处理单元编号,作为报文所需分配处理单元,同时更新cache表项;具体而言,将流标识的低8位作为索引地址,找到流标识对应的负载分配cache表项,将流标识的高8位作为tag填入cache表项的tag字段中,从负载计算单元中获得当前负载最轻的处理单元编号,填入相应负载分配cache表项中,将vaild位置0,表示有效,将时间戳字段清0;3)、Cache更新部件除了在查cache表项不命中时替换相应的表项外,还负责定期更新cache中有效表项,valid位为0时的时间戳字段,每隔512个时钟周期更新一次,并且当时间戳溢出时该表项被作废。
地址 410073湖南省长沙市砚瓦池正街47号国防科学技术大学计算机学院
您可能感兴趣的专利