Re: [Pppext] LCP echo request/reply support over multilink interface (RFC 1990)

Y Prasad <yprasad@juniper.net> Tue, 02 March 2010 09:15 UTC

Return-Path: <yprasad@juniper.net>
X-Original-To: pppext@core3.amsl.com
Delivered-To: pppext@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BC76B3A87F0 for <pppext@core3.amsl.com>; Tue, 2 Mar 2010 01:15:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.815
X-Spam-Level:
X-Spam-Status: No, score=-5.815 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, SARE_SUB_NEED_REPLY=0.784]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ipwh1vcsPLB5 for <pppext@core3.amsl.com>; Tue, 2 Mar 2010 01:15:28 -0800 (PST)
Received: from exprod7og117.obsmtp.com (exprod7og117.obsmtp.com [64.18.2.6]) by core3.amsl.com (Postfix) with ESMTP id 710173A8A7C for <pppext@ietf.org>; Tue, 2 Mar 2010 01:15:28 -0800 (PST)
Received: from source ([66.129.224.36]) (using TLSv1) by exprod7ob117.postini.com ([64.18.6.12]) with SMTP ID DSNKS4zXLoMbu9xWKm+4BkfKERbDOie/UADg@postini.com; Tue, 02 Mar 2010 01:15:29 PST
Received: from gaugeboson.jnpr.net (10.209.194.17) by P-EMHUB01-HQ.jnpr.net (172.24.192.35) with Microsoft SMTP Server id 8.1.393.1; Tue, 2 Mar 2010 01:12:22 -0800
x-mimeole: Produced By Microsoft Exchange V6.5
Content-Class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Tue, 2 Mar 2010 14:42:13 +0530
Message-ID: <0DB0FFEA6887E349861A3F6B40D71C3A0625BB90@gaugeboson.jnpr.net>
In-Reply-To: <4B83E77A.8050708@workingcode.com>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [Pppext] LCP echo request/reply support over multilink interface (RFC 1990)
Thread-Index: Acq0lVlC5LOXArofQ3Kp+j9ef5J1rQFToN0A
References: <0DB0FFEA6887E349861A3F6B40D71C3A054E3439@gaugeboson.jnpr.net> <4B83E77A.8050708@workingcode.com>
From: Y Prasad <yprasad@juniper.net>
To: James Carlson <carlsonj@workingcode.com>
Cc: pppext@ietf.org
Subject: Re: [Pppext] LCP echo request/reply support over multilink interface (RFC 1990)
X-BeenThere: pppext@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: PPP Extensions <pppext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/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: Tue, 02 Mar 2010 09:15:30 -0000

Thanks for the response, James.

I think there is a room for compliance issue with regard to LCP keelp
alives on the bundle.

RFC1990 page 5:
-------------
   LCP negotiations are not permitted on the bundle itself.  An
   implementation MUST NOT transmit LCP Configure-Request, -Reject,
   -Ack, -Nak, Terminate-Request or -Ack packets via the multilink
   procedure, and an implementation receiving them MUST silently discard
   them.  (By "silently discard" we mean to not generate any PPP packets
   in response; an implementation is free to generate a log entry
   registering the reception of the unexpected packet).  By contrast,
   other LCP packets having control functions not associated with
   changing the defaults for the bundle itself are permitted.  An
   implementation MAY transmit LCP Code-Reject, Protocol-Reject, Echo-
   Request, Echo-Reply and Discard-Request Packets.
--------------

It says LCP echo-req/reply on the bundle is optional. Assume that an
implementation sends LCP ECHO req. on the bundle and the remote chooses
not to reply (as it is optional) then sender would likely to drop the
bundle. Perhaps mentioning one of the following clauses help.

 1. Let the peer negotiate "LCP-echo req on the bundle" during LCP req
and subsequently send LCP echo req on the bundle only if it is accepted
by the remote peer.

OR

 2. Sending LCP ECHO-req on the bundle is option. But LCP ECHO-reply on
the bundle need to be mandatory.

First choice above would be more appropriate as there might be already
installations that would not send lcp-echoreply-on-the-bundle.

Regards
yp

-----Original Message-----
From: James Carlson [mailto:carlsonj@workingcode.com] 
Sent: Tuesday, February 23, 2010 8:05 PM
To: Y Prasad
Cc: pppext@ietf.org
Subject: Re: [Pppext] LCP echo request/reply support over multilink
interface (RFC 1990)

Y Prasad wrote:
> "Bundle interface is a virtual interface. If there has to be LCP keep
> alive on it, it has to go through one of the underlying physical
links.
> But LCP keep alive packet format does not seem to specify any
interface
> details. How does the remote identify that the LCP echo received on a
> physical link belongs to bundle?

If you run those non-negotiation LCP messages on the bundle, they may
need to be encapsulated using RFC 1990 fragment headers if you want to
segregate bundle and link level traffic.  You're not required to do
that, though.

In general, this is more of an implementation issue than anything else.
 For example, you need to inspect LCP Protocol-Reject messages to
deliver them properly.  If the rejected protocol is one of the few
per-link protocols, then it should be handled at the link level.  If
not, then it should be communicated upwards to the bundle head for
processing.

Some implementations will deliver LCP errors at the link level that are
targeting problems detected at the bundle level.  You must be prepared
to handle that.

In the case of LCP Echo Request, if you implement that only at the
bundle level, then you can send requests without encapsulation and
simply have all of the received LCP Echo Reply messages forwarded up to
the bundle head.  If you implement only at the link level, then process
them there, again without encapsulation.  In short, since you know how
you send your requests, you can decide how you want to process the
replies.  (And since implementing at both levels at the same time would
likely not serve much of a purpose, it would probably be wise to choose
one and stick with it.  I'd recommend link-level, as it's links that
usually run into trouble, but it's your code ...)

Note that packets sent at the bundle level are _not_ required to have MP
fragment headers.  Using those headers guarantees ordering and
reassembly where needed, but it's not a requirement -- either for
signaling messages or for user data.

The only special action needed to ensure interoperability is that when
an implementation receives a bare LCP Echo-Request, it must reply on the
same link.

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