面對現代網路蓬勃發展,軟體定義一切將是未來的一個大趨勢,我們走向軟體定義網路這一領域而openflow則是實現軟體定義網路的一種重要通訊協議,像是Google骨幹網路流量如今已運行在採用開放源碼技術OpenFlow打造的軟體定義網路 (software-defined network, SDN)裡,運行openflow的路由器讓網路管理員可以更自由的應用和管理在其架構下的網路。
openflow switch架構
圖[2]摘自[2]openflow內部與controller連接圖
openflow switch 可以用NetFPGA or 利用TP-Link燒錄韌體的方式去實現, OpenFlow Switch主要的功用是用於管理Openflow架構下的flow(封包), 例如讓某個flow從一端口流出至另一端口。
1.Openflow Switch: 內部包含了三個部分
(1)Flow Table: 利用NOX 對switch發的action會記在flow table中, switch利用此action來決定 flow的流向。
(2)Secure Channel: 用於NOX與switch之間溝通的安全通道。
(3)Openflow Protocol: 用於定義NOX與SWITCH之間如何溝通和傳遞資料的通訊協議
。
controller是用於控制switch封包如何流, 在controller上可以利用python, C++ or JAVA等高階語言來定義封包流向和控制的規則, 能讓網路管理員更方便的管理網路. Controller可以用: NOX, POX or Beacon來實現。
2.Flow Table:
(1)Header file: flow的標頭資訊, openflow的封包前都會有openflow標頭有別於其他網路架構下的封包, 定義了封包所有資訊, 如來源, 目的地等。
(2)Action: 處理flow的行動, 如規定哪個封包從哪個port出來等等。
(3)Counter:用來統計封包的資訊, 如封包的發送次數, 活動表項等等