项目简介
本项目是一个基于深度强化学习的动态路由选择系统,以Ryu框架作为网络控制器,结合深度强化学习(DQN)算法,能在给定网络状态下学习并确定最佳路由选择策略。代码实现了深度强化学习模型,具备网络监控、状态更新和路径计算等功能。
项目的主要特性和功能
- 深度强化学习模型:利用DQN算法,依据网络状态学习并选择最优路由。
- 网络监控:监控网络状态,包括带宽、延迟和丢包率等信息,并用于学习过程和路由选择。
- 状态更新:根据网络变化(如节点和链接的添加、删除或更改)更新网络状态。
- 路径计算:计算源节点到目标节点的多条最短路径,同时考虑带宽、延迟和丢包率等路径指标。
- 可视化:实现网络状态、路径指标和路由选择结果的可视化。
安装使用步骤
安装依赖
- 安装Mininet:
bash cd mininet/util ./install.sh
安装完成后,可在终端确认是否正确安装:bash sudo mn
- 安装Ryu框架:
bash cd ryu/ryu/topology
对switches.py
文件进行修改:在class PortData
中添加self.delay = 0
;在lldp_packet_in_handler
函数中添加recv_timestamp = time.time()
等代码。 修改完成后,回到ryu
文件夹进行安装:bash python3 setup.py install pip3 uninstall .
安装完成后,可在终端确认是否正确安装:bash ryu-manager
- 安装Python所需的库:安装
numpy
、matplotlib
等库。
运行代码
- 复制项目代码:
bash cd Intelligent-Routing/geant_traffic
完成此文件夹内的前置作业后,使用geant.py
建立Mininet环境:bash sudo python3 geant.py
- 启动Ryu控制器:
bash cd Intelligent-Routing/ours ryu-manager --observe-link simple_monitor.py
- 运行深度强化学习模型:
bash python3 myDRL.py
输入1
让DRL agent进行转发布路径的学习;训练完成后,输入2
进行效能测试模式。
交互和观察
- 观察网络状态的变化,如带宽、延迟和丢包率等。
- 查看路由选择的结果,观察其对网络性能的影响。
请注意,运行项目前需确保已正确安装Mininet和Ryu框架,并按项目指导正确配置网络拓扑。此外,可根据具体环境和需求调整代码中的参数设置。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】