Joe*_*oey 6 networking wireshark tcpdump ubuntu-16.04
我的网络性能有问题。我在带有 NIC E1000 的 VMware Cloud Server 上使用 Ubuntu 16.04。但是我看到在 ifconfig 命令的部分中丢弃了一些数据包:
root@ubuntu:~# ifconfig ens192
ens192 Link encap:Ethernet HWaddr 00:50:56:03:25:14
inet addr:192.16.1.100 Bcast:192.16.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:574749 errors:0 dropped:83 overruns:0 frame:0
TX packets:76478 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44109471 (44.1 MB) TX bytes:19484534 (19.4 MB)
Run Code Online (Sandbox Code Playgroud)
虽然它只是丢弃了一些数据包,但我的服务器正在在线运行实时游戏,所以您知道它会影响连接到它的客户端。
我在谷歌上做了一些研究和探索信息,之后我尝试更改缓冲环、最大窗口大小等配置文件。但它仍然会丢弃我的数据包。
所以,现在我想捕获丢弃的数据包,以分析它到底是什么类型的数据包。
我也在wireshark中为我的视图尝试了这个捕获:
sudo tcpdump -i ens192 -n -w /var/www/html/logs.pcap -C 1 -Z root
Run Code Online (Sandbox Code Playgroud)
但我不认为我可以看到丢弃了哪些数据包!我认为丢弃的数据包在进入 tcpdump 过滤器之前会被忽略。
你能建议我用什么方法来捕获上面的“丢弃的数据包”(dropped:83)?
提前致谢!
问题可能出在 tcpdump 本身上:如果它响应不够快,那么旧数据包将被新数据包覆盖,这意味着它们会被丢弃。
如果捕获每个数据包的所有字节,则很容易超出内核的数据包捕获缓冲区。这种溢出的症状是您的数据包跟踪程序将报告它丢弃了数据包。
对于 tcpdump,它会打印停止捕获时捕获、过滤和丢弃的数据包数量的摘要。例如:
$ sudo tcpdump -i en0 -w trace.pcap
tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C
94 packets captured
177 packets received by filter
0 packets dropped by kernel
Run Code Online (Sandbox Code Playgroud)
如果dropped计数非零,则需要通过将该-B选项传递给 tcpdump 来增加数据包捕获缓冲区大小。在没有捕获文件的情况下也尝试一下,看看这是否可以提高捕获率。
| 归档时间: |
|
| 查看次数: |
38246 次 |
| 最近记录: |