一种管理链表资源的方法及装置与流程

文档序号:11156415 阅读:283 来源:国知局
一种管理链表资源的方法及装置与制造工艺

本申请涉及通讯技术领域,尤其涉及一种管理链表资源的方法及装置。



背景技术:

在相关技术中,网络设备通过使用哈希表的数据结构来实现快速查找。网络设备的功能模块将对应于报文的策略控制信息记录在创建好的链表节点中,当后续接收到报文时,根据报文计算哈希值,从而在哈希值下匹配对应的链表节点。当匹配到对应的链表节点时,根据该链表节点记录的策略控制信息对报文进行相应的功能控制。当检测到针对某一链表节点对应的链表资源的回收请求时,功能模块将删除该链表节点,并将该链表资源的地址回收至地址资源池中。

然而,当链表资源的地址被错误修改时,可能会出现功能模块错误回收本无需回收的链表资源的情况,导致后续影响对接收到报文的正常处理,甚至可能导致链表节点进入死循环,网络设备因此宕机。



技术实现要素:

有鉴于此,本申请提供一种管理链表资源的方法及装置,可以解决因数据传输出现错误导致影响对报文的正常处理以及网络设备宕机的问题。

为实现上述目的,本申请提供技术方案如下:

根据本申请的第一方面,提出了一种管理链表资源的方法,应用于网络设备,所述网络设备维护了一哈希表,所述哈希表中每一哈希值下创建有若干链表节点;所述方法包括:

当检测到针对特定链表节点对应的链表资源的回收请求时,提取所述链表资源的当前地址和所述特定链表节点中记录的第一标识信息;其中,所述第一标识信息在所述链表资源被应用于创建所述特定链表节点时被存储于所述特定链表节点中;

根据预存储的每一链表节点对应的链表资源的实际地址与存储于该每一链表节点中的标识信息之间的映射关系,查找对应于所述当前地址的第二标识信息,或者对应于所述第一标识信息的实际地址;

当所述第一标识信息与所述第二标识信息不一致时,或者当所述当前地址与所述实际地址不一致时,拒绝所述回收请求。

根据本申请的第二方面,提出了一种管理链表资源的装置,应用于网络设备,所述网络设备维护了一哈希表,所述哈希表中每一哈希值下创建有若干链表节点;所述装置包括:

提取单元,当检测到针对特定链表节点对应的链表资源的回收请求时,提取所述链表资源的当前地址和所述特定链表节点中记录的第一标识信息;其中,所述第一标识信息在所述链表资源被应用于创建所述特定链表节点时被存储于所述特定链表节点中;

查找单元,根据预存储的每一链表节点对应的链表资源的实际地址与存储于该每一链表节点中的标识信息之间的映射关系,查找对应于所述当前地址的第二标识信息,或者对应于所述第一标识信息的实际地址;

第一处理单元,当所述第一标识信息与所述第二标识信息不一致时,或者当所述当前地址与所述实际地址不一致时,拒绝所述回收请求。

由以上技术方案可见,在本申请的技术方案中,通过在检测到对链表资源的回收请求时,对该链表资源的当前地址进行校验,可以使得功能模块准确回收链表节点对应的链表资源,从而避免链表节点进入死循环的问题。

附图说明

图1是相关技术中网络设备对接收到报文的处理过程的流程图。

图2是相关技术中哈希表中同一哈希值下链表节点的结构示意图。

图3是相关技术中因链表资源的地址被错误修改导致策略控制信息被覆盖的示意图。

图4是相关技术中因链表资源的地址被错误修改导致链表节点进入死循环的示意图。

图5是本申请一示例性实施例提供的一种管理链表资源的方法的流程图。

图6是本申请一示例性实施例提供的网络设备的结构示意图。

图7是本申请一示例性实施例提供的另一种管理链表资源的方法的流程图。

图8是本申请一示例性实施例提供的一种电子设备的结构示意图。

