Subject: Re: [L2tpext] [Pppext] Technical Request about a correct protocol behavior (RFC2661)

From: Ignacio Goyret <[email-masked]>
Date: Fri, 19 Feb 2016 19:52:48 -0800

I believe James reading is correct.

RFC2661 describes the reliable delivery in detail in section 5.8.

Unfortunately, 2661 and 3931 didn't make it crystal clear that
the reliable layer should operate as a logically independent layer [*]
from the rest of L2TP. Section 5.8 makes no mention of the special
case for M=0 on an unknown Message Type AVP because it doesn't apply
at the reliability layer.

With this in mind, it is easy to figure out the correct behavior,
as detailed by James.

For further questions, I suggest contacting the L2TPEXT WG mailing list.

-Ignacio

[*] It doesn't need to be 100% independent - it just needs to act
as if it were.

At 13:48 2/18/2016, James Carlson wrote:
>On 02/18/16 08:09, [email-masked] wrote:
>> Dear IETF colleagues,
>> 
>> we, at Deutsche Telekom Germany, have an urgent technical request
>> regarding behavior of LAC/LNS during L2TPv2 (RFC2661) protocol
>> communication. The question is not an errata report. We need only to
>> verify the MUST behavior of a LAC/LNS implementation on the basis
>> of the RFC2661.
>
>Although design of L2TP was started in the IETF PPPEXT working group,
>most of the original people involved have moved over to the L2TPEXT
>working group.  You may also wish to consult with them:
>
>https://datatracker.ietf.org/wg/l2tpext/charter/
>
>> It is needed to clarify a proper, standard-compliant behavior of
>> L2TP protocol implementations related to the following use case.
>> 
>> RFC 2661 (L2TPv2 standard):
>> 
>>       "The Mandatory (M) bit within the Message Type AVP has special
>>       meaning. Rather than an indication as to whether the AVP itself
>>       should be ignored if not recognized, it is an indication as to
>>       whether the control message itself should be ignored.
>>       If the M-bit is not set, then the implementation may ignore an unknown
>>       message type."  
>> 
>> According to the RFC2661 statement quoted above, an unknown non-mandatory (M=0)
>> control message received from the peer may be ignored. While ignoring that
>> unknown control message in our use case, the implementation does not send
>> ZLB-Ack also after several retransmissions of that control message by the peer.
>
>Although I agree that the text of the document is somewhat ambiguous, I
>don't believe that common sense supports reading it that way.
>
>L2TP is designed to operate on unreliable media, so simply omitting ZLB
>ACK sounds quite wrong to me.  There would be no way to recover from
>such an omission.
>
>My understanding is that when the Message Type AVP has M=0 and the type
>is unknown to the receiver, the receiver is expected to skip
>*processing* of that message -- including all of the AVPs contained in
>the message, and sending no new message in reply -- but then resume
>normal handling of the message stream, including any acknowledgement
>requirements.
>
>In other words, a sequence with multiple ignored (non-mandatory)
>messages might look like this:
>
>Peer A                Peer B
>SCCRQ ->
>Nr: 0, Ns: 0
>                   <- UNKNOWN1
>                      Nr: 1, Ns: 0
>ZLB ->
>Nr: 1, Ns: 1
>                   <- SCCRP
>                      Nr: 1, Ns: 1
>UNKNOWN2 ->
>Nr: 2, Ns: 1
>SCCN ->
>Nr: 2, Ns: 2
>                   <- ZLB
>                      Nr: 3, Ns: 2
>
>> Questions:
>> ---------
>> - If the implementation receives and ignores (without ZLB Acknowledgement) an
>>   unknown non-mandatory (M=0) control message, what should happen with the Nr
>>   counters in the implementation according to the RFC2661?
>
>This should not happen.  I argue that failing to send a proper ZLB when
>the transmission queue is empty is an error, and a system that does this
>is faulty.
>
>> - Should the local Nr counter be incremented in the implementation or not?
>
>Nr reflects the number of in-order messages received, regardless of
>whether or not those messages were understood.  So, yes.
>
>> - Should the peer's (sender's) Ns counter be incremented after several
>>   unacknowledged retransmissions of that control message or not?
>
>No, the Ns number is not incremented for retransmissions.  See B.2 in
>the spec.
>
>The sender should, in my estimation, retry multiple times and then
>terminate the connection.  Once the sender has determined that the
>recipient is broken, there's no need to send it any more packets.
>
>-- 
>James Carlson         42.703N 71.076W         <[email-masked]>
>
>_______________________________________________
>Pppext mailing list
>[email-masked]
>https://www.ietf.org/mailman/listinfo/pppext