Subject: iSCSI: Connection replacement

From: Pierre Labat <[email-masked]>
Date: Wed, 10 Jan 2001 18:23:20 -0800

Julian,

Where
=====
2.10 Login command

Problem
======

In the case where
- the maximum number of connections/session is reached
- the initiator is faster than the target to detect a failed TCP
   connection,

the establishement of a new connection to replace the bad
one will fail.

The Login on the new connection will be rejected by the target
because the maximum number of connections is reached and the target
has not yet detected that there were a failed connection.

In the event of a server adapter failure this problem  will almost
always happen.
As soon as the harware fails, the server open a new connection
using a new adapter. The target will not be fast enough to
realize the connection is bad.

Solution
======

a) in the Login message add a field (RecoverID)  to inform the target
  that this connection is to replace a failed one. The value 0xffff
means
  it is not a connection used to replace an old one.

b) After the login phase, the first message sent to the target on this
   new connection must be a Logout for the failed connection. If not
  the target close the connection.

Regards,

Pierre

---

From: "Venkat Rangan" <[email-masked]>
Date: Thu, 11 Jan 2001 08:56:01 -0800

Pierre,

There is another aspect to connection replacement - any in progress
data/status transfers on the original connection may now be sent on the new
connection, thus "breaking" the connection allegiance requirementg. If we
allowed retaining the same CID as the failed connection, and sent that along
in the Login of the replacing connection (along with the RecoverId as you
suggest), we could have the target maintain connection allegiance with
respect to the CID (although not with respect to TCP connection). Do you
have a suggestion on how the in-progress I/Os can be handled?

Regards,

Venkat Rangan
Rhapsody Networks Inc.
http://www.rhapsodynetworks.com

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]On Behalf Of
Pierre Labat
Sent: Wednesday, January 10, 2001 6:23 PM
To: [email-masked]
Subject: iSCSI: Connection replacement

Julian,

Where
=====
2.10 Login command

Problem
======

In the case where

Solution
======

Regards,

Pierre

---

From: Pierre Labat <[email-masked]>
Date: Thu, 11 Jan 2001 21:44:50 -0800

Venkat Rangan wrote:

> connection, thus "breaking" the connection allegiance requirementg.

Venkat,

Hmmm, it depends on how you look at it. On the new connection
before receiving the completion of a command initiated on
the failed connection, you need to send the command with the
retry bit. Hence on the new connection the initiator sends a command
and receive the completion hence there is allegiance there.

> If we
> respect to the CID (although not with respect to TCP connection).

Why not, the RecoverID and CID could be the same. But
the rule is that the target can not send anything concerning
the commands associated to the failed connection till
it receives the logout and the "retries".

> Do you

As described in the draft, to summarize:
a) a connection drops
b) the initiator sends a Logout on another connection
c) when the target receives the Logout it drops the failed connection
    hence it cannot receives anything on this connection from this
    point.
d) the target send the Logout response to the initiator
e) the initiator "retry" the commands on the valid connection
f) the target when receiving a "retry" must handle the retry
    in a way that the outcome of the command on the initiator
    and target is the same as if the connection didn't fail.

   For example for a READ the target (it is up to it) could
   resend everything or just what as not be acknowledged,
   because the outcome is the same.

   For a "FORMAT MEDIUM" command, the command
   will not be delivered a second time to the device server.
   When the command is over the completion is send back on the
   valid connection.

Regards,

Pierre