从分组内容形成哈希输入的方法及其装置的制造方法

文档序号:9527604阅读:320来源:国知局
从分组内容形成哈希输入的方法及其装置的制造方法
【技术领域】
[0001] 本发明涉及网络分组。更具体地,本发明涉及一种从分组内容形成哈希输入的方 法及其装置。
【背景技术】
[0002] 在以太网交换机中,经常需要形成用于在交换机接收的每个传入分组的唯一签 名。可以在等成本多路径路由(ECMP)中使用该唯一签名,其中可以沿着多个不同目的地路 径发送来自相同源的分组。为了形成这一唯一签名,当前基于硬件的实现方式定义分组中 的哪些固定字段应当用作哈希输入。

【发明内容】

[0003] 用于从分组内容形成哈希输入的装置的实施例涉及一种用于形成哈希输入的可 编程的灵活解决方案。这一解决方案允许基于不同要求的硬件改变,以及随着将来定义更 新的协议和在将来定义更新的协议时添加对于它们的支持。分组被拆分成个别层。每层被 给予有助于标识该层是什么的唯一的层类型编号。基于层类型,每层被扩展成通用格式。 每层具有该层通用的哈希命令的集合。每个哈希命令的字段是fieldOffset、fieldLen、 hashMask和hashMaskMSB。这些哈希命令允许分组中的信息以可编程的方式被提取。从分 组的每个协议层提取的字段被级联以形成哈希层。位矢量指示哪些哈希层用来形成哈希输 入。
[0004] 在一个方面中,提供一种实施解析器引擎的方法。该方法包括:标识分组的协议 层;基于协议层中的每个协议层的标识将该协议层扩展成通用格式;以及从经扩展的协议 层选择内容。
[0005] 在一些实施例中,分组的协议层中的每个协议层基于该协议层的唯一的层类型编 号而被标识。
[0006] 在一些实施例中,通用格式定义协议层能够具有的所有字段的超集。
[0007] 在一些实施例中,扩展协议层中的每个协议层包括:维持用于经扩展的协议层的 位矢量,其中位矢量包括用于经扩展的协议层的每个字节的每字节的位;对于每个有效字 段的每个字节将位标记为可用,其中每个有效字段是在分组的协议层中存在的字段;以及 对于每个无效字段的每个字节将位标记为不可用,其中每个无效字段是在分组的协议层中 不存在的字段。
[0008] 在一些实施例中,该方法也包括使用压缩格式来表达经扩展的协议层。
[0009] 在一些实施例中,该方法也包括将来自通用哈希命令的集合的至少一个通用哈希 命令应用于经扩展的协议层以从经扩展的协议层提取字段。通用哈希命令中的每个通用哈 希命令的字段是fieldOffset、fieldLen、hashMask和hashMaskMSB;fieldOffset指定将 被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定应当从该指定的偏移提取的 字节的数目,hashMask是位掩码,并且hashMaskMSB指示所述位掩码是否将被应用于所提 取的字段的最高有效字节或者最低有效字节。在一些实施例中,通用哈希命令中的每个通 用哈希命令的字段是软件定义的。
[0010] 在一些实施例中,该方法也包括:对位掩码和所提取的字段的一个字节应用逻辑 AND运算,其中位掩码由至少一个哈希命令指定;至少基于逻辑AND运算的结果形成哈希输 入层;以及检索位矢量,该位矢量指示经扩展的协议层中的哪些哈希输入层将用来形成向 哈希函数的哈希输入。在一些实施例中,该方法也包括使用哈希输入作为向哈希函数的输 入。
[0011] 在另一方面中,提供一种实施网络交换机的方法。该方法包括:在网络交换机的传 入端口接收分组;根据用于对应协议的通用格式来通式化分组的每个协议头部;对于每个 经通式化的协议头部,从经通式化的协议头部提取一个或者多个字段;对于每个经通式化 的协议头部,级联来自经通式化的协议头部的一个或者多个提取的字段以形成哈希层;以 及使用位矢量以确定所有经扩展的协议层头部中的哪些哈希层将被选择用以形成哈希输 入。
[0012] 在一些实施例中,网络交换机包括:解析器引擎,被配置为通式化每个协议头部, 从经通式化的协议头部提取一个或者多个字段,级联来自经通式化的协议头部的一个或者 多个提取的字段以形成哈希层,并且使用位矢量以确定所有经扩展的协议头部中的哪些哈 希层将被选择用以形成哈希输入。
[0013] 在一些实施例中,通式化每个协议头部包括:解析器引擎确定协议头部的层类型 和层类型的变体;解析器引擎基于层类型和变体从协议头部检测缺少的字段;以及基于检 测,解析器引擎将协议头部扩展成通用格式。
[0014] 在一些实施例中,提取一个或者多个字段包括将一个或者多个通用哈希命令应 用于经通式化的协议头部。通用哈希命令中的每个通用哈希命令的字段是fieldOffset、 fieldLen、hashMask和hashMaskMSB;fieldOffset指定将被提取的字段在所述经扩展的 层内开始的偏移,fieldLen指定应当从该指定的偏移提取的字节的数目,hashMask是位掩 码,并且hashMaskMSB指示所述位掩码是否将被应用于所提取的字段的最高有效字节或者 最低有效字节。
[0015] 在一些实施例中,在提取一个或者多个字段之后和在级联一个或者多个所提取的 字段之前,该方法包括:对位掩码和所提取的字段的一个字节应用逻辑AND运算,其中位掩 码由通用哈希命令指定。
[0016] 在一些实施例中,在使用位矢量之前,该方法包括:使用分组的PktID对本地表进 行编索引,其中该表存储用于每个已知协议层组合的位矢量。
[0017] 在一些实施例中,在接收分组之前,该方法包括经由软件对一个或者多个通用哈 希命令中的每个通用哈希命令的字段进行编程。
[0018] 在一些实施例中,在接收分组之前,该方法包括:允许协议的通用格式的软件定义 的映射;以及在网络交换机的存储器中存储软件定义的映射。
[0019] 在又一方面中,提供一种网络交换机。网络交换机包括:输入端口和输出端口,用 于接收和发送分组。网络交换机也包括:存储器,用于存储协议的通用格式的由软件定义的 映射的集合、用于存储用于提取字段的通用哈希命令的集合、和用于存储位矢量表。网络交 换机也包括:解析器引擎,用于对分组执行头部通式化过程,以根据软件定义的映射中特定 于对应协议的一个软件定义的映射来通式化分组的每个协议头部,和用于从经通式化的协 议头部选择内容以应用于哈希函数。可以对协议的不同变体、对不同协议或者二者使用头 部通式化过程。
[0020] 在一些实施例中,在分组由解析器引擎处理之后,分组包括规范化的协议层。规范 化的协议层中的每个规范化的协议层是根据用于对应协议的对应通用格式被扩展的协议 层。
[0021] 在一些实施例中,解析器引擎还将来自通用哈希命令的集合之一的至少一个通用 哈希命令应用于经通式化的协议层中的每个经通式化的协议层,以从该经通式化的协议层 提取字段。在一些实施例中,通用哈希命令的集合之一是特定于对应协议的。在一些实施 例中,通用哈希命令中的每个通用哈希命令的字段是软件定义的。
[0022] 在一些实施例中,至少一个哈希命令指定位掩码和提取的字段的将位掩码应用于 的字节位置。在一些实施例中,解析器引擎还对位掩码和所提取的字段的字节位置应用逻 辑AND运算。在一些实施例中,来自该逻辑AND运算的结果被与来自其它AND运算的其它 结果级联以形成哈希输入层。在一些实施例中,解析器引擎访问本地表以从中检索位矢量, 用以应用于哈希输入层以形成用于哈希函数的哈希输入。
[0023] 在又一方面中,提供一种解析器引擎。解析器引擎包括:电路,配置为:标识分组 的协议层;基于协议层中的每个协议层的标识将该协议层扩展成通用格式;以及从经扩展 的协议层选择内容用以应用于哈希函数。
[0024] 在一些实施例中,分组的协议层中的每个协议层基于唯一的层类型编号来标识。 在一些实施例中,通用格式定义协议层能够具有的所有字段的超集。
[0025] 在一些实施例中,电路也被配置为将来自通用哈希命令的集合的至少一个通用哈 希命令应用于经扩展的协议层,以从经扩展的协议层提取字段。在一些实施例中,通用哈希 命令中的每个通用哈希命令的字段是fieldOffset、fieldLen、hashMask和hashMaskMSB; fieldOffset指定将被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定应当从 该指定的偏移提取的字节的数目,hashMask是位掩码,并且hashMaskMSB指示所述位掩码 是否将被应用于所提取的字段的最高有效字节或者最低有效字节。在一些实施例中,通用 哈希命令中的每个通用哈希命令的字段是软件定义的。
[0026] 在一些实施例中,电路也被配置:对位掩码和所提取的字段的一个字节应用逻辑 AND运算,其中位掩码由至少一个哈希命令指定;至少基于逻辑AND运算的结果形成哈希输 入层;以及检索位矢量,位矢量指示经扩展的协议层中的哪些哈希输入层将被用来形成向 哈希函数的哈希输入。
【附图说明】
[0027] 根据如附图中所示的本发明的示例实施例的以下更具体描述,前文将是清楚的, 在附图中,相似标号贯穿不同视图指代相同部分。附图未必按比例、代之以着重于图示本发 明的实施例。
[0028] 图1图示根据本发明的一些实施例的将传入分组的层进行头部扩展成通用格式 的图。
[0029] 图2A-2B图示根据本发明的一些实施例的协议头部的示例通式化。
[0030] 图3A-3C图示根据本发明的一些实施例的协议头部的另一示例通式化。
[0031] 图4A-4C图示根据本发明的一些实施例的协议头部的另一示例通式化。
[0032] 图5图示根据本发明的一些实施例的从经扩展的层的提取数据的框图。
[0033] 图6A-6B图示根据本发明的一
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1