類型識(shí)別方法可以指定用于識(shí)別頭的方法的類型,例如劃分基準(zhǔn)類型、先前分 配的本地頭類型標(biāo)識(shí)符值等。頭類型可以指定標(biāo)準(zhǔn)協(xié)議標(biāo)識(shí)符(例如,劃分基準(zhǔn)類型、先前 分配的本地頭類型標(biāo)識(shí)符和值等)或分配的本地頭類型標(biāo)識(shí)符值(例如,針對(duì)控制協(xié)議實(shí) 例)。每個(gè)頭字段可以指定偏移和大小,例如(偏移、大小),以及分配的本地頭字段標(biāo)識(shí)符值 (例如,針對(duì)控制協(xié)議實(shí)例)。頭長(zhǎng)度可以指定標(biāo)量值(例如,針對(duì)固定大小頭)或頭字段標(biāo)識(shí) 符值(例如,針對(duì)含有長(zhǎng)度字段的可變長(zhǎng)度頭)。
[0038] 為方便起見(jiàn),可以將固定值分配到通用頭類型識(shí)別字段,例如分配到以太類型、 GFP凈荷類型標(biāo)識(shí)符和PPP協(xié)議數(shù)目。這些通用字段為識(shí)別大多數(shù)其它有用的協(xié)議頭類型提 供基礎(chǔ)。偏移可以表達(dá)為固定值或表達(dá)為涉及固定值和頭字段的算術(shù)表達(dá)式。
[0039] 實(shí)施例的協(xié)議可以在控制器與交換機(jī)之間交換上文所描述的信息,以協(xié)定用于識(shí) 別特定包頭字段的值。待協(xié)定的標(biāo)識(shí)符是分配的本地頭類型標(biāo)識(shí)符值和分配的本地頭字段 標(biāo)識(shí)符值。任一系統(tǒng)可以請(qǐng)求將使用的值,這取決于所述系統(tǒng)是否具有針對(duì)這些標(biāo)識(shí)符的 偏好或具體要求。如果分配的本地頭類型標(biāo)識(shí)符值和分配的本地頭字段標(biāo)識(shí)符值作為零 (或其它一些選定的特殊值,例如-1)發(fā)送,那么這是邀請(qǐng)另一個(gè)系統(tǒng)來(lái)分配標(biāo)識(shí)符值。如果 交換機(jī)發(fā)送標(biāo)識(shí)符值綁定,那么控制器必須采用這些值。如果交換機(jī)發(fā)送零值,那么控制器 必須分配值并且將這些值傳輸?shù)浇粨Q機(jī)。
[0040] 控制器可以首先發(fā)送信息而不指定標(biāo)識(shí)符值(使用零值),以向交換機(jī)指示控制器 在控制交換機(jī)的行為時(shí)使用的所有字段。交換機(jī)可以特定標(biāo)識(shí)符值(綁定)或以未指定綁定 (零值)來(lái)響應(yīng)。接著,控制器將最終綁定發(fā)送到交換機(jī),重復(fù)交換機(jī)所需的值或設(shè)定未由交 換機(jī)指定的值。
[0041]可以使用特定程序來(lái)支持先前的固定字段標(biāo)識(shí)符分配的向后兼容性。例如,在通 過(guò)交換機(jī)將0x8000的oxm_class值以及如在枚舉oxm_ofb_match_f ields數(shù)據(jù)類型中定義的 oxm_field值發(fā)送到控制器以用于在OpenFlow 1.3中定義的字段時(shí),交換機(jī)可能需要由所 述規(guī)范指定的標(biāo)識(shí)符。這將要求控制器采用這些標(biāo)識(shí)符值來(lái)指定字段。
[0042]如果控制器和交換機(jī)使用例如表類型模板(TTP)等的協(xié)商數(shù)據(jù)面模型(NDM)以協(xié) 定交換機(jī)必須支持的行為控制,那么在NDM中可以包括等效于以上內(nèi)容的信息。在此情況 下,如果NDM包括使用的頭類型標(biāo)識(shí)符值和頭字段標(biāo)識(shí)符值,那么可縮短或跳過(guò)頭字段標(biāo)識(shí) 符值綁定過(guò)程。例如,TTP可以包括頭類型標(biāo)識(shí)符值和頭字段標(biāo)識(shí)符值,作為TTP描述的一部 分。替代地,TTP可以包括頭類型和頭字段并且對(duì)這些頭類型和頭字段分配標(biāo)識(shí)符值設(shè)定規(guī) 范方法,使得明確值不必包括于TTP中,但在控制器和交換機(jī)同意使用TTP時(shí)將同樣地被控 制器和交換機(jī)兩者所理解。
[0043] 通過(guò)交換以上所提到的信息,控制器和交換機(jī)協(xié)定分配的本地頭類型標(biāo)識(shí)符值和 分配的本地頭字段標(biāo)識(shí)符值。接著,控制器可以使用本地頭類型標(biāo)識(shí)符值和本地頭字段標(biāo) 識(shí)符值向交換機(jī)發(fā)送參考頭字段的命令。例如,在OpenFlow消息中的OXM TLV中,針對(duì)具體 頭類型分配的本地頭類型標(biāo)識(shí)符值可以用作〇Xm_claSS值并且分配的本地頭字段標(biāo)識(shí)符值 可以用作 〇xm_field值。本地頭字段識(shí)別值可以用來(lái)指代匹配運(yùn)算中的頭字段或由控制器 用來(lái)經(jīng)由控制協(xié)議指定交換機(jī)行為的其它邏輯或算術(shù)表達(dá)式中的頭字段。它們也可以用于 來(lái)自交換機(jī)的消息以識(shí)別控制器的通知或響應(yīng)中的頭字段。
[0044] 本發(fā)明的各方面提供協(xié)議交換,以基于或者頭類型識(shí)別和字段偏移/大小規(guī)范,或 者NDM規(guī)范(含有等效信息),來(lái)協(xié)定本地頭字段標(biāo)識(shí)符值。本發(fā)明的實(shí)施例基于本地協(xié)定生 成并解釋頭字段標(biāo)識(shí)符值。另外,本發(fā)明通過(guò)允許交換機(jī)強(qiáng)制預(yù)定義綁定而支持向后兼容 性。本文中所論述的實(shí)施例可以包括綁定在TTP等NDM中的頭字段標(biāo)識(shí)符值。
[0045]在實(shí)施例中,綁定請(qǐng)求響應(yīng)可以包括頭類型ID綁定信息和頭字段ID綁定信息。頭 類型ID綁定信息可以指定頭類型識(shí)別的方式,以及識(shí)別頭類型的一個(gè)或多個(gè)值和用于識(shí)別 頭類型的頭類型ID綁定(例如,本地碼點(diǎn))。在一個(gè)實(shí)施例中,頭類型ID綁定信息可以指定基 準(zhǔn)劃分類型為用于頭類型識(shí)別的方式。基準(zhǔn)劃分類型可以是用于例如以太網(wǎng)、GFP、HDLC、 ATM HEC成幀等包劃分頭方案的綁定。在另一實(shí)施例中,頭類型ID綁定信息可以指定協(xié)議ID 為用于頭類型識(shí)別的方式。協(xié)議ID可以是用于協(xié)議ID方案(例如,以太類型、IP協(xié)議、NLPID 等)的綁定。在另一個(gè)實(shí)施例中,頭類型ID綁定信息可以指定字段ID和字段值(例如,"字段 ID" + "字段值")為頭類型識(shí)別的方式。頭字段ID和字段值可以對(duì)應(yīng)于先前綁定的字段ID碼 點(diǎn)和字段值,并且可以允許頭定義使用本地字段ID綁定(而不是公共綁定)用于協(xié)議ID字 段。頭字段ID綁定信息可以包括頭類型、字段偏移(以比特位為單位)、字段長(zhǎng)度(以比特位 為單位)以及字段ID綁定。字段ID綁定可以是用于識(shí)別對(duì)應(yīng)頭字段的本地碼點(diǎn)。
[0046]圖6示出實(shí)施例的頭類型ID綁定信息格式600、610、620、630以及實(shí)施例的頭字段 ID綁定信息格式640的圖。頭類型ID綁定信息格式600可以表示通用結(jié)構(gòu),并且頭類型ID綁 定信息格式610、620、630可以表示由頭類型ID綁定信息格式600表示的通用結(jié)構(gòu)的子類的 實(shí)例。如圖所示,頭類型ID綁定信息格式600包括頭ID方法字段602、頭類型字段604以及頭 類型ID綁定字段608。頭類型ID綁定信息格式610包括基準(zhǔn)劃分字段612、基準(zhǔn)劃分類型字段 614以及頭類型ID綁定字段618。頭類型ID綁定信息格式620包括協(xié)議ID字段622、協(xié)議ID類 型字段624、協(xié)議ID值字段626以及頭類型ID綁定字段628。頭類型ID綁定信息格式630包括 字段ID/值632、字段ID 634、字段值636以及頭類型ID綁定638。頭ID方法字段602可以是通 用頭字段?;鶞?zhǔn)劃分字段612、協(xié)議ID字段622以及字段ID/值632可以是由頭ID方法字段602 表示的通用頭字段的子類的實(shí)例。頭類型字段604可以是通用頭字段。基準(zhǔn)劃分類型字段 614、協(xié)議ID類型字段624和協(xié)議ID值字段626以及字段ID 634和值字段636可以是由頭類型 字段604表示的通用頭字段的子類的實(shí)例。頭類型ID綁定字段608、618、628以及638可以大 體類似于彼此。
[0047]實(shí)施例頭字段ID綁定信息640包括頭類型ID字段642、字段偏移644、字段長(zhǎng)度646 以及字段ID綁定648。頭類型ID字段642是在頭類型ID綁定信息格式600(例如,頭類型ID綁 定字段608、618、628以及638中的一者)的實(shí)例中綁定的值。字段偏移644、字段長(zhǎng)度646以及 字段ID綁定648包括用于在消息中定位頭字段的信息。
[0048]圖7示出可以等效于上文所論述的一個(gè)或多個(gè)設(shè)備(例如,SDN控制器、SDN交換機(jī) 等)的實(shí)施例設(shè)備700的框圖。通信設(shè)備700可以包括處理器704、存儲(chǔ)器706以及多個(gè)接口 710到714,所述組件可以(或可以不)如圖7中所示來(lái)布置。處理器704可以是能夠執(zhí)行計(jì)算 和/或其它處理相關(guān)任務(wù)的任何組件,并且存儲(chǔ)器706可以是能夠存儲(chǔ)用于處理器704的程 序和/或指令的任何組件。接口 710到714可以是允許通信設(shè)備700與SDN控制器、SDN交換機(jī)、 用戶接口等其它設(shè)備通信的任何組件或組件的集合。
[0049]圖8是處理系統(tǒng)的框圖,該處理系統(tǒng)可以用來(lái)實(shí)現(xiàn)本文公開(kāi)的設(shè)備和方法。特定設(shè) 備可利用所有所示的組件或所述組件的僅一子集,且設(shè)備之間的集成程度可能不同。此外, 設(shè)備可以包括部件的多個(gè)實(shí)例,例如多個(gè)處理單元、處理器、存儲(chǔ)器、發(fā)射器、接收器等。處 理系統(tǒng)可以包括配備了一個(gè)或多個(gè)輸入/輸出設(shè)備,例如揚(yáng)聲器、麥克風(fēng)、鼠標(biāo)、觸摸屏、按 鍵、鍵盤、打印機(jī)、顯示器等的處理單元。處理單元可以包括中央處理器(CPU)、存儲(chǔ)器、大容 量存儲(chǔ)設(shè)備、視頻適配器以及連接至總線的I/O接口。
[0050] 總線可以是任意類型的若干總線架構(gòu)中的一或多個(gè),包括存儲(chǔ)總線或存儲(chǔ)控制 器、外設(shè)總線、視頻總線等等。CPU可包括任何類型的電子數(shù)據(jù)處理器。存儲(chǔ)器可包括任何類 型的系統(tǒng)存儲(chǔ)器,例如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、同步DRAM (SDRAM)、只讀存儲(chǔ)器(ROM)或其組合等等。在一個(gè)實(shí)施