[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
|