Skip to content
Snippets Groups Projects

Develop

Merged Ghost User requested to merge develop into master
2 files
+ 105
0
Compare changes
  • Side-by-side
  • Inline
Files
2
README.md 0 → 100644
+ 105
0
# goSDN [![coverage report](https://code.fbi.h-da.de/danet/gosdn/badges/master/coverage.svg)](https://code.fbi.h-da.de/danet/gosdn/-/commits/master) [![pipeline status](https://code.fbi.h-da.de/danet/gosdn/badges/master/pipeline.svg)](https://code.fbi.h-da.de/danet/gosdn/-/commits/master)
`goSDN` is a prototypical approach to build a model driven multi-vendor SDN controller.
# Table of Contents
- [Overview](#overview)
* [Example](#example)
* [Structure](#structure)
- [Concepts](#concepts)
- [Installing](#installing)
- [Getting Started](#getting-started)
* [Playground](#playground)
- [Contributing](CONTRIBUTING.md)
- [License](LICENSE)
- [CI Status](#ci-status)
# Overview
`goSDN` is also an application that will allow you to manage your multi-vendor network using one unified controller.
`goSDN` provides:
* Model driven device representation
* Native multi vendor support
* Multi controller environments
## Example
A simple showcase how the controller can be adressed after `make containerlab-start` is shown below:
![](gosdn-cli-showcase.webm)
## Structure
- The `api` is a representation of the `controllers` Northbound-Interface and
can be used to communicate with the `controller`.
- The `cli` is the CLI to manage the `controller`.
- `csbi` is the implementation of Containerised-Southbound-Interfaces (based on
the idea and the proof of concept of Manuel Kieweg). Allowing to request
capabilities of ONDs and generate a containerised Southbound-Interface based
on them.
- `controller` represents the `goSDN-controller`.
# Concepts
The `goSDN` controllers core - also called `nucleus` - is a lightweight library that
manages principal network domains and provides southbound interface operations
for orchestrated networking devices.
In addition we provide a simple Northbound-API for the controller ()
## Principal Networking Domain (PND)
The PND is the single source of truth within a network. Its state is held and
maintained by the controller. Any configuration of an OND has to be applied by
the PND.
## Orchestrated Networking Device (OND)
Any device directly configured by `goSDN`
# Installing
`goSDN` provides a `Makefile` for all common use cases.
```sh
# build the application files for goSDN, cSBI orchestrator, gosdnc (CLI).
make build
# build the Dockerfiles for goSDN, cSBI orchestrator, gosdnc (CLI).
make container
```
Now you can start `goSDN` locally by moving to the `artifacts` folder and
running `./gosdn` from the shell.
# Getting Started
If you want to use the the [playground](#playground) you have to make sure you have
[containerlab](https://containerlab.dev/install/) installed on your system.
## Playground
With the help of [containerlab](https://containerlab.dev/) we provide a simple
test environment to play around with.
The environment contains two [Arista
cEOS](https://www.arista.com/en/products/software-controlled-container-networking),
a goSDN, a cSBI orchestrator and a gNMI target.
```sh
# starts the containerlab topology which contains two Arista cEOS, an cSBI orchestrator, a goSDN controller and gNMI target.
make containerlab-start
# stop the containerlab topology
make containerlab-stop
```
## CLI
Information about how to use the CLI is provided in the `cli` folder, see [here](cli#usage).
# CI Status
| Master | Develop |
| ------ | ------ |
| [![coverage report](https://code.fbi.h-da.de/danet/gosdn/badges/master/coverage.svg)](https://code.fbi.h-da.de/danet/gosdn/-/commits/master) | [![coverage report](https://code.fbi.h-da.de/danet/gosdn/badges/develop/coverage.svg)](https://code.fbi.h-da.de/danet/gosdn/-/commits/develop) |
| [![pipeline status](https://code.fbi.h-da.de/danet/gosdn/badges/master/pipeline.svg)](https://code.fbi.h-da.de/danet/gosdn/-/commits/master) | [![pipeline status](https://code.fbi.h-da.de/danet/gosdn/badges/develop/pipeline.svg)](https://code.fbi.h-da.de/danet/gosdn/-/commits/develop) |
Loading