1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网络连通性
如图,将 h1, h2 的 IP 分别设置为 10.0.0.1, 10.0.0.2
开启CLI
OpenFlow 协议 1.0, 1.1, 1.2, 1.3 全数勾选。
2. 利用Wireshark工具,捕获拓扑中交换机与控制器之间的通信数据,对OpenFlow协议类型的各类报文(hello, features_request, features_reply, set_config, packet_in, packet_out等)进行分析,对照wireshark截图写出你的分析内容。
开启新终端,使用
sudo wireshark
开启wireshark监听
下面是另一台交换机(端口56052)与控制器(端口6633)的交互过程
① HELLO
控制器6633端口(我最高能支持OpenFlow 1.0) ---> 交换机56052端口
交换机56052端口(我最高能支持OpenFlow 1.3)--- 控制器6633端口
② FEATURE REQUEST
控制器56052端口(我需要你的特征信息) ---> 交换机35534端口
③ SET CONFIG
④ FEATURES REPLY
交换机56052端口(这是我的特征信息,请查收)--- 控制器6633端口
这里展示部分详细资讯
⑤ PACKET_IN
交换机56052端口(有数据包进来,请指示)--- 控制器6633端口
分析抓取的数据包,可以发现是因为交换机发现此时自己并没有匹配的流表(Reason: No matching flow (table-miss flow entry) (0)),所以要问控制器如何处理
⑥ PACKET_OUT
控制器56052端口(请按照我给你的action进行处理) ---> 交换机35534端口
结合Packet_out的结构可得知告诉输出到交换机的65531端口。
接下来是另一台交换机(端口56054)与控制器(端口6633)的交互过程
h1 ping h2
① PACKET_IN
② FLOW_MOD
结合flow_mod结构可得知分析抓取的flow_mod数据包,控制器通过6633端口向交换机56052端口、交换机56054端口下发流表项,指导数据的转发处理。
PS.把控制器从openflow reference改成ovs controller
① HELLO
在hello报文中可以发现控制器支持的OpenFlow版本从1.0变成了1.3,因此,经过协商交换机和控制器之间将通过1.3版本的OpenFlow协议进行通信
② FLOW_MOD