README.md 3.53 KB
Newer Older
1
# goSDN [![coverage report](https://code.fbi.h-da.de/cocsn/gosdn/badges/master/coverage.svg)](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) [![pipeline status](https://code.fbi.h-da.de/cocsn/gosdn/badges/master/pipeline.svg)](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master)
Martin Stiemerling's avatar
Martin Stiemerling committed
2

Manuel Kieweg's avatar
Manuel Kieweg committed
3

4
`goSDN` is a prototypical approach to build a model driven multi-vendor SDN controller.
Manuel Max Kieweg's avatar
Manuel Max Kieweg committed
5

6
# Table of Contents
Manuel Kieweg's avatar
Manuel Kieweg committed
7

8
9
10
11
12
13
14
15
16
17
- [Overview](#overview)
- [Concepts](#concepts)
- [Installing](#installing)
- [Getting Started](#getting-started)
  * [k8s](#k8s)
  * [Using the goSDN CLI](#using-the-cli)
  * [Example](#example)
- [Contributing](CONTRIBUTING.md)
- [License](LICENSE)
- [CI Status](#ci-status)
Manuel Kieweg's avatar
Manuel Kieweg committed
18

19
# Overview
Manuel Kieweg's avatar
Manuel Kieweg committed
20

21
`goSDN` is also an application that will allow you to manage your multi-vendor network using one unified controller.
Manuel Kieweg's avatar
Tapi    
Manuel Kieweg committed
22

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
`goSDN` provides:
* Model driven device representation
* Native multi vendor support
* Multi controller environments

# Concepts

The `goSDN` core - also called `nucleus` - is a lightweight library that manages principal network domains and provides southbound interface operations for orchestrated networking devices.

## 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
41
You can install the latest release of `goSDN` locally using the `go get` command. Since the repository and some dependencies are not publicly available you have to modify your git config first:
42
43
44
```sh
> git config --global url."git@code.fbi.h-da.de:".insteadOf "https://code.fbi.h-da.de"
> go get code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn
Manuel Kieweg's avatar
Tapi    
Manuel Kieweg committed
45
```
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

To install the development version you need to clone the repo and use `go install` to build and install the binary:
```sh
# If you haven't cloned the repo yet
> git config --global url."git@code.fbi.h-da.de:".insteadOf "https://code.fbi.h-da.de"
> cd $GOPATH/src
> git clone git@code.fbi.h-da.de:cocsn/gosdn.git

# checkout the develop branch (or any other branch)
> cd $GOPATH/src/code.fbi.h-da.de/cocsn/gosdn
> git checkout develop
> go install ./cmd/gosdn
```

Now you can start `goSDN` locally using the `gosdn` command or [use the CLI](#using-the-cli) to interact with a running `goSDN` instance.
61
62
63
64
65
66
67
68
69
70
71
72

# Getting Started
## k8s

We have an instance of `goSDN` for each the latest master and current develop branch running on the department's k8s cluster. These endpoints can be accessed using the `gosdn cli` command. If anything breaks please file an [issue](https://code.fbi.h-da.de/cocsn/gosdn/-/issues/new).

## Using the CLI

The `gosdn cli` command allows you to interact with a running `goSDN` controller. Use `gosdn help cli` to print the available commands and flags.

## Example

Manuel Kieweg's avatar
Manuel Kieweg committed
73
[![asciicast](https://asciinema.org/a/dfrDlFQt5DPlG9HDyetdmeEW8.svg)](https://asciinema.org/a/dfrDlFQt5DPlG9HDyetdmeEW8)
Manuel Kieweg's avatar
Tapi    
Manuel Kieweg committed
74

75
# CI Status
Manuel Kieweg's avatar
Manuel Kieweg committed
76

77
78
79
80
| Master | Develop |
| ------ | ------ |
| [![coverage report](https://code.fbi.h-da.de/cocsn/gosdn/badges/master/coverage.svg)](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) | [![coverage report](https://code.fbi.h-da.de/cocsn/gosdn/badges/develop/coverage.svg)](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/develop) |
| [![pipeline status](https://code.fbi.h-da.de/cocsn/gosdn/badges/master/pipeline.svg)](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) | [![pipeline status](https://code.fbi.h-da.de/cocsn/gosdn/badges/develop/pipeline.svg)](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/develop) |