实验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


  1. 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主要消息类型的数据结构

posted @ 2022-09-28 15:57  ㅤ子落楸枰  阅读(66)  评论(0)    收藏  举报