wandering1
|
33405a57b5
|
docs(N34)+test: E13 僵尸会话根因坐实;Phase 11 判据修正+一次性报告
E13(实验方案.md 新增 + E8/E11/E12 口径修正):
- 风暴态根因=僵尸会话,非芯片残渣:PC 网卡禁用/链路断开时
Windows 直接丢弃 socket 不发 FIN/RST → 芯片侧 ESTABLISHED 僵尸
→ 单连接监听被占(:21 拒连)→ 下一 PASV 重监听与僵尸竞态
(accept 为垂死僵尸开枪 20ms 后 DISCONNECT)→ lftpd 5s 窗空转
→ 425;每失败轮再生僵尸 → 自续数分钟
- "残渣跨烧录存活/需断电冷启动"口径作废:板上 CH395F RSTI 接
MCU NRST(V0.0 网表 :174),每次烧录即芯片硬件复位;"存活"是
锤击再生错觉。正确控制=下一臂前静置 ≥90s 清僵尸窗
- 自愈链端到端验证:TIMEOUT(在途 TX ≈30s)/keepalive(空闲 60/5/3)
→ pump → relisten → 端口恢复;E11 产品路径验证 17s 判死 PASS
- 4 元组复用假设被否(pasv_probe.py:PASV 端口递增、PC 源端口随机)
- e02_probe listener=FAIL 重解读:探针挂起 socket 未关(PC 内核
代 ACK keepalive)→ 拒连是单连接正确行为;真缺口=应用无法主动
拆会话 → 阶段 2 sock_reset 职责
Phase 11 测试修复(net_test_task.c,实跑暴露):
- 判据 >=60000ms 是按手册公式写的,实测判死 18~31s 会在正确固件
上假 FAIL → 改有界窗 10s~120s(下限防误杀存活空闲会话,上限
防判死缺位)
- 报告后不释放 phase_active → 对已死连接 10ms 节奏刷 594 条假
FAIL → phase11_run 返回完成态,主循环释放等新连接再测
- 复跑两轮验证:30137ms 单次 PASS → 自动等新连接 → 二轮 accept 正常
- Test_Guide TC-NET-1101 判据/耗时同步;ch395f_test.h Phase 14
共存安全性注释(有整体超时不永久挡 accept)
工具:test/host/pasv_probe.py(每轮打印 PASV 端口+PC 源端口+结果)
|
2026-10-13 11:23:40 +08:00 |
|