# alarm_data_imitate_system **Repository Path**: sps1/alarm_data_imitate_system ## Basic Information - **Project Name**: alarm_data_imitate_system - **Description**: an imitation system for generating OTN alarm dataset - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-10-13 - **Last Updated**: 2025-11-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OTN告警模拟系统 (增强版) 基于真实OTN(光传送网)告警传播机制的高精度告警数据模拟系统,用于生成贴合实际网络场景的告警数据集。 ## 🎯 项目概述 本项目基于ITU-T G.709和G.798标准,模拟OTN网络中告警的产生、传播和清除过程。系统能够生成包含时间戳、告警类型、严重级别、根源告警、业务路径追踪等信息的真实告警数据集,适用于网络故障分析、机器学习模型训练和告警关联规则研究。 ## ✨ 核心特性 ### 🔬 **真实OTN协议支持** - 基于OTN分层架构(OTS/OMS/OCh/OTU/ODU/OPU/client) - 模拟开销字节(Overhead)传递机制(AIS/RDI/DEG/SM/PM等) - 实现管理平面(Management Plane)协调 ### 📊 **完整告警生命周期** - 告警产生 → 持续 → 清除的完整状态机 - 告警抑制、关联和级联传播机制 ### 🔗 **业务路径管理** - **业务路径定义**: 源节点到目的节点的完整传输路径配置 - **告警范围限制**: 告警仅在业务路径节点上生成 - **级联传递机制**: 告警沿业务路径上下游传播 - **路径验证**: 确保业务路径的连续性和合理性 ### 🎮 **多场景模拟** - 单链路故障场景 - 光功率异常场景 - 级联故障场景 - 随机故障场景 ### 📈 **高质量数据集** - CSV格式标准化输出 - 包含完整告警元数据 - 支持大规模网络模拟 - **业务路径追踪信息 (新增)** ## 🏗️ 系统架构 ### 核心模块 ``` new_otn_alarm_system/ ├── config.py # 系统配置参数 ├── alarm_types.py # OTN告警类型定义 ├── otn_node.py # OTN节点模型 ├── network_manager.py # 网络管理器 ├── simulation_scenarios.py # 模拟场景定义 ├── main.py # 主程序入口 ├── service_path.py # 业务路径管理 ├── service_path_config.py # 业务路径配置 ├── performance_monitor.py # 性能监控 ├── alarm_persistence_visualizer.py # 告警持久化可视化 ├── requirements.txt # 依赖包列表 ├── LICENSE # 许可证文件 └── README.md # 项目文档 ``` ### 架构图 ``` ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ OTN节点模型 │◄──►│ 网络管理器 │◄──►│ 模拟场景引擎 │ │ - 告警检测 │ │ - 拓扑管理 │ │ - 故障注入 │ │ - 开销处理 │ │ - 告警协调 │ │ - 场景控制 │ │ - 状态管理 │ │ - 数据集生成 │ │ - 时序控制 │ └─────────────────┘ └──────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ 告警类型库 │ │ 数据集输出 │ │ 配置管理 │ │ - OTS层告警 │ │ - CSV格式 │ │ - 网络参数 │ │ - OMS层告警 │ │ - 完整元数据 │ │ - 告警阈值 │ │ - OCh层告警 │ │ - 实时写入 │ │ - 传播参数 │ └─────────────────┘ └──────────────────┘ └─────────────────┘ ``` ## 🚀 快速开始 ### 环境要求 - Python 3.7+ - 依赖包: ```bash pip install networkx ``` ### 安装和运行 1. **克隆项目** ```bash git clone cd new_otn_alarm_system ``` 2. **运行完整模拟** ```bash python main.py ``` 3. **测试业务路径功能** ```bash # 演示业务路径功能 python -c "from service_path import ServicePath; print('业务路径模块加载成功')" ``` 4. **运行特定场景** ```bash # 运行单链路故障场景 python main.py "单链路故障" # 运行光功率异常场景 python main.py "光功率异常" # 运行级联故障场景 python main.py "级联故障" # 运行随机故障场景 python main.py "随机故障" ``` ### 配置自定义 修改 `config.py` 文件来自定义模拟参数: ```python # 网络参数 NETWORK_NODES = 20 # 网络节点数量 NETWORK_EDGE_PROBABILITY = 0.4 # 网络连接概率 # 告警检测参数 POWER_THRESHOLD_LOS = -30.0 # 光信号丢失阈值(dBm) POWER_THRESHOLD_PMI = -25.0 # 光功率异常阈值(dBm) # 业务路径配置 (新增) ENABLE_SERVICE_PATH_RESTRICTION = True # 是否启用业务路径限制 SERVICE_PATH_MIN_NODES = 3 # 业务路径最少节点数 SERVICE_PATH_MAX_NODES = 10 # 业务路径最大节点数 # 输出配置 CSV_OUTPUT_FILE = "custom_alarm_dataset.csv" ``` ## 📋 模拟场景 ### 1. 单链路故障场景 - **描述**:模拟单个OTN链路中断 - **触发告警**:OCh_LOS_P, OMS_LOS, OCh_RDI - **传播路径**:链路中断 → 保护路径切换 → 告警传播 ### 2. 光功率异常场景 - **描述**:模拟光功率衰减和异常 - **触发告警**:OTS_LOS, OTS_PMI - **传播路径**:功率异常 → 信号质量下降 → 相关告警 ### 3. 级联故障场景 - **描述**:模拟多个相关故障的级联效应 - **触发告警**:多层级告警组合 - **传播路径**:根源故障 → 级联传播 → 全网影响 ### 4. 业务路径故障场景 (新增) - **描述**:模拟业务路径上的故障传播 - **触发告警**:业务路径相关告警类型 - **传播路径**:业务路径节点 → 上下游传递 → 路径级告警 - **特点**:严格遵循业务路径节点序列,不跨非业务路径节点 ### 5. 随机故障场景 - **描述**:真实网络环境的随机故障模拟 - **触发告警**:多种告警类型混合 - **传播路径**:随机故障注入 → 自适应传播 ## 📊 数据集格式 ### CSV文件结构 | 字段 | 类型 | 描述 | 示例 | |------|------|------|------| | node_id | string | 节点标识 | Node_1 | | port_id | string | 端口标识 | Port_1_to_2 | | alarm_type | string | 告警类型 | OTS_LOS | | alarm_description | string | 告警描述 | 光传输段信号丢失 | | severity | string | 严重级别 | CRITICAL | | layer | string | 网络层次 | OTS | | timestamp | datetime | 告警时间 | 2025-09-25 16:36:54.538590 | | is_cleared | string | 是否清除 | 是/否 | | clear_timestamp | datetime | 清除时间 | 2025-09-25 16:36:56.503672 | | source_node | string | 根源节点 | Node_0 | | is_root_alarm | string | 是否根源告警 | 是/否 | | service_path_id | string | 业务路径标识 (新增) | Service_1 | | propagation_direction | string | 传播方向 (新增) | upstream/downstream | ### 告警类型分类 #### OTS层告警(光传输段层) - **OTS_LOS**:光传输段信号丢失(紧急) - **OTS_PMI**:光传输段功率异常(重要) - **OTS_TIM**:光传输段定时错误(警告) #### OMS层告警(光复用段层) - **OMS_LOS**:光复用段信号丢失(紧急) - **OMS_AIS**:光复用段告警指示信号(重要) - **OMS_RDI**:光复用段远端缺陷指示(次要) #### OCh层告警(光通道层) - **OCh_LOS**:光通道信号丢失(紧急) - **OCh_AIS**:光通道告警指示信号(重要) - **OCh_RDI**:光通道远端缺陷指示(次要) - **OCh_OCI**:光通道开放连接指示(警告) #### 保护层告警 - **OCh_LOS_P**:光通道保护路径信号丢失(紧急) - **OCh_AIS_P**:光通道保护路径告警指示信号(重要) ## 🔧 高级用法 ### 🔗 业务路径管理API #### 创建自定义业务路径 ```python from service_path import ServicePath # 创建业务路径 service_path = ServicePath( service_id="My_Service", source_node="Node_0", destination_node="Node_3", path_nodes=["Node_0", "Node_1", "Node_2", "Node_3"], path_ports=["Port_0_to_1", "Port_1_to_2", "Port_2_to_3"], bandwidth=10.0, # 业务带宽(Gbps) priority=1 # 业务优先级 ) # 添加到网络管理器 network_manager.service_path_manager.add_service_path(service_path) ``` #### 业务路径查询和操作 ```python # 获取所有业务路径 all_paths = network_manager.service_path_manager.get_all_service_paths() # 检查节点是否在业务路径中 is_in_service = network_manager.service_path_manager.is_node_in_service_path("Node_1") # 获取节点的相邻业务路径节点 adjacent_nodes = network_manager.service_path_manager.get_adjacent_nodes_in_service( "Service_1", "Node_1" ) # 获取业务路径中指定节点的下一跳/上一跳 next_node = network_manager.service_path_manager.get_next_node_in_service( "Service_1", "Node_1" ) prev_node = network_manager.service_path_manager.get_previous_node_in_service( "Service_1", "Node_1" ) ``` ### 业务路径告警传递测试 ```python # 测试业务路径告警传递 def test_service_path_propagation(): # 启用业务路径限制 import config config.ENABLE_SERVICE_PATH_RESTRICTION = True # 注入故障到业务路径节点 network_manager.inject_single_fault("Node_0", "Port_0_to_1", "power_low") # 等待告警传播 time.sleep(2) # 检查告警统计 stats = network_manager.get_network_statistics() print(f"活跃告警: {stats['active_alarms']}") ``` ### 自定义告警类型 在 `alarm_types.py` 中添加新的告警类型: ```python # 添加自定义告警类型 OTN_ALARM_TYPES.update({ 'CUSTOM_ALARM': AlarmType( 'CUSTOM_ALARM', AlarmSeverity.MAJOR, "自定义告警描述", "OCh", "自定义检测机制" ) }) ``` ### 创建自定义场景 在 `simulation_scenarios.py` 中添加新的模拟场景: ```python class CustomScenario(SimulationScenario): def __init__(self): super().__init__( "自定义场景", "自定义场景描述" ) def execute(self, network_manager): # 自定义场景逻辑 network_manager.inject_fault("Node_0", "Port_0_to_1", 'link_down') time.sleep(2) # ... 更多逻辑 ``` ### 扩展网络拓扑 修改网络创建逻辑以支持复杂拓扑: ```python # 在 network_manager.py 中自定义拓扑 self.network_topology = nx.erdos_renyi_graph(NETWORK_NODES, NETWORK_EDGE_PROBABILITY) # 或使用其他拓扑生成算法 ``` ## 📈 性能优化 ### 大规模网络支持 - 支持100+节点的网络拓扑 - 多线程告警检测和处理 - 高效的内存管理 ### 数据集优化 - 增量式数据写入 - 内存缓存优化 - 并行处理支持 ## 🐛 故障排除 ### 常见问题 1. **告警未产生** - 检查功率阈值设置 - 验证端口配置状态 - 确认故障注入成功 - **检查业务路径限制设置** (新增) 2. **告警传播异常** - 检查网络拓扑连接 - 验证开销字节处理 - 确认管理平面通信 - **检查业务路径节点连续性** (新增) 3. **业务路径相关故障** (新增) - **端口名不匹配**: 业务路径端口名与实际网络端口名不一致 - **业务路径验证失败**: 检查节点序列和端口连续性 - **告警传递中断**: 确认业务路径上的相邻节点连接 - **业务路径限制无效**: 检查 `ENABLE_SERVICE_PATH_RESTRICTION` 配置 4. **数据集生成失败** - 检查文件权限 - 验证磁盘空间 - 确认CSV格式正确 ### 调试工具 #### 端口命名调试 使用以下命令检查实际网络端口命名: ```bash python -c "from network_manager import NetworkManager; nm = NetworkManager(); nm.initialize_network(); print('网络端口初始化成功')" ``` #### 业务路径验证 使用以下命令测试业务路径功能: ```bash python -c "from service_path import ServicePathManager; print('业务路径管理器可用')" ``` #### 详细日志输出 启用详细日志输出: ```python # 在 config.py 中设置 LOG_LEVEL = "DEBUG" ``` ## 🤝 贡献指南 欢迎贡献代码和提出改进建议! ### 开发流程 1. Fork 项目 2. 创建功能分支 3. 提交更改 4. 发起 Pull Request ### 代码规范 - 遵循 PEP 8 编码规范 - 添加适当的注释 - 编写单元测试 - 更新文档 ## 📄 许可证 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。 ## 🙏 致谢 - 基于 ITU-T G.709 和 G.798 标准 - 参考实际OTN网络运维经验 - 感谢所有贡献者和用户 ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - 项目 Issues:提交问题和功能请求 - 邮箱:project-team@example.com - 文档:查看项目Wiki获取更多信息 --- **开始使用 OTN告警模拟系统,生成高质量的告警数据集!** 🚀