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是表示泛洪发送。不对的地方还望指正!

OpenState之 Mac学习 实验的更多相关文章

  1. 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等) (转载)

    原文链接:http://blog.csdn.net/jinzhuojun/article/details/78508203 前段时间Nature上发表的升级版Alpha Go - AlphaGo Ze ...

  2. 交换机的交换原理、mac学习机制和老化机制

    1.交换机的交换原理: 1.交换机在mac地址表中查找数据帧中的目标mac地址,如果找到就讲该数据帧发送到相应的端口,如果找不到就广播. 2.如果交换机收到的报文中的源mac地址和目标mac地址一致的 ...

  3. 使用mac学习java的一些基本操作

    使用mac学习java的一些基本操作 本文主要讲一下MacOS与windows的不同 iTerm2 使用mac的同学是不需要安装虚拟机来学习linux命令的.只需要使用iTerm2[下载地址]+zsh ...

  4. mac废纸篓清空的心得、mac设置不睡眠不待机不锁屏、如何快速锁屏待机睡眠、mac重启、mac学习的必备软件-城

    mac废纸篓清空: 1.使用废纸篓的清空废纸篓,清空所有包括被锁定的文件: 2.使用“磁盘工具”的“修复磁盘权限”,修复完成再操作清空废纸篓: 3.使用cleanmymac软件“垃圾清理”和“擦除器” ...

  5. ELK学习实验014:Nginx日志JSON格式收集

    1 Kibana的显示配置 https://demo.elastic.co/app/kibana#/dashboard/welcome_dashboard 环境先处理干净 安装nginx和httpd- ...

  6. Mac欺骗实验

    实验目的 1.掌握MAC欺骗的原理 2.学会利用MacMakeUp软件工具进行伪造源MAC地址的MAC欺骗. 实验内容 使用MacMakeUp伪造主机mac地址,进行mac欺骗实验. 实验环境描述 1 ...

  7. 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2) (转载)

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590 和其它的机器学习方向一样,强化学习(Reinforcement Learni ...

  8. Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)

    http://lib.csdn.net/article/aimachinelearning/68113 原文地址:http://blog.csdn.net/jinzhuojun/article/det ...

  9. 20145307第五次JAVA学习实验报告

    20145307<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 实验名 ...

随机推荐

  1. 9.Solr4.10.3数据导入(post.jar方式和curl方式)

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.使用post.jar方式 java -Durl=http://192.168.137.168:8080/s ...

  2. Python3中遇到UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128)

    在 linux服务器上运行代码报错: Python3中遇到UnicodeEncodeError: ‘ascii’ codec can’t encode characters in ordinal no ...

  3. python第三十一课--递归(2.遍历某个路径下面的所有内容)

    需求:遍历某个路径下面的所有内容(文件和目录,多层级的) import os #自定义函数(递归函数):遍历目录层级(多级) def printDirs(path): dirs=os.listdir( ...

  4. 2.HBase In Action 第一章-HBase简介(1.1数据管理系统:快速学习)

    Relational database systems have been around for a few decades and have been hugely successful in so ...

  5. day1-课堂代码

    # # a = 1 # b = a # print(b) # # c = a + 1 # print(c) # # def add(x,y): # return x+y # # d = add(3,5 ...

  6. Dubbo -- 系统学习 笔记 -- 安装手册

    安装手册 示例提供者安装 示例消费者安装 Zookeeper注册中心安装 Redis注册中心安装 简易注册中心安装 简易监控中心安装 管理控制台安装 推荐使用Zookeeper注册中心 你可以只运行D ...

  7. JS数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)

    最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),代码已经做了修改  之前的版本是本人疏忽 真对不住大家了!现在已经做了修改 如果还有不完善的地方 请大家多多指教! 1. 支持 ...

  8. JavaScript模块化思想之入门篇

    在写正文之前先写一点废话,从我大三下学期正式接触前端到现在,已经六个月了.自己从HTML,CSS,简单的JS验证开始,一点点开始走入前端的世界.越发的感觉前端这一领域散发着无穷的魅力,也许这和我真心喜 ...

  9. css动画,展开折叠图标

    @keyframes packupArrowFlow { 0% { bottom:; } 70% { bottom: 10px; } } @-webkit-keyframes packupArrowF ...

  10. P2216 [HAOI2007]理想的正方形

    题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至 ...