通常,通信網(wǎng)絡(luò)包括多個網(wǎng)絡(luò)設(shè)備,諸如路由器、交換機(jī)、網(wǎng)絡(luò)地址轉(zhuǎn)換盒、防火墻、負(fù)載均衡器等。網(wǎng)絡(luò)功能虛擬化(NFV)是指一種將網(wǎng)絡(luò)節(jié)點功能虛擬化為可以連接或鏈接的構(gòu)建塊以創(chuàng)建通信服務(wù)的網(wǎng)絡(luò)架構(gòu)結(jié)構(gòu)。
技術(shù)實現(xiàn)要素:
本公開的一方面涉及一種使網(wǎng)絡(luò)功能外部化(externalizing)的網(wǎng)絡(luò)系統(tǒng),該網(wǎng)絡(luò)系統(tǒng)包括網(wǎng)絡(luò)交換機(jī)和分組處理器。所述網(wǎng)絡(luò)交換機(jī)被配置成經(jīng)由第一網(wǎng)絡(luò)接口接收分組,所述分組被指向目的地節(jié)點而不是所述網(wǎng)絡(luò)交換機(jī)。所述網(wǎng)絡(luò)交換機(jī)還被配置成經(jīng)由第二網(wǎng)絡(luò)接口,通過在網(wǎng)絡(luò)交換機(jī)和分組處理器之間的直接物理鏈路,將所接收到的分組轉(zhuǎn)發(fā)至分組處理器以用于處理。所述分組與在分組處理器上執(zhí)行的虛擬化網(wǎng)絡(luò)功能的標(biāo)識符一起轉(zhuǎn)發(fā),并且,所述分組的目的地MAC地址不同于分組處理器的MAC地址。所述網(wǎng)絡(luò)交換機(jī)進(jìn)一步被配置成從所述分組處理器接收經(jīng)處理的分組,并且,通過第三網(wǎng)絡(luò)接口,將所述經(jīng)處理的分組轉(zhuǎn)發(fā)至所述目的地節(jié)點。所述分組處理器被配置成從所述網(wǎng)絡(luò)交換機(jī)接收所述分組。所述分組處理器還被配置成基于所述分組包括的標(biāo)識符,將所接收到的分組路由至虛擬化網(wǎng)絡(luò)功能模塊以用于處理。所述分組處理器還被配置成將所述經(jīng)處理的分組發(fā)送回所述網(wǎng)絡(luò)交換機(jī)。
本公開的另一方面涉及一種網(wǎng)絡(luò)交換機(jī)。所述網(wǎng)絡(luò)交換機(jī)包括處理器和存儲計算機(jī)可讀指令的有形計算機(jī)可讀介質(zhì)。所述計算機(jī)可執(zhí)行指令在由所述處理器執(zhí)行時致使所述處理器:經(jīng)由第一網(wǎng)絡(luò)接口接收分組,所述分組被指向目的地節(jié)點而不是所述網(wǎng)絡(luò)交換機(jī)。所述計算機(jī)可執(zhí)行指令還致使處理器:對所述分組的報頭內(nèi)的字段進(jìn)行修改,以包括在所述分組處理上執(zhí)行的虛擬化網(wǎng)絡(luò)功能的標(biāo)識符,并且經(jīng)由第二網(wǎng)絡(luò)接口,通過在所述網(wǎng)絡(luò)交換機(jī)和分組處理器之間的直接物理鏈路,將所接收到的具有經(jīng)修改的報頭的分組轉(zhuǎn)發(fā)至分組處理器。所述網(wǎng)絡(luò)交換機(jī)將與所述分組處理器的MAC地址不同的目的地MAC地址與分組一起轉(zhuǎn)發(fā)至分組處理器。所述計算機(jī)可讀指令還致使所述處理器:在所述分組已經(jīng)被所識別到的虛擬化網(wǎng)絡(luò)功能處理后,從所述分組處理器接收所述分組,并且,通過第三網(wǎng)絡(luò)接口將經(jīng)處理的分組轉(zhuǎn)發(fā)至目的地節(jié)點。
本公開的再一方面涉及一種分組處理器。該分組處理器包括處理器和存儲計算機(jī)可執(zhí)行指令的有形計算機(jī)可讀介質(zhì)。所述計算機(jī)可執(zhí)行指令在由所述處理器執(zhí)行時,致使所述處理器:通過在網(wǎng)絡(luò)交換機(jī)和所述分組處理器之間的直接物理鏈路,從所述網(wǎng)絡(luò)交換機(jī)接收分組。所接收到的分組包括在分組處理器上執(zhí)行的要對所述分組執(zhí)行的虛擬化網(wǎng)絡(luò)功能的標(biāo)識符,并且其中,所接收到的分組的MAC地址不同于所述分組處理器的MAC地址。所述計算機(jī)可讀指令還致使所述處理器:基于所述標(biāo)識符,將所接收到的所述分組路由至網(wǎng)絡(luò)功能模塊,使用所述網(wǎng)絡(luò)功能模塊對所述分組進(jìn)行處理,并且,通過直接物理鏈路,將經(jīng)處理的分組發(fā)送回所述網(wǎng)絡(luò)交換機(jī)。
附圖說明
技術(shù)人員將理解,本文中所描述的附圖僅出于圖示目的。要理解,在一些實例中,為了方便理解本文中所描述的實現(xiàn)方式,可以將所描述的實現(xiàn)方式的各個方面按照夸大或放大的方式顯示。在附圖中,貫穿各個附圖,類似的附圖標(biāo)記通常指代類似的特征、在功能上相似的元件和/或在結(jié)構(gòu)上相似的元件。這些附圖并未按比例繪制,而是重點放在圖示本教導(dǎo)的原理上。附圖不旨在以任何方式限制本教導(dǎo)的范圍。通過以下圖示性的描述并且參照以下附圖可更好地了解該系統(tǒng)和方法,在附圖中:
圖1是網(wǎng)絡(luò)系統(tǒng)的示意圖。
圖2是圖1所示的網(wǎng)絡(luò)交換機(jī)和分組處理器的框圖。
圖3是圖1所圖示的用于使用該系統(tǒng)使網(wǎng)絡(luò)功能外部化的示例方法的流程圖。
圖4是用于使用圖1所圖示的系統(tǒng)使網(wǎng)絡(luò)功能外部化的示例方法的流程圖。
圖5A至圖5D示出了當(dāng)根據(jù)圖3和圖4所示的方法的一種示例實現(xiàn)方式通過圖1和圖2所示的網(wǎng)絡(luò)交換機(jī)和分組處理器來處理分組報頭時分組報頭的狀態(tài)。
圖6A至圖6D示出了其中可以包括在分組處理器上執(zhí)行的虛擬化網(wǎng)絡(luò)功能的標(biāo)識符的各個分組報頭字段的位置。
圖7是適合在所描述的各種實現(xiàn)方式中使用的計算系統(tǒng)的框圖。
為了清楚起見,并未在每個附圖中標(biāo)注每一個組件。附圖并不旨在按比例繪制。在各個附圖中,類似的附圖編號和標(biāo)號表示類似的元件。
具體實現(xiàn)方式
以上所介紹并且下面將詳細(xì)討論的各種概念可以按照眾多方式中的任何方式來實現(xiàn),這是因為所描述的概念不限于任何具體形式的實現(xiàn)方式。提供特定實現(xiàn)方式和應(yīng)用的示例主要是為了進(jìn)行說明。
本文中提到的系統(tǒng)和方法提供了使網(wǎng)絡(luò)功能外部化的機(jī)制。在網(wǎng)絡(luò)交換機(jī)和分組處理器之間建立直接鏈路。在一些實現(xiàn)方式中,發(fā)送至或來自網(wǎng)絡(luò)交換機(jī)和分組處理器的分組包括標(biāo)識符,所述標(biāo)識符識別要由分組處理器處理的網(wǎng)絡(luò)功能或者已經(jīng)由分組處理器處理的網(wǎng)絡(luò)功能。
圖1是網(wǎng)絡(luò)系統(tǒng)100的示意圖。使網(wǎng)絡(luò)功能外部化的網(wǎng)絡(luò)系統(tǒng)100包括網(wǎng)絡(luò)交換機(jī)102和分組處理器104,該分組處理器104經(jīng)由直接鏈路106直接連接至網(wǎng)絡(luò)交換機(jī)102。直接鏈路106可以是,例如,直接的以太網(wǎng)或光纜。
在一些實現(xiàn)方式中,網(wǎng)絡(luò)交換機(jī)102是多端口網(wǎng)絡(luò)橋接器,該多端口網(wǎng)絡(luò)橋接器使用硬件地址來在開放系統(tǒng)互連(OSI)模型的數(shù)據(jù)鏈路層(層2)上處理并且轉(zhuǎn)發(fā)數(shù)據(jù)。例如,網(wǎng)絡(luò)交換機(jī)102可以是具有5、8、10、24或48個端口的以太網(wǎng)交換機(jī)(也稱為網(wǎng)絡(luò)接口)。網(wǎng)絡(luò)交換機(jī)102還可以是具有多于50個端口的高吞吐量交換機(jī)。在一些實現(xiàn)方式中,網(wǎng)絡(luò)交換機(jī)102可以是具有網(wǎng)絡(luò)層(層3)路由和交換能力的路由器,或是4-7層交換機(jī)。在一些實現(xiàn)方式中,網(wǎng)絡(luò)交換機(jī)102可用作指向企業(yè)網(wǎng)絡(luò)或數(shù)據(jù)中心的網(wǎng)關(guān)。
網(wǎng)絡(luò)交換機(jī)102連接至其它網(wǎng)絡(luò)設(shè)備,包括進(jìn)一步連接至計算機(jī)114、116、118、120、124和126的其它網(wǎng)絡(luò)交換機(jī)108和110。網(wǎng)絡(luò)交換機(jī)102還連接至互聯(lián)網(wǎng)112和分組處理器104。網(wǎng)絡(luò)交換機(jī)102處理并且轉(zhuǎn)發(fā)從網(wǎng)絡(luò)交換機(jī)108和110、以及從例如互聯(lián)網(wǎng)112接收到的數(shù)據(jù)。在一些其它實現(xiàn)方式中,網(wǎng)絡(luò)交換機(jī)不連接至互聯(lián)網(wǎng)112,相反,網(wǎng)絡(luò)交換機(jī)位于在局域網(wǎng)與網(wǎng)絡(luò)之間的網(wǎng)關(guān)上,或位于在期望實現(xiàn)網(wǎng)絡(luò)功能虛擬化的網(wǎng)絡(luò)內(nèi)的任何其它位置處。為了說明目的,網(wǎng)絡(luò)交換機(jī)102包括編號為1到52的52個端口。如圖1所示,網(wǎng)絡(luò)交換機(jī)102通過端口1連接至交換機(jī)108、通過端口2連接至交換機(jī)110、通過端口49連接至互聯(lián)網(wǎng)112、且通過端口52連接至分組處理器104。在一些實現(xiàn)方式中,實現(xiàn)與分組處理器連接的端口是專用控制平面端口,諸如,OpenFlow或OpenFlow兼容端口。
網(wǎng)絡(luò)交換機(jī)102還包括交換機(jī)處理器130。該交換機(jī)處理器130執(zhí)行路由、轉(zhuǎn)發(fā)、和網(wǎng)絡(luò)功能外部化功能,如下面進(jìn)一步所示。
當(dāng)網(wǎng)絡(luò)交換機(jī)102接收到分組時,在將該分組路由至網(wǎng)絡(luò)路徑上的下一個節(jié)點之前,交換機(jī)處理器130使網(wǎng)絡(luò)交換機(jī)102將該分組轉(zhuǎn)發(fā)至分組處理器104以進(jìn)行外部化網(wǎng)絡(luò)功能的處理。
在網(wǎng)絡(luò)功能外部化過程的簡要綜述中,在從網(wǎng)絡(luò)內(nèi)的設(shè)備接收到針對網(wǎng)絡(luò)外的目的地節(jié)點(例如,跨互聯(lián)網(wǎng)112)的分組后,交換機(jī)(諸如,交換機(jī)108)將該分組轉(zhuǎn)發(fā)至網(wǎng)絡(luò)交換機(jī)102,該網(wǎng)絡(luò)交換機(jī)102是網(wǎng)絡(luò)路徑上的下一跳。網(wǎng)絡(luò)交換機(jī)102接收來自交換機(jī)108的分組。交換機(jī)處理器130對分組進(jìn)行檢查以確定在將分組轉(zhuǎn)發(fā)至下一跳之前是否需要對該分組執(zhí)行任何網(wǎng)絡(luò)功能。如果識別到這種網(wǎng)絡(luò)功能,則利用在分組處理器104上的對應(yīng)虛擬化網(wǎng)絡(luò)功能模塊的標(biāo)識符來標(biāo)記該分組,并且將分組經(jīng)由直接鏈路106轉(zhuǎn)發(fā)至分組處理器104。分組處理器104基于標(biāo)識符對分組進(jìn)行處理,利用指示已經(jīng)對該分組執(zhí)行了特定網(wǎng)絡(luò)功能的另一標(biāo)識符來標(biāo)記該分組,并且將經(jīng)處理的分組發(fā)送回網(wǎng)絡(luò)交換機(jī)102。網(wǎng)絡(luò)交換機(jī)102接收經(jīng)處理的分組,并且將經(jīng)處理的分組傳送至網(wǎng)絡(luò)路徑上的下一節(jié)點。
在一些實現(xiàn)方式中,分組處理器104可以是執(zhí)行存儲在有形計算機(jī)可讀介質(zhì)上的計算機(jī)可執(zhí)行指令的通用處理器。例如,分組處理器104可以實現(xiàn)在類似于圖7所示的架構(gòu)中。在一些實現(xiàn)方式中,計算機(jī)服務(wù)器托管分組處理器104。在一些實現(xiàn)方式中,交換機(jī)處理器130可以是專用電路或者可以包括專用電路,諸如專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)。
圖2是圖1所示的網(wǎng)絡(luò)交換機(jī)102和分組處理器104的框圖。如上所述,網(wǎng)絡(luò)交換機(jī)102具有多個端口,通過該多個端口來傳送分組。網(wǎng)絡(luò)交換機(jī)102包括交換機(jī)處理器130,該交換機(jī)處理器130包括路由模塊212、轉(zhuǎn)發(fā)模塊215、功能外部化模塊214。在一些配置為用于軟件定義網(wǎng)絡(luò)(SDN)的實現(xiàn)方式中,交換機(jī)處理器130可以省略路由模塊214,相反,依靠包括在中央SDN處理器中的相似模塊來遠(yuǎn)程地實現(xiàn)路由模塊214的功能。這種集中式SDN處理器然后可以,例如,通過提供類似于以下討論的轉(zhuǎn)發(fā)表來通過控制平面或數(shù)據(jù)平面連接對網(wǎng)絡(luò)交換機(jī)進(jìn)行配置。
在一些實現(xiàn)方式中,路由模塊212生成并且維護(hù)路由規(guī)則集合。例如,路由模塊生成并且維護(hù)路由信息庫(RIB)。該路由信息庫存儲反映網(wǎng)絡(luò)(或其部分)的拓?fù)涞臄?shù)據(jù)。路由模塊212進(jìn)一步配置成基于所存儲的拓?fù)湫畔泶_定至網(wǎng)絡(luò)內(nèi)的其它節(jié)點的路線?;谒_定的路線,路由模塊212可以配置被配置成填入轉(zhuǎn)發(fā)表以供轉(zhuǎn)發(fā)模塊215使用。轉(zhuǎn)發(fā)表存儲映射分組目的地IP地址、地址范圍、或者至下一跳節(jié)點的流標(biāo)識數(shù)據(jù)的信息、節(jié)點的MAC地址、和網(wǎng)絡(luò)交換機(jī)102上的端口(經(jīng)由該端口可以到達(dá)下一跳節(jié)點)。在一些實現(xiàn)方式中,轉(zhuǎn)發(fā)表可以進(jìn)一步存儲在將與各種流相關(guān)聯(lián)或者發(fā)往各個IP地址的分組轉(zhuǎn)發(fā)至下一跳之前要應(yīng)用于該分組的網(wǎng)絡(luò)功能列表。在其它的實現(xiàn)方式中,要應(yīng)用于分組的網(wǎng)絡(luò)功能列表可以與其它分組信息相關(guān)聯(lián),包括且不限于路由信息或4層分組數(shù)據(jù)。在一些其它實現(xiàn)方式中,要應(yīng)用的網(wǎng)絡(luò)功能列表可以存儲在與轉(zhuǎn)發(fā)表不同的數(shù)據(jù)結(jié)構(gòu)中。
轉(zhuǎn)發(fā)模塊215被配置成應(yīng)用包括在由路由模塊212填入的轉(zhuǎn)發(fā)表中的轉(zhuǎn)發(fā)指令。例如,當(dāng)在網(wǎng)絡(luò)交換機(jī)102處接收到分組后,轉(zhuǎn)發(fā)模塊215可以提取目的地IP地址(或者包括多個數(shù)據(jù)字段值的數(shù)據(jù)元組,諸如源IP地址和目的地IP地址以及端口號,或者用于識別流的其它數(shù)據(jù)字段),并且對轉(zhuǎn)發(fā)表執(zhí)行查找。如果轉(zhuǎn)發(fā)表指示在轉(zhuǎn)發(fā)分組之前將一個或多個網(wǎng)絡(luò)功能應(yīng)用至該分組,則轉(zhuǎn)發(fā)模塊將該分組傳遞至指示要執(zhí)行的功能的功能外部化模塊214。如果不需要由任何網(wǎng)絡(luò)功能對分組進(jìn)行處理,或者如果這種處理已經(jīng)完成,則轉(zhuǎn)發(fā)模塊215更新分組報頭的目的地MAC地址以匹配下一跳節(jié)點的MAC地址,并且通過在轉(zhuǎn)發(fā)表中識別到的端口轉(zhuǎn)發(fā)分組。
功能外部化模塊214實現(xiàn)將分組轉(zhuǎn)發(fā)至分組處理器并且管理使網(wǎng)絡(luò)功能外部化的工作流的邏輯。例如,功能外部化模塊214存儲專用于與(一個或多個)分組處理器通信的一個或多個端口的(一個或多個)標(biāo)識符。功能外部化模塊214也維護(hù)功能表,該功能表列舉了由(一個或多個)分組處理器處理的特定網(wǎng)絡(luò)功能。在一些實現(xiàn)方式中,網(wǎng)絡(luò)交換機(jī)102具有專用于分組處理器104的單個端口。例如,如圖2所圖示,端口52專用于分組處理器104。專用的端口可以是普通的數(shù)據(jù)平面端口,或者可以是專門的控制平面端口。通過端口52對需要網(wǎng)絡(luò)功能處理的任何分組進(jìn)行路由,以將分組轉(zhuǎn)發(fā)至分組處理器204。在一些其它實現(xiàn)方式中,網(wǎng)絡(luò)交換機(jī)102連接至多個網(wǎng)絡(luò)功能處理服務(wù)器內(nèi)的多于一個的分組處理器。在這種實現(xiàn)方式中,網(wǎng)絡(luò)交換機(jī)102可具有多個端口,多個端口中的每個端口專用于特定的分組處理器。在其它實現(xiàn)方式中,可以經(jīng)由網(wǎng)絡(luò)交換機(jī)102上的單個端口到達(dá)多個網(wǎng)絡(luò)功能處理服務(wù)器。對于多個網(wǎng)絡(luò)功能處理服務(wù)器而言,在一些實現(xiàn)方式中,每個服務(wù)器專用于網(wǎng)絡(luò)功能的子集。例如,第一服務(wù)器可以專用于加密IP分組的網(wǎng)絡(luò)功能,而另一服務(wù)器可以專用于網(wǎng)絡(luò)地址轉(zhuǎn)換的網(wǎng)絡(luò)功能。在其它實現(xiàn)方式中,每個服務(wù)器對相同的網(wǎng)絡(luò)功能進(jìn)行處理,并且,根據(jù)本領(lǐng)域的普通技術(shù)人員已知的眾多負(fù)載均衡技術(shù)中的一種負(fù)載均衡技術(shù),將分組轉(zhuǎn)發(fā)至一個或另一個服務(wù)器。
功能外部化模塊214可以進(jìn)一步被配置成控制將外部化網(wǎng)絡(luò)功能應(yīng)用于分組的順序。例如,在從具有要應(yīng)用于分組的網(wǎng)絡(luò)功能集合的轉(zhuǎn)發(fā)模塊215接收到分組后,功能外部化模塊214被配置成每次執(zhí)行一個功能,對分組報頭進(jìn)行修改以識別要應(yīng)用至分組的下一個功能、將分組轉(zhuǎn)發(fā)至分組處理器104進(jìn)行處理、并且等待接收從分組處理器104返回的分組。如果完成了所有的處理,則功能外部化模塊將分組返回至轉(zhuǎn)發(fā)模塊215。如果需要進(jìn)一步處理,則功能外部化模塊214再次對分組報頭進(jìn)行修改,并且將分組返回至分組處理器104。在一些其它實現(xiàn)方式中,在接收到分組后,功能外部化模塊214對報頭進(jìn)行修改以在其返回分組之前識別要由分組處理器104執(zhí)行的多個功能。例如,分組處理器104可以將MPLS標(biāo)簽棧添加至分組報頭。每個MPLS標(biāo)簽識別要由分組處理器104執(zhí)行的不同功能。在這種實現(xiàn)方式中,在完成所有識別到的處理后,分組處理器104將分組返回至網(wǎng)絡(luò)交換機(jī)102。
在所有這種網(wǎng)絡(luò)功能之中,為每種要執(zhí)行的網(wǎng)絡(luò)功能分配唯一標(biāo)識符。同樣,在所有這種網(wǎng)絡(luò)功能輸出之中,為每種網(wǎng)絡(luò)功能的輸出分配唯一標(biāo)識符。同樣,在對分組報頭進(jìn)行修改時,功能外部化模塊214可以將要執(zhí)行的功能的標(biāo)識添加至分組報頭。當(dāng)完成處理時,分組處理器104可以用指示該功能已經(jīng)被成功完成的標(biāo)識符來替代要執(zhí)行的功能的標(biāo)識符?;谏鲜龅臉?biāo)識符機(jī)制,直接鏈路106可以攜帶多個分組,并且分組處理器104可以處理多個網(wǎng)絡(luò)功能。
標(biāo)識符(諸如,如上所述的標(biāo)識符),可以包括在已經(jīng)包括在層2分組或?qū)?分組中的各種字段中,所述字段包括MAC地址字段(例如,目的地MAC地址字段或源MAC地址字段)、VLAN標(biāo)記字段、通用路由封裝(GRE)報頭字段、多協(xié)議標(biāo)簽交換(MPLS)報頭字段(或在MPLS標(biāo)簽中)等。將關(guān)于圖6A至圖6D進(jìn)一步詳細(xì)描述使用各種字段進(jìn)行的分組標(biāo)記。在一些實現(xiàn)方式中,利用多于一個的標(biāo)識符來標(biāo)記分組,指示要執(zhí)行多于一個的網(wǎng)絡(luò)功能或者已經(jīng)執(zhí)行了多于一個的網(wǎng)絡(luò)功能。在將專用控制平面端口(諸如,OpenFlow端口)用作在網(wǎng)絡(luò)交換機(jī)102與分組處理器104之間的直接物理連接的實現(xiàn)方式中,可以將標(biāo)識符置于上述的分組報頭字段中的任何分組報頭字段中,而將分組封裝在諸如OpenFlow PacketIn或PacketOut消息的控制平面分組內(nèi)。在一些實現(xiàn)方式中,對于轉(zhuǎn)發(fā)至分組處理器104的分組而言,相反或者另外地,標(biāo)識符可以連同封裝一起被包括在諸如OenFlow PacketIn消息中的“cookie”字段中。
在一些實現(xiàn)方式中,網(wǎng)絡(luò)功能是單向的。即,僅需要在分組從外地網(wǎng)絡(luò)(諸如,互聯(lián)網(wǎng))進(jìn)入網(wǎng)絡(luò)時執(zhí)行該功能,而不是在分組離開網(wǎng)絡(luò)時執(zhí)行該功能,反之亦然。這種網(wǎng)絡(luò)功能的示例是訪問控制列表(ACL)功能。ACL功能通過將分組中的信息與訪問控制列表(諸如源IP地址的黑名單、或者報頭元組)進(jìn)行比較來過濾掉分組以實施安全策略,例如,過濾掉已知的來自詐騙IP地址的分組或具有與惡意行為相關(guān)聯(lián)的分組相關(guān)聯(lián)的已知簽名的分組。在一些其它實現(xiàn)方式中,ACL功能還可以應(yīng)用于離開網(wǎng)絡(luò)的分組,例如,通過阻擋源于某些所識別的設(shè)備的IP地址的分組來防止敏感信息在未經(jīng)授權(quán)的情況下泄漏。
在其它實現(xiàn)方式中,網(wǎng)絡(luò)功能成對出現(xiàn)。例如,網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)有兩種功能,即NAT和DE-NAT。NAT將源于網(wǎng)絡(luò)內(nèi)的分組中的私有源標(biāo)識符信息(諸如內(nèi)部源IP地址和/或端口號)轉(zhuǎn)換為公共源標(biāo)識符信息(諸如外部源IP地址和/或端口信息)以通過外部網(wǎng)絡(luò)傳送分組。DE-NAT的功能與此相反。DE-NAT將從網(wǎng)絡(luò)外接收到的分組中的目的地信息轉(zhuǎn)換成在網(wǎng)絡(luò)內(nèi)使用的目的地的對應(yīng)私有目的地信息。為了適應(yīng)網(wǎng)絡(luò)功能的該二元性,在一些實現(xiàn)方式中,可以將雙向網(wǎng)絡(luò)功能與四個標(biāo)識符相關(guān)聯(lián):LOCAL_To_Be_Processed標(biāo)識符、REMOTE_To_Be_Processed標(biāo)識符、LOCAL_Processed標(biāo)識符、以及REMOTE_Processed標(biāo)識符。
在一些實現(xiàn)方式中,每種功能僅與單個標(biāo)識符相關(guān)聯(lián),并且將LOCAL vs.REMOTE以及To_Be_Processed和Processed的區(qū)別表示在被添加至所指定的數(shù)據(jù)字段中的分組報頭或者附在功能標(biāo)識符結(jié)尾處的相應(yīng)的1比特中。同樣,如果分組處理器104可以攜帶例如八種不同的功能,則可以僅用五比特來捕獲該功能連同其對應(yīng)的LOCAL vs.REMOTE以及To_Be_Processed和Processed。在一些其它實現(xiàn)方式中,分組的狀態(tài)(To_Be_Processed或者_(dá)Processed)可從分組流動的方向推斷出。例如,假設(shè)已經(jīng)對從網(wǎng)絡(luò)處理器104接收到的分組進(jìn)行了處理,并且假設(shè)需要對從網(wǎng)絡(luò)交換機(jī)102接收到的分組進(jìn)行處理,則不需要第二。在這種實現(xiàn)方式中,在能夠處理八種網(wǎng)絡(luò)功能的分組處理器的上述例示例中,可以僅用四比特來捕獲要應(yīng)用至分組的功能和分組狀態(tài)。如果分組處理器104執(zhí)行更少的功能則可以使用更少的比特數(shù),并且如果執(zhí)行更多的功能則可以使用更多的比特數(shù)。
LOCAL標(biāo)簽和REMOTE標(biāo)簽可通過指示分組的源或目的地來識別要執(zhí)行的功能的特定版本。例如,在一些實現(xiàn)方式中,LOCAL標(biāo)簽可以指示分組源于網(wǎng)絡(luò)內(nèi)。因此,相對于NAT功能而言,LOCAL標(biāo)簽指示要執(zhí)行的NAT功能為NAT。與之相反,REMOTE標(biāo)簽指示分組源于網(wǎng)絡(luò)外。因此,相對于NAT功能而言,REMOTE標(biāo)簽指示要執(zhí)行的功能為DE-NAT。
仍然參照圖2,分組處理器104包括內(nèi)核交換機(jī)202和各種網(wǎng)絡(luò)功能處理模塊2041至204n(統(tǒng)稱為“功能模塊204”)。內(nèi)核交換機(jī)202是在分組處理器104的操作系統(tǒng)的內(nèi)核內(nèi)執(zhí)行的交換過程。在一些實現(xiàn)方式中,每個功能模塊204被實現(xiàn)為單獨的虛擬機(jī)器,并且,內(nèi)核交換機(jī)202被實現(xiàn)在也在分組處理器104上運行的管理程序中。
當(dāng)分組處理器104從網(wǎng)絡(luò)交換機(jī)102接收到分組時,將該分組存儲在分組處理器104的存儲器中的緩沖區(qū)中。內(nèi)核交換機(jī)202依次對緩沖區(qū)中的每個分組進(jìn)行處理。在對分組進(jìn)行處理時,內(nèi)核交換機(jī)202對分組報頭進(jìn)行分析以識別添加至分組的標(biāo)識符。在一些實現(xiàn)方式中,內(nèi)核交換機(jī)維護(hù)查找表或者具有對查找表的訪問權(quán)限,查找表將標(biāo)識符與其對應(yīng)的功能模塊204相關(guān)聯(lián)。如果分組包括To_Be_Processed標(biāo)識符(或者,如果設(shè)置有To_Be_Processed),則內(nèi)核交換機(jī)202將分組存儲在與適當(dāng)?shù)墓δ苣K204相關(guān)聯(lián)的緩沖區(qū)中。在虛擬機(jī)器實現(xiàn)方式中,將分組傳遞至對應(yīng)的虛擬機(jī)器。如果分組包括Processed標(biāo)識符(或者,未設(shè)置To_Be_Processed),則內(nèi)核交換機(jī)202使分組處理器104通過直接鏈路106將分組轉(zhuǎn)發(fā)回網(wǎng)絡(luò)交換機(jī)102。在一些實現(xiàn)方式中,每一個網(wǎng)絡(luò)功能的LOCAL和REMOTE版本(在適用的情況下)由相同的功能模塊204(或者虛擬機(jī)器)執(zhí)行。在這種情況下,要按照網(wǎng)絡(luò)功能的任何版本處理的所有分組都存儲在相同的緩沖區(qū)中(或者傳遞至相同的虛擬機(jī)器)。在一些實現(xiàn)方式中,每一個網(wǎng)絡(luò)功能的LOCAL和REMOTE版本(如果適用的話)都實現(xiàn)為具有單獨的相關(guān)聯(lián)的緩沖區(qū)(和存儲器空間)的單獨的功能模塊204(或者虛擬機(jī)器)。緩沖區(qū)可以實現(xiàn)為在數(shù)據(jù)處理器的高速緩存或者其它系統(tǒng)存儲器內(nèi)的專用存儲器位置。
網(wǎng)絡(luò)功能處理模塊204被指定為對特定網(wǎng)絡(luò)功能進(jìn)行處理。分組處理器104可以根據(jù)分組存儲器的處理能力和所實現(xiàn)的網(wǎng)絡(luò)功能的數(shù)目來執(zhí)行每一個網(wǎng)絡(luò)功能模塊204的一個或多個實例。如果是在公共環(huán)境內(nèi)執(zhí)行,則相同的網(wǎng)絡(luò)功能的實例可以共享公共的緩沖區(qū)空間。在一些其它實現(xiàn)方式中,網(wǎng)絡(luò)功能的每一個實例都在其自己的虛擬機(jī)器環(huán)境中執(zhí)行。要在分組處理器104上實現(xiàn)的合適的網(wǎng)絡(luò)功能的示例包括但不限于IP分組加密(IPSec)、NAT、策略實施、ACL、或者其它防火墻或者網(wǎng)絡(luò)安全功能(諸如拒絕服務(wù)攻擊或者侵入檢測)。功能模塊204中的每一個功能模塊204可以實現(xiàn)為存儲在有形計算機(jī)可讀介質(zhì)上并且由包括在分組處理器104內(nèi)的多個處理器執(zhí)行的計算機(jī)可執(zhí)行指令。
在一些實現(xiàn)方式中,利用與多個網(wǎng)絡(luò)功能相對應(yīng)的多個標(biāo)識符來標(biāo)記分組。內(nèi)核交換機(jī)202對工作流進(jìn)行管理以確保實現(xiàn)多個網(wǎng)絡(luò)功能。多個標(biāo)識符可以作為單獨的標(biāo)簽來級聯(lián)或者存儲,并且內(nèi)核交換機(jī)202對多個標(biāo)識進(jìn)行解析和分離。例如,在其中功能外部化標(biāo)識符被存儲在MPLS標(biāo)簽中的分組中,整個分組連同其所有標(biāo)簽都依次序轉(zhuǎn)發(fā)至每個所指示的功能模塊204。當(dāng)功能模塊對分組完成了對應(yīng)的功能后,功能模塊用Processed標(biāo)識符來替代在對應(yīng)的MPLS標(biāo)簽中的To_Be_Processed標(biāo)識符。當(dāng)所有的MPLS標(biāo)簽都包括Processed標(biāo)識符時,內(nèi)核交換機(jī)202使分組處理器104將具有修改后的標(biāo)簽的分組返回網(wǎng)絡(luò)交換機(jī)102。在其它實現(xiàn)方式中,如上所討論的,網(wǎng)絡(luò)交換機(jī)104的外部化模塊214協(xié)調(diào)多個網(wǎng)絡(luò)功能的執(zhí)行,并且在需要時,多次轉(zhuǎn)發(fā)需要應(yīng)用至分組處理器的多個網(wǎng)絡(luò)功能的分組,每一次針對一個要執(zhí)行的功能,并且每一次具有不同的標(biāo)識符。當(dāng)在完成最后一個功能后將分組返回網(wǎng)絡(luò)交換機(jī)102時,外部化模塊214將分組返回轉(zhuǎn)發(fā)模塊215以進(jìn)行進(jìn)一步處理。
圖3是使用圖1所圖示的系統(tǒng)使網(wǎng)絡(luò)功能外部化的示例方法300的流程圖。方法300包括:接收分組(步驟302)、利用要對分組執(zhí)行的網(wǎng)絡(luò)功能來標(biāo)記分組(步驟303)、將所接收的分組轉(zhuǎn)發(fā)至分組處理器(步驟304)、從分組處理器接收經(jīng)處理的分組(步驟306)、并且將經(jīng)處理的分組轉(zhuǎn)發(fā)至目的地節(jié)點(步驟308)。
方法300包括接收分組(步驟302)。如上所述,網(wǎng)絡(luò)交換機(jī)從在其本地網(wǎng)絡(luò)、互聯(lián)網(wǎng)或者其它網(wǎng)絡(luò)上的其它網(wǎng)絡(luò)設(shè)備接收分組。例如,網(wǎng)絡(luò)交換機(jī)102從網(wǎng)絡(luò)交換機(jī)108和100以及從互聯(lián)網(wǎng)112接收分組。
用要對分組執(zhí)行的網(wǎng)絡(luò)功能的標(biāo)識符來標(biāo)記分組(步驟303)。例如,利用網(wǎng)絡(luò)交換機(jī)102,在分組到達(dá)轉(zhuǎn)發(fā)模塊215時,轉(zhuǎn)發(fā)模塊基于分組報頭中的數(shù)據(jù)針對其轉(zhuǎn)發(fā)表執(zhí)行查找以識別下一跳節(jié)點和要執(zhí)行的任何網(wǎng)絡(luò)功能。如果要執(zhí)行網(wǎng)絡(luò)功能,則將分組傳遞至功能外部化模塊214,功能外部化模塊214如上所述地用一個或多個網(wǎng)絡(luò)功能的標(biāo)識符來標(biāo)記分組。由于存在將網(wǎng)絡(luò)交換機(jī)102與分組處理器104連接的直接鏈路106,所以可以將分組轉(zhuǎn)發(fā)至分組處理器104,而不需要進(jìn)一步對已經(jīng)存在于分組報頭中的層2信息進(jìn)行路由或者修改。在各種實現(xiàn)方式中,功能外部化模塊214可以將要對分組執(zhí)行的期望功能的標(biāo)識符包括在多個不同的層2數(shù)據(jù)字段中的一個層2數(shù)據(jù)字段中,而不會對接收分組或者執(zhí)行指定網(wǎng)絡(luò)功能的分組處理器104造成干擾。例如,網(wǎng)絡(luò)功能標(biāo)識符可以包括在以下中但不限于在以下中:源MAC地址字段、目的地MAC地址字段、VLAN標(biāo)記字段、GRE報頭字段、MPLS報頭字段、或者添加的MPLS標(biāo)簽。將相對于圖6A至6D來說明描述使用不同的字段進(jìn)行標(biāo)記。
網(wǎng)絡(luò)交換機(jī)通過直接鏈路將接收到的分組轉(zhuǎn)發(fā)至分組處理器(例如分組處理器104)(步驟304)。直接鏈路可以是耦合至網(wǎng)絡(luò)交換機(jī)的專用數(shù)據(jù)平面或者控制平面端口以及分組處理器的網(wǎng)絡(luò)接口的電纜或者光纜。在一些實現(xiàn)方式中,在將接收到的分組轉(zhuǎn)發(fā)至分組處理器后,功能外部化模塊214繼續(xù)對其隊列中的下一個分組進(jìn)行處理。即,網(wǎng)絡(luò)交換機(jī)102在開始處理另一個分組之前不需要等待分組處理器104的處理結(jié)果。
網(wǎng)絡(luò)交換機(jī)從分組處理器接收經(jīng)處理的分組(步驟306)。如上所述,在由在分組處理器上執(zhí)行的適當(dāng)?shù)墓δ苣K(例如功能模塊204)處理之后,用識別已經(jīng)執(zhí)行的網(wǎng)絡(luò)功能的標(biāo)識符來標(biāo)記經(jīng)處理的分組,并且然后通過專用鏈路將經(jīng)處理的分組發(fā)送回網(wǎng)絡(luò)交換機(jī)。在一些實現(xiàn)方式中,網(wǎng)絡(luò)功能處理導(dǎo)致分組被丟棄,例如,由于ACL或者其它防火墻網(wǎng)絡(luò)功能的否定發(fā)現(xiàn)結(jié)果。在這種情況下,分組處理器可以將這種事件的指示發(fā)送至網(wǎng)絡(luò)交換機(jī),使得網(wǎng)絡(luò)交換機(jī)可以停止等待分組的返回。
網(wǎng)絡(luò)交換機(jī)然后將經(jīng)處理的分組轉(zhuǎn)發(fā)至目的地節(jié)點(步驟308)。在完成網(wǎng)絡(luò)功能處理后,將分組返回轉(zhuǎn)發(fā)模塊215,轉(zhuǎn)發(fā)模塊215完成該轉(zhuǎn)發(fā)過程。例如,分組的目的地MAC地址可以填有在通向分組最終目的地路徑上的下一個跳節(jié)點的MAC地址。然后,可以將分組傳遞至連接至下一跳節(jié)點的端口的隊列以用于傳輸。
圖4是通過使用圖1所示的系統(tǒng)使網(wǎng)絡(luò)功能外部化的示例方法400的流程圖。
方法400包括:從網(wǎng)絡(luò)交換機(jī)接收分組(步驟402)、將所接收的分組路由至虛擬化網(wǎng)絡(luò)功能模塊以由該模塊進(jìn)行處理(步驟404)、利用指定的網(wǎng)絡(luò)功能模塊對分組進(jìn)行處理(步驟405)、以及將經(jīng)處理的分組發(fā)送回網(wǎng)絡(luò)交換機(jī)(步驟406)。
方法400包括由分組處理器(諸如分組處理器104)接收來自網(wǎng)絡(luò)交換機(jī)(諸如網(wǎng)絡(luò)交換機(jī)102)的分組(步驟402)。利用網(wǎng)絡(luò)交換機(jī),通過直接物理鏈路(諸如物理鏈路106)來接收分組。在一些實現(xiàn)方式中,利用要在分組處理器上執(zhí)行的網(wǎng)絡(luò)功能的標(biāo)識符來標(biāo)記所接收的分組。分組的目的地MAC地址不同于分組處理器的MAC地址。出于至少兩個不同的原因,目的地MAC地址可以不同。在一些實現(xiàn)方式中,目的地MAC地址不同于分組處理器的MAC地址的原因在于,網(wǎng)絡(luò)交換機(jī)的功能外部化模塊(諸如功能外部化模塊214)將要執(zhí)行的功能的標(biāo)識符存儲在分組的目的地MAC地址中。在一些其它實現(xiàn)方式中,將功能標(biāo)識符存儲在不同的報頭字段中,但是,由于在將分組轉(zhuǎn)發(fā)至分組處理器時,分組還未在網(wǎng)絡(luò)交換機(jī)處進(jìn)行層2路由,所以目的地MAC地址仍然保存著網(wǎng)絡(luò)交換機(jī)102的MAC地址。為了允許分組處理器在分組的目的地MAC地址與其自己的MAC地址不匹配的情況下仍然能夠接收分組并且對分組進(jìn)行處理,在各種實現(xiàn)方式中,可以將分組處理器或者其網(wǎng)絡(luò)端口編程或者以其他方式配置為:接受具有任何目的地MAC地址的分組、具有網(wǎng)絡(luò)交換機(jī)的目的地MAC地址的分組、或者其目的地MAC地址包括與在分組處理器上執(zhí)行的網(wǎng)絡(luò)功能相關(guān)聯(lián)的功能標(biāo)識符中的一個或多個功能標(biāo)識符的分組。
數(shù)據(jù)處理器將所接收的分組路由至網(wǎng)絡(luò)功能模塊(諸如功能模塊204中的一個功能模塊)(步驟404)。例如,基于分組報頭中的功能標(biāo)識符,分組處理器(例如,經(jīng)由內(nèi)核交換機(jī)202)將所接收的分組傳遞至執(zhí)行網(wǎng)絡(luò)功能模塊的虛擬機(jī)器,該網(wǎng)絡(luò)功能模塊被指定為對標(biāo)識符所識別的網(wǎng)絡(luò)功能進(jìn)行處理。
分組處理器然后利用指定的網(wǎng)絡(luò)功能模塊對分組進(jìn)行處理(步驟405)。如上所述,網(wǎng)絡(luò)功能模塊可執(zhí)行但不限于ACL或者其它防火墻處理、IPsec(加密或者解密)、策略實施、以及NAT(NAT或者DE-NAT)。在完成處理后,將分組報頭更新為包括指示完成處理的標(biāo)識符。
分組處理器將經(jīng)處理的分組發(fā)送回網(wǎng)絡(luò)交換機(jī)(步驟406)。如上所述,例如,在指定的網(wǎng)絡(luò)功能模塊對網(wǎng)絡(luò)功能進(jìn)行處理之后,用所執(zhí)行的網(wǎng)絡(luò)功能和指示已經(jīng)執(zhí)行了對應(yīng)的網(wǎng)絡(luò)功能的標(biāo)識符來更新分組。在由內(nèi)核交換機(jī)(諸如內(nèi)核交換機(jī)202)進(jìn)行處理后,分組處理器104將處理后的分組發(fā)送回網(wǎng)絡(luò)交換機(jī)102。
在一些實現(xiàn)方式中,對于由分組處理器所接收(在步驟402中)的給定的分組集合而言,分組處理器可能不會將相同數(shù)目的分組返回網(wǎng)絡(luò)交換機(jī)。例如,可以利用不同的目的地址以復(fù)制的形式將分組發(fā)送回網(wǎng)絡(luò)交換機(jī),使得將分組發(fā)送至多個目的地節(jié)點。在其它情況下,可以將所接收的分組的數(shù)據(jù)分為多個更小的分組或者組合為更少數(shù)目的分組以適應(yīng)各種發(fā)送和接收設(shè)備的不同緩沖區(qū)的大小。相似地,數(shù)據(jù)加密通常會導(dǎo)致用于表示數(shù)據(jù)的比特數(shù)增加,從而可能導(dǎo)致需要將加密的數(shù)據(jù)碎片化為多個分組以適應(yīng)分組大小的限制。對某些分組進(jìn)行解密而產(chǎn)生的數(shù)據(jù)可以能夠使得解密后的數(shù)據(jù)與加密時曾用于傳送數(shù)據(jù)的少量分組一起轉(zhuǎn)發(fā)。在一些實現(xiàn)方式中,在將網(wǎng)絡(luò)功能應(yīng)用于分組時,分組處理器可以為網(wǎng)絡(luò)交換機(jī)生成全新的分組以便發(fā)送。例如,DE-NAT功能可以向連接的主機(jī)發(fā)起ARP請求來獲得合適的目的地數(shù)據(jù)以插入正在進(jìn)行處理的分組中。
為了圖示圖3和圖4所示的上述方法300和方法400,圖5A至圖5D示出了由圖1和圖2所示的網(wǎng)交換機(jī)102和分組處理器104根據(jù)方法300和方法400的一個示例實現(xiàn)方式來處理分組報頭時分組報頭的狀態(tài)。
圖5A示出了分組的報頭500,在該分組被網(wǎng)絡(luò)交換機(jī)102接收時(在步驟302中),被發(fā)往與網(wǎng)絡(luò)交換機(jī)102處于同一個管理網(wǎng)絡(luò)中的計算機(jī),例如計算機(jī)114。在其它報頭字段之中,分組500具有源MAC地址502字段、目的地MAC地址字段504、源IP地址字段506、和目的地IP地址字段508。在網(wǎng)絡(luò)交換機(jī)102處最初接收到目的地MAC地址字段504后,目的地MAC地址字段504保存網(wǎng)絡(luò)交換機(jī)102的MAC地址。源MAC地址字段502保存網(wǎng)絡(luò)路徑上的前一跳(諸如在網(wǎng)絡(luò)交換機(jī)前的跳)的MAC地址。源IP地址字段506包括發(fā)送方的源IP地址。目的地IP地址字段508保存與分組的終端接收方(諸如計算機(jī)114)相關(guān)聯(lián)的公共IP地址。
圖5B示出了在由功能外部化模塊214處理(步驟303中)后的分組報頭500的狀態(tài),該處理指示將由DE-NAT功能對分組進(jìn)行處理以將包括在目的地IP地址字段508中的計算機(jī)114的公共目的地IP地址從公共IP地址轉(zhuǎn)換為計算機(jī)114的私有內(nèi)部IP地址。由于分組處理器104和網(wǎng)絡(luò)交換機(jī)102通過直接鏈路106連接,所以網(wǎng)絡(luò)交換機(jī)102可以直接將分組轉(zhuǎn)發(fā)至分組處理器104,而不需要將分組處理器104的MAC地址包括在目的地MAC地址字段中。因此,將DE-NAT功能標(biāo)識符包括在分組報頭500的目的地MAC地址字段504中。更具體地,通過標(biāo)簽NAT_REMOTE_To_Be_Processed來指示DE-NAT功能。如上所指示的,DE-NAT功能是對遠(yuǎn)程生成的分組執(zhí)行的NAT功能,而NAT是對LOCAL分組(即,在網(wǎng)絡(luò)內(nèi)生成的分組)執(zhí)行的NAT功能。
在將標(biāo)識符NAT_REMOTE_To_Be_Processed包括在目的地MAC地址字段504中后,網(wǎng)絡(luò)交換機(jī)102通過直接鏈路106將分組轉(zhuǎn)發(fā)至分組處理器104(步驟304中)。分組處理器104接收具有如圖5B所示的報頭500的分組(步驟402中)。
圖5C示出了在將分組報頭返回網(wǎng)絡(luò)交換機(jī)時(步驟406中)已經(jīng)由在分組處理器上執(zhí)行的功能模塊204對其進(jìn)行了處理(步驟405中)之后的分組報頭500。如圖5C所示,作為由分組處理器104處的DE-NAT功能進(jìn)行的處理的一部分,將目的地IP地址字段508更新為包括終端接收方計算機(jī)(計算機(jī)114)的內(nèi)部私有IP地址。為了使網(wǎng)絡(luò)交換機(jī)102將分組識別為已經(jīng)經(jīng)過處理,分組處理器 104用NAT_REMOTE_Processed標(biāo)識符替代目的地MAC地址字段504中的功能標(biāo)識符。
圖5D示出了在由網(wǎng)絡(luò)交換機(jī)將分組報頭500轉(zhuǎn)發(fā)至其目的地節(jié)點(步驟308中)時的分組報頭500。如圖5D所示,相對于圖5C,目的地MAC地址字段504已經(jīng)被更新為指示通往目的地節(jié)點(即計算機(jī)114)的路徑上的下一跳節(jié)點的MAC地址。
如上所述,上述示例依靠對分組的目的地MAC地址進(jìn)行修改來指示需要對分組執(zhí)行或者已經(jīng)對分組執(zhí)行了哪個網(wǎng)絡(luò)功能,因此,上述示例僅是方法300和方法400的一種示例實現(xiàn)方式。在其它實現(xiàn)方式中,還可以將功能標(biāo)識符包括在其它報頭字段中。
圖6A到圖6D圖示出了與分組相關(guān)聯(lián)的各種字段,諸如,(一個或多個)MAC地址字段、VLAN標(biāo)記字段、通用路由封裝報頭字段、以及多協(xié)議標(biāo)簽轉(zhuǎn)換報頭字段,其中,可以包括在分組處理器上執(zhí)行的虛擬化網(wǎng)絡(luò)功能的標(biāo)識符。
圖6A示出了用于IPv6分組的典型分組報頭。典型分組包括層2數(shù)據(jù)鏈路層(例如以太網(wǎng))報頭字段、層3網(wǎng)絡(luò)層(例如IPv4或者IPv6)報頭字段、以及4層傳輸層(例如TCP)報頭字段。圖6A突出顯示了在典型IPv6分組中目的地MAC地址字段602的位置。
如上所述,在一些實現(xiàn)方式中,前述的網(wǎng)絡(luò)功能標(biāo)識符可以包括在VLAN標(biāo)記字段604中(諸例如由IEEE 802.1Q定義)。圖6B示出了在IPv6分組報頭中包括在以太網(wǎng)類型字段的第一部分中的VLAN標(biāo)記字段604的位置。
在一些其它實現(xiàn)方式中,網(wǎng)絡(luò)功能標(biāo)識符可以包括在通用路由封裝(GRE)報頭字段606中(例如由RFC2784定義)。在圖6C中示出了GRE字段606的位置。GRE報頭字段606插入在報頭中的以太網(wǎng)類型字段與IP版本字段之間。
在一些其它實現(xiàn)方式中,網(wǎng)絡(luò)功能標(biāo)識符可包括在MPLS報頭字段608中(例如由RFC3031所定義)。圖6D示出了IPv6分組中的MPLS報頭字段608的位置。MPLS報頭字段608包括在與GRE報頭字段606相似的位置中。在一些實現(xiàn)方式中,MPLS報頭字段608包含一個或多個標(biāo)簽(即標(biāo)簽棧)。一個或者多個網(wǎng)絡(luò)功能標(biāo)識符可以包括在MPLS報頭字段608內(nèi)的相應(yīng)MPLS標(biāo)簽中。
圖7是適合用于網(wǎng)絡(luò)交換機(jī)和分組處理器的示例計算系統(tǒng)141的框圖。例如,計算機(jī)系統(tǒng)141適合用于實現(xiàn)分組處理器104。在廣義概述中,計算系統(tǒng)141包括用于根據(jù)指令執(zhí)行操作的至少一個處理器148、和用于存儲指令和數(shù)據(jù)的一個或多個存儲器設(shè)備144或者149。所圖示的示例計算系統(tǒng)141包括經(jīng)由總線142與存儲器144通信的一個或多個處理器148、具有用于連接至網(wǎng)絡(luò)(未示出)的網(wǎng)絡(luò)接口端口146的至少一個網(wǎng)絡(luò)接口控制器143、以及例如輸入/輸出(“I/O”)組件147的其它組件145。通常,(一個或多個)處理器148將執(zhí)行從存儲器接收到的指令。所圖示的(一個或多個)處理器148合并高速緩存149或者直接連接至高速緩存149。在一些實例中,指令從存儲器144讀取至高速緩存149,并且從高速緩存149由(一個或多個)處理器148執(zhí)行。
更加具體地,(一個或多個)處理器148可以是對指令進(jìn)行處理的任何邏輯電路,所述指令例如是從存儲器144或者高速緩存149取出的指令。在許多實施例中,(一個或多個)處理器148是微處理器單元或者專用處理器。計算設(shè)備141可以基于任何處理器或者處理器集合而能夠進(jìn)行本文描述的操作。(一個或多個)處理器148可以是單核處理器或者(一個或多個)多核處理器。(一個或多個)處理器148可以是多個不同的處理器。在一些實現(xiàn)方式中,(一個或多個)處理器148被實現(xiàn)為在一個或多個“芯片”上的電路。
存儲器144可以是適合用于存儲計算機(jī)可讀數(shù)據(jù)的任何設(shè)備。存儲器144可以是具有固定存儲的設(shè)備或者用于讀取可移動存儲介質(zhì)的設(shè)備。示例包括所有形式的非易失性存儲器、介質(zhì)和存儲器設(shè)備、半導(dǎo)體存儲器設(shè)備(例如,EPROM、EEPROM、SDRAM、以及閃速存儲器設(shè)備)、磁盤、磁光盤、以及光盤(例如,CD ROM、DVD-ROM、或者盤)。計算系統(tǒng)141可以具有任何數(shù)目的存儲器設(shè)備144。
高速緩存存儲器149通常是放置為非常接近(一個或多個)處理器148以獲得快速訪問時間的計算機(jī)存儲器的形式。在一些實現(xiàn)方式中,高速緩存存儲器149是(一個或多個)處理器148的一部分,或者位于與(一個或多個)處理器148相同的芯片上。在一些實現(xiàn)方式中,存在多級高速緩存存儲器149,例如,L2高速緩存層和L3高速緩存層。
網(wǎng)絡(luò)接口控制器149經(jīng)由網(wǎng)絡(luò)接口146(有時稱為網(wǎng)絡(luò)接口端口)管理數(shù)據(jù)交換。網(wǎng)絡(luò)接口控制器143處理用于網(wǎng)絡(luò)通信的OSI模型的物理層和數(shù)據(jù)鏈路層。在一些實現(xiàn)方式中,網(wǎng)絡(luò)接口控制器的一些任務(wù)由(一個或多個)處理器148中的一個或多個處理。在一些實現(xiàn)方式中,網(wǎng)絡(luò)接口控制器143合并到處理器148中,例如,作為在相同芯片上的電路。在一些實現(xiàn)方式中,計算系統(tǒng)141具有由單個控制器143控制的多個網(wǎng)絡(luò)接口146。在一些實現(xiàn)方式中,計算系統(tǒng)141具有多個網(wǎng)絡(luò)接口控制器143。在一些實現(xiàn)方式中,每個網(wǎng)絡(luò)接口146都是物理網(wǎng)絡(luò)鏈路(例如cat-5以太網(wǎng)鏈路)的連接點。在一些實現(xiàn)方式中,網(wǎng)絡(luò)接口控制器143支持無線連接并且接口端口146是無線(例如無線電)接收器/發(fā)射器(例如,用于IEEE 802.11協(xié)議、近場通信“NFC”、藍(lán)牙、BLE、ANT、或者任何其它無線協(xié)議中的任一個)。在一些實現(xiàn)方式中,網(wǎng)絡(luò)接口控制器143實現(xiàn)諸如以太網(wǎng)的一個或多個網(wǎng)絡(luò)協(xié)議。通常,計算設(shè)備141通過網(wǎng)絡(luò)接口146經(jīng)由物理鏈路或者無線鏈路與其它計算設(shè)備交換數(shù)據(jù)。網(wǎng)絡(luò)接口146可以直接鏈接至另一設(shè)備或者經(jīng)由中間設(shè)備鏈接至另一設(shè)備,所述中間設(shè)備例如將計算設(shè)備141連接至諸如互聯(lián)網(wǎng)等數(shù)據(jù)網(wǎng)絡(luò)的網(wǎng)絡(luò)設(shè)備,諸如集線器、橋接器、交換機(jī)或者路由器。
計算系統(tǒng)141可包括一個或多個輸入/輸出(“I/O”)組件147,或者是為一個或多個輸入/輸出(“I/O”)組件147提供接口。輸入設(shè)備包括但不限于:鍵盤、麥克風(fēng)、觸摸屏、腳踏開關(guān)、傳感器、MIDI設(shè)備、以及諸如鼠標(biāo)或者軌跡球的指示設(shè)備。輸出設(shè)備包括但不限于:視頻顯示器、揚聲器、可刷新的點字終端、燈、MIDI設(shè)備、以及2D打印機(jī)或者3D打印機(jī)。
其它組件145可以包括I/O接口、外部串行設(shè)備端口、和任何附加的協(xié)同處理器。例如,計算系統(tǒng)141可以包括連接輸入設(shè)備、輸出設(shè)備、或者附加的存儲器設(shè)備(例如,便攜式閃速驅(qū)動器或者外部媒體驅(qū)動器)的接口(例如,通用串行總線(“USB”)接口)。在一些實現(xiàn)方式中,計算設(shè)備141包括諸如協(xié)同處理器的附加設(shè)備145。例如,數(shù)學(xué)協(xié)同處理器可以協(xié)助處理器148進(jìn)行高精度或者復(fù)雜計算。
本主題的實現(xiàn)方式以及在本說明書中描述的操作可以實現(xiàn)在數(shù)字電子電路中,或者實現(xiàn)在包含在有形介質(zhì)、固件或者硬件上的計算機(jī)軟件中,包括在本說明書中公開的結(jié)構(gòu)和結(jié)構(gòu)等效物、或者實現(xiàn)在它們中的一個或多個的組合中。本說明書中描述的主題的實現(xiàn)方式可以實現(xiàn)為體現(xiàn)在有形介質(zhì)(即,一個或多個計算機(jī)程序指令的模塊)上的、編碼在一個或多個計算機(jī)存儲介質(zhì)上以供數(shù)據(jù)處理裝備執(zhí)行或者用于控制數(shù)據(jù)處理裝備的操作的一個或多個計算機(jī)程序。計算機(jī)存儲介質(zhì)可以是或者包括在計算機(jī)可讀存儲設(shè)備、計算機(jī)可讀存儲基板、隨機(jī)或者串行存取存儲器陣列或者設(shè)備、或者一個或多個上述設(shè)備的組合中。計算機(jī)存儲介質(zhì)也可以是或者包括在一個或多個單獨的組件或者介質(zhì)(例如,多個CD、盤、或者其它存儲設(shè)備)中。計算機(jī)存儲介質(zhì)可以是有形的和非暫時性的。
可以用任何形式的編程語言(包括編譯語言、解譯語言、陳述性語言、和過程語言)來編寫計算機(jī)程序(也稱為程序、軟件、軟件應(yīng)用、腳本、或者代碼),并且可以按照任何形式(包括:作為獨立的程序或者模塊、組件、子例程、對象、或者適合用于計算環(huán)境的其它單元)來部署該計算機(jī)程序。計算機(jī)程序可以但并非必須與文件系統(tǒng)中的文件對應(yīng)??梢詫⒊绦虼鎯υ诒3制渌绦蚧蛘邤?shù)據(jù)(例如,存儲在標(biāo)記語言文檔中的一個或多個腳本)的文件的一部分中、存儲在專用于所探討中的程序的單個文件中、或者存儲在多個協(xié)作文件(例如,存儲一個或多個模塊、庫、子程序、或者部分代碼的文件)中??梢詫⒂嬎銠C(jī)程序部署為在一個計算機(jī)上執(zhí)行或者在位于一個站點處或者分布在多個站點中并且通過通信網(wǎng)絡(luò)互相連接的多個計算機(jī)上執(zhí)行。
可以通過一個或多個可編程處理器來進(jìn)行本說明書中所描述的過程和邏輯流程,該一個或多個可編程處理器執(zhí)行通過操作輸入數(shù)據(jù)并且生成輸出來執(zhí)行動作的一個或多個計算機(jī)程序。也可以通過專用邏輯電路(例如,現(xiàn)場可編程門陣列(“FPGA”)或者專用集成電路(“ASIC”))來執(zhí)行過程和邏輯流程,并且也可以將裝備實現(xiàn)為該專用邏輯電路或者專用集成電路。
雖然本說明書包含了許多具體實現(xiàn)細(xì)節(jié),但是不應(yīng)該將這些細(xì)節(jié)視為對任何發(fā)明或者可能被要求的內(nèi)容的范圍的限制,而是作為針對特定發(fā)明的特定實現(xiàn)方式的特征的描述。在本說明書中在單獨實現(xiàn)方式的背景下描述的某些特征也可以組合地實現(xiàn)在單個實現(xiàn)方式中。相反,在單個實現(xiàn)方式的背景下描述的各種特征也可以單獨地或者按照任何合適的子組合實現(xiàn)在多個實現(xiàn)方式中。此外,雖然上面可能將特征描述為以某些組合來起作用并且最初甚至同樣地對該特征進(jìn)行了要求,但是在一些情況下可以從組合中刪除來自所要求的組合的一個或多個特征,并且所要求的組合可以指向子組合或者子組合的變化。
相似地,雖然在附圖中按照特定順序示出了操作,但是不應(yīng)該將其理解為需要按照所示的特定順序或者按照相繼的順序來執(zhí)行這種操作,或者需要執(zhí)行所有圖示的操作以實現(xiàn)期望的結(jié)果。在某些情況下,多任務(wù)處理和并行處理可以是有利的。此外,不應(yīng)該將在上述實施例中的各種系統(tǒng)組件的分離理解為在所有實施例中需要這種分離,并且應(yīng)該理解,所描述的程序組件和系統(tǒng)通常可以一起集成在單個軟件產(chǎn)品中或者封裝到多個軟件產(chǎn)品中。
對“或者”的引用可以理解為是包容性的,從而使用“或者”來描述的任何術(shù)語可以指示上述術(shù)語中的單個、多于一個、和所有中的任何一種。標(biāo)簽“第一”、“第二”、“第三”等并不必然意味著表示排序,并且通常僅用于區(qū)分類似的或者相似的術(shù)語或者元件。
因此,已經(jīng)對本主題的特定實現(xiàn)方式進(jìn)行了描述。其它實現(xiàn)方式也在以下權(quán)利要求書的范圍內(nèi)。在一些情況下,在權(quán)利要求書中敘述的動作可以按照不同的順序來執(zhí)行并且仍然可以實現(xiàn)期望的結(jié)果。另外,在附圖中描繪的過程不一定需要所示的特定順序或者相繼順序,以實現(xiàn)期望的結(jié)果。在某些實現(xiàn)方式中,也可使用多任務(wù)處理或者并行處理。