public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Zhang, Lubo" <lubo.zhang@intel.com>
To: Santhapur Naveen <naveens@amiindia.co.in>
Cc: "Ye, Ting" <ting.ye@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: ISCSI says "Session Doesn't Exist"
Date: Tue, 14 Mar 2017 01:54:14 +0000	[thread overview]
Message-ID: <7619447B08B8F74DA4FF2A813B79803B39B01E60@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <BC0C045B0E2A584CA4575E779FA2C12A1A8B374C@SHSMSX103.ccr.corp.intel.com>

Hi Naveen

     For this issue you mentioned, I have found the root cause. After we established the iSCSI connection between initiator and target server, if we use the following command immediately 

Reset command (system power off, will not perform driver binding stop, from my debug log) : we can rebuilt the iSCSI connection if the target is deployed on Debain OS, but failed on windows server, this is the target server behavior. Since we do not send the reset packet on my platform, so the windows target server think our session is still exist and reject the new session request.

Reconnect -r:  this command will execute the iSCSI driver binding stop function and reset the TCP connection actively. But we cannot capture the reset packet either.  I debugged and find that before we reset the socket in IScsiSessionAbort, the socket configured state has already been set as unconfigured in tcp driver binding stop , so we will not invoke the TCP dispatch to abort the connection by sending a reset packet.

This is a Tcp service binding  destroy child issue, I will send a patch to fix.


Best regards
Lubo

-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Ye, Ting
Sent: Tuesday, February 28, 2017 4:53 PM
To: Santhapur Naveen <naveens@amiindia.co.in>; edk2-devel@lists.01.org
Subject: Re: [edk2] ISCSI says "Session Doesn't Exist"

Hi Naveen,

Thanks for your info. We are able to reproduce the issue using Windows Server 2012 now. So far we are still not sure whether it is a particular issue in Windows iSCSI target or UEFI iSCSI initiator.

Will update to you once we have further information later. 

For your info: A link describes the know issues in Windows Server 2012 iSCSI target, https://technet.microsoft.com/en-us/library/jj863561(v=ws.11).aspx. It has a related issue but not the same one we met now. 

Standard Login Key Negotiation
RFC 3720, section 10.13.3, specifies the following:
For a new session, the target MUST generate a non-zero TSIH and ONLY return it in the Login Final-Response.
The behavior exhibited by ISCSI Target Server:
When the iSCSI initiator performed a standard login and negotiated the login parameters, the iSCSI Target Server was observed to set the TSIH field in the first Login Response PDU.

Thanks,
Ting


-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Santhapur Naveen
Sent: Tuesday, February 28, 2017 4:04 AM
To: Ye, Ting <ting.ye@intel.com>; edk2-devel@lists.01.org
Subject: Re: [edk2] ISCSI says "Session Doesn't Exist"

Hello Ting,

I've configured iSCSI target in Windows Server 2012. And the procedure is similar as in https://blogs.technet.microsoft.com/filecab/2012/05/21/introduction-of-iscsi-target-in-windows-server-2012/
Please let me know if I had to make any changes to my iSCSI server.

Thank you,
Naveen
________________________________________
From: Ye, Ting [ting.ye@intel.com]
Sent: Monday, February 27, 2017 1:23 PM
To: Santhapur Naveen; edk2-devel@lists.01.org
Subject: RE: ISCSI says "Session Doesn't Exist"

Hi Naveen,

According to the table you shared (defined in RFC 3720), it seems when TSIH is ZERO, the target should not fail the login with "session does not exist".

   +------------------------------------------------------------------+
   |new       | zero        | any    |     instantiate a new session  |
   +------------------------------------------------------------------+
   |existing  | zero        | any    |     do session reinstatement   |
   |          |             |        |     (see section 5.3.5)        |
   +------------------------------------------------------------------+

I checked the latest code in NetworkPkg/IScsiDxe, the Tsih is always set to ZERO in IScsiSessionInit. The immediate reset will also trigger driver binding start so IScsiSessionInit will be executed.

It seems to me your iSCSI target does not comply with the rules defined in RFC documentation. If possible, would you please tell us which iSCSI target are you using?

Thanks,
Ting

-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Santhapur Naveen
Sent: Friday, February 24, 2017 9:59 PM
To: edk2-devel@lists.01.org
Subject: [edk2] ISCSI says "Session Doesn't Exist"

Hello all,

    I've a question about IScsi and any suggestions would be helpful

[Issue Summary]
If I add an ISCSI attempt and on the next reboot, a connection will be established in between the initiator and the target. Till now, it is fine. Now if I do an immediate reset with in 20 seconds, on the next boot, the initiator is trying to establish a session, but the target rejects saying "Session does not exist". If I reset after 20 seconds or so, the connection would have been established with the same login details.

To dive deeper, I've checked the RFC documentation on this and found the following information. But when I checked the wireshark capture, I found my TSIH is ZERO even for the immediate session. If I want to make my immediate session also into a successful one, what should I be doing? I'm aware that there's a function available IScsiSessionAbort(). Would it help me or provide your suggestions to get me going.


   +------------------------------------------------------------------+

   |ISID      | TSIH        | CID    |     Target action              |

   +------------------------------------------------------------------+

   |new       | non-zero    | any    |     fail the login             |

   |          |             |        |     ("session does not exist") |

   +------------------------------------------------------------------+

   |new       | zero        | any    |     instantiate a new session  |

   +------------------------------------------------------------------+

   |existing  | zero        | any    |     do session reinstatement   |

   |          |             |        |     (see section 5.3.5)        |

   +------------------------------------------------------------------+

   |existing  | non-zero    | new    |     add a new connection to    |

   |          | existing    |        |     the session                |

   +------------------------------------------------------------------+

   |existing  | non-zero    |existing|     do connection reinstatement|

   |          | existing    |        |    (see section 5.3.4)         |

   +------------------------------------------------------------------+

   |existing  | non-zero    | any    |         fail the login         |

   |          | new         |        |     ("session does not exist") |

   +------------------------------------------------------------------+


Thanks,
Naveen
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


  reply	other threads:[~2017-03-14  1:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-24 13:58 ISCSI says "Session Doesn't Exist" Santhapur Naveen
2017-02-27  7:53 ` Ye, Ting
2017-02-27 20:03   ` Santhapur Naveen
2017-02-28  8:52     ` Ye, Ting
2017-03-14  1:54       ` Zhang, Lubo [this message]
2017-03-14  5:00         ` Santhapur Naveen
2017-03-14  5:06           ` Zhang, Lubo
2017-03-01  6:35     ` Zhang, Lubo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7619447B08B8F74DA4FF2A813B79803B39B01E60@shsmsx102.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox