本發(fā)明有關(guān)于數(shù)據(jù)網(wǎng)絡(luò),更具體來說,有關(guān)于數(shù)據(jù)分組靈活的信息映射和修改的數(shù)據(jù)分組修改方法和相關(guān)網(wǎng)絡(luò)裝置。
背景技術(shù):
除非另有說明,否則本部分中描述的方法不是后文權(quán)利要求的現(xiàn)有技術(shù),也不因包含在本部分中而被認(rèn)為是現(xiàn)有技術(shù)。
計算機(jī)網(wǎng)絡(luò)或者數(shù)據(jù)網(wǎng)絡(luò)中的數(shù)據(jù)通信通常涉及將所有已傳送的數(shù)據(jù)分組為合適大小的模塊,本文中稱為“數(shù)據(jù)分組”或“分組”(二者可互換),它們經(jīng)由可由多個同時的通信會話共享的介質(zhì)上傳送。數(shù)據(jù)分組一般由報頭和有效載荷組成。報頭中的信息被網(wǎng)絡(luò)硬件用于將分組指向其目的地。有效載荷被(例如應(yīng)用軟件)提取并使用。
在如今復(fù)雜的網(wǎng)絡(luò)環(huán)境下,很多時候數(shù)據(jù)分組可被在利用不同格式和協(xié)議的網(wǎng)絡(luò)域中傳送。在傳統(tǒng)的方法中,數(shù)據(jù)分組通常以固定的方式被修改,例如,將數(shù)據(jù)分組的格式從一種格式轉(zhuǎn)化或以其他方式轉(zhuǎn)換為另一種。圖7A和圖7B中的每一個均是傳統(tǒng)的數(shù)據(jù)分組修改方法示意圖。請參考圖7A,第一網(wǎng)絡(luò)裝置的入口數(shù)據(jù)分組700可通過復(fù)制外報頭的給定位置或域的值并將其復(fù)制在內(nèi)報頭的相同位置或域來進(jìn)行修改。請參考圖7B,第二網(wǎng)絡(luò)裝置的入口數(shù)據(jù)分組750(可為上述修改后的數(shù)據(jù)分組700),可通過復(fù)制內(nèi)報頭的給定位置或域的值并將其復(fù)制在外報頭的相同位置或域來進(jìn)行修改。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明特提供以下技術(shù)方案:
本發(fā)明實(shí)施例提供一種數(shù)據(jù)分組修改方法,包含接收數(shù)據(jù)分組;修改上述數(shù)據(jù)分組的一個或多個屬性,修改包含:自數(shù)據(jù)分組擷取信息,信息包含數(shù)據(jù)分組的報頭中的一個或多個用戶定義域;依據(jù)一個或多個用戶定義域中的至少 一個用戶定義域定義一個或多個源用戶定義域;以及對于一個或多個源用戶定義域中的至少一個源用戶定義域執(zhí)行一個或多個操作;以及輸出修改后的數(shù)據(jù)分組。
本發(fā)明實(shí)施例又提供一種數(shù)據(jù)分組修改方法,包含接收數(shù)據(jù)分組;儲存數(shù)據(jù)分組;解析數(shù)據(jù)分組以自數(shù)據(jù)分組擷取信息,信息包含數(shù)據(jù)分組的報頭中的一個或多個用戶定義域;依據(jù)一個或多個用戶定義域中的至少一個用戶定義域定義一個或多個源用戶定義域;儲存一個或多個源用戶定義域;通過多個流量表處理一個或多個用戶定義域以及一個或多個源用戶定義域,以及依據(jù)一個或多個操作命令以管線形式對于一個或多個源用戶定義域中的至少一個源用戶定義域執(zhí)行多個操作,其中多個流量表用于識別一個或多個操作命令;儲存一個或多個操作命令;依據(jù)所儲存的一個或多個操作命令以及所儲存的一個或多個源用戶定義域修改數(shù)據(jù)分組的一個或多個屬性;以及輸出修改后的數(shù)據(jù)分組。
本發(fā)明實(shí)施例又提供一種網(wǎng)絡(luò)裝置,包含分組交換器,接收數(shù)據(jù)分組,以及輸出數(shù)據(jù)分組的修改后的版本,分組交換器包含:解析器,解析數(shù)據(jù)分組,以自數(shù)據(jù)分組擷取信息,信息包含數(shù)據(jù)分組的報頭中的一個或多個用戶定義域,解析器也依據(jù)一個或多個用戶定義域中的至少一個用戶定義域定義一個或多個源用戶定義域;儲存裝置,儲存多個流量表,多個流量表識別一個或多個操作命令,并依據(jù)一個或多個操作命令對于一個或多個源用戶定義域中的至少一個源用戶定義域執(zhí)行多個操作;命令收集器,自多個流量表接收并儲存一個或多個操作命令;分組緩沖器,儲存數(shù)據(jù)分組;重寫數(shù)據(jù)向量器,自解析器接收并儲存一個或多個源用戶定義域;以及分組修改器,耦接于分組緩沖器、命令收集器以及重寫數(shù)據(jù)向量器,以分別接收數(shù)據(jù)分組、一個或多個操作命令以及一個或多個源用戶定義域,分組修改器依據(jù)一個或多個操作命令修改數(shù)據(jù)分組的一個或多個屬性以及一個或多個源用戶定義域以提供數(shù)據(jù)分組的修改后的版本。
本發(fā)明的數(shù)據(jù)分組修改方法和相關(guān)網(wǎng)絡(luò)裝置可以對數(shù)據(jù)分組做靈活的修改。
【附圖說明】
圖1是依據(jù)本發(fā)明實(shí)施例的示例架構(gòu)的示意圖。
圖2示出依據(jù)本公開的一個實(shí)施的示例操作。
圖3示出依據(jù)本發(fā)明的實(shí)施方案的示例情景。
圖4是依據(jù)本發(fā)明實(shí)施例的示例裝置的示意圖。
圖5示出依據(jù)本發(fā)明的實(shí)施例的示例流程。
圖6示出依據(jù)本發(fā)明的實(shí)施例的示例流程。
圖7A和圖7B中的每一個均是傳統(tǒng)的數(shù)據(jù)分組修改方法示意圖。
【具體實(shí)施方式】
在說明書及權(quán)利要求書當(dāng)中使用了某些詞匯來指稱特定的組件。所屬領(lǐng)域中的技術(shù)人員應(yīng)可理解,制造商可能會用不同的名詞來稱呼同樣的組件。本說明書及權(quán)利要求書并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的基準(zhǔn)。在通篇說明書及權(quán)利要求書當(dāng)中所提及的「包含」是開放式的用語,故應(yīng)解釋成「包含但不限定于」。另外,「耦接」一詞在此包含任何直接及間接的電氣連接手段。因此,若文中描述第一裝置耦接于第二裝置,則代表第一裝置可直接電氣連接于第二裝置,或透過其它裝置或連接手段間接地電氣連接至第二裝置。
圖1是依據(jù)本發(fā)明實(shí)施例的示例架構(gòu)100的示意圖。示例架構(gòu)100可在分組交換器中實(shí)施及/或以硬件的方式實(shí)施。示例架構(gòu)100可包含解析器110、管線形式的多個流量表120(1)–120(N)(N為大于1的正整數(shù))、命令收集器130、分組緩沖器140、重寫數(shù)據(jù)向量器150以及分組修改器160。示例架構(gòu)100可接收一個或多個入口數(shù)據(jù)分組,包含如圖1所述的原始數(shù)據(jù)分組102,并輸出一個或多個出口數(shù)據(jù)分組,包含如圖1所示的修改后的數(shù)據(jù)分組104。原始數(shù)據(jù)分組102可為具有隧道報頭(tunnel header)的多層分組,或?yàn)楹唵蔚膯螌臃纸M。示例架構(gòu)100也可包含流量管理器(為簡潔起見,沒有展示在圖1中以便避免混淆圖示)。
管線的流量表120(1)–120(N)可用于以串行或者管線的形式接收信息,例如,依據(jù)通過一組命令的執(zhí)行而進(jìn)行的進(jìn)程,其中該組命令符合開流(OpenFlow)協(xié)議。即,第一流量表120(1)可為管線的流量表120(1)–120(N)中接收信息的第一個流量表,接著是第二流量表120(2),接著是第三流量表120(3)等等,一直到管線的流量表120(1)–120(N)中的最后一個流量表120(N)。管線的流量表120(1)–120(N)有關(guān)的操作更詳細(xì)的說明記載于后文。
解析器110可以用一個或多個源用戶定義域(user-defined field,簡寫為SUDF)配置。一個或多個SUDF可在數(shù)據(jù)分組的外報頭(outer header)及/或內(nèi)報頭(inner header)定義一個或多個用戶定義域(user-defined field,簡寫為 UDF)。在示例架構(gòu)100中,一個或多個元(meta)信號可被提供用來遍歷管線的流量表120(1)–120(N)。一個或多個元信號的數(shù)量可等于一個或多個SUDF的數(shù)量。在某些實(shí)施例中,一個或多個SUDF可包含,舉例來說,內(nèi)TTL_SUDF、外TTL_SUDF、內(nèi)PCP_DEI_SUDF、外PCP_DEI_SUDF、內(nèi)DSCP_ECN_SUDF、外DSCP_ECN_SUDF、多個(例如,四個)內(nèi)自定義SUDF和多個(例如,四個)外自定義SUDF。
示例架構(gòu)100可也利用若干操作命令來對一個或多個SUDF進(jìn)行操作。在某些實(shí)施例中,一個或多個操作命令可能關(guān)于給定SUDF的值,而一個或多個操作命令可能關(guān)于對給定SUDF(或其值)做什么。舉例來說,操作命令SET_SUDF可用于設(shè)置給定SUDF的值,操作命令DECREASE_SUDF可用于減小給定SUDF的值,而操作命令I(lǐng)NCREASE_SUDF可用于增加給定SUDF的值。作為另一示例,操作命令SET_BY_SUDF可用于將給定SUDF的值設(shè)置為數(shù)據(jù)分組的給定UDF的值。作為又一示例,操作命令PUSH_BY_SUDF可用于將給定SUDF推送或插入至數(shù)據(jù)分組的給定UDF,從而增加一個UDF至數(shù)據(jù)分組并增加數(shù)據(jù)分組的長度。
當(dāng)原始數(shù)據(jù)分組102進(jìn)入示例架構(gòu)100時,原始數(shù)據(jù)分組102可被分組緩沖器140和解析器110接收。分組緩沖器140可在將原始數(shù)據(jù)分組102提供至分組修改器160進(jìn)行修改之前儲存原始數(shù)據(jù)分組102。一旦接收到原始數(shù)據(jù)分組102,解析器110可解析原始數(shù)據(jù)分組102以自原始數(shù)據(jù)分組102擷取一個或多個UDF,并將一個或多個擷取的UDF提供給管線的流量表120(1)–120(N)。舉例來說,解析器102可將一個或多個UDF提供至第一流量表120(1),第一流量表120(1)可對一個或多個UDF中的任意一個進(jìn)行修改,并隨后將該一個或多個UDF提供至第二流量表120(2),第二流量表120(2)可又做同樣的操作,以使該一個或多個UDF遍歷管線的流量表120(1)–120(N)并可沿途被修改直至最后一個流量表120(N)。在本發(fā)明的實(shí)施中,所擷取的一個或多個UDF的值可分別定義一組一個或多個原始的SUDF的值,而解析器110可提供該一個或多個原始的SUDF作為管線的流量表的數(shù)據(jù)源120(1)–120(N)。舉例來說,解析器102可提供一個或多個原始的SUDF至第一流量表120(1),第一流量表120(1)可對該一個或多個原始的SUDF中的任意一個執(zhí)行修改,并將該一個或多個SUDF提供至第二流量表120(2),第二流量表120(2)可又做同樣的操作,以使該一個或多個UDF可遍歷管線的流量表120(1)–120(N)并可沿途被修改直至最后一個流量表120(N)。此外,解析器110可提供該一個或多個原始的(未修改 的)SUDF至重寫數(shù)據(jù)向量器150,重寫數(shù)據(jù)向量器150也可儲存該一個或多個原始的SUDF。當(dāng)分組修改器160準(zhǔn)備好修改原始數(shù)據(jù)分組102時,重寫數(shù)據(jù)向量器150可將個一個或多個原始的SUDF提供給分組修改器160作為數(shù)據(jù)源。
流量表120(1)–120(N)中的每一個可基于自解析器110接收的一個或多個已擷取的UDF查找、發(fā)現(xiàn)或識別一個或多個操作命令。流量表120(1)–120(N)中的每一個可提供對應(yīng)的已識別的一個或多個操作命令至命令收集器130,命令收集器130可收集并儲存自流量表120(1)–120(N)接收的操作命令。流量表120(1)–120(N)中的每一個可基于對應(yīng)的已識別的一個或多個操作命令執(zhí)行操作,包含修改一個或多個UDF中的至少一個UDF的值及一個或多個SUDF中的至少一個SUDF的值。流量表120(1)–120(N)中的每一個可更將一個或多個SUDF(其中的至少一個可以被修改)提供至其隨后的流量表。舉例來說,在第一流量表120(1)對命名為SUDF_0的SUDF進(jìn)行修改之后,第一流量表120(1)可將SUDF_0(以及其他SUDF(若存在其他SUDF))提供至第二流量表120(2)。類似地,在第二流量表120(2)對命名為SUDF_0的SUDF及/或另一SUDF進(jìn)行修改之后,第二流量表120(2)可將SUDF_0及/或另一SUDF(以及其他SUDF(若存在其他SUDF))提供至第三流量表120(3)。該操作可以以管線的方式繼續(xù)進(jìn)行,直至一個或多個SUDF被最后一個流量表處理120(N),一個或多個SUDF中的至少一個SUDF可被由此修改。
用于說明的目的,例如,當(dāng)操作命令是SET_SUDF、DECREASE_SUDF或INCREASE_SUDF時,流量表120(1)–120(N)中的相應(yīng)流量表可分別設(shè)置由操作命令識別的給定SUDF的值、降低給定SUDF的值或者增加給定SUDF的值。作為另一示例,當(dāng)操作命令是SET_BU_SUDF時,流量表120(1)–120(N)中的相應(yīng)流量表可將由操作命令識別的給定SUDF的值寫入至操作命令識別的給定UDF中。作為進(jìn)一步的命令,當(dāng)操作命令是PUSH_BY_SUDF時,流量表120(1)–120(N)中的相應(yīng)流量表可將由操作命令識別的給定SUDF的值推送(push)或插入至操作命令識別的給定UDF中。流量表120(1)–120(N)中的一個流量表執(zhí)行的一個或多個操作命令而修改的UDF可隨后被提供至管線中的隨后的流量表(例如,自流量表120(K)至流量表120(K+1),其中K為大于或等于1且不大于N-1的正整數(shù))。
分組修改器160可自命令收集器130讀取儲存于其中的收集的操作命令。分組修改器160也可自重寫數(shù)據(jù)向量器150接收數(shù)據(jù)源并自分組緩沖器140接 收原始數(shù)據(jù)分組。分組修改器160可依據(jù)收集的操作命令和數(shù)據(jù)源修改原始數(shù)據(jù)分組102。在給定的操作命令為SET_SUDF、DECREASE_SUDF或INCREASE_SUDF的情況下,分組修改器160可修改給定SUDF的值。在給定的操作命令為SET_BY_SUDF的情況下,分組修改器160可將給定SUDF的值寫入至數(shù)據(jù)分組內(nèi)的確定位置(identified position),例如,依據(jù)相應(yīng)UDF映射位置。在給定操作指令為PUSH_BY_SUDF的情況下,分組修改器160可將給定SUDF的值推送或插入至數(shù)據(jù)分組內(nèi)的確定位置,例如,依據(jù)相應(yīng)UDF映射位置。在執(zhí)行依據(jù)收集的操作指令和數(shù)據(jù)源(即,原始的一個或多個SUDF)的一個或多個修改之后,分組修改器160可輸出修改后的數(shù)據(jù)分組104作為示例架構(gòu)100的輸出。
圖2示出依據(jù)本公開的一個實(shí)施的示例操作200。下文所述的示例操作200實(shí)施于示例架構(gòu)100中,示例操作200僅用于說明之用,并不用于限制本發(fā)明的范圍。在圖2所示的示例中,U_TTL是外報頭中的用戶定義域,并且不是傳統(tǒng)的層3(layer 3,簡寫為L3)TTL。命名為U_TTL的用戶定義域的值(在本示例中是100),可被指派給命名為SUDF_0的源用戶定義域。在示例操作200中,第一流量表120(1)可用匹配值80查找或識別與用戶定義域UDF10相關(guān)聯(lián)的一個或多個操作命令。在本示例中,相關(guān)的操作命令可為INCREASE_SUDF(SUDF_0,2)和SET_BY_SUDF(SUDF_0,UDF10)。在示例操作200中,第二流量表120(2)可用匹配值102查找或識別與用戶定義域UDF10相關(guān)聯(lián)的一個或多個操作命令。在本示例中,相關(guān)的操作命令可為SET_SUDF(SUDF_0,80)及SET_BY_SUDF(SUDF_0,UDF4)。在本示例中,出口數(shù)據(jù)分組可包含兩個修改操作。具體來說,用戶定義域UDF4的值被修改為80,而用戶定義域UDF10的值被修改為102(=100+2)。
在示例操作200中,解析器100可自入口數(shù)據(jù)分組(例如,原始數(shù)據(jù)分組102)的U_TTL的用戶定義域獲取SUDF_0的值。第一流量表120(1)可以規(guī)定以下內(nèi)容的條碼進(jìn)行配置:在UDF10的值為80的情況下,則查找操作命令I(lǐng)NCREASE_SUDF(SUDF_0,2)及SET_BY_SUDF(SUDF_0,UDF10)。第二流量表120(2)可以規(guī)定以下內(nèi)容的條碼進(jìn)行配置:在UDF10的值為102的情況下,則查找操作命令SET_SUDF(SUDF_0,80)及SET_BY_SUDF(SUDF_0,UDF4)。
相應(yīng)的,當(dāng)入口數(shù)據(jù)分組(例如,原始數(shù)據(jù)分組102)進(jìn)入示例架構(gòu)100時,解析器110可基于配置自U_TTL擷取值100并相應(yīng)將SUDF_0的值設(shè)置為100。解析器110也可將一個或多個SUDF(包含SUDF_0)提供至第一流量表120(1)以及 重寫數(shù)據(jù)向量器150。解析器110可更擷取用戶定義域UDF0-UDFM(假設(shè)UDF的數(shù)量M是大于1的正整數(shù))的值并將所擷取的用戶定義域UDF0-UDFM的值提供給管線的流量表120(1)–120(N)用于處理。
在第一流量表120(1)中,假定UDF10的值初始是80,第一流量表120(1)中的上述條目存在匹配。相應(yīng)的,相關(guān)的操作命令是INCREASE_SUDF(SUDF_0,2)和SET_BY_SUDF(SUDF_0,UDF10)。第一流量表120(1)可隨后執(zhí)行將SUDF_0的值(初始為100)加2的操作以使其值達(dá)到102,并將值102寫入至UDF10的操作。此外,示例架構(gòu)100可將操作命令I(lǐng)NCREASE_SUDF(SUDF_0,2)和SET_BY_SUDF(SUDF_0,UDF10)儲存至命令收集器130中。
在第二流量表120(2)中,假定UDF10已修改的值是102,第二流量表120(2)中的上述條目存在匹配。相應(yīng)的,相關(guān)的操作命令是SET_SUDF(SUDF_0,80)和SET_BY_SUDF(SUDF_0,UDF4)。第二流量表120(2)可隨后執(zhí)行將SUDF_0的值(初始為100)設(shè)置為80,并將值80寫入至UDF4的操作。此外,示例架構(gòu)100可將操作命令SET_SUDF(SUDF_0,80)和SET_BY_SUDF(SUDF_0,UDF4)儲存至命令收集器130中。
隨后,分組修改器160可自重寫數(shù)據(jù)向量器150讀取SUDF_0的原始值。分組修改器160也可閱讀、獲取或以其他方式自分組緩沖器140獲得原始數(shù)據(jù)分組102以及自命令收集器130獲得操作命令。分組修改器160可隨后依據(jù)所儲存的操作命令修改原始數(shù)據(jù)分組102,其中操作指令分別被命名為:INCREASE_SUDF(SUDF_0,2)、SET_BY_SUDF(SUDF_0,UDF10)、SET_SUDF(SUDF_0,80)和SET_BY_SUDF(SUDF_0,UDF4)。特別是,分組修改器160可將值102(=100+2)寫入至原始數(shù)據(jù)分組102對應(yīng)于UDF10的位置或域中,并隨后將值80寫入至原始數(shù)據(jù)分組102對應(yīng)于UDF4的位置或域中。在執(zhí)行上述修改之后,分組修改器160可輸出出口數(shù)據(jù)分組作為修改后的數(shù)據(jù)分組104。
圖3示出依據(jù)本發(fā)明的實(shí)施方案的示例情景300。示例情景300可以包括兩個數(shù)據(jù)中心,數(shù)據(jù)中心310和數(shù)據(jù)中心320,其可通過商業(yè)實(shí)體是私人擁有和/或操作。數(shù)據(jù)中心310和數(shù)據(jù)中心320中的每一個可包含一個或多個局域網(wǎng)(local area networks,簡寫為LAN)。此外,數(shù)據(jù)中心310和數(shù)據(jù)中心320中的每一個可包含一個或多個軟件定義網(wǎng)絡(luò)(software-defined network,簡寫為SDN)。數(shù)據(jù)中心310和數(shù)據(jù)中心320可通過公共網(wǎng)絡(luò)330(舉例來說,可為廣域網(wǎng)(wide area network,簡寫為WAN)或因特網(wǎng))彼此通信連接。數(shù)據(jù)中心310可 以通過網(wǎng)絡(luò)裝置315與公共網(wǎng)絡(luò)330連接,其中網(wǎng)絡(luò)裝置315可以為某類型的網(wǎng)絡(luò)節(jié)點(diǎn),例如邊緣網(wǎng)關(guān)(edge gateway)。數(shù)據(jù)執(zhí)行B 320可以通過網(wǎng)絡(luò)裝置325與公共網(wǎng)絡(luò)330連接,其中網(wǎng)絡(luò)裝置325可以為某類型的網(wǎng)絡(luò)節(jié)點(diǎn),例如邊緣網(wǎng)關(guān)。網(wǎng)絡(luò)裝置315和網(wǎng)絡(luò)裝置325中的每一個可依據(jù)本發(fā)明的各種實(shí)施方式執(zhí)行操作。例如,示例架構(gòu)100可實(shí)施于網(wǎng)絡(luò)裝置315和網(wǎng)絡(luò)裝置325中的每一個中。此外,網(wǎng)絡(luò)裝置315和網(wǎng)絡(luò)裝置325中的每一個可執(zhí)行類似于示例操作200的操作。
在示例情景300中,數(shù)據(jù)中心310和數(shù)據(jù)中心320的每一個中傳輸?shù)臄?shù)據(jù)分組可以是用戶定義格式。相比之下,公共網(wǎng)絡(luò)330可以只傳送傳統(tǒng)格式的數(shù)據(jù)分組,例如,數(shù)據(jù)分組的報頭為傳統(tǒng)報頭格式。當(dāng)用戶定義的格式的數(shù)據(jù)分組340自數(shù)據(jù)中心310傳輸至數(shù)據(jù)中心B 320時,網(wǎng)絡(luò)裝置315可執(zhí)行關(guān)鍵(key)信息映射以將數(shù)據(jù)分組340自用戶定義格式變換或者轉(zhuǎn)換為傳統(tǒng)格式(例如,將數(shù)據(jù)分組340的報頭自用戶定義報頭342變換或者轉(zhuǎn)換為傳統(tǒng)報頭344)。相應(yīng)地,網(wǎng)絡(luò)裝置325可執(zhí)行反向關(guān)鍵信息映射以將數(shù)據(jù)分組340自傳統(tǒng)格式變換或者轉(zhuǎn)換為用戶定義格式(例如,將數(shù)據(jù)分組340的報頭自傳統(tǒng)報頭344變換或者轉(zhuǎn)換為用戶定義報頭342)。
例如,在源端,網(wǎng)絡(luò)裝置315可自用戶定義報頭342復(fù)制關(guān)鍵信息(例如,第一域346和第二域348的值)至傳統(tǒng)報頭344。此外,網(wǎng)絡(luò)裝置315可移動用戶定義報頭342并發(fā)送具有傳統(tǒng)報頭344的數(shù)據(jù)分組340至公共網(wǎng)絡(luò)330。在接收端,當(dāng)數(shù)據(jù)分組340到達(dá)數(shù)據(jù)中心B 320的邊緣時,網(wǎng)絡(luò)裝置325可自傳統(tǒng)報頭344復(fù)制關(guān)鍵信息(例如,第一域346和第二域348的值)至用戶定義報頭342。此外,網(wǎng)絡(luò)裝置325可移動傳統(tǒng)報頭344并發(fā)送具有用戶定義報頭342的數(shù)據(jù)分組340至數(shù)據(jù)中心320。
在將數(shù)據(jù)分組340自一個格式轉(zhuǎn)換為另一個格式的時候(例如,自用戶定義格式轉(zhuǎn)換為傳統(tǒng)格式,以及自傳統(tǒng)格式轉(zhuǎn)換為用戶定義格式),網(wǎng)絡(luò)裝置315和網(wǎng)絡(luò)裝置325中的每一個可對于示例架構(gòu)100和示例操作200,以及如示例裝置400和描述如下的示例流程500和600處理執(zhí)行上述操作。例如,網(wǎng)絡(luò)裝置315和網(wǎng)絡(luò)裝置325中的每一個可自數(shù)據(jù)分組340擷取信息。所擷取的信息可包含數(shù)據(jù)分組340的報頭中的一個或多個UDF。網(wǎng)絡(luò)裝置315和網(wǎng)絡(luò)裝置325中的每一個也可依據(jù)該一個或多個UDF中的至少一個UDF定義一個或多個SUDF。網(wǎng)絡(luò)裝置315和網(wǎng)絡(luò)裝置325中的每一個可更對于該一個或多個SUDF中的至少一個 SUDF執(zhí)行一個或多個操作。例如,網(wǎng)絡(luò)裝置315和網(wǎng)絡(luò)裝置325中的每一個可執(zhí)行下述操作中的一個或多個:設(shè)置至少一個SUDF的值、增加至少一個SUDF的值、減小至少一個SUDF的值、將該至少一個SUDF的值設(shè)置為該一個或多個UDF中的一個UDF的值,以及將該至少一個SUDF的值推送至數(shù)據(jù)分組340的域中。
有利的,依據(jù)本發(fā)明的實(shí)施方式,數(shù)據(jù)分組中的一個或多個域可以以靈活的方式被向內(nèi)和向外復(fù)制(例如,自外報頭至內(nèi)報頭,以及自內(nèi)報頭至外報頭)以修改數(shù)據(jù)分組。這種新穎的功能可以滿足軟件定義網(wǎng)絡(luò)中對數(shù)據(jù)分組做靈活的修改的實(shí)際和潛在的需求。依據(jù)本發(fā)明對于數(shù)據(jù)分組靈活的修改可能使能拷貝或以其他方式復(fù)制數(shù)據(jù)分組中的任意域/位置的內(nèi)容至數(shù)據(jù)分組的另一域/位置,同時伴隨著修改或者不修改值。
圖4是依據(jù)本發(fā)明實(shí)施例的示例裝置400的示意圖。示例裝置400可執(zhí)行這里所述的技術(shù)、方法和系統(tǒng)相關(guān)的各個功能,包含上述的示例操作200和示例情景300,以及下述示例流程500和600。示例裝置400可為示例架構(gòu)100的一種實(shí)施方式。此外,示例裝置400可為實(shí)施于計算機(jī)/數(shù)據(jù)網(wǎng)絡(luò)中的網(wǎng)絡(luò)節(jié)點(diǎn)(例如,路由器或網(wǎng)關(guān))。可選地,示例裝置400可以實(shí)施為分組交換器,例如,以單集成電路芯片或多集成電路芯片的形式,并可實(shí)施于網(wǎng)絡(luò)節(jié)點(diǎn)中。示例裝置400可包含若干硬件元件,該若干硬件元件以包含一個或多個晶體管、電容器、電阻器、電感器和/或憶阻器的電路的形式實(shí)施。
在圖4所述的示例中,示例裝置400可包含分組交換器405,分組交換器405具有若干硬件元件,例如解析器410、存儲裝置420、命令收集器430、分組緩沖器440、重寫數(shù)據(jù)向量器450以及分組修改器460。此外,分組交換器405可包含一個或多個輸入端口470及一個或多個輸出端口480。一個或多個輸入端口470可接收一個或多個入口數(shù)據(jù)分組。一個或多個輸出端口480可輸出一個或多個出口數(shù)據(jù)分組,其中至少一個出口數(shù)據(jù)分組可為入口數(shù)據(jù)分組的修改后的版本。
解析器410可用于解析入口數(shù)據(jù)分組以自入口數(shù)據(jù)分組擷取信息。所擷取的信息可包含入口數(shù)據(jù)分組的報頭中的一個或多個用戶定義域(UDF)。解析器410可也如以上(示例架構(gòu)100和示例操作200)所述的依據(jù)一個或多個UDF中的至少一個UDF定義一個或多個源用戶定義域(SUDF)。
存儲裝置420可為任意類型的隨機(jī)存取存儲器(random access memory, 簡寫為RAM)、任意類型的三元內(nèi)容可尋址存儲器(ternary content addressable memory,簡寫為TCAM),或用于儲存數(shù)據(jù)或一或多組指令的任意合適的存儲裝置(可為軟件、中間件或固件模塊的形式)。例如,TCAM可用于實(shí)施TCAM流量表,TCAM流量表可執(zhí)行通配符搜索。換句話說,TCAM表的底部可設(shè)置”所有通配符”條目以執(zhí)行默認(rèn)查找結(jié)果,搜尋一個或更多錯過的條目,或二者均執(zhí)行。儲存于存儲裝置420中的模塊可以被一個或多個處理器410執(zhí)行來實(shí)現(xiàn)若干操作。在圖4所示的示例中,存儲裝置420中可儲存多個流量表425(1)–425(N),其中N為大于1的正整數(shù),多個流量表425(1)–425(N)可以管線方式運(yùn)行。流量表425(1)–425(N)可識別一個或多個操作命令,并以管線方式依據(jù)一個或多個操作命令對一個或多個SUDF中的至少一個SUDF執(zhí)行操作。
命令收集器430可被配置為自流量表425(1)–425(N)接收并儲存一個或多個操作命令。
分組緩沖器440可被配置為儲存入口數(shù)據(jù)分組。
重寫數(shù)據(jù)向量器450可被配置為自解析器接收并儲存一個或多個SUDF。
分組修改器460可耦接于分組緩沖器440、命令收集器430以及重寫數(shù)據(jù)向量器450以分別自分組緩沖器440、命令收集器430以及重寫數(shù)據(jù)向量器450接收入口數(shù)據(jù)分組、一個或多個操作命令以及一個或多個SUDF。分組修改器460也可被配置為依據(jù)一個或多個操作命令以及一個或多個SUDF修改入口數(shù)據(jù)分組的一個或多個屬性,以及提供出口數(shù)據(jù)分組作為入口數(shù)據(jù)分組的修改后的版本。
在某些實(shí)施方式中,在修改入口數(shù)據(jù)分組的一個或多個屬性時,分組修改器460可被配置為將入口數(shù)據(jù)分組的格式自第一格式轉(zhuǎn)換為第二格式。在某些實(shí)施方式中,在將入口數(shù)據(jù)分組的格式自第一格式轉(zhuǎn)換為第二格式時,分組修改器460可被配置為將入口數(shù)據(jù)分組的報頭的格式自第一報頭格式轉(zhuǎn)換為第二報頭格式。
在某些實(shí)施方式中,在修改入口數(shù)據(jù)分組的一個或多個屬性時,分組修改器460可被配置修改入口數(shù)據(jù)分組的格式、入口數(shù)據(jù)分組的分組報頭、入口數(shù)據(jù)分組的長度或其組合。
在某些實(shí)施例中,在依據(jù)一個或多個UDF中的至少一個UDF定義一個或多個SUDF時,解析器410可被配置為基于一個或多個UDF中的第一UDF的值設(shè)置一個或多個SUDF中的第一SUDF的值。
在某些實(shí)施例中,在依據(jù)一個或多個操作命令對于一個或多個SUDF中的至 少一個SUDF執(zhí)行操作時,流量表425(1)–425(N)可被配置為執(zhí)行一個或多個操作,舉例來說,包含設(shè)置至少一個SUDF的值、增加至少一個SUDF的值、減小至少一個SUDF的值、將該至少一個SUDF的值設(shè)置為該一個或多個UDF中的一個UDF的值,以及將該至少一個SUDF的值推送至數(shù)據(jù)分組的域中。
在某些實(shí)施例中,在識別一個或多個操作命令時,在流量表425(1)–425(N)的每一個中,各流量表可決定在一個或多個UDF中的至少一個UDF和與流量表相關(guān)聯(lián)的相應(yīng)預(yù)定匹配值之間是否存在匹配。流量表425(1)–425(N)也可響應(yīng)一個或多個UDF中的至少一個UDF與相應(yīng)預(yù)定匹配值匹配的決定儲存至少一操作命令。
圖5示出依據(jù)本發(fā)明的實(shí)施例的示例流程500。示例流程500可以表示執(zhí)行示例架構(gòu)100、示例操作200、示例情景300和/或示例裝置400的功能的一個方面。如一個或多個模塊510和520,以及子模塊522、524和526所示,示例流程500可包含一個或多個操作,動作,或功能。盡管以離散的模塊展示,各個模塊可被分為額外的模塊、結(jié)合為較少的模塊,或取消,取決于所需的實(shí)現(xiàn)方式。示例流程500的模塊可以示例架構(gòu)100(或示例裝置400)實(shí)施。示例流程600可由示例裝置500實(shí)現(xiàn)。下文將描述示例流程500的操作被示例裝置400的分組交換器405執(zhí)行的實(shí)施方式來對示例流程500做詳細(xì)說明,并且該記載僅用作說明之用。示例流程500開始于模塊510。
在510,示例流程500可涉及示例裝置400的分組交換器405,分組交換器405接收數(shù)據(jù)分組。模塊520可緊隨模塊510。
在520,示例流程500可涉及示例裝置400的分組交換器405,分組交換器405修改數(shù)據(jù)分組的一個或多個屬性。模塊530可緊隨模塊520。
在530,示例流程500可涉及示例裝置400的分組交換器405,分組交換器405輸出修改后的數(shù)據(jù)分組。
模塊520可包含若干子模塊(包含子模塊522、524以及526,并以子模塊522開始)以實(shí)施對數(shù)據(jù)分組的一個或多個屬性的修改。
在522,示例流程500可涉及示例裝置400的分組交換器405,分組交換器405自數(shù)據(jù)分組擷取信息,信息包含數(shù)據(jù)分組的報頭中的一個或多個UDF。子模塊524可緊隨子模塊522。
在524,示例流程500可涉及示例裝置400的分組交換器405,分組交換器405依據(jù)一個或多個UDF中的至少一個UDF定義一個或多個SUDF。子模塊526 可緊隨子模塊524。
在526,示例流程500可涉及示例裝置400的分組交換器405,分組交換器405對一個或多個SUDF中的至少一個SUDF執(zhí)行一個或多個操作。
在某些實(shí)施方式中,在修改數(shù)據(jù)分組的一個或多個屬性時,示例流程500可涉及分組交換器405將數(shù)據(jù)分組的格式自第一格式轉(zhuǎn)換為第二格式。在某些實(shí)施方式中,在將數(shù)據(jù)分組的格式自第一格式轉(zhuǎn)換為第二格式時,示例流程500可涉及分組交換器405將數(shù)據(jù)分組的報頭的格式自第一報頭格式轉(zhuǎn)換為第二報頭格式。
在某些實(shí)施方式中,在修改數(shù)據(jù)分組的一個或多個屬性時,示例流程500可涉及分組交換器405修改數(shù)據(jù)分組的格式、分組報頭或長度中的至少一個。
在某些實(shí)施例中,在依據(jù)一個或多個UDF中的至少一個UDF定義一個或多個SUDF時,示例流程500可涉及分組交換器405基于一個或多個UDF中的第一UDF的值設(shè)置一個或多個SUDF中的第一SUDF的值。
在某些實(shí)施例中,在對于一個或多個SUDF中的至少一個SUDF執(zhí)行一個或多個操作時,示例流程500可涉及分組交換器405識別一個或多個操作命令。此外,示例流程500可涉及分組交換器405對于該至少一個SUDF執(zhí)行一個或多個操作命令。在某些實(shí)施例中,在對于至少一個SUDF執(zhí)行一個或多個操作命令時,示例流程500可涉及分組交換器405執(zhí)行包含下述操作的一個或多個操作:設(shè)置至少一個SUDF的值、增加至少一個SUDF的值、減小至少一個SUDF的值、將該至少一個SUDF的值設(shè)置為該一個或多個UDF中的一個UDF的值,以及將該至少一個SUDF的值推送至數(shù)據(jù)分組的域中。
在某些實(shí)施例中,在識別一個或多個操作命令時,示例流程500可涉及分組交換器405通過多個流量表的管線處理一個或多個UDF以及一個或多個SUDF。此外,在多個流量表的每一個中,示例流程500可涉及分組交換器405決定在一個或多個UDF中的至少一個UDF和與流量表相關(guān)聯(lián)的相應(yīng)預(yù)定匹配值之間是否存在匹配。此外,示例流程500可涉及分組交換器405響應(yīng)一個或多個UDF中的至少一個UDF與相應(yīng)預(yù)定匹配值匹配的決定儲存至少一操作命令。
圖6示出依據(jù)本發(fā)明的實(shí)施例的示例流程600。示例流程600可以表示執(zhí)行示例架構(gòu)100、示例操作200、示例情景300和/或示例裝置400的功能的一個方面。如一個或多個模塊610、620、630、640、650、660、670、680和690所示,示例流程600可包含一個或多個操作,動作,或功能。盡管以離散的模塊 展示,各個模塊可被分為額外的模塊、結(jié)合為較少的模塊,或取消,取決于所需的實(shí)現(xiàn)方式。示例流程600可以示例架構(gòu)100(或示例裝置400)實(shí)施。下文將描述示例流程600的操作被示例裝置400的分組交換器405執(zhí)行的實(shí)施方式來對示例流程600做詳細(xì)說明,并且該記載僅用作說明之用。示例流程600開始于模塊610。
在610,示例流程600可涉及分組交換器405,分組交換器405接收數(shù)據(jù)分組。模塊620可緊隨模塊610。
在620,示例流程600可涉及分組交換器405,分組交換器405儲存數(shù)據(jù)分組。模塊630可緊隨模塊620。
在630,示例流程600可涉及分組交換器405,分組交換器405解析數(shù)據(jù)分組以自數(shù)據(jù)分組擷取信息,信息包含數(shù)據(jù)分組的報頭中的一個或多個UDF。模塊640可緊隨模塊630。
在640,示例流程600可涉及分組交換器405,分組交換器405依據(jù)一個或多個UDF中的至少一個UDF定義一個或多個SUDF。模塊650可緊隨模塊640。
在650,示例流程600可涉及分組交換器405,分組交換器405儲存一個或多個SUDF。模塊660可緊隨模塊650。
在660,示例流程600可涉及分組交換器405,分組交換器405通過多個流量表處理一個或多個UDF以及一個或多個SUDF,其中多個流量表用于識別一個或多個操作命令以及依據(jù)一個或多個操作命令以管線形式對一個或多個SUDF中的至少一個SUDF執(zhí)行操作。模塊670可緊隨模塊660。
在670,示例流程600可涉及分組交換器405,分組交換器405儲存一個或多個操作命令。模塊680可緊隨模塊670。
在680,示例流程600可涉及分組交換器405,分組交換器405依據(jù)所儲存的一個或多個操作命令以及所儲存的一個或多個SUDF修改數(shù)據(jù)分組的一個或多個屬性。模塊690可緊隨模塊680。
在690,示例流程600可涉及分組交換器405,分組交換器405輸出修改后的數(shù)據(jù)分組。
在某些實(shí)施方式中,在修改數(shù)據(jù)分組的一個或多個屬性時,示例流程600可涉及分組交換器405將數(shù)據(jù)分組的格式自第一格式轉(zhuǎn)換為第二格式。在某些實(shí)施方式中,在將數(shù)據(jù)分組的格式自第一格式轉(zhuǎn)換為第二格式時,示例流程600可涉及分組交換器405將數(shù)據(jù)分組的報頭的格式自第一報頭格式轉(zhuǎn)換為第二報 頭格式。
在某些實(shí)施例中,在依據(jù)一個或多個UDF中的至少一個UDF定義一個或多個SUDF時,示例流程600可涉及分組交換器405基于一個或多個UDF中的第一UDF的值設(shè)置一個或多個SUDF中的第一SUDF的值。
在某些實(shí)施例中,在依據(jù)一個或多個操作命令對于一個或多個SUDF中的至少一個SUDF執(zhí)行操作時,示例流程600可涉及分組交換器405執(zhí)行包含下述操作的一個或多個操作:例如,設(shè)置至少一個SUDF的值、增加至少一個SUDF的值、減小至少一個SUDF的值、將該至少一個SUDF的值設(shè)置為該一個或多個UDF中的一個UDF的值,以及將該至少一個SUDF的值推送至數(shù)據(jù)分組的域中。
在某些實(shí)施例中,在識別一個或多個操作命令時(包含執(zhí)行操作時),示例流程600可涉及分組交換器405在每一個流量表中決定在一個或多個UDF中的至少一個UDF和與流量表相關(guān)聯(lián)的相應(yīng)預(yù)定匹配值之間是否存在匹配。例如,通過使用TCAM表,“默認(rèn)操作命令”可通過默認(rèn)條目(例如,通配符條目)而獲得,即便沒有UDF匹配。此外,示例流程600可涉及分組交換器405響應(yīng)一個或多個UDF中的至少一個UDF與相應(yīng)預(yù)定匹配值匹配的決定儲存至少一操作命令。
文中描述的主題有時示出了包括在其它不同部件內(nèi)的或與其它不同部件連接的不同部件。應(yīng)當(dāng)理解:這樣描繪的架構(gòu)僅僅是示例性的,并且,實(shí)際上可以實(shí)施實(shí)現(xiàn)相同功能的許多其它架構(gòu)。在概念意義上,實(shí)現(xiàn)相同功能的部件的任何布置是有效地“相關(guān)聯(lián)的”,以使得實(shí)現(xiàn)期望的功能。因此,文中被組合以獲得特定功能的任意兩個部件可以被視為彼此“相關(guān)聯(lián)的”,以實(shí)現(xiàn)期望的功能,而不管架構(gòu)或中間部件如何。類似地,這樣相關(guān)聯(lián)的任意兩個部件還可以被視為彼此“可操作地連接的”或“可操作地耦接的”,以實(shí)現(xiàn)期望的功能,并且,能夠這樣相關(guān)聯(lián)的任意兩個部件還可以被視為彼此“操作上可耦接的”,以實(shí)現(xiàn)期望的功能?!安僮魃峡神罱拥摹钡木唧w示例包括但不限于:實(shí)體地可聯(lián)結(jié)和/或?qū)嶓w地相互、作用的部件、和/或無線地可相互作用和/或無線地相互作用的部件、和/或邏輯地相互作用的和/或邏輯地可相互作用的部件。
此外,關(guān)于文中基本上任何復(fù)數(shù)和/或單數(shù)術(shù)語的使用,只要對于上下文和/或應(yīng)用是合適的,本領(lǐng)域普通技術(shù)人員可以將復(fù)數(shù)變換成單數(shù),和/或?qū)螖?shù)變換成復(fù)數(shù)。
本領(lǐng)域普通技術(shù)人員將會理解,通常,文中所使用的術(shù)語,特別是在所附 權(quán)利要求(例如,所附權(quán)利要求中的主體)中所使用的術(shù)語通常意在作為“開放性”術(shù)語(例如,術(shù)語“包括”應(yīng)當(dāng)被解釋為“包括但不限干”,術(shù)語“具有”應(yīng)當(dāng)被解釋為“至少具有”,術(shù)語“包含”應(yīng)當(dāng)被解釋為“包含但不限干”等)。本領(lǐng)域普通技術(shù)人員還將理解,如果意在所介紹的權(quán)利要求陳述對象的具體數(shù)目,則這樣的意圖將會明確地陳述在權(quán)利要求中,在缺乏這樣的陳述的情況下,不存在這樣的意圖。例如,為了幫助理解,所附權(quán)利要求可以包括使用介紹性短語“至少一個”和“一個或更多個”來介紹權(quán)利要求陳述對象。然而,這樣的短語的使用不應(yīng)當(dāng)被解釋為:用不定冠詞“一個(a或an)”的權(quán)利要求陳述對象的介紹將包括這樣介紹的權(quán)利要求陳述對象的任何權(quán)利要求限制為只包含一個這樣的陳述對象的發(fā)明,即使在同一權(quán)利要求包括介紹性短語“一個或更多個”或“至少一個”以及諸如“一個(a)”或“一個(an)”之類的不定冠詞的情況下(例如,“一個(a)”和/或“一個(an)”應(yīng)當(dāng)通常被解釋為意味著“至少一個”或“一個或更多個”)也如此;上述對以定冠詞來介紹權(quán)利要求陳述對象的情況同樣適用。另外,即使明確地陳述了介紹的權(quán)利要求陳述對象的具體數(shù)目,但本領(lǐng)域普通技術(shù)人員也會認(rèn)識到:這樣的陳述通常應(yīng)當(dāng)被解釋為意味著至少所陳述的數(shù)目(例如,僅有“兩個陳述對象”而沒有其他修飾語的陳述通常意味著至少兩個陳述對象,或兩個或更多個陳述對象)。此外,在使用類似于“A、B和C中的至少一個等”的慣用語的情況下,通常這樣的結(jié)構(gòu)意在本領(lǐng)域普通技術(shù)人員所理解的該慣用語的含義(例如,“具有A、B和C中的至少一個的系統(tǒng)”將包括但不限于具有單獨(dú)的A、單獨(dú)的B、單獨(dú)的C、A和B—起、A和C一起、B和C一起和/或A、B和C一起的系統(tǒng)等)。在使用類似于“A、B或C中的至少一個等”的慣用語的情況下,通常這樣的結(jié)構(gòu)意在本領(lǐng)域普通技術(shù)人員所理解的該慣用語的含義(例如,“具有A、B或C中的至少一個的系統(tǒng)”將包括但不限于具有單獨(dú)的A、單獨(dú)的B、單獨(dú)的C、A和B—起、A和C一起、B和C一起和/或A、B和C一起的系統(tǒng)等)。本領(lǐng)域普通技術(shù)人員將進(jìn)一歩理解,不管在說明書、權(quán)利要求書中還是在附圖中,表示兩個或更多個可替換的術(shù)語的幾乎任意析取詞和/或短語應(yīng)當(dāng)理解成考慮包括術(shù)語中的一個、術(shù)語中的任一個或所有兩個術(shù)語的可能性。例如,短語“A或B”應(yīng)當(dāng)被理解成包括“A”、“B”、或“A和B”的可能性。
從前述內(nèi)容的記載可以理解,本說明書中所描述的本發(fā)明的各個實(shí)施方式僅用于說明的目的,并且可以在不脫離本公開的范圍和精神的情況下進(jìn)行修改。 因此,本說明書中所描述的各個實(shí)施方式并不意在限制,真正的范圍和精神由權(quán)利要求書來限定。