任务目的

1、了解交换机的MAC地址学习过程。
2、了解交换机对已知单播、未知单播和广播帧的转发方式。

任务环境

设备名称 软件环境(镜像) 硬件环境
主机 Ubuntu 14.04桌面版
Mininet 2.2.0
CPU:1核 内存:2G 磁盘:20G
注:系统默认的账户为root/root@openlab,openlab/user@openlab。

任务内容

通过Mininet模拟二层交换机和两个主机,通过两个主机通信来了解交换机MAC地址学习过程。

实验原理

MAC(media access control,介质访问控制)地址是识别LAN节点的标识。MAC对设备(通常是网卡)接口是全球唯一的,MAC地址为48位,用12个16进制数表示。前6个16进制数字由IEEE管理,用来识别生产商或者厂商,构成OUI(Organization Unique Identifier,组织唯一识别符)。后6个包括网卡序列号,或者特定硬件厂商的设定值。对于一个网卡来说,MAC地址是它的一个物理地址,是不可变的,而IP地址是它对应的一个逻辑地址,是可以更改的。说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。交换机在接收到数据帧以后,首先、会记录数据帧中的源MAC地址和对应的接口到MAC表中,接着、会检查自己的MAC表中是否有数据帧中目标MAC地址的信息,如果有则会根据MAC表中记录的对应接口将数据帧发送出去(也就是单播),如果没有,则会将该数据帧从非接受接口发送出去(也就是广播)。下图详细讲解交换机传输数据帧的过程。

1、主机A会将一个源MAC地址为自己目标MAC地址为主机B的数据帧发送给交换机。

2、交换机收到此数据帧后,首先将数据帧中的源MAC地址和对应的接口(接口为f
0/1)记录到MAC地址表中。

3、然后交换机会检查自己的MAC地址表中是否有数据帧中的目标MAC地址的信息,如果有,则从MAC地址表中记录的接口发送出去;如果没有,则会将此数据帧从非接收接口的所有接口发送出去(也就是除了f0/1接口)。

4、这时,局域网的所有主机都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个广播,并回应一个数据帧,此数据帧中包括主机B的MAC地址。

5、当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址(也就是主机B的MAC地址),这时,再当主机A和主机B通信时,交换机根据MAC地址表中的记录,实现单播了。

当局域网存在多个交换机互联的时候,交换机的MAC地址表记录过程如下图所示。

1、主机A将一个源MAC地址为自己,目标MAC地址主机C的数据帧发送给交换机。

2、交换机1收到此数据帧后,会学习源MAC地址,并检查MAC地址表,发现没有目标MAC地址的记录,则会将数据帧广播出去,主机B和交换机2都会收到此数据帧。

3、交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的接口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目标MAC地址的记录,则会广播此数据帧。

4、主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为自己的数据帧,这时交换机1和交换机2都会将主机C的MAC地址记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A。

5、这时,主机A和主机C通信就是一单播的形式传输数据帧了,主机B和主机C通信如上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应接口f0/1。

从上面的两幅图可以看出,交换机具有动态学习源MAC地址的功能,并且交换机的一个接口可以对应多个MAC地址,但是一个MAC地址只能对应一个接口。本次实验将通过Mininet来验证交换机的MAC地址学习功能。

注意:交换机动态学习的MAC地址默认只有300S的有效期,如果300S内记录的MAC地址没有通信,则会删除此记录。

实验步骤

一、MAC地址学习操作

步骤1. 登录Mininet虚拟机,执行以下命令创建一个线型拓扑,控制器设置为无。
$ sudo mn --topo linear --mac --switch ovsk --controller=none

步骤2. 执行 nodes 命令查看全部节点,如下图所示。

步骤3. 执行 net 命令查看链路信息,如下图所示。

步骤4. 执行 dump 命令查看节点信息,如下图所示。

