本文档详细定义了 OpenNeuro TSN (Time-Sensitive Networking) 调度器的功能需求、性能指标、约束条件和系统接口。
文档版本: v1.0
创建日期: 2026年1月20日
预计完成: 2026年2月16日
- 需求: 支持对网络流量进行分类和优先级设置
- 详细说明:
- 支持 4-8 个优先级等级 (Priority 0-7)
- 根据 802.1p CoS (Class of Service) 字段进行分类
- 支持 VLAN 标签识别
- 可为每个优先级定义带宽预留
验收标准:
✓ 能够对网络报文进行 0-7 优先级标记
✓ 同一优先级的报文在队列中保持顺序
✓ 带宽预留误差 < 5%
- 需求: 基于精确时间戳实现确定性的报文转发
- 详细说明:
- 使用 PTP 时间同步作为参考时钟
- 配置时间表 (Schedule) 控制每个优先级的开闭
- 周期性地开闭不同优先级的"门"
- 支持 1ms ~ 1s 的调度周期
验收标准:
✓ 门控精度 < 100µs
✓ 漏包率 < 0.1%
✓ 支持多达 128 个调度事件/周期
- 需求: 为实时流量提供可预测的网络延迟
- 详细说明:
- 对不同优先级的报文承诺最大延迟时间
- 高优先级 (RT 流): < 100µs
- 中等优先级 (Control): < 1ms
- 低优先级 (Best Effort): 尽力而为
验收标准:
✓ 99.99% 的报文满足延迟承诺
✓ 无超期报文被丢弃
✓ 带宽不超配
- 需求: 与 Linux 内核的标准 QoS 工具集成
- 详细说明:
- 通过 tc (traffic control) 命令配置调度
- 支持 taprio qdisc (Time-Aware Priority Queuing)
- 导出当前配置为可读格式
- 支持热重载 (不中断现有流量)
验收标准:
✓ tc qdisc add 命令能成功配置调度
✓ 配置修改在 100ms 内生效
✓ 现有连接不中断
- 需求: 与支持 TSN 的硬件交换机集成
- 支持交换机: Marvell 88E6190X, Microchip, 等
- 通过 IEEE 802.1Qbv 标准化接口配置
- 需求: 提供图形化的调度配置界面
- 实时显示网络拓扑和流量
- 调度表可视化
- 性能监控仪表板
- 需求: 实时监测 TSN 调度的运行状态
- 每个优先级的报文计数
- 延迟直方图
- 丢包统计
- 拥塞告警
| 流量类型 | 最大延迟 | 抖动 (Jitter) | 丢包率 |
|---|---|---|---|
| 实时控制 (Priority 7) | <100µs | <20µs | <0.01% |
| 视频流 (Priority 5-6) | <1ms | <100µs | <0.1% |
| 音频流 (Priority 4) | <10ms | <1ms | <0.1% |
| 最佳努力 (Priority 0-3) | 无保证 | 无保证 | <1% |
- 总吞吐量: 2 Gbps (对于双 Gigabit 接口)
- 带宽可用性: 95% (5% 用于开销)
- 每个优先级可配置独立带宽
- 支持优先级数: 4-8 个
- 支持端口数: 2-4 个有线接口
- 调度表大小: 最少 128 个事件/周期
- 配置修改时间: <100ms (热重载)
- 运行时间: 支持连续运行 30+ 天无故障
- 平均故障间隔 (MTBF): >10,000 小时
- 故障自恢复: 配置缓存确保重启后恢复
- 接口类型: Gigabit Ethernet (1000 Base-T)
- 连接器: RJ-45
- 协议: IEEE 802.3
- 同步时钟: PTP (IEEE 1588 v2)
- MTU (Maximum Transmission Unit): 1500 字节
- VLAN 支持: 802.1Q (带标签)
- CoS 标签: 802.1p (3 bits)
- 时间戳精度: ±10µs
# 添加 taprio 调度器
tc qdisc add dev eth0 parent root \
taprio num_tc 4 map 0 1 2 3 \
queues 1@0 1@1 1@2 1@3 \
base-time 0 clockid CLOCK_TAI \
sched-entry S 0f 100000000 \
sched-entry S 0e 100000000 \
sched-entry S 0c 100000000 \
sched-entry S 00 100000000
# 查看当前配置
tc -d qdisc show dev eth0
# 删除调度器
tc qdisc del dev eth0 parent root// C API
typedef struct {
uint8_t num_queues; // 队列数量
uint8_t num_gates; // 门控数量
uint64_t base_time; // 基准时间 (nanoseconds)
uint64_t cycle_time; // 周期时间
struct {
uint8_t priority; // 优先级
uint32_t gate_mask; // 开闭门控位掩码
uint32_t duration; // 时间段持续时间 (ns)
} gates[128];
} tsn_config_t;
int tsn_configure(const char *ifname, const tsn_config_t *config);
int tsn_get_config(const char *ifname, tsn_config_t *config);
int tsn_apply_config(const char *ifname);// 查询流量统计
typedef struct {
uint64_t packets_in; // 入站报文数
uint64_t packets_out; // 出站报文数
uint64_t bytes_in; // 入站字节数
uint64_t bytes_out; // 出站字节数
uint64_t packets_dropped; // 丢弃的报文数
uint32_t avg_latency_us; // 平均延迟 (微秒)
uint32_t max_latency_us; // 最大延迟
uint32_t min_latency_us; // 最小延迟
} tsn_stats_t;
int tsn_get_stats(const char *ifname, uint8_t priority,
tsn_stats_t *stats);- 最小支持平台: RK3588 或等效 ARM 处理器
- 最小内存: 256MB RAM (运行时)
- 网络接口: 至少 1 个 Gigabit Ethernet (建议 2 个)
- 时钟精度: 支持 PTP 同步至 <10µs 精度
- 操作系统: Linux 5.15+
- 内核支持: CONFIG_NET_SCHED_TAPRIO
- PTP 同步: 需要 ptp4l 或等效服务运行
- 依赖库: libnl, libnetlink
- 网络拓扑: 星形或环形
- 网络设备: 支持 802.1Qbv 的交换机 (可选)
- 时间同步精度: ±10µs (由 PTP 提供)
- 最大端口数: 4
- 最大优先级数: 8
- 调度周期: 1ms - 1s
- 最多调度事件: 128 个/周期
背景: 多臂机器人需要各轴电机在微秒级精度同步
需求:
- 4 个实时控制流 (电机指令),延迟 <100µs
- 1 个视频流 (视觉反馈),延迟 <10ms
- 1 个管理流 (不需时间保证)
配置示例:
优先级 7: 电机控制 (100µs, 独占 200 Mbps)
优先级 6: 传感器反馈 (1ms, 独占 100 Mbps)
优先级 4: 视频流 (10ms, 独占 500 Mbps)
优先级 0: 最佳努力 (剩余 700 Mbps)
需求:
- 音频流:< 1ms 延迟,确定性
- 视频流:< 33ms 延迟 (30fps)
- 网络控制:<10ms 延迟
需求:
- EtherCAT 实时流:< 100µs
- 传感器数据:< 10ms
- 诊断和配置:最佳努力
- 流量分类的正确性
- 优先级隔离 (高优先级不影响低优先级)
- 带宽预留的准确性
- 门控时序的精度
- 延迟分布测量 (使用 iPerf 或自定义工具)
- 吞吐量测试 (最大承载能力)
- 长期稳定性 (24h+ 连续运行)
- 热重载性能 (配置修改时的影响)
- 网络抖动恢复能力
- 时钟突变时的行为
- 异常流量处理 (超配、爆发)
- 架构设计文档
- API 参考手册
- 算法设计说明 (调度算法、流量管理)
- 代码注释 (>80% 覆盖率)
- 快速开始指南
- 配置参考手册
- 故障排除指南
- 性能优化建议
- 测试计划
- 测试用例集
- 性能基准报告
| 需求 | 验收标准 | 状态 |
|---|---|---|
| 流量分类 | 支持 4+ 优先级,准确率 100% | ✅ 计划 |
| 延迟性能 | RT 流 <100µs,99.99% 满足 | ✅ 计划 |
| 吞吐量 | 2 Gbps 95% 可用 | ✅ 计划 |
| Linux 集成 | tc/taprio 命令完全支持 | ✅ 计划 |
| 文档完整性 | API 文档 + 用户手册 | ✅ 计划 |
| 测试覆盖 | 单元测试 + 集成测试 + 性能测试 | ✅ 计划 |
| 周 | 任务 | 交付物 |
|---|---|---|
| W1-W2 | 需求分析 + 系统设计 | 本文档 |
| W3-W4 | 需求评审 + 算法设计 | 算法说明文档 |
| W5-W6 | 核心模块开发 | 流量分类 + 带宽管理 |
| W7-W8 | Linux 驱动集成 | tc/taprio 接口 |
| W9 | 硬件交换机支持 (可选) | 交换机驱动 |
| W10-W12 | 集成与测试 | 完整系统验证 |
| W13-W15 | 性能优化与文档 | 最终文档 + 性能报告 |
| 风险 | 影响 | 概率 | 缓解措施 |
|---|---|---|---|
| PTP 时钟漂移 | 延迟精度下降 | 中 | 改进 PTP 算法,增加同步频率 |
| Linux 内核不支持 | 无法部署 | 低 | 升级内核或自定义驱动 |
| 网络抖动大 | 无法满足延迟承诺 | 中 | 使用高质量网络设备 |
| 流量突增 | 优先级隔离失效 | 中 | 实现流量整形和告警机制 |
下一步: 组织需求评审会议 (2026年1月27日),计划 2026年2月2日启动详细设计。
评审清单:
- 需求的完整性和明确性
- 性能指标的可达成性
- 约束条件的合理性
- 风险识别的充分性