一种网卡巨帧功能测试方法与流程

文档序号:14574473发布日期:2018-06-02 01:07阅读:3100来源:国知局

本发明涉及服务器测试领域,具体的说是一种网卡巨帧功能测试方法。



背景技术:

巨帧(Jumbo frames),是一种厂商标准的超长帧格式,专门为千兆以太网而设计。以太网标准的最大帧长度为1518字节,而Jumbo Frame的长度各厂商有所不同,从9000字节~64000字节不等。采用Jumbo Frame能够令千兆以太网性能充分发挥,使数据传输效率提高50%~100%。在网络存储的应用环境中,Jumbo Frame更具有非同寻常的意义。

近来网卡逐渐都开始支持巨帧功能,但是因为该功能不仅需要硬件支持,在应用环境上也存在诸多限制,主要是需要整个传输链路上的设备均要支持Jumbo frames,导致Jumbo frames的使用并不普遍。但Jumbo frames在服务器网络存储(SAN)应用环境中存在天然的优势。它对于一些比较纯粹的大文件传输是非常有用。

目前,在常规的网卡测试过程中,还没有针对巨帧功能的测试环节。



技术实现要素:

为了解决上述问题,提供了一种网卡巨帧功能测试方法,在实验室模拟服务器网络存储环境,以验证网卡jumbo frames的硬件支持情况,评估jumbo frames功能的稳定性。

本发明实施例提供了一种网卡巨帧功能测试方法,所述的方法包括:

S1:搭建巨帧功能测试环境;

S2:在测试环境中设置巨帧功能测试参数;

S3:测试命令解析功能;

S4:测试巨帧分割情况;

S5:开启巨帧功能,测试巨帧传输情况;

S6:测试巨帧功能稳定性。

进一步的,步骤S1的具体实现过程为:将存储系统和若干服务器通过一台交换机连接为一个通信链路,且该通信链路中服务器的网卡、交换机、存储系统的存储iSCSI端口均支持巨帧功能。

进一步的,步骤S2的具体实现过程为:

S21:修改网卡端的MTU值并确保生效;

S22:在交换机接口上配置MTU,使其与网卡端的MTU值一致。

进一步的,步骤S21的具体实现过程为:首先通过ifconfig命令修改MTU值,然后查看MTU设置是否生效,若生效,结束操作,若未生效,修改服务器的配置文件并重启该服务器。

进一步的,步骤S3的具体实现过程为:执行ping测试以确保设定正确,且网络包可以完整通过。

进一步的,步骤S4的具体实现过程为:使用-s参数设置测试包的大小,并分别指定该测试包是否可以被分割,然后查看相应的巨帧分割情况。

进一步的,步骤S5的具体实现过程为:按照巨帧设置参数封装测试包并发送该测试包,查看传输过程中数据包的分割和接收状况。

进一步的,步骤S6的具体实现过程为:在预设的巨帧参数范围内,生成若干不同大小的封装包,通过分别发送不同大小的封装包,获取掉包率以及可以支持的最大值和最小值。

发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:

在实验室模拟服务器网络存储环境,以验证网卡jumbo frames的硬件支持情况,评估jumbo frames功能的稳定性。该测试方法简单易执行,对测试工具无特殊要求,使用系统自带的功能和工具即可完成测试,方法的适用范围广,可操作性强。该测试方法采用自动化的脚本和命令验证网卡所有网口的jumbo frames功能,节省测试人力,提高了测试结果的准确度。

附图说明

图1是本发明实施例的方法流程图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。

实施例

如图1所示,本发明实施例1提供了一种网卡巨帧功能测试方法,所述的方法包括:

S1:搭建巨帧功能测试环境,具体实现过程为:将存储系统和若干服务器通过一台交换机连接为一个通信链路。

jumbo frames使用环境需要满足网卡/iSCSI HBA卡(如有)、交换机/路由器、存储iSCSI端口都支持Jumbo Frame功能。且需要确保所有iSCSI网络上的设备,包括交换机、网络接口卡和目标设备等的最大帧尺寸设为相同。

S2:在测试环境中设置巨帧功能测试参数。

该步骤包括以下过程:

S21:修改网卡端的MTU值并确保生效,具体原理为:

