一种多任务间hash检测方法及装置的制作方法

文档序号:6602066阅读:121来源:国知局
专利名称:一种多任务间hash检测方法及装置的制作方法
技术领域
本发明涉及交换机等网络设备,特别涉及一种多任务间hash(哈希)检测方法及装置。
背景技术
随着Internet的迅速普及,交换机技术迅速发展,许多技术例如多协议标签交换 (Multi-Propocol Label Switching,MPLS)标签表的转发,主机路由表的转发为了提高查 找效率都采用了 hash算法实现,hash算法虽然可以大大地提高查找效率,但是不可避免地 带来hash冲突的问题。为了解决hash冲突问题,可以通过配置或者协议分配来解决。例如,对于mpls标 签来说,标签分发协议(Label Distribution Protocol,LDP)可以进行动态分配标签,可以 分配hash不冲突的mpls标签值。不管是静态配置还是动态协议分配,要避免hash冲突, 必须首先能够检测hash冲突。但是,对于一个设备多任务操作时,假设hash冲突链长度为 8,此时硬件已经写了 7个,如果有多个任务下发操作,并且hash的值都在同一个hash链上 时,会发生hash冲突,而各个任务查询的时候可能hash链还没有满8个,因此会出现hash 冲突但是上层配置或者协议检测不到的情况。

发明内容
本发明的目的在于,提供一种多任务间hash检测方法,能够解决多任务下发操作 时hash冲突但上层配置或者协议检测不到的问题。本发明的另一目的在于,提供一种多任务间hash检测装置,能够解决多任务下发 操作时hash冲突但上层配置或者协议检测不到的问题。本发明的多任务间hash检测方法,包括下列步骤A 协议处理模块在分配标签之前,先调用底层的驱动hash检测模块查询标签是 否可用,驱动hash检测模块执行标签写硬件操作,如果写失败,则hash冲突,反馈协议处理 模块标签不可用;如果写成功,则标签可用,同时在软件表中添加标签为预占用状态;B 协议处理模块收到驱动hash检测模块的反馈信息,如果反馈信息为失败,则返 回步骤A ;如果反馈信息为成功,则下发业务配置给业务驱动处理模块,业务驱动处理模块 判断标签是否被硬件预占用,如果预占用,则将该预占用状态的标签删除,并真正向硬件写 入标签。其中,还可以包括下列步骤对所述驱动hash检测模块进行信号量保护。其中,在所述步骤A中,所述调用底层的驱动hash检测模块查询标签是否可用,是 查询LDP协议动态分配的或者由用户界面配置的标签是否可用。其中,在所述步骤B中,业务驱动处理模块通过调用软件表判断标签是否被硬件 预占用,并在业务驱动处理模块判断标签未预占用时,在硬件表中删除标签,同时将软件表 中该标签删除。
其中,在所述步骤B之后,进一步包括下列步骤C:查找软件表,判断软件表中是否存在预占用或者预删除状态的标签,将预占用状态的标签状态设置为预删除状态,并将预删除状态的标签从硬件表删除。本发明的多任务间hash检测装置,包括协议处理模块、驱动hash检测模块、业务 驱动处理模块以及判断模块,其中,所述协议处理模块,用于在分配标签之前,调用底层的 驱动hash检测模块查询标签是否可用;并用于接收驱动hash检测模块的反馈信息,在收到 的反馈信息为标签不可用时,重新查询新的标签;在收到的反馈信息为标签可用时,下发业 务配置给业务驱动处理模块;驱动hash检测模块,用于在收到所述协议处理模块的查询请 求时执行标签写硬件操作,在写失败时,向协议处理模块反馈标签不可用;在写成功时,向 协议处理模块反馈标签可用,同时标识该标签为预占用状态;业务驱动处理模块,用于判断 标签是否被硬件预占用,在标签为预占用时,将该预占用状态的标签删除,并真正向硬件写 入标签。其中,对所述驱动hash检测模块进行信号量保护。其中,在所述协议处理模块中,所述调用底层的驱动hash检测模块查询标签是否 可用,是查询LDP协议动态分配的或者由用户界面配置的标签是否可用。其中,所述业务驱动处理模块,用于通过调用软件表判断标签是否被硬件预占用, 并在判断标签未预占用时,在硬件表中删除标签,同时将软件表中该标签删除。另外,可以进一步包括异常标签回收模块,用于查找软件表,判断软件表中是否存 在预占用或者预删除状态的标签,将预占用状态的标签状态设置为预删除状态,并将预删 除状态的标签从硬件表删除。本发明的有益效果是依照本发明的多任务间hash检测方法及装置,能够实现基 于硬件预占用的多任务间hash检测,避免多任务下发操作时因hash值在同一个hash链上 造成了 hash冲突但上层配置或者协议检测不到的情况。


