Mininet实验 MAC地址学习
实验目的
- 了解交换机的MAC地址学习过程。
- 了解交换机对已知单播、未知单播和广播帧的转发方式。
实验原理
MAC(media access control,介质访问控制)地址是识别LAN节点的标识。MAC对设备(通常是网卡)接口是全球唯一的,MAC地址为48位,用12个16进制数表示。前6个16进制数字由IEEE管理,用来识别生产商或者厂商,构成OUI(Organization Unique Identifier,组织唯一识别符)。后6个包括网卡序列号,或者特定硬件厂商的设定值。对于一个网卡来说,MAC地址是它的一个物理地址,是不可变的,而IP地址是它对应的一个逻辑地址,是可以更改的。
我们设想一个模型,有A、B、C、D这四台PC接在一台交换机上, 首先交换机最初加电时它里面的MAC地址表为空,也就是还没学习,在学习的最初状态。首先,比如A发给D一个数据, 这个时候交换机首先在连接A那台PC的端口上学习到A的MAC地址,并且把这个MAC地址记录到交换机里的MAC地址表里, 但是这个时候交换机并不知道D是在哪,因为MAC表里还没有D的MAC. 这个时候怎么办呢?交换机会复制多份这个数据(多帧复制),向交换机的所有端口都转发这个数据(除A接的那个端口外),这个称为泛洪,flooding 。当B和C接到这个数据时,首先检查目的地址,发现不是发给我的,那么就丢弃这个帧。 当D接到这个帧时,发现这是发给自己的,然后D便会发给A数据,这个时候交换机在D的接口又学习到了D的MAC地址 , 这个时候交换机学习到了两条MAC地址。
实验内容
本次实验采用一个模拟二层交换机和两个主机拓扑图如下:

1.启动mininet创建一个线性拓扑,这里我们是使用screen来创建,可以在两个窗口之间切换。如果系统没有screen,可以直接sudo apt install screen。 screen mn --topo linear --mac --switch ovsk --controller=none 这里控制器设置为无,ovsk表示虚拟交换机为ovs Kernel mode。 ps:这里建议直接使用管理员root来执行screen,我用自己的账户执行screen会直接退出。或者在之前加上一个sudo。 sudo screen mn -topo linear --mac --switch ovsk --controller=none 然后得到下图,拓扑创建完毕。

2.输入nodes查看全部结点,理论上会返回两台交换机和两个主机。

3.输入net查看链路信息,按照拓扑,两台交换机之间相连,下分别挂载一个主机。

4.输入dump查看节点信息。

5.因为此时交换机s1和交换机s2是两个SDN交换机,而在启动Mininet时我们没有指定任何控制器,交换机中没有流表的存在,无法进行转发操作。此时主机h1和主机h2是无法进行通信的。我们需要按ctl+a+d跳出当前Mininet窗口,在主窗口命令行中输入如下命令来打开交换机s1和交换机s2的二层。操作完成后,s1和s2就是两台普通的二层交换机了。 然后我们回到主窗口命令行输入:
#ovs-vsctl del-fail-mode s1
#ovs-vsctl del-fail-mode s2
打开两个交换机的二层。接着我们可以ping一下两台主机得到下图:

6.接着我们查看数据帧转发表
# ovs-ofctl dump-flows s1
# ovs-ofctl dump-flows s2

