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

Reply via email to