100Mbps fast ethernet card limitation?

Posted on 2003-12-03
Medium Priority
Last Modified: 2010-03-18
Hi, experts.

This probably is not a best place to ask this question but I cant find other topics at experts-exchange that is more suitable. Please bear with me.

I'm developing some traffic generator application on RH8 in C. The FE card driver was 3Com 3c590 series.
I found that using the socket sendto function (continuously in a loop), the bandwidth used is far below the possible BW (100Mbps). E.g. sending 10bytes fixed size packet, the program can only reach ~25000pps (packet per second).
That's only abt 2Mbps...
Increasing the packet size (1000bytes for example) will give higher BW (max ~11000pps, avg ~1000pps) but still very disappointing.

So i was wondering what are the factors that caused these limitation?
1. What is the normal packet per second for a FE card? Any such limitation?
2. Could anybody suggest me a better way to stress (fully utilize) the card programmatically?
3. pps is my main concern. Is it possible to go any higer pps for this card?

Thanks in advance.
Question by:chunmeng
LVL 40

Accepted Solution

jlevie earned 400 total points
ID: 9882766
This is probably a code problem. To drive the card at high rate you need to be using async IO and double buffering so that you code is always ready to push out a packet. You don't say whether you are doing TCP, UDP, or what, so I can't tell if the bottle neck might be at the other end of the network link. Also not that small packets will provide less throughput than large packets. Partly because of the fixed overhead associated with each packet and partly because each packet is a seperate I/O operation.

A decent qualitative check of a network link is the use FTP to transfer a file in the 2-5MB range to another system that you know to be fast. That should yield a transfer rate of about 80% of theoretical (~8Mb/sec for a 100Mbps link).
LVL 22

Assisted Solution

pjedmond earned 400 total points
ID: 9903756
With tcp, a reply is sent indicating that the packet has been received. If a reply isn't received within a set time, then normally the tcp layer assumes that the packet has failed to reach it's destination and retransmits it. It is possible that if you are trying to 'flood' the bandwidth with packets, then these replies are not being received all the time, and hence apparent bandwidth is being lost. (You might find that addind a controlled 'pause' between sending packets actually improves the perceived bandwidth as the ackowledgements are then received with greater reliability.) In a real time application (transferring data between a number of teminals and a server), I've found that I got a useage of the bandwidth of about 30%. Adding extra PCs to get more individuals working concurrently on the data (and hence increasing bandwidth useage) created 'stalls' where the network effectively ground to a halt due to 'collisions' on the network (this was tcp). The exact bandwidth that you achieve will be based on the size of packets, and also on the topogaphy of the network.

In order to 'stress' the system as you desire, the maximum that you can probably get is using UDP between 2 PCs with a crossover cable - there is then no intermediate systems to create extra 'noise' on the network. (Broadcasts looking for DHCP, WINs etc). Transferring UDP packets over this connection, you should be able to get into the high 80s % of the bandwidth.


Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have seen several blogs and forum entries elsewhere state that because NTFS volumes do not support linux ownership or permissions, they cannot be used for anonymous ftp upload through the vsftpd program.   IT can be done and here's how to get i…
Note: for this to work properly you need to use a Cross-Over network cable. 1. Connect both servers S1 and S2 on the second network slots respectively. Note that you can use the 1st slots but usually these would be occupied by the Service Provide…
If you're a developer or IT admin, you’re probably tasked with managing multiple websites, servers, applications, and levels of security on a daily basis. While this can be extremely time consuming, it can also be frustrating when systems aren't wor…
Stellar Phoenix SQL Database Repair software easily fixes the suspect mode issue of SQL Server database. It is a simple process to bring the database from suspect mode to normal mode. Check out the video and fix the SQL database suspect mode problem.
Suggested Courses

612 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question