OpenFlow協議匹配流程演進

openflow 1.0

1.0匹配流程

作為第一個公示版本的OpenFlow協議,of1.0協議相對而言比較基礎。of1.0的協議雖然表述的是單級流表的概念,但是在匹配流程圖中就披露出多級流表的設計意圖。或許openflow協議從始至終都打算設計多級流表,只是受限于當時的研究進度,所以在of1.0中介紹的是單級流表。of1.0詳細介紹了設備解析數據包的過程,這也算是匹配中的一個環節吧。

包頭解析

交換機接收到數據包后按照流程解析數據包,然后利用解析后的頭部字段進行表查找。用于表查找的頭部字段依賴于數據包的類型。解析數據包的過程如下所示:

1、初始化包頭域,按照包頭域的組成一一設置每個字段,其中入端口是接收數據包的物理端口。

2、如果數據包類型是VLAN(0x8100),那么就使用VLAN ID和PCP字段進行表查找。解封以太網類型為下面的以太網類型解析做準備。

3、(可選)如果是ARP數據包(0x0806),那么匹配字段就可能包含IP源和目的地址。

4、如果是IP數據包(0x800),那么匹配字段就會包含IP首部。如果IP數據包的分段偏移量不為0或者設置了多個分段bit位,那么將所有傳輸端口設為0。如果IP數據包在IP協議族中的編號為6或17(分別是TCP或UDP類型),那么匹配字段包含傳輸端口。如果編號為1(ICMP數據包)則包含Type和Code字段。

數據包解析后就開始匹配,從table 0 開始匹配,如果匹配成功則對該數據包執行相應的動作,更新相應的計數器。如果沒有找到匹配項則將數據包交給控制器。

?openflow 1.1 & 1.2

就匹配流程圖而言,1.1與1.2匹配過程是一樣的。從table0開始匹配,按照優先級高低依次匹配該流表中的流表項。如果匹配不成功則由流表決定是發送給控制器、發送給后續流表,還是丟棄。如果匹配成功則更新計數器,指令集(更新動作集、匹配字段、元數據),并且由指令決定是否繼續查找后續流表,如果繼續查找則按照更新后的匹配字段進行匹配,如果不繼續查找流表則終止匹配并執行動作集。


1.2匹配流程

數據包只有與流表項中所有匹配項都匹配才算是匹配成功,如果一個流表的匹配項值為ANY則該流表項可以匹配包頭域中的任意值。

從of1.2版本及以后,數據包解析流程圖就略過了,畢竟隨著版本升級of協議難度也越來越大,所涉及的東西也越來越多了,想必有些內容就不作贅述了。

?openflow 1.3 & 1.4

of1.3匹配流程圖與之前的版本相比多了一個table-miss流表項,事實上此前版本就已經存在table-miss概念了,只是沒有在流程圖中呈現出來而已。of1.3和1.4版本的匹配流程一致,都如下所述。


1.3匹配流程

首先解析進入設備的報文,然后從table 0開始匹配,按照優先級高低依次匹配該流表中的流表項,一個報文在一個流表中只會匹配上一條流表項。通常根據報文的類型,報文頭的字段例如源MAC地址、目的MAC地址、源IP地址、目的IP地址等進行匹配,大部分匹配還支持掩碼進行更精確、靈活的匹配。也可以通過報文的入端口或元數據信息來進行報文的匹配,一個流表項中可以同時存在多個匹配項,一個報文需要同時匹配流表項中所有匹配項才能匹配該流表項。報文匹配按照現有的報文字段進行,比如前一個流表通過apply actions改變了該報文的某個字段,則下一個表項按修改后的字段進行匹配。如果匹配成功,則按照指令集里的動作更新動作集,或更新報文/匹配集字段,或更新元數據和計數器。根據指令是否繼續前往下一個流表,不繼續則終止匹配流程執行動作集,如果指令要求繼續前往下一個流表則繼續匹配,下一個流表的ID需要比當前流表ID大。當報文匹配失敗了,如果存在無匹配流表項(table miss)就按照該表項執行指令,一般是將報文轉發給控制器、丟棄或轉發給其他流表。如果沒有table miss表項則默認丟棄該報文。

?openflow 1.5


1.5匹配流程


OpenFlow1.5協議的匹配流程幾乎沒有改變,只是細化了action set的執行過程。其中著重細化了output動作。OpenFlow 1.5協議引進了Egress Tables,細化了output action,可以在輸出端口處理數據包。當一個數據包輸出到某個端口時,首先會從第一個egress table開始處理,由流表項定義處理方式并且轉發給其他egress table。

此外,1.5協議還添加了一個數據包類型識別流程。之前版本的OpenFlow協議中表明交換機默認處理以太網數據包,1.5版本中交換機還可以處理PPP數據包。不過1.5協議中的數據包類型識別流程還處于研究階段,每個交換機只能處理一種類型的數據包,相信后續協議中交換機必然可以同時處理多種數據包。

協議演進?

從OpenFlow1.0到1.5,OpenFlow匹配流程在不斷豐富,從中我們也可以琢磨出一絲OpenFlow協議的演進的痕跡。OpenFlow協議的發展演進一直都圍繞著兩個方面,一方面是增強控制面,讓系統功能更豐富、更靈活;另一方面是增強轉發層面,可以匹配更多的關鍵字,執行更多的動作。每一個后續版本的OpenFlow協議都在前一版本的基礎上進行或多或少的改進,但是自OpenFlow1.1版本開始與之前版本不兼容,ONF為了保證產業界有一個穩定發展的平臺,把OpenFlow1.0和1.3版本作為長期支持的穩定版本,因此一段時間內后續版本都要保持和穩定版本的兼容。

1.0版本中只有單流表,為了避免單流表膨脹,1.1版本采用多級流表,以流水線的形式提高數據包匹配效率。由于OpenFlow將所有的控制協議都集中到控制器中,導致控制器成為眾矢之的,為了提高安全性和健壯性,1.2版本引進了多控制器的概念。為了處理多種類型的數據包,1.5版本添加了數據包類型識別流程。除此之外1.5還引進了egress table,原先由控制器指定output的相關操作,現在將這一功能下放到交換機中,一方面提高數據包的處理效率,另一方面改進OpenFlow“最初的偏激”。畢竟將所有控制功能都集中到控制器中是否合理還有待商榷,很明顯的是這樣的做法會導致控制器很累。OpenFlow正在一點一點摸索一個平衡點,既能保證控制器充分的控制器主權又讓交換機有一定的自主功能。或許,最初的OpenFlow十分理想化,但是在其不斷演進的過程中我們可以看出OpenFlow在不斷向實際應用場景靠攏。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容