图1为本发明实施例的多任务间hash检测方法的流程图;图2为本发明实施例的对由于异常导致的标签硬件预占用情况进行处理的流程 图;图3为本发明实施例的多任务间hash检测装置的结构示意图。
具体实施例方式以下,参考附图1 3详细描述本发明的多任务间hash检测方法及装置。为了描述具体,方便,本发明以MPLS标签分发的多任务间hash检测为例进行阐 述,但是本发明适用于其它基于hash的表项的管理。如图1所示,本发明实施例的多任务间hash检测方法,包括下列步骤步骤100 协议处理模块在分配标签之前,先调用底层的驱动hash检测模块查询 标签是否可用。其中,在步骤100中,调用底层的驱动hash检测模块查询标签是否可用,是 查询LDP协议动态分配的或者由用户界面配置的标签是否可用。步骤200 驱动hash检测模块执行标签写硬件操作,并判断是否写成功,如果写失败,则表明hash冲突,反馈协议处理模块标签不可用;如果写成功,则标签可用,同时在软 件表中添加标签为预占用状态。此时,标签已经实现硬件预占用,能够解决多任务hash检 测任务互斥。其中,要对驱动hash检测模块进行信号量保护。另外,需要说明的是,要对业务驱动处理模块和驱动hash检测模块用同一信号量 进行保护,从而进一步避免多任务互斥。其中,信号量是可以用来保护两个或多个关键代码段,这些关键代码段不能并发 调用。在进入一个关键代码段之前,线程必须获取一个信号量。一旦该关键代码段完成了, 那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释 放信号量。步骤300 协议处理模块收到驱动hash检测模块的反馈信息,如果反馈信息为失 败,则返回步骤100 ;如果反馈信息为成功,则下发业务配置给业务驱动处理模块,业务驱 动处理模块通过调用软件表判断标签是否被硬件预占用,如果预占用,则在硬件表中删除 标签,同时将软件表中该标签删除,业务驱动处理模块真正写入标签并执行相应的动作。另 夕卜,需要说明的是,要对业务驱动处理模块和驱动hash检测模块用同一信号量进行保护, 从而进一步避免多任务互斥。另外,本发明还可以进一步包括下列步骤,如图2所示查找软件表,判断软件表中是否存在预占用或者预删除状态的标签,将预占用状 态的标签状态设置为预删除状态,并将预删除状态的标签从硬件表删除。其中,该流程可以 每隔预定时间(例如5秒)执行一次,通过一到两个周期就能够将因异常情况导致被预占 用的标签进行释放。如图3所示,为本发明的多任务间hash检测装置的示意图,该装置包括协议处理 模块、驱动hash检测模块、业务驱动处理模块以及判断模块。其中,协议处理模块,用于在分配标签之前,调用底层的驱动hash检测模块查询 标签是否可用;其中,该标签是由LDP协议动态分配或者由用户界面配置;并用于接收驱动 hash检测模块的反馈信息,在收到的反馈信息为标签不可用时,重新查询新的标签;在收 到的反馈信息为标签可用时,下发业务配置给业务驱动处理模块。驱动hash检测模块,用于在收到协议处理模块的查询请求时执行标签写硬件操 作,在写失败时,向协议处理模块反馈标签不可用;在写成功时,向协议处理模块反馈标签 可用,同时在软件表中添加标签为预占用状态。其中,要对驱动hash检测模块进行信号量 保护。此时,标签已经实现硬件预占用,能够解决多任务hash检测任务互斥。业务驱动处理模块,用于通过调用软件表判断标签是否被硬件预占用,在标签为 预占用时,在硬件表中删除标签并将软件表中该标签删除,真正写入标签并执行相应的动 作。另外,需要说明的是,要对业务驱动处理模块和驱动hash检测模块用同一信号量 进行保护,从而进一步避免多任务互斥。另外,本发明还可以进一步包括异常标签回收模块,用于查找软件表,判断软件表 中是否存在预占用或者预删除状态的标签,将预占用状态的标签状态设置为预删除状态, 并将预删除状态的标签从硬件表删除,同时将软件表中标签的状态位清零。该异常标签回 收模块,可以每隔预定时间(例如5秒)执行一次,通过一到两个周期就能够将因异常情况导致被预占用的标签进行释放。综上所述,依照本发明的多任务间hash检测方法及装置,能够实现基于硬件预占用的多任务间hash检测,避免多任务下发操作时因hash值在同一个hash链上造成了 hash 冲突但上层配置或者协议检测不到的情况。以上是为了使本领域普通技术人员理解本发明,而对本发明所进行的详细描述, 但可以想到,在不脱离本发明的权利要求所涵盖的范围内还可以做出其它的变化和修改, 这些变化和修改均在本发明的保护范围内。
权利要求
一种多任务间hash检测方法,其特征在于,包括下列步骤A协议处理模块在分配标签之前,先调用底层的驱动hash检测模块查询标签是否可用,驱动hash检测模块执行标签写硬件操作,如果写失败,则hash冲突,反馈协议处理模块标签不可用;如果写成功,则标签可用,同时在软件表中添加标签为预占用状态;B协议处理模块收到驱动hash检测模块的反馈信息,如果反馈信息为失败,则返回步骤A;如果反馈信息为成功,则下发业务配置给业务驱动处理模块,业务驱动处理模块判断标签是否被硬件预占用,如果预占用,则将该预占用状态的标签删除,并真正向硬件写入标签。
2.如权利要求1所述的多任务间hash检测方法,其特征在于,包括下列步骤对所述 驱动hash检测模块进行信号量保护。
3.如权利要求2所述的多任务间hash检测方法,其特征在于,在所述步骤A中,所述调 用底层的驱动hash检测模块查询标签是否可用,是查询LDP协议动态分配的或者由用户界 面配置的标签是否可用。
4.如权利要求2所述的多任务间hash检测方法,其特征在于,在所述步骤B中,业务驱 动处理模块通过调用软件表判断标签是否被硬件预占用,并在业务驱动处理模块判断标签 未预占用时,在硬件表中删除标签,同时将软件表中该标签删除。
5.如权利要求1至4中任一项所述的多任务间hash检测方法,其特征在于,在所述步 骤B之后,进一步包括下列步骤C 查找软件表,判断软件表中是否存在预占用或者预删除状态的标签,将预占用状态 的标签状态设置为预删除状态,并将预删除状态的标签从硬件表删除。
6.一种多任务间hash检测装置,其特征在于,包括协议处理模块、驱动hash检测模块、 业务驱动处理模块以及判断模块,其中,所述协议处理模块,用于在分配标签之前,调用底层的驱动hash检测模块查询标签 是否可用;并用于接收驱动hash检测模块的反馈信息,在收到的反馈信息为标签不可用 时,重新查询新的标签;在收到的反馈信息为标签可用时,下发业务配置给业务驱动处理模 块;驱动hash检测模块,用于在收到所述协议处理模块的查询请求时执行标签写硬件操 作,在写失败时,向协议处理模块反馈标签不可用;在写成功时,向协议处理模块反馈标签 可用,同时标识该标签为预占用状态;业务驱动处理模块,用于判断标签是否被硬件预占用,在标签为预占用时,将该预占用 状态的标签删除,并真正向硬件写入标签。
7.如权利要求6所述的多任务间hash检测装置,其特征在于,对所述驱动hash检测模 块进行信号量保护。
8.如权利要求7所述的多任务间hash检测装置,其特征在于,在所述协议处理模块中, 所述调用底层的驱动hash检测模块查询标签是否可用,是查询LDP协议动态分配的或者由 用户界面配置的标签是否可用。
9.如权利要求7所述的多任务间hash检测装置,其特征在于,所述业务驱动处理模块, 用于通过调用软件表判断标签是否被硬件预占用,并在判断标签未预占用时,在硬件表中 删除标签,同时将软件表中该标签删除。
10.如权利要求6至9中任一项所述的多任务间hash检测装置,其特征在于,进一步包 括异常标签回收模块,用于查找软件表,判断软件表中是否存在预占用或者预删除状态的 标签,将预占用状态的标签状态设置为预删除状态,并将预删除状态的标签从硬件表删除。
全文摘要
本发明提供一种多任务间hash检测方法及装置,其中,该方法包括下列步骤A协议处理模块在分配标签之前,先调用底层的驱动hash检测模块查询标签是否可用,驱动hash检测模块执行标签写硬件操作,如果写失败,则hash冲突,反馈协议处理模块标签不可用;如果写成功,则标签可用,同时在软件表中添加标签为预占用状态;B协议处理模块收到驱动hash检测模块的反馈信息,如果反馈信息为失败,则返回步骤A;如果反馈信息为成功,则下发业务配置给业务驱动处理模块,业务驱动处理模块判断标签是否被硬件预占用,如果预占用,则将预占用状态的标签删除,并真正向硬件写入标签。本发明能够解决多任务下发操作时hash冲突但上层配置或者协议检测不到的问题。
文档编号G06F21/73GK101827001SQ20101016833
公开日2010年9月8日 申请日期2010年5月11日 优先权日2010年5月11日
发明者潘庭山 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1