CN104394077B - 基于Hash算法的标签查找方法及装置 - Google Patents
基于Hash算法的标签查找方法及装置 Download PDFInfo
- Publication number
- CN104394077B CN104394077B CN201410761004.1A CN201410761004A CN104394077B CN 104394077 B CN104394077 B CN 104394077B CN 201410761004 A CN201410761004 A CN 201410761004A CN 104394077 B CN104394077 B CN 104394077B
- Authority
- CN
- China
- Prior art keywords
- label
- message
- tab indexes
- space
- hash algorithm
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明揭示了一种基于Hash算法的标签查找方法及装置,所述方法基于ASIC芯片实现,其包括:接收并解析报文;获取所述报文携带的标签;所述标签携带的信息包括:标签地址;将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,直接获取对应所述标签的标签索引;根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;根据所述报文的处理方式处理所述报文。本发明通过引入Hash算法,将标签作为主要元素参与到Hash运算中,如此,既不会浪费芯片的内存,也不会受制于标签地址;另外,针对VPN场景下,需要查找多级标签的情况,通过并行查找的方式,仅需要一次查找,即可以得到多个结果,更好的提高芯片的性能。
Description
技术领域
本发明涉及通信技术领域,尤其是涉及一种在ASIC芯片中基于Hash算法的标签查找方法及装置。
背景技术
随着通信技术的发展,交换机技术在网络中的运用发展迅速,所述交换机为任意两个网络节点提供独享的电信号通路;其中,ASIC芯片在交换机中主要起数据交换的作用,其将进入交换机的数据流量通过ASIC限速转发出去,且在其内实现数据接收,转发决策,报文存储,报文编辑等操作。
传统交换机芯片中,如图1所示,图1是传统芯片中的标签查找结构示意图;其中,Label的中文含义为标签,是一种短的易于处理的、不包含拓扑信息、只具有局部意义的信息内容;所述标签携带的信息包括:Label ID,其中文含义为标签地址;所述ASIC芯片中设置有Label space,其中文含义为标签空间;Associate Data的中文含义为标签索引。
传统芯片中的标签查找包括以下步骤:
S1、解析报文获取其携带的标签;
S2、根据标签的标签地址判断所述标签进入ASIC芯片中的接口空间还是全局空间;若进入接口空间,执行步骤S3,若进入全局空间执行步骤S4;
S3、判断所述标签中携带的标签地址的值是否在交换机中存储的接口空间的接口空间段内,
若是,则通过将所述标签和所述标签空间进行偏移生成标签索引;
若否,判断标签溢出,停止转发所述报文;
S4、判断所述标签中携带的标签地址的值是否在交换机中存储的全局空间的全局空间段之内,
若是,则通过将所述标签和所述标签空间进行偏移生成标签索引;
若否,判断标签溢出,停止转发所述报文;
S5、若转发报文流程继续执行,则根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;根据所述报文的处理方式转发所述报文。
所述报文的处理方式包括:指向下一级标签,或指向报文的转发端口;
若指向下一级标签,则回到步骤S1;否则根据所述报文的处理方式转发所述报文。
综上所述,由于受到ASIC芯片内存大小的限制,以及从报文的转发成本代价考虑,接口空间的范围或全局空间的范围均是受到限制的,而在查询过程中,需要将标签地址匹配到接口空间或全局空间后,才能进一步的生成标签索引,如此,传统的标签查找方式仅能支持有限范围内的标签查找,进一步的,即使接口空间,在每个接口空间段中也只能支持连续范围内的标签地址查找;如此,若单个报文中携带多个标签,那么对于多级标签的查找,往往需要用到不同的接口空间,造成标签的查找的局限性;亦或是先进行查询上一级标签,待其完成后,再重新查询下一级标签,产生很多不必要的浪费。
发明内容
本发明的目的之一在于提供一种基于Hash算法的标签查找方法及装置。
为实现上述发明目的之一,本发明一实施方式提供了一种基于Hash算法的标签查找方法,
接收并解析报文;
获取所述报文携带的标签;所述标签携带的信息包括:标签地址;
将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,直接获取对应所述标签的标签索引;所述标签索引包括:指向下一级标签,或指向报文的转发端口;
根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;
根据所述报文的处理方式转发所述报文。
作为本发明的进一步改进,所述“解析报文;获取所述报文携带的标签;”具体包括:
从外至内依次解析出单个报文携带的多级标签,并记录所述标签的数量N,所述N为大于0的正整数;
将所述标签按照解析顺序依次进行排序,从外至内依次解析出的标签分别为标签1,…,标签N-1,标签N。
作为本发明的进一步改进,所述“将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,直接获取对应所述标签的标签索引;所述标签索引包括:指向下一级标签,或指向报文的转发端口;根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;根据所述报文的处理方式处理所述报文。”具体包括:
若所述N大于1,将同时将获取的N个所述标签,结合所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,并同时获取N个所述标签对应的N个标签索引;所述N个标签索引分别为:标签索引1,…,标签索引N-1,标签索引N;
按照获取的标签索引1至标签索引N的解析顺序,依次判断当前所述标签索引为指向下一级标签,或指向报文的转发端口;
若判断当前所述标签索引为指向报文的转发端口,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,同时,结束再次依据所述标签索引再次查询MPLS对照表,并根据所述报文的具体转发端口转发所述报文;
若判断当前所述标签索引为指向下一级标签,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的下一级标签的标签地址;同时,根据下一级标签的标签地址匹配的标签索引,继续查询MPLS对照表,直至匹配到报文的处理方式为具体的报文转发端口,并依据所述转发端口转发所述报文。
作为本发明的进一步改进,所述 “解析报文;获取所述报文携带的标签;”后,所述方法还包括:
所述 “解析报文;获取所述报文携带的标签;”后,所述方法还包括:
若所述N大于1,
对解析出的N个标签进行预处理,判断标签N-1中是否存在和标签N之间的映射关系;所述映射关系包括:是否需要更新下一级标签空间,以及下一级标签空间的配置地址;
若是,获取标签N-1,并根据标签N-1获取标签N;
若否,直接获取标签N-1和标签N。
作为本发明的进一步改进,所述方法包括:
所述ASIC芯片中设置静态RAM1和静态RAM2;
所述静态RAM1用于存储所述映射关系;
所述静态RAM2用于存储对应静态RAM1的标签空间;
当判断标签N-1中存在和标签N之间的映射关系后;通过标签N-1查询静态RAM1,获取对应标签N的标签空间的配置地址;
通过获取的标签N的标签空间的配置地址查询静态RAM2,获取对应所述标签N的标签空间。
为实现上述发明目的之一,本发明一实施方式提供了一种基于Hash算法的标签查找装置,所述装置基于ASIC芯片实现,其包括:
网络模块,用于接收报文;
报文解析模块,用于将接收到的报文进行解析,获取所述报文携带的标签;所述标签携带的信息包括:标签地址;
信息处理模块,用于将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,直接获取对应所述标签的标签索引;所述标签索引包括:指向下一级标签,或指向报文的转发端口;
根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;
根据所述报文的处理方式处理所述报文。
作为本发明的进一步改进,所述报文解析模块具体用于:
从外至内依次解析出单个报文携带的多级标签,并记录所述标签的数量N,所述N为大于0的正整数;
将所述标签按照解析顺序依次进行排序,从外至内依次解析出的标签分别为标签1,…,标签N-1,标签N。
作为本发明的进一步改进,所述信息处理模块具体用于:
若所述N大于1,将同时将获取的N个所述标签,结合所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,并同时获取N个所述标签对应的N个标签索引;所述N个标签索引分别为:标签索引1,…,标签索引N-1,标签索引N;
按照获取的标签索引1至标签索引N的解析顺序,依次判断当前所述标签索引为指向下一级标签,或指向报文的转发端口;
若判断当前所述标签索引为指向报文的转发端口,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,同时,结束再次依据所述标签索引再次查询MPLS对照表,并根据所述报文的具体转发端口转发所述报文;
若判断当前所述标签索引为指向下一级标签,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的下一级标签的标签地址;同时,根据下一级标签的标签地址匹配的标签索引,继续查询MPLS对照表,直至匹配到报文的处理方式为具体的报文转发端口,并依据所述转发端口转发所述报文。
作为本发明的进一步改进,所述信息处理模块还用于:
若所述N大于1,
对解析出的N个标签进行预处理,判断标签N-1中是否存在和标签N之间的映射关系;所述映射关系包括:是否需要更新下一级标签空间,以及下一级标签空间的配置地址;
若是,获取标签N-1,并根据标签N-1获取标签N;
若否,直接获取标签N-1和标签N。
作为本发明的进一步改进,所述ASIC芯片中设置静态RAM1和静态RAM2,;
所述ASIC芯片中设置静态RAM1和静态RAM2;
所述静态RAM1用于存储所述映射关系;
所述静态RAM2用于存储对应静态RAM1的标签空间;
当判断标签N-1中存在和标签N之间的映射关系后;通过标签N-1查询静态RAM1,获取对应标签N的标签空间的配置地址;
通过获取的标签N的标签空间的配置地址查询静态RAM2,获取对应所述标签N的标签空间。
与现有技术相比,本发明的有益效果是:本发明的一种基于Hash算法的标签查找方法及装置,通过引入Hash算法,将标签作为主要元素参与到Hash运算中,如此,既不会浪费芯片的内存,也不会受制于标签地址;另外,针对VPN场景下,需要查找多级标签的情况,通过并行查找的方式,仅需要一次查找,即可以得到多个结果,更好的提高芯片的性能。
附图说明
图1是传统芯片中的标签查找结构示意图;
图2是本发明一实施方式中基于Hash算法的标签查找方法的流程图;
图3是本发明一实施方式中基于Hash算法的标签查找装置的模块图;
图4是本发明第一实施方式中基于Hash算法的标签查找流程的结构示意图;
图5是本发明第二实施方式中基于Hash算法的标签查找流程的结构示意图;
图6是本发明第三实施方式中基于Hash算法的标签查找流程的结构示意图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
结合图2、图4所示所示,在本发明一实施方式中提供一种基于Hash算法的标签查找方法,本实施方式中,所述方法基于ASIC芯片实现。
所述ASIC是是一种为专门目的而设计的集成电路(Application SpecificIntegrated Circuit的英文缩写),其特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。
本实施方式中,所述方法包括以下步骤:
S1、接收并解析报文,获取所述报文携带的标签;所述标签携带的信息包括:标签地址。
所述报文在进入所述ASIC 芯片之前,通过边缘路由器等设备将其进行封装,其被封装的内容包括:标签。报文进入所述ASIC 芯片之后,首先需要对所述报文进行解析,获取所述报文携带的标签;并根据所述标签携带的信息转发报文。
本示例中,结合图4、图5、图6所示,所述标签用Label表示,其中,所述标签携带的信息包括:标签地址,其用Label id表示;另外,所述ASIC芯片中存储的标签空间用Labelspace表示;所述ASIC芯片中存储的空间标识符用IsInterfaceId表示。
本发明具体实施方式中,所述方法还包括:
S2、将所述标签,以及所述ASIC 芯片中存储的标签空间和空间标识符,通过Hash算法计算,直接获取对应所述标签的标签索引。
所述Hash算法中的Hash,一般称为“散列”,亦或为“哈希”,它是一种单向密码体制,是一个从明文到密文的不可逆的映射,即只有加密过程,没有解密过程;通过Hash算法可以找到一种数据内容和数据存放地址之间的映射关系。其把任意长度的输入(又叫做预映射,pre image),通过散列算法,变换成固定长度的输出,该输出就是散列值;这种转换是一种压缩映射,亦即:散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值;简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数;Hash主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,这些编码值叫做Hash值。
所述空间标识符为所述标签空间类型的标识,所述标签空间类型一般分为两种,接口空间或全局空间。进一步的,在所述空间标识符内设置标识符0或1;当设置的标识符为0时,表示标签空间的类型为接口空间;当设置的标识符为1时,表示标签空间的类型为全局空间。当然,标识符0或1所代表的所述标签空间的类型可以自定义设置,例如:也可以将标识符为0表示标签空间的类型设定为全局空间;将标识符为1表示标签空间的类型设定为接口空间;或是用其他的标识符来标识使能接口空间还是全局空间,在此不做详细赘述。
本实施方式中,提取所述标签所携带的标签地址,将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符带入Hash 算法,并通过所述Hash 算法计算得到Hash值,进一步的,将所述Hash值作为对应所述标签的标签索引。
进一步的,所述方法还包括:
S3、根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;根据所述报文的处理方式处理所述报文。
所述标签索引包括:指向下一级标签,或指向报文的转发端口。
所述报文的处理方式为:根据所述标签索引查询MPLS对照表后,匹配到的具体的报文转发端口,或是匹配到的具体的下一级标签地址。
所述标签索引为指向下一级标签,表示当前报文中还携带有内层标签;指向报文的转发端口表示当前报文可能仅携带一个标签,或是报文转发过程中仅需要解析一个标签。需要说明的是,报文转发过程中,其携带标签的数量并不是固定的,可以为1个,也可以为从外至内的多个标签。
本发明的第一实施方式中,若所述报文携带标签的数量为1个,获取的所述Hash值作为对应所述标签的标签索引,所述标签索引通常为指向报文的转发端口,根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,如此之后,所述报文按照所指向的报文转发端口进行转发。
若所述报文携带标签的数量为多个,获取的所述Hash值作为对应所述标签的标签索引可为指向下一级标签,也可以为指向报文的转发端口。若标签索引为指向报文的转发端口,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,并所述报文按照所指向的报文转发端口进行转发,在此不做详细赘述。
若标签索引为指向下一级标签,此时,报文还不能转发,其根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的下一级标签的标签地址,之后,回到步骤S1,通过Hash算法重新得到与下一级标签对应的标签索引,如此循环,直至获取的所述标签索引为指向报文的转发端口,再将所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,所述报文按照所指向的报文转发端口进行转发,在此不做详细赘述。
通过上述描述可知,本发明的第一实施方式的基于Hash算法的标签查找方法,通过引入Hash算法,将标签作为主要元素参与到Hash运算中,基于所述Hash算法的运算灵活性,可以计算携带任意标签地址的标签,如此,既不会浪费芯片的内存,也不会受制于标签地址。
进一步的,上述实施方式中,对于单个报文携带多个标签的情况,其实现方法还有待改进。结合图5所示,本发明的第二实施方式的基于Hash算法的标签查找方法在第一实施方式的基础上加以改进,以在ASIC芯片中,实现基于Hash算法的多个标签的并行查找功能。
本发明第二实施方式的基于Hash算法的标签查找方法与本发明第一实施方式的基于Hash算法的标签查找方法的区别在于:
本实施方式中,在所述步骤S1具体包括:从外至内依次解析出单个报文携带的多级标签,并记录所述标签的数量N,所述N为大于0的正整数;将所述标签按照解析顺序依次进行排序,从外至内依次解析出的标签分别为标签1,…,标签N-1,标签N。相应的,每个所述标签均对应携带一个标签地址;例如标签1携带的标签地址为标签地址1,标签N携带的标签地址为标签地址N。
进一步的,本实施方式中,所述步骤S2为:
将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,同时获取对应各个所述标签的相应标签索引。
本实施方式中,若所述N大于1,则同时将获取的N个所述标签,结合所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,并同时获取N个所述标签对应的N个标签索引;所述N个标签索引分别为:标签索引1,…,标签索引N-1,标签索引N;
进一步的,本实施方式中,所述步骤S3为:
按照获取的标签索引1至标签索引N的解析顺序,依次将每一个标签索引分别查询MPLS对照表,匹配所述报文的处理方式。
本实施方式中,所述步骤S3具体包括:
按照获取的标签索引1至标签索引N的解析顺序,依次判断当前所述标签索引为指向下一级标签,或指向报文的转发端口。
若判断当前所述标签索引为指向报文的转发端口,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,同时,结束再次依据所述标签索引再次查询MPLS对照表,并根据所述报文的具体转发端口转发所述报文。
若判断当前所述标签索引为指向下一级标签,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的下一级标签的标签地址;同时,根据下一级标签的标签地址匹配的标签索引,继续查询MPLS对照表,直至匹配到报文的处理方式为具体的报文转发端口,并依据所述转发端口转发所述报文。
图5所示示例中,为了方便描述,取N的值为3。
在接收到报文后,通过解析报文可知,所述报文携带3个标签,分别为标签1、标签2、标签3;进一步的,每个标签携带一个标签地址,分别为标签地址1、标签地址2、以及标签地址3,其在图上标识为Label1 Label id、Label2 Label id、Label3Label id。
进一步的,每个标签地址分别对应所述ASIC中存储的标签空间1和标识符1、标签空间2和标识符2、标签空间3和标识符3;本示例中,对应的标签空间和标识符分别以Label1Label space和Label1 IsInterfaceId、Label2 Label space和Label2 IsInterfaceId、Label2 Label space和Label2 IsInterfaceId表示。
进一步的,根据上述标签地址,结合标签空间以及标识符,通过Hash算法计算,获取对应每个所述标签的每个标签索引。本实施方式中,获取的标签索引分别为标签索引1、标签索引2、以及标签索引3;本示例中,分别以Label1 associate data、Label2 associatedata、Label3associate data表示。
进一步的,按照获取的标签索引1至标签索引N的解析顺序,依次判断当前所述标签索引为指向下一级标签,或指向报文的转发端口。
例如:若判断标签索引1为指向报文的转发端口,则根据所述标签索引1查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,之后根据所述报文的具体转发端口转发所述报文。
若判断所述标签索引1为指向下一级标签,则根据所述标签索引1查询MPLS对照表后,匹配到标签2对应的标签地址;同时,根据下一级标签2匹配的标签索引2,判断其匹配到所述报文的处理方式为指向报文转发端口还是指向下一级标签,若标签索引2为指向报文的转发端口,则继续查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,之后根据所述报文的具体转发端口转发所述报文;若标签索引2为指向下一级标签,则依据上述过程判断标签索引3,在此不做详细赘述。
如此,本发明第二实施方式的基于Hash算法的标签查找方法,在本发明第一实施方式的基础上,通过引入Hash算法,将标签作为主要元素参与到Hash运算中,更优的实现多个标签的并行查找,同时,基于所述Hash算法的运算灵活性,可以计算携带任意标签地址的标签,如此,既不会浪费芯片的内存,也不会受制于标签地址。
进一步的,在本发明的其他实现场景中,例如MPLS UPSTREAM场景中,内层标签的标签空间往往是依赖于外层标签得到,为了使本发明的基于Hash算法的标签查找方法适合多种场景,本发明第三实施方式的基于Hash算法的标签查找方法在其第二实施方式基础上,做了进一步改进。
结合图6所示,本发明的第三实施方式的基于Hash算法的标签查找方法与第二实施方式的于Hash算法的标签查找方法的区别在于:
本申请的第三实施方式,在步骤S1后,所述方法还进一步包括:
判断报文携带标签的数量N是否大于1,若所述N大于1,对解析出的N个标签进行预处理,判断标签N-1中是否存在和标签N之间的映射关系;所述映射关系包括:是否需要更新下一级标签空间,以及下一级标签空间的配置地址;
若是,获取标签N-1,并根据标签N-1获取标签N;
若否,直接获取标签N-1和标签N。
本实施方式中,所述ASIC芯片中设置静态RAM1和静态RAM2;
所述静态RAM1用于存储所述映射关系;
所述静态RAM2用于存储对应静态RAM1的标签空间;
当判断标签N-1中存在和标签N之间的映射关系后;通过标签N-1查询静态RAM1,获取对应标签N的标签空间的配置地址;
之后,通过获取的标签N的标签空间的配置地址查询静态RAM2,获取对应所述标签N的标签空间。
如此,将本发明的基于Hash算法的标签查找方法应用到多种场景中。
结合图3所示,本发明一实施方式的基于Hash算法的标签查找装置,包括:网络模块100、报文解析模块200、信息处理模块300。
网络模块100用于接收报文。
报文解析模块200用于将接收到的报文进行解析,获取所述报文携带的标签;所述标签携带的信息包括:标签地址;
结合图4所示,信息处理模块300将所述标签、以及所述ASIC 芯片中存储的标签空间和空间标识符,通过Hash 算法计算,直接获取对应所述标签的标签索引。
本实施方式中,信息处理模块300提取所述标签所携带的标签地址,将所述标签地址,以及所述ASIC 芯片中存储的标签空间和空间标识符带入Hash 算法,并通过所述Hash算法计算得到Hash值,进一步的,将所述Hash值作为对应所述标签的标签索引。
进一步的,信息处理模块300根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;根据所述报文的处理方式处理所述报文。
所述标签索引包括:指向下一级标签,或指向报文的转发端口。
所述报文的处理方式为:根据所述标签索引查询MPLS对照表后,匹配到的具体的报文转发端口,或是匹配到的具体的下一级标签地址。
本发明的一实施方式中,若所述报文携带标签的数量为1个,获取的所述Hash值作为对应所述标签的标签索引,所述标签索引通常为指向报文的转发端口,根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,如此之后,所述报文按照所指向的报文转发端口进行转发。
若所述报文携带标签的数量为多个,获取的所述Hash值作为对应所述标签的标签索引可为指向下一级标签,也可以为指向报文的转发端口。若标签索引为指向报文的转发端口,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,并所述报文按照所指向的报文转发端口进行转发,在此不做详细赘述。
若标签索引为指向下一级标签,此时,报文还不能转发,其根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的下一级标签的标签地址,如此之后,需要再次通过Hash算法重新得到与下一级标签对应的标签索引,如此循环,直至获取的所述标签索引为指向报文的转发端口,再将所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,所述报文按照所指向的报文转发端口进行转发,在此不做详细赘述。
进一步的,本发明第二实施方式的基于Hash算法的标签查找装置中,对于单个报文携带多个标签的情况,报文解析模块200、信息处理模块300所起作用与本发明第一实施方式稍有不同。
结合图5所示,本发明第二实施方式中:报文解析模块200还用于从外至内依次解析出单个报文携带的多级标签,并记录所述标签的数量N,所述N为大于0的正整数;将所述标签按照解析顺序依次进行排序,从外至内依次解析出的标签分别为标签1,…,标签N-1,标签N。相应的,每个所述标签均对应携带一个标签地址;例如标签1携带的标签地址为标签地址1,标签N携带的标签地址为标签地址N。
进一步的,信息处理模块300还用于将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,同时获取对应各个所述标签的相应标签索引。
本实施方式中,若所述N大于1,则同时将获取的N个所述标签,结合所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,并同时获取N个所述标签对应的N个标签索引;所述N个标签索引分别为:标签索引1,…,标签索引N-1,标签索引N;
进一步的,本实施方式中,信息处理模块300按照获取的标签索引1至标签索引N的解析顺序,依次将每一个标签索引分别查询MPLS对照表,匹配所述报文的处理方式。
本实施方式中,信息处理模块300具体用于按照获取的标签索引1至标签索引N的解析顺序,依次判断当前所述标签索引为指向下一级标签,或指向报文的转发端口。
若判断当前所述标签索引为指向报文的转发端口,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,同时,结束再次依据所述标签索引再次查询MPLS对照表,并根据所述报文的具体转发端口转发所述报文。
若判断当前所述标签索引为指向下一级标签,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的下一级标签的标签地址;同时,根据下一级标签的标签地址匹配的标签索引,继续查询MPLS对照表,直至匹配到报文的处理方式为具体的报文转发端口,并依据所述转发端口转发所述报文。
进一步的,在本发明的其他实现场景中,例如MPLS UPSTREAM场景中,内层标签的标签空间往往是依赖于外层标签得到,为了使本发明的基于Hash算法的标签查找装置适合多种场景,本发明第三实施方式的基于Hash算法的标签查找中,对于单个报文携带多个标签的情况,报文解析模块200所起作用与本发明的第二实施方式稍有不同。
结合图6所示,本发明的第三实施方式的基于Hash算法的标签查找装置中:
报文解析模块200还用于:判断报文携带标签的数量N是否大于1,若所述N大于1,对解析出的N个标签进行预处理,判断标签N-1中是否存在和标签N之间的映射关系;所述映射关系包括:是否需要更新下一级标签空间,以及下一级标签空间的配置地址;
若是,获取标签N-1,并根据标签N-1获取标签N;
若否,直接获取标签N-1和标签N。
本实施方式中,所述ASIC芯片中设置静态RAM1和静态RAM2;
所述静态RAM1用于存储所述映射关系;
所述静态RAM2用于存储对应静态RAM1的标签空间;
当判断标签N-1中存在和标签N之间的映射关系后;报文解析模块200通过标签N-1查询静态RAM1,获取对应标签N的标签空间的配置地址;之后,通过获取的标签N的标签空间的配置地址查询静态RAM2,获取对应所述标签N的标签空间。
如此,将本发明的基于Hash算法的标签查找装置应用到多种场景中。
综上所述,本发明的一种基于Hash算法的标签查找方法及装置,通过引入Hash算法,将标签作为主要元素参与到Hash运算中,如此,既不会浪费芯片的内存,也不会受制于标签地址;另外,针对VPN场景下,需要查找多级标签的情况,通过并行查找的方式,仅需要一次查找,即可以得到多个结果,更好的提高芯片的性能。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置中模块的具体工作过程,以及对各种专业术语的解释,可以参考前述方法实施方式中的对应过程,在此不再赘述。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时仅限于把各模块的功能在ASIC芯片中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分以ASIC芯片产品的形式体现出来。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件是逻辑模块,即可以位于芯片逻辑中的一个模块中,或者也可以分布到芯片内的多个处理模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请可用于众多通用或专用的通信芯片中。例如:交换芯片、路由器芯片,服务器芯片等等。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于Hash算法的标签查找方法,其特征在于,所述方法基于ASIC芯片实现,其包括:
接收并解析报文;
获取所述报文携带的标签;所述标签携带的信息包括:标签地址;
将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,直接获取对应所述标签的标签索引;所述标签索引包括:指向下一级标签,或指向报文的转发端口;其中,所述空间标识符为所述标签空间类型的标识,所述标签空间的类型分为两种,分别为接口空间和全局空间;
根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;
根据所述报文的处理方式处理所述报文。
2.根据权利要求1所述的基于Hash算法的标签查找方法,其特征在于,所述“解析报文;获取所述报文携带的标签;”具体包括:
从外至内依次解析出单个报文携带的多级标签,并记录所述标签的数量N,所述N为大于0的正整数;
将所述标签按照解析顺序依次进行排序,从外至内依次解析出的标签分别为标签1,…,标签N-1,标签N。
3.根据权利要求2所述的基于Hash算法的标签查找方法,其特征在于,所述“将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,直接获取对应所述标签的标签索引;所述标签索引包括:指向下一级标签,或指向报文的转发端口;根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;根据所述报文的处理方式处理所述报文”具体包括:
若所述N大于1,将同时将获取的N个所述标签,结合所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,并同时获取N个所述标签对应的N个标签索引;所述N个标签索引分别为:标签索引1,…,标签索引N-1,标签索引N;
按照获取的标签索引1至标签索引N的解析顺序,依次判断当前所述标签索引为指向下一级标签,或指向报文的转发端口;
若判断当前所述标签索引为指向报文的转发端口,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,同时,结束再次依据所述标签索引再次查询MPLS对照表,并根据所述报文的具体转发端口转发所述报文;
若判断当前所述标签索引为指向下一级标签,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的下一级标签的标签地址;同时,根据下一级标签的标签地址匹配的标签索引,继续查询MPLS对照表,直至匹配到报文的处理方式为具体的报文转发端口,并依据所述转发端口转发所述报文。
4.根据权利要求2所述的基于Hash算法的标签查找方法,其特征在于,所述 “解析报文;获取所述报文携带的标签;”后,所述方法还包括:
若所述N大于1,
对解析出的N个标签进行预处理,判断标签N-1中是否存在和标签N之间的映射关系;所述映射关系包括:是否需要更新下一级标签空间,以及下一级标签空间的配置地址;
若是,获取标签N-1,并根据标签N-1获取标签N;
若否,直接获取标签N-1和标签N。
5.根据权利要求4所述的基于Hash算法的标签查找方法,其特征在于,所述方法包括:
所述ASIC芯片中设置静态RAM1和静态RAM2;
所述静态RAM1用于存储所述映射关系;
所述静态RAM2用于存储对应静态RAM1的标签空间;
当判断标签N-1中存在和标签N之间的映射关系后;通过标签N-1查询静态RAM1,获取对应标签N的标签空间的配置地址;
通过获取的标签N的标签空间的配置地址查询静态RAM2,获取对应所述标签N的标签空间。
6.一种基于Hash算法的标签查找装置,其特征在于,所述装置基于ASIC芯片实现,其包括:
网络模块,用于接收报文;
报文解析模块,用于将接收到的报文进行解析,获取所述报文携带的标签;所述标签携带的信息包括:标签地址;
信息处理模块,用于将所述标签地址,以及所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,直接获取对应所述标签的标签索引;所述标签索引包括:指向下一级标签,或指向报文的转发端口;其中,所述空间标识符为所述标签空间类型的标识,所述标签空间的类型分为两种,分别为接口空间和全局空间;
根据所述标签索引查询MPLS对照表,匹配所述报文的处理方式;
根据所述报文的处理方式处理所述报文。
7.根据权利要求6所述的基于Hash算法的标签查找装置,其特征在于,所述报文解析模块具体用于:
从外至内依次解析出单个报文携带的多级标签,并记录所述标签的数量N,所述N为大于0的正整数;
将所述标签按照解析顺序依次进行排序,从外至内依次解析出的标签分别为标签1,…,标签N-1,标签N。
8.根据权利要求7所述的基于Hash算法的标签查找装置,其特征在于,所述信息处理模块具体用于:
若所述N大于1,将同时将获取的N个所述标签,结合所述ASIC芯片中存储的标签空间和空间标识符,通过Hash算法计算,并同时获取N个所述标签对应的N个标签索引;所述N个标签索引分别为:标签索引1,…,标签索引N-1,标签索引N;
按照获取的标签索引1至标签索引N的解析顺序,依次判断当前所述标签索引为指向下一级标签,或指向报文的转发端口;
若判断当前所述标签索引为指向报文的转发端口,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的报文转发端口,同时,结束再次依据所述标签索引再次查询MPLS对照表,并根据所述报文的具体转发端口转发所述报文;
若判断当前所述标签索引为指向下一级标签,则根据所述标签索引查询MPLS对照表,匹配到所述报文的处理方式为具体的下一级标签的标签地址;同时,根据下一级标签的标签地址匹配的标签索引,继续查询MPLS对照表,直至匹配到报文的处理方式为具体的报文转发端口,并依据所述转发端口转发所述报文。
9.根据权利要求7所述的基于Hash算法的标签查找装置,其特征在于,所述信息处理模块还用于:
若所述N大于1,
对解析出的N个标签进行预处理,判断标签N-1中是否存在和标签N之间的映射关系;所述映射关系包括:是否需要更新下一级标签空间,以及下一级标签空间的配置地址;
若是,获取标签N-1,并根据标签N-1获取标签N;
若否,直接获取标签N-1和标签N。
10.根据权利要求9所述的基于Hash算法的标签查找装置,其特征在于,
所述ASIC芯片中设置静态RAM1和静态RAM2;
所述静态RAM1用于存储所述映射关系;
所述静态RAM2用于存储对应静态RAM1的标签空间;
当判断标签N-1中存在和标签N之间的映射关系后;通过标签N-1查询静态RAM1,获取对应标签N的标签空间的配置地址;
通过获取的标签N的标签空间的配置地址查询静态RAM2,获取对应所述标签N的标签空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410761004.1A CN104394077B (zh) | 2014-12-12 | 2014-12-12 | 基于Hash算法的标签查找方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410761004.1A CN104394077B (zh) | 2014-12-12 | 2014-12-12 | 基于Hash算法的标签查找方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104394077A CN104394077A (zh) | 2015-03-04 |
CN104394077B true CN104394077B (zh) | 2017-11-28 |
Family
ID=52611913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410761004.1A Active CN104394077B (zh) | 2014-12-12 | 2014-12-12 | 基于Hash算法的标签查找方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104394077B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330716B (zh) * | 2015-06-30 | 2019-12-13 | 新华三技术有限公司 | Ip路由查找方法及装置 |
CN109257279B (zh) * | 2018-10-26 | 2021-03-26 | 新华三技术有限公司 | 一种报文转发方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984070A (zh) * | 2006-05-31 | 2007-06-20 | 华为技术有限公司 | 通讯网络中对数据流的分流方法和装置 |
CN101355487A (zh) * | 2007-07-23 | 2009-01-28 | 中国移动通信集团公司 | 一种标签分发方法及装置 |
CN102664816A (zh) * | 2012-05-30 | 2012-09-12 | 迈普通信技术股份有限公司 | 一种快速查找mpls转发表的装置及方法 |
CN102984065A (zh) * | 2011-09-07 | 2013-03-20 | 盛科网络(苏州)有限公司 | 超接口标签空间的报文处理方法及装置 |
-
2014
- 2014-12-12 CN CN201410761004.1A patent/CN104394077B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984070A (zh) * | 2006-05-31 | 2007-06-20 | 华为技术有限公司 | 通讯网络中对数据流的分流方法和装置 |
CN101355487A (zh) * | 2007-07-23 | 2009-01-28 | 中国移动通信集团公司 | 一种标签分发方法及装置 |
CN102984065A (zh) * | 2011-09-07 | 2013-03-20 | 盛科网络(苏州)有限公司 | 超接口标签空间的报文处理方法及装置 |
CN102664816A (zh) * | 2012-05-30 | 2012-09-12 | 迈普通信技术股份有限公司 | 一种快速查找mpls转发表的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104394077A (zh) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10091090B2 (en) | Packet forwarding in software defined networking | |
US6957272B2 (en) | Stackable lookup engines | |
CN102136989B (zh) | 报文传输的方法、系统和设备 | |
CN100454902C (zh) | 一种多域流分类的实现方法 | |
US10666564B2 (en) | Increasing entropy across routing table segments | |
CN102970227A (zh) | 在asic中实现vxlan报文转发的方法和装置 | |
US9544402B2 (en) | Multi-rule approach to encoding a group of rules | |
CN101510855B (zh) | 一种QinQ报文的处理方法和装置 | |
CN108173982A (zh) | 跨板报文的nat处理方法及装置 | |
WO2020114239A1 (zh) | 组播报文的处理方法及装置、存储介质、处理器 | |
CN106992915A (zh) | 一种报文解封装处理、数据写入方法及装置 | |
US11327974B2 (en) | Field variability based TCAM splitting | |
CN111181857A (zh) | 一种报文处理方法及装置、存储介质、光网络终端 | |
CN107968749A (zh) | 实现QinQ路由终结的方法、交换芯片及交换机 | |
CN107566267A (zh) | 一种基于聚合链路的报文转发方法和装置 | |
CN104394077B (zh) | 基于Hash算法的标签查找方法及装置 | |
US20110249674A1 (en) | Apparatus and method for processing packet | |
CN104104571B (zh) | 实现虚拟局域网域映射与访问控制的方法和装置 | |
US10397113B2 (en) | Method of identifying internal destinations of network packets and an apparatus thereof | |
CN103458060A (zh) | 一种多级网络地址转换下主机标识符的传递方法及装置 | |
CN106027409B (zh) | 一种交换机负载均衡输出方法和装置 | |
CN112087389A (zh) | 一种报文匹配查表方法、系统、存储介质和终端 | |
CN108777654B (zh) | 报文转发方法及路由设备 | |
CN103607350A (zh) | 一种路由生成方法及装置 | |
CN105282102B (zh) | 数据流处理方法和系统以及IPv6数据处理设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Patentee after: Suzhou Shengke Communication Co.,Ltd. Address before: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Patentee before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |