Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Layer1-types WG LC] ODUflex #56

Closed
italobusi opened this issue Jan 23, 2020 · 10 comments
Closed

[Layer1-types WG LC] ODUflex #56

italobusi opened this issue Jan 23, 2020 · 10 comments
Assignees
Labels
enhancement New feature or request

Comments

@italobusi
Copy link
Collaborator

The support of ODUflex in layer1-types needs to be enhanced:

  1. In order to setup an ODUflex LSP, additional information should be added to the otn-path-bandwidth grouping to indicate the ODUflex bit rate (e.g., 3 Gb/s) and which TS allocation rule to use (section 5.1 or section 5.2 of RFC7139)

  2. In order to support path computation for an ODUflex LSP, additional information should be added to the otn-link-bandwidth grouping to report the maximum ODUflex rate supported.
    For example, on free OTU4 Link, it is possible to setup an ODUflex with any rate up to 100 Gb/s but, after a 3Gb/s ODUflex is setup, it would be possible to setup other ODUflex with any rate up to 97 Gb/s.

  3. There are four ODUflex types in Table 7-2 of ITU-T G.709: CBR, GFP-F, IMP and FlexE-aware and three types in RFC7139: CBR, GFP-F non-resizable and GFP-F resizable. The definitions of the ODUflex identities should be revisited after the otn-path-bandwidth and the otn-link-bandwidth groupings have been updated

  4. Editorial c/ODUFlex/ODUflex/

@italobusi italobusi added the enhancement New feature or request label Jan 23, 2020
@italobusi italobusi added this to the Layer1-types WG LC milestone Jan 23, 2020
@italobusi
Copy link
Collaborator Author

italobusi commented Feb 12, 2020

2020-02-12 Haomian/Italo

Regarding point 1, this could be a possible solution (aligned with G.709 Ed.06 just consented):

augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth
          /te:technology:
  +--:(otn)
     +--rw odu-type?   identityref
     +--rw (oduflex-type)?
        +--:(cbr)
        |  +--rw client-type       identityref      // should check it is the same in client-signal model
        +--:(gfp)
        |  +--rw oduflex-gfp-n     uint8 (1..80)    // n of ODUflex(GFP, n, k)
        |  +--rw oduflex-gfp-k?    enum             // k of ODUflex(GFP, n, k) need to be supported with v6 (k=2, 3, 4)
        +--:(imp)
        |  +--rw oduflex-imp-s     uint16           // s of ODUflex(IMP, s)
        +--:(flexe)
        |  +--rw oduflex-flexe-n   uint16           // n of ODUflex(FlexE-aware)
        +--:(packet)
           +--rw oduflex-rate      uint16           // in Gbit/s

@haomianzheng : update the YANG model (evaluate the must/when statements to be added). Please consider the updated YANG tree proposal: #56 (comment)

@italobusi : propose some text for the draft to explain the solution

@italobusi
Copy link
Collaborator Author

italobusi commented Feb 12, 2020

2020-02-12 Haomian/Italo

Regarding point 2, the ODUflex bandwidth availability can be inferred from the available TS information. No need to change the YANG model.

@italobusi : propose some text for the draft to explain the solution

@italobusi
Copy link
Collaborator Author

2020-02-12 Haomian/Italo

Regarding points 3 and 4: there is no need to differentiate between CBR, GFP-F, IMP and FlexE-aware ODUflex types. However, there is a need to differentiate between resizable and non-resizable ODUflex.

It is therefore proposed to define two odu-types identities: ODUflex and ODUflex-resizable. The ODUflex-resizable can only be used with GFP mapping.

This should be taken into account in the when/must statements to be defined as per comment #56 (comment)

@haomianzheng : update the YANG model

@italobusi : propose some text for the draft to explain the solution

@italobusi
Copy link
Collaborator Author

italobusi commented Feb 13, 2020

Updated YANG tree proposal:

augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth
          /te:technology:
  +--:(otn)
     +--rw odu-type?   identityref
     +--rw (oduflex-type)?
        +--:(generic)
        |  +--rw rate-multiplier   uint16
        |  +--rw rate-divider      uint16
        |  +--rw rate              uint64
        +--:(cbr)
        |  +--rw client-type       identityref      // should check it is the same in client-signal model
        +--:(gfp)
        |  +--rw gfp-n             uint8 (1..80)    // n of ODUflex(GFP, n, k)
        |  +--rw gfp-k?            enum             // k of ODUflex(GFP, n, k) need to be supported with v6 (k=2, 3, 4)
        +--:(flexe-client)
        |  +--rw flexe-client      union(enum (10G, 40G), uint16)    // ODUflex(IMP, s): 10G (s=2); 40G (s=8); n (s=5*n, when mapping n*25G FlexEC)
        +--:(flexe-aware)
        |  +--rw flexe-aware-n     uint16           // n of ODUflex(FlexE-aware)
        +--:(packet)
           +--rw packet-rate       uint16           // in Gbit/s

Proposal updated on 2020-02-24: #56 (comment)

haomianzheng added a commit that referenced this issue Feb 24, 2020
This version updated the above editorial comments, solves the issues #50, #54, #57, #58. 
Issues still open on: #49, #55, #56.
@italobusi
Copy link
Collaborator Author

2020-02-24 Updated YANG tree proposal:

augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth
          /te:technology:
  +--:(otn)
     +--rw odu-type?   identityref
     +--rw (oduflex-type)?
        +--:(generic)
        |  +--rw nominal-bit-rate            uint64 // in bit/s
        +--:(cbr)
        |  +--rw client-type       identityref      // should check it is the same in client-signal model
        +--:(gfp-n-k)
        |  +--rw gfp-n             uint8 (1..80)    // n of ODUflex(GFP, n, k)
        |  +--rw gfp-k?            enum             // k of ODUflex(GFP, n, k) need to be supported with v6 (k=2, 3, 4)
        +--:(flexe-client)
        |  +--rw flexe-client      union(enum (10G, 40G), uint16)    // ODUflex(IMP, s): 10G (s=2); 40G (s=8); n (s=5*n, when mapping n*25G FlexEC)
        +--:(flexe-aware)
        |  +--rw flexe-aware-n     uint16           // n of ODUflex(FlexE-aware)
        +--:(packet)     // both GFP-F and IMP
           +--rw opuflex-payload-rate       uint64           // in Kbit/s

@italobusi italobusi linked a pull request Feb 24, 2020 that will close this issue
@haomianzheng
Copy link
Owner

haomianzheng commented Feb 25, 2020

2020-02-24 Updated YANG tree proposal:

augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth
          /te:technology:
  +--:(otn)
     +--rw odu-type?   identityref
     +--rw (oduflex-type)?
        +--:(generic)
        |  +--rw nominal-bit-rate            uint64 // in bit/s
        +--:(cbr)
        |  +--rw client-type       identityref      // should check it is the same in client-signal model
        +--:(gfp-n-k)
        |  +--rw gfp-n             uint8 (1..80)    // n of ODUflex(GFP, n, k)
        |  +--rw gfp-k?            enum             // k of ODUflex(GFP, n, k) need to be supported with v6 (k=2, 3, 4)
        +--:(flexe-client)
        |  +--rw flexe-client      union(enum (10G, 40G), uint16)    // ODUflex(IMP, s): 10G (s=2); 40G (s=8); n (s=5*n, when mapping n*25G FlexEC)
        +--:(flexe-aware)
        |  +--rw flexe-aware-n     uint16           // n of ODUflex(FlexE-aware)
        +--:(packet)     // both GFP-F and IMP
           +--rw opuflex-payload-rate       uint64           // in Kbit/s

Question1: on the potential choice 'oduflex-type': who is specifying this value? Is it expected to be specified in the odu-type?
Question2: for the 'generic' branch, which odu-types have been covered? Current understanding is k~=flex would be all covered, including ODU0/1/2/3/4/1e/2e/3e1/3e2/25/50/Cn, correct?

New (or revised) identities would also be needed for :
ODUflex-cbr (replacing ODUFlex-cbr)
ODUflex-gfp-n-k (replacing current ODUFlex-gfp);
ODUflex-flexe-aware
ODUflex-flexe-client
ODUflex-packet

@italobusi
Copy link
Collaborator Author

italobusi commented Feb 25, 2020

2020-02-24 Updated YANG tree proposal:

augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth
          /te:technology:
  +--:(otn)
     +--rw odu-type?   identityref
     +--rw (oduflex-type)?
        +--:(generic)
        |  +--rw nominal-bit-rate            uint64 // in bit/s
        +--:(cbr)
        |  +--rw client-type       identityref      // should check it is the same in client-signal model
        +--:(gfp-n-k)
        |  +--rw gfp-n             uint8 (1..80)    // n of ODUflex(GFP, n, k)
        |  +--rw gfp-k?            enum             // k of ODUflex(GFP, n, k) need to be supported with v6 (k=2, 3, 4)
        +--:(flexe-client)
        |  +--rw flexe-client      union(enum (10G, 40G), uint16)    // ODUflex(IMP, s): 10G (s=2); 40G (s=8); n (s=5*n, when mapping n*25G FlexEC)
        +--:(flexe-aware)
        |  +--rw flexe-aware-n     uint16           // n of ODUflex(FlexE-aware)
        +--:(packet)     // both GFP-F and IMP
           +--rw opuflex-payload-rate       uint64           // in Kbit/s

Question1: on the potential choice 'oduflex-type': who is specifying this value? Is it expected to be specified in the odu-type?
Question2: for the 'generic' branch, which odu-types have been covered? Current understanding is k~=flex would be all covered, including ODU0/1/2/3/4/1e/2e/3e1/3e2/25/50/Cn, correct?

New (or revised) identities would also be needed for :
ODUflex-cbr (replacing ODUFlex-cbr)
ODUflex-gfp-n-k (replacing current ODUFlex-gfp);
ODUflex-flexe-aware
ODUflex-flexe-client
ODUflex-packet

The oduflex-type is specified by the attribute(s) being used. If the nominal-bit-rate attribute is used, the (generic) case has been selected. If the gfp-n attribute is used, the (gfp-n-k) case has been selected.

Therefore there is no need to define different identities for the different oduflex types. Only two odu-types identities are needed: ODUflex and ODUflex-resizable. See #56 (comment).

For consistency, the different attributes should have a when statement since they can be used only when the odu-type is ODUflex. The (gfp-n-k) can also be used when the odu-type is ODUflex-resizable.

Therefore, for the other cases (e.g., ODU0), only the odu-type attribute is used.

haomianzheng added a commit that referenced this issue Feb 26, 2020
based on 3rd update, 
#55 solved:  convert the range type to enumeration;
#56 solved: add the ODUflex descriptions to otn-link-bandwidth and otn-path-bandwidth.
@haomianzheng
Copy link
Owner

haomianzheng commented Feb 26, 2020

Updated the groupings 'otn-link-bandwidth' and 'otn-path-bandwidth' as requested. Slight following differences are:

  1. we try to make everything optional, i.e., with a '?' in the tree;
  2. created typedef for enumeration and union;

TBD: Descriptions to be reviewed to avoid confusion.

Updated tree clips as follow:

augment /nw:networks/nw:network/nw:node
          /nt:termination-point/tet:te
          /tet:interface-switching-capability
          /tet:max-lsp-bandwidth/tet:te-bandwidth
          /tet:technology:
  +--:(otn)
     +--rw odu-type?                     identityref
     +--rw (oduflex-type)?
        +--:(generic)
        |  +--rw nominal-bit-rate?       uint64
        +--:(cbr)
        |  +--rw client-type?            identityref
        +--:(gfp-n-k)
        |  +--rw gfp-n?                  uint8
        |  +--rw gfp-k?                  l1-types:gfp-k
        +--:(flexe-client)
        |  +--rw flexe-client?
        |          l1-types:flexe-client
        +--:(flexe-aware)
        |  +--rw flexe-aware-n?          uint16
        +--:(packet)
           +--rw opuflex-payload-rate?   uint64

The full tree can be achieved at: 9fcc6a0

@haomianzheng
Copy link
Owner

TBD After discussion @italobusi and @haomianzheng on 20200227:

  1. put 'mandatory true' for the first value of each branch;
  2. remove the choice in otn-link-bandwidth;
  3. conditional with a 'when' for odu-type must be either 'ODUflex' or 'ODUflex-resizable'.

@italobusi italobusi removed a link to a pull request Feb 27, 2020
haomianzheng added a commit that referenced this issue Feb 29, 2020
Followup of #55 and #56 has been done; 
Editorial changes incoporated.
haomianzheng added a commit that referenced this issue Feb 29, 2020
Make a few values mandatory true per #56.
@italobusi
Copy link
Collaborator Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
layer1-types
Awaiting triage
Development

No branches or pull requests

2 participants