專利名稱:用于修改從源傳輸?shù)侥康牡氐臄?shù)據(jù)的系統(tǒng)和方法
技術領域:
本發(fā)明涉及計算機聯(lián)網,更具體而言,本發(fā)明涉及修改從源傳輸?shù)侥康牡氐臄?shù)據(jù)。
背景技術:
計算機網絡是用于在諸如計算機之類節(jié)點之間傳輸數(shù)據(jù)的互連網絡鏈路和網段在地理上的分布式集合??色@得很多類型的網段,其類型范圍從局域網(LAN)到廣域網(WAN)。諸如個人計算機或工作站之類的終端節(jié)點通常通過根據(jù)預定協(xié)議交換數(shù)據(jù)的離散幀或分組經由網絡通信。在此上下文中,協(xié)議包含定義節(jié)點如何彼此交互的一組規(guī)則。
計算機網絡可以通過可被耦合到網絡的具有多個端口的中間節(jié)點(例如交換機或路由器)被進一步互連。例如,交換機可以用于提供“交換”功能,所述“交換”功能用于在多個LAN之間高速地傳輸信息。交換功能包括在源端口處接收發(fā)起于源節(jié)點的數(shù)據(jù)分組,并將該分組傳輸?shù)街辽僖粋€目的地端口,以向目的地節(jié)點執(zhí)行轉發(fā)。
路由器可以用于互連執(zhí)行不同LAN標準的多個LAN,和/或提供比交換機更高級的功能。如果與源和目的地節(jié)點相關聯(lián)的LAN標準不同(例如以太網和令牌環(huán)),路由器則還可以改變分組的格式,從而使分組可以被目的地節(jié)點所接收。路由器通常工作在網絡使用的通信協(xié)議棧的網絡層上,例如傳輸控制協(xié)議/因特網協(xié)議(TCP/IP)通信體系結構的網絡層。
路由器還執(zhí)行與修改從源傳輸?shù)侥康牡氐臄?shù)據(jù)相關聯(lián)的各種功能,例如處理被路由器接收到的分組。這些功能可以包括在分組中插入、刪除或替換信息。例如,某些路由器支持多協(xié)議標簽交換(MPLS)協(xié)議。MPLS協(xié)議提供了一種分配標簽的方法,該方法指導路由器向何處發(fā)送分組,并指示分組應該接收的優(yōu)先級。根據(jù)MPLS,分組在標簽交換路徑(LSP)上傳輸。LSP是一種單工路徑,它通常包括一連串標簽,這些標簽代表沿著從源標簽邊緣路由器(LER)到目的地LER的路徑上的每個節(jié)點。LER是一種工作在接入網絡和MPLS網絡的邊緣處的設備(例如路由器),并且它通常涉及流量進入或離開MPLS網絡時LSP的分配和去除。在典型配置中,LSP是通過級聯(lián)多個標簽以形成路徑而生成的。然后LSP在源LER處被插入到分組的頭部中。當分組到達目的地LER時,從分組的頭部中刪除(去除)標簽,并進一步處理分組,例如分組可以被轉發(fā)。
LER通常采用處理器(CPU)來插入和刪除被包含在經由MPLS網絡運送的分組中的LSP。通常,處理器還執(zhí)行LER的其他任務,例如實現(xiàn)各種路由協(xié)議和一般地管理LER。但是,采用處理器來插入和刪除分組中的LSP的做法可能無法有效地利用處理器的資源。插入和刪除LSP通常要消耗時間和存儲器資源,并且可能浪費可以被更好地用于執(zhí)行其他任務(例如執(zhí)行路由協(xié)議)的有價值的處理器資源。
例如,在分組中生成和插入LSP通常涉及(i)通過將來自多個存儲器位置的多條數(shù)據(jù)移動到單個存儲器區(qū)域中來生成LSP,以及(ii)將LSP插入分組頭部,這還可能涉及先將分組頭部分成引導部分和后續(xù)(lagging)部分,然后再將LSP插入到這兩個部分之間。顯然,這個過程涉及大量計算資源和存儲器帶寬。依賴于被處理的流量的量,可能將過多的處理器資源量專門用于修改數(shù)據(jù)流量(例如處理LSP),這會影響處理器執(zhí)行其他任務的能力,所述其他任務例如是處理其他分組、管理路由表和響應于網絡中的其他路由器。這繼而會導致路由器的分組處理性能(即分組吞吐量)下降。此外,在某些情況下,這些任務可能對時間的要求很嚴格,從而需要處理器在一定的時間窗內完成任務。這種任務的一個示例是為了使路由器被網絡所承認,在一定的期限內發(fā)送“?;?keep-alive)”分組。如果處理器將其資源的相當一部分專用于修改從源傳輸?shù)侥康牡氐臄?shù)據(jù),它則可能沒有足夠的剩余資源來執(zhí)行這些對時間要求嚴格的任務。
發(fā)明內容
本發(fā)明涉及用于在網絡中的中間節(jié)點上修改從源傳輸?shù)侥康牡氐臄?shù)據(jù)的有效技術。根據(jù)該技術,命令在中間節(jié)點處生成,其中每個命令與修改數(shù)據(jù)的一個操作相關聯(lián)。每個命令被放置在用于保存命令的數(shù)據(jù)結構中,并且當數(shù)據(jù)被節(jié)點從源傳輸往目的地時才執(zhí)行與這些命令相關聯(lián)的操作。當數(shù)據(jù)被傳輸時,與命令相關聯(lián)的操作被執(zhí)行,并且按照命令的指導修改數(shù)據(jù)。
在所示實施例中,源是上下文存儲器,目的地是輸出緩沖器,數(shù)據(jù)結構是包含一個或多個條目的命令表,并且數(shù)據(jù)是包含在上下文存儲器中的分組頭部(即上下文數(shù)據(jù))。處理器執(zhí)行指令以執(zhí)行修改上下文數(shù)據(jù)的操作,例如向上下文數(shù)據(jù)插入數(shù)據(jù)和從上下文數(shù)據(jù)刪除數(shù)據(jù)。指令生成與操作相關聯(lián)的命令,這些命令然后被放置到包含在命令表中的條目中。在完成上下文數(shù)據(jù)的處理之后,處理器執(zhí)行發(fā)送命令,并指導數(shù)據(jù)移動器將上下文數(shù)據(jù)從上下文存儲器傳輸?shù)捷敵鼍彌_器。當上下文數(shù)據(jù)被傳輸時,數(shù)據(jù)移動器檢查命令表中的條目,并按照包含在條目中的命令的指導修改所述數(shù)據(jù)。
有利的是,本發(fā)明的技術對現(xiàn)有技術的改進在于,它能夠在無需大量使用處理器資源的情況下修改從源傳輸?shù)侥康牡氐臄?shù)據(jù)。此外,根據(jù)本發(fā)明的技術,處理器僅僅向“助手”(數(shù)據(jù)移動器)發(fā)布修改數(shù)據(jù)的命令。然后當數(shù)據(jù)被從源傳輸往目的地時,命令被執(zhí)行,而無需利用處理器資源。
通過結合附圖參考以下描述,可以更好地理解本發(fā)明的以上和其他優(yōu)點,附圖中的相似標號指示相同或功能上類似的元件,在附圖中圖1是可以有利地用于本發(fā)明的數(shù)據(jù)網絡的示意框圖;圖2是可以有利地用于本發(fā)明的中間節(jié)點的高級示意框圖;圖3是可以有利地用于本發(fā)明的被組織成處理器的脈動陣列(systolicarray)的轉發(fā)引擎的示意框圖;圖4是可以有利地用于本發(fā)明的處理器集群的示意框圖;
圖5是可以有利地用于本發(fā)明的命令表條目的示意框圖;圖6是可以有利地用于本發(fā)明的位掩碼(bit mask)的示意框圖;圖7是可以有利地用于本發(fā)明的輸出緩沖器邏輯的部分示意框圖;圖8是可以有利地用于本發(fā)明的示例性指令的列表;圖9A-9C是可以有利地用于實現(xiàn)本發(fā)明的步驟序列的流程圖;以及圖10是可以有利地用于配置狀態(tài)機以根據(jù)本發(fā)明操作的狀態(tài)機的圖。
具體實施例方式
圖1是可以有利地用于本發(fā)明的計算機網絡100的示意框圖。計算機網絡100包括被連接到諸如終端節(jié)點110和中間節(jié)點200之類的多個節(jié)點的通信鏈路和網段的集合。網絡鏈路和網段可以包括通過中間節(jié)點200互連的局域網(LAN)120、廣域網(WAN)(例如因特網)170以及WAN鏈路130,從而構成計算機節(jié)點的互聯(lián)網絡。這些互聯(lián)網的節(jié)點通過根據(jù)預定的協(xié)議集合交換數(shù)據(jù)分組來進行通信,所述協(xié)議例如是傳輸控制協(xié)議/因特網協(xié)議(TCP/IP)和互聯(lián)網分組交換(IPX)協(xié)議。
圖2是中間節(jié)點200的高級示意框圖,中間節(jié)點200例如是路由器??梢杂欣赜糜诒景l(fā)明的路由器的一個示例是可從加州San Jose的思科系統(tǒng)公司獲得的Cisco 10000 Series Internet路由器。節(jié)點200包括多個互連的組件,包括轉發(fā)引擎300、各種存儲器、排隊邏輯210和網絡接口卡(線路卡)240。這些組件的操作優(yōu)選地被時鐘模塊270同步控制,但是轉發(fā)引擎300的陣列式元件可以被可操作地配置為異步工作。在所示實施例中,時鐘模塊270以例如200兆赫的頻率(即5納秒的時鐘周期)生成時鐘信號,并經由時鐘線路將這些時鐘信號全局地分發(fā)到中間節(jié)點的組件。
存儲器一般包含可由轉發(fā)引擎300尋址的隨機訪問存儲器(RAM)存儲位置,以及用于存儲被組件和軟件程序訪問的數(shù)據(jù)結構的邏輯,所述軟件程序包括用于實現(xiàn)本發(fā)明的多個方面的程序。通常部分位于存儲器中并由轉發(fā)引擎300執(zhí)行的操作系統(tǒng)通過調用支持在節(jié)點200上執(zhí)行的軟件進程的網絡操作及其他步驟來從功能上組織節(jié)點200。本領域技術人員將會意識到,包括各種計算機可讀介質在內的其他存儲器裝置可以被用于存儲和執(zhí)行與這里描述的本發(fā)明的技術和機制相關的程序指令。
緩沖器和排隊單元(BQU)210被連接到用于存儲分組的分組存儲器220和用于在被組織成隊列(未示出)的數(shù)據(jù)結構(例如鏈表)上存儲分組的網絡和鏈路層頭部的隊列存儲器230。BQU 210還包括用于經由具有仲裁器255的選擇器電路250將轉發(fā)引擎300與多個線路卡240互連的接口電路。線路卡240例如可以包括異步傳輸模式(ATM)、快速以太網(FE)和千兆位以太網(GE)端口,這些端口中的每一個都包括可以具有信號、電子和機械特性的傳統(tǒng)接口電路,以及以接口連接物理介質和運行在此介質上的協(xié)議所需的互換電路。
路由處理器260執(zhí)行用于直接與轉發(fā)引擎300通信的傳統(tǒng)路由協(xié)議。路由協(xié)議一般包括中間節(jié)點之間的拓撲信息交換,以例如基于目的地IP地址來確定通過網絡的優(yōu)選路徑。這些協(xié)議提供處理器260創(chuàng)建和維護轉發(fā)表所使用的信息。轉發(fā)表被加載到外部存儲器340中,以作為引擎300用于執(zhí)行例如第2層(L2)和第3層(L3)轉發(fā)操作所使用的轉發(fā)信息庫(FIB)表。例如,當根據(jù)IP路由處理頭部時,引擎300通過使用頭部中的IP地址索引FIB來確定將分組發(fā)往何處。轉發(fā)操作的執(zhí)行導致頭部中的目的地媒體訪問控制(MAC)地址被轉發(fā)引擎300所重寫,以標識分組的輸出端口。
轉發(fā)引擎300可以包含對稱的多處理器系統(tǒng),該系統(tǒng)具有多個處理元件或處理器。圖3是包含多個處理器(TMC)450的轉發(fā)引擎300的部分示意框圖,所述多個處理器(TMC)450被組織成多維的脈動陣列。每個處理器450優(yōu)選地是流水線型處理器,其包括多個算術邏輯單元(ALU)、具有多個存儲由ALU處理的中間結果信息的通用寄存器的寄存器文件,以及其他組件。處理器450可以以陣列形式被排列成多個行和多個列。在所示實施例中,處理器以8×2陣列配置被排列成八(8)行和兩(2)列,該8×2陣列配置被嵌入在輸入緩沖器360和輸出緩沖器700之間。但是,應該注意,諸如4×4、8×2或8×1陣列配置之類的其他配置也可能被有利地用于本發(fā)明。如這里所示,支持多個執(zhí)行線程的單個處理器可以利用本發(fā)明。
轉發(fā)引擎300經由存儲器控制器375被耦合到多個外部存儲器資源340。外部存儲器340被優(yōu)選地組織成一個或多個存儲器條(bank),并使用快速周期隨機訪問存儲器(FCRAM)設備來實現(xiàn),但是諸如減小延遲動態(tài)隨機訪問存儲器(RLDRAM)設備或靜態(tài)隨機訪問存儲器(SRAM)設備之類的其他設備也可以被使用。外部存儲器340是外部的“列”存儲器,它被配置為存儲被組織為一系列數(shù)據(jù)結構的非暫態(tài)數(shù)據(jù)(例如轉發(fā)表、隊列),以用于處理暫態(tài)數(shù)據(jù)(例如分組)。每個存儲器控制器375都包含使得能夠訪問包含在相關外部存儲器340中的存儲器位置的邏輯。如這里所使用的,存儲器子系統(tǒng)包含外部存儲器340及其相關的存儲器控制器375。一列的處理器450被耦合到一個特定的外部存儲器子系統(tǒng)。例如,列1中的處理器(即行0到行N中的TMC1)被耦合到包含外部存儲器控制器B 375b和外部存儲器B 340b的外部存儲器子系統(tǒng)。
一行中的處理器450被組織成包含上下文存儲器430的集群400,上下文存儲器430被配置為保存由處理器450處理的上下文信息(例如分組頭部)。圖4是集群400的示意框圖。集群中的每個處理器450都被耦合到指令存儲器(IRAM)420、控制寄存器單元410、上下文存儲器430和存儲器管理單元(MMU)460,其中指令存儲器420被配置用于存儲被處理器450所執(zhí)行的指令??刂萍拇嫫鲉卧?10包括各種被分別用于存儲和用于控制TMC 450的操作的通用和控制寄存器。MMU 460被配置為除了其他功能之外還使處理器450能夠通過外部存儲器控制器375來訪問外部存儲器340。
上下文存儲器430是被配置為保存暫態(tài)(上下文)數(shù)據(jù)(例如分組頭部)的RAM。本地存儲器434是被配置用于保存各種可被集群400中的處理器450訪問的數(shù)據(jù)的內部RAM。應該注意,可以被特定一列中的處理器450訪問的諸如內部或外部列存儲器(例如存儲器340)之類的其他形式的存儲器也可以被用于本發(fā)明。
每個集群400中的處理器450對通過輸入緩沖器360加載到上下文存儲器430中的暫態(tài)數(shù)據(jù)執(zhí)行操作,但是每列中的處理器以不同的相位并行地對暫態(tài)數(shù)據(jù)執(zhí)行幾乎相同的操作。暫態(tài)數(shù)據(jù)通過由耦合到處理器450的數(shù)據(jù)移動器電路470提供的數(shù)據(jù)路徑通道440在引擎300的輸入和輸出緩沖器之間傳遞。流過集群400的上下文數(shù)據(jù)與其他數(shù)據(jù)和用于引用存儲在例如外部存儲器340中的數(shù)據(jù)和各種數(shù)據(jù)結構(例如表)的指針一道被存儲在上下文存儲器430中,以待處理器450使用。
數(shù)據(jù)移動器470包括使數(shù)據(jù)能夠根據(jù)本發(fā)明的技術被從上下文存儲器430傳輸?shù)捷敵鼍彌_器700的邏輯。為此,數(shù)據(jù)移動器470除其他邏輯之外還包括實現(xiàn)命令表500、狀態(tài)機474和接口邏輯472的邏輯。接口邏輯472包括利用接口將數(shù)據(jù)移動器470連接到輸出緩沖器700的邏輯,該邏輯例如使得能夠在數(shù)據(jù)移動器470和輸出緩沖器700之間傳遞16字節(jié)的數(shù)據(jù)單元和相關的2字節(jié)位掩碼。狀態(tài)機474包含被配置用于實現(xiàn)傳統(tǒng)狀態(tài)機的組合和順序邏輯,所述狀態(tài)機除了其他功能之外還能夠使數(shù)據(jù)從上下文存儲器430被傳輸?shù)捷敵鼍彌_器700。
在所示實施例中,從上下文存儲器430傳輸?shù)捷敵鼍彌_器700的數(shù)據(jù)被處理器450產生的命令所修改。這些命令包含諸如插入數(shù)據(jù)操作和刪除數(shù)據(jù)操作之類的多種操作,所述插入數(shù)據(jù)操作和刪除數(shù)據(jù)操作分別實現(xiàn)向所傳輸數(shù)據(jù)的數(shù)據(jù)插入,和從所傳輸數(shù)據(jù)的數(shù)據(jù)刪除。由處理器450生成的命令被保存在命令表500中,該命令表500例如是被配置為包含了一個或多個條目的表的數(shù)據(jù)結構。應該注意,可以使用其他類型的數(shù)據(jù)結構來實現(xiàn)命令表500,例如陣列、鏈表、變量、寄存器或寄存器文件。每個條目保存一條命令,該命令與對從上下文存儲器430傳輸?shù)捷敵鼍彌_器700的數(shù)據(jù)執(zhí)行的操作(例如插入數(shù)據(jù)操作或刪除數(shù)據(jù)操作)相關聯(lián)。
圖5是可以有利地用于本發(fā)明的命令表條目510的示意框圖。條目510包含操作碼(OP_CODE)字段520、上下文存儲器(源)地址(C_ADDR)字段540、長度(LEN)字段560和外部地址(X_ADDR)字段580。OP_CODE字段520保存了與對被傳輸?shù)臄?shù)據(jù)執(zhí)行的操作(例如插入數(shù)據(jù)、刪除數(shù)據(jù))相關聯(lián)的值。每個操作還與開始地址、長度和(可選地)外部地址相關聯(lián)。C_ADDR字段540保存了一個地址,該地址代表要對其執(zhí)行操作520的上下文存儲器中的數(shù)據(jù)的開始地址。LEN字段560保存的值例如代表由操作碼520操作的數(shù)據(jù)字節(jié)的量。X_ADDR字段580保存了一個地址,該地址與例如插入到被傳輸數(shù)據(jù)中的外部數(shù)據(jù)相關聯(lián)。
如上所述,在數(shù)據(jù)移動器470和輸出緩沖器700之間一次例如傳輸16字節(jié)的數(shù)據(jù)。伴隨該數(shù)據(jù)還有一個2字節(jié)的位掩碼,該位掩碼與16字節(jié)的數(shù)據(jù)相關聯(lián),并指出在數(shù)據(jù)中哪些字節(jié)是“有效的”(被使能),哪些字節(jié)是“無效的”(未被使能)。如這里所使用的,如果一個字節(jié)包含有效的數(shù)據(jù)值,則該字節(jié)是“有效的”,如果該字節(jié)不包含有效的數(shù)據(jù)值(即“未被定義的”數(shù)據(jù)值),則該字節(jié)是“無效的”。應該注意,雖然在所示實施例中位掩碼代表數(shù)據(jù)中的有效和無效字節(jié),但是例如代表被傳輸?shù)臄?shù)據(jù)中的有效或無效位或字的位掩碼也可以利用本發(fā)明的技術。
圖6是可以有利地用于本發(fā)明的位掩碼600的示意框圖。例如,位掩碼600包含16個一位的“字節(jié)使能”(BE)字段620a-p,其中每個字段與數(shù)據(jù)單元中的一個字節(jié)相關聯(lián),并包含了指示相關的數(shù)據(jù)類型是有效還是無效的值。例如,BE0 620a對應于數(shù)據(jù)單元中的位置0中的字節(jié)(字節(jié)0),并指示字節(jié)0包含了有效的字節(jié)值,還是無效的字節(jié)值。例如,若將字段620配置為包含0,則指示相應字節(jié)無效。類似地,若將字段620配置為包含1,則指示相應字節(jié)有效。
輸出緩沖器700包含接口邏輯710,該接口邏輯710被配置用于獲取從數(shù)據(jù)移動器470傳輸?shù)臄?shù)據(jù)和字節(jié)使能信息。圖7是接口邏輯710的部分示意框圖,其包含數(shù)據(jù)操縱(steering)邏輯720、工作寄存器740和輸出隊列780。數(shù)據(jù)操縱邏輯720包含如下邏輯該邏輯被配置用于將從數(shù)據(jù)移動器470獲取的有效數(shù)據(jù)字節(jié)“操縱”(傳輸)到工作寄存器740,該工作寄存器740例如是移位寄存器。輸出隊列780例如是包含一個或多個條目782的先進先出(FIFO)隊列,其中每個條目保存從工作寄存器740傳輸?shù)挠行?shù)據(jù)。從數(shù)據(jù)移動器的接口邏輯472獲取的數(shù)據(jù)和字節(jié)使能信息被傳輸?shù)綌?shù)據(jù)操縱邏輯720,該數(shù)據(jù)操縱邏輯720通過將有效字節(jié)移位到寄存器740中,來操縱包含在數(shù)據(jù)中的有效數(shù)據(jù)字節(jié)以使其進入工作寄存器740。然后,數(shù)據(jù)操縱邏輯引導工作寄存器將有效數(shù)據(jù)傳輸?shù)轿挥谳敵鯢IFO隊列780尾部的條目782中。
本發(fā)明涉及用于修改從中間節(jié)點(例如路由器200)的源(例如上下文存儲器430)傳輸?shù)侥康牡?例如輸出緩沖器700)的數(shù)據(jù)的有效技術。根據(jù)該技術,包含用于修改數(shù)據(jù)的操作的命令例如由處理器450生成,并被放置在數(shù)據(jù)結構(例如命令表500)中。當數(shù)據(jù)從源被傳輸往目的地時,與命令相關的操作修改數(shù)據(jù),如命令所指出的。
在所示實施例中,處理器450通過執(zhí)行指令以生成指出被執(zhí)行的修改的命令,來對從上下文存儲器430傳輸?shù)捷敵鼍彌_器700的數(shù)據(jù)進行修改(例如插入數(shù)據(jù)或刪除數(shù)據(jù))。圖8是可以被用于向所傳輸?shù)臄?shù)據(jù)插入數(shù)據(jù)和從所傳輸?shù)臄?shù)據(jù)刪除數(shù)據(jù)的一系列示例性指令800。指令810是上下文存儲器插入數(shù)據(jù)指令(xcmi),該指令使“插入數(shù)據(jù)”被插入到從上下文存儲器430傳輸往輸出緩沖器700的數(shù)據(jù)中。指令810指示一個操作(即xcmi),該操作指示“插入數(shù)據(jù)”和各種變量/參數(shù),包括將插入的數(shù)據(jù)量(即2字節(jié))、數(shù)據(jù)被插入到的上下文存儲器地址(即110),和插入數(shù)據(jù)的地址(即500)。注意,插入數(shù)據(jù)的地址可以是例如上下文存儲器430、本地存儲器434或外部存儲器340中的地址。指令820是上下文存儲器刪除指令(xcmd),該指令使數(shù)據(jù)被從自上下文存儲器430傳輸往輸出緩沖器700的數(shù)據(jù)中刪除。指令820指示一個操作(即xcmd),該操作指示“刪除數(shù)據(jù)”、被刪除的數(shù)據(jù)量(即2字節(jié))和被刪除數(shù)據(jù)所在的上下文存儲器地址(即118)。指令830是上下文存儲器發(fā)送指令(xmt),該指令致使數(shù)據(jù)被從上下文存儲器430傳輸往輸出緩沖器700。指令830指示了一個操作(即xmt),該操作指示發(fā)送數(shù)據(jù)、開始的上下文存儲器地址(即100)和例如以字節(jié)表示的被傳輸?shù)臄?shù)據(jù)量(即64)。
圖9A-9C示出了可以被用于根據(jù)本發(fā)明的技術來處理指令800的一系列步驟的流程圖。還參考圖8,在步驟910處,處理器450獲取第一指令810,并判斷該指令是否是上下文存儲器插入指令(步驟920)。如果不是,序列則前進至步驟930。如上所述,由于該指令是上下文存儲器插入指令,因此序列前進至步驟925,在這里,處理器450生成如指令810所指出的向分組插入數(shù)據(jù)的命令,并將該命令放置在命令表條目510中。具體而言,處理器450通過生成代表指令810所指出的操作碼、上下文存儲器地址、長度和插入數(shù)據(jù)地址的值來生成命令。然后,處理器450將這些值分別放置在命令表500的條目510的OP_CODE 520、C_ADDR 540、LEN 560和X_ADDR 580字段中。
然后序列前進至步驟942,在這里,獲取下一指令,然后返回到步驟920。假設指令820是下一指令。在步驟920處,執(zhí)行檢查以判斷指令820是否是上下文存儲器插入指令。由于指令820不是上下文存儲器插入指令,因此序列前進至步驟930,在這里,執(zhí)行檢查以判斷指令820是否是上下文存儲器刪除指令。
如上所述,由于指令820是上下文存儲器刪除指令,因此序列前進至步驟935,在這里,處理器450生成如指令820所指出的那樣用于從分組中刪除數(shù)據(jù)的命令,并將該命令放置在命令表條目510中。具體而言,處理器450通過生成代表由指令820指出的操作碼、上下文存儲器地址和長度的值來生成命令。然后,處理器450將這些值分別放置在命令表500的條目510的OP_CODE 520、C_ADDR 540和LEN 560字段中。
然后序列前進至步驟942,在這里,獲取下一指令,然后再次返回到步驟920。假設指令830是下一指令。如上所述,在步驟920處,執(zhí)行檢查以判斷指令830是否是上下文存儲器插入指令。由于指令830不是上下文存儲器插入指令,因此序列前進至步驟930,在這里,執(zhí)行檢查以判斷指令830是否是上下文存儲器刪除指令。由于指令830不是上下文存儲器刪除指令,因此序列前進至步驟940,在這里執(zhí)行檢查以判斷指令830是否是上下文存儲器發(fā)送指令。如上所述,由于指令830是上下文存儲器發(fā)送指令,因此序列前進至步驟945(圖9B),在這里,處理器450指導數(shù)據(jù)移動器470將數(shù)據(jù)從上下文存儲器430傳輸?shù)捷敵鼍彌_器700。具體而言,處理器450指導數(shù)據(jù)移動器470將來自數(shù)據(jù)移動器470的開始于上下文存儲器位置100的64字節(jié)的數(shù)據(jù)傳輸?shù)捷敵鼍彌_器700。在步驟947處,數(shù)據(jù)移動器470從開始于地址100的上下文存儲器中獲取16字節(jié)的數(shù)據(jù)。
在步驟950處,數(shù)據(jù)移動器470搜索命令表500,以在命令表中找到與已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配的條目510。如果由C_ADDR字段540和LEN字段560的內容組合所指定的一系列地址與已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相重疊,則條目510與已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配。例如,與已獲取的數(shù)據(jù)相關聯(lián)的一系列地址包括范圍100-115中的上下文存儲器地址。由指令810指定的一系列地址與該范圍重疊;因此,與指令810相關聯(lián)的條目510是匹配條目。在步驟955處,如果未找到匹配條目,數(shù)據(jù)移動器470則假設已獲取的數(shù)據(jù)不被修改,并且序列前進至步驟960,在這里,生成如上所述的用于已獲取的數(shù)據(jù)的位掩碼,并且將位掩碼和數(shù)據(jù)傳輸?shù)捷敵鼍彌_器。否則,如果找到了匹配條目,則序列前進至步驟965。假設找到了與指令810相關聯(lián)的匹配條目510。
在步驟965處,匹配條目的OP_CODE字段520的內容被檢查以判斷它是否代表“刪除數(shù)據(jù)”操作。如果是,則序列前進至步驟970;否則,序列前進至步驟975(圖9C)。如上所述,匹配條目510中的OP_CODE字段520的內容指示插入數(shù)據(jù)操作;因此,序例前進至步驟975。
在步驟975處,數(shù)據(jù)移動器470生成用于已獲取的上下文存儲器數(shù)據(jù)中的“引導數(shù)據(jù)”的位掩碼600,并將已獲取的數(shù)據(jù)和位掩碼600傳輸?shù)捷敵鼍彌_器700。如這里所使用的,引導數(shù)據(jù)指的是在已獲取的上下文存儲器數(shù)據(jù)中位于被插入的數(shù)據(jù)之前的數(shù)據(jù)。例如,如上所述,由已獲取的上下文存儲器數(shù)據(jù)所代表的地址范圍從100到115,并且匹配條目的C_ADDR值是110。因此,引導數(shù)據(jù)包括從上下文存儲器地址位置100到109中獲取的有效數(shù)據(jù)字節(jié)。數(shù)據(jù)移動器470通過以下方式來生成用于引導數(shù)據(jù)的位掩碼將掩碼600中代表字節(jié)位置100到109的那些位(即BE0 620a到BE9 620j)標記為指示數(shù)據(jù)有效,并將掩碼600中的剩余位(即BE10 620k到BE15 620p)標記為指示剩余數(shù)據(jù)無效(由于它與引導數(shù)據(jù)相關)。如上所述,數(shù)據(jù)移動器470然后將已獲取的數(shù)據(jù)與位掩碼600一道傳輸?shù)捷敵鼍彌_器邏輯700,輸出緩沖器700處理數(shù)據(jù)和位掩碼。
在步驟977處,數(shù)據(jù)移動器470獲取“插入數(shù)據(jù)”,即被插入到從上下文存儲器430傳輸?shù)捷敵鼍彌_器700的數(shù)據(jù)流中的數(shù)據(jù)。在步驟980處,數(shù)據(jù)移動器470生成用于已獲取的插入數(shù)據(jù)的位掩碼600,并將已獲取的插入數(shù)據(jù)和位掩碼600傳輸?shù)捷敵鼍彌_器700。具體而言,數(shù)據(jù)移動器470獲取匹配條目510的LEN字段560和X_ADDR字段580的內容。然后,數(shù)據(jù)移動器獲取從匹配條目的X_ADDR字段580所指定的地址開始的例如16字節(jié)的插入數(shù)據(jù),或者由LEN字段560的內容所代表的字節(jié)數(shù)目的插入數(shù)據(jù),以兩者中較小的字節(jié)數(shù)目為準。然后,如上所述,數(shù)據(jù)移動器470生成用于已獲取的插入數(shù)據(jù)的位掩碼600。插入數(shù)據(jù)和位掩碼600然后被傳輸?shù)捷敵鼍彌_器700,在輸出緩沖器700中它們被進一步處理。
例如在與指令810相關聯(lián)的匹配條目510中,LEN字段560包含指示兩個字節(jié)的插入數(shù)據(jù)的值。數(shù)據(jù)移動器470從由X_ADDR字段580指定的位置(即500)獲取兩字節(jié)的插入數(shù)據(jù)。然后通過以下方式來生成位掩碼600將對應于例如字節(jié)0和1的字節(jié)使能位(BE0 620a和BE1 620b)標記為指示它們是有效的,將剩余位(即BE2 620c到BE15 620p)標記為指示它們是無效的。然后插入數(shù)據(jù)被放置在與所生成的位掩碼600一道傳輸?shù)捷敵鼍彌_器700的16字節(jié)數(shù)據(jù)單元中的字節(jié)位置0和1。
在步驟982處,數(shù)據(jù)移動器470判斷由匹配條目的LEN字段560指出的所有插入數(shù)據(jù)是否都已被傳輸。如果不是,序列則前進至步驟984,在這里,獲取下一插入數(shù)據(jù)。步驟980到984被重復,直到由匹配條目的X_ADDR字段580和LEN字段560的內容組合所代表的所有插入數(shù)據(jù)都已被傳輸?shù)捷敵鼍彌_器700為止。
然后序列前進至步驟985,在這里,數(shù)據(jù)移動器470以與上述相同的方式生成代表后續(xù)數(shù)據(jù)的位掩碼600,并將已獲取的上下文存儲器數(shù)據(jù)和生成的位掩碼600傳輸?shù)捷敵鼍彌_器700。如這里所使用的,后續(xù)數(shù)據(jù)是已獲取的上下文存儲器數(shù)據(jù)中未在步驟975處作為引導數(shù)據(jù)被傳輸?shù)挠行?shù)據(jù)。例如,如上所述,引導數(shù)據(jù)包含已獲取的上下文存儲器數(shù)據(jù)中的字節(jié)0到9。在已獲取的上下文存儲器數(shù)據(jù)中的剩余有效數(shù)據(jù)(即字節(jié)10到15)構成后續(xù)數(shù)據(jù)。因此,數(shù)據(jù)移動器470通過以下方式生成用于代表后續(xù)數(shù)據(jù)的位掩碼600在位掩碼中指示字節(jié)0到9包含無效數(shù)據(jù),而字節(jié)10到15包含有效數(shù)據(jù)。已生成的位掩碼600和已獲取的上下文存儲器數(shù)據(jù)然后被傳輸?shù)捷敵鼍彌_器700。
然后,序列前進至步驟990(圖9B),在這里數(shù)據(jù)移動器470判斷由發(fā)送指令830指定的數(shù)據(jù)量是否已被發(fā)送。如果是,序列則前進至步驟994;否則,序列前進至步驟992,在這里,獲取下一上下文存儲器數(shù)據(jù),然后返回到步驟950。由于發(fā)送指令830指定64字節(jié)而只有18字節(jié)已被傳輸(即10字節(jié)的引導數(shù)據(jù)、2字節(jié)的插入數(shù)據(jù)和6字節(jié)的后續(xù)數(shù)據(jù)),因此數(shù)據(jù)移動器470獲取接下來的16字節(jié)的上下文存儲器數(shù)據(jù),并前進至步驟950。
如上所述,在步驟950處,數(shù)據(jù)移動器470搜索命令表,并定位到包含由指令820指出的信息的匹配條目500(步驟955)。然后,序列前進至步驟965,在這里,數(shù)據(jù)移動器470檢查匹配條目的OP_CODE字段520以判斷它是否指定了刪除操作。如上所述,OP_CODE字段520包含指示刪除操作的值,因此序列前進至步驟970,在這里,數(shù)據(jù)移動器470以與上述相同的方式生成代表被刪除數(shù)據(jù)的位掩碼600。然后,數(shù)據(jù)移動器470將位掩碼600和已獲取的數(shù)據(jù)傳輸?shù)捷敵鼍彌_器。具體而言,數(shù)據(jù)移動器470檢查匹配條目500的C_ADDR字段540和LEN字段560的內容,并且確定已獲取的上下文存儲器數(shù)據(jù)中被刪除的字節(jié)。然后,如上所述,數(shù)據(jù)移動器470生成位掩碼600,該位掩碼600將與被刪除字節(jié)相對應的位標記為無效。
例如,假設已獲取的上下文存儲器數(shù)據(jù)與上下文存儲器地址位置116到131相關聯(lián),并且在命令表500中找到的匹配條目510包含由指令820指定的信息。數(shù)據(jù)移動器470生成位掩碼600,其中位BE2 620c和位BE3 620d被標記為指示由這些位所代表的數(shù)據(jù)是無效的。數(shù)據(jù)移動器470將剩余位(即BE0 620a、BE1 620b和BE4 620e到BE15 620p)標記為指示由這些位代表的數(shù)據(jù)是有效的。然后,所生成的位掩碼600和已獲取的上下文存儲器數(shù)據(jù)被傳輸?shù)捷敵鼍彌_器700,在輸出緩沖器700中它們被進一步處理。
步驟950到992重復,直到在上下文存儲器發(fā)送指令中指定的所有數(shù)據(jù)都已被傳輸為止。然后,序列前進至步驟994,在這里,命令表中的條目510被清除,然后到達步驟995,在這里序列結束。
圖10是可以被用于配置狀態(tài)機474以根據(jù)本發(fā)明的技術進行操作的狀態(tài)圖1000。狀態(tài)機474開始于“空閑”狀態(tài)1010。處理器450執(zhí)行上下文存儲器發(fā)送指令,并指導數(shù)據(jù)移動器470從上下文存儲器向輸出緩沖器傳輸數(shù)據(jù),如上所述。狀態(tài)機474從“空閑”狀態(tài)1010前進至“獲取上下文數(shù)據(jù)和搜索命令表”狀態(tài)1020。在狀態(tài)1020處,狀態(tài)機474指導數(shù)據(jù)移動器470從上下文存儲器430獲取上下文存儲器數(shù)據(jù)(例如16數(shù)據(jù)字節(jié))。然后,狀態(tài)機474搜索命令表500,并判斷是否已獲取的上下文存儲器數(shù)據(jù)中的任意一個的地址落入由命令表500的匹配條目510中的C_ADDR 540和LEN 560字段的內容組合所代表的一系列地址內。如果不是,狀態(tài)機474則前進至“生成位掩碼”狀態(tài)1030,在這里,它生成用于已獲取數(shù)據(jù)的位掩碼600,如上所述。然后,狀態(tài)機474將數(shù)據(jù)和生成的位掩碼傳輸?shù)捷敵鼍彌_器,并且返回到“獲取上下文數(shù)據(jù)和搜索命令表”狀態(tài)1020。
如果已獲取的上下文存儲器數(shù)據(jù)中的任意一個的地址落入由匹配條目510中的C_ADDR 540和LEN 560字段的內容組合所代表的一系列地址內,狀態(tài)機474則前進至“檢查匹配條目的OP_CODE”狀態(tài)1040,在這里,數(shù)據(jù)移動器470檢查匹配條目510的OP_CODE字段520。如果OP_CODE字段520包含指示“刪除數(shù)據(jù)”操作的值,狀態(tài)機474則前進至“生成刪除數(shù)據(jù)位掩碼”狀態(tài)1050,在這里,生成代表被刪除的數(shù)據(jù)的位掩碼600,如上所述。然后,數(shù)據(jù)和生成的位掩碼被傳輸?shù)捷敵鼍彌_器700,狀態(tài)機474返回到“獲取上下文數(shù)據(jù)和搜索命令表”狀態(tài)1020。
如果OP_CODE字段520包含指示“插入數(shù)據(jù)”操作的值,狀態(tài)機474則前進至“生成引導數(shù)據(jù)位掩碼”狀態(tài)1060,在這里,生成引導數(shù)據(jù)位掩碼600,如上所述。然后,數(shù)據(jù)和生成的位掩碼被傳輸?shù)捷敵鼍彌_器700,并且狀態(tài)機474前進至“獲取插入數(shù)據(jù),生成插入數(shù)據(jù)使能位掩碼,并將數(shù)據(jù)和位掩碼傳輸?shù)捷敵鼍彌_器”狀態(tài)1070,在這里,獲取插入數(shù)據(jù),生成插入位掩碼600,并且將已獲取的插入數(shù)據(jù)和相關位掩碼600傳輸?shù)捷敵鼍彌_器700,如上所述。狀態(tài)機474返回該狀態(tài)1070,直到所有插入數(shù)據(jù)(由匹配條目510中的LEN字段560所指定的)都已被傳輸為止。然后,狀態(tài)機474前進至“生成后續(xù)數(shù)據(jù)位掩碼”狀態(tài)1080,在這里,生成用于“后續(xù)數(shù)據(jù)”的位掩碼600,如上所述。生成的位掩碼600和后續(xù)數(shù)據(jù)隨后被傳輸?shù)捷敵鼍彌_器700,并且狀態(tài)機474返回到“獲取上下文數(shù)據(jù)和搜索命令表”狀態(tài)1020。在由發(fā)送指令指定的所有數(shù)據(jù)都已被傳輸之后,狀態(tài)機474返回到“空閑”狀態(tài)1010。
雖然本發(fā)明的上述實施例將本發(fā)明描述為使用各種硬件設備來實現(xiàn),但是不希望這是對本發(fā)明的限制。相反,本發(fā)明可以全部或部分以軟件形式來實現(xiàn),所述軟件被存儲為包含用于在處理器中執(zhí)行的計算機可執(zhí)行指令的計算機可讀介質,例如動態(tài)隨機訪問存儲器(DRAM)或盤。例如,命令表可以作為軟件數(shù)據(jù)結構來實現(xiàn),例如表、鏈表、數(shù)組、變量、寄存器或寄存器文件。此外,在命令表中放置命令的過程,以及由包括狀態(tài)機的數(shù)據(jù)移動器所執(zhí)行的功能都可以作為軟件例程或函數(shù)來實現(xiàn)。
還應注意,雖然本發(fā)明的上述實施例采用本發(fā)明的技術來修改從上下文存儲器傳輸?shù)捷敵鼍彌_器的數(shù)據(jù),但是在本發(fā)明的其他實施例中,本發(fā)明的技術被用于變形(修改)從源傳輸?shù)侥康牡氐臄?shù)據(jù)。例如,在本發(fā)明的一個實施例中,本發(fā)明的技術被用于修改從諸如網絡上的節(jié)點之類的源獲取,并被傳輸?shù)街T如連接到網絡的存儲設備之類的目的地的數(shù)據(jù)(例如插入數(shù)據(jù)、刪除數(shù)據(jù))。此外,應該理解,本發(fā)明的技術可以被用于以除了向所傳輸?shù)臄?shù)據(jù)插入數(shù)據(jù)和從所傳輸?shù)臄?shù)據(jù)刪除數(shù)據(jù)之外的方式來變形(修改)從源傳輸?shù)侥康牡氐臄?shù)據(jù)。例如,本發(fā)明的技術可以被應用于加密從源傳輸?shù)侥康牡氐臄?shù)據(jù)。
上述描述已針對本發(fā)明的特定實施例。將會意識到,可以對所描述的實施例執(zhí)行其他變化和修改,以達到其優(yōu)點中的一些或全部。因此,所附權利要求書將覆蓋落入本發(fā)明真實精神和范圍內的全部此類變化和修改。
權利要求
1.一種用于修改從源傳輸?shù)侥康牡氐臄?shù)據(jù)的方法,該方法包括以下步驟生成一個或多個命令,其中每個命令與一個用于修改所述數(shù)據(jù)的操作相關聯(lián);將所述命令放置在數(shù)據(jù)結構中;以及當所述數(shù)據(jù)被從所述源傳輸往所述目的地時,執(zhí)行與包含在所述數(shù)據(jù)結構中的命令相關聯(lián)的所述操作,以按照所述命令的指導修改所述數(shù)據(jù)。
2.如權利要求1所述的方法,還包括以下步驟從所述源獲取所述數(shù)據(jù)。
3.如權利要求2所述的方法,還包括以下步驟生成與已獲取的數(shù)據(jù)相關聯(lián)的位掩碼;以及將所述位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡亍?br>
4.如權利要求2所述的方法,其中所述數(shù)據(jù)結構包括一個或多個條目,其中每個條目與一個命令相關聯(lián),并且所述條目包含與一系列地址和一個操作碼相關聯(lián)的信息,所述一系列地址和一個操作碼與所述命令相關聯(lián)。
5.如權利要求4所述的方法,還包括以下步驟搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目所述的一系列地址與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配;如果找到匹配條目,則判斷包含在所述匹配條目中的操作碼是否指示刪除數(shù)據(jù)操作;以及如果是指示刪除數(shù)據(jù)操作,則生成代表在所述已獲取的數(shù)據(jù)中被刪除的數(shù)據(jù)的刪除位掩碼,并將所述刪除位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡亍?br>
6.如權利要求4所述的方法,還包括以下步驟搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目所述的一系列地址與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配;如果找到匹配條目,則判斷包含在所述匹配條目中的操作碼是否指示插入數(shù)據(jù)操作;并且如果是指示插入數(shù)據(jù)操作,則a)生成代表包含在所述已獲取的數(shù)據(jù)中的引導數(shù)據(jù)的引導位掩碼,b)將所述引導位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡?,c)獲取插入數(shù)據(jù),d)生成代表所述插入數(shù)據(jù)的插入數(shù)據(jù)位掩碼,e)將所述插入數(shù)據(jù)位掩碼和所述插入數(shù)據(jù)傳輸?shù)剿瞿康牡?,f)生成代表包含在所述已獲取的數(shù)據(jù)中的后續(xù)數(shù)據(jù)的后續(xù)位掩碼,并且g)將所述后續(xù)位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡亍?br>
7.如權利要求4所述的方法,其中每個條目包含與所述命令相關聯(lián)的長度和源地址。
8.如權利要求7所述的方法,還包括以下步驟搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目所述的一系列地址是由包含在與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配的條目中的長度和源地址的組合所指定的。
9.如權利要求1所述的方法,其中所述數(shù)據(jù)結構是表。
10.如權利要求1所述的方法,還包括以下步驟清空所述數(shù)據(jù)結構。
11.如權利要求1所述的方法,其中所述源是上下文存儲器。
12.如權利要求1所述的方法,其中所述目的地是輸出緩沖器。
13.一種系統(tǒng),包括被配置用于保存數(shù)據(jù)的上下文存儲器;被配置用于保存一個或多個命令的數(shù)據(jù)結構;處理器,該處理器被配置用于生成用于修改所述數(shù)據(jù)的一個或多個命令,并將所述命令放置在所述數(shù)據(jù)結構中;輸出緩沖器;以及耦合到所述上下文存儲器和所述輸出緩沖器的數(shù)據(jù)移動器,該數(shù)據(jù)移動器被配置用于從所述上下文存儲器獲取所述數(shù)據(jù),按照包含在所述數(shù)據(jù)結構中的命令的指導修改所述數(shù)據(jù),并將修改后的數(shù)據(jù)傳輸?shù)剿鲚敵鼍彌_器。
14.如權利要求13所述的系統(tǒng),其中所述數(shù)據(jù)結構是表。
15.如權利要求13所述的系統(tǒng),其中所述數(shù)據(jù)結構包含一個或多個條目,其中每個條目與一個命令相關聯(lián),并且所述條目包含與一系列地址和一個操作碼相關聯(lián)的信息,所述一系列地址和一個操作碼與所述命令相關聯(lián)。
16.如權利要求15所述的系統(tǒng),其中所述數(shù)據(jù)移動器被配置用于搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目所述的一系列地址與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配,并且如果找到匹配條目,則判斷包含在所述匹配條目中的操作碼是否指示刪除數(shù)據(jù)操作,如果是指示刪除數(shù)據(jù)操作,則生成代表在所述已獲取的數(shù)據(jù)中被刪除的數(shù)據(jù)的刪除位掩碼。
17.如權利要求15所述的系統(tǒng),其中所述數(shù)據(jù)移動器被配置用于搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目所述的一系列地址與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配,并且如果找到匹配條目,則判斷包含在所述匹配條目中的操作碼是否指示插入數(shù)據(jù)操作,如果是指示插入數(shù)據(jù)操作,則(i)生成代表包含在所述已獲取的數(shù)據(jù)中的引導數(shù)據(jù)的引導位掩碼,(ii)將所述引導位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡兀?iii)獲取插入數(shù)據(jù),(iv)生成代表所述插入數(shù)據(jù)的插入數(shù)據(jù)位掩碼,(v)將所述插入數(shù)據(jù)位掩碼和所述插入數(shù)據(jù)傳輸?shù)剿瞿康牡兀?vi)生成代表包含在所述已獲取的數(shù)據(jù)中的后續(xù)數(shù)據(jù)的后續(xù)位掩碼,并且(vii)將所述后續(xù)位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡亍?br>
18.如權利要求15所述的系統(tǒng),其中所述數(shù)據(jù)結構中的每個條目都包含與所述命令相關聯(lián)的長度和源地址。
19.如權利要求18所述的系統(tǒng),其中所述數(shù)據(jù)移動器被配置用于搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目所述的一系列地址是由包含在與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配的條目中的長度和源地址的組合所指定的。
20.如權利要求13所述的系統(tǒng),其中所述數(shù)據(jù)移動器被配置用于生成與所述數(shù)據(jù)相關聯(lián)的位掩碼,并將所述位掩碼傳輸?shù)剿鲚敵鼍彌_器。
21.如權利要求20所述的系統(tǒng),其中所述輸出緩沖器包含數(shù)據(jù)操縱邏輯,該數(shù)據(jù)操縱邏輯被配置用于使用所述位掩碼來標識包含在所述被傳輸?shù)臄?shù)據(jù)中的有效數(shù)據(jù);耦合到所述數(shù)據(jù)操縱邏輯的工作寄存器,該工作寄存器被配置用于保存從所述數(shù)據(jù)操縱邏輯傳輸?shù)挠行?shù)據(jù);以及耦合到所述工作寄存器的輸出隊列,該輸出隊列被配置用于保存從所述工作寄存器傳輸?shù)挠行?shù)據(jù)。
22.一種用于修改從源傳輸?shù)侥康牡氐臄?shù)據(jù)的裝置,所述裝置包括用于生成一個或多個命令的裝置,其中每個命令與一個用于修改所述數(shù)據(jù)的操作相關聯(lián);用于將所述命令放置在數(shù)據(jù)結構中的裝置;以及用于當所述數(shù)據(jù)被從所述源傳輸往所述目的地時,執(zhí)行與包含在所述數(shù)據(jù)結構中的命令相關聯(lián)的所述操作,以按照所述命令的指導修改所述數(shù)據(jù)的裝置。
23.如權利要求22所述的裝置,包括用于從所述源獲取所述數(shù)據(jù)的裝置。
24.如權利要求23所述的裝置,包括用于生成與已獲取的數(shù)據(jù)相關聯(lián)的位掩碼的裝置;以及將所述位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡亍?br>
25.如權利要求23所述的裝置,其中所述數(shù)據(jù)結構包括一個或多個條目,其中每個條目與一個命令相關聯(lián),并且所述條目包含與一系列地址和一個操作碼相關聯(lián)的信息,所述一系列地址和一個操作碼與所述命令相關聯(lián)。
26.如權利要求25所述的裝置,包括用于搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目的裝置所述的一系列地址與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配;用于判斷包含在所述匹配條目中的操作碼是否指示刪除數(shù)據(jù)操作的裝置;以及用于如果所述匹配條目中的操作碼指示刪除數(shù)據(jù)操作,則生成代表在所述已獲取的數(shù)據(jù)中被刪除的數(shù)據(jù)的刪除位掩碼,并將所述刪除位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡氐难b置。
27.如權利要求25所述的裝置,包括用于搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目的裝置所述的一系列地址與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配;用于判斷包含在匹配條目中的操作碼是否指示插入數(shù)據(jù)操作的裝置;以及用于如果所述操作碼指示插入數(shù)據(jù)操作,則(i)生成代表包含在所述已獲取的數(shù)據(jù)中的引導數(shù)據(jù)的引導位掩碼,(ii)將所述引導位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡兀?iii)獲取插入數(shù)據(jù),(iv)生成代表所述插入數(shù)據(jù)的插入數(shù)據(jù)位掩碼,(v)將所述插入數(shù)據(jù)位掩碼和所述插入數(shù)據(jù)傳輸?shù)剿瞿康牡兀?vi)生成代表包含在所述已獲取的數(shù)據(jù)中的后續(xù)數(shù)據(jù)的后續(xù)位掩碼,并且(vii)將所述后續(xù)位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡氐难b置。
28.一種包含計算機可執(zhí)行指令的計算機可讀介質,所述指令用于在處理器中執(zhí)行以下操作生成一個或多個命令,其中每個命令與一個用于修改數(shù)據(jù)的操作相關聯(lián);將所述命令放置在數(shù)據(jù)結構中;以及當所述數(shù)據(jù)被從所述源傳輸往所述目的地時,執(zhí)行與包含在所述數(shù)據(jù)結構中的命令相關聯(lián)的所述操作,以按照所述命令的指導修改所述數(shù)據(jù)。
29.如權利要求28所述的計算機可讀介質,包括用于在處理器中執(zhí)行以下操作的計算機可執(zhí)行指令從所述源獲取所述數(shù)據(jù)。
30.如權利要求29所述的計算機可讀介質,包括用于在處理器中執(zhí)行以下操作的計算機可執(zhí)行指令生成與已獲取的數(shù)據(jù)相關聯(lián)的位掩碼;以及將所述位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡亍?br>
31.如權利要求29所述的計算機可讀介質,其中所述數(shù)據(jù)結構包括一個或多個條目,其中每個條目與一個命令相關聯(lián),并且所述條目包含與一系列地址和一個操作碼相關聯(lián)的信息,所述一系列地址和一個操作碼與所述命令相關聯(lián)。
32.如權利要求31所述的計算機可讀介質,包括用于在處理器中執(zhí)行以下操作的計算機可執(zhí)行指令搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目所述的一系列地址與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配;如果找到匹配條目,則判斷包含在所述匹配條目中的操作碼是否指示刪除數(shù)據(jù)操作;以及如果是指示刪除數(shù)據(jù)操作,則生成代表在所述已獲取的數(shù)據(jù)中被刪除的數(shù)據(jù)的刪除位掩碼,并將所述刪除位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡亍?br>
33.如權利要求31所述的計算機可讀介質,包括用于在處理器中執(zhí)行以下操作的計算機可執(zhí)行指令搜索所述數(shù)據(jù)結構以找到包含與如下的一系列地址相關聯(lián)的信息的條目所述的一系列地址與所述已獲取的數(shù)據(jù)所關聯(lián)的一系列地址相匹配;如果找到匹配條目,則判斷包含在所述匹配條目中的操作碼是否指示插入數(shù)據(jù)操作;并且如果是指示插入數(shù)據(jù)操作,則a)生成代表包含在所述已獲取的數(shù)據(jù)中的引導數(shù)據(jù)的引導位掩碼,b)將所述引導位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡?,c)獲取插入數(shù)據(jù),d)生成代表所述插入數(shù)據(jù)的插入數(shù)據(jù)位掩碼,e)將所述插入數(shù)據(jù)位掩碼和所述插入數(shù)據(jù)傳輸?shù)剿瞿康牡?,f)生成代表包含在所述已獲取的數(shù)據(jù)中的后續(xù)數(shù)據(jù)的后續(xù)位掩碼,并且g)所述后續(xù)位掩碼和所述已獲取的數(shù)據(jù)傳輸?shù)剿瞿康牡亍?br>
全文摘要
一種技術在網絡中的中間節(jié)點上修改從源傳輸?shù)侥康牡氐臄?shù)據(jù)。根據(jù)該技術,節(jié)點的處理器發(fā)布用于修改數(shù)據(jù)的命令。這些命令被保存在數(shù)據(jù)結構中,并且當數(shù)據(jù)被從源傳輸往目的地時才執(zhí)行這些命令。當數(shù)據(jù)被傳輸時,包含在數(shù)據(jù)結構中的命令被執(zhí)行,并且按照命令的指導修改數(shù)據(jù)。
文檔編號H04L29/06GK1781293SQ200480011280
公開日2006年5月31日 申請日期2004年6月23日 優(yōu)先權日2003年6月25日
發(fā)明者約翰·W·馬歇爾, 威納亞克·K·帕若姆施瓦若, 杰弗里·B·斯科特 申請人:思科技術公司