目錄
上篇文章SDN-OpenFlow1.0協議分析對OpenFlow1.0協議進行了分析,本篇文章就抓一些包來看一看。
博主使用的是opendaylight氮版本,miniedit進行的網絡構建,wireshark進行抓包,一些配置等請查看本專欄其他文章。
Wireshark
Wireshark啓動
使用
sudo wireshark
啓動wireshark,一段時間後打開界面
wireshark配置
選擇端口
博主的控制器和Mininet在一臺虛擬機中,所以選擇的lo,讀者根據自己情況選擇。
選擇篩選器
選擇openflow_v1篩選of1.0協議的消息,否則有ICMP、ARP等協議的消息,列表過長。
使用
tshark -g protocols | grep -i openflow
查看你的wireshark支持的openflow協議版本
對稱消息
Hello消息
OFPT_HELLO
這是由交換機向控制器發送的HELLO消息,對稱消息的一種,用於控制器或交換機在連接建立的期間發送一個Hello數據包,用來表示所支持的最高版本的Openflow協議,協商版本號,建立連接,連接可以從交換機或控制器啓動。
ERROR消息
OFPT_ERROR
這是由交換機向控制器發出的ERROR消息,對稱消息的一種。控制器或交換機發送此消息用來指示正常運行期間的故障。錯誤由消息類型和代碼以及對錯誤的描述來組成。返回碼爲1表示沒有問題,建立連接成功,若爲0則失敗。
ECHO消息
OFPT_ECHO_REQUEST
當沒有其他的數據包進行交換時,交換機會定期循環給控制器發送OFPT_ECHO_REQUEST來確保與控制器的連接。
OFPT_ECHO_REPLY
控制器對交換機進行迴應,確保連接沒有問題。
控制器/交換機配置消息
Features消息
OFPT_FEATURES_REQUEST
這是控制器發給交換機的兩個數據包,Hello是對稱消息,交換機之前給控制器發了,控制器要回一下,可以看到控制器還支持openflow1.3版本。Request消息用於控制器向交換機請求信息,在交換Hello數據包並且建立雙方支持的最高版本的Openflow之後,控制器向交換機發送功能請求以檢索緩衝區的數量,數據路徑ID或其他。
OFPT_FEATURES_REPLY
交換機向控制器發出,告知控制器自身的信息,這個是交換s1進行的響應,同樣還有s2和s3的。 。
Datapath unique id:交換機標識符。
n_buffers:一次最多緩存的數據包數量。
n_tables:表示交換機支持的流表數量。每個流表可以設置不同的通配符和不同數量的流表項。控制器和交換機第一次通信的時候,控制器會從OFPT_FEATURES_REPLY消息中找出交換機支持多少流表,如果控制器還想了解大小、類型和流表查詢的順序,就發送一個OFPT_STATS_REQUEST消息,交換機必須按照數據包遍歷流表的順序把這些流表回覆給控制器,並且精確匹配流表排在通配流表前。
CONFIGS消息
OFPT_SET_CONFIG
控制器發出的消息,用於對交換機進行配置。
統計消息
OFPT_STATS_REQUEST
控制器想了解更多交換機的信息時發出。
OFPT_STATS_REPLY
障礙消息
OFPT_BARRIER_REQUEST
控制器向交換機發送該消息,詢問之前的命令是否正確運行。
OFPT_BARRIER_REPLY
交換機向控制器報告命令運行結果。
控制器命令消息
OFPT_PACKET_OUT
控制器響應交換機,用於命令交換機將某一數據包進行轉發。可以看到動作是Output,端口號是2,也就是命令交換機從端口2將數據包轉發出去。
OFPT_FLOW_MOD
Cookie爲流表項標識符
Command是flow-mod的類型
Idle time-out是流表項的空閒超時時間
hard time-out是流表項的最大生存時間
Priority爲流表項的優先級,交換機優先匹配高優先級的流表項;
Buffer Id爲交換機中的緩衝區ID,flow-mod消息可以指定一個緩衝區的ID,該緩衝區的數據包會按照此flow-mod消息的action列表處理。如果是手動下發的流,buffer_id應填-1,即0xffff,告訴交換機這個數據包並沒有緩存在隊列中。
Out port爲刪除流表的flow_mod消息提供的額外的匹配參數。
Flags爲flow-mod命令的一些標誌位,可以用來指示流表刪除後是否發送flow-removed消息,添加流表時是否檢查流表重複項,添加的流表項是否爲應急流表項。
當OFPFF_SEND_FLOW_REM 被設置的時候,表項超時刪除會觸發一條表項刪除的信息。
當OFPFF_CHECK_OVERLAP 被設置的時候,交換機必須檢查同優先級的表項之間是否有匹配範圍的衝 突。
當OFPFF_EMERG_被設置的時候,交換機將表項當作緊急表項,只有當與控制器連接斷的時候才啓用。
異步消息
OFPT_PACKET_IN
如果由動作集指示或者由於表遺漏或TTL錯誤,交換機可以向控制器發送在PACKET_IN信息中接收到的包。
Buffer Id是packet-in消息所攜帶的數據包在交換機中的緩存ID
Total_length爲data段的長度
In port數據包進入交換機的入端口號
Reason爲packet-in事件的產生原因(OFPR_NO_MATCH和OFPR_ACTION)
部分消息在抓包時沒有體現,可以查看文章
更多SDN相關內容,請查看:SDN-自學筆記
有問題請下方評論,轉載請註明出處,並附有原文鏈接,謝謝!如有侵權,請及時聯繫。