首页 > 科技 >

常见网络加速技术浅谈(一)(4)

2018-09-16 01:28:23 网络整理 阅读:130 评论:0

SG需要Checksum offload的支持,因为现在数据是离散的,系统内核不太容易计算Checksum。TSO

TSO全称是TCP Segmentation Offload,它只能用于网络数据的发送。从名字可以看出,这是一个与TCP协议紧密相关的方法。

应用程序可以传递任意长度数据给TCP。TCP位于传输层并不会直接将整段用户数据交给下层协议去传输。因为TCP本身是一个可靠的传输协议,而下层协议,IP/Ethernet都不是可靠的,下层协议在数据传输过程中可能会丢失数据。TCP不仅需要确保传输的可靠性,为了保证效率,还需要尽量提高传输的成功率。TCP的办法就是化整为零,各个击破。

在开始后面的描述之前,先说两个相近且容易混淆的词。一个是Segmentation(分段),一个是Fragmentation(分片)。TCP协议在将用户数据传给IP层之前,会先将大段的数据根据MSS(Maximum Segment Size)分成多个小段,这个过程是Segmentation,分出来的数据是Segments。IP协议因为MTU(Maximum Transmission Unit)的限制,会将上层传过来的并且超过MTU的数据,分成多个分片,这个过程是Fragmentation,分出来的数据是Fragments。这两个过程都是大块的数据分成多个小块数据,区别就是一个在TCP(L4),一个在IP(L3)完成。

接着回来,如果TCP直接传输整段数据给下层协议,假设是15000字节的用户数据,网卡的MTU是1500,考虑到Header,IP层会将数据分成11个IP Fragments在网络上传输,为了描述简单,我们就假设分成了10个IP Fragments。假设每个IP packet的传输成功率是90%,因为TCP协议有自己的校验和,在数据的接收端,IP协议必须将完整的15000字节的用户数据收完,并且拼接传给TCP,才算接收端成功收到数据。这样的话,传输一次成功传输的概率是(90%)^10=34%。一旦TCP接收端没有成功收到数据,发送端就需要重新将整段数据15000字节再发一次。假设发送4次,,也就是总共60000字节,传输的成功率能上升到80%。

相关文章