CN113392039B - 一种数据存储、查找方法及装置 - Google Patents
一种数据存储、查找方法及装置 Download PDFInfo
- Publication number
- CN113392039B CN113392039B CN202110641530.4A CN202110641530A CN113392039B CN 113392039 B CN113392039 B CN 113392039B CN 202110641530 A CN202110641530 A CN 202110641530A CN 113392039 B CN113392039 B CN 113392039B
- Authority
- CN
- China
- Prior art keywords
- range
- domain
- tcam
- key
- preset range
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种数据存储、查找方法及装置,应用于网络设备,方法包括:从ACL规则中,提取预设Range属性的范围起始值和范围末尾值;按照预设Range匹配操作,将范围起始值和范围末尾值***Range域和扩展域,得到密钥;将密钥和ACL规则包括的地址填充至三态内容寻址存储器TCAM物理表项。应用本申请实施例提供的技术方案,提高TCAM的利用率,满足高负载业务的需要。
Description
技术领域
本申请涉及存储器技术领域,特别是涉及一种数据存储、查找方法及装置。
背景技术
三态内容寻址存储器(Ternary Content Addressable Memory,TCAM)除了可以实现读写操作以及精准地查找操作外,还可以实现模糊查找操作。基于此,TCAM基于硬件多路并行的查找操作占据了很大的性能优势。
目前,TCAM常被用于存储访问控制列表(Access Control Lists,ACL)规则。ACL规则支持范围(Range)规则匹配。而针对基于Range规则匹配的单条ACL规则,基于掩码算法,该ACL规则被解析为多条具有相同密钥、不同掩码以及相同的地址的TCAM物理表项。其中,密钥包括一个或多个Range域的值。后续,网络设备可以将要查找数据的密钥与TCAM物理表项包括的Range域的值匹配,来获得要查找数据的地址。
上述查找操作的过程,单条ACL规则会占用大量的TCAM物理表项。这在一定程度上造成了TCAM资源的浪费,TCAM的利用率较低。当需要处理大量的ACL规则时,将会导致TCAM资源不足,无法满足高负载业务的需要。
发明内容
本申请实施例的目的在于提供一种数据存储、查找方法及装置,以提高TCAM的利用率,满足高负载业务的需要。具体技术方案如下:
第一方面,本申请实施例提供了一种数据存储方法,应用于网络设备,所述方法包括:
从ACL规则中,提取预设Range属性的范围起始值和范围末尾值;
按照预设Range匹配操作,将所述范围起始值和范围末尾值***所述Range域和扩展域,得到密钥;
将所述密钥和所述ACL规则包括的地址填充至TCAM物理表项。
可选的,所述预设Range属性的数量为多个;
所述按照所述预设Range匹配操作,将所述范围起始值和范围末尾值***所述Range域和扩展域,得到密钥的步骤,包括:
按照预设Range匹配操作,将每个预设Range属性的范围起始值和范围末尾值分别***Range域和扩展域,得到每个预设Range属性的密钥。
可选的,在将所述密钥和所述ACL规则包括的地址填充至TCAM物理表项之后,所述方法还包括:
获取第一搜索密钥,所述第一搜索密钥包括所述预设Range属性的目标值;
按照所述预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥;
在所述TCAM物理表项包括的密钥中,查找所述第二搜索密钥;
若在所述TCAM物理表项中查找到所述第二搜索密钥,则返回所述TCAM物理表项包括的地址。
可选的,所述预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。
第二方面,本申请实施例提供了一种数据查找方法,应用于网络设备,所述方法包括:
获取第一搜索密钥,所述第一搜索密钥包括预设Range属性的目标值;
按照预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥;
在TCAM物理表项包括的密钥中,查找所述第二搜索密钥;
若在所述TCAM物理表项中查找到所述第二搜索密钥,则返回所述TCAM物理表项包括的地址。
可选的,所述预设Range属性的数量为多个;
所述按照预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥的步骤,包括:
按照预设Range匹配操作,将每个预设Range属性的目标值分别***Range域和扩展域,得到每个目标值对应的候选值;
按照预设组合方式组合每个候选值,得到第二搜索密钥。
可选的,所述网络设备包括多个逻辑寄存器;
所述按照预设Range匹配操作,将每个预设Range属性的目标值分别***Range域和扩展域,得到每个所述目标值对应的候选值的步骤,包括:
根据每个预设Range属性与逻辑寄存器的对应关系,将每个目标值分别写入对应的逻辑寄存器;按照预设Range匹配操作,将每个逻辑寄存器中的每个所述目标值***Range域和扩展域,得到每个目标值对应的候选值;
所述按照预设组合方式组合每个候选值,得到第二搜索密钥的步骤,包括:
对于每个逻辑寄存器,组合该逻辑寄存器中每个候选值,得到该逻辑寄存器对应的第二搜索密钥。
可选的,所述预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。
第三方面,本申请实施例提供了一种数据存储装置,应用于网络设备,所述装置包括:
提取模块,用于从ACL规则中,提取预设Range属性的范围起始值和范围末尾值;
第一***模块,用于按照预设Range匹配操作,将所述范围起始值和范围末尾值***所述Range域和扩展域,得到密钥;
填充模块,用于将所述密钥和所述ACL规则包括的地址填充至TCAM物理表项。
可选的,所述预设Range属性的数量为多个;
所述第一***模块,具体用于按照预设Range匹配操作,将每个预设Range属性的范围起始值和范围末尾值分别***Range域和扩展域,得到每个预设Range属性的密钥。
可选的,所述装置还包括:
第一获取模块,用于在将所述密钥和所述ACL规则包括的地址填充至TCAM物理表项之后,获取第一搜索密钥,所述第一搜索密钥包括所述预设Range属性的目标值;
第二***模块,用于按照所述预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥;
第一查找模块,用于在所述TCAM物理表项包括的密钥中,查找所述第二搜索密钥;
第一返回模块,用于若在所述TCAM物理表项中查找到所述第二搜索密钥,则返回所述TCAM物理表项包括的地址。
可选的,所述预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。
第四方面,本申请实施例提供了一种数据查找装置,应用于网络设备,所述装置包括:
第二获取模块,用于获取第一搜索密钥,所述第一搜索密钥包括预设Range属性的目标值;
第三***模块,用于按照预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥;
第二查找模块,用于在TCAM物理表项包括的密钥中,查找所述第二搜索密钥;
第二返回模块,用于若在所述TCAM物理表项中查找到所述第二搜索密钥,则返回所述TCAM物理表项包括的地址。
可选的,所述预设Range属性的数量为多个;
所述第三***模块,具体用于按照预设Range匹配操作,将每个预设Range属性的目标值分别***Range域和扩展域,得到每个目标值对应的候选值;按照预设组合方式组合每个候选值,得到第二搜索密钥。
可选的,所述网络设备包括多个逻辑寄存器;
所述第三***模块,具体用于根据每个预设Range属性与逻辑寄存器的对应关系,将每个目标值分别写入对应的逻辑寄存器;按照预设Range匹配操作,将每个逻辑寄存器中的每个所述目标值***Range域和扩展域,得到每个目标值对应的候选值;对于每个逻辑寄存器,组合该逻辑寄存器中每个候选值,得到该逻辑寄存器对应的第二搜索密钥。
可选的,所述预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。
第五方面,本申请实施例提供了一种网络设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述第一方面提供的任一数据存储方法步骤,或实现上述第二方面提供的任一数据查找方法步骤。
第六方面,本申请实施例提供了一种机器可读存储介质,所述机器可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的任一数据存储方法步骤,或实现上述第二方面提供的任一数据查找方法步骤。
本申请实施例还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面提供的任一数据存储方法步骤,或实现上述第二方面提供的任一数据查找方法步骤。
本申请实施例有益效果:
本申请实施例提供的技术方案中,网络设备除了设置了Range域外,还设置了扩展域。该扩展域可以用于记录更多的Range信息。网络设备按照预设Range匹配操作,将范围起始值和范围末尾值可以***Range域和扩展域,得到密钥。该密钥中可以包括更多的Range信息,因此,在生成ACL规则的TCAM物理表项时,可以大大减少TCAM物理表项的数量,缓解了需要处理大量的ACL规则时导致TCAM资源不足的问题,进而提高了TCAM的利用率,满足了高负载业务的需要。当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本申请实施例提供的数据存储方法的一种流程示意图;
图2为本申请实施例提供的数据查找方法的第一种流程示意图;
图3为本申请实施例提供的数据查找方法的第二种流程示意图;
图4为本申请实施例提供的数据查找方法的第三种流程示意图;
图5为本申请实施例提供的数据查找方法的第四种流程示意图;
图6为本申请实施例提供的数据存储架构的一种流程示意图;
图7为本申请实施例提供的数据存储装置的一种结构示意图;
图8为本申请实施例提供的数据查找装置的一种结构示意图;
图9为本申请实施例提供的网络设备的第一种结构示意图;
图10为本申请实施例提供的网络设备的第二种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
内容寻址存储器(Content Addressable Memory,CAM)除了可以实现读写操作外,还可以实现精准地查找操作。具体为,CAM接收要查找数据的搜索密钥,CAM把自身存储的搜索密钥对应的地址,作为要查找数据的地址返回给用户,从而实现精准的查找操作。
TCAM为CAM的一种。TCAM除了可以实现读写操作,以及CAM能够实现的精准地查找操作外,还可以实现模糊查找操作。基于此,TCAM基于硬件多路并行的查找操作占据了很大的性能优势。
目前,TCAM常被用于存储ACL规则。ACL规则支持Range规则匹配,用来识别和处理网络流量。针对基于Range规则匹配的单条ACL规则,基于掩码算法,该ACL规则包括的Range被解析为多条具有相同密钥、不同掩码以及相同的地址的TCAM物理表项。
可见,ACL规则会占用大量的TCAM物理表项。在最差的情况下,n比特(bit)作Range规则匹配的Range,需要占用2n-2条TCAM物理表项。若ACL规则中包括多个Range需要作Range规则匹配,则需要占用的TCAM物理表项的数量将称指数倍增长。这导致TCAM的利用率较低。
并且,当需要处理大量的ACL规则时,将会导致TCAM资源不足,无法满足高负载业务的需要。
为解决上述问题,本申请实施例提供了一种数据存储方法,该方法可以应用于路由器、交换机等网络设备。
该方法中,从ACL规则中,提取预设Range属性的范围起始值和范围末尾值;按照预设Range匹配操作,将范围起始值和范围末尾值***Range域和扩展域,得到密钥;将密钥和ACL规则包括的地址填充至三态内容寻址存储器TCAM物理表项。
本申请实施例提供的技术方案中,网络设备除了设置了Range域外,还设置了扩展域。该扩展域可以用于记录更多的Range信息。网络设备按照预设Range匹配操作,将范围起始值和范围末尾值可以***Range域和扩展域,得到密钥。该密钥中可以包括更多的Range信息,因此,在生成ACL规则的TCAM物理表项时,可以大大减少TCAM物理表项的数量,缓解了需要处理大量的ACL规则时导致TCAM资源不足的问题,进而提高了TCAM的利用率,满足了高负载业务的需要。
下面通过具体的实施例,对本申请实施例提供的数据存储方法进行详细说明。
参见图1,图1为本申请实施例提供的数据存储方法的一种流程示意图。该方法应用于网络设备,包括如下步骤:
步骤S11,从ACL规则中,提取预设Range属性的范围起始值和范围末尾值。
网络设备中包括TCAM数据库。该TCAM数据库预先设置了密钥字段属性,即预设Range属性。预设Range属性可以包括源端口、目的端口和生存时间值(Time To Live,TTL)中的一种或多种。
ACL规则可以为用户输入网络设备的,也可以为其他设备发送至网络设备的,还可以从预设数据库获取到的。
网络设备获取到ACL规则后,若ACL规则中预设Range属性的数据为一个范围,则网络设备可以从ACL规则中,提取该范围的起始值和末尾值,作为预设Range属性的范围起始值和范围末尾值;
若ACL规则中预设Range属性的数据为一个定值,则网络设备可以从ACL规则中,提取该定值,作为预设Range属性的范围起始值和范围末尾值。此时,范围起始值和范围末尾值相同。
其中,若网络设备中配置了多个预设Range属性,则对于每一个预设Range属性,网络设备从ACL规则中,提取该预设Range属性的范围起始值和范围末尾值。
例如,预设Range属性包括源端口和目的端口。ACL规则1中包括:源端口范围为port01-04,目的端口为port11-14。网络设备从ACL规则1中提取到源端口的范围起始值port01,源端口的范围末尾值port04;从ACL规则1中提取到目的端口的范围起始值port11,目的端口的范围末尾值port14。
步骤S12,按照预设Range匹配操作,将范围起始值和范围末尾值***Range域和扩展域,得到密钥。
TCAM在硬件上支持Range编码算法,可以通过内部寄存器来实现Range匹配操作,即预设Range匹配操作。
本申请实施例中,TCAM物理表项的密钥字段可以填充多个被独立匹配的Range域,例如,可以支持4个Range域。这多Range域可以被放置在密钥字段的任何位置。密钥字段的容量大于多个Range域的总容量。例如,一个Range域的容量为16bit,密钥字段的容量为640bit。
本申请实施例中,密钥字段除了设置了Range域,还利用密钥字段未使用的空间,额外设置扩展域。扩展域用于Range编码算法扩展字节的填充。为便于区分扩展域。扩展域可以***在密钥字段的末尾。
其中,扩展域的容量可以根据实际需求进行设定。扩展域的容量可以为0bit、8bit或16bit等。扩展域的容量越大,TCAM资源压缩的效果越优越。
一个示例中,在Range域为16bit的情况下,网络设备可以设置基于控制平面的Range匹配的软件开发工具包(Software Development Kit,SDK)端口,该SDK端口中包括3种Range编码算法,如下:
1、16bit→16bit编码算法,即扩展域为0bit。此时,Range域和扩展域总计16bit。基于该Range域和扩展域,本申请实施例的Range编码算法与相关技术中的掩码算法的效果相同,无法节约TCAM资源。
2、16bit→24bit编码算法,即扩展域为8bit。此时,Range域和扩展域总计24bit。这种方案可在TCAM物理表项中密钥资源紧缺的情况下使用。相对于相关技术中的掩码算法,基于该Range域和扩展域,本申请实施例的Range编码算法可以达到显著优化TCAM资源的效果,即本申请实施例一个TCAM物理表项包括更多的Range信息。相关技术,应用本申请实施例提供的技术方案,一条ACL规则被解析得到的TCAM物理表项的数量明显减少。
3、16bit→32bit编码算法,即扩展域为16bit。此时,Range域和扩展域总计32bit。这种方案可在TCAM物理表项中密钥资源充足的情况下使用。这种方案中,一条ACL规则被解析得到的TCAM物理表项的数量可以被压缩为一条,进而使得TCAM资源压缩达到最大化。
网络设备按照SDK端口的预设Range匹配操作,即利用预设Range编码算法,将范围起始值和范围末尾值***Range域和扩展域,得到密钥。
本申请实施例中,若预设Range属性的数量为一个,则网络设备可以按照TCAM支持的预设Range匹配操作,将该预设Range属性的范围起始值和范围末尾值***Range域和扩展域,得到密钥。该密钥表示ACL规则中该预设Range属性的范围。例如,预设Range属性为源端口,源端口范围为port01-port04,则密钥表示port01-port04的范围。
若预设Range属性的数量为一个,则对于每一个预设Range属性,网络设备可以按照TCAM支持的预设Range匹配操作,将预设Range属性的范围起始值和范围末尾值分别***Range域和扩展域,得到该预设Range属性的密钥。此时,网络设备得到多个密钥。其中,一个预设Range属性的密钥表示该预设Range属性的范围。
步骤S13,将密钥和ACL规则包括的地址填充至TCAM物理表项。
网络设备在得到密钥后,从ACL规则中提取地址,并将密钥和所提取的地址填充至TCAM物理表项。
本申请实施例提供的技术方案中,网络设备除了设置了Range域外,还设置了扩展域。该扩展域可以用于记录更多的Range信息。网络设备按照预设Range匹配操作,将范围起始值和范围末尾值可以***Range域和扩展域,得到密钥。该密钥中可以包括更多的Range信息,因此,在生成ACL规则的TCAM物理表项时,可以大大减少TCAM物理表项的数量,缓解了需要处理大量的ACL规则时导致TCAM资源不足的问题,进而提高了TCAM的利用率,可以支持更多ACL规则的下发,满足了高负载业务的需要。
在得到TCAM物理表项后,网络设备可以基于TCAM物理表项,执行表项删除、修改以及查找操作。为了实现上述表项添加、删除、修改以及查找操作,可以配置相应流程及接口。
一个可选的实施例中,如图2所示,图2为本申请实施例提供的数据查找方法的第一种流程示意图,应用于网络设备,该方法包括如下步骤:
步骤S21,获取第一搜索密钥,第一搜索密钥包括预设Range属性的目标值。
在进行数据查找时,用户向网络设备输入第一搜索密钥。本申请实施例中仅以第一搜索密钥为例进行说明,并不起限定作用。
预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。上述第一搜索密钥可以包括一个或多个目标值,一个目标值对应一个预设Range属性。例如,预设Range属性包括源端口和目的端口;第一搜索密钥包括port01和port11,其中,port01为源端口,port11为目的端口。
步骤S22,按照预设Range匹配操作,将目标值***Range域和扩展域,得到第二搜索密钥。
为保证准确的执行查找操作,步骤S22中的预设Range匹配操作与上述数据存储方法中的预设Range匹配操作相同。
本申请实施例中,用户在将第一搜索密钥输入网络设备后,网络设备将第一搜索密钥存储至TCAM的内容缓冲器中,之后,将内容缓冲器中的第一搜索密钥导入上述基于控制平面的Range匹配的SDK端口;网络设备基于SDK端口的Range匹配操作,将目标值***Range域和扩展域,得到第二搜索密钥。
步骤S23,在TCAM物理表项包括的密钥中,查找第二搜索密钥。
TCAM中包括多条TCAM物理表项。网络设备将第二搜索密钥与每条TCAM物理表项中预设Range属性的密钥匹配,实现在TCAM物理表项包括的密钥中,查找第二搜索密钥。
步骤S24,若在TCAM物理表项中查找到第二搜索密钥,则返回TCAM物理表项包括的地址。
若在一条TCAM物理表项中查找到第二搜索密钥,则网络设备获取TCAM物理表项包括的地址,并返回给用户。此时,用户可以从该地址处获取到需要的数据。
本申请实施例中,TCAM物理表项的密钥字段包括了Range域和扩展域,该密钥字段记录了更多的Range信息。因此,在生成ACL规则的TCAM物理表项时,可以大大减少TCAM物理表项的数量,缓解了需要处理大量的ACL规则时导致TCAM资源不足的问题。利用这种TCAM物理表项执行查找操作,可以有效提高TCAM的利用率,满足高负载业务的需要。
在本申请的一个实施例中,预设Range属性的数量可以为多个。这种情况下,如图3所示,该方法中,步骤S22可以细化为步骤S221和S222。
步骤S221,按照预设Range匹配操作,将每个预设Range属性的目标值分别***Range域和扩展域,得到每个目标值对应的候选值。
本申请实施例中,对于每个预设Range属性,网络设备按照预设Range匹配操作,将该预设Range属性的目标值***Range域和扩展域,得到该目标值对应的候选值。
步骤S222,按照预设组合方式组合每个候选值,得到第二搜索密钥。
网络设备中预先设置了预设Range属性的密钥的组合方式,即预设组合方式。按照预设组合方式,网络设备组合每个候选值,得到第二搜索密钥。
本申请实施例中,预设组合方式可以为多种,按照预设组合方式,网络设备可以得到多个第二搜索密钥。进而可以实现并行查找操作,提高了查找效率。
在本申请的一个实施例中,为便于实现查找操作,网络设备可以包括多个逻辑寄存器。基于此,根据上述图3,本申请实施例还提供了一种数据查找方法,如图4所示,该方法中,步骤S221可以细化为步骤S2211和步骤S2212,步骤S222可以细化为步骤S2221。
步骤S2211,根据每个预设Range属性与逻辑寄存器的对应关系,将每个目标值分别写入对应的逻辑寄存器。
网络设备预设设置了每个预设Range属性与逻辑寄存器的对应关系。对于每个预设Range属性的目标值,网络设备可以将该预设Range属性的目标值写入该预设Range属性的逻辑寄存器。
本申请实施例中,预设Range属性可以动态的添加到每个逻辑寄存器上。此时逻辑寄存器即可为包含了Range匹配操作的寄存器。
步骤S2212,按照预设Range匹配操作,将每个逻辑寄存器中的每个目标值***Range域和扩展域,得到每个目标值对应的候选值。
本申请实施例中,一个逻辑寄存器写入了一个或多个目标值。对于每个逻辑寄存器,网络设备按照预设Range匹配操作,将该逻辑寄存器中的每个目标值***Range域和扩展域,得到每个目标值对应的候选值。
步骤S2221,对于每个逻辑寄存器,组合该逻辑寄存器中每个候选值,得到该逻辑寄存器对应的第二搜索密钥。
在得到每个逻辑寄存器中的每个目标值对应的候选值后,对于每个逻辑寄存器,网络设备组合该逻辑寄存器中每个候选值,得到该逻辑寄存器对应的第二搜索密钥。
在多个逻辑寄存器的情况下,网络设备得到多个第二搜索密钥,进而网络设备可以并行的执行查找操作。
下面结合图5和图6所示的流程图,对本申请实施例提供的数据查找方法进行详细说明。其中,预设Range属性包括源端口和目的端口。Range域为16bit,扩展域为16bit,即Range编码算法为16bit→32bit编码算法。TCAM支持4路并行查找操作。预设组合方式有:{源端口}、{目的端口}和{源端口+目的端口}。
TCAM物理表项的添加流程:
本申请实施例中,在执行TCAM物理表项的添加之前,需要对TCAM数据库进行初始化,以将TCAM物理表项的密钥字段属性设置为Range(一旦设置,将无法动态修改),并使能Range匹配功能,设置Range域的容量为16bit。
另外,涉及在该TCAM数据库中进行查找操作的查找指令,该查找指令的搜索密钥进行初始化,以在搜索密钥中设置相应的Range属性。
网络设备将双倍速率同步动态随机存储器(Double Data Rate SynchronousDynamic Random Access Memory,DDR SDRAM)中的数据(例如Action数据)与TCAM数据库中的TCAM物理表项进行关联。
在TCAM物理表项的密钥和验证字段中增加Range字段,该Range字段包括Range域和扩展域。另外,网络设备将密钥和验证字段与地址数据(Address Data,AD)关联。此时,完成了TCAM物理表项的添加。
本申请实施例中,Range字段按照TCAM数据库初始化Range字段的先后顺进行遍历下发。
另外,本申请实施例中,TCAM的Range匹配操作不支持物理表项修改。因此,在修改物理表项的内容时,可以先下发新的物理表项,之后删除旧的物理表项。
再者,在资源统计方面,若ACL规则转换为多条TCAM物理表项时,如按照上述16bit→16bit或16bit→24bit编码算法,将ACL规则转换为TCAM物理表项时,一个ACL规则会衍生出多条TCAM物理表项,此时,需要一并统计向用户展示的逻辑表项以及所有的TCAM物理表项。
数据查找流程:
用户向网络设备输入搜索密钥1,该搜索密钥1包括源端口1和目的端口2。
网络设备将搜索密钥1缓存至内容缓冲器中。
网络设备将搜索密钥1导入SDK端口,进而由TCAM软件利用预设Range匹配操作,将搜索密钥1中的源端口1***Range域和扩展域,得到候选值1,将搜索密钥1中的目的端口2***Range域和扩展域,得到候选值2。其中,候选值1即为按照预设Range匹配操作处理中32bit的源端口1,候选值2即为按照预设Range匹配操作处理中32bit的目的端口2。
按照预设组合方式,网络设备组合候选值,得到如图5所示的3个密钥,分别为密钥0-2。
之后,网络设备将密钥0-2输入TCAM,进行查找操作,得到相应的查找结果0-3等,并将查找结果返回给用户。其中,查找结果包括地址数据,基于该地址数据,可以从DDR中获取到用户需要的数据。
本申请实施例中,网络设备中可以设置密钥处理单元(Key Process Unit,KPU),由KPU将密钥0-2输入TCAM,进行查找操作,对此不进行限定。
基于上述实施例,可以有效节省TCAM资源。例如,在最差的情况下,使能源端口的Range范围为2-65534,目的端口的Range范围为2-65534,TTL的Range范围为2-254。
若采用16bit→24bit编码算法,单条ACL规则实际下发为13条TCAM物理表项,与相关技术中基于掩码算法下发TCAM物理表项先锋,节省了约29倍的TCAM资源。
若采用16bit→32bit编码算法,单条ACL规则实际下发为1条TCAM物理表项,与相关技术中基于掩码算法下发TCAM物理表项先锋,节省了约377倍的TCAM资源。
与上述数据存储方法对应,本申请实施例还提供了一种数据存储装置,如图7所述,该装置应用于网络设备,可以包括:
提取模块71,用于从ACL规则中,提取预设Range属性的范围起始值和范围末尾值;
第一***模块72,用于按照预设Range匹配操作,将范围起始值和范围末尾值***Range域和扩展域,得到密钥;
填充模块73,用于将密钥和ACL规则包括的地址填充至TCAM物理表项。
一个可选的实施例中,预设Range属性的数量为多个;
第一***模块72,具体可以用于按照预设Range匹配操作,将每个预设Range属性的范围起始值和范围末尾值分别***Range域和扩展域,得到每个预设Range属性的密钥。
一个可选的实施例中,上述数据存储装置还可以包括:
第一获取模块,用于在将密钥和ACL规则包括的地址填充至TCAM物理表项之后,获取第一搜索密钥,第一搜索密钥包括预设Range属性的目标值;
第二***模块,用于按照预设Range匹配操作,将目标值***Range域和扩展域,得到第二搜索密钥;
第一查找模块,用于在TCAM物理表项包括的密钥中,查找第二搜索密钥;
第一返回模块,用于若在TCAM物理表项中查找到第二搜索密钥,则返回TCAM物理表项包括的地址。
一个可选的实施例中,预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。
本申请实施例提供的技术方案中,网络设备除了设置了Range域外,还设置了扩展域。该扩展域可以用于记录更多的Range信息。网络设备按照预设Range匹配操作,将范围起始值和范围末尾值可以***Range域和扩展域,得到密钥。该密钥中可以包括更多的Range信息,因此,在生成ACL规则的TCAM物理表项时,可以大大减少TCAM物理表项的数量,缓解了需要处理大量的ACL规则时导致TCAM资源不足的问题,进而提高了TCAM的利用率,满足了高负载业务的需要。
与上述数据查找方法对应,本申请实施例还提供了一种数据查找装置,如图8所示,该装置应用于网络设备,可以包括:
第二获取模块81,用于获取第一搜索密钥,第一搜索密钥包括预设Range属性的目标值;
第三***模块82,用于按照预设Range匹配操作,将目标值***Range域和扩展域,得到第二搜索密钥;
第二查找模块83,用于在TCAM物理表项包括的密钥中,查找第二搜索密钥;
第二返回模块84,用于若在TCAM物理表项中查找到第二搜索密钥,则返回TCAM物理表项包括的地址。
一个可选的实施例中,预设Range属性的数量为多个;
第三***模块,具体用于按照预设Range匹配操作,将每个预设Range属性的目标值分别***Range域和扩展域,得到每个目标值对应的候选值;按照预设组合方式组合每个候选值,得到第二搜索密钥。
一个可选的实施例中,网络设备包括多个逻辑寄存器;
第三***模块,具体用于根据每个预设Range属性与逻辑寄存器的对应关系,将每个目标值分别写入对应的逻辑寄存器;按照预设Range匹配操作,将每个逻辑寄存器中的每个目标值***Range域和扩展域,得到每个目标值对应的候选值;对于每个逻辑寄存器,组合该逻辑寄存器中每个候选值,得到该逻辑寄存器对应的第二搜索密钥。
一个可选的实施例中,预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。
本申请实施例中,TCAM物理表项的密钥字段包括了Range域和扩展域,该密钥字段记录了更多的Range信息。因此,在生成ACL规则的TCAM物理表项时,可以大大减少TCAM物理表项的数量,缓解了需要处理大量的ACL规则时导致TCAM资源不足的问题。利用这种TCAM物理表项执行查找操作,可以有效提高TCAM的利用率,满足高负载业务的需要。
与上述数据存储方法对应,本申请实施例还提供了一种网络设备,如图9所示,包括处理器91和机器可读存储介质92,机器可读存储介质92存储有能够被处理器91执行的机器可执行指令,处理器91被机器可执行指令促使:实现上述任一数据存储方法步骤。
与上述数据查找方法对应,本申请实施例还提供了一种网络设备,如图10所示,包括处理器101和机器可读存储介质102,机器可读存储介质102存储有能够被处理器101执行的机器可执行指令,处理器101被机器可执行指令促使:实现上述任一数据查找方法步骤。
与上述数据存储方法对应,本申请实施例还提供了一种机器可读存储介质,机器可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述任一数据存储方法步骤。
与上述数据查找方法对应,本申请实施例还提供了一种机器可读存储介质,机器可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述任一数据查找方法步骤。
机器可读存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任一数据存储方法步骤。
在本申请提供的又一实施例中,还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任一数据查找方法步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、网络设备、机器可读存储介质和计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (12)
1.一种数据存储方法,其特征在于,应用于网络设备,所述方法包括:
从访问控制列表ACL规则中,提取预设范围Range属性的范围起始值和范围末尾值;
按照预设Range匹配操作,将所述范围起始值和范围末尾值***Range域和扩展域,得到密钥,所述预设Range匹配操作用于实现Range编码算法,所述Range域和扩展域被放置在密钥字段,所述扩展域用于所述Range编码算法扩展字节的填充,所述扩展域的容量根据所述Range编码算法确定;
将所述密钥和所述ACL规则包括的地址填充至三态内容寻址存储器TCAM物理表项。
2.根据权利要求1所述的方法,其特征在于,所述预设Range属性的数量为多个;
所述按照所述预设Range匹配操作,将所述范围起始值和范围末尾值***Range域和扩展域,得到密钥的步骤,包括:
按照预设Range匹配操作,将每个预设Range属性的范围起始值和范围末尾值分别***Range域和扩展域,得到每个预设Range属性的密钥。
3.根据权利要求1或2所述的方法,其特征在于,在将所述密钥和所述ACL规则包括的地址填充至TCAM物理表项之后,所述方法还包括:
获取第一搜索密钥,所述第一搜索密钥包括所述预设Range属性的目标值;
按照所述预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥;
在所述TCAM物理表项包括的密钥中,查找所述第二搜索密钥;
若在所述TCAM物理表项中查找到所述第二搜索密钥,则返回所述TCAM物理表项包括的地址。
4.根据权利要求1或2所述的方法,其特征在于,所述预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。
5.一种数据查找方法,其特征在于,应用于网络设备,所述方法包括:
获取第一搜索密钥,所述第一搜索密钥包括预设范围Range属性的目标值;
按照预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥,所述预设Range匹配操作用于实现Range编码算法,所述Range域和扩展域被放置在密钥字段,所述扩展域用于所述Range编码算法扩展字节的填充,所述扩展域的容量根据所述Range编码算法确定;
在三态内容寻址存储器TCAM物理表项包括的密钥中,查找所述第二搜索密钥;
若在所述TCAM物理表项中查找到所述第二搜索密钥,则返回所述TCAM物理表项包括的地址。
6.根据权利要求5所述的方法,其特征在于,所述预设Range属性的数量为多个;
所述按照预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥的步骤,包括:
按照预设Range匹配操作,将每个预设Range属性的目标值分别***Range域和扩展域,得到每个目标值对应的候选值;
按照预设组合方式组合每个候选值,得到第二搜索密钥。
7.根据权利要求6所述的方法,其特征在于,所述网络设备包括多个逻辑寄存器;
所述按照预设Range匹配操作,将每个预设Range属性的目标值分别***Range域和扩展域,得到每个所述目标值对应的候选值的步骤,包括:
根据每个预设Range属性与逻辑寄存器的对应关系,将每个目标值分别写入对应的逻辑寄存器;按照预设Range匹配操作,将每个逻辑寄存器中的每个所述目标值***Range域和扩展域,得到每个目标值对应的候选值;
所述按照预设组合方式组合每个候选值,得到第二搜索密钥的步骤,包括:
对于每个逻辑寄存器,组合该逻辑寄存器中每个候选值,得到该逻辑寄存器对应的第二搜索密钥。
8.根据权利要求5-7任一项所述的方法,其特征在于,所述预设Range属性包括源端口、目的端口和生存时间值中的一种或多种。
9.一种数据存储装置,其特征在于,应用于网络设备,所述装置包括:
提取模块,用于从访问控制列表ACL规则中,提取预设范围Range属性的范围起始值和范围末尾值;
第一***模块,用于按照预设Range匹配操作,将所述范围起始值和范围末尾值***Range域和扩展域,得到密钥,所述预设Range匹配操作用于实现Range编码算法,所述Range域和扩展域被放置在密钥字段,所述扩展域用于所述Range编码算法扩展字节的填充,所述扩展域的容量根据所述Range编码算法确定;
填充模块,用于将所述密钥和所述ACL规则包括的地址填充至三态内容寻址存储器TCAM物理表项。
10.一种数据查找装置,其特征在于,应用于网络设备,所述装置包括:
第二获取模块,用于获取第一搜索密钥,所述第一搜索密钥包括预设范围Range属性的目标值;
第三***模块,用于按照预设Range匹配操作,将所述目标值***Range域和扩展域,得到第二搜索密钥,所述预设Range匹配操作用于实现Range编码算法,所述Range域和扩展域被放置在密钥字段,所述扩展域用于所述Range编码算法扩展字节的填充,所述扩展域的容量根据所述Range编码算法确定;
第二查找模块,用于在三态内容寻址存储器TCAM物理表项包括的密钥中,查找所述第二搜索密钥;
第二返回模块,用于若在所述TCAM物理表项中查找到所述第二搜索密钥,则返回所述TCAM物理表项包括的地址。
11.一种网络设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1-4或5-8任一所述的方法步骤。
12.一种机器可读存储介质,其特征在于,所述机器可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4或5-8任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110641530.4A CN113392039B (zh) | 2021-06-09 | 2021-06-09 | 一种数据存储、查找方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110641530.4A CN113392039B (zh) | 2021-06-09 | 2021-06-09 | 一种数据存储、查找方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113392039A CN113392039A (zh) | 2021-09-14 |
CN113392039B true CN113392039B (zh) | 2023-06-20 |
Family
ID=77618679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110641530.4A Active CN113392039B (zh) | 2021-06-09 | 2021-06-09 | 一种数据存储、查找方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113392039B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102377664A (zh) * | 2010-08-27 | 2012-03-14 | 武汉烽火网络有限责任公司 | 一种基于tcam的区域匹配装置和方法 |
CN112528094A (zh) * | 2020-12-04 | 2021-03-19 | 国网山东省电力公司信息通信公司 | 一种基于分层映射的多字段范围tcam编码方法及*** |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7555594B2 (en) * | 2004-07-22 | 2009-06-30 | Netlogic Microsystems, Inc. | Range representation in a content addressable memory (CAM) using an improved encoding scheme |
CN100433009C (zh) * | 2005-11-24 | 2008-11-12 | 华为技术有限公司 | 静态范围匹配表的管理维护方法 |
CN100479436C (zh) * | 2005-11-28 | 2009-04-15 | 华为技术有限公司 | 静态多接口范围匹配表的管理维护方法 |
CN100555988C (zh) * | 2006-03-08 | 2009-10-28 | 中兴通讯股份有限公司 | 一种提高三重内容可寻址存储器报文分类查找速度的方法 |
CN101035061B (zh) * | 2006-03-09 | 2010-05-12 | 中兴通讯股份有限公司 | 实现三重内容可寻址存储器范围匹配的分段编码扩展方法 |
CN102831235A (zh) * | 2012-09-03 | 2012-12-19 | 苏州雄立科技有限公司 | 范围匹配及查找方法 |
CN103546378B (zh) * | 2013-05-20 | 2018-06-01 | 北京百卓网络技术有限公司 | 基于tcam的范围多匹配2级分层查找方法 |
CN104092613A (zh) * | 2014-07-15 | 2014-10-08 | 山东超越数控电子有限公司 | 一种基于模糊匹配的快速查表方法 |
CN108512782A (zh) * | 2017-02-24 | 2018-09-07 | 华为数字技术(苏州)有限公司 | 访问控制列表分组调整方法、网络设备和*** |
US10834085B2 (en) * | 2017-04-14 | 2020-11-10 | Nxp Usa, Inc. | Method and apparatus for speeding up ACL rule lookups that include TCP/UDP port ranges in the rules |
US10397116B1 (en) * | 2017-05-05 | 2019-08-27 | Amazon Technologies, Inc. | Access control based on range-matching |
-
2021
- 2021-06-09 CN CN202110641530.4A patent/CN113392039B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102377664A (zh) * | 2010-08-27 | 2012-03-14 | 武汉烽火网络有限责任公司 | 一种基于tcam的区域匹配装置和方法 |
CN112528094A (zh) * | 2020-12-04 | 2021-03-19 | 国网山东省电力公司信息通信公司 | 一种基于分层映射的多字段范围tcam编码方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN113392039A (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | Packet forwarding in named data networking requirements and survey of solutions | |
US7069268B1 (en) | System and method for identifying data using parallel hashing | |
US11468027B2 (en) | Method and apparatus for providing efficient indexing and computer program included in computer readable medium therefor | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
US20200257732A1 (en) | Systems and methods of managing an index | |
US10296497B2 (en) | Storing a key value to a deleted row based on key range density | |
CN111984835B (zh) | 一种IPv4掩码五元组规则存储压缩方法及装置 | |
CN104794228A (zh) | 一种搜索结果提供方法及装置 | |
US10783153B2 (en) | Efficient internet protocol prefix match support on No-SQL and/or non-relational databases | |
CN111914020A (zh) | 数据同步方法及装置、数据查询方法及装置 | |
CN114860627B (zh) | 基于地址信息动态生成页表的方法 | |
CN100383787C (zh) | 一种数据库多表信息初始化方法 | |
CN105912696A (zh) | 一种基于对数归并的dns索引创建方法及查询方法 | |
CN113392039B (zh) | 一种数据存储、查找方法及装置 | |
CN111241090B (zh) | 存储***中管理数据索引的方法和装置 | |
CN111178965B (zh) | 一种资源投放方法及服务器 | |
CN112685417A (zh) | 数据库操作方法、***、装置、服务器及存储介质 | |
CN101459599A (zh) | 一种实现缓存数据访问与加载并发进行的方法及*** | |
CN113420191B (zh) | 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质 | |
US9916086B2 (en) | Content-addressable memory device | |
US6931491B2 (en) | Hardware-assisted tuple space | |
US8650209B1 (en) | System, method, and computer program for determining most of the non duplicate records in high performance environments in an economical and fault-tolerant manner | |
Saxena et al. | Scalable, memory-efficient pending interest table of named data networking | |
JP2003234762A (ja) | テーブル検索装置および方法およびプログラムおよび記録媒体 | |
CN113505086B (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 |