允许报头层的扩展和塌缩以实现灵活修改的方法及其装置的制造方法_4

文档序号:9527505阅读:来源:国知局
r>[0138] 在步骤1420,针对在连续有效字节之后的每个无效字段的每个字节,将位矢量字 段的位标注为不可用。每个无效字段是在传入的分组的协议报头中不存在的字段。
[0139] 在步骤1425,针对在连续有效字节之后的每个有效字段的每个字节,将位矢量字 段的位标注为可用。每个有效字段是在传入的分组的协议报头中存在的字段。
[0140] 图15图示根据本发明的一些实施例的网络交换机的又一方法1500。在步骤1505, 在网络交换机的传入端口处接收分组。
[0141] 在步骤1510,根据用于对应协议的通用格式使分组的协议报头一般化。通常,重写 引擎被配置为使协议报头一般化。
[0142] 在步骤1515,在独立于协议报头的大小的数据结构中表示经一般化的协议报头。 在一些实施例中,数据结构包括连续_字节字段和位矢量字段,其中连续_字节字段表示从 协议报头的开始起的连续有效字节的数目,而位矢量字段是协议报头的每字节的位表示。
[0143] 这一数据结构有助于使用于各种协议层的表示一般化并且去除对协议报头层的 大小的依赖性。位矢量的紧凑表示有利地减少硬件成本。
[0144] 用于报头修改的通用命令
[0145] 修改使用向扩展的协议报头应用的通用命令的集合。所有命令因此通用,因为这 些命令独立于传入报头(例如大小和协议)。
[0146] 表1列举重写引擎用于协议报头修改的通用命令。通用命令的这一小集合被用于 报头修改,无论传入的分组报头(例如大小、协议)如何,因为在修改之前分组报头被一般 化。通常,通用命令表现为软件编程的微代码。
[0147]表1
[0148]
[0149]
[0150] DELETE命令通过使在当前经一般化的协议层内的从Start定位开始的Size个字 节无效来删除这些字节。标注表示那些字节的位矢量的位为〇。
[0151] COPY命令从Source的SourceOffset向当前经一般化的报头层的 DestinationOffset复制Size个字节的数据。COPY命令根据数据的有效性在Source中是 否有效来使得对应目的地字节有效或者无效。将表示无效字节的位矢量的位标注为0。将表 示有效字节的位矢量的位标注为1。COPY命令也可以使用Bitmask用于位掩码操作。COPY 命令也可以使用copyConstantBitMask和copyConstantData。如果copyConstantBitMask 在位位置处包含" 1",则在对应定位处将来自copyConstantData中的对应定位的字节复制 到当前经一般化的报头层中。在一些实施例中,在表中存储常数数据。在一些实施例中,常 数数据是由软件定义的。
[0152] MOVE命令将当前经一般化的协议层内的Size个字节从StartOffset移动到 DestinationOffset。MOVE命令根据数据的有效性在Source中是否有效来使对应目的地字 节有效或者无效,并且使源字节无效。将表示无效字节的位矢量的位标注为0。将表示有效 字节的位矢量的位标注为1。
[0153] 通过使用至少一个计数器,针对执行的所有操作,对添加或者删除的字节的数目 进行计数。至少一个计数器是硬件计数器。备选地,至少一个计数器是软件计数器。至少一 个计数器出于统计目的和出于其它原因而保持跟踪计数。在一些实施例中,重写引擎对两 个位矢量执行X0R操作一一原有的位矢量和修改的位矢量一一以向硬件告知多少位改变, 这用于考虑删除或者添加的字节的数目。
[0154] 图16图示根据本发明的一些实施例的重写引擎的另一方法1600。重写引擎是网 络交换机的部分并且在分组从网络交换机被发送出之前修改它们。在步骤1605,根据用于 分组的每个协议报头的通用格式使该协议报头一般化。通用格式包括协议的所有可能字 段。这样,无论协议报头对应于协议的哪个变体,字段中的每个字段都具有相同偏移。每个 经一般化的协议报头包括位矢量。位矢量包括针对经一般化的协议报头的每个字节的每字 节的位。位矢量包括对于无效字段而被标注为0的位和对于有效字段而被标注为1的位。 这里,无效字段是在接收的分组的协议报头中不存在的字段,而有效字段是在接收的分组 的协议报头中存在的字段。
[0155] 在步骤1610,使用来自在网络交换机的存储器中存储的通用命令集合的至少一个 命令以修改至少一个经一般化的协议报头。对至少一个经一般化的协议报头的修改是基于 网络交换机的传出端口的出口端口类型。对至少一个经一般化的协议报头的修改造成位矢 量被更新。
[0156] 由于不管传入的分组报头如何,通用命令集合都被用于报头修改,所以通用命令 集合可以被用来修改协议的第一变体的分组报头和修改协议的第二变体的分组报头。相似 地,通用命令集合可以被用来修改第一协议的分组报头和修改第二协议的分组报头。
[0157] 图17图示根据本发明的一些实施例的网络交换机的又一方法1700。在步骤1705, 在网络交换机的存储器中维护通用命令集合。
[0158] 在步骤1710,在网络交换机的传入端口处接收分组。
[0159] 在步骤1715,根据用于分组的每个协议报头的通用格式使该协议报头一般化。检 测从分组的协议报头的缺失字段。基于检测,通过包括缺失字段来将协议报头扩展成通用 格式。每个经一般化的协议报头包括位矢量,该位矢量具有对于无效字段被标注为〇的位 和对于有效字段被标注为1的位。这里,无效字段是在接收的分组的协议报头中不存在的 字段,而有效字段是在接收的分组的协议报头中存在的字段。
[0160] 在步骤1720,通过向经一般化的协议报头中的至少一个经一般化的协议报头应用 来自通用命令集合的至少一个命令,来修改经一般化的协议报头,由此更新位矢量。
[0161] 在步骤1725,基于更新的位矢量,形成新协议报头。
[0162] 在步骤1730,经由网络交换机的传出端口发射具有新协议报头的分组。在一些实 施例中,在发射具有新协议报头的分组之前,针对执行的所有操作,对添加或者删除的字节 的数目进行计数。
[0163] 使用位矢量来使经修改的协议报头塌缩
[0164] 重写引擎不仅使用用于每个协议报头的位矢量来允许修改基于通用格式的协议 报头的扩展,重写引擎也使用位矢量来允许将协议报头从通用格式塌缩成"规则"报头。通 常,在位矢量中的每个位表示经一般化的协议报头的字节。在位矢量中被标注为〇的位对 应于无效字节,而在位矢量中被标注为1的位对应于有效字节。重写引擎使用位矢量来去 除在已经对经一般化的协议报头操作所有命令之后的所有无效字节,以由此形成新协议报 头。重写引擎因此使用位矢量来允许分组的协议报头的扩展和塌缩,由此通过使用通用命 令集合而实现分组的灵活修改。
[0165] 例如回顾假设1,图9E的位矢量920表示在已经向图9B的经一般化的协议报头 905应用删除命令之后的图9D的修改的协议报头915。在这一假设1中,删除客户VLAN标 记,由此使客户VLAN标记的四个字节无效。这样,将位矢量920中的与客户VLAN标记对应 的位标注为0。在已经操作所有命令、即在假设1中的删除命令之后,重写引擎使用位矢量 920来去除所有无效字节,由此使位矢量920塌缩。基于塌缩的位矢量形成新协议报头。图 9F图示在去除所有无效字节之后的新协议报头925。经由传出以太网端口发送出具有新报 头925的在假设1中的分组。
[0166] 对于另一示例,回顾假设2,图10D的位矢量1015表示在已经向图10A的协议报头 1000应用删除命令之后的图10C的修改的协议报头1010。在这一假设2中,删除服务VLAN 标记和客户VLAN标记,由此使服务VLAN标记的四个字节和客户VLAN标记的四个字节无 效。这样,将位矢量1015中的与服务VLAN标记和客户VLAN标记对应的位标注为0。在已 经操作所有命令、即在假设2中的两个删除命令之后,重写引擎使用位矢量1015来去除所 有无效字节,由此使位矢量1015塌缩。基于塌缩的位矢量形成新协议报头。图10E图示在 去除所有无效字节之后的新协议报头1020。经由传出以太网端口发送出具有新报头1020 的在假设2中的分组。
[0167] 图18图示根据本发明的一些实施例的重写引擎的又一方法1800。重写引擎是网 络交换机的部分并且在分组从网络交换机被发送出之前修改它们。在步骤1805,针对每个 经一般化的协议报头维护位矢量。经一般化的协议报头是扩展成通用格式的分组的协议报 头。通用格式包括协议的所有可能字段。无论协议报头对应于协议的哪个变体,字段中的每 个字段都具有相同偏移。位矢量包括针对经一般化的协议报头的每个字节的每字节的位。
[0168] 在步骤1810,基于对至少一个经一般化的协议报头的修改来更新位矢量。该修改 使用来自在网络交换机的存储器中存储的通用命令集合的至少一个命令来修改至少一个 经一般化的协议报头。
[0169] 在步骤1815,使用经更新的位矢量来压缩至少一个经一般化的协议报头。在一些 实施例中,在步骤1815之前,对位矢量和更新的位矢量执行X0R操作以确定多少位改变,这 允许重写引擎考虑删除和添加的字节。
[0170] 图19图示根据本发明的一些实施例的网络交换机的又一方法1900。在步骤1905, 在网络交换机的传入端口处接收分组。
[0171] 在步骤1910,根据用于分组的每个协议报头的通用格式使该协议报头一般化。检 测从分组的协议报头的缺失字段。基于检测,通过包括缺失字段来将协议报头扩展成通用 格式。
[0172] 在步骤1915,针对每个经一般化的协议报头维护位矢量。位矢量包括对于无效字 段而标注为〇的位和对于有效字段而标注为1的位。
[0173] 在步骤1920,修改经一般化的协议报头中的至少一个经一般化的协议报头,由此 更新位矢量。该修改使用来自在网络交换机的存储器中存储的通用命令集合的至少一个命 令以修改至少一个经一般化的协议报头。对至少一个经一般化的协议报头的修改是基于网 络交换机的传出端口的出口端口类型。
[0174] 在步骤1925,通过移位经更新的位矢量来去除在经更新的位矢量中的标注为0的 每个位,由此使经更新的位矢量塌缩。
[0175] 在步骤1930,基于塌缩的位矢量形成紧凑协议报头。经由网络交换机的传出端口 发射至少具有紧凑协议报头的分组。在一些实施例中,在发射分组之前,对针对执行的所有 操作而添加或者删除的字节数目进行计数。
[0176] 指针结构
[0177] 指针结构可以被用来提取在用于经一般化的传入的分组内的不同协议层并且在 协议层的修改之后重建分组。指针结构包括N+1个层指针和分组的所有报头的总大小。通 常,指针结构初始地用如下数据来更新,该数据由解析器引擎提供以供重写引擎用来将分 组拆分成各个层并且随后智能地将它们拼接回到一起。在分组被拆分成各个层之后,重写 引擎使协议报头一般化、修改经一般化的协议报头并且通过去除所有无效字段来压缩经一 般化的协议报头。层指针在每个层被修改之后由重写引擎更新。这些更新的层指针被用来 在从网络交换机发送出分组之前将不同协议层拼接回到一起。
[0178] 图20图示根据本发明的一些实施例的层结构的示例图2000。假设传入的
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1