[bmwg] draft-ietf-bmwg-network-tester-cfg-06 early Yangdoctors review

Andy Bierman via Datatracker <noreply@ietf.org> Sat, 27 September 2025 16:47 UTC

Return-Path: <noreply@ietf.org>
X-Original-To: bmwg@ietf.org
Delivered-To: bmwg@mail2.ietf.org
Received: from [10.244.8.182] (unknown [4.156.85.76]) by mail2.ietf.org (Postfix) with ESMTP id 50C1A69DEB25; Sat, 27 Sep 2025 09:47:19 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: Andy Bierman via Datatracker <noreply@ietf.org>
To: yang-doctors@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 12.50.0
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <175899163919.1968363.8054536713637113606@dt-datatracker-6c6cdf7f94-h6rnn>
Date: Sat, 27 Sep 2025 09:47:19 -0700
Message-ID-Hash: MXKIVXVPVV3TNXYELTZZ3WALG5YKDNOZ
X-Message-ID-Hash: MXKIVXVPVV3TNXYELTZZ3WALG5YKDNOZ
X-MailFrom: noreply@ietf.org
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-bmwg.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: bmwg@ietf.org, draft-ietf-bmwg-network-tester-cfg.all@ietf.org
X-Mailman-Version: 3.3.9rc6
Reply-To: Andy Bierman <andy@yumaworks.com>
Subject: [bmwg] draft-ietf-bmwg-network-tester-cfg-06 early Yangdoctors review
List-Id: "IETF Benchmarking Methodology Working Group (BMWG)" <bmwg.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/bmwg/ZKSmfxDCcv4SpzIVIVe5NywuFlY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/bmwg>
List-Help: <mailto:bmwg-request@ietf.org?subject=help>
List-Owner: <mailto:bmwg-owner@ietf.org>
List-Post: <mailto:bmwg@ietf.org>
List-Subscribe: <mailto:bmwg-join@ietf.org>
List-Unsubscribe: <mailto:bmwg-leave@ietf.org>

Document: draft-ietf-bmwg-network-tester-cfg
Title: A YANG Data Model for Network Tester Management
Reviewer: Andy Bierman
Review result: Not Ready



# General comments

- Could be a very useful YANG module. The 'augmented choice' approach
  allows for ongoing work improving the standard features.
  It is customary to provide guidelines and examples of
  a YANG module that would augment the base modules.

- Not yet clear enough to implementors how to code many leaves
  in each module. This applies to server developers and
  client developers configuring them.

- No XML or JSON examples of the data structures

- The detailed interaction between the analyzer or generator
  and the interface it augments is unclear.  There seems to be
  an assumption that the 'interface-type' is used to determine
  the details of the frames sent or received, but this is not defined.

  E.g. from idle-octets description:

         for example layer 1 framing octets - for Ethernet interfaces
         7+1 preamble octets per packet.";

- The interface-specific details are important to implement or use
  several objects where the frame contents are specified by the client.
  It seems for each testframe-filter identity and each interface-type,
  the processing will be different.

- No server capabilities provided wrt/ which interfaces
  support creation of a traffic-generator or traffic-analyzer
  container.

- Ad-hoc type for binary data is used instead of YANG 'binary' type.
  This should be binary but could be 'yang:hex-string' if Base16
  is really desired instead of Base64.

          type string {
            pattern '([0-9A-F]{2})*';
          }

- The 'units' should be specified for each leaf where
  uint32 or uint64 is the base type.

- Many configurable data nodes do not have any range definitions.
  This is OK because of the generic config objects, but
  not that interoperable.

- Reviews needed from NMOP WG for operator usability

- Reviews needed from OPSAREA WG regarding PCAPNG work


# ietf-traffic-generator@2024-10-21.yang

## grouping common-data

- leaf realtime-epoch: the name is confusing. Seems like 'start-time'
  would be more clear. What happens if the timestamp is in the past?

- what if both realtime-epoch and total-frames are both present?
  (assume AND-expression in this case but it should be clear).

## grouping burst-data

- The 'dynamic' testframe-type is not clear wrt/ impact on all
  data nodes in this grouping.  Definitions for Ethernet frames
  are spread out in the document.

-  leaf frame-data: seems very complex for implementors to
   figure out the exact usage, even for Ethernet.

-  leaf interframe-gap: not clear what units are being used

-  leaf interburst-gap: should be a complete description,
   not 'similar' reference to previous leaf.

## grouping modifier-data

-  Examples and use-cases should be included in the document
   how this feature works

-  It is unclear how the action (e.g., increment, decrement)
   is applied to the mask and offset.  How does a server
   increment only the masked bits?  This design is very complex.

-  leaf repetitions: this is very unclear and requires much more
   detailed documentation.

## augment "/if:interfaces/if:interface"

- container traffic-generator should be a presence container
  like the traffic-analyzer container.  This makes it clear
  to clients which interfaces have been configured. An NP container
  can be implemented different ways in the server, but not a
  presence container.


# ietf-traffic-analyzer@2024-10-21.yang

## identity bit-field-match

This is the only testframe-filter defined.
The description is unclear:

      "Bit field matching filter according to template data and mask.";

The term 'template' is not used anywhere else in the draft.
The filter operation is not really explained.
Details or a reference is needed.

## grouping statistics-data

- leaf pkts: description should be consistent.
  Missing 'since the analyzer was created'.

- leaf octets: not sure why text about RFC 8343 is there.
  This counter should be consistent with the pkts counter

- idle-octets: it is not clear what the units are here.
  It seems to be some unit of time, but the name suggests octets.

- container testframe-stats:
  It is not clear that these are the analyzed packets and the
  previous 3 counters are totals for the analyzer on that interface.

- leaf sequence-errors: Is there a reference or more specific
  description of this error condition?

- leaf payload-errors: Is there a reference or more specific
  description of this error condition?

- container latency: do the leaves in this container exist
  if ../pkts == 0?

- leaf latency/samples: ../testframe-stats is a container.
  Probably mean ../testframe-stats/pkts

- leaf last-sequence-error/expected: this type should be uint64
  not counter64

- leaf last-sequence-error/received: this type should be uint64
  not counter64

## grouping capture-config-data

- container capture: seems like this should be a presence container
  since it is configured by the client.

- choice start-trigger: It is not clear where 'frame index' is defined
  or testframe-index. The difference between these cases is
  not clear.  It is also customary to define a proper default case
  instead of using an ad-hoc description instead.


- choice stop-trigger: It is not clear how 'when-full' is
  different from the no-case-set condition.
  It is also customary to define a proper default case
  instead of using an ad-hoc description instead.

## grouping capture-data

- leaf capture/frame/data:  The 'nacm:default-deny-all' extension
  should be used here since this leaf exposes frame contents


##  augment "/if:interfaces/if:interface/ntta:traffic-analyzer/"
        + "ntta:testframe-filter" {

- mask and data leaves represent binary data, and should use
  binary or hex-string data types.

- The procedures for using this filter are not that clear.
  E.g. how these 2 fields are applied to test frames.