搭建自己的SDN实验环境

这学期开了SDN选修课程,虽然课程内容之前大部分都接触过,但是不同于之前在实验平台上的学习,上课用到的环境都是在自己电脑上安装部署,今天课程已经结束,这里对整个实验环境的安装部署以及一些使用上的问题做一个小总结,既是为了加深自己的理解,也希望给初学者一些参考。

SDN实验环境简介

课程中使用的实验环境主要包括三个SDN控制器,分别是OpenDaylight、Floodlight以及ONOS,另外还有OpenvSwitch和mininet,其中有很多官方已经给出了虚拟机文件,我们只需要下载然后导入到VMware或者VirtualBox就可以了。

环境安装

OpenDaylight

官网地址:www.opendaylight.org

01.png

ODL控制器的版本以元素周期表命名,截止到目前ODL已经发布了最新的氖(Neon)版本,可以在官网下载到各个版本的安装包以及安装教程等。

具体的安装过程也可以参考我之前的两篇文章:

Ubuntu16.04安装OpenDaylight Carbon
Ubuntu14.04安装OpenDaylight(锂版本)

Floodlight

官网地址:www.projectfloodlight.org

02.png

同样,Floodlight的官网也提供了各个版本的下载地址以及相关文档等。另外,官方也给出了一个部署好的虚拟机文件,但是国内的下载速度不是很理想,需要扶墙下载。当然,我这里也有下载好的文件:

百度网盘:提取码:no1y

需要注意的是这并不是一个ovf或者ova文件,而是一个磁盘文件,所以不能直接导入使用,需要手动创建一台空虚拟机,并将此虚拟磁盘文件挂载到虚拟机上,这里我用VMware进行演示:

打开VMware,点击“创建新的虚拟机”,选择“自定义”,因为不需要安装操作系统,所以选择“稍后安装操作系统”,操作系统类型选择“Ubuntu 64位”,其它参数默认。

在选择磁盘时,选择“使用现有虚拟磁盘”,选择下载下来的vmdk文件,完成虚拟机创建,然后启动虚拟机就可以使用官方已经配置好的Floodlight虚拟机了。

ONOS

官网地址:onosproject.org
推荐到ONOS的wiki中下载安装包或者封装好的虚拟机文件:
Wikiwiki.onosproject.org

03.png

当然,也可以选择自己安装ONOS控制器,一些基础的功能还是自己装的用起来好用一点,而一些特殊的项目如SDN-IP等则推荐在wiki中下载相应的虚拟机文件,具体的安装步骤可以参考我之前的文章:

Ubuntu16.04安装ONOS Hummingbird(1.7.1)

Mininet

官网地址:mininet.org

04.png

mininet有三种安装方式,官方推荐直接下载封装好的虚拟机文件,因为这非常简单而且快捷,如果你是一个喜欢自己动手的人,那我推荐你通过安装包方式进行安装,具体的安装步骤可参考之前的文章:

Mininet的安装配置

*文章中同时安装了Ryu,如果只是单纯安装mininet可直接跳过此步骤。

OpenvSwitch

官网地址:www.openvswitch.org

05.png

OpenvSwitch也有多种安装方式,我之前都是采用安装包方式进行安装,具体的安装过程可参考:

Ubuntu16.04安装包方式安装Open vSwitch

一些小问题

Could not get lock /var/lib/apt/lists/lock

Ubuntu在使用apt-get命令时经常出现如下图所示的问题:
06.png
解决方法:

rm /var/lib/dpkg/lock
sudo dpkg --configure -a
apt update

ONOS启动

如果是从ONOS官网下载的1.15.0的虚拟机,启动方式略有不同:先双击桌面的”Setup ONOS Cluster”,然后双击打开“ONOS GUI”即为ONOS的Web界面,双击“ONOS CLI”即为ONOS的命令行控制台。
07.png
另外,这个镜像的ONOS服务监听端口可能并不是6633端口而是6653端口:
08.png
在进行一些基础的实验时,比如使用Mininet连接ONOS控制器等,推荐使用自己手动安装的ONOS;而对一些特殊的实验,比如SDN-IP等则推荐下载对应的ONOS虚拟机。

Floodlight启动

我在安装Floodlight时使用的是官方的虚拟机,通过如下命令启动Floodlight:

cd floodlight
ant
java -jar target/floodlight.jar

ovs-ofctl: s1 is not a bridge or a socket

如图:
09.png
解决方法:

ovs-vsctl set bridge br0 datapath_type=netdev

Mininet的一些常用命令

查看/修改主机IP地址:

h1 ip addr show
h1 ifconfig
h1 ifconfig h1-eth0 10.0.0.1/24 up

查看交换机流表信息:

ovs-ofctl dump-flows s1
ovs-ofctl -O OpenFlow13 dump-flows s1

连接控制器:

mn --switch=ovsk --controller=remote,ip=172.16.75.117,port=6633
mn --controller=remote,ip=192.168.1.31 --switch=ovsk,protocols=OpenFlow13 --topo=linear,2