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