sauravs2006-max/SDN-based-link-failure-detection-and-recovery-using-Ryu-and-Mininet
GitHub: sauravs2006-max/SDN-based-link-failure-detection-and-recovery-using-Ryu-and-Mininet
一个基于 SDN 的链路故障检测与动态恢复的原型系统,演示控制器与交换机的实时协同。
Stars: 0 | Forks: 0
# 链路故障检测与恢复
## 问题描述
本项目的目标是检测网络中的链路故障,并使用软件定义网络(SDN)动态更新路由。控制器持续监控拓扑变化,检测链路何时发生故障,相应地更新流表规则,并确保网络连通性保持或恢复。
## 设置/执行步骤
步骤 1:打开终端并进入项目文件夹
cd ~/sdn_project
步骤 2:启动 Ryu 控制器
cd ryu
export PYTHONPATH=$(pwd)
python3 ryu/cmd/manager.py ../reroute_controller
步骤 3:打开新终端并清理 Mininet
sudo mn -c
步骤 4:启动 Mininet 拓扑
sudo mn --topo linear,3 --controller=remote
步骤 5:验证正常网络运行
pingall
步骤 6:模拟链路故障
link s1 s2 down
pingall
步骤 7:恢复链路
link s1 s2 up
pingall
步骤 8:执行延迟测试
h1 ping h3
步骤 9:执行吞吐量测试
iperf h1 h3
## 预期输出
- 在正常情况下,所有主机使用 pingall 成功通信,丢包率为 0%。
- 当交换机 s1 和 s2 之间的链路被关闭时,观察到丢包,表明网络故障。
- 控制器检测到链路故障并在终端中记录事件。
- 恢复链路后,连接性重新建立,pingall 再次显示通信成功。
- 延迟和吞吐量测试在故障期间显示性能下降,在恢复后显示正常性能。
## 执行证明
### 1. 控制器初始化
Ryu 控制器成功启动并等待网络事件。

### 2. Mininet 拓扑设置
Mininet 网络已初始化交换机和主机。

### 3. 正常网络运行
所有主机成功通信,无丢包。

### 4. 链路故障场景
当交换机之间的链路被关闭时,观察到丢包。

### 5. 控制器检测链路故障
控制器检测到链路变化并记录事件。

### 6. 链路恢复
恢复链路后,通信重新建立。

### 7. 延迟测试
使用 Ping 测量主机之间的延迟。

### 8. 吞吐量测试
使用 iperf 测量网络吞吐量。

### 9. 流表项
控制器安装的流规则显示如下。

## 参考
- Ryu SDN 框架文档:https://ryu.readthedocs.io/
- Mininet 文档:http://mininet.org/documentation/
- OpenFlow 协议概述:https://opennetworking.org/
标签:iperf, Mininet, pingall, Ryu控制器, SDN, 动态流表更新, 实时网络适应, 实验环境搭建, 开源SDN, 控制器交换机交互, 流量重路由, 网络可靠性, 网络恢复, 网络拓扑监控, 网络故障演练, 软件定义网络, 连通性维护, 逆向工具, 链路故障恢复, 链路故障检测