module ietf-TopologyIM {
namespace "urn:ietf:params:xml:ns:yang:ietf-TopologyIM";
// replace with iana namespace when assigned
prefix "TopIM";
organization "IETF";
contact
"WG Web:
WG List:
WG Chair: Vishnu Pavan Beeram
WG Chair: Lou Berger
Editor: Kam Lam
";
description
"Brief YANG example for Link object class in the Core
Model (ONF::TR-512).";
revision 2015-07-02 {
description
"Initial version";
}
grouping LayerProtocol {
description
"Each transport layer is represented by a LayerProtocol
(LP) instance. The LayerProtocol instances it can be
used for controlling termination and monitoring
functionality. It can also be used for controlling the
adaptation (i.e. encapsulation and/or multiplexing of
client signal), tandem connection monitoring, traffic
conditioning and/or shaping functionality at an
intermediate point along a connection. ";
leaf guid {
type string;
}
leaf layerProtocolName {
type string;
}
leaf lpSpec {
type string;
}
leaf configuredClientCapacity {
type string;
}
leaf lpDirection {
type string;
}
leaf terminationState {
type string;
}
}
list LayerProtocol {
key "guid";
uses LayerProtocol;
}
list ForwardingDomain {
description
"The ForwardingDomain (FD) object class models the
topological component which represents the opportunity
to enable forwarding (of specific transport
characteristic information at one or more protocol
layers) between points represented by the LTP in the
model. ";
key "guid";
leaf guid {
type string;
}
leaf-list layerProtocolNameList {
type string;
min-elements "1";
}
leaf-list lowerLevelFdRefList {
type leafref {
path "/ForwardingDomain/guid";
}
}
leaf-list fcRefList {
type leafref {
path "/ForwardingConstruct/guid";
}
}
leaf-list ltpRefList {
type leafref {
path "/LogicalTerminationPoint/guid";
}
}
leaf-list linkRefList {
type leafref {
path "/Link/guid";
}
}
}
list LogicalTerminationPoint {
description
"The LogicalTerminationPoint (LTP) object class
encapsulates the termination and adaptation functions
of one or more transport layers. The structure of LTP
supports all transport protocols including circuit and
packet forms.";
key "guid";
leaf guid {
type string;
}
leaf-list serverLtpRefList {
type leafref {
path "/LogicalTerminationPoint/guid";
}
}
leaf-list clientLtpRefList {
type leafref {
path "/LogicalTerminationPoint/guid";
}
}
list lpList { // Should be leaf-list? (only refs?)
key "guid";
uses LayerProtocol;
}
leaf-list connectedLtpRef {
type leafref {
path "/LogicalTerminationPoint/guid";
}
}
leaf-list peerLtpRef {
type leafref {
path "/LogicalTerminationPoint/guid";
}
}
leaf ltpSpec {
type string;
}
leaf physicalPortReference {
type string;
}
leaf-list ltpRefList {
type leafref {
path "/LogicalTerminationPoint/guid";
}
}
leaf ltpDirection {
type string;
}
}
list ForwardingConstruct {
description
"The ForwardingConstruct (FC) object class models enabled
potential for forwarding between two or more LTPs at a
particular specific layerProtocol.
Like the LTP the FC supports any transport protocol
including all circuit and packet forms. It is used to
effect forwarding of transport characteristic (layer
protocol) information. An FC can be in only one FD.
The ForwardingConstruct is a Forwarding entity.";
key "guid";
leaf guid {
type string;
}
leaf-list lowerLevelFcRefList {
type leafref {
path "/ForwardingConstruct/guid";
}
}
leaf-list fcRouteRefList {
type leafref {
path "/ForwardingConstruct/guid";
}
}
list endPointList {
key "guid";
leaf guid {
type string;
}
leaf-list ltpRefList {
type leafref {
path "/LogicalTerminationPoint/guid";
}
max-elements "2";
}
leaf role {
type string;
}
leaf endPointDirection {
type string;
}
}
list fcSwitchList {
description
"The FcSwitch object class models the switched
forwarding of traffic (traffic flow) between Eps
and is present where there is protection
functionality in the FC. If an FC exposes
protection (having two EndPoints that provide
alternative identical inputs/outputs), the FC
will have one or more associated FcSwitch objects
to represent the alternative flow choices visible
at the edge of the FC. The FC switch represents
and defines a protection switch structure
encapsulated in the FC. ";
key "guid";
leaf guid {
type string;
}
leaf holdOffTime {
type uint64;
}
leaf waitToRestoreTime {
type uint64;
}
leaf protType {
type string;
}
leaf operType {
type string;
}
leaf-list selectedEndPointRefList {
type leafref {
path "/ForwardingConstruct/endPointList/guid";
}
}
/**leaf-list profileProxyRefList {
type leafref {
path ""; // To be defined
}
}*/
/**leaf-list configurationAndSwitchControlRef {
type leafref {
path ""; // To be defined
}
}*/
}
leaf forwardingDirection {
type string;
}
}
list Link {
key "guid";
leaf guid {
type string;
}
uses TopologicalEntity;
leaf-list layerProtocolNameList {
type string;
min-elements "1";
}
leaf-list aggregatedLinkList {
type leafref {
path "/Link/guid";
// Mapping of recursion still to be agreed
}
}
list LinkEnd {
key "localId";
leaf localId {
type string;
}
min-elements "2";
leaf role {
type string; // Undefined in the model
mandatory true;
}
leaf-list localIdList {
type string; // YANG data type for name-value-pair?
min-elements "1";
}
leaf offNetworkAddress {
type string;
}
leaf-list ltpRefList {
type leafref {
path "/LogicalTerminationPoint/guid";
}
}
}
}
// Groupings
grouping TopologicalEntity {
// Conditional Pacs associated to TopologicalEntity
container RiskParameter_Pac {
presence
"";
list riskCharacteristicList {
key "riskCharacteristicName";
leaf riskCharacteristicName {
type string;
}
leaf-list riskIdentifierList {
type string;
min-elements "1";
}
min-elements "1";
}
}
container TransferCost_Pac {
presence
"";
list costCharacteristicList {
key "costName";
leaf costName {
type string;
}
leaf costValue {
type string;
mandatory true;
}
leaf costAlgorithm {
type string; // Undefined in the model
}
min-elements "1";
}
}
container TransferTiming_Pac {
presence
"";
leaf fixedLatencyCharacteristic {
type string;
mandatory true;
}
leaf jitterCharacteristic {
type string;
}
leaf wanderCharacteristic {
type string;
}
list queuingLatencyList {
key "trafficProperty";
leaf trafficProperty {
type string;
}
leaf latencyForTrafficWithProperty {
type string;
mandatory true;
}
}
}
container TransferIntegrity_Pac {
presence
"";
leaf errorCharacteristic {
type string;
}
leaf lossCharacteristic {
type string;
}
leaf repeatDeliveryCharacteristic {
type string;
}
leaf deliveryOrderCharacteristic {
type string;
}
leaf unavailableTimeCharacteristic {
type string;
mandatory true;
}
leaf serverIntegrityProcessCharacteristic {
type string;
}
}
container TransferCapacity_Pac {
presence
"";
container totalPotentialCapacity {
uses Capacity;
}
container availableCapacity {
uses Capacity;
}
container capacityAssignedToUserView {
// Don't know how to make this attribute multi-valued
uses Capacity;
}
leaf capacityInteractionAlgorithm {
type string;
}
}
container Validation_Pac {
presence "";
list validationMechanismList {
key "validationMechanism";
leaf validationMechanism {
type string;
}
leaf layerProtocolAdjacencyValidated {
type string;
mandatory true;
}
leaf validationRobustness {
type string;
mandatory true;
}
min-elements "1";
}
}
container LayerProtocolTransition_Pac {
// Don't know how to make this Pac multi-valued
presence "";
leaf-list transitionedLayerProtocolList {
type string;
min-elements "1";
}
}
}
grouping Capacity {
leaf totalSize {
type string;
mandatory true;
}
leaf numberOfClientInstances {
type string;
}
leaf maximumClientSize {
type string;
}
leaf numberingRange {
type string;
}
}
}