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地址防漂移技术: 首先我 ...
随机推荐
- background-image 背景图片的设置
background-image 背景图片的设置 属性:background-image: url(img/banner.jpg); 1.设置背景图的宽度 background-size: 400px ...
- mongodb rebo 3T 执行出错 failed to execute script 但是执行成功 171条
我现在也不清楚到底是什么原因 解决方法: 把你要执行的脚本保存到文件 在最上面添加下面两行代码:根据你的数据库 信息填写 conn = new Mongo('host:port'); db = con ...
- Spring : JPA的单独使用
title: 如何单独使用spring data jpa 引用pom文件: <dependency> <groupId>org.springframework.data< ...
- redis集群部署步骤
1.yum 安装依赖 yum install gcc unzip wget 2.编译安装redis,编译安装的目的是源码包内包含了接下来创建redis集群所需要的 redis-trib.rb脚本 ma ...
- lamp 安装 apache
lamp安装 httpd-2.2.4.tar.gz :http://download.csdn.net/detail/wulvla020311/8046141 先检查一下装的东西都在不在:rpm -q ...
- 【C】数据类型和打印(print)
char -128 ~ 127 (1 Byte) unsigned char 0 ~ 255 (1 Byte) short -32768 ~ 32767 (2 Bytes) unsigned sho ...
- Django项目中关于redis包版本的坑
1.环境 python:3.6 django:1.11.8 redis:3.2.1 2.遇到的问题 报错:redis.exceptions.DataError: Invalid input of ty ...
- Shell环境变量与特殊变量详解
1)变量类型 1)变量可分为俩类:环境变量(全局变量),和普通变量(局部变量), 环境变量也称为全局变量,可以在创建他们的Shell及其派生出来的任意子进程Shell中使用,环境变量又可以分为自定义环 ...
- POJ3259_Wormholes_KEY
题目传送门 题目大意:有F组数据,N表示有N点,M表示有M条边,走一遍边需要花费Ti个时间,还有W个虫洞,可以向前回溯Ti时间,求能否从1点出发,经过一些路或虫洞回到1点后时间为负. 建图后用SPFA ...
- BZOJ1085_骑士精神_KEY
题目传送门 乍一看好像是搜索题,但搜索明显会超时. 此处采用IDA*的方法求解. IDA*算法就是基于迭代加深的A*算法. code: /******************************* ...