用于修改从源传输到目的地的数据的系统和方法

文档序号:7605962阅读:210来源:国知局
专利名称:用于修改从源传输到目的地的数据的系统和方法
技术领域
本发明涉及计算机联网,更具体而言,本发明涉及修改从源传输到目的地的数据。
背景技术
计算机网络是用于在诸如计算机之类节点之间传输数据的互连网络链路和网段在地理上的分布式集合。可获得很多类型的网段,其类型范围从局域网(LAN)到广域网(WAN)。诸如个人计算机或工作站之类的终端节点通常通过根据预定协议交换数据的离散帧或分组经由网络通信。在此上下文中,协议包含定义节点如何彼此交互的一组规则。
计算机网络可以通过可被耦合到网络的具有多个端口的中间节点(例如交换机或路由器)被进一步互连。例如,交换机可以用于提供“交换”功能,所述“交换”功能用于在多个LAN之间高速地传输信息。交换功能包括在源端口处接收发起于源节点的数据分组,并将该分组传输到至少一个目的地端口,以向目的地节点执行转发。
路由器可以用于互连执行不同LAN标准的多个LAN,和/或提供比交换机更高级的功能。如果与源和目的地节点相关联的LAN标准不同(例如以太网和令牌环),路由器则还可以改变分组的格式,从而使分组可以被目的地节点所接收。路由器通常工作在网络使用的通信协议栈的网络层上,例如传输控制协议/因特网协议(TCP/IP)通信体系结构的网络层。
路由器还执行与修改从源传输到目的地的数据相关联的各种功能,例如处理被路由器接收到的分组。这些功能可以包括在分组中插入、删除或替换信息。例如,某些路由器支持多协议标签交换(MPLS)协议。MPLS协议提供了一种分配标签的方法,该方法指导路由器向何处发送分组,并指示分组应该接收的优先级。根据MPLS,分组在标签交换路径(LSP)上传输。LSP是一种单工路径,它通常包括一连串标签,这些标签代表沿着从源标签边缘路由器(LER)到目的地LER的路径上的每个节点。LER是一种工作在接入网络和MPLS网络的边缘处的设备(例如路由器),并且它通常涉及流量进入或离开MPLS网络时LSP的分配和去除。在典型配置中,LSP是通过级联多个标签以形成路径而生成的。然后LSP在源LER处被插入到分组的头部中。当分组到达目的地LER时,从分组的头部中删除(去除)标签,并进一步处理分组,例如分组可以被转发。
LER通常采用处理器(CPU)来插入和删除被包含在经由MPLS网络运送的分组中的LSP。通常,处理器还执行LER的其他任务,例如实现各种路由协议和一般地管理LER。但是,采用处理器来插入和删除分组中的LSP的做法可能无法有效地利用处理器的资源。插入和删除LSP通常要消耗时间和存储器资源,并且可能浪费可以被更好地用于执行其他任务(例如执行路由协议)的有价值的处理器资源。
例如,在分组中生成和插入LSP通常涉及(i)通过将来自多个存储器位置的多条数据移动到单个存储器区域中来生成LSP,以及(ii)将LSP插入分组头部,这还可能涉及先将分组头部分成引导部分和后续(lagging)部分,然后再将LSP插入到这两个部分之间。显然,这个过程涉及大量计算资源和存储器带宽。依赖于被处理的流量的量,可能将过多的处理器资源量专门用于修改数据流量(例如处理LSP),这会影响处理器执行其他任务的能力,所述其他任务例如是处理其他分组、管理路由表和响应于网络中的其他路由器。这继而会导致路由器的分组处理性能(即分组吞吐量)下降。此外,在某些情况下,这些任务可能对时间的要求很严格,从而需要处理器在一定的时间窗内完成任务。这种任务的一个示例是为了使路由器被网络所承认,在一定的期限内发送“保活(keep-alive)”分组。如果处理器将其资源的相当一部分专用于修改从源传输到目的地的数据,它则可能没有足够的剩余资源来执行这些对时间要求严格的任务。

发明内容
本发明涉及用于在网络中的中间节点上修改从源传输到目的地的数据的有效技术。根据该技术,命令在中间节点处生成,其中每个命令与修改数据的一个操作相关联。每个命令被放置在用于保存命令的数据结构中,并且当数据被节点从源传输往目的地时才执行与这些命令相关联的操作。当数据被传输时,与命令相关联的操作被执行,并且按照命令的指导修改数据。
在所示实施例中,源是上下文存储器,目的地是输出缓冲器,数据结构是包含一个或多个条目的命令表,并且数据是包含在上下文存储器中的分组头部(即上下文数据)。处理器执行指令以执行修改上下文数据的操作,例如向上下文数据插入数据和从上下文数据删除数据。指令生成与操作相关联的命令,这些命令然后被放置到包含在命令表中的条目中。在完成上下文数据的处理之后,处理器执行发送命令,并指导数据移动器将上下文数据从上下文存储器传输到输出缓冲器。当上下文数据被传输时,数据移动器检查命令表中的条目,并按照包含在条目中的命令的指导修改所述数据。
有利的是,本发明的技术对现有技术的改进在于,它能够在无需大量使用处理器资源的情况下修改从源传输到目的地的数据。此外,根据本发明的技术,处理器仅仅向“助手”(数据移动器)发布修改数据的命令。然后当数据被从源传输往目的地时,命令被执行,而无需利用处理器资源。