图9是本申请一示例性实施例提供的一种管理链表资源的装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1是网络设备对接收到报文的处理过程的流程图。如图1所示,该处理过程可以包括以下步骤:

步骤101,网络设备接收报文。

步骤102,网络设备的功能模块根据接收到的报文计算哈希值。

步骤103,功能模块在计算得到的哈希值下,匹配与接收到报文对应的链表节点。

其中,功能模块可以根据接收到报文的五元组信息计算哈希值,然后在计算得到的哈希值下,匹配与接收到报文对应的链表节点(例如,可以根据报文的五元组信息匹配对应的链表节点)。

步骤104,是否匹配到与接收到报文对应的链表节点,若匹配到了与接收到报文对应的链表节点,则转入步骤105a,否则,转入步骤105b。

步骤105a,功能模块根据匹配到链表节点中记录的策略控制信息,对报文进行相应的功能控制。

步骤105b,功能模块向地址资源池申请链表资源,应用申请到的链表资源,创建相应的链表节点,并记录对应于接收到报文的策略控制信息。

其中,地址资源池用于记录所有未被应用于创建链表节点的链表资源的地址。

图2是哈希表中同一哈希值下链表节点的结构示意图。请参见图2,举例而言,假定网络设备先后接收到报文A、B、C、D,分别根据报文A、B、C、D的五元组信息,计算得到同一哈希值(即出现哈希冲突),先后向地址资源池申请到了地址X1、X2、X3、X4,并先后应用地址X1、X2、X3、X4的链表资源分别创建了链表节点1、链表节点2、链表节点3、链表节点4。其中,哈希值下记录了链表节点1的地址信息,链表节点1中记录了链表节点2的地址信息,链表节点2中记录了链表节点3的地址信息,链表节点3中记录了链表节点4的地址信息。当功能模块在该哈希值下匹配对应的链表节点时,即根据哈希值和各个链表节点记录的地址信息,对各个链表节点逐个进行匹配操作。例如,当功能模块确定到该哈希值下匹配对应的链表节点时,读取该哈希值下记录的地址信息X1,与创建在地址信息为X1的链表资源的链表节点1进行匹配,若不相匹配,则根据链表节点1中记录的地址信息X2,与创建在地址信息为X2的链表资源的链表节点2进行匹配,以此类推。

在相关技术中,当检测到针对某一链表节点对应的链表资源的回收请求时,功能模块将删除该链表节点,并将该链表资源的地址回收至地址资源池中。例如,当某一链表节点记录的策略控制信息在一定时间内未被使用时,功能模块将删除该链表节点,并将应用于创建该链表节点的链表资源的地址回收至地址资源池中。

然而,例如数据在网络设备中传输出现错误,或者由于链路不稳定、温度过高、电压不稳定等,导致链表资源的地址被错误修改,则可能出现功能模块错误回收本无需回收的链表资源的情况,导致后续影响对接收到报文的正常处理,甚至可能导致链表节点进入死循环,网络设备因此宕机。

此处结合图3和图4,对上述出现的情况进行详细说明。

假定图1中对应于链表节点3的链表资源的地址X3被错误修改为X2,则当后续功能模块删除链表节点3时,回收至地址资源池的为地址X2。而当功能模块删除链表节点2时,回收至地址资源池的也为地址X2。那么地址资源池中将包含两个地址X2。在一种情况下,请参见图3,假定此时网络设备先后接收到报文M和报文N,根据报文M计算得到哈希值a,根据报文N计算得到哈希值b,且在接收到报文M时,功能模块向地址资源池申请到的链表资源的地址为X2,在接收到报文N时,功能模块向地址资源池申请到的链表资源的地址也为X2。那么,功能模块在哈希值a下应用地址为X2的链表资源创建链表节点2,并记录对应于报文M的策略控制信息后,在哈希值b下创建链表节点7时,由于应用的链表资源的地址也为X2,所以在记录对应于报文N的策略控制信息时,会将对应于报文M的策略控制信息覆盖。当后续网络设备再次接收到报文M时,功能模块将错误按照对应于报文N的策略控制信息对报文M进行功能控制,导致网络设备处理报文发生错误。

