对于网络交换机来说,MAC地址表是其能否正确转发数据包的关键,为此在关于以太网交换机测试方法的RFC2285和RFC2889中都对以太网交换机的MAC地址表深度和MAC地址学习速度进行专门的描述。在以太网交换机的其他测试过程中也应该注意被测设备MAC地址表的情况。
MAC地址表显示了主机的MAC地址与以太网交换机端口映射关系,指出数据帧去往目的主机的方向。当以太网交换机收到一个数据帧时,将收到数据帧的目的MAC地址与MAC地址表进行查找匹配。如果在MAC地址表中没有相应的匹配项,则向除接收端口外的所有端口广播该数据帧,有人将这种操作翻译为泛洪(Flood,泛洪操作广播的是普通数据帧而不是广播帧)。在我们测试过的交换机中,有的除了能够对广播帧的转发进行限制之外,也能对泛洪这种操作进行限制。
而当MAC地址表中有匹配项时,该匹配项指定的交换机端口与接收端口相同则表明该数据帧的目的主机和源主机在同一广播域中,不通过交换机可以完成通信,交换机将丢弃该数据帧。否则,交换机将把该数据帧转发到相应的端口。
交换机还将检查收到数据帧的源MAC地址,并查找MAC地址表中与之相匹配的项。如果没有,交换机将记录该MAC地址和接收该数据帧的端口,并激活一个定时器。这个过程被称作地址学习。这个定时器一般就是我们在配置交换机时的Age Time选项,一般我们都可以配置这一定时器的时间长度。在定时器到时的时候,该项记录将从MAC地址表中删除。而如果接收的数据帧的源MAC地址在MAC地址表中有匹配项,交换机将复位该地址的定时器。
RFC2285和RFC2889中规定的两个测试一个是检验交换机学习MAC地址的数量有多少,另一个是学习MAC地址的速度有多快(比如能否线速地学习MAC地址)。其原理是从交换机端口A向端口B发送一定数量的地址学习帧―不同源MAC地址的数据帧。而后从B向A发送目的地址等同于学习帧源地址的数据帧,检验地址学习情况。在这一过程中,要监控交换机是否有泛洪现象的发生,或者出现数据帧的丢弃,如果有则表明交换机不能学习如此多的地址,或者如此快地学习地址表。
这两个测试意义非常重要,我们在实际测试中发现,如果交换机不能够正确的学习MAC地址,则有可能造成数据包丢失还有泛洪现像的发生,特别是大量泛洪现像发生会影响交换机的转发性能,类似广播风暴对交换机的影响。
由于上面提到的原因,在交换机其他性能测试的过程中,MAC地址表学习和MAC地址老化时间的设定会影响到测试结果。无论是吞吐量测试还是延迟测试,测试前要先向交换机发送一定数量的学习帧,让交换机构建正确的地址表。有的交换机转发能力很强,能够线速转发数据帧,但是地址学习的速度比较慢,所以发送地址学习帧的速率应该相对较慢,确保交换机能够正确地学到MAC地址表,从而正确地显示被测交换机的性能指标。
另外在一些仅仅有单向数据流的测试中,同样要注意。比如调整被测交换机的MAC地址表老化时间大于测试时间,或者从接收端口发送一定数量的源地址为测试中目的主机的数据帧,维持测试需要的正确MAC地址表。否则会因为交换机MAC地址表老化失效,而导致泛洪现象的发生和丢包的出现,影响正常的测试结果。