VirtualBox 虚拟机下搭建SDN实验平台(安装mininet网络仿真器 + OpenDayLight控制器)
一、安装VirtualBox 虚拟机,并安装ubuntu
1)安装虚拟机
sudo apt-get install virtualbox-5.1
代码解释
2)虚拟机安装ubuntu操作系统
Refer to the installation guide for Ubuntu on VirtualBox at https://askubuntu.com/questions/142549/how-to-install-ubuntu-on-virtualbox?
二、ubuntu系统下搭建SDN实验平台
随后根据步骤一,在虚拟机环境中部署两台Ubuntu操作系统。其中一台命名为mininet,并以目标为mininet网络仿真器进行部署;另一台命名为OpenDayLight,并以目标为OpenDayLight控制器进行部署。
2)配置虚拟机配置网络链接,实现主机与虚拟机、虚拟机间的通信。
- 在虚拟机中打开设置,在偏好设置 > 网络 > Host-only网络下新增一个网络适配器(会出现vboxnet0)。
- 停止运行该虚拟机,在网络设置下添加一个新的网络适配器:在网络设置 -> 网络 -> 添加网络适配器-> 选择Host-onlyAdapter,并命名为1中新建的vboxnet0。
- 接着,在命令行中输入
ifconfig查看新添加的enp0s8网卡配置(如图所示)。

主机会虚拟出一块vboxnet0网卡,虚拟出192.168.56.*/24 网段

至此,虚拟机与主机互相通信已经实现,互相之间可以 ping 通

在虚拟机上安装openssh-server软件以实现远程连接(相关命令参考以下代码片段)
sudo apt-get install openssh-server
代码解释

三、在mininet虚拟机上本地安装mininet源码,步骤如下
1、安装需要软件
sudo apt-get install git
代码解释
2、获取需要Mininet源代码
git clone git://github.com/mininet/mininet
代码解释
3、获取mininet源代码之后即可安装mininet
以下命令用于部署Mininet VM 中的各种工具集合, 包括Open vSwitch 、抓包分析软件以及POX,默认情况下它们将按照默认设置放置于用户的主目录中.
mininet/util/install.sh -a
代码解释
- 以下命令默认安装Mininet、user switch 和Open vSwitch:
mininet/util/install.sh -nfv
代码解释
- 以下命令用可以将Mininet 安装在指定目录下,而不是默认主目录(推荐)
mininet/uitl/install.sh -s mydir -a
mininet/util/install.sh -s mydir -nfv
代码解释
安装完成后,请检查openvswitch-controller服务的状态。如果该服务处于运行状态,请将其关闭以确保Mininet启动时能够指定自身的控制器。
server openvswitch-controller stop
update-rc.d openvswitch-controller disable
代码解释
5、测试Mininet是否安装成功,测试命令如下
sudo mn --test pingall
代码解释

至此完成安装测试。学习mininet简单命令行及API 详解
在OpenDaylight虚拟机上配置OpenDaylight控制器(参考博客:http://www.brianlinkletter.com/using-the-opendaylight-sdn-controller-with-the-mininet-network-emulator/),操作指南如下:
1、首先安装Java环境
- 安装jdk
sudo apt-get install openjdk-8-jdk
代码解释
设置环境变量JAVA_HOME和PATH,在etc/environment目录中添加java文件夹,并使用cat命令查看修改后的配置内容

- 用source 命令启动生效
source /etc/environment
代码解释
2.安装Opendaylight
- 获取OpenDayLight软件包(ODL),建议优先从官方渠道下载预编译版本:https://www.opendaylight.org/downloads
- 另一种方式是直接获取opendaylight源码并进行本地编译(此过程相对繁琐)
- 解压获取的OpenDayLight源代码
tar -xvf distribution-karaf-*.tar.gz
代码解释
- 启动opendaylight
cd distribution-karaf-*
./bin/karaf
代码解释

- 安装 OpenDaylight features
opendaylight-user@root> feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs odl-dlux-all
代码解释
五、启动mininet,并设置远程控制器,命令及效果图如下:
1)mininet启动自定义拓扑
sudo mn --custom ~/mininet/custom/test1.py --topo mytopo --mac
--controller=remote,ip=192.168.56.102,port=6633 --switch ovs,protocols=OpenFlow13
代码解释

测试连通性

2)配置OpenDayLight控制器以管理网络拓扑信息;
当前系统运行着一个OpeneDaylight虚拟机其IP地址为 192. ¹⁶⁸ . 56 . ¹⁰² 并使用该控制器管理端口为 8₁₈₁ 。
浏览器可访问 <http://localhost:₈₀₈₀ /DefaultWebApplication/DefaultWebPage> 。
系统采用统一的 admin 帐号作为用户名和密码。

此时输入用户名和密码会出现无法登录情况(即:unable to login)

此问题是因为缺乏依赖的features,执行如下命令问题即可解决
opendaylight-user@root> feature:install odl-dlux-all odl-restconf-all odl-l2switch-switch
代码解释

