Ubuntu16.04下基于BUCK安装onos

踩了很多坑,其中很多错误也没整明白怎么回事,实在搞不了就重装系统,经过多次测试,找到了一个合适的安装步骤安装ONNO 1.13.2

1、安装mininet(需要可以安装)

此步骤安装mininet官网第二种安装方法安装即可。
Option2

2、安装curl(如果未安装的话)

sudo apt-get update
sudo apt install curl

3、安装onos

此步骤按照安装ONOS文档《Guides——Developer Quick Start》教程安装(现在wiki上已经更新成使用bazel安装)。安装时需要注意将软件源换成清华的源,否则编译过程中会出现Unable to download的报错。

3.1、安装Java依赖(如果已有Java 环境可跳过该步骤)

sudo apt-get install software-properties-common -y && \
sudo add-apt-repository ppa:webupd8team/java -y && \
sudo apt-get update && \
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections && \
sudo apt-get install oracle-java8-installer oracle-java8-set-default -y

3.2、其他依赖(检查是否安装,若未安装,自行安装)

git
zip
curl
unzip # CentOS installations only
python # Version 2.7 is required

3.3、下载ONOS源码&创建ONOS

git clone https://gerrit.onosproject.org/onos
cd onos
export ONOS_ROOT=$(pwd)
tools/build/onos-buck build onos --show-output

上面源码clone下来后可以通过git taggit checkout选择特定版本

3.4、运行ONOS

tools/build/onos-buck run onos-local -- clean debug  # 'clean' to delete all previous running status; 'debug' to enable Remote Debug function

3.5、登录CLI

tools/test/bin/onos localhost

3.6、通过CLI激活应用程序

onos> app activate org.onosproject.openflow
onos> app activate org.onosproject.fwd

4、激活openflow APP

onos> app activate org.onosproject.openflow
onos> app activate org.onosproject.fwd

5、mininet与onos测试

sudo mn --custom test.py --topo mytopo --controller remote,ip=127.0.0.1

test.py

#!/usr/bin/env python
# encoding: utf-8
from mininet.topo import Topo
 
class MyTopo(Topo):
    def __init__(self):
        # Initialize topolpgy
        Topo.__init__(self)
        L1=2
        L2=L1*2
        L3=L2
    # core ovs list
        c=[]
    # the aggregation ovs list
        a=[]
    # the edge ovs list
        e=[]
    # add core ovs
        for i in range(L1):
            sw=self.addSwitch('c{}'.format(i+1))
            c.append(sw)
    # add aggregation ovs list
        for i in range(L2):
            sw=self.addSwitch('a{}'.format(L1+i+1))
            a.append(sw)
    # add edge ovs
        for i in range(L3):
            sw=self.addSwitch('e{}'.format(L1+L2+i+1))
            e.append(sw)
    # add links bewteen core and aggregation ovs
        for i in range(L1):
            sw1=c[i]
            for sw2 in a:
                self.addLink(sw2,sw1)
    # add links bewteen aggeregation anf edge ovs
        for i in range(0,L2,2):
            for sw1 in a[i:i+2]:
                for sw2 in e[i:i+2]:
                    self.addLink(sw1,sw2)
    # add hosts and its links with edge ovs
        count=1
        for sw1 in e:
            for i in range(2):
                host=self.addHost('h{}'.format(count))
                self.addLink(sw1,host)
                count+=1
 
topos={'mytopo':(lambda:MyTopo())}

上述代码中只用了三个函数:
1、增加主机

addHost('hostname')

2、增加交换机

addSwitch('switchname')

3、增加链路

addLink(node1,node2,node1_port,node2_port)

6、GUI上不显示主机

按前几步完成之后,在Web GUI上无法显示host,解决办法:

mininet>pingall

你可能感兴趣的:(Ubuntu16.04下基于BUCK安装onos)