• OpenState之 Mac学习 实验


    OpenState之 Mac学习 实验

    目录

    • OpenState安装
    • Port Knocking 实验

    Mac Learning 实验

    环境要求:

    • 系统ubuntu 14.04
    • mininet:2.3.0d
    • 已安装OpenState

    Port Knocking 实验

    1.通过键入以下命令在Mininet中启动maclearning控制器应用程序:

    $ ryu-manager ryu/ryu/app/openstate/maclearning.py

    从启动结果可以看见交换机支持最大为四个端口:

    2.启动Mininet,使用4个主机的单个拓扑:

    $ sudo mn --topo single,4 --mac --switch user --controller remote
    

    3.mininet终端上键入以下命令:

    mininet> pingall
    

    4.打开s1的终端,进行debug流表

    mininet>xterm s1
    

    在打开的s1终端窗口中,分别输入以下两条命令,查看s1中table0的流状态(请注意安装的规则如何与任何MAC地址不匹配,而只与数据包的当前状态匹配。) 和 查询s1的状态表

    sudo dpctl -c unix:/tmp/s1 stats-flow
    

    结果如下:

    sudo dpctl -c unix:/tmp/s1 stats-state
    

    OpenFLow对比试验

    1 在RYU中启动simple_switch_13 app

    $ ryu-manager ryu/ryu/app/simple_switch_13.py
    

    2 启动Mininet树状拓扑

    sudo mn --topo tree,4 --mac --switch user --controller remote
    

    拓扑的形状如下,底层的每个交换机各连接两个主机,共16个主机。

    3 在mininet终端 h1 ping h16,我们可以看到,第一次ICMP包ping通耗费了51.8 ms,主要是花费在广播arp包,寻找1.0.0.16。

    mininet> h1 ping h16
    

    如果ping不关闭,用wireshark软件进行抓包,从总的端口上可以看到各个网卡的流量波动如下。

    ICMP数据包的访问顺序如下(右上图)。

    对比

    删除之前的拓扑,启动maclearning应用,重新启动mininet上相同的拓扑,再次h1 ping h16,发现使用时间为2.05 ms,简直不要太低。

    删除原来拓扑命令

    sudo mn -c

    为了防止是意外,h1 ping h15测试了一下,时间为2.02 ms,仍然特别的小。

    OpenState之MACLearning个人分析

    以上例树状4层拓扑图为例,假设s4交换机与h1相连为1口,与s3相连为3口,那么ping包发送过程如下。

    • 首先解析IP,发送ARP包,s4交换机收到 1口进入+源mac(00:00:00:00:00:01)+目的mac(?未知)+state,
      根据目的mac查找state,没有找到,默认为default,即state=0。这时候进行洪泛,并且更新状态表,以目的地址为Match,state为进入端口,得出下表中第一行。

    • 一直等到从交换机3口回来的ARP数据包,这时候的信息为,3口进入+源mac(00:00:00:00:00:16)+目的mac(00:00:00:00:00:01)+state,查找state的值是根据目的mac,得出state=1,故从1口进行转发。同时,根据源mac地址(00:00:00:00:00:16)更新state为入端口,state=3。

    简略状态表如下:

    Match(可以理解为目的Mac) State
    00:00:00:00:00:01 1
    00:00:00:00:00:16 3
    * 0

    这个表是通过“学习”得来的,故称之为Mac学习吧。另外Match属于个人定义,State就是为对应的端口号,state=0是表示泛洪发送。不对的地方还望指正!

  • 相关阅读:
    rasa learning to rank
    为什么选择rasa
    rasa
    tf.tile
    tf.scatter_nd
    nlp中的数据增强之 google-uda
    递归-分治-动态规划-贪心
    递归算法的美妙
    数据不平衡问题
    WD(西部数据)硬盘,“必须从您要解锁的硬盘对应的WD Drive Unlock CD 运行WD Drive Unlock应用程序”错误解决办法
  • 原文地址:https://www.cnblogs.com/Pan-xi-yi/p/10056158.html
Copyright © 2020-2023  润新知