Subject: Re: [Teas] IETF TE Topology YANG Model Design Meeting Notes - 2017-06-07

From: Xufeng Liu <[email-masked]>
Date: Thu, 8 Jun 2017 01:28:04 +0000

Attendees: Pavan, Igor, Xufeng, Sergio, Carlo, Tarek, Dieter

- Discussed the YANG doctor's review comments
  > Examined the use of "presence" containers in the topology model
    o "te"
      Indicates that TE is enabled;
      Used as augmentation container to prevent mandatory child from affecting augmented base model.

    o "underlay"
      1)
               +--rw underlay! {te-topology-hierarchy}?
               |  +--rw primary-path
               |  |  +--rw network-ref?    leafref
      2)
               +--rw underlay {te-topology-hierarchy}?
                            rw enabled?           boolean (default true)
               |  +--rw primary-path
               |  |  +--rw network-ref?    leafref

      Option 2) has been agreed on. Will change the model.

    o "statistics"
      Keep as is (not use "presence")

      +--ro statistics
      |  +--ro discontinuity-time           yang:date-and-time
      |  +--ro node

      {
      "statistics": {
        "discontinuity-time": "2017-01-01",
               },
      }

      {
      "statistics": {
        "discontinuity-time": "2017-01-01",
               },
               "in-octets": 1000,
      }

  > To make the terminology consistent: "TE Topology Model" vs. "Generic TE Topology Model".
    o Will adjust Figure 12 and Figure 13.

- Discussed some type sharing with TE tunnel model
  > path-properties
   o Tarek will move the grouping to te-types
   o The groupings are still being discussed during the weekly TE tunnel discussion meetings.
   o The current status is:
     (lines marked with '?' need to be discussed)

augment /nw:networks/nw:network/nw:node:
   +--rw te!
      +--rw config
      |  +--rw te-node-attributes
      |     +--rw connectivity-matrices
      |     |  +--rw number-of-entries?         uint16
      |     |  +--rw label-restriction* [inclusive-exclusive label-start]
      |     |  +--rw is-allowed?                boolean
      |     |  +--rw underlay! {te-topology-hierarchy}?
-      |     |  +--rw max-lsp-bandwidth* [priority]
-      |     |  +--rw max-link-bandwidth?        te-types:te-bandwidth
-      |     |  +--rw max-resv-link-bandwidth?   te-types:te-bandwidth
-      |     |  +--rw unreserved-bandwidth* [priority]
-      |     |  +--rw te-default-metric?         uint32
-      |     |  +--rw te-delay-metric?           uint32
-      |     |  +--rw te-srlgs
-      |     |  |  +--rw value*   te-types:srlg
-      |     |  +--rw te-nsrlgs {nsrlg}?
-      |     |  |  +--rw id*   uint32

===============
+      |        +--rw path-metric-bounds
+      |        |  +--rw path-metric-bound* [metric-type]
+      |        |     +--rw metric-type    leafref
+      |        |     +--rw config
+      |        |     |  +--rw metric-type?   identityref
+      |        |     |  +--rw upper-bound?   uint64
?      |        |     +--ro state
?      |        |        +--ro metric-type?   identityref
?      |        |        +--ro upper-bound?   uint64
+      |        +--rw config
?      |        |  +--rw name?                string
?      |        |  +--rw topology-id?         te-types:te-topology-id
+      |        |  +--rw ignore-overload?     boolean
+      |        |  +--rw bandwidth-generic?   te-types:te-bandwidth
+      |        |  +--rw disjointness?        te-types:te-path-disjointness
+      |        |  +--rw setup-priority?      uint8
+      |        |  +--rw hold-priority?       uint8
+      |        |  +--rw signaling-type?      identityref
+      |        |  +--rw path-affinities
+      |        |  |  +--rw (style)?
+      |        |  |     +--:(values)
+      |        |  |     |  +--rw value?         uint32
+      |        |  |     |  +--rw mask?          uint32
?      |        |  |     +--:(named)
?      |        |  |        +--rw constraints* [usage]
?      |        |  |           +--rw usage         identityref
?      |        |  |           +--rw constraint
?      |        |  |              +--rw affinity-names* [name]
?      |        |  |                 +--rw name    string
+      |        |  +--rw path-srlgs
+      |        |     +--rw (style)?
+      |        |        +--:(values)
+      |        |        |  +--rw usage?         identityref
+      |        |        |  +--rw values*        te-types:srlg
?      |        |        +--:(named)
?      |        |           +--rw constraints* [usage]
?      |        |              +--rw usage         identityref
?      |        |              +--rw constraint
?      |        |                 +--rw srlg-names* [name]
?      |        |                    +--rw name    string

