(57)【要約】【課題】ネットワークにおける輻輳の悪化を抑制すること。【解決手段】中継装置は、データの宛先と、宛先までの経路上に存在してデータを中継する転送先と、を関連付けた検索情報を記憶するとともに、転送先と、転送先にデータを転送する場合に転送先の特徴に応じてデータの廃棄またはデータ内の輻輳制御に関する情報の更新を指示する制御情報と、を対応付けた対応情報を記憶する記憶部と、データを受信する受信部と、受信部によってデータが受信された場合、検索情報を参照し、データに含まれる宛先から転送先を検索する検索部と、対応情報を参照して、検索部によって検索された転送先に対応する制御情報を取得し、当該制御情報に基づいて、データを廃棄するかデータ内の輻輳制御に関する情報を更新するかを判定する判定部と、判定部によって判定された判定結果に応じてデータを転送先経由で宛先に送信する送信部と、を有する。【選択図】図３
2016171512.tif 000002
【特許請求の範囲】
【請求項１】
データを中継する中継装置であって、
前記データの宛先と、前記宛先までの経路上に存在して前記データを中継する転送先と、を関連付けた検索情報を記憶するとともに、前記転送先と、前記転送先に前記データを転送する場合に前記転送先の特徴に応じて前記データの廃棄または前記データ内の輻輳制御に関する情報の更新を指示する制御情報と、を対応付けた対応情報を記憶する記憶部と、
前記データを受信する受信部と、
前記受信部によって前記データが受信された場合、前記検索情報を参照し、前記データに含まれる前記宛先から前記転送先を検索する検索部と、
前記対応情報を参照して、前記検索部によって検索された前記転送先に対応する制御情報を取得し、当該制御情報に基づいて、前記データを廃棄するか前記データ内の輻輳制御に関する情報を更新するかを判定する判定部と、
前記判定部によって判定された判定結果に応じて前記データを前記転送先経由で前記宛先に送信する送信部と、
を有する中継装置。
【請求項２】
前記送信部は、前記判定結果が前記データの廃棄を指示する判定結果であり、かつ、前記データ内の輻輳制御に関する情報が輻輳検知を示す情報である場合、前記データを廃棄する請求項１に記載の中継装置。
【請求項３】
前記送信部は、前記判定結果が前記データの廃棄を指示する判定結果であり、かつ、前記データ内の輻輳制御に関する情報が輻輳検知に対応することを示す情報である場合、前記データ内の輻輳制御に関する情報を輻輳検知に対応していないことを示す情報に更新して、更新後のデータを前記転送先経由で前記宛先に送信する請求項１に記載の中継装置。
【請求項４】
前記送信部は、前記判定結果が前記データ内の輻輳制御に関する情報の更新を指示する判定結果である場合、前記データ内の輻輳制御に関する情報を前記輻輳検知に対応していないことを示す情報に更新して、更新後のデータを前記転送先経由で前記宛先に送信する請求項１に記載の中継装置。
【請求項５】
前記中継装置内で輻輳が発生したかを判定する輻輳制御部を有し、
前記輻輳制御部は、輻輳が発生したと判定した場合、前記判定部による判定後のデータ内の輻輳制御に関する情報を輻輳検知を示す情報に更新し、
前記送信部は、前記輻輳制御部による更新後のデータを前記転送先経由で前記宛先に送信する請求項１〜４のいずれか１つに記載の中継装置。
【請求項６】
前記送信部は、前記判定結果が前記データの廃棄を指示する判定結果である場合、前記輻輳制御部による更新後のデータを廃棄する請求項５に記載の中継装置。
【請求項７】
前記中継装置は、プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有し、
前記プロセッサは、
前記宛先までの経路上で前記中継装置から２ホップ以上先の中継装置に到達し、かつ、輻輳制御に関する情報が輻輳検知を示す情報または前記輻輳検知に対応することを示す情報である第１テストデータを生成して、前記宛先に送信する第１送信処理と、
前記第１送信処理によって前記第１テストデータを送信した結果、前記２ホップ以上先の中継装置から前記第１テストデータを廃棄したことを示す第１応答メッセージを受信した場合、前記第１テストデータ内の前記輻輳制御に関する情報と、前記第１応答メッセージに含まれる輻輳制御に関する情報と、に基づいて、前記制御情報を設定する設定処理と、
を実行する請求項１に記載の中継装置、
【請求項８】
前記プロセッサは、
前記２ホップ以上先の中継装置に到達し、かつ、輻輳制御に関する情報が輻輳検知に対応していないことを示す情報である第２テストデータを生成して、前記宛先に送信する第２送信処理を実行し、
前記設定処理では、前記プロセッサは、前記第１応答メッセージが所定期間内に受信されなかった場合、前記第２送信処理によって前記第２テストデータを送信した結果、前記２ホップ以上先の中継装置から前記第２テストデータを廃棄したことを示す第２応答メッセージを受信した場合、前記第２テストデータ内の前記輻輳制御に関する情報と、前記応答メッセージに含まれる輻輳制御に関する情報と、に基づいて、前記制御情報を設定する請求項７に記載の中継装置。
【請求項９】
前記プロセッサは、前記対応情報に前記転送先が設定されたことを契機として、前記第１送信処理を実行する請求項７に記載の中継装置。
【請求項１０】
前記プロセッサは、前記第１送信処理を前回実行してから所定時間経過したことを契機として、前記第１送信処理を再実行する請求項７に記載の中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークにおいてデータを中継する中継装置に関する。
【背景技術】
【０００２】
ネットワークのスループット向上と公平な帯域割当を実現するため、Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ（以下、ＥＣＮ）という輻輳制御プロトコルが、Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ（以下、ＩＥＴＦ）において、Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔ（ＲＦＣ）３１６８で標準化されている（下記非特許文献１を参照。）。
【０００３】
ＥＣＮとは、ネットワークを構成するルータ、スイッチのような中継装置において発生した輻輳を、中継装置自身が明示的に送受信端末に通知することにより、送受信端末における輻輳制御を改善する輻輳通知技術である。ＥＣＮでは、ＴＣＰヘッダのＣＯＤＥＢＩＴのうち、従来は未定義であったＣＯＤＥＢＩＴの上位ビットに位置するＲＥＳＥＲＶＥＤの下位ビットに、Ｃｏｎｇｅｓｔｉｏｎ  Ｗｉｎｄｏｗ  Ｒｅｄｕｃｅｄ（以下、ＣＷＲ）とＥＣＮ−Ｅｃｈｏ（ＥＣＥ）が定義される。
【０００４】
ＥＣＮに基づいた送受信端末間の通信では、送信端末は、ＣＷＲとＥＣＥのフラグを「１」にセットすることにより、送信端末がＥＣＮに対応していることを示した３ｗａｙ  ｈａｎｄｓｈａｋｅのＳＹＮパケットを受信端末宛に送信する。
【０００５】
受信端末もＥＣＮに対応している場合、受信端末がＳＹＮパケットを受信すると、ＥＣＥのフラグを「１」にセットすることにより、受信端末がＥＣＮに対応していることを示した３ｗａｙ  ｈａｎｄｓｈａｋｅのＳＹＮ−ＡＣＫパケットを送信端末宛に送信する。送信端末は、受信端末からＳＹＮ−ＡＣＫパケットを受信すると、３ｗａｙ  ｈａｎｄｓｈａｋｅのＡＣＫパケットを受信端末宛に送信する。
【０００６】
一方、受信端末がＥＣＮに対応していない場合、受信端末がＳＹＮパケットを受信すると、受信端末がＥＣＥのフラグを「１」にセットした３ｗａｙ  ｈａｎｄｓｈａｋｅのＳＹＮ−ＡＣＫパケットを送信端末宛に送信しない。この場合、送信端末はＣＷＲとＥＣＥのフラグを「０」にクリアした３ｗａｙ  ｈａｎｄｓｈａｋｅのＳＹＮパケットを受信端末宛に再送して、ＥＣＮに対応しないセッションの接続を試みる。
【０００７】
また、ネットワーク上で輻輳が発生した場合に送信側の電子機器においてＥＣＮの利用を可能にする通信機器が開示されている（下記特許文献１を参照。）。特許文献１の通信機器は、３ｗａｙ  ｈａｎｄｓｈａｋｅにおいて受信端末が送信するＳＹＮ−ＡＣＫパケットのＥＣＥフラグに基づいて、受信端末またはＳＹＮ−ＡＣＫパケットが自装置に中継されるまでの上流経路に存在するパケット中継装置のレイヤ４におけるＥＣＮ対応有無を判断して、ＥＣＮフィールドを書き換えることにより、ＥＣＮを用いたセッションを確立する。
【０００８】
また、特許文献１の通信機器は、ＰＣがＥＣＮをサポートしているため、ネットワークから返信されてきたパケットのヘッダにＥＣＥフラグを付加してＰＣに送信し、自身のＥＣＮを有効状態にする。通信機器は、ＴＣＰ確立の３ｗａｙ  ｈａｎｄｓｈａｋｅにおいて、ネットワークから受信したＴｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ（以下、ＴＣＰ）／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（以下、ＩＰ）パケットのヘッダの制御ビットにＥＣＥフラグが付加されていない場合、通信機器のＥＣＮを有効状態「ＯＮ」にし、ヘッダの制御ビットにＥＣＥフラグを付加し、ネットワークがＥＣＮを有しているかのようにＰＣに見せることにより、ＰＣのＥＣＮを有効状態にする。以降は、ＰＣと通信機器との間でＥＣＮ制御を行う。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−２３２８７７号公報
【非特許文献】
【００１０】
【非特許文献１】“Ｔｈｅ  Ａｄｄｉｔｉｏｎ  ｏｆ  Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ  （ＥＣＮ）  ｔｏ  ＩＰ”，ＲＦＣ３１６８，  Ｓｅｐｔｅｍｂｅｒ  ２００１
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ＥＣＮでは、パケットのＩＰヘッダのＴｙｐｅ  ｏｆ  Ｓｅｒｖｉｃｅ（ＴＯＳ）フィールドの下位２ビットに定義されたＥＣＮフィールドを用いて輻輳情報が通知される。ＥＣＮフィールドの値が「０１」または「１０」の場合は、ＥＣＮ−Ｃａｐａｂｌｅ  Ｔｒａｎｓｐｏｒｔ（ＥＣＴ）というＥＣＮ対応のパケットであることを示す値と定義され、「１１」の場合は、Ｃｏｎｇｅｓｔｉｏｎ  Ｅｘｐｅｒｉｅｎｃｅｄ（ＣＥ）というネットワークの輻輳を示すためにマーキングされた値と定義される。
【００１２】
ＩＰヘッダのＴＯＳフィールドの定義には歴史的な変遷があり、ＥＣＮには後方互換性の問題がある。非特許文献１の“２２．    Ｈｉｓｔｏｒｉｃａｌ  Ｄｅｆｉｎｉｔｉｏｎｓ  ｆｏｒ  ｔｈｅ  ＩＰｖ４  ＴＯＳ  Ｏｃｔｅｔ”でも説明されている通り、ＲＦＣ７９１ではＥＣＮフィールドに相当するビットは「００」と定義されており、ＲＦＣ１３４９ではＥＣＮフィールドの最下位ビットはＭＢＺ（Ｍｕｓｔ  Ｂｅ  Ｚｅｒｏ）と定義されている。
【００１３】
このような古いＲＦＣに準拠したルータが、ＥＣＮフィールドに「００」以外の値が設定されたパケットに対する処理を実行する場合、当該ルータの実装に依存した処理となる。すなわち、当該ルータは、ＥＣＮフィールドに「００」以外の値が設定されているパケットは廃棄したり、ＥＣＮフィールドの値を「００」にクリアしたりする。
【００１４】
したがって、ＥＣＮ対応の送信端末からのＥＣＮ対応パケットをこのような古いルータが中継すると、当該ルータがＥＣＮ対応パケットを廃棄してしまうことにより通信不可となってしまう場合がある。また、当該ルータが、ネットワーク輻輳を示すＣＥにマーキングされたパケットのＣＥの値「１１」を「００」にクリアしてしまう場合がある。このように、古いＲＦＣに準拠したルータが送受信端末間のパケットを中継する場合、送受信端末における輻輳制御が機能しなくなり、ＥＣＮを適用しない場合よりも輻輳を悪化させてしまうという問題がある。
【００１５】
また、特許文献１の通信機器は、送信端末または受信端末として通信する二つの機器が輻輳制御機能を有するか否かを受信データに基づいて判断し、片方の機器が輻輳制御機能を有しない場合でも輻輳制御機能が有効となるように、制御データを付して送信する機能を備える。
【００１６】
しかし、ネットワーク内に輻輳制御機能に対応していない中継装置１がある場合、送信端末と受信端末の両方の機器が輻輳制御機能を有していても、輻輳制御機能を有効とした受信データを中継装置１が廃棄したり、輻輳制御機能の有効性に関わる情報を中継装置１が無効に書き換えてしまう。従って、特許文献1の通信機器が備える機能を追加した中継装置２をネットワーク内に配置しても、中継装置２は、中継装置１から受信する受信データに基づいて機器の輻輳制御機能の有無を判断することはできない。
【００１７】
また、中継装置２が、中継するデータに輻輳制御機能を有効とする制御データを付して送信しても、中継装置１が廃棄したり、輻輳制御機能の有効性に関わる情報を無効に書き換えてしまうので、送信端末と受信端末の機器間での輻輳制御機能を有効とできない。また、中継装置１が輻輳制御機能を有効とした受信データを廃棄する場合は、中継装置２が、中継するデータに制御データを付すると通信ができなくなってしまう課題がある。
【００１８】
さらに、中継装置１が輻輳制御機能の有効性に関わる情報を無効に書き換えてしまう場合は、中継装置２が、送信端末から受信したデータに輻輳制御機能を有効とする制御データを付して、中継装置１より上流かつ、中継装置２より下流にあるＲＥＤ（Ｒａｎｄｏｍ  Ｅａｒｌｙ  Ｄｅｔｅｃｔｉｏｎ）を備える中継装置３に送信すると、中継装置３は、輻輳制御機能を有効にして輻輳制御を促すためのランダム廃棄を無効とする。
【００１９】
そして、中継装置３で輻輳検出すると、中継装置２から受信する輻輳制御機能を有効とする制御データが付与された受信データに輻輳通知情報を付与して中継装置１へ送信するが、中継装置１は、この受信データの輻輳制御機能の有効性に関わる情報を無効に書き換えて受信端末に送信する。
【００２０】
したがって、受信端末には、中継装置３で輻輳を検出したことが伝わらない上に、中継装置３でＲＥＤのランダム廃棄による輻輳制御もされなくなってしまうため、中継装置２で制御データを付すると、輻輳が悪化してしまう課題がある。
【００２１】
本発明は、ネットワークにおける輻輳の悪化を抑制することを目的とする。
【課題を解決するための手段】
【００２２】
本願において開示される発明の一側面となる中継装置は、データを中継する中継装置であって、前記データの宛先と、前記宛先までの経路上に存在して前記データを中継する転送先と、を関連付けた検索情報を記憶するとともに、前記転送先と、前記転送先に前記データを転送する場合に前記転送先の特徴に応じて前記データの廃棄または前記データ内の輻輳制御に関する情報の更新を指示する制御情報と、を対応付けた対応情報を記憶する記憶部と、前記データを受信する受信部と、前記受信部によって前記データが受信された場合、前記検索情報を参照し、前記データに含まれる前記宛先から前記転送先を検索する検索部と、前記対応情報を参照して、前記検索部によって検索された前記転送先に対応する制御情報を取得し、当該制御情報に基づいて、前記データを廃棄するか前記データ内の輻輳制御に関する情報を更新するかを判定する判定部と、前記判定部によって判定された判定結果に応じて前記データを前記転送先経由で前記宛先に送信する送信部と、を有する。
【発明の効果】
【００２３】
本発明の代表的な実施の形態によれば、ネットワークにおける輻輳の悪化を抑制する。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００２４】
【図１】実施例１にかかるネットワーク構成例を示す説明図である。
【図２】パケットのヘッダ情報の具体例を示す説明図である。
【図３】図１に示したルータのハードウェア構成例を示すブロック図である。
【図４】図３に示したパケット処理部の内部構成例を示すブロック図である。
【図５】検索ＣＡＭの記憶内容例を示す説明図である。
【図６】検索ＲＡＭの記憶内容例を示す説明図である。
【図７】ＡＲＰテーブルの記憶内容例を示す説明図である。
【図８】ＥＣＮ対応情報テーブルの記憶内容例を示す説明図である。
【図９】図８に示したクリア情報の詳細なデータ構造を示す説明図である。
【図１０】図４に示した輻輳制御判定回路の動作を示すフローチャートである。
【図１１】ＥＣＮ対応情報テーブルの設定シーケンス例１を示すシーケンス図である。
【図１２】ＥＣＮ対応情報テーブル４２０の設定シーケンス例２を示すシーケンス図である。
【図１３】ＥＣＮ対応情報テーブルの設定シーケンス例３を示すシーケンス図である。
【図１４】ＥＣＮ対応情報テーブルの設定シーケンス例４を示すシーケンス図である。
【図１５】ＥＣＮ対応情報テーブルの設定シーケンスにおけるルータの詳細な処理手順例を示すフローチャート（その１）である。
【図１６】ＥＣＮ対応情報テーブルの設定シーケンスにおけるルータの詳細な処理手順例を示すフローチャート（その２）である。
【図１７】ＥＣＮ対応情報テーブルの設定シーケンスにおけるルータの詳細な処理手順例を示すフローチャート（その３）である。
【図１８】実施例２にかかるシェーパおよびポリサを有するルータのハードウェア構成例を示すブロック図である。
【図１９】受信側ポリサ、受信側シェーパ、送信側ポリサ、および送信側シェーパの判定処理手順例を示すフローチャートである。
【発明を実施するための形態】
【実施例１】
【００２５】
＜ネットワーク構成例＞
図１は、実施例１にかかるネットワーク構成例を示す説明図である。ネットワーク１００は、通信装置１０１，１０６，１０７間でパケットを通信するネットワークである。図１では、例として通信装置１０１を送信側とし、通信装置１０６，１０７を受信側とする。経路Ｒ１は、通信装置１０１から、ルータ１０２〜１０４を経由して、通信装置１０６に到達するパスである。経路Ｒ２は、通信装置１０１から、ルータ１０２、１０３，１０５を経由して、通信装置１０７に到達するパスである。経路Ｒ３は、通信装置１０１から、ルータ１０２、１０３，１１５を経由して、通信装置１０７に到達するパスである。ルータ１０３は、実施例１にかかる輻輳悪化抑制機能を有するルータである。輻輳悪化抑制機能の詳細については後述するが、図１では、輻輳悪化抑制機能によりどのようなパケット伝送が実現されるかについて説明する。なお、本実施例のルータは、シャーシ型のルータでもよく、ボックス型のルータでもよい。
【００２６】
なお、凡例で示したように、ルータ１０５およびルータ１１５は、ＥＣＮ非対応のルータである。ルータ１０５は、ＥＣＮフィールドがＥＣＴ（＝「０１」または「１０」）またはＣＥ（＝「１１」）であるパケットを廃棄するＥＣＮ非対応ルータである。ルータ１１５は、ＥＣＮフィールドがＣＥ（＝「１１」）であるパケットのＥＣＮフィールドを「００」に書き換えるＥＣＮ非対応ルータである。
【００２７】
（Ａ）において、経路Ｒ１でパケット伝送する場合について説明する。ＥＣＮ対応の通信装置１０１からのパケットは、ＥＣＮ対応のルータ１０２で中継される。ここで、ルータ１０２で輻輳が発生した場合、パケットのヘッダ内のＥＣＮフィールドがＣＥ（＝「１１」）にマーキングされて、ＥＣＮ対応のルータ１０３に転送される。ルータ１０２で輻輳が発生しない場合、パケットのヘッダ内のＥＣＮフィールドがＥＣＴ（＝「０１」または「１０」）にマーキングされて、ＥＣＮ対応のルータ１０３に転送される。
【００２８】
マーキングされたパケットＰ１は、ＥＣＮ対応のルータ１０４で中継されてＥＣＮ対応の通信装置１０６に転送される。これにより、通信装置１０６は、受信したパケットのＥＣＮフィールドがＣＥ（＝「１１」）であれば、伝送中に輻輳が発生したことを特定する。
【００２９】
つぎに、経路Ｒ２でパケット伝送する場合について説明する。ルータ１０３に到達するまでは、経路Ｒ１と同じであるため省略する。ルータ１０３の転送先であるルータ１０５は、ＥＣＮフィールドがＥＣＴ（＝「０１」または「１０」）またはＣＥ（＝「１１」）であるパケットを廃棄するＥＣＮ非対応ルータである。
【００３０】
したがって、ルータ１０３は、輻輳悪化抑制機能により、ルータ１０２から転送されてきたパケットのＥＣＮフィールドを、ＥＣＴでもＣＥでもない値「００」に書き換える（当該書き換え後のパケットをパケットＰ２とする）。これにより、パケットＰ２はＥＣＮ非対応のルータ１０５で廃棄されずに、通信装置１０６に到達する。このように、ＥＣＮ対応の通信装置１０１とＥＣＮ対応の通信装置１０７との通信が成立し、輻輳悪化を抑制する。
【００３１】
また、ＥＣＮ非対応ルータ１０５がＥＣＮ対応ルータに置き換わった場合には、ルータ１０３がＥＣＮフィールドの値をそのまま転送する設定とすることにより、ＥＣＮの輻輳通知技術に対応した処理を実現する。
【００３２】
（Ｂ）においてパケット伝送する場合について説明する。経路Ｒ１でのパケット伝送は、（Ａ）と同じであるため省略する。経路Ｒ３でパケット伝送する場合について説明する。ルータ１０２で輻輳が発生した場合、パケットのヘッダ内のＥＣＮフィールドがＣＥ（＝「１１」）にマーキングされて、ＥＣＮ対応のルータ１０３に転送される。ルータ１０３の転送先であるルータ１１５は、ＥＣＮフィールドがＣＥ（＝「１１」）であるパケットのＥＣＮフィールドを「００」に書き換えるＥＣＮ非対応ルータである。
【００３３】
したがって、ルータ１０３は、輻輳悪化抑制機能により、ルータ１０２から転送されてきたＥＣＮフィールドがＣＥ（＝「１１」）であるパケットＰ３を、ルータ１１５に転送せずに廃棄する。これにより、パケットＰ３は、ルータ１１５でＥＣＮフィールドがＣＥ（＝「１１」）から「００」に書き換えられて通信装置１０７に到達することを防止する。このように、実際には、ルータ１０２で輻輳が発生しているにもかかわらず、通信装置１０７で輻輳が発生していないという誤判断をすることを防止する。すなわち、ＥＣＮを用いない場合よりも輻輳が悪化することを抑制する。
【００３４】
また、ＥＣＮ非対応のルータ１１５がＥＣＮ対応ルータに置き換わった場合には、ルータ１０３がＥＣＮフィールドの値をそのまま転送する設定とすることにより、ＥＣＮの輻輳通知技術に対応した処理を実現する。
【００３５】
＜パケットのヘッダ情報＞
図２は、パケットのヘッダ情報の具体例を示す説明図である。ヘッダ情報２００は、内部ヘッダ２０１、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ２０２、ＩＰヘッダ２０３、およびＴＣＰヘッダ２０４を含む。内部ヘッダ２０１は、ポート番号などルータ１０３の内部で解析した情報を含む。
【００３６】
ＩＰヘッダ２０３はＴＯＳフィールド２３１とＴＴＬフィールド２３２とを含む。ＴＯＳフィールド２３１はサービス種別を示す。ＴＴＬフィールド２３２は、パケットの生存時間（ホップ数）を示す。そのほか、ＩＰヘッダ２０３は、フィールドとして、ＩＰＶＥＲ（ＩＰバージョン）、ＩＨＬ（内部ヘッダ長）、ＴＬ（全長）、ＩＤ（識別子）、ＦＯ（フラグメントオフセット）、ＰＲＴ（プロトコル種別）、ＨＣ（ヘッダチェックサム）、ＳＩＰ（送信元ＩＰアドレス）、およびＤＩＰ（宛先ＩＰアドレス）を含む。
【００３７】
ＴＯＳフィールド２３１は、ＥＣＮフィールド２３３を含む。ＥＣＮフィールド２３３の値が「０１」または「１０」はＥＣＴ、すなわち、ＥＣＮ対応のパケットであることを示す値であり、「１１」はＣＥ、すなわち、ネットワークの輻輳を示すためにマーキングされた値である。なお、ＴＯＳフィールド２３１はＤＳＣＰフィールドを含む。ＤＳＣＰフィールドは、インターネットのためのＱｏＳ保証法であるＤｉｆｆＳｅｒｖにおいて、ＩＰパケットをクラス分けした結果の値である。
【００３８】
ＴＣＰヘッダ２０４は、ＣＯＤＥＢＩＴフィールド２４０を含む。ＣＯＤＥＢＩＴフィールド２４０は、各種フラグを設定するフィールドである。ＴＣＰヘッダ２０４は、そのほか、フィールドとして、ＳＰＯＲＴ（送信元ポート）、ＤＰＯＲＴ（宛先ポート）、ＳＥＱ（シーケンス番号）、ＡＣＫ  ＮＵＭ（ＡＣＫ番号）、ＨＬ（ヘッダ長）、ＷＩＮＤＯＷ（ウインドウサイズ）、ＣＨＥＣＫＳＵＭ（チェックサム）、Ｕｒｇｅｎｔ  Ｐｏｉｎｔｅｒ（緊急ポインタ）を含む。
【００３９】
ＣＯＤＥＢＩＴフィールド２４０は、ＲＥＳＥＲＶＥＤ（予約フィールド）、ＣＷＲフラグ、ＥＣＥフラグ、Ｕｒｇｅｎｔフラグ、ＡＣＫフラグ、ＰＵＳＨフラグ、ＲＳＴフラグ、ＳＹＮフラグ、ＦＩＮフラグを含む。
【００４０】
＜ルータ１０３のハードウェア構成例＞
図３は、図１に示したルータ１０３のハードウェア構成例を示すブロック図である。ルータ１０３は、第１ポート３０１、パケット受信部３０２、パケット処理部３０３、パケット送信部３０４、第２ポート３０５、第３ポート３０６、プロセッサ３０７、および記憶デバイス３０８を含む。ルータ１０３は、管理端末３１０に接続される。
【００４１】
第１ポート３０１は、回線に接続され、回線を伝送するパケットを入力してパケット受信部３０２に出力する。パケット受信部３０２は、第１ポート３０１からのパケットを取得して、パケットのヘッダ情報２００をパケット処理部３０３およびプロセッサ３０７に出力する。パケット受信部３０２は、パケットのデータ部をパケットのヘッダ情報２００と共にパケット処理部３０３に出力する。
【００４２】
パケット処理部３０３は、ヘッダ情報２００を取得して、ヘッダ情報２００を用いてパケットの転送先を特定したり、輻輳制御したりすることで、ヘッダ情報２００を更新する。パケット処理部３０３は、更新したヘッダ情報２００をパケット送信部３０４に出力する。パケット処理部３０３の詳細については後述する。また、パケット処理部３０３は、上述した輻輳悪化抑制機能を実現するために、ヘッダ情報２００に基づいて輻輳制御の判定、特にＥＣＮフィールド２３３の書き換え（クリア）とパケットの廃棄に関する判定を実行する。パケット処理部３０３は、当該判定結果をパケット送信部３０４に出力する。
【００４３】
パケット送信部３０４は、パケット処理部３０３からの判定結果に応じて、パケットの廃棄、パケットのヘッダ情報２００のＥＣＮフィールド２３３の書き換えてからのパケットの送信、または、パケットのヘッダ情報２００のＥＣＮフィールド２３３の書き換えずにパケットの送信をおこなう。パケット送信部３０４は、パケットを送信する場合、パケット処理部３０３からのヘッダ情報２００を用いてパケットを第２ポート３０５から出力する。
【００４４】
第２ポート３０５は、パケット送信部３０４からのパケットを外部に出力する。第３ポート３０６は、管理端末３１０とプロセッサ３０７とを接続し、管理端末３１０からのデータをプロセッサ３０７に出力する。
【００４５】
プロセッサ３０７は、管理端末３１０で入力されたテストパケットの生成に関する設定情報を入力して、記憶デバイス３０８に記憶されたプログラムを実行する。プロセッサ３０７は、プログラムを実行することにより、パケット処理部３０３およびパケット送信部３０４を制御する。記憶デバイス３０８は、プロセッサ３０７が実行するプログラムを格納する。また、記憶デバイス３０８は、プログラムを実行した場合のプロセッサ３０７のワークエリアとなる。管理端末３１０は、ユーザ操作により、テストパケットの生成に関する設定情報をルータ１０３に与える。
【００４６】
図４は、図３に示したパケット処理部３０３の内部構成例を示すブロック図である。パケット処理部３０３は、検索部４０１と、判定部４０２と、を有する。検索部４０１は、受信したパケットの転送先を検索する。検索部４０１は、検索制御部４１０と、検索ＣＡＭ４１１（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）４１１と、検索ＲＡＭ４１２（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）テーブル４１３と、を有する。検索ＣＡＭ４１１、検索ＲＡＭ４１２、およびＡＲＰテーブル４１３は、ルータ１０３に接続される隣接ルータとの通信で事前に作成される。検索ＣＡＭ４１１、検索ＲＡＭ４１２、およびＡＲＰテーブル４１３は、検索部４０１内の不図示のメモリに格納されていてもよく、記憶デバイス３０８に格納されていてもよい。
【００４７】
図５は、検索ＣＡＭ４１１の記憶内容例を示す説明図である。検索ＣＡＭ４１１は、宛先ＩＰアドレス５００−１〜５００−ｎ（ＤＩＰ１、…、ＤＩＰｉ、…、ＤＩＰｎ、（ｉは、１〜ｎのいずれかの整数））を検索ＣＡＭ４１１のアドレス順に配列したメモリである。
【００４８】
図６は、検索ＲＡＭ４１２の記憶内容例を示す説明図である。検索ＲＡＭ４１２は、検索ＲＡＭ４１２のアドレス順に次ルータＩＰアドレス６００−１〜６００−ｎ（ＮｅｘｔＨｏｐＩＰ１、…、ＮｅｘｔＨｏｐＩＰｉ、…、ＮｅｘｔＨｏｐＩＰｎ）を配列したメモリである。次ルータは、ルータ１０３から次にホップすべき転送先のルータである。
【００４９】
図７は、ＡＲＰテーブル４１３の記憶内容例を示す説明図である。ＡＲＰテーブル４１３は、フィールドとして、次ルータＩＰアドレス７０１と、次ルータＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）７０２と、出力ポート７０３と、次ルータＩＤ７０４と、を有し、各フィールド７０１〜７０４の値の組み合わせでエントリ７００−１〜７００−ｎを構成する。次ルータＩＰアドレス７０１は、値として、次ルータのＩＰアドレス（ＮｅｘｔＨｏｐＩＰｉ（ｉは、１〜ｎのいずれかの整数））を格納する。
【００５０】
次ルータＭＡＣアドレス７０２は、値として、次ルータのＭＡＣアドレスＮｅｘｔＨｏｐＭＡＣｉを格納する。出力ポート７０３は、値として、次ルータにパケットを出力するルータ１０３の出力ポート番号ＴＸＰＯＲＴｉを格納する。次ルータＩＤ７０４は、値として、次ルータを一意に特定する識別情報（ＮｅｘｔＨｏｐＩＤｉ）を格納する。次ルータＩＤ７０４の値である識別情報ＮｅｘｔＨｏｐＩＤｉは、判定部４０２内にあるＥＣＮ対応情報テーブルからエントリを検索するときのキーとなる情報である。
【００５１】
図４にもどり、検索制御部４１０の動作について説明する。検索制御部４１０は、検索ＣＡＭ４１１、検索ＲＡＭ４１２、およびＡＲＰテーブル４１３を検索する処理を実行する。検索制御部４１０は、パケット受信部３０２からのヘッダ情報２００に含まれる宛先ＩＰアドレスをキーにして、宛先ＩＰアドレスが格納されている検索ＣＡＭ４１１のアドレスを検索ＣＡＭ４１１から取得する。検索制御部４１０は、検索ＣＡＭ４１１から取得したアドレスをオフセットし、当該オフセットアドレスの位置に格納されている値６００−ｉ（ＮｅｘｔＨｏｐＩＰｉ）を検索ＲＡＭ４１２から取得する。
【００５２】
検索制御部４１０は、上記オフセットアドレスをキーにして、検索ＲＡＭ４１２から取得した値６００−ｉ（ＮｅｘｔＨｏｐＩＰｉ）に対応するエントリをＡＲＰテーブル４１３から取得する。検索制御部４１０は、検索ＲＡＭ４１２から取得した値６００−ｉ（ＮｅｘｔＨｏｐＩＰｉ）とＡＲＰテーブル４１３から取得したエントリ７００−ｉとをヘッダ情報２００の内部ヘッダ２０１に挿入して、判定制御部４２１に出力する。
【００５３】
つぎに、判定部４０２について説明する。判定部４０２は、上述した輻輳悪化抑制機能を実現する機能部であり、ヘッダ情報２００に基づいて輻輳制御の判定、特にＥＣＮフィールド２３３の書き換えとパケットの廃棄に関する判定を実行する。判定部４０２は、ＥＣＮ対応情報テーブル４２０と、判定制御部４２１と、輻輳制御判定回路４２２と、を有する。ＥＣＮ対応情報テーブル４２０は、判定部４０２内の不図示のメモリに格納されていてもよく、記憶デバイス３０８に格納されていてもよい。
【００５４】
図８は、ＥＣＮ対応情報テーブル４２０の記憶内容例を示す説明図である。ＥＣＮ対応情報テーブル４２０のエントリであるＥＣＮ対応情報は、次ルータの特徴に応じて設定される。次ルータの特徴とは、次ルータのＥＣＮ対応の有無や、ＥＣＮ非対応の場合の次ルータの仕様である。次ルータの仕様とは、次ルータが、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」または「１０」）またはＣＥ（＝「１１」）であるパケットを廃棄する仕様であるか、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」または「１０」）またはＣＥ（＝「１１」）であるパケットのＥＣＮフィールド２３３を「００」に書き換える（クリアする）仕様であるかを示す。
【００５５】
ＥＣＮ対応情報テーブル４２０は、フィールドとして、次ルータＩＤ７０４と廃棄情報８０１とクリア情報８０２とを有し、各フィールド７０４、８０１、８０２の値の組み合わせによりエントリとなるＥＣＮ対応情報８００−１〜８００−ｎを構成する。廃棄情報８０１およびクリア情報８０２は、転送先となる次ルータの特徴に応じてパケットを廃棄またはパケット内の輻輳制御に関する情報（ＥＣＮフィールド２３３）を更新する設定を指示する制御情報である。
【００５６】
廃棄情報８０１は、値として、ＤＲＯＰｉを格納する。ＤＲＯＰｉは、ルータ１０３が、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」または「１０」）またはＣＥ（＝「１１」）であるｉ番目の次ルータに送信するパケットを廃棄する仕様であるか否かを示すフラグである。実施例１では、例として、ＤＲＯＰｉ＝１の場合、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」または「１０」）またはＣＥ（＝「１１」）であるパケットをルータ１０３が廃棄することを示し、ＤＲＯＰｉ＝０の場合、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」または「１０」）またはＣＥ（＝「１１」）であるパケットをルータ１０３が廃棄せずに送信することを示す。
【００５７】
クリア情報８０２は、値として、ＣＬＥＡＲｉ（８０２−ｉ）を格納する。クリア情報８０２の詳細を図９に示す。
【００５８】
図９は、図８に示したクリア情報８０２の詳細なデータ構造を示す説明図である。クリア情報８０２は、フィールドとして、第１クリア９０１と第２クリア９０２と第３クリア９０３とを有する。第１クリア９０１は、ＣＬＥＡＲｉ（８０２−ｉ）ごとに、値として、ＣＬＥＡＲｉ１を格納する。ＣＬＥＡＲｉ１は、ルータ１０３が、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３を「００」に書き換える（クリアする）か否かを示すフラグである。
【００５９】
実施例１では、例として、ＣＬＥＡＲｉ１＝１の場合、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３をルータ１０３が「００」に書き換える（クリアする）ことを示し、ＣＬＥＡＲｉ１＝０の場合、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３をルータ１０３が「００」に書き換えないことを示す。
【００６０】
第２クリア９０２は、ＣＬＥＡＲｉ（８０２−ｉ）ごとに、値として、ＣＬＥＡＲｉ２を格納する。ＣＬＥＡＲｉ２は、ルータ１０３が、ＥＣＮフィールド２３３がＥＣＴ（＝「１０」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３を「００」に書き換える（クリアする）か否かを示すフラグである。
【００６１】
実施例１では、例として、ＣＬＥＡＲｉ２＝１の場合、ＥＣＮフィールド２３３がＥＣＴ（＝「１０」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３をルータ１０３が「００」に書き換える（クリアする）ことを示し、ＣＬＥＡＲｉ２＝０の場合、ＥＣＮフィールド２３３がＥＣＴ（＝「１０」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３をルータ１０３が「００」に書き換えないことを示す。
【００６２】
第３クリア９０３は、ＣＬＥＡＲｉ（８０２−ｉ）ごとに、値として、ＣＬＥＡＲｉ３を格納する。ＣＬＥＡＲｉ３は、ルータ１０３が、ＥＣＮフィールド２３３がＣＥ（＝「１１」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３を「００」に書き換える（クリアする）か否かを示すフラグである。
【００６３】
実施例１では、例として、ＣＬＥＡＲｉ３＝１の場合、ＥＣＮフィールド２３３がＣＥ（＝「１１」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３をルータ１０３が「００」に書き換える（クリアする）ことを示し、ＣＬＥＡＲｉ３＝０の場合、ＥＣＮフィールド２３３がＣＥ（＝「１１」）であるｉ番目の次ルータに送信するパケットのＥＣＮフィールド２３３をルータ１０３が「００」に書き換えないことを示す。
【００６４】
ＤＲＯＰｉ，ＣＬＥＡＲｉ１，ＣＬＥＡＲｉ２，ＣＬＥＡＲｉ３がすべて「０」である場合、ｉ番目の次ルータは、ＥＣＮ対応のルータであることを示す。一方、ＤＲＯＰｉ，ＣＬＥＡＲｉ１，ＣＬＥＡＲｉ２，ＣＬＥＡＲｉ３のうち少なくとも１つが「１」である場合、ｉ番目の次ルータは、ＥＣＮ非対応のルータであることを示す。
【００６５】
図４に戻り、判定制御部４２１は、検索部４０１から出力されるヘッダ情報２００を受け取り、当該ヘッダ情報２００のうち内部ヘッダ２０１に格納されたＮｅｘｔＨｏｐＩＤｉをキーにして、ＥＣＮ対応情報テーブル４２０から対応するエントリであるＥＣＮ対応情報８００−ｉを検索する。判定制御部４２１は、検索したＥＣＮ対応情報８００−ｉに含まれるＤＲＯＰｉおよびＣＬＥＡＲｉを、ヘッダ情報２００の内部ヘッダ２０１に格納する。その後、判定制御部４２１は、ヘッダ情報２００を輻輳制御判定回路４２２に出力する。
【００６６】
輻輳制御判定回路４２２は、判定制御部４２１からのヘッダ情報２００を入力し、当該ヘッダ情報２００に含まれるＤＲＯＰｉおよびＣＬＥＡＲｉに基づいて、輻輳制御の判定、特にＥＣＮフィールド２３３の書き換えとパケットの廃棄に関する判定を実行する。
【００６７】
＜輻輳制御判定回路４２２の動作＞
図１０は、図４に示した輻輳制御判定回路４２２の動作を示すフローチャートである。輻輳制御判定回路４２２にヘッダ情報２００が入力すると、図１０のフローチャートの処理が実行される。輻輳制御判定回路４２２は、ヘッダ情報２００の内部ヘッダ２０１に含まれるＤＲＯＰｉが「１」であるかを判定する（ステップＳ１００１）。
【００６８】
ＤＲＯＰｉが「１」でない場合（ステップＳ１００１：Ｎｏ）、ステップＳ１００３に移行する。一方、ＤＲＯＰｉが「１」である場合（ステップＳ１００１：Ｙｅｓ）、輻輳制御判定回路４２２は、ヘッダ情報２００に含まれるＥＣＮフィールド２３３の値を参照する（ステップＳ１００２）。ＥＣＮフィールド２３３の値がＣＥ（＝「１１」）でない場合（ステップＳ１００２：Ｎｏ）、ステップＳ１００３に移行する。一方、ＥＣＮフィールド２３３の値がＣＥ（＝「１１」）である場合（ステップＳ１００２：Ｙｅｓ）、輻輳制御判定回路４２２は、判定結果としてパケットを廃棄する指示をパケット送信部３０４に出力して（ステップＳ１００４）、処理を終了する。これにより、ＥＣＮフィールド２３３の値がＣＥであってもパケットの廃棄が優先実行されることになる。
【００６９】
このように、パケットは、次ルータでＥＣＮフィールド２３３がＣＥ（＝「１１」）から「００」に書き換えられることなくルータ１０３で廃棄されるため、ルータ１０３の前段のルータで輻輳が発生しているにもかかわらず、宛先の通信装置で輻輳が発生していないという誤判断を防止する。すなわち、ＥＣＮを用いない場合よりも輻輳が悪化することを抑制する。
【００７０】
また、ステップＳ１００３では、輻輳制御判定回路４２２は、ＣＬＥＡＲｉｊが「１」であるか否かを判定する。添え字ｊは、ヘッダ情報２００のＥＣＮフィールド２３３の値がＥＣＴ（＝「０１」）の場合はｊ＝１、ヘッダ情報２００のＥＣＮフィールド２３３の値がＥＣＴ（＝「１０」）の場合はｊ＝２、ヘッダ情報２００のＥＣＮフィールド２３３の値がＣＥ（＝「１１」）の場合はｊ＝３となる。なお、ステップＳ１００２：Ｎｏの場合、ＥＣＮフィールド２３３の値は「１１」ではないため、ステップＳ１００２：ＮｏのあとにステップＳ１００３が実行される場合は、ｊ＝１またはｊ＝２となる。
【００７１】
ＣＬＥＡＲｉｊが「１」である場合（ステップＳ１００３：Ｙｅｓ）、輻輳制御判定回路４２２は、判定結果として、ＥＣＮフィールド２３３の値を「００」にクリアする書換指示をパケット送信部３０４に出力して（ステップＳ１００５）、処理を終了する。これにより、「００」に書き換え後のパケットは、ＥＣＮ非対応の次ルータで廃棄されずに、宛先の通信装置に到達する。したがって、ＥＣＮ対応の通信装置間の通信が成立し、輻輳悪化を抑制する。
【００７２】
なお、ＣＬＥＡＲｉｊが「１」でない場合（ステップＳ１００３：Ｎｏ）、輻輳制御判定回路４２２は、判定結果として、パケットの廃棄およびＥＣＮフィールド２３３の値の書き換えのいずれも実行してはいけないことを示す書換不可指示をパケット送信部３０４に出力して（ステップＳ１００６）、処理を終了する。これにより、次ルータがＥＣＮ対応である場合に正常に通信する。
【００７３】
＜ＥＣＮ対応情報テーブル４２０の設定シーケンス例＞
つぎに、ＥＣＮ対応情報テーブル４２０の設定シーケンス例について説明する。ルータ１０３と宛先の通信装置との間のルータ群のうち、どのルータがＥＣＮ対応ルータでどのルータがＥＣＮ非対応ルータであるか不明であるため、ルータ１０３は、テストパケットを生成して送信することで、次ルータがＥＣＮ対応ルータであるかＥＣＮ非対応ルータであるかを特定し、ＥＣＮ対応情報テーブル４２０を作成する。なお、ＥＣＮ対応情報テーブル４２０内の廃棄情報８０１およびクリア情報８０２の初期値は「０」とする。
【００７４】
図１１は、ＥＣＮ対応情報テーブル４２０の設定シーケンス例１を示すシーケンス図である。図１１のシーケンスは、ＮｅｘｔＨｏｐＩＤｉ（ｉ番目の次ルータ１１０１を特定する識別情報）がＡＲＰテーブル４１３に登録された場合、または、図１１のシーケンスを前回実行時から一定時間が経過したことを契機として実行開始する。（Ａ）は、（１）次ルータ１１０１が受信パケットのヘッダ情報２００のＥＣＮフィールド２３３がＣＥ（＝「１１」）である場合にＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータである場合のシーケンスであり、（Ｂ）は、次ルータ１１０１がＥＣＮ対応ルータである場合のシーケンスである。
【００７５】
まず、ルータ１０３は、ヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２の値が「２」かつＥＣＮフィールド２３３がＣＥ（＝「１１」）であるパケットＰ０１を生成して、次ルータ１１０１に送信する（ステップＳ１１０１）。ＴＴＬフィールド２３２を「２」とすることにより、パケットＰ０１は次ルータ１１０１の転送先となる次々ルータ１１０２まで到達して、次々ルータ１１０２からＩｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ（ＩＣＭＰ）時間超過メッセージを取得し、次ルータ１１０１がＥＣＮ対応かＥＣＮ非対応かを特定するためである。次々ルータは、次ルータから次にホップすべき転送先のルータである。
【００７６】
（Ａ）の場合、次ルータ１１０１は、パケットＰ０１を受信すると、パケットＰ０１のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「１」に書き換え、ＥＣＮフィールド２３３をＣＥ（＝「１１」）からＮｏｔ  ＥＣＴ（＝「００」）に書き換え、パケットＰ０２として次々ルータ１１０２に送信する（ステップＳ１１０２）。
【００７７】
（Ｂ）の場合、次ルータ１１０１は、パケットＰ０１を受信すると、パケットＰ０１のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「１」に書き換え、パケットＰ０２として次々ルータ１１０２に送信する（ステップＳ１１０２）。
【００７８】
次々ルータ１１０２は、パケットＰ０２を受信すると、ＴＴＬフィールド２３２を「０」に書き換える。当該書き換え後のパケットをパケットＰ０３とする。パケットＰ０３のＴＴＬフィールド２３２は「０」であるため、次々ルータ１１０２は、パケットＰ０３を廃棄する（ステップＳ１１１１）。
【００７９】
そして、次々ルータ１１０２は、パケットＰ１０をルータ１０３に送信する（ステップＳ１１１２）。パケットＰ１０は、ＩＣＭＰ時間超過メッセージである。パケットＰ１０には、パケットＰ０３のＩＰヘッダ２０３のＥＣＮフィールド２３３の値が含まれている。（Ａ）の場合は、Ｎｏｔ  ＥＣＴ（＝「００」）が含まれ、（Ｂ）の場合は、ＣＥ（＝「１１」）が含まれる。
【００８０】
（Ａ）の場合、ルータ１０３がパケットＰ１０を受信すると、ルータ１０３は、パケットＰ０３のＩＰヘッダ２０３の情報から、次ルータ１１０１が送信したパケットＰ０２のＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であると判定する（ステップＳ１１１３）。
【００８１】
パケットＰ０１で設定したＥＣＮフィールド２３３のＣＥと、パケットＰ１０に含まれているＥＣＮフィールド２３３のＮｏｔ  ＥＣＴ（＝「００」）とは、異なる値である。したがって、次ルータ１１０１が、受信パケットに含まれるヘッダ情報２００のＥＣＮフィールド２３３をＣＥ（＝「１１」）からＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータであると特定される。これにより、ルータ１０３のプロセッサ３０７が、パケット処理部３０３の判定制御部４２１に対し、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１についてのＥＣＮ対応情報８００−ｉに、ＣＬＥＡＲｉ３＝１を設定する指示をする。
【００８２】
一方、（Ｂ）の場合、ルータ１０３がパケットＰ１０を受信すると、ルータ１０３は、パケットＰ０３のＩＰヘッダ２０３の情報から、次ルータ１１０１が送信したパケットＰ０２のＥＣＮフィールド２３３がＣＥ（＝「１１」）であると判定する（ステップＳ１１１３）。
【００８３】
パケットＰ０１で設定したＥＣＮフィールド２３３のＣＥと、パケットＰ１０に含まれているＥＣＮフィールド２３３のＣＥとは、同じ値である。この場合、次ルータ１１０１は、ＥＣＮ対応ルータである可能性もあるが、上記（１）のＥＣＮ非対応ルータではなく、下記（２）、（３）のＥＣＮ非対応ルータである可能性もある。
【００８４】
（２）次ルータ１１０１が受信パケットのヘッダ情報２００のＥＣＮフィールド２３３がＥＣＴ（＝「０１」）である場合にＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータ
【００８５】
（３）次ルータ１１０１が受信パケットのヘッダ情報２００のＥＣＮフィールド２３３がＥＣＴ（＝「１０」）である場合にＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータ
【００８６】
したがって、次ルータ１１０１が上記（２）のＥＣＮ非対応ルータであるか否かを判断するため、ルータ１０３は、パケットＰ０１を再度生成して次ルータ１１０１に送信することにより、図１１のシーケンスが実行される。この場合のパケットＰ０１のヘッダ情報２００のＥＣＮフィールド２３３は、ＥＣＴ（＝「０１」）とする。
【００８７】
また、次ルータ１１０１が上記（３）のＥＣＮ非対応ルータであるか否かを判断するため、ルータ１０３は、パケットＰ０１を再度生成して次ルータ１１０１に送信することにより、図１１のシーケンスが実行される。この場合のパケットＰ０１のヘッダ情報２００のＥＣＮフィールド２３３は、ＥＣＴ（＝「１０」）とする。
【００８８】
これにより、次ルータ１１０１が上記（１）〜（３）のいずれのＥＣＮ非対応ルータに該当せず、（Ｂ）で示したように、パケットＰ０１で設定したＥＣＮフィールド２３３のＣＥと、パケットＰ１０に含まれているＥＣＮフィールド２３３のＣＥとは、同じ値になった場合に、ルータ１０３は、次ルータ１１０１がＥＣＮ対応ルータであると特定する。これにより、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１についてのＥＣＮ対応情報８００−ｉのＣＬＥＡＲｉ１〜ＣＬＥＡＲｉ３は初期値「０」を維持する。
【００８９】
次ルータ１１０１がＥＣＮ対応ルータであると特定された場合、ルータ１０３は、ＴＴＬフィールド２３２をインクリメントしてＴＴＬフィールド２３２＝３とするパケットＰ０１を生成し、ＥＣＮ対応の判定対象を次ルータ１１０１から次々ルータ１１０２に変更する。以下、シーケンスを、図１２を用いて説明する。
【００９０】
図１２は、ＥＣＮ対応情報テーブル４２０の設定シーケンス例２を示すシーケンス図である。ＴＴＬフィールド２３２＝３になったため、パケットは次々々ルータ１１０３にまで到達する。次々々ルータは、次々ルータからさらに次にホップすべき転送先のルータである。具体的には、ルータ１０３は、ヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２の値が「３」かつＥＣＮフィールド２３３がＣＥ（＝「１１」）であるパケットＰ０１を生成して、次ルータ１１０１に送信する（ステップＳ１１０１）。
【００９１】
次ルータ１１０１はＥＣＮ対応ルータであるため、次ルータ１１０１は、パケットＰ０１のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「２」に書き換え、パケットＰ０２として次々ルータ１１０２に送信する（ステップＳ１１０２）。
【００９２】
次々ルータ１１０２が受信パケットのヘッダ情報２００のＥＣＮフィールド２３３がＣＥ（＝「１１」）である場合にＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータである場合、次々ルータ１１０２は、パケットＰ０２を受信すると、パケットＰ０２のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「１」に書き換え、ＥＣＮフィールド２３３をＣＥ（＝「１１」）からＮｏｔ  ＥＣＴ（＝「００」）に書き換え、パケットＰ０３として次々々ルータ１１０３に送信する（ステップＳ１１０３）。
【００９３】
次々々ルータ１１０３は、パケットＰ０３を受信すると、ＴＴＬフィールド２３２を「０」に書き換える。当該書き換え後のパケットをパケットＰ０４とする。パケットＰ０４のＴＴＬフィールド２３２は「０」であるため、次々々ルータ１１０３は、パケットＰ０４を廃棄する（ステップＳ１１１１）。
【００９４】
そして、次々々ルータ１１０３は、パケットＰ１０をルータ１０３に送信する（ステップＳ１１１２）。パケットＰ１０は、ＩＣＭＰ時間超過メッセージである。パケットＰ１０には、パケットＰ０４のＩＰヘッダ２０３のＥＣＮフィールド２３３の値（Ｎｏｔ  ＥＣＴ）が含まれている。
【００９５】
ルータ１０３がパケットＰ１０を受信すると、ルータ１０３は、パケットＰ０３のＩＰヘッダ２０３の情報から、次ルータ１１０１が送信したパケットＰ０３のＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であると判定する（ステップＳ１１１３）。
【００９６】
したがって、次々ルータ１１０２が、受信パケットに含まれるヘッダ情報２００のＥＣＮフィールド２３３をＣＥ（＝「１１」）からＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータであると特定される。これにより、ルータ１０３のプロセッサ３０７が、パケット処理部３０３の判定制御部４２１に対し、ＥＣＮ対応情報テーブル４２０の次々ルータ１１０２についてのＥＣＮ対応情報８００−ｉに、ＣＬＥＡＲｉ３＝１を設定する指示をする。
【００９７】
なお、パケットＰ１０に含まれているＥＣＮフィールド２３３がＣＥである場合、パケットＰ０１で設定したＥＣＮフィールド２３３のＣＥと同じ値である。この場合、次々ルータ１１０２は、ＥＣＮ対応ルータである可能性もあるが、上記（１）のＥＣＮ非対応ルータではなく、上記（２）、（３）のＥＣＮ非対応ルータである可能性もある。
【００９８】
したがって、次々ルータ１１０２が上記（２）のＥＣＮ非対応ルータであるか否かを判断するため、ルータ１０３は、パケットＰ０１を再度生成して次ルータ１１０１に送信することにより、図１２のシーケンスが実行される。この場合のパケットＰ０１のヘッダ情報２００のＥＣＮフィールド２３３は、ＥＣＴ（＝「０１」）とする。
【００９９】
また、次々ルータ１１０２が上記（３）のＥＣＮ非対応ルータであるか否かを判断するため、ルータ１０３は、パケットＰ０１を再度生成して次ルータ１１０１に送信することにより、図１２のシーケンスが実行される。この場合のパケットＰ０１のヘッダ情報２００のＥＣＮフィールド２３３は、ＥＣＴ（＝「１０」）とする。
【０１００】
これにより、次々ルータ１１０２が上記（１）〜（３）のいずれのＥＣＮ非対応ルータに該当せず、パケットＰ０１で設定したＥＣＮフィールド２３３のＣＥとパケットＰ１０に含まれているＥＣＮフィールド２３３のＣＥとが同じ値になった場合に、ルータ１０３は、次々ルータ１１０２がＥＣＮ対応ルータであると特定する。これにより、ＥＣＮ対応情報テーブル４２０の次々ルータ１１０２についてのＥＣＮ対応情報８００−ｉのＣＬＥＡＲｉ１〜ＣＬＥＡＲｉ３は初期値「０」を維持する。
【０１０１】
このように、ＥＣＮ非対応ルータが特定されるまでＴＴＬフィールド２３２の値をインクリメントしてパケットの生成および送信を続けることにより、宛先の通信装置までの経路上において、ルータ１０３の次ルータ１１０１からＥＣＮ非対応ルータまでのルータ群について、ＥＣＮ対応情報テーブル４２０を作成する。
【０１０２】
図１３は、ＥＣＮ対応情報テーブル４２０の設定シーケンス例３を示すシーケンス図である。図１３のシーケンスは、ＮｅｘｔＨｏｐＩＤｉ（ｉ番目の次ルータ１１０１を特定する識別情報）がＡＲＰテーブル４１３に登録された場合、または、図１３のシーケンスを前回実行時から一定時間が経過したことを契機として実行開始する。図１３は、次ルータ１１０１が、（４）受信パケットのヘッダ情報２００のＥＣＮフィールド２３３がＥＣＴ（＝「０１」）である場合に当該受信パケットを廃棄するＥＣＮ非対応ルータである場合のシーケンスである。図１１で次ルータ１１０１がＥＣＮ対応ルータと確定できていれば、図１３でのＥＣＮ対応ルータの確定は実行しなくてもよい。
【０１０３】
まず、ルータ１０３は、ヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２の値が「２」かつＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であるパケットＰ３１を生成して、次ルータ１１０１に送信する（ステップＳ１３０１）。ＴＴＬフィールド２３２を「２」とした理由は、図１１および図１２と同様である。
【０１０４】
次ルータ１１０１は、パケットＰ３１を受信すると、パケットＰ３１のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬを「１」に書き換える。当該書き換え後のパケットをパケットＰ３２とする。パケットＰ３２のＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であるため、次ルータ１１０１は、パケットＰ３２を廃棄する（ステップＳ１３０２）。次ルータ１１０１は、パケットＰ３２のＴＴＬフィールド２３２が「０」ではないため、ＩＣＭＰ時間超過メッセージを送信しない。
【０１０５】
ルータ１０３は、一定時間経過してもＩＣＭＰ時間超過メッセージを受信していないことを検出する（ステップＳ１３０３）。この場合、次ルータ１１０１でパケットＰ３２が廃棄された可能性がある。ただし、パケットＰ３２が廃棄された原因が、パケットＰ３２のＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であることではなく、次ルータ１１０１で輻輳が発生してパケットＰ３２のＥＣＮフィールド２３３の種別によらず廃棄された可能性もある。
【０１０６】
したがって、ルータ１０３は、ヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２の値が「２」かつＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であるパケットＰ４１を生成して、次ルータ１１０１に送信する（ステップＳ１３１１）。なお、ルータ１０３は、ステップＳ１３０３を実行せずに、パケットＰ４１を任意のタイミング（たとえば、パケットＰ３１と同時）で送信してもよい。
【０１０７】
次ルータ１１０１は、パケットＰ４１を受信すると、パケットＰ４１のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬを「１」に書き換える。当該書き換え後のパケットをパケットＰ４２とする。パケットＰ４２のＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であるため、次ルータ１１０１は、パケットＰ４２を廃棄せずに、次々ルータ１１０２に送信する（ステップＳ１３１２）。
【０１０８】
次々ルータ１１０２は、パケットＰ４２を受信すると、パケットＰ４２のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬを「０」に書き換える。当該書き換え後のパケットをパケットＰ４３とする。パケットＰ４３のＴＴＬフィールド２３２は「０」であるため、次々ルータ１１０２は、パケットＰ４３を廃棄する（ステップＳ１３２１）。
【０１０９】
そして、次々ルータ１１０２は、パケットＰ５０をルータ１０３に送信する（ステップＳ１３２２）。パケットＰ５０は、ＩＣＭＰ時間超過メッセージである。パケットＰ５０には、パケットＰ４３のＩＰヘッダ２０３のＥＣＮフィールド２３３の値であるＮｏｔ  ＥＣＴ（＝「００」）が含まれている。
【０１１０】
ルータ１０３がパケットＰ５０を受信すると、ルータ１０３は、パケットＰ５０のＩＰヘッダ２０３の情報から、次ルータ１１０１が送信したパケットＰ４２のＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であると判定する（ステップＳ１３２３）。
【０１１１】
したがって、次ルータ１１０１が、上記（４）のＥＣＮ非対応ルータであると特定される。これにより、ルータ１０３のプロセッサ３０７が、パケット処理部３０３の判定制御部４２１に対し、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１についてのＥＣＮ対応情報８００−ｉに、ＤＲＯＰｉ＝１を設定する指示をする。
【０１１２】
なお、次ルータ１１０１がパケットＰ３２を廃棄しなかった場合、次ルータ１１０１にパケットＰ３１を送信すると、次々ルータ１１０２からＩＣＭＰ時間超過メッセージを受信する。このＩＣＭＰ時間超過メッセージには、パケットＰ４３のＩＰヘッダ２０３のＥＣＮフィールド２３３の値であるＥＣＴ（＝「０１」）が含まれている。すなわち、パケットＰ３１のＥＣＮフィールド２３３の値とＩＣＭＰ時間超過メッセージに含まれるＥＣＮフィールド２３３の値が同じである。この場合、次ルータ１１０１は、ＥＣＮ対応ルータである可能性もあれば、下記（５）、（６）のＥＣＮ非対応ルータである可能性もある。
【０１１３】
（５）受信パケットのヘッダ情報２００のＥＣＮフィールド２３３がＥＣＴ（＝「１０」）である場合に当該受信パケットを廃棄するＥＣＮ非対応ルータ
【０１１４】
（６）受信パケットのヘッダ情報２００のＥＣＮフィールド２３３がＣＥ（＝「１１」）である場合に当該受信パケットを廃棄するＥＣＮ非対応ルータ
【０１１５】
したがって、次ルータ１１０１が上記（５）のＥＣＮ非対応ルータであるか否かを判断するため、ルータ１０３は、パケットＰ３１を再度生成して次ルータ１１０１に送信することにより、図１３のシーケンスが実行される。この場合のパケットＰ３１のヘッダ情報２００のＥＣＮフィールド２３３は、ＥＣＴ（＝「１０」）とする。
【０１１６】
また、次ルータ１１０１が上記（６）のＥＣＮ非対応ルータであるか否かを判断するため、ルータ１０３は、パケットＰ３１を再度生成して次ルータ１１０１に送信することにより、図１３のシーケンスが実行される。この場合のパケットＰ３１のヘッダ情報２００のＥＣＮフィールド２３３は、ＣＥ（＝「１１」）とする。
【０１１７】
これにより、次ルータ１１０１が上記（４）〜（６）のいずれのＥＣＮ非対応ルータに該当せず、パケットＰ３１で設定したＥＣＮフィールド２３３のＣＥとパケットＰ５０に含まれているＥＣＮフィールド２３３のＣＥとが同じ値になった場合に、ルータ１０３は、次ルータ１１０１がＥＣＮ対応ルータであると特定する。これにより、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１についてのＥＣＮ対応情報８００−ｉのＤＲＯＰｉは初期値「０」を維持する。
【０１１８】
次ルータ１１０１がＥＣＮ対応ルータであると特定された場合、ルータ１０３は、ＴＴＬフィールド２３２の値をインクリメントしてＴＴＬフィールド２３２＝３とするパケットＰ０１を生成し、ＥＣＮ対応の判定対象を次ルータ１１０１から次々ルータ１１０２に変更する。以下、シーケンスを、図１４を用いて説明する。
【０１１９】
図１４は、ＥＣＮ対応情報テーブル４２０の設定シーケンス例４を示すシーケンス図である。図１４は、次々ルータ１１０２が、（４）受信パケットのヘッダ情報２００のＥＣＮフィールド２３３がＥＣＴ（＝「０１」）である場合に当該受信パケットを廃棄するＥＣＮ非対応ルータである場合のシーケンスである。
【０１２０】
ＴＴＬフィールド２３２＝３になったため、ルータ１０３は、ヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２が「３」かつＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であるパケットＰ３１を生成して、次ルータ１１０１に送信する（ステップＳ１３０１）。
【０１２１】
次ルータ１１０１は、パケットＰ３１を受信すると、パケットＰ３１のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「２」に書き換える。当該書き換え後のパケットをパケットＰ３２とする。次ルータ１１０１は、上記（４）のＥＣＮ非対応ルータではないため、パケットＰ３２を次々ルータ１１０２に送信する。
【０１２２】
次々ルータ１１０２は、パケットＰ３２を受信すると、パケットＰ３２のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「１」に書き換える。当該書き換え後のパケットをパケットＰ３３とする。パケットＰ３３のＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であるため、次ルータ１１０１は、パケットＰ３３を廃棄する（ステップＳ１３０２）。次ルータ１１０１は、パケットＰ３３のＴＴＬフィールド２３２が「０」ではないため、ＩＣＭＰ時間超過メッセージを送信しない。
【０１２３】
ルータ１０３は、一定時間経過してもＩＣＭＰ時間超過メッセージが受信していないことを検出する（ステップＳ１３０３）。この場合、次々ルータ１１０２でパケットＰ３３が廃棄された可能性がある。ただし、パケットＰ３３が廃棄された原因が、パケットＰ３３のＥＣＮフィールド２３３がＥＣＴ（＝「０１」）であることではなく、次ルータ１１０１で輻輳が発生してパケットＰ３１のＥＣＮフィールド２３３の種別によらず廃棄された可能性もある。
【０１２４】
したがって、ルータ１０３は、ヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２の値が「２」かつＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であるパケットＰ６１を生成して、次ルータ１１０１に送信する（ステップＳ１３１１）。なお、ルータ１０３は、ステップＳ１３０３を実行せずに、パケットＰ６１を任意のタイミング（たとえば、パケットＰ３１と同時）で送信してもよい。
【０１２５】
次ルータ１１０１は、パケットＰ６１を受信すると、パケットＰ６１のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「２」に書き換える。当該書き換え後のパケットをパケットＰ６２とする。パケットＰ６２のＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であるため、次ルータ１１０１は、パケットＰ４２を廃棄せずに、次々ルータ１１０２に送信する（ステップＳ１３１２）。
【０１２６】
次々ルータ１１０２は、パケットＰ６２を受信すると、パケットＰ６２のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「１」に書き換える。当該書き換え後のパケットをパケットＰ６３とする。パケットＰ６３のＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であるため、次ルータ１１０１は、パケットＰ６３を廃棄せずに、次々々ルータ１１０３に送信する。
【０１２７】
次々々ルータ１１０３は、パケットＰ６３を受信すると、パケットＰ６３のヘッダ情報２００のＩＰヘッダ２０３のＴＴＬフィールド２３２を「０」に書き換える。当該書き換え後のパケットをパケットＰ６４とする。パケットＰ６４のＴＴＬフィールド２３２は「０」であるため、次々ルータ１１０２は、パケットＰ６４を廃棄する（ステップＳ１３２１）。
【０１２８】
そして、次々々ルータ１１０３は、パケットＰ７０をルータ１０３に送信する（ステップＳ１３２２）。パケットＰ７０は、ＩＣＭＰ時間超過メッセージである。パケットＰ７０には、パケットＰ６４のＩＰヘッダ２０３のＥＣＮフィールド２３３の値であるＮｏｔ  ＥＣＴ（＝「００」）が含まれている。
【０１２９】
ルータ１０３がパケットＰ７０を受信すると、ルータ１０３は、パケットＰ７０のＩＰヘッダ２０３の情報から、次々ルータ１１０２が送信したパケットＰ６３のＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であると判定する（ステップＳ１３２３）。
【０１３０】
したがって、次々ルータ１１０２が、上記（４）のＥＣＮ非対応ルータであると特定される。これにより、ルータ１０３のプロセッサ３０７が、パケット処理部３０３の判定制御部４２１に対し、ＥＣＮ対応情報テーブル４２０の次々ルータ１１０２についてのＥＣＮ対応情報８００−ｉに、ＤＲＯＰｉ＝１を設定する指示をする。
【０１３１】
なお、次々ルータ１１０２がパケットＰ３３を廃棄しなかった場合、次ルータ１１０１にパケットＰ３１を送信すると、次々々ルータ１１０３からＩＣＭＰ時間超過メッセージを受信する。このＩＣＭＰ時間超過メッセージには、パケットＰ３３のＩＰヘッダ２０３のＥＣＮフィールド２３３の値であるＥＣＴ（＝「０１」）が含まれている。すなわち、パケットＰ３１のＥＣＮフィールド２３３の値とＩＣＭＰ時間超過メッセージに含まれるＥＣＮフィールド２３３の値が同じである。この場合、次ルータ１１０１は、ＥＣＮ対応ルータである可能性もあれば、上記（５）、（６）のＥＣＮ時対応ルータである可能性もある。
【０１３２】
したがって、次々ルータ１１０２が上記（５）のＥＣＮ非対応ルータであるか否かを判断するため、ルータ１０３は、パケットＰ３１を再度生成して次ルータ１１０１に送信することにより、図１４のシーケンスが実行される。この場合のパケットＰ３１のヘッダ情報２００のＥＣＮフィールド２３３は、ＥＣＴ（＝「１０」）とする。
【０１３３】
また、次ルータ１１０１が上記（６）のＥＣＮ非対応ルータであるか否かを判断するため、ルータ１０３は、パケットＰ３１を再度生成して次ルータ１１０１に送信することにより、図１４のシーケンスが実行される。この場合のパケットＰ３１のヘッダ情報２００のＥＣＮフィールド２３３は、ＣＥ（＝「１１」）とする。
【０１３４】
これにより、次々ルータ１１０２が上記（４）〜（６）のいずれのＥＣＮ非対応ルータに該当せず、パケットＰ３１で設定したＥＣＮフィールド２３３のＣＥとパケットＰ７０に含まれているＥＣＮフィールド２３３のＣＥとが同じ値になった場合に、ルータ１０３は、次々ルータ１１０２がＥＣＮ対応ルータであると特定する。これにより、ＥＣＮ対応情報テーブル４２０の次々ルータ１１０２についてのＥＣＮ対応情報８００−ｉのＤＲＯＰｉは初期値「０」を維持する。
【０１３５】
このように、ＥＣＮ非対応ルータが特定されるまでＴＴＬをインクリメントしてパケットの生成および送信を続けることにより、宛先の通信装置までの経路上において、ルータ１０３の次ルータ１１０１からＥＣＮ非対応ルータまでのルータ群について、ＥＣＮ対応情報テーブル４２０を作成する。
【０１３６】
＜ＥＣＮ対応情報テーブル４２０の設定処理＞
つぎに、図１１〜図１４に示したＥＣＮ対応情報テーブル４２０の設定シーケンスにおけるルータ１０３の詳細な処理手順例を、図１５〜図１７を用いて説明する。この処理手順は、記憶デバイス３０８に記憶されたプログラムをプロセッサ３０７が読み込んで実行するソフトウェア処理手順である。
【０１３７】
なお、図１５〜図１７の説明において、ヘッダ情報２００のＥＣＮフィールド２３３がＣＥ（＝「１１」）であるパケットをＣＥパケットと称す。また、ヘッダ情報２００のＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であるパケットをＮｏｔ  ＥＣＴパケットと称す。また、ヘッダ情報２００のＥＣＮフィールド２３３が「０１」であるパケットをＥＣＴ＝０１パケットと称す。また、ヘッダ情報２００のＥＣＮフィールド２３３が「１０」であるパケットをＥＣＴ＝１０パケットと称す。
【０１３８】
また、ｋは現在のＴＴＬフィールド２３２の値を示す変数であり、変数ｋの初期値はｋ＝２である。また、ＥＣＮ対応情報テーブル４２０のＤＲＯＰｉの初期値は、ＤＲＯＰｉ＝０であり、ＣＬＥＡＲｉｊの初期値のＣＬＥＡＲｉｊ＝０である。ｉは、次ルータ１１０１を特定する識別情報であり、１≦ｉ≦ｎである。ルータ１０３の次ルータ１１０１がｎ台存在する場合、図１５〜図１７の処理は、ｎ台の次ルータ１１０１の各々について実行される。
【０１３９】
ｊは、ＥＣＮフィールド２３３に対応する値であり、ｊ＝１はＥＣＴ（＝０１）、ｊ＝２はＥＣＴ（＝１０）、ｊ＝３はＣＥ（＝「１１」）に対応する。また、ＩＣＭＰ時間超過メッセージを待機するタイムアウト時間をＴとし、ルータ１０３から宛先の通信装置までのホップ数をＮとする。
【０１４０】
また、図１５〜図１７のフローチャートは、たとえば、ＮｅｘｔＨｏｐＩＤｉ（ｉ番目の次ルータ１１０１を特定する識別情報）がＡＲＰテーブル４１３に登録された場合、または、図１５〜図１７のフローチャートの前回実行時から一定時間経過を契機として、実行開始される。
【０１４１】
図１５は、ＥＣＮ対応情報テーブル４２０の設定シーケンスにおけるルータ１０３の詳細な処理手順例を示すフローチャート（その１）である。プロセッサ３０７は、まず、初期設定を実行する（ステップＳ１５０１）。具体的には、たとえば、プロセッサ３０７は、ｋの値をｋ＝２に設定する。また、プロセッサ３０７は、ＮｅｘｔＨｏｐＩＤｉの経路上の宛先ネットワークアドレスに属する任意の宛先ＩＰアドレスを設定する。この宛先ＩＰアドレスは、ＮｅｘｔＨｏｐＩＤｉの次ルータ１１０１を経由して到達する宛先の通信装置のＩＰアドレス（たとえば、図１に示した通信装置１０６、１０７のＩＰアドレス）である。
【０１４２】
つぎに、プロセッサ３０７は、ＴＴＬフィールド２３２に「ｋ」を設定したＣＥパケットと、ＴＴＬフィールド２３２に「ｋ」を設定したＮｏｔ  ＥＣＴパケットとを生成して、ステップＳ１５０１で設定したＩＰアドレスを宛先として送信する（ステップＳ１５０２）。
【０１４３】
そして、プロセッサ３０７は、ＣＥパケット送信後Ｔ以内にＣＥパケットに対するＩＣＭＰ時間超過メッセージを受信したか否かを判断する（ステップＳ１５０３）。受信した場合（ステップＳ１５０３：Ｙｅｓ）、ステップＳ１５０４に移行し、受信しなかった場合（ステップＳ１５０３：Ｎｏ）、ステップＳ１５０７に移行する。
【０１４４】
ステップＳ１５０３：Ｙｅｓの場合、プロセッサ３０７は、ＩＣＭＰ時間超過メッセージに含まれるＯｒｉｇｉｎａｌ  ＩＰ  ＨｅａｄｅｒのＥＣＮフィールド２３３を確認する（ステップＳ１５０４）。当該ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）である場合（ステップＳ１５０４：Ｙｅｓ）、ステップＳ１５０５に移行し、Ｎｏｔ  ＥＣＴ（＝「００」）でない場合（ステップＳ１５０４：Ｎｏ）、ステップＳ１５０６に移行する。
【０１４５】
ステップＳ１５０４：Ｙｅｓの場合、プロセッサ３０７は、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１ＩＤ７０４がＮｅｘｔＨｏｐＩＤｉであるエントリのＤＲＯＰｉを、ＤＲＯＰｉ＝１に設定して（ステップＳ１５０５）、図１６のステップＳ１６０１に移行する。この場合は、ＣＥパケットを送信したにもかかわらず、判定対象のルータによりＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）に書き換えられたことを示すため、ルータ１０３が転送すべきパケットを廃棄することを示すＤＲＯＰｉ＝１が設定される。
【０１４６】
一方、ステップＳ１５０４：Ｎｏの場合、プロセッサ３０７は、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１ＩＤ７０４がＮｅｘｔＨｏｐＩＤｉであるエントリのＤＲＯＰｉを、ＤＲＯＰｉ＝０に設定して（ステップＳ１５０５）、図１６のステップＳ１６０１に移行する。この場合は、判定対象のルータによりＣＥパケットのＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）に書き換えられていないことを示すため、ルータ１０３が転送すべきパケットを廃棄しないことを示すＤＲＯＰｉ＝０が設定される。
【０１４７】
また、ステップＳ１５０３：Ｎｏの場合、プロセッサ３０７は、Ｎｏｔ  ＥＣＴパケット送信後Ｔ以内にＮｏｔ  ＥＣＴパケットに対するＩＣＭＰ時間超過メッセージを受信したか否かを判断する（ステップＳ１５０７）。受信した場合（ステップＳ１５０７：Ｙｅｓ）、ステップＳ１５０８に移行し、受信しなかった場合（ステップＳ１５０７：Ｎｏ）、図１７のステップＳ１７０９に移行する。
【０１４８】
ステップＳ１５０７：Ｙｅｓの場合、プロセッサ３０７は、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１ＩＤ７０４がＮｅｘｔＨｏｐＩＤｉであるエントリのＤＲＯＰｉを、ＤＲＯＰｉ＝０に設定し、かつ、ＣＬＥＡＲｉ３を、ＣＬＥＡＲｉ３＝１に設定して（ステップＳ１５０５）、図１６のステップＳ１６０１に移行する。
【０１４９】
すなわち、ＣＥパケットは、図１３および図１４のステップＳ１３０２に示したように、ＴＴＬフィールド２３２が０になる前にＥＣＮ非対応ルータに廃棄されたことを示す。したがって、ルータ１０３から転送するパケットがＥＣＮ非対応ルータに廃棄されないようにするため、ＤＲＯＰｉおよびＣＬＥＡＲｉ３が、ＤＲＯＰｉ＝０およびＣＬＥＡＲｉ３＝１に設定される。これにより、ルータ１０３からのパケットは、ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）となるため、ＥＣＮ非対応ルータで廃棄されずに転送される。
【０１５０】
図１６は、ＥＣＮ対応情報テーブル４２０の設定シーケンスにおけるルータ１０３の詳細な処理手順例を示すフローチャート（その２）である。プロセッサ３０７は、図１５のステップＳ１５０５、Ｓ１５０６、またはＳ１５０８の実行後、ステップＳ１６０１を実行する。
【０１５１】
具体的には、プロセッサ３０７は、ＴＴＬフィールド２３２に「ｋ」を設定したＥＣＴ＝０１パケットと、ＴＴＬフィールド２３２に「ｋ」を設定したＮｏｔ  ＥＣＴパケットとを生成して、ステップＳ１５０１で設定したＩＰアドレスを宛先として送信する（ステップＳ１６０１）。
【０１５２】
そして、プロセッサ３０７は、ＥＣＴ＝０１パケット送信後Ｔ以内にＥＣＴ＝０１パケットに対するＩＣＭＰ時間超過メッセージを受信したか否かを判断する（ステップＳ１６０２）。受信した場合（ステップＳ１６０２：Ｙｅｓ）、ステップＳ１６０３に移行し、受信しなかった場合（ステップＳ１６０２：Ｎｏ）、ステップＳ１６０４に移行する。
【０１５３】
ステップＳ１６０２：Ｙｅｓの場合、プロセッサ３０７は、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１ＩＤ７０４がＮｅｘｔＨｏｐＩＤｉであるエントリのＣＬＥＡＲｉ１を、ＣＬＥＡＲｉ１＝０に設定して（ステップＳ１６０３）、図１７のステップＳ１７０１に移行する。すなわち、ルータ１０３が転送すべきパケットのＥＣＮフィールド２３３が「０１」である場合、ルータ１０３に、ＥＣＮフィールド２３３を「００」に書き換えさせないために、ＣＬＥＡＲｉ１＝０が設定される。
【０１５４】
また、ステップＳ１６０２：Ｎｏの場合、プロセッサ３０７は、Ｎｏｔ  ＥＣＴパケット送信後Ｔ以内にＮｏｔ  ＥＣＴパケットに対するＩＣＭＰ時間超過メッセージを受信したか否かを判断する（ステップＳ１６０４）。受信した場合（ステップＳ１６０４：Ｙｅｓ）、ステップＳ１６０５に移行し、受信しなかった場合（ステップＳ１６０４：Ｎｏ）、図１７のステップＳ１７０１に移行する。
【０１５５】
ステップＳ１６０４：Ｙｅｓの場合、プロセッサ３０７は、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１ＩＤ７０４がＮｅｘｔＨｏｐＩＤｉであるエントリのＣＬＥＡＲｉ１を、ＣＬＥＡＲｉ１＝１に設定して（ステップＳ１６０５）、図１７のステップＳ１７０１に移行する。すなわち、ＥＣＴ＝０１パケットは、図１３および図１４のステップＳ１３０２に示したように、ＴＴＬフィールド２３２が０になる前にＥＣＮ非対応ルータに廃棄されたことを示す。したがって、ルータ１０３から転送するパケットがＥＣＮ非対応ルータに廃棄されないようにするため、ＣＬＥＡＲｉ１が、ＣＬＥＡＲｉ１＝１に設定される。これにより、ルータ１０３からのパケットは、ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）となるため、ＥＣＮ非対応ルータで廃棄されずに転送される。
【０１５６】
図１７は、ＥＣＮ対応情報テーブル４２０の設定シーケンスにおけるルータ１０３の詳細な処理手順例を示すフローチャート（その３）である。プロセッサ３０７は、図１６のステップＳ１６０３またはＳ１６０５の実行後、ステップＳ１７０１を実行する。
【０１５７】
具体的には、プロセッサ３０７は、ＴＴＬフィールド２３２に「ｋ」を設定したＥＣＴ＝１０パケットと、ＴＴＬフィールド２３２に「ｋ」を設定したＮｏｔ  ＥＣＴパケットとを生成して、ステップＳ１５０１で設定したＩＰアドレスを宛先として送信する（ステップＳ１７０１）。
【０１５８】
そして、プロセッサ３０７は、ＥＣＴ＝１０パケット送信後Ｔ以内にＥＣＴ＝１０パケットに対するＩＣＭＰ時間超過メッセージを受信したか否かを判断する（ステップＳ１７０２）。受信した場合（ステップＳ１７０２：Ｙｅｓ）、ステップＳ１７０３に移行し、受信しなかった場合（ステップＳ１７０２：Ｎｏ）、ステップＳ１７０４に移行する。
【０１５９】
ステップＳ１７０２：Ｙｅｓの場合、プロセッサ３０７は、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１ＩＤ７０４がＮｅｘｔＨｏｐＩＤｉであるエントリのＣＬＥＡＲｉ２を、ＣＬＥＡＲｉ２＝０に設定して（ステップＳ１７０３）、ステップＳ１７０６に移行する。すなわち、ルータ１０３が転送すべきパケットのＥＣＮフィールド２３３が「１０」である場合、ルータ１０３に、ＥＣＮフィールド２３３を「００」に書き換えさせないために、ＣＬＥＡＲｉ２＝０が設定される。
【０１６０】
また、ステップＳ１７０２：Ｎｏの場合、プロセッサ３０７は、Ｎｏｔ  ＥＣＴパケット送信後Ｔ以内にＮｏｔ  ＥＣＴパケットに対するＩＣＭＰ時間超過メッセージを受信したか否かを判断する（ステップＳ１７０４）。受信した場合（ステップＳ１７０４：Ｙｅｓ）、ステップＳ１７０５に移行し、受信しなかった場合（ステップＳ１７０４：Ｎｏ）、ステップＳ１７０９に移行する。
【０１６１】
ステップＳ１７０４：Ｙｅｓの場合、プロセッサ３０７は、ＥＣＮ対応情報テーブル４２０の次ルータ１１０１ＩＤ７０４がＮｅｘｔＨｏｐＩＤｉであるエントリのＣＬＥＡＲｉ２を、ＣＬＥＡＲｉ２＝１に設定して（ステップＳ１７０５）、ステップＳ１７０６に移行する。すなわち、ＥＣＴ＝１０パケットは、図１３および図１４のステップＳ１３０２に示したように、ＴＴＬフィールド２３２が０になる前にＥＣＮ非対応ルータに廃棄されたことを示す。したがって、ルータ１０３から転送するパケットがＥＣＮ非対応ルータに廃棄されないようにするため、ＣＬＥＡＲｉ２が、ＣＬＥＡＲｉ２＝１に設定される。これにより、ルータ１０３からのパケットは、ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）となるため、ＥＣＮ非対応ルータで廃棄されずに転送される。
【０１６２】
ステップＳ１７０３またはステップＳ１７０５のあと、プロセッサ３０７は、ＤＲＯＰｉ、ＣＬＥＡＲｉ１、ＣＬＥＡＲｉ２、およびＣＬＥＡＲｉ３を乗算し、乗算結果が０であるか否かを判断する（ステップＳ１７０６）。ステップＳ１７０６は、図１５〜図１７の処理の継続の必要性を判定する処理である。
【０１６３】
乗算結果が１である場合（ステップＳ１７０６：Ｎｏ）、いずれの条件でもＥＣＮ非対応ルータが経路上に存在することになるため、これ以上図１５〜図１７の処理の継続の必要性がないと判断される。したがって、プロセッサ３０７は、一連の処理を終了する。
【０１６４】
一方、乗算結果が０である場合（ステップＳ１７０６：Ｙｅｓ）、ＤＲＯＰｉ、ＣＬＥＡＲｉ１、ＣＬＥＡＲｉ２、およびＣＬＥＡＲｉ３のうち少なくとも１つが０である。この場合は、プロセッサ３０７は、変数ｋをインクリメントし（ステップＳ１７０７）、変数ｋがホップ数Ｎより小さいか否かを判断する（ステップＳ１７０８）。
【０１６５】
変数ｋがホップ数Ｎより小さい場合（ステップＳ１７０８：Ｙｅｓ）、図１５のステップＳ１５０２に戻る。一方、変数ｋがホップ数Ｎ以上である場合（ステップＳ１７０８：Ｎｏ）、プロセッサ３０７は、一連の処理を終了する。
【０１６６】
また、ステップＳ１７０４：Ｎｏ、図１５のステップＳ１５０７：Ｎｏ、または、図１６のステップＳ１６０４：Ｎｏの場合、プロセッサ３０７は、ステップＳ１７０９を実行する。ステップＳ１７０９では、プロセッサ３０７は、ＮｅｘｔＨｏｐＩＤｉに対応する次ルータ１１０１は輻輳または何らかの原因でサービス停止中と判断する。この場合、プロセッサ３０７は、ＥＣＮ対応情報テーブル４２０の設定を未完了のまま終了する。
【０１６７】
このように、実施例１によれば、宛先の通信装置までの経路上に、ＥＣＮフィールド２３３が「０１」、「１０」、または「１１」のパケットを廃棄するＥＣＮ非対応ルータが存在する場合、ルータ１０３は、転送されてきたパケットのＥＣＮフィールド２３３を、ＥＣＴでもＣＥでもない値「００」に書き換える。これにより、ルータ１０３が転送するパケットは、ＥＣＮ非対応ルータで廃棄されずに、宛先の通信装置に到達する。したがって、送信元と宛先との通信が成立し、輻輳悪化を抑制する。
【０１６８】
また、宛先の通信装置までの経路上に、ＥＣＮフィールド２３３が「０１」、「１０」、または「１１」のパケットのＥＣＮフィールド２３３を、「００」に書き換えてしまうＥＣＮ非対応ルータが存在する場合、ルータ１０３は、転送されてきたＥＣＮフィールド２３３が「０１」、「１０」、または「１１」のパケットを、次ルータ１１０１に転送せずに廃棄する。これにより、パケットは、次ルータ１１０１でＥＣＮフィールド２３３が「００」に書き換えられて通信装置に到達することを防止する。このように、実際には、前段のルータで輻輳が発生しているにもかかわらず、宛先の通信装置で輻輳が発生していないという誤判断をすることを防止する。すなわち、ＥＣＮを用いない場合よりも輻輳が悪化することを抑制する。
【０１６９】
また、ルータ１０３から宛先の通信装置までの経路上のどのルータがＥＣＮに対応し、どのルータがＥＣＮに対応していないかを自動的に特定することにより、ルータ１０３は、パケットを中継する際、自律的にＥＣＮフィールド２３３を書き換えるべきか、パケットを廃棄すべきかを判断して輻輳悪化を抑制する。
【０１７０】
なお、実施例１では、ＡＲＰテーブル４１３とＥＣＮ対応情報テーブル４２０とを別々に構成したが、ＡＲＰテーブル４１３とＥＣＮ対応情報テーブル４２０とを統合してもよい。
【０１７１】
この場合、統合したＡＲＰテーブルは、ＡＲＰテーブル４１３とＥＣＮ対応情報テーブル４２０とを統合したデータ構造であり、具体的には、フィールドとして、次ルータ１１０１ＩＰアドレス７０１、次ルータ１１０１ＭＡＣアドレス７０２、出力ポート７０３、廃棄情報８０１およびクリア情報８０２を有する。クリア情報８０２の詳細は、図９に示したとおりである。
【０１７２】
検索制御部４１０が、ＮｅｘｔＨｏｐＩＰｉをキーとして統合したＡＲＰテーブルを参照すると、ＮｅｘｔＨｏｐＭＡＣｉとＴＸＰＯＲＴｉとＤＲＯＰｉとＣＬＥＡＲｉとを含むエントリを取得する。検索制御部４１０は、取得したエントリをヘッダ情報２００の内部ヘッダ２０１に格納し、判定制御部４２１に出力することになる。このように、ＡＲＰテーブル４１３とＥＣＮ対応情報テーブル４２０とを統合したデータ構造とすることにより、ＤＲＯＰｉおよびＣＬＥＡＲｉの読出し速度が高速化される。
【実施例２】
【０１７３】
実施例２は、ルータ１０３に輻輳制御部であるシェーパおよびポリサが設けられた構成例である。次ルータ１１０１が、ヘッダ情報２００のＥＣＮフィールド２３３がＣＥであるパケットのＣＥの値をクリアしてしまう場合、従来のシェーパおよびポリサを有するＥＣＮ対応ルータにおける課題を説明する。当該ＥＣＮ対応ルータでは、ルータ内部のシェーパまたはポリサで輻輳が発生すると、パケットのＥＣＮフィールド２３３をＣＥに書き換えるため、次ルータ１１０１で輻輳が発生したことを示すＣＥの情報が消去されてしまい、輻輳通知による輻輳制御はできなくなる。
【０１７４】
すなわち、ルータ内部で輻輳発生しても、輻輳通知するためにパケットを廃棄せず中継してしまうため、輻輳制御が機能せず、ＥＣＮを用いない場合よりも輻輳が悪化してしまう。実施例２では、そのような輻輳悪化を抑制するルータについて説明する。
【０１７５】
＜ルータのハードウェア構成例＞
図１８は、実施例２にかかるシェーパおよびポリサを有するルータのハードウェア構成例を示すブロック図である。なお、図３の構成と同一構成については同一符号を付し、その説明を省略する。ルータ１８００は、図３で示した構成３０１〜３０８のほか、受信帯域を監視する受信側ポリサ１８０１、受信帯域を制御する受信側シェーパ１８０２、受信側のパケット処理を行ったパケットを送信側に中継する中継処理部１８０３、送信帯域を監視する送信側ポリサ１８０４、送信帯域を制御する送信側シェーパ１８０５を有する。また、プロセッサ３０７から、受信側ポリサ１８０１、受信側シェーパ１８０２、中継処理部１８０３、送信側ポリサ１８０４、送信側シェーパ１８０５に対する設定が可能である。
【０１７６】
ルータ１８００は、次ルータ１１０１が、ヘッダ情報２００のＥＣＮフィールド２３３がＣＥ（＝「１１」）であるパケットのＣＥの値を「００」に書き換えてしまう場合には、パケット処理部３０３が、ヘッダ情報２００のＥＣＮフィールド２３３をＮｏｔ  ＥＣＴ（＝「００」）に書き換える。パケット処理部３０３は、当該書き換え後のパケットを、受信側ポリサ１８０１、受信側シェーパ１８０２、送信側ポリサ１８０４、送信側シェーパ１８０５に入力する。
【０１７７】
受信側ポリサ１８０１、受信側シェーパ１８０２、送信側ポリサ１８０４、および送信側シェーパ１８０５はいずれも、当該パケットはＥＣＮ対象外のパケットであると判定するため、輻輳時にはＲＥＤの機構に基づいたランダム廃棄またはＴａｉｌ  Ｄｒｏｐに基づいた廃棄を実行する。したがって、輻輳通知はできないが、パケット廃棄により輻輳制御が機能するので、輻輳の悪化を抑制する。
【０１７８】
なお、ルータ１８００における輻輳制御判定回路４２２の動作は、図１０に示した輻輳制御判定回路４２２の動作を示すフローチャートとほぼ同一処理となるが、図１０のステップＳ１００４では、輻輳制御判定回路４２２は、パケット廃棄指示を内部ヘッダ２０１に埋め込み、埋込後のヘッダ情報２００を受信側ポリサ１８０１に出力する。また、ステップＳ１００５では、輻輳制御判定回路４２２は、判定結果に応じてＥＣＮフィールド２３３をＮｏｔ  ＥＣＴ（＝「００」）に書き換え、書換後のヘッダ情報２００を受信側ポリサ１８０１に出力する。また、ステップＳ１００６では、輻輳制御判定回路４２２は、パケット廃棄指示を内部ヘッダ２０１に埋め込み、埋込後のヘッダ情報２００を受信側ポリサ１８０１に出力する。
【０１７９】
＜シェーパおよびポリサの判定処理＞
図１９は、受信側ポリサ１８０１、受信側シェーパ１８０２、送信側ポリサ１８０４、および送信側シェーパ１８０５の判定処理手順例を示すフローチャートである。図１９では、例として受信側ポリサ１８０１を例に挙げて説明するが、受信側シェーパ１８０２、送信側ポリサ１８０４、および送信側シェーパ１８０５についても同様の処理となる。
【０１８０】
受信側ポリサ１８０１は、受け取った内部ヘッダ２０１に含まれているＥＣＮフィールド２３３がＥＣＴ（＝「０１」または「１０」）であるかを判定する（ステップＳ１９０１）。ＥＣＮフィールド２３３がＥＣＴでない場合（ステップＳ１９０１：Ｎｏ）、ＥＣＮフィールド２３３はＥＣＴ（＝「０１」または「１０」）のまま処理を終了する。
【０１８１】
ＥＣＮフィールド２３３がＥＣＴである場合（ステップＳ１９０１：Ｙｅｓ）、受信側ポリサ１８０１は、ＥＣＮフィールド２３３を書き換えずに帯域が輻輳状態にあるか否かを判定する（ステップＳ１９０２）。輻輳状態である場合（ステップＳ１９０３：Ｙｅｓ）、受信側ポリサ１８０１は、ＥＣＮフィールド２３３をＣＥ（＝「１１」）に書き換えて（ステップＳ１９０４）、処理を終了する。
【０１８２】
輻輳状態でない場合（ステップＳ１９０３：Ｎｏ）、ＥＣＮフィールド２３３はＥＣＴ（＝「０１」または「１０」）のまま処理を終了する。処理の終了後、受信側ポリサ１８０１は、ヘッダ情報２００とパケットのデータ部を受信側シェーパ１８０２に出力する。
【０１８３】
受信側シェーパ１８０２も同様に図１９に示した処理を実行して、ヘッダ情報２００を中継処理部１８０３を介して送信側ポリサ１８０４に出力する。送信側ポリサ１８０４も同様に図１９に示した処理を実行して、ヘッダ情報２００を送信側シェーパ１８０５に出力する。送信側シェーパ１８０５も同様に図１９に示した処理を実行して、ヘッダ情報２００をパケット送信部３０４に出力する。パケット送信部３０４は、ヘッダ情報２００を用いてパケットを生成し送信するが、ヘッダ情報２００の内部ヘッダ２０１に廃棄指示が含まれている場合は、パケットを廃棄する。
【０１８４】
このように、実施例２によれば、パケット廃棄により輻輳制御が機能するため輻輳の悪化を抑制する。
【０１８５】
以上説明したように、本実施例によれば、ＥＣＮ対応のパケットを廃棄してしまうルータが存在するネットワークにおいても、通信を成立させ、また、輻輳制御に関する情報（ＥＣＮフィールド２３３）をクリアしてしまうルータが存在するネットワークにおいても、輻輳の悪化を回避する。したがって、ネットワークにおける輻輳の悪化を抑制する。
【０１８６】
また、輻輳制御判定回路４２２によりパケットを廃棄すべきと判定された場合、ＥＣＮフィールド２３３がＣＥ（＝「１１」）であっても、ルータ１０３はパケットを廃棄するため、次ルータ以降のルータに、ＥＣＮフィールド２３３をＣＥ（＝「１１」）からＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータが存在していても、当該ＥＣＮ非対応ルータにはパケットは到達しない。したがって、ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）に書き換えられた無駄なパケットが宛先に到達することがないため、ネットワークにおける輻輳の悪化を抑制する。
【０１８７】
また、輻輳制御判定回路４２２によりパケットを廃棄すべきと判定された場合であっても、ＥＣＮフィールド２３３がＥＣＴ（＝「０１」または「１０」）であれば、ルータ１０３はパケットを廃棄せずに、ＥＣＮフィールド２３３をＮｏｔ  ＥＣＮ（＝「００」）に書き換えて転送する。これにより、次ルータ以降のルータに、ＥＣＮフィールド２３３がＣＥ（＝「１１」）または  ＥＣＴ（＝「０１」または「１０」）であるＥＣＮマーキングパケットを廃棄してしまうＥＣＮ非対応ルータが存在していても、当該ＥＣＮ非対応ルータにはＥＣＮマーキングパケットではなく、ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であるパケットが到達する。したがって、通信装置間の通信を成立させ、ネットワークにおける輻輳の悪化を抑制する。
【０１８８】
また、輻輳制御判定回路４２２によりＥＣＮフィールド２３３をＮｏｔ  ＥＣＮ（＝「００」）に更新すべきと判定された場合、ルータ１０３は、ＥＣＮフィールド２３３をＮｏｔ  ＥＣＮ（＝「００」）に書き換えてパケットを転送する。これにより、次ルータ以降のルータに、ＥＣＮフィールド２３３がＣＥ（＝「１１」）または  ＥＣＴ（＝「０１」または「１０」）であるＥＣＮマーキングパケットを廃棄してしまうＥＣＮ非対応ルータが存在していても、当該ＥＣＮ非対応ルータにはＥＣＮマーキングパケットではなく、ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）であるパケットが到達する。したがって、通信装置間の通信を成立させ、ネットワークにおける輻輳の悪化を抑制する。
【０１８９】
また、ルータ１０３にシェーパやポリサといった輻輳制御部が設けられている場合、輻輳制御部により輻輳が検知されると、ＥＣＮフィールド２３３がＣＥ（＝「１１」）に書き換えられる。したがって、ルータ１０３が輻輳制御部を有する場合であっても、輻輳制御部により輻輳を検知する。また、輻輳制御判定回路４２２によりパケットを廃棄すべきと判定された場合は、ルータ１０３は、パケットを転送せずにを廃棄する。これにより、次ルータ以降のルータに、ＥＣＮフィールド２３３をＣＥ（＝「１１」）からＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータが存在していても、当該ＥＣＮ非対応ルータにはパケットは到達しない。したがって、ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）に書き換えられた無駄なパケットが宛先に到達することがないため、ネットワークにおける輻輳の悪化を抑制する。
【０１９０】
また、２ホップ以上先のルータに到達し、かつ、ＥＣＮフィールド２３３がＣＥ（＝「１１」）または  ＥＣＴ（＝「０１」または「１０」）である第１テストパケットを生成して送信した結果、そのＩＣＭＰ時間超過メッセージを受信することにより、２ホップ以上先のルータの１ホップ手前のルータが、ＥＣＮフィールド２３３をＮｏｔ  ＥＣＴ（＝「００」）に書き換えてしまうＥＣＮ非対応ルータであるか否かを特定する。これにより、ＥＣＮ対応情報テーブル４２０を自動設定する。
【０１９１】
また、第１テストパケットについてＩＣＭＰ時間超過メッセージを受信しなかった場合でも、２ホップ以上先のルータに到達し、かつ、ＥＣＮフィールド２３３がＮｏｔ  ＥＣＴ（＝「００」）である第２テストパケットを生成して送信した結果、そのＩＣＭＰ時間超過メッセージを受信することにより、２ホップ以上先のルータの１ホップ手前のルータが、ＥＣＮマーキングパケットを廃棄してしまうＥＣＮ非対応ルータであるか否かを特定する。これにより、ＥＣＮ対応情報テーブル４２０を自動設定する。
【０１９２】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
【０１９３】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサ３０７がそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１９４】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１９５】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【０１９６】
４１１  検索ＣＡＭ
４１２  検索ＲＡＭ
１００  ネットワーク
１０１，１０６，１０７  通信装置
１０２〜１０５，１１５，１８００  ルータ
２００  ヘッダ情報
３０２  パケット受信部
３０３  パケット処理部
３０４  パケット送信部
３０７  プロセッサ
３０８  記憶デバイス
４０１  検索部
４０２  判定部
４１０  検索制御部
４１３  ＡＲＰテーブル
４２０  ＥＣＮ対応情報テーブル
４２１  判定制御部
４２２  輻輳制御判定回路
１８０１  受信側ポリサ
１８０２  受信側シェーパ
１８０３  中継処理部
１８０４  送信側ポリサ
１８０５  送信側シェーパ
【図１】
2016171512.tif 000003
【図２】
2016171512.tif 000004
【図３】
2016171512.tif 000005
【図４】
2016171512.tif 000006
【図５】
2016171512.tif 000007
【図６】
2016171512.tif 000008
【図７】
2016171512.tif 000009
【図８】
2016171512.tif 000010
【図９】
2016171512.tif 000011
【図１０】
2016171512.tif 000012
【図１１】
2016171512.tif 000013
【図１２】
2016171512.tif 000014
【図１３】
2016171512.tif 000015
【図１４】
2016171512.tif 000016
【図１５】
2016171512.tif 000017
【図１６】
2016171512.tif 000018
【図１７】
2016171512.tif 000019
【図１８】
2016171512.tif 000020
【図１９】
2016171512.tif 000021