Re: Technical Request about a correct protocol behavior (RFC2661)

James Carlson <[email protected]> Thu, 18 Feb 2016 16:48:03 -0500
Newsgroups gmane.ietf.pppext
Message-ID <[email protected]>
On 02/18/16 08:09, [email protected] 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 protected]>

_______________________________________________
Pppext mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/pppext