欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

具有可編程內(nèi)核的網(wǎng)絡(luò)設(shè)備的制作方法

文檔序號:7549475閱讀:237來源:國知局
專利名稱:具有可編程內(nèi)核的網(wǎng)絡(luò)設(shè)備的制作方法
具有可編程內(nèi)核的網(wǎng)絡(luò)設(shè)備
相關(guān)串請的交叉引用
本申請要求于2011年I月6日提交的題為“Programmable Switch”的第 61/430,413號美國臨時專利申請的優(yōu)先權(quán),其全部公開內(nèi)容以引用的方式并入本文。
本申請還要求于2011年3月23日提交的題為“Programmable Switch”的第 61/466,718號美國臨時專利申請的優(yōu)先權(quán),其全部公開內(nèi)容以引用的方式并入本文。技術(shù)領(lǐng)域
本公開一般涉及通信網(wǎng)絡(luò),更具體地,涉及網(wǎng)絡(luò)切換設(shè)備。
背景技術(shù)
本文提供的背景描述用于一般性地呈現(xiàn)本發(fā)明的上下文的目的。就該背景部分中描述的當(dāng)前稱作發(fā)明人的工作以及可能以其它方式在提交時未作為現(xiàn)有技術(shù)的描述的各個方面而言,既沒有明確地也沒有隱含地承認(rèn)當(dāng)前稱作發(fā)明人的工作是相對于本發(fā)明的現(xiàn)有技術(shù)。
網(wǎng)絡(luò)交換機被配置為在連接到通信鏈路的多個端口之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)業(yè)務(wù)。對于高吞吐量的應(yīng)用而言,網(wǎng)絡(luò)交換機通常是使用諸如專用集成電路(ASIC)的硬件來實現(xiàn)的。當(dāng)引入了新的網(wǎng)絡(luò)協(xié)議并且在引入新的網(wǎng)絡(luò)協(xié)議之前設(shè)計了網(wǎng)絡(luò)交換機的硬件(例如,ASIC) 時,該網(wǎng)絡(luò)交換機可能難以處理符合新的網(wǎng)絡(luò)協(xié)議的分組。發(fā)明內(nèi)容
在一個實施方式中,網(wǎng)絡(luò)設(shè)備包括多個端口和分組處理管線,多個端口被配置為在網(wǎng)絡(luò)上接收和發(fā)送分組,分組處理管線包括多個硬件級。至少一個硬件級被配置為輸出數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包括基于對接收的分組或數(shù)據(jù)結(jié)構(gòu)執(zhí)行的第一分組處理操作、從接收的分組中提取的字段,其中,數(shù)據(jù)結(jié)構(gòu)與分組相關(guān)聯(lián)。網(wǎng)絡(luò)設(shè)備還包括可配置處理器,可配置處理器耦合到分組處理管線的至少一個硬件級??膳渲锰幚砥鞅慌渲脼樾薷臄?shù)據(jù)結(jié)構(gòu)中的字段以生成經(jīng)修改的數(shù)據(jù)結(jié)構(gòu),并且將經(jīng)修改的數(shù)據(jù)結(jié)構(gòu)傳遞到后續(xù)的硬件級,后續(xù)的硬件級被配置為使用由可配置處理器修改的字段來對數(shù)據(jù)結(jié)構(gòu)執(zhí)行第二分組處理操作。
在另一個實施方式中,一種方法包括經(jīng)由網(wǎng)絡(luò)切換設(shè)備的端口接收分組,以及利用分組處理管線處理分組,分組處理管線包括多個硬件級,多個硬件級至少包括第一級、第二級和可配置處理器。利用分組處理管線處理分組包括利用第一級輸出數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包括基于對接收的分組或數(shù)據(jù)結(jié)構(gòu)執(zhí)行的第一分組處理操作、從接收的分組中提取的字段,其中,數(shù)據(jù)結(jié) 構(gòu)與分組相關(guān)聯(lián);使用可配置處理器修改數(shù)據(jù)結(jié)構(gòu)中的字段以生成經(jīng)修改的數(shù)據(jù)結(jié)構(gòu);以及將所修改的數(shù)據(jù)結(jié)構(gòu)傳遞到第二硬件級,第二硬件級被配置為使用由可配置處理器修改的字段來對數(shù)據(jù)結(jié)構(gòu)執(zhí)行第二分組處理操作。



