标签: packetloss

如何被动监控tcp丢包?(Linux)

如何被动监视进出机器的 TCP 连接上的数据包丢失?

基本上,我想要一个位于后台并监视 TCP ack/nak/re-transmits 的工具,以生成关于哪些对等 IP 地址“似乎”正在遭受重大损失的报告。

我在 SF 中发现的大多数此类问题都建议使用 iperf 之类的工具。但是,我需要监视到/来自我机器上真实应用程序的连接。

这些数据是否只是位于 Linux TCP 堆栈中?

linux performance-monitoring network-monitoring tcp packetloss

71
推荐指数
3
解决办法
13万
查看次数

为什么硬件路由器比具有更好规格(RAM 和 CPU)的 Linux 路由器性能更好?

我有一个最小的 CentOS 6.3、64 位作为网关,带有 4 个 NIC(1 Gbps),每个绑定在一起一个用于公共流量,另一个用于执行 NAT 的私有。它有 6 GB RAM 和 4 个逻辑内核。过去两年我们一直在使用它,没有任何问题。

我对硬件路由器没有任何经验,但我听说它们的 RAM 和 CPU 较少,并且使用闪存盘。低硬件配置的机器如何比具有更多 RAM 和 CPU 的机器性能更好(例如,处理更多的并发连接)?

除了 IOS 使用不同的方法来处理这个问题之外,还有哪些限制因素?

linux router packetloss

49
推荐指数
3
解决办法
3万
查看次数

你如何诊断数据包丢失?

我意识到这是非常主观的并且取决于许多变量,但我想知道大多数人在需要诊断给定系统上的数据包丢失时会经历哪些步骤?

packetloss packet best-practices

37
推荐指数
2
解决办法
11万
查看次数

如何使用 rsync 修复(相对)大文件的损坏数据包错误?

尝试使用以下rsync命令更新服务器上的文件:

rsync -ravq -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
Run Code Online (Sandbox Code Playgroud)

corrupt packet 错误不断被抛出,特别是:

