OpenDayLight基本环境搭建

时间:2022-06-09 20:39:21

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看到如下界面,并没有提示错误就对了。

OpenDayLight基本环境搭建

2、安装功能组件

ODL的许多功能需要一些相关组件来完成,比如说webUI。

安装组件的command为:

feature:install <feature1-name> <feature2-name> ... <featureN-name>

列出可用组件:

feature:list

列出已经安装的组件:

feature:list -i

同样可以使用管道和grep筛选出你感兴趣的内容,比如:

OpenDayLight基本环境搭建

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,就可以看到如下的登录界面:

OpenDayLight基本环境搭建

用户名和口令都是admin

登录进去之后就可以看到如下界面:

OpenDayLight基本环境搭建

注:如果你只安装了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基本环境搭建OpenDayLight基本环境搭建


总结:

用了半天的时间总算把opendaylight搞成这样了,后面会学习一下mininet的使用,REAT APIs的使用,通过抓包分析openflow协议等,争取写出一个自己的SDN控制器