流程圖
流程圖
流程圖
圖1是根據(jù)本發(fā)明的實施方式的示例性網(wǎng)絡(luò)設(shè)備的功能圖;圖2是根據(jù)一個實施方式的用于在網(wǎng)絡(luò)設(shè)備中處理分組的示例性方法的流程圖; 圖3是根據(jù)一個實施方式的用于在網(wǎng)絡(luò)設(shè)備中處理分組的另一個示例性方法的圖4是根據(jù)一個實施方式的用于在網(wǎng)絡(luò)設(shè)備中處理分組的另一個示例性方法的是根據(jù)一個實施方式的用于修改分組的報頭的示例性方法的數(shù)據(jù)流程圖; 是根據(jù)一個實施方式的用于在網(wǎng)絡(luò)設(shè)備中處理分組的另一個示例性方法的圖5 圖6 以及圖7是根據(jù)一個實施方式的在圖1的網(wǎng)絡(luò)設(shè)備中使用的示例性的可配置內(nèi)核單元的示意圖。
具體實施方式
圖1是根據(jù)一個實施方式的被配置用于處理和轉(zhuǎn)發(fā)數(shù)據(jù)單元(即分組)的示例性網(wǎng)絡(luò)設(shè)備100的框圖。如下面更詳細(xì)描述的,雖然在一個實施方式中作為硬件級或處理引擎的管線的配置,但是網(wǎng)絡(luò)設(shè)備100包括散布在管線的各個級之間的一個或多個可配置內(nèi)核。在一些實施方式中,一個或多個可配置內(nèi)核可以在制造設(shè)施處、由用戶在現(xiàn)場等重新配置。例如,當(dāng)引入新的網(wǎng)絡(luò)通信協(xié)議時,可以重新配置一個或多個可配置內(nèi)核,使得網(wǎng)絡(luò)設(shè)備100可以處理符合新的網(wǎng)絡(luò)通信協(xié)議的分組。作為另一個示例,一個或多個可配置內(nèi)核被重新配置為使得網(wǎng)絡(luò)設(shè)備100可以執(zhí)行網(wǎng)絡(luò)設(shè)備100先前不能執(zhí)行的功能。在一些實施方式中,可以在與網(wǎng)絡(luò)設(shè)備100和/或網(wǎng)絡(luò)設(shè)備100中包含的硬件(例如,分組處理器)的生產(chǎn)商相關(guān)聯(lián)的制造設(shè)施中重新配置一個或多個可配置內(nèi)核。例如,如果存在這樣的集成電路(1C),即其上的分組處理器(或者其一部分)有瑕疵或者存在設(shè)計錯誤使得分組處理器未如期望地進行操作,則在已經(jīng)制造出IC以后,制造設(shè)施可以重新配置一個或多個可配置內(nèi)核以執(zhí)行解決方法使得分組處理器如期望地進行操作。
在一個實施方式中,一個或多個可配置內(nèi)核是包含在分組處理管線中的管線單元 (即硬件級)。在一個實施方式中,管線的單元基于分組中的字段(例如報頭字段)的值和 /或基于與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)來執(zhí)行與分組相關(guān)聯(lián)的不同的任務(wù)。在一個實施方式中, 這種數(shù)據(jù)結(jié)構(gòu)包括分組的報頭字段。在一個實施方式中,數(shù)據(jù)結(jié)構(gòu)另外或可替換地包括與分組相關(guān)聯(lián)的其它信息。例如,其它信息可以包括由管線的第一單元生成的值,該值向管線的第二單元指示第二單元應(yīng)當(dāng)如何處理分組(例如,第二單元應(yīng)當(dāng)對分組執(zhí)行哪個任務(wù)或哪些任務(wù))。
在一個實施方式中,一個或多個可配置內(nèi)核允許網(wǎng)絡(luò)設(shè)備100被配置為執(zhí)行不同的功能、適當(dāng)?shù)靥幚矸喜煌蛐碌木W(wǎng)絡(luò)協(xié)議的分組、處理(work around)管線中的錯誤或瑕疵等。在一個實施方式中,當(dāng)網(wǎng)絡(luò)設(shè)備100的管線單元中的很多管線單元不適合于處理符合第二協(xié)議的分組時,一個或多個可配置內(nèi)核允許適合于處理符合第一協(xié)議的分組的網(wǎng)絡(luò)設(shè)備100或者網(wǎng)絡(luò)設(shè)備100中的至少各個級被重新配置為處理符合第二協(xié)議的分組。例如,在一個實施方式中,管線的單元處理與分組相關(guān)聯(lián) 的數(shù)據(jù)結(jié)構(gòu),并且每一個數(shù)據(jù)結(jié)構(gòu)包括由管線的單元中的很多管線單元視作為與第一協(xié)議指定的第一分組報頭字段對應(yīng)的字段。在一個實施方式中,例如在制造設(shè)施處或者由顧客對可配置內(nèi)核中的一個進行配置,以基于由第二協(xié)議指定的第二分組報頭字段修改數(shù)據(jù)結(jié)構(gòu)字段。然后,假設(shè)數(shù)據(jù)結(jié)構(gòu)字段仍然與由第一協(xié)議指定的第一報頭字段相對應(yīng),管線的其它單元可以使用所修改的數(shù)據(jù)結(jié)構(gòu)字段處理數(shù)據(jù)結(jié)構(gòu)。換言之,在一個實施方式中,雖然分組似乎具有符合第一協(xié)議的數(shù)據(jù)結(jié)構(gòu)字段并且對分組進行處理如同該分組符合第一協(xié)議一樣,但是實際上在可配置內(nèi)核進行修改以后,數(shù)據(jù)結(jié)構(gòu)中的所選擇的字段的實際內(nèi)容符合第二協(xié)議。在一個實施方式中,對分組的實際處理(例如,做出轉(zhuǎn)發(fā)決定)是由處理單元根據(jù)第二協(xié)議執(zhí)行的,該處理單元表現(xiàn)地如同其處理符合第一分組的分組一樣。
在另一個實施方式中,第一可配置內(nèi)核被配置為基于對分組的分析來設(shè)置數(shù)據(jù)結(jié)構(gòu)字段。位于第一可配置內(nèi)核的下游的第二可配置內(nèi)核被配置為基于數(shù)據(jù)結(jié)構(gòu)字段的值采取不同的動作。第一可配置內(nèi)核與第二可配置內(nèi)核之間的其它管線單元被配置為忽略數(shù)據(jù)結(jié)構(gòu)字段。在一個實施方式中,可配置內(nèi)核被配置為基于對分組的分析來設(shè)置一個或多個數(shù)據(jù)結(jié)構(gòu)字段,并且管線中的下游單元使用這一個或多個數(shù)據(jù)結(jié)構(gòu)字段來確定分組是否應(yīng)當(dāng)繞過下游單元中的一個或多個的處理。
參照圖1,網(wǎng)絡(luò)設(shè)備100包括耦合到一個或多個進入(ingress)物理端口 108和一個或多個外出(egress)物理端口 116的分組處理管線102。雖然圖1中僅示出了一個進入物理端口 108和一個外出物理端口 116,但是典型的交換機設(shè)備包括分組經(jīng)由其進入的多個進入物理端口 108和分組經(jīng)由其從網(wǎng)絡(luò)設(shè)備100外出的多個外出物理端口 116。在一個實施方式中,分組處理管線包括耦合到外出部分112的進入部分104。圖1是簡化的框圖, 并且網(wǎng)絡(luò)設(shè)備中的處理管線通常包括圖1中未示出的額外單元以提高清晰度。
在一些實施方式中,進入物理端口 108和外出物理端口 116耦合到多個通信鏈路。 通常,存在多個物理端口(入口和/或出口),并且每一個物理端口耦合到單個相應(yīng)的通信鏈路。例如,在一些實施方式中,進入物理端口 108和外出物理端口 116耦合到多個不 同的網(wǎng)絡(luò)和/或切換系統(tǒng)中的其它交換機(未示出)。例如,在各個實施方式中,進入物理端口 108和外出物理端口 116耦合到供應(yīng)商網(wǎng)絡(luò)、一個或多個客戶端網(wǎng)絡(luò)和/或切換系統(tǒng)中的一個或多個其它交換機。為了清楚的目的,僅可以看見一個進入物理端口和一個外出物理端口。在一個實施方式中,分組處理管路102耦合到多個物理端口并且被配置為在多個物理端口之間轉(zhuǎn)發(fā)分組。
在一個實施方式中,進入物理端口 108和外出物理端口 116提供與其它設(shè)備的多個雙向、點到點的通信鏈路,例如電橋、切換系統(tǒng)中的其它交換機、端點等等。
在一個實施方式中,分組處理管線102通常將數(shù)據(jù)分組從進入物理端口 108傳送到適當(dāng)?shù)耐獬鑫锢矶丝?116。在一些實施方式中,至少一些物理端口是輸入/輸出端口,并且至少一些進入物理端口 108和外出物理端口 116與相同的物理端口相對應(yīng)。
如圖1所示,進入部分104和外出部分112中的每一個包括串聯(lián)耦合的多個處理單元。通常,管線的每一個單元可選擇地處理分組或者與分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符),然后將分組或數(shù)據(jù)結(jié)構(gòu)傳遞給管線中的下一個單元以進行進一步的處理。在一個實施方式中,諸如分組描述符的數(shù)據(jù)結(jié)構(gòu)包括來自分組的一些信息,例如,分組的報頭信息中的一些或全部。在一些實施方式中,數(shù)據(jù)結(jié)構(gòu)還包括其它信息,例如,關(guān)于分組存儲在與網(wǎng)絡(luò)設(shè)備100相關(guān)聯(lián)的存儲器中的位置的指示符、關(guān)于管線的一個或多個單元要采取的行動的指示、諸如關(guān)于分組所屬的流的指示符的與分組有關(guān)的特征信息等等。為了便于解釋,下文中的術(shù)語“分組”用于指代分組本身或者與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。管線102中的每一個單元可以處理或者可以不處理特定的分組。例如,在一些實例中,單元簡單地將分組傳遞到管線102中的下一個單元上。在一個實施方式中,進入部分104的最后一個單元將分組傳遞到外出分212的第一單元。
在一個實施方式中,進入部分104和外出部分112的單元中的每一個或至少一些包括相應(yīng)的存儲器或者以其它方式與該相應(yīng)的存儲器相關(guān)聯(lián)。在一個實施方式中,單元接收的分組被存儲在與該單元相關(guān)聯(lián)的存儲器中。在圖1中示出了分組處理管線102的特定的示例性單元,并且在下文中將其作為示例性的示例進行討論。在一些實施方式中,一個或多個其它適當(dāng)?shù)膯卧ㄔ诜纸M處理管線102中。此外,在一些實施方式中,從分組處理管線102中省略了圖1中所示的一個或多個單元。
在圖1的示例中,進入部分104包括耦合到進入物理端口 108的端口媒體訪問控制(MAC)接收機單元120。端口 MAC接收機單元120通常執(zhí)行媒體訪問控制功能。端口 MAC 接收機單元120通常還將進入部分104與網(wǎng)絡(luò)設(shè)備100的特定物理進入端口接合(即,如果網(wǎng)絡(luò)設(shè)備100包括多個物理進入端口,則網(wǎng)絡(luò)設(shè)備100包括多個相應(yīng)的端口 MAC接收機單元120)。在另一個實施方式中,一個端口 MAC接收機單元120將進入部分104與網(wǎng)絡(luò)設(shè)備100的多個物理進入端口(為了清楚的目的而未示出)接合。
接收直接存儲器存取(RxDMA)單元124通常將每一個接收的分組寫入存儲器(未示出)并且輸出存儲器中的分組的位置的相應(yīng)指示符(例如,指針)。在一個實施方式中, RxDMA單元124包括數(shù)據(jù)結(jié)構(gòu)發(fā)生器和報頭解析器。在一個實施方式中,報頭解析器對分組中的報頭信息進行解析,而數(shù)據(jù)結(jié)構(gòu)發(fā)生器生成與分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)并且在數(shù)據(jù)結(jié)構(gòu)中包括由報頭解析器解析出的報頭信息。在一個實施方式中,數(shù)據(jù)結(jié)構(gòu)包括存儲器中的分組的位置的指示符(例如,指針),使得可以從分組本身提取出處理所需的額外信息(如果需要的話)和/或使得一旦完成對數(shù)據(jù)結(jié)構(gòu)的處理,就可以將分組最終轉(zhuǎn)發(fā)給所選擇的位置。
可配置內(nèi)核單元128耦合到RxDMA單元124。在一個實施方式中,可配置內(nèi)核單元 128能夠(例如,在制造設(shè)施中、由用戶等)被配置為執(zhí)行通常不能由管線102中的其它單元執(zhí)行的期望的操作,或者適當(dāng)?shù)匦薷呐c輸入分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)使得管線102中的其它單元可以對分組執(zhí)行與它們通常被配置以執(zhí)行的操作不同的操作。在一個實施方式中, 可配置內(nèi)核單元128包括被配置為執(zhí)行存儲器(未示出)中存儲的機器可讀指令的處理器。例如,可以修改、刪除、重寫與處理器相關(guān)聯(lián)的存儲器中存儲的指令、可以添加新的指令等等。在一個實施方式中,可配置內(nèi)核單元128包括諸如可編程邏輯設(shè)備(PLD)的可重新配置的硬件。
在一個實施方式中,可配置內(nèi)核單元128能夠被配置為修改由管線102的前一個單元(例如,RxDMA單元124或者另一個單元(未示出))所創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)。在一個實施方式中,可配置內(nèi)核單元128能夠被配置為修改數(shù)據(jù)結(jié)構(gòu)中的值。在一個實施方式中,可配置內(nèi)核單元128能夠被配置為添加字段和/或從數(shù)據(jù)結(jié)構(gòu)中移除字段和/或向數(shù)據(jù)結(jié)構(gòu)中的字段中插入與旨在插入到該字段中的內(nèi)容不同的內(nèi)容(從管線中的其它單元的角度來看)。在一個實施方式中,可配置內(nèi)核單元128能夠被配置為對解析報頭字段的RxDMA單元124或另一個單元(未示出)不能解析的報頭字段進行解析。例如,在一個實施方式中, 管線102的其它單元(例如,RxDMA單元124)可能不能處理符合某一網(wǎng)絡(luò)協(xié)議的分組。例如,管線102的(例如,在RxDMA單元124或另一個單元(未示出)中執(zhí)行的)報頭解析功能不能解析某一網(wǎng)絡(luò)協(xié)議指定的報頭字段,因而基于解析創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)不包括來自與某一網(wǎng)絡(luò)協(xié)議對應(yīng)的報頭字段的信息。另一方面,在一個實施方式中,可配置內(nèi)核單元128能夠被配置為基于來自與某一網(wǎng)絡(luò)協(xié)議對應(yīng)的報頭字段的信息來修改數(shù)據(jù)結(jié)構(gòu)。換言之,可配置內(nèi)核單兀128適合于基于符合一個或多個其它處理級未知的協(xié)議的報頭信息以這樣的方式來更新與分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中的字段,即,該方式使得雖然使用了符合一個或多個處理級未知的協(xié)議的信息,但是這一個或多個其它處理級然后能夠處理分組。雖然在一個實施方式中,信息符合未知的協(xié)議,但是可配置內(nèi)核以這樣的方式將該信息應(yīng)用于數(shù)據(jù)結(jié)構(gòu),即,該方式似乎符合處理單元已知的協(xié)議,使得分組可以由一個或多個其它處理級進行處理。
在一個實施方式中,管線102的其它單元使用修改的數(shù)據(jù)結(jié)構(gòu)進行操作,如同修改的數(shù)據(jù)結(jié)構(gòu)與不同于(其它單元未知的)某一網(wǎng)絡(luò)協(xié)議的(其它單元已知的)網(wǎng)絡(luò)協(xié)議相對應(yīng)一樣。在另一個實施方式中,管線102的其它單元被配置為忽略由可配置內(nèi)核單元 128修改的數(shù)據(jù)結(jié)構(gòu)的各個部分,除了管線102的下游的一個或多個其它可配置內(nèi)核單元已經(jīng)被配置為使用由可配置內(nèi)核單元128修改的數(shù)據(jù)結(jié)構(gòu)的各個部分來執(zhí)行管線102先前還未被配置為執(zhí)行的功能,例如,與(其它單元未知的)某一網(wǎng)絡(luò)協(xié)議相對應(yīng)的功能或者其它適當(dāng)?shù)墓δ堋?br> 在另一個實施方式中,管線102的(例如,在RxDMA單元124或另一個單元(未示出)中執(zhí)行的)報頭解析功能由于設(shè)計錯誤或者制造缺陷而錯誤地操作,因而基于解析創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)不包括來自分組的報頭字 段的正確信息或者不是管線102所預(yù)期的。另一方面,可配置內(nèi)核128能夠被配置為例如基于來自報頭字段的信息來修改數(shù)據(jù)結(jié)構(gòu),以校正管線102的報頭解析功能中的錯誤。
在一個實施方式中,除了上面所討論的(例如,與分組的報頭字段對應(yīng)的)字段以外,管線102使用的數(shù)據(jù)結(jié)構(gòu)還包括與可配置內(nèi)核單元有關(guān)的字段,S卩,用于影響可配置內(nèi)核單元的操作的字段和/或由一個或多個可配置內(nèi)核單元設(shè)置以影響管線102中的其它單元的字段。例如,在一個實施方式中,所述數(shù)據(jù)結(jié)構(gòu)包括由一個或多個可配置內(nèi)核單元設(shè)置以向一個或多個其它可配置內(nèi)核單元指示如何處理分組和/或要采取的行動的一個或多個字段,但是這些字段被管線102中的除了可配置內(nèi)核單元以外的單元忽略。在一個實施方式中,所述數(shù)據(jù)結(jié)構(gòu)包括由管線單元而不是可配置內(nèi)核單元設(shè)置以向一個或多個可配置內(nèi)核單元指示如何處理分組和/或要采取的行動的一個或多個字段,但是這些字段被管線 102中的除了可配置內(nèi)核單元以外的單元忽略。在一個實施方式中,數(shù)據(jù)結(jié)構(gòu)包括一個或多個字段,該一個或多個字段由一個或多個可配置內(nèi)核單元設(shè)置以向管線102的一個或多個其它單元(例如,可配置內(nèi)核單元和/或除了可配置內(nèi)核單元以外的單元)指示與數(shù)據(jù)結(jié)構(gòu)對應(yīng)的分組是應(yīng)當(dāng)繞過管線102中的一個或多個其它單元還是通過管線102中的一個或多個其它單元而不由管線102中的一個或多個其它單元處理。
在一些實施方式中,可配置內(nèi)核128被省略。例如,上面討論的數(shù)據(jù)結(jié)構(gòu)(例如, 分組描述符)的修改是由另一個可配置內(nèi)核執(zhí)行的,或者根本不執(zhí)行。更確切地說,另一個可配置內(nèi)核可以執(zhí)行如下所描述的不同功能。
參照隧道終止(TTI)分類單元132示出了包括與硬件處理結(jié)合操作的可配置內(nèi)核的處理管線的通用硬件架構(gòu)和操作原則。描述TTI分類單元132僅出于根據(jù)特定的實施方式說明功能的目的,但是可配置內(nèi)核的操作可以與管線中的任何適當(dāng)?shù)奶幚韱卧嘟Y(jié)合。 TTI分類單元132耦合到可配置內(nèi)核128。根據(jù)一個實施方式,TTI分類單元132通常執(zhí)行多個定義的功能。例如,在一個實施方式中,TTI分類單元132通常執(zhí)行至少兩個查詢功能。 在第一查詢功能中,識別去往由網(wǎng)絡(luò)設(shè)備100辨別的MAC地址、VLAN對的分組。該識別可以在一個或多個后續(xù)的功能或管線單元中使用。第二查詢功能(隧道終止和接口分配(TTI) 查詢)用于隧道終止識別和接口分配和/或根據(jù)層2 (L2)或?qū)?(L3)報頭字段將VLAN分配給分組。
在一個實施方式中,TTI查詢包括使用正在處理的分組的報頭的字段和其它信息 (例如第一查詢的結(jié)果)作為查詢密鑰來從具有表格數(shù)據(jù)的一個或多個表格獲得數(shù)據(jù)。一個實施方式中,表格數(shù)據(jù)包括關(guān)于要米取的行動的指不。在一個實施方式中,在一些情況下,TTI查詢指示分組與一個或多個TTI動作相關(guān)聯(lián),例如,向分組分配VLAN、分配服務(wù)質(zhì)量 (QoS)參數(shù)、分配外出端口等。
如上文所討論的,TTI分類單元132所使用一個或多個存儲器組件(例如,TCAM) 中維護的·一個或多個表格、數(shù)據(jù)庫和/或其它資料庫。在一個實施方式中,查詢一個或多個表格、數(shù)據(jù)庫等以識別與進入的分組的格式和結(jié)構(gòu)匹配或近似的表格條目或數(shù)據(jù)庫記錄。 當(dāng)TTI分類單元132不能識別與進入的分組的格式和結(jié)構(gòu)匹配或近似的表格條目或數(shù)據(jù)庫記錄時,TTI分類單元132可以不采取行動或者采取一個或多個默認(rèn)的行動。
在一個實施方式中,TTI分類單元132所使用的一個或多個表格包括對應(yīng)于與TTI 分類單元132的下游的可配置內(nèi)核單元有關(guān)的信息的一個或多個字段。例如,在一個實施方式中,當(dāng)TTI分類單元132識別表格條目時,TTI分類單元132可以使用表格條目中的一個或多個字段來設(shè)置或修改數(shù)據(jù)結(jié)構(gòu)中的一個或多個相應(yīng)的字段以影響可配置內(nèi)核單元的下游的操作。
在一個實施方式中,TTI分類單元132所使用的一個或多個表格包括以下各項中的一項或多項LocalUnitDefined[31:0]字段、LocalUnitDefinedUpdateMask[31:0]字段和用于指示相應(yīng)的分組是應(yīng)當(dāng)繞過管線102的一個或多個可配置內(nèi)核單元還是通過管線 102的一個或多個可配置內(nèi)核單元而不由管線102的一個或多個可配置內(nèi)核單元處理的字段。LocalUnitDefined字段是與用于將來自剛剛處理分組描述符的單元的信息傳送到下一個最近的可編程內(nèi)核的數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)中的LocalUnitDefined[31:0] 字段對應(yīng)的字段。例如,在一個實施方式中,如果諸如TTI分類單元132的單元基于分組描述符執(zhí)行多個查詢,則第一查詢用于更新分組描述符中的LocalUnitDefined字段的第一部分,第二查詢用于更新分組描述符中的LocalUnitDefined的第二部分,等等。 LocalUnitDefinedUpdateMask字段(例如,分組描述符)向TTI分類單元132指示將響應(yīng)于查詢來修改來自分組描述符中的LocalUnitDefined字段的哪些比特。在一個實施方式中,下一個最近的可編程內(nèi)核使用LocalUnitDefined字段來決定對分組執(zhí)行哪一種額外的動作。能夠在現(xiàn)場、在制造設(shè)施中等改變(即,重新配置)一個或多個表格,使得可以相對于網(wǎng)絡(luò)設(shè)備100中的可配置內(nèi)核單元所使用的修改的分組描述符字段來改變TTI分類單元132的功能。在一個實施方式中,TTI分類單元132被配置為允許分組繞過TTI分類單元132或 TTI分類單元132的一個或多個子單元的處理。例如,在一個實施方式中,如果TTI分類單元132在處理分組時執(zhí)行多個查詢操作,則TTI分類單元132被配置為允許分組繞過這些查詢操作中的一個或多個。在一個實施方式中,與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)的一個或多個字段向TTI分類單元132指示分組是否要繞過TTI分類單元132或TTI分類單元132的一個或多個子單元的處理。在一個實施方式中,由可配置內(nèi)核128來設(shè)置或修改數(shù)據(jù)結(jié)構(gòu)的這樣的一個或多個字段。
可配置內(nèi)核單元136耦合到TTI分類單元132。在一個實施方式中,可配置內(nèi)核單元136包括與可配置內(nèi)核單元128相同的結(jié)構(gòu)或者相似的結(jié)構(gòu)。在一個實施方式中,可配置內(nèi)核單元136能夠(例如在制造設(shè)施中、由用戶等等)被配置為執(zhí)行期望的操作。例如,在一個實施方式中,可配置內(nèi)核單元136能夠被配置為修改與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu), 該數(shù)據(jù)結(jié)構(gòu)是從TTI分類單元132或者管線102中的另一個適當(dāng)?shù)纳嫌螁卧邮盏?。然后,可配置?nèi)核單元136向管線中的下一個單元轉(zhuǎn)發(fā)修改的數(shù)據(jù)結(jié)構(gòu)。在一個實施方式中, 可配置內(nèi)核單元136基于由TTI分類單元132或另一個適當(dāng)?shù)膯卧薷牡姆纸M描述符中的 LocalUnitDefined字段來修改數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)或者執(zhí)行另一個適當(dāng)?shù)墓δ堋?br> 在一個實施方式中,省略了可配置內(nèi)核單元136。例如,由可配置內(nèi)核單元136執(zhí)行的對數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)的修改或者其它功能是由另一個可配置內(nèi)核執(zhí)行的, 或者根本不執(zhí)行。
在一個實施方式中,進入策略引擎140耦合到可配置內(nèi)核單元136。進入策略引擎140通常執(zhí)行流分類。流與有關(guān)的一系列分組相對應(yīng),并且可以以多種不同的方式進行定義。流的一個示例是由媒體訪問控制(MAC)報頭中的MAC源地址或特定的MAC目的地地址定義的。換言之,在一個示例中,具有特定的MAC源地址的所有分組與特定的流相對應(yīng)。 流的另一個示例是由MAC源地址目的地地址對定義的。換言之,在一個示例中,具有特定的 MAC源地址和MAC目的地地址的所有分組與特定的流相對應(yīng)。此外,在一些實施方式中,可以組合來自不同的協(xié)議層的字段以定義流。
在一個實施方式中,進入策略引擎140包括TCAM或其它適當(dāng)?shù)拇鎯ζ鳎蛘唏詈系絋CAM或者其它適當(dāng)?shù)拇鎯ζ鳌_M入策略引擎140通常使用正在處理的分組的報頭的字段以及其它適當(dāng)?shù)男畔⒆鳛槿ネ鵗CAM的密鑰。TCAM中的條目指示特定的規(guī)則或者要執(zhí)行的一組一個或多個動作(例如,關(guān)于流測量、VLAN分配、外出端口分配等)。在一些場景中, 要執(zhí)行的動作中的至少一些將由進入策略引擎140的下游的處理單元來執(zhí)行。因此,在一些場景中,進入策略引擎140向分組分配屬性以向下游處理單元指示如何處理該分組。在一個實施方式中,分配屬性包括將屬性指示符包括在與分組相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中。在一個實施方式中,進入策略引擎140使用TTI分類單元132執(zhí)行的查詢的結(jié)果。例如,在一個實施方式中,TTI分類單元132查詢的結(jié)果用作由進入策略引擎140執(zhí)行的查詢的密鑰的一部分。
在其它實施方式中,進入策略引擎140不使用TCAM。例如,在其它實施方式中,使用用于對多字段參數(shù)進行分類的哈希技術(shù)或任何其它適當(dāng)?shù)募夹g(shù)。因此,在一些實施方式中,省略進入策略引擎140的TCAM。
電橋引擎144耦合到進入策略引擎140。電橋引擎144包括或者耦合到轉(zhuǎn)發(fā)數(shù)據(jù)庫(未示出),該轉(zhuǎn)發(fā)數(shù)據(jù)庫包括MAC目的地地址和關(guān)于具有MAC目的地地址的分組應(yīng)當(dāng)轉(zhuǎn)發(fā)到的相應(yīng)外出端口的指示。在一個實施方式中,轉(zhuǎn)發(fā)數(shù)據(jù)庫包括具有MAC目的地地址和關(guān)于相應(yīng)的外出端口的指不的表格。在一個實施方式中,轉(zhuǎn)發(fā)數(shù)據(jù)庫更一般性地包括MAC 源地址和MAC目的地地址,并且提供MAC地址與端口和諸如以下各項中的一項或多項的其它參數(shù)的綁定指示分組是否由進入部分104反映到進入分析器(未示出)以進行進一步處理的標(biāo)志、指示分組是否將由外出部分112反映到外出分析器(未示出)以進行進一步處理的標(biāo)志、將用于用戶定義的功能的用戶定義的比特等。這些綁定主要用于轉(zhuǎn)發(fā)決定,但是也用于其它目的,例如,用于將分組反映給分析器以進行進一步處理、用戶定義的功能或應(yīng)用等。在一些實施方式中并且在至少一些場景中,電橋引擎144執(zhí)行MAC源地址查詢和 MAC目的地地址查詢。
在一個實施方式中,電橋引擎144通常使用層2信息來確定應(yīng)當(dāng)將分組轉(zhuǎn)發(fā)到的端口。在一些實例中,通過檢查分組的MAC目的地地址并且使用轉(zhuǎn)發(fā)數(shù)據(jù)庫確定目的地地址對應(yīng)的網(wǎng)絡(luò)分段來完成對是否應(yīng)當(dāng)轉(zhuǎn)發(fā)分組以及應(yīng)當(dāng)向哪里轉(zhuǎn)發(fā)分組的決定。此外,在其它實施方式和/或?qū)嵗校彩褂闷渌畔ⅰ@纾谝恍嵤┓绞街泻?或?qū)嵗惺褂?VLAN信息。例如,在一些實施方式中,電橋引擎144能夠使用VLAN信息確定用于層2多播或廣播分組的端口目的地。在一些實施方式中,電橋引擎144還維護轉(zhuǎn)發(fā)數(shù)據(jù)庫。例如,在一個實施方式中,電橋引擎144通過記錄與進入分組對應(yīng)的端口并且將該端口與分組的源 MAC地址相關(guān)聯(lián),來獲知進入分組的源MAC地址對應(yīng)的端口。在一個實施方式中,在另一個示例中,電橋引擎144通過記錄與進入分組相對應(yīng)的VLAN并且將端口與分組的VLAN相關(guān)聯(lián),來獲知進入分組的VLAN對應(yīng)的端口。
通常,轉(zhuǎn)發(fā)數(shù)據(jù)庫將用于做出轉(zhuǎn)發(fā)決定的多個變量進行相關(guān)。例如,轉(zhuǎn)發(fā)數(shù)據(jù)庫包括基于VLAN、端口和MAC地址的條目;例如,基于MAC地址和VLAN的查詢操作在橋接 (bridging)操作中是有用的。在一個實施方式中,電橋引擎144還使用由TTI分類單元132 提供的信息來做出轉(zhuǎn)發(fā)決定。因此,轉(zhuǎn)發(fā)數(shù)據(jù)庫記錄或表格條目包括與目的地MAC地址、端口、VLAN等中的一個或多個相關(guān)聯(lián)的字段。
在一個實施方式中,電橋引擎144使用的轉(zhuǎn)發(fā)數(shù)據(jù)庫包括以下各項中的一項或多項LocalUnitDefined[31: 0]字段、LocalUnitDefinedUpdateMask[31:0]字段和用于指示相應(yīng)的分組是應(yīng)當(dāng)繞過管線102的一個或多個可配置內(nèi)核單元還是通過管線 102的一個或多個可配置內(nèi)核單元而不由管線102的一個或多個可配置內(nèi)核單元處理的字段。LocalUnitDefined字段是與用于將來自剛剛處理分組描述符的單元的信息傳送到下一個最近的可編程內(nèi)核的數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)中的LocalUnitDefined 字段對應(yīng)的字段。例如,在一個實施方式中,如果諸如電橋引擎144的單元基于分組描述符執(zhí)行多個查詢,則第一查詢用于更新分組描述符中的LocalUnitDefined字段的第一部分,第二查詢用于更新分組描述符中的LocalUnitDefined的第二部分,等等。 LocalUnitDefinedUpdateMask字段(例如,分組描述符)向電橋引擎144指示將響應(yīng)于查詢來修改來自分組描述符中的LocalUnitDef ined字段的哪些比特。在一個實施方式中,下一個最近的可編程內(nèi)核使用LocalUnitDefined字段來決定將對分組執(zhí)行哪一種額外的動作。
在一個實施方式中,電橋引擎144被配置為允許分組繞過電橋引擎144或電橋引擎144的一個或多個子單元的處理。例如,在一個實施方式中,電橋引擎144被配置為允許分組繞過轉(zhuǎn)發(fā)數(shù)據(jù)庫查詢。在一個實施方式中,與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)的一個或多個字段向電橋引擎144指示分組是否繞過電橋引擎144或電橋引擎144的一個或多個子單元的處理。在一個實施方式中,由可配置內(nèi)核128和/或可配置內(nèi)核136來設(shè)置或修改數(shù)據(jù)結(jié)構(gòu)的此類一個或多個字段。
外出前(pre-egress)引擎148耦合到電橋引擎144。在一個實施方式中,外出前引擎148將進入部分104的先前的單元的決定合并為單個決定,并且相應(yīng)地更新與分組相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
在一個實施方式中,外出部分112耦合到外出前引擎148。在一個實施方式中并且在一些場景中,外出前引擎148確定與分組將轉(zhuǎn)發(fā)到的一個或多個目標(biāo)端口對應(yīng)的一個或多個物理目標(biāo)。物理目標(biāo)可以是物理端口設(shè)備對、干線、隧道起始、物理端口列表等。
在一個實施方式中,可配置內(nèi)核單元152耦合到外出前引擎148。在一個實施方式中,可配置內(nèi)核單元152包括與可配置內(nèi)核單元128相同的結(jié)構(gòu)或者類似的結(jié)構(gòu)。在一個實施方式中,可配置內(nèi)核單元152能夠被配置為(例如,在制造設(shè)施中、由用戶等)執(zhí)行期望的操作。例如,在一個實施方式中,可配置內(nèi)核單元152能夠被配置為修改與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是從進入部分104接收的。然后,可配置內(nèi)核單元152將經(jīng)修改的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)發(fā)給管線102中的下一個單元。
在一個實施方式中,省略了可配置內(nèi)核單元152。例如,由可配置內(nèi)核單元152對數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)或者其它功能執(zhí)行的修改是由另一個可配置內(nèi)核執(zhí)行的,或者根本不執(zhí)行。
傳輸排隊單元156耦合到可配置內(nèi)核單元152。例如,傳輸排隊單元156通常對與多個隊列中的分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)進行排隊,其中,所述多個隊列對應(yīng)于不同類別的流和/或不同的物理端口。在一個實施方式中,傳輸排隊單元156通常還執(zhí)行速率整形。
傳輸直接存儲器存取(TxDMA)單元160耦合到傳輸排隊單元156。TxDMA單元160 通常使用如上所述的與分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu),以識別將經(jīng)由一個或多個外出端口發(fā)送的分組。TxDMA單元160將所識別的分組寫入與一個或多個外出端口對應(yīng)的一個或多個傳輸緩沖器。
在一個實施方式中,可配置內(nèi)核單元164耦合到TxDMA單元160。在一個實施方式中,可配置內(nèi)核單元164包括與可配置內(nèi)核單元128相同的結(jié)構(gòu)或者類似的結(jié)構(gòu)。在一個實施方式中,可配置內(nèi)核單元164能夠(例如在制造設(shè)施中、由用戶等等)被配置為執(zhí)行期望的操作。例如,在一個實施方式中,可配置內(nèi)核單元164能夠被配置為修改與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是從管線102中的前一個單元接收的。然后,可配置內(nèi)核單元164 向管線102中的下一個單元轉(zhuǎn)發(fā)修改的數(shù)據(jù)結(jié)構(gòu)。
在一個實施方式中,省略了可配置內(nèi)核單元164。例如,由可配置內(nèi)核單元164執(zhí)行的對數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)的修改或者其它功能是由另一個可配置內(nèi)核執(zhí)行的, 或者根本不執(zhí)行。
報頭變更單元168耦合到可配置內(nèi)核單元164。在一些場景中,進入分組在分組報頭中具有VLAN字段和MAC字段,并且在一些場景中,必須(例如,根據(jù)與MAC DA相關(guān)聯(lián)的 VLAN)修改VLAN字段或者將分組多播傳送到不同的VLAN中的目的地設(shè)備。應(yīng)當(dāng)注意的是, 分組報頭的修改可以在進入供應(yīng)商網(wǎng)絡(luò)時或者在從供應(yīng)商網(wǎng)絡(luò)外出時發(fā)生。在一個實施方式中,報頭變更單元168維護信息從而允許適當(dāng)?shù)夭倏v分組報頭以促進這些多播操作。在一些實現(xiàn)中,報頭變更單元168獨立地或者與外出部分112的其它單元協(xié)作地操縱分組報頭。在一些實施方式中,報頭變更單元168實現(xiàn)對客戶端網(wǎng)絡(luò)的標(biāo)記的控制或者使得其它子網(wǎng)絡(luò)能夠?qū)崿F(xiàn)。為了支持該功能,報頭變更單元168被實現(xiàn)在查詢表、數(shù)據(jù)庫或者其它適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)中或者包括查詢表、數(shù)據(jù)庫或者其它適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),其中,查詢表、數(shù)據(jù)庫或者其它適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)將分組屬性信息、VLAN、VID、MAC地址與客戶端VLAN標(biāo)記偏好相關(guān)。此外,在一些場景中,報頭變更單元168指向隧道起始條目,該隧道起始條目提供與分組的所需的外部報頭有關(guān)的信息;在這一方面,隧道起始條目定義了將用于在供應(yīng)商網(wǎng)絡(luò)上發(fā)送分組的隧道。
在一個實施方式中,可配置內(nèi)核單元172耦合到報頭變更單元168。在一個實施方式中,可配置內(nèi)核單元172包括與可配置內(nèi)核單元128相同的結(jié)構(gòu)或者類似的結(jié)構(gòu)。在一個實施方式中,可配置內(nèi)核單元172能夠被配置為(例如,在制造設(shè)施中、由用戶等)執(zhí)行期望的操作。例如,在一個實施方式中,可配置內(nèi)核單元172能夠被配置為修改與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是從管線102中的前一個單元接收的。然后,可配置內(nèi)核單元 172將經(jīng)修改的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)發(fā)給管線102中的下一個單元。
在另一個實施方式中,與僅僅修改與分組相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)相反,可配置內(nèi)核單元172可以被配置為直接修改分組。例如,在一個實施方式中,可配置內(nèi)核單元172可以被配置為向分組添加封裝報頭信息。在一個實施方式中,管線102上游的另一個單元(例如, 另一個可配置內(nèi)核單元)(例如,在與分組相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中)提供向可配置內(nèi)核單元 172指示封裝報頭信息應(yīng)當(dāng)被添加到分組的信息。
作為另一個例子,在一個實施方式中,可配置內(nèi)核單元172可以被配置為對分組進行解封裝,即,被配置為從分組中移除封裝報頭信息。在一個實施方式中,管線102上游的另一個單元(例如,另一個可配置內(nèi)核單元)(例如,在與分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中)提供向可配置內(nèi)核單元172指示應(yīng)當(dāng)從分組中移除封裝報頭信息的信息。
在一個實施方式中,省略了可配置內(nèi)核單元172。例如,由可配置內(nèi)核單元172執(zhí)行的對數(shù)據(jù)結(jié)構(gòu)(例如,分組描述符)的修改或者其它功能是由另一個可配置內(nèi)核執(zhí)行的, 或者根本不執(zhí)行。
外出策略引擎176耦合到可配置內(nèi)核單元172。外出策略引擎176通常執(zhí)行流分類。當(dāng)分組屬于辨別的流時,外出策略176將該分組與流相關(guān)聯(lián)。例如,在一個實施方式中, 外出策略引擎176將流標(biāo)識符(ID)附接到分組以指示分組所屬的流。在至少一些場景和實現(xiàn)中,在從網(wǎng)絡(luò)設(shè)備100外出之前或者之時,從分組中移除流ID。例如,在一個實施方式中,如果網(wǎng)絡(luò)設(shè)備100是切換系統(tǒng)的包括其它類似的網(wǎng)絡(luò)設(shè)備(未示出)的組件并且如果分組離開切換系統(tǒng),則在從網(wǎng)絡(luò)設(shè)備100外出之前或之時,從分組中移除流ID。另一 方面, 在一個實施方式中,如果網(wǎng)絡(luò)設(shè)備100是切換系統(tǒng)的包括其它類似的網(wǎng)絡(luò)設(shè)備(未示出) 的組件并且如果正在將分組轉(zhuǎn)發(fā)給切換系統(tǒng)中的另一個網(wǎng)絡(luò)設(shè)備,則在從網(wǎng)絡(luò)設(shè)備100外出之前或之時,將流ID包含在分組的分布式切換架構(gòu)(DAS)標(biāo)簽中。
將端口 MAC傳輸單元180耦合到外出策略引擎176。端口 MAC傳輸單元180通常執(zhí)行介質(zhì)存取控制功能,并且將分組轉(zhuǎn)發(fā)給適當(dāng)?shù)耐獬鑫锢矶丝?116。
圖2是根據(jù)一個實施方式的用于處理分組的示例性方法200的流程圖。方法200 由諸如圖1的網(wǎng)絡(luò)設(shè)備100的網(wǎng)絡(luò)設(shè)備來執(zhí)行。為了說明的目的,參照圖1討論方法200。 然而,在一個實施方式中,方法200是由除了網(wǎng)絡(luò)設(shè)備100的其它適當(dāng)?shù)木W(wǎng)絡(luò)設(shè)備來執(zhí)行的。
此外,為了說明的目的,參照這樣的實施方式討論了方法200,在該實施方式中,在可配置內(nèi)核單元的配置之前將管線102配置為至少處理符合以太網(wǎng)協(xié)議的分組但是不能處理符合以太網(wǎng)光纖信道(FCoE)協(xié)議的分組(除了將這些FCoE分組視作以太網(wǎng)分組)。 雖然使用與FCoE有關(guān)的示例說明了管線的實施方式的操作,但是本專利的范圍不限于該特定的應(yīng)用。在其它實施方式中,對符合其它適當(dāng)?shù)膮f(xié)議的分組進行類似的處理。
在方框204,在網(wǎng)絡(luò)設(shè)備100處接收符合以太網(wǎng)光纖信道(FCoE)協(xié)議的分組。FCoE 分組包括封裝在以太網(wǎng)幀中的符合光纖信道(FC)協(xié)議(即,F(xiàn)C分組)的分組。
在方框208,RxDMA單元124或者另一個適當(dāng)?shù)膯卧獜腇CoE分組的以太網(wǎng)報頭中提取報頭信息并且將提取出的報頭信息存儲在與FCoE分組相關(guān)聯(lián)的分組描述符(即,數(shù)據(jù)結(jié)構(gòu))中。例如,從FCoE分組的以太網(wǎng)報頭中提取MAC目的地地址(DA),并且將其存儲在描述符的MAC DA字段中。
在方框212,由TTI分類單元132處理FCoE分組。例如,TTI分類單元132的一個或多個表格被配置為使得響應(yīng)于由TTI分類單元132執(zhí)行的一個或多個查詢操作,TTI分類單元132從FCoE分組內(nèi)的FC分組中提取目的地標(biāo)識符(D_ID),并且將D_ID存儲在描述符的用戶數(shù)據(jù)字段中。在一個實施方式中,用戶數(shù)據(jù)字段是描述符中的可以用于在執(zhí)行可配置的功能時在管線的單元之間傳送信息的字段。例如,用戶可以配置TTI分 類單元132 以從FCoE分組中提取D_ID,并且將D_ID存儲在用戶數(shù)據(jù)字段中。在其它實施方式中,用戶數(shù)據(jù)字段可以用于存儲要在管線的單元之間傳送的其它類型的信息。因此,例如,在一個實施方式中,TTI分類單元132可以(例如,至少部分地通過修改TTI分類單元132的一個或多個表格或者通過另一種適當(dāng)?shù)募夹g(shù))被配置為識別FCoE分組并且從這些分組中提取D_ ID。例如,在一個實施方式中,響應(yīng)于一個或多個查詢操作,TTI分類單元132在描述符中 (例如,在描述符的LocalUnitDefined字段中)存儲指示符,該指示符以信號形式告知可配置內(nèi)核單元136關(guān)于與該描述符相關(guān)聯(lián)的分組是FCoE分組。如上文所討論的,TTI分類單元132的一個或多個表格能夠在現(xiàn)場、在制造設(shè)施等中被改變(即,被重新配置),使得TTI 分類單元132的功能被改變,以提取D_ID,在描述符中存儲0_10,并且存儲以信號形式告知可配置內(nèi)核單元136的指示符。
在方框216,響應(yīng)于接收到與FCoE分組相關(guān)聯(lián)的描述符,可配置內(nèi)核單元136確定該描述符將由可配置內(nèi)核單元136修改。例如,可配置內(nèi)核單元136在描述符中(例如,在描述符的LocalUnitDefined字段中)檢測到指示符,該指示符以信號形式告知可配置內(nèi)核單元136與描述符相關(guān)聯(lián)的分組是FCoE分組。例如,可配置內(nèi)核單元136確定描述符中的 MAC DA字段應(yīng)當(dāng)由存儲在描述符的用戶數(shù)據(jù)字段中的D_ID值重寫。在TTI分類單元132 在描述符中存儲以信號形式告知與描述符相關(guān)聯(lián)的分組是FCoE分組的實施方式中,可配置內(nèi)核單元136響應(yīng)于分析描述符中的以信號形式告知FCoE分組的指示符,確定描述符中的MAC DA字段應(yīng)當(dāng)由存儲在描述符的用戶數(shù)據(jù)字段中的D_ID值重寫。
在方框220,可配置內(nèi)核單元136響應(yīng)于方框216處的確定,從描述符的用戶數(shù)據(jù)字段得到D_ID值,并且將D_ID存儲在描述符的MAC DA字段中(例如,使用D_ID值來重寫 MAC DA 字段)。
在方框224,不熟悉FCoE協(xié)議但是能夠基于MAC DA做出轉(zhuǎn)發(fā)決定的電橋引擎144 至少部分地基于描述符的MAC DA字段來處理FCoE字段,其中,該MAC DA字段由D_ID值重寫。例如,在一個實施方式中,電橋引擎144至少基于描述符的MAC DA字段來在轉(zhuǎn)發(fā)數(shù)據(jù)庫中執(zhí)行查詢操作。由電橋引擎144在方框224處執(zhí)行的其它處理包括基于使用描述符的MAC DA字段執(zhí)行的查詢操作來確定網(wǎng)絡(luò)設(shè)備100將經(jīng)由其發(fā)送分組的一個或多個外出端口。由于在方框220處執(zhí)行的操作,因此電橋引擎144使用FC分組的D_ID字段(其將被寫入到描述符的MAC DA字段中)而不是使用以太網(wǎng)報頭的原始MAC DC字段來做出轉(zhuǎn)發(fā)決定(例如,確定將經(jīng)由其發(fā)送分組的一個或多個外出端口)。
在一個實施方式中,電橋引擎144不另外被配置為使用來自封裝在以太網(wǎng)幀中的 FC分組的信息來做出轉(zhuǎn)發(fā)決定。例如,電橋引擎144被配置為至少使用描述符(通常具有以太網(wǎng)報頭的MAC DA值的值)中的MAC DA字段,但是不使用描述符的用戶數(shù)據(jù)字段。·因此,如果未執(zhí)行方框220的操作,則電橋引擎144將使用以太網(wǎng)報頭的MAC DA值來做出轉(zhuǎn)發(fā)決定。然而,因為在方框220,可配置內(nèi)核單元136在描述符的MAC DA字段中存儲了來自FC分組的D_ID值,因此使得電橋引擎144利用D_ID值來做出轉(zhuǎn)發(fā)決定。因此,電橋引擎144做出轉(zhuǎn)發(fā)決定,如同F(xiàn)CoE分組僅僅是以太網(wǎng)分組一樣,但是實際上使用來自封裝在以太網(wǎng)幀中的FC分組的信息來做出轉(zhuǎn)發(fā)決定。
FCoE分組進一步由管線102進行處理。類似地,管線102中的其它單元(例如,外出前引擎148、TxQ單元156、TxDMA單元160等)不另外被配置為當(dāng)處理分組時使用來自封裝在以太網(wǎng)幀中的FC分組的信息。因此,在一個實施方式中,管線102中的這些其它單元處理FCoE分組,如同F(xiàn)CoE分組僅僅是以太網(wǎng)分組一樣。例如,管線102中的一個或多個其它單元基于描述符的MAC DA字段并且假設(shè)存儲在描述符的MAC DA字段中的值是來自以太網(wǎng)報頭的MAC DA字段的值(當(dāng)實際上來自FC分組的D_ID值存儲在描述符的MAC DA字段中時),來處理FCoE分組。
更一般地,在上面所討論的場景中,以太網(wǎng)協(xié)議是第一網(wǎng)絡(luò)通信協(xié)議(第一協(xié)議) 的示例,F(xiàn)CoE協(xié)議是第二網(wǎng)絡(luò)通信協(xié)議(第二協(xié)議)的示例。在一個實施方式中,當(dāng)網(wǎng)絡(luò) 100的管線單元中的很多管線單元不適合于處理符合第二協(xié)議的分組時,一個或多個可配置內(nèi)核允許適合于處理符合第一協(xié)議的分組的管線102被重新配置為處理符合第二協(xié)議的分組。例如,在一個實施方式中,管線102的單元中的很多單元將分組描述符的字段看作為與由第一協(xié)議指定的第一分組報頭字段對應(yīng)。然而,可配置內(nèi)核單元被配置為在分組描述符的字段中存儲來自由第二協(xié)議指定的第二分組報頭字段的值。因此,使得當(dāng)處理分組時使用描述符的字段的可配置內(nèi)核單元下游的一個或多個單元使用由第二協(xié)議指定的第二分組報頭字段,但是這些單元假設(shè)它們正在使用由第一協(xié)議指定的第一分組報頭字段。 因此,使得可配置內(nèi)核單元下游的一個或多個單元在這些單元沒有另外被配置為使用由第二協(xié)議指定的第二分組報頭字段時使用由第二協(xié)議指定的第二分組報頭字段。
圖3是根據(jù)一個實施方式的用于處理分組的另一個示例性的方法300的流程圖。方法300是由諸如圖1的網(wǎng)絡(luò)設(shè)備100的網(wǎng)絡(luò)設(shè)備執(zhí)行的。為了說明的目的,參照圖1討論了方法300。然而,在一個實施方式中,方法300是由除了網(wǎng)絡(luò)設(shè)備100以外的適當(dāng)?shù)木W(wǎng)絡(luò)設(shè)備執(zhí)行的。
此外,為了說明的目的,參照一個實施方式討論了方法300,在該實施方式中,在可配置內(nèi)核單元的配置之前,管線102不能處理符合封裝協(xié)議的分組(除了將這些分組視作符合管線102的單元已知的一些其它協(xié)議(例如,以太網(wǎng)協(xié)議或者另一種適當(dāng)?shù)膮f(xié)議)的分組)。在其它實施方式中,對符合其它適當(dāng)?shù)膮f(xié)議的分組進行類似的處理。
在方框304,在網(wǎng)絡(luò)設(shè)備100處接收符合封裝協(xié)議的分組。符合封裝協(xié)議的分組 (接收的分組)包括封裝報頭和符合不同的協(xié)議(在本文中也稱作內(nèi)部分組協(xié)議)的內(nèi)部分組。
在方框308,RxDMA單元124或者另一個適當(dāng)?shù)膯卧獜姆庋b報頭中提取報頭信息, 并且將提取出的報頭信息存儲在與接收的分組相關(guān)聯(lián)的分組描述符(即,數(shù)據(jù)結(jié)構(gòu))中。 例如,從接收的分組的封裝報頭中提取MAC目的地地址(DA),并且將其存儲在描述符的MAC DA字段中。
在方框312,TTI分類單元132或者另一個適當(dāng)?shù)奶幚韱卧幚斫邮盏姆纸M。例如,在一個實施方式中,TTI分類單元132可以(例如,至少部分地通過修改TTI分類單元 132的一個或多個表格或者通過另一種適當(dāng)?shù)募夹g(shù))被配置為執(zhí)行不同的功能和/或識別管線的其它單元 不能處理或識別的不同類型的分組。例如,在一個實施方式中,TTI分類單元132的一個或多個表格被配置為使得響應(yīng)于由TTI分類單元132執(zhí)行的一個或多個查詢操作,該TTI分類單元132提取封裝報頭中的與封裝協(xié)議對應(yīng)的一個或多個字段(在本文中稱作一個或多個封裝字段),并且將一個或多個封裝字段存儲在描述符的一個或多個數(shù)據(jù)字段中。附加地或可替換地,在一個實施方式中,TTI分類單元132的一個或多個表格被配置為使得響應(yīng)于由TTI分類單元132執(zhí)行的一個或多個查詢操作,該TTI分類單元132 從內(nèi)部分組提取一個或多個字段(在本文中稱作一個或多個內(nèi)部分組字段),并且將一個或多個封裝字段存儲在描述符的一個或多個用戶數(shù)據(jù)字段中。如上文所討論的,TTI分類單元132的一個或多個表格能夠在現(xiàn)場、在制造設(shè)施等中被改變(即,被重新配置),使得TTI 分類單元132的功能被改變,以提取封裝報頭中和/或內(nèi)部分組中的一個或多個字段,并且將一個或多個字段存儲在描述符中。
在方框316,可配置內(nèi)核單元136響應(yīng)于接收到與接收的分組相關(guān)聯(lián)的描述符, 確定接收的分組符合封裝協(xié)議并且管線102應(yīng)當(dāng)解封裝所接收的分組,這包括移除封裝報頭。例如,在一個實施方式中,可配置內(nèi)核單元136被配置為識別存儲在描述符的一個或多個用戶數(shù)據(jù)字段中的信息,所述信息指示接收的分組符合封裝協(xié)議并且應(yīng)當(dāng)對接收的分組執(zhí)行解封裝過程。在一個實施方式中,用戶數(shù)據(jù)字段是描述符中的可以用于在執(zhí)行可配置的功能時在管線的單元之間傳送信息的字段。例如,用戶可以配置TTI分類單元132以在用戶數(shù)據(jù)字段中存儲信息,該信息指示所接收的分組符合封裝協(xié)議并且應(yīng)當(dāng)對所接收的分組執(zhí)行解封裝過程。在一個實施方式中,用戶可以配置TTI分類單元132以在描述符的 LocalUnitDefined字段中存儲信息,該信息指示接收的分組符合封裝協(xié)議并且應(yīng)當(dāng)對接收的分組執(zhí)行解封裝過程。
在方框320,在一個實施方式中,響應(yīng)于確定應(yīng)當(dāng)對接收的分組執(zhí)行解封裝過程,可配置內(nèi)核單元136在描述符中存儲指示符,該指示符以信號形式告知管線102的下游單元應(yīng)當(dāng)對接收的分組執(zhí)行解封裝過程。
該分組由管線102的其它單元處理,如同該分組符合管線102已知的協(xié)議一樣,直到描述符到達可配置內(nèi)核172為止。例如,描述符中的以信號形式告知應(yīng)當(dāng)執(zhí)行解封裝過程的指示符被可配置內(nèi)核136與可配置內(nèi)核172之間的管線單元忽略。
在方框324,可配置內(nèi)核172分析描述符并且識別描述符中的以信號形式告知應(yīng)當(dāng)執(zhí)行解封裝過程的指示符。響應(yīng)于該指示符,可配置內(nèi)核172對接收的分組進行解封裝, 其包括從接收的分組中移除封裝報頭。
分組由管線102的后續(xù)單元進一步處理并且經(jīng)由適當(dāng)?shù)耐獬龆丝谶M行發(fā)送。
圖4是根據(jù)一個實施方式的用于處理分組的另一個示例性方法400的流程圖。方法400由諸如圖1的網(wǎng)絡(luò)設(shè)備100的網(wǎng)絡(luò)設(shè)備執(zhí)行。為了說明的目的,參照圖1討論了方法400。然而,在一個實施方式中,方法400是由除了網(wǎng)絡(luò)設(shè)備100以外的適當(dāng)?shù)木W(wǎng)絡(luò)設(shè)備執(zhí)行的。
此外為了說明的目的,參照一個實施方式討論了方法400,在該實施方式中,管線 102在可配置內(nèi)核單元的配置之前不能生成符合封裝協(xié)議的分組。在其它實施方式中,類似地生成符合其它適當(dāng)?shù)膮f(xié)議的分組。
在方框404,在網(wǎng)絡(luò)設(shè)備100處接收分組。在方框408,RxDMA單元124或另一個適當(dāng)?shù)膯卧獜姆纸M的報頭中提取報頭信息,并且將提取出的報頭信息存儲在與接收的分組相關(guān)聯(lián)的分組描述符(即,數(shù)據(jù)結(jié)構(gòu))中。例如,從接收的分組的封裝報頭中提取MAC目的地地址(DA),并且將其存儲在描述符的MAC DA字段中。
在方框416,可配置內(nèi)核單元136響應(yīng)于接收到與接收的分組相關(guān)聯(lián)的描述符,確定應(yīng)當(dāng)根據(jù)封裝協(xié)議來封裝接收的分組。作為一個示例,封裝可以用于在帶寬有限的情況下例如在射頻/微波傳輸中執(zhí)行IP報頭壓縮。在這些情況下,在一個實施方式中,MAC和 /或IP報頭在傳輸之前被移除并且被標(biāo)識符替換。在一個實施方式中,接收設(shè)備分析報頭并且檢測標(biāo)識符而不是MAC和IP報頭??删幊痰膬?nèi)核單元136檢測該標(biāo)識符或者另一個適當(dāng)?shù)闹甘痉⑶翼憫?yīng)于檢測到該標(biāo)識符或另一個適當(dāng)?shù)闹甘痉?,確定應(yīng)當(dāng)基于標(biāo)識符封裝該分組(例如,將MAC和IP報頭添加回分組)。
在方框420,在一個實施方式中,響應(yīng)于確定應(yīng)當(dāng)封裝接收的分組,可配置內(nèi)核單元136在描述符中存儲指示符,該指示符以信號形式告知管線102的下游單元應(yīng)當(dāng)對接收的分組執(zhí)行封裝過程。
分組由管線102的其它單元處理,而不考慮封裝協(xié)議,直到描述符到達可配置內(nèi)核172為止。例如,描述符中的以信號形式告知應(yīng)當(dāng)執(zhí)行封裝過程的指示符被可配置內(nèi)核 136與可配置內(nèi)核172之間的管線單元忽略。
在方框424,可配置內(nèi)核172分析描述符并且識別描述符中的以信號形式告知應(yīng)當(dāng)執(zhí)行封裝過程的指示符。響應(yīng)于該指示符,可配置內(nèi)核172根據(jù)封裝協(xié)議封裝接收的分組,其包括將封裝報頭添加到接收的分組。
該分組由管線102的后續(xù)單元進一步處理,并且經(jīng)由適當(dāng)?shù)耐獬龆丝谶M行發(fā)送。
再次參照圖1,在一個實施方式中,報頭變更單元168可以被配置為通過將用戶定義的報頭添加到分組來修改分組的報頭。在一個實施方式中,報頭變更單元168可以被配置為基于一個或多個用戶定義的報頭表格來將用戶定義的報頭添加到分組。在一個實施方式中,報頭變更單元168使用與將添加到分組的一個或多個用戶定義的報頭對應(yīng)的第一表格。對于每一個用戶定義的報頭,第一表格包括將由報頭變更單元168使用以創(chuàng)建用戶定義的報頭的信息。例如,在一個實施方式中,第一表格包括將包括在用戶定義的報頭中的信息。作為另一個例子,在一個實施方式中,第一表格包括指示將用戶定義的報頭添加到分組中的位置的偏移信息。作為另一個例子,在一個實施方式中,第一表格包括指示將添加的用戶定義的報頭的長度的信息。作為另一個例子,第一表格包括用于在添加了用戶定義的報頭以后生成與分組的報頭相關(guān)聯(lián)的校驗和的信息,例如,校驗和類型、報頭中的用于生成校驗和的起始位置、報頭中的用于生成校驗和的結(jié)束位置、關(guān)于存儲校驗和的結(jié)果的位置的指示等中的一個或多個。
在一個實施方式中,第一表格中的每一個條目(該條目與用戶定義的報頭相對應(yīng))包括與第二表格的偏移。第二表格包括將由報頭變更單元168使用以創(chuàng)建用戶定義的報頭的其它信息。在一個實施方式中,第二表格包括關(guān)于將來自第一表格的信息與額外的信息進行組合的信息,例如,數(shù)據(jù)結(jié)構(gòu)中的與用戶定義的報頭將添加到的分組對應(yīng)的信息。 在一個實施方式中,第二表格中的每一個條目包括以下各項中的一項或多項關(guān)于額外的信息對應(yīng)的用戶定義的報頭中的位置的指示、用于將來自第一表格的信息與額外的信息進行組合的掩碼(mask)等。
在一個實施方式中,報頭變更單兀168使用的第一表格和第二表格能夠在現(xiàn)場、 在制造設(shè)施等中被改變(即,被重新配置)以改變報頭變更單元168用于使報頭變更單元 168能夠向分組添加用戶定義的報頭的方式。
圖5是根據(jù)一個實施方式的用于修改報頭的示例性方法500的數(shù)據(jù)流圖。方法 500由諸如圖1的網(wǎng)絡(luò)設(shè)備100的報頭變更單元168的被配置為執(zhí)行報頭變更的網(wǎng)絡(luò)設(shè)備的單元執(zhí)行。為了說明的目的,參照圖1討論了方法500。然而,在一個實施方式中,方法 500是由除了網(wǎng)絡(luò)設(shè)備100以外的適當(dāng)?shù)木W(wǎng)絡(luò)設(shè)備執(zhí)行的。
此外,為了說明的目的,參照一個實施方式討論了方法500,在該實施方式中,管線 102在可配置內(nèi)核單 元以及報頭變更單元168的第一表格和第二表格或者另一個適當(dāng)?shù)奶幚韱卧呐渲弥?,不能生成由方?00產(chǎn)生的報頭。在其它實施方式中,類似地生成其它適當(dāng)?shù)姆纸M報頭。
在一個實施方式中,從報頭變更單元168上游的可配置內(nèi)核單元(例如,從可配置內(nèi)核單元164)接收報頭部分504。例如,在一個實施方式中,可配置內(nèi)核單元164修改分組描述符以包括報頭部分504。在一個實施方式中,可配置內(nèi)核單兀164修改分組描述符以包括以信號形式向報頭變更單元168告知報頭變更單元168將向分組添加用戶定義的報頭的指示符。然后,可配置內(nèi)核單元164向報頭變更單元168發(fā)送分組描述符。
響應(yīng)于接收到描述符,報頭變更單元168確定將用戶定義的報頭添加到分組。例如,報頭變更單元168檢測描述符中的關(guān)于用戶定義的報頭將添加到分組的指示符。報頭變更單兀168然后從分組描述符獲得報頭部分504,然后使用報頭部分504在第一表格中執(zhí)行第一查詢操作。在一個實施方式中,第一查詢操作的輸出包括將用于生成用戶定義的報頭的報頭模板508。在一個實施方式中,第一查詢操作的輸出還包括指示將在分組中添加用戶定義的報頭的位置的偏移信息。在一個實施方式中,第一查詢操作的輸出還包括指示將添加的用戶定義的報頭的長度的信息。第一查詢操作的輸出還包括用于在添加了用戶定義的報頭之后生成與分組的報頭相關(guān)聯(lián)的檢驗和的信息。
在一個實施方式中,查詢操作的輸出還包括第二表格中的索引。報頭變更單元168 使用該索引來在第二表格中執(zhí)行第二查詢操作。在一個實施方式中,第二查詢操作的輸出包括關(guān)于如何將報頭部分504與報頭模板508進行組合的信息。例如,在一個實施方式中, 第二查詢操作的輸出包括指示報頭部分504相對于報頭模板508的偏移的偏移信息。作為另一個例子,在一個實施方式中,第二查詢操作的輸出包括掩碼信息(例如,掩碼512),該掩碼信息與報頭部分504相對應(yīng)并且將用于將報頭部分504與報頭模板508相結(jié)合。
現(xiàn)在參照圖5,根據(jù)使用第二查詢操作從第二表格獲得的偏移信息來安排報頭部分504,并且在第一 AND操作中組合報頭部分504和掩碼512。類似地,在第二 AND (與)操作中組合報頭模板508和掩碼512的邏輯逆。在OR(或)操作中組合第一 AND操作的結(jié)果和第二 AND操作的結(jié)果以生成臨時用戶定義的報頭520。根據(jù)使用第一查詢操作從第一表格獲得的長度信息來縮短臨時用戶定義的報頭520以生成用戶定義的報頭524。
然后,在由使用第一查詢操作從第一表格獲得的偏移信息指示的分組中的位置處將用戶定義的報頭524添加到分組。用戶定義的報頭524添加到的分組包括原始的分組報頭部分528和剩余部分532。在一個實施方式中,剩余部分532被縮短以移除將由用戶定義的報頭524替換或者以其它方式從分組省略的報頭信息。
將用于在添加了用戶定義的報頭524以后生成與分組的報頭相關(guān)聯(lián)的校驗和的信息是使用第一查詢操作從第一表格獲得的,并且該信息包括以下各項中的一項或多項 校驗和類型、報頭中的用于生成校驗和的起始位置、報頭中的用于生成校驗和的結(jié)束位置、 關(guān)于報頭中的存儲校驗和的結(jié)果的位置的指示等。該信息由報頭變更單元168使用以在插入用戶定義的報頭524以 后生成與分組對應(yīng)的校驗和,并且報頭變更單元168在分組中存儲該校驗和。
在其它實施方式或場景中,雖然圖5示出了插入到原始的分組報頭部分528與剩余部分532之間的用戶定義的報頭524,但是在其它位置中添加用戶定義的報頭524。例如, 在其它實施方式或場景中,用戶定義的報頭524被添加到分組的開始,即,在原始分組報頭部分528之前。在一個實施方式中,插入用戶定義的報頭524包括重寫原始分組報頭的至少一部分。
圖6是根據(jù)一個實施方式的用于處理分組的另一個示例性的方法600的流程圖。 方法600是由諸如圖1的網(wǎng)絡(luò)設(shè)備100的網(wǎng)絡(luò)設(shè)備執(zhí)行的。為了說明的目的,參照圖1和圖5討論了方法600。然而,在一個實施方式中,方法600是由除了網(wǎng)絡(luò)設(shè)備100以外的適當(dāng)?shù)木W(wǎng)絡(luò)設(shè)備和/或使用除了與圖5對應(yīng)的技術(shù)以外的適當(dāng)?shù)募夹g(shù)來執(zhí)行的。
此外,為了說明的目的,參照這樣的實施方式討論了方法600,在該實施方式中,在可配置內(nèi)核單元和報頭變更單元168的配置(例如,由報頭變更單元168使用的一個或多個表格的配置)之前管線102不能生成具有添加到分組的包括用戶定義的報頭的一個或多個特定的報頭的分組。
在方框604,在網(wǎng)絡(luò)設(shè)備100處接收分組。在方框608,RxDMA單元124或另一個適當(dāng)?shù)膯卧獜姆纸M的報頭中提取報頭信息,并且將提取出的報頭信息存儲在與接收的分組相關(guān)聯(lián)的分組描述符(即,數(shù)據(jù)結(jié)構(gòu))中。例如,從接收的分組的封裝報頭中提取MAC目的地地址(DA),并且將其存儲在描述符的MAC DA字段中。
在方框612,可配置內(nèi)核單元164響應(yīng)于接收到與接收的分組相關(guān)聯(lián)的描述符,確定應(yīng)當(dāng)向接收的分組添加用戶定義的報頭。確定應(yīng)當(dāng)向接收的分組添加用戶定義的報頭是基于描述符中攜帶的信息(例如,以下各項中的一項或多項目標(biāo)端口、 ProgrammableCoreDefined字段、VLAN或者任何其它適當(dāng)?shù)淖侄?。在一個實施方式中, ProgrammableCoreDefined字段是字段。例如,這種用戶定義的報頭可以是與專用網(wǎng)絡(luò)協(xié)議或處于正在標(biāo)準(zhǔn)化但是還未完成的過程中的網(wǎng)絡(luò)協(xié)議(例如,使用通用路由封裝的網(wǎng)絡(luò)虛擬化(NVGRE)協(xié)議、虛擬可擴展局域網(wǎng)(VxLAN)協(xié)議)對應(yīng)的報頭。因此,在網(wǎng)絡(luò)交換機執(zhí)行方法600或另一個類似的適當(dāng)方法的實施方式中,網(wǎng)絡(luò)交換機能夠在例如制造以后被配置為發(fā)送具有與專用協(xié)議或在制造交換機時還未完成的協(xié)議對應(yīng)的報頭的分組。
在方框616,響應(yīng)于確定用戶定義的報頭應(yīng)當(dāng)添加到接收的分組,可配置內(nèi)核單元 164修改描述符以包括指示符,從而以信號形式告知報頭變更單元168應(yīng)當(dāng)將用戶定義的報頭添加到接收的分組。例如,在一個實施方式中,可配置內(nèi)核單元164修改描述符中的向報頭變更單元168指示報頭變更單元168應(yīng)當(dāng)將哪一個封裝添加到分組的字段。
在方框620,響應(yīng)于確定應(yīng)當(dāng)將用戶定義的報頭添加到接收的分組,可配置內(nèi)核單元164修改分組描述符以包括關(guān)于將添加到接收的分組的用戶定義的報頭的指示符。
在其它實施方式中,在方框616和/或620,除了可配置內(nèi)核單元164以外的適當(dāng)?shù)目膳渲脙?nèi)核單元修改描述符。在一個實施方式中,在管線102的其它單元位于i)修改分組描述符以包括將添加用戶定義的報頭的指示符和/或?qū)⒁砑拥奶囟ǖ挠脩舳x的報頭的指示符的可配置內(nèi)核單元與ii)報頭變更單元168之間的實施方式中,分組由管線 102的其它單元處理,而不考慮這些指示符。例如,這些指示符由可配置內(nèi)核與報頭變更單元168之間的管線單元忽略。
在方框624,報頭變更單元168分析描述符并且識別描述符中的以信號形式告知應(yīng)當(dāng)添加用戶定義的報頭的指 示符。響應(yīng)于該指示符,報頭變更單元168使用來自描述符的信息來在一個或多個表格中執(zhí)行一個或多個查詢操作,以確定將要添加的用戶定義的報頭。例如,報頭變更單兀168使用上面參照圖5所討論的第一表格和第二表格來執(zhí)行第一查詢操作和第二查詢操作。例如,在制造設(shè)施和/或在現(xiàn)場配置一個或多個表格(例如,參照圖5所討論的第一表格和第二表格),以使報頭變更單元168能夠使用一個或多個查詢操作的結(jié)果來確定用戶定義的報頭。
在方框628,報頭變更單元168將用戶定義的報頭添加到分組。在一個實施方式中,如參照圖5所討論的,報頭變更單元168將用戶定義的報頭添加到分組。
管線102的后續(xù)單元進一步處理分組,并且經(jīng)由適當(dāng)?shù)耐獬龆丝趤戆l(fā)送該分組。
圖7是根據(jù)一個實施方式的示例性的可配置內(nèi)核單元700的框圖。在一些實施方式中,可配置內(nèi)核單元700用作以下各項中的一項或多項圖1的可配置內(nèi)核單元128、可配置內(nèi)核單元136、可配置內(nèi)核單元152、可配置內(nèi)核單元164和可配置內(nèi)核單元172。在其它實施方式中,在一些實施方式中,圖1的可配置內(nèi)核單元中的一個或多個是與可配置內(nèi)核單元700不同的適當(dāng)?shù)目膳渲脙?nèi)核。類似地,在一些實施方式中,在除了圖1的網(wǎng)絡(luò)設(shè)備 100以外的網(wǎng)絡(luò)設(shè)備中使用可配置內(nèi)核單元700。
可配置內(nèi)核單元700包括被配置為向多個處理引擎708分配描述符(即,與分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu))的分配器(sprayer) 704。多個處理引擎708被配置為允許并行處理多個描述符以促進可配置內(nèi)核單元700以網(wǎng)速(例如,足以以網(wǎng)絡(luò)交換機接收分組的速率處理分組的速度)操縱報頭的能力。例如,在一個實施方式中,在描述符以固定的間隔(例如,與管線的時鐘對應(yīng)的一個或多個時鐘周期)通過管線的管線中使用可配置內(nèi)核單元700。換言之,管線的至少一些單元中的每一個(包括可配置內(nèi)核單元700)被配置為一旦準(zhǔn)備好, 就以固定的間隔輸出描述符。通過使用被配置為并行處理多個描述符的多個處理引擎708, 可配置內(nèi)核單元700能夠以與管線的其它單元對應(yīng)的速率處理分組描述符。然而,在另一個實施方式中,可配置內(nèi)核單元700包括單個處理引擎,該單個處理引擎被配置為以充分高于管線的時鐘速率的速度操作,使得一旦準(zhǔn)備好,單個處理引擎就以管線的時鐘速率輸出描述符。
每一個處理引擎708包括處理器712和一個或多個存儲器716。每一個處理器712 適合于執(zhí)行存儲在相應(yīng)的存儲器716中的機器可讀指令。在一個實施方式中,每一個存儲器716另外存儲由處理器712使用的數(shù)據(jù),并且存儲由處理器712操作的一個或多個描述符。在一個實施方式中,每一個存儲器716是單個存儲器設(shè)備。在另一個實施方式中,每一個存儲器716對應(yīng)于多個存儲器設(shè)備,其包括與以下各項對應(yīng)的存儲器設(shè)備i)機器可讀指令(代碼)、ii)處理器712使用的數(shù)據(jù)以及iii)處理器712操作的一個或多個描述符。在另一個實施方式中,每一個存儲器716對應(yīng)于多個存儲器設(shè)備,其包括與以下各項對應(yīng)的存儲器設(shè)備i)機器可讀指令(代碼)以及ii)由處理器712使用的包括一個或多個描述符的數(shù)據(jù)。在一個實施方式中,多個處理器712共享一個或多個存儲器設(shè)備(例如,多端口存儲器設(shè)備、高速RAM設(shè)備等)。僅作為一個例子,在一個實施方式中,如果多個處理器 712將執(zhí)行相同的功能,則多個處理器712共享存儲代碼的單個多端口和/或高速RAM設(shè)備。
在一個實施方式中,每一個處理器712包括微碼引擎。在其它實施方式中,每一個處理器712包括除了微碼引擎以外的適當(dāng)?shù)奶幚砥鳌?br> 可配置內(nèi)核單元700還包括先入先出(FIFO)存儲器系統(tǒng)720。
在操作中,當(dāng)描述符由可配置內(nèi)核單元700接收時,分配器704確定將向其發(fā)送描述符的處理器引擎708中一個。在一個實施方式中,分配器704基于確定哪些處理引擎708 繁忙(例如,已經(jīng)處理另一個描述符)來確定一個處理引擎708。在一個實施方式中,分配器704基于經(jīng)由其接收到與描述符對應(yīng)的分組的端口來確定一個處理引擎708。在一個實施方式中,分配器704可以被配置為將處理弓I擎708的一個或多個子集與一個或多個端口相對應(yīng)。
在一個實施方式中,分配器704還被配置為向描述符分配指示符(ID)。在一個實施方式中,分配給描述符的ID允許可配置 內(nèi)核單元700以可配置內(nèi)核單元700接收描述符的順序輸出描述符。在一個實施方式中,分配器704被配置為以循環(huán)的方式向描述符分配 ID。在其它實施方式中,分配器704被配置為以另一種適當(dāng)?shù)姆绞较蛎枋龇峙銲D。
當(dāng)分配器704向處理引擎708發(fā)送描述符時,分配器704還向處理引擎708和FIFO 存儲器系統(tǒng)720發(fā)送相應(yīng)的ID。在一個實施方式中,F(xiàn)IFO存儲器系統(tǒng)720維護指示在FIFO 存儲器系統(tǒng)720中哪一個ID是第一 ID的位圖。在一個實施方式中,當(dāng)可配置內(nèi)核單元700 輸出與第一 ID對應(yīng)的描述符時,該FIFO存儲器系統(tǒng)720修改位圖以指示下一個ID現(xiàn)在是第一 ID0在處理弓I擎708接收到描述符時,可配置內(nèi)核單元700被配置為將該處理弓I擎708 標(biāo)記為繁忙的。處理器712然后根據(jù)存儲在存儲器716中的代碼和數(shù)據(jù)來處理描述符。可以在現(xiàn)場、在制造設(shè)施等中改變(即,重新配置)存儲在存儲器716中的代碼和/或數(shù)據(jù), 以改變可配置內(nèi)核單元700的功能。
在一個實施方式中,當(dāng)處理器712完成對描述符的處理時,處理器712向FIFO存儲器系統(tǒng)720發(fā)送指不對描述符的處理完成的完成消息。在一個實施方式中,該完成消息包括與描述符對應(yīng)的ID。
在接收到完成消息時,F(xiàn)IFO存儲器系統(tǒng)720確定完成消息中的ID是否對應(yīng)于 FIFO存儲器系統(tǒng)720中的例如由上文所討論的位圖指示的第一 ID。如果完成消息中的ID 未與FIFO存儲器系統(tǒng)720中的第一 ID相對應(yīng),則FIFO存儲器系統(tǒng)720等待直到完成消息中的ID變?yōu)镕IFO存儲器系統(tǒng)720中的第一 ID為止。當(dāng)確定完成消息中的ID對應(yīng)于FIFO 存儲器系統(tǒng)720中的第一 ID時,該FIFO存儲器系統(tǒng)720向處理引擎708發(fā)送確認(rèn)消息。 在一個實施方式中,響應(yīng)于該確認(rèn)消息,處理引擎708向FIFO存儲器系統(tǒng)720發(fā)送描述符并且FIFO存儲器系統(tǒng)720向例如處理管線中的下一個單元輸出描述符。在另一個實施方式中,響應(yīng)于該確認(rèn)消息,處理引擎708向處理管線中的下一個單元輸出描述符。在處理引擎708向FIFO存儲器系統(tǒng)720發(fā)送描述符以后,可配置內(nèi)核單元700被配置為將處理引擎 708標(biāo)記為不繁忙的。
在一個實施方式中,可以使一個或多個處理弓I擎708進入低功率模式并且將其標(biāo)記為繁忙的以節(jié)省功率。在一個實施方式中,可以將處理引擎708鎖定在更慢的時鐘速率以節(jié)省功率。例如,在一個實施方式中,可配置內(nèi)核單元700適合于改變提供給一個或多個處理引擎708的一個或多個時鐘的時鐘速度,以影響可配置內(nèi)核單元700的功率消耗。
應(yīng)當(dāng)注意的是,可以使用硬件、執(zhí)行固件指令的處理器、執(zhí)行軟件指令的處理器或者其任意組合來執(zhí)行附圖的方框中的每一個。當(dāng)至少部分地使用執(zhí)行軟件指令的處理器執(zhí)行方框時,可以將軟件存儲在任何計算機可讀存儲器中,例如,存儲在磁盤、光盤或者其它存儲介質(zhì)上、存儲在計算機的RAM或ROM或閃存、處理器、硬盤驅(qū)動器、光盤驅(qū)動器、磁帶驅(qū)動器等中。同樣地,可以經(jīng)由任何已知或期望的傳送方法將軟件指令傳送到用戶或系統(tǒng),所述傳送方法包括例如通過計算機可讀磁盤或其它可傳輸?shù)挠嬎銠C存儲機制或者經(jīng)由通信介質(zhì)。當(dāng)用硬件執(zhí)行時,硬件可以包括以下各項中的一項或多項分立組件、集成電路、專用集成電路(ASIC)等。參照圖1,根據(jù)一個實施方式,管線102被實現(xiàn)在單個集成電路(IC) 上。在其它實施方式中,管線102被實現(xiàn)在多個IC上。例如,在一個實施方式中,根據(jù)一個實施方式,進入部分104被實現(xiàn)在第一 IC上,外出部分被實現(xiàn)在第二 IC上。
雖然已經(jīng)參照旨在僅僅是說明性的而非限制本發(fā)明的具體示例描述了本發(fā)明,但是本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)清楚的是,在不偏離本發(fā)明的精神和范圍的情況下,可以對所公開的實施方式進行改變、添加和/或刪除。
權(quán)利要求
1.一種網(wǎng)絡(luò)設(shè)備,包括 多個端口,被配置為在網(wǎng)絡(luò)上接收和發(fā)送分組; 分組處理管線,包括多個硬件級,其中至少一個硬件級被配置為輸出數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括基于對接收的分組或所述數(shù)據(jù)結(jié)構(gòu)執(zhí)行的第一分組處理操作而從所述接收的分組中提取的字段,其中,所述數(shù)據(jù)結(jié)構(gòu)與所述分組相關(guān)聯(lián);以及 可配置處理器,耦合到所述分組處理管線的所述至少一個硬件級,其中,所述可配置處理器被配置為修改所述數(shù)據(jù)結(jié)構(gòu)中的所述字段以生成經(jīng)修改的數(shù)據(jù)結(jié)構(gòu),并且將所述經(jīng)修改的數(shù)據(jù)結(jié)構(gòu)傳遞到后續(xù)的硬件級,所述后續(xù)的硬件級被配置為使用由所述可配置處理器修改的所述字段來對所述數(shù)據(jù)結(jié)構(gòu)執(zhí)行第二分組處理操作。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,還包括所述后續(xù)的硬件級,其中,所述后續(xù)的硬件級被配置為根據(jù)所述字段中的數(shù)據(jù)對符合第一協(xié)議的數(shù)據(jù)結(jié)構(gòu)執(zhí)行分組處理操作,所述字段中的所述數(shù)據(jù)被所述后續(xù)的硬件級預(yù)期為符合所述第一協(xié)議,其中,所述字段中的實際數(shù)據(jù)由所述可配置處理器修改為符合與所述第一協(xié)議不同的第二協(xié)議。
3.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,其中,所述分組處理管線包括被配置為從所述接收的分組中提取所述字段并且將所述字段存儲在所述數(shù)據(jù)結(jié)構(gòu)中的硬件級。
4.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,其中,所述字段與從所述分組的報頭中提取的目的地地址相對應(yīng); 其中,后續(xù)的硬件級被配置為基于所述字段確定所述分組將經(jīng)由其進行發(fā)送的端口。
5.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,其中,所述字段是第一字段; 其中,所述可配置處理器被配置為使用來自從所述接收的分組中提取的第二字段的數(shù)據(jù)來重寫所述第一字段。
6.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)設(shè)備,其中,所述分組處理管線包括被配置為從所述接收的分組中提取第二字段并且將所述字段存儲在所述數(shù)據(jù)結(jié)構(gòu)中的硬件級。
7.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)設(shè)備,其中,所述分組包括內(nèi)部分組,并且其中所述第二字段是從所述內(nèi)部分組中提取的。
8.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,其中,所述可配置處理器被配置為執(zhí)行機器可讀指令。
9.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,其中,所述可配置處理器包括一個或多個微碼引擎。
10.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,其中,所述可配置處理器包括可編程邏輯設(shè)備。
11.一種方法,包括 經(jīng)由網(wǎng)絡(luò)切換設(shè)備的端口接收分組; 利用分組處理管線處理所述分組,所述分組處理管線包括多個硬件級,所述多個硬件級至少包括第一級、第二級和可配置處理器,處理所述分組包括 利用所述第一級輸出數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括基于對接收的分組或所述數(shù)據(jù)結(jié)構(gòu)執(zhí)行的第一分組處理操作而從所述接收的分組中提取的字段,其中,所述數(shù)據(jù)結(jié)構(gòu)與所述分組相關(guān)聯(lián); 利用所述可配置處理器修改所述數(shù)據(jù)結(jié)構(gòu)中的所述字段以生成經(jīng)修改的數(shù)據(jù)結(jié)構(gòu);以及將所述經(jīng)修改的數(shù)據(jù)結(jié)構(gòu)傳遞到所述第二硬件級,所述第二硬件級被配置為使用由所述可配置處理器修改的所述字段來對所述數(shù)據(jù)結(jié)構(gòu)執(zhí)行第二分組處理操作。
12.根據(jù)權(quán)利要求11所述的方法,其中,處理所述分組包括處理與所述分組相對應(yīng)的分組描述符。
13.根據(jù)權(quán)利要求12所述的方法,其中,處理所述分組描述符包括處理所述數(shù)據(jù)結(jié)構(gòu)。
14.根據(jù)權(quán)利要求11所述的方法,其中,所述字段是與第一網(wǎng)絡(luò)通信協(xié)議相對應(yīng)的第一字段; 其中,利用所述可配置處理器進行修改包括使用從所述分組中提取的第二字段來修改所述數(shù)據(jù)結(jié)構(gòu)中的所述第一字段,其中所述第二字段與第二網(wǎng)絡(luò)通信協(xié)議相對應(yīng)。
15.根據(jù)權(quán)利要求14所述的方法,還包括使用由所述可配置處理器修改的所述第一字段對所述數(shù)據(jù)結(jié)構(gòu)執(zhí)行所述第二分組處理操作,其中所述第二分組處理操作將由所述可配置處理器修改的所述第一字段視作與所述第一網(wǎng)絡(luò)通信協(xié)議相對應(yīng)。
16.根據(jù)權(quán)利要求15所述的方法,其中,使用從所述分組中提取的所述第二字段修改所述數(shù)據(jù)結(jié)構(gòu)中的所述第一字段包括利用來自所述第二字段的數(shù)據(jù)重寫所述第一字段中的數(shù)據(jù); 其中,使用由所述可配置處理器修改的所述第一字段對所述數(shù)據(jù)結(jié)構(gòu)執(zhí)行所述第二分組處理操作包括基于由所述可配置處理器修改的所述第一字段來確定所述分組將經(jīng)由其進行發(fā)送的端口。
17.根據(jù)權(quán)利要求14所述的方法,還包括從包含在分組中的內(nèi)部分組中提取所述第二字段。
18.根據(jù)權(quán)利要求11所述的方法,其中,所述字段是目的地地址; 其中,修改所述數(shù)據(jù)結(jié)構(gòu)中的所述字段包括修改所述目的地地址; 其中,所述方法還包括使用由所述可配置處理器修改的目的地字段來對所述數(shù)據(jù)結(jié)構(gòu)執(zhí)行所述第二分組處理操作。
19.根據(jù)權(quán)利要求16所述的方法,其中,所述目的地地址是第一目的地地址; 其中,所述方法還包括從所述分組中提取第二目的地地址; 其中,修改所述數(shù)據(jù)結(jié)構(gòu)中的所述字段包括利用所述第二目的地地址的至少一部分來重寫所述第一目的地地址的至少一部分。
全文摘要
在網(wǎng)絡(luò)設(shè)備中,多個端口被配置為在網(wǎng)絡(luò)上接收和發(fā)送分組。分組處理管線包括多個硬件級,其中,至少一個硬件級被配置為輸出數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包括基于對接收的分組或數(shù)據(jù)結(jié)構(gòu)執(zhí)行的第一分組處理操作從接收的分組中提取的字段,其中,數(shù)據(jù)結(jié)構(gòu)與分組相關(guān)聯(lián)??膳渲锰幚砥鞅获詈系椒纸M處理管線的至少一個硬件級??膳渲锰幚砥鞅慌渲脼樾薷臄?shù)據(jù)結(jié)構(gòu)中的字段以生成經(jīng)修改的數(shù)據(jù)結(jié)構(gòu),并且將經(jīng)修改的數(shù)據(jù)結(jié)構(gòu)傳遞到后續(xù)的硬件級,后續(xù)的硬件級被配置為使用由可配置處理器修改的字段來對數(shù)據(jù)結(jié)構(gòu)執(zhí)行第二分組處理操作。
文檔編號H04L29/06GK103004158SQ201280002096
公開日2013年3月27日 申請日期2012年1月5日 優(yōu)先權(quán)日2011年1月6日
發(fā)明者A·羅特施特因 申請人:馬維爾以色列(M.I.S.L)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
布尔津县| 石首市| 高台县| 固镇县| 昆明市| 建水县| 临朐县| 仁布县| 吉林省| 开封市| 巴南区| 昌黎县| 萝北县| 河东区| 浮梁县| 铜山县| 岳普湖县| 洛阳市| 隆尧县| 子长县| 阿鲁科尔沁旗| 正蓝旗| 台东县| 朔州市| 博罗县| 柞水县| 平山县| 砀山县| 尤溪县| 安远县| 南雄市| 龙川县| 临沭县| 敦化市| 亳州市| 九江市| 双城市| 静宁县| 浦北县| 红原县| 金沙县|