作為中文版,這個系列基本上忠實於原文的句子和術語,大部分關鍵詞都是中英文對照。規範和協議進壹步分為兩部分,完整呈現***4篇。
OpenFlow交換機規範1.3.0第壹部分第1-5章
/p/acfeae1771b3
OpenFlow交換機規範1.3.0第二部分第6章
/p/82e238eb8d14
OpenFlow協議第壹部分
/p/7eb86d164d26
OpenFlow協議第2部分
/p/9cc08c698106
本文檔描述了OpenFlow交換機的要求。我們建議在閱讀本規範之前閱讀最新版本的OpenFlow白皮書。白皮書可以在ONF網站上查看(pliant counter可以用軟件實現,也可以通過查詢硬件計數器得到計數,在有限的範圍內修改。表5包含openflow規範中定義的計數器集。不要求開關支持所有計數器,只有那些標記為“必需”的才必須支持。
持續時間指的是壹個流表項、端口、組、隊列或表在交換機中安裝的次數,必須精確到秒。接收錯誤字段是表5中定義的所有接收錯誤和沖突錯誤的總和,包括表中未列出的其他錯誤。
計數器都是無符號值,可以循環返回而沒有溢出指示。如果開關中沒有指定值的計數器,其值必須設置為該字段的最大值(無符號數為-1)。
每個流條目包含壹組指令集,當壹個包與該條目匹配時,該指令將被執行。這些指令會導致數據包、動作組和/或流水線處理的變化。
交換機不需要支持所有類型的指令,只需要支持下面標記為“必需指令”的指令。
控制器可以查詢交換機支持的“可選指令”。
。可選指令:meter meter _ id:將包傳輸到指定的儀表。計量結果可能會丟棄該數據包(取決於血糖儀的配置和狀態)。
。可選說明:apply-actions操作:立即執行指定的操作,而不更改操作集。當在兩個表之間傳遞或執行相同類型的多個動作時,該指令可用於修改數據包。
這些動作被指定為動作列表(見5.11)。
Clear_Actions指令在Write_Actions指令之前執行,Goto_Table最後執行。
如果流表條目不能執行相關指令,交換機必須拒絕流表條目。在這種情況下,交換機必須返回不支持的流錯誤消息(參見6.4)。流表不壹定支持每個匹配、每個指令或每個動作。
動作集與每個數據包相關聯,默認情況下為空。流表條目可以使用與特殊匹配相關的寫動作指令或清除動作指令來修改動作集。動作集在表之間傳遞。當流表條目的指令集不包含Goto-Table指令時,流水線處理停止,然後數據包的動作集執行其動作。
動作集中的每種動作都有壹個最大值。Set_field操作由字段類型標識,因此操作集對每個字段類型的set_field操作都有壹個最大值(即可以設置多個字段)。當同壹類型需要多個動作時,例如推入多個MPLS標簽或者彈出多個MPLS標簽,應該使用Apply_Actions命令(參見5.11)。
動作集中的所有動作,無論添加到動作集中的順序如何,都按以下順序執行。如果操作集包含組操作,則組操作桶中的操作也會按以下順序執行。當然,該開關還可以通過Apply-Actions命令支持任意修改操作的執行順序。
動作集中的輸出是最後壹次執行。如果組動作和輸出動作都存在於動作集中,則組動作優先。如果兩者都不存在,數據包將被丟棄。如果開關支持,組的執行是遞歸的;壹個組桶可以指定另壹個組,在這種情況下,操作執行可以通過配置在所有指定的組中運行。
Apply-Actions指令和包輸出消息包含壹個動作列表。動作列表的含義與Openflow1.0規範壹致。動作列表中的動作按列表中的順序執行,並立即影響數據包。
動作列表中的動作從第壹個動作開始執行,動作都是按順序執行的。行動的結果是疊加的。例如,如果動作列表中有兩個推VLAN動作,則兩個VLAN報頭將被添加到數據包中。如果動作列表具有輸出動作,則來自當前情況的復制分組被轉發到期望的端口。如果列表包含組操作,相關的組桶將按原樣復制包。
在Apply_Actions指令執行動作列表後,流水線繼續處理修改後的數據包(見5.1)。當執行動作列表時,數據包本身的動作集沒有改變。
不要求開關支持所有操作類型,但只支持下面列表中標記為“必需操作”的類型。控制器還可以查詢交換機支持的“可選動作”的類型。
所需的動作:輸出。輸出操作將數據包轉發到指定的Openflow端口(參見4.1)。Openflow交換機必須支持轉發到物理端口、交換機定義的邏輯端口和必要的保留端口(參見4.5)。
可選操作:設置隊列。設置數據包的隊列ID。當使用output動作將數據包轉發到某個端口時,隊列ID決定將數據包的哪個隊列綁定到該端口進行調度和轉發。轉發行為由隊列配置控制,用於提供Qos服務支持(參見7.2.2)。
最新的壓入標記應插入最外面的有效位置,作為最外面的標記。當壹個新的VLAN標簽被推入時,它應該作為最外面的標簽被插入,在以太網報頭的後面和其它標簽的前面。類似地,當壹個新的MPLS標簽被推入時,它應該作為最外面的標簽被插入,在以太網報頭的後面和其他標簽的前面。
當多個推送動作被添加到分組動作集中時,它們將根據動作集中定義的規則依次作用於分組,從MPLS開始,接著是PBB,然後是VLAN(參見5.10)。當壹個動作列表中有多個推送動作時,它們將根據列表順序應用於數據包(參見5.11)。
註意:5.12.1部分中的信息是默認字段值。
Openflow交換機檢測具有無效IP TTL或MPLS TTL的數據包,並拒絕接收它們。不是每個包都需要檢查TTL是否有效,但應該在完成TTL減1後最短時間內檢查。交換機可以改變其異步配置(參見6.1.1),並通過使用輸入分組消息(參見6.1.2)通過控制信道向控制器發送具有無效TTL的分組。
執行推送操作時,應將表8中所有字段中指定的值從現有外部報頭復制到新創建的外部報頭中。如果表8中列出的新字段與現有字段不壹致,則應將它們設置為0。不能由Openflow set_field操作修改的字段用適當的協議值初始化。
在推送操作之後,可以通過指定的“設置”動作來設置新報頭的壹些字段。
後續鏈接
第六章
/p/82e238eb8d14
OpenFlow協議第壹部分
/p/7eb86d164d26
OpenFlow協議第2部分
/p/9cc08c698106