# 第三章 提纲与叙事设计备忘

## 最终版本的结构（已写入 chap03.tex）

### 叙事主线：三个挑战 → 三个设计

章节的核心叙事逻辑是"先提出挑战，再逐一用设计解决"：

1. **3.1 系统总体架构**（简要）：Coordinator-Node架构、TUN/UDP隧道/per-flow线程，一段话说完。
2. **3.2 设计挑战**：先提出三个核心挑战，让读者带着问题读后续设计。
3. **3.3 交织XOR前向纠错编码设计**（解决挑战一）：
   - 编码方案选择：为何选XOR分组码——分组码的冗余包是独立包，不嵌入用户数据包，所以不存在MTU溢出问题。流式编码需要预留冗余空间，不适用。
   - 交织编码矩阵结构、编码器/解码器工作流程。
4. **3.4 基于丢包统计的自适应参数调整**（解决挑战二）：
   - 三状态丢包模型（先建模 → 再估计 → 再搜索参数）。
   - 解码端丢包检测与统计。
   - 模型参数估计（从loss_1/loss_2/loss_3推导p21/p23/p33）。
   - 编码参数搜索算法（延迟约束20ms + 残余丢包率约束1%）。
5. **3.5 解码端输出速率控制设计**（解决挑战三）：
   - 问题：FEC突发输出 → ACK密集 → CCA误判带宽 → 速率震荡 → 影响FEC参数估计。
   - PI控制器：Passthrough（直通+测速）→ Controlling（PI控制）。
   - 协同关系：Pacing稳定CCA → CCA稳定发包 → 编码器稳定填组 → 参数估计更准。
6. **3.6 本章小结**。

### 三个挑战与设计的对应关系

| 挑战 | 核心问题 | 对应设计 |
|------|---------|---------|
| 挑战一 | 通用转发场景下用户包大小可变，冗余不能嵌入包内导致MTU溢出 | 分组XOR编码（冗余包独立发送）+ 交织 |
| 挑战二 | 需满足流媒体延迟需求，同时结合实时丢包数据自适应调整 | 三状态丢包模型 + 约束搜索算法 |
| 挑战三 | FEC解码突发输出导致CCA误判带宽 | PI速率控制器（Pacer） |

## 叙事衔接机制

1. **挑战尾部的策略预告 + 前向链接**：3.2中每个挑战的末尾都用1–2句话概括了解决策略，并通过 `\ref{sec:xxx}` 前向链接到对应的设计小节，例如"本文采用交织XOR分组编码方案应对此挑战（详见第\ref{sec:fec编码}节）"。
2. **设计开头的挑战重述**：3.3/3.4/3.5每个设计节的第一句话都以"本节针对挑战X"开头，回指3.2中提出的挑战，形成闭环。

## 叙事逻辑要点

1. **挑战先行**：3.2节先把三个挑战全部摆出来，读者带着问题读后续设计，每个设计开篇回指对应的挑战。

2. **挑战一的论述重点**：不是"XOR计算简单"（这只是bonus），核心论点是"分组码的冗余包独立于数据包，不受用户包大小影响"，而流式编码需要内嵌冗余空间，不适用于通用转发。

3. **先建模再设计**：3.4的叙事顺序是"先提出三状态丢包模型 → 再说如何从观测量估计模型参数 → 再说如何基于模型做FEC参数拟合"。这比直接说"我们用了什么公式"更有说服力，也更容易和参考论文区分开。

4. **Pacing是独立于FEC的设计**：3.5独立成节，核心目的是"为CCA服务"而非"为FEC服务"。

5. **消融实验暂缺**：pacer对CCA行为的正面影响目前没有专门的对比实验，chap03中先论述设计动机和机制，chap04再想办法补充。

6. **排版约定**：代码标识符使用 `\texttt{}` 排版（如 `\texttt{flow\_id}`），这是标准LaTeX做法，不需要额外宏包。

## 代码对应关系（写作时参考）

- FEC编解码器：`code/bifrost/src/node/udp_relay/algorithm/fec.rs`
- Pacer：`code/bifrost/src/node/udp_relay/algorithm/pacer.rs`
- 参数计算：`code/bifrost/src/coordinator/core.rs` 中的 `fern_parameter_calc` 函数
- 转发机制：`code/bifrost/src/node/udp_relay/mod.rs`
- TUN管理：`code/bifrost/src/node/udp_relay/tun_manager.rs`
- 协调器核心：`code/bifrost/src/coordinator/core.rs`

## 注意事项

- **不涉及fern**：所有内容仅基于fec和pacer，fern是未完成的项目，不在论文讨论范围内。
- **参数估计的查重问题**：3.4的模型和估计方法从代码出发重新推导和表述，不直接照搬参考论文的叙述方式。