通过结合附图参考以下描述,可以更好地理解本发明的以上和其他优点,附图中的相似标号指示相同或功能上类似的元件,在附图中图1是可以有利地用于本发明的数据网络的示意框图;图2是可以有利地用于本发明的中间节点的高级示意框图;图3是可以有利地用于本发明的被组织成处理器的脉动阵列(systolicarray)的转发引擎的示意框图;图4是可以有利地用于本发明的处理器集群的示意框图;
图5是可以有利地用于本发明的命令表条目的示意框图;图6是可以有利地用于本发明的位掩码(bit mask)的示意框图;图7是可以有利地用于本发明的输出缓冲器逻辑的部分示意框图;图8是可以有利地用于本发明的示例性指令的列表;图9A-9C是可以有利地用于实现本发明的步骤序列的流程图;以及图10是可以有利地用于配置状态机以根据本发明操作的状态机的图。
具体实施例方式
图1是可以有利地用于本发明的计算机网络100的示意框图。计算机网络100包括被连接到诸如终端节点110和中间节点200之类的多个节点的通信链路和网段的集合。网络链路和网段可以包括通过中间节点200互连的局域网(LAN)120、广域网(WAN)(例如因特网)170以及WAN链路130,从而构成计算机节点的互联网络。这些互联网的节点通过根据预定的协议集合交换数据分组来进行通信,所述协议例如是传输控制协议/因特网协议(TCP/IP)和互联网分组交换(IPX)协议。
图2是中间节点200的高级示意框图,中间节点200例如是路由器。可以有利地用于本发明的路由器的一个示例是可从加州San Jose的思科系统公司获得的Cisco 10000 Series Internet路由器。节点200包括多个互连的组件,包括转发引擎300、各种存储器、排队逻辑210和网络接口卡(线路卡)240。这些组件的操作优选地被时钟模块270同步控制,但是转发引擎300的阵列式元件可以被可操作地配置为异步工作。在所示实施例中,时钟模块270以例如200兆赫的频率(即5纳秒的时钟周期)生成时钟信号,并经由时钟线路将这些时钟信号全局地分发到中间节点的组件。
存储器一般包含可由转发引擎300寻址的随机访问存储器(RAM)存储位置,以及用于存储被组件和软件程序访问的数据结构的逻辑,所述软件程序包括用于实现本发明的多个方面的程序。通常部分位于存储器中并由转发引擎300执行的操作系统通过调用支持在节点200上执行的软件进程的网络操作及其他步骤来从功能上组织节点200。本领域技术人员将会意识到,包括各种计算机可读介质在内的其他存储器装置可以被用于存储和执行与这里描述的本发明的技术和机制相关的程序指令。
缓冲器和排队单元(BQU)210被连接到用于存储分组的分组存储器220和用于在被组织成队列(未示出)的数据结构(例如链表)上存储分组的网络和链路层头部的队列存储器230。BQU 210还包括用于经由具有仲裁器255的选择器电路250将转发引擎300与多个线路卡240互连的接口电路。线路卡240例如可以包括异步传输模式(ATM)、快速以太网(FE)和千兆位以太网(GE)端口,这些端口中的每一个都包括可以具有信号、电子和机械特性的传统接口电路,以及以接口连接物理介质和运行在此介质上的协议所需的互换电路。
路由处理器260执行用于直接与转发引擎300通信的传统路由协议。路由协议一般包括中间节点之间的拓扑信息交换,以例如基于目的地IP地址来确定通过网络的优选路径。这些协议提供处理器260创建和维护转发表所使用的信息。转发表被加载到外部存储器340中,以作为引擎300用于执行例如第2层(L2)和第3层(L3)转发操作所使用的转发信息库(FIB)表。例如,当根据IP路由处理头部时,引擎300通过使用头部中的IP地址索引FIB来确定将分组发往何处。转发操作的执行导致头部中的目的地媒体访问控制(MAC)地址被转发引擎300所重写,以标识分组的输出端口。
转发引擎300可以包含对称的多处理器系统,该系统具有多个处理元件或处理器。图3是包含多个处理器(TMC)450的转发引擎300的部分示意框图,所述多个处理器(TMC)450被组织成多维的脉动阵列。每个处理器450优选地是流水线型处理器,其包括多个算术逻辑单元(ALU)、具有多个存储由ALU处理的中间结果信息的通用寄存器的寄存器文件,以及其他组件。处理器450可以以阵列形式被排列成多个行和多个列。在所示实施例中,处理器以8×2阵列配置被排列成八(8)行和两(2)列,该8×2阵列配置被嵌入在输入缓冲器360和输出缓冲器700之间。但是,应该注意,诸如4×4、8×2或8×1阵列配置之类的其他配置也可能被有利地用于本发明。如这里所示,支持多个执行线程的单个处理器可以利用本发明。
转发引擎300经由存储器控制器375被耦合到多个外部存储器资源340。外部存储器340被优选地组织成一个或多个存储器条(bank),并使用快速周期随机访问存储器(FCRAM)设备来实现,但是诸如减小延迟动态随机访问存储器(RLDRAM)设备或静态随机访问存储器(SRAM)设备之类的其他设备也可以被使用。外部存储器340是外部的“列”存储器,它被配置为存储被组织为一系列数据结构的非暂态数据(例如转发表、队列),以用于处理暂态数据(例如分组)。每个存储器控制器375都包含使得能够访问包含在相关外部存储器340中的存储器位置的逻辑。如这里所使用的,存储器子系统包含外部存储器340及其相关的存储器控制器375。一列的处理器450被耦合到一个特定的外部存储器子系统。例如,列1中的处理器(即行0到行N中的TMC1)被耦合到包含外部存储器控制器B 375b和外部存储器B 340b的外部存储器子系统。
一行中的处理器450被组织成包含上下文存储器430的集群400,上下文存储器430被配置为保存由处理器450处理的上下文信息(例如分组头部)。图4是集群400的示意框图。集群中的每个处理器450都被耦合到指令存储器(IRAM)420、控制寄存器单元410、上下文存储器430和存储器管理单元(MMU)460,其中指令存储器420被配置用于存储被处理器450所执行的指令。控制寄存器单元410包括各种被分别用于存储和用于控制TMC 450的操作的通用和控制寄存器。MMU 460被配置为除了其他功能之外还使处理器450能够通过外部存储器控制器375来访问外部存储器340。
上下文存储器430是被配置为保存暂态(上下文)数据(例如分组头部)的RAM。本地存储器434是被配置用于保存各种可被集群400中的处理器450访问的数据的内部RAM。应该注意,可以被特定一列中的处理器450访问的诸如内部或外部列存储器(例如存储器340)之类的其他形式的存储器也可以被用于本发明。
每个集群400中的处理器450对通过输入缓冲器360加载到上下文存储器430中的暂态数据执行操作,但是每列中的处理器以不同的相位并行地对暂态数据执行几乎相同的操作。暂态数据通过由耦合到处理器450的数据移动器电路470提供的数据路径通道440在引擎300的输入和输出缓冲器之间传递。流过集群400的上下文数据与其他数据和用于引用存储在例如外部存储器340中的数据和各种数据结构(例如表)的指针一道被存储在上下文存储器430中,以待处理器450使用。
数据移动器470包括使数据能够根据本发明的技术被从上下文存储器430传输到输出缓冲器700的逻辑。为此,数据移动器470除其他逻辑之外还包括实现命令表500、状态机474和接口逻辑472的逻辑。接口逻辑472包括利用接口将数据移动器470连接到输出缓冲器700的逻辑,该逻辑例如使得能够在数据移动器470和输出缓冲器700之间传递16字节的数据单元和相关的2字节位掩码。状态机474包含被配置用于实现传统状态机的组合和顺序逻辑,所述状态机除了其他功能之外还能够使数据从上下文存储器430被传输到输出缓冲器700。
在所示实施例中,从上下文存储器430传输到输出缓冲器700的数据被处理器450产生的命令所修改。这些命令包含诸如插入数据操作和删除数据操作之类的多种操作,所述插入数据操作和删除数据操作分别实现向所传输数据的数据插入,和从所传输数据的数据删除。由处理器450生成的命令被保存在命令表500中,该命令表500例如是被配置为包含了一个或多个条目的表的数据结构。应该注意,可以使用其他类型的数据结构来实现命令表500,例如阵列、链表、变量、寄存器或寄存器文件。每个条目保存一条命令,该命令与对从上下文存储器430传输到输出缓冲器700的数据执行的操作(例如插入数据操作或删除数据操作)相关联。
图5是可以有利地用于本发明的命令表条目510的示意框图。条目510包含操作码(OP_CODE)字段520、上下文存储器(源)地址(C_ADDR)字段540、长度(LEN)字段560和外部地址(X_ADDR)字段580。OP_CODE字段520保存了与对被传输的数据执行的操作(例如插入数据、删除数据)相关联的值。每个操作还与开始地址、长度和(可选地)外部地址相关联。C_ADDR字段540保存了一个地址,该地址代表要对其执行操作520的上下文存储器中的数据的开始地址。LEN字段560保存的值例如代表由操作码520操作的数据字节的量。X_ADDR字段580保存了一个地址,该地址与例如插入到被传输数据中的外部数据相关联。
如上所述,在数据移动器470和输出缓冲器700之间一次例如传输16字节的数据。伴随该数据还有一个2字节的位掩码,该位掩码与16字节的数据相关联,并指出在数据中哪些字节是“有效的”(被使能),哪些字节是“无效的”(未被使能)。如这里所使用的,如果一个字节包含有效的数据值,则该字节是“有效的”,如果该字节不包含有效的数据值(即“未被定义的”数据值),则该字节是“无效的”。应该注意,虽然在所示实施例中位掩码代表数据中的有效和无效字节,但是例如代表被传输的数据中的有效或无效位或字的位掩码也可以利用本发明的技术。
图6是可以有利地用于本发明的位掩码600的示意框图。例如,位掩码600包含16个一位的“字节使能”(BE)字段620a-p,其中每个字段与数据单元中的一个字节相关联,并包含了指示相关的数据类型是有效还是无效的值。例如,BE0 620a对应于数据单元中的位置0中的字节(字节0),并指示字节0包含了有效的字节值,还是无效的字节值。例如,若将字段620配置为包含0,则指示相应字节无效。类似地,若将字段620配置为包含1,则指示相应字节有效。
输出缓冲器700包含接口逻辑710,该接口逻辑710被配置用于获取从数据移动器470传输的数据和字节使能信息。图7是接口逻辑710的部分示意框图,其包含数据操纵(steering)逻辑720、工作寄存器740和输出队列780。数据操纵逻辑720包含如下逻辑该逻辑被配置用于将从数据移动器470获取的有效数据字节“操纵”(传输)到工作寄存器740,该工作寄存器740例如是移位寄存器。输出队列780例如是包含一个或多个条目782的先进先出(FIFO)队列,其中每个条目保存从工作寄存器740传输的有效数据。从数据移动器的接口逻辑472获取的数据和字节使能信息被传输到数据操纵逻辑720,该数据操纵逻辑720通过将有效字节移位到寄存器740中,来操纵包含在数据中的有效数据字节以使其进入工作寄存器740。然后,数据操纵逻辑引导工作寄存器将有效数据传输到位于输出FIFO队列780尾部的条目782中。
本发明涉及用于修改从中间节点(例如路由器200)的源(例如上下文存储器430)传输到目的地(例如输出缓冲器700)的数据的有效技术。根据该技术,包含用于修改数据的操作的命令例如由处理器450生成,并被放置在数据结构(例如命令表500)中。当数据从源被传输往目的地时,与命令相关的操作修改数据,如命令所指出的。
在所示实施例中,处理器450通过执行指令以生成指出被执行的修改的命令,来对从上下文存储器430传输到输出缓冲器700的数据进行修改(例如插入数据或删除数据)。图8是可以被用于向所传输的数据插入数据和从所传输的数据删除数据的一系列示例性指令800。指令810是上下文存储器插入数据指令(xcmi),该指令使“插入数据”被插入到从上下文存储器430传输往输出缓冲器700的数据中。指令810指示一个操作(即xcmi),该操作指示“插入数据”和各种变量/参数,包括将插入的数据量(即2字节)、数据被插入到的上下文存储器地址(即110),和插入数据的地址(即500)。注意,插入数据的地址可以是例如上下文存储器430、本地存储器434或外部存储器340中的地址。指令820是上下文存储器删除指令(xcmd),该指令使数据被从自上下文存储器430传输往输出缓冲器700的数据中删除。指令820指示一个操作(即xcmd),该操作指示“删除数据”、被删除的数据量(即2字节)和被删除数据所在的上下文存储器地址(即118)。指令830是上下文存储器发送指令(xmt),该指令致使数据被从上下文存储器430传输往输出缓冲器700。指令830指示了一个操作(即xmt),该操作指示发送数据、开始的上下文存储器地址(即100)和例如以字节表示的被传输的数据量(即64)。
图9A-9C示出了可以被用于根据本发明的技术来处理指令800的一系列步骤的流程图。还参考图8,在步骤910处,处理器450获取第一指令810,并判断该指令是否是上下文存储器插入指令(步骤920)。如果不是,序列则前进至步骤930。如上所述,由于该指令是上下文存储器插入指令,因此序列前进至步骤925,在这里,处理器450生成如指令810所指出的向分组插入数据的命令,并将该命令放置在命令表条目510中。具体而言,处理器450通过生成代表指令810所指出的操作码、上下文存储器地址、长度和插入数据地址的值来生成命令。然后,处理器450将这些值分别放置在命令表500的条目510的OP_CODE 520、C_ADDR 540、LEN 560和X_ADDR 580字段中。
然后序列前进至步骤942,在这里,获取下一指令,然后返回到步骤920。假设指令820是下一指令。在步骤920处,执行检查以判断指令820是否是上下文存储器插入指令。由于指令820不是上下文存储器插入指令,因此序列前进至步骤930,在这里,执行检查以判断指令820是否是上下文存储器删除指令。
如上所述,由于指令820是上下文存储器删除指令,因此序列前进至步骤935,在这里,处理器450生成如指令820所指出的那样用于从分组中删除数据的命令,并将该命令放置在命令表条目510中。具体而言,处理器450通过生成代表由指令820指出的操作码、上下文存储器地址和长度的值来生成命令。然后,处理器450将这些值分别放置在命令表500的条目510的OP_CODE 520、C_ADDR 540和LEN 560字段中。
然后序列前进至步骤942,在这里,获取下一指令,然后再次返回到步骤920。假设指令830是下一指令。如上所述,在步骤920处,执行检查以判断指令830是否是上下文存储器插入指令。由于指令830不是上下文存储器插入指令,因此序列前进至步骤930,在这里,执行检查以判断指令830是否是上下文存储器删除指令。由于指令830不是上下文存储器删除指令,因此序列前进至步骤940,在这里执行检查以判断指令830是否是上下文存储器发送指令。如上所述,由于指令830是上下文存储器发送指令,因此序列前进至步骤945(图9B),在这里,处理器450指导数据移动器470将数据从上下文存储器430传输到输出缓冲器700。具体而言,处理器450指导数据移动器470将来自数据移动器470的开始于上下文存储器位置100的64字节的数据传输到输出缓冲器700。在步骤947处,数据移动器470从开始于地址100的上下文存储器中获取16字节的数据。
在步骤950处,数据移动器470搜索命令表500,以在命令表中找到与已获取的数据所关联的一系列地址相匹配的条目510。如果由C_ADDR字段540和LEN字段560的内容组合所指定的一系列地址与已获取的数据所关联的一系列地址相重叠,则条目510与已获取的数据所关联的一系列地址相匹配。例如,与已获取的数据相关联的一系列地址包括范围100-115中的上下文存储器地址。由指令810指定的一系列地址与该范围重叠;因此,与指令810相关联的条目510是匹配条目。在步骤955处,如果未找到匹配条目,数据移动器470则假设已获取的数据不被修改,并且序列前进至步骤960,在这里,生成如上所述的用于已获取的数据的位掩码,并且将位掩码和数据传输到输出缓冲器。否则,如果找到了匹配条目,则序列前进至步骤965。假设找到了与指令810相关联的匹配条目510。
在步骤965处,匹配条目的OP_CODE字段520的内容被检查以判断它是否代表“删除数据”操作。如果是,则序列前进至步骤970;否则,序列前进至步骤975(图9C)。如上所述,匹配条目510中的OP_CODE字段520的内容指示插入数据操作;因此,序例前进至步骤975。
在步骤975处,数据移动器470生成用于已获取的上下文存储器数据中的“引导数据”的位掩码600,并将已获取的数据和位掩码600传输到输出缓冲器700。如这里所使用的,引导数据指的是在已获取的上下文存储器数据中位于被插入的数据之前的数据。例如,如上所述,由已获取的上下文存储器数据所代表的地址范围从100到115,并且匹配条目的C_ADDR值是110。因此,引导数据包括从上下文存储器地址位置100到109中获取的有效数据字节。数据移动器470通过以下方式来生成用于引导数据的位掩码将掩码600中代表字节位置100到109的那些位(即BE0 620a到BE9 620j)标记为指示数据有效,并将掩码600中的剩余位(即BE10 620k到BE15 620p)标记为指示剩余数据无效(由于它与引导数据相关)。如上所述,数据移动器470然后将已获取的数据与位掩码600一道传输到输出缓冲器逻辑700,输出缓冲器700处理数据和位掩码。
在步骤977处,数据移动器470获取“插入数据”,即被插入到从上下文存储器430传输到输出缓冲器700的数据流中的数据。在步骤980处,数据移动器470生成用于已获取的插入数据的位掩码600,并将已获取的插入数据和位掩码600传输到输出缓冲器700。具体而言,数据移动器470获取匹配条目510的LEN字段560和X_ADDR字段580的内容。然后,数据移动器获取从匹配条目的X_ADDR字段580所指定的地址开始的例如16字节的插入数据,或者由LEN字段560的内容所代表的字节数目的插入数据,以两者中较小的字节数目为准。然后,如上所述,数据移动器470生成用于已获取的插入数据的位掩码600。插入数据和位掩码600然后被传输到输出缓冲器700,在输出缓冲器700中它们被进一步处理。
例如在与指令810相关联的匹配条目510中,LEN字段560包含指示两个字节的插入数据的值。数据移动器470从由X_ADDR字段580指定的位置(即500)获取两字节的插入数据。然后通过以下方式来生成位掩码600将对应于例如字节0和1的字节使能位(BE0 620a和BE1 620b)标记为指示它们是有效的,将剩余位(即BE2 620c到BE15 620p)标记为指示它们是无效的。然后插入数据被放置在与所生成的位掩码600一道传输到输出缓冲器700的16字节数据单元中的字节位置0和1。
在步骤982处,数据移动器470判断由匹配条目的LEN字段560指出的所有插入数据是否都已被传输。如果不是,序列则前进至步骤984,在这里,获取下一插入数据。步骤980到984被重复,直到由匹配条目的X_ADDR字段580和LEN字段560的内容组合所代表的所有插入数据都已被传输到输出缓冲器700为止。
然后序列前进至步骤985,在这里,数据移动器470以与上述相同的方式生成代表后续数据的位掩码600,并将已获取的上下文存储器数据和生成的位掩码600传输到输出缓冲器700。如这里所使用的,后续数据是已获取的上下文存储器数据中未在步骤975处作为引导数据被传输的有效数据。例如,如上所述,引导数据包含已获取的上下文存储器数据中的字节0到9。在已获取的上下文存储器数据中的剩余有效数据(即字节10到15)构成后续数据。因此,数据移动器470通过以下方式生成用于代表后续数据的位掩码600在位掩码中指示字节0到9包含无效数据,而字节10到15包含有效数据。已生成的位掩码600和已获取的上下文存储器数据然后被传输到输出缓冲器700。
然后,序列前进至步骤990(图9B),在这里数据移动器470判断由发送指令830指定的数据量是否已被发送。如果是,序列则前进至步骤994;否则,序列前进至步骤992,在这里,获取下一上下文存储器数据,然后返回到步骤950。由于发送指令830指定64字节而只有18字节已被传输(即10字节的引导数据、2字节的插入数据和6字节的后续数据),因此数据移动器470获取接下来的16字节的上下文存储器数据,并前进至步骤950。
如上所述,在步骤950处,数据移动器470搜索命令表,并定位到包含由指令820指出的信息的匹配条目500(步骤955)。然后,序列前进至步骤965,在这里,数据移动器470检查匹配条目的OP_CODE字段520以判断它是否指定了删除操作。如上所述,OP_CODE字段520包含指示删除操作的值,因此序列前进至步骤970,在这里,数据移动器470以与上述相同的方式生成代表被删除数据的位掩码600。然后,数据移动器470将位掩码600和已获取的数据传输到输出缓冲器。具体而言,数据移动器470检查匹配条目500的C_ADDR字段540和LEN字段560的内容,并且确定已获取的上下文存储器数据中被删除的字节。然后,如上所述,数据移动器470生成位掩码600,该位掩码600将与被删除字节相对应的位标记为无效。
例如,假设已获取的上下文存储器数据与上下文存储器地址位置116到131相关联,并且在命令表500中找到的匹配条目510包含由指令820指定的信息。数据移动器470生成位掩码600,其中位BE2 620c和位BE3 620d被标记为指示由这些位所代表的数据是无效的。数据移动器470将剩余位(即BE0 620a、BE1 620b和BE4 620e到BE15 620p)标记为指示由这些位代表的数据是有效的。然后,所生成的位掩码600和已获取的上下文存储器数据被传输到输出缓冲器700,在输出缓冲器700中它们被进一步处理。
步骤950到992重复,直到在上下文存储器发送指令中指定的所有数据都已被传输为止。然后,序列前进至步骤994,在这里,命令表中的条目510被清除,然后到达步骤995,在这里序列结束。
图10是可以被用于配置状态机474以根据本发明的技术进行操作的状态图1000。状态机474开始于“空闲”状态1010。处理器450执行上下文存储器发送指令,并指导数据移动器470从上下文存储器向输出缓冲器传输数据,如上所述。状态机474从“空闲”状态1010前进至“获取上下文数据和搜索命令表”状态1020。在状态1020处,状态机474指导数据移动器470从上下文存储器430获取上下文存储器数据(例如16数据字节)。然后,状态机474搜索命令表500,并判断是否已获取的上下文存储器数据中的任意一个的地址落入由命令表500的匹配条目510中的C_ADDR 540和LEN 560字段的内容组合所代表的一系列地址内。如果不是,状态机474则前进至“生成位掩码”状态1030,在这里,它生成用于已获取数据的位掩码600,如上所述。然后,状态机474将数据和生成的位掩码传输到输出缓冲器,并且返回到“获取上下文数据和搜索命令表”状态1020。
如果已获取的上下文存储器数据中的任意一个的地址落入由匹配条目510中的C_ADDR 540和LEN 560字段的内容组合所代表的一系列地址内,状态机474则前进至“检查匹配条目的OP_CODE”状态1040,在这里,数据移动器470检查匹配条目510的OP_CODE字段520。如果OP_CODE字段520包含指示“删除数据”操作的值,状态机474则前进至“生成删除数据位掩码”状态1050,在这里,生成代表被删除的数据的位掩码600,如上所述。然后,数据和生成的位掩码被传输到输出缓冲器700,状态机474返回到“获取上下文数据和搜索命令表”状态1020。
如果OP_CODE字段520包含指示“插入数据”操作的值,状态机474则前进至“生成引导数据位掩码”状态1060,在这里,生成引导数据位掩码600,如上所述。然后,数据和生成的位掩码被传输到输出缓冲器700,并且状态机474前进至“获取插入数据,生成插入数据使能位掩码,并将数据和位掩码传输到输出缓冲器”状态1070,在这里,获取插入数据,生成插入位掩码600,并且将已获取的插入数据和相关位掩码600传输到输出缓冲器700,如上所述。状态机474返回该状态1070,直到所有插入数据(由匹配条目510中的LEN字段560所指定的)都已被传输为止。然后,状态机474前进至“生成后续数据位掩码”状态1080,在这里,生成用于“后续数据”的位掩码600,如上所述。生成的位掩码600和后续数据随后被传输到输出缓冲器700,并且状态机474返回到“获取上下文数据和搜索命令表”状态1020。在由发送指令指定的所有数据都已被传输之后,状态机474返回到“空闲”状态1010。
虽然本发明的上述实施例将本发明描述为使用各种硬件设备来实现,但是不希望这是对本发明的限制。相反,本发明可以全部或部分以软件形式来实现,所述软件被存储为包含用于在处理器中执行的计算机可执行指令的计算机可读介质,例如动态随机访问存储器(DRAM)或盘。例如,命令表可以作为软件数据结构来实现,例如表、链表、数组、变量、寄存器或寄存器文件。此外,在命令表中放置命令的过程,以及由包括状态机的数据移动器所执行的功能都可以作为软件例程或函数来实现。
还应注意,虽然本发明的上述实施例采用本发明的技术来修改从上下文存储器传输到输出缓冲器的数据,但是在本发明的其他实施例中,本发明的技术被用于变形(修改)从源传输到目的地的数据。例如,在本发明的一个实施例中,本发明的技术被用于修改从诸如网络上的节点之类的源获取,并被传输到诸如连接到网络的存储设备之类的目的地的数据(例如插入数据、删除数据)。此外,应该理解,本发明的技术可以被用于以除了向所传输的数据插入数据和从所传输的数据删除数据之外的方式来变形(修改)从源传输到目的地的数据。例如,本发明的技术可以被应用于加密从源传输到目的地的数据。
上述描述已针对本发明的特定实施例。将会意识到,可以对所描述的实施例执行其他变化和修改,以达到其优点中的一些或全部。因此,所附权利要求书将覆盖落入本发明真实精神和范围内的全部此类变化和修改。
权利要求
1.一种用于修改从源传输到目的地的数据的方法,该方法包括以下步骤生成一个或多个命令,其中每个命令与一个用于修改所述数据的操作相关联;将所述命令放置在数据结构中;以及当所述数据被从所述源传输往所述目的地时,执行与包含在所述数据结构中的命令相关联的所述操作,以按照所述命令的指导修改所述数据。
2.如权利要求1所述的方法,还包括以下步骤从所述源获取所述数据。
3.如权利要求2所述的方法,还包括以下步骤生成与已获取的数据相关联的位掩码;以及将所述位掩码和所述已获取的数据传输到所述目的地。
4.如权利要求2所述的方法,其中所述数据结构包括一个或多个条目,其中每个条目与一个命令相关联,并且所述条目包含与一系列地址和一个操作码相关联的信息,所述一系列地址和一个操作码与所述命令相关联。
5.如权利要求4所述的方法,还包括以下步骤搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目所述的一系列地址与所述已获取的数据所关联的一系列地址相匹配;如果找到匹配条目,则判断包含在所述匹配条目中的操作码是否指示删除数据操作;以及如果是指示删除数据操作,则生成代表在所述已获取的数据中被删除的数据的删除位掩码,并将所述删除位掩码和所述已获取的数据传输到所述目的地。
6.如权利要求4所述的方法,还包括以下步骤搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目所述的一系列地址与所述已获取的数据所关联的一系列地址相匹配;如果找到匹配条目,则判断包含在所述匹配条目中的操作码是否指示插入数据操作;并且如果是指示插入数据操作,则a)生成代表包含在所述已获取的数据中的引导数据的引导位掩码,b)将所述引导位掩码和所述已获取的数据传输到所述目的地,c)获取插入数据,d)生成代表所述插入数据的插入数据位掩码,e)将所述插入数据位掩码和所述插入数据传输到所述目的地,f)生成代表包含在所述已获取的数据中的后续数据的后续位掩码,并且g)将所述后续位掩码和所述已获取的数据传输到所述目的地。
7.如权利要求4所述的方法,其中每个条目包含与所述命令相关联的长度和源地址。
8.如权利要求7所述的方法,还包括以下步骤搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目所述的一系列地址是由包含在与所述已获取的数据所关联的一系列地址相匹配的条目中的长度和源地址的组合所指定的。
9.如权利要求1所述的方法,其中所述数据结构是表。
10.如权利要求1所述的方法,还包括以下步骤清空所述数据结构。
11.如权利要求1所述的方法,其中所述源是上下文存储器。
12.如权利要求1所述的方法,其中所述目的地是输出缓冲器。
13.一种系统,包括被配置用于保存数据的上下文存储器;被配置用于保存一个或多个命令的数据结构;处理器,该处理器被配置用于生成用于修改所述数据的一个或多个命令,并将所述命令放置在所述数据结构中;输出缓冲器;以及耦合到所述上下文存储器和所述输出缓冲器的数据移动器,该数据移动器被配置用于从所述上下文存储器获取所述数据,按照包含在所述数据结构中的命令的指导修改所述数据,并将修改后的数据传输到所述输出缓冲器。
14.如权利要求13所述的系统,其中所述数据结构是表。
15.如权利要求13所述的系统,其中所述数据结构包含一个或多个条目,其中每个条目与一个命令相关联,并且所述条目包含与一系列地址和一个操作码相关联的信息,所述一系列地址和一个操作码与所述命令相关联。
16.如权利要求15所述的系统,其中所述数据移动器被配置用于搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目所述的一系列地址与所述已获取的数据所关联的一系列地址相匹配,并且如果找到匹配条目,则判断包含在所述匹配条目中的操作码是否指示删除数据操作,如果是指示删除数据操作,则生成代表在所述已获取的数据中被删除的数据的删除位掩码。
17.如权利要求15所述的系统,其中所述数据移动器被配置用于搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目所述的一系列地址与所述已获取的数据所关联的一系列地址相匹配,并且如果找到匹配条目,则判断包含在所述匹配条目中的操作码是否指示插入数据操作,如果是指示插入数据操作,则(i)生成代表包含在所述已获取的数据中的引导数据的引导位掩码,(ii)将所述引导位掩码和所述已获取的数据传输到所述目的地,(iii)获取插入数据,(iv)生成代表所述插入数据的插入数据位掩码,(v)将所述插入数据位掩码和所述插入数据传输到所述目的地,(vi)生成代表包含在所述已获取的数据中的后续数据的后续位掩码,并且(vii)将所述后续位掩码和所述已获取的数据传输到所述目的地。
18.如权利要求15所述的系统,其中所述数据结构中的每个条目都包含与所述命令相关联的长度和源地址。
19.如权利要求18所述的系统,其中所述数据移动器被配置用于搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目所述的一系列地址是由包含在与所述已获取的数据所关联的一系列地址相匹配的条目中的长度和源地址的组合所指定的。
20.如权利要求13所述的系统,其中所述数据移动器被配置用于生成与所述数据相关联的位掩码,并将所述位掩码传输到所述输出缓冲器。
21.如权利要求20所述的系统,其中所述输出缓冲器包含数据操纵逻辑,该数据操纵逻辑被配置用于使用所述位掩码来标识包含在所述被传输的数据中的有效数据;耦合到所述数据操纵逻辑的工作寄存器,该工作寄存器被配置用于保存从所述数据操纵逻辑传输的有效数据;以及耦合到所述工作寄存器的输出队列,该输出队列被配置用于保存从所述工作寄存器传输的有效数据。
22.一种用于修改从源传输到目的地的数据的装置,所述装置包括用于生成一个或多个命令的装置,其中每个命令与一个用于修改所述数据的操作相关联;用于将所述命令放置在数据结构中的装置;以及用于当所述数据被从所述源传输往所述目的地时,执行与包含在所述数据结构中的命令相关联的所述操作,以按照所述命令的指导修改所述数据的装置。
23.如权利要求22所述的装置,包括用于从所述源获取所述数据的装置。
24.如权利要求23所述的装置,包括用于生成与已获取的数据相关联的位掩码的装置;以及将所述位掩码和所述已获取的数据传输到所述目的地。
25.如权利要求23所述的装置,其中所述数据结构包括一个或多个条目,其中每个条目与一个命令相关联,并且所述条目包含与一系列地址和一个操作码相关联的信息,所述一系列地址和一个操作码与所述命令相关联。
26.如权利要求25所述的装置,包括用于搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目的装置所述的一系列地址与所述已获取的数据所关联的一系列地址相匹配;用于判断包含在所述匹配条目中的操作码是否指示删除数据操作的装置;以及用于如果所述匹配条目中的操作码指示删除数据操作,则生成代表在所述已获取的数据中被删除的数据的删除位掩码,并将所述删除位掩码和所述已获取的数据传输到所述目的地的装置。
27.如权利要求25所述的装置,包括用于搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目的装置所述的一系列地址与所述已获取的数据所关联的一系列地址相匹配;用于判断包含在匹配条目中的操作码是否指示插入数据操作的装置;以及用于如果所述操作码指示插入数据操作,则(i)生成代表包含在所述已获取的数据中的引导数据的引导位掩码,(ii)将所述引导位掩码和所述已获取的数据传输到所述目的地,(iii)获取插入数据,(iv)生成代表所述插入数据的插入数据位掩码,(v)将所述插入数据位掩码和所述插入数据传输到所述目的地,(vi)生成代表包含在所述已获取的数据中的后续数据的后续位掩码,并且(vii)将所述后续位掩码和所述已获取的数据传输到所述目的地的装置。
28.一种包含计算机可执行指令的计算机可读介质,所述指令用于在处理器中执行以下操作生成一个或多个命令,其中每个命令与一个用于修改数据的操作相关联;将所述命令放置在数据结构中;以及当所述数据被从所述源传输往所述目的地时,执行与包含在所述数据结构中的命令相关联的所述操作,以按照所述命令的指导修改所述数据。
29.如权利要求28所述的计算机可读介质,包括用于在处理器中执行以下操作的计算机可执行指令从所述源获取所述数据。
30.如权利要求29所述的计算机可读介质,包括用于在处理器中执行以下操作的计算机可执行指令生成与已获取的数据相关联的位掩码;以及将所述位掩码和所述已获取的数据传输到所述目的地。
31.如权利要求29所述的计算机可读介质,其中所述数据结构包括一个或多个条目,其中每个条目与一个命令相关联,并且所述条目包含与一系列地址和一个操作码相关联的信息,所述一系列地址和一个操作码与所述命令相关联。
32.如权利要求31所述的计算机可读介质,包括用于在处理器中执行以下操作的计算机可执行指令搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目所述的一系列地址与所述已获取的数据所关联的一系列地址相匹配;如果找到匹配条目,则判断包含在所述匹配条目中的操作码是否指示删除数据操作;以及如果是指示删除数据操作,则生成代表在所述已获取的数据中被删除的数据的删除位掩码,并将所述删除位掩码和所述已获取的数据传输到所述目的地。
33.如权利要求31所述的计算机可读介质,包括用于在处理器中执行以下操作的计算机可执行指令搜索所述数据结构以找到包含与如下的一系列地址相关联的信息的条目所述的一系列地址与所述已获取的数据所关联的一系列地址相匹配;如果找到匹配条目,则判断包含在所述匹配条目中的操作码是否指示插入数据操作;并且如果是指示插入数据操作,则a)生成代表包含在所述已获取的数据中的引导数据的引导位掩码,b)将所述引导位掩码和所述已获取的数据传输到所述目的地,c)获取插入数据,d)生成代表所述插入数据的插入数据位掩码,e)将所述插入数据位掩码和所述插入数据传输到所述目的地,f)生成代表包含在所述已获取的数据中的后续数据的后续位掩码,并且g)所述后续位掩码和所述已获取的数据传输到所述目的地。
全文摘要
一种技术在网络中的中间节点上修改从源传输到目的地的数据。根据该技术,节点的处理器发布用于修改数据的命令。这些命令被保存在数据结构中,并且当数据被从源传输往目的地时才执行这些命令。当数据被传输时,包含在数据结构中的命令被执行,并且按照命令的指导修改数据。
文档编号H04L29/06GK1781293SQ200480011280
公开日2006年5月31日 申请日期2004年6月23日 优先权日2003年6月25日
发明者约翰·W·马歇尔, 威纳亚克·K·帕若姆施瓦若, 杰弗里·B·斯科特 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1