Openlab实验平台实验--Mininet Mac地址学习实验

任务目的

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地址学习过程结束。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值