1)通过ifconfig命令修改MTU值,以Linux系统为例,命令格式为ifconfig${Interface}mtu${SIZE}u,比如ifconfig eth1 mtu 9000up代表着将网口1的mtu值设置为9000帧。这个是最通用的方法,对所有的linux发行版本都有效。

2)查看MTU设置是否生效,比如,MTU设置后,eth1网口信息检查如下:

eth1 Link encap:Ethernet HWaddr 00:15:17:6F:02:6C;

inet addr:192.168.1.132Bcast:192.168.1.255Mask:255.255.255.0;

inet6 addr:fe80::215:17ff:fe6f:26c/64Scope:Link;

UP BROADCAST MULTICAST MTU:9000 Metric:1;

上述信息代表着MTU值为9000帧,设置生效。

若未生效,需要修改配置文件,在开机项中加载MTU修改方法。

示例1:在CentOS/RHEL/Fedora Linux下的修改如下:

#vi/etc/sysconfig/network-scripts/ifcfg-eth0;

#增加如下内容;

MTU="9000";

#保存后重启网卡生效;

#service network restart;

#启用IPv6地址的,修改IPv6 mtu的参数为;

IPV6_MTU="1280"。

示例2:在Debian/Ubuntu Linux下的修改如下:

#vi/etc/network/interfaces;

#增加如下值;

mtu 9000;

#保存后,重启网络生效;

#/etc/init.d/networking restart。

S22:整个链路的MTU值要匹配,设置完网卡的MTU之后,需要设置交换机的MTU值,网卡和交换机的MTU值需要保持一致。

1)在接口上配置MTU,具体操作为:

host(config)#interface gigabitEthernet 1/31/*交换机网口名称;

host(config?if)#mtu?/*设置mtu值;

<1500?9198>MTU size in bytes;

host(config?if)#mtu 9000/*设置为9000。

2)检查交换机网口的MTU是否设置成功。

步骤S2中,MTU--最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。

在因特网协议中,一条因特网传输路径的“路径最大传输单元”被定义为从源地址到目的地址所经过“路径”上的所有IP跳的最大传输单元的最小值。或者从另外一个角度来看,就是无需进一步分片就能穿过这条“路径”的最大传输单元的最大值。

MTU最大值为9000字节,从理论上计算,4bytes的CRC最大支持12000bytes大小的字节,超过了就没有办法检查了。另外还有其他一些协议如NFS等的限制。最后需要注意的是,在经过交换网络设备时,仅仅修改主机端的MTU值是不行的,还需要交换网络设备上开启jumbo frames功能。

S3:测试命令解析功能,具体过程为:执行ping测试以确保设定正确,且网络包可以完整通过。Ping测试在主机和阵列间完成,-s参数可以指定不同的封包大小,-M do参数指定该测试包不可分割。封包大小可以尝试以下这些:1448、1500、4470、5000、7000、8000、8900、8972。

S4:测试巨帧分割情况,在巨帧功能开启前,使用-s参数设置包的大小为9000帧(巨帧的size)。

1)巨帧不可分割的情况测试,如下9000bytes的包被分成了6个小包进行传输:

#ping 192.168.1.131 -s 9000/*巨帧可分割,命令:-s参数可以指定不同的封包大小;

#tcpdump -vvv -n -i eth1 icmp/*查看巨帧分割情况,巨帧被分成了以下6个小包;

12:12:42.491892 IP(tos 0×0,ttl 64,id 56656,offset 0,flags[+],proto 1,length:1500)192.168.1.1>192.168.1.131:icmp 1480:echo request seq 0;

12:12:42.491899 IP(tos 0×0,ttl 64,id 56656,offset 1480,flags[+],proto 1,length:1500)192.168.1.1>192.168.1.131:icmp;

12:12:42.491904 IP(tos 0×0,ttl 64,id 56656,offset 2960,flags[+],proto 1,length:1500)192.168.1.1>192.168.1.131:icmp;

12:12:42.491910 IP(tos 0×0,ttl 64,id 56656,offset 4440,flags[+],proto 1,length:1500)192.168.1.1>192.168.1.131:icmp;

12:12:42.491914 IP(tos 0×0,ttl 64,id 56656,offset 5920,flags[+],proto 1,length:1500)192.168.1.1>192.168.1.131:icmp;

12:12:42.491918 IP(tos 0×0,ttl 64,id 56656,offset 7400,flags[+],proto 1,length:1500)192.168.1.1>192.168.1.131:icmp;

12:12:42.491922 IP(tos 0×0,ttl 64,id 56656,offset 8880,flags[none],proto 1,length:148)192.168.1.1>192.168.1.131:icmp。

2)巨帧不可分割的情况测试,如下提示设置MTU:

#ping 192.168.1.131 -s 9000 -M do/*-M do参数指定该测试包不可分割,禁止包重组,显示如下:

From 192.168.1.1 icmp_seq=0 Frag needed and DF set(mtu=1500);

From 192.168.1.1 icmp_seq=0 Frag needed and DF set(mtu=1500);

From 192.168.1.1 icmp_seq=0 Frag needed and DF set(mtu=1500);

From 192.168.1.1 icmp_seq=0 Frag needed and DF set(mtu=1500);

From 192.168.1.1 icmp_seq=0 Frag needed and DF set(mtu=1500。

S5:开启巨帧功能,测试巨帧传输情况,具体过程为:按照巨帧设置参数封装测试包并发送该测试包,查看传输过程中数据包的分割和接收状况。

具体示例如下:

#ping 192.168.1.132 -s 8972 -M do/*显示如下;

PING 192.168.1.132(192.168.1.132)8972(9000)bytes of data.

/*(自动加了28个字节,打包成9000发给对方*/;

8980bytes from 192.168.1.132:icmp_seq=0ttl=64time=0.722ms;

8980bytes from 192.168.1.132:icmp_seq=1ttl=64time=1.09ms;

#ping 192.168.1.132 -s 9000 -M do;

PING 192.168.1.132(192.168.1.132)9000(9028)bytes of data.(

/*这里要设置MTU为9028,不然封包不重组就过不去了*/;

9008bytes from 192.168.1.132:icmp_seq=0ttl=64time=0.958ms;

9008bytes from 192.168.1.132:icmp_seq=1ttl=64time=0.881ms;

#tcpdump -vvv -n -i eth1 icmp/*包分割情况查看,如下,包未分割;

tcpdump:listening on eth1,link-type EN10MB(Ethernet),capture size 96bytes;

16:29:28.609980 IP(tos 0×0,ttl 64,id 0,offset 0,flags[DF],proto 1,length:9000)192.168.1.1>192.168.1.132:icmp 8980:echo request seq 0;

16:29:28.610684 IP(tos 0×0,ttl 64,id 26165,offset 0,flags[none],proto 1,length:9000)192.168.1.132>192.168.1.1:icmp 8980:echo reply seq 0;

16:29:29.611055 IP(tos 0×0,ttl 64,id 0,offset 0,flags[DF],proto 1,length:9000)192.168.1.1>192.168.1.132:icmp 8980:echo request seq 1;

16:29:29.612132 IP(tos 0×0,ttl 64,id 26166,offset 0,flags[none],proto 1,length:9000)192.168.1.132>192.168.1.1:icmp 8980:echo reply seq 1。

S6:测试巨帧功能稳定性,具体实现过程为:在预设的巨帧参数范围内,生成若干不同大小的封装包,通过分别发送不同大小的封装包,获取掉包率以及可以支持的最大值和最小值。

建议验证的封包大小(单位Bytes)为:1448、1500、4470、5000、7000,8000、8900、8972。采用自动化脚本完成,自动发送如上大小的包完成测试。脚本设计宗旨:对每个网口分别做封包大小(单位Bytes)为1448,1500,4470,5000,7000,8000,8900,8972的ping测试,检验当前jumbo frame的支持情况和支持的最大值。

shell脚本原理如下:

1)逐个读取allip文件里的ip(各网口的ip);

2)逐个读取各大小的frame size;

3)对读出来的ip ping 100次,看是否ping通并取出loss的百分比的值也就是掉包的值,看是否掉包;

4)比较一下,看掉包的值是不是100,如果是100就是全部掉包,那就是没ping通,那就显示ping ip fail,如果不等于100的话,就ping通了,就显示Ping ip OK。

尽管说明书及附图和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改或者等同替换;而一切不脱离本发明创造的精神和范围的技术方案及其改进,其均涵盖在本发明创造专利的保护范围当中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1