OpenDayLight学习之路(一):OpenDayLight基本环境搭建
事先声明:本人为小白,第一次接触OpenDayLight(以下简称ODL),本文仅为了记下学习经历。
一、基本环境
OS:Debian testing/stretch x86_64 Linux 4.0.0-2-amd64
JVM:Oracle jdk 8u51
ODL:Lithium Pre-built
VM:Vmware for Linux
二、获取和安装ODL
1、下载ODL并运行
因为是第一次接触ODL,所以我选择了下载pre-built版本,并没有自己编译,需要自己编译的可以查看官方wiki相关页面。
在ODL的网站http://www.opendaylight.org/software/downloads下载最新版Lithium的zip或tar包:
Documentation:解压出ODL后,cd进ODL目录,执行"./bin/karaf"。
不过这里会提示Exception in thread "JMX Connector Thread [service:jmx:rmi://0.0.0.0:44444/jndi/rmi://0.0.0.0:1099/karaf-root]" java.lang.RuntimeException: Could not start JMX connector server...等错误。
我们需要修改"./etc/org.apache.karaf.management.cfg"文件,将
rmiRegistryHost = 0.0.0.0
rmiServerHost = 0.0.0.0
修改为:
rmiRegistryHost = 127.0.0.1
rmiServerHost = 127.0.0.1
按理说0.0.0.0在java网络编程中代表的是本机所有ip,但是不知道为什么会出现错误。
接下来再运行./bin/karaf看到如下界面,并没有提示错误就对了。
2、安装功能组件
ODL的许多功能需要一些相关组件来完成,比如说webUI。
安装组件的command为:
feature:install <feature1-name> <feature2-name> ... <featureN-name>
列出可用组件:
feature:list
列出已经安装的组件:
feature:list -i
同样可以使用管道和grep筛选出你感兴趣的内容,比如:
A.安装REST APIs支持
REST APIs是SDN控制器北向接口的一个通用API。
feature:install odl-restconf
B.安装DLUX web interface
具体可以参见wiki:https://wiki.opendaylight.org/view/OpenDaylight_DLUX:DLUX_Karaf_Feature
feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs odl-dlux-core
安装完成后打开http://localhost:8181/index.html,就可以看到如下的登录界面:
用户名和口令都是admin
登录进去之后就可以看到如下界面:
注:如果你只安装了odl-dlux-core组件,就只会看到Topology选项,要其他选项的可以安装
odl-dlux-node odl-dlux-yangui odl-dlux-yangvisualizer 等
不过现在topology和node是没有任何东西的,因为ODL Control没有连接任何交换机。
有关更多的组件信息可以参阅bk_getting_started_guide或者使用feature:list。需要注意的是:
In the table a compatibility value of all means that it can be run with other features. A
value of self+all indicates that the feature can be installed with other features with a value
of all, but may interact badly other features with a value of self+all.
即不要安装多个标有self+all的组件。
二、使用Mininet搭建虚拟交换机
这部分可以参见wiki。
1. 这里我选择使用Mininet VM image,相关网站:http://mininet.org/download/
下载好http://mininet.org/download/的zip文件解压后,导入到vmware,并启动虚拟机,username和psw都是mininet。
最好修改虚拟机的网卡模式为桥接,使mininet和ODL在一个网段,方便mininet连接ODL。
2.在mininet上建立一个虚拟交换机网络并连接到ODL
mininet@mininet-vm:~$ sudo mn --controller=remote,ip=192.168.0.101 --topo tree,3 *** Creating network *** Adding controller *** Adding hosts: h1 h2 h3 h4 h5 h6 h7 h8 *** Adding switches: s1 s2 s3 s4 s5 s6 s7 *** Adding links: (h1, s3) (h2, s3) (h3, s4) (h4, s4) (h5, s6) (h6, s6) (h7, s7) (h8, s7) (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s5, s6) (s5, s7) *** Configuring hosts h1 h2 h3 h4 h5 h6 h7 h8 *** Starting controller *** Starting 7 switches s1 s2 s3 s4 s5 s6 s7 *** Starting CLI: mininet>上面的命令执行完成后就自动建立了一个交换机网络并连接到了ODL,有关mininet的更多使用方法将会在以后学习。
现在打开webui就可以看到刚刚建立的网络拓扑和节点信息了。
总结:
用了半天的时间总算把opendaylight搞成这样了,后面会学习一下mininet的使用,REAT APIs的使用,通过抓包分析openflow协议等,争取写出一个自己的SDN控制器