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

James Carlson <carlsonj@workingcode.com> Thu, 26 May 2011 11:31 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 A15F913002F for <pppext@ietfa.amsl.com>; Thu, 26 May 2011 04:31:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.599
X-Spam-Level:
X-Spam-Status: No, score=-102.599 tagged_above=-999 required=5 tests=[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 GZxcD5J668iu for <pppext@ietfa.amsl.com>; Thu, 26 May 2011 04:31:36 -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 D73C013001F for <pppext@ietf.org>; Thu, 26 May 2011 04:31:35 -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 p4QBVGsW003279 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 26 May 2011 07:31:28 -0400 (EDT)
Message-ID: <4DDE3A04.2020502@workingcode.com>
Date: Thu, 26 May 2011 07:31:16 -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>
In-Reply-To: <FB2AC9A039F0D949A4A071D39790302115E5B07F74@GUREXMB01.ASIAN.AD.ARICENT.COM>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: 8bit
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 11:31:36 -0000

Vineet kumar Garg wrote:
> Hi All
> 
> While working with ML-PPP over some time, I have come across some problems which I think should be solved at the protocol level. Please review the abstract below and let me know your valuable opinions:
> 
> As per existing RFC, following are the key characteristics of LCP negotiation for multi-link parameters:
> 
> •       MRRU option is considered as mandatory option for a link to join a MC/ML-PPP bundle
> •       Endpoint discriminator is optional and can be used to identify different PPP peers
> •       Short-sequence number as an option is negotiated as part of LCP although same value has to be negotiated on all the links
> 
>         Problem that current protocol creates is that it allows a scope for bundle level parameters to be negotiated with different values on different links. This leads to an implementation ambiguity about which values to be chosen for the bundle. Some of the ways applications can implement this choice are:
>                                         - Choose the negotiated value from the latest link that came
>                                         - Choose the first value that was negotiated
>                                         - Choose the one matching operator configuration etc.
> 
> Is there already a solution to this problem as part of protocol that I am missing?

At the point where LCP is negotiated, it is not necessarily yet known to
which bundle the new link belongs.  You ordinarily have to wait for
Authentication to complete.  Thus, the negotiation of those low-level
options needs to be separate.

I think the solution is straightforward.  When you create a new bundle
head, you use the LCP options that were negotiated on that single link.

When attempting to join a new link to an existing bundle (because
authenticated peer names and E-Ds match), check the options on the new
link.  If they match the ones on the bundle, then join up.  If they
don't, then signal an error and terminate the new link.

Since this is a "should never happen" case, it's not really something to
worry about.  Bundles are not just established out of the blue; they're
established between cooperating systems.  If you have one line
configured to use short sequence numbers and the other not, then you've
misconfigured your systems, and having those systems report errors and
fail to establish the bundle is the best result.

> -> Proposed solution
> 
>           Since the bundle level parameters like MRRU & sequence number length are applicable to all bundles in a link, it is better to negotiate them like an NCP after LCP has already been done. So, like other NCP protocols, there can be a new protocol called ML-CP which will configure all bundle level parameters for all the links in the bundle. This will remove the ambiguity about choosing the values of bundle level parameters and also prevent different values being negotiated for same parameter in case of some mis-configuration.
> 
>           However, still there is a need to have some parameter in LCP which determines the bundle association of a link. In order to do that we can use endpoint discriminator as a mandatory option in LCP for links which want to join a bundle.
> 
> Maintaining backward compatibility with existing implementations might be a challenge, however in this case. However, that can be resolved by including a simple version number option in LCP.

I don't think a new NCP is necessary.  The current mechanism (checking
parameter compatibility when joining links to an existing bundle) seems
to work well enough.

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