[UDT-protocol] UDT on 100Mbps Trunk with 200GB files
Brought to you by:
lilyco
From: <di...@te...> - 2006-08-25 18:41:54
|
Hi all, I have been testing the UDT toolkit on a high speed connection (100Mbps) to transfer very large files (180GB and higher) and I have some questions regarding some issues I have been seeing. Our test environment is one Dual PIV 3.0ghz machine on the west coast running the sender and one Dual PIV 3.0ghz machine on the east coast running the receiver. They are linked via a 100Mbps wire over VPN. We are running Windows Server 2003 on both sides and have compiled the udt source with Visual Studio 2003 (VC 7.0) Hopefully someone on this list has some suggestions. Basically, we have not been able to get higher than 40Mbps and some errors have been cropping up during transfer. These are the issues. The main issue is how to get the speed higher. The second issue is that we sporadically get GPFs.The third issue is that every once in awhile the recvfile program exits with a blocking mode error and finally, frequently during the transfer both the sender and receiver pause for up to 30 seconds. Now I have some questions. The packet sequence number is 16bits - with our file sizes and the size of the MTU (about 1400 bytes) it seems to me that the sequence number can wrap around. Is this possible under our scenario? I suspect that this may be the cause of the GPF. The GPF occurred in List.cpp on line 389 which is the following. // return the first loss seq. no. int32_t seqno = m_piData1[m_iHead]; My next questions regard how to optimize the send/receive buffers and Flow control and the MTU size. 1. Do you have to set the UDT_MSS value on both the send and receive socket? 2. I was wondering why the Win32 UDT_MSS value is defined as 1052? Is that some magic number? 3. With regards to setting the buffer sizes, this line in the configuration section is pretty confusing: "the receiving buffer size should not be less than the UDT receiver buffer size, in order that the flow control is effective." I'm not sure what exactly this means. Does it mean that my receive buffer allocated in my program should not be less than the value set by UDT_RCVBUF? 4. What effect does UDT_FC have on the transmission speed? So far I have not set this number because I am not clear on its usage and impact. Lastly, this line: "the buffer sizes for both sides should be at least Bandwidth*RTT" Our bandwidth is 100Mbps and our RTT is around 100ms. So what is the actual calcuation to get the actual buffer size?? Is it 100000000*100? is it (100000000 / 8 ) * 100? or is it (100000000 / 8) * 0.1? or is it 100000000 * 0.1 ??? Sorry for all these questions but I haven't seen any one using UDT in this kind of environment. Thanks in advance to anyone who wants to jump in and help me optimize the code and to track down any issues in the UDT toolkit when used in this kind of environment -Dirk |