先粗略介紹,后續會逐漸完善。
OpenFlow交換機通過使用OpenFlow協議的安全通道與控制器進行通信。其具體實現如下示意圖所示:

對於一個新到達的數據流,交換機通常的做法是,把該數據包發送給控制器,由控制器來決定數據包的下一步操作。至於已存在的,則會直接根據原有的發送路徑,發往目的點。
根據上圖,在實際中,交換機內部通常由兩個表,一個是組表還有一個就是流表,組表目前只是初涉獵,暫不解釋,后續補充。流表是由流條目構成,在交換機中,可以有許多流表,其結構可以抽象為下圖:

也就是說,每個流表是由多個流條目組成的,而每個流條目對應的就是實際中的一種數據流(目前的理解),每個流表可以包含多種流條目,當數據流經過OpenFlow交換機的時候,交換機就會根據數據流所帶的這些條目進行匹配,來決定對這些數據流的相應操作指示。因此,對於每個流條目,它也具有相應的報文結構,大致分為三個部分,如下所示:
一般而言為匹配字段、計數以及指示段三個部分組成。當一個流條目進入一個OpenFlow交換機后,會根據流表自身的優先級順序決定匹配的先后次序,若匹配成功,則會執行相應的指示字段所對應的指示,對匹配成功的數據包進行下一步的操作;倘若匹配失敗,則會基於交換機本身的配置,來處理流條目,比如發送給遠程交換機,丟掉該數據包,或者繼續發送給下一個流表,或者洪范廣播等。
而對於流表之間的傳遞通道通常是以元數據的形式,將數據包發送給后續表(目前認為是優先級較低的表)來進行進一步處理,可以通過管道處理指令來實現。當與匹配流條目關聯的指令集不指定下一個表的時候,傳遞途徑就會被關閉。在這一點上,數據包通常被修改並轉發。
