实验名称

SDN环境使用及OpenFLow协议流程分析实验

实验目的及要求

1.熟悉SDN环境
2. 使用抓包工具分析OpenFlow协议的基本流程

实验内容

一、Mininet的基本操作应用

包含创建网络、查看网络组成部分(交换机、主机、控制器)、查看终端(主机、控制器)信息、断开/开启网络链路、查看交换机的信息(流表项)、发起并查看ICMP会话过程、退出并清除mininet信息。

二、OpenFlow协议通信流程解析

包含建立连接(hello消息、feature消息)、维护连接(echo消息)、交换机上报报文(packet-in消息)、控制器在交换机上添加流表项(configuration消息)

实验步骤

一、Mininet基本操作应用实验

按如下步骤进行
1.1 使用Mininet创建基本拓扑
(1)打开命令行终端(右键或使用ctrl+alt+t快捷键),运行命令“sudo mn”,输入密码,创建一个包含一个控制器、一个交换机、两个主机的简单拓扑;
在这里插入图片描述
(2)输入命令“help”,查看帮助列表。
在这里插入图片描述
1.2 查看网络组成部分
(1)输入命令“net”查看网络的组成部分;
在这里插入图片描述
(2)输入命令“nodes”查看网络的组成部分。
在这里插入图片描述
1.3 打开终端(主机、控制器),查看终端信息
(1)输入命令“xterm h1”打开主机;
在这里插入图片描述
(2)输入“ifconfig”查看主机的IP信息;
在这里插入图片描述
(3)输入“arp -a”查看主机的ARP信息。
在这里插入图片描述
1.4 发起并查看ICMP会话过程
(1)打开wireshark(命令行终端输入命令“sudo wireshark”,输入密码),抓取s1上的端口;
在这里插入图片描述在这里插入图片描述
(2)在mininet下输入命令“h1 ping h2”;
在这里插入图片描述
(3)通过wireshark查看ICMP会话过程;
在这里插入图片描述在这里插入图片描述在这里插入图片描述
(4)在终端h1上输入“arp -a”查看主机的ARP信息,对比与1.3中的ARP信息的不同。
在这里插入图片描述

对比1.3中的arp信息,1.4中添加了一项arp信息,包括了h1的IP地址和MAC地址信息。

1.5 断开/开启网络链路
(1)输入命令“link s1 h2 down”断开s1和h2之间的链路;
在这里插入图片描述
(2)在mininet下输入命令“h1 ping h2”;
在这里插入图片描述
(3)查看会话是否能正常通信;

丢包率为100%,故会话不能正常通信

(4)输入命令“link s1 h2 up”开启s1和h2之间的链路;
(5)在mininet下输入命令“h1 ping h2”;
在这里插入图片描述
(6)查看会话是否能正常通信;

ICMP报文能正常接收,故会话能正常通信

(7)输入命令“EOF”或者使用快捷键“ctrl+D”退出mininet;
在这里插入图片描述
(8)输入命令“mn -c”清除mininet配置信息。
在这里插入图片描述
1.6 查看交换机流表项信息
(1)运行命令“sudo mn --topo linear,2”创建一个包含一个控制器、两个交换机、两个主机的简单拓扑;
在这里插入图片描述
(2)输入命令“xterm s1”打开交换机s1,输入“ovs-ofctl dump-flows s1”查看交换机s1上的流表项信息;
在这里插入图片描述
(3)输入命令“xterm s2”打开交换机s2,输入“ovs-ofctl dump-flows s2”查看交换机s2上的流表项信息;
在这里插入图片描述
(4)在mininet下输入命令“h1 ping h2”;
在这里插入图片描述
(5)输入“ovs-ofctl dump-flows s1”查看交换机s1上的流表项信息;
在这里插入图片描述
(6)输入命令“xterm s2”打开交换机s2,输入“ovs-ofctl dump-flows s2”查看交换机s2上的流表项信息;
在这里插入图片描述
(7)对比两次查看流表项结果。(以一条流表项为例,流表项分析—分组头域、计数器、动作表、优先级、超时时间;为什么有四条流表项;分析为什么第一个ICMP延迟长)
在这里插入图片描述

①以上图的流表项为例,cookie值为0x0,持续时间为23.025s,流表号为0,匹配报文数量为1,字节数为42,软超时时间为60,优先级为65535,入端口为2,执行动作为从1端口转发。
②openflow1.0协议中,每个交换机或控制器有且仅有一张流表
③第一个ICMP延时长是因为第一次ping的时候遇到DNS反向解析问题,
若在ping后加上-n,关闭DNS解析,延迟相对减少。

二、OpenFlow协议通信流程解析实验

按如下步骤进行。
2.1 打开wireshark(命令行终端输入命令“wireshark”),抓取所有端口(any);
在这里插入图片描述2.2 使用Mininet创建基本拓扑
打开命令行终端(右键或使用ctrl+alt+t快捷键),运行命令“sudo mn”创建一个包含一个控制器、一个交换机、两个主机的简单拓扑。

2.3 查看wireshark中抓取的报文
(1)查看hello消息、feature消息,分析上述两个消息的内容及作用。
在这里插入图片描述

hello消息仅包括OpenFlow头,其包括了openflow协议版本号、消息类型、长度和事务ID。作用是控制器和交换机通过hello消息建立安全通道。

在这里插入图片描述在这里插入图片描述

Features_Request消息仅包含OpenFlow头,Features_Reply消息包含了数据路径、容量和动作信息即交换机的特性信息。
在建立传输安全会话时,控制器主动向交换机发送Features_Request消息,请求交换机的特性信息,交换机通过Features_Reply消息回复所支持的功能特性

(2)查看echo消息,分析上述消息的内容及作用。
在这里插入图片描述在这里插入图片描述

echo消息分为echo_request消息和echo_reply消息,由OpenFlow头组成。通过发送Echo请求消息来确认二者之间是否连接、检测通信延迟、测量通信带宽等。接收echo请求消息的一方会向对方返回echo响应消息。

2.4 在mininet下输入命令“h1 ping h2”
2.5查看wireshark中抓取的报文
在这里插入图片描述
(1)查看packet-in、packet-out消息,分析上述消息的内容及作用。
在这里插入图片描述

packet-in消息包括了字段Buffer Id,表示OpenFlow交换机中保存的数据包的缓存id;Total length,表示帧的长度;In port,表示接受帧的端口;Reason,表示发送packet-in消息的原因(图示的原因是没有匹配的流表项);Pad,用于调整对齐的填充字段;还包括了封装的以太网帧和ARP协议。
作用是将到达OpenFlow交换机的数据包上交OpenFlow控制器处理。

在这里插入图片描述

packet-out消息由缓存ID Buffer Id、输入端口In port、动作信息长度Action length、输出端口Output port等字段组成。
作用是将OpenFlow控制器建立的数据包发送至OpenFlow交换机。

(2)查看flow-mod消息,分析上述消息的内容及作用。
在这里插入图片描述

flow-mod消息由OpenFlow头部、12元组的掩码位Wildcards、12元组(入端口In port、源地址、目的地址、源端口、目的端口、生存时间等)字段组成。
作用:控制器通过Flow-mod消息增删交换机的流表项

实验总结

通过此次实验了解实验环境并掌握一些基本命令,知道如何使用mininet和wireshark,了解openflow协议通信的流程。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