This is mostly likely not a SQL server issue but the setup seems to only be affecting BULK INSERTS to SQL Servers.
We have recently moved VM Hardware and all the guests that were moved had their virtual switches changed from standard to distributed.
I then started receiving
A fatal error occurred while reading the input stream from the network. The session will be terminated (input error: 64, output error: 0)
on a two SQL servers during BULK INSERT operations. One of the SQL servers was a VM with the new configuration and the other was a physical server. Both BULK INSERT operation originated from a VM with the new configuration. The BULK INSERTs would not fail every time, it was very random when it would.
When we changed the virtual switch to be a standard switch instead of a distributed switch the issue goes away.
I am looking for more of an explanation to why it doesn't work with a distributed switch instead of a resolution. My guess would be that the BULK INSERT operation is serial and with a distributed switch the packets are being routed through different hosts, some of which may be busier than others, and are arriving at the destination server beyond some latency threshold. (note: there is nothing in the windows event log at the times of the errors on either the source or destination server)