ECN(明示的輻輳制御)を9秒で理解&ネスペ午後問対策

ECN 過去問 アイキャッチ

はじめに

哲学者トニーくん
哲学者トニーくん

【9秒チャレンジ】
ECNは、輻輳明示的に伝える仕組みです。というのもTCPでは、輻輳時にルータがパケットを破棄し、送信元がタイムアウトACK未達を通じて輻輳を間接的に検知します。そのため再送が必要になり、効率が低下します。一方、ECNでは、ルータがCEフラグを付けて宛先に届け、宛先がECEビットで送信元に通知します。これにより、パケットを破棄せずに輻輳を検知し、輻輳ウィンドウを縮小することで効率的な通信を実現します。

では、練習問題を通して実感していきましょう!

問題

次の状況において、ECN(Explicit Congestion Notification)を使用した輻輳制御の動作について説明しなさい。

状況
あるネットワークにおいて、トラフィックが増加し、ルータが輻輳を検出しました。ECNをサポートするルータがネットワーク内に配置されており、ECNが有効になっています。ネットワークを通じてデータが送信され、送信元と宛先の両方がECN対応のTCP/IPノードであると仮定します。

このシナリオにおいて、次の質問に答えてください。

  1. ECNがどのように輻輳を検出し、通知するのかを説明しなさい。
  2. ECN通知を受けた送信元と宛先は、どのように通信を調整するのかを説明しなさい。
  3. ECNが輻輳制御においてTCPの通常の輻輳制御とどのように異なる点があるかを説明しなさい。

回答

1. ECNがどのように輻輳を検出し、通知するのかを説明しなさい。

回答:
ECN(Explicit Congestion Notification)は、ネットワーク内の輻輳を検出し、パケットのヘッダーを利用して送信元と宛先に輻輳の発生を通知する仕組みです。具体的には、以下の流れで輻輳を検出し、通知します。

  • 輻輳検出:
    ルータが輻輳を検出する方法として、通常の輻輳制御(例:バッファが満杯になった場合)に加え、ECNをサポートしているルータは、パケットのヘッダーにある「ECNフィールド」を利用します。ネットワークが輻輳状態になると、ルータはパケットを破棄せず、ECNビット(2ビット)を設定します。このビットが設定されたパケットは、送信元に対して輻輳が発生していることを示す通知となります。
  • 通知:
    ECNをサポートしている場合、ルータは「ECNフィールド」の「Congestion Experienced (CE)」ビットをセットすることで、パケットが輻輳していることを通知します。このビットは、パケットが宛先に届いた際に送信元に通知されるため、送信元はこれを受け取って輻輳が発生したことを認識します。

2. ECN通知を受けた送信元と宛先は、どのように通信を調整するのかを説明しなさい。

回答:
ECN通知を受け取った送信元と宛先の通信は、以下のように調整されます。

  • 宛先(受信側):
    宛先ノードは、受信したパケットのECNフィールドを確認します。もしECNの「CE(Congestion Experienced)」ビットが設定されていれば、受信側はそのパケットが輻輳状態であることを認識します。しかし、ECN通知は主に送信側に伝達されるため、宛先ノードは通常、これを特に処理することはなく、通常通りパケットを受け取ります。
  • 送信元(送信側):
    送信側は、宛先から返送されるACKパケットを通じて、ECNフィールドに設定されたCEビットを確認します。このCEビットを受け取ることで、送信元はネットワーク内で輻輳が発生していることを認識します。そのため、送信元は輻輳回避のために通信を調整します。具体的には、送信元は送信ウィンドウサイズを縮小し、送信レートを減少させることで、輻輳を軽減しようとします。送信元は、ECN通知を受け取った場合、通常のTCP輻輳制御(例えば、輻輳ウィンドウの減少)と同様に、レート制御を行いますが、パケット破棄が発生しない分再送の必要が減り、より効率的な輻輳制御が可能となります。
哲学者トニーくん
哲学者トニーくん

TCPでは輻輳が発生するとパケットを破棄します(破棄したことは送信元に通知しない)。これによってトラフィックの平準化を図ります。しかし、これだと、再送が必要になります。
逆に、ECNでは輻輳が発生しても、一応、時間がかかりながらも最後まで届けます。そして、宛先側が輻輳の発生を明示的に送信元に伝えます。これにより、送信元は輻輳の発生を知り、送信データ量を抑えます。この方法では、最後まで一応データが渡っているので、再送が不要になります。

3. ECNが輻輳制御においてTCPの通常の輻輳制御とどのように異なる点があるかを説明しなさい。

回答:
ECNとTCPの通常の輻輳制御には以下のような違いがあります。

  • 通常の輻輳制御(パケット破棄を利用した方法):
    通常のTCP輻輳制御では、ネットワーク内で輻輳が発生すると、ルータはパケットを破棄します。このパケット破棄が、送信元に対して輻輳が発生していることを通知する方法となります。送信元は、受信側からのACKが遅れることや、パケット再送が発生することで輻輳を認識します。通常、輻輳が発生した場合、送信元は輻輳ウィンドウを減少させ、再送が行われます。再送はネットワークの負担を増加させ、効率が悪くなる可能性があります。
  • ECNを使用した輻輳制御:
    ECNでは、パケット破棄を避け、ルータが輻輳を検出した際に、パケットヘッダーのECNビットをセットして輻輳を通知します。この方法では、パケットの再送が発生しないため、ネットワーク全体の効率が向上します。送信元はECN通知を受け取ることで、輻輳を早期に認識し、再送を行うことなく送信レートを調整できます。これにより、通常の輻輳制御と比較して、再送の負担が減り、よりスムーズに輻輳を回避できるという利点があります。

解説

ECNは、ネットワークにおける輻輳をより効率的制御するための仕組みです。通常、輻輳制御の方法としては、パケットの破棄を基にした手法が一般的ですが、ECNを使用することで、パケットを破棄せずに輻輳を通知することができ、再送による無駄なトラフィックを減らすことができます。この仕組みは、ネットワークの帯域を効率的に使いたい場合や、再送を減らしてパフォーマンスを向上させたい場合に非常に有効です。

ECNはTCP/IPの輻輳制御を補完する役割を果たし、特に混雑が頻繁に発生する大規模なネットワークでその効果を発揮します。ECNに対応するルータやノードが増えれば、ネットワーク全体のパフォーマンス向上が期待できます。

哲学者トニーくん
哲学者トニーくん

【1分チャレンジ】
ECNというのは輻輳を明示的に伝えてくれるものです。これはなんで明示的を強調しているかというと TCPでは輻輳を明示的に伝えてくれないからです。TCPの方法としては輻輳が発生するとルーターがパケットを破棄します。このパケットを破棄したことは明示的には伝えられません。送信元はタイムアウトの発生とかACKが返ってこないとか、そういう状況を自分で判断することによって輻輳が発生しているんだなというのを理解します。
しかし、これだとパケットを破棄しているので再送の必要があります。それに比べてECNだと輻輳が発生しても 一応最後まで届くことには届きます。それで宛先が輻輳が発生しているよというのを通知します。通知することによって輻輳が発生しているんだということで 輻輳ウィンドウを縮小して少しずつ送るようになります。これはパケットが破棄されていないので再送は発生しません。なのでより効率的な通信ができるよねというのをECNでは実現しています。

タイトルとURLをコピーしました