一:流表
(一)流的概念
我們把同一時間經過同一網絡中,具有某種共同特征或屬性的數據,抽象為一個流
比如:我們將訪問同一個地址的數據視為一個流
流一般是由網絡管理員定義的,可以根據不同的流執行不同的策略,
在OpenFlow中,數據都是作為流進行處理的。
所以流表就是針對特定流的策略表項的集合,負責數據包的查找和轉發
一張流表包含了一系列的流表項flow entries
(二)流表項組成 (包頭域、計數器、動作表3個)
(三)包頭域
(四)計數器
(五)動作表
動作表用於指示交換機,在收到匹配的數據包后應該如何進行處理
動作分類
OpenFlow端口類型
動作轉發,與交換機的端口直接相關。OpenFlow交換機的端口是交換機傳遞數據包的網絡接口。
交換機通過接口和其他交換機建立邏輯連接
物理端口、邏輯端口不做介紹
流表動作列表
二:數據包
(一)數據包的處理流程
其中匹配表按照優先級進行排序,從高到低
如果匹配成功,對應計數器進行更新並去執行相應動作
如果表項沒有對應的動作執行,則數據包將會被丟棄
如果沒有找到匹配的表項,則封裝數據包轉發給控制器
(二)包頭解析匹配流程
包頭解析是為了得到數據分組的12元組(包頭域)
1.初始化包頭 2.根據以太網類型得到VLAN或三層IP的信息 3.根據IP分組頭中的協議類型,確定是TCP/UDP/ICMP協議 4.得到四層的TCP/UDP的源目的端口號或者ICMP類型和編碼
三:后續版本的變化
(一)流表項結構的變化
(二)1.3版本中的組表和計量表