leaf activeFlows { type yang:gauge32; units flows; config false; description "The number of Flows currently active in this Cache."; reference "RFC 5815, Section 8 (ipfixMeteringProcessCacheActiveFlows)."; } leaf unusedCacheEntries { type yang:gauge32; units flows; config false; description "The number of unused Cache entries in this Cache."; reference "RFC 5815, Section 8 (ipfixMeteringProcessCacheUnusedCacheEntries)."; } } ct:complex-type NonPermanentCache { ct:abstract true; ct:extends NonImmediateCache; leaf activeTimeout { type uint32; units milliseconds; description "This parameter configures the time in milliseconds after which ... "; } leaf inactiveTimeout { type uint32; units milliseconds; description "This parameter configures the time in milliseconds after which ... "; } } ct:complex-type NaturalCache { if-feature cacheModeNatural; ct:extends NonPermanentCache; } ct:complex-type TimeoutCache { if-feature cacheModeTimeout; ct:extends NonPermanentCache; } ct:complex-type PermanentCache {
if-feature cacheModePermanent; ct:extends NonImmediateCache; leaf exportInterval { type uint32; units milliseconds; description "This parameter configures the interval for periodical export of Flow Records in milliseconds. If not configured by the user, the Monitoring Device sets this parameter."; } } ct:complex-type ExportDestination { ct:abstract true; description "Abstract export destination."; key name; leaf name { type nameType; description "Key of an export destination."; } } ct:complex-type IpDestination { ct:abstract true; ct:extends ExportDestination; description "IP export destination."; leaf ipfixVersion { type uint16; default 10; description "IPFIX version number."; } leaf destinationPort { type inet:port-number; description "If not configured by the user, the Monitoring Device uses the default port number for IPFIX, which is 4739 without Transport Layer Security, and 4740 if Transport Layer Security is activated."; } choice indexOrName { description "Index or name of the interface ... "; reference "RFC 2863."; leaf ifIndex { type uint32; description "Index of an interface as stored in the ifTable of IF-MIB."; reference "RFC 2863."; } leaf ifName {
type string; description "Name of an interface as stored in the ifTable of IF-MIB."; reference "RFC 2863."; } } leaf sendBufferSize { type uint32; units bytes; description "Size of the socket send buffer. If not configured by the user, this parameter is set by the Monitoring Device."; } leaf rateLimit { type uint32; units "bytes per second"; description "Maximum number of bytes per second ... "; reference "RFC 5476, Section 6.3"; } container transportLayerSecurity { presence "If transportLayerSecurity is present, DTLS is enabled if the transport protocol is SCTP or UDP, and TLS is enabled if the transport protocol is TCP."; description "Transport Layer Security configuration."; uses transportLayerSecurityParameters; } container transportSession { config false; description "State parameters of the Transport Session directed to the given destination."; uses transportSessionParameters; } } ct:complex-type SctpExporter { ct:extends IpDestination; description "SCTP exporter."; leaf-list sourceIPAddress { type inet:ip-address; description "List of source IP addresses used ... "; reference "RFC 4960, Section 6.4 (Multi-Homed SCTP Endpoints)."; } leaf-list destinationIPAddress { type inet:ip-address; min-elements 1; description "One or multiple IP addresses ... "; reference "RFC 4960, Section 6.4
(Multi-Homed SCTP Endpoints)."; } leaf timedReliability { type uint32; units milliseconds; default 0; description "Lifetime in milliseconds ... "; reference "RFC 3758; RFC 4960."; } } ct:complex-type UdpExporter { ct:extends IpDestination; if-feature udpTransport; description "UDP parameters."; leaf sourceIPAddress { type inet:ip-address; description "Source IP address used by the Exporting Process ..."; } leaf destinationIPAddress { type inet:ip-address; mandatory true; description "IP address of the Collection Process to which IPFIX Messages are sent."; } leaf maxPacketSize { type uint16; units octets; description "This parameter specifies the maximum size of IP packets ... "; } leaf templateRefreshTimeout { type uint32; units seconds; default 600; description "Sets time after which Templates are resent in the UDP Transport Session. ... "; reference "RFC 5101, Section 10.3.6; RFC 5815, Section 8 (ipfixTransportSessionTemplateRefreshTimeout)."; } leaf optionsTemplateRefreshTimeout { type uint32; units seconds; default 600; description "Sets time after which Options Templates are resent in the UDP Transport Session. ... "; reference "RFC 5101, Section 10.3.6; RFC 5815, Section 8
(ipfixTransportSessionOptionsTemplateRefreshTimeout)."; } leaf templateRefreshPacket { type uint32; units "IPFIX Messages"; description "Sets number of IPFIX Messages after which Templates are resent in the UDP Transport Session. ... "; reference "RFC 5101, Section 10.3.6; RFC 5815, Section 8 (ipfixTransportSessionTemplateRefreshPacket)."; } leaf optionsTemplateRefreshPacket { type uint32; units "IPFIX Messages"; description "Sets number of IPFIX Messages after which Options Templates are resent in the UDP Transport Session protocol. ... "; reference "RFC 5101, Section 10.3.6; RFC 5815, Section 8 (ipfixTransportSessionOptionsTemplateRefreshPacket)."; } } ct:complex-type TcpExporter { ct:extends IpDestination; if-feature tcpTransport; description "TCP exporter"; leaf sourceIPAddress { type inet:ip-address; description "Source IP address used by the Exporting Process..."; } leaf destinationIPAddress { type inet:ip-address; mandatory true; description "IP address of the Collection Process to which IPFIX Messages are sent."; } } ct:complex-type FileWriter { ct:extends ExportDestination; if-feature fileWriter; description "File Writer."; leaf ipfixVersion { type uint16; default 10; description "IPFIX version number."; } leaf file {
type inet:uri; mandatory true; description "URI specifying the location of the file."; } leaf bytes { type yang:counter64; units octets; config false; description "The number of bytes written by the File Writer..."; } leaf messages { type yang:counter64; units "IPFIX Messages"; config false; description "The number of IPFIX Messages written by the File Writer. ... "; } leaf discardedMessages { type yang:counter64; units "IPFIX Messages"; config false; description "The number of IPFIX Messages that could not be written by the File Writer ... "; } leaf records { type yang:counter64; units "Data Records"; config false; description "The number of Data Records written by the File Writer. ... "; } leaf templates { type yang:counter32; units "Templates"; config false; description "The number of Template Records (excluding Options Template Records) written by the File Writer. ... "; } leaf optionsTemplates { type yang:counter32; units "Options Templates"; config false; description "The number of Options Template Records written by the File Writer. ... "; } leaf fileWriterDiscontinuityTime {
type yang:date-and-time; config false; description "Timestamp of the most recent occasion at which one or more File Writer counters suffered a discontinuity. ... "; } list template { config false; description "This list contains the Templates and Options Templates that have been written by the File Reader. ... "; uses templateParameters; } } ct:complex-type ExportingProcess { if-feature exporter; description "Exporting Process of the Monitoring Device."; key name; leaf name { type nameType; description "Key of this list."; } leaf exportMode { type identityref { base "exportMode"; } default parallel; description "This parameter determines to which configured destination(s) the incoming Data Records are exported."; } ct:instance-list destination { ct:instance-type ExportDestination; min-elements 1; description "Export destinations."; } list options { key name; description "List of options reported by the Exporting Process."; leaf name { type nameType; description "Key of this list."; } leaf optionsType { type identityref { base "optionsType"; } mandatory true;
description "Type of the exported options data."; } leaf optionsTimeout { type uint32; units milliseconds; description "Time interval for periodic export of the options data. ... "; } } } ct:complex-type CollectingProcess { description "A Collecting Process."; key name; leaf name { type nameType; description "Key of a collecing process."; } ct:instance-list sctpCollector { ct:instance-type SctpCollector; description "List of SCTP receivers (sockets) on which the Collecting Process receives IPFIX Messages."; } ct:instance-list udpCollector { if-feature udpTransport; ct:instance-type UdpCollector; description "List of UDP receivers (sockets) on which the Collecting Process receives IPFIX Messages."; } ct:instance-list tcpCollector { if-feature tcpTransport; ct:instance-type TcpCollector; description "List of TCP receivers (sockets) on which the Collecting Process receives IPFIX Messages."; } ct:instance-list fileReader { if-feature fileReader; ct:instance-type FileReader; description "List of File Readers from which the Collecting Process reads IPFIX Messages."; } leaf-list exportingProcess { type instance-identifier { ct:instance-type ExportingProcess; } description "Export of received records without any modifications. Records are processed by all Exporting Processes in the list."; } }
ct:complex-type Collector { ct:abstract true; description "Abstract collector."; key name; leaf name { type nameType; description "Key of collectors"; } } ct:complex-type IpCollector { ct:abstract true; ct:extends Collector; description "Collector for IP transport protocols."; leaf localPort { type inet:port-number; description "If not configured, the Monitoring Device uses the default port number for IPFIX, which is 4739 without Transport Layer Security, and 4740 if Transport Layer Security is activated."; } container transportLayerSecurity { presence "If transportLayerSecurity is present, DTLS is enabled if the transport protocol is SCTP or UDP, and TLS is enabled if the transport protocol is TCP."; description "Transport Layer Security configuration."; uses transportLayerSecurityParameters; } list transportSession { config false; description "This list contains the currently established Transport Sessions terminating at the given socket."; uses transportSessionParameters; } } ct:complex-type SctpCollector { ct:extends IpCollector; description "Collector listening on an SCTP socket"; leaf-list localIPAddress { type inet:ip-address; description "List of local IP addresses ... "; reference "RFC 4960, Section 6.4 (Multi-Homed SCTP Endpoints)."; } } ct:complex-type UdpCollector {
ct:extends IpCollector; description "Parameters of a listening UDP socket at a Collecting Process."; leaf-list localIPAddress { type inet:ip-address; description "List of local IP addresses on which the Collecting Process listens for IPFIX Messages."; } leaf templateLifeTime { type uint32; units seconds; default 1800; description "Sets the lifetime of Templates for all UDP Transport Sessions ... "; reference "RFC 5101, Section 10.3.7; RFC 5815, Section 8 (ipfixTransportSessionTemplateRefreshTimeout)."; } leaf optionsTemplateLifeTime { type uint32; units seconds; default 1800; description "Sets the lifetime of Options Templates for all UDP Transport Sessions terminating at this UDP socket. ... "; reference "RFC 5101, Section 10.3.7; RFC 5815, Section 8 (ipfixTransportSessionOptionsTemplateRefreshTimeout)."; } leaf templateLifePacket { type uint32; units "IPFIX Messages"; description "If this parameter is configured, Templates defined in a UDP Transport Session become invalid if ..."; reference "RFC 5101, Section 10.3.7; RFC 5815, Section 8 (ipfixTransportSessionTemplateRefreshPacket)."; } leaf optionsTemplateLifePacket { type uint32; units "IPFIX Messages"; description "If this parameter is configured, Options Templates defined in a UDP Transport Session become invalid if ..."; reference "RFC 5101, Section 10.3.7; RFC 5815, Section 8 (ipfixTransportSessionOptionsTemplateRefreshPacket)."; } } ct:complex-type TcpCollector { ct:extends IpCollector;
description "Collector listening on a TCP socket."; leaf-list localIPAddress { type inet:ip-address; description "List of local IP addresses on which the Collecting Process listens for IPFIX Messages."; } } ct:complex-type FileReader { ct:extends Collector; description "File Reading collector."; leaf file { type inet:uri; mandatory true; description "URI specifying the location of the file."; } leaf bytes { type yang:counter64; units octets; config false; description "The number of bytes read by the File Reader. ... "; } leaf messages { type yang:counter64; units "IPFIX Messages"; config false; description "The number of IPFIX Messages read by the File Reader. ... "; } leaf records { type yang:counter64; units "Data Records"; config false; description "The number of Data Records read by the File Reader. ... "; } leaf templates { type yang:counter32; units "Templates"; config false; description "The number of Template Records (excluding Options Template Records) read by the File Reader. ..."; } leaf optionsTemplates { type yang:counter32; units "Options Templates"; config false;
description "The number of Options Template Records read by the File Reader. ... "; } leaf fileReaderDiscontinuityTime { type yang:date-and-time; config false; description "Timestamp of the most recent occasion ... "; } list template { config false; description "This list contains the Templates and Options Templates that have been read by the File Reader. Withdrawn or invalidated (Options) Templates MUST be removed from this list."; uses templateParameters; } } ct:complex-type SelectionProcess { description "Selection Process"; key name; leaf name { type nameType; description "Key of a selection process."; } ct:instance-list selector { ct:instance-type Selector; min-elements 1; ordered-by user; description "List of Selectors that define the action of the Selection Process on a single packet. The Selectors are serially invoked in the same order as they appear in this list."; } list selectionSequence { config false; description "This list contains the Selection Sequence IDs which are assigned by the Monitoring Device ... "; reference "RFC 5476."; leaf observationDomainId { type uint32; description "Observation Domain ID for which the Selection Sequence ID is assigned."; } leaf selectionSequenceId { type uint64; description "Selection Sequence ID used in the Selection Sequence (Statistics) Report Interpretation.";
} } leaf cache { type instance-identifier { ct:instance-type Cache; } description "Cache which receives the output of the Selection Process."; } } /***************************************************************** * Groupings *****************************************************************/ grouping transportLayerSecurityParameters { description "Transport layer security parameters."; leaf-list localCertificationAuthorityDN { type string; description "Distinguished names of certification authorities whose certificates may be used to identify the local endpoint."; } leaf-list localSubjectDN { type string; description "Distinguished names that may be used in the certificates to identify the local endpoint."; } leaf-list localSubjectFQDN { type inet:domain-name; description "Fully qualified domain names that may be used to in the certificates to identify the local endpoint."; } leaf-list remoteCertificationAuthorityDN { type string; description "Distinguished names of certification authorities whose certificates are accepted to authorize remote endpoints."; } leaf-list remoteSubjectDN { type string; description "Distinguished names that are accepted in certificates to authorize remote endpoints."; } leaf-list remoteSubjectFQDN { type inet:domain-name; description "Fully qualified domain names that are accepted in certificates to authorize remote endpoints."; } }
grouping templateParameters { description "State parameters of a Template used by an Exporting Process or received by a Collecting Process ... "; reference "RFC 5101; RFC 5815, Section 8 (ipfixTemplateEntry, ipfixTemplateDefinitionEntry, ipfixTemplateStatsEntry)"; leaf observationDomainId { type uint32; description "The ID of the Observation Domain for which this Template is defined."; reference "RFC 5815, Section 8 (ipfixTemplateObservationDomainId)."; } leaf templateId { type uint16 { range "256..65535" { description "Valid range of Template Ids."; reference "RFC 5101"; } } description "This number indicates the Template Id in the IPFIX message."; reference "RFC 5815, Section 8 (ipfixTemplateId)."; } leaf setId { type uint16; description "This number indicates the Set Id of the Template. ... "; reference "RFC 5815, Section 8 (ipfixTemplateSetId)."; } leaf accessTime { type yang:date-and-time; description "Used for Exporting Processes, ... "; reference "RFC 5815, Section 8 (ipfixTemplateAccessTime)."; } leaf templateDataRecords { type yang:counter64; description "The number of transmitted or received Data Records ... "; reference "RFC 5815, Section 8 (ipfixTemplateDataRecords)."; } leaf templateDiscontinuityTime { type yang:date-and-time; description "Timestamp of the most recent occasion at which the counter templateDataRecords suffered a discontinuity. ... "; reference "RFC 5815, Section 8 (ipfixTemplateDiscontinuityTime)."; }
list field { description "This list contains the (Options) Template fields of which the (Options) Template is defined. ... "; leaf ieId { type uint16 { range "1..32767" { description "Valid range of Information Element identifiers."; reference "RFC 5102, Section 4."; } } description "This parameter indicates the Information Element Id of the field."; reference "RFC 5815, Section 8 (ipfixTemplateDefinitionIeId); RFC 5102."; } leaf ieLength { type uint16; units octets; description "This parameter indicates the length of the Information Element of the field."; reference "RFC 5815, Section 8 (ipfixTemplateDefinitionIeLength); RFC 5102."; } leaf ieEnterpriseNumber { type uint32; description "This parameter indicates the IANA enterprise number of the authority ... "; reference "RFC 5815, Section 8 (ipfixTemplateDefinitionEnterpriseNumber)."; } leaf isFlowKey { when "../../setId = 2" { description "This parameter is available for non-Options Templates (Set Id is 2)."; } type empty; description "If present, this is a Flow Key field."; reference "RFC 5815, Section 8 (ipfixTemplateDefinitionFlags)."; } leaf isScope { when "../../setId = 3" { description "This parameter is available for Options Templates (Set Id is 3)."; } type empty;
description "If present, this is a scope field."; reference "RFC 5815, Section 8 (ipfixTemplateDefinitionFlags)."; } } } grouping transportSessionParameters { description "State parameters of a Transport Session ... "; reference "RFC 5101; RFC 5815, Section 8 (ipfixTransportSessionEntry, ipfixTransportSessionStatsEntry)"; leaf ipfixVersion { type uint16; description "Used for Exporting Processes, this parameter contains the version number of the IPFIX protocol ... "; reference "RFC 5815, Section 8 (ipfixTransportSessionIpfixVersion)."; } leaf sourceAddress { type inet:ip-address; description "The source address of the Exporter of the IPFIX Transport Session... "; reference "RFC 5815, Section 8 (ipfixTransportSessionSourceAddressType, ipfixTransportSessionSourceAddress)."; } leaf destinationAddress { type inet:ip-address; description "The destination address of the Collector of the IPFIX Transport Session... "; reference "RFC 5815, Section 8 (ipfixTransportSessionDestinationAddressType, ipfixTransportSessionDestinationAddress)."; } leaf sourcePort { type inet:port-number; description "The transport protocol port number of the Exporter of the IPFIX Transport Session."; reference "RFC 5815, Section 8 (ipfixTransportSessionSourcePort)."; } leaf destinationPort { type inet:port-number; description "The transport protocol port number of the Collector of the IPFIX Transport Session... "; reference "RFC 5815, Section 8 (ipfixTransportSessionDestinationPort).";
} leaf sctpAssocId { type uint32; description "The association id used for the SCTP session between the Exporter and the Collector ... "; reference "RFC 5815, Section 8 (ipfixTransportSessionSctpAssocId), RFC 3871"; } leaf status { type transportSessionStatus; description "Status of the Transport Session."; reference "RFC 5815, Section 8 (ipfixTransportSessionStatus)."; } leaf rate { type yang:gauge32; units "bytes per second"; description "The number of bytes per second transmitted by the Exporting Process or received by the Collecting Process. This parameter is updated every second."; reference "RFC 5815, Section 8 (ipfixTransportSessionRate)."; } leaf bytes { type yang:counter64; units bytes; description "The number of bytes transmitted by the Exporting Process or received by the Collecting Process ... "; reference "RFC 5815, Section 8 (ipfixTransportSessionBytes)."; } leaf messages { type yang:counter64; units "IPFIX Messages"; description "The number of messages transmitted by the Exporting Process or received by the Collecting Process... "; reference "RFC 5815, Section 8 (ipfixTransportSessionMessages)."; } leaf discardedMessages { type yang:counter64; units "IPFIX Messages"; description "Used for Exporting Processes, this parameter indicates the number of messages that could not be sent ..."; reference "RFC 5815, Section 8 (ipfixTransportSessionDiscardedMessages)."; } leaf records {
type yang:counter64; units "Data Records"; description "The number of Data Records transmitted ... "; reference "RFC 5815, Section 8 (ipfixTransportSessionRecords)."; } leaf templates { type yang:counter32; units "Templates"; description "The number of Templates transmitted by the Exporting Process or received by the Collecting Process. ... "; reference "RFC 5815, Section 8 (ipfixTransportSessionTemplates)."; } leaf optionsTemplates { type yang:counter32; units "Options Templates"; description "The number of Option Templates transmitted by the Exporting Process or received by the Collecting Process..."; reference "RFC 5815, Section 8 (ipfixTransportSessionOptionsTemplates)."; } leaf transportSessionStartTime { type yang:date-and-time; description "Timestamp of the start of the given Transport Session... "; } leaf transportSessionDiscontinuityTime { type yang:date-and-time; description "Timestamp of the most recent occasion at which one or more of the Transport Session counters suffered a discontinuity... "; reference "RFC 5815, Section 8 (ipfixTransportSessionDiscontinuityTime)."; } list template { description "This list contains the Templates and Options Templates that are transmitted by the Exporting Process or received by the Collecting Process. Withdrawn or invalidated (Options) Templates MUST be removed from this list."; uses templateParameters; } } /***************************************************************** * Main container
*****************************************************************/ container ipfix { description "Top-level node of the IPFIX/PSAMP configuration data model."; ct:instance-list collectingProcess { if-feature collector; ct:instance-type CollectingProcess; } ct:instance-list observationPoint { if-feature meter; ct:instance-type ObservationPoint; } ct:instance-list selectionProcess { if-feature meter; ct:instance-type SelectionProcess; } ct:instance-list cache { if-feature meter; description "Cache of the Monitoring Device."; ct:instance-type Cache; } ct:instance-list exportingProcess { if-feature exporter; description "Exporting Process of the Monitoring Device."; ct:instance-type ExportingProcess; } } } <CODE ENDS>
Authors' Addresses
Bernd Linowski TCS/Nokia Siemens Networks Heltorfer Strasse 1 Duesseldorf 40472 Germany EMail: bernd.linowski.ext@nsn.com Mehmet Ersue Nokia Siemens Networks St.-Martin-Strasse 76 Munich 81541 Germany EMail: mehmet.ersue@nsn.com Siarhei Kuryla 360 Treasury Systems Grueneburgweg 16-18 Frankfurt am Main 60322 Germany EMail: s.kuryla@gmail.com