Re: [lmap] Comments on draft-ietf-lmap-information-model-18 and draft-ietf-lmap-yang-12

Juergen Schoenwaelder <> Wed, 03 May 2017 10:27 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 1761D1201F8 for <>; Wed, 3 May 2017 03:27:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: 0.663
X-Spam-Status: No, score=0.663 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, RP_MATCHES_RCVD=-0.001, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YbIQOqTqdwMQ for <>; Wed, 3 May 2017 03:26:59 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id DC7E5126E01 for <>; Wed, 3 May 2017 03:24:09 -0700 (PDT)
Received: from localhost ( []) by (Postfix) with ESMTP id A457677; Wed, 3 May 2017 12:24:08 +0200 (CEST)
X-Virus-Scanned: amavisd-new at
Received: from ([]) by localhost ( []) (amavisd-new, port 10032) with ESMTP id A0Ju6xKbF2Zd; Wed, 3 May 2017 12:24:08 +0200 (CEST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "", Issuer "Jacobs University CA - G01" (verified OK)) by (Postfix) with ESMTPS; Wed, 3 May 2017 12:24:08 +0200 (CEST)
Received: from localhost ( []) by (Postfix) with ESMTP id 8262A2005E; Wed, 3 May 2017 12:24:08 +0200 (CEST)
X-Virus-Scanned: amavisd-new at
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id arsO-wwwva5d; Wed, 3 May 2017 12:24:07 +0200 (CEST)
Received: from elstar.local ( []) by (Postfix) with ESMTP id 7444B20053; Wed, 3 May 2017 12:24:07 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 15BB83F36526; Wed, 3 May 2017 12:24:06 +0200 (CEST)
Date: Wed, 3 May 2017 12:24:06 +0200
From: Juergen Schoenwaelder <>
To: Fredrik Kers <>
Message-ID: <20170503102406.GC6642@elstar.local>
Reply-To: Juergen Schoenwaelder <>
Mail-Followup-To: Fredrik Kers <>,
References: <>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
User-Agent: Mutt/1.6.0 (2016-04-01)
Archived-At: <>
Subject: Re: [lmap] Comments on draft-ietf-lmap-information-model-18 and draft-ietf-lmap-yang-12
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Large Scale Measurement of Access network Performance <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 03 May 2017 10:27:01 -0000

On Wed, May 03, 2017 at 11:50:34AM +0200, Fredrik Kers wrote:
> Hi!
> I'm looking at aligning a project with the LMAP data model (
> and YANG
> model ( and have some
> questions and comments.

Note that the two documents have just been moved to the RFC editor
queue (after ~3 years of development within the WG). While comments
and questions are welcome, there likely won't be any technical changes
> First, some comments on the information model.
> 1)
> Normally a task in computer terms means a process or a "unit of execution"
> as it is described on Wikipedia (
>, while in LMAP it means a
> program/executable, or a function in more abstract terms. I was confused
> for quite some time until I understood that a task in LMAP actually meant.
> I would suggest using a more common terminology, but I understand that it
> might be a bit too late to change the name of such a central concept.

I do not think task necessarily means executable in LMAP. The term
task is used in order to stay away to some extend from implementation

> 2)
> The information model describes the concept of Measurement Task, Reporting
> Task, Control Task, etc. (
> and that Control Tasks can be used to configure the Schedules, Tasks etc.
> on the MA. However it's not described what mechanism a Control Task uses to
> configure the MA. The normal task input/output model only describes how
> data flows between instances of tasks and schedules, but does not give any
> way to communicate with the MA itself. How is this supposed to work?

It is (a) not required to implement things via control tasks and (b)
how control tasks do their work is and implementation detail.

> 3)
> Related to this the Control Tasks, the information model in one place
> states that "in terms of the Information Model, all Tasks have the same
> structure", but in another place states that "Suppression has no effect on
> either Controller Tasks or Controller Schedules".
> So the question is, is a Control Task (and Schedule) handled differently by
> the MA compared to other types of Tasks (and Schedules)?

In this particular aspect, they may be handled differently. If you,
for example, implement an LMAP agent running behind a NAT, then there
needs to be something that calls home to the controller. This
something might be implemented as a control task or it might be
implemented as part of the LMAP agent itself. If this would be
implemented as a control task, then attempts to suppress call home
would likely be rejected (since this would essentially mean the LMAP
agent becomes disconnected and hence useless). There may be additional
control tasks, e.g., a control task that clears buffered data in case
an LMAP agent is running low on memory. Again, an implementation may
not support suppression of such a house keeping control task.
> And now some comments on the YANG model.
> 4)
> In the YANG model, a task can be listed in three places;
> /lmap/capabilities/tasks/task, /lmap/tasks/task and
> /lmap/schedules/schedule/action/task. Let's see if I understand this
> correctly...
> * /lmap/capabilities/tasks/task lists the available tasks that the MA can
> execute, which is not configurable from a controller but is configured
> locally at the MA, for example in a config file or even at compile time.
> * /lmap/tasks/task is the tasks that has been configured with some default
> options and are available to be executed.
> * /lmap/schedules/schedule/action/task pints at what task to start when an
> action is fired, and provides additional options to it.

> To me it's not clear why the middle step (/lmap/tasks/task) is required
> since all the properties at that level (options and tags) can also be
> configured in the action, except the functions list which seems weird to be
> able to configure anyways (see next comment).

The 'middle step' is an optimization for situations when you have many
actions that want to share common task parameters.

> 5)
> In /lmap/tasks/task you can configure a list of functions for a task, which
> might or might not be the same functions listed in
> /lmap/capabilities/tasks/task. The purpose of this functions lists is not
> crystal clear to me, but it seems wrong that you can configure functions
> that are not included in the capabilities.

I assume an implementation would reject an attempt to configure a
function that does not apply. What is your proposal? To have this
spelled out more clearly in the YANG model? To have some sort of a
must constraint to express this? (I would have to think about how to
write this.)

> 6)
> To keep the structure of the YANG model consistent all lists should be
> wrapped in a container, e.g. move /lmap/schedules/schedule/action to
> /lmap/schedules/schedule/actions/action. Other lists that would be affected
> are "function", "option", "result", "conflict", "table" and "row". Is there
> a reason for the different structure of some lists?

YANG generally does not have nodes representing lists and some people
believe such additional containers just add additional noise to the
data encodings with little value.

The reason why we have the top-level containers is because people
found it useful to have some top-level structure (similar to the way
we have structured the information model into several aspects); so
these top-levels provide structure, they do not represent lists. For
example, /lmap/agent is just a container for scalars and
/lmap/capabilities is a container with scalars and a list.


Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <>