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是表示泛洪发送。不对的地方还望指正!
OpenState之 Mac学习 实验的更多相关文章
- 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等) (转载)
原文链接:http://blog.csdn.net/jinzhuojun/article/details/78508203 前段时间Nature上发表的升级版Alpha Go - AlphaGo Ze ...
- 交换机的交换原理、mac学习机制和老化机制
1.交换机的交换原理: 1.交换机在mac地址表中查找数据帧中的目标mac地址,如果找到就讲该数据帧发送到相应的端口,如果找不到就广播. 2.如果交换机收到的报文中的源mac地址和目标mac地址一致的 ...
- 使用mac学习java的一些基本操作
使用mac学习java的一些基本操作 本文主要讲一下MacOS与windows的不同 iTerm2 使用mac的同学是不需要安装虚拟机来学习linux命令的.只需要使用iTerm2[下载地址]+zsh ...
- mac废纸篓清空的心得、mac设置不睡眠不待机不锁屏、如何快速锁屏待机睡眠、mac重启、mac学习的必备软件-城
mac废纸篓清空: 1.使用废纸篓的清空废纸篓,清空所有包括被锁定的文件: 2.使用“磁盘工具”的“修复磁盘权限”,修复完成再操作清空废纸篓: 3.使用cleanmymac软件“垃圾清理”和“擦除器” ...
- ELK学习实验014:Nginx日志JSON格式收集
1 Kibana的显示配置 https://demo.elastic.co/app/kibana#/dashboard/welcome_dashboard 环境先处理干净 安装nginx和httpd- ...
- Mac欺骗实验
实验目的 1.掌握MAC欺骗的原理 2.学会利用MacMakeUp软件工具进行伪造源MAC地址的MAC欺骗. 实验内容 使用MacMakeUp伪造主机mac地址,进行mac欺骗实验. 实验环境描述 1 ...
- 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2) (转载)
原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590 和其它的机器学习方向一样,强化学习(Reinforcement Learni ...
- Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
http://lib.csdn.net/article/aimachinelearning/68113 原文地址:http://blog.csdn.net/jinzhuojun/article/det ...
- 20145307第五次JAVA学习实验报告
20145307<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 实验名 ...
随机推荐
- SASS对css的管理
一.SASS简介 SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 本文总结了SASS的主要用法.我的目标是,有了这篇文章,日常的一般 ...
- Netty入门(七)使用SSL/TLS加密Netty程序
为了支持 SSL/TLS,Java 提供了 javax.net.ssl API 的类 SslContext 和 SslEngine 使它相对简单的实现解密和加密.Netty 利用该 API 实现了 C ...
- P3195 [HNOI2008]玩具装箱TOY
列出DP方程式:设f[i]表示分组完前i件物品的最小花费,为方便计算,设sum[i]表示是前i件物品的长度和. f[i]=min(f[j]+(sum[i]-sum[j]+i-j-L-1)^2) [0& ...
- 蓝桥杯历届试题 危险系数(dfs或者并查集求无向图关于两点的割点个数)
Description 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个 ...
- 20155210 Exp5 MSF基础应用
Exp5 MSF基础应用 一个主动攻击实践,MS08-067 首先利用msfconsole启用msf终端 然后利用search MS08-067搜索漏洞,会显示相应漏洞模块 如图: 根据上图,我们输入 ...
- 20155320 Exp7 网络欺诈防范
20155320 Exp7 网络欺诈防范 [基础问题回答] (1)通常在什么场景下容易受到DNS spoof攻击 乱点链接或者连公共场合的免费WiFi也容易受到攻击,尤其是那种不需要输入密码直接就可以 ...
- 20155321 《网络对抗》 Exp6 信息搜集与漏洞扫描
20155321 <网络对抗> Exp6 信息搜集与漏洞扫描 实验内容 信息搜集 whois 在kali终端输入whois 网址,查看注册的公司.服务.注册省份.传真.电话等信息 dig或 ...
- Java 多线程(五)之 synchronized 的使用
目录 1 线程安全 2 互斥锁 3 内置锁 synchronized 3.1 普通同步方法,锁是当前实例对象(this) 3.1.1 验证普通方法中的锁的对象是同一个. 3.1.2 验证不同的对象普通 ...
- Dubbo+zookeeper搭建环境学习笔记
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 1.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本 ...
- linux之awk基础
第一章 1.awk 简介 awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel).处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取 ...