【SDN】最新!手把手零基础在Ubuntu 20.04搭建SDN环境(全网最详细)/Floodlight/Mininet/sFlow
想在Linux下搭建SDN环境,几乎把中文互联网所有相关教程都看了,用了一周时间才弄好,写下这篇文章帮助大家排坑。包括搭建Floodlight和Mininet,sFlow。
1.安装ubuntu 20.04
网上教程很多,就不展开了。
2.安装JDK8
参考了
Unbuntu下Java环境搭建-CSDN博客 Linux之Ubuntu20.04安装Java JDK8的两种方式-CSDN博客
一 更新软件包列表
sudo apt-get update
二 安装 OpenJDK 8
sudo apt-get install openjdk-8-jdk
三 检查 Java 版本
java -version
如果发现不对,必须要手动到官网下载
一 创建jvm目录
sudo mkdir /usr/lib/jvm
二 解压 JDK 压缩文件到 jvm 目录(注意文件名)
sudo tar -zxvf jdk-8u391-linux-x64.tar.gz -C /usr/lib/jvm
三 (无法解压需要切换到 root 用户)
sudo passwd root
su root
四 创建 Java 目录并移动压缩文件
cd /opt
sudo mkdir java
mv jdk-8u391-linux-x64.tar.gz /opt/java
tar -zxvf jdk-8u391-linux-x64.tar.gz
rm jdk-8u391-linux-x64.tar.gz
五 配置环境变量
安装文本编辑器,Vim
sudo apt update
sudo apt install vim
或 Nano
sudo apt-get install nano
编辑 ~/.bashrc
文件,在文件末尾加入以下内容( 替换为你的 JDK 目录)
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_391
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
应用更改
source ~/.bashrc
设置 Java 选择项
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_391/bin/java 300
六 验证 Java 版本
java -version
3.安装ant1.10.7
一 安装 Maven
sudo apt-get install maven
二 解压 Apache Ant 压缩文件
tar -zxvf apache-ant-1.10.7.tar.gz
三 赋予权限
chmod 777 apache-ant-1.10.7
四 配置环境变量
编辑 /etc/profile
文件
sudo vi /etc/profile
在文件末尾加入(用你的路径)
export ANT_HOME=/path/to/apache-ant-1.10.7
export PATH=$PATH:$ANT_HOME/bin
应用
source /etc/profile
五 验证
ant -version
4.安装Eclipse IDE
一 下载 Eclipse
wget -P /opt https://archive.eclipse.org/technology/epp/downloads/release/luna/SR2/eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz
二 解压
cd /opt
tar -zxvf eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz
三 启动
cd /opt/eclipse
./eclipse
5.安装floodlight
参考了
安装floodlight时候ant编译报错。Compile failed; see the compiler error output for……-CSDN博客
一 安装依赖
sudo apt-get install build-essential
sudo apt-get install git
二 下载网盘文件(不要用直接在github上下载的源码,在这里感谢@不再彷徨 的分享。)
链接:https://pan.baidu.com/s/1ZIAhPwestOeG-ThPLBBppg?pwd=safd
提取码:safd
--来自百度网盘超级会员V6的分享
三 到相应文件夹
cd floodlight
四 获取子模块
git pull origin master
git submodule init
git submodule update
这一步可能会不成功
五 构建
ant
如果报错就需要
下载0.14.1的libthrift.jar
,以及netty-all-4.1.50.Final.jar
。且将两个jar包放在floodlight/lib
下。且在floodlight
文件夹中的build.xml
中修改相对于版本。两个jar包放在下面链接中。参考@西工大-大黄
我把相应的文件也放在网盘里了。
链接:https://pan.baidu.com/s/1ZIAhPwestOeG-ThPLBBppg?pwd=safd
提取码:safd
--来自百度网盘超级会员V6的分享
六 之后再构建,运行
java -jar target/floodlight.jar
在浏览器中打开
http://localhost:8080/ui/index.html
显示
6.安装 Mininet
参考【SDN】最快速安装mininet仿真器+ryu控制器(Ubuntu18.04 or 20.04)_Jerry_丶的博客-CSDN博客
一 安装 Python 3 和 Pip
sudo apt install python3-pip
echo alias python=python3 >> ~/.bashrc
echo alias pip=pip3 >> ~/.bashrc
source ~/.bashrc
二 配置 Pip 使用国内镜像源
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
三 安装 Git
sudo apt install git
四 克隆 Mininet 仓库
git clone https://github.com/mininet/mininet.git/
五 修改安装脚本
打开 mininet/util/install.sh
文件
sudo nano -c ~/mininet/util/install.sh
找到第 106 行,并将 PYTHON=${PYTHON:-python}
修改为
PYTHON=${PYTHON:-python3}
六 运行安装脚本
sudo chmod 777 mininet/util/install.sh
sudo mininet/util/install.sh -n3V 2.5.0
七 验证安装
mn
显示
*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Mininet must run as root.
表明安装成功
7.安装sFlow
一 安装 Open vSwitch
sudo apt-get install openvswitch-switch
二 下载 sFlow-RT
wget http://www.inmon.com/products/sFlow-RT/sflow-rt.tar.gz
tar -xvzf sflow-rt.tar.gz
三 安装 sFlow
./sflow-rt/get-app.sh sflow-rt flow-trend
./sflow-rt/get-app.sh sflow-rt browse-metrics
cd sflow-rt
./start.sh
四 创建应用目录并运行
mkdir app
docker run -v $PWD/app:/sflow-rt/app --entrypoint /sflow-rt/get-app.sh sflow/sflow-rt sflow-rt flow-trend
docker run -v $PWD/app:/sflow-rt/app --entrypoint /sflow-rt/get-app.sh sflow/sflow-rt sflow-rt browse-metrics
docker run -v $PWD/app:/sflow-rt/app -p 6343:6343/udp -p 8008:8008 sflow/sflow-rt
五 一些额外的 安装 Curl
sudo apt update
sudo apt install curl
六 启动
cd sflow-rt
./start.sh
配置 sFlow Agent
sudo ovs-vsctl -- --id=@sflow create sflow agent=eth0 target="127.0.0.1:6343" sampling=10 polling=20 -- set bridge s1 sflow=@sflow
打开
http://127.0.0.1:8008
至此结束