用于适应网络协议更新的系统和方法与流程

文档序号:12481930阅读:323来源:国知局
用于适应网络协议更新的系统和方法与流程

本申请是于2014年5月9日提交的美国专利申请第14/273,953号的继续申请,其公开因此而通过引用合并于此。

技术领域

本发明涉及用于方便地更新网络协议的系统和方法。



背景技术:

大多数的联网专用集成电路(ASIC)实施用于预定义的网络协议的小型的并且固定的一组分组(packet)报头编辑能力。这样的用于特定网络协议的报头编辑能力的示例包括通用路由封装(GRE)隧道封装和解封装、虚拟局域网/多协议标签交换(VLAN/MPLS)标记推入/弹出(tag push/pop)等等。新的网络协议要么要求ASIC的重新制版(respin)要么要求ASIC的完全重新设计,其既昂贵又耗时。例如,在网络中重新设计和替换ASIC可能花费若干年并且耗费数百万美元。



技术实现要素:

提供了一种用于方便地更新网络协议的系统和方法。可适应未来网络协议的ASIC包括协议独立分组编辑器(PIPE),其可以被编程为支持当前网络协议和可能的未来网络协议的分组报头编辑要求。

本技术的一个方面提供了一种方法,包括:接收分组;利用一个或多个处理器对分组进行分类,所述分类包括确定所述分组将被更新至的新的协议;利用一个或多个处理器删除所述分组的现有报头;利用一个或多个处理器,基于所述分类将新的报头插入所述分组中;以及利用一个或多个处理器,基于所述分类来修改所述新的报头。根据一些示例,确定所述分组将被更新至的新的协议包括识别到分组编辑程序的指针。删除现有分组报头可以包括删除现有报头的所选择的不被新的协议使用的部分。另外,插入新的分组报头可以包括插入基于新的协议的新的分组报头的部分和从先前的分组报头剩余的部分。可以通过基于所述新的报头的网络来发送包括所述新的报头的分组。

本公开的另一方面提供一种系统,包括至少一个存储器和与所述至少一个存储器通信的至少一个处理器。所述至少一个处理器被配置为:接收分组;对分组进行分类,所述分类包括确定所述分组将被更新至的新的协议;删除所述分组的现有报头;基于所述分类将新的报头插入所述分组中;以及基于所述分类修改所述新的报头。

所述至少一个存储器可以包括至少一个分组编辑程序,每个分组编辑程序包括到它的编辑指令的指针以及到静态数据、共享数据、和动态数据的集合的指针。至少一个存储器还可以包括可被编辑指令访问的元数据和寄存器数据。另外,所述至少一个存储器和所述至少一个处理器可以驻留在专用集成电路(ASIC)上。

本公开的又一方面提供了一种非瞬时性计算机可读介质,其存储可被一个或多个处理器执行的用于执行方法的指令,所述方法包括:接收分组;对分组进行分类,所述分类包括确定所述分组将被更新至的新的协议;删除所述分组的现有报头;基于所述分类将新的报头插入所述分组中;以及基于所述分类修改所述新的报头。

附图说明

图1是根据本公开的一方面的系统示图。

图2是根据本公开的各方面的另一系统示图。

图3A-图3B示出根据本公开的各方面的示例指令格式。

图4是根据本公开的各方面的另一系统示图。

图5A-图5F示出根据本公开的各方面的示例指令。

图6A-图6F示出根据本公开的各方面的示例指令。

图7是根据本公开的各方面的另一系统示图。

图8是根据本公开的各方面的示例方法的流程图。

具体实施方式

本公开提供用于便利地更新网络协议的系统和方法。当网络协议被更新时,新的专用集成电路(ASIC)被设计以适应未来网络协议,而不是重新设计和替换ASIC。ASIC包括协议独立分组编辑器(PIPE),其可以被编程以支持当前网络协议和可能的未来网络协议的分组报头编辑要求。

根据一个实施例,ASIC包括运行编辑程序以对分组报头进行操作的中央编辑单元(CEU)。中央编辑单元是三个区别的编辑单元——删除单元、插入单元、和修改单元——的处理管道(processing pipeline)。每个单元对从先前单元修改的分组进行操作。这个CEU管道利用在硅中的高效硬件实施使得能够在高的带宽和分组速率进行灵活分组报头编辑。

删除单元使得能够从分组中移除任意的协议报头。插入单元使得能够向分组中插入任意协议报头。修改单元使得能够灵活地重写(要么覆写,要么读取-修改-写入)报头字段。

由CEU运行的分组编辑程序包括编辑指令(删除、插入、和字段修改)的集合和编辑数据(配置、元的、共享的、和动态的)的集合。对于不同的分组报头编辑能力,诸如封装、解封装、加密、解密等等,可以存在一个或多个不同的编辑程序。逻辑单元解析并分类传入的分组,以确定到程序指令和相关联的数据集合的指针。

编辑指令在长度方面可以是,例如,32字节或者64字节。编辑指令能够被不同的编辑程序共享以用于不同的网络操作。每个编辑程序可以包括到三个数据集合的指针,所述三个数据集合为:静态数据;共享数据(例如,在不同的分组编辑程序当中共享的安全流状态的[flowID,pkt_cnt,加密密钥]);和动态数据(例如,对于程序的专用数据)。此外,存在对于编辑指令可用的两个全局数据的集合:元数据和常规数据。

图1示出根据本公开的各方面的ASIC 100。ASIC 100被适配为接收分组,诸如分组150,并且根据更新的网络协议来更新所述分组。根据一些示例,更新的网络协议可以是当前没有研发的未来网络协议。在这一点上,每当协议被更新时,ASIC和通过网络发送的分组可以被高效地更新,而不是替换网络中的每个ASIC。

ASIC 100可以是在网络中互连的许多ASIC中的任何一个。根据另一示例,ASIC可以被指定用于协议更新。虽然ASIC 100被描述为具有特定的组件,但是应该理解,诸如通常存在于ASIC中的组件的其它组件可以被包括。另外,虽然所述组件被示出为驻留在ASIC 100之内,但是应该理解,所述组件可以驻留在与ASIC通信的网络中的其它地方。

ASIC 100包括用户逻辑110和分组编辑器120。分组编辑器120还包括至少一个编辑程序130和中央编辑单元140,所述至少一个编辑程序130包括编辑指令132和编辑数据134。

用户逻辑110解析在ASIC中接收的分组,并且对所述分组进行分类。例如,用户逻辑110可以确定许多编辑程序中的哪一个应该对分组150进行操作。不同的编辑程序可以被创建以更新不同类型的分组。例如,第一编辑程序可以被用来将分组从第一协议更新到新的协议,而第二编辑程序被用来将分组从第二协议更新到所述新的协议。根据另一示例,第三编辑程序可以用来更新封装的分组,而第三编辑程序被用来更新解封装的分组。

每个编辑程序包括编辑数据和编辑指令。例如,编辑程序130包括编辑指令132和编辑数据134。下面针对图4来描述所述编辑程序的进一步细节。

中央编辑单元140是根据由用户逻辑110识别的编辑程序来更新分组150的处理管道。因此,ASIC 100能够通过网络发送更新的分组150'。

图2示出中央编辑单元140的进一步细节。如图所示,中央编辑单元140包括删除单元210、插入单元220、和修改单元230。这些单元210、220、230中的每一个根据用于特定编辑程序的指令集合(诸如指令132)对传入的分组150进行操作。如下面针对图4所讨论的,指令132可以包括单独的用于每个单元210、220、230的指令集合。插入单元220在分组150已经被删除单元210修改之后对该分组进行操作。类似地,修改单元230在该分组已经被插入单元220修改之后对该分组进行操作。每个单元可以在它的操作之后并且在将该分组传递到下一单元之前重新排列(realign)用于该分组的字节流。这个中央编辑单元管道使得能够在高的带宽和分组速率进行灵活分组报头编辑。而且,所述管道为在硅中的高效硬件实施作了准备。

删除单元210使得能够从分组移除任意协议报头。例如,对于包括多个报头(诸如隧道网络中的内层IP报头和外层IP报头)的分组,删除单元210可以移除所有分组报头或者被选择的分组报头。根据另一示例,删除单元210可以删除分组的特殊字段,同时保留与更新的网络协议相关的其它字段。

插入单元220使得能够将任意协议报头插入分组。例如,插入单元220可以生成与更新的网络协议有关的一组新的报头字段并且将这些生成的字段添加到分组150。在只有特定字段被删除单元210删除的示例中,插入单元220可以确定剩余的字段不需要被重新生成,并且取而代之地,仅仅生成所需要的字段。在其它示例中,插入单元220可以整体地生成报头。

修改单元230使能对报头字段的灵活重写,诸如覆写或者读取-修改-写入。例如,修改单元230可以用使得分组能够被通过更新的网络适当地发送的信息来填充分组报头字段。

如以上结合图1所讨论的,每个分组编辑程序包括编辑指令和编辑数据集合。例如,程序可以具有到它的编辑指令的16-比特指针。根据一些示例,编辑指令能够被不同的编辑程序共享。例如,根据第一网络协议的封装和根据第二网络协议的封装可以利用相同的编辑指令。

图3A和图3B示出编辑指令的示例格式。在图3A的示例中,指令是32B。字节0-7专用于删除,字节8-15专用于插入,而字节16-31专用于修改。在图3B的示例中,指令是64B。这里,类似于32B格式,字节0-7专用于删除。然而,与32B格式相比,在64B格式中,字节8-31专用于插入,并且字节32-63专用于修改。

图4提供编辑程序430的更详细的例示。编辑程序430包括编辑指令440和编辑数据450。

编辑数据450包括静态数据452、共享数据454、和动态数据456。例如,每个编辑程序可以包括到这些数据集合的指针,所述数据集合可以被存储在与ASIC通信的存储器中。根据一个示例,静态数据452和共享数据454可以各自为32B,并且动态数据456可以是专用于特定编辑程序的32B-64B的数据。根据一个示例,能够通过利用从被选择的n元组报头字段生成的散列来从一组共享/动态数据集合中选择共享/动态数据集合,来支持多路径负载均衡。

虽然未示出,但是额外的数据(诸如,元数据和寄存器数据)可用于编辑指令。例如,32B的元数据可以是可用的,其中第一8x2B半字(halfword)是元数据,诸如pkt_length、ip_pkt_id、flow_hash、slice_ID等等。第二8x2B半字是从分组报头收集的2B报头字段,例如,IP_PROTO、TTL、TOS等等。例如,通过用户逻辑的解析,分组格式被识别并且8x2B偏移被指定以选择期望的报头字段。作为另一示例,利用8x8B寄存器,64B的寄存器数据对于编辑指令可以是可用的。在这个示例中,寄存器0被硬编码为全零;寄存器1被可选地加载64比特分组计数;寄存器2被可选地加载64比特时戳;而寄存器3-7被软件配置为具有静态数据。

编辑指令440包括删除指令442、插入指令444、和修改指令446。特定插入指令444的示例被示出,诸如<INS NOP>和<INS MOV>,并且在图5A-5F中被进一步详细描述。特定修改指令446的示例,诸如<MOD NOP>和<MODWRITE META>,也被示出,并且在图6A-6F中被进一步详细描述。

删除指令442在长度上可以是,例如,8B,其中每个比特代表128B分组报头的2B半字。当比特被设置时,相应的2B半字从分组报头被删除。64比特的零是有效的无操作(NOP)删除指令。

插入指令444可以由例如图2的插入单元220执行。根据一个示例,插入单元220维护在零处开始的活动报头指针(例如,以2B半字为单位)。在下面针对图5A进一步详细描述的MOV指令将报头指针向前移动。插入指令在当前活动报头指针处插入指定的数据,并且将所述报头指针向前移动所插入的半字的数量。所有的插入指令444可以是,例如,8比特宽。

图5A-5F示出示例插入指令444、包括移动以及对特定数据集合的操作。无操作插入指令没有被示出。例如,8比特的零是NOP,指示插入指令的结束。

图5A示出示例INS MOV指令。这个指令将当前插入指针提前指定的计数(cnt)。例如,如图所示,比特0-5包括计数,而比特7-8被设置为0。

图5B示出示例INS STATIC指令。这个指令插入来自静态数据集合(例如,图4的静态数据452)的指定的(cnt)半字。如果h=0,则数据从低16B开始。如果h=1,则数据从高16B开始。

图5C示出示例INS SHARED指令。这个指令可以以与INS STATIC指令对静态数据集合操作的方式相同的方式对共享数据集合(例如,图4的共享数据454)进行操作。类似地,图5D示出示例INS DYNAMIC L指令,其也以相同的方式对动态数据(诸如图4的动态数据456)的第一32B进行操作。另外,图5E示出示例INS DYNAMIC H指令,其也以相同的方式对动态数据的第二32B进行操作。

