1.2.2 MAC地址表
我们在1.1.4小节(交换机的数据帧转发方式)中,曾经用图示介绍了交换机是如何填充自己的MAC地址表,并且根据MAC地址表条目来转发数据帧的。简而言之,交换机会通过自己接收到的数据帧,建立数据帧源MAC地址和端口之间的对应关系,此后,交换机就可以利用存储这个映射关系的逻辑表,有针对性地转发数据帧了,交换机上这个存储映射关系的逻辑表叫作MAC地址表或CAM表。在本小节中,我们会通过实验演示交换机填充MAC地址表的过程,以及管理员可以对MAC地址表进行的一些操作。
图1-16所示为一个最基本的局域网拓扑,管理员用一台交换机连接了3台PC,即PC1、PC2 和 PC3。这 3 台 PC 的 IP 地址则分别为 123.1.1.1/24、123.1.1.2/24 和123.1.1.3/24,它们分别连接在交换机的E0/0/1、E0/0/2和E0/0/3端口上。
图1-16 一个基本的3终端交换局域网
注释:
为了便于读者通过MAC地址识别设备的身份,我们在这里使用了通过eNSP模拟器搭建的模拟测试环境,并将上述 3 台 PC 的 MAC 地址分别设置为了00-9A-CD-11-11-11、00-9A-CD-22-22-22 和 00-9A-CD-33-33-33。eNSP 模拟器的使用方法已经在本系列教材《网络基础》的第2章中进行了详细的介绍,这里不再赘述。
交换机根据入站数据帧的源MAC地址填充自己MAC地址表的做法是自动的,这让交换机基本可以被视为一种即插即用型设备,也就是说,管理员即使将一台交换机不加任何配置地插入网络中,它也可以根据自己设定的转发逻辑来转发数据帧。因此,只要图中3台PC的IP地址设置无误,这3台PC完全可以直接相互通信。
在测试这些终端是否能够相互通信之前,我们可以先在交换机 LSW 上通过命令display mac-address查看交换机当前的MAC地址表,这条命令的输出信息见例1-4。
例1-4 查看交换机初始状态下的MAC地址表
<Huawei>display mac-address
<Huawei>
如上所示,由于目前没有终端发送数据帧,因此交换机的MAC地址表中没有任何表项。
下面我们通过从PC1向PC2发起ping测试的方式,来人工生成去往交换机的数据包,ping测试结果如图1-17所示。
图1-17 从PC1向PC2发起ping测试
图1-17的测试结果显示,PC1可以与PC2之间实现双向通信,这也验证了前文中关于二层交换机可以即插即用的说法。下面我们再次回到交换机LSW上查看交换机的MAC地址表,见例1-5。
例1-5 再次查看交换机的MAC地址表
<Huawei>display mac-address
MAC address table of slot 0:
------------------------------------------------------------------------------
MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID
VSI/SI MAC-Tunnel
------------------------------------------------------------------------------
009A-CD22-2222 1 - - Eth0/0/2 dynamic 0/
009A-CD11-1111 1 - - Eth0/0/1 dynamic 0/
------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 2
如上所示,由于PC1和PC2通过交换机相互发送了ICMP消息,因此交换机接收到了从这两台PC发来的数据帧。于是,交换机在MAC地址表中为这两台PC和它们对应的接口之间建立了映射关系。但由于目前交换机还没有接收过PC3发来的数据帧,因此交换机的MAC地址表中并没有记录PC3和交换机的Eth0/0/3端口之间的对应关系。
不仅如此,通过这条命令,我们也可以看到这两条项目都是交换机动态(dynamic)学习到的。
我们在1.1.4小节(交换机的数据帧转发方式)中也曾经提到,除了动态学习之外,管理员也可以手动向交换机的MAC地址表中添加静态的MAC地址条目。具体的做法是,管理员在系统视图下通过命令mac-address static向交换机的MAC地址表中添加静态条目,见例1-6。
例1-6 向交换机的MAC地址表中添加静态条目
[Huawei]mac-address static 009A-CD11-1111 Ethernet 0/0/1 vlan 1
[Huawei]display mac-address
MAC address table of slot 0:
------------------------------------------------------------------------------
MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID
VSI/SI MAC-Tunnel
------------------------------------------------------------------------------
009A-CD11-1111 1 - - Eth0/0/1 static
------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 1
MAC address table of slot 0:
------------------------------------------------------------------------------
MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID
VSI/SI MAC-Tunnel
------------------------------------------------------------------------------
009A-CD22-2222 1 - - Eth0/0/2 dynamic 0/
------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 1
如上所示,管理员通过命令 mac-address static 在交换机的 MAC 地址表中建立了PC1和E0/0/1端口之间的静态映射。此后,我们也通过命令display mac-address验证了MAC地址表中的这条静态映射条目。
注释:
关于该命令中的VLAN部分,我们会在本书的第2章中用一章的篇幅进行详细介绍,因此这里暂且略过。
有一点需要注意:在这条命令的输出信息中,MAC地址009A-CD11-1111与交换机的E0/0/1接口之间只有静态映射。这说明管理员静态配置的MAC地址条目优先级高于交换机动态学习到的MAC地址条目。当交换机上一个通过静态配置的条目和一个动态学习到的条目MAC地址相同时,交换机会将管理员静态配置的条目保存在MAC地址表中。
静态条目与动态条目之间不仅优先级不同,而且静态配置的MAC地址表条目不会老化,而动态学习的MAC地址条目则会因为交换机在MAC地址老化时间内没有再次通过同一个接口接收到以这个MAC地址为源的数据帧,而被交换机从MAC地址表中删除。关于这一点,我们在前文中已经通过图1-10进行了介绍。
管理员可以通过系统视图下的命令mac-address aging-time来设置交换机动态MAC地址条目的老化时间,并且通过命令display mac-address来查看系统当前的MAC地址老化时间。
注释:
MAC地址老化时间设置命令的单位是秒(second)。
在例1-7中,管理员将系统的MAC地址老化时间由默认的300s修改为500s。
例1-7 修改MAC地址动态条目的老化时间
[Huawei]display mac-address aging-time
Aging time: 300 seconds
[Huawei]mac-address aging-time 500
[Huawei]display mac-address aging-time
Aging time: 500 seconds
注释:
如果将MAC地址老化时间设置为0,则相当于禁用了交换机的MAC地址老化功能。这也就意味着交换机动态学习到的MAC地址条目也像静态MAC地址条目那样永远不会因为过期而被交换机从MAC地址表中删除。
最后,在 1.1.2(交换机简介)小节中,我们介绍了交换机的一些基本参数。实际上,与MAC地址表有关的参数和特性也是很多技术人员在对交换机进行选型时考虑的因素。表1-2罗列了图1-4所示交换机(即华为S2700-52P-EI-AC交换机)的MAC地址表相关参数特性,并对它们分别进行了说明。
表1-2 华为S2700-52P-EI-AC交换机的MAC地址表参数与特性
在表1-2所示的特性和参数中,除黑洞MAC地址之外,这个阶段的读者应该已经有能力判断出其他项目的表意。
在本节中,我们通过实验演示了交换机填充MAC地址表的过程。下面,我们来对这种做法存在的隐患进行简单的介绍。