|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: a vote for asymmetric connections in a sessionIf 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 |