图5F示出示例INS REG指令,其插入来自选择的全局寄存器数据的cnt个半字。

修改指令446通常可以对半字进行操作,在一些指令中可选的比特或字节被选择。根据一些示例,两个修改指令可以对相同的半字进行操作,每一个修改指令对不同的字节进行操作。MOD NOP指示无操作修改指令,并且可以由16比特的0来表示。这指示修改指令的结束。

图6A示出示例MOD WRITE META指令。根据这个指令,写操作根据指定的op_code,利用来自元数据集合的所选择的(sel[3:0])2B字段在偏移(以半字为单位)处执行。所支持的重写元数据的4个半字节的写op_code的示例包括:1.ABCD>ABCD;2.ABCD>ABXX;3.ABCD>XXCD;4.ABCD>XXAB;5.ABCD>CDXX;6.ABCD>XCDX;7.ABCD>XXBC。在这些示例中,"X"指示半字节不被改变。例如,在IPv4报头和IPv6报头之间复制DSCP/ECN时,示例6和7可以是有用的。

图6B示出示例MOD_CHKSUM指令。这个指令(在报头的第一64B之内)在hdr_offset处开始针对hdr_len半字计算1的补码校验和(如在IPv4报头中那样),并且在相对于hdr_offset字段的指定的csum_offset位置处写入所计算的校验和字段。所述校验和字段本身不被包括在校验和累加中。

图6C示出示例MOD_ALU指令,其对于报头偏移处的(由字节使能"ben"指定的)字节/半字执行由op_code指定的操作。支持的op_code的示例包括:0-设置为零;1-设置为1;2-加1;3-加1但是在8hF或者16hFF处停止;4-减1;5-减1但是在零处停止。

图6D示出示例MOD_CKSUM_INC指令,其利用在imm_data中指定的递增值(incremental value)执行csum_offset处的校验和字段的递增校验和更新。

图6E示出示例MOD_WRITE_IMM指令,其利用16比特立即数据(immediate data)imm_data在偏移处覆写报头字段。nibble_en的每个比特使得半字中的一个半字节能够被覆写。

图6F示出示例MOD_WRITE_META_IMM指令,其利用在imm_data和来自元数据的所选择的(sel[3:0])2B字段之间的(由op_code指定的)操作的结果在偏移处(以半字为单位)进行写入。所支持的op_code的示例包括:0-加;1-比特宽或(Bitwide OR);2-比特宽与(Bitwide AND)。

虽然已经说明了许多示例指令,但是应该理解,这些示例不是穷尽的,并且额外的指令可以用来更新分组报头。而且,应该理解,可以修改这些示例并且同时仍然实现期望的效果。

图7示出如这里描述的可以被实施来更新分组报头的示例计算设备。所述计算设备可以是ASIC或者其它设备,或者彼此通信的多个计算设备或组件,包括处理器730和存储器720。计算设备700还可以包括用于从其它计算设备接收数据分组或者其它信息的一个或多个输入端口750。类似地,计算设备700可以具有用于,例如,在分组报头已经根据新的网络协议被更新之后发送分组的一个或多个输出端口760。

存储器720存储可被处理器730访问的信息,包括可以被处理器730执行或者另外使用的指令728和数据722。存储器720可以是能够存储可被处理器访问的信息的任何类型,包括计算机可读介质或者其它存储可以在电子设备的帮助下被读取的数据的介质,诸如,硬驱、存储卡、ROM、RAM、DVD、或者其它光盘,以及其它能够写入和只读存储器。根据一个示例,回头参考图4,编辑数据450和编辑指令440可以共享单一逻辑SRAM,从而能够在编辑数据450和编辑指令440之间动态分配SRAM资源。系统和方法可以包括前述各项的不同组合,由此指令和数据的不同部分被存储在不同类型的介质上。

指令728可以是将被处理器730直接(诸如机器代码)或者间接(诸如脚本)执行的任何指令集。例如,所述指令可以作为计算机代码被存储在计算机可读介质上。在那个方面,术语“指令”和“程序”可以在本文中被可互换地使用。所述指令可以以用于处理器的直接处理的目标代码格式来存储,或者以包括按照需求解释的或者事先编译的独立源代码模块的脚本或者集合(collection)的任何其它计算机语言来存储。当接收到分组时,处理器730可以执行指令728以便,例如,对分组进行分类,删除分组报头,基于分类插入新的分组报头,和基于分类修改分组报头。

