网络设备MAC地址容量测试系统及方法
技术领域
本发明涉及数据通信领域,特别涉及一种网络设备MAC地址容量测试系统及方法。
背景技术
交换机的MAC地址(媒介访问硬件地址)存放在交换机的缓存即MAC地址表中,用于标识每个经过交换机的节点,其中包含了MAC地址、VLAN ID和端口号等参数,当一个端口收到报文后,就可以在MAC地址表查找此MAC地址对应的VLAN和出端口,从而向此节点转发这个报文。目前交换机设备MAC地址的存储采用哈希表结构进行,当MAC地址表已经学习大容量MAC地址后可能会产生哈希冲突导致报文泛洪转发或被丢弃。
交换机产品在园区网络部署范围越来越大,大数据/云计算所带来的客户站点越来越密集的情况下,其MAC地址容量也在扩大,各种招标测试中都会对交换机的MAC地址容量进行准确的测试以验证交换机可以达到提供的MAC地址容量
在当前业界尤其是招标测试中,采用的MAC地址容量测试系统如图1所示,被测网络设备和测试装置之间连接3个测试仪表端口,分别为端口1、端口2、端口3。基于此测试系统,传统技术中有两种测试方案,下面进行具体介绍:
测试方案一:
1)根据交换机芯片资料或者客户要求MAC地址容量获取此交换机最大MAC地址容量数;
2)通过测试装置端口1向被测网络设备端口1发送步骤1中获取的交换机最大MAC地址容量的源MAC变化的二层报文,并等待一段时间供交换机学习MAC地址;
3)通过测试装置端口2向被测网络设备端口2发送目的MAC地址为步骤2中测试装置端口1所发送的源MAC地址的二层报文,本条二层报文源MAC地址不和目的地址重合;
4)观察测试装置端口3是否收到流量,如果收到了流量则说明MAC地址表已经产生了哈希冲突,此时清除设备的MAC地址表,相应减小测试装置端口1发送的源MAC地址容量,然后重复步骤2到步骤3,直到测试装置端口3不再有流量为止;
5)最终测试装置端口1所发送的源MAC地址变化数量即为设备的MAC地址容量。
测试方案二:
1)根据交换机芯片资料或者客户要求MAC地址容量获取此交换机最大MAC地址容量数目;
2)通过测试装置端口1向被测网络设备端口1发送步骤1中获取的交换机最大MAC地址容量的源MAC变化的二层报文,并等待一段时间供交换机学习MAC地址;
3)通过测试装置端口2向被测网络设备端口2发送目的MAC地址为步骤2中测试装置端口1所发送的源MAC地址的二层报文,本条二层报文源MAC地址不和目的地址重合;
4)观察测试装置端口3是否收到流量,如果收到了流量则说明MAC地址表已经产生了哈希冲突,统计出流量大小即哈希冲突的MAC地址个数,此时重复步骤2到步骤3,但步骤2中的测试装置端口1的报文源MAC需要修改为哈希冲突的MAC地址大小,且MAC地址不能和之前的报文源MAC相同,直到测试装置端口3不再有流量为止;
5)最终测试装置端口1所发送的源MAC地址变化数量即为设备的MAC地址容量。
上述两种测试方案存在以下缺陷:
①需要提前知道被测设备的MAC地址容量,无法测试一款未知最大MAC地址容量的设备;
②需要提供3个测试仪表端口,浪费端口资源;
③由于MAC地址哈希冲突的存在,因此必须要经过多次的尝试才可以测试出被测网络设备的MAC地址容量,非常耗时;
④由于比较耗时,一般都采用自动化脚本的方法测试,而搭建自动化的过程比较繁琐。
发明内容
本发明所要解决的技术问题是,提出一种网络设备MAC地址容量测试系统及方法,解决传统技术中的测试方案无法测试未知最大MAC地址容量的网络设备、浪费端口资源和测试效率低下,搭建自动化过程繁琐的问题。
一方面,本发明实施例提供一种网络设备MAC地址容量测试系统,其包括:
测试装置和被测网络设备,所述测试装置和被测网络设备上各设置有两个端口,所述测试装置通过其两个端口与被测网络设备上的两个端口一一对应相连;
所述被测网络设备,用于对其两个端口进行VLAN配置和静态MAC地址配置,并开启未知单播流量丢弃功能;在收到用于MAC地址学习的二层转发流量时,对此二层转发流量中的报文的源MAC地址进行学习;在收到用于验证的二层转发流量时,对此二层转发流量中的报文进行转发;
所述测试装置,用于通过其一个端口构造用于MAC地址学习的二层转发流量并发送给被测网络设备,在被测网络设备对此二层转发流量进行MAC地址学习后,再通过其另一个端口构造用于验证的二层转发流量并发送给被测网络设备,以及,统计接收到的报文数量,根据统计的报文数量计算被测网络设备的MAC地址容量;
所述用于MAC地址学习的二层转发流量中的各报文的源MAC地址不重复,目的MAC地址为被测网络设备的静态MAC地址,所述用于验证的二层转发流量中的各报文的源MAC地址为被测网络设备的静态MAC地址,其目的MAC地址为所述用于MAC地址学习的二层转发流量中的各报文的源MAC地址。
作为进一步优化,所述测试装置上设置有第一端口和第二端口,所述被测网络设备上设置有第三端口和第四端口;所述测试装置上的第一端口和第二端口分别与所述被测网络设备上的第三端口和第四端口对应连接;
所述被测网络设备包括:流量接收模块、MAC地址学习模块、流量转发模块、配置模块;
所述测试装置包括:流量构造模块、流量发送模块、统计计算模块;
所述配置模块,用于将被测网络设备上的第三端口和第四端口划分到同一个VLAN中,并配置一条指向第二端口的静态MAC地址;以及,开启未知单播流量丢弃功能;
所述流量接收模块,用于通过第三端口接收用于MAC地址学习的二层转发流量,通过第四端口接收用于验证的二层转发流量;
所述流量转发模块,用于在通过第四端口接收到用于验证的二层转发流量后,对此二层转发流量中的报文进行转发;
所述MAC地址学习模块,用于在通过第三端口接收到用于MAC地址学习的二层转发流量后,对此二层转发流量中的报文的源MAC地址进行学习;
所述流量构造模块,用于在测试装置的第一端口上构造一条用于MAC地址学习的二层转发流量,此二层转发流量中的各报文的目的MAC地址为被测网络设备的静态MAC地址,此二层转发流量中的各报文的源MAC地址不重复;
还用于在测试装置的第二端口上构造另外一条用于验证的二层转发流量,此二层转发流量中的各报文的目的MAC地址为在第三端口构造上构造的二层转发流量中的各报文的源MAC地址,此二层转发流量中的各报文的源MAC地址为被测网络设备的静态MAC地址;
所述流量发送模块,用于将构造的用于MAC地址学习的二层转发流量通过第一端口发送给被测网络设备的第三端口;还用于将构造的用于验证的二层转发流量通过第二端口发送给被测网络设备的第四端口;
所述统计计算模块,用于在测试装置的第一端口上统计收到的报文数量,并根据统计的报文数量计算被测网络设备的MAC地址容量。
作为进一步优化,所述在第一端口上构造的二层转发流量中的各报文的源MAC地址依次递增变化Y次,Y最大可设置为测试装置所能够支持的最大MAC地址数量。
作为进一步优化,所述配置模块开启未知单播流量丢弃功能具体包括:
在第一端口和第二端口上绑定一条ACL规则,规则内容为丢弃所有未知单播流量。
作为进一步优化,所述流量转发模块对二层转发流量中的报文进行转发时,对于被测网络设备已经学习到的MAC地址作为目的MAC地址的报文,按照其目的MAC地址进行转发,对于未被学习到的MAC地址作为目的MAC地址的报文,将其作为二层未知单播流量丢弃。
另一方面,基于上述测试系统,本发明的实施例还提供了一种网络设备MAC地址容量测试方法,其包括:
a.将被测网络设备上的两个端口划分至同一VLAN中,并配置一条指向其中一个端口的静态MAC地址,并开启未知单播流量丢弃功能;
b.测试装置通过其一个端口构造用于MAC地址学习的二层转发流量并发送给被测网络设备,此二层转发流量中的各报文的源MAC地址不重复,目的MAC地址为被测网络设备的静态MAC地址;
c.被测网络设备在收到用于MAC地址学习的二层转发流量后,对此二层转发流量中的报文的源MAC地址进行学习;
d.测试装置通过其另外一个端口构造用于验证的二层转发流量并发送给被测网络设备,此二层转发流量中的各报文的源MAC地址为被测网络设备的静态MAC地址,其目的MAC地址为所述用于MAC地址学习的二层转发流量中的各报文的源MAC地址;
e.被测网络设备在收到用于验证的二层转发流量后,对此二层转发流量中的报文进行转发;
f.测试装置统计收到的报文数量,并根据统计的报文数量计算被测网络设备的MAC地址容量。
作为进一步优化,步骤a中,所述开启未知单播流量丢弃功能具体包括:
在被测网络设备的两个端口上绑定一条ACL规则,规则内容为丢弃所有未知单播流量。
作为进一步优化,步骤b中,构造的二层转发流量中的各报文的源MAC地址依次递增变化Y次,Y最大可设置为测试装置所能够支持的最大MAC地址数量。
作为进一步优化,步骤e中,所述对二层转发流量中的报文进行转发,具体包括:
对于被测网络设备已经学习到的MAC地址作为目的MAC地址的报文,按照其目的MAC地址进行转发,对于未被学习到的MAC地址作为目的MAC地址的报文,将其作为二层未知单播流量丢弃。
作为进一步优化,步骤f中,所述根据统计的报文数量计算被测网络设备的MAC地址容量的方法为:
被测网络设备的MAC地址容量Z=统计的报文数量X+1。
本发明的有益效果是:
1)无需提前知晓一款被测网络设备的MAC地址容量,可以直接使用本发明通用方法测试出设备的MAC地址容量;
2)本发明仅使用需测试装置的2个测试仪表端口即可;
3)本发明无需经过多次的尝试测试,仅需测试装置端口一次性流量验证,即可计算出被测网络设备的MAC地址容量,大大缩短测试周期;
4)本发明无需构建繁琐的自动化环境,可直接手工测试。
附图说明
图1为传统技术中的MAC地址容量测试系统示意图;
图2为本发明实施例中的MAC地址容量测试系统示意图;
图3为本发明实施例的测试系统中的被测网络设备结构框图;
图4为本发明实施例的测试系统中的测试装置结构框图;
图5为本发明实施例中的网络设备MAC地址容量测试方法流程图。
具体实施方式
本发明旨在提出一种网络设备MAC地址容量测试系统及方法,解决传统技术中的测试方案无法测试未知最大MAC地址容量的网络设备、浪费端口资源和测试效率低下,搭建自动化过程繁琐的问题。其核心思想是:先通过对被测网络设备配置ACL规则,使得其具备过滤二层未知单播流量功能,然后再通过测试装置一个端口发送已知单播流量使得被测网络设备可以学习MAC地址,再通过测试装置另一个端口发送验证流量,多余被丢弃的MAC地址的流量即是被测网络设备没有学习到的MAC地址(二层未知单播流量),而转发通过的流量即是被测网络设备已经学习到的MAC地址,通过在测试装置端口统计出通过的流量大小,即可以统计出被测网络设备的MAC地址容量。
下面结合附图及实施例对本发明的方案作进一步的描述:
如图2所示,本实施例中的MAC地址容量测试系统包括测试装置和被测网络设备,其中测试装置上用到两个端口:第一端口和第二端口(分别对应图中测试装置上的端口1和端口2),被测网络设备上用到两个端口:第三端口和第四端口(分别对应图中被测网络设备上的端口1和端口2);第一端口和第三端口对应连接,第二端口和第四端口对应连接。
在具体实现上,测试装置的结构如图3所示,其包括:流量构造模块、流量发送模块、统计计算模块;
其中,所述流量构造模块,用于在测试装置的第一端口上构造一条用于MAC地址学习的二层转发流量,此二层转发流量中的各报文的目的MAC地址为被测网络设备的静态MAC地址,此二层转发流量中的各报文的源MAC地址不重复;
还用于在测试装置的第二端口上构造另外一条用于验证的二层转发流量,此二层转发流量中的各报文的目的MAC地址为在第三端口构造上构造的二层转发流量中的各报文的源MAC地址,此二层转发流量中的各报文的源MAC地址为被测网络设备的静态MAC地址;
所述流量发送模块,用于将构造的用于MAC地址学习的二层转发流量通过第一端口发送给被测网络设备的第三端口;还用于将构造的用于验证的二层转发流量通过第二端口发送给被测网络设备的第四端口;
所述统计计算模块,用于在测试装置的第一端口上统计收到的报文数量,并根据统计的报文数量计算被测网络设备的MAC地址容量。
被测网络设备的结构如图4所示,其包括:流量接收模块、MAC地址学习模块、流量转发模块、配置模块;
所述配置模块,用于将被测网络设备上的第三端口和第四端口划分到同一个VLAN中,并配置一条指向第二端口的静态MAC地址;以及,开启未知单播流量丢弃功能;
所述流量接收模块,用于通过第三端口接收用于MAC地址学习的二层转发流量,通过第四端口接收用于验证的二层转发流量;
所述流量转发模块,用于在通过第四端口接收到用于验证的二层转发流量后,对此二层转发流量中的报文进行转发;
所述MAC地址学习模块,用于在通过第一端口接收到用于MAC地址学习的二层转发流量后,对此二层转发流量中的报文的源MAC地址进行学习。
基于上述MAC地址容量测试系统,本发明实施例中实现的MAC地址容量测试方法如图5所示,其包括以下步骤:
1、将被测网络设备上的两个端口划分至同一VLAN中,并配置一条指向其中一个端口的静态MAC地址,并开启未知单播流量丢弃功能:
在本步骤中,对被测网络设备进行相关配置:将端口1和端口2划分至同一VLAN中,并配置一条指向端口2的静态MAC地址,如:AAAA.BBBB.CCCC;如此,可以使得下一步骤收到的二层转发流量成为二层已知单播流量,从而供被测网络设备的端口学习;此外,本发明通过在被测网络设备的两个端口上绑定一条ACL规则,来实现开启未知单播流量丢弃功能。
2、测试装置端口1构造并发送MAC地址学习流量:
在本步骤中,在测试装置的第一端口上构造一条二层转发流量,此二层转发流量作为MAC地址学习流量,流量中的各报文的目的地址为被测网络设备的静态MAC地址,源MAC地址递增变化Y次,Y最大可以设置为测试装置所能够支持的最大MAC地址,每个变化的MAC对应一个报文,一条流量对应Y个报文;且此处的MAC地址数量越大,测试出被测网络设备的MAC地址容量就可能越大。
此二层转发流量在构造完成后从测试装置的端口1发送至被测网络设备的端口1;
3、被测网络设备的端口1学习和存储MAC地址:
在本步骤中,被测网络设备的端口1在收到二层转发流量后,由于流量中的各报文的目的MAC地址均为被测网络设备的静态MAC地址,因此不会被丢弃,在被测网络设备端口1上对此二层转发流量的源MAC地址进行学习和存储。由于被测网络设备的MAC地址表不会无限大,因此在产生哈希冲突后,被测网络设备端口1就不会再学习多余的MAC地址。
4、测试装置的端口2构造并发送MAC地址验证流量:
在本步骤中,在测试装置的端口2上构造另外一条二层转发流量,流量中的各报文的源MAC地址为被测网络设备的静态MAC地址,其目的MAC地址为所述用于MAC地址学习的二层转发流量中的各报文的源MAC地址,即流量指向测试装置的端口1;
此二层转发流量在构造完成后从测试装置的端口2发送至被测网络设备的端口2。
5、被测网络设备的端口2对MAC地址验证流量中的报文进行转发:
在本步骤中,被测网络设备的端口2通过查找其MAC地址表,对于已经学习到的MAC地址作为目的MAC地址的报文,按照其目的MAC地址进行转发(即经由被测网络设备的端口1发送给测试装置的端口1),对于未被学习到的MAC地址作为目的MAC地址的报文,将其作为二层未知单播流量丢弃。
6、测试装置的端口1统计收到的报文数量,根据统计的报文数量计算被测网络设备的MAC地址容量:
在本步骤中,测试装置的端口1对收到的报文数量进行统计,最后根据统计的报文数量X计算被测网络设备的MAC地址容量Z:Z=X+1。