路线图¶
关于本文档¶
本页记录已发布的里程碑和候选扩展。功能设计和版本范围通过 issue 或 pull request 讨论,公开接口遵循 API 稳定性约定。
已发布的里程碑¶
完整发布说明见变更日志。
| 版本 | 日期 | 主要变化 |
|---|---|---|
| 0.1.0 | 2026-05-10 | 拓扑 DSL、P4Runtime 控制、BMv2 编排和交互式 CLI。 |
| 0.2.0 | 2026-05-10 | 控制器数据包收发、IPv6 主机地址、非对称链路参数、Graphviz 导出和主机终端。 |
| 1.0.0 | 2026-05-10 | 公共 API 稳定性约定、扩展的 CI 矩阵、wheel 安装检查和安全文档。 |
| 1.1.0 | 2026-05-11 | INT 示例、日志配置和按方向叠加的链路参数。 |
| 1.2.0 | 2026-05-11 | 寄存器读写,INT 示例通过寄存器配置交换机 ID。 |
| 1.3.0 | 2026-05-11 | 多跳 INT 示例,各交换机运行相同 P4 程序,通过不同寄存器值区分身份。 |
| 1.4.0 | 2026-05-11 | RunningSwitch.boot_timestamp_us,以及多跳 INT 示例的时间戳对齐。 |
| 1.5.0 | 2026-05-11 | Network.boot_timestamps,以及可按实验指定的 INT 协调文件路径。 |
| 1.5.1 | 2026-05-12 | 调整多跳 INT 集成测试的断言。 |
| 1.6.0 | 2026-05-14 | 以暂定 API 引入异步 P4Runtime 客户端、交换机异步客户端惰性属性和异步并发示例。 |
| 1.7.0 | 2026-05-14 | AsyncP4RuntimeClient、AsyncOperationCancelledError 和 RunningSwitch.async_client 升为稳定 API。 |
| 1.8.0 | 2026-10-25 | 异步网络启停、CLI 三态与范围匹配、性能评测工具,以及编译、连接和拓扑修复。 |
1.x 候选项(仅追加,不破坏 API)¶
本页尚未为具体的 1.x 版本指定新功能。兼容性修复和新增接口遵循 API 稳定性约定。
2.0 候选项(可能需要破坏 API)¶
以下方向需要先完成设计,再确定接口和版本范围。新增独立方法或类可以保持兼容。对稳定 API 的不兼容变更须完成弃用周期,并在新的主版本中发布。
PSA 架构支持¶
Topology.add_switch() 已有 arch 参数,目前只接受 "v1model"。Network 启动的是 simple_switch_grpc。支持 PSA 需要集成匹配的编译器和运行目标,BMv2 的不同目标实现有各自的架构和接口。
需要评估目标选择、启动参数、就绪检查和流水线安装,并验证表项、计数器、寄存器及数据包收发。P4InfoIndex 和控制器元数据处理也要使用新目标的 P4Info 验证。哪些现有接口可以复用、是否需要改动公开接口,应由集成方案确定。
运行时拓扑变更¶
Topology 在 Network.start() 之后仍是可修改的描述。向描述中添加主机或链路,不会创建运行资源。Network 目前没有在线增删节点或链路的接口。
在线变更需要同步维护拓扑描述、运行节点句柄、命名空间、接口、端口分配和控制面状态,还要处理操作失败时的回滚,以及网络停止时的资源回收。目前的做法是先停止网络、修改描述,再创建并启动新的 Network。详见拓扑变更限制。
AsyncNetwork¶
AsyncP4RuntimeClient 支持并发 RPC。await net.astart() 在工作线程中启动网络,await net.astop() 等待网络关闭。同步方法 Network.start() 依次启动 BMv2 交换机,等待当前交换机就绪后再启动下一台。
在主线程的事件循环中调用 astart(),会在启动前安装信号清理处理器。取消启动时,会等待启动和清理结束后再传播取消异常。关闭完成前,保持异步客户端所属的事件循环运行。详见异步生命周期指南。
后续的 AsyncNetwork 可以基于这些生命周期方法,提供异步上下文管理器或协调多个网络。这些新增功能可以保留同步生命周期接口。
长期搁置¶
- 分布式实验:
Network在一台 Linux 机器上管理资源。多机编排需要远程资源管理、跨机链路,以及启动和清理过程的协调。 - Web 界面:目前提供交互式 CLI 和 Graphviz 拓扑导出。浏览器中的可视化与控制不在上面的候选范围内。