{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"b7664975-9b8e-4c7d-acff-ad20350a37b2","name":"OpenDayLight (ODL) via Lighty.io featuring Nokia Altiplano 19.3","description":"<img src=\"https://raw.githubusercontent.com/ETI-Software-Solutions/Postman-Collection-Images/main/Nokia-Network-Services-Platform.png\" width=\"618\" height=\"299\">\n\n[Nokia Network Services Platform](https://www.nokia.com/networks/products/network-services-platform/) is driven by YANG. The Altiplano 19.3 YANG models were used to build the instance of Lighty.io showing OpenDayLight services in this API.\n\n# Platform Highlights\n\n| **Platform Highlights** | **Description** |\n| --- | --- |\n| Equipment configuration | Automates the on-boarding and initial configuration of network devices to speed up infrastructure deployment and reduce human errors. |\n| Network service delivery | Utilizes the power of intent-based networking (IBN) to abstract the underlying network complexity and deploy services in minutes if not seconds. |\n| Network assurance | Provides supervision, reporting and prediction tools that help you quickly troubleshoot network problems, pinpoint root causes and proactively prevent issues. |\n| Path computation | Acts as an external SDN controller Path Computation Element (PCE) to ensure optimal multi-layer paths across multiple domains that meet SLAs relating to cost, latency, and bandwidth. |\n| IP-optical coordination | Provides unified network visualization, correlation and optimization across IP and optical layers to enable greater resiliency and enhanced operations. |\n| Network orchestration | Can automatically create, deploy, update, terminate and delete virtual and containerized network functions, as well as all the data center networks between these network functions. |\n| Network slicing | Automates the creation, assurance and optimization of network slices in transport and core domains. |\n| Cloud interconnect | Automatically engineers and provisions the necessary transport services to connect network and service functions distributed in edge and core clouds. |\n\n# IoT Device Management\n\nThe Internet of Things Data Management (IoTDM) on OpenDaylight (ODL) project is about developing a data-centric middleware that will act as a oneM2M compliant IoT Data Broker and enable authorized applications to retrieve IoT data uploaded by any device. The ODL platform is used to implement the oneM2M data store which models a hierarchical containment tree, where each node in the tree represents an oneM2M resource. Typically, IOT devices and applications interact with the resource tree over standard protocols such as CoAP, MQTT, and HTTP.\n\n<img src=\"https://raw.githubusercontent.com/ETI-Software-Solutions/Postman-Collection-Images/main/ODL-IoTDM.jpg\">\n\nInitially, the oneM2M resource tree is used by applications to retrieve data. Possible applications are inventory/device management systems or big data analytic systems designed to make sense of the data collected. But, at some point, applications will need to configure the devices. Features and tools will have to be provided to enable configuration of the devices based on applications responding to user input, network conditions, or some set of programmable rules or policies possibly triggered by the receipt of data collected from the devices.\n\nThe ODL platform, with its rich unique cross-section of SDN capabilities, NFV, and now IOT device and application management, can be bundled with a targeted set of features and deployed anywhere in the network to give the network/service provider ultimate control. Depending on the use case, the ODL IOT platform can be configured with only IOT data collection capabilities where it is deployed near the IOT devices and its footprint needs to be small, or it can be configured to run as a highly scaled up and out distributed cluster with IOT, SDN and NFV functions enabled and deployed in a high traffic data center.\n\n### TSDR\n\n<img src=\"https://raw.githubusercontent.com/ETI-Software-Solutions/Postman-Collection-Images/main/OneM2M-TSDR.jpg\">\n\n<img src=\"https://raw.githubusercontent.com/CiscoDevNet/OneM2MPlugins/blob/master/onem2mTsdr/images/Slide1.jpg\">\n\n# Model-Driven Network Automation\n\n<img src=\"https://raw.githubusercontent.com/ETI-Software-Solutions/Postman-Collection-Images/main/model-driven-programmability.png\">\n\n### OpenDayLight’s MD-SAL Engine\n\nThe MD-SAL engine of **OpenDayLight** provides the model driven approach to network automation for major initiatives of **ONAP**, **oRAN**, **BroadbandForum**, etc. This provides the “**model driven**” part of the previously mentioned components.\n\nThe model driven service adaptation (abstraction) layer engine is a message-bus inspired extensible middleware component that provides messaging and data storage functionality based on data and interface models defined by application developers, i.e. user-defined models. Evidence of success is adoption by major open source and proprietary initiatives.\n\n#### MD-SAL\n\n- Defines the infrastructure and framework for applications and inter-application communications. This is achieved through common concepts, data modeling and message pattern utilization.\n- Provide common support for serialization and deserialization of payloads of common formats and transports.\n    \n\nThe **YANG** modeling language is used by the MD-SAL engine for interface and data definitions.\n\n#### Two API types are provided by the MD-SAL Engine\n\n- **Binding**: Provides the most compile time safety as classes are generated from the YANG data models to build both the northbound and southbound APIs.\n- **DOM**: Provides less compile time safety than binding, but are powerful.\n    \n\nModel-driven nature of the MD-SAL and DOM-based APIs allows for behind-the-scene API and payload type mediation and transformation to facilitate seamless communication between applications. By extension other components and applications are enabled to provide connectors / expose different set of APIs. The power is from deriving most of its functionality purely from models themselves. This can benefit all consumers of the model without modification!\n\nConsider **RESTCONF**, it is built on top of **MD-SAL** and exposes YANG-modeled application APIs transparently via HTTP and adds support for XML and JSON payload types. Harnessing all the permutations and combinations possible from a generic modeling language is staggering!\n\nThe BLS engine and generator were designed to harness MD-SAL exploitations.\n\n#### Basic concepts of YANG modeling\n\n- **Data Tree** All state-related data are modeled and represented as data tree, with possibility to address any element / subtree\n    - **Operational Data Tree** - Reported state of the system, published by the providers using MDSAL. Represents a feedback loop for applications to observe state of the network / system. The operational state parameters would be directly related to monitoring, BeamFly, and compliance reporting.\n    - **Configuration Data Tree** - Intended state of the system or network, populated by consumers, which expresses their intention. These are often understood as provisioning parameters.\n- **Instance Identifier** Unique identifier of node / subtree in data tree, which provides unambiguous information, how to reference and retrieve node / subtree from conceptual data trees.\n- **Notification** Asynchronous transient event which may be consumed by subscribers and they may act upon it.\n- **RPC** asynchronous request-reply message pair, when request is triggered by consumer, send to the provider, which in future replies with reply message.\n    \n\nIn MD-SAL terminology, the term ‘RPC’ is used to define the input and output for a procedure (function) that is to be provided by a provider, and mediated by the MD-SAL, that means it may not result in remote call. Because it can be a local call, doesn’t exclude local interaction.\n\nThe wisdom and maturity of OpenDayLight and primarily the MD-SAL engine becomes elegant and poetic, balanced on what can and should be compiled for safe execution and what should be fast and loose for power.\n\n#### Messaging Patterns\n\nMD-SAL provides several patterns for using a message broker, by design this is intended to transfer YANG modeled data between applications. The implementation provides for data-centric application integration and API-centric application integration.\n\n- Unicast Communication - Remote Procedure Calls - unicast between consumer and provider, consumer sends requests and provider responds asynchronously with a reply.\n- Publish / Subscribe - Notifications and data change events. Notifications being alerts, alarms, call home requests. Data Change Events propagating conceptual data tree change events to subscribers.\n- Transactional access to Data Tree - reading and writing to the conceptual data tree in isolation and the act of chaining them together.\n    \n\n##### Protocols\n\n- NetConf\n- OpenConfig\n- Openflow\n- BGP\n- SMNP\n- CLI\n    \n\n### Model Driven Networking (MDN)\n\nModel-driven SDN networks enable the programmability, through an external controller, which supports applications and policies built from SDN programming languages, thus breaking the traditional bind between control and data plane.\n\nModel-Driven Engineering (MDE) paradigm, called Model-Driven Networking (MDN). MDN relies on a Domain-Specific Modeling Language (DSML) to create SDN applications. The MDN raises the level of abstraction on development, thus reducing the complexity to implement SDN applications.\n\n#### Model Driven Network Topology\n\nDescribes the network.\n\n#### Model Driven Services Description\n\nDescribes network services and APIs.\n\n#### Model Driven Configuration of Network Elements\n\nDescribes the network element configuration provided and supported by: 1) manufacturers for physical elements or 2) software developers for virtual elements.\n\n#### Model Driven Telemetry of Network Elements\n\nDescribes the network element supported telemetry provided and supported by: 1) manufacturers for physical elements or 2) software developers for virtual elements.\n\n### Netconf/YANG\n\n**NETCONF/YANG** provides **a standardized way to programmatically update and modify the configuration of a network device**. ... **YANG** is the modeling language that describes the configuration changes. Whereas, **NETCONF** is the protocol that applies the changes to the relevant datastore (i.e running, saved etc) upon the device.\n\nThe downstream usage of **YANG** data model to construct **XML** requests for **NETCONF**. The upstream usage is to struct a **RESTCONF** **(REST) API**. Command library generation for our engine from the api-doc becomes more obvious. This is a simplistic explanation.\n\n**NETCONF** was specifically developed to support network configuration.\n\n**NETCONF** supports transactions, commit and rollback, **ACID** transactions. Transactions are indivisible.\n\nVendor Driven Independence, capabilities can be extracted from an exchange with the device and retrieved as schema from an RPC call. Yang models can be obtained from the device itself, from the discovery in a Call Home, or direct RPC call.\n\nHaving a Vendor Agnostic strategy for your enterprise is quite valuable.\n\nThis Technical Report defines YANG data models for the management interfaces to support  \nFTTdp. These models are to enable interoperability for FTTdp management.\n\n# Broadband Forum Highlights\n\n<img src=\"https://raw.githubusercontent.com/ETI-Software-Solutions/Postman-Collection-Images/main/bbf-fttdp.png\">\n\n| **YANG** | **Description** |\n| --- | --- |\n| bbf-yang-types | Common Broadband Forum YANG types. |\n| bbf-fastdsl | Interface objects supporting xDSL and G.fast. |\n| bbf-ghs | Standard parameters for G.fast startup and \"handshaking\" for G.fast or VDSL. |\n| bbf-vdsl | All standardized parameters for VDSL2 configuration, status, monitoring, performance management, testing and diagnostics. |\n| bbf-fast | All standardized parameters for G.fast configuration, status monitoring, performance management, testing and diagnostics. |\n| bbf-selt | All standardized parameters for configuration and test results of SingleEnded Line Test (SELT). |\n| bbf-melt | All standardized parameters for configuration and test results of Metallic Line Test (MELT). |\n| bbf-hardware-rpf-dpu | All standardized parameters for Reverse Power Feeding (RPF) configuration, status monitoring and event notification. |\n\n#### References\n\n| **Document** | **Title** | **Source** | **Year** |\n| --- | --- | --- | --- |\n| RFC2119 | Key words for use in RFCs to Indicate Requirement  <br>Levels | IETF | 1997 |\n| RFC7223 | A YANG Data Model for Interface Management | IETF | 2014 |\n| RFC6991 | Common YANG Data Types | IETF | 2013 |\n| RFC7950 | The YANG 1.1 Data Modeling Language | IETF | 2016 |\n| RFC8348 | A YANG Data Model for Hardware Management | IETF | 2018 |\n| TR-301 | Architecture and Requirements for Fiber to the  <br>Distribution Point | BBF | 2015 |\n| TR252i3 | xDSL Protocol-Independent Management Model | BBF | 2013 |\n| TR-371 | G.fast Vector of Profiles (VoP) | BBF | 2016 |\n| TR-298 | Management model for DSL line test | BBF | 2013 |\n| G.9700 | Fast access to subscriber terminals (G.fast) –  <br>Power spectral density specification | ITU-T | 2014 |\n| G.9701 | Fast access to user terminals (FAST) - Physical  <br>layer specification | ITU-T | 2014 |\n| G.977.1 | Physical layer management for digital subscriber  <br>line (DSL) transceivers | ITU-T | 2012 |\n| G.997.2 | Physical layer management for G.fast transceivers | ITU-T | 2015 |\n| G.994.1 | Handshake procedures for digital subscriber line  <br>(DSL) transceivers | ITU-T | 2012 |\n| G.996.2 | Single-ended line testing for digital subscriber lines  <br>(DSL) | ITU-T | 2009 |\n| TR-383 | Common YANG Modules for Access Networks | BBF | 2018 |\n\n#### Definitions\n\n| **Definition** | **Description** |\n| --- | --- |\n| DP | Distribution Point. The location in the Fiber To The Distribution Point architecture that provides the distribution of user traffic from fiber backhaul to  <br>copper drop points. |\n| DPU | Distribution Point Unit. The node that resides at the DP in the Fiber To The Distribution Point architecture. |\n| FTTdp | Fiber To The Distribution Point. |\n| IoTDM | Internet-of-Things Device Management |\n| PMA | Persistent Management Agent. A management proxy for the DPU that caches provisioning and last known status information for the DPU. |\n\n#### Abbreviations\n\n| **Abbreviation** | **Description** |\n| --- | --- |\n| FAST | Fast Access to Subscriber Terminals |\n| MELT | Metallic Line Test |\n| SELT | Single Ended Line Test |\n| VoP | Vector of Profiles |\n| xDSL | Any Digital Subscriber Line Service |\n\n#### ConfD / tail-f.com (Cisco Company)\n\nLarge service providers, such as AT&T and Deutsche Telekom prefer the NETCONF and YANG standards.\n\n### **For service and custom configurations for this or other technologies**\n\n# Contact Email: [info@etisoftware.com](https://mailto:info@etisoftware.com)","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"11528456","team":1088250,"collectionId":"b7664975-9b8e-4c7d-acff-ad20350a37b2","publishedId":"UVsJwS7S","public":true,"publicUrl":"https://odl.etisoftware.com","privateUrl":"https://go.postman.co/documentation/11528456-b7664975-9b8e-4c7d-acff-ad20350a37b2","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.11.6","publishDate":"2025-01-10T19:53:54.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/52de83af874f462001674ddb9bdc1bfca2ae7a02c72a76650e1d6907bc6253c0","favicon":"https://etisoftware.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://odl.etisoftware.com/view/metadata/UVsJwS7S"}