[Vortex] Slow throughput over bandwidth-limited socket

Jens Alfke jens at mooseyard.com
Mon Apr 21 05:52:59 CEST 2008


On 20 Apr '08, at 7:41 PM, Sam Roberts wrote:

> BEEP doesn't specify a 4k window. It specifies 4k as the initial
> MINUMUM size of the window/per channel. [...]
> Vortex may allow you to set the initial window size. If not, try
> setting it higher in code.

Yup. I understand about the window size. But Vortex doesn't currently  
have any way to change it. See my message earlier today, wherein I  
describe how I plan to implement a vortex_channel_set_window_size  
function.

> Sender shouldn't have to wait. RFC 3081 says "large messages should be
> segmented into frames no larger than two-thirds of TCP's negotiated
> maximum segment size". MSS should be about 1500 bytes if you have
> ethernet between the two hosts. So 4k should take at least 3 frames.
> By the time the sender is sending the 3rd frame the receiver should be
> acknowledging the first frames. After a few frames this should
> stabilize to frames being acknowledged as fast as they are received,
> and sender continuously being a few frames ahead.

It took me several readings of this paragraph and RFC 3081 to figure  
out what I think you mean here. What you're saying (?) is that the  
sender should send out very small frames (less than 1k), so that by  
the time it fills up the current window, the receiver's had a chance  
to send back a SEQ frame moving the window forwards. So the window  
never fills up, and the sender never has to block.

I don't believe Vortex does this. From the log messages produced, it  
appears to break large payloads up into frames the full size of the  
window (4k), blocking after each one. After quickly skimming the code,  
it looks like this is determined by the code around vortex_sequencer.c: 
274:
		/* calculate how many bytes to copy from the payload
		 * according to max_seq_no */
		if ((next_seq_no + message_size) > max_seq_no)
			size_to_copy = max_seq_no - next_seq_no + 1;
		else
			size_to_copy = message_size;
But I'm not familiar with this layer of Vortex and wouldn't feel  
competent to just wade in and start changing the algorithms. :/
So hopefully just increasing the window size will help enough for my  
purposes.

—Jens

PS: Thanks a lot for the explanation!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1875 bytes
Desc: not available
Url : http://lists.aspl.es/pipermail/vortex/attachments/20080420/c6d20409/attachment.bin 


More information about the Vortex mailing list