实验3:OpenFlow协议分析实践
实验要求
(一)基本要求
搭建拓扑,完成相关 IP 配置

抓包结果
- HELLO
控制器6633端口(我最高能支持OpenFlow 1.0) ---> 交换机47140端口

交换机47140端口(我最高能支持OpenFlow 1.5) ---> 控制器6633端口

于是双方建立连接,并使用OpenFlow 1.0
- FEATURES_REQUEST
控制器6633端口(我需要你的特征信息) ---> 交换机47140端口

- SET_CONFIG
控制器6633端口(请按照我给你的flag和max bytes of packet进行配置) ---> 交换机47140端口

- port_status
当交换机端口发生变化时,告知控制器相应的端口状态。

PORT_STATUS
- FEATURES_REPLY
交换机47140端口(这是我的特征信息,请查收) ---> 控制器6633端口

- PACKET_IN
交换机47140端口(有数据包进来,请指示)--->控制器6633端口

- PACKET_OUT
控制器6633端口--->交换机47140端口(请按照我给你的action进行处理)

- FLOW_MOD
分析抓取的flow_mod数据包,控制器通过6633端口向交换机47140端口、交换机47140端口下发流表项,指导数据的转发处理


分析OpenFlow协议中交换机与控制器的消息交互过程,画出相关交互图或流程图

回答问题:交换机与控制器建立通信时是使用TCP协议还是UDP协议?
(二)进阶要求
将抓包基础要求第2步的抓包结果对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义。
1.HELLO


- FEATURES_REQUEST
与HELLO一致
3.SET_CONFIG


4.PORT_STATUS


5.FEATURES_REPLY


6.PACKET_IN
有匹配条目,对应的action是OUTPUT=CONTROLLER,固定收到向控制器发送包


7.PACKET_OUT


8.FLOW_MOD


个人总结
实验过程中要先启动wireshark之后在执行python文件,然后执行pingall命令,否则会导致一些包丢失。
通过wireshark里的过滤器搜索“openflow_v1”或“openflow_v4”可以更快的找到包。
经过本次实验,了解了OpenFlow协议的数据包交互过程与机制,通过对照源码,更了解了OpenFlow主要消息类型的数据结构

浙公网安备 33010602011771号