目录
原理概述
实验目的
实验内容
实验拓扑
编辑1.基本配置
2.观察正常状态时的MAC地址表
4.配置静态MAC地址表项
原理概述
MAC 地址表是交换机的一个核心组成部分,交换机主要是根据 MAC 地址表来进行帧的转发的。交换机对帧的转发操作行为一共有3种:泛洪( Flooding )、转发( Forwarding )和丢弃( Discarding )。关于这3种转发操作行为的具体含义在此不再赘述。
在不涉及 VLAN 的情况下,交换机的转发原理可以概括地描述为:(1)如果进入交换机的是一个单播帧,则交换机会去 MAC 地址表中查找这个帧的目的 MAC 地址,如果查不到这个 MAC 地址,则交换机将对该帧执行泛洪操作;如果查到了这个 MAC 地址,则比较这个 MAC 地址在 MAC 地址表中对应的端口是不是这个帧进入交换机的那个端口,如果不是,则交换机将对该帧执行转发操作,如果是,则交换机将对该帧执行丢弃操作。(2)如果进入交换机的是一个广播帧,则交换机不会去查 MAC 地址表,而是直接对该帧执行泛洪操作。(3)如果进入交换机的是一个组播帧,则交换机的处理行为比较复杂,超出了这里的学习范围,所以在此不作描述。
交换机具有转发帧的能力,同时还具有MAC地址学习能力。当一个帧进入交换机后,交换机会检查这个帧的源 MAC 地址,并将该 MAC 地址与这个帧进入交换机的那个端口进行映射,然后将这个映射关系作为一个动态地址表项存放进 MAC 地址表。
MAC 地址表是一张动态的表,每个表项在创建或刷新时,都会设定并维护一个默认是300s的生存期(也称为老化周期)。一个 MAC 地址表项如果超过了生存期,则该表项会立即被自动清除。
MAC 地址表中的表项分为动态表项和静态表项,前者是交换机通过动态学习过程创建的,后者是通过手工配置创建的。静态表项不存在生存期的概念,并且其优先级高于动态表项:对于一个特定的 MAC 地址,如果手工配置了关于它的静态表项,则 MAC 地址表中将不会再出现关于它的动态表项。
如果两台主机之间通过交换机相连,那么其中一台主机在向另一台主机发送数据帧的时候,会首先在自己的 ARP 缓存表中查找目标主机的 MAC 地址。如果 ARP 缓存表中不存在目标主机的 MAC 地址,则源主机会以广播帧的形式发送 ARP 请求报文来获取目标主机的 MAC 地址,目标主机接收到该 ARP 请求报文后,会以单播帧的形式回应一个 ARP 回复报文,告知自己的 MAC 地址。源主机在获取了目标主机的 MAC 地址后,一方面可利用该 MAC 地址向目标主机发起通信,另一方面会将目标主机的 IP 地址和 MAC 地址建立一个映射关系,并将此映射关系作为一个条目存放在自己的 ARP 缓存表中。 ARP 缓存表也是一张动态的表,关于其动态机制这里就不再赘述了。
实验目的
理解MAC地址表的基本作用和动态特性
掌握静态MAC地址表项的创建方法
实验内容
实验拓扑如图所示。本实验网络的结构非常简单,只包含一台交换机 SWI 和三台终端电脑 PC-1、 PC-2和 PC-3。网络管理员需要为终端电脑配置固定的 IP 地址,然后观察交换机的 MAC 地址表在终端电脑的通信过程中所发生的各种变化。另外,管理员还需要在SW1上练习使用手动方式创建静态的 MAC地址表项。
实验拓扑
1.基本配置
根据上图进行相应的IP 地址配置,同时设置 PC-1的 MAC 地址为00-01-00-01-00-01, PC-2的MAC 地址为00-02-00-02-00-02, PC-3的 MAC 地址为00-03-00-03-00-03。然后,在 PC-1上使用 ping 命令检测 PC-1和 PC-2之间的连通性,如下图所示。
PC-1和 PC-3之间以及 PC-2和 P -3之间的连通性测试过程在此省略。
2.观察正常状态时的MAC地址表
由于在上述步骤中使用了 ping 命令测试3台 PC 之间的连通性,所以交换机应该已经通过动态学习过程而在 MAC 地址表中创建了关于 PC-1、 PC-2、 PC-3的 MAC 地址的表项。为了便于观察 MAC 地址表项的创建过程,可以先用命令把SW1通过动态学习而创建的地址表项清空。
[sw1]undo mac-address dynamic
然后,在SW1上查看MAC地址表。
[sw1]display mac-address
可以看到,MAC地址表中现在没有任何内容。
接下来,查看SW1上MAC地址表项的老化周期。
[sw1]display mac-address aging-time
Aging time: 300 seconds
可以看到,默认情况下, MAC 地址表项的老化周期为300s。
为了便于接下来的实验观察,避免 MAC 表项因超过了生存期而被清除掉,可以使用命令将老化周期设置为0,这样便关闭了 MAC 地址表的老化功能,地址表项不会再因超过生存期而被清除。
[sw1]mac-address aging-time 0
交换机只在接收到数据帧时,才会使用所收到的数据帧的源 MAC 地址来创建相应的地址表项。如图所示,在 PC-1上使用 ping 命令访问 PC-2,这样一来,SW1便会分别接收到以 PC-1的 MAC 地址为源地址和以 PC-2的 MAC 地址为源地址的数据帧。
然后,在SW1上查看 MAC 地址表。
图:在PC-1上pingPC-2
可以看到,SW1分别为 MAC 地址0001-0001-0001和 MAC 地址0002-0002-0002创建了地址表项,每个表项包含了 MAC 地址、 VLAN 、端口编号、类型等信息。
由于此时SW1尚未收到以 PC-3的 MAC 地址为源地址的数据帧,所以 MAC 地址表中还没有关于 PC-3的 MAC 地址表项。接下来,在 PC-1上使用 ping 命令访问 PC-3,以触发 PC-3发送数据帧,如图下图所示。
图:在PC-1上ping PC-3
然后,在 SWI 上查看 MAC 地址表。
可以看到, MAC 地址表中现在已经增加了关于 PC-3的 MAC 地址表项。
3.观察 MAC 地址冲突时的 MAC 地址表
接下来,修改 PC-3的 MAC 地址为00-02-00-02-00-02,如图所示,以此来模拟 PC-3与 PC-2产生 MAC 地址冲突的情况。
然后,在PC-1上使用ping命令访问PC-3,如图所示。
图:在PC-1上ping PC-3
从上图中可以看到, PC-3没有任何回应,此时 PC-1与 PC-3无法进行正常的通信。
在 PC-1上查看 ARP 缓存表,如图所示。
图:查看PC-1上的ARP缓存表
可以看到,此时 PC-1的 ARP 缓存表中,10.0.1.3( PC-3)对应的 MAC 地址依旧为00-03-00-03-00-03。因此, PC-1发往 PC-3的报文其实是封装在目的 MAC 地址为00-03-00-03-00-03的帧中,当 PC-3接收到该帧时,发现该帧的目的 MAC 地址 00-03-00-03-00-03与自己的 MAC 地址:00-02-00-02-00-02不匹配,于是会直接将该帧丢弃。
在 PC-1上使用命令 arp -d 清空 ARP 缓存表,并使用命令 arp - a 来确认 ARP 缓存表已被清空,如下图所示。
图:清空 PC-1上的 ARP 缓存表
从上图可以看到,现在 PC-1的 ARP 缓存表已被清空。在 PC-1上使用 ping 命令访问 PC-3,如下图所示。
图:在 PC-1上 ping PC-3
可以看到,现在 PC-1可以 ping 通 PC-3了。在SW1上查看 MAC 地址表。
观察发现,此时在SW1的 MAC 地址表中,关于 MAC 地址0002-0002-0002的表项的端口编号已经由原来的 GE 0/0/2变为了 GE 0/0/3,这是因为以 PC-3为源的数据帧经过 SW 1时,0002-0002-0002这一表项所对应的端口编号被刷新为连接 PC-3的 GE 0/0/3。
在 PC-1上使用 ping 命令访问 PC-2,触发 PC-2发送数据帧,如下图所示。
图:在 PC-1上 ping PC-2
然后,查看SW1上的 MAC 地址表。
观察发现,此时在SW1的 MAC 地址表中,关于 MAC 地址0002-0002-0002的表项的端口编号又由原来的 GE 0/0/3变为了 GE 0/0/2,这是因为以 PC-2为源的数据帧经过 SWI 时,0002-0002-0002这一表项所对应的端口编号被刷新为连接 PC-2的 GE 0/0/2。
PC-2与 PC-3的 MAC 地址目前是相同的,处于冲突的状态。当不断地有以 PC-2为源的帧和以 PC-3为源的帧通过 SW1时,SW1就需要频繁地刷新0002-0002-0002这个表项所对应的端口编号,从而产生常说的 MAC 地址表翻转现象,耗费大量的系统资源,并且可能会导致通信异常或通信数据丢失的现象。
在 PC-2和 PC-3上分别使用 ping 命令访问 PC-1,以此来模拟产生 MAC 地址冲突的设备同时有通信流量需要经过SW1的情形,如下图所示。
图:在PC-2上ping PC-1
图:在PC-3上ping PC-1
查看SW1,发现系统日志输出了如下的警告信息.
上面的显示信息表明,系统已经出现了 MAC 地址表翻转现象,要求用户进行相应的检查。
4.配置静态MAC地址表项
MAC 地址表项可以通过手工配置来创建,所创建的表项称为静态表项。例如,针编号为对 PC -3,可以手工配置一个 MAC 地址为0003-0003-0003、对应 VLAN 为1,对应端口编号为GE 0/0/3的 MAC 地址表项。
[sw1]mac-address static 3-3-3 G0/0/3 vlan 1
配置完成后,在SW1上查看MAC地址表。
可以看到,此时 MAC 地址表中多出了一个关于 MAC 地址为0003-0003-0003的表项,类型为 static ,而原有的 MAC 地址为0003-0003-0003、类型为 dynamic 的表项不再存在,这是因为静态表项的优先级要高于动态表项。
在SW1上为 PC-1和 PC-2也创建静态 MAC 地址表项。
[sw1]mac-address static 1-1-1 g0/0/1 vlan 1
[sw1]mac-address static 2-2-2 g0/0/2 vlan 1
在 PC-1上使用 ping 命令访问 PC-2和 PC-3,如下图所示。
可以看到,此时PC-1能够与PC-2正常通信,但与PC-3无法通信。
在SW1上观察MAC地址表。
可以看到,此时MAC地址表中的3个表项类型均为static,并且没有因为PC-1访问了PC-3而使得0002-0002-0002表项的接口由g0/0/2变更为g0/0/3。
接下来,将PC-3的MAC地址修改为正确的00-03-00-03-00-03,然后再PC-1上使用ping命令访问PC-3,如图所示。
图:在PC-1上ping PC-3
从上图可以看到,此时PC-1可以与PC-3进行正常的通信了。