專利名稱:用于在分組處理系統(tǒng)中使用元分組的方法和裝置的制作方法
用于在分組處理系統(tǒng)中使用元分組的方法和裝置
背景技術(shù):
在許多分組處理系統(tǒng)中,分組被存儲在緩沖器中,以便提供排隊來處 理流量突發(fā),為某些類別的流量提供優(yōu)先調(diào)度,等等。對于這樣的分組存 儲存在兩種主要的范例完整分組,或者某種類型的分散/聚集,其中分組 被表示為指向分組片斷的一個或多個指針。完整分組存儲方法在簡單性上 有某些很大的優(yōu)點。但是,在只需要訪問分組的一部分的情況下,或者在 分組以(被分段的)片斷的形式被接收(或發(fā)送),然后必須被重組的情 況下,分散/聚集方法的帶寬效率可能更高。
即使在完整分組系統(tǒng)中,由于諸如多鏈路點對點協(xié)議(MLPPP)、鏈
路分段和交織(LFI)以及幀中繼論壇(FRF)實現(xiàn)方式FRF.12之類的協(xié) 議,也需要分組片段的重組。在完整分組系統(tǒng)和分散-聚集系統(tǒng)兩者中,用 于實現(xiàn)這些協(xié)議的分組重組技術(shù)都具有有限的可擴展性。
例如,在存儲完整分組的系統(tǒng)中,在任一時間可能只有分組的一部分 可用,或者不同的片段可能以任意順序到達。當片段最終被撤出隊列時, 同一分組的不同部分隨后必須被放回一起。為了動態(tài)跟蹤和訪問構(gòu)成重組 后的分組的不同數(shù)據(jù)片斷,需要大量的處理器帶寬。
因而,仍需要提高將分組片斷重組成完整分組的效率。本發(fā)明解決了 這一問題以及與現(xiàn)有技術(shù)相關(guān)聯(lián)的其他問題。
發(fā)明內(nèi)容
元分組被用于更高效地重組分組并且更高效地進行其他分組處理操 作。元分組是由排隊系統(tǒng)中的硬件解析的特殊類型的分組。元分組不是直 接包含數(shù)據(jù),而是包含用于從分組處理系統(tǒng)中的各個可標識存儲位置構(gòu)建 所需分組的指令。由于重組后的分組替換了元分組,因此分組排序得到了 保持。例如,假定元分組處于分組序列中的適當位置,則替換元分組的(一個或多個)分組也將以相同的分組序列順序被維持。元分組和常規(guī)分 組兩者都可以使用相同的隊列和排隊系統(tǒng)而被處理,并且可被自由地混 合,從而允許重組后分組和完整分組的共存。元分組為完整分組系統(tǒng)提供 了分組重組能力,并且增大了完整分組或分散-聚集系統(tǒng)的可擴展性。
元分組可用于單獨地或與分組重組相結(jié)合地執(zhí)行其他分組處理操作。 例如,元分組可用于幫助管理分組排隊操作、提供定時基準,以及發(fā)起其 他分組處理操作和命令。
本發(fā)明的以上和其他目的、特征和優(yōu)點將從以下參考附圖對本發(fā)明的 優(yōu)選實施例的詳細描述中變得更清楚。
圖1是示出元分組如何被用于重組分組的圖。 圖2是示出元分組的一個示例的框圖。
圖3是示出元分組如何被生成并用于組裝和丟棄分組隊列中的分組的圖。
圖4是示出元分組如何被用于沖刷(flush)分組調(diào)度器中的隊列的圖。
圖5是示出元分組如何對分組進行重新排隊以提供定時基準的圖。 圖6是用于重新生成額外的元分組并且用于分出(branch off)定時基 準分組的元分組的另 一示例。
具體實施例方式
圖1示出使用元分組(meta-packet) 20來更高效地進行某些分組處理 操作的分組處理系統(tǒng)10。分組處理系統(tǒng)10可被用于任何用于處理分組的 網(wǎng)絡(luò)處理設(shè)備,例如路由器、交換機、網(wǎng)關(guān)、服務器、個人計算機等等。 在此示例中,分組流11被分組處理系統(tǒng)IO接收。分組流11可包括普通分 組14和分組片段30兩者。初始處理級將普通分組14存儲到緩沖器13B 中,并將分組片段30存儲在緩沖器13A中。
常規(guī)分組14是通??砂ǚ纸M頭部和分組有效載荷的任何普通數(shù)據(jù)或控制分組。例如,常規(guī)分組14可以是因特網(wǎng)協(xié)議(IP)分組或任何其他 類型的網(wǎng)絡(luò)分組。以下提到普通分組、常規(guī)分組、數(shù)據(jù)分組、控制分組或 網(wǎng)絡(luò)分組一般是指能夠通過分組交換網(wǎng)絡(luò)來傳輸?shù)娜魏畏纸M以及這些分組 在分組處理系統(tǒng)中被處理時的任何形式和變換。
分組片段30通常是一個或多個分組的一些部分,使得給定分組的所 有部分將(最終)出現(xiàn)在分組流中。在一些實現(xiàn)方式中,可能有多個分組 流11,并且來自同一分組的分組片段可分布在多個分組流中。在像這樣的
情況下,對于每個分組流可以有一個緩沖器13A。
分組處理系統(tǒng)10中的處理器12將普通分組14發(fā)送到排隊系統(tǒng)25中 的第一分組緩沖器16B。在此示例中,處理器12生成標識緩沖器13A中 的分組片段30的元分組20。元分組20被發(fā)送到排隊系統(tǒng)25中的第二緩 沖器16A。
元分組20包含嵌入式元命令(meta-command) 22,該嵌入式元命令 22在一個應用中被用于重組被分段的普通分組30 (聚集被分段的普通分 組30的片斷)。其他嵌入式元命令22可被用于執(zhí)行其他數(shù)據(jù)操縱、重組 和控制操作。元分組20導致普通分組的重組24,普通分組的重組24隨后 在輸出數(shù)據(jù)流17中替換元分組20。在此示例中,元分組20充當對普通分 組的間接指示,該普通分組可能是許多片斷的形式。重組后的分組24固 有地維持與元分組20先前維持的分組流中相同的順序。因而,對于從元 分組20創(chuàng)建的重組后分組24,不需要執(zhí)行專門的分組排序操作。對于諸 如MLPPP這樣的在其輸出流中混合了正規(guī)分組和重組后的分組的協(xié)議, 這一點尤其有益。
進一步來說,在排隊系統(tǒng)25中,普通分組14被加入到分組隊列16B 中,而元分組20被加入到不同的控制或分組數(shù)據(jù)隊列16A中。在一個示 例中,隊列i6中的一些可以是先進先出(FIFO)型緩沖器。元分組20和 普通分組14位于分組隊列16A和16B中,同時等待被排隊處理器18進一 步處理或撤出隊列。排隊處理器18可將分組14和24發(fā)送回分組處理系統(tǒng) IO中的不同存儲器或處理元件以便進一步處理,或者可將分組14和24發(fā) 送到不同的外部端口。例如,分組1、 2和3以及重組后的分組24都被顯示為正被排隊處理器18輸出到輸出端口 31。
元分組20通過分組頭部21中的比特(或字段)與常規(guī)分組14相區(qū) 分。關(guān)于分組是元分組20的情況也可用某種其他的方式來指示,其中包 括帶外信令。元分組20以與任何其他分組14相同的方式被處理,直到它 到達分組處理系統(tǒng)10中的某個點為止。 一般來說,元分組20是在分組通 過調(diào)度器被匯集之后在排隊系統(tǒng)25中的出口排隊級中與常規(guī)分組14區(qū)分 開來的。當然,下述元分組操作也可在分組處理系統(tǒng)10中的其他級發(fā) 起。
排隊系統(tǒng)25根據(jù)分組頭部21中的標志來檢測元分組20。代替執(zhí)行諸 如提供分組傳送之類的普通分組操作,排隊系統(tǒng)25利用元分組處理23來 解析和執(zhí)行元分組20中所包含的元命令22。元命令22可以使排隊處理器 18產(chǎn)生重組后的分組24或執(zhí)行排隊系統(tǒng)25通常不執(zhí)行的其他分組處理操 作。例如,元命令22可被用于元分組重生成32、定時再循環(huán)34、命令發(fā) 起36、分組丟棄38和分組重排隊40。這些示例性的操作都在下文更詳細
描述°
分組重組應用中的元分組20有效地充當指向一個或多個分組或分組 片段的指針。例如,元分組20包含指向當前存儲在分組處理系統(tǒng)10中的 不同分組或分組片段30的元命令22。元命令22還可使排隊處理器18將 其他信息加載到重組后的分組24中,例如分組長度信息26和其他常數(shù) 28。由元命令22創(chuàng)建的重組后的分組24隨后在輸出數(shù)據(jù)流17中替換元分 組20。因而,如上所述,重組后的分組24自動地在排隊系統(tǒng)25所處理的 數(shù)據(jù)流17中維持相同的相對位置。
排隊系統(tǒng)25實質(zhì)上執(zhí)行來自元分組20的命令以在調(diào)度器120 (見圖 4)的控制下按適當?shù)捻樞驈年犃?6的頭部去除分組。本示例中的元分組 20是由軟件提供的類似命令的微序列,這些命令被排隊處理器18按順序 執(zhí)行。雖然元分組20中的元命令22與從隊列中去除普通分組以進行傳輸 的"指令"相類似,但元命令22可以按下面進一步描述的若干方式被擴 展。
圖2示出一些元命令22的示例。元分組20在分組頭部21中包括公共前導56,其包含向排隊處理器18 (圖1)標識分組為元分組的標志或比 特。元命令22可包括長度調(diào)節(jié)命令58,該長度調(diào)節(jié)命令58使得排隊處理 器18確定重組后的分組24的長度并將該長度信息(可能已按長度調(diào)度命 令的規(guī)定而被修改)插入到公共前導或頭部26中,或者插入到重組后的 分組的任何其他部分中。分組命令60使得排隊處理器18將命令60中所包 含的常數(shù)插入到重組后的分組24中。該常數(shù)可與長度調(diào)節(jié)命令58結(jié)合使 用以形成介質(zhì)訪問控制(MAC)頭部或其他頭部或尾部信息26。
如上所述的元分組命令22還允許來自若干個完全不同的隊列和存儲 器元件的分組重組操作。例如,分組或其他數(shù)據(jù)51可被包含在存儲器50 中。其他分組數(shù)據(jù)可能駐留在分組隊列52和54中。例如,重組后的分組 24的額外頭部信息(數(shù)據(jù)X)可駐留在存儲器50中,第一分組片段#0可 駐留在分組隊列52中,而第二分組片段#1可駐留在分組隊列54中。
元命令62指示排隊處理器18將存儲器50的地址AA—BBCC處的內(nèi) 容插入到重組后的分組24的頭部字段28中(或者更準確地說,插入到下 一順序部分中)。元命令62還可以包括一個長度字段,該長度字段指示 從被標識的地址位置開始應當讀取多少數(shù)據(jù)。元命令64和66隨后指示排 隊處理器18分別將來自分組隊列52和54的分組片段#0和#1插入到重組 后的分組24的位置30A和30B中。
元分組指針62、 64和66有效地"聚集"和重組來自多個不同的存儲 器結(jié)構(gòu)(例如來自存儲器50和不同的分組隊列52和54)的所需分組和數(shù) 據(jù)。這可以用來支持MLPPP或其他類似的創(chuàng)建被分段分組的協(xié)議。雖然 優(yōu)選地,為了實現(xiàn)的簡單,諸如此類的元命令順序地構(gòu)建重組后的分組, 但是另一實施例允許每個元命令指定在重組后的分組中它所指示的位置。 在此實施例中,另一類型的元命令可指定元命令的重組處理未以其他方式 填充的任何位置的"背景"樣式。
引用元分組命令67使得排隊系統(tǒng)25獲取現(xiàn)有元分組20的一部分并將 其復制到新分組24中。在此示例中,引用命令67指示排隊系統(tǒng)25將來自 元命令60的常數(shù)復制到分組24中。但是,引用命令67也可用于將相同元 命令56-67中的任何元命令復制到分組24中。例如,引用元命令67可以照搬地將插入命令62-66、長度調(diào)節(jié)命令28等等中的任何一個復制到分組 24中。引用命令24例如可用于生成額外的元分組,如下面圖5和6中所 述。
創(chuàng)建元分組
圖3更詳細示出了元分組如何被生成并被用于重組分組、丟棄分組和 維護分組優(yōu)先級的一個示例。多個不同的分組和/或分組片段被排隊系統(tǒng) 25接收到不同的分組隊列80中。
在此示例中,第一分組隊列A當前包含分組1的第一分組片段(pkt l-A)、第二分組的第一分組片段(pkt 2-A)、第三分組的第三分組片段 (pkt3-C)和第三分組的第四分組片段(pkt3-D)。分組隊列B包含分組 1的第三片段(pkt l-C)、第二分組的第二分組片段(pkt 2-B)和第二分 組的第三分組片段(pkt2-C)。分組隊列C包含第一分組的第四片段 (pktl-D)、第三分組的第一和第二片段(pkt3-A、 pkt3-B)和第五分組 的第一片段(pkt5-A)。
處理器82監(jiān)視不同的分組1-5到達分組隊列80中,并且維護記分板 83,該記分板83跟蹤哪些分組和分組片段位于哪些分組隊列80中。處理 器82還確定單獨的高優(yōu)先級分組隊列D中的被接收分組4是高優(yōu)先級分 組。這可以基于分組4的頭部中所包含的服務質(zhì)量(QoS)信息來檢測。
記分板S3列出為了正確地重組分組片段,分組隊列80需要被排隊處 理器18讀取的順序。例如,為了正確地重組分組2的片段,排隊處理器 18需要首先從隊列A讀取pkt2-A,從隊列B讀取pkt2-B,并從隊列B讀 取pkt2-C。利用此知識,處理器82從按順序列出隊列A、隊列B和隊列 B的記分板83形成元分組2。
控制處理器82還可在元分組2中包括更新長度元命令106,以及其他 命令,以產(chǎn)生格式正確的重組后分組。更新長度命令106使得排隊處理器 18識別重組后的分組2的總長度并且將識別出的分組長度89插入重組后 的分組88中。對于分組3的分組片段pkt 3-A、 pkt 3-B、 pkt 3-C和pkt 3-D,形成類似的元分組3。分組優(yōu)先級
元分組的另一特征是與分組處理器10所提供的QoS服務聯(lián)合工作的
能力。例如,高優(yōu)先級分組4被排在分組隊列D中,該分組隊列D不同于 用來緩沖被分段分組的分組隊列A、 B和C。排隊處理器18可以在輸出必 須從分組片段重組的其他分組1、 2和3之前,輸出在輸出分組流的位置 86中的分組4。
在另一實施例中, 一旦高優(yōu)先級分組4被接收到,處理器82就可將 其實際內(nèi)容直接定位到控制/數(shù)據(jù)隊列16中。在此示例中,高優(yōu)先級分組 4可被定位在控制/數(shù)據(jù)隊列16中元分組1、 2和3之前。
分組丟棄
處理器82將以類似于分組2和3的元分組的方式形成分組1的元分 組。但是,在此示例中,分組1的第二分組片段pkt l-B從未在分組隊列 80中被接收到,或者它在某個預定時間段內(nèi)未被接收到。例如在分組片段 pkt l-B在通過因特網(wǎng)傳輸時被丟棄或丟失的時候,可能發(fā)生這種情況。處 理器82可具有一個定時器,該定時器在某個預定的時間段內(nèi)等待分組片 段pktl-B到達分組隊列80中。在超時時段期滿之后,處理器82確定分組 1的所有其他接收到的分組片段都應當被丟棄。
因此,元分組1被處理器82構(gòu)造,以分別從分組隊列A、 B和C中高 效地丟棄分組片段pkt l-A、 pkt l-C和pkt l-D。例如,代替包含插入元命 令,元分組1包含丟棄元命令94,該丟棄元命令94指示排隊處理器18從 分組隊列80中讀取并丟棄分組1的不完整分組片段集合。
處理器82還可包括丟棄長度標識符元命令96,該元命令96隨后被用 于通知分組處理器10中的處理設(shè)備分組1已被丟棄,并且還標識已被丟 棄的分組1中的數(shù)據(jù)量。這可以用于支持分組處理器10中的統(tǒng)計分析操 作。在一個實施例中,該丟棄信息可經(jīng)由某種類型的FIFO被發(fā)送到處理 器。在此示例中,具有丟棄命令94的元分組1還構(gòu)造了包含丟棄長度和 其他信息的小控制分組88,并經(jīng)由單獨的隊列將該分組轉(zhuǎn)發(fā)到處理器。元分組處理
排隊處理器18從位置98開始按順序讀取控制/數(shù)據(jù)隊列16中的元分 組和普通分組。在輸出分組隊列D中的高優(yōu)先級分組之后,排隊處理器 18從控制/數(shù)據(jù)隊列16讀取元分組1。如上所述,元分組1包含指示排隊 處理器18丟棄分組隊列A中的下一分組的第一命令。元分組1中的第二 元命令指示排隊處理器18丟棄分組隊列B中的下一分組,并且第三元命 令指示排隊處理器18丟棄分組隊列C中的下一分組。因此,排隊處理器 18從分組隊列A、 B和C讀取和丟棄分組1的分組片段84。
如上所述,元分組1還可包括另一元命令96,該元命令96指示排隊 處理器18標識被丟棄的數(shù)據(jù)量并且可包括與被丟棄的元分組1相關(guān)聯(lián)的 頭部信息。例如,分組88可以被發(fā)送到與這個流中的其它分組無關(guān)的目 的地,以用于統(tǒng)計分析。排隊處理器18可通過跟蹤在執(zhí)行元分組1中的 命令時所讀取的數(shù)據(jù)量來很容易地識別被丟棄的數(shù)據(jù)量。
在完成元分組1的元指令之后,排隊處理器18讀取隊列16中的下一 元分組2。元分組2指示排隊處理器從分組隊列A中讀取下一數(shù)據(jù)元素 (pkt 2-A),然后從分組隊列B讀取下兩個數(shù)據(jù)元素(pkt 2-B、 pkt 2-C)。片段pkt2-A、 pkt2-B和pkt2-C隨后被排隊處理器18重組并輸出作 為重組后的分組90。如上面也已提到的,元分組2還可包括長度更新元命 令106,該元命令106使得排隊處理器18導出并包括重組后的分組90的 長度信息。排隊處理器18相應地將分組長度值89置于重組后的分組90 中。這也是由排隊處理器18通過跟蹤在執(zhí)行元分組2時從分組隊列80讀 取的數(shù)據(jù)量來很容易地確定的。在一些實施例中,長度更新元命令106可 將長度的修改后的(移位的、舍入的、添加了偏移量的等等)版本插入到 重組后的分組90中。排隊處理器18隨后重組和輸出包含分組3的所有分 組片段的分組92。
隊列沖刷和CSR命令
參考圖4,調(diào)度器120包含隊列122,該隊列122包含標識存儲器和/或緩沖器和/或隊列124中所包含的分組的位置的分組句柄或指針。存儲器
和/或緩沖器和/或隊列124在下文中一般被稱為存儲器124。調(diào)度器120可 包含通過多個調(diào)度層126和128來處理的多個不同的隊列122A-122D。隊 列122中的分組句柄傳播經(jīng)過不同的調(diào)度層,直到它們最終到達根層 (root layer) 128為止。從根層128輸出的分組句柄標識存儲器124中被 排隊處理器18讀取以便輸出回分組處理系統(tǒng)進行額外處理或輸出到輸出 端口的下一分組。元分組可以同樣有效地被用于圖4所示的調(diào)度器分散/聚 集體系結(jié)構(gòu)中。
在此示例中,隊列122A包含分組A、 B、元分組X1和分組C的分組 句柄。為了確定隊列122何時完全為空,分組處理器(例如圖3中的處理 器82)將元分組X2、 X3、 X4和X5分別發(fā)送到隊列122A、 122B、 122C 和122D中的每一個。隊列122A、 122B、 122C和122D中分別在元分組句 柄X2、 X3、 X4禾B X5中的每一個之前的分組句柄隨后通過分組調(diào)度器 120和排隊系統(tǒng)25被處理。
例如,分組A和B的分組句柄150A和150B被分別發(fā)送到排隊處理 器18,排隊處理器18隨后從存儲器124讀取相應的分組A和B。排隊處 理器18隨后接收標識存儲器124中的元分組XI的分組句柄150C。排隊 處理器18從存儲器124中讀取與分組句柄150C相對應的數(shù)據(jù),并通過檢 測元分組標志140來確定數(shù)據(jù)是元分組。元分組XI包括元命令142和 144,元命令142和144指示排隊處理器18從存儲器124分別讀取分組片 段#1和#2。這兩個分組片段射和#2被重組成分組133,分組133隨后在此 示例中與分組A、 B和C一起被發(fā)送到輸出端口。
如上所述,元分組X2-X5的分組句柄分別被加載到不同的隊列USA-USD 中。當被調(diào)度器120分配時,排隊處理器18從存儲器124中用相關(guān) 聯(lián)的分組句柄150E標識的位置讀取元分組X2。元分組X2同樣通過標志 140被標識為元分組。元分組X2包含重新入隊元命令138,該元命令138 指示排隊處理器18將所得到的由元分組X2創(chuàng)建的內(nèi)容發(fā)送到控制隊列 X,而不是執(zhí)行利用其創(chuàng)建的分組替換普通輸出流中的元分組的普通操 作。在一個示例中,排隊處理器18通過執(zhí)行元分組X2中的元命令137來 生成標識符分組137。標識符分組137被元命令138引導到控制隊列X。 控制隊列X中的標識符分組137向分組處理元件(PPE) 134提供通知 隊列122A中元分組X2之前的內(nèi)容尚未被撤出隊列。標識符分組可以按任 意種方式來創(chuàng)建,例如作為元分組中的常數(shù)數(shù)據(jù),或者通過從存儲器讀取 數(shù)據(jù)或從隊列讀取分組/片段的命令來創(chuàng)建,等等。
類似地,從存儲器124讀取的元分組X3、 X4和X5還指示排隊處理 器18將標識符分組137發(fā)送到同一控制隊列X。在此示例中,當四個分組 標識符137在控制隊列X中被接收到時,PPE 134知道在元分組X2-X5之 前的所有數(shù)據(jù)現(xiàn)在都已從隊列122中沖刷出。這可以觸發(fā)PPE 134隨后重 新配置隊列122以用于其他操作。在一些實施例中,多個標識符分組137 可以被相同地構(gòu)造;在其他實施例中,它們可以是不同的,以指示其與哪 個隊列相關(guān)聯(lián)。
在隊列沖刷應用的另一方面中,元分組X2-X5中的一個或多個可以包 含元命令136,該元命令136使得排隊處理器18發(fā)出命令狀態(tài)寄存器
(CSR)命令151。這樣,元命令可指示排隊系統(tǒng)25執(zhí)行其他系統(tǒng)操作, 例如命令狀態(tài)寄存器(CSR)讀/寫,包括將CSR內(nèi)容插入到重組后的分 組中。CSR操作的一種使用是與隊列移動相結(jié)合,其中, 一旦隊列中的所 有數(shù)據(jù)(直到置于隊列末端的元分組為止)被沖刷,該元分組就自動發(fā)出 禁用或移動隊列的CSR操作。
例如,元分組X2-X5之一可包含元命令136,該元命令136使得排隊 處理器18發(fā)出CSR命令151,該CSR命令151隨后將隊列122重新配置 為以不同的輸出目的地進行工作。這使得PPE 134無需監(jiān)視和執(zhí)行重新配 置操作。
在另一應用中,排隊處理器18可被用于重復地讀取CSR寄存器中所 包含的性能計數(shù)器。例如,CSR命令136執(zhí)行返回性能計數(shù)器的值的CSR 讀取。性能計數(shù)器值隨后被插入到元分組所生成的組裝后的分組中。包含 性能計數(shù)器結(jié)果的組裝后的分組隨后可被發(fā)送到處理器,以便通過將組裝 后的分組重新排入到不同的隊列中或者諸如將分組發(fā)送到用于控制信息的輸出接口之類的其他方式,來進行進一步處理。
重新入隊和元分組分支(branching)
參考圖5,除了以上圖4中描述的重新入隊示例之外,元分組還可被 用于多個不同的重新入隊和分支操作。圖5示出了分組處理器170的一種 實現(xiàn)方式,其包括各自操作多個不同的線程175的多個分組處理元件
(PPE) 174。傳入分組171從分組網(wǎng)絡(luò)被接收并被存儲在全局分組存儲器
(GPM) 172中。
分組171在被PPE 174處理之前或之后可被發(fā)送到執(zhí)行上述元分組操 作的排隊系統(tǒng)184。排隊系統(tǒng)184包括對分組177、 178和176進行排隊的 緩沖器、隊列、調(diào)度器(BQS) 180,以及處理在BQS 180中被排隊的分 組的輸出分組模塊(OPM) 182。傳入分組171被PPE 174處理,創(chuàng)建 GPM 172中的傳出分組176、 177和178。 GPM 172隨后將傳出分組176、 177和178轉(zhuǎn)發(fā)到排隊系統(tǒng)184。
OPM 182可提供以上在圖l-4中描述的排隊處理器18所提供的一些或 所有操作。除了包含分組緩沖器之外,BQS 180還可訪問分組緩沖器存儲 器190中的分組。
排隊系統(tǒng)184提供從OPM 182返回BQS 180的重新入隊路徑185,并 且還提供從OPM 182返回GPM 172的再循環(huán)路徑186。重新入隊路徑185 和再循環(huán)路徑186可與元分組結(jié)合使用,以提供額外的分組處理操作。在 一個示例中,元分組被用于向PPE 174提供定時信息。
例如,PPE 174可能需要跟蹤某個相對的時間段以確定何時丟棄分 組,例如以上在圖3中描述的分組1。 PPE 174可生成元分組176,該元分 組176隨后可被用于發(fā)起時間戳生成過程。所生成的時間戳隨后被用于發(fā) 起不同的分組處理操作。在此示例中,PPE 174之一生成元分組176,該 元分組176以與其他可包含數(shù)據(jù)或控制信息的普通分組178和分組片段 177相同的方式被發(fā)送到排隊系統(tǒng)25。元分組176與其他普通分組178和 分組片段177 —起在BQS 180中被排隊,并最終被OPM 182撤出隊列。 元分組176中所包含的元命令在圖6中更詳細描述。元分組176可通過使用分組結(jié)束(EOP)標記來創(chuàng)建多個重組后的分
組。元分組176還可獨立地控制不同的重組后分組的目的地。雖然默認是
用重組后的分組替換數(shù)據(jù)流中的元分組,但一些重組后的分組可在排隊系
統(tǒng)25中被重新入隊,如以上圖4所述。在圖5所示的另一實施例中,重組 后的分組之一是用于重復地生成定時分組的另一元分組。
參考圖5和6兩者,元分組176包括第一重新入隊元命令250,該元 命令250指示OPM 182將所得到的根據(jù)后續(xù)元命令254生成的分組重新入 隊到BQS 180。下一元命令252隨后標識BQS 180中的隊列A以用于對所 得到的分組進行重新入隊。下一元命令254生成與元分組176實質(zhì)上相同 的另一元分組212A。
元命令254可以是重組元分組212A的存儲器插入命令和常數(shù)值的任 意組合。例如,元命令254可包括針對存儲器190中的地址位置191的存 儲器插入指令。地址191可包含同一元分組176。元命令254之后是分組 結(jié)束(EOP)元命令256,該元命令256使得OPM 182將元分組212A重 新加入到隊列A中。
在另一實施例中,圖2所示的引用元命令67被用于生成元分組 212A。例如,引用命令可簡單地指示OPM 182將元命令250-264復制到元 分組212A中。
OPM 182隨后繼續(xù)處理額外的元命令258-264。元命令258和260指 示OPM 182將隨后組裝的第二分組214A重新入隊到GPM 172中。元命 令262隨后被用于生成定時分組214A。定時分組214A的內(nèi)容同樣可利用 元命令常數(shù)、對存儲器190的訪問或者對BQS 180中的隊列的訪問的任意 組合來生成。定時分組214A隨后在EOP命令264被OPM 182檢測到時被 重新入隊到GPM172。在另一實施例中,隊列A可通過再循環(huán)路徑186被 連接到GPM 172,使得定時分組214A不需要被重新入隊。取而代之,定 時分組214A將會自然地去往GPM 172,就好像元分組212A那樣,如果
不是為了與之相關(guān)聯(lián)的重新入隊的話。
圖5示出了 OPM 182對元分組212A和定時分組214A進行重新入隊 的結(jié)果。定時分組214A通過再循環(huán)路徑186從OPM 182被輸出到GPM172。該定時分組214A被PPE 174中的一個或多個用作用來執(zhí)行基于定時 的操作的時間戳基準。例如,定時分組214A可與時間T1相關(guān)聯(lián)。
元分組212A隨后以與第一元分組176相同的方式在排隊系統(tǒng)25中被 處理。具體而言,元分組212A生成另一元分組212B,該元分組212B包 含與元分組176和212A相同的元命令。元分組212A還生成被經(jīng)由OPM 182發(fā)送到GPM 182的另一定時分組214B。第二定時分組214B隨后可被 用作第二時間戳值T2。
元分組212A和212B在經(jīng)過BQS 180和OPM 182的同時被發(fā)送到具 有某個相對較快且可重復的時間間隔的控制隊列A。這使得定時分組 214A和214B能夠以相對可重復的周期性時間間隔被生成。在另一實施例 中,元分組176可包含對還通過路徑192分支到輸出端口的分組進行組裝 的命令。因而,同一元分組176可生成分支到BQS 180、 GPM 172中的重 新入隊操作和分支到輸出端口的不同分組。
元分組可包含任何類型的指令,例如加密/解密、散列(hashing)、數(shù) 據(jù)完整性檢查命令,并且不限于簡單地移動數(shù)據(jù)。元分組也可被發(fā)送到在 排隊系統(tǒng)中的它們自己的隊列,而不是在分組隊列中與普通分組自由地混 合。因而,元分組提供了與當前處理技術(shù)相比更高效、更靈活地執(zhí)行的分 組處理操作。
這些操作包括以下能力很容易地以低開銷由片段重組分組,并提供 指示分組傳輸何時達到了某些水印(watermark)(例如隊列何時排空)的 "標記"。元分組還可提供更多先進的特征,例如經(jīng)由分組傳輸觸發(fā)其他 操作,例如CSR修改等等。元分組以相對高效的方式并且以同時還保持了 分組排序的方式提供所有這些功能。
上述系統(tǒng)可使用執(zhí)行一些或所有操作的專用處理器系統(tǒng)、微控制器、 可編程邏輯器件或者微處理器。上述操作中的一些可以用軟件實現(xiàn),而其 他操作可以用硬件實現(xiàn)。
為了方便起見,操作被描述為各種互連的功能塊或不同的軟件模塊。 但是,這并不是必要的,可能存在這些功能塊或模塊被等效地集合到單個 邏輯器件、程序或操作中而沒有明顯邊界的情況。在任何情況下,具有靈活接口的這些功能塊和軟件模塊或特征可由其自身實現(xiàn),或者與其他操作 相結(jié)合用硬件或軟件來實現(xiàn)。
已經(jīng)在本發(fā)明的優(yōu)選實施例中描述和圖示了本發(fā)明的原理,應當清 楚,本發(fā)明的布置和細節(jié)可被修改,而不脫離這樣的原理。申請人要求所 有修改和變化都在所附權(quán)利要求的精神和范圍之內(nèi)。
權(quán)利要求
1.一種分組處理系統(tǒng),包括排隊系統(tǒng),其包括存儲數(shù)據(jù)分組和/或元分組的分組隊列,和對所述數(shù)據(jù)分組進行分組傳送操作并執(zhí)行所述元分組中所包含的元命令的排隊處理器。
2. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中所述排隊系統(tǒng)按與所述 數(shù)據(jù)分組和所述元分組在所述隊列中被存儲的情況相對應的順序來處理所 述數(shù)據(jù)分組和所述元分組。
3. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中所述排隊系統(tǒng)按所述元分組中所包含的順序來順次地處理所述元命令。
4. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中,所述元命令中的一個 或多個元命令使得所述排隊系統(tǒng)將來自存儲器或來自所述分組隊列的數(shù)據(jù) 重組成數(shù)據(jù)分組,然后用重組后的數(shù)據(jù)分組來替換所述元分組。
5. 根據(jù)權(quán)利要求4所述的分組處理系統(tǒng),其中,所述元命令中的一個 或多個元命令使得所述排隊系統(tǒng)識別所述重組后的數(shù)據(jù)分組的長度,然后 將所識別的長度或其函數(shù)包括在所述重組后的數(shù)據(jù)分組中。
6. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中,所述元命令中的一個 或多個元命令使得所述排隊系統(tǒng)生成另一數(shù)據(jù)分組或另一元分組。
7. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中,所述元命令中的一個 或多個元命令使得所述排隊系統(tǒng)向所述分組處理系統(tǒng)中的其他處理或控制 元件發(fā)出命令。
8. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中,所述元命令中的一個 或多個元命令使得所述排隊系統(tǒng)丟棄所述分組隊列中的數(shù)據(jù)分組。
9. 根據(jù)權(quán)利要求8所述的分組處理系統(tǒng),其中, 一個或多個元命令使 得所述排隊系統(tǒng)生成標識所述被丟棄的數(shù)據(jù)分組中被丟棄的數(shù)據(jù)量的報告。
10. 根據(jù)權(quán)利要求9所述的分組處理系統(tǒng),其中,所述報告作為組裝 后的分組的一部分被返回到處理或控制元件。
11. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中,所述元命令中的一 個或多個元命令使得所述排隊系統(tǒng)將由執(zhí)行所述元命令而得到的結(jié)果重新 加入回所述分組隊列中。
12. 根據(jù)權(quán)利要求11所述的分組處理系統(tǒng),其中,被重新入隊的結(jié)果 是數(shù)據(jù)分組或元分組。
13. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中,所述元命令中的一 個或多個元命令使得所述排隊系統(tǒng)從同一元分組生成多個分組。
14. 根據(jù)權(quán)利要求1所述的分組處理系統(tǒng),其中,所述元命令中的一個或多個元命令使得所述排隊系統(tǒng)將所述元分組本身的一部分復制到另一 分組或另一元分組中。
15. —種用于在分組處理器中處理分組的方法,包括 將數(shù)據(jù)或控制分組(正規(guī)分組)和元分組排隊到分組隊列中; 將所述正規(guī)分組和元分組從所述分組隊列中撤出;以及 在執(zhí)行所述被撤出隊列的元分組中的元命令的同時傳送所述被撤出隊列的正規(guī)分組。
16. 根據(jù)權(quán)利要求15所述的方法,包括按照與所述正規(guī)分組和所述元 分組從所述分組隊列中被撤出的順序相同的順序處理所述被撤出隊列的正 規(guī)分組和所述被撤出隊列的元分組。
17. 根據(jù)權(quán)利要求16所述的方法,包括 執(zhí)行從存儲器或分組隊列讀取數(shù)據(jù)的一個或多個元命令; 將從存儲器或所述分組隊列讀取的數(shù)據(jù)重組成重組后的分組;以及 在所述元分組先前所保持的分組流中的同一位置中傳送所述重組后的分組。
18. 根據(jù)權(quán)利要求15所述的方法,包括 將一個或多個元分組定位在一個或多個分組隊列中;以及 執(zhí)行所述元分組中的元命令,所述元命令提供通知,所述通知指示相同分組隊列中在所述元分組之前的所有分組都已被沖刷。
19. 根據(jù)權(quán)利要求15所述的方法,包括執(zhí)行所述元分組之一中的元命 令,所述元命令向所述分組處理器中的分組處理元件發(fā)出命令。
20. 根據(jù)權(quán)利要求15所述的方法,包括執(zhí)行一個或多個元命令,該一個或多個元命令將來自所述元命令的結(jié)果重新加入回所述分組隊列。
21. 根據(jù)權(quán)利要求15所述的方法,包括執(zhí)行所述元分組中的一個或多 個元命令,該一個或多個元命令生成一個或多個正規(guī)分組和/或元分組。
22. 根據(jù)權(quán)利要求15所述的方法,包括執(zhí)行一個或多個元命令,該一 個或多個元命令將所述元分組本身的一部分復制到另一分組和/或元分組 中。
23. 根據(jù)權(quán)利要求15所述的方法,包括執(zhí)行一個或多個元命令,該一 個或多個元命令使正規(guī)分組從所述分組隊列中被丟棄。
24. 根據(jù)權(quán)利要求23所述的方法,包括一個或多個額外的元命令,該 一個或多個額外的元命令生成標識所述正規(guī)分組中被丟棄的數(shù)據(jù)量的報 告
25. 根據(jù)權(quán)利要求24所述的方法,包括將所述報告作為組裝后的分組 的一部分返回到處理或控制元件。
26. 根據(jù)權(quán)利要求15所述的方法,包括 標識在所述分組隊列中所接收的不同分組的不同部分; 生成包含元命令的元分組,所述元命令標識哪些分組隊列包含相同分組的不同部分,并且還標識相同分組的不同部分以何種順序被存儲在不同 的分組隊列中;以及將所述元分組發(fā)送到排隊系統(tǒng),該排隊系統(tǒng)隨后根據(jù)所述元命令將來 自所述分組隊列的相同分組的不同部分重組在一起。
27. 根據(jù)權(quán)利要求26所述的方法,包括將所述重組后的分組排隊在所 述元分組先前所保持的所述排隊系統(tǒng)中的相同位置中。
28. 根據(jù)權(quán)利要求15所述的方法,包括執(zhí)行同一元分組中的元命令, 所述元命令使得多個不同的正規(guī)分組和/或元分組被創(chuàng)建并被輸出或重新入 隊。
29. —種分組處理系統(tǒng),包括分組存儲器,其從分組交換網(wǎng)絡(luò)接收傳入網(wǎng)絡(luò)分組; 一個或多個分組處理元件,其處理所述分組存儲器中的所述網(wǎng)絡(luò)分組并生成包含元指令的元分組;以及排隊系統(tǒng),其對所述網(wǎng)絡(luò)分組和所述元分組兩者進行排隊并且執(zhí)行所 述元分組中的元指令。
30. 根據(jù)權(quán)利要求29所述的分組處理器,包括所述排隊系統(tǒng)和所述分 組存儲器之間的再循環(huán)路徑,所述再循環(huán)路徑被所述排隊系統(tǒng)用來在所述 元指令的控制下將分組發(fā)送回所述分組存儲器。
31. 根據(jù)權(quán)利要求29所述的分組處理系統(tǒng),其中所述排隊系統(tǒng)包括 用于存儲所述網(wǎng)絡(luò)分組和所述元分組的隊列; 用于調(diào)度所述網(wǎng)絡(luò)分組和所述元分組的排隊的調(diào)度器;以及 輸出分組模塊,其根據(jù)由所述調(diào)度器輸出的相關(guān)聯(lián)的分組句柄來傳送所述網(wǎng)絡(luò)分組并且執(zhí)行所述元分組中的元指令。
32. 根據(jù)權(quán)利要求31所述的分組處理器,其中,所述元指令中的一些 使得所述輸出分組模塊將位于分組隊列中或主存儲器中的不同分組片段組 裝成網(wǎng)絡(luò)分組。
33. 根據(jù)權(quán)利要求31所述的分組處理器,其中,所述元分組使得所述 輸出分組模塊使網(wǎng)絡(luò)分組或元分組在所述排隊系統(tǒng)中重新入隊。
34. 根據(jù)權(quán)利要求29所述的分組處理器,其中所述網(wǎng)絡(luò)分組和所述元 分組在所述排隊系統(tǒng)中被順序地撤出隊列,然后被所述輸出分組模塊按同 一順序處理。
35. —種用于在分組處理器中處理分組的系統(tǒng),包括 用于將數(shù)據(jù)或控制分組(正規(guī)分組)和元分組排隊到分組隊列中的裝置;用于將所述正規(guī)分組和元分組從所述分組隊列中撤出的裝置;以及 用于在執(zhí)行被撤出隊列的元分組中的元命令的同時傳送被撤出隊列的 正規(guī)分組的裝置。
36. 根據(jù)權(quán)利要求35所述的系統(tǒng),包括用于按照與所述正規(guī)分組和所 述元分組從所述分組隊列中被撤出的順序相同的順序處理所述被撤出隊列 的正規(guī)分組和所述被撤出隊列的元分組的裝置。
37. 根據(jù)權(quán)利要求36所述的系統(tǒng),包括用于執(zhí)行從存儲器或分組隊列讀取數(shù)據(jù)的一個或多個元命令的裝置; 用于將從存儲器或所述分組隊列讀取的數(shù)據(jù)重組成重組后的分組的裝 置;以及用于在所述元分組先前所保持的分組流中的同一位置中傳送所述重組 后的分組的裝置。
38. 根據(jù)權(quán)利要求35所述的系統(tǒng),包括用于執(zhí)行一個或多個元命令的 裝置,所述一個或多個元命令將來自所述元命令的結(jié)果重新加入回所述分 組隊列。
39. —種存儲介質(zhì),包含計算機可讀指令,該計算機可讀指令在被執(zhí)行時提供以下操作將數(shù)據(jù)或控制分組(正規(guī)分組)和元分組排隊到分組隊列中; 將所述正規(guī)分組和元分組從所述分組隊列中撤出;以及在執(zhí)行被撤出隊列的元分組中的元命令的同時傳送被撤出隊列的正規(guī) 分組。
全文摘要
元分組被用于更高效地重組分組以及更高效地進行其他分組處理操作。元分組是由排隊系統(tǒng)中的硬件解析的特殊類型的分組。元分組不是直接包含數(shù)據(jù),而是包含用于從分組處理系統(tǒng)中的各個可標識存儲位置構(gòu)建所需分組的指令。由于重組后的分組替換了元分組,因此分組排序得到了保持。例如,假定元分組處于分組序列中的正確位置,則替換元分組的(一個或多個)分組也將被維持以相同的分組序列順序。元分組和常規(guī)分組兩者可以使用相同的隊列和排隊系統(tǒng)來處理,并且可被自由地混合,從而允許重組后的分組和完整分組的共存。元分組向完整分組系統(tǒng)提供了分組重組能力,并且增大了完整分組或分散-聚集系統(tǒng)的可擴展性。
文檔編號H04J3/24GK101569119SQ200680014779
公開日2009年10月28日 申請日期2006年4月13日 優(yōu)先權(quán)日2005年6月7日
發(fā)明者厄爾·T·科亨, 約翰·小威廉姆斯, 詹姆斯·A·馬克威馳, 阿德里恩·愛宛斯 申請人:思科技術(shù)公司