ksanandd/SDN-Link-Failure-Detection
GitHub: ksanandd/SDN-Link-Failure-Detection
使用Mininet与POX控制器演示SDN链路故障检测、动态流规则更新与网络恢复的教学实验项目。
Stars: 0 | Forks: 0
# 使用 POX 的 SDN 链路故障检测
## 使用 Mininet 和 POX 控制器演示拓扑监控、链路故障检测、动态流规则更新和网络恢复
## 目标
本项目使用 Mininet 和 POX 控制器演示软件定义网络(SDN)。重点包括:
* 监控拓扑变化
* 检测链路故障
* 动态更新流规则
* 恢复连接
* 性能分析
## 使用的工具
* Mininet(网络模拟器)
* POX 控制器
* OpenFlow 协议
* Ubuntu(Linux 环境)
## 设置与执行步骤
### 1. 克隆 POX 控制器
```
git clone https://github.com/noxrepo/pox.git
cd pox
```
### 2. 运行 POX 控制器
```
python3 pox.py openflow.of_01 --port=6633 openflow.discovery orange_project
```
### 3. 启动 Mininet(打开新终端)
```
sudo mn --topo linear,3 --mac --switch ovsk --controller remote
```
### 4. 测试连通性
```
pingall
```
### 5. 模拟链路故障
```
link s1 s2 down
pingall
```
### 6. 恢复链路
```
link s1 s2 up
pingall
```
### 7. 查看流表
```
dpctl dump-flows
```
### 8. 测量吞吐量
```
h3 iperf -s &
h1 iperf -c h3
```
## 网络拓扑
线性拓扑,包含 3 个交换机(s1–s3)和 3 个主机(h1–h3)。
## 交换机与主机可视化
h1 — s1 — s2 — s3 — h3
|
h2
## 实现的 SDN 逻辑
* 控制器处理 **PacketIn 事件**
* 动态安装 **流规则**
### 匹配-动作逻辑:
* **匹配 →** 源 MAC 与目的 MAC
* **动作 →** 转发 / 泛洪
### 超时设置:
* **idle_timeout = 10 秒**
* **hard_timeout = 30 秒**
## 结果与截图
### 1. 控制器运行
该截图展示了 POX 控制器检测拓扑并动态安装流规则。
**演示:** 控制器与交换机的交互
### 2. 正常网络运行
`pingall → 0% 丢包`
**演示:** 完整连通性
### 3. 链路故障检测
`link s1 s2 down → 66% 丢包`
**演示:** 网络故障行为
(h1 被隔离)
### 4. 网络恢复
`link s1 s2 up → 0% 丢包`
**演示:** 连接恢复
### 5. 流表(OpenFlow 规则)
显示:
* 匹配字段(dl_src、dl_dst)
* 动作(FLOOD / output)
* 超时时间
### 6. 性能分析(iperf)
吞吐量达到:
**~37 Gbits/sec**
**演示:** 网络性能
## 预期输出
- **pingall → 0% 丢包**
- **链路故障 → ~66% 丢包**
- **链路恢复 → 0% 丢包**
- **iperf → ~30–40 Gbps**
## 观察结果
* 正常状态 → 0% 丢包
* 故障状态 → 66% 丢包
* 恢复状态 → 0% 丢包
* 观察到动态流规则更新
* 使用 iperf 实现了高吞吐量
## 结论
本项目成功演示了:
* 使用 SDN 实现集中控制
* 对链路故障的动态适应
* 使用流规则实现高效的数据包转发
* 使用网络工具进行性能评估
该截图展示了 POX 控制器检测拓扑并动态安装流规则。
**演示:** 控制器与交换机的交互
### 2. 正常网络运行
`pingall → 0% 丢包`
**演示:** 完整连通性
### 3. 链路故障检测
`link s1 s2 down → 66% 丢包`
**演示:** 网络故障行为
(h1 被隔离)
### 4. 网络恢复
`link s1 s2 up → 0% 丢包`
**演示:** 连接恢复
### 5. 流表(OpenFlow 规则)
显示:
* 匹配字段(dl_src、dl_dst)
* 动作(FLOOD / output)
* 超时时间
### 6. 性能分析(iperf)
吞吐量达到:
**~37 Gbits/sec**
**演示:** 网络性能
## 预期输出
- **pingall → 0% 丢包**
- **链路故障 → ~66% 丢包**
- **链路恢复 → 0% 丢包**
- **iperf → ~30–40 Gbps**
## 观察结果
* 正常状态 → 0% 丢包
* 故障状态 → 66% 丢包
* 恢复状态 → 0% 丢包
* 观察到动态流规则更新
* 使用 iperf 实现了高吞吐量
## 结论
本项目成功演示了:
* 使用 SDN 实现集中控制
* 对链路故障的动态适应
* 使用流规则实现高效的数据包转发
* 使用网络工具进行性能评估标签:iperf, Mininet, OpenFlow, PacketIn, POX控制器, SDN, 动态流规则, 实验拓扑, 性能分析, 拓扑监控, 控制器, 流表管理, 流量更新, 线性拓扑, 网络仿真, 网络实验, 网络恢复, 网络故障恢复, 网络连通性测试, 软件定义网络, 链路故障检测, 链路状态检测