Hi e1000-devel, Lately I have been stuck on a problem that I am hoping you could provide any kind of insight.
I have been working on cable benchmarking. More specifically I want to detect the differences in quality between different types of cables (fiber and copper ethernet). Initially we thought we could just use traffic generation software such as iperf3 alongside ethtool and ifconfig to measure the quantities of packet drops/errors alongside jitter. We would test with different ethernet cables using TCP to see if we could trigger auto-negotiation with a poorer quality cable. We would also send streams of UDP packets in high bitrates to stress the connection and see if we could detect any drops/errors. Ultimately, we discovered the following: * The data we get from the OS, ethtool and ifconfig is not accurate. Packet drops and packet errors never occur no matter how much traffic we generate (even though packet drops show in iperf3) * Ethernet always drop frames with errors. We may not be seeing any errors because all the frames get dropped before the OS can see the errors * NICs do not seem to report the number of CRC errors (possibly due to drivers). A switch may be needed to view CRC errors. * Some OS kernels do not update network statistics * Ethernet dropping frames on errors can be disabled using ethtool -k * Ethernet truncates the FCS header by default as it moves up the network stack. The FCS field can be stopped from truncating using ethtool -k, however 10gE NICs do not support this functionality * Due to all of the above issues we are not able to get accurate network metrics Current my setup is 2 linux Ubuntu 16.04.5 LTS servers with ethernet running between both. I am using 2 10gE NICs and a cat6 cable (multiple short, long, lossy cables to benchmark) going between both servers that supports 10gE. The Intel X550 NIC is using Intel(R) 10 Gigabit PCI Express Network Driver - version 4.2.1-k. My Questions are as follows: * Is there a way to extract more network stats from the NICs? * Would using a switch be a good way extract more network metrics from ethernet (such as ethernet frame drops/errors)? * How often does a packet get corrupted. I saw on a forum post that there should be about a 1 in 1012 bit error rate on a good connection. Does this seem accurate? * Would using a 1gE NIC allow for better ethernet cable testing (such as being able to extract more network metrics)? * What factors contribute to ethernet frame errors? * Would the Linux ethernet driver have visibility to ethernet frame issues (CRC, runt frames, etc)? * Are there any other metrics that would be useful to prove that one cable is superior in quality to another cable? * Would patching in the real time linux kernel improve metric accuracy significantly? * Is there a better way to set up this ethernet benchmarking platform? I would really appreciate any help, Jeremy -- Jeremy Diaz Rex Consulting, Inc 5652 Florence Terrace, Oakland, CA 94611 email: jeremy.d...@rexconsulting.net web: [ http://www.rexconsulting.net/ | http://www.rexconsulting.net ] phone, toll-free: +1 (888) 403-8996 The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. Rex Consulting, Inc. has been a California Corporation since 2001. _______________________________________________ E1000-devel mailing list E1000-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired