ESXi ホスト の Cisco VIC Ethernet NIC (nenic) で受信パケットのドロップ (rx_no_bufs) が発生する
search cancel

ESXi ホスト の Cisco VIC Ethernet NIC (nenic) で受信パケットのドロップ (rx_no_bufs) が発生する

book

Article ID: 449506

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

免責事項: これは英文の記事「Receive packet drops (rx_no_bufs) on Cisco VIC Ethernet NIC (nenic) in VMware ESXi」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

この記事では、Cisco UCS サーバで実行されている VMware ESXi において、vmnic アダプタで受信 (RX) パケットのドロップが発生する問題について説明します。このドロップにより、多くの場合、Windows フェールオーバークラスタでハートビートの失敗やサービスの中断が発生します。

  • 仮想マシン、特に Windows フェールオーバークラスタで、断続的なネットワーク接続の切断やサービスのフェールオーバーが発生する。
  • Windows イベントログにクラスタのハートビートのタイムアウト (UDP 3343) が記録される。
  • esxcli network nic stats get -n vmnicX コマンドを実行すると、受信パケットのドロップ数 (Receive packets dropped) が高い値を示します。
  • ホストのログ (hostd.log) に次のような警告が記録される。
    Wa(164) Hostd[2099472]: --> droppedRx: #######
  • ESXi ホストで実行した NIC のプライベート統計コマンドで、rx_no_bufs の増加が示される。
    vsish -e get /net/pNics/vmnicX/stats | grep rx_no_bufs rx_no_bufs

Environment

VMware ESXi 
Cisco UCS サーバ
Cisco VIC Ethernet NIC (nenic ドライバ)

Cause

物理ネットワークインターフェース (vmnic) が利用可能な受信リングバッファを使い果たすと、rx_no_bufs の統計値は増加します。一時的に大量のパケットが到着し、ESXi カーネルやネットワークドライバの処理速度を超えた場合に事象が発生します。その結果、入力層でパケットドロップが観測されます。Windows フェールオーバークラスタはハートビートに UDP を使用します。UDP には再試行メカニズムがないため、パケットドロップが発生すると即座にクラスタのフェールオーバーが実行されます。

Resolution

  • 推奨される解決策は、Cisco UCS Manager の vNIC アダプタポリシーで、RX キュー、RX リングサイズ、またはその両方を増やすことです。
  • 適切な RX および TX 値の設定は、Cisco ベンダーに問い合わせてください。詳細は、Cisco のドキュメント「Cisco UCS VIC 15000 Series Best Practices in Ethernet Fabric White Paper」を参照してください。

Cisco の設定変更をESXI ホストに反映するために、ESXi ホストの再起動が必要です。Cisco UCS Manager で RX キューを増やした後、次のコマンドを実行して、その値が ESXi ホストに反映されているか検証できます。 

  • たとえば、RX キューを 8 に増やした場合、ESXi ホストでの rxqueue の詳細は次のように表示されます。
    • [####@######:~] vsish -e get /net/pNics/vmnic1/rxqueues/info
      rx queues info {
         # queues supported:8 >>>> 利用可能な RX キューの数 
         # rss engines supported:0  >>>>>  デバイスの RSS が有効
         # filters supported:0
         # active filters:0
         # filters moved by load balancer:0
         RX filter classes: 0 -> No matching defined enum value found.
         Rx Queue features: 0 -> NONE
         Support restart queues:0
      }
  • ESXi ホストで次のコマンドを実行して RX キューの一覧を表示します。0 から 7 までのキューが表示されます。
    • [####@######:~] vsish -e ls /net/pNics/vmnic0/rxqueues/queues/
    • 0/
      1/
      2/
      3/
      4/
      5/
      6/
      7/

Additional Information

Tuning Guidelines for Cisco UCS Virtual Interface Cards