予期せぬ挙動が!? 新機能 Scalable Networking Pack をご存知ですか?
目次
- 概要
- 種類
- 既定値
- 設定方法
- Windows Server 2003、Windows Server 2003 R2、Windows XP における設定
- Windows Server 2003 の更新プログラムによる無効化
- Windows Server 2003、Windows Server 2003 R2、Windows XP における設定確認
- Windows Server 2008 および Windows Vista での設定時の注意
- Windows Server 2008 および Windows Vista における設定
- Windows Server 2008 および Windows Vista での設定確認
- Windows Server 2008 R2 および Windows 7 における設定
- Windows Server 2008 R2 および Windows 7 での設定確認
- SNP 利用の注意点
- SNP のトラブルシューティング
- まとめ
- 参照情報
概要
今回のポストでは、前回のポストでリーダーの三浦より簡単にご案内いたしました、Scalable Networking Pack (SNP) の概念、既定値、設定方法、注意点などの詳細について説明します。 SNP とは TCP に関するネットワーク処理を、ネットワーク インターフェース カード (NIC) および NIC のミニポート ドライバーを利用して最適化するためのテクノロジー及びその実装の総称です。 従いまして、SNP を利用するためには、SNP に対応した NIC および NIC ドライバーが必要となります。 なお、以下、本文書では、特に区別が必要な場合を除いて、NIC と NIC のミニポート ドライバーを合わせて、NIC と呼びます。 SNP の目的は、大規模ファイル サーバーなど、日常的に数 Gbps 程度の通信が行われるコンピューター上で、TCP ネットワークの処理を効率的に行い、ホスト コンピューター側の CPU 負荷を軽減することを目的としています。
種類
SNP は、Receive Side Scaling (RSS)、TCP Chimney Offload、Network Direct Memory Access (NetDMA) の 3 つの技術により成り立っています。 次に、これら 3 つの技術がどういった技術であるか簡単に説明いたします。
Receive Side Scaling
Receive Side Scaling (RSS) とは、マルチ CPU およびマルチコア CPU を利用している場合、TCP の受信処理を複数のコアに分散するテクノロジーです。 RSS 機能が無効または存在しない場合は、TCP の受信処理は、マルチコア CPU であっても一つのコアで処理され、その特定のコアにおいてのみ、処理が実施されます。 RSS 機能を利用すると、この処理が接続ごとに別々のコアに分散されます。 処理を接続ごとに分散することにより、複数のコアを利用しながらも TCP パケットの受信順序を保持したまま処理を行うことができます。 また、受信したパケットに対する応答はその受信を処理したコアから行われるため、結果として送信処理も複数のコアに分散されます。
TCP Chimney Offload
TCP Chimney Offload とは、TCP に関するネットワーク処理を NIC で行うことにより、コンピューターの CPU の負荷を軽減するテクノロジーです。 TCP Chimney Offload によって行われる処理の種類は、NIC の実装により異なりますが、一般的には、 TCP ポート番号、TCP シーケンス番号、TCP ACK 番号、TCP チェックサムの確認など TCP 通信に必要な情報の処理、送信データの分割、受信パケットの再構築、再送処理などに及びます。 これらの処理を NIC 上で処理を行うことにより CPU の負荷の低減を図ることができます。 また、受信パケットの再構築を NIC で行う機能は、複数のパケットをまとめて受信してからホスト コンピューターへ引き渡すこととなり、結果として CPU への割り込み要求数も低減しますので、TCP の処理による CPU の占有時間を少なくすることができます。 なお、TCP チェックサムの確認と送信データのセグメンテーションについては、SNP 機能が追加されるよりも以前から、TCP の連続的な状態を管理しない簡易的な機能 (ステートレスな実装) として、それぞれ TCP Task Offload および Large Send Offload (LSO) 機能として Windows に実装されていました。
Network Direct Memory Access
Network Direct Memory Access (NetDMA) とは、ネットワークの受信データをネットワーク アダプターの受信バッファーからアプリケーションのバッファーへコピーする作業を CPU によって行うのではなく、チップセットを含むシステム全体が連携し、Direct Memory Access 機能により行うためのテクノロジーとなります。 通常は、この作業はホスト コンピューターの CPU が行いますが、NetDMA を利用することにより、処理がチップセット等に分散され、CPU への負荷を低減します。
既定値
既定の設定値
SNP の各機能の既定値は、Windows のバージョンにより以下の通りとなります。
OS | RSS | TCP Chimney Offload | NetDMA |
---|---|---|---|
Windows Server 2003 SP1 および R2 SP1 以前 | 非実装 | 非実装 | 非実装 |
Windows Server 2003 SP2 および R2 SP2 | 有効 | 有効 | 有効 |
Windows Server 2008 全ての SP | 有効 | 無効 | 有効 |
Windows Server 2008 R2 | 有効 | 自動 | 有効 |
Windows XP x86 全てのエディションと全ての SP | 非実装 | 非実装 | 非実装 |
Windows XP Professional x64 SP1 (RTM) | 非実装 | 非実装 | 非実装 |
Windows XP Professional x64 SP2 | 有効 | 有効 | 有効 |
Windows Vista 全ての SP | 有効 | 無効 | 有効 |
Windows 7 | 有効 | 自動 | 有効 |
設定値と実効状態
SNP の各機能はハードウェア上でのサポートが必須となっており、OS 上で設定が有効になっていても必ずしも SNP が機能しているとは限りません。 SNP の各機能は OS 上の設定に加え、ハードウェアがその機能をサポートしており、その機能の設定が有効になっている状態で初めて機能します。
TCP Chimney Offload と NetDMA の排他制御
TCP Chimney Offload と NetDMA は同時に機能させることができません。 OS 上で TCP Chimney Offload と NetDMA の両方が有効になっており、ハードウェア上でも両機能をサポートし、設定が有効になっている場合、TCP Chimney Offload が優先して動作し、NetDMA は無効となります。
Automatic Mode (自動モード)
Windows Server 2008 R2 から実装いたしました TCP Chimney Offload の automatic mode とは、各 TCP セッションにおいて、以下の全ての条件を満たす場合に TCP Chimney Offload が有効となるモードです。
- 10 GbE
- Round trip time (RTT) が 20 ミリ秒以下
- 該当の接続にて 130 KB 以上の通信が発生
Itanium 版
Windows Server 2003 Service Pack 2 および Windows Server 2003 R2 Service Pack 2 Itanium 版にも、SNP 機能のコードを含んでいますが、マイクロソフトでは、Itanium版での SNP につきましては、十分なテストをしておらず、現時点ではサポート対象外となっております。 そのためItanium 版をご利用の場合は、恐れ入りますが SNP 機能を無効にした上でご利用ください。
設定方法
SNP は各機能ごとに別々に設定を行い、また OS のバージョン毎に設定方法が異なります。 以下の表に設定方法の概要をまとめます。詳細な設定方法については、以降の各項目をご覧下さい。 なお、SNP の設定は Windows 側での設定と NIC 側での設定がございます。 ここでは Windows 側の設定を説明いたします。 NIC 側の設定につきましては、各 NIC のマニュアルをご参照いただくか、製造元へお問い合わせください。 また、SNP に対応した NIC をご利用のコンピューターでは、Windows 側の設定と NIC 側の設定が相反する設定になっている場合、通信に支障をきたす場合がございますので、双方で同様の設定を行うようにして下さい。
OS | RSS | TCP Chimney Offload | NetDMA |
---|---|---|---|
Windows Server 2003 SP1 および R2 SP1 (KB912222 修正モジュール適用*) | レジストリ | netsh またはレジストリ | レジストリ |
Windows Server 2003 SP2 および R2 SP2 | レジストリ | netsh またはレジストリ | レジストリ |
Windows Server 2008 全 SP | netsh | netsh | レジストリ |
Windows Server 2008 R2 | netsh | netsh | netsh または レジストリ |
Windows XP Professional x64 SP1 (RTM) (KB912222 修正モジュール適用*) | レジストリ | netsh またはレジストリ | レジストリ |
Windows XP Professional x64 SP2 | レジストリ | netsh またはレジストリ | レジストリ |
Windows Vista 全 SP | netsh | netsh | レジストリ |
Windows 7 | netsh | netsh | netsh または レジストリ |
* Windows Server 2003 SP1、Windows Server 2003 R2 SP1、Windows XP Professional x64 SP1 は KB912222 の修正モジュールを適用することにより SNP 機能が実装されます。
Windows Server 2003、Windows Server 2003 R2、Windows XP における設定
SNP 機能が実装された Windows Server 2003、Windows Server 2003 R2、Windows XP は SP1 と SP2 共に、以下の手順により SNP の各機能を有効化、無効化できます。
RSS
Windows Server 2003 および Windows Server 2003 R2 において、RSS 機能の設定を行う際は、以下のレジストリ値の設定により行います。設定後はコンピューターの再起動が必要です。
値の場所: | \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
値の名前: | EnableRSS |
値の種類: | REG_DWORD |
設定値: | 0x1 (有効)0x0 (無効) |
TCP Chimney Offload
Windows Server 2003 および Windows Server 2003 R2 において、TCP Chimney Offload 機能の設定を行う際は、以下の netsh コマンドまたはレジストリ値の設定により行います。 レジストリ値の設定後はコンピューターの再起動が必要です。
netsh int ip set chimney enabled
→ 有効
netsh int ip set chimney disabled
→ 無効
値の場所: | \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
値の名前: | EnableTCPChimney |
値の種類: | REG_DWORD |
設定値: | 0x1 (有効)0x0 (無効) |
NetDMA
Windows Server 2003 および Windows Server 2003 R2 において、NetDMA 機能の設定を行う際は、以下のレジストリ値の設定により行います。 設定後はコンピューターの再起動が必要です。
値の場所: | \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
値の名前: | EnableTCPA |
値の種類: | REG_DWORD |
設定値: | 0x1 (有効)0x0 (無効) |
Windows Server 2003 の更新プログラムによる無効化
Windows Server 2003 においては、以下のページの「解決方法」の項目下にあります更新プログラムを適用することにより、SNP を無効化することもできます。
- Windows Server 2003 ベースおよび Small Business Server 2003 ベースのコンピューターの既定の SNP 機能をオフにする更新プログラム
https://support.microsoft.com/kb/948496
Windows Server 2003、Windows Server 2003 R2、Windows XP における設定確認
SNP 機能が実装された Windows Server 2003、Windows Server 2003 R2、Windows XP は SP1 と SP2 共に、上記レジストリ値を参照し、現在の SNP の状態を確認して下さい。 TCP Chimney Offload に関しましては、netsh で設定した値も、レジストリ値に反映されます。 また、現在の接続が TCP Chimney Offload により実際にオフロードされているかどうかは、netstat コマンドの -t オプションをご利用ください。 以下のように、「オフロード状態」の項目に状態が表示されます。
プロト ローカルアドレス 外部アドレス 状態 オフロード状態
TCP 192.168.0.1:1024 192.168.0.2:1823 ESTABLISHED ホスト内
TCP 192.168.0.1:1025 192.168.0.2:1519 ESTABLISHED オフロード
Windows Server 2008 および Windows Vista での設定時の注意
Windows Server 2008 および Windows Vista にて SNP の設定を変更する際は netsh コマンドを利用し TCP のグローバル設定を変更します。
しかし、同プラットフォームの netsh には、TCP のグローバル設定を変更すると、以下に示す意図しないレジストリ設定が行われる不具合がございます。
これらのレジストリ値はすべて TCP グローバル設定の一部であり、この不具合によって設定される値はすべて各変数の既定値と同等です。
特に、TCP グローバル設定を既定と異なる値に設定している場合は、十分にご注意ください。
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters レジストリ キーの以下の設定
- DisableTaskOffload = 0xff
- EnablePMTUBHDetect = 0xff
- EnablePMTUDiscovery = 0xff
- KeepAliveInterval = 0xffffffff
- KeepAliveTime = 0xffffffff
- Tcp1323Opts = 0x0
- TcpFinWait2Delay = 0xffffffff
- TcpMaxDataRetransmissions = 0xff
- TcpTimedWaitDelay = 0xffffffff
- TcpUseRFC1122UrgentPointer = 0xff
この問題は、以下のページよりダウンロードできます修正プログラムにて修正いたしております。
SNP の設定を変更する前に、以下の修正プログラムを適用して下さい。
また、この問題は Windows Server 2008 R2 および Windows 7 では修正されています。
Some TCP/IP parameters in the registry are changed to incorrect values when you use the netsh command to change TCP/IP global parameters on a computer that is running Windows Server 2008 or Windows Vista (機械翻訳)
Windows Server 2008 および Windows Vista における設定
Windows Server 2008 および Windows Vista は SP のバージョンにかかわらず、以下の手順により SNP の各機能を有効化、無効化できます。
RSS
Windows Server 2008 および Windows Vista において、RSS 機能の設定を行う際は、以下の netsh コマンドにより行います。
netsh int tcp set global rss=default
→ 既定値 (有効)
netsh int tcp set global rss=enabled
→ 有効
netsh int tcp set global rss=disabled
→ 無効
TCP Chimney Offload
Windows Server 2008 および Windows Vistaにおいて、TCP Chimney Offload 機能の設定を行う際は、以下の netsh コマンドにより行います。
netsh int tcp set global chimney=default
→ 既定値 (無効)
netsh int tcp set global chimney=enabled
→ 有効
netsh int tcp set global chimney=disabled
→ 無効
NetDMA
Windows Server 2008 および Windows Vistaにおいて、NetDMA 機能の設定を行う際は、以下のレジストリ値の設定により行います。設定後はコンピューターの再起動が必要です。
値の場所: | \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
値の名前: | EnableTCPA |
値の種類: | REG_DWORD |
設定値: | 0x1 (有効)0x0 (無効) |
Windows Server 2008 および Windows Vista での設定確認
Windows Server 2008 および Windows Vista は、SP のバージョンにかかわらず、RSS と TCP Chimney Offload については以下の netsh コマンドを実行し「Receive-Side Scaling 状態」および「Chimney オフロード状態」の項目を確認して下さい。
NetDMA については上記レジストリ値を参照し、現在の SNP の状態を確認して下さい。
なお、netsh で表示される値は、Windows の設定値を表示しており、NIC 側の設定は反映されておりません。
C:\>netsh int tcp show global
アクティブ状態を照会しています...
TCP グローバル パラメータ
----------------------------------------------
Receive-Side Scaling 状態 : enabled
Chimney オフロード状態 : disabled
ウィンドウ自動チューニング レベルの受信: normal
アドオン混雑制御プロバイダ : none
ECN 機能 : disabled
RFC 1323 タイムスタンプ : disabled
また、現在の接続が TCP Chimney Offload により実際にオフロードされているかどうかは、netstat コマンドの -t オプションをご利用ください。以下のように、「オフロード状態」の項目に状態が表示されます。
プロトコル ローカルアドレス 外部アドレス 状態 オフロード状態
TCP 192.168.0.1:1024 192.168.0.2:1823 ESTABLISHED ホスト内
TCP 192.168.0.1:1025 192.168.0.2:1519 ESTABLISHED オフロード
Windows Server 2008 R2 および Windows 7 における設定
Windows Server 2008 R2 および Windows 7 は、以下の手順により SNP の各機能を有効化、無効化できます。
RSS
Windows Server 2008 R2 および Windows 7 において、RSS 機能の設定を行う際は、以下の netsh コマンドにより行います。
netsh int tcp set global rss=default
→ 既定値 (有効)
netsh int tcp set global rss=enabled
→ 有効
netsh int tcp set global rss=disabled
→ 無効
TCP Chimney Offload
Windows Server 2008 R2 および Windows 7 において、TCP Chimney Offload 機能の設定を行う際は、以下の netsh コマンドにより行います。
netsh int tcp set global chimney=default
→ 既定値 (自動)
netsh int tcp set global chimney=automatic
→ 自動
netsh int tcp set global chimney=enabled
→ 有効
netsh int tcp set global chimney=disabled
→ 無効
NetDMA
Windows Server 2008 R2 および Windows 7 において、NetDMA 機能の設定を行う際は、以下の netsh コマンドまたはレジストリ値の設定により行います。
レジストリ値の設定後はコンピューターの再起動が必要です。
netsh int tcp set global netdma=enabled
→ 有効
netsh int tcp set global netdma=disabled
→ 無効
値の場所: | \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
値の名前: | EnableTCPA |
値の種類: | REG_DWORD |
設定値: | 0x1 (有効)0x0 (無効) |
Windows Server 2008 R2 および Windows 7 での設定確認
Windows Server 2008 R2 および Windows 7 では、各 SNP の機能については、以下の netsh コマンドを実行し「Receive-Side Scaling 状態」、「Chimney オフロード状態」および「NetDMA 状態」の項目を確認して下さい。
なお、ここで表示される値は、Windows の設定値を表示しており、NIC 側の設定は反映されておりません。
C:\>netsh int tcp show global
アクティブ状態を照会しています...
TCP グローバル パラメーター
----------------------------------------------
Receive-Side Scaling 状態 : enabled
Chimney オフロード状態 : automatic
NetDMA 状態 : enabled
Direct Cache Acess (DCA) : disabled
受信ウィンドウ自動チューニング レベル : normal
アドオン輻輳制御プロバイダー : ctcp
ECN 機能 : disabled
RFC 1323 タイムスタンプ : disabled
コンピューター上の各 NIC が TCP Chimney Offload をサポートしているかどうか、また、どの程度オフロードされているかは、以下の netsh コマンドで確認することが出来ます。
C:\>netsh int tcp show chimneystats
Idx Supp Atmpt TMax PMax Olc FailureReason
--- ---- ----- ---- ---- --- ------------
11 いいえ -n/a- 0 0 0 -n/a-
Idx - システムで使用されるインターフェイス (NIC) インデックス
Supp - インターフェイス (NIC) は TCP Chimney オフロードをサポート
Atmpt - システムが TCP 接続オフロードを試行
TMax - NIC によってアドバタイズされたオフロード容量
PMax - システムで観察されたオフロード容量
Olc - 現在オフロードされている接続の数
FailureReason - 前回接続のオフロードの試行に失敗した原因
詳細については、'netsh int tcp show chimneystats <Idx>' を使用してください。
ここで表示されている「システムで使用されるインターフェイス (NIC) インデックス (Idx)」は、以下のコマンドで表示されるインデックスを指します。
C:\>netsh int ipv4 show int
Idx Met MTU 状態 名前
--- ---------- ---------- ------------ ---------------------------
1 50 4294967295 connected Loopback Pseudo-Interface 1
11 5 1500 connected ローカル エリア接続
上記の netsh コマンドに、このインデックスを指定することで、以下の通り、さらに詳細な状態を表示することができます。
C:\>netsh int tcp show chimneystats 11
TCP Chimney の統計 - ローカル エリア接続
---------------------------------------------------------
インターフェイス インデックス : 11
IPv4 接続オフロードのサポート : いいえ
IPv6 接続オフロードのサポート : いいえ
オフロード接続の試行 : -n/a-
NIC に拒否された一部の TCP 設定 : -n/a-
NIC に拒否された接続オフロード要求 : -n/a-
NIC にアドバタイズされたオフロード容量 : 0 件の接続
システムで観察されたオフロード容量 : 0 件の接続
現在オフロードされている接続の数 : 0
オフロードの試行に連続して失敗した回数 : 0
前回のオフロードの試行に失敗した原因 : -n/a-
この他にも、TCP Chimney オフロード テーブル内のアプリケーションを表示する netsh int tcp show chimneyapplications
や、同ポート組を表示する netsh int tcp show chimneyports
コマンドもあります。
さらに、現在の各接続が TCP Chimney Offload により実際にオフロードされているかどうかは、netstat コマンドの -t オプションをご利用ください。
以下のように、「オフロード状態」の項目に状態が表示されます。
C:\>netstat -nt
プロトコル ローカルアドレス 外部アドレス 状態 オフロード状態
TCP 192.168.0.1:1024 192.168.0.2:1823 ESTABLISHED ホスト内
TCP 192.168.0.1:1025 192.168.0.2:1519 ESTABLISHED オフロード
NetDMA の状態についても、以下の netsh コマンドで表示することができます。
C:\>netsh int tcp show netdmastats
TCP DMA 統計
---------------------------------------------------------
NetDMA を使用してコピーした合計バイト数 : 0
CPU を使用してコピーした合計バイト数 : 605
NetDMA コピーの合計エラー数 : 0
SNP 利用の注意点
ご利用前に
これまでご説明しました通り、SNP はハードウェアの様々な機能を利用することにより、TCP に関する処理をホスト コンピューターの CPU から NIC およびシステム全体へと分散し、コンピューターとしての全体的なパフォーマンスの向上を期待するという機能となります。
しかし、残念ながら、現時点では、まだテクノロジーとして完全に成熟しきっていない部分があり、特に、ハードウェアとソフトウェアが連携する部分において、完全な安定性は得られていません。
今後、SNPの利用環境からのフィードバックや、また、OS側ではService Pack (SP) の更新などに伴い、安定性が向上していくことが見込まれますが、現時点では、こうした要因からSNP を利用する前には想定していなかった問題に直面する場合がございます。
その結果、予期せぬネットワークの挙動、一例としては、不意なリセットの送出や、パケットレベルでの動作に起因して、パフォーマンスが逆に低下するなどの状況も、これまでに確認されています。
そのため、現時点では、SNPが有効な環境で、なにか不可解な挙動がある場合には、まずSNPを無効化して切り分けを実施していただきますことを、サポートチームとしては強くお勧め申し上げます。
具体的には、SNP をご利用になる前に以下の点に十分注意、対処した上でのご利用ください。
- ご利用の Windows が下記の Windows の既知問題に該当する場合、修正プログラムを適用して下さい。
- ご利用の NIC のハードウェア ベンダーへお問い合わせの上、該当の NIC および NIC ドライバーが SNP に対応しているか、また既知の問題が無いかご確認の上、問題がある場合、NIC のファーム ウェアのアップデートや、NIC ドライバーの更新など適切な対処を行ってください。
なお、NetDMA 機能に関してましては、チップセットが対応している必要もありますので、チップセットに関しましても同様に確認して下さい。 - 実際にご利用になる環境で十分にネットワーク通信のテストを行い、問題が無いことを確認して下さい。
- SNP の有効化により効果が期待できるような環境は、10 GbE 程度の NIC を搭載し、数 Gbps 程度の通信を頻繁に行うような環境となります。
既知の Windows SNP 機能の問題
Windows では SNP に関しまして、以下の既知の問題がございます。SNP を利用する前に、該当する対策を取った上でご利用をご検討ください。
修正モジュール | Windows Server 2003Windows Server 2003 R2Windows XP x64 | Windows Vista | Windows Server 2008 SP1Windows Vista SP1 | Windows Server 2008 SP2Windows Vista SP2 | Windows Server 2008 R2Windows 7 |
---|---|---|---|---|---|
KB918369 | △ | - | - | - | - |
KB918564 | △ | - | - | - | - |
KB921136 | △ | - | - | - | - |
KB919948 | ● | - | - | - | - |
KB967787 | ● | ● | ● | - | - |
KB958015 | - | ● | ● | - | - |
KB968991 | - | ● | ● | ● | - |
KB973422 | - | ○ | ○ | ○ | - |
- ● 修正モジュールの適用が必要です。
- ○ 回避策を行う必要があります。
- △ KB919948 の修正プログラムを適用して下さい。
- - 該当しません
The sockdie process may leak memory when you use the Sockdie utility with the –maxtput switch in Windows Server 2003 R2 (機械翻訳)
https://support.microsoft.com/kb/918369
(以下の KB919948 の修正プログラムをインストールして下さい)
Error message after you install the Windows Server 2003 Scalable Networking Pack in Windows Server 2003: "STOP 0x0000008E" or "STOP: 0x0000003B" (機械翻訳)
https://support.microsoft.com/kb/918564
(以下の KB919948 の修正プログラムをインストールして下さい)
Failover process does not occur when you use TCP Offload-enabled network adapters to create a team capable of TCP Offloading on a Windows Server 2003-based computer (機械翻訳)
https://support.microsoft.com/kb/921136
(以下の KB919948 の修正プログラムをインストールして下さい)
Error message after you install the Windows Server 2003 Scalable Networking Pack and then change the network settings on a Windows Server 2003-based computer: "STOP 0x000000D1" (機械翻訳)
https://support.microsoft.com/kb/919948
(Windows Server 2003 SP2, Windows Server 2003 R2 SP2, Windows XP x64 SP2 が該当します。)
Stop error message when you have the TCP Chimney feature enabled and the TCP transfer buffer size is set to 32 MB in Windows Vista, Windows Server 2008, or Windows Server 2003: "Stop 0x00000040 TARGET_MDL_TOO_SMALL" (機械翻訳)
https://support.microsoft.com/kb/967787
(Windows Server 2003, Windows Server 2003 R2, Windows Server 2008 SP1, Windows Vista SP1 が該当します。Windows Server 2008 SP2, Windows Vista SP2, Windows Server 2008 R2, Windows 7 では修正されています)
Receive-side scaling is unexpectedly disabled on a Windows Server 2008-based computer (機械翻訳)
https://support.microsoft.com/kb/958015
(Windows Server 2008 SP1 以前, Windows Vista SP1 以前が該当します)
File copying from down-level systems to Windows Vista or Windows Server 2008 is significantly slower if Intel I/OAT is enabled (機械翻訳)
https://support.microsoft.com/kb/968991
(Windows Server 2008 SP2 以前, Windows Vista SP2 以前が該当します)
The upgrade from Windows Server 2008 to Windows Server 2008 R2 fails if you have applied some TCP-A and NetDMA settings before the upgrade (機械翻訳)
https://support.microsoft.com/kb/973422
(Windows Server 2008 から Windows Server 2008 R2 にアップグレードする際に該当します。同技術情報の WORKAROUND を実施して下さい)
NAT との互換性の問題
以下の技術情報の通り、Windows Server 2003 の SNP 機能と Network Address Translation (NAT) ソフトウェアとの間に互換性に問題があることも報告されております。
Microsoft Internet Security and Acceleration Server (ISA Server) などで、NAT 機能をご利用になる場合は、SNP を無効にした上でご利用いただきますようお願い申し上げます。
Users experience delayed logins when you enable Password Management features in ISA Server 2006 (機械翻訳)
You cannot host TCP connections when Receive Side Scaling is enabled in Windows Server 2003 with Service Pack 2 (機械翻訳)
SNP のトラブルシューティング
SNP による問題の例
SNP は、現代のネットワーク通信の根幹となる TCP に対する制御であること、Windows のカーネルで動作していること、またホスト コンピューターのメモリー領域に直接アクセスを行うこともあることから、SNP が原因として発生する問題の症状は多岐にわたります。
以下に、今まで弊社へのお問い合わせにありました中から数例を挙げます。
- 予期しない TCP Reset パケットの発生
- TCP パケットのロスト
- ブルー スクリーン
この他にも様々な現象が発生する可能性があります。
特に、ネットワークの TCP 層で問題が発生した場合は、その上位のプロトコルにも何らかの問題が発生することが予想され、結果としてユーザー影響として、ファイル転送の失敗、リモート デスクトップの接続負荷、ネットワークを利用するアプリケーションのエラーなど、様々な形で問題が露呈する可能性があります。
トラブルシューティングの流れ
SNP の問題に関する一般的なトラブルシューティングの流れは以下のようになります。
- 現象が再現するきっかけを特定するか、または、現象の再現頻度等の傾向を確認します。なお、現象の再現頻度が低く、現象再現のきっかけも不明な場合、原因究明は非常に困難となります。
- SNP を無効化した際にも現象が発生するかどうか確認し、SNP が問題となっていることを特定します。
- SNP が問題となっている場合は、NIC のファームウェア、NIC ドライバー、Windows の修正モジュールを最新版にします。
- SNP の RSS、TCP Chimney Offload、NetDMA の各機能を一つずつ有効にして、SNP のどの機能で問題が発生しているか確認します。
- 別のハードウェアを利用しても現象が再現するか確認し、問題がハードウェアに存在するか、ソフトウェアに存在するかを確認します。
- 5 で判明したコンポーネントの調査を行います。
切り分けが必要な理由
SNP を利用した通信を行っている環境で、原因の推測がつかないネットワーク関連の問題が発生した場合は、上記の通り、設定や構成を変更する切り分けによる原因の特定が必要です。
SNP の問題は下記のような特徴があり、切り分けができていない状態において、発生現象の確認や、ログの分析といった手段にて原因を特定することが非常に困難です。
もし仮に可能であったとしても、非常に時間がかかる場合が多いございます。
よって、切り分けにより問題の発生原因を特定することが、適切なトラブルシューティングとなります。
- SNP が原因となって発生する現象は多岐に渡るため、ユーザーに見える現象から原因を特定することは事実上不可能です。
- 関連コンポーネントが NIC、NIC のドライバー、ホスト コンピューターのハードウェア、Windows と多岐にわたるため、問題のあるコンポーネントが特定できていない状態では、原因の特定が非常に困難です。
例えば、NIC のハードウェアに問題がある場合、Windows 側からどのような調査を行っても原因を特定できないことが多々あります。
SNP の無効化の考慮
このように、SNP のトラブルシューティングは、度重なる設定の変更や構成の変更を伴うものとなり、また、通常、解決までに時間も要しますので、環境によっては非常に大きな困難を伴います。
一方、SNP を利用することの恩恵を受けるような環境は、数 Gbps 程の通信を日常的に行うような大きな通信の発生するサーバーであり、多くのサーバーにおいてそのメリットを享受できる環境は、実はさほど多くありません。
我々サポート部門の経験からは、現在の通常のサーバー用途であれば、CPU の性能の向上も合い重なり、SNP を無効にすることによるパフォーマンスへの影響は無視できる程度のものであるのが現状で、また、その他には特に SNP を無効にすることによる影響はございません。
このような点を考慮いたしますと、SNP にて問題が発生した場合、SNP を利用しないことにより問題を回避することも有効な解決策となりますが、まずは、上述のように、問題がある場合にはSNPを無効化して問題が解消するかを確認いただき、その上で、無効化前後で、顕著なパフォーマンスの差異がないかを確認していただく事をお勧めいたします。
まとめ
SNP は、様々な工夫により、TCP 処理にかかるコンピューターの負荷を NIC などへ分散する先進的な機能となります。
しかしながら、その恩恵を受けることができる環境は非常に限られており、問題が発生した場合には、その影響範囲も大きく、解決も容易ではありません。
従いまして、SNP をご利用になる際には、その必要性を再確認した上で、問題が発生しないことを十分にテストしてた上で設定して下さい。
参照情報
Scalable Networking
Microsoft Windows Server 2003 Scalable Networking Pack のリリース
Information about the TCP Chimney Offload, Receive Side Scaling, and Network Direct Memory Access features in Windows Server 2008 (機械翻訳)
Comments
- Anonymous
May 25, 2014
高橋 理香 SQL Developer Support Escalation Engineer またまたご無沙汰してしまいました。もしお待ちくださっていた方がいらしたならすみません - Anonymous
January 19, 2015
こんにちは。Windows プラットフォーム サポートの吉田です。
最近いくつかいただいたお問い合わせで、フェールオーバー クラスターの構成ノードを再起動したところ、クラスターに参加できなくなった