(57)【特許請求の範囲】
【請求項１】
ネットワークに接続される複数のポートと、
レイヤ２のヘッダと、レイヤ３のヘッダ及びデータ部を含むレイヤ２のデータ部と、を有するフレームを、前記ネットワークを介して中継するレイヤ２処理部と、
出力部と、を有し、
前記レイヤ２処理部は、
前記レイヤ３のヘッダの複数のフィールドのうち特定のフィールドの値を更新するとともに、前記複数のフィールドのうち所定のフィールドに格納されている前記レイヤ３のヘッダに関する第１の特徴値と、前記特定のフィールドの更新前後の値とを用いて、前記レイヤ３のヘッダに関する第２の特徴値を演算して、前記所定のフィールドの値を前記第１の特徴値から前記第２の特徴値に更新するレイヤ２更新部と、
前記レイヤ３のヘッダ内のエラーを検出する検出部と、を有し、
前記出力部は、
前記検出部による前記エラーの検出結果にかかわらず、前記レイヤ２更新部によって更新された更新後のフレームを、前記複数のポートのうち前記フレームの出力先として指定されたポートから前記ネットワークに出力することを特徴とする中継装置。
【請求項２】
レイヤ３に従った経路選択処理を行うレイヤ３処理部と、
前記フレームに格納されている宛先ＭＡＣアドレスに基づいて、前記レイヤ２処理部または前記レイヤ３処理部のいずれか一方の処理部を選択して、選択した前記いずれか一方の処理部に前記フレームを出力する選択部と、
を有することを特徴とする請求項１に記載の中継装置。
【請求項３】
前記レイヤ３処理部は、前記レイヤ３のヘッダの複数のフィールドのうち特定のフィールドの値を更新するとともに、当該更新による更新後の前記レイヤ３のヘッダのうち、前記第１の特徴値が格納されている前記所定のフィールドを除いた他のフィールド群の値を用いて、前記レイヤ３のヘッダに関する第３の特徴値を演算して、前記所定のフィールドの値を前記第１の特徴値から前記第３の特徴値に更新するレイヤ３更新部を有することを特徴とする請求項２に記載の中継装置。
【請求項４】
前記レイヤ２更新部は、輻輳が検出された場合に、前記特定のフィールドであるＥＣＮフィールドの値を、輻輳検出済みを示す値に更新することを特徴とする請求項１に記載の中継装置。
【請求項５】
前記レイヤ２処理部は、前記フレームがＥＣＮ非対応であるか否かを判定する判定部を有し、前記フレームがＥＣＮ非対応である場合、前記レイヤ２更新部による更新を実行せずに、前記出力部から前記フレームを出力することを特徴とする請求項１に記載の中継装置。
【請求項６】
前記検出部は、前記エラーが検出された場合、前記フレームを廃棄することを特徴とする請求項１に記載の中継装置。
【請求項７】
前記検出部は、前記エラーが検出された場合、前記フレームの廃棄または前記更新後のフレームの中継を選択的に設定可能であり、
前記出力部は、前記検出部により前記更新後のフレームの中継が設定されている場合、前記検出部による前記エラーの検出結果にかかわらず、前記レイヤ２更新部によって更新された更新後のフレームを、前記複数のポートのうち前記フレームの出力先として指定されたポートから前記ネットワークに出力することを特徴とする請求項１に記載の中継装置。
【請求項８】
レイヤ２のヘッダと、レイヤ３のヘッダ及びデータ部を含むレイヤ２のデータ部と、を有するフレームがＥＣＮ対象か否かを判定する第１の判定部と、
前記第１の判定部によってＥＣＮ対象と判定されたフレームについて輻輳が検出された場合、前記フレームにより輻輳通知をおこなうか否かを判定する第２の判定部と、
前記第２の判定部によって輻輳通知をおこなうと判定された場合、前記フレームのＥＣＮフィールドの値を、輻輳検出済みを示す値に更新するＥＣＮマーキング実行部と、
前記第２の判定部によって輻輳通知をおこなうと判定された場合、前記フレームの所定のフィールドに格納されている前記レイヤ３のヘッダに関する第１の特徴値と、前記ＥＣＮマーキング実行部による前記ＥＣＮフィールドの更新前後の値とを用いて、前記レイヤ３のヘッダに関する第２の特徴値を演算して、前記所定のフィールドの値を前記第１の特徴値から前記第２の特徴値に更新する差分チェックサム演算部と、
前記レイヤ３のヘッダ内のエラーを検出する検出部と、
複数のポートを有し、前記複数のポートのいずれかのポートから前記フレームを受信するとともに、前記検出部による前記エラーの検出結果にかかわらず、前記ＥＣＮマーキング実行部および前記差分チェックサム演算部により更新された更新後のフレームを、前記複数のポートのうち前記更新後のフレームの出力先として指定されたポートから送信する送受信部と、
を有することを特徴とする中継装置。
【請求項９】
前記第２の判定部を含み、前記第１の判定部によって判定された判定結果に応じて前記フレームを帯域監視する帯域監視部を有し、
前記帯域監視部は、前記第１の判定部によってＥＣＮ対象と判定されたフレームについて輻輳を検出した場合、前記第２の判定部により、前記フレームにより輻輳通知をおこなうか否かを判定することを特徴とする請求項８に記載の中継装置。
【請求項１０】
前記送受信部から受信された前記フレームについてレイヤ２に関する処理を実行するレイヤ２処理部と、
前記レイヤ２処理部により処理された前記フレームを格納するキューと、
前記第２の判定部を含み、前記キューを制御するキュー制御部と、を有し、
前記第１の判定部は、前記キューに格納された前記フレームがＥＣＮ対象か否かを判定し、
前記キュー制御部は、前記第１の判定部によってＥＣＮ対象と判定されたフレームについて輻輳を検出した場合、前記第２の判定部により、前記フレームにより輻輳通知をおこなうか否かを判定することを特徴とする請求項８に記載の中継装置。
【請求項１１】
ネットワークに接続される複数のポートと、レイヤ２のヘッダと、レイヤ３のヘッダ及びデータ部を含むレイヤ２のデータ部と、を有するフレームを、前記ネットワークを介して中継するレイヤ２処理部と、出力部と、を有する中継装置の中継方法であって、
前記レイヤ２処理部は、
前記レイヤ３のヘッダの複数のフィールドのうち特定のフィールドの値を更新するとともに、前記複数のフィールドのうち所定のフィールドに格納されている前記レイヤ３のヘッダに関する第１の特徴値と、前記特定のフィールドの更新前後の値とを用いて、前記レイヤ３のヘッダに関する第２の特徴値を演算して、前記所定のフィールドの値を前記第１の特徴値から前記第２の特徴値に更新し、
前記レイヤ３のヘッダ内のエラーを検出し、
前記出力部は、
前記エラーの検出結果にかかわらず、前記特定のフィールドの値および前記所定のフィールドが更新されたフレームを、前記複数のポートのうち前記更新後のフレームの出力先として指定されたポートから前記ネットワークに出力することを特徴とする中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを中継する中継装置および中継方法に関する。
【背景技術】
【０００２】
輻輳通知技術の一つであるＥＣＮ（Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ）が、ＬＩＮＵＸ（登録商標）やＷＩＮＤＯＷＳ（登録商標）等のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）にオプション機能として実装され、またＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）でも盛んに議論されるなど、脚光を浴びている。
【０００３】
ＥＣＮとは、ネットワークを構成するルータ／スイッチ等のパケット中継装置において輻輳が発生した場合に、送信端末から送信されたデータパケットに対しルータ／スイッチ自身で輻輳情報を明示的にマーキングして受信端末に送信することで、受信端末に輻輳情報を通知する輻輳通知技術である（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２３２８７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した輻輳通知技術は、レイヤ３（以下、Ｌ３）中継時に、フレームのＬ３ヘッダのフィールドを更新する技術であり、レイヤ２（以下、Ｌ２）中継時にはＬ３ヘッダのフィールドは更新されない。したがって、Ｌ２網の中継装置で輻輳が発生した場合、輻輳通知することができない。また、従来の中継装置では、Ｌ２中継時に、フレームのＬ３ヘッダのエラーチェックは実行されない。したがって、Ｌ２中継時に輻輳通知をおこなうために、Ｌ３ヘッダの書き換えを実行すると、Ｌ３ヘッダを誤訂正してしまう。このように、異なるレイヤをまたがって中継する場合に、データの信頼性を損なう場合がある。
【０００６】
本発明は、データ中継の信頼性の向上を図ることを目的とする。
【課題を解決するための手段】
【０００７】
本願において開示される発明の一側面となる中継装置および中継方法は、ネットワークに接続される複数のポートと、レイヤ２のヘッダと、レイヤ３のヘッダ及びデータ部を含むレイヤ２のデータ部と、を有するフレームを、前記ネットワークを介して中継するレイヤ２処理部と、出力部と、を有する中継装置およびその中継方法であって、前記レイヤ２処理部は、前記レイヤ３のヘッダの複数のフィールドのうち特定のフィールドの値を更新するとともに、前記複数のフィールドのうち所定のフィールドに格納されている前記レイヤ３のヘッダに関する第１の特徴値と、前記特定のフィールドの更新前後の値とを用いて、前記レイヤ３のヘッダに関する第２の特徴値を演算して、前記所定のフィールドの値を前記第１の特徴値から前記第２の特徴値に更新し、前記レイヤ３のヘッダ内のエラーを検出し、前記出力部は、前記エラーの検出結果にかかわらず、前記特定のフィールドの値および前記所定のフィールドの値が更新されたフレームを、前記複数のポートのうち前記更新後のフレームの出力先として指定されたポートから前記ネットワークに出力することを特徴とする。
【発明の効果】
【０００８】
本発明の代表的な実施の形態によれば、データ中継の信頼性の向上を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】本実施例にかかるネットワークの構成例を示す説明図である。
【図２】フレームのフォーマット例を示す説明図である。
【図３】中継装置の構成例を示す説明図である。
【図４】シェーパ部の構成例を示す説明図である。
【図５】Ｌ３ヘッダエラーチェック部がない場合の受信側Ｌ２処理部または送信側Ｌ２処理部による処理手順例を示すフローチャートである。
【図６】Ｌ３ヘッダエラーチェック部がある場合の受信側Ｌ２処理部または送信側Ｌ２処理部による処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
＜ネットワーク構成例＞
図１は、本実施例にかかるネットワーク１の構成例を示す説明図である。ネットワーク１において、端末２，３間にはＬ３網４、５やＬ２網６があり、送信元の端末２は、Ｌ３網４、５やＬ２網６内の中継装置７、８、９、１０を経由して、宛先の端末３にパケットを送信する。Ｌ２網６は、たとえば、中継装置９、１０のＬ２中継によりパケットが転送されるネットワークであり、Ｌ３網４、５は、たとえば、中継装置７、８、１０のＬ３中継によりパケットが転送されるネットワークである。
【００１１】
中継装置７、８、９、１０は、Ｌ２網６での中継処理を実行するＬ２処理部とＬ３網４、５での中継処理を実行するＬ３処理部を有する。Ｌ３網４，５に配置される中継装置７、８は、Ｌ３処理部によりデータ中継を実行し、Ｌ２網６に配置される中継装置９は、Ｌ２処理部によりデータ中継を実行する。また、Ｌ２網６とＬ３網５との境界に配置される中継装置１０は、Ｌ３網５からのデータをＬ２網６に転送する場合、Ｌ２網６内のデータをＬ２網６内に転送する場合には、Ｌ２処理部により中継する。また、中継装置１０は、Ｌ２網６からのデータをＬ３網５に転送する場合、Ｌ３網５内のデータをＬ２網６内に転送する場合には、Ｌ３処理部により中継する。
【００１２】
Ｌ２処理部は、ＯＳＩ参照モデルでのレイヤ２（データリンク層）でのプロトコル（たとえば、イーサネットプロトコル）（イーサネットは登録商標）に従って、受信したフレームを転送する。Ｌ３処理部は、ＯＳＩ参照モデルのレイヤ３（ネットワーク層）でのプロトコル（ＩＰプロトコル）に従って受信したフレームを転送する。
【００１３】
まず、端末２が、端末３にパケットを送信する。送信されるパケットは、ＥＣＮに対応可能なパケットとする。ＥＣＮに対応可能なパケットとは、具体的には、たとえば、Ｌ３ヘッダのＴＯＳ（Ｔｙｐｅ  Ｏｆ  Ｓｅｒｖｉｃｅ）フィールド内のＥＣＮフィールドの値が、輻輳検出に対応可能である意味をもつＥＣＴ（ＥＣＮ−Ｃａｐａｂｌｅ  Ｔｒａｎｓｐｏｒｔ）（０）またはＥＣＴ（１）に書き換えられたパケットである。当該パケットは、Ｌ３網４の中継装置７を経由してＬ２網６の中継装置９に到達する。
【００１４】
Ｌ２網６の中継装置９で輻輳が発生した場合、中継装置９は、端末２からのパケットのＥＣＮフィールドの値を、輻輳検出済（ＥＣＮマーキング実行済）の意味をもつＣＥ（Ｃｏｎｇｅｓｔｉｏｎ  Ｅｘｐｅｒｉｅｎｃｅｄ）の値に書き換えるＥＣＮマーキングを実行する。そして、中継装置９はＥＣＮマーキングされたパケットを、Ｌ３網５の中継装置８を介して端末３に送信する。これにより、Ｌ３網４からのパケットがＬ２網６で輻輳した場合にも、可能な限り廃棄することなく中継することができる。
【００１５】
通常、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）では、輻輳が発生していない場合、端末３は、端末２からのパケットに対する応答パケットとしてＡＣＫ（Ａｃｋｎｏｗｌｅｄｇｅ）パケットを端末２に送信する。本例の場合、Ｌ２網６の中継装置９で輻輳が発生しているため、端末３は、ＥＣＮマーキングを実行した中継装置９からのパケットを受信すると、端末２に、ＥＣＮエコーＡＣＫパケットを返信する。ＥＣＮエコーＡＣＫパケットは、輻輳検出したことを端末２に通知するためＥＣＮ向けに拡張されたＴＣＰ制御フラグのＥＣＥ（ＥＣＮ  Ｅｃｈｏ）フラグを‘１’にセットしたパケットである。ＥＣＮエコーＡＣＫパケットは、Ｌ３網５、Ｌ２網６、Ｌ３網４を経由して端末２に送信される。
【００１６】
端末２は、ＥＣＮエコーＡＣＫパケットを受信すると、ネットワークが輻輳状態にあるものと判断し、ＴＣＰがもつ輻輳回避機能に基づいて送信帯域を抑制することで、輻輳回避する。輻輳回避の処理を実行すると、端末２はパケットにＴＣＰ制御フラグのＣＷＲ（Ｃｏｎｇｅｓｔｉｏｎ  Ｗｉｎｄｏｗ  Ｒｅｄｕｃｅｄ）フラグをセットし、ＣＷＲフラグをセットしたパケットを端末３に送信する。ＣＷＲフラグは、端末２にて輻輳回避の処理を行った後に、端末３が返信するＡＣＫパケットのＥＣＥフラグのセットを停止させるために、ＥＣＮ向けに拡張されたＴＣＰ制御フラグである。
【００１７】
端末３は、ＣＷＲフラグがセットされたパケットを受信すると、ＥＣＥフラグのセットを停止する。これにより、ＥＣＮエコーＡＣＫパケットは、送信されなくなる。なお、本例は、Ｌ３網４またはＬ３網５が存在しない場合も同様の処理となる。また、Ｌ３網において輻輳が発生した場合は、通常通り中継装置７、８がＥＣＮマーキングを実行する。
【００１８】
このように、ＥＣＮを用いることで、Ｌ２網６の中継装置９においても輻輳を検出することができ、輻輳を検出した際のパケット廃棄を可能な限り抑止し、パケットを中継しつつ輻輳発生を明示的に端末に通知することができる。これにより、送信帯域の抑制を促すことが可能となり、パケット廃棄やこれに伴うパケット再送による通信品質の低下を抑制することができる。
【００１９】
ここで、中継装置９におけるＬ２処理部でのＥＣＮマーキングについて具体的に説明する。ＥＣＮマーキングでは、中継装置９は、端末２からのパケットのＥＣＮフィールドの値を、輻輳検出済の意味をもつＣＥの値に書き換える。中継装置９は、ＥＣＮフィールドの値の書き換え後において、チェックサムを求め、求めたチェックサムをチェックサムフィールド２３５に書き込む。この場合、チェックサムの演算方法として、全体チェックサム演算と差分チェックサム演算がある。
【００２０】
全体チェックサム演算は、ＥＣＮフィールドの値の書き換え後において、Ｌ３ヘッダの値の総和を求める演算方法である。ただし、チェックサムフィールド２３５の値は０とする。求めたチェックサムは、チェックサムフィールド２３５に書き込まれ、中継装置９は、ＥＣＮフィールドの値およびチェックサムフィールド２３５の値が書き換えられたパケットを、Ｌ３網５を介して端末３に送信することになる。
【００２１】
全体チェックサム演算の場合、チェックサムフィールド２３５に書き込まれた元のチェックサムを用いずにチェックサム演算がおこなわれ、あらたなチェックサムが書き込まれるため、元のチェックサムが正しい値であろうが誤った値であろうが、元のチェックサムは失われる。このため、たとえば、端末２と中継装置９との間でビットエラーが発生し、宛先ＩＰアドレスが変化した場合、Ｌ３ヘッダにエラーがあるにもかかわらず、正常パケットであると誤訂正されてしまう。このように誤訂正されたパケットは、中継装置７を経由して、誤った宛先に転送され、端末３に到達しないことになる。
【００２２】
このため、本実施例では、中継装置９は、Ｌ２処理部でのＥＣＮマーキングの際、全体チェックサム演算ではなく差分チェックサム演算を実行する。差分チェックサム演算は、Ｌ３ヘッダ（ＩＰヘッダ）の書き換わったフィールドの値を用いてチェックサムを演算する演算方法である。本例の場合、ＥＣＮフィールドの値の書き換え前後の値と、元のチェックサムとが用いられる。このため、元のチェックサムに誤りが含まれていれば、差分チェックサム演算後のチェックサムに保存され、ＥＣＮフィールドの値の書き換えも実行される。したがって、正常パケットは、正常に端末３に伝送され、輻輳通知も行われる。一方、エラーを含むパケットは、Ｌ３網５でエラー検出され、廃棄されることになる。
【００２３】
＜フレームのフォーマット例＞
図２は、フレームのフォーマット例を示す説明図である。フレームＦは、プリアンブル２０１、Ｌ２ヘッダ２０２、Ｌ３ヘッダ２０３、Ｌ４ヘッダ２０４、ペイロード２０５、ＦＣＳ（Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）２０６により構成される。なお、ＩＦＧ（Ｉｎｔｅｒ  Ｆｒａｍｅ  Ｇａｐ）２００は、フレームＦから次のフレームＦを送るまでの間隔である。
【００２４】
本実施例で書き換え対象となるフィールドは、Ｌ３ヘッダ２０３内のＴＯＳフィールド２３０内の下位２ビットのＥＣＮフィールド２３１を例として説明する。ＥＣＮフィールド２３１の値については、図２に示すとおりである。なお、ＥＣＮフィールド２３１の初期の値は、フレームＦの送信元の端末２で設定される。送信元の端末２がＥＣＮをサポートしていれば、ＥＣＮフィールド２３１の値は、‘０１’または‘１０’に設定され、サポートしていなければ、‘００’に設定される。
【００２５】
端末２からのパケットを受信した端末３は、Ｌ４ヘッダ２０４のコードビット２４０のＡＣＫフィールド２４１の値を‘１’に設定したＡＣＫパケットを返信する。パケットを受信した端末３は、ＥＣＮエコーＡＣＫパケットの場合は、さらに、ＥＣＥフィールド２４２の値を‘１’に設定して、ＥＣＮエコーＡＣＫパケットを返信する。また、ＥＣＮエコーＡＣＫパケットを受信した送信元の端末２は、ＣＷＲフィールド２４３の値を‘１’に設定したＣＷＲを端末３に返信する。
【００２６】
また、入力回線番号２１１、Ｂｙｔｅ長２１２、選択フラグ２１３、およびＬ３ヘッダエラーフラグ２１４は、Ｌ２網６の中継装置９に取り込まれた場合に付与される内部ヘッダ２１０である。入力回線番号２１１とは、中継装置９がフレームＦを入力した回線（ポート）の番号であり、Ｂｙｔｅ長２１２とは、たとえば、フレームＦのＬ１長である。なお、Ｌ１長に限らず、Ｌ２長またはＬ３長のいずれかを採用してもよい。
【００２７】
選択フラグ２１３とは、後述する受信側Ｌ２／Ｌ３選択部３２１が、受信側Ｌ２処理部３２２と受信側Ｌ３処理部３２３のいずれの処理部を選択したかを識別するフラグであり、送信側Ｌ２／Ｌ３選択部３２４に参照される。Ｌ３ヘッダエラーフラグ２１４とは、後述するＬ３ヘッダエラーチェック部３４１によりエラーが検出された場合に立てるフラグである。また、Ｌ３ヘッダ２０３において、ＩＨＬ（Ｉｎｔｅｒｎａｌ  Ｈｅａｄｅｒ  Ｌｅｎｇｔｈ）フィールド２３２には、Ｌ３ヘッダ長を４Ｂｙｔｅ＝１とする単位で表した値であるＩＨＬが格納される。なお、図示はしないが、上述した情報に限らず、内部ヘッダ２１０には、各処理で得られた情報が格納される。
【００２８】
図３は、中継装置７、８、９、１０の構成例を示す説明図である。中継装置３００（中継装置７、８、９、１０）は、複数組のＮＩＦ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ）３０１およびＰＰＵ３０２（Ｐａｃｋｅｔ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０２と、中継処理部（Ｓｗｉｔｃｈ  Ｆａｂｒｉｃ）３０３と、を有する。各ＮＩＦ３０１は、対応するＰＰＵ３０２に接続され、各ＰＰＵ３０２は、中継処理部３０３に接続される。
【００２９】
ＮＩＦ３０１は、送受信回路３１１と、バッファ３１２と、を有する出力部である。送受信回路３１１は、外部から送信されてくるフレームＦを受信し、受信したフレームＦに図２に示した内部ヘッダ２１０を付与して、バッファ３１２に出力する。具体的には、たとえば、送受信回路３１１は、フレームＦを受信した入力回線番号２１１およびＢｙｔｅ長２１２を特定して、内部ヘッダ２１０を付与する。なお、この段階では、選択フラグ２１３およびＬ３ヘッダエラーフラグ２１４はそれぞれ、未選択および未検出を示す値が設定される。
【００３０】
バッファ３１２は、送受信回路３１１からの入力順に従って、内部ヘッダ２１０が付与されたフレームＦをＰＰＵ３０２に出力する。また、送受信回路３１１は、ＰＰＵ３０２からのフレームＦを外部に送信する。送受信回路３１１は、外部にフレームＦを送信する際、フレームＦのＥＣＮフィールド２３１を書き換える。具体的には、ＥＣＮフィールド２３１の値が「０１」または「１０」であり、かつ、ＥＣＮマーキングが実行された場合には、送受信回路３１１は、ＥＣＮフィールド２３１の値を「１１」に書き換える。なお、ＥＣＮフィールド２３１の値が「００」または「１１」の場合は、書き換えない。
【００３１】
ＰＰＵ３０２は、受信側の構成と送信側の構成を有する。まず、受信側の構成について説明する。受信側の構成としては、ＰＰＵ３０２は、受信側Ｌ２／Ｌ３選択部３２１と、受信側Ｌ２処理部３２２と、受信側Ｌ３処理部３２３とを有する。受信側Ｌ２／Ｌ３選択部３２１は、バッファ３１２から送信されてくるフレームＦの宛先ＭＡＣアドレスに基づいて、当該フレームＦを、受信側Ｌ２処理部３２２と受信側Ｌ３処理部３２３のいずれの処理部で処理させるかを選択する。
【００３２】
たとえば、宛先ＭＡＣアドレスが、自装置のＭＡＣアドレスである場合、受信側Ｌ２／Ｌ３選択部３２１は、受信側Ｌ３処理部３２３を選択し、バッファ３１２からのフレームＦを受信側Ｌ３処理部３２３に転送する。一方、宛先ＭＡＣアドレスが、自装置のＭＡＣアドレスでない場合、受信側Ｌ２／Ｌ３選択部３２１は、受信側Ｌ２処理部３２２を選択し、バッファ３１２からのフレームＦを受信側Ｌ２処理部３２２に転送する。なお、受信側Ｌ２／Ｌ３選択部３２１からの転送に際して、受信側Ｌ２／Ｌ３選択部３２１は、フレームＦの内部ヘッダ２１０の選択フラグ２１３を、転送先の処理部を特定するフラグに設定する。設定された選択フラグ２１３は、送信側Ｌ２／Ｌ３選択部３２４に参照される。
【００３３】
受信側Ｌ２処理部３２２は、Ｌ３ヘッダエラーチェック部３４１と、ＦＤＢ３４２と、Ｌ２フロー検索部３４３と、ＥＣＮ対象判定部３４４と、帯域監視部３４５と、ＥＣＮマーキング実行部３４６と、差分チェックサム演算部３４７と、を有する。
【００３４】
Ｌ３ヘッダエラーチェック部３４１は、受信側Ｌ２／Ｌ３選択部３２１からのフレームＦのＬ３ヘッダ２０３にエラーが存在するか否かをチェックする。具体的には、たとえば、Ｌ３ヘッダエラーチェック部３４１は、Ｌ３ヘッダ２０３のＩＰバージョンフィールド２３３の値が正常な値であることを確認する。たとえば、ＩＰｖ４の場合は‘４’であることを確認する。
【００３５】
また、Ｌ３ヘッダエラーチェック部３４１は、フレームＦのＬ２長とＬ３ヘッダ２０３のパケット長フィールド２３４に格納されているＴｏｔａｌ  Ｌｅｎｇｔｈ(ＴＬ)の値との関係が正常であることを確認する。たとえば、ＴＬ≦Ｌ２長の場合、正常となる。
【００３６】
また、Ｌ３ヘッダエラーチェック部３４１は、Ｌ３ヘッダ２０３のＩＨＬフィールド２３２の値（ＩＨＬ）とＴＬとの関係が正常であることを確認する。たとえば、ＩＨＬ×４≦ＴＬの場合、正常となる。また、Ｌ３ヘッダエラーチェック部３４１は、Ｌ３ヘッダ２０３のＩＨＬフィールド２３２の値（ＩＨＬ）が正常な値であることを確認する。たとえば、５≦ＩＨＬの場合、正常となる。
【００３７】
また、Ｌ３ヘッダエラーチェック部３４１は、チェックサムエラーでないことを確認する。たとえば、Ｌ３ヘッダエラーチェック部３４１は、Ｌ３ヘッダ２０３のチェックサムフィールド２３５の値を０にした場合のチェックサム（いわゆる全体チェックサム）を計算し、フレームＦのチェックサムフィールド２３５に格納されていたチェックサムと一致するか否かを判断する。一致する場合は、正常となる。
【００３８】
なお、これらのチェックは、少なくともいずれか１つが実行されることとしてもよい。異常が検出された場合、Ｌ３ヘッダエラーチェック部３４１は、当該フレームＦをエラーフレームとして扱う。具体的には、Ｌ３ヘッダエラーチェック部３４１は、フレームＦを廃棄する。また、廃棄せずに、後段の処理に透過させてもよい。この場合、Ｌ３ヘッダエラーチェック部３４１は、内部ヘッダ２１０のＬ３エラーチェックフラグを、エラーありを示す値に設定する。また、複数のチェックが実行された場合に少なくともいずれか１つでも異常が検出された場合、Ｌ３ヘッダエラーチェック部３４１は、当該フレームＦをエラーフレームとして扱うこととしてもよい。また、受信側Ｌ２処理部３２２では、Ｌ３ヘッダエラーチェック部３４１がない構成としてもよい。
【００３９】
ＦＤＢ３４２は、ＭＡＣアドレスと出力ポートとを学習するフィルタリングデータベースを有し、フレームＦを出力する出力ポートのポート番号を検索する。検索された出力ポートのポート番号は、中継処理部３０３に参照される。フレームＦは、検索された出力ポートを有するＮＩＦ３０１に対応するＰＰＵ３０２に転送されることになる。Ｌ２フロー検索部３４３は、フレームＦが所属するフローを検索する。検索されたフローは、帯域監視部３４５におけるフローごとの帯域計測に用いられる。
【００４０】
ＥＣＮ対象判定部３４４は、Ｌ２フロー検索部３４３で検索されたフレームＦがＥＣＮ対象であるか否かを判定する。具体的には、たとえば、ＥＣＮ対象判定部３４４は、ＥＣＮフィールド２３１の値を参照し、‘０１’または‘１０’であれば、フレームＦはＥＣＮ対象であると判定する。なお、ＥＣＮエコーＡＣＫパケットについては、ＥＣＮ対象判定部３４４は、ＥＣＮ判定対象外として処理する。具体的には、コードビット２４０のＡＣＫフィールド２４１が“１”であるパケットは、ＥＣＮエコーＡＣＫパケットであるため、ＥＣＮ判定対象外とする。後述するシェーパ部３２７内のＬ２側ＥＣＮ対象判定部４０４およびＬ３側ＥＣＮ対象判定部４０５についても同様である。
【００４１】
帯域監視部３４５は、フレームＦの帯域を監視する。具体的には、たとえば、帯域監視部３４５は、リーキーバケツアルゴリズムを採用してフレームＦが所属するフローの帯域を計測する。そして、帯域監視部３４５は、計測した帯域が契約帯域を超過しているか否かを判断する。超過している場合は、帯域監視部３４５は、輻輳が発生していると判断する。また、帯域監視部３４５は、ＥＣＮ対象判定部３４４による判定結果に応じた帯域監視をおこなう。たとえば、ＥＣＮ対象でないフレームＦについては、帯域監視部３４５は、上述のような帯域監視をおこなう。これに対し、ＥＣＮ対象であるフレームＦについては、帯域監視部３４５は、確率違反判定を実行する。
【００４２】
確率違反判定とは、輻輳が発生しているかを確率的に判定する処理である。たとえば、リーキーバケツのバケツの深さを横軸、輻輳マーキング確率を縦軸としたグラフにおいて、バケツの深さに応じて輻輳マーキング確率が増加するグラフが用意される。輻輳マーキング確率とは、ＥＣＮマーキング実行部３４６に輻輳マーキングを実行させる確率である。
【００４３】
当該グラフでは、バケツの深さについて第１のしきい値と第１のしきい値よりも大きい第２のしきい値が設定される。たとえば、バケツの深さが０以上第１のしきい値未満の場合は、輻輳マーキング確率は０％、バケツの深さが第１のしきい値以上第２のしきい値未満の場合は、輻輳マーキング確率は、０％よりも大きく１００％未満の単調増加関数とする。また、第２のしきい値以上のバケツの深さでは、輻輳マーキング確率は１００％とする。確率違反判定では、帯域監視部３４５は、ランダムサイコロで決まった乱数が、現在のバケツの深さにより特定される輻輳マーキング確率に入った場合、確率違反、すなわち、輻輳マーキングすべきと判定する。当該判定結果を示すフラグは、内部ヘッダ２１０に設定される。
【００４４】
ＥＣＮマーキング実行部３４６は、帯域監視部３４５による確率違反判定における判定結果に基づいて、ＥＣＮマーキングを実行する。具体的には、たとえば、ＥＣＮ実行部３４６は、内部ヘッダ２１０に確率違反を示すフラグが設定されている場合には、ＥＣＮ実行済みを示すＥＣＮフィールド２３１の値‘１１’を、内部ヘッダ２１０またはＥＣＮフィールド２３１のいずれかに設定する。ＥＣＮフィールド２３１に設定する場合には、ＥＣＮマーキング実行部３４６は、ＥＣＮフィールド２３１の値（この場合は、ＥＣＮマーキング未実行を示す‘１０’または‘０１’）を内部ヘッダ２１０に複製して、ＥＣＮフィールド２３１を、ＥＣＮ実行済みを示す値‘１１’に更新する。
【００４５】
差分チェックサム演算部３４７は、フレームＦの内部ヘッダ２１０およびＬ３ヘッダ２０３に基づいて、差分チェックサムを演算する。差分チェックサムの演算例については後述する。差分チェックサム演算部３４７は、演算された差分チェックサムをチェックサムフィールド２３５に書き込む。なお、ＥＣＮ実行済みを示すＥＣＮフィールド２３１の値‘１１’が内部ヘッダ２１０に書き込まれている場合には、差分チェックサム演算部３４７は、差分チェックサムの演算後に、ＥＣＮ実行済みを示すＥＣＮフィールド２３１の値‘１１’をＥＣＮフィールド２３１に上書きする。そして、差分チェックサム演算部３４７は、フレームＦを中継処理部３０３に転送する。
【００４６】
つぎに、受信側Ｌ３処理部３２３について説明する。受信側Ｌ２処理部３２２の構成と同一構成には同一符号を付し、説明を省略する。受信側Ｌ３処理部３２３は、Ｌ３ヘッダエラーチェック部３４１と、経路検索部３５２と、Ｌ３フロー検索部３５３と、ＥＣＮ対象判定部３４４と、帯域監視部３４５と、ＥＣＮマーキング実行部３４６と、全体チェックサム演算部３５７と、を有する。
【００４７】
経路検索部３５２は、フレームＦのＬ３ヘッダ２０３を参照してルーティングテーブルによりフレームＦを出力する出力ポートのポート番号を検索する。検索された出力ポートのポート番号は、中継処理部３０３に参照される。Ｌ３フロー検索部３５３は、フレームＦが所属するフローを検索する。検索されたフローは、帯域監視部３４５におけるフローごとの帯域計測に用いられる。
【００４８】
全体チェックサム演算部３５７は、フレームＦのＬ３ヘッダ２０３に基づいて、全体チェックサムを演算する。全体チェックサムの演算例については後述する。全体チェックサム演算部３５７は、演算された全体チェックサムをチェックサムフィールド２３５に書き込む。そして、全体チェックサム演算部３５７は、フレームＦを中継処理部３０３に転送する。
【００４９】
つぎに、ＰＰＵ３０２の送信側の構成について説明する。送信側の構成として、ＰＰＵ３０２は、送信側Ｌ２／Ｌ３選択部３２４と、送信側Ｌ２処理部３２５と、送信側Ｌ３処理部３２６と、シェーパ部３２７と、を有する。ＰＰＵ３０２の送信側の構成と同一構成には同一符号を付し、説明を省略する。
【００５０】
送信側Ｌ２／Ｌ３選択部３２４は、中継処理部３０３からのフレームＦの内部ヘッダ２１０の選択フラグ２１３を参照して、中継処理部３０３からのフレームＦの転送先を、送信側Ｌ２処理部３２５と送信側Ｌ３処理部３２６のいずれかに選択する。そして、送信側Ｌ２／Ｌ３選択部３２４は、選択した処理部にフレームＦを転送する。
【００５１】
送信側Ｌ２処理部３２５は、受信側Ｌ２処理部３２２におけるＬ２フロー検索部３４３と、ＥＣＮ対象判定部３４４と、帯域監視部３４５と、ＥＣＮマーキング実行部３４６と、差分チェックサム演算部３４７と、を有する。受信側Ｌ３処理部３２３は、受信側Ｌ３処理部３２３におけるＬ３フロー検索部３５３と、ＥＣＮ対象判定部３４４と、帯域監視部３４５と、ＥＣＮマーキング実行部３４６と、全体チェックサム演算部３５７と、を有する。
【００５２】
シェーパ部３２７は、フレームＦが所属するフローや出力回線等の帯域を制御する。シェーパ部３２７は、送信側Ｌ２処理部３２５および送信側Ｌ３処理部３２６からのフレームＦをＮＩＦ３０１の送受信回路３１１に出力する。シェーパ部３２７は、帯域制御のほか、受信側Ｌ２処理部３２２、受信側Ｌ３処理部３２３、送信側Ｌ２処理部３２５、および送信側Ｌ３処理部３２６において、ＥＣＮマーキングされなかったフレームＦについて、ＥＣＮマーキングをおこなうことができる。
【００５３】
Ｌ２処理部またはＬ３処理部のＥＣＮ対象判定部３４４でＥＣＮ対象と判定され、帯域監視部３４５で輻輳が発生していると判定された場合は、Ｌ２処理部またはＬ３処理部でＥＣＮマーキングがなされる。Ｌ２処理部またはＬ３処理部のＥＣＮ対象判定部３４４でＥＣＮ対象と判定されなかった場合、または、Ｌ２処理部またはＬ３処理部のＥＣＮ対象判定部３４４でＥＣＮ対象と判定されても帯域監視部３４５で輻輳が発生していると判定されなかった場合は、Ｌ２処理部またはＬ３処理部でＥＣＮマーキングはされない。
【００５４】
次にシェーパ部３２７は、Ｌ２側ＥＣＮ対象判定部４０４またはＬ３側ＥＣＮ対象判定部４０５で、ＥＣＮマーキングされたパケットをＥＣＮ対象外と判定する。ＥＣＮマーキングされておらず、ＥＣＮ対象と判定された場合は、シェーパ部３２７は、キュー制御部４０１における確率違反判定における判定結果に基づいて、ＥＣＮマーキング実行部３４６によりＥＣＮマーキングを実行する。
【００５５】
また、中継処理部３０３は、ＰＰＵ３０２からのフレームＦを、そのＰＰＵ３０２で検索された出力先のポートを有するＰＰＵ３０２に転送する。中継処理部３０３は、たとえば、クロスバスイッチにより構成される。
【００５６】
なお、中継装置３００において、Ｌ２に従う処理部は、Ｌ２中継部の一部であり、Ｌ３に従う処理部は、Ｌ３中継部の一部である。たとえば、受信側Ｌ２処理部３２２や送信側Ｌ２処理部３２５は、Ｌ２中継部の一部であり、受信側Ｌ３処理部３２３や送信側Ｌ３処理部３２６は、Ｌ３中継部の一部である。
【００５７】
また、中継装置９にＬ３ヘッダ２０３のエラーチェック機能を搭載してもよい。これにより、中継装置９は、帯域監視に先立ってＬ３ヘッダ２０３にエラーがあるパケットを廃棄することができる。なお、中継装置９は、このようなエラーパケットを取り込んでもよく、その場合もＥＣＮマーキングを実行する。エラーパケットはヘッダ情報の信頼性が失われており、属するフローを正常に判定することができないので、帯域監視の対象から除外してＥＣＮマーキングを実行しない構成とすることもできる。したがって、正常なパケットは、正常に端末３に伝送され、エラーを含むパケットは、差分チェックサムの比較により、従来のエラーパケットのエラー検出と同様にＬ３網の中継装置８においてエラー検出され、廃棄されることになる。なお、Ｌ３網の中継装置８が存在しない場合には、端末３においてエラー検出され、廃棄されることになる。
【００５８】
なお、中継装置９はＬ２スイッチであってもよく、その場合、図３の構成から受信側Ｌ２／Ｌ３選択部３２１、受信側Ｌ３処理部３２３、送信側Ｌ２／Ｌ３選択部３２４、送信側Ｌ３処理部３２６は不要である。バッファ３１２から読み出されたパケットは受信側Ｌ２処理部３２２に転送され、中継処理部３０３から読み出されたパケットは送信側Ｌ２処理部３２５に転送される。
【００５９】
図４は、シェーパ部３２７の構成例を示す説明図である。シェーパ部３２７は、キュー制御部４０１と、Ｌ２／Ｌ３選択部４０３と、Ｌ２側ＥＣＮ対象判定部４０４と、Ｌ３側ＥＣＮ対象判定部４０５と、ＥＣＮマーキング実行部３４６と、差分チェックサム演算部３４７と、全体チェックサム演算部３５７と、を有する。上述した構成と同一構成については同一符号を付し、その説明を省略する。
【００６０】
キュー制御部４０１は、キュー４０２のキュー長を参照して、フレームＦのキューイング可否を判定する。具体的には、たとえば、キュー制御部４０１は、上述した帯域監視部３４５と同様の処理を実行する。キュー制御部４０１の場合、たとえば、リーキーバケツアルゴリズムのバケツの深さの代わりにキュー長が用いられる。また、キュー制御部４０１は、帯域監視部３４５で説明した確率違反判定も実行する。キュー４０２は、キュー制御部４０１からのキューイング可否の判定結果に応じて、フレームＦを蓄積し、また、蓄積されたフレームＦを入力順に出力する。
【００６１】
Ｌ２／Ｌ３選択部４０３は、送信側Ｌ２処理部３２５または送信側Ｌ３処理部３２６からのフレームＦの内部ヘッダ２１０の選択フラグ２１３を参照して、フレームＦの転送先を、Ｌ２側ＥＣＮ対象判定部４０４とＬ３側ＥＣＮ対象判定部４０５のいずれかに選択する。そして、Ｌ２／Ｌ３選択部４０３は、選択したＥＣＮ対象判定部にフレームＦを転送する。
【００６２】
Ｌ２側ＥＣＮ対象判定部４０４およびＬ３側ＥＣＮ対象判定部４０５は、Ｌ２／Ｌ３選択部４０３からのフレームＦがＥＣＮ対象であるか否かを判定する。具体的には、たとえば、Ｌ２側ＥＣＮ対象判定部４０４およびＬ３側ＥＣＮ対象判定部４０５は、ＥＣＮフィールド２３１の値を参照し、‘０１’または‘１０’であれば、フレームＦはＥＣＮ対象であると判定する。ＥＣＮ非対応の場合、当該フレームＦは、キュー制御部４０１を介してキュー４０２に書き込まれる。
【００６３】
ＥＣＮマーキング実行部３４６は、ＥＣＮ対象であると判定されたフレームＦについて、キュー制御部４０１での確率違反判定における判定結果に基づいて、ＥＣＮマーキングを実行する。具体的な処理内容については、上述した通りである。
【００６４】
なお、Ｌ３網４、５に設置された中継装置７、８がＥＣＮエコーＡＣＫパケットを受信した場合、ＥＣＮエコーＡＣＫパケットは、ＮＩＦ３０１、受信側Ｌ２／Ｌ３選択部３２１、受信側Ｌ３処理部３２３、中継処理部３０３、送信側Ｌ２／Ｌ３選択部３２４、送信側Ｌ３処理部３２６、シェーパ部３２７を経由する。シェーパ部３２７では、ＥＣＮエコーＡＣＫパケットは、キュー制御部４０１、Ｌ２／Ｌ３選択部４０３、Ｌ３側ＥＣＮ対象判定部４０５を経由し、ＥＣＮマーキング実行部３４６および全体チェックサム演算部３５７による処理を実行せずに、キュー４０２に渡されて、ＮＩＦ３０１の送受信回路３１１に出力される。
【００６５】
中継装置７、８、１０がＬ３スイッチである場合は、図３の構成そのままとなる。特に、Ｌ２網６とＬ３網５の境界に設置された中継装置１０では、Ｌ２網６から別のネットワークであるＬ３網５にパケットを転送する場合には、Ｌ３中継に関する受信側Ｌ３処理部３２３と送信側Ｌ３処理部３２６によりパケットは処理される。Ｌ２網６から同一のネットワークであるＬ２網６に折り返してパケットを転送する場合には、Ｌ２中継に関する受信側Ｌ２処理部３２２と送信側Ｌ２処理部３２５によりパケットは転送される。Ｌ３網５内でＬ３中継のみを実施する中継装置７、８では、受信側Ｌ３処理部３２３と送信側Ｌ３処理部３２６によりパケットは処理され、受信側Ｌ２処理部３２２と送信側Ｌ２処理部３２５によりパケットは転送されない。
【００６６】
中継装置７、８がルータである場合は、図３の構成から受信側Ｌ２／Ｌ３選択部３２１、受信側Ｌ２処理部３２２、送信側Ｌ２／Ｌ３選択部３２４、送信側Ｌ２処理部３２５は不要である。バッファ３１２から読み出されたパケットは受信側Ｌ３処理部３２３に転送され、中継処理部３０３から読み出されたパケットは送信側Ｌ３処理部３２６に転送される。
【００６７】
また、Ｌ２網６に設置された中継装置９がＥＣＮエコーＡＣＫパケットを受信した場合、ＥＣＮエコーＡＣＫパケットは、ＮＩＦ３０１、受信側Ｌ２／Ｌ３選択部３２１、受信側Ｌ２処理部３２２、中継処理部３０３、送信側Ｌ２／Ｌ３選択部３２４、送信側Ｌ２処理部３２５、シェーパ部３２７を経由する。シェーパ部３２７では、ＥＣＮエコーＡＣＫパケットは、キュー制御部４０１、Ｌ２／Ｌ３選択部４０３、Ｌ２側ＥＣＮ対象判定部４０４を経由し、ＥＣＮマーキング実行部３４６および差分チェックサム演算部３４７による処理を実行せずに、キュー４０２に渡されて、ＮＩＦ３０１の送受信回路３１１に出力される。
【００６８】
ＥＣＮエコーＡＣＫパケットはコードビット２４０のＡＣＫが“１”であることから、いずれの場合においても、ＥＣＮ対象判定部３４４、Ｌ２側ＥＣＮ対象判定部４０４、およびＬ３側ＥＣＮ対象判定部４０５において、ＥＣＮ判定対象外となり、ＥＣＮマーキング、差分チェックサム演算、全体チェックサム演算は実行されない。したがって、中継装置３００の処理負荷の低減を図ることができる。
【００６９】
＜中継装置３００の動作処理フロー＞
つぎに、中継装置３００の動作処理フローについて説明する。
【００７０】
まず、全体チェックサム演算部３５７は、Ｌ３ヘッダ２０３の書き換えを実行する（ステップＳ５１）。具体的には、全体チェックサム演算部３５７は、Ｌ３ヘッダ２０３のチェックサムフィールド２３５の値ＨをＨ＝０にする。また、ＴＯＳフィールド２３０の値をＥＣＮの輻輳マーキング済みを示す値に書き換える。
【００７１】
つぎに、全体チェックサム演算部３５７は、ステップＳ５１による書き換え後のＬ３ヘッダ２０３について、２Ｂｙｔｅごとの加算値Ｓを求める（ステップＳ５２）。そして、全体チェックサム演算部３５７は、加算値Ｓの下位２Ｂｙｔｅに対する繰り上がりの加算値Ｓ’を求める（ステップＳ５３）。このあと、全体チェックサム演算部３５７は、加算値Ｓ’の１の補数Ｃ１を求める（ステップＳ５４）。求めた補数Ｃ１が全体チェックサムであり、全体チェックサム演算部３５７は、Ｃ１をチェックサムフィールド２３５に書き込む（ステップＳ５５）。これにより、全体チェックサム演算部３５７による処理を終了する。
【００７２】
ここで、全体チェックサムの演算例について説明する。演算対象となるＬ３ヘッダ２０３を例として以下の値とする。ここでは、ＴＯＳ＝０ｘ０１（ＥＣＮサポート）をＴＯＳ＝０ｘ０３（ＥＣＮの輻輳検出済み）に書き換える際の全体チェックサムの計算例を示す。
【００７３】
０ｘ４５  ０ｘ０１  ０ｘ００  ０ｘ２８
０ｘＦＥ  ０ｘ２Ｄ  ０ｘ４０  ０ｘ００
０ｘ１４  ０ｘ０６  ０ｘＥ９  ０ｘＡ０
０ｘＦＦ  ０ｘＦＦ  ０ｘＦＦ  ０ｘＦＦ
０ｘ７Ｆ  ０ｘ００  ０ｘ００  ０ｘ０１
【００７４】
（１）１行目の「０ｘ０１」は、ＴＯＳフィールド２３０の値であり、ＴＯＳフィールド２３０の下位２ビットであるＥＣＮフィールド２３１の値が‘０１’であることを示す。全体チェックサム演算の前に、ＥＣＮマーキングが実行されるため、ＥＣＮフィールド２３１の値が‘０１’ＥＣＮ実行済みを示す‘１１’に書き換わり、１行目の「０ｘ０１」は、「０ｘ０３」に書き換わる。当該書き換え後のＬ３ヘッダ２０３は以下のようになる。
【００７５】
０ｘ４５  ０ｘ０３  ０ｘ００  ０ｘ２８
０ｘＦＥ  ０ｘ２Ｄ  ０ｘ４０  ０ｘ００
０ｘ１４  ０ｘ０６  ０ｘＥ９  ０ｘＡ０
０ｘＦＦ  ０ｘＦＦ  ０ｘＦＦ  ０ｘＦＦ
０ｘ７Ｆ  ０ｘ００  ０ｘ００  ０ｘ０１
【００７６】
（２）つぎに、全体チェックサム演算部３５７は、（１）ＴＯＳフィールド２３０の書き換え後のＬ３ヘッダ２０３について全体チェックサムを演算する。このとき、全体チェックサム演算部３５７は、ＴＯＳフィールド２３０の書き換え後のＬ３ヘッダ２０３において、チェックサムフィールド２３５の値Ｈである３行目の「０ｘＥ９  ０ｘＡ０」をＨ＝０にする。当該書き換え後のＬ３ヘッダ２０３は以下のようになる。
【００７７】
０ｘ４５  ０ｘ０３  ０ｘ００  ０ｘ２８
０ｘＦＥ  ０ｘ２Ｄ  ０ｘ４０  ０ｘ００
０ｘ１４  ０ｘ０６  ０ｘ００  ０ｘ００
０ｘＦＦ  ０ｘＦＦ  ０ｘＦＦ  ０ｘＦＦ
０ｘ７Ｆ  ０ｘ００  ０ｘ００  ０ｘ０１
【００７８】
（３）全体チェックサム演算部３５７は、（３）の書き換え後のＬ３ヘッダ２０３について、２Ｂｙｔｅ毎の加算値Ｓを求める。
【００７９】
Ｓ＝０ｘ４５０３＋０ｘ００２８＋０ｘＦＥ２Ｄ＋０ｘ４０００＋０ｘ１４０６
＋０ｘ００００＋０ｘＦＦＦＦ＋０ｘＦＦＦＦ＋０ｘ７Ｆ００＋０ｘ０００１
＝０ｘ４１６５Ｄ
【００８０】
（４）つぎに、全体チェックサム演算部３５７は、（３）の加算値Ｓの下位２Ｂｙｔｅに対する繰り上がりの加算値Ｓ´を演算する。
【００８１】
Ｓ’＝０ｘ１６５Ｄ＋４＝０ｘ１６６１
【００８２】
（５）最後に、全体チェックサム演算部３５７は、加算値Ｓ’の１の補数を求めることで、Ｌ３ヘッダ２０３の書き換え後の全体チェックサムＣ１を演算する。
【００８３】
Ｃ１＝０ｘＦＦＦＦ−Ｓ’＝０ｘＥ９９Ｅ
【００８４】
全体チェックサム演算部３５７は、（５）で演算された全体チェックサムＣ１をチェックサムフィールド２３５に書き込んで、フレームＦを出力する。
【００８５】
つぎに、差分チェックサム演算部３４７による差分チェックサム演算処理手順例を説明する。まず、差分チェックサム演算部３４７は、Ｌ３ヘッダ２０３のチェックサムフィールド２３５の値Ｈの１の補数Ｈ’を算出する（ステップＳ６１）。
【００８６】
つぎに、差分チェックサム演算部３４７は、ＴＯＳフィールド２３０の書き換え前の値Ｍ０と書き換え後の値Ｍ１の２Ｂｙｔｅごとの差分Ｍ１−Ｍ０と、ステップＳ６１で求めた１の補数Ｈ’とを加算し、加算値Ｈ”を求める（ステップＳ６２）。
【００８７】
そして、差分チェックサム演算部３４７は、ステップＳ６２で求めた加算値Ｈ”の下位２Ｂｙｔｅに対する繰り上がりの加算値Ｈ”’を求める（ステップＳ６３）。このあと、差分チェックサム演算部３４７は、ステップＳ６３で求めた加算値Ｈ”’の１の補数Ｃ２を求める（ステップＳ６４）。求めた補数Ｃ２が差分チェックサムであり、差分チェックサム演算部３４７は、Ｃ２をチェックサムフィールド２３５に書き込む（ステップＳ６５）。これにより、差分チェックサム演算部３４７による処理を終了する。
【００８８】
差分チェックサムの演算例について説明する。演算対象となるＬ３ヘッダ２０３を例として上述と同様、以下の値とする。ここでも、ＴＯＳ＝０ｘ０１（ＥＣＮサポート）をＴＯＳ＝０ｘ０３（ＥＣＮの輻輳検出済み)に書き換える際の全体チェックサムの計算例を示す。
【００８９】
０ｘ４５  ０ｘ０１  ０ｘ００  ０ｘ２８
０ｘＦＥ  ０ｘ２Ｄ  ０ｘ４０  ０ｘ００
０ｘ１４  ０ｘ０６  ０ｘＥ９  ０ｘＡ０
０ｘＦＦ  ０ｘＦＦ  ０ｘＦＦ  ０ｘＦＦ
０ｘ７Ｆ  ０ｘ００  ０ｘ００  ０ｘ０１
【００９０】
（１１）差分チェックサム演算部３４７は、まず、Ｌ３ヘッダ２０３のチェックサムフィールド２３５の値Ｈについて、１の補数Ｈ’を演算する。
【００９１】
Ｈ’＝０ｘＦＦＦＦ−Ｈ＝０ｘＦＦＦＦ−０ｘＥ９Ａ０=０ｘ１６５Ｆ
【００９２】
（１２）つぎに、差分チェックサム演算部３４７は、（１１）で求めた１の補数Ｈ’に、Ｌ３ヘッダ２０３の書き換え前のＴＯＳフィールド２３０の値Ｍ０と書き換え後のＴＯＳフィールド２３０の値Ｍ１との２Ｂｙｔｅ毎の差分（Ｍ１−Ｍ０）を加算して、加算値Ｈ”とする。
【００９３】
Ｈ”＝Ｈ’＋（Ｍ１−Ｍ０）＝０ｘ１６５Ｆ＋（０ｘ０３−０ｘ０１）
＝０ｘ１６５Ｆ＋０ｘ０００２＝０ｘ１６６１
【００９４】
（１３）そして、差分チェックサム演算部３４７は、（１２）で求めた加算値Ｈ”の下位２Ｂｙｔｅに対する繰り上がりの加算値Ｈ”’を演算する。
【００９５】
Ｈ”’＝０ｘ１６６１＋０ｘ００００＝０ｘ１６６１
【００９６】
（１４）最後に、差分チェックサム演算部３４７は、（１３）で求めた加算値Ｈ”’の１の補数を求めることで、Ｌ３ヘッダ２０３の書き換え後の差分チェックサムＣ２を演算する。
【００９７】
Ｃ２＝０ｘＦＦＦＦ−Ｈ”’＝０ｘＦＦＦＦ−０ｘ１６６１＝０ｘＥ９９Ｅ
【００９８】
全体チェックサム演算部３５７は、（１４）で演算された差分チェックサムＣ２をチェックサムフィールド２３５に書き込んで、フレームＦを出力する。
【００９９】
差分チェックサム演算は、全体チェックサム演算とは演算処理内容が異なるが、同一のチェックサムを求めることができる。
【０１００】
図５は、Ｌ３ヘッダエラーチェック部３４１がない場合の受信側Ｌ２処理部３２２または送信側Ｌ２処理部３２５による処理手順例を示すフローチャートである。図５では、ＥＣＮ対象判定部３４４から差分チェックサム演算部３４７までの処理の流れについて説明する。
【０１０１】
まず、ＥＣＮ対象判定部３４４がフレームＦを入力し（ステップＳ５０１）、受信フレームＦがＥＣＮ対象か否かを判定する（ステップＳ５０２）。ＥＣＮ対象でない場合（ステップＳ５０２：Ｎｏ）、帯域監視部３４５が受信フレームＦについて帯域監視処理を実行する（ステップＳ５０３）。この場合、確率違反判定は実行されない。そして、ステップＳ５０８に移行する。
【０１０２】
一方、ＥＣＮ対象である場合（ステップＳ５０２：Ｙｅｓ）、帯域監視部３４５が帯域監視処理を実行する（ステップＳ５０４）。この場合、帯域監視部３４５は、確率違反判定を実行する。そして、帯域監視部３４５は、確率違反と判定されたか否かを判定する（ステップＳ５０５）。確率違反と判定されなかった場合（ステップＳ５０５：Ｎｏ）、ステップＳ５０８に移行する。
【０１０３】
一方、確率違反と判定された場合（ステップＳ５０５：Ｙｅｓ）、ＥＣＮマーキング実行部３４６がＥＣＮマーキングを実行し（ステップＳ５０６）、差分チェックサム演算部３４７が、差分チェックサムを演算する（ステップＳ５０７）。このあと、差分チェックサム演算部３４７は、更新されたフレームＦを出力する（ステップＳ５０８）。受信側Ｌ２処理部３２２の場合は、中継処理部３０３に出力され、送信側Ｌ２処理部３２５の場合は、シェーパ部３２７に出力される。
【０１０４】
なお、シェーパ部３２７のキュー制御部４０１、Ｌ２側ＥＣＮ対象判定部４０４またはＬ３側ＥＣＮ対象判定部４０５、ＥＣＮマーキング実行部３４６、および差分チェックサム演算部３４７も、図５と同様な処理を実行する。この場合、ステップＳ５０３〜Ｓ５０５は、キュー制御部４０１が実行する。また、ステップＳ５０８では、キュー制御部４０１が、更新されたフレームＦをキュー４０２に出力する。
【０１０５】
図６は、Ｌ３ヘッダエラーチェック部３４１がある場合の受信側Ｌ２処理部３２２または送信側Ｌ２処理部３２５による処理手順例を示すフローチャートである。まず、Ｌ３ヘッダエラーチェック部３４１は、フレームＦを入力し（ステップＳ６０１）、Ｌ３ヘッダエラーチェックを実行する（ステップＳ６０２）。受信フレームＦにＬ３ヘッダエラーがある場合（ステップＳ６０３：Ｙｅｓ）、Ｌ３ヘッダエラーチェック部３４１は、当該受信フレームＦを廃棄して（ステップＳ６０４）、処理を終了する。
【０１０６】
一方、受信フレームＦにＬ３ヘッダエラーがない場合（ステップＳ６０３：Ｎｏ）、ＦＤＢ３４２判定が実行される（ステップＳ６０５）。そして、Ｌ２フロー検索部３４３が、フレームＦが所属するフローを検索し（ステップＳ６０６）、フレーム処理を実行して（ステップＳ６０７）、処理を終了する。フレーム処理（ステップＳ６０７）とは、図５に示した一連の処理である。
【０１０７】
なお、ステップＳ６０４では、フレームＦを廃棄したが、フレームＦを廃棄せずに透過させて、ステップＳ６０５以降の処理を実行することとしてもよい。このように、エラーフレームを透過させることで、ＦＤＢ３４２学習などのレイヤ２の通信制御を維持することができる。また、このようなフレームＦが外部に出力されても、Ｌ３情報の統計や解析を集約的におこなう中継ポイントにおいて、情報を漏れなく収集することが可能となる。また、中継装置３００にフレームＦを廃棄させるモードとフレームＦを透過させるモードとを用意しておき、ユーザによりいずれか一方のモードに選択的に設定可能としてもよい。
【０１０８】
このように、本実施例によれば、レイヤ３で規定された輻輳通知をレイヤ２で適用することができるため、Ｌ２網６で輻輳が発生した場合も輻輳通知をおこなうことができる。また、差分チェックサムにより、Ｌ３ヘッダ２０３にエラーが含まれている場合でも、エラーを保存することができる。したがって、Ｌ３ヘッダ２０３にエラーがある場合であっても、誤訂正せずに、フレームＦを中継することができる。また、差分チェックサム演算をおこなうため、全体チェックサム演算に比べ、演算負荷の軽減を図ることができる。さらに、輻輳通知に先立って、Ｌ２中継時にＬ３エラーチェックを実行して、エラーがあるフレームＦを廃棄することにより、エラーフレームの誤訂正を未然に抑制することもできる。
【０１０９】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【０１１０】
また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。たとえば、中継装置３００のＬ２中継で、図２のＬ３ヘッダ２０３のＥＣＮフィールド２３１に限らず、Ｌ３ヘッダ２０３の他のフィールドの値を更新し、更新前と更新後のフィールドの値を用いて特徴値を演算し、演算結果を、フレームに追加してもよい。
【０１１１】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、中継装置自身あるいは外部にある不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【符号の説明】
【０１１２】
１  ネットワーク
３００  中継装置
３０１  ＮＩＦ
３０２  ＰＰＵ
３０３  中継処理部
３２１  受信側Ｌ２／Ｌ３選択部
３２２  受信側Ｌ２処理部
３２３  受信側Ｌ３処理部
３２４  送信側Ｌ２／Ｌ３選択部
３２５  送信側Ｌ２処理部
３２６  送信側Ｌ３処理部
３２７  シェーパ部
３４１  Ｌ３ヘッダエラーチェック部
３４４  ＥＣＮ対象判定部
３４５帯域監視部
３４６  ＥＣＮマーキング実行部
３４７  差分チェックサム演算部
３５７  全体チェックサム演算部
４０３  Ｌ２／Ｌ３選択部
４０４  Ｌ２側ＥＣＮ対象判定部
４０５  Ｌ３側ＥＣＮ対象判定部
【図１】
0005887324.tif 000002
【図２】
0005887324.tif 000003
【図３】
0005887324.tif 000004
【図４】
0005887324.tif 000005
【図５】
0005887324.tif 000006
【図６】
0005887324.tif 000007