数据722可以被处理器730根据指令728来检索、存储、或者修改。例如,虽然系统和方法不被任何特定的数据结构限制,但是数据可以被存储在计算机寄存器中,作为具有多个不同的字段和记录的表格被存储在关系数据库中、存储在XML文档中、或者存储在扁平文件中。数据也可以以任何计算机可读格式被格式化。所述数据可以包括足以识别相关信息的任何信息,诸如数字、描述性文本、私有代码、对存储在相同存储器的其它区域或者不同存储器(包括其它网络位置)中的数据的引用、或者被函数用来计算相关数据的信息。

处理器730可以是任何传统处理器,诸如在商业上可用的路由器中的处理器。或者,所述处理器可以是诸如ASIC的专用控制器或者其它基于硬件的处理器。所述处理器和存储器可以是实际上包括可以或者可以不储藏在相同物理外壳内的多个处理器和存储器。例如,存储器可以是硬驱或位于数据中心的服务器群中的其它存储介质。因此,对处理器、存储器、或者计算机的引用将被理解为包括对可以或者可以不并行操作的处理器、存储器、或者计算机的集合的引用。

计算设备700可以,例如,通过网络与其它计算设备通信。例如,设备可以经由有线连接来通信或者无线地通信。网络和插入其间的节点可以包括各种配置和协议,包括互联网、万维网、内连网、虚拟专用网、广域网、局域网、使用一个或多个公司私有的通信协议的专用网、以太网、WiFi(诸如802.11、802.11b、g、n,或者其它这样的标准)、和HTTP、以及前述各项的各种组合。能够向和从其它计算机发送数据的任何设备,比如调制解调器(例如,拨号、线缆或光纤)以及无线接口,可以便利这样的通信。

图8示出更新分组以符合新的网络协议的示例方法。例如,这个方法可以由计算设备(诸如上述的计算设备)执行。应该理解,这个方法中涉及的操作不需要按照所描述的精确次序来执行。相反,各种操作可以按照不同的次序或者同时被处理,并且操作可以被添加或者省略。

在块810,分组被接收。在块820,接收到的分组被分类。例如,分类可以包括确定接收到的分组的格式以及确定接收到的分组应该根据其来更新的协议。根据一个示例,分类包括确定接收到的分组是否包括到特定分组编辑程序和相关联的数据集合的指针。

在块830中,分组报头被删除。例如,所述报头可以被整体删除,或者基于新的协议报头格式被部分地删除。

在块840中,新的协议报头基于所述分类被插入。例如,所述新的报头可以基于所述删除而被全部地或者部分地插入。可以使用,例如,以上结合图4以及图5A-图5F描述的操作中的任何一个来插入报头。

在块850中,报头可以被修改。例如,新的报头字段可以被写入和/或现有的报头字段可以被覆写或者修改。报头字段的修改可以使用,例如,以上结合图4和图6A-图6F描述的指令中的任何一个来执行。一旦分组报头被修改,更新的分组就可以,例如,通过计算设备的输出端口被输出。

上述的系统、方法、和示例的优点在于它们为使现有网络适应还没有被定义的新的协议作准备。替代在每次发生协议更新时重新设计和替换许多ASIC,可以修改分组报头以供现有的ASIC使用。在这一点上,大量的时间、劳动、和成本被节省。

由于以上讨论的特征的这些以及其它变化和组合能够在不脱离由权利要求定义的主题的情况下被使用,前述对实施例的描述应该以例示的方式来理解,而不是以限制由权利要求定义的主题的方式来理解。作为示例,先前的操作不必按照上述的精确次序地执行。相反,各种步骤可以以不同的次序或者同时被处理。还能够省略步骤,除非另有说明。此外,对这里描述的示例以及被措辞为“诸如”、“包括”等等的短语的提供不应该被解释为将权利要求的主题限制在特定的示例;相反,所述示例意图示出许多可能的实施例中的仅仅一个。另外,不同的附图中的相同的参考标号能够标识相同或者相似的元素。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1