CN102055625A - 一种网络驱动测试方法 - Google Patents
一种网络驱动测试方法 Download PDFInfo
- Publication number
- CN102055625A CN102055625A CN2010106196205A CN201010619620A CN102055625A CN 102055625 A CN102055625 A CN 102055625A CN 2010106196205 A CN2010106196205 A CN 2010106196205A CN 201010619620 A CN201010619620 A CN 201010619620A CN 102055625 A CN102055625 A CN 102055625A
- Authority
- CN
- China
- Prior art keywords
- packet
- vlan
- descriptor
- cpu
- tag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明适用于通信技术领域,提供了一种网络驱动测试方法,其包括以下步骤:将连接发送端的交换机芯片的第一端口和连接CPU的交换机芯片的第三端口划分到第一VLAN;将连接接收端的交换机芯片的第二端口和连接CPU的交换机芯片的第三端口划分到第二VLAN;当发送端发送数据包至交换机芯片时,交换机芯片将所述数据包通过第三端口转发至CPU中;CPU中的驱动程序接收到数据包后,将所述数据包带的VLAN tag换成第二VLAN的tag;将带第二VLAN tag的数据包通过第二端口发送到接收端中进行统计。本发明能够排除在测试过程中协议栈带入的干扰;能够方便的搭建测试环境;完整经历数据包在DUT中的data path,测试更准确;更换tag直接指针操作,对驱动性能影响甚微;提供了早期测试驱动性能的途径。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种网络驱动测试方法。
背景技术
目前,网络驱动的性能指标主要有Throughput(吞吐量)、Latency(时延)、Packet Loss(丢包)、Back-to-Back(背对背)等。而测试上述各指标的方法主要有以下两种:
第一种:如图1所示,sender发包,DUT在网络驱动程序中统计接收数据,然后释放掉数据缓冲区。最终由sender和DUT网络驱动程序的统计数据来计算上述各指标。
第二种:如图2所示,sender发包,DUT的网络驱动程序收到包后交给上层协议栈,协议栈在IP层做转发,然后交给receiver。最终由sender和receiver的统计数据来计算上述的各种指标。该方式使数据包会在交换机芯片内部直接转发掉,并不经过CPU和驱动,从而无法测试驱动的性能。
上述方案有如下缺陷:
1、无法测试网络驱动的各个方面。
网络驱动代码写的好坏对性能影响非常大,而在整个驱动的代码中很多地方都可能会是网络性能的瓶颈或者直接影响驱动的稳定性。例如,在硬件接收到数据包以后需要申请新的缓冲区替换原来描述符环上的缓冲区,这就存在申请不成功以及何时替换等问题,如果处理不好网络驱动很容易在稳定性测试中崩溃。再比如,如果网络驱动的转发过程中存在拷贝或者memset等操作,那么转发性能将会受到很严重影响。还有很多类似问题在上面提到的驱动中统计数据并释放数据包的方法中是无法解决的。
2、如果测出性能不佳的情况,无法准确定位原因。
在通过IP层转发数据包的方法中,由于协议栈的引入,导致无法排除协议栈对实验结果的干扰。
发明内容
本发明的目的在于提供一种网络驱动测试方法,旨在解决现有技术中存在的数据包会在交换机芯片内部直接转发掉,并不经过CPU和驱动,从而无法测试驱动的性能的问题。
本发明是这样实现的,一种网络驱动测试方法,所述方法包括以下步骤:
将连接发送端的交换机芯片的第一端口和连接CPU的交换机芯片的第三端口划分到第一VLAN;将连接接收端的交换机芯片的第二端口和连接CPU的交换机芯片的第三端口划分到第二VLAN;
当发送端发送数据包至交换机芯片时,交换机芯片将所述数据包通过第三端口转发至CPU中;
CPU中的驱动程序接收到数据包后,将所述数据包带的VLAN tag换成第二VLAN的tag;
将带第二VLAN tag的数据包通过第二端口发送到接收端中进行统计。
在本发明中,阻止发送端发送的数据包在交换机芯片中转发掉,而是要将数据包发送至CPU,通过CPU的驱动来处理该数据包。本发明能够排除在测试过程中协议栈带入的干扰;能够方便的搭建测试环境;完整经历数据包在DUT中的data path,测试更准确;更换tag直接指针操作,对驱动性能影响甚微;提供了早期测试驱动性能的途径。
附图说明
图1及图2是现有技术提供的网络驱动测试的架构示意图。
图3是本发明实施例提供的网络驱动测试方法的实现流程示意图。
图4是本发明其中一实施例提供的数据包进入CPU的处理流程示意图。
图5是本发明另一实施例提供的数据包进入CPU的处理流程示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,阻止发送端发送的数据包在交换机芯片中转发掉,而是要将数据包发送至CPU,通过CPU的驱动来处理该数据包。因而解决了现有技术存在的数据包会在交换机芯片内部直接转发掉,并不经过CPU和驱动,从而无法测试驱动的性能的问题。
请参阅图3,为本发明实施例提供的网络驱动测试方法的实现流程,其包括以下步骤:
在步骤S101中,将连接发送端的交换机芯片的第一端口和连接CPU的交换机芯片的第三端口划分到第一VLAN;将连接接收端的交换机芯片的第二端口和连接CPU的交换机芯片的第三端口划分到第二VLAN;
在步骤S102中,当发送端发送数据包至交换机芯片时,交换机芯片将所述数据包通过第三端口转发至CPU中;
在步骤S103中,CPU中的驱动程序接收到数据包后,将所述数据包带的VLAN tag换成第二VLAN的tag;
在本发明实施例中,由于VLAN tag所在以太网数据包中的位置固定,所以可以直接使用指针定位来更换VLAN tag。
在步骤S104中,将带第二VLAN tag的数据包通过第二端口发送到接收端中进行统计。
由上可知,将发送端和接收端划分到不同VLAN中,这样发送端与接收端之间的数据包则不会通过DUT内部的交换机芯片转发,而是将数据包发送至CPU,通过CPU的驱动来处理该数据包。
请参阅图4,作为本发明一实施例,所述CPU中的驱动程序接收到数据包后,将所述数据包带的VLAN tag换成第二VLAN的tag的步骤,具体为:
在步骤S10中,CPU产生数据包接收完成的中断;
在步骤S20中,从环中提取数据包,并判断是否是错包;
在步骤S30中,如果不是错包,则对数据包更换tag;如果是错包,则按类型统计错包;
在本发明实施例中,在所述按类型统计错包的步骤之后,还包括以下步骤:丢弃所述数据包。
在步骤S40中,调用驱动发送函数,发送数据包;
在步骤S50中,判断环中是否还有属于软件处理的描述符;
在步骤S60中,如果判断出没有属于软件处理的描述符,则则打开MAC中断;否则,返回步骤S20。
请参阅图5,作为本发明另一实施例,所述CPU中的驱动程序接收到数据包后,将所述数据包带的VLAN tag换成第二VLAN的tag的步骤,具体为:
在步骤S201中,CPU产生数据包接收完成的中断;
在步骤S202中,关闭MAC中断;
在步骤S203中,调用函数触发下半部;
在步骤S204中,从描述符环中提取属于软件处理的描述符,并判断是否是错包;
在本发明实施例中,进一步的判断错包是否是致命错误,是则按类型统计错包。
其中,致命错误:1.IP checksum error(IP校验和错误)2.collision frame(冲突帧--接收数据包时发生冲突)3.runt packet(侏儒包--小于最小包长64bytes)4.Frame too long(超长包--包长超过最大允许的包长)5.CRC error(CRC错误)6.Received error(接收错误)等。非致命的:1.alignment error(对齐错误)等。
在步骤S205中,若是错包则按类型统计错包,若不是错包,则从描述符中获取数据包长度;
在本发明实施例中,在所述按类型统计错包的步骤之后,还包括以下步骤:丢弃所述数据包。
在步骤S206中,从描述符中获取存有数据包的缓存区地址,从缓存池中获取一个新的空缓存区;
在步骤S207中,如果获取新的空缓存区不成功,则将原来的缓冲区重新挂回描述符;如果获取新的空缓存区成功,则对数据包更换tag;
在步骤S208中,将空缓冲区挂到描述符上,调用驱动发送函数;
在步骤S209中,判断环中是否还有属于软件处理的描述符,如果没有属于软件处理的描述符,则打开MAC中断;如果有属于软件处理的描述符,则返回步骤S204。
由上可知,上述描述为数据包从进入CPU到调用发送函数的处理过程。在中断处理程序中只做关闭中断和调用netJobAdd两个工作。然后netJobAdd函数会释放信号量唤醒网络任务netTask,该任务会调用netJobAdd传入的下半部函数例程。数据包的主要处理过程就由此函数例程完成。此时,该函数例程是以任务级来运行,已经退出中断处理过程。由于数据包经历了中断、中断服务程序、中断下半部最后到发送程序,所以能够覆盖测试在高负载的情况下下半部的执行情况。
在驱动发送函数中,只是需要释放传过去的cluster,然后交给硬件DMA发送。
综上所述,本发明实施例阻止发送端发送的数据包在交换机芯片中转发掉,而是要将数据包发送至CPU,通过CPU的驱动来处理该数据包。本发明能够排除在测试过程中协议栈带入的干扰;能够方便的搭建测试环境;完整经历数据包在DUT中的data path,测试更准确;更换tag直接指针操作,对驱动性能影响甚微;提供了早期测试驱动性能的途径。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种网络驱动测试方法,其特征在于,所述方法包括以下步骤:
将连接发送端的交换机芯片的第一端口和连接CPU的交换机芯片的第三端口划分到第一VLAN;将连接接收端的交换机芯片的第二端口和连接CPU的交换机芯片的第三端口划分到第二VLAN;
当发送端发送数据包至交换机芯片时,交换机芯片将所述数据包通过第三端口转发至CPU中;
CPU中的驱动程序接收到数据包后,将所述数据包带的VLAN tag换成第二VLAN的tag;
将带第二VLAN tag的数据包通过第二端口发送到接收端中进行统计。
2.如权利要求1所述的方法,其特征在于,将所述数据包带的VLAN tag换成第二VLAN的tag是使用指针定位来更换VLAN tag。
3.如权利要求1所述的方法,其特征在于,所述CPU中的驱动程序接收到数据包后,将所述数据包带的VLAN tag换成第二VLAN的tag的步骤,具体为:
CPU产生数据包接收完成的中断;
从环中提取数据包,并判断是否是错包;
如果不是错包,则对数据包更换tag;如果是错包,则按类型统计错包;
调用驱动发送函数,发送数据包;
判断环中是否还有属于软件处理的描述符;
如果判断出没有属于软件处理的描述符,则则打开MAC中断;否则,返回所述从环中提取数据包,并判断是否是错包的步骤。
4.如权利要求3所述的方法,其特征在于,在所述按类型统计错包的步骤之后,还包括以下步骤:
丢弃所述数据包。
5.如权利要求1所述的方法,其特征在于,所述CPU中的驱动程序接收到数据包后,将所述数据包带的VLAN tag换成第二VLAN的tag的步骤,具体为:
CPU产生数据包接收完成的中断;
关闭MAC中断;
调用函数触发下半部;
从描述符环中提取属于软件处理的描述符,并判断是否是错包;
若是错包则按类型统计错包,若不是错包,则从描述符中获取数据包长度;
从描述符中获取存有数据包的缓存区地址,从缓存池中获取一个新的空缓存区;
如果获取新的空缓存区不成功,则将原来的缓冲区重新挂回描述符;如果获取新的空缓存区成功,则对数据包更换tag;
将空缓冲区挂到描述符上,调用驱动发送函数;
判断环中是否还有属于软件处理的描述符,如果没有属于软件处理的描述符,则打开MAC中断;如果有属于软件处理的描述符,则返回所述从描述符环中提取属于软件处理的描述符,并判断是否是错包的步骤。
6.如权利要求5所述的方法,其特征在于,在本发明实施例中,在所述按类型统计错包的步骤之后,
还包括以下步骤:丢弃所述数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106196205A CN102055625A (zh) | 2010-12-31 | 2010-12-31 | 一种网络驱动测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106196205A CN102055625A (zh) | 2010-12-31 | 2010-12-31 | 一种网络驱动测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102055625A true CN102055625A (zh) | 2011-05-11 |
Family
ID=43959581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106196205A Pending CN102055625A (zh) | 2010-12-31 | 2010-12-31 | 一种网络驱动测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102055625A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103809996A (zh) * | 2012-11-08 | 2014-05-21 | 辉达公司 | 对移动计算设备传播经更新驱动程序的方法和其传播系统 |
CN116866055A (zh) * | 2023-07-26 | 2023-10-10 | 中科驭数(北京)科技有限公司 | 数据泛洪攻击的防御方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101136806A (zh) * | 2007-07-04 | 2008-03-05 | 中兴通讯股份有限公司 | 基于标签vlan的交换芯片端口检测方法和装置 |
CN101577711A (zh) * | 2009-06-17 | 2009-11-11 | 上海吉盛网络技术有限公司 | 利用vlan技术实现ip软件路由的网络安全平台的方法 |
CN101741664A (zh) * | 2009-12-21 | 2010-06-16 | 中兴通讯股份有限公司 | 以太网接口系统实现方法及实现装置 |
-
2010
- 2010-12-31 CN CN2010106196205A patent/CN102055625A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101136806A (zh) * | 2007-07-04 | 2008-03-05 | 中兴通讯股份有限公司 | 基于标签vlan的交换芯片端口检测方法和装置 |
CN101577711A (zh) * | 2009-06-17 | 2009-11-11 | 上海吉盛网络技术有限公司 | 利用vlan技术实现ip软件路由的网络安全平台的方法 |
CN101741664A (zh) * | 2009-12-21 | 2010-06-16 | 中兴通讯股份有限公司 | 以太网接口系统实现方法及实现装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103809996A (zh) * | 2012-11-08 | 2014-05-21 | 辉达公司 | 对移动计算设备传播经更新驱动程序的方法和其传播系统 |
CN103809996B (zh) * | 2012-11-08 | 2017-09-26 | 辉达公司 | 对移动计算设备传播经更新驱动程序的方法和其传播系统 |
CN116866055A (zh) * | 2023-07-26 | 2023-10-10 | 中科驭数(北京)科技有限公司 | 数据泛洪攻击的防御方法、装置、设备及介质 |
CN116866055B (zh) * | 2023-07-26 | 2024-02-27 | 中科驭数(北京)科技有限公司 | 数据泛洪攻击的防御方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11765074B2 (en) | System and method for facilitating hybrid message matching in a network interface controller (NIC) | |
US5757795A (en) | Method and apparatus for hashing addresses in a network switch | |
CN101573913B (zh) | 用于多播路由选择的方法和设备 | |
CN101247266B (zh) | 以太网中进行数据处理的方法 | |
US7843919B2 (en) | Ethernet virtualization using a network packet alteration | |
US8605752B2 (en) | Communication apparatus, communication method, and computer program | |
CN109815176B (zh) | 特定dma数据发送方法、接收方法、系统及介质 | |
KR20120093225A (ko) | 성능 모니터링을 이용한 능동 다중경로 네트워크 리던던시 | |
WO2011083670A1 (ja) | パケット整列装置、受信装置、及びパケット整列方法 | |
TWI257790B (en) | System for protocol processing engine | |
US7606141B2 (en) | Implementing N-way fast failover in virtualized Ethernet adapter | |
US6788680B1 (en) | Defferrable processing option for fast path forwarding | |
WO2016101488A1 (zh) | 一种三态内容可寻址存储器tcam查表方法及装置 | |
CN104135548A (zh) | 基于fpga的静态nat实现方法及装置 | |
US7760736B2 (en) | Method, system, and computer program product for ethernet virtualization using an elastic FIFO memory to facilitate flow of broadcast traffic to virtual hosts | |
US8351426B2 (en) | Ethernet virtualization using assisted frame correction | |
CN102055625A (zh) | 一种网络驱动测试方法 | |
CN101540653A (zh) | 数据发送和接收方法、数据传输装置和数据传输系统 | |
US20230403229A1 (en) | System and method for facilitating efficient host memory access from a network interface controller (nic) | |
CN117354253A (zh) | 一种网络拥塞通知方法、装置及存储介质 | |
CN113422741B (zh) | 一种时间触发以太网交换机结构 | |
WO2023133697A1 (zh) | 丢包处理方法、装置、交换机、发送设备和数据传输系统 | |
CN113259274B (zh) | 多核模式下处理网络报文乱序和负载均衡的方法及存储介质 | |
US7337371B2 (en) | Method and apparatus to handle parity errors in flow control channels | |
US20130262713A1 (en) | Apparatus and method for fragmenting tramsmission data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110511 |