# FrameReplication **Repository Path**: synduality/frame-replication ## Basic Information - **Project Name**: FrameReplication - **Description**: 复现论文代码,参看readme,研究方向主要是IEEE 802.1 CB的核心机制——帧复制与删除(FRER)机制 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-29 - **Last Updated**: 2026-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于网络编码的容错动态调度系统 ## 项目概述 本项目实现了基于XOR网络编码(XNC)和帧复制消除协议(FRER)的容错动态调度算法,用于车载TSN网络的动态流量调度。项目集成了真实的TSN网络拓扑模型,提供了完整的实验和可视化框架。 主要功能: - 基于向量装箱问题的调度建模 - 三种启发式算法(修正点积、改进最大负载、瓶颈) - 支持XNC和FRER两种协议 - 固定和可变两种调度模式 - 浪费阈值机制控制搜索空间 - 完整的实验和可视化框架 ## 项目结构 ``` bishe/ ├── model/ # TSN网络模型(老师提供) │ ├── __init__.py │ ├── network.py # TSN网络主类 │ ├── node.py # 网络节点 │ ├── link.py # 网络链路 │ ├── message.py # 消息流 │ └── route.py # 路由路径 ├── service/ # 网络服务层(老师提供) │ ├── __init__.py │ ├── network_loader.py # 网络配置加载 │ ├── network_generator.py # 网络生成器 │ └── routing_service.py # 路由计算服务 ├── visualization/ # 可视化工具(老师提供) │ ├── __init__.py │ ├── print_summary.py # 网络信息打印 │ └── topology_visualizer.py # 网络拓扑可视化 ├── scheduling/ # 调度系统核心模块(自定义) │ ├── __init__.py │ ├── config.py # 配置和数据结构 │ ├── heuristics.py # 启发式算法实现 │ ├── scheduler.py # 调度器核心 │ ├── tsn_adapter.py # TSN网络适配器 │ ├── experiment_runner.py # 实验运行器 │ ├── visualization.py # 结果可视化 │ └── run_scheduling.py # 调度系统主程序 ├── network_configs/ # 网络配置文件 │ └── er/ │ ├── er_sw5_es8_p0.5_msg10_seed42.json │ └── er_sw9_es24_p0.5_msg10_seed42.json ├── README.md # 项目说明 ├── start.py # 交互式启动脚本 ├── generate_plots.py # 图表生成脚本 ├── experiment_results.csv # 实验结果文件 └── 各种可视化图表文件 ``` ## 核心功能 ### 1. 调度算法 - **三种启发式算法**: - 修正点积算法 (Modified Dot Product) - 综合考虑负载和路径长度 - 改进的最大负载算法 (Improved Most Loaded) - 优先选择负载较小的路径 - 瓶颈式算法 (Bottleneck) - 关注路径中的瓶颈资源 - **两种协议支持**: - XOR网络编码 (XNC) - 利用编码提高容错性 - 帧复制消除协议 (FRER) - 传统的复制冗余方法 - **调度模式**: - 固定模式 (Fixed) - 固定时间槽分配 - 可变模式 (Variable) - 动态时间槽分配 ### 2. 浪费阈值机制 根据参考论文实现,浪费阈值控制候选方案搜索空间: - 低阈值 → 更好可调度性,更长响应时间 - 高阈值 → 更快响应时间,可能较低可调度性 ### 3. 网络模型 - 基于真实TSN网络标准 - 支持交换机和端系统混合拓扑 - 使用NetworkX进行路由计算 - 支持JSON配置文件加载 ## 代码说明 - `scheduling/config.py` - 配置类和数据结构定义 - `scheduling/heuristics.py` - 三种启发式算法实现 - `scheduling/scheduler.py` - 容错动态调度器核心 - `scheduling/tsn_adapter.py` - TSN网络拓扑适配器 - `scheduling/experiment_runner.py` - 实验运行器 - `scheduling/visualization.py` - 实验结果可视化 - `scheduling/run_scheduling.py` - 调度系统主程序 - `generate_plots.py` - 图表生成脚本 - `start.py` - 交互式启动脚本 - `main.py` - 项目统一入口脚本 - `model/` - TSN网络模型 - `service/` - 网络服务层 - `visualization/` - 网络可视化工具 ## 快速开始 ### 1. 交互式启动(推荐) ```bash python start.py ``` 选择运行模式: 1. 运行完整系统 (网络拓扑 + 调度实验) 2. 仅运行调度实验 3. 测试系统集成 4. 从现有实验结果生成图表 5. 退出 ### 2. 运行完整系统 ```bash python scheduling/run_scheduling.py ``` 这将: 1. 加载和可视化TSN网络拓扑 2. 为所有消息计算路由路径 3. 运行动态调度实验 4. 生成性能指标可视化图表 5. 保存实验结果到CSV文件 6. 打印实验结果摘要统计 ### 3. 从现有结果生成图表 ```bash python generate_plots.py ``` ## 实验配置 在 `scheduling/config.py` 中可以配置: ```python @dataclass class ExperimentalConfig: num_decoding_synchronizers: List[int] = [6, 8, 16, 24, 32] # 解码同步器数量 waste_thresholds: List[float] = [0.0, 0.125, 0.25] # 浪费阈值 protocols: List[ProtocolType] = [ProtocolType.XNC, ProtocolType.FRER] # 协议类型 heuristics: List[HeuristicType] = [ # 启发式算法 HeuristicType.MODIFIED_DOT_PRODUCT, HeuristicType.IMPROVED_MOST_LOADED, HeuristicType.BOTTLENECK ] scheduling_modes: List[SchedulingMode] = [SchedulingMode.FIXED, SchedulingMode.VARIABLE] # 调度模式 ``` ## 输出结果 ### 实验结果文件 - `experiment_results.csv`: 详细的实验结果数据,包含: - 协议类型 - 启发式算法 - 调度模式 - 解码同步器数量 - 浪费阈值 - 调度率 - 响应时间 - 成功率 - 网络利用率 ### 可视化图表 - `plot_fixed_time_comparison.png`: 固定时间调度对比 - `plot_variable_time_comparison.png`: 可变时间调度对比 - `plot_threshold_0.png`: 0% 浪费阈值性能 - `plot_threshold_125.png`: 12.5% 浪费阈值性能 - `plot_threshold_25.png`: 25% 浪费阈值性能 - `plot_xnc_fixed_time_scheduling_rate.png`: XNC固定时间调度率 - `plot_xnc_variable_time_scheduling_rate.png`: XNC可变时间调度率 ## 代码结构详细说明 ### 核心模块结构 #### 1. 调度系统核心 (scheduling/) | 模块 | 主要职责 | 文件位置 | 说明 | | ----- | ---------- | --------------------------------- | ---------------- | | 配置管理 | 定义配置类和数据结构 | `scheduling/config.py` | 包含实验配置、枚举类型定义 | | 启发式算法 | 实现三种调度算法 | `scheduling/heuristics.py` | 修正点积、改进最大负载、瓶颈算法 | | 调度器 | 核心调度逻辑 | `scheduling/scheduler.py` | 容错动态调度器实现 | | 网络适配器 | 适配TSN网络模型 | `scheduling/tsn_adapter.py` | 桥接调度系统和TSN网络 | | 实验运行器 | 执行和管理实验 | `scheduling/experiment_runner.py` | 运行所有实验组合 | | 结果可视化 | 生成实验图表 | `scheduling/visualization.py` | 性能指标可视化 | | 主程序 | 系统入口点 | `scheduling/run_scheduling.py` | 完整调度流程执行 | #### 2. 网络模型 (model/ - 老师提供) | 模块 | 主要职责 | 文件位置 | 说明 | | --- | ------- | ------------------ | --------- | | 网络类 | TSN网络主类 | `model/network.py` | 网络拓扑管理 | | 节点类 | 网络节点 | `model/node.py` | 交换机和端系统节点 | | 链路类 | 网络链路 | `model/link.py` | 节点间通信链路 | | 消息类 | 网络消息 | `model/message.py` | 网络流量消息 | | 路由类 | 路由路径 | `model/route.py` | 消息传输路径 | #### 3. 服务层 (service/ - 老师提供) | 模块 | 主要职责 | 文件位置 | 说明 | | ---- | ------ | ------------------------------ | ----------- | | 网络加载 | 加载网络配置 | `service/network_loader.py` | 从JSON文件加载网络 | | 网络生成 | 生成网络拓扑 | `service/network_generator.py` | 生成随机网络拓扑 | | 路由服务 | 计算路由路径 | `service/routing_service.py` | 为消息计算路由 | #### 4. 可视化工具 (visualization/ - 老师提供) | 模块 | 主要职责 | 文件位置 | 说明 | | ----- | ------ | -------------------------------------- | -------- | | 网络摘要 | 打印网络信息 | `visualization/print_summary.py` | 显示网络统计信息 | | 拓扑可视化 | 绘制网络拓扑 | `visualization/topology_visualizer.py` | 可视化网络结构 | ### 辅助脚本 | 脚本 | 功能 | 文件位置 | 说明 | | ---- | ------- | ------------------- | -------- | | 启动脚本 | 交互式启动菜单 | `start.py` | 提供多种运行模式 | | 图表生成 | 从结果生成图表 | `generate_plots.py` | 独立图表生成工具 | ### 数据流说明 1. **配置加载** → `config.py` 定义实验参数 2. **网络准备** → `network_loader.py` 加载网络拓扑 3. **路由计算** → `routing_service.py` 计算消息路由 4. **调度执行** → `scheduler.py` 执行容错调度 5. **实验运行** → `experiment_runner.py` 运行所有配置 6. **结果分析** → `visualization.py` 生成性能图表 7. **数据保存** → 保存实验结果到CSV文件 ### 核心流程 系统的主要执行流程如下: 1. **初始化阶段** - 加载实验配置参数 - 准备TSN网络拓扑 - 初始化调度器和算法 2. **网络准备阶段** - 加载网络配置文件 - 构建网络拓扑结构 - 计算消息路由路径 3. **调度实验阶段** - 对每个网络流应用调度算法 - 评估候选路径和时间槽分配 - 记录调度结果和性能指标 4. **结果处理阶段** - 分析实验数据 - 生成性能可视化图表 - 保存结果到CSV文件 ### 调度算法执行流程 调度算法的具体执行步骤: 1. **输入阶段** - 网络流需求参数 - 可用传输路径 - 当前网络资源状态 2. **处理阶段** - 生成候选路径和时间槽分配方案 - 使用启发式算法计算方案得分 - 应用浪费阈值过滤候选方案 - 选择最优调度方案 3. **输出阶段** - 调度决策结果 - 资源分配详情 - 性能指标数据 ### 实验运行流程 批量实验的执行流程: 1. **配置准备** - 生成所有参数组合 - 准备实验环境 - 初始化结果存储 2. **实验执行** - 按顺序运行每个配置 - 监控实验进度 - 记录中间结果 3. **结果处理** - 汇总所有实验数据 - 计算性能指标 - 生成对比图表 4. **结果导出** - 保存到CSV文件 - 生成实验报告 - 清理临时数据 ### 关键接口 1. **NetworkTopology** - 网络拓扑接口,提供节点、链路管理 2. **FaultTolerantScheduler** - 调度器接口,提供流调度方法 3. **HeuristicAlgorithm** - 启发式算法接口,计算方案得分 4. **ExperimentRunner** - 实验运行器接口,管理实验流程 5. **ExperimentVisualizer** - 可视化器接口,生成性能图表 ### 扩展点 1. **新启发式算法** - 在 `heuristics.py` 中添加新算法类 2. **新协议支持** - 在 `config.py` 中添加新协议枚举 3. **新网络模型** - 通过适配器模式支持新网络模型 4. **新性能指标** - 在 `visualization.py` 中添加新图表类型 ## 依赖库 - Python 3.11+ - numpy - 数值计算 - pandas - 数据处理 - matplotlib - 数据可视化 - networkx - 网络分析 - pygraphviz (可选) - 网络拓扑可视化 ## 安装依赖 ```bash pip install numpy pandas matplotlib networkx pygraphviz ``` ## 技术特点 ### 1. 模块化设计 - 清晰的层次结构 - 高内聚低耦合 - 便于扩展和维护 ### 2. 适配器模式 - 调度系统与网络模型解耦 - 支持多种网络模型 - 保持向后兼容 ### 3. 实验框架 - 可配置的实验参数 - 自动化实验流程 - 完整的结果分析 ### 4. 可视化支持 - 网络拓扑可视化 - 实验结果对比 - 多维度性能分析 ## 论文相关 核心理论和实验设计基于: > Syed 等 - 2023 - Network Coding Based Fault-Tolerant Dynamic Scheduling and Routing for In-Vehicle Networks 主要贡献: 1. 基于向量装箱问题的调度建模 2. 三种启发式算法设计和实现 3. 浪费阈值机制的正确实现 4. TSN网络环境下的性能评估