可以看出来交换机已经进行过了mac地址学习。
原lab上还有关于学习过程的分析,就先不黏贴以后自己再写吧。
Mininet实验 MAC地址学习的更多相关文章
- Mininet实验 MAC地址学习分析
拓扑图 学习过程分析 首先交换机A和交换机B一开始的MAC地址表都是空的. 此时主机11向主机33发送一个数据帧. 数据帧会先到达交换机A,交换机A会获得主机11的MAC地址和端口号.(此时交换机A的 ...
- 【小菜学网络】交换机与MAC地址学习
上一小节介绍了 集线器 ,一种工作于物理层的简单网络设备.由于集线器采用广播的方式中继.转发物理信号,传输效率受到极大制约. 精准转发 为了解决集线器工作效率低下的尴尬,我们需要设计一种更高级的网络设 ...
- mac地址学习笔记
MAC(Media Access Control或者Medium Access Control)地址, 意译为媒体访问控制,或称为物理地址.硬件地址,用来定义网络设备的位置. 在OSI模型中,第三层网 ...
- pox目录中的交换机mac地址学习模块 l2_multi源码
# Copyright 2012-2013 James McCauley # # Licensed under the Apache License, Version 2.0 (the "L ...
- 分分钟学会系列:mac地址泛洪攻击实验
一.实验目的: 通过实战深入理解mac地址泛洪攻击的原理. 二.实验原理: 交换机中有一张非常重要的表,叫做mac表,这个表是一个硬件组成的表,主要是完成快速转发.mac表有大小限制,不同的交换机的m ...
- 交换机是干嘛的!!交换机如何学习MAC地址过程?
1.它收到一个帧的时候,先检查源MAC地址,看看自己维护的一个地址表中有没有这个地址.如果有,则2:如果没有,则将这个MAC地址.进入的端口.进入的时间放入这个表中: 2.检查目的MAC地址,然后到该 ...
- 交换机安全学习笔记 第二章 MAC地址泛洪攻击
本文为书中相关知识的摘要,由于书中以思科设备为配置依据,所以笔记中补充了华为.H3C设备的相关配置.华为设备配置参考华为S2352EI 产品版本:V100R005C01文档版本:02. H3C配置参 ...
- Mininet实验 使用l2_multi模块寻找最短路径实验
参考:使用l2_multi模块寻找最短路径实验 1. 实验目的 1.认识VND并且掌握其基本使用方法. 2.学会使用pox控制器的l2_multi模块寻找主机间的最短传输路径. 2. 实验原理 VND ...
- HCNP Routing&Switching之MAC地址防漂移
前文我们了解了二层端口安全技术相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16631222.html:今天我们来聊一聊MAC地址防漂移技术: 首先我 ...
随机推荐
- python函数基本介绍
函数 1.函数结构 def 是函数的定义关键字,my_len是函数名.()传参用,冒号下面都是函数体. 执行函数方法:函数名加括号来执行函数.My_len() 举例: # s = 'lkfjsjulk ...
- Jquery复选框的全选全不选及选择所有复选框实现全选的复选框
Jquery代码 $(function () { $(":checkbox.parentfunc").click(function () { //如何获取被点击的那个复选框 $(t ...
- redis的docker化安装
只需要关注几点: 端口映射 配置文件映射 持久化映射 要做的就是拉取官方镜像并把关注的几个点处理一下就好了: docker pull redis docker run -d -p : -v /data ...
- day 12 生成器和生成器函数以及各种推导式
一.生成器 本质就是迭代器. 我们可以直接执⾏__next__()来执⾏ 以下⽣成器 一个一个的创建对象 创建生成器的方式: 1.生成器函数 2.通过生成器 表达式来获取生成器 3.类型转换(看 ...
- 转载自鸿燕藏锋-ETL讲解(很详细!!!)
ETL讲解(很详细!!!) ETL讲解(很详细!!!) ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供 ...
- ubuntu16.04 64位安装tftp服务器
1.安装tftpd-hpa和xinetd sudo apt-get install tftpd-hpa xined2.针对64位操作系统安装openbsd-inetd apt-get install ...
- HDU 5212 莫比乌斯反演
Code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- 变分自编码器(Variational auto-encoder,VAE)
参考: https://www.cnblogs.com/huangshiyu13/p/6209016.html https://zhuanlan.zhihu.com/p/25401928 https: ...
- Java基础—ArrayList源码浅析
注:以下源码均为JDK8的源码 一. 核心属性 基本属性如下: 核心的属性其实是红框中的两个: //从注释也容易看出,一个是集合元素,一个是集合长度(注意是逻辑长度,即元素的个数,而非数组长度) 其中 ...
- 20145234黄斐《Java程序设计》第三周学习总结
教材学习内容总结 类与对象 定义:对象,与过程相对. Java中变量有2种类型,一个是基本类型,另一个则是类类型.基本类型在之前学过,本次学习类类型.使用Java撰写程序几乎都是在使用对象,要产生对象 ...