步骤5. 再打开一个终端(Terminal窗口2),执行如下命令来打开交换机s1和交换机s2的二层。
$ sudo ovs-vsctl del-fail-mode s1
$ sudo ovs-vsctl del-fail-mode s2
说明:因为交换机s1和交换机s2是两个SDN交换机,在启动Mininet时没有指定任何控制器,交换机中没有流表的存在,无法进行转发操作。主机h1和主机h2无法进行通信。执行上述命令后,s1和s2就是两台普通的二层交换机了。

步骤6. 在Terminal窗口1中,执行如下命令进行两台主机Ping操作。

h1 ping h2

步骤7. 在Terminal窗口2中执行如下命令,查看流表项。
$ sudo ovs-ofctl dump-flows s1
$ sudo ovs-ofctl dump-flows s2

由上图可以看到有两条数据帧转发表,但并不是SDN交换机中的流表。这表明交换机已进行过MAC地址学习。

二、MAC地址学习分析
步骤1. 如下图所示,假设交换机A和B的MAC地址表是空的,主机11向主机33发送数据帧。

步骤2. 交换机A接收到数据帧后,执行以下操作。
(1) 交换机A学习主机11的MAC地址和端口号,此时交换机A的MAC地址表如下图所示。


(2) 交换机A查看自己的MAC地址表。

(3) 如果MAC地址表中有目的主机MAC地址则直接进行数据转发,如果没有则继续执行步骤4。
(4) 交换机A向除源数据发送端口外的其他所有端口发送广播(这里交换机A从端口2和端口3向外发送广播)。

步骤3. 交换机B在接收到数据帧后,执行以下操作。
(1) 交换机B学习源MAC地址和端口号,此时交换机B的MAC地址表如下图所示。


(2) 交换机B查看自己的MAC地址表。

(3) 交换机B向除源数据发送端口外的其他所有端口发送广播(这里交换机B从端口1和端口2向外发送广播)。

步骤4. 主机22查看接收到的数据帧,发现目标MAC地址不是自己,丢弃数据帧。
步骤5. 主机33接收数据帧,主机44丢弃数据帧。
步骤6. 假设这时候主机44要给主机11发送数据帧。
步骤7. 交换机B接收到数据帧后,执行以下操作。
(1) 交换机B学习主机44的MAC地址和端口号,此时交换机B的MAC地址表如下图所示。


(2) 交换机B查看自己的MAC地址表,根据MAC地址表中的条目,单播转发数据到端口3。

步骤8. 交换机A在接收到数据帧后,执行以下操作。
(1) 交换机A学习源MAC地址和端口号,此时交换机A的MAC地址表,如下图所示。


(2) 交换机A查看自己的MAC地址表,根据MAC地址表中的条目,单播转发数据到端口1。

(3) 主机11接收到数据帧。至此,MAC地址学习过程结束。

