1. 控制器和网络仿真器选择… 3
2. 基本硬件要求… 3
3. 环境和软件要求… 3
4. onos安装说明… 3
4.1. 安装步骤如下… 3
4.1.1. 更新源… 3
4.1.2. 相关工具安装(git, curl, zip)… 4
4.1.3. 下载安装jdk8(适用于onos2.2之前的版本)… 4
4.1.3.1. 命令安装(如果方法4.1.3.1安装失败请看4.1.3.2) 4
4.1.3.2. tar包安装… 5
4.1.4. 获取onos源码… 6
4.1.5. 设置onos环境变量… 6
4.1.6. 编译ONOS. 6
4.1.7. 测试onos. 7
4.1.8. 运行onos. 7
4.1.9. 登陆onos cli 7
4.1.10. 登陆onos gui(onos目标机器ip:10.10.168.227) 8
5. 安装mininet. 8
5.1. sudo apt-get install mininet. 8
5.2. 下载mininet源码… 9
5.3. mininet连接onos控制器… 9
5.4. 登录onos gui, 现象如下图所示:… 10
6. 基本功能验证… 10
6.1. 两主机ping. 10
6.2. ping报文验证… 11
6.3. 多用户… 13
6.3.1. 修改配置文件添加… 13
6.3.2. onos cli添加… 14
6.3.2.1. 查看现有用户… 14
6.3.2.2. 添加用户foo. 14
6.3.2.3. 删除用户foo. 16
6.4. 集群创建… 17
6.4.1. 通过集成环境创建… 17
6.4.1.1. 下载安装virtualbox. 17
6.4.1.2. 下载onos-tutorial-1.15.0 ova文件… 17
6.4.1.3. 打开virtualbox并导入onos-tutorial-1.15.0创建虚拟机(由于我已经创建成功,不能提供截图了) 17
6.4.1.4. 点击setup onos cluster图标创建一个集群… 19
6.4.1.5. 通过nodes命令查看onos控制器个数… 20
6.5. 流量可视化… 20
6.5.1. 点击spine leaf topolgy图标创建拓扑… 20
6.5.2. 查看gui拓扑… 21
6.5.3. 让两台主机通信并观察流量可视化… 22
6.6. 多控制器故障转移(主备模式)… 23
onos+mininet
2核cpu
2G ram
10 Gb硬盘
1一个nic
1、所有的安装和运行都是基于非root用户
2、需连接互联网,方便下载所需的安装包
3、ubuntu-16.04.6-desktop-amd64
4、java8
5、curl
6、git
7、maven(mvn编译需要的包)
8、karaf(mvn编译需要的包)
onos 1.14或更高的版本使用bazel构建工具编译,但是需要,我是没有编译通过。
onos 1.13 或更早的版本使用mvn或buck编译,这两种方法我都试过,能成功编译通过,在此我介绍用buck编译的方法。
sudo apt-get update
sudo apt-get upgrate
sudo apt-get install git
sudo apt-get install curl
sudo apt-get install zip
\1. add the ppa
sudo add-apt-repository ppa:webupd8team/java
\2. update and install the installer script:
sudo apt update; sudo apt install oracle-java8-installer
\3. 在安装过程中,您必须接受java许可证才能继续下载和安装java二进制文件。
\4. 查看java版本
java –version
\5. 设置java环境变量
sudo apt install oracle-java8-set-default
1、在jdk官网下载jdk-8uxxx-linux-x64.tar.gz(链接如下)
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
注册账户登陆并下载jdk-8u11-linux-x64.tar.gz
sudo tar xzvf jdk-8u211-linux-x64.tar.gz -c /usr/lib/jvm
cd /usr/lib/jvm/
2、添加以下环境变量到~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_211
export JRE_HOME=${java_home}/jre
export CLASSPATH=.: j a v a h o m e / l i b : {java_home}/lib: javahome/lib:{jre_home}/lib
export PATH= j a v a h o m e / b i n : {java_home}/bin: javahome/bin:PATH
3、执行source ~/.bashrc
cd
git clone https://gerrit.onosproject.org/onos
添加以下两行到~/.bashrc
export ONOS_ROOT=~/onos
source $ONOS_ROOT/tools/dev/bash_profile
然后执行source ~/.bashrc
cd onos
git checkout -b 1.13.8 1.13.8
$onos_root/tools/build/onos-buck build onos --show-output
编译时间较长,请耐心等待
$onos_root/tools/build/onos-buck test
测试通过!
tools/build/onos-buck run onos-local – clean debug
占用终端并停留在如下界面
打开新的终端并键入命令tools/test/bin/onos localhost登陆onos cli
http://localhost:8181/onos/ui
http://10.10.168.227:8181/onos/ui
登录之后如下图
cd
mkdir sdn
git clone git://github.com/mininet/mininet
在连接之前先启动onos控制器
cd /home/wxpeng/sdn/mininet/custom
执行sudo mn --custom topo-2sw-2host.py --topo mytopo --controller=remote,ip=10.10.168.227
此拓扑有两台交换机, 两台主机
按h键显示主机,此时主机不能在gui中显示出来, 回到mininet界面并执行pingall
回到mininet界面执行h1 ping h2
此时是能ping通的,要么添加了h1到h2的intents, 要么激活了fwd应用
登录onos cli,执行apps –s –a查看激活的应用, 执行intents查看添加的intents,如下图所示:
可以看出是激活了fwd应用, 没有相关的intents
通过onos gui也能实现应用的添加和暂停以及添加相关的intents,此处不作说明。
在mininet界面执行xterm h1 h2,为h1, h2启动两个终端,如下图所示:
在h1终端执行ping –c3 10.0.0.2, 在h2终端执行tcpdump –i h2-eth0 –vv
修改users.properties
path:~/onos/tools/package/etc
vim users.properties
按照格式添加上图标记的一行,保存退出, 重新运行onos
用新用户和密码登陆onos gui
jaas:realm-list
jaas:realm-manage --index 1
jaas:user-list
jaas:user-add foo bar
jaas:group-add foo admingroup
jaas:update
jaas:realm-manage --index 1
jaas:user-list
jaas:user-delete foo
jaas:group-delete foo admingroup
jaas:update
jaas:realm-manage --index 1
jaas:user-list
jaas:cancel
logout再次用foo登录onos gui
https://www.virtualbox.org/wiki/downloads
https://drive.google.com/file/d/1jcgujjdttbhnnbfzc7suk52rmmdbvury/view
虚拟机创建成功后运行虚拟机
通过onos gui也能得知,下面点击onos gui图标登录gui
可见有3台onos控制器
在mininet界面执行h11 ping h41
如上图所示ping不通,在onos cli 激活fwd应用
再次查看mininet,ping成功
在onos cli 键入devices, nodes, roles 分别查看设备信息,控制器信息以及设备主备情况
可知现在3台控制器分别是其中2台设备的主控制器
点击onos cli图标登录onos cli,键入shutdown命令关闭一台控制器(默认关闭的是172.17.0.5控制器), ,然后在gui界面查看控制器间故障转移现象