|
Kurt Z.wrote:
>The confuse may be due to the fact that RFC 2251 was written,
>as I see it, without SASL and TLS in mind. And then 2830 >adds some confusion it has one optionally sending a PDU >during what it calls abrupt closure. I can see this being the case, and I agree that graceful closure following a Notice of Disconnection makes more sense and is more desirable.
So at this point, it would be interesting to get more feedback on this issue, and it would also be good to know what existing LDAP implementations do today when either (or both) TLS or/and SASL are installed, and a Notice of Disconnection is sent / received.
Can implementors please reply with their understanding and implementation of how TLS and SASL layers are to be closed after a Notice of Disconnection?
Thanks,
Jim
>>> "Kurt D. Zeilenga" <Kurt@OpenLDAP.org> 1/20/05 10:09:20 PM >>> At 04:18 PM 1/20/2005, Jim Sermersheim wrote: >After reading this thread, I conclude that there is some confusion >regarding the wording in section 4.14.3.2. Is that correct? Even then, >I'm not sure what the confusion is. To me it says that TLS may be >abruptly removed by closing the transport connection. And by the way, if >the server is about to do this, it may send a Notice of Disconnection >first. Then the server is not abruptly closing the connection. I understood the existing specification to allow two options for server initiated closure: 1) abrupt closure: close the transport; 2) graceful closure: send notice of disconnect, tear down SASL & TLS, then close the transport Likewise, the client has two options to initiate closure: 1) abrupt closure: close the transport; 2) graceful closure: send unbind request, tear down SASL & TLS, then close the transport >I'm not even sure what use this section is, it seems obvious to >me - one can abrupty stop _anything_ by closing the transport >connection. Right. And if you are sending a PDU before closure, then you obviously are attempting graceful closure. >I suggest removing the section. >The other thing that may have raised its head on this thread was Kurt >suggesting that Notice of Disconnection be followed by graceful closure >(as is done with Unbind) rather than an abrupt closure of the transport >connection. I'm thinking or hoping I mis-interpreted that. I think >RFC2251 and all revisions of [Protocol] have been clear that >transmission and reception of Notice of Disconnection is always followed >by an abrupt (not graceful) closure of the transport connection. I took Notice of Disconnect and Unbind to cause server-initiated and client initiated, respectively, graceful closure of the LDAP session. The confuse may be due to the fact that RFC 2251 was written, as I see it, without SASL and TLS in mind. And then 2830 adds some confusion it has one optionally sending a PDU during what it calls abrupt closure. I think we need to use the term 'abrupt' to be mean, as the term is generally used in application layer protocols, that the transport layer immediately without additional transfer of application layer data. I think we should also use the term 'graceful' to mean, as the term is generally used in application layer protocols, that the protocol stack is torn down in an orderly fashion. >Jim > >>>> "Kurt D. Zeilenga" < Kurt@OpenLDAP.org > 12/8/04 1:32:38 PM >>> >At 11:56 AM 12/8/2004, Hallvard B Furuseth wrote: >>Kurt D. Zeilenga writes: >>>At 09:10 AM 12/8/2004, Hallvard B Furuseth wrote: >>>>Kurt D. Zeilenga writes: >>>>> My previous suggestion does not adequately cover the >>>>> issue of graceful closure of the LDAP session. That is, >>>>> the reason why a particular order was suggested was that >>>>> it was thought to be graceful. So while I have no >>>>> problem with removing the ordering aspect of the current >>>>> text, I'd like to indicate that Unbind/Notice of Disconnect >>>>> are intended to affect a graceful closure. >>>> >>>> Actually, this thread started with the text for the Unbind >operation, >>>> not Notice of Disconnection. >>> >>> I just noticed that the Notice of Disconnect section does not >>> include symmetric text to Unbind. As previously discussed, >>> it should (but updated per this discussion). >> >>Which discussion was that? It reached the opposite conclusion of mine >>just now. >> >>>> [Protocol] states that Notice of >>>> Disconnection should use abrupt closure, not graceful, when the >TLS >>>> layer is removed. It seems to say the same when the connection is >>>> closed for other reasons, but maybe I'm seeing too much in these >words. >>> >>> What I thought it meant was "In this circumstance, a server MAY >>> send the client a Notice of Disconnection before closing the >>> transport connection AFTER abruptly closing TLS." This makes no >>> sense as there is no way to re-establish PDU alignment after >>> an abrupt closure. >> >>There is no way to send anything after abrupt closure. >> >>> If instead it was meant, "In this circumstance, a server MAY >>> send the client a Notice of Disconnection before closing the >>> transport connection BEFORE abruptly closing TLS", this would >>> make little sense as that requires further use of TLS. >> >>It should be 'In the case of server initiating closure,...', but with >>that addition I don't see a problem with it. > >But this section is talking about abrupt closure. Not only >does it makes little to no sense to send a Notice of Disconnect >before an abrupt closure. > >>The connection may be compromised and the Notice may not reach the >client, >>but in most cases it probably will. > >If the connection is compromised, one should cease sending >additional TLS data (period). > >If the event is of a nature were abrupt closure is appropriate, >then the connection should be abruptly closed (no transmission >of any application-level (including PDUs, SASL cipher buffers, >or TLS frames) data. > >If the event is of a nature where graceful closure is appropriate, >then the implementation should gracefully close the LDAP session >in an orderly fashion. This should be initiated by queuing >an Unbind or Notice of Disconnect (depending on which peer is >initiating) for transfer, closing the queue, allowing the >queue to drain, allowing the SASL layer to drain (per the >SASL and the SASL mechanism specifications), allowing TLS layer >to drain (per the TLS and TLS ciphersuite specifications), >and then closing the transport connection (per the transport >protocol specification). It's noted that graceful closure >of the layers before the PDU layer may involve exchange >of data beyond that necessary to transfer the last LDAP >PDU. For instance, TCP requires a specific closure exchange. >These should not be skipped during graceful closure. > >Kurt |