diff --git a/bachelor-thesis.pdf b/bachelor-thesis.pdf index 44ad96e..4accfc1 100644 Binary files a/bachelor-thesis.pdf and b/bachelor-thesis.pdf differ diff --git a/data/acknowledgements.tex b/data/acknowledgements.tex index 645e7c8..9c1291b 100644 --- a/data/acknowledgements.tex +++ b/data/acknowledgements.tex @@ -1,9 +1,17 @@ % !TEX root = ../bachelor-thesis.tex \begin{acknowledgements} - 感谢王博老师、徐明伟老师和黄永峰老师对我论文的悉心指导。他们对我的研究工作给出了很多建议和帮助。 + 四年的本科生活和一年的毕业设计也终于到了该认真作别的时候。回望这段旅程,从最初对研究问题的懵懂摸索,到逐渐形成较为清晰的技术方案,再到最终完成论文写作,其中的每一步都离不开许多师长、同学、朋友和家人的帮助与支持。在此,我向所有关心、指导和陪伴过我的人致以最诚挚的感谢。 - 感谢实验室的沈逸昕师兄,他几年来毫无保留地将自己的经验与知识与我分享,让我少走了很多弯路。还需要感谢佟海轩师兄、李骋昊师兄、张皓晨同学和谢语桐同学,他们在我的研究过程中与我的讨论开拓了我的思路,也让我收益匪浅。 + 首先感谢王博老师、徐明伟老师和黄永峰老师对我论文的悉心指导。三位老师在选题、系统设计、实验分析和论文写作等方面都给予了我许多宝贵建议,也在我遇到困难和反复修改时给予了充分的耐心与鼓励。老师们严谨的治学态度、清晰的问题意识和对细节的高标准要求,使我对科研工作有了更切实的认识,也让我在完成毕业设计的过程中不断学习如何发现问题、分析问题并稳妥地解决问题。 - 四年的本科时光也已行至结尾。四年里,我在清华园中遇到了许许多多的老师与同学,他们一路给我了许多帮助与鼓励,让我能顺利地完成这一段旅程。感谢他们对我的帮助与支持。 + 感谢实验室的沈逸昕师兄。几年来,师兄毫无保留地将自己的经验与知识同我分享,在技术路线、实验方法、工程实现以及论文表达上都给了我很多具体而及时的帮助,让我少走了许多弯路。许多看似细小的讨论,后来都成为推动工作向前的重要线索。也感谢佟海轩师兄、李骋昊师兄、张皓晨同学和谢语桐同学,他们在我的研究过程中与我进行过许多有启发的交流,帮助我从不同角度审视自己的想法,开拓了我的思路,也让我受益匪浅。 + + 感谢答辩组的各位老师。各位老师在开题、中期检查和最终答辩等环节中提出了许多中肯而细致的意见,帮助我不断明确论文的核心问题、完善实验设计、改进论证方式,并最终使本文能够更加完整地呈现出来。这些建议不仅推动了毕业设计本身的完善,也让我更加理解一项工作从想法到论文之间所需要经历的打磨过程。 + + 四年里,我在清华园中遇到了许许多多的老师与同学,也经历了许多珍贵的课堂、讨论、项目和日常。感谢所有曾经给予我帮助、鼓励和包容的人,是你们让我能够更从容地面对学习和生活中的压力,也让我在这段旅程中逐渐成长为更坚定、更清楚自己方向的人。能够在这样的环境中学习和生活,是我十分幸运的事情。 + + 感谢段文博、王家瑞、毕嘉仪及各位从高中起就陪伴我左右的各位同学。你们在我初入清华这个熟悉的校园时成为我最熟悉的那一丝联系,让我能自信地迅速适应新的学习阶段。你们在学习之外也陪伴着我,给我莫大的支持。 + + 最后,感谢我的父亲与母亲。无论我身处顺境还是低谷,他们始终以最坚定、最温和的方式支持我、信任我。他们对我的爱与付出,是我无论如何都难以完全报答的,也让我能够一步步走到今天。 \end{acknowledgements} diff --git a/defense_slides_outline.md b/defense_slides_outline.md new file mode 100644 index 0000000..9424ade --- /dev/null +++ b/defense_slides_outline.md @@ -0,0 +1,296 @@ +# 本科答辩 Slides 大纲 + +题目建议:**面向跨域公网覆盖网络的分段链路质量修复** + +核心策略:不要把“测量”和“observation”放在背景里讲,而是把它们作为本文的第一项工作与第一项贡献。背景只保留听懂问题所必需的 2-3 句话。 + +## 总体叙事 + +答辩老师要求“不要讲背景”,本质上是希望不要花大量时间介绍领域常识和相关工作。因此 slides 可以采用下面的叙事: + +1. 服务商需要用覆盖网络为跨域用户提供稳定传输,但专线贵、公网便宜但不稳定。 +2. 本文先做测量,发现现有“公网好时分流、差时用专线”的思路难以降低峰值成本;同时,公网并不是整体都差,而是不同链路片段差异很大。 +3. 因此,本文提出:不把低质量公网链路直接放弃,而是在全公网覆盖网络中,只对低质量链路片段做质量修复。 +4. 为此,本文设计了分段 FEC 修复、自适应参数选择和解码端 pacer,并实现原型系统。 +5. 实验表明,该方法能够识别低质量片段并只在那里启用 FEC,最高带来约 3.6 倍吞吐提升。 + +这套讲法的好处是:开头仍然给了老师理解贡献所需的最小上下文,但从第 3 页开始就进入“我们的发现”和“我们的设计”,不会显得在讲大段背景。 + +## 建议页数与时间 + +建议 12-14 页,适合 8-12 分钟答辩。若时间更短,可以删掉“相关工作差异”页或把 Pacer 压缩到系统设计页里。 + +## Slide 1: 标题页 + +标题:面向跨域公网覆盖网络的分段链路质量修复 + +内容: +- 姓名、导师、院系 +- 一句话副标题:在全公网覆盖网络中,仅对低质量链路片段进行自适应 FEC 修复 + +讲述目标: +- 直接让老师知道本文做的是“公网覆盖网络”“分段修复”“FEC”。 + +## Slide 2: 问题一句话说明 + +标题:跨域覆盖网络的核心矛盾:质量与成本 + +建议配图: +- `figures/cloud_network_rtc.drawio.pdf` + +内容: +- 服务商用覆盖网络连接跨地域用户。 +- 专线链路质量稳定,但成本高,且常按峰值带宽计费。 +- 公网链路成本低,但在跨域场景中容易丢包和波动。 + +讲述目标: +- 这页就是“必要背景”,控制在 30-45 秒。 +- 不展开云网络、Overlay、QoS/QoE 等概念,只说清楚“为什么需要优化”。 + +## Slide 3: 本文关注的问题 + +标题:能否少依赖专线,同时维持跨域传输质量? + +内容: +- 已有调度思路:公网质量好时分流,公网质量差时回到专线。 +- 已有端到端优化:把整条路径当成一条黑盒链路,统一调速或统一加冗余。 +- 本文的问题:在覆盖网络可控、路径可分段的条件下,能否更细粒度地修复公网链路? + +讲述目标: +- 这页不是相关工作综述,而是问题定义。 +- 重点落在“覆盖网络路径是分段的”,为后续 observation 铺垫。 + +## Slide 4: 贡献总览 + +标题:本文贡献 + +内容: +1. 通过真实公网测量,发现公网质量下降与用户流量高峰重合,且不同公网链路片段质量差异显著。 +2. 提出分段链路质量修复:在全公网覆盖网络中,仅对低质量链路片段加入冗余修复。 +3. 设计并实现自适应交织 XOR FEC、三状态丢包模型参数选择和解码端输出速率控制。 +4. 实现 Rust 原型系统并实验验证,最高实现约 3.6 倍端到端吞吐提升。 + +讲述目标: +- 提前把所有创新点摆出来。 +- 后续 slides 就是逐一展开这些贡献。 + +## Slide 5: 测量发现一:公网劣化发生在最需要它的时候 + +标题:Observation 1:公网质量下降与用户流量高峰重合 + +建议配图: +- `figures/hongkong-jinan-withbd.pdf` + +内容: +- 用户流量升高时,公网链路更容易出现丢包率上升和延迟波动。 +- 这使“公网质量好时分流”的窗口往往出现在低流量时段。 +- 由于专线常按峰值带宽计费,低峰时分流难以显著降低专线成本。 + +讲述目标: +- 把测量作为“我们的发现”,不要说成背景。 +- 这页回答:为什么只做公网/专线调度不够。 + +## Slide 6: 测量发现二:公网不是整体都差 + +标题:Observation 2:公网链路质量具有明显片段差异 + +建议配图: +- `figures/loss_avg_heatmap.pdf` + +内容: +- 一些公网链路片段平均丢包率很低,接近专线质量。 +- 另一些跨域片段丢包明显,是端到端质量下降的主要来源。 +- 端到端方法只能看到整条路径变差,无法定位是哪一段链路造成问题。 + +讲述目标: +- 这页回答:为什么应该“分段修复”而不是“端到端统一冗余”。 + +## Slide 7: 关键想法 + +标题:从“规避低质量公网”到“修复低质量片段” + +建议配图: +- 可使用 `figures/all_redundent_waste.drawio.pdf` +- 或者重画成更适合 slides 的 A-B-C 三节点示意图 + +内容: +- 传统调度:公网差时切回专线。 +- 端到端 FEC:整条路径统一加冗余,可能浪费好链路带宽。 +- 本文方法:全公网互联,只在低质量链路片段两端做 FEC 修复。 + +一句话 takeaway: +- **把冗余开销限制在真正发生丢包的链路片段上。** + +讲述目标: +- 这是全场最重要的概念页,建议多停留一点。 + +## Slide 8: 系统架构 + +标题:全公网覆盖网络中的分段修复系统 + +建议配图: +- `figures/system_overview.drawio.pdf` + +内容: +- 系统由中心控制器和多个转发节点组成。 +- 控制器负责路径、流标识、转发表和 FEC 参数配置。 +- 转发节点负责普通转发、FEC 编码和 FEC 解码。 +- 每个链路片段独立选择“普通转发”或“FEC 修复”。 + +讲述目标: +- 强调对应用透明:用户只感知普通 IP 链路,不需要改应用或端到端协议。 + +## Slide 9: 设计一:交织 XOR FEC + +标题:用交织 XOR FEC 修复突发丢包 + +建议配图: +- `figures/fec_interleave_loss.drawio.pdf` +- 或 `figures/interleaved_fec.drawio.pdf` + +内容: +- 将数据包组织为二维编码组。 +- 每列用 XOR 生成一个冗余包。 +- 交织把连续丢包分散到不同列,使每列最多丢一个包时可以恢复。 +- 选择 XOR 的原因:计算开销低,适合高吞吐转发;结合交织后可应对有限长度突发丢包。 + +讲述目标: +- 不需要讲太多编码理论,只讲“为什么能恢复、为什么适合系统”。 + +## Slide 10: 设计二:根据链路状态动态选择参数 + +标题:自适应选择 FEC 参数,避免冗余过多或过少 + +建议配图: +- `figures/markov_state.drawio.pdf` + +内容: +- 公网丢包包含孤立丢包和连续突发丢包。 +- 本文用三状态丢包模型描述链路状态:孤立丢包、正常、连续丢包。 +- 解码端统计丢包并上报,控制器估计模型参数。 +- 控制器在延迟约束和残余丢包率约束下搜索交织深度 `d` 和保护包数 `k`。 + +讲述目标: +- 强调“自适应”的必要性:公网链路状态会变,固定冗余不合适。 +- 这页是算法贡献。 + +## Slide 11: 设计三:平滑 FEC 解码后的突发输出 + +标题:用 Pacer 保持端到端传输节奏 + +建议配图: +- `figures/pacer_design.drawio.pdf` + +内容: +- FEC 按组恢复,解码端可能一次性输出多个包。 +- 突发输出会干扰 ACK 节奏和拥塞控制的带宽估计。 +- 本文设计基于 PI 控制器的输出速率控制器。 +- Pacer 根据缓冲区深度动态调整释放速率,将突发输出平滑为稳定输出。 + +讲述目标: +- 这页体现系统工程完整性:不仅能恢复包,还考虑恢复后对上层协议的影响。 +- 如果答辩时间很短,可以压缩为系统设计中的一个小点。 + +## Slide 12: 实现与实验设置 + +标题:原型实现与实验拓扑 + +建议配图: +- `figures/exp_topology.drawio.pdf` + +内容: +- 使用 Rust 实现分布式转发与控制系统。 +- 实验使用 A-B-C 三节点路径,AB 为低质量链路,BC 为高质量链路。 +- AB 链路设置 0-2% 丢包,两段 RTT 均为 50 ms,带宽均为 100 Mbps。 +- 对比方法:直接转发 vs. 本文分段修复。 + +讲述目标: +- 说明实验为什么能验证“分段修复”:只有 AB 有丢包,BC 无丢包。 + +## Slide 13: 实验结果 + +标题:分段修复显著提升端到端吞吐 + +建议配图: +- `figures/thpt_absolute.pdf` +- `figures/thpt_speedup.pdf` + +内容: +- 无丢包时,本文方法与直接转发接近,额外开销约 1.3%。 +- 丢包升高时,直接转发吞吐快速下降。 +- 本文方法在 0.2%、0.5%、1%、2% 丢包下均显著高于直接转发。 +- 最高在 2% 丢包时达到约 3.6 倍吞吐提升。 + +讲述目标: +- 先讲趋势,再讲数字。 +- 不要只说“FEC 有效”,要说“系统只在 AB 段启用 FEC,BC 段保持普通转发”,这样扣回核心创新。 + +## Slide 14: 总结 + +标题:总结 + +内容: +- 本文发现:公网质量下降与流量高峰重合,且不同链路片段质量差异显著。 +- 本文提出:全公网覆盖网络中的分段链路质量修复。 +- 本文设计:交织 XOR FEC、自适应参数选择、PI Pacer。 +- 本文验证:Rust 原型系统在模拟跨域低质量链路中最高提升约 3.6 倍吞吐。 + +最后一句建议: +- **本文的核心结论是:低质量公网链路不一定只能被规避,也可以利用覆盖网络的分段可控性被针对性修复。** + +## 可选 Slide 15: 展望 + +标题:未来工作 + +内容: +- 更精细的链路丢包模型和 FEC 参数选择。 +- 在链路片段内部加入轻量级快速重传,补充 FEC 无法恢复的残余丢包。 +- 在更真实的大规模跨地域环境中验证成本与质量收益。 + +讲述目标: +- 如果答辩要求必须有展望,可以保留。 +- 如果时间紧,可以把这页删掉,把展望放到总结页最后一句。 + +## 建议删减的内容 + +不建议在正式答辩中展开: +- VXLAN、NVGRE、Geneve 等隧道技术细节。 +- FEC 相关工作的完整分类。 +- SDN/覆盖网络相关工作的长篇综述。 +- Reed-Solomon、Streaming Code 的详细原理。 +- 三状态模型的完整公式推导。 +- PI 控制器的完整公式推导。 + +这些内容可以放在备份 slides,用于老师提问时回答。 + +## 备份 Slides 建议 + +1. 为什么不用 Reed-Solomon? + - R-S 恢复能力更强,但计算开销更高。 + - 本文目标是高吞吐转发场景,交织 XOR 已能覆盖观察到的有限突发丢包。 + +2. 为什么不用端到端 FEC? + - 端到端 FEC 无法区分哪段链路质量差。 + - 会在高质量片段上也引入冗余,浪费带宽。 + +3. 为什么需要 Pacer? + - FEC 解码按组输出可能造成突发 ACK。 + - 突发 ACK 会影响拥塞控制和速率估计。 + +4. 实验为什么只模拟 A-B-C 三节点? + - 该拓扑最小化地刻画了“路径分段质量不均衡”这一核心问题。 + - 只有 AB 丢包、BC 不丢包,可以直接观察系统是否只修复低质量片段。 + +5. 方法的局限 + - FEC 会带来冗余带宽开销。 + - 极端长突发丢包仍可能无法恢复。 + - 当前实验为模拟环境,后续需要更大规模真实公网验证。 + +## 口头开场建议 + +可以这样开场: + +> 我的工作关注跨域覆盖网络中的成本和质量问题。服务商通常希望用覆盖网络为跨地域用户提供稳定传输,但专线质量好、成本高,公网成本低、质量不稳定。本文并不是简单地在公网和专线之间调度,而是先通过测量发现:公网链路的问题具有明显的时间特征和分段特征。因此,我提出在全公网覆盖网络中,只对真正低质量的链路片段进行质量修复。 + +这个开场既交代了背景,又很快转入“本文发现”和“本文提出”,比较符合老师的要求。 + diff --git a/figures/exp_topology.drawio.pdf b/figures/exp_topology.drawio.pdf index 88c7084..25daa67 100644 Binary files a/figures/exp_topology.drawio.pdf and b/figures/exp_topology.drawio.pdf differ diff --git a/figures/exp_topology.drawio.svg b/figures/exp_topology.drawio.svg index 699f945..7ddf647 100644 --- a/figures/exp_topology.drawio.svg +++ b/figures/exp_topology.drawio.svg @@ -1,4 +1,4 @@ -
A
B
C
控制器
可变丢包率
50ms RTT
100Mbps
无丢包
50ms RTT
100Mbps
\ No newline at end of file +
A
B
C
控制器
可变丢包率
50ms RTT
100Mbps
无丢包
50ms RTT
100Mbps
\ No newline at end of file diff --git a/figures/hongkong-jinan-withbd.png b/figures/hongkong-jinan-withbd.png new file mode 100644 index 0000000..d4bd419 Binary files /dev/null and b/figures/hongkong-jinan-withbd.png differ diff --git a/thusetup.tex b/thusetup.tex index 360e057..220c379 100644 --- a/thusetup.tex +++ b/thusetup.tex @@ -77,7 +77,7 @@ % 指导教师 % 中文姓名和职称之间以英文逗号“,”分开,下同 % - supervisor = {王博, 副教授}, + supervisor = {黄永峰, 教授}, supervisor* = {Associate Professor Wang Bo}, % % 副指导教师