《WireShark网络分析的艺术》笔记

《WireShark网络分析的艺术》笔记

一个问题

某些iSCSI存储阵列在出现网络拥塞时处理不当,会严重影响VMware的读写性能。这和它们的TCP实现方式有关。

解决方式:在VMware和存储阵列上关闭延迟确认(Delayed ACK)

介绍iSCSI:

第17章 使用iSCSI服务部署网络存储。

简言之,这是一种将SCSI(Small Computer System Interface)和以太网技术结合起来的新型存储技术,实现了在网络中传输SCSI的命令和数据。

延迟确认的好处

如果在延迟的过程中正好有数据要发,正好在发数据时捎带确认信息,这样就能少一些确认包,从而节省宽带。

延迟确认的坏处

丢包重传延迟确认问题。假如客户端向服务端发送了1-9这9个包,但3,4,5丢了,而6,7,8,9顺利到达服务端,从而触发了4个ACK 3,这时客户端重传3号包并到达服务端,但由于服务端开启了延迟确认,所以会延迟一段时间后发送ACK 4。同样的,ACK 5也被延迟发送,这样会造成很大的性能问题。

如何估算网络拥塞点?

发生拥塞时的在途字节数就是该时刻的网络拥塞点。

先找到重传包的第一个,再根据该重传包的Seq值找到其原始包。最后计算该原始包发送时刻的在途字节数。

有时可能找不到原始包,这可能是该包被包含在一个大包里了,原因是LSO(Large Segment Offload)。

LSO:TCP层将大于MSS的数据直接传给网卡,让网卡来负责分段工作。

由于抓包是站在CPU的视角上看的,所以我们会看到一个大包,而不是被分段后的几个小包。

TCP与UDP

UDP不能把大块数据先进行分段,所以很容易被网络层分片,丢失一个片,所有的都需要重传。这也说明了UDP是不可靠的,它缺乏一个机制来确保数据被安全送达,所以只能由应用层来负责重传。

TCP只需重传丢失的那一个包,而不是所有包。在传输过程中应用层也不用负责重传事宜。

零散知识点

  • TCP SACK可以在ACK时告知那些包已经收到。
  • RFC并没有规定,每一个数据包都必须有一个对应的ACK。数据接收方也可以累积一些包才对发送方ACK一次
  • 愚笨窗口症(Silly Window Syndrome):数据包中数据所占比例过小(IP头、TCP头比例过大),造成浪费。
  • 纳格算法:
    if 有新数据需要发送
    	if 数据量超过MSS
    		立即发送
    	else
    		if 之前发出去的数据尚未确认
    			把新数据缓存起来,凑够MSS或等确认到达再发送
    		else
    			立即发送
  • 纳格算法和延迟确认一起用会影响性能。
  • RFC最多传16个用户组。解决方法:把客户端的\etc\passwd和\etc\group文件复制到服务器上,需要用带用户组的时候就自己在服务器上查询,而不理会客户端通过RPC层传过来的信息。
  • wireshark的提示:TCP window Full和TCP zerowindow。前者表示这个包的发送方暂时没办法发送数据了,后者表示这个包的发送方暂时没办法再接受数据了。
  • 数据接收方抓的包的顺序是规整的,但数据发送方抓的包的顺序由于网络延迟很有可能是极度错乱的。
  • 在途字节数(bytes in flight):表示那些已经发送出去,但未被确认的字节。如何计算?在途字节数=Seq + Len - Ack。其中Seq和Len是来自上一个数据发送方的包,Ack是来自上一个数据接收者的包。
  • 不太科学的cwnd算法(cwnd += MSS * MSS / cwnd)和LSO一起使用会导致cwnd上升过慢,影响性能。
  • 尽量保证网络中每个设备的MTU保持一致。
  • 巨帧在经过路由器时,如果在网络层携带了DF(Dont fragmet)标志,就被丢弃;没有,就被分片。由携带了DF标志被路由器丢弃造成的丢包,重传是完全无效的。
  • 只要很少的丢包重传就足以对性能造成很大影响,当重传率超过0.1%就得采取措施了,快速重传和超时重传的影响很不一样。
  • TTL初始值一般为64,每经过一次路由,TTL减一。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值