Openlab实验平台实验--Mininet Mac地址学习实验相关推荐

  1. 中兴二层交换机的MAC地址学习

    中兴二层交换机的MAC地址学习 一.实验目的 1.掌握中兴二层交换机学习MAC地址的过程和MAC地址表老化时间的设置. 二.实验内容 1.通过对中兴二层交换机2850的MAC地址表的查看和老化时间的修 ...

  2. Linux邻居子系统的细节之confirm-Open××× server模式的MAC地址学习

    在<Linux实现的ARP缓存老化时间原理解析>一文中,我剖析了Linux协议栈IPv4的邻居子系统的转化,再次贴出那个状态机转化图,可是这个图更详细了些,因为它有一个外部输入,那就是co ...

  3. 交换机MAC地址学习和转发数据帧的原理

    1 :交换机 MAC 地址学习   在交换机初始化的,也就是刚启动的时候,交换机的MAC地址表是没有任何MAC地址和端口的映射条目的   当PCA要想和PCC,PCB,PCD进行通信时,当该二层数据帧 ...

  4. 闲谈mac地址学习以及IVL/SVL

    静态mac:静态mac永远不会老化 动态mac: mac地址学习到的,放在交换机二层表里面的mac地址 mac地址老化:将mac地址学习到的mac地址从二层表中移除 mac地址学习: 黑洞mac:接收 ...

  5. 【交换机MAC典型配置】配置基于VLAN的MAC地址学习限制

    组网图形 基于VLAN限制MAC地址学习简介 交换机控制MAC地址学习数经常使用的方式有两种:基于VLAN限制MAC地址学习数和基于接口限制MAC地址学习数.在客户端不经常变动的办公场所中,通过限制M ...

  6. 高通平台msm8917蓝牙mac地址流程

    高通平台msm8917蓝牙mac地址流程 Where is the BD address? BD address can be saved in following places: modem NV ...

  7. 交换机MAC地址学习

    首先我们要了解交换机mac地址是怎么学习的之前要了解一下交换机是如何工作的. 参考模型 交换机工作在OSI模型的第二层,也就是数据链路层,数据链路层传输的数据叫数据帧.数据链路层使用的封装一般使用以太 ...

  8. 基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...

    作文「通信原理虚拟实验仿真平台的设计和实现」共有 4564 个字,其中有 2704 个汉字,1316 个英文,162 个数字,382 个标点符号.作者佚名,请您欣赏.玛雅作文网荟萃众多优秀学生作文,如 ...

  9. linux内核实验平台搭建,搭建自己的Linux实验系统(一)

    当你对操作系统已经有了基本的把握:而且对Linux也有了初步的了解,可是,如果你是一个程序员,你肯定还是会觉得惴惴不安:Linux到底是怎么回事? 求知和求实是程序员的天性,我们当然有义务满足自己的天 ...

最新文章

  1. 下拉菜单被挡住了,DIV置于最底层的方法
  2. 07_设置坐标轴刻度、设置刻度标签(Setting Tick Labels)、调整刻度标签 (Adjusting the ticklabels)
  3. Eclipse下Tomcat常用设置
  4. Linux_磁盘管理
  5. AJAX的安全性及AJAX安全隐患
  6. 安卓系统手机软件_2M不到的安卓神器!有了这五款软件,iphone用户都羡慕
  7. 逻辑斯蒂回归与最大熵模型---最大熵模型
  8. 移动硬盘新建选项消失、不能新建文件夹和文件的解决方案
  9. python 阿里云短信接口_python 之阿里云短信服务接入流程短信接口
  10. android:scaleType=centerCrop
  11. 蓝牙耳机哪种款式好用?目前口碑超赞的4款蓝牙耳机
  12. 什么是ICMP协议,它的作用是什么?
  13. 我们无法创建新分区。【错误:0x80042468】
  14. 使用c++开发excel插件 (第3章动态链接库(dynamic-link library))
  15. 敏捷的精髓在于即时反馈
  16. jkd10Eclipse中查看源码—source not found
  17. 我国汽车的电磁辐射与电a磁兼容现状分析
  18. dedecms教程:采集教程
  19. C语言基础知识点总结
  20. 接口鉴权 - 学习/实践

热门文章

  1. handsontable 自定义编辑器 模版
  2. 20个大数据可视化项目模板
  3. 一个自媒体人的日常!
  4. python中.find函数的使用方法及实例_Python3.6find()方法使用及示例
  5. 4款神奇的黑科技网站,超级炫酷!各个都各显神通!
  6. 89c52单片机c语言延时程序计算 脉冲,89C52单片机定时器延时时间的计算与程序解析 - STC89C52单片机定时器/计数器详解(含程序和定时器2)...
  7. 怎样查看目标网站mysql地址_如何简单获取目标网站的数据库(暴库教程)
  8. 华氏温度和摄氏温度的转换
  9. Intel CPU的CPUID指令(转载)
  10. 【ubuntu】本地访问ubuntu服务器的jupyter文件,.ipynb误删除找回、恢复