在另一种情况下,请参见图4,假定网络设备先后接收到报文E、报文F、报文G,且根据报文E、报文F、报文G计算得到的哈希值都为c。功能模块向地址资源池申请到的地址为X1,则在哈希值c下记录地址X1,应用地址为X1的链表资源创建链表节点9,并记录对应于报文E的策略控制信息。然后功能模块向地址资源池申请到地址X2,在链表节点9中记录地址X2,应用地址为X2的链表资源创建链表节点10,并记录对应于报文F的策略控制信息。此时,若功能模块向地址资源池申请到的地址又是X2(因为地址资源池中包含两个地址X2),则在链表节点10中记录地址X2,并在链表节点10中记录对应于报文G的策略控制信息,而对应于报文F的策略控制信息被对应于报文G的策略控制信息覆盖。进一步,由于链表节点10中记录的下一链表节点对应的链表资源的地址是X2,而对应于链表节点10的链表资源的地址也是X2,导致链表节点进入死循环。当后续网络设备的功能模块在哈希值c下匹配对应于接收到报文的链表节点时,将进入死循环,导致网络设备宕机。

因此,本申请通过改进对链表资源的管理方案,以解决相关技术中存在的上述技术问题。下面结合实施例进行详细说明:

图5是本申请一示例性实施例示出的一种管理链表资源的方法的流程图,如图5所示,该方法应用于网络设备,所述网络设备维护了一哈希表,所述哈希表中每一哈希值下创建有若干链表节点;该方法可以包括以下步骤:

步骤501,当检测到针对特定链表节点对应的链表资源的回收请求时,提取所述链表资源的当前地址和所述特定链表节点中记录的第一标识信息。

在本实施例中,所述第一标识信息在所述链表资源被应用于创建所述特定链表节点时被存储于所述特定链表节点中。

步骤502,根据预存储的每一链表节点对应的链表资源的实际地址与存储于该每一链表节点中的标识信息之间的映射关系,查找对应于所述当前地址的第二标识信息,或者对应于所述第一标识信息的实际地址。

步骤503,当所述第一标识信息与所述第二标识信息不一致时,或者当所述当前地址与所述实际地址不一致时,拒绝所述回收请求。

在本实施例中,当所述第一标识信息与所述第二标识信息一致时,或者当所述当前地址与所述实际地址一致时,根据所述回收请求对所述特定链表节点对应的链表资源进行回收。

在本实施例中,当任一链表节点存在的时长达到预设时长时,对应用于创建所述任一链表节点的链表资源进行回收;其中,通过以下方式对应用于创建所述任一链表节点的链表资源进行回收:

删除所述任一链表节点;

根据所述映射关系,将应用于创建所述任一链表节点的链表资源的实际地址回收至地址资源池中;其中,所述地址资源池用于记录所有未被应用于创建链表节点的链表资源的实际地址。

在本实施例中,当所述第一标识信息与所述第二标识信息不一致时,根据所述实际地址,对所述当前地址进行修改;

或者,当所述当前地址与所述实际地址不一致时,根据所述实际地址,对所述当前地址进行修改。

由以上技术方案可见,通过本申请的技术方案,在链表资源被应用于创建链表节点时,在该链表节点中存储第一标识信息,同时记录链表资源的实际地址与存储于该链表节点中的标识信息之间的映射关系。当功能模块检测到针对特定链表节点对应的链表资源的回收请求时,根据记录的映射关系对该链表资源的当前地址进行校验,从而避免因链表资源的地址信息出错,导致功能模块错误回收本无需回收的链表资源,从而影响对后续接收到报文的正常处理,以及链表节点进入死循环的问题。同时,根据记录的映射关系,还可以将链表资源错误的当前地址进行修改。

