Gigabit Ethernet Full Utilization

Sep 16, 2013 at 8:17 AM
Hello,

I am trying to send (in C#) raw ethernet frames (Ethernet II) at full speed to a FPGA board to process; however, the maximum frames per seconds are around 6000 and frames are not so large neither (~50 Bytes).

Am I missing something in using pcap library or there is a limit in transmission speed?

Thanks -:)
Coordinator
Sep 20, 2013 at 6:37 AM
Are you using the Transmit() method to do that?
How much of the CPU is used when you get to the maximum rate?
Sep 20, 2013 at 2:20 PM
I was using the following code to send byte array:
    private void Send_Data(int thread_id)
    {
        if (selectedDevice == null)
        {
            textBox67.AppendText("Error: Uninitialized Connection!" + Environment.NewLine);
            return;
        }
        if (first_time_transmission_flag == true)
        {
            first_time_transmission_flag = false;
            transmission_communicator = selectedDevice.Open(65536, // name of the device
                                                                     PacketDeviceOpenAttributes.Promiscuous, // promiscuous mode
                                                                     1000);
        }
        transmission_communicator.SendPacket(BuildEthernetPacket(send_byte[thread_id]));
    }
I am not using this library anymore, but I remember that CPU usage was not high. Instead I have started to use UDP to communicate with FPGA.
I was thinking that this may be solvable by changing methods' parameters, but unfortunately I did not find a detailed description for each method and its parameters.
Any clue?
Coordinator
Sep 20, 2013 at 4:31 PM
In order to send a lot of packets really fast you should probably use the Transmit() method instead of the SendPacket() method.
You should look for how much CPU was used by a single thread to see if it is over utilized.
Sep 23, 2013 at 7:32 AM
Thanks Brickner!

Is there a manual to describe Pcap functions (like Transmit()) in details?
Coordinator
Sep 25, 2013 at 7:59 AM
Each method is documented in the code.
In addition there's the User Guide

Let me know if you're missing some key information.