当前位置: 首页 > news >正文

Floodlight 控制器安装

目录

一、实验基本信息

二、实验原理

三、实验步骤(详细版)

步骤 1:切换到超级用户模式

步骤 2:安装基础依赖包

步骤 3:配置 JDK 环境变量

步骤 4:拉取 Floodlight 源码

步骤 5:进入项目目录

步骤 6:编译 Floodlight 项目

步骤 7:启动 Floodlight 控制器

步骤 8:验证控制器进程


一、实验基本信息

  • 实验名称:Floodlight SDN 控制器安装与 OpenFlow 交互流程验证
  • 实验学时:2 学时
  • 实验环境:Ubuntu 16.04/18.04 LTS(推荐)、OpenJDK 1.8、Apache Ant、Git、Python 开发环境
  • 实验目的
    1. 掌握 Floodlight 控制器的完整安装与编译流程。
    2. 理解 SDN 控制器的运行机制与后台进程检查方法。
    3. 了解 OpenFlow 南向接口协议的交互基础。
    4. 为后续 OpenFlow 交换机与控制器的连通性实验打下基础。

二、实验原理

Floodlight 是一款基于 Java 开发的开源 OpenFlow 控制器,属于 SDN 架构中的控制层核心组件。它的核心作用是通过 OpenFlow 协议与底层交换机通信,实现对网络流表的统一管理与下发,是验证 OpenFlow 交互流程的常用控制器。本次实验的核心流程分为:依赖环境准备→JDK 环境变量配置→Floodlight 源码拉取与编译→控制器启动与验证,最终实现控制器的正常运行,为后续与 OpenFlow 交换机建立连接、交互报文做准备。

三、实验步骤(详细版)

步骤 1:切换到超级用户模式

为避免权限不足导致安装失败,首先切换到 root 权限:

bash

运行

sudo -i