rsync: writefd_unbuffered failed to write 4092 bytes to socket [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (11337 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /home/lapo/package/rsync-3.0.9-1/src/rsync-3.0.9/io.c(605) [sender=3.0.9]
Run Code Online (Sandbox Code Playgroud)

这可能与ssh超时有关,因为它似乎发生在大(r)文件中。另外,我一直在使用 WinSCP 超时。这只会发生在我身上;与我一起工作的几个使用此服务器的人没有同样的问题。

rsync从 Windows 7 中的 Cygwin 终端使用Centos 6.3 服务器。

我不确定还有哪些其他信息可能有用或如何获取这些信息。我会根据任何建议更新问题或添加评论。

我应该如何解决这个问题?

非常感谢!

ssh rsync corruption packetloss

12
推荐指数
1
解决办法
4万
查看次数

UDP 丢包率达 300Mbit (14%),但 TCP > 800Mbit 无重传

我有一个用作iperf3客户端的 linux机器,用 Broadcom BCM5721、1Gb 适配器(2 个端口,但只有 1 个用于测试)测试了 2 个配备相同的 Windows 2012 R2 服务器盒。所有机器都通过一个 1Gb 交换机连接。

在例如 300Mbit 测试 UDP

iperf3 -uZVc 192.168.30.161 -b300m -t5 --get-server-output -l8192
Run Code Online (Sandbox Code Playgroud)

导致发送的所有数据包丢失 14%(对于具有完全相同硬件但较旧的 NIC 驱动程序的其他服务器盒,丢失约为 2%),但即使在 50Mbit 时也会发生丢失,尽管不那么严重。使用等效设置的 TCP 性能:

iperf3 -ZVc 192.168.30.161 -t5 --get-server-output -l8192
Run Code Online (Sandbox Code Playgroud)

产生800Mbit以北的传输速度,没有报告重传。

服务器始终使用以下选项启动:

iperf3 -sB192.168.30.161
Run Code Online (Sandbox Code Playgroud)

谁的错?

  1. linux 客户端(硬件?驱动程序?设置?)? 编辑:我刚刚从一个 Windows 服务器盒运行测试到另一个和 300Mbit 的 UDP 数据包丢失甚至更高,为 22%
  2. Windows 服务器盒(硬件?驱动程序?设置?)?
  3. 连接所有测试机的(单个)开关?
  4. 电缆?

编辑:

现在我尝试了另一个方向:Windows -> Linux。结果:丢包率始终为 0,而吞吐量最大约为

  • 840Mbit 用于-l8192,即分片的 IP 数据包
  • 250Mbit 用于-l1472未分片的 …

performance iperf tcp udp packetloss

12
推荐指数
2
解决办法
3万
查看次数

iperf 和 tcpdump 的丢包率

我测试了一条线路的链接质量iperf。测得的速度(UDP 端口 9005)为 96Mbps,这很好,因为两台服务器都以 100Mbps 的速度连接到互联网。另一方面,数据报丢失率显示为 3.3-3.7%,我发现这有点太多了。使用高速传输协议,我用tcpdump. 比我计算的丢包率 - 平均 0.25%。有没有人解释一下,这个巨大的差异可能来自哪里?您认为可接受的丢包率是多少?

iperf tcpdump packetloss

11
推荐指数
1
解决办法
2万
查看次数

在数据中心内的通信中丢失数据包有多常见?

假设我在同一个数据中心有 2 台机器,但不一定在同一个机架中。

在这两台机器之间使用 UDP 发送时,丢弃的数据包有多常见?

我的假设下问这个,因为只有在机器之间最少数交换机的数据包不会被丢弃在所有

无序数据包到达同一数据中心有多常见?我的假设是 99.9% 的时间只有一条路线,所以这不会发生。

然而,每当我发现自己在思考绝对的问题时,我知道我一定错过了一些东西!

我需要哪些背景信息才能更好地了解何时会出现丢弃的数据包,以及它们可能被丢弃的频率以及同一数据中心内的机器出现故障的频率?

最终,我试图在位于同一数据中心的不同 Linode VPS 实例之间进行通信时决定是使用多播 UDP 还是 PGM。信息必须按顺序到达。当然,UDP 听起来不是那么好!

但是,如果人们可以期望在同一个数据中心内实现几乎完美或完美的交付,那就没问题了。但是,我正在测试这个假设。

谢谢。

networking multicast udp datacenter packetloss

10
推荐指数
1
解决办法
1561
查看次数

较高的 rmem_max 值导致更多的丢包

rmem_maxLinux的设置限定了接收UDP数据包缓冲区的大小。
当流量变得太忙时,数据包丢失开始发生。

我制作了一个图表,显示数据包丢失如何根据传入带宽增加。
(我使用IPerf在两个 VM 实例之间生成 UDP 流量)
不同的颜色代表不同的rmem_max值:

在此处输入图片说明

如您所见,设置rmem_max26214400(深蓝色)会导致丢包比较小的值更早。Linux 的默认值是131071(深绿色)看起来很合理。

在这些情况下,为什么JBoss 文档建议设置rmem_max26214400
是因为 UDP 流量预计高于 350 MB/秒吗?无论如何,我认为任何东西都不会超过 1% 的丢包率...

我错过了什么?

详细信息:我sysctl -w net.core.rmem_max=131071(例如)在两个节点上都使用过,并在作为 serveriperf -s -u -P 0 -i 1 -p 5001 -f M和另一个作为 client 使用iperf -c 172.29.157.3 -u -P 1 -i 1 -p 5001 -f M -b 300M -t 5 -d -L 5001 -T …

linux udp linux-networking packetloss sysctl

9
推荐指数
1
解决办法
3万
查看次数

如何解释 MTR 的 traceroute / 输出?

我一直在运行 MTR 往返于我的一台服务器,并注意到一些对我来说看起来很奇怪的东西。因为我不是很喜欢这个,所以我会给你三个输出:

这是从服务器到我家的位置:

My traceroute  [v0.75]
prag341.server4you.de (0.0.0.0)                                                                                                                         Sat Apr 16 12:31:36 2011
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                                                                                                        Packets               Pings
 Host                                                                                                                                 Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. v9-609a.s4y14.fra.routeserver.net                                                                                                  0.0%   143    6.6   2.9   0.7  15.6   2.4
 2. 217.118.16.161                                                                                                                     0.0%   143    0.7   5.7   0.4  67.3  13.2
 3. 217.118.16.25                                                                                                                      0.0%   143    3.3   5.3   3.3  63.5   8.6
 4. 194.25.211.53                                                                                                                      0.0%   143    3.4   5.5   3.2  61.1   9.1
 5. vie-sb2-i.VIE.AT.NET.DTAG.DE                                                                                                       0.7%   143   17.8  21.7  17.6 131.1  14.8
    vie-sb2-i.VIE.AT.NET.DTAG.DE …
Run Code Online (Sandbox Code Playgroud)

networking diagnostic mtr packetloss

8
推荐指数
1
解决办法
8075
查看次数

Linux 服务器在 __netif_receive_skb_core 中丢弃 RX 数据包

我有一个 Ubuntu 18.04 服务器丢弃接收到的数据包,但我不知道为什么。

这是来自 netdata 的丢弃数据包的图表:

eno1-drops from netdata

服务器运行多个 docker 容器和网络,因此有多个 Linux 网桥和 veth 接口。不过,问题与物理接口有关。没有配置 VLAN。

除了 Docker 生成的规则外,机器没有 IPtables 规则。

网卡是 Intel I210(igb驱动程序)。

通过 TCP (rsync) 复制数据以 1G 线速工作,因此不会损坏很多 TCP 数据包。(由于窗口大小的减小,我预计 TCP 下降会极大地损害传输性能。)

# uname -a
Linux epyc 5.3.0-51-generic #44~18.04.2-Ubuntu SMP Thu Apr 23 14:27:18 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

可以在 上看到 RX-DRP eno1,这是机器唯一的物理接口。它随着 ca 增加。2 数据包/秒,流量很小(管理员 ssh,仅少量 dns 查询)。

# netstat -ni
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR …
Run Code Online (Sandbox Code Playgroud)

ubuntu linux-networking packetloss

7
推荐指数
1
解决办法
3180
查看次数