From e83f0e1d6451c96ef9850b4a8b058c4b5c307617 Mon Sep 17 00:00:00 2001 From: Srihari Raghavan Date: Thu, 27 Oct 2016 15:23:36 +0530 Subject: HONEYCOMB-257 - Honeycomb support for in-band OAM (iOAM) path tracing - Add iOAM module to handle configuration for the iOAM trace VPP plugin - Add iOAM module test to verify add/delete configurations - Reader/Initializers for future, dependent on https://gerrit.fd.io/r/3387 Change-Id: I557604a955771c139165aed7cd9e5716abbac3d1 Signed-off-by: Srihari Raghavan --- ioam/api/asciidoc/Readme.adoc | 3 + ioam/api/pom.xml | 38 ++++++ ioam/api/src/main/yang/ioam-sb-trace.yang | 184 ++++++++++++++++++++++++++++++ 3 files changed, 225 insertions(+) create mode 100644 ioam/api/asciidoc/Readme.adoc create mode 100644 ioam/api/pom.xml create mode 100644 ioam/api/src/main/yang/ioam-sb-trace.yang (limited to 'ioam/api') diff --git a/ioam/api/asciidoc/Readme.adoc b/ioam/api/asciidoc/Readme.adoc new file mode 100644 index 000000000..fe70e0a4a --- /dev/null +++ b/ioam/api/asciidoc/Readme.adoc @@ -0,0 +1,3 @@ += vppioam-api + +Overview of vppioam-api diff --git a/ioam/api/pom.xml b/ioam/api/pom.xml new file mode 100644 index 000000000..ebdadea05 --- /dev/null +++ b/ioam/api/pom.xml @@ -0,0 +1,38 @@ + + + + + io.fd.honeycomb.common + api-parent + 1.16.12-SNAPSHOT + ../../common/api-parent + + + 4.0.0 + io.fd.honeycomb.vppioam + vppioam-api + ${project.artifactId} + 1.16.12-SNAPSHOT + bundle + + + + org.opendaylight.mdsal.model + ietf-interfaces + + + diff --git a/ioam/api/src/main/yang/ioam-sb-trace.yang b/ioam/api/src/main/yang/ioam-sb-trace.yang new file mode 100644 index 000000000..731fda96d --- /dev/null +++ b/ioam/api/src/main/yang/ioam-sb-trace.yang @@ -0,0 +1,184 @@ +module ioam-sb-trace { + yang-version 1; + namespace "urn:cisco:params:xml:ns:yang:ioam-sb-trace"; + prefix ioam-sb-trace; + + import ietf-interfaces { prefix ietf-if; } + + organization "Cisco Systems, Inc."; + + contact + "Author: Srihari Raghavan + srihari@cisco.com"; + + description + "This YANG module defines a component that describing the + configuration of in-band OAM device configuration for + trace elements. + "; + + revision 2016-05-12 { + description + "Base model for in-band OAM trace device configuration."; + reference + ""; + } + + container ioam-trace-config { + description + "Device specific configuration for in-band OAM trace."; + + list trace-config { + key "trace-config-name"; + ordered-by system; + description + "Set of ioam trace configurations that group parameters + required to enable iOAM6 tracing at a service node"; + + leaf trace-config-name { + type string { + length "0..255"; + } + mandatory true; + description + "Unique identifier for each node tracing configuration"; + } + + leaf acl-name { + type string; + description + "The ACL name associated to classify and apply this + trace config"; + } + + leaf trace-type { + type uint8 { + range "3|7|9|17|25|31"; + } + + mandatory true; + description + "Trace type that defines the trace element variant. Moving + from LSB to MSB, each bit represents node_id, ingress_if_id, + egress_if_id, timestamp, app_data and others are undefined. + Currently, the supported values are 0x03, 0x07, 0x09, + 0x11, 0x19 and 0x1f."; + } + + leaf trace-num-elt { + type uint8; + + mandatory true; + description + "Number of trace elements to be inserted in the tracing + options."; + } + + leaf trace-tsp { + type enumeration { + enum seconds { + value 0; + description "Timestamp in seconds."; + } + enum milliseconds { + value 1; + description "Timestamp in milli seconds."; + } + enum microseconds { + value 2; + description "Timestamp in micro seconds."; + } + enum nanoseconds { + value 3; + description "Timestamp in nano seconds."; + } + } + + mandatory true; + description + "This field depicts the delay domain of the trace path, + whether it is in seconds, milliseconds, microseconds + or nanoseconds."; + } + + leaf trace-op { + type enumeration { + enum add { + value 0; + description "Add new and fill trace information."; + } + enum update { + value 1; + description "Update existing trace information."; + } + enum remove { + value 2; + description "Decap or remove existing trace information."; + } + } + + mandatory true; + description + "The type of trace element operation that the service node + handling this profile should do. The options are to add the + trace elements, update the trace elements or to remove the + trace elements."; + } + + leaf trace-app-data { + type uint32; + description + "Application specific data to be added by the node"; + } + + leaf node-id { + type uint32; + mandatory true; + description + "iOAM Service Node id assigned to this node"; + } + + list node-interfaces { + key "index"; + ordered-by system; + description + "List of node's interfaces on which the trace configuration + need to be applied. Typically this is to all interfaces + but can be filtered."; + + leaf index { + type uint32; + mandatory true; + description + "Index for the interfaces list"; + } + + leaf intf-name { + type ietf-if:interface-ref; + mandatory true; + description + "Instance of ietf-interfaces:interface-ref"; + } + } + + /*** links to ioam-sb-data-export ***/ + leaf data-export-profile-name { + type string; + description + "The data export profile name with server information to + send data to."; + } + + /*** Transport encap profiles. Not used currently ***/ + leaf transport-encap-profile-name { + type string; + description + "The transport encap profile name with sub configurations for + handling transport encap."; + } +/*** list: end ***/ + } +/*** container: end ***/ + } +/*** module: end ***/ +} -- cgit 1.2.3-korg