Windows Server 2012 以降の OS における ECN 機能の既定値の変更について

Last Update: feedback 共有

本記事は 2016 年 4 月 19 日に公開された記事を本ブログに移行した記事になります。

こんにちは、Windows プラット フォーム サポートの加山です。

Windows Server 2008 R2 以前の OS ではアクセスできていた HTTP や HTTPS のサイトが、Windows Server 2012 以降の OS からアクセスできなくなった場合、ECN 機能を無効化することでアクセスできるようになる場合があります。

  1. ECN 機能とは
    ECN 機能 (輻輳情報通知機能) とは、TCP/IP の通信において輻輳によりパケットがロストすることを緩和するための RFC 3168 で定義された機能です。
    受信パケットのバッファが満たされ、パケットをドロップし始める状態までルータが輻輳すると、帯域が減少するなどのネットワークへの影響が出る可能性があります。
    この問題を緩和するために、Windows Server 2012 ではデータ センター 伝送制御プロトコル (DCTCP) を導入しました。
    DCTCP は、明示的輻輳通知 (ECN) を使って、送信元での輻輳の程度を見積もり、それに合うように送信速度を低下させます。これによって、ネットワーク トラフィックのより詳細な制御が可能になり、DCTCP は非常に低いバッファー占有率で動作しつつ、高いスループットを実現できます。
    このようにして、Windows Server 2012 では ECN機能が既定で有効になりましたが、一部のネットワーク機器ではこの機能をサポートしていないために、相手先のサーバーに通信できない現象が発生することがあります。
    例えば、HTTP や HTTPS をホストするサーバー側の何れかの機器が ECN 機能に対応していない場合、適切に TCP/IP の接続を確立することができず、サイトにアクセスできなくなるといった現象が発生します。
    もしも、Windows Server 2012 以降の OS で HTTP や HTTPS のサイトにアクセスできなくなった場合は、後述の方法で ECN 機能を無効化することでアクセスできるようになるか確認してみてください。

    データ センター伝送制御プロトコル (DCTCP)
    https://technet.microsoft.com/ja-jp/library/hh997028.aspx
    ※ Windows Server 2012 明示的輻輳通知 (ECN) を使って DCTCP を導入したことを説明しています。

    The Cable Guy - 2006 年 10 月
    https://technet.microsoft.com/ja-jp/library/bb878122.aspx
    ※ ECN 機能について説明しています。

  2. ECN 機能の無効化方法
    ECN 機能が有効になっているかどうかは netsh コマンドを使用して確認することができます。
    netsh int tcp show global

    上記の確認で ECN 機能が enabled となっている場合は、次のコマンドを実行して、disabled にします。

    netsh int tcp set global ecncapability=disabled

    続いて、ECN 機能が disabled になっていることを確認します。

    netsh int tcp show global

    この後に HTTP や HTTPS のサイトにアクセスできるようになった場合は ECN 機能が有効になっていることによる影響であることが分かります。

    [特記事項]
    本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。