踩了很多坑,其中很多错误也没整明白怎么回事,实在搞不了就重装系统,经过多次测试,找到了一个合适的安装步骤安装ONNO 1.13.2
此步骤安装mininet官网第二种安装方法安装即可。
Option2
sudo apt-get update
sudo apt install curl
此步骤按照安装ONOS文档《Guides——Developer Quick Start》教程安装(现在wiki上已经更新成使用bazel安装)。安装时需要注意将软件源换成清华的源,否则编译过程中会出现Unable to download的报错。
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
git
zip
curl
unzip # CentOS installations only
python # Version 2.7 is required
git clone https://gerrit.onosproject.org/onos
cd onos
export ONOS_ROOT=$(pwd)
tools/build/onos-buck build onos --show-output
上面源码clone下来后可以通过git tag
、git checkout
选择特定版本
tools/build/onos-buck run onos-local -- clean debug # 'clean' to delete all previous running status; 'debug' to enable Remote Debug function
tools/test/bin/onos localhost
onos> app activate org.onosproject.openflow
onos> app activate org.onosproject.fwd
onos> app activate org.onosproject.openflow
onos> app activate org.onosproject.fwd
sudo mn --custom test.py --topo mytopo --controller remote,ip=127.0.0.1
#!/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)
按前几步完成之后,在Web GUI上无法显示host,解决办法:
mininet>pingall