簡體   English   中英

如何找到丟棄的數據包

[英]how to find which packets got dropped

我從Broadcom Network Card獲得了數千個丟棄的軟件包:

eth1      Link encap:Ethernet  HWaddr 01:27:B0:14:DA:FE
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:2746252626 errors:0 dropped:1151734 overruns:0 frame:0
          TX packets:4109502155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:427998700000 (408171.3 Mb)  TX bytes:3530782240047 (3367216.3 Mb)
          Interrupt:40 Memory:d8000000-d8012700

這是安裝的版本:

filename:       /lib/modules/2.6.27.54-0.2-default/kernel/drivers/net/bnx2.ko
version:        1.8.0
license:        GPL
description:    Broadcom NetXtreme II BCM5706/5708/5709 Driver

數據包以每小時數次500到5000個數據包的速度被丟棄。 服務器(運行Postgres)運行正常 - 只是dropps很煩人。

在嘗試了很多不同的事情后,我問:我怎樣才能找到數據包的來源以及它們為什么被丟棄?

丟棄的數據包意味着用於存儲數據包以進行轉發/處理的緩沖區已滿。 查看數據包數據以獲取信息的行為意味着您首先要查看數據(您沒有這些數據,因為沒有空間存儲它)。

解決此問題的一個很好的方法是,您可以查看正在丟棄的數據,即查看流量轉儲以查找離開服務器的TCP重新傳輸請求。 當TCP數據包丟失時,無論出於何種原因,您的服務器將要求重新發送它。 重新傳輸將為您提供您正在尋找的對話上下文。

我實際上建議您查看服務器所連接的交換機/路由器。 它可以讓您很好地了解服務器接口的損耗和吞吐量,讓您診斷,例如,您的卡是否太慢,無法接通電線。

編輯

這篇博文引用了一個名為dropwatch的工具,它也可以為你提供一些線索。

您可能會遇到https://www.novell.com/support/kb/doc.php?id=7007165

引用:

從內核2.6.37開始,它已經改變了丟棄數據包計數的含義。 之前,丟棄的數據包很可能是由於錯誤造成的。 現在,rx_dropped計數器顯示丟幀的統計信息,原因如下:

Softnet積壓全部 - (從/ proc / net / softnet_stat測量)

錯誤/非預期的VLAN標記

未知/未注冊的協議

服務器未配置IPv6時的IPv6幀

如果任何幀滿足這些條件,則在協議棧之前刪除它們並且rx_dropped計數器遞增。

(為了通過搜索得到的那些人的利益)我看到了同樣的問題(也使用了bnx2模塊,IIRC)。

您可以嘗試關閉irqbalance服務。 在我的情況下,它完全停止了解決方案。

還請注意,不久前,irqbalance還有大量更新(RHEL 6)。 還應檢查主系統和以太網板的固件更新。

我們看到這只是一個非常大的子網,具有大量的廣播/多播活動。 我們沒有在相同的設備上看到這個,但噪聲較小 - 但仍然非常活躍 - 是網絡的一部分。

可能也可以使用為NIC設置以太網環緩沖區大小。 我知道在繁忙的網絡上有一些sysctl的改動......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM