µonos for developers...2019/09/02 · • aims to provide a comprehensive platform for operations...
TRANSCRIPT
![Page 1: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/1.jpg)
µONOS for Developers
Andrea Campanella, Jordan HaltermanOpen Networking Foundation
<andrea,jordan>@opennetworking.org
![Page 2: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/2.jpg)
Overview • μONOS architecture overview
• Code structure
• Development environment
• Deployment
• Development workflow
• How to contribute
![Page 3: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/3.jpg)
What is µONOS?
• µONOS is the next generation architecture of ONOS
• Aims to provide a comprehensive platform for operations• configuration, control, monitoring, verification, live update,
diagnostics
• Aims to provide first-class support for 5G RAN edge
• Based on µ-services, gRPC interfaces, next-gen SDN interfaces• e.g. gNMI, gNOI, P4Runtime, gRIBI, etc.
• Cloud-native (Kubernetes) and aimed at edge-cloud
![Page 4: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/4.jpg)
µONOS GitHub Repositories
• Multiple repos that reflect the component architecture• Components built/packaged independently• Current repos include:
onos-config, onos-topo, onos-control,onos-gui, onos-cli, onos-test
• More refactoring to follow• Everything hosted under https://github.com/onosproject
![Page 6: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/6.jpg)
Consistency
Tools, operations, and processes are consistent across all subsystems and their repositories
Learn the workflow and tools for one service:contribute to all the microservices/repos
![Page 7: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/7.jpg)
7
µONOS Deployment
network
k/v
k/v
k/v
cfggNMI/gNOI
gNMI/gNOI
ctlP4Runtime
P4Runtime
ctlP4Runtime
P4Runtime
controlP4Runtime
P4RuntimeconfiggNMI/gNOI
gNMI/gNOItopologyNetModel
NetDiscotopologyNetModel
NetDisco
discovery
certsNetCerts
certsNetCerts k8s
adaptergNMI/gNOI/P4Runtime
various protocolsadaptergNMI/gNOI/P4Runtime
various protocols
rangRNI
rangRNI
ranSD-RAN
gRNI
guigRPC
cligRPCztp
gNMI/gNOI/P4Runtime
gRPC
app XgRPC
gRPC
app YgRPC
gRPC
. . .
discoverydiscovery
![Page 8: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/8.jpg)
µONOS Deployment
![Page 9: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/9.jpg)
µONOS Deployment
![Page 10: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/10.jpg)
µONOS and Atomix• Cloud native database
• Kubernetes controller for database management• Atomix nodes for persistence and replication
• Implements Protobuf data structures API• Atomix Go client used in Go services for persistence/fault
tolerance • https://github.com/atomix
![Page 11: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/11.jpg)
Golang Language• Significant momentum in ecosystem• Excellent integration with gRPC and native Supports
streaming APIs• no JVM or JIT compiler• Go has garbage collection but is less prone to memory leaks,
faster and safer code development• GO GC cycles do require STW pauses which does have
some impact with respect to apps that have real-time requirements; however:
• Current (2017+) releases of Go runtime have ~500µs STW pauses
• Real-time sensitive portions in C/C++ if required and Go runtime using foreign function interface (FFI)
![Page 12: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/12.jpg)
Developer EnvironmentStandard Go project structure
• https://github.com/golang-standards/project-layout
Dependency management and build done through go modules
• GO111MODULE=on• use go.sum and go.mod
![Page 13: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/13.jpg)
Developer Environment (Docker)
Go code runs in a docker container
Tagged images easily downloadable from dockerhub: https://hub.docker.com/u/onosproject
Build your own images as you change code: `make images` in all of the uploaded repos
![Page 14: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/14.jpg)
Developer Environment
Kubernetes manages the deployment of docker containers:• Helm Charts• Onit test tools
Kubernetes is usually installed/run:• bare-metal• Kind on any docker capable env:
https://kind.sigs.k8s.io
![Page 15: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/15.jpg)
Developer Environment
In short:
![Page 16: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/16.jpg)
ONIT Overview
ONIT: ONOS Integration Test framework• CLI for development and testing on Kubernetes• Deploy µONOS in a Kubernetes cluster • Run integration tests:
• end to end “black-box” testing of µONOS subsystems • E.g. subscription, get, set, model plugins …
• Run benchmarks• Remote debugging via delve• Deploy and manage applications inside k8s
https://github.com/onosproject/onos-test
![Page 17: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/17.jpg)
ONIT Development Workflow
![Page 18: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/18.jpg)
ONIT Development Workflow
![Page 19: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/19.jpg)
ONIT Development Workflow
![Page 20: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/20.jpg)
ONIT Development Workflow
![Page 21: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/21.jpg)
ONIT Development Workflow
![Page 22: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/22.jpg)
ONIT Development Workflow
![Page 23: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/23.jpg)
ONIT Development Workflow
![Page 24: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/24.jpg)
ONIT Development Workflow
![Page 25: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/25.jpg)
ONIT Development Workflow
![Page 26: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/26.jpg)
ONIT Development Workflow
![Page 27: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/27.jpg)
Contributing to µONOS
Follow the developer workflow:https://github.com/onosproject/onos-config/blob/master/docs/dev_workflow.md4 main sections• Fork the project, download the code, create a local development
environment• Code, Code, Code then build and test• Submit a pull request• work with the community on
comments and enhancements• Get your PR merged and
see your code in action
![Page 28: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/28.jpg)
Github
µONOS uses GitHub as an all in one integrated tool forcode, issues, comments, documentation, PR, CI/CD:• Avid tool multiplication and learning curve• exploit all in one integration• one stop shop for everything related to the project• automated CI/CD integration on PRs with Travis
![Page 29: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/29.jpg)
Github and Travis
Travis, simple, well know, ubiquitous CI/CD tool
µONOS Travis workflow:• Build docker images based on submitted changes• Deploy Kind cluster with new docker images• Integrations tests • License• Code checkstyle and lint (golangci-lint)
![Page 30: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/30.jpg)
How to get involved
• Join #micro-onos channel on onosproject.slack.com
• Attend ONOS TST meetings• bi-weekly Wednesdays at 9:00 PST/PDT
• Fork and send pull-requests to https://github.com/onosprojectrepositories
• Participate in [email protected] mailing list
![Page 31: µONOS for Developers...2019/09/02 · • Aims to provide a comprehensive platform for operations • configuration, control, monitoring, verification, live update, diagnostics •](https://reader030.vdocuments.site/reader030/viewer/2022040608/5ec566d703829f7f455dd82a/html5/thumbnails/31.jpg)
Thank You
Follow Up Links:µONOS repositoriesAtomix repositories