1. Введение

1.1. Что из себя представляет RUNOS

RUNOS предназначен для централизованного управления программно-конфигурируемыми сетями (SDN) в корпоративном сегменте. Он обладает всей необходимой функциональностью для управления корпоративными сетями: надежность и отказоустойчивость, балансировка нагрузки, согласованное видение всей сети, работа с распределенными сетевыми приложениями, безопасность и противодействие внешним нагрузкам.

1.2. Быстрый старт

RUNOS написан под операционную систему Ubuntu. Рекомендуется устанавливать на версию не ниже ubuntu 15.10.

1.2.1. Зависимости

Сначала необходимо установить все зависимости

$ sudo apt-get install build-essential cmake autoconf libtool \
    pkg-config libgoogle-glog-dev libevent-dev \
    libssl-dev qtbase5-dev libboost-graph-dev libboost-system-dev \
    libboost-thread-dev libboost-coroutine-dev libboost-context-dev \
    libgoogle-perftools-dev curl \

Также необходимо установить javascript пакеты

# If you have old versions of Node.js or UglifyJS,
# you should remove them
$ sudo npm un uglify-js -g
$ sudo apt-get remove node nodejs npm
# Install Node.js, npm and UglifyJS via package manager
# (according to https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager)
$ curl -sL https://deb.nodesource.com/setup | sudo bash -
$ sudo apt-get install nodejs
$ sudo npm install uglify-js -g

RUNOS требует библиотеку libevent2.1.5 которая еще в бета версии на данный момент. Ее надо установить вручную

# Get source code
$ wget https://github.com/libevent/libevent/releases/download/release-2.1.5-beta/libevent-2.1.5-beta.tar.gz
$ tar -xvf libevent-2.1.5-beta.tar.gz
$ cd libevent-2.1.5-beta
# And build
$ ./configure
$ make
$ sudo make install

1.2.2. Сборка RUNOS

Установка RUNOS из исходного кода

# Initialize third-party libraries
$ third_party/bootstrap.sh

# Create out of source build directory
$ mkdir -p build; cd build
# Configure (if you use g++)
$ CXX=g++-5.2 cmake -DCMAKE_BUILD_TYPE=Release ..
# OR configure (otherwise)
$ cmake -DCMAKE_BUILD_TYPE=Release ..

# Build third-party libraries
$ make prefix -j2
# Build RuNOS
$ make -j2

1.2.3. Запуск RUNOS

Setup environment variables (run once per shell session):

# Run it INSIDE build directory
$ source ../debug_run_env.sh

Run the controller:

$ cd .. # Go out of build dir
$ build/runos

You can use this arguments for MiniNet:

$ sudo mn --topo $YOUR_TOPO --switch ovsk,protocols=OpenFlow13 \
            --controller remote,ip=$CONTROLLER_IP,port=6653

To run web UI, open the following link in your browser:

http://$CONTROLLER_IP:8000/topology.html

Be sure your MiniNet installation supports OpenFlow 1.3. See this for more instructions.

1.3. Виртуальная Машина

Вы так же можете воспользоваться виртуальной машиной с предустановленным RUNOS.

1.4. Docker

Comming soon!!!

1.5. Конфигурационный файл

RUNOS можно настраивать с помощью файла network-settings.json, в котором можно указать слушающий порт, количество потоков, пользовательские конфигурации приложений и т.д.