|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: a vote for asymmetric connections in a sessionI do not know how reasonable Costa's configuration is,in the real world, but he has brought up a point that, I think, might be important to address. If his example is reasonable, then it would suggest that we NEED to enforce the requirement of Two connections per Session in the Asymmetric case. What do you all think about this? . . . John L. Hufferd csapuntz@cisco.com@ece.cmu.edu on 09/08/2000 01:01:04 PM Sent by: owner-ips@ece.cmu.edu To: ips@ece.cmu.edu cc: csapuntz@cisco.com Subject: Re: a vote for asymmetric connections in a session If I recall correctly, the windowing mechanism was put in to avoid a deadlock condition while using multiple control connections. I believe the logic went as follow: Assumption: You're not allowed to drop commands arriving in on any connection Because the TCP connections work at different rates, commands may not arrive in order. Let's say you have four connections and a command queue depth of 3. Commands #2,#3, and #4 arrive before command #1, filling the queue. However, the queue cannot be drained until command #1 arrives. So, deadlock. Solution: Allow commands to be dropped In the example above, we'd probably drop command #4 and replace it with command #1. Note that using a single TCP connection for control/data is not sufficient to solve the problem. Imagine the case that the queue is depth 3 and the host issues four WRITES commands in quick order. The device stops reading the TCP connection after three commands. Unfortunately, none of those three writes can complete until data is read from that connection! So, deadlock again. CIFS, NFS, and HTTP don't have this problem because they immediately send data after their WRITE commands. -Costa
Home Last updated: Tue Sep 04 01:07:27 2001 6315 messages in chronological order |