11

我们正在我们的服务器上进行一些负载测试,我正在使用 tshark 将一些数据捕获到 pcap 文件中,然后使用 wireshark GUI 通过转到分析 - > 专家信息来查看出现了哪些错误或警告,并加载了我的 pcap ..

我看到了各种我不确定或还不完全理解的东西..

在警告下我有: 779 TCP 警告:未捕获的 ACKed 段(在捕获开始时常见) 446 TCP:未捕获上一个段(在捕获开始时常见)

例如:40292 0.000 xxx xxx TCP 90 [TCP ACKed unseen segment] [TCP Previous segment not capture] 11210 > 37586 [PSH, ACK] Seq=3812 Ack=28611 Win=768 Len=24 TSval=199317872 TSecr=4506547

我们还通过一个不错的命令运行 pcap 文件,该命令创建了一个命令行数据列

命令

tshark -i 1 -w file.pcap -c 500000

基本上只是在 tcp.analysis.lost_segment 列中看到了一些东西,但并不多..\

任何人都可以启发可能发生的事情?tshark 无法跟上写入数据的速度,还有其他问题吗?假阳性?

4

3 回答 3

5

这很可能是误报。就像警告消息说的那样,捕获通常在 tcp 会话中间开始。在这些情况下,它没有该信息。如果你真的错过了ack,那么是时候从你的主机上游开始寻找它们消失的地方了。tshark 可能无法跟上数据,因此它正在丢弃一些指标。在您的捕获结束时,它会告诉您“内核丢弃的数据包”是否以及有多少。默认情况下 tshark 禁用 dns 查找,tcpdump 不会。如果您使用 tcpdump,则需要传入“-n”开关。如果您遇到磁盘 IO 问题,那么您可以执行诸如写入内存 /dev/shm 之类的操作。但要小心,因为如果您的捕获变得非常大,那么您可能会导致您的机器开始交换。

我敢打赌,你有一些运行时间很长的 tcp 会话,当你开始捕获时,你只是错过了 tcp 会话的某些部分。话虽如此,这里有一些我看到的导致重复/丢失的事情。

  1. 开关——(不太可能,但有时它们会生病)
  2. 路由器 - 比交换机更有可能,但不多
  3. 防火墙 - 比路由器更有可能。这里要寻找的东西是资源耗尽(许可证、cpu 等)
  4. 客户端过滤软件 - 防病毒、恶意软件检测等。
于 2013-08-20T16:26:40.743 回答
4

“TCP ACKed Unseen”的另一个原因是捕获中可能丢弃的数据包数量。如果我对繁忙接口上的所有流量运行未经过滤的捕获,有时会在停止 tshark 后看到大量“丢弃”的数据包。

在我看到这个的最后一次捕获中,我捕获了 2893204 个数据包,但是一旦我按下 Ctrl-C,我得到了一个 87581 个数据包丢弃消息。那是 3% 的损失,所以当 wireshark 打开捕获时,它可能会丢失数据包并报告“看不见”的数据包。

正如我所提到的,我捕获了一个没有捕获过滤器的非常繁忙的接口,所以 tshark 必须对所有数据包进行排序,当我使用捕获过滤器去除一些噪音时,我不再收到错误。

于 2014-09-05T16:07:58.477 回答
1

Acked Unseen sample

嗨,伙计们!只是从我刚刚在捕获中发现的一些观察:

在许多情况下,数据包捕获在客户端报告“未捕获的 ACKed 段”,这会提醒客户端 PC 已发送数据包的情况,服务器确认收到该数据包,但在客户端进行的数据包捕获不包括客户端发送的数据包

最初,我认为这表明 PC 未能将它发送的数据包记录到捕获中,因为“例如,机器正在运行 Wireshark 很慢”(https://osqa-ask.wireshark.org/questions/25593/tcp-previous-segment-not-captured-is-that-a-connectivity-issue
但是,然后我注意到每次看到“未捕获的 ACKed 段”警报时,我都可以看到客户端 PC 发送的“无效”数据包的记录

  • 在上面的捕获示例中,帧 67795 为 10384 发送 ACK

  • 即使wireshark报告虚假IP长度(0),帧67795报告长度为13194

  • 帧 67800 发送 23524 的 ACK
  • 10384+13194 = 23578
  • 23578 - 23524 = 54
  • 54 实际上是以太网 / IP / TCP 标头的长度(14 用于以太网,20 用于 IP,20 用于 TCP)
  • 所以事实上,帧 67796 确实代表了一个大的 TCP 数据包(13194 字节),操作系统试图将它放在穿戴设备上
    • NIC 驱动程序会将其分成更小的 1500 字节片段,以便通过网络传输
    • 但是在我的 PC 上运行的 Wireshark 无法理解它是一个有效的数据包并对其进行解析。我相信在 2012 Windows 服务器上运行的 Wireshark 可以正确读取这些捕获
  • 所以毕竟,这些“伪造的 IP 长度”和“未捕获的 ACKed 段”警报在我的案例中实际上是误报
于 2017-12-21T00:24:27.643 回答