It's really not about packet loss, it's about the performance of the two machines exchanging the data. Since UDP is connectionless, there's no acknowledgement of the packets being received by the remote computer (unlike TCP where there are acks for packets that are received). With UDP, you just hope things get there and that the receiving computer can keep up.
With 100BaseT, it wasn't that big of a deal, but now that you can blast packets across at 1Gb/s, you could be putting more of a strain on your receiving computer, unless it's slower than the sending one. UDP is more sensitive to this than other protocols as there's no built in wait for an ack packet ("Hey, wait a second and let me catch up here!")
With UDP, there ARE no window sizes acks/nacks, etc. to tune. It's just dump-and-run. You usually see UDP in places where the application itself can handle error correction and retransmission of data that might have gotten hosed during transit. UDP can be quite fast if your program is well-written and your network is VERY CLEAN. You get any network problems (out of order packets, dropped packets. long latency, etc.) and TCP is better.
Good thoughts:
Use Jumbo frames if you can - They will transfer faster and generate less CPU load due to the decreased number of interrupts.
If you run into problems, start small and work your way up to see how hard you can push it. If things seem to slow down on larger files, watch the network monitor and CPU monitors in the task manager to see how your systems are performing.
Hope that the guy who wrote the app knew what he was doing.
- G