执行后输入用户密码,即可进入超级用户模式(命令提示符变为#)。


步骤 2:安装基础依赖包

安装编译与运行 Floodlight 所需的依赖环境:

bash

运行

apt-get install build-essential default-jdk ant python-dev git -y

命令说明:

  • build-essential:提供基础编译工具链(gcc、make 等)。
  • default-jdk:安装默认的 Java 开发环境(后续需配置环境变量)。
  • ant:Java 项目的构建工具,用于编译 Floodlight 源码。
  • python-dev:Python 开发依赖,部分 Floodlight 模块需要 Python 支持。
  • git:用于拉取 GitHub 上的 Floodlight 源码。

安装完成后,可通过以下命令验证依赖是否安装成功:

bash

运行

java -version # 验证JDK ant -version # 验证Ant git --version # 验证Git

步骤 3:配置 JDK 环境变量

Floodlight 依赖 Java 环境运行,需手动配置JAVA_HOMEPATHCLASSPATH三个关键环境变量。

  1. 编辑全局环境变量文件:

    bash

  2. 运行

    apt-get install gedit gedit /etc/environment
  3. 在文件末尾追加以下内容(注意:/usr/local/java/jdk1.7.0_51/为示例路径,需根据实际 JDK 安装路径修改):

    bash

    运行

    export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" export PATH="$JAVA_HOME/bin:$PATH" export CLASSPATH=".:$JAVA_HOME/lib/tools.jar"
  4. 保存并关闭文件,执行以下命令使环境变量立即生效:

    bash

    运行

    source /etc/environment
  5. 验证配置是否生效:

    bash

    运行

    echo $JAVA_HOME # 输出配置的JDK路径,说明配置成功

步骤 4:拉取 Floodlight 源码

从 GitHub 克隆官方 Floodlight 项目源码:

bash

运行

git clone git://github.com/floodlight/floodlight.git

root@sdnhubvm:~# ping www.baidu.com
PING www.a.shifen.com (110.242.70.57) 56(84) bytes of data.
64 bytes from 110.242.70.57: icmp_seq=1 ttl=128 time=159 ms
64 bytes from 110.242.70.57: icmp_seq=2 ttl=128 time=72.7 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 72.778/116.285/159.793/43.508 ms
root@sdnhubvm:~# git clone https://gitee.com/swiss-francs-123/floodlight.git
Cloning into 'floodlight'...
remote: Enumerating objects: 53045, done.
remote: Counting objects: 100% (53045/53045), done.
remote: Compressing objects: 100% (14185/14185), done.
remote: Total 53045 (delta 34365), reused 53045 (delta 34365), pack-reused 0 (from 0)
Receiving objects: 100% (53045/53045), 384.09 MiB | 14.91 MiB/s, done.
Resolving deltas: 100% (34365/34365), done.
Checking connectivity... done.

执行完成后,当前目录会生成floodlight文件夹,包含完整的项目源码与构建脚本。


步骤 5:进入项目目录

切换到 Floodlight 源码目录:

bash

运行

cd floodlight

步骤 6:编译 Floodlight 项目

使用 Ant 工具编译项目,生成可执行的 jar 包:

bash

运行

ant

root@sdnhubvm:~/testf01/floodlight# sed -i 's/1.8/1.7/g' build.xml
root@sdnhubvm:~/testf01/floodlight# ant clean
Buildfile: /root/testf01/floodlight/build.xml
[taskdef] Could not load definitions from resource tasks.properties. It could not be found.

clean:
[delete] Deleting directory /root/testf01/floodlight/target

BUILD SUCCESSFUL
Total time: 0 seconds

编译过程会自动下载依赖并构建项目,耗时约 3-5 分钟。若终端显示BUILD SUCCESSFUL,则说明编译成功;若出现报错,需检查依赖安装是否完整、JDK 版本是否兼容(Floodlight 1.3 版本推荐 JDK 7)。

编译完成后,项目目录下会生成target文件夹,其中包含核心文件floodlight.jar


步骤 7:启动 Floodlight 控制器

执行编译生成的 jar 包,启动控制器:

bash

运行

java -jar target/floodlight.jar
ubuntu@sdnhubvm:~/floodlight[19:28] (master)$ java -jar target/floodlight.jar 2026-05-17 19:28:39.273 INFO [n.f.c.m.FloodlightModuleLoader] Loading modules from src/main/resources/floodlightdefault.properties 2026-05-17 19:28:39.360 WARN [n.f.r.RestApiServer] HTTPS disabled; HTTPS will not be used to connect to the REST API. 2026-05-17 19:28:39.360 WARN [n.f.r.RestApiServer] HTTP enabled; Allowing unsecure access to REST API on port 8080. 2026-05-17 19:28:39.360 WARN [n.f.r.RestApiServer] CORS access control allow ALL origins: true 2026-05-17 19:28:39.532 WARN [n.f.c.i.OFSwitchManager] SSL disabled. Using unsecure connections between Floodlight and switches. 2026-05-17 19:28:39.533 INFO [n.f.c.i.OFSwitchManager] Clear switch flow tables on initial handshake as master: TRUE 2026-05-17 19:28:39.533 INFO [n.f.c.i.OFSwitchManager] Clear switch flow tables on each transition to master: TRUE 2026-05-17 19:28:39.537 INFO [n.f.c.i.OFSwitchManager] Setting 0x1 as the default max tables to receive table-miss flow 2026-05-17 19:28:39.570 INFO [n.f.c.i.OFSwitchManager] OpenFlow version OF_15 will be advertised to switches. Supported fallback versions [OF_10, OF_11, OF_12, OF_13, OF_14, OF_15] 2026-05-17 19:28:39.574 INFO [n.f.c.i.OFSwitchManager] Listening for OpenFlow switches on [0.0.0.0]:6653 2026-05-17 19:28:39.575 INFO [n.f.c.i.OFSwitchManager] OpenFlow socket config: 1 boss thread(s), 16 worker thread(s), 60000 ms TCP connection timeout, max 1000 connection backlog, 4194304 byte TCP send buffer size 2026-05-17 19:28:39.577 INFO [n.f.c.i.Controller] ControllerId set to 1 2026-05-17 19:28:39.577 INFO [n.f.c.i.Controller] Shutdown when controller transitions to STANDBY HA role: true 2026-05-17 19:28:39.577 WARN [n.f.c.i.Controller] Controller will automatically deserialize all Ethernet packet-in messages. Set 'deserializeEthPacketIns' to 'FALSE' if this feature is not required or when benchmarking core performance 2026-05-17 19:28:39.577 INFO [n.f.c.i.Controller] Controller role set to ACTIVE 2026-05-17 19:28:39.615 INFO [n.f.l.i.LinkDiscoveryManager] Link latency history set to 10 LLDP data points 2026-05-17 19:28:39.616 INFO [n.f.l.i.LinkDiscoveryManager] Latency update threshold set to +/-0.5 (50.0%) of rolling historical average 2026-05-17 19:28:39.617 INFO [n.f.t.TopologyManager] Path metrics set to LATENCY

终端输出大量日志,最终显示Listening for OpenFlow connections on port 6653(或 6633),说明控制器已成功启动,正在监听 OpenFlow 交换机的连接请求。

http://localhost:8080/ui/pages/index.html

注意:若需后台运行控制器,可使用以下命令:

bash

运行

nohup java -jar target/floodlight.jar > floodlight.log 2>&1 &

步骤 8:验证控制器进程

新开一个终端,使用以下命令检查 Floodlight 进程是否在后台运行:

bash

运行

ps -ef | grep floodlight

若输出包含java -jar target/floodlight.jar相关进程,则说明控制器已正常运行。

root@sdnhubvm:~/testf01/floodlight# ps -ef | grep floodlight
root 14574 9131 0 08:53 pts/5 00:00:00 grep --color=auto floodlight
root@sdnhubvm:~/testf01/floodlight#

http://www.jsqmd.com/news/843836/

相关文章:

  • OpenClaw快速安装器:一键部署AI图像生成环境,告别依赖地狱
  • 电磁流量计厂家怎么选?靠谱正规源头厂家甄选指南 - 陈工日常
  • 杭州四维彩超机构排行:西湖花生医院领衔实测对比 - 奔跑123
  • RK3568 以太网 PHY 移植没那么难:YT8521SC 接入全过程拆解
  • Ansible核心架构解析:从自动化运维到基础设施即代码的实践指南
  • 如何快速配置黑苹果:Hackintool专业工具终极指南
  • 5个高效技巧彻底解决C盘空间不足:Windows Cleaner终极指南
  • 自动同步总失败?NotebookLM本地缓存+云端快照双轨备份,手把手配置到上线仅需7分钟
  • MPP500 多参数在线水质分析仪的产品优势是什么?该如何选型? - 仪表人小余
  • 驱动p-Tau研究浪潮:如何以优质抗体赋能阿尔茨海默病精准诊断?
  • 解放双手的明日方舟效率神器:MAA智能辅助工具终极指南
  • 手机号码定位工具:一键查询电话号码地理位置的高效解决方案
  • 动力学系统运动规划与步态优化技术解析
  • 如何在5分钟内搭建你的专属游戏串流服务器:Sunshine终极指南
  • 光子量子计算MBQC模型与OneAdapt IR设计解析
  • 拯救者笔记本的终极轻量控制方案:Lenovo Legion Toolkit完全指南
  • 3DMAX建模救星实测:SmoothBoolean插件处理复杂布尔运算,到底有多稳多快?
  • 2026 电磁流量计十大生产厂家综合实力对比解析 - 陈工日常
  • OBS多平台直播插件终极指南:5分钟实现一键多平台同步推流
  • Visual Studio Code运行Keil5程序报错
  • SVG 渐变-放射性
  • Windows API 静态指令分析:从反汇编到 JSON 数据集的构建与应用
  • 2026 电磁流量计产品参数全解析,功能特点与结构配置详解 - 陈工日常
  • SD-PPP终极指南:如何免费在Photoshop中解锁AI图像生成超能力
  • 终极SOCD解决方案:如何用免费工具彻底解决游戏按键冲突问题
  • fix-my-claw:自动化修复复杂开发环境的模块化脚本实践
  • 2026义乌靠谱的代理记账公司口碑推荐,专业的税务合规、电商合规、代办执照、公司注册代办机构优选盘点 - 品牌智鉴榜
  • 管道式电磁流量计产品详情,适用介质与安装方式解析 - 陈工日常
  • SmartPerfetto 两周更新内容汇总
  • 2026山东铝单板制造TOP5!潍坊临朐等地厂家实力出众口碑佳 - 十大品牌榜