閱讀336 返回首頁    go 雲更新


淺析如何判斷路由器丟包原因

一般情況下,如果路由表中有匹配的表項的話,則會進行後續的工作,路由器接口能接收到報文是其工作的基礎。
  如果報文丟失的話,那麼將極大的影響到路由交換功能,最終導致數據的丟失,造成報文丟失的原因有很多,不過最主要的可能是路由器內存不足或者CPU過載所造成的。
  要解決這個問題,首先需要判斷問題的原因。
  一、內存碎片是指路由器內存被劃分了許多不連續的塊。
  他將導致內存利用率降低,嚴重時可能會產生內存錯誤,影響路由器的性能。它也會導致路由器報文丟失的問題。
  其實不僅路由器的內存存在碎片問題,普通的硬盤也存在這種問題。如微軟操作係統中就自帶一個碎片整理工具,可以保障用戶來整理硬盤中的碎片,以提高硬盤的存儲容量以及存儲性能。這裏指的內存碎片其實跟硬盤碎片是類似的。
  二、那該如何判斷路由器的內存是否存在碎片呢?
  這裏主要借助的是靈科路由器自帶的SHOW MEMORY命令。這個命令會顯示當前內存的相關信息。如執行這條命令後,會顯示當前可用內存(Free)與最大可用快(Largest)的數值。
  網絡管理員把這兩個值進行比較,就可以判斷碎片對路由器性能的影響。這主要是把路由器的可用內存與最大可用快的大小進行比較。
  如果路由器的可用內存與最大的可用快大小比較接近時,表示雖然路由器存在碎片但是影響不大。但是若最大可用的塊很小,如隻有最大可以用內存的幾十分之一,那麼就說明路由器內存碎片問題比較嚴重了。
  三、如路由器的可用內存為20M, 而最大可用塊的大小為15M的話,則表示路由器內存中是有一定的碎塊,但是這點碎塊不影響路由器的正常運行。
  如果可用內存為20M,而最大可用塊為0.8M的話,則說明路由器內存中存在比較多的碎塊。
  連續連續內存中沒有足夠大的可用快,這有可能導致嚴重的內存分配問題,如導致一個或者多個接口間歇性的丟失報文。在路由器內存中,允許存在一定的內存碎片。
  到現在為止,還沒有哪一種內存管理技術說可以完全避免產生內存碎片。隻是這個碎片要保證一個合理的值。
  具體這個值是多少,也沒有人可以給出一個具體的標準。不過根據筆者的經驗,最好能夠保證可用塊的大小在可用內存的二分之一到三分之一之間。
  當然可用塊大小跟可用內存越接近越好。
  四、其實這個可用塊與可用內存之間的關係我們可以利用櫃子中的抽屜來表示。
  如一個櫃子可用容量雖然比較大,但是裏麵劃分了大小不等的1000多個格子。每個格子的空間容量有限。
  當有大的數據需要存儲時,整的容量是夠的,但是小格子的容量不夠。此時,就會發生報文丟失的問題。
  此時看起來內存足夠用,可是此時內存中已經沒有連續的空間用來存儲數據。所以這些看起來比較大的可用內存,其實保存不了多少數據。

最後更新:2017-02-04 19:58:34

  上一篇:go 無盤緩存的原理
  下一篇:go 常見藍屏代碼含義和解決方案(僅供參考)