为了便于理解,下面结合图6-7,对本申请的技术方案进行详细说明。请参见图6,图6是本申请一示例性实施例示出的网络设备的结构示意图。如图6所示:网络设备配置有功能模块、校验模块、记录模块、地址资源池管理模块。其中,校验模块和记录模块可以配置为各自独立的两个模块,也可以配置在同一模块中。图7是本申请一示例性实施例示出的另一种管理链表资源的方法的流程图。如图7所示,该方法可以包括以下步骤:

步骤701,校验模块检测功能模块针对特定链表节点对应的链表资源的回收请求。

步骤702,校验模块对当前地址进行校验。

步骤703,当前地址是否存在错误,若存在错误,则转入步骤704a或者704b,否则转入步骤705a。

在本实施例中,当功能模块需要创建链表节点时,向地址资源池管理模块申请链表资源。其中,地址资源池管理模块用于管理地址资源池,地址资源池用于记录所有未被应用于创建链表节点的链表资源的实际地址。当功能模块申请到链表资源,并应用于创建链表节点时,记录模块在该链表节点中存储第一标识信息,同时记录并存储链表资源的实际地址与存储于该链表节点中的标识信息之间的映射关系,以及记录创建该链表节点的时刻。

当校验模块检测到功能模块针对特定链表节点对应的链表资源的回收请求时,对该链表资源的当前地址进行校验。其校验过程包括以下两种方式:

1、比较标识信息

校验模块提取该链表资源的当前地址和该特定链表节点中记录的第一标识信息;根据记录模块预存储的每一链表节点对应的链表资源的实际地址与存储于该每一链表节点中的标识信息之间的映射关系,查找对应于该当前地址的第二标识信息;当第一标识信息与第二标识信息不一致时,说明该链表资源的当前地址存在错误。

2、比较地址

校验模块提取该链表资源的当前地址和该特定链表节点中记录的第一标识信息;根据记录模块预存储的每一链表节点对应的链表资源的实际地址与存储于该每一链表节点中的标识信息之间的映射关系,查找对应于该第一标识信息的实际地址;若当前地址与实际地址不一致,则说明该链表资源的当前地址存在错误。

举例而言,链表节点1对应的链表资源的实际地址为X1,记录模块在链表节点1中存储了第一标识信息Y1,同时记录了X1与Y1的映射关系;链表节点2对应的链表资源的实际地址为X2,记录模块在链表节点2中存储了第一标识信息Y2,同时记录了X2与Y2的映射关系。当X1被错误修改为X2,且功能模块要对链表节点1对应的链表资源进行回收时,校验模块提取链表节点1对应的链表资源的当前地址X2(原本为X1,被错误修改为X2),以及链表节点1中记录的第一标识信息Y1。

针对方式1(比较标识信息),根据记录模块预存储的映射关系,查找到对应于当前地址X2的第二标识信息Y2,而第一标识信息Y1与第二标识信息Y2不一致,说明链表节点1对应的链表资源的当前地址X2存在错误。

针对方式2(比较地址),根据记录模块预存储的映射关系,查找到对应于第一标识信息Y1的实际地址X1,而当前地址X2与实际地址X1不一致,说明链表节点1对应的链表资源的当前地址X2存在错误。

步骤704a,校验模块根据查找到的实际地址,对当前地址进行修改,然后转入步骤705a。

在本实施例中,承接于上述举例,针对方式1,当确定当前地址X2存在错误时,根据记录的X1与Y1的映射关系,确定对应于链表节点1的链表资源的实际地址为X1,将当前地址X2修改为X1;针对方式2,当确定当前地址X2存在错误时,根据查找到的实际地址X1,对当前地址X2进行修改。

步骤704b,校验模块拒绝回收请求,然后转入步骤705b。

步骤705a,功能模块对特定链表节点对应的链表资源进行回收。

在本实施例中,承接于步骤703,功能模块根据回收请求对特定链表节点对应的链表资源进行回收;承接于步骤704a,功能模块删除该特定链表节点,并将实际地址回收至地址资源池中。例如,承接于步骤704a的举例,将实际地址X1回收至地址资源池中。

步骤705b,记录模块根据记录的创建该特定链表节点的时刻,对链表资源进行超时回收。

在本实施例中,记录模块根据记录的创建该特定链表节点的时刻,判断该特定链表节点存在的时长是否达到预设时长,当该特定链表节点存在的时长达到预设时长时,删除该特定链表节点,并根据该特定链表节点中存储的第一标识信息,以及记录的映射关系,查找对应与该第一标识信息的实际地址,将查找到的实际地址回收至地址资源池中。例如,承接于步骤703的举例,当链表节点1存在的时长达到预设时长(例如,可以是30分钟)时,删除链表节点1,并根据链表节点1中存储的第一标识信息Y1,以及记录的X1与Y1的映射关系,查找到实际地址X1,将实际地址X1回收至地址资源池中。其中,预设时长可以根据实际情况灵活设置,本申请并不对此进行限制。通过步骤705b的超时回收操作,可以解决当校验模块拒绝对特定链表节点对应的链表资源的回收请求时,该链表资源无法回收的问题。

由以上技术方案可见,通过本申请的技术方案,在链表资源被应用于创建链表节点时,在该链表节点中存储第一标识信息,同时记录链表资源的实际地址与存储于该链表节点中的标识信息之间的映射关系。当功能模块检测到针对特定链表节点对应的链表资源的回收请求时,根据记录的映射关系对该链表资源的当前地址进行校验,从而避免因链表资源的地址信息出错,导致功能模块错误回收本无需回收的链表资源,从而影响对后续接收到报文的正常处理,以及链表节点进入死循环的问题。同时,根据记录的映射关系,还可以将链表资源错误的当前地址进行修改。

图8示出了根据本申请的一示例性实施例的电子设备的示意结构图。请参考图8,在硬件层面,该电子设备包括处理器802、内部总线804、网络接口806、内存808以及非易失性存储器810,当然还可能包括其他业务所需要的硬件。处理器802从非易失性存储器810中读取对应的计算机程序到内存802中然后运行,在逻辑层面上形成管理链表资源的装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图9,在软件实施方式中,该管理链表资源的装置可以包括提取单元901、查找单元902和第一处理单元903。其中:

提取单元901(相当于图6中校验模块的一部分功能),当检测到针对特定链表节点对应的链表资源的回收请求时,提取所述链表资源的当前地址和所述特定链表节点中记录的第一标识信息;其中,所述第一标识信息在所述链表资源被应用于创建所述特定链表节点时被存储于所述特定链表节点中;

查找单元902(相当于图6中校验模块的一部分功能),根据预存储的每一链表节点对应的链表资源的实际地址与存储于该每一链表节点中的标识信息之间的映射关系,查找对应于所述当前地址的第二标识信息,或者对应于所述第一标识信息的实际地址;

第一处理单元903(相当于图6中校验模块的一部分功能),当所述第一标识信息与所述第二标识信息不一致时,或者当所述当前地址与所述实际地址不一致时,拒绝所述回收请求。

可选的,还包括:

第二处理单元904(相当于图6中功能模块的一部分功能),当所述第一标识信息与所述第二标识信息一致时,或者当所述当前地址与所述实际地址一致时,根据所述回收请求对所述特定链表节点对应的链表资源进行回收。

可选的,还包括:

回收单元905(相当于图6中记录模块的一部分功能),当任一链表节点存在的时长达到预设时长时,对应用于创建所述任一链表节点的链表资源进行回收。

可选的,所述回收单元905具体用于:

删除所述任一链表节点;

根据所述映射关系,将应用于创建所述任一链表节点的链表资源的实际地址回收至地址资源池中;其中,所述地址资源池用于记录所有未被应用于创建链表节点的链表资源的实际地址。

可选的,还包括:

修改单元906(相当于图6中校验模块的一部分功能),当所述第一标识信息与所述第二标识信息不一致时,根据所述实际地址,对所述当前地址进行修改;

或者,当所述当前地址与所述实际地址不一致时,根据所述实际地址,对所述当前地址进行修改。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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