All,

We would much appreciate comments and suggestions on the question posed below.

Thanks,
William Lupton
(Software Architect, Broadband Forum)

----------------

In the Broadband Forum we need to model a port that can support several 
physical layer standards, but only one at a time. An initial handshake 
mechanism determines which of these standards will actually be used. We have 
been trying to decide how best to model this according to the letter and spirit 
of RFCs 6020, 6087, 7223 etc.

Consider a port, a handshake mechanism "color-selector" and two physical layer 
standards "green" and "red". Each of these is modelled via a YANG module of the 
same name ("port" probably uses the ietf-entity module). Here are the 
approaches that we have considered:

**** Option 1 "direct augment" ****

color-selector, green and red all directly augment /if:interfaces/if:interface. 
An instance of each of them is associated with the port. See part of the tree 
here (YANG on request).

module: ietf-interfaces
   +--rw interfaces
   |  +--rw interface* [name]
   |     +--rw name                        string
   |     +--rw description?                string
   |     +--rw type                        identityref
   |     +--rw enabled?                    boolean
   |     +--rw link-up-down-trap-enable?   enumeration {if-mib}?
   |     +--rw color-sel:line
   |     +--rw green:line
   |     +--rw red:line

Note that this means that each port needs three separate interface objects. For 
each additional possible supported physical layer standard, an additional 
interface object would be needed.

**** Option 2 "indirect augment" ****

An additional if-multicolor module directly augments 
/if:interfaces/if:interface. An instance of if-multicolor is associated with 
the port. if-multicolor has a supported-type leaf-list that indicates the 
physical layer standards that are supported by the port (green and red in this 
case). color-selector, green and red are similar to before but this time they 
augment /if:interfaces/if:interface/multi:line, and the green and red "when" 
(existence) criteria are tied to if-multicolor's supported-type leaf-list 
rather than to their own type leaf. See part of the tree here (YANG on request).

module: ietf-interfaces
   +--rw interfaces
   |  +--rw interface* [name]
   |     +--rw name                        string
   |     +--rw description?                string
   |     +--rw type                        identityref
   |     +--rw enabled?                    boolean
   |     +--rw link-up-down-trap-enable?   enumeration {if-mib}?
   |     +--rw multi:line
   |        +--rw multi:supported-type*   identityref
   |        +--rw color-sel:line
   |        +--rw green:line
   |        +--rw red:line

The nice thing about this approach is that it models the port in a way that is 
close to how it actually _is_. Each port needs only a single interface that's 
directly associated with the handshake mechanism and the supported physical 
layer standards.

A possible disadvantage of this approach is that it is a bit less well aligned 
with RFC 7223, e.g there is only one interface-level enable/disable that has to 
be "shared" by color-selector, green and red.
_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to