I am running LV 8.0.1 of a cRIO controller. I have measured a 54ms delay in transmitting a TCP/IP packet to another machine.
This was initially seen by communicating with a standalone single board computer that echoed back a 4 byte packet.
I then created a Windows application in LV to retransmit the received message (4 bytes in length) from the cRIO to the cRIO and measured the round trip transmit time. The time was 54ms.
I then ran both programs on the cRIO sender and retransmitter and measured a round trip transfer time of 108ms.
I then ran both programs on the PC and measured a round trip transfer time of 1ms.
I can ping the cRIO from the PC and get an average transmit time of 1ms. I know that the ping mechanism is much closer to the hardware layer than the TCP/IP stack implemented on the cRIO but used this to verify that there were no detectable problems with the switch. I also used different switches from multiple vendors to verify my transfer times. They we always the same regardless of the switch used.
I used the same calls in LV (TCP Listen and TCP Open Connection) so that I was using the same TCP/IP stack. Evidently the cRIO TCP/IP stack is not as efficient.
I tried going into MAX and changing the TCP/IP settings from "Advanced Ethernet Settings" but was unable to change the "Media Mode" from Autonegotiate. The "Packet Detection" was set to Interrupt but was also not changeable.
Are there any switches availabel to speed up the transfer, similar to turning Nagle encoding on/off on the PC? Are there other alternatives (still need to use Ethernet cable)?
I need to significantly reduce the TCP/IP time. The TCP/IP time is more than twice my calculation time.
Any help is appreciated.