+      |        +--rw optimizations
+      |        |  +--rw optimization-metric* [metric-type]
+      |        |     +--rw metric-type    leafref
+      |        |     +--rw config
+      |        |     |  +--rw metric-type?   identityref
+      |        |     |  +--rw weight?        uint8
?      |        |     +--ro state
?      |        |        +--ro metric-type?   identityref
?      |        |        +--ro weight?        uint8
+      |        +--rw path-objective-function
+      |        |  +--rw config
+      |        |  |  +--rw objective-function-type?   identityref
+      |        |  +--ro state
+      |        |     +--ro objective-function-type?   identityref
+      |        +--rw tiebreakers
+      |           +--rw tiebreaker* [tiebreaker-type]
+      |              +--rw tiebreaker-type    leafref
+      |              +--rw config
+      |              |  +--rw tiebreaker-type?   identityref
+      |              +--ro state
+      |                 +--ro tiebreaker-type?   identityref

==========
      |     |  +--rw connectivity-matrix* [id]
      |     |     +--rw id                         uint32
      |     |     +--rw from
      |     |     |  +--rw tp-ref?              leafref
      |     |     +--rw to
      |     |     |  +--rw tp-ref?              leafref
      |     |     +--rw is-allowed?                boolean
      |     |     +--rw underlay! {te-topology-hierarchy}?
      |     |     +--rw max-lsp-bandwidth* [priority]
     |     |     +--rw max-link-bandwidth?        te-types:te-bandwidth
      |     |     +--rw max-resv-link-bandwidth?   te-types:te-bandwidth
      |     |     +--rw unreserved-bandwidth* [priority]
      |     |     +--rw te-default-metric?         uint32
      |     |     +--rw te-delay-metric?           uint32
      |     |     +--rw te-srlgs
      |     |     |  +--rw value*   te-types:srlg
      |     |     +--rw te-nsrlgs {nsrlg}?
      |     |        +--rw id*   uint32
      +--ro state
      |  +--ro te-node-template*           leafref {template}?
      |  +--ro te-node-attributes
      |  |  +--ro admin-status?            te-types:te-admin-status
      |  |  +--ro connectivity-matrices
      |  |  |  +--ro number-of-entries?         uint16
      |  |  |  +--ro label-restriction* [inclusive-exclusive label-start]
      |  |  |  +--ro is-allowed?                boolean
      |  |  |  +--ro underlay! {te-topology-hierarchy}?
      |  |  |  +--ro max-lsp-bandwidth* [priority]
      |  |  |  +--ro max-link-bandwidth?        te-types:te-bandwidth
      |  |  |  +--ro max-resv-link-bandwidth?   te-types:te-bandwidth
      |  |  |  +--ro unreserved-bandwidth* [priority]
      |  |  |  +--ro te-default-metric?         uint32
      |  |  |  +--ro te-delay-metric?           uint32
      |  |  |  +--ro te-srlgs
      |  |  |  |  +--ro value*   te-types:srlg
      |  |  |  +--ro te-nsrlgs {nsrlg}?
      |  |  |  |  +--ro id*   uint32
      |  |  |  +--ro connectivity-matrix* [id]
      |  |  |     +--ro id                         uint32
      |  |  |     +--ro from
      |  |  |     |  +--ro tp-ref?              leafref
      |  |  |     +--ro to
      |  |  |     |  +--ro tp-ref?              leafref
      |  |  |     +--ro is-allowed?                boolean
      |  |  |     +--ro underlay! {te-topology-hierarchy}?
-      |  |  |     +--ro max-lsp-bandwidth* [priority]
-      |  |  |     +--ro max-link-bandwidth?        te-types:te-bandwidth
-      |  |  |     +--ro max-resv-link-bandwidth?   te-types:te-bandwidth
-      |  |  |     +--ro unreserved-bandwidth* [priority]
-      |  |  |     +--ro te-default-metric?         uint32
-      |  |  |     +--ro te-delay-metric?           uint32
-      |  |  |     +--ro te-srlgs
-      |  |  |     |  +--ro value*   te-types:srlg
-      |  |  |     +--ro te-nsrlgs {nsrlg}?
-      |  |  |        +--ro id*   uint32

+      |  |  |     +--ro computed-path-properties
+      |  |  |     |  +--ro path-metric* [metric-type]
+      |  |  |     |  |  +--ro metric-type           identityref
+      |  |  |     |  |  +--ro accumulative-value?   uint64
+      |  |  |     |  +--ro path-affinities
+      |  |  |     |  |  +--ro (style)?
+      |  |  |     |  |     +--:(values)
+      |  |  |     |  |     |  +--ro value?         uint32
+      |  |  |     |  |     |  +--ro mask?          uint32
?      |  |  |     |  |     +--:(named)
?      |  |  |     |  |        +--ro constraints* [usage]
?      |  |  |     |  |           +--ro usage         identityref
?      |  |  |     |  |           +--ro constraint
?      |  |  |     |  |              +--ro affinity-names* [name]
+      |  |  |     |  |                 +--ro name    string
+      |  |  |     |  +--ro path-srlgs
+      |  |  |     |  |  +--ro (style)?
+      |  |  |     |  |     +--:(values)
+      |  |  |     |  |     |  +--ro usage?         identityref
+      |  |  |     |  |     |  +--ro values*        te-types:srlg
?      |  |  |     |  |     +--:(named)
?      |  |  |     |  |        +--ro constraints* [usage]
?      |  |  |     |  |           +--ro usage         identityref
?      |  |  |     |  |           +--ro constraint
?      |  |  |     |  |              +--ro srlg-names* [name]
?      |  |  |     |  |                 +--ro name    string
+      |  |  |     |  +--ro path-computed-route-objects
+      |  |  |     |     +--ro path-computed-route-object* [index]
+      |  |  |     |        +--ro index             uint32
+      |  |  |     |        +--ro (type)?
+      |  |  |     |           +--:(numbered)
+      |  |  |     |           |  +--ro numbered-hop
+      |  |  |     |           |     +--ro address?    te-types:te-tp-id
+      |  |  |     |           |     +--ro hop-type?   te-hop-type
+      |  |  |     |           +--:(as-number)
+      |  |  |     |           |  +--ro as-number-hop
+      |  |  |     |           |     +--ro as-number?   binary
+      |  |  |     |           |     +--ro hop-type?    te-hop-type
+      |  |  |     |           +--:(unnumbered)
+      |  |  |     |           |  +--ro unnumbered-hop
+      |  |  |     |           |     +--ro node-id?      te-types:te-node-id
+      |  |  |     |           |     +--ro link-tp-id?   te-types:te-tp-id
+      |  |  |     |           |     +--ro hop-type?     te-hop-type
+      |  |  |     |           +--:(label)
+      |  |  |     |           |  +--ro label-hop
+      |  |  |     |           |     +--ro value?   rt-types:generalized-label
+      |  |  |     |           +--:(sid)
+      |  |  |     |              +--ro sid-hop
+      |  |  |     |                 +--ro sid?   rt-types:generalized-label

Thanks,

- Xufeng

Note: Please drop me an email if you need an invite for joining the weekly call.