文档章节

TCP丢包测试

suit
 suit
发布于 2014/09/18 23:11
字数 560
阅读 574
收藏 0

这几天因为业务上的需求对两台主机的高并发报文进行一些测试,捉包发现一些问题。

测试场景:

主机A:172.18.18.15 做为服务器端,不停地向主机B发送报文。A机采用epoll(IO复用)的方式串行非阻塞发包。

主机B :  172.18.18.99 做为客户端,启动多个进程(100个)连接A机,建立不同的socket(端口)与主机进行通讯,

不停接收主机报文。

现象:

正常情况下,A机发送一个报文耗时15us。100个包正常来说1.5ms就可以搞定,但从程序日志来看经常出现

最后2-7个包会与第一个包有200ms+的时间差距。在A机上捉包发现出现了附录3种异常的报文,其中只要出

现TCP Retransmission(重发)就会有200ms的时间差,这个时间差应该是RTO的时间,从B机捉包发现,

这些包第一次确实没有出现在B机上,只有重发第二次才到,也就是第一次发的时候丢包的。但奇怪的是两

台机在同一个机房,网卡与交换机都至少是100M,网卡甚至是1000M的。

我们最大的包大概是500Byte, 100个包,50K。1.5ms发50K, 也就达到 33MB/s,转成小b, 达到了264Mb/s,

是不是因为这个原因占满了带宽导致重发呢?

image

附录:

[TCP Previous segment lost]

发现大量的TCP Previous segment lost.这种应该是对方回了个ACK,而A机自己下个包的seq比上个ACK要高,也就是有个包和ACK丢了。

实际上应该是发了的,应该是tcpdump没捉到。

image

[TCP ACKed lost segment]

"TCP Acked lost segment" These are ack's that ethereal can't match with a sent segment. Are ACK that Ethereal detects, but cant see the segment sent.

这个的意思应该是收到B机的ACK但A机找不到对应的包,应该也跟上一个类似,实际是发了,但tcpdump没捉到。

[TCP Retransmission] 这个是重点,包出现重发。

image

[参考资料]

© 著作权归作者所有

suit
粉丝 4
博文 24
码字总数 13208
作品 0
广州
程序员
私信 提问
为什么MOBA、“吃鸡”游戏不推荐用tcp协议——实测数据

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和“吃鸡”游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法、竞技...

腾讯云社区
2017/12/12
0
0
tcp没用吗?为什么MOBA、“吃鸡”游戏不推荐用tcp协议

本文由云+社区发表 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和“吃鸡”游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法、竞技程度不一样,采用的同步算法不一样,对网...

腾讯云加社区
01/09
156
0
TCP传输协议中如何解决丢包问题

TCP在不可靠的网络上实现可靠的传输,必然会有丢包。TCP是一个“流”协议,一个详细的包将会被TCP拆分为好几个包上传,也是将会把小的封裝成大的上传,这就是说TCP粘包和拆包难题。 但是许多...

海洋飞翔
07/18
0
0
windows 网络丢包测试

相关工具: https://jagt.github.io/clumsy/ 原理 使用上述工具,模拟网络有一定丢包率,接着就可以对应用程序进行测试; 通过该方式测试 Unity中使用 c# 的 BeginSend 异步接口,在 drop 丢...

李勇2
2016/05/10
137
0
IPTV 质量评价方法已经不适用于 OTT TV 质量评价

OTT TV一般情况下使用HTTP传输视音频内容,而IPTV一般情况下使用RTP传输视音频内容。HTTP是基于TCP的,因此不会出现丢包情况。而RTP是基于UDP的,因而会出现丢包状况。正是因为这点不同导致I...

雷霄骅
2013/09/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
8
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部