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. 控制器运行 CN SS1 该截图展示了 POX 控制器检测拓扑并动态安装流规则。 **演示:** 控制器与交换机的交互 ### 2. 正常网络运行 CN SS2 `pingall → 0% 丢包` **演示:** 完整连通性 ### 3. 链路故障检测 CN SS3 `link s1 s2 down → 66% 丢包` **演示:** 网络故障行为 (h1 被隔离) ### 4. 网络恢复 CN SS4 `link s1 s2 up → 0% 丢包` **演示:** 连接恢复 ### 5. 流表(OpenFlow 规则) CN SS5 显示: * 匹配字段(dl_src、dl_dst) * 动作(FLOOD / output) * 超时时间 ### 6. 性能分析(iperf) CN SS6 吞吐量达到: **~37 Gbits/sec** **演示:** 网络性能 ## 预期输出 - **pingall → 0% 丢包** - **链路故障 → ~66% 丢包** - **链路恢复 → 0% 丢包** - **iperf → ~30–40 Gbps** ## 观察结果 * 正常状态 → 0% 丢包 * 故障状态 → 66% 丢包 * 恢复状态 → 0% 丢包 * 观察到动态流规则更新 * 使用 iperf 实现了高吞吐量 ## 结论 本项目成功演示了: * 使用 SDN 实现集中控制 * 对链路故障的动态适应 * 使用流规则实现高效的数据包转发 * 使用网络工具进行性能评估
标签:iperf, Mininet, OpenFlow, PacketIn, POX控制器, SDN, 动态流规则, 实验拓扑, 性能分析, 拓扑监控, 控制器, 流表管理, 流量更新, 线性拓扑, 网络仿真, 网络实验, 网络恢复, 网络故障恢复, 网络连通性测试, 软件定义网络, 链路故障检测, 链路状态检测