提升TCP性能的自适应协议研究
立即解锁
发布时间: 2025-08-18 00:54:21 阅读量: 2 订阅数: 15 

### 提升 TCP 性能的自适应协议研究
#### 1. 引言
近年来,在无线网络上支持互联网服务成为热点问题,众多研究者致力于开发相关改进方案。由于许多应用构建于 TCP 之上,且未来仍将如此,TCP 在无线环境中的性能备受关注。
TCP 最初是为有线网络设计的,在有线网络中丢包率极低,一旦检测到丢包,通常认为是连接路径出现拥塞,TCP 会触发拥塞恢复算法。然而,在无线互联网环境中,误码率大幅增加,丢包主要由拥塞导致的假设不再成立,原始 TCP 在包含有线和无线链路的异构网络中表现不佳。
许多协议被提出以改善 TCP 在无线链路中的性能,但多数需要中间节点(如基站)修改 TCP,无法维持端到端的 TCP。TCP HACK 是一种真正的端到端协议,能在数据传输路径存在突发错误但确认路径无损坏时良好工作。不过,若大量确认包丢失,其效率会显著下降。本文将介绍对 TCP HACK 的扩展,使其在确认路径严重损坏时仍能表现出色。
#### 2. TCP 在有损链路中的问题
原始 TCP 通过三个重复确认或超时检测丢失的确认包。当误码率较高时,即使单个数据包丢失也会被视为发生了拥塞,TCP 无法区分拥塞和数据包丢失。此时,TCP 发送方会触发慢启动机制:将拥塞窗口降至 1,每次收到确认包时窗口大小翻倍,直至达到拥塞窗口阈值的一半。
慢启动机制会显著降低 TCP 在高误码率情况下的性能。若能区分数据包丢失和拥塞并立即重传丢失的数据包,可避免慢启动。以下是慢启动阶段的相关计算:
- 发送方在慢启动阶段的空闲时间(近似)为:`Idle time = P[RTT] - (2P - 1)S/R`,其中 `P = min {Q, K - 1}`,`K` 是覆盖对象的窗口数量,`Q` 是发送方停顿的次数。
- 若不触发慢启动方案,可传输的额外数据包数量近似为:`Extra Segments = W²/8 + WlgW - 5W/4 + 1`,`W` 是未确认的数据包数量。
需要注意的是,上述两个表达式是在假设流量无损坏且忽略所有协议头开销的情况下得出的。
#### 3. 现有解决方案的优缺点
当前,现有的 TCP 实现通常遵循以下四种协议:
| 协议名称 | 特点 |
| ---- | ---- |
| TCP Tahoe | 具有慢启动、拥塞避免和快速重传算法的原始协议。 |
| TCP Reno | 在 TCP Tahoe 基础上引入快速恢复算法,收到重复确认包时不触发慢启动。 |
| TCP NewReno | 通过部分确认算法改进了 TCP Reno,能在快速恢复阶段更好地处理多个数据包丢失的情况。 |
| TCP SACK | 采用选择性确认机制和选择性重传策略,可克服前三者在处理多个数据包丢失时的限制,但仍受小拥塞窗口的约束。 |
此外,还有许多协议被提出以缓解异构网络环境中端到端 TCP 性能不佳的问题,主要可分为两类:
- **需要使用性能增强代理(PEPs)的协议**:
- **I - TCP**:将移动主机(MH)与固定网络主机(FH)之间的交互拆分为 MH 与基站(BS)之间的无线交互以及 BS 与 FH 之间的有线交互。BS 接收、缓冲并确认发送给 MH 的数据,然后负责将数据传递给 MH。使用 I - TCP 可获得比标准 TCP 更好的吞吐量,但 BS 会分割 TCP 连接,无法保留端到端语义。
- **Snoop 协议**:在基站引入 snoop 代理,监控 TCP 连接中双向的所有数据包,维护未被接收方确认的 TCP 数据包缓存。若缓存中有丢失的数据包,snoop 代理会重传该数据包并抑制重复确认包。Snoop 模块在高误码率环境中表现出色,能维持端到端的 TCP 语义,但需要中间节点(基站)进行 TCP 修改。
- **New Snoop 协议**:为克服 Snoop 协议的缺点而提出,采用两层分层缓存方案,在移动交换中心(MSC)和基站(BS)缓存未确认的数据包。若无线链路因传输错误导致数据包丢失,BS 负责恢复;若因切换导致丢失或中断,MSC 进行必要的恢复。New Snoop 协议能有效处理切换和链路损伤导致的数据包丢失,但需要中间节点(基站和 MSC)进行 TCP 修改。
- **M - TCP**:与 I - TCP 和 Snoop TCP 目标相同,将 TCP 连接拆分为两部分,标准的 FH - BS 连接使用未修改的 TCP,BS - MH 连接使用优化的 TCP。BS 监控发送给 MH 的所有数据包和 MH 返回的确认包,若一段时间未收到确认包,假设 MH 断开连接,通过发送窗口设置为零的最后一个确认包关闭 TCP 发送方的窗口,使发送方进入持久模式。M - TCP 不通过 BS 进行数据缓存/重传,若无线链路数据包丢失,由原始发送方重传,可维持 TCP
0
0
复制全文
相关推荐










