背景介紹
隨着雲計算和虛擬化技術的發展,網絡架構正在發生深刻地變革,軟件定義網絡(SDN - Software Defined Network)無疑是下一代網絡的“范式”。
如何實現SDN呢?OpenFlow是目前最流行的SDN實現方式,具體而言有三種:
1、OpenFlow商業交換機,如思科、Juniper Network、盛科等廠商;
2、基於FPGA實現OpenFlow協議;
3、純軟件OpenFlow交換機實現,如Open vSwitch技術;
SDN(Software Defined Network)
SDN是由美國斯坦福大學Clean-Slate課題研究組提出的一種新型網絡創新架構,是網絡虛擬化的一種實現。其核心技術OpenFlow通過將網絡設備的控制面與數據面分離開,從而實現網絡流量的靈活控制。

如上圖,數據面就是交換機和路由器硬件,SDN控制器負責整個拓撲網絡的轉發鏈路規划,這樣可以形成統一的管理。
OpenFlow
OpenFlow是一個協議,可以理解為SDN的一種實現,通過Flow Table來描述報文轉發規則,以下是OpenFlow 1.2定義的Flow Table結構:

- Match Fields:報文匹配字段,包括MAC地址、以太網類型、IP協議類型、IP地址、UDP端口號等
- Priority:報文優先級,多個匹配項中按照優先級匹配
- Counters:匹配的次數
- Instructions:匹配后的操作,如報文編輯、轉發屬性
- Timeout:該Flow Table在交換機中存在的時間
- Cookie:控制器預留的信息,與報文(數據流)處理無關
除了Flow Table之外,還有Group Table、Meter Table等,這些表結構都可以在協議手冊中找到。
此外,為了與控制器(Controller)進行通訊,OpenFlow協議還定義了一套交換機與控制器的通訊協議——OpenFlow Channel,這個協議包括:
- Controller-to-Switch:控制器操作交換機
- 異步通信(Asynchronous):交換機提交特定報文處理
- 對稱通信(Symmetric):控制器與交換機互相調試
Open vSwitch

Open vSwitch可以理解為一個虛擬交換機,其架構如下:

如上圖所示,Open vSwitch就是利用OpenFlow協議設計的虛擬交換機,其報文轉發的規則完全依賴Flow Table。
Open vSwitch內部實現近似於一個基於OpenFlow協議的SDN結構,可以將User Space當作控制面(Control Plane),Kernel層當作數據面(Data Plane)。
