QX-WEI/agentnms-sdn-platform

GitHub: QX-WEI/agentnms-sdn-platform

基于 SDN 仿真环境的多智能体自治网络运维平台,实现故障诊断、风险审批与自动恢复的完整闭环。

Stars: 0 | Forks: 0

# AgentNMS:面向自治运维的多智能体网络管理系统 AgentNMS 是一个面向网络运维、故障诊断和自愈处置场景的多智能体网络管理系统。项目基于 **Mininet、Open vSwitch、Ryu、FastAPI 和 React Dashboard** 构建软件定义网络(SDN)仿真实验环境,在异常高优先级 Drop Flow 导致 Web 业务阻断的场景下,演示从状态感知、故障诊断、策略决策、风险审批、策略执行到恢复验证的自治运维闭环。 项目适合作为求职作品集和开源展示项目:它不追求接入生产网络,而是用可复现的 SDN 实验底座展示多智能体自治运维系统的工程组织、接口设计、风险控制、可视化和安全脱敏实践。 ## 项目简介 AgentNMS 覆盖以下能力: - 面向网络运维、故障诊断、自愈处置等自治运维场景; - 使用 Mininet + Open vSwitch 构建 SDN 仿真网络,并由 Ryu Controller 管理 OpenFlow 流表; - 通过 FastAPI Tool API 将控制器能力封装为可被前端和智能体调用的 REST 接口; - 多智能体协作完成感知、诊断、策略、审批、执行与验证; - MAS Watchdog 支持后台持续巡检和周期性自治闭环; - ThreatIntelAgent 支持 CISA KEV 和 NVD 等公开威胁情报采集,用于辅助分析; - React Dashboard 用于展示拓扑、业务遥测、自治流程、日报和威胁情报。 ## 项目亮点 - **Multi-Agent Closed Loop**:PerceptionAgent → DiagnosisAgent → PolicyAgent → RiskReviewAgent → ExecutionAgent 形成闭环。 - **Watchdog-based Autonomous Monitoring**:`scripts/mas_watchdog.py` 周期调用 MAS 编排接口,支持后台持续巡检。 - **SDN + Ryu Control Plane**:Mininet / OVS / Ryu 提供可复现实验网络和 OpenFlow 控制面。 - **Risk Review before Execution**:执行前经过 RiskReviewAgent 判断,低风险动作自动执行,高风险动作保留审批边界。 - **Telemetry Replay Visualization**:内置遥测回放用于展示故障发生、处置和恢复过程中的业务指标变化。 - **Threat Intelligence Integration**:`ThreatIntelAgent` 聚合 CISA KEV 与 NVD 公开情报,不直接执行高风险动作。 - **React Dashboard**:使用 React + Vite + Axios 构建可视化展示界面。 ## 系统架构 flowchart TB subgraph Simulation[SDN 仿真层] MN[Mininet Hosts] OVS[Open vSwitch] MN <--> OVS end subgraph Control[控制器与工具 API 层] Ryu[Ryu Controller\nsimple_switch_13 + ofctl_rest] API[FastAPI Tool API\nscripts/agent_tool_api.py] end subgraph Agents[多智能体协作层] PA[PerceptionAgent] DA[DiagnosisAgent] PO[PolicyAgent] RR[RiskReviewAgent] EA[ExecutionAgent] PA --> DA --> PO --> RR --> EA end subgraph Autonomy[自治巡检与情报] WD[MAS Watchdog\nscripts/mas_watchdog.py] TI[ThreatIntelAgent\nCISA KEV / NVD] end subgraph UI[可视化层] FE[React Dashboard] end OVS <-- OpenFlow 1.3 --> Ryu Ryu <-- REST / stats / flow ops --> API API <--> PA EA --> API WD --> API TI --> API FE <-- REST API --> API 详细说明见 [`docs/SYSTEM_ARCHITECTURE.md`](docs/SYSTEM_ARCHITECTURE.md)。 ## 核心工作流 flowchart LR A[正常监测] --> B[注入异常高优先级 Drop Flow] B --> C[状态感知] C --> D[故障诊断] D --> E[策略生成] E --> F[风险审批] F --> G[控制器执行] G --> H[恢复验证] 典型演示场景:异常高优先级 Drop Flow 阻断 `h1 -> h3` 的 Web 访问;系统识别 `flow_rule_error`,生成删除异常流表的低风险修复动作,执行后验证服务恢复为 `likely_reachable` 且异常 `drop_count=0`。 ## 技术栈 - **Python**:智能体脚本、工具 API、Watchdog、威胁情报采集。 - **FastAPI**:封装 Ryu / OpenFlow 能力和 MAS 编排 API。 - **Ryu**:SDN 控制器与 OpenFlow REST 能力。 - **Mininet / Open vSwitch**:SDN 仿真网络与流表实验。 - **React / Vite / Axios**:前端 Dashboard。 - **Dify / LLM Agent optional**:可选的智能体工作流和报告生成层。 - **CISA KEV / NVD**:公开威胁情报来源。 ## 项目结构 . ├── README.md ├── .env.example ├── docs/ │ ├── RUNBOOK.md │ ├── DEMO_FLOW.md │ ├── SYSTEM_ARCHITECTURE.md │ ├── TEST_RESULTS.md │ └── SECURITY_AND_PRIVACY.md ├── scripts/ │ ├── agent_tool_api.py │ ├── mas_orchestrator.py │ ├── mas_watchdog.py │ ├── ryu_flow_tools.py │ └── threat_intel_agent.py ├── topo/ │ └── big_topo.py └── frontend/agentnms-dashboard/ ├── src/ └── package.json ## Quick Start ### 1. 启动 Ryu 控制器 ryu-manager ryu.app.simple_switch_13 ryu.app.ofctl_rest Ryu REST 默认监听 `http://127.0.0.1:8080`,OpenFlow 控制端口通常为 `6653`。 ### 2. 启动 Mininet 拓扑 基础三主机拓扑: sudo mn --topo single,3 --mac --switch ovsk,protocols=OpenFlow13 --controller remote,ip=127.0.0.1,port=6653 在 Mininet CLI 中启动 Web 服务并验证: h3 python3 -m http.server 8000 & h1 curl http://10.0.0.3:8000 可选:运行仓库中的拓扑脚本: sudo python3 topo/big_topo.py ### 3. 启动 FastAPI Tool API 在仓库根目录运行: uvicorn scripts.agent_tool_api:app --host 0.0.0.0 --port 8001 --reload 验证: curl http://127.0.0.1:8001/api/health curl http://127.0.0.1:8001/api/state/analyze ### 4. 启动 React Dashboard cd frontend/agentnms-dashboard npm install npm run dev 浏览器访问: http://127.0.0.1:5173 默认情况下,前端会根据当前浏览器访问的 hostname 自动拼接 `:8001` 作为后端地址。若通过 Windows 或局域网浏览器访问虚拟机 / 服务器中的前端,请在启动前设置后端 API Base 为虚拟机 / 服务器 IP: export VITE_API_BASE=http://:8001 npm run dev ### 5. 启动 Watchdog python3 scripts/mas_watchdog.py --api-base http://127.0.0.1:8001 --interval 10 单次演示可限制循环次数: python3 scripts/mas_watchdog.py --api-base http://127.0.0.1:8001 --interval 5 --max-runs 1 ## 典型演示命令 ### 注入异常 Web Drop Flow curl -X POST http://127.0.0.1:8001/api/intent/block_web \ -H 'Content-Type: application/json' \ -d '{"src_ip":"10.0.0.1","dst_ip":"10.0.0.3","dst_port":8000,"in_port":1,"priority":200}' ### 查询网络状态 curl http://127.0.0.1:8001/api/diagnose curl http://127.0.0.1:8001/api/state/analyze curl 'http://127.0.0.1:8001/api/flows?dpid=1' ### 启动 MAS Watchdog python3 scripts/mas_watchdog.py --api-base http://127.0.0.1:8001 --interval 5 --max-runs 1 ### 验证恢复 curl http://127.0.0.1:8001/api/diagnose curl http://127.0.0.1:8001/api/state/analyze 预期关键字段示例: { "service_state": "likely_reachable", "drop_count": 0, "fault_type": "none" } 也可以在 Mininet CLI 中验证 Web 访问: h1 curl http://10.0.0.3:8000 ## 实验结果摘要 | 项目 | 结果 | | --- | --- | | 故障类型 | 异常高优先级流表 | | 故障现象 | Web 业务被策略阻断 | | 诊断结果 | `flow_rule_error` | | 处置动作 | 删除异常 Drop Flow | | 恢复结果 | 业务恢复为 `likely_reachable` | | 评价指标 | 服务状态、异常流表数量、故障类型、处置成功状态 | 完整实验说明见 [`docs/TEST_RESULTS.md`](docs/TEST_RESULTS.md)。 ## 威胁情报能力 `ThreatIntelAgent` 默认采集 CISA Known Exploited Vulnerabilities Catalog,并可按关键词查询 NVD CVE API 2.0。未配置 `NVD_API_KEY` 时可使用无 key 模式进行轻量查询;配置后会在请求 NVD 时携带 API Key。 python3 scripts/threat_intel_agent.py curl 'http://127.0.0.1:8001/api/threat-intel/report?keyword=fastapi&limit=5' ## 环境变量 复制示例文件并按需填写占位符,不要提交真实密钥: cp .env.example .env 主要变量包括 Dify / LLM Agent 可选配置、NVD API Key 和前端 API Base。详见 [`.env.example`](.env.example) 与 [`docs/SECURITY_AND_PRIVACY.md`](docs/SECURITY_AND_PRIVACY.md)。 ## 项目边界说明 - 当前项目是 **SDN 仿真实验平台**,不是生产网络系统。 - Telemetry Replay 用于演示业务遥测变化,不代表已接入真实生产业务。 - ThreatIntelAgent 用于公开情报辅助分析,不直接执行高风险动作。 - LLM / Dify keys 通过环境变量配置,禁止提交真实密钥。 - 工具接口只应暴露实验环境能力;生产化部署需要额外鉴权、审计、隔离和变更审批。 ## 更多文档 - [`docs/RUNBOOK.md`](docs/RUNBOOK.md):完整运行手册与常见问题。 - [`docs/DEMO_FLOW.md`](docs/DEMO_FLOW.md):演示脚本。 - [`docs/SYSTEM_ARCHITECTURE.md`](docs/SYSTEM_ARCHITECTURE.md):系统架构说明。 - [`docs/TEST_RESULTS.md`](docs/TEST_RESULTS.md):实验结果说明。 - [`docs/SECURITY_AND_PRIVACY.md`](docs/SECURITY_AND_PRIVACY.md):安全与脱敏说明。 ## License MIT License. See [`LICENSE`](LICENSE).
标签:AV绕过, Docker 部署, FastAPI, 多智能体, 威胁情报, 开发者工具, 故障诊断, 网络运维, 自愈系统, 软件定义网络, 逆向工具