Re: [Pppext] Proposal to solve ML-PPP ambiguity

James Carlson <carlsonj@workingcode.com> Thu, 26 May 2011 21:32 UTC

Return-Path: <carlsonj@workingcode.com>
X-Original-To: pppext@ietfa.amsl.com
Delivered-To: pppext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1D19EE0707 for <pppext@ietfa.amsl.com>; Thu, 26 May 2011 14:32:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.932
X-Spam-Level:
X-Spam-Status: No, score=-102.932 tagged_above=-999 required=5 tests=[AWL=-0.333, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id smvSK7VTqFwJ for <pppext@ietfa.amsl.com>; Thu, 26 May 2011 14:32:39 -0700 (PDT)
Received: from carlson.workingcode.com (carlsonj-pt.tunnel.tserv4.nyc4.ipv6.he.net [IPv6:2001:470:1f06:1d9::2]) by ietfa.amsl.com (Postfix) with ESMTP id 1CDD0E06E1 for <pppext@ietf.org>; Thu, 26 May 2011 14:32:38 -0700 (PDT)
Received: from [10.50.23.149] (gate.abinitio.com [65.170.40.132]) (authenticated bits=0) by carlson.workingcode.com (8.14.2+Sun/8.14.4) with ESMTP id p4QLWVCj012698 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 26 May 2011 17:32:31 -0400 (EDT)
Message-ID: <4DDEC6EF.5090205@workingcode.com>
Date: Thu, 26 May 2011 17:32:31 -0400
From: James Carlson <carlsonj@workingcode.com>
User-Agent: Thunderbird 2.0.0.22 (X11/20090605)
MIME-Version: 1.0
To: Vineet kumar Garg <vineet.garg@aricent.com>
References: <FB2AC9A039F0D949A4A071D39790302115E5B07F74@GUREXMB01.ASIAN.AD.ARICENT.COM>, <4DDE3A04.2020502@workingcode.com> <FB2AC9A039F0D949A4A071D39790302115E5B07F77@GUREXMB01.ASIAN.AD.ARICENT.COM>
In-Reply-To: <FB2AC9A039F0D949A4A071D39790302115E5B07F77@GUREXMB01.ASIAN.AD.ARICENT.COM>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: 7bit
X-DCC-Misty-Metrics: carlson; whitelist
Cc: "pppext@ietf.org" <pppext@ietf.org>
Subject: Re: [Pppext] Proposal to solve ML-PPP ambiguity
X-BeenThere: pppext@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: PPP Extensions <pppext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/pppext>, <mailto:pppext-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/pppext>
List-Post: <mailto:pppext@ietf.org>
List-Help: <mailto:pppext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/pppext>, <mailto:pppext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 26 May 2011 21:32:40 -0000

Vineet kumar Garg wrote:
> Hi James
> 
> Thanks for your inputs on this. Really appreciate.
> 
> I agree with your point that the situation mentioned below is an error case and should be ok to not bring up the links in case of mismatch.
> 
> You have explained how one of the possible solutions in such situation would work. thats fine. But the solution described is not mentioned in the standard (as far as I know) leading to ambiguity in implementation with a possiblity of inter-operablity problems when two different approaches are chosen to solve the problem at hand. IMHO, it will be nice if the best approach is documented in the RFC so as to remove the ambiguity.

If someone is interested in writing a new document that resolves
problems that have been seen in the existing document -- and that
doesn't create new ones -- that's certainly fine by me.  Have at it.

For what it's worth, although I agree that an implementor's guide might
be helpful, I'm not so sure that this is something that needs to be
covered by the existing document.  The existing text makes it clear that
if you want to use the Short Sequence Number Header Format Option, you
have to include it on all links:

   configure-Reject the option.  If 12 bit sequence numbers are desired,
   this option MUST be negotiated when the bundle is instantiated, and
   MUST be explicitly included in every LCP configure request offered by
   a system when the system intends to include that link in an existing
   bundle using 12 bit sequence numbers.  If this option is never
   negotiated during the life of a bundle, sequence numbers are 24 bits
   long.

When a peer walks off the end of a "MUST," you're within your rights to
do anything reasonable to resolve the problem.  Often, the most
"reasonable" answer is to drop the link and report an error, rather than
continue talking to an obviously broken peer.  Of course, some
implementors may just ignore the problem and drive on.  Your results may
vary substantially.  Not all implementations are equal in quality.

> Another perspective of this could be using the latest negotiated option for the bundle since the peer may have informed of a change in parameter (say short seq number) at only one of the links in the bundle. I don't think RFC requires a system to re-negotiate all its links if any of the bundle level parameters change.

The text above makes it clear that if you want 12-bit sequence numbers,
you have to ask for them when the bundle is created, and you have to ask
for them on every link that will join the bundle.  And if you want
24-bit sequence numbers, you must never ask for the option on any of the
links in the bundle.

Because this option needs to be the same on all of the links in the
bundle, the only reasonable solution I can see for changing this
parameter would be to bring down the bundle head.  To do that, you have
to at least restart negotiation of LCP on all of the links or take the
links down.

But I'm unclear on what the point might be.  Why would you ever want to
do this?  Sequence number size is basically a function of the relative
link speed, available buffering, and tolerable timing skew among the
links.  If you don't know that 12-bit sequence numbers are safe for your
application, don't use them.  I don't think it's a flag that would make
sense for users to flip on and off at random.

> Basically this is the ambiguity because of which I suggested about using a separate negotiation leg for all the bundle level parameters. Maybe it does not make a lot of sense making this big a change for an error scenario, but it will lead to better and more clear designs and might hopefully have better use cases in future.

RFC 1990 has remained unchanged (and in widespread use) since 1996.  Are
you certain that making a fundamental change to the way it is negotiated
will bring benefits that are worth the incompatibilities it will cause?

If so, then I would insist on seeing those "use cases" documented
clearly now, and the compatibility issues described in detail.  Changing
an established protocol is not a matter of "if you build it, they will
come."  It has to be done only after all the reasonable alternatives
have been exhausted.

> One more ambiguity in the protocol that I think can be clarified in RFC is use of IPCP (or any other NCP) over a MC/ML-PPP bundle. Doesn't it make more sense to use only IPCP over NCP when using ML-PPP to resolve the issue of which member link to be used for IPCP?

I don't think I understand the question.

Once a link joins a bundle, all NCP messages (with some minor exceptions
-- the per-link variants of ECP and CCP) are always processed at the
bundle head, regardless of encapsulation.  This is in section 2 of RFC 1990:

   fragmentation header.  All packets received over links identified as
   belonging to the multilink arrangement are presented to the same
   network-layer protocol processing machine, whether they have
   multilink headers or not.

In other words, with MP you have only a single IPCP instance, regardless
of how many links the bundle may have, regardless of which link sends
the IPCP negotiation messages, and regardless of whether MP headers are
used on those messages.  You don't get to run a separate instance of
IPCP down at the per-link level with MP!

Perhaps what you're saying is that you'd like to dedicate one link
within a bundle to carry only a single protocol.  Provided that you
follow the sequence numbering rules in section 4.1, or you send all of
those messages without MP headers, you're free to make the links
unbalanced in any way you choose.  The RFC is intentionally silent on
that point; if you do this, it's up to you (the implementor) to decide
how you want it to behave.

There's no defined negotiation mechanism in MP that will allow you to
determine non-uniform use of the links in the bundle.  I would suggest
that the easiest way to do this (if it's a requirement for your
situation) would be to do it by prior arrangement.  In other words, have
a special configuration knob in your implementation.  If negotiation is
required, then I think a substantial amount of background information on
the application and the requirements will be needed -- so write a draft.

-- 
James Carlson         42.703N 71.076W         <carlsonj@workingcode.com>