论文部分内容阅读
数据接收端在接收到无序数据后将其存储在接收缓存,并发送选择确认SACK给数据发送端,但在该数据传送给接收应用进程之前将其从接收缓存中删除,这种现象称为Data Reneging 。现在的可靠传输协议TCP、SCTP都容忍Reneging的发生。RFC2018中描述:SACK选项是一个报告,即他通知数据发送端接收到该数据,数据接收端允许在发送选择确认之后删除该数据。本文主要研究了SCTP中Reneging发生的原因、影响以及在不同操作系统中检测Reneging 。由于TCP和SCTP的设计都容忍Reneging的发生,所以数据发送端必须保存发送数据的副本直到收到累计确认ACK后才可以将其从发送缓存中删除。如果Reneging在数据传输的过程中发生了,那么存储在发送缓存中的无序数据副本就用于数据重传,保证数据的可靠传输。相反,数据在传输的过程中没有发生Reneging,那么无序数据副本就没有必要保存,保存了不必要的数据造成了操作系统资源的浪费。SCTP的Reneging检测模型是在TCP中检测Reneging模型的基础上建立的。这个模型在SCTP的数据发送端检测Reneging 。通过比较接收缓存状态和新接收到的ACK的信息,当两者出现不一致时推断发生了Reneging 。根据接收到的SACK和ACK信息推断接收缓存的状态信息,但是在有些情况下接收到的SACK信息存在错误。有时候本应该发送的SACK信息没有发送,或者是发送了错误的SACK信息。Ekiz发现了7中错误的SACK错误行为,这7中错误行为中除第一种不会在SCTP中发生外,其他都可能发生在SCTP中。由于这些错误行为的存在导致该检测模型的准确性降低,所以在该模型中加入了对错误行为的分析。通过分析重传数据流,确定发生了Reneging还是错误行为引起的错误推断°通过对Reneging实例的研究,深入分析了Reneging产生的原因和影响。经研究发现TCP和SCTP的这种容忍Reneging的机制是不恰当的,这种机制导致发送缓存的利用率和系统吞吐量降低,为此有必要修改这种机制来提高发送缓存的利用率和系统的吞吐量。通过对SACK选项的语义进行修改或当检测到Reneging时重置(RESET)连接,可能会改善目前发送缓存利用率和吞吐量低的状况。