CN107579916A - 转发表项访问方法及装置 - Google Patents

转发表项访问方法及装置 Download PDF

Info

Publication number
CN107579916A
CN107579916A CN201610528199.4A CN201610528199A CN107579916A CN 107579916 A CN107579916 A CN 107579916A CN 201610528199 A CN201610528199 A CN 201610528199A CN 107579916 A CN107579916 A CN 107579916A
Authority
CN
China
Prior art keywords
forwarding
hash buckets
table item
storage address
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610528199.4A
Other languages
English (en)
Other versions
CN107579916B (zh
Inventor
宋建明
赵云峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
New H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by New H3C Technologies Co Ltd filed Critical New H3C Technologies Co Ltd
Priority to CN201610528199.4A priority Critical patent/CN107579916B/zh
Priority to JP2019500254A priority patent/JP7010922B2/ja
Priority to US16/309,863 priority patent/US11038797B2/en
Priority to PCT/CN2017/091599 priority patent/WO2018006786A1/zh
Priority to EP17823598.2A priority patent/EP3481014B1/en
Publication of CN107579916A publication Critical patent/CN107579916A/zh
Application granted granted Critical
Publication of CN107579916B publication Critical patent/CN107579916B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof

Abstract

本申请提供一种转发表项访问方法及装置,其中,该方法包括:接收转发模块发来的读表项命令,其中,该读表项命令中携带有需要读取的第一转发表项的存储地址;根据第一转发表项的存储地址,查找处于有效状态、并且包含的存储地址与第一转发表项的存储地址相同的第一Hash桶;若查找到了第一Hash桶,则将第一Hash桶对应的缓存空间中缓存的第一转发表项发送给转发模块;若没有查找到第一Hash桶,则从存储模块中读取第一转发表项,将读取到的第一转发表项发送给转发模块。

Description

转发表项访问方法及装置
技术领域
本申请涉及网络通信技术领域,特别涉及一种转发表项访问方法及装置。
背景技术
诸如交换机、路由器等网络转发设备在对报文进行转发处理时,需要查找转发表,这些转发表大多必须存放在内存中,例如,存放在DDR SDRAM(Double Data RateSynchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器)中。网络转发设备中的转发模块需要从DDR SDRAM中读取各个转发表进行查找,从而完成对报文的转发处理。
转发模块接收到报文之后,需要执行步骤1至步骤n的转发处理过程,在该过程中,需要从DDR SDRAM中读取表1至表n这n个转发表进行查找。
上述方法中,转发模块直接从DDR SDRAM中查找转发表,但是,由于DDR SDRAM的带宽是有限的,从而,无法满足网络转发设备的高性能转发需求。
发明内容
有鉴于此,本申请提供一种转发表项访问方法及装置。
具体地,本申请是通过如下技术方案实现的:
一方面,提供了一种转发表项访问方法,该方法包括:
接收转发模块发来的读表项命令,其中,该读表项命令中携带有需要读取的第一转发表项的存储地址;
根据第一转发表项的存储地址,查找处于有效状态、并且包含的存储地址与第一转发表项的存储地址相同的第一Hash桶;
若查找到了第一Hash桶,则将第一Hash桶对应的缓存空间中缓存的第一转发表项发送给转发模块;
若没有查找到第一Hash桶,则从存储模块中读取第一转发表项,将读取到的第一转发表项发送给转发模块。
另一方面,还提供了一种转发表项访问装置,该装置包括:转发模块、缓存模块和存储模块,其中,缓存模块中包括:
接收单元,用于接收转发模块发来的读表项命令,其中,该读表项命令中携带有需要读取的第一转发表项的存储地址;
查找单元,用于在接收单元接收到读表项命令之后,根据第一转发表项的存储地址,查找处于有效状态、并且包含的存储地址与第一转发表项的存储地址相同的第一Hash桶;
读取单元,用于若查找单元没有查找到第一Hash桶,则从存储模块中读取第一转发表项;
发送单元,用于若查找单元查找到了第一Hash桶,则将第一Hash桶对应的缓存空间中缓存的第一转发表项发送给转发模块;还用于将读取单元读取到的第一转发表项发送给转发模块。
通过本申请的以上技术方案,在转发模块与存储模块之间增加缓存模块,由缓存模块处理转发模块的读表项命令,根据该读表项命令中携带的需要读取的转发表项的存储地址,查找处于有效状态、并且包含的存储地址与该转发表项的存储地址相同的Hash桶,若查找到了,说明缓存模块中缓存有该转发表项,并且缓存在该Hash桶对应的缓存空间中,则将缓存的第一转发表项发送给转发模块;若没有查找到,说明缓存模块中没有缓存该转发表项,则从存储模块中读取第一转发表项后,将读取到的第一转发表项发送给转发模块。上述方法实现了一种转发表项的缓存方案,缓存模块只处理转发模块发来的读表项命令,从而保证了较高的读表项性能。
附图说明
图1是本申请一示例性实施例示出的转发设备的结构示意图;
图2是本申请一示例性实施例示出的缓存模块对转发模块发来的读表项命令进行处理的流程图;
图3是本申请一示例性实施例示出的Hash桶行和entry行的结构示意图;
图4是本申请一示例性实施例示出的Hash桶的结构示意图;
图5是本申请一示例性实施例示出的缓存模块缓存从存储模块中读取到的第一转发表项的流程图;
图6是本申请一示例性实施例示出的转发表项访问装置的一种结构示意图;
图7是本申请一示例性实施例示出的转发表项访问装置的另一种结构示意图;
图8是本申请一示例性实施例示出的转发表项访问装置的又一种结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请以下实施例中提供了一种转发表项访问方法,以及一种可以应用该方法的转发表项访问装置。
如图1所示,诸如交换机、路由器等需要对报文进行转发处理的转发设备中包括:CPU(Central Processing Unit,中央处理器)、转发模块、用于存储各个转发表的存储模块、以及用于控制存储模块的控制器模块,本申请实施例中在转发模块与存储模块之间增加了缓存(cache)模块,用于缓存转发模块查找的转发表项。转发模块、存储模块和控制器模块可以设置在FPGA(Field Programmable Gate Array,现场可编程门阵列)芯片上。
其中,转发模块可以是转发芯片,存储模块可以是DDR SDRAM、SRAM(静态随机存储器)等存储介质,对存储模块的读写均需要通过控制器模块来处理。
目前,存储模块中的转发表主要有以下两个特点:
特点一:转发表的更新率很低,尤其是在测试线速时一般不更新转发表;
特点二:当转发表中有转发表项发生了更新时,转发模块不需要同步读取到最新的转发表项,即,转发模块稍晚一点读取到最新的转发表项,也可以正确转发报文。
基于上述的两个特点,本申请以下实施例中,转发模块发出的读表项命令经由缓存模块处理;CPU、转发模块或者其它需要更新转发表项的模块发出的写表项命令不需要经由缓存模块处理,缓存模块只需要监听发往存储模块(即发往存储模块的控制器模块)的写表项命令即可获知哪些转发表项要进行更新,并将本模块中缓存的对应转发表项更新为无效状态,后续等到转发模块发来需要读取更新后的转发表项的读表项命令后,再从存储模块中获取更新后的转发表项,并缓存更新后的转发表项。
上述转发表例如可以是路由表、MAC地址表、ARP表等转发表,本申请实施例对此不做限定。
由此,如图2所示,本申请实施例的缓存模块执行的转发表项访问方法,包括以下步骤:
步骤S101,接收转发模块发来的读表项命令,其中,该读表项命令中携带有需要读取的第一转发表项在存储模块中的存储地址;
在实际实施过程中,第一转发表项的存储地址是第一转发表项在存储模块中存储的起始地址。
步骤S102,根据第一转发表项的存储地址,查找处于有效状态、并且包含的存储地址与第一转发表项的存储地址相同的第一Hash桶;
其中,缓存模块中包含有Hash(哈希)表,该Hash表中包括多个Hash桶行(Hashbucket line),每一个Hash桶行中又包括1个或多个Hash桶(Hash bucket),每一个Hash桶具有与其对应的缓存空间,一般来说,Hash桶与缓存空间一一对应,或者,也可以在Hash桶中设置指针,通过指针将多个Hash桶指向一段缓存空间。
本申请实施例中以Hash桶与缓存空间一一对应为例进行说明,本申请实施例中将与Hash桶对应的缓存空间称为表项条目(entry),从而,Hash桶行与表项条目行(entryline)一一对应,该Hash桶行中的Hash桶与该entry行中的entry一一对应。其中,entry用于保存转发表项的内容,Hash桶中包含有:用于指示该转发表项是否有效的状态标记、该转发表项在存储模块中的存储地址、以及时间戳;Hash桶行具有唯一的索引,用于唯一标识该Hash桶行。
以图3为例进行说明,缓存模块中有n+4个Hash桶行bucket line 0~bucket linen+3和n+4个entry行entry line 0~entry line n+3,其中,bucket line 0对应于entryline 0,bucket line 1对应于entry line 1,以此类推;每一个Hash桶行中存放2个Hash桶:bucket0和bucket1,每一个entry行中也存放2个entry:entry0和entry1,其中,bucketline 0中的bucket0对应于entry line 0中的entry0,bucket line 0中的bucket1对应于entry line 0中的entry1,以此类推。每一个Hash桶的大小为40bit(比特),每一个entry的大小为32字节。
如图4所示,在Hash桶中包含有valid、time stamp、以及Addr,分别介绍如下:
Valid:状态标记,用于指示对应的entry中存放的转发表项是否有效,例如,当Valid置为0时,表示对应的entry中缓存的转发表项无效,或者表示对应的entry中的内容为空,即,该entry中没有缓存转发表项,初始时,Valid默认置为0,当Valid置为1时,表示对应的entry中缓存的转发表项有效;Valid占用bit 39这1个比特。
Time stamp:时间戳,每次命中该Hash桶时,将该时间戳更新为当前时间;Timestamp占用bit38~bit30这9个比特。
Addr:对应的entry中存放的转发表项在存储模块中的存储地址,Addr占用bit 29~bit 0这30个比特。
这样,在步骤S102中,首先,对该读表项命令中携带的第一转发表项的存储地址进行Hash运算,以计算得到的Hash值为索引查找对应的Hash桶行,为了描述方便,称为第一Hash桶行,然后,在第一Hash桶行中查找第一Hash桶;若查找到了第一Hash桶,说明命中第一Hash桶,确定第一转发表项缓存在第一Hash桶对应的第一表项条目中;若没有查找到第一Hash桶,则确定缓存模块中没有缓存第一转发表项。
其中,上述的Hash运算可以是CRC(Cyclic Redundancy Check,循环冗余校验)或者XOR(exclusive OR,异或)等运算。
步骤S103,判断是否查找到了第一Hash桶,若是,则执行步骤S104,否则,执行步骤S105;
步骤S104,将第一Hash桶对应的缓存空间中缓存的第一转发表项发送给转发模块;
具体的,将第一Hash桶对应的第一表项条目中缓存的第一转发表项发送给转发模块,另外,还需要将第一Hash桶中包含的时间戳更新为当前时间。
步骤S105,从存储模块中读取到第一转发表项之后,将第一转发表项发送给转发模块。
在实际实施过程中,步骤S105中缓存模块向存储模块发送用于指示需要读取第一转发表项的读表项命令,控制器模块接收到该读表项命令后,从存储模块中读取到第一转发表项并发送给缓存模块,缓存模块接收到第一转发表项之后,将第一转发表项转发给转发模块。
由于缓存模块会接收到多个转发模块发来的读表项命令,因此,在接收到一个转发模块发来的读表项命令之后,会记录转发模块与读表项命令的对应关系,即,记录读表项命令是哪一个转发模块发来的。在步骤S105中从存储模块中读取到第一转发表项后,会根据记录的对应关系,将第一转发表项发送给对应的转发模块。
在从存储模块中读取到第一转发表项之后,缓存模块还会缓存该第一转发表项,具体的,如图5所示,包括以下步骤:
步骤S201,根据第一转发表项的存储地址,查找处于无效状态的第二Hash桶;
具体的,对第一转发表项的存储地址进行Hash运算,以计算得到的Hash值为索引查找对应的Hash桶行,即第一Hash桶行,从第一Hash桶行中查找第二Hash桶。
步骤S202,判断是否查找到了第二Hash桶,若是,则执行步骤S203,否则,执行步骤S204;
步骤S203,将第一转发表项写入第二Hash桶对应的缓存空间中,将第二Hash桶更新为有效状态,将第二Hash桶中包含的存储地址更新为第一转发表项的存储地址,将第二Hash桶中包含的时间戳更新为当前时间;
具体的,在步骤S203中,可以将第一转发表项写入第二Hash桶对应的第二表项条目中,将第二Hash桶中包含的状态标记更新为用于指示有效。
步骤S204,根据第一转发表项的存储地址,查找包含的时间戳与当前时间的差值大于预设超时时间的第三Hash桶;
具体的,在步骤S204中,在第一Hash桶行中查找第三Hash桶。
步骤S205,判断是否查找到了第三Hash桶,若是,则执行步骤S206,否则,退出本流程;
步骤S206,将第一转发表项写入第三Hash桶对应的缓存空间中,将第三Hash桶中包含的时间戳更新为当前时间,将第三Hash桶中包含的存储地址更新为第一转发表项的存储地址。
具体的,在步骤S206中,将第一转发表项写入第三Hash桶对应的第三表项条目中。
显然,若在第一Hash桶行中不存在第二Hash桶,也不存在第三Hash桶,则不会缓存第一转发表项。
在如图5所示的流程中,可以在从存储模块读取到转发表项后,将老化的转发表项占用的缓存空间重新提供给读取到的新转发表项使用,提高了缓存模块的缓存空间利用率。
另外,还可以周期性的扫描Hash表,从而将老化的转发表项的状态更新为无效,以便后续缓存从存储模块中读取到的新转发表项。此时,周期性的执行以下步骤:针对每一个Hash桶,判断该Hash桶中包含的时间戳与当前时间的差值是否大于预设超时时间,若是,则将该Hash桶更新为无效状态。
需要说明的是,采用周期性扫描Hash表的方式可以在触发转发表项查找前更新每一个Hash桶的状态标记,因此,在进行转发表项查找时,仅需要通过状态标记和存储地址的判断就可以确定该Hash桶和该Hash桶所对应的表项条目是否可以被新转发表项所覆盖,降低缓存模块进行判断时的运算压力。相对的,在确定有效之后再进行时间戳判断的顺序执行的方式可以基于每一次查找进行判断,降低周期性扫描的运算压力。在考虑采用哪种方式处理时间戳,可以根据缓存模块中Hash表的大小进行判断,当Hash表的规格较大且缓存模块中的更新较少时,周期性地扫描的压力相对较大,则可以采用顺序执行方式,而当Hash表的规格较小且缓存模块中的更新较多,顺序执行的方式中判断的运算压力相对较大,则可以采用周期性扫描的方式。
另外,缓存模块还会监听发往存储模块的写表项命令,其中,该写表项命令中携带有需要写入的第二转发表项的存储地址。具体的,监听控制器模块的写接口,该写接口是用于接收发往存储模块的所有写表项命令的接口,上述写表项命令可以是CPU、转发模块、或其它需要更新转发表项的模块发出的;为了节约缓存模块的监听工作量,提高监听效率,优选的,缓存模块可以只监听发往存储模块的满足以下条件的写表项命令,其中,该条件包括:该写表项命令中携带的需要写入的第二转发表项的存储地址在对应的存储地址区间内。
例如,存储模块的总存储空间大小为4GB,其中,1GB~2.5GB和3GB~3.5GB这2个存储地址区间用于存储各个转发表,因此,缓存模块只需要监听携带的存储地址在这2个存储地址区间内的写表项命令。或者,在转发模块与存储模块之间存在多个缓存模块,为每一个缓存模块分配一个存储地址区间,这样,每一个缓存模块只需要监听携带的存储地址在相应的存储地址区间内的写表项命令。
缓存模块在监听到任一写表项命令之后,根据该写表项命令中携带的第二转发表项的存储地址,查找处于有效状态、并且包含的存储地址与第二转发表项的存储地址相同的第四Hash桶,若查找到了第四Hash桶,则将第四Hash桶更新为无效状态。具体的,对第二转发表项的存储地址进行Hash运算,以计算得到的Hash值为索引查找对应的Hash桶行,为了描述方便,称为第二Hash桶行;然后,在第二Hash桶行中查找第四Hash桶,若查找到了,说明第二转发表项缓存在第四Hash桶对应的第四Hash桶对应的第四表项条目中,将第四Hash桶中包含的状态标记更新为用于指示无效。
另外,在实际实施过程中,缓存模块可能会接收到转发模块发来的读表项命令,也可能会监听到发往存储模块的写表项命令,此时,可以优先处理写表项命令,从而确保在存储模块中的转发表项发生更新时,及时更新缓存模块中的相应转发表项。
本申请上述实施例的方法中,在转发模块与存储模块之间增加缓存模块,由缓存模块处理转发模块的读表项命令,根据该读表项命令中携带的需要读取的转发表项的存储地址,查找处于有效状态、并且包含的存储地址与该转发表项的存储地址相同的Hash桶,若查找到了,说明缓存模块中缓存有该转发表项,并且缓存在该Hash桶对应的缓存空间中,则将缓存的第一转发表项发送给转发模块;若没有查找到,说明缓存模块中没有缓存该转发表项,则从存储模块中读取第一转发表项后,将读取到的第一转发表项发送给转发模块。
上述方法实现了一种转发表项的缓存方案,缓存模块只处理转发模块发来的读表项命令,从而保证了较高的读表项性能;并且,缓存模块通过监听发往存储模块的写表项命令即可获知存储模块中的哪些转发表项要进行更新,并将缓存模块中缓存的对应转发表项更新为无效,后续,接收到转发模块发来的用于读取该转发表项的读表项命令后,从存储模块读取更新后的转发表项并缓存即可,从而以更加简单的方法实现了转发表项的更新。
与前述转发表项访问方法的实施例相对应,本申请还提供了转发表项访问装置的实施例。
请参考图6,本申请实施例的转发表项访问装置中包括:转发模块10、缓存模块20和存储模块30,其中,缓存模块20中包括:
接收单元201,用于接收转发模块10发来的读表项命令,其中,该读表项命令中携带有需要读取的第一转发表项的存储地址;
查找单元202,用于在接收单元201接收到读表项命令之后,根据第一转发表项的存储地址,查找处于有效状态、并且包含的存储地址与第一转发表项的存储地址相同的第一Hash桶;
读取单元203,用于若查找单元201没有查找到第一Hash桶,则从存储模块30中读取第一转发表项;
发送单元204,用于若查找单元202查找到了第一Hash桶,则将第一Hash桶对应的缓存空间中缓存的第一转发表项发送给转发模块10;还用于将读取单元203读取到的第一转发表项发送给转发模块10。
另外,如图7所示,缓存模块20中还包括:写入更新单元205,其中:
查找单元202,还用于在读取单元201从存储模块30中读取到第一转发表项之后,根据第一转发表项的存储地址,查找处于无效状态的第二Hash桶;
写入更新单元205,用于若查找单元202查找到了第二Hash桶,则将读取单元201读取到的第一转发表项写入第二Hash桶对应的缓存空间中,将第二Hash桶更新为有效状态,将第二Hash桶中包含的存储地址更新为第一转发表项的存储地址。
其中,Hash桶中还包含有时间戳;则,写入更新单元205,还用于在发送单元204将第一Hash桶对应的缓存空间中缓存的第一转发表项发送给转发模块10时,将第一Hash桶中包含的时间戳更新为当前时间;还用于在将读取单元203读取到的第一转发表项写入第二Hash桶对应的缓存空间中时,将第二Hash桶中包含的时间戳更新为当前时间。
另外,查找单元202,还用于若没有查找到第二Hash桶,则根据第一转发表项的存储地址,查找包含的时间戳与当前时间的差值大于预设超时时间的第三Hash桶;
写入更新单元205,还用于若查找单元202查找到了第三Hash桶,则将读取单元203读取到的第一转发表项写入第三Hash桶对应的缓存空间中,将第三Hash桶中包含的时间戳更新为当前时间,将第三Hash桶中包含的存储地址更新为第一转发表项的存储地址。
另外,写入更新单元205,还用于针对每一个Hash桶,判断该Hash桶中包含的时间戳与当前时间的差值是否大于预设超时时间,若是,则将该Hash桶更新为无效状态。
如图8所示,缓存模块20中还包括:监听单元206和状态更新单元207,其中:
监听单元206,用于监听发往存储模块30的写表项命令,其中,该写表项命令中携带有需要写入的第二转发表项的存储地址;
查找单元202,还用于在监听单元206监听到写表项命令之后,根据第二转发表项的存储地址,查找处于有效状态、并且包含的存储地址与第二转发表项的存储地址相同的第四Hash桶;
状态更新单元207,用于若查找单元202查找到了第四Hash桶,则将第四Hash桶更新为无效状态。
其中,监听单元206具体用于:监听发往存储模块30的满足以下条件的写表项命令,其中,该条件包括:携带的需要写入的第二转发表项的存储地址在对应的存储地址区间内。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (14)

1.一种转发表项访问方法,其特征在于,所述方法包括:
接收转发模块发来的读表项命令,其中,所述读表项命令中携带有需要读取的第一转发表项的存储地址;
根据所述第一转发表项的存储地址,查找处于有效状态、并且包含的存储地址与所述第一转发表项的存储地址相同的第一Hash桶;
若查找到了所述第一Hash桶,则将所述第一Hash桶对应的缓存空间中缓存的所述第一转发表项发送给所述转发模块;
若没有查找到所述第一Hash桶,则从存储模块中读取所述第一转发表项,将读取到的所述第一转发表项发送给所述转发模块。
2.根据权利要求1所述的方法,其特征在于,在从存储模块中读取所述第一转发表项之后,还包括:
根据所述第一转发表项的存储地址,查找处于无效状态的第二Hash桶;
若查找到了所述第二Hash桶,则将所述第一转发表项写入所述第二Hash桶对应的缓存空间中,将所述第二Hash桶更新为有效状态,将所述第二Hash桶中包含的存储地址更新为所述第一转发表项的存储地址。
3.根据权利要求2所述的方法,其特征在于,Hash桶中还包含有时间戳;则,将所述第一Hash桶对应的缓存空间中缓存的所述第一转发表项发送给所述转发模块时,还将所述第一Hash桶中包含的时间戳更新为当前时间;
将所述第一转发表项写入所述第二Hash桶对应的缓存空间中时,还将所述第二Hash桶中包含的时间戳更新为当前时间。
4.根据权利要求3所述的方法,其特征在于,在查找处于无效状态的第二Hash桶之后,还包括:
若没有查找到所述第二Hash桶,则根据所述第一转发表项的存储地址,查找包含的时间戳与当前时间的差值大于预设超时时间的第三Hash桶;
若查找到了所述第三Hash桶,则将所述第一转发表项写入所述第三Hash桶对应的缓存空间中,将所述第三Hash桶中包含的时间戳更新为当前时间,将所述第三Hash桶中包含的存储地址更新为所述第一转发表项的存储地址。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
针对每一个Hash桶,判断该Hash桶中包含的时间戳与当前时间的差值是否大于预设超时时间;
若是,则将该Hash桶更新为无效状态。
6.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:
监听发往所述存储模块的写表项命令,其中,所述写表项命令中携带有需要写入的第二转发表项的存储地址;
根据所述第二转发表项的存储地址,查找处于有效状态、并且包含的存储地址与所述第二转发表项的存储地址相同的第四Hash桶;
若查找到了所述第四Hash桶,则将所述第四Hash桶更新为无效状态。
7.根据权利要求6所述的方法,其特征在于,监听发往所述存储模块的写表项命令的方法包括:
监听发往所述存储模块的满足以下条件的写表项命令,其中,所述条件包括:携带的需要写入的第二转发表项的存储地址在对应的存储地址区间内。
8.一种转发表项访问装置,其特征在于,所述装置包括:转发模块、缓存模块和存储模块,其中,所述缓存模块中包括:
接收单元,用于接收所述转发模块发来的读表项命令,其中,所述读表项命令中携带有需要读取的第一转发表项的存储地址;
查找单元,用于在所述接收单元接收到所述读表项命令之后,根据所述第一转发表项的存储地址,查找处于有效状态、并且包含的存储地址与所述第一转发表项的存储地址相同的第一Hash桶;
读取单元,用于若所述查找单元没有查找到所述第一Hash桶,则从所述存储模块中读取所述第一转发表项;
发送单元,用于若所述查找单元查找到了所述第一Hash桶,则将所述第一Hash桶对应的缓存空间中缓存的所述第一转发表项发送给所述转发模块;还用于将所述读取单元读取到的所述第一转发表项发送给所述转发模块。
9.根据权利要求8所述的装置,其特征在于,所述缓存模块中还包括:写入更新单元,其中:
所述查找单元,还用于在所述读取单元从所述存储模块中读取所述第一转发表项之后,根据所述第一转发表项的存储地址,查找处于无效状态的第二Hash桶;
所述写入更新单元,用于若所述查找单元查找到了所述第二Hash桶,则将所述读取单元读取到的所述第一转发表项写入所述第二Hash桶对应的缓存空间中,将所述第二Hash桶更新为有效状态,将所述第二Hash桶中包含的存储地址更新为所述第一转发表项的存储地址。
10.根据权利要求9所述的装置,其特征在于,Hash桶中还包含有时间戳;则,
所述写入更新单元,还用于在所述发送单元将所述第一Hash桶对应的缓存空间中缓存的所述第一转发表项发送给所述转发模块时,将所述第一Hash桶中包含的时间戳更新为当前时间;还用于在将所述读取单元读取到的所述第一转发表项写入所述第二Hash桶对应的缓存空间中时,将所述第二Hash桶中包含的时间戳更新为当前时间。
11.根据权利要求10所述的装置,其特征在于,
所述查找单元,还用于若没有查找到所述第二Hash桶,则根据所述第一转发表项的存储地址,查找包含的时间戳与当前时间的差值大于预设超时时间的第三Hash桶;
所述写入更新单元,还用于若所述查找单元查找到了所述第三Hash桶,则将所述读取单元读取到的所述第一转发表项写入所述第三Hash桶对应的缓存空间中,将所述第三Hash桶中包含的时间戳更新为当前时间,将所述第三Hash桶中包含的存储地址更新为所述第一转发表项的存储地址。
12.根据权利要求10所述的装置,其特征在于,
所述写入更新单元,还用于针对每一个Hash桶,判断该Hash桶中包含的时间戳与当前时间的差值是否大于预设超时时间,若是,则将该Hash桶更新为无效状态。
13.根据权利要求8至12中任一项所述的装置,其特征在于,所述缓存模块中还包括:监听单元和状态更新单元,其中:
所述监听单元,用于监听发往所述存储模块的写表项命令,其中,所述写表项命令中携带有需要写入的第二转发表项的存储地址;
所述查找单元,还用于在所述监听单元监听到所述写表项命令之后,根据所述第二转发表项的存储地址,查找处于有效状态、并且包含的存储地址与所述第二转发表项的存储地址相同的第四Hash桶;
所述状态更新单元,用于若所述查找单元查找到了所述第四Hash桶,则将所述第四Hash桶更新为无效状态。
14.根据权利要求13所述的装置,其特征在于,所述监听单元具体用于:
监听发往所述存储模块的满足以下条件的写表项命令,其中,所述条件包括:携带的需要写入的第二转发表项的存储地址在对应的存储地址区间内。
CN201610528199.4A 2016-07-04 2016-07-04 转发表项访问方法及装置 Active CN107579916B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201610528199.4A CN107579916B (zh) 2016-07-04 2016-07-04 转发表项访问方法及装置
JP2019500254A JP7010922B2 (ja) 2016-07-04 2017-07-04 フォワーディングエントリアクセス
US16/309,863 US11038797B2 (en) 2016-07-04 2017-07-04 Forwarding table entry access
PCT/CN2017/091599 WO2018006786A1 (zh) 2016-07-04 2017-07-04 转发表项访问
EP17823598.2A EP3481014B1 (en) 2016-07-04 2017-07-04 Forwarding table entry access

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610528199.4A CN107579916B (zh) 2016-07-04 2016-07-04 转发表项访问方法及装置

Publications (2)

Publication Number Publication Date
CN107579916A true CN107579916A (zh) 2018-01-12
CN107579916B CN107579916B (zh) 2021-03-23

Family

ID=60912345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610528199.4A Active CN107579916B (zh) 2016-07-04 2016-07-04 转发表项访问方法及装置

Country Status (5)

Country Link
US (1) US11038797B2 (zh)
EP (1) EP3481014B1 (zh)
JP (1) JP7010922B2 (zh)
CN (1) CN107579916B (zh)
WO (1) WO2018006786A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026324A (zh) * 2018-10-09 2020-04-17 华为技术有限公司 转发表项的更新方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113938428B (zh) * 2021-09-06 2023-06-16 锐捷网络股份有限公司 跨芯片的数据流转发方法及装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060242300A1 (en) * 2005-04-25 2006-10-26 Hitachi, Ltd. Load balancing server and system
CN1863169A (zh) * 2006-03-03 2006-11-15 清华大学 基于网络处理器的路由查找结果缓存方法
WO2008121690A2 (en) * 2007-03-30 2008-10-09 Packeteer, Inc. Data and control plane architecture for network application traffic management device
US7822927B1 (en) * 2007-05-14 2010-10-26 Emc Corporation Dynamically configurable reverse DNLC lookup
US20120173844A1 (en) * 2010-12-30 2012-07-05 Maghawan Punde Apparatus and method for determining a cache line in an n-way set associative cache
CN103595637A (zh) * 2013-10-27 2014-02-19 西安电子科技大学 基于树与哈希表的内容中心网络结点处理数据方法
CN104809179A (zh) * 2015-04-16 2015-07-29 华为技术有限公司 访问哈希表的装置和方法
CN105243030A (zh) * 2015-10-26 2016-01-13 北京锐安科技有限公司 一种数据缓存方法
CN105357314A (zh) * 2015-12-03 2016-02-24 厦门速卖通网络科技有限公司 一种定点分布式缓存系统及其缓存方法
CN105446897A (zh) * 2014-09-19 2016-03-30 想象技术有限公司 高速缓存哈希
CN105630703A (zh) * 2014-11-21 2016-06-01 联发科技(新加坡)私人有限公司 利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978951A (en) 1997-09-11 1999-11-02 3Com Corporation High speed cache management unit for use in a bridge/router
US6430184B1 (en) * 1998-04-10 2002-08-06 Top Layer Networks, Inc. System and process for GHIH-speed pattern matching for application-level switching of data packets
JP3591420B2 (ja) 2000-04-07 2004-11-17 日本電気株式会社 ルータにおけるキャッシュテーブル管理装置およびプログラム記録媒体
US6850980B1 (en) * 2000-06-16 2005-02-01 Cisco Technology, Inc. Content routing service protocol
US7039764B1 (en) * 2002-01-17 2006-05-02 Nokia Corporation Near-perfect, fixed-time searching algorithm using hashing, LRU and cam-based caching
US7177311B1 (en) * 2002-06-04 2007-02-13 Fortinet, Inc. System and method for routing traffic through a virtual router-based network switch
JP3957570B2 (ja) 2002-06-17 2007-08-15 日本電気株式会社 ルータ装置
JP2004129156A (ja) * 2002-10-07 2004-04-22 Ntt Docomo Inc 経路制御システム、経路制御装置、転送装置及び経路制御方法
US7808971B2 (en) 2005-07-01 2010-10-05 Miller John L Routing cache for distributed hash tables
US20070028051A1 (en) * 2005-08-01 2007-02-01 Arm Limited Time and power reduction in cache accesses
JP4646823B2 (ja) 2006-02-17 2011-03-09 エスアイアイ・ネットワーク・システムズ株式会社 ルータ装置、ルータ装置におけるルート決定方法
US8111707B2 (en) * 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
CN101079817A (zh) * 2007-07-04 2007-11-28 中兴通讯股份有限公司 一种路由查找方法及系统
CN101197787B (zh) 2008-01-03 2010-08-25 杭州华三通信技术有限公司 一种报文信息学习方法和装置
JP2011239299A (ja) 2010-05-12 2011-11-24 Renesas Electronics Corp パケット転送装置、パケット転送方法
CN102736986A (zh) * 2011-03-31 2012-10-17 国际商业机器公司 一种内容可寻址存储器及其检索数据的方法
US9124540B2 (en) 2013-01-14 2015-09-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Caching of look-up rules based on flow heuristics to enable high speed look-up
US10284478B2 (en) 2014-03-04 2019-05-07 Nec Corporation Packet processing device, packet processing method and program
WO2016057670A1 (en) * 2014-10-07 2016-04-14 Google Inc. Hardware-assisted memory compression management using page filter and system mmu
US10397362B1 (en) * 2015-06-24 2019-08-27 Amazon Technologies, Inc. Combined cache-overflow memory structure
US10708236B2 (en) * 2015-10-26 2020-07-07 Secturion Systems, Inc. Multi-independent level secure (MILS) storage encryption

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060242300A1 (en) * 2005-04-25 2006-10-26 Hitachi, Ltd. Load balancing server and system
CN1863169A (zh) * 2006-03-03 2006-11-15 清华大学 基于网络处理器的路由查找结果缓存方法
WO2008121690A2 (en) * 2007-03-30 2008-10-09 Packeteer, Inc. Data and control plane architecture for network application traffic management device
US7822927B1 (en) * 2007-05-14 2010-10-26 Emc Corporation Dynamically configurable reverse DNLC lookup
US20120173844A1 (en) * 2010-12-30 2012-07-05 Maghawan Punde Apparatus and method for determining a cache line in an n-way set associative cache
CN103595637A (zh) * 2013-10-27 2014-02-19 西安电子科技大学 基于树与哈希表的内容中心网络结点处理数据方法
CN105446897A (zh) * 2014-09-19 2016-03-30 想象技术有限公司 高速缓存哈希
CN105630703A (zh) * 2014-11-21 2016-06-01 联发科技(新加坡)私人有限公司 利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器
CN104809179A (zh) * 2015-04-16 2015-07-29 华为技术有限公司 访问哈希表的装置和方法
CN105243030A (zh) * 2015-10-26 2016-01-13 北京锐安科技有限公司 一种数据缓存方法
CN105357314A (zh) * 2015-12-03 2016-02-24 厦门速卖通网络科技有限公司 一种定点分布式缓存系统及其缓存方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王薇: "基于HASH路由转发表存储结构的研究", 《中国优秀硕士学位论文期刊全文数据库》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026324A (zh) * 2018-10-09 2020-04-17 华为技术有限公司 转发表项的更新方法及装置
CN111026324B (zh) * 2018-10-09 2021-11-19 华为技术有限公司 转发表项的更新方法及装置
US11316804B2 (en) 2018-10-09 2022-04-26 Huawei Technologies Co., Ltd. Forwarding entry update method and apparatus in a memory

Also Published As

Publication number Publication date
EP3481014A1 (en) 2019-05-08
EP3481014B1 (en) 2021-01-20
JP2019522427A (ja) 2019-08-08
WO2018006786A1 (zh) 2018-01-11
CN107579916B (zh) 2021-03-23
EP3481014A4 (en) 2019-05-22
JP7010922B2 (ja) 2022-01-26
US20190260678A1 (en) 2019-08-22
US11038797B2 (en) 2021-06-15
WO2018006786A9 (zh) 2019-01-10

Similar Documents

Publication Publication Date Title
US10089018B2 (en) Multi-bank memory with multiple read ports and multiple write ports per cycle
CN104731717B (zh) 存储器装置及存储器管理方法
US10200313B2 (en) Packet descriptor storage in packet memory with cache
KR100978156B1 (ko) 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체
CN109983536B (zh) 响应标签匹配命令的存储电路
JP2010530591A5 (zh)
WO2008070800B1 (en) Apparatus, system, and method for storage space recovery in solid-state storage
CN104765575A (zh) 信息存储处理方法
WO2012116369A2 (en) Apparatus, system, and method for managing contents of a cache
SG163590A1 (en) Memory management for high speed media access control
CN101841438B (zh) 一种访问存储海量并发tcp流的流记录的方法或系统
CN104765574A (zh) 数据云端存储方法
CN105051708B (zh) 用于包含存储器节点的分布式存储器系统的设备及方法
JP7074839B2 (ja) パケット処理
CN106407224A (zh) 一种键值存储系统中文件压实的方法和装置
JP2017188094A5 (ja) メモリモジュールの重複メモリ除去方法、及びそのためのdramメモリモジュール
CN104750432B (zh) 一种数据存储方法及装置
CN107579916A (zh) 转发表项访问方法及装置
CN106254270A (zh) 一种队列管理方法及装置
CN104778100A (zh) 一种安全备份数据的方法
CN109726147A (zh) 使用数据保护访问带内存储器的设备和方法
EP4221134A1 (en) Systems for and methods of flow table management
CN101118519A (zh) 对缓存内容进行保护的方法和装置以及缓存控制器
CN107229574A (zh) 缓存及其控制方法
CN111131197B (zh) 一种过滤策略管理系统及其方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant