实验四 POX控制器编程实验指导

此为中国大学MOOC上温州大学所开设的SDN软件定义网络课程配套实验。

镜像地址:https://pan.baidu.com/s/1qYN_MtUboPmruHda1DgrTA  提取码:mhfi

实验指导书地址:链接:https://pan.baidu.com/s/1XpDrV2car4qH-sXJq1zbPA  提取码:s8un

 

一、前置知识:

  POX 控制器部分组件说明:

    • forwarding.hub:该组件每个交换机添加洪泛通配符规则,将所有交换机等效于 ethernet 集线器。
    • forwarding.l2_learning:该组件使 opennflow 交换机实现 L2 链路层上的地址学习 (类似网桥)。但当该组件学习地址学习时,向流表下发的规则会尽可能的准确, 而不仅仅是 L2 层的地址。例如不同的 TCP 连接将产生不同的表项。
    • forwarding.l2_pairs:类似于 forwarding.l2_learning,l2_pairs 让交换机进行地址学 习,但该组件是尽可能的简化规则学习,所有安装的表项时只使用 L2 层信息(如 Mac 地址)。
    • forwarding.l3_learning:组件并不是一个完整的 Router,该组件是可 POX 的 packet library(代码)的一个实现样例,可以构造 ARP 请求和回复。l3_learning 关心 IP从哪来,但并不关心 IP 的填充域,如子网等。

二、实验步骤:

  实验一 使用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模式。

 

posted @ 2020-06-10 22:52  浩天107  阅读(972)  评论(0编辑  收藏  举报