此为中国大学MOOC上温州大学所开设的SDN软件定义网络课程配套实验。
镜像地址:https://pan.baidu.com/s/1qYN_MtUboPmruHda1DgrTA 提取码:mhfi
实验指导书地址:链接:https://pan.baidu.com/s/1XpDrV2car4qH-sXJq1zbPA 提取码:s8un
一、前置知识:
POX 控制器部分组件说明:
二、实验步骤:
实验一 使用tcpdump验证Hub模块
1、创建拓扑。 拓扑包含1台控制器,1台交换机,3台主机,控制器默认监听6633端口,开启h1,h2,h3的终端
2、拓扑如下
3、启动POX的forwarding.hub模块,并且以DEBUG模式来运行查看日志
命令:./pox.py log.level --DEBUG forwarding.hub
调用组件模块用.
4、在h3(10.0.0.3)主机上进行抓包,并使用h2 ping h1
发现h3也抓的到h2 ping h1的包,说明交换机是hub模式。
实验二 使用tcpdump验证Switch模块
1、启动forwarding.l2_learning模式
2、开启h3终端,进行抓包,使用h2 ping h1
h2 ping h1
h3终端显示
可以看到h3只抓到了h2 ping h1的第一个包,后面的包全部抓不到,这就符合交换机的Switch模式。至于为什么第一个包抓的到,我们开启wireshark对抓包进行分析
当交换机收到h2 ping h1的第一个ICMP包时,发送了packet_in消息给控制器,控制器回复packet_out消息,在packet_out消息中动作为Output to switch port,就是将数据包从某个端口发出,端口号为65531,其十六进制为0xfffb,我们到/home/ubuntu/openflow/include/openflow/openflow.h中查看此端口号的意义
查明此端口意义是将此数据包进行泛洪,所以交换机就会将此数据包就行泛洪,所以h3也能捕获到h2 ping h1的第一个数据包。
3、对交换机s1进行流表项查询,验证是l2_leanring模式
由于流表项规则中包含了比较详细的标识(含有IP地址),不仅仅是L2地址,所以能判断是l2_learning模式。
4、重新载入l2_pairs模块,再观察交换机s1流表项
载入l2_pairs模块后,交换机s1流表项:
规则只包含L2层的信息,可以验证这是l2_pairs模式。
原文:https://www.cnblogs.com/kl107/p/13084707.html