100Mbps fast ethernet card limitation?

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.
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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).

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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.

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Linux Networking

From novice to tech pro — start learning today.