(57)【要約】【課題】マーカプロトコルによるリンク切替をハードウエア処理によって実行する。【解決手段】送信キューに格納されているパケットをカウントしてパケット計数値とするパケット処理計数カウンタ１８と、パケット計数値が書き込みアドレスとして与えられ、パケットのペイロードを記憶する第１の記憶素子１５と、パケット計数値が書き込みアドレスとして与えられ、パケットの識別要素を記憶する第２の記憶素子１６と、識別要素が書き込みアドレスとして与えられパケット計数値を記憶する第３の記憶素子１７と、を設ける。マーカ応答パケットを受信したときに、そのマーカ応答パケットの識別要素を読み出しアドレスとして第３の記憶素子１７から値を読み出し、読み出された値に該当するアドレスの次のアドレスから第１及び第２の記憶素子１５，１６からの読み出しを実行する。【選択図】　　　図３
2004056736.tif 000002
【特許請求の範囲】
【請求項１】
複数のリンクが接続するネットワークデバイスにおいてマーカプロトコル処理によって前記複数のリンク間でリンク切替を行うリンク切替方法であって、
送信キューに格納されているパケットをパケット処理計数カウントによってカウントする段階と、
前記パケット処理計数カウンタの計数値を書き込みアドレスとして第１の記憶素子に与えて前記パケットの第１の部分を前記第１の記憶素子に記憶させる段階と、
前記パケット処理計数カウンタの計数値を書き込みアドレスとして第２の記憶素子に与えて前記パケットの第２の部分を前記第２の記憶素子に記憶させる段階と、
前記パケットの第２の部分を書き込みアドレスとして第３の記憶素子に与えて前記パケット処理計数カウンタの計数値を前記第３の記憶素子に記憶させる段階と、
マーカ応答パケットを受信したときに、リンクの切り替えを行うとともに、当該マーカ応答パケットの第２の部分を読み出しアドレスとして前記第３の記憶素子から値を読み出し、読み出された値に該当するアドレスの次のアドレスから前記第１及び第２の記憶素子からの読み出しを実行し、前記第１及び第２の記憶素子からの読み出し内容に応じて、切り替え後のリンクに所定のデータを送出する段階と、
を有するリンク切替方法。
【請求項２】
前記所定のデータを送出する段階は、前記第１の記憶素子から読み出される前記第１の部分と前記第２の記憶素子から読み出される前記第２の部分とを組み合わせて前記送信パケットとし、当該送信パケットを送出する段階を含む、請求項１に記載のリンク切替方法。
【請求項３】
前記第１の部分はペイロード部分であり、前記第２の部分は識別要素部分である、請求項１または２に記載のリンク切替方法。
【請求項４】
前記識別要素部分は、少なくともパケットの宛先アドレスに基づいている、請求項３に記載のリンク切替方法。
【請求項５】
通常動作時には前記パケット計数処理カウンタの計数値をそのまま読み出しアドレスとして前記第１及び第２の記憶素子に供給し、前記マーカ応答パケットを受信したときに前記第３の記憶素子から読み出された値を取り込んで１を加算し、加算後の値からカウントアップを行って前記第１及び第２の記憶素子に対する読み出しアドレスとして供給する段階を有する、請求項１乃至４のいずれか１項に記載のリンク切替方法。
【請求項６】
前記カウントアップ中にマーカパケットの送信があった場合に前記カウントアップを停止する請求項５に記載のリンク切替方法。
【請求項７】
前記カウントアップされた値が前記パケット処理計数カウンタの計数値に達した場合に前記通常動作に復帰する、請求項５または６に記載のリンク切替方法。
【請求項８】
前記送信キューに格納されているパケットの属する対話に応じて前記対話ごとに使用リンクを分散させる、請求項１乃至７のいずれか１項に記載のリンク切替方法。
【請求項９】
複数のリンクが接続するネットワークデバイスに設けられ、マーカプロトコル処理によって前記複数のリンク間でリンク切替を行うリンクインターフェースであって、
送信キューに格納されているパケットをカウントするパケット処理計数カウンタと、
前記パケット処理計数カウンタの計数値が書き込みアドレスとして与えられ、前記パケットの第１の部分を記憶する第１の記憶素子と、
前記パケット処理計数カウンタの計数値が書き込みアドレスとして与えられ、前記パケットの第２の部分を記憶する第２の記憶素子と、
前記パケットの第２の部分が書き込みアドレスとして与えられ、前記パケット処理計数カウンタの計数値を記憶する第３の記憶素子と、
リンクの切り替えを行い、選択されたリンクに所定のデータを送出するリンク切替部と、
を有し、
マーカ応答パケットを受信したときに、当該マーカ応答パケットの第２の識別要素部分を読み出しアドレスとして前記第３の記憶素子から値を読み出し、読み出された値に該当するアドレスの次のアドレスから前記第１及び第２の記憶素子からの読み出しを実行し、前記選択されたリンクに前記所定のデータを送出するリンクインターフェース。
【請求項１０】
前記第１の記憶素子から読み出される前記ペイロード部分と前記第２の記憶素子から読み出される識別要素部分とを組み合わせて送信パケットを組み立てるアセンブリ部をさらに有し、前記送信パケットが前記所定のデータとして前記選択されたリンクに送出される、請求項９に記載のリンクインターフェース。
【請求項１１】
前記第１の部分はペイロード部分であり、前記第２の部分は識別要素部分である、請求項９または１０に記載のリンクインターフェース。
【請求項１２】
前記識別要素部分は、少なくともパケットの宛先アドレスに基づいている、請求項１１に記載のリンクインターフェース。
【請求項１３】
前記第１及び第２の記憶素子がいずれもデュアルポートメモリである請求項９乃至１２のいずれか１項に記載のリンクインターフェース。
【請求項１４】
前記第３の記憶素子がデュアルポートメモリである請求項１３に記載のリンクインターフェース。
【請求項１５】
対向デバイスからのパケットを受信する受信バッファと、
前記受信したパケットのうちの前記マーカ応答パケットの識別要素部分を抽出して前記第３の記憶素子の読み出しアドレスとして与えるセグメント部と、
をさらに有する請求項９乃至１４のいずれか１項に記載のリンクインターフェース。
【請求項１６】
前記セグメント部は、前記マーカ応答パケットの受信に応じて前記リンク切替部にリンク切替要求を送る、請求項１５に記載のリンクインターフェース。
【請求項１７】
前記パケット計数処理カウンタの計数値と前記第３の記憶素子から読み出された値が入力し、通常動作時には前記パケット計数処理カウンタの計数値をそのまま出力し、前記マーカ応答パケットを受信したときに前記第３の記憶素子から読み出された値を取り込んで１を加算し、加算後の値からカウントアップを行って前記第１及び第２の記憶素子に対する読み出しアドレスを供給するカウンタをさらに有する、請求項９乃至１６のいずれか１項に記載のリンクインターフェース。
【請求項１８】
前記カウンタは、前記カウントアップ中にマーカパケットの送信があった場合に前記カウントアップを停止する請求項１７に記載のリンクインターフェース。
【請求項１９】
前記カウンタは、前記カウントアップされた値が前記パケット処理計数カウンタの計数値に達した場合に、前記通常動作に復帰する、請求項１７または１８に記載のリンクインターフェース。
【請求項２０】
前記カウンタは、
前記第３の記憶素子から読み出された値に１を加算する加算部と、
前記加算部での加算結果を取り込んで前記マーカ応答パケットの受信があったときにカウントアップを開始するカウント部と、
前記パケット処理計数カウンタの計数値と前記カウント部の計数値とが入力し、通常動作時には前記パケット計数処理カウンタの計数値を出力し、前記マーカ応答パケットの受信があったときに前記カウント部の計数値の出力に切り替わり、前記カウント部の計数値が前記パケット計数処理カウンタの計数値に達したときに前記パケット計数処理カウンタの計数値の出力に復帰する比較・選択部と、
を有する請求項１９に記載のリンクインターフェース。
【請求項２１】
前記送信キューに格納されているパケットの属する対話に応じて対話識別要素が入力し、前記対話識別要素に基づいて対話ごとに使用リンクを分散させる、請求項９乃至２０のいずれか１項に記載のリンクインターフェース。
【請求項２２】
前記対話識別要素に基づいて前記使用リンクを分散させるように前記リンク切替部を制御するリンク制御部をさらに有する請求項２１に記載のリンクインターフェース。
【請求項２３】
第１のネットワークデバイスと、第２のネットワークデバイスと、前記第１及び第２のネットワークデバイス間を接続する複数のリンクとを有し、マーカプロトコル処理によって前記複数のリンク間でリンクの切り替えが行われるシステムにおいて、
前記第１及び第２のネットワークデバイスの少なくとも一方が請求項９乃至２１のいずれか１項に記載のリンクインターフェースを備えることを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークデバイス間のリンクを集約する際に用いられるリンク切替方法及びリンクインターフェースに関し、特に、マーカプロトコルによるリンク切り替えの処理をハードウエアで実現するリンク切替方法及びリンクインターフェースに関する。
【０００２】
【従来の技術】
近年、ネットワークデバイス間を接続する複数のリンクを集約するリンク集約化が注目を浴びている。リンク集約を行うことにより、例えば、大掛かりなハードウエアの更新を行うことなく実効的なリンク容量を増加させることができ、また、障害が発生したリンクを切り離して正常なリンクのみで通信を行えることから、リンクの可用性を高めることができる。
【０００３】
リンク集約の対象となるリンクは、例えば、ＯＳＩ参照モデルでのレイヤ２（データリンク層）のリンクであり、具体的には、いわゆるイーサネット（Ｒ）技術によるリンクである。ＩＥＥＥ８０２．３ａｄでは、同一のデータレートで動作するイーサネット（Ｒ）リンクのリンク集約化が標準化されている。
【０００４】
レイヤ２のリンクでは、一般に、伝送されるフレームやパケットに関しての順序制御は行われないから、例えば同一のアプリケーションに属するフレームやパケットについては、到達順序の逆転などが起こらないようにするために同一のリンクを使用するよう、リンクへのフレームやパケットの分配を制御する必要がある。以下の説明においては、この技術分野における通常の用法に基づいて、配送における順序を維持する必要があるトラフィックの集合のことを「対話」と定義する。同じ対話に属するフレームあるいはパケットは、同一のリンクを使って伝送されることになる。
【０００５】
ところで、動的な負荷分散上の都合や、ネットワークの物理的構成の変更、いずれかのリンクにおいて障害が発生した場合などにおいて、集約化されたリンクの間でリンクの切替を行うことがある。上述したように同一の対話に属するフレームあるいはパケットは、同一のリンクで伝送する必要があるから、任意のタイミングでリンクを切り替えることはできず、通信中の対話の全フレームの伝送の完了を確認してからリンクの切り替えを行う必要がある。そこで、上述のＩＥＥＥ８０２．３ａｄは、マーカプロトコルによるリンク切替を規定している。
【０００６】
マーカプロトコルでは、自デバイスから隣接するデバイスに対してあるリンク上で、送信中の対話の全フレームの伝送が完了したときなどに、ーカパケットを送信し、マーカパケットを受信した隣接デバイスはマーカ応答パケットを送り返すこととしており、マーカ応答パケットを自デバイスで受信した時点でリンクの切替を行うことができる。このとき、新たな切替後のリンク上では、新たな対話の通信をそのリンク上で最初から開始するために、マーカパケットを送信したデバイスでは、マーカパケットを送信した以降のパケットから再送を始める必要がある。
【０００７】
このようなマーカプロトコルによるリンク切替を実現するために、従来は、キュー内の送信するパケットとそれらを一意的に管理するそれぞれのポインタとの関連付けをソフトウエアによって処理していた。例えば、マーカプロトコルによるリンク切替では、マーカパケットのアドレスをポインタによって管理し、受信したパケットがマーカ応答パケットであるかを判別し、マーカ応答パケットである場合には、リンクの切り替えを行うとともに、送信キューにおける次に送信すべきパケットを表わすポインタをマーカパケットのアドレスの次アドレスに書き替え、書き替えられたアドレスからパケットの再送を開始する処理を、全てソフトウエアで行うようになっていた。そのため、この処理は、ネットワークの性能を向上する上でのボトルネックとなることがある。将来的に、ネットワークトラフィックが急増していき、例えば１０ギガビットイーサネット（Ｒ）でリンク集約化をさせようとしたときには、このソフトウエアによる処理性能の限界がネットワーク性能の低下に直接つながることが予想される。
【０００８】
図１は、リンク集約が行われるネットワークの構成の一例を示している。図１において、デバイスＡとデバイスＢは、いずれも、リンク１及びリンク２によって接続されたネットワークデバイスである。ここでリンク１とリンク２は互いに集約化されたリンクである。さらに、デバイスＡには加入ポートとしてリンク３〜リンクＮが設けられており、同様にデバイスＢには加入ポートとしてリンクＮ＋１〜リンクＭが設けられており、これらのリンク３〜リンクＭはいずれも集約化されていないリンクである。
【０００９】
以下、説明のために、ネットワークトラフィックはデバイスＡからデバイスＢへ流れるものとする。リンク１とリンク２は冗長構成のために集約化されており、デバイスＡとデバイスＢを接続する２本のリンクのうち、リンク１はワーク用（現用系）リンクであり、リンク２はプロテクション用（予備系）リンクであるとする。
【００１０】
図２は、このようなデバイスＡにおけるデータパケットの送信を行う部分の構成を示している。リンクインターフェース（データパケット送信部）９３には、パケットキュー管理部９４と、パケットキュー管理部９４とリンク１との間に設けられたインターフェース９７と、パケットキュー管理部９４とリンク２との間に設けられたインターフェース９８とを備えている。インターフェース９７，９８は、物理層でのインターフェース機能を有し、少なくともここではリンクに対する出力機能を有している。パケットキュー管理部９４内には、デバイスＢに対して転送されるべきパケットを一時的に送信すべき順で格納する出力キュー９５と、出力キュー９５内のパケットをリンク１及びリンク２のいずれかに振り分けるためのフレームディストリビュータ９８と、を備えている。図において、ｐｋｔ１〜ｐｋｔ７は、デバイスＢへ転送される出力キュー９５内のパケットを示している。これらのパケットは、フレームディストリビュータ９８によって、それらのパケットを送信するインターフェース９７，９８のいずれかへ振り分けられることになる。また、必要に応じて、出力キュー９５内の適切な位置に、マーカパケットが挿入される。
【００１１】
従来のリンクインターフェースでは、出力キュー９５やフレームディストリビュータ９６での処理や、出力キュー９５に対するポインタ管理は、ソフトウエアによって実現されていた。そのようなソフトウエアでの処理にはそれなりの時間を要するため、ネットワークの性能低下という問題を引き起こしやすい。
【００１２】
【発明が解決しようとする課題】
上述したように、従来、マーカプロトコルによるリンク切替を実行するリンクインターフェースは、従来は、キュー内の送信するパケットとそれらを一意的に管理するそれぞれのポインタとの関連付けをソフトウエアによって処理していた。そのため、この処理は、ネットワークの性能を向上する上でのボトルネックとなることがあり、ネットワークの性能低下の原因となるおそれがある。
【００１３】
今後、ネットワークトラフィックの急増が見込まれ、また、集約化される個々のリンクのデータレートの大きな上昇も見込まれる。リンクインターフェースでの上述した処理をソフトウエアによって実現する場合、その処理は実際にはＣＰＵ（中央処理装置）によって行われることになるが、この処理は、ＣＰＵにとっては比較的重い処理である。ＣＰＵの能力も年々高まっているが、ネットワークトラフィックの増大やリンクのデータレートの上昇ほどにはＣＰＵの能力の向上は見込めないため、リンク集約における性能問題のソフトウエア依存性はますます大きくなると考えられる。
【００１４】
そこで本発明の目的は、マーカプロトコルによるリンク切替をハードウエア処理によって実行することによって処理の高速化を図ったリンク切替方法及びリンクインターフェースを提供することにある。
【００１５】
【課題を解決するための手段】
本発明のリンク切替方法は、複数のリンクが接続するネットワークデバイスにおいてマーカプロトコル処理によって複数のリンク間でリンク切替を行うリンク切替方法であって、送信キューに格納されているパケットをパケット処理計数カウントによってカウントする段階と、パケット処理計数カウンタの計数値を書き込みアドレスとして第１の記憶素子に与えてパケットの第１の部分を第１の記憶素子に記憶させる段階と、パケット処理計数カウンタの計数値を書き込みアドレスとして第２の記憶素子に与えてパケットの第２の部分を第２の記憶素子に記憶させる段階と、パケットの第２の部分を書き込みアドレスとして第３の記憶素子に与えてパケット処理計数カウンタの計数値を第３の記憶素子に記憶させる段階と、マーカ応答パケットを受信したときに、リンクの切り替えを行うとともに、そのマーカ応答パケットの第２の部分を読み出しアドレスとして第３の記憶素子から値を読み出し、読み出された値に該当するアドレスの次のアドレスから第１及び第２の記憶素子からの読み出しを実行し、第１及び第２の記憶素子からの読み出し内容に応じて、切り替え後のリンクに送信パケットを送出する段階と、を有する。
【００１６】
本発明のリンクインターフェースは、複数のリンクが接続するネットワークデバイスに設けられ、マーカプロトコル処理によって複数のリンク間でリンク切替を行うリンクインターフェースであって、送信キューに格納されているパケットをカウントするパケット処理計数カウンタと、パケット処理計数カウンタの計数値が書き込みアドレスとして与えられ、パケットのペイロード部分を記憶する第１の記憶素子と、パケット処理計数カウンタの計数値が書き込みアドレスとして与えられ、パケットの識別要素部分を記憶する第２の記憶素子と、パケットの識別要素部分が書き込みアドレスとして与えられ、パケット処理計数カウンタの計数値を記憶する第３の記憶素子と、第１の記憶素子から読み出されるペイロード部分と第２の記憶素子から読み出される識別要素部分とを組み合わせて送信パケットを組み立てるアセンブリ部と、リンクの切り替えを行い、選択されたリンクに送信パケットを送出するリンク切替部と、を有し、マーカ応答パケットを受信したときに、そのマーカ応答パケットの識別要素部分を読み出しアドレスとして第３の記憶素子から値を読み出し、読み出された値に該当するアドレスの次のアドレスから第１及び第２の記憶素子からの読み出しを実行する。
【００１７】
本発明では、送信キューに格納されているパケットをパケット処理計数カウンタでカウントするとともに、このパケット処理計数カウンタの計数値を書き込みアドレスとして第１及び第２の記憶素子にそれぞれパケットの第１及び第２の部分を記憶させるとともに、パケットの第２の部分を書き込みアドレスとしてパケット処理計数カウンタの計数値を第３の記憶素子に記憶させている。ここで第２の部分とは、典型的には、宛先アドレスなどを含むパケットの識別要素部分であり、第１の部分とは、典型的には、パケットのペイロード部分、すなわちパケットのうち識別要素部分以外の部分である。
【００１８】
マーカプロトコルでは、対向デバイスからマーカ応答パケットを受信した時点で、そのマーカ応答パケットの契機となったマーカパケットの送信時点からのパケットを再送する必要があるが、本発明では、第１及び第２の記憶素子には送信パケットを第１及び第２の部分に分けて格納し、同時に、第３の記憶素子には、パケットの第２の部分をキー（検索鍵）としてパケット処理計数カウンタの計数値が検索できるように、パケットの第２のキーを書き込みアドレスとしてパケット処理計数カウンタの計数値を記憶させる。
【００１９】
一般に、マーカパケットとマーカ応答パケットの第２の部分は同一であるから（これは、マーカプロトコルにおいてマーカパケットとマーカ応答パケットに対し、宛先アドレスとして所定のグローバルに一意なマルチキャストアドレスを用いることになっていることによる）、マーカ応答パケット受信時にその第２の部分を取り出して読み出しアドレスとして第３の記憶素子にアクセスすることにより、第３の記憶素子からは、マーカパケット送出時のパケット処理計数カウンタの計数値が出力される。そこで本発明では、この読み出された計数値をアドレスとしたときにそのアドレスの次のアドレスから、第１及び第２の記憶素子からのデータの読み出しを行っている。その結果、第１及び第２の記憶素子からは、マーカパケットを送信した直後のパケットが読み出されることになり、これらを切り替え後のリンクに送信パケットとして送出することによって、マーカパケットを送信した時点からのパケットの再送が行われることになる。
【００２０】
以上のパケット再送の処理は、パケット計数処理カウンタ、第１乃至第３の記憶素子といったハードウエアだけで実行されている。すなわち、マーカプロトコル処理に伴なうキュー（第１及び第２の記憶素子）のポインタ管理をハードウエアで実現できており、本発明のリンク切替方法では、リンク切替に係る再送処理をハードウエアで実現することができる。
【００２１】
さらに、本発明のリンクインターフェースでは、従来のリンクインターフェースにおけるフレームディストリビュータの代わりに、マーカ応答パケットの受信に応じて切り替わるリンク切替部を使用しており、このリンク切替部の切替動作には、ソフトウエアによる処理の介入が必要ない。結局、本発明のリンクインターフェースでは、上述のリンク切替方法における場合と同様に、リンク切替に係る再送処理をハードウエアで実現することができるともに、リンク切替動作自体もハードウエアで実現することができ、高速処理が可能となり、ネットワークの性能低下を回避できる。
【００２２】
【発明の実施の形態】
次に、本発明の好ましい実施の形態について、図面を参照して説明する。
【００２３】
図３は、本発明の実施の一形態のリンクインターフェース部を構成を示す回路図である。このリンクインターフェース１０は、集約化されたリンクと接続するネットワークデバイスにおいて、集約リンクに対してパケットを一時的に格納（キュー）するとともに送出する機能を有するものである。図２に示した従来の構成におけるパケットキュー管理部９４に対応するものであるが、図３に示したようにハードウエア処理を行うように構成されている点で、図２に示したものと相違している。
【００２４】
ここでのネットワークデバイスとは、典型的にはＯＳＩ参照モデルにおけるレイヤ２の処理を行うものである。このようなネットワークデバイスととしては、例えば、上位装置であるサーバ装置（サーバコンピュータ）内に組み込まれるいわゆるネットワークインターフェースカード（ＮＩＣ）や、レイヤ２でのスイッチを行うスイッチングハブや、ルーターなどにおいて各入出力ポートごとに設けられるレイヤ２のインターフェースなどが挙げられる。
【００２５】
以下の説明では、図１に示した場合と同様に、それぞれネットワークデバイスであって離れた場所に設けられているデバイスＡとデバイスＢとがネットワークによって接続しており、デバイスＡとデバイスＢとの間の２本のリンク（リンク１とリンク２）が集約化されており、本実施形態のリンクインターフェースは、少なくともデバイスＡに搭載されるものとする。すなわち以下では、図１に示すネットワーク構成において、自デバイスがデバイスＡ、対向デバイスがデバイスＢに対応するものとして説明を行う。また、リンク１やリンク２が相互にデータレートが等しいイーサネット（Ｒ）のリンクであるものとする。したがって、リンク上で転送されるパケットには、宛先アドレスや送信元アドレスとして、ＭＡＣ（Ｍｅｄｉａ　Ａｃｃｅｓｓ　Ｃｏｎｔｒｏｌ）アドレスが含まれることになる。このようなパケットは、１つのパケット内に、大別すると、識別要素とペイロードとを含んでおり、後述するアセンブリ部において識別要素とペイロードとを組み合わせることによって組み立てられるものである。識別要素とは、宛先アドレスや送信元アドレスなど、パケット自体を識別し、あるいはネットワークデバイスにおいてパケットの転送を制御するために使用される情報要素である。ペイロードとは、識別要素以外の情報であり、例えば、パケットが転送すべきデータなどである。
【００２６】
リンクインターフェース１０は、出力パケットをリンク１とリンク２のいずれかに出力するリンク切替部１１と、識別要素とペイロードとを組み立ててパケットとしリンク切替部１１に出力するアセンブリ部１２と、このリンクインターフェース１０に与えられるペイロードを一時的に保持する記憶素子ｅ　１５と、このリンクインターフェース１０に与えられる識別要素を一時的に保持する記憶素子ｆ　１６と、パケット処理計数カウンタ１８と、パケット処理計数カウンタ１８の計数値を時間軸上の並びとして保持する記憶素子ｇ　１７と、カウンタ１９とを備えている。リンクインターフェース１０自体を構成するものではないが、リンクインターフェース１０の周辺回路部分として、図３には、対向するネットワークデバイスから受信したパケットを一時的に格納する受信バッファ１３と、受信パケットがマーカ受信パケットである場合にそのマーカ受信パケットのパケットとしての識別要素を取り出すセグメント部１４と、このネットワークデバイス全体のホスト（ＣＰＵ）２０とが描かれている。また、リンクインターフェース１０に対しては、リンク１あるいはリンク２に対して送出するパケットを構成するために、識別要素とペイロードとが、このネットワークデバイスに備えられた送信キュー２５から供給されている。また、リンク１、リンク２に対する物理的なインターフェースとして、リンク切替部１１には物理インターフェース（Ｉ／Ｆ）部２５，２６がそれぞれ接続している。物理インターフェース部２５，２６は、リンクを構成する物理的な信号媒体（ケーブル、光ファイバ）などとのインターフェースとなるものである。
【００２７】
ここで、このリンクインターフェースにおける識別要素について、詳細に説明する。ここでは宛先アドレスなどの識別要素を記憶素子ｇ　１７にアドレスとして与えると説明したが、識別要素として宛先アドレスの全体を使用するものとすると、この宛先アドレスがＭＡＣアドレスであればＭＡＣアドレスは４８ビット長（６オクテット）であることから、識別要素も最低４８ビット長ということになる。リンク集約の実装によっては、宛先アドレスと送信元アドレスの両方を識別要素として使用する場合もあり、その場合は識別要素は９６ビット長となる。このような長いビット長の識別要素を記憶素子におけるアドレスとして使用すると、記憶素子には極めて大きな記憶容量やアドレス空間が必要となり、現実的でない。
【００２８】
このリンクインターフェースでは、以下の説明から明らかになるように、マーカパケットとマーカ応答パケットが同じ識別要素を持つこと、及び、マーカパケットとマーカ応答パケットとが他の種類のパケットとは異なる識別要素を持つことを利用して、リンク切替を行っている。そこで、このリンクインターフェースにおいては、以上のような観点から、リンク集約による使用リンクの分散やリンク切替を行うために最小限必要なものを識別要素とし、それ以外のものペイロードとすることができる。そこで、例えば、連続する“０”の部分を省略するとか、宛先アドレスの下位数ビットと上位数ビットとを組み合わせたものを用いるなどして、記憶素子として現実的な容量の範囲内に収まるように、記憶素子ｇ　１７にアドレスとして与えられる識別要素としては、数ビットから十数ビットとビット長を短くしたものを使用し、宛先アドレスの残りのビットを含めてパケットの他の部分をペイロードとみなすようにする。
【００２９】
このリンクインターフェース１０では、送信すべきパケットについて、ペイロードと識別要素とを分けてそれぞれ記憶素子ｅ　１５と記憶素子ｆ　１６に一時的に記憶させ、これら分離して記憶されたペイロードと識別要素とをアセンブリ部１２において組み合わせて送信パケット（データパケットあるいはマーカパケット）に組み立て、リンク切替部１１を介してリンク１またはリンク２に出力している。すなわち、記憶素子ｅ　１５及び記憶素子ｆ　１６は、リンク切替後のパケット再送信に備えて、リンク上に送出したパケットを一時的に格納するバッファとして機能する。そして、記憶素子ｇ　１７には、パケットの識別要素からその識別要素のパケットがどのタイミングであるいは何番目に送出されたパケットであるかを知ることができるようにするため、識別要素をアドレスとし、パケット処理計数カウンタ１８の計数値をデータとして格納するようにしている。
【００３０】
パケット処理計数カウンタ１８は、送信キュー２５に格納されているパケットがこのリンクインターフェースに送り込まれるたびに１だけカウントアップする動作を行っている。パケット処理計数カウンタ１８の出力すなわち計数値は、記憶素子ｅ　１５や記憶素子ｆ　１６に対して書き込み時のアドレスとして与えられ、また、記憶素子ｇ　１７に対しては格納すべきデータとして与えられる。
【００３１】
リンクインターフェース１０においては高速の処理が要求され、またパケットの入出力や識別要素やペイロードの入力は非同期に発生し得るので、この実施形態のリンクインターフェース１０では、記憶素子１５〜１７としてそれぞれデュアルポート素子（デュアルポートメモリ）を使用している。中でも、記憶素子ｅ１５及び記憶素子ｆ　１６には、デュアルポート素子を用いることが好ましい。図中、Ａとあるのはアドレス入力端子を示し、Ｄとあるのはデータの入力端子または出力端子を示している。記憶素子ｅ　１５の入力側のポートをポートｅ１、出力側のポートをポートｅ２とする。ポートｅ１のアドレスにはパケット処理カウンタ１８の計数値が入力し、データにはペイロードが入力する。ポートｅ２のアドレスにはカウンタ１９の計数値が入力し、データはアセンブリ部１２に出力される。記憶素子ｆ　１６の入力側のポートはポートｆ１であり、出力側のポートはポートｆ２であり、ポートｆ１のアドレスにはパケット処理カウンタ１８の計数値が入力し、データには、記憶素子ｅ　１５に記憶されるペイロードに対応する識別要素（例えば宛先アドレスなど）が入力し、ポートｅ２のアドレスにはカウンタ１９の計数値が入力し、データはアセンブリ部１２に出力される。記憶素子ｇ　１７の入力側のポートはポートｇ１であり、出力側のポートはポートｇ２であり、ポートｇ１のアドレスには識別要素が入力し、データにはパケット処理カウンタ１８の計数値が入力し、ポートｅ２のアドレスにはセグメント部１４から出力されるマーカ応答パケットの識別要素が入力し、データはカウンタ１９に出力される。後述するように、リンク切替ではない通常運転時のパケット送信の場合には、ポートｅ２とポートｆ２のアドレスには、カウンタ１９は、パケット処理計数カウンタ１８の計数値をそのまま透過して出力する。
【００３２】
上述したように受信バッファ１３は、対向するデバイスから送られてくるパケットを受信するバッファであり、もし受信パケットが自デバイス宛のパケットであれば、自デバイス宛パケット処理部へ渡す。また受信したパケットが隣接デバイスからのマーカ応答パケットであれば、セグメント部１４へパケットを渡す。
【００３３】
セグメント部１４は、受信したマーカ応答パケットの識別要素を記憶素子ｇ　１７のポートｇ２のアドレスとして渡す。これによって記憶素子ｇ　１７のポートｇ２から、データとして、自デバイスがマーカパケットを送信したときのパケット計数値を読み出すことができるようになる。これは、マーカプロトコルにおいて、マーカパケットとマーカ応答パケットとでは、宛先アドレス等の識別要素が同じであることによる。ＩＥＥＥ８０２．３ａｄによれば、マーカパケットもマーカ応答パケットも、宛先アドレスとして、グローバルに一意なマルチキャストアドレスである「０１−８０−Ｃ２−００−００−０２」（１６進表示）を持つことになっている。また、セグメント部１４は、マーカ応答パケットを受信した場合、受信した旨の通知をカウンタ１９とホスト２０に対して行うようになっている。これによってホスト２０は、カウンタ１９に対して、ポートｇ２からの出力の値に１を加算したものを取り込むように命令を与える。
【００３４】
次に、カウンタ１９の構成について、図４を用いて説明する。
【００３５】
カウンタ１９は、リンク切替ではない通常運転時には、パケット処理計数カウンタ１８のカウンタ出力値をそのままポートｅ２及びポートｆ２のアドレス端子に出力し、自デバイスが対向デバイスからマーカ応答パケットを受信した時点で、記憶素子ｇ　１７のポートｇ２から、自デバイスがマーカパケットを送信したときのパケット計数値を読み出してこれに１を加算し、加算後の値からカウントアップを開始してそのカウンタ値をポートｅ２及びポートｆ２のアドレス端子に出力するものである。カウンタ１９のカウントアップによるカウンタ値がパケット処理計数カウンタ１８が出力しているカウンタ値と一致した時点で、カウンタ１９は、リンク切替でない通常運転時のモードに復帰し、パケット処理計数カウンタ１８のカウンタ出力値をそのまま出力するように切り替わる。なお、カウンタ１９がポートｅ２及びポートｆ２のアドレスのためにカウントアップを行っている期間中に自デバイスがマーカパケットを送信する場合もありうるが、その場合には、カウンタ１９は、そのカウントアップを停止する。一般に、送信キュー２５からのこのリンクインターフェース１０へのパケット転送速度は、各リンク上でのパケット転送速度より低く抑えられるが、カウンタ１９については、例えば、物理インターフェース部２６，２７におけるフロー制御などにより、リンク上にパケットが送出可能になったら即座にカウントアップを行い、リンク上になるべく早く次のパケットが送出されるようにすることが好ましい。少なくとも、カウンタ１９の計数率（すなわちリンク切替に伴なう再送処理を行っている際のリンク上でのパケット転送速度）は、送信キュー２５からパケットを取り込む際における転送速度よりも大きい必要がある。そうでないと、再送処理のための送信バッファである記憶素子ｅ　１５及び記憶素子ｆ　１６がバッファオーバーフローになってしまう。
【００３６】
このようなカウンタ１９は、マーカ応答パケットの受信をマーカ応答受信ｄ１として通知されたときにカウントアップ動作を行うカウント部２１と、カウント部２１の出力とパケット処理計数カウンタ１８のカウンタ出力値のいずれかを選択してこのカウンタ１９の出力ｉ１とするとともに、カウント部２１でのカウンタ値とパケット処理計数カウンタ１８のカウンタ出力値とを比較する比較・選択部２２と、ホスト２０からの命令ｊ１に応じ、記憶素子ｇ　１７のポートｇ２のデータ出力を取り込んで１を加算し、加算結果をカウンタ部２１に転送する加算部２３と、を有している。
【００３７】
次に、このリンクインターフェース１０の動作について説明する。
【００３８】
まず、自デバイスの送信キュー２５内に格納されているパケットが、１つずつ、このリンクインタフェース１０に送り込まれるものとする。もちろん、通常のＯＳＩレイヤ２のデバイスと同様に適切なフロー制御が行われており、リンクインターフェース１０での処理能力を超えてパケットが流入することはないようになっている。特に、リンク切替に伴うパケット再送を行っている期間中は、送信キューから送り込まれたパケットの送信よりも、リンクインターフェース１０中に格納されているパケットの再送を優先して実行するので、リンクインターフェース１０内でのバッファオーバーフローが発生しないように、リンク上に送出される単位時間あたりのパケット数よりも、リンクインターフェース１０に送り込まれる単位時間あたりのパケット数が小さくなるようにする。
【００３９】
図５は、リンク切替前後でのリンクインターフェース１０の動作を示す図である。ここでは、パケットｐｋｔ１からパケットが順次、リンクインターフェース１０に取り込まれるものとし、３番目のパケットｐｋｔ３がマーカパケット（識別要素が「ｍ」）であるとする。リンク１がワーク用リンクであり、リンク２がプロテクション用リンクであるとして、ここでのリンク切替がリンク１からリンク２への切替であるとする。パケットｐｋｔ１に対するパケット処理計数カウンタ１８の計数値がｎ−２（ということは、マーカパケットに対応するパケット処理計数カウンタ１８の計数値がｎ）であるとする。また、８番目のパケットｐｋｔ８を送信したタイミングでマーカ応答パケットを受信したものとする。
【００４０】
送信キュー２５からのパケットは、それぞれ識別要素と、識別要素以外のペイロード部分とに分けられて与えられ、識別要素は記憶素子ｆ　１６にポートｆ１を介して記憶され、ペイロード部分は記憶素子ｅ　１５にポートｅ１を介して記憶される。この時、ポートｅ１及びポートｆ１のアドレス端子には、パケット処理計数カウンタ１８の計数値が入力するようにする。パケット計数処理カウンタ１８は、送信キュー２５からパケットがリンクインターフェース１０に取り込まれるごとにカウントアップするから、送信キュー２５からパケットが１つ取り込まれると、そのときのパケット処理計数カウンタ１８の計数値をアドレスとして、そのパケットのペイロードが記憶素子ｅに格納され、識別要素が記憶素子ｆに格納される。またこのとき、そのパケットの識別要素が記憶素子ｇ　１７のポートｇ１に書込みアドレスとして与えられて、パケット処理カウンタ１８の計数値が記憶素子ｇに格納される。ここでは、アドレスとデータの関係が、記憶素子ｇ１７のポートｇ１と記憶素子ｆ　１６のポートｆ１では、ちょうど逆転している。また、記憶素子ｅ　１５及び記憶素子ｆ　１６には、各パケット（ペイロード及び識別要素）が時間順に記憶されることになる。
【００４１】
図５では、時間の経過に伴うパケット処理計数カウンタの計数値の変化、各時点で送信キューからリンクウインターフェース１０に取り込まれるパケット、その時点で記憶素子ｅ及び記憶素子ｆに書き込まれるデータ、カウンタ１９の出力値、その時点での記憶素子ｅ及び記憶素子ｆから読み出されるデータ、リンク上に送出されるパケット及び使用リンクが示されている。カウンタ１９の出力値において値の前に「→」が付されているものは、パケット処理計数カウンタ１８の出力値がそのままカウンタ１９の出力値となっていることを示している。各記憶素子ｅ〜ｇとしてデュアルポートメモリを利用しているとしているので、図では、同じタイミングで同じ記憶素子に対して書き込みと読み出しの両方が行われるように示されているが、実際には、書き込みと読み出しのタイミングは多少ずれていてもよい。ここでＳ（ｐｋｔ…）とあるのは、ｐｋｔ…のペイロードを示しており、Ｒ（ｐｋｔ…）とあるのは、ｐｋｔ…の識別要素を示している。パケット処理計数カウンタ１８の計数値は、時間の経過とともにｎ−２から１つずつカウントアップしており、その計数値が書き込みアドレスとして、記憶素子ｅ及び記憶素子ｆに、各パケットのペイロードと識別要素とが書き込まれることが分かる。上述したように記憶素子ｇ　１７においては、各パケットの識別要素が書き込みアドレスとして与えられてパケット処理計数カウンタ１８の計数値が格納されるから、記憶素子ｇ　１７の記憶内容は、９番目のパケットｐｋｔ９を送信キュー２５から受け取った時点では、図６（ａ）に示すようになる。なお、各パケットの識別要素の値は、パケットの入力順とは無関係であるから、アドレス順で見た場合、データであるパケット処理計数カウンタ１８の計数値は、順番には並ばない。ここで、マーカパケットの識別要素ｍをアドレスとして、マーカパケット送信時のパケット処理計数カウンタ１８の計数値ｎが記憶されていることに注意する必要がある。なお、図６（ｂ）は、記憶素子ｅと記憶素子ｆの各アドレスに何が格納されるかを示しており、以下の処理を経た後の最終的な記憶内容を示している。
【００４２】
リンク切替が発生していない段階では、前述したように、ポートｅ１及びポートｆ１側でそれぞれ送信パケットの識別要素とペイロードを記憶するためのアドレスとして、パケット処理計数カウンタ１８のカウント値を使用する。パケット処理計数カウンタ１８のカウンタ値は、カウンタ１９にも入力される。ここではリンク切替がまだ発生していないとしているから、カウンタ１９は通常運転時の動作モードであり、パケット処理計数カウンタ１８のカウンタ値がそのままカウンタ１９の出力ｉ１となる。この出力ｉ１が、記憶素子ｅ　１５のポートｅ２及び記憶素子ｆ　１６のポートｆ２のアドレスとして渡される。したがって、記憶素子ｅ　１５のポートｅ２からは、送信するパケットのペイロードが読み出され、記憶素子ｆ　１６のポートｆ２からは、パケットの識別要素が読み出され、それらがアセンブリ部１２で結合されて１つの送信パケットが生成される。この送信パケットは、リンク切替部１１に転送され、使用するリンク（ここではリンク１）へ転送される。
【００４３】
図５に示すものでは、パケット計数処理カウンタの計数値がｎ−２であるタイミングで、パケットｐｋｔ１が送信キュー２５から読み込まれ、そのペイロードＳ（ｐｋｔ１）と識別要素Ｒ（ｐｋｔ１）がそれぞれ記憶素子ｅと記憶素子ｆのアドレスｎ−２に格納され、このとき、カウンタ１９の出力はパケット計数処理カウンタの計数値であるから、記憶素子ｅと記憶素子ｆからペイロードＳ（ｐｋｔ１）と識別要素Ｒ（ｐｋｔ１）が読み出されて、アセンブリ部１２でパケットｐｋｔ１として組み立てられ、リンク１上に送出される。またこのとき、記憶素子ｇ　１７のアドレスＲ（ｐｋｔ１）にデータとしてｎ−２が書き込まれる。結局、送信キュー２５から読み込まれたパケットｐｋｔ１は、記憶素子ｅ　１５及び記憶素子ｆ　１６のアドレスｎ−２に格納されるものの、実質的にはそのままリンク上に送出されることとなる。次のパケットｐｋｔ２についても同様である。
【００４４】
次に、リンクの切替作業が発生したとする。リンクの切替作業が発生すると、従来の技術で述べたものと同様に、現在使用しているリンクを介し、隣接するネットワークデバイスへマーカパケットを転送する。パケット処理計数カウンタ１８の計数値がｎのときにマーカパケットが送信され、このマーカパケットの識別要素は識別要素ｍである。マーカパケットを送信した場合、カウンタ１９は、陸切替のための後述するポートｅ２及びポートｆ２に対するカウント動作を行っていればそのカウント動作を停止する。カウント動作を行っていない場合には、そのまま、カウント動作を行わないままとする。なお、パケット処理計数カウンタ１８の計数値を出力している場合には、図示するようにそのまま出力を続行してもよい。その結果、マーカ応答パケットを受信するまでに、切替前のリンクであるリンク１上に、パケットｐｋｔ４から数個のパケットが送出される。もっとも、これらのパケットは、隣接デバイス側で破棄されるものであるから、パケット処理計数カウンタ１８の計数値を出力している場合にその出力を停止するようにしてもよい。
【００４５】
図５に示すものでは、パケット計数処理カウンタ１８の計数値ｎのタイミングでマーカパケットが読み込まれ、上述したパケットｐｋｔ１の場合と同様に、このマーカパケットも記憶素子ｅ　１５及び記憶素子ｆ　１６のアドレスｎに格納されるとともに、リンク１上に送出される。また、記憶素子ｇ　１７のアドレスｍ（マーカパケットの識別要素）には、このときのパケット計数処理カウンタ１８の計数値ｎが格納される（図６参照）。マーカパケットの次のパケットであるパケットｐｋｔ４についても、ｐｋｔ１の場合と同様に、記憶素子ｅ　１５及び記憶素子ｆ　１６のアドレスｎ＋１に格納されるとともに、リンク１上に送出される。また、記憶素子ｇ　１７のアドレスＲ（ｐｋｔ４）には、このときのパケット計数処理カウンタ１８の計数値ｎ＋１が格納される。以下、マーカアドレス送信後のパケットが、送信キュー２５から順次読み込まれてリンク１上に送出されるとともに、記憶素子ｅ　１５及び記憶素子ｆ　１６の連続するアドレス領域に順番に格納されていくことになる。
【００４６】
ここで、リンク１がワーク用リンクであり、リンク２がプロテクション用リンクであって、リンク１からリンク２へのリンク切替であるとしているから、マーカパケットは、リンク１を介して隣接デバイス（対向デバイス）に転送されることになる。隣接デバイスは、リンクの切替要求が来たことを認識すると、マーカパケットを送信したデバイスに対し、マーカ応答パケットを返送して、リンク切替要求を認識したことを通知する。ここでは、８番目のパケットｐｋｔを送出した時点（８番目のパケットｐｋｔ８を送信キュー２５から受け取って上述したような各処理が終了した時点）で、マーカ応答パケットは受信バッファ１３で受け付けられ、セグメント部１４へ渡される。もし、受信バッファ１３が受け付けたパケットが通常の自デバイス宛パケットであれば、これは受信バッファ１３から自デバイス宛パケット処理部へと渡される。
【００４７】
マーカ応答パケットは、セグメント部１４において、宛先アドレス等のパケットの識別要素を取り出され、これは記憶素子ｇのポートｇ２のアドレスとなる。マーカプロトコルでは、マーカパケットもマーカ応答パケットも同一の宛先アドレスを有することになっているから、これらのパケットの識別要素も相互に同じであって、上述した識別要素ｍである。なお、マーカパケットもマーカ応答パケットも単一のリンク内だけに転送が制限されるものであるから、通常のパケット配送におけるような宛先の指定は本来不要なものであり、その代わりに、マーカパケットあるいはマーカ応答パケットであることを示す特殊な宛先アドレスが付与されている。
【００４８】
識別要素ｍがアドレスとして記憶素子ｇ　１７のポートｇ２に渡されると、記憶素子ｇ　１７はデュアルポート素子であることから、図６に示したように、ポートｇ２からデータとしてパケットカウント値ｎが読み出される。このパケットカウント値ｎはマーカパケットを送信したときのパケット計数処理カウンタ１８の計数値である。読み出されたカウント値ｎは、カウンタ１９に渡される。また、セグメント部１４は、マーカ応答パケットを受信した際に、マーカ応答の受信の通知をカウンタ１９とホスト２０に対して行う。
【００４９】
カウンタ１９は、セグメント部１４からの通知をマーカ応答受信ｄ１として受け取る。またホスト２０は、カウンタ１９に対して、記憶素子ｇ　１７のポートｇ２の出力ｇ１を取り込んでその値を「＋１」だけインクリメントするように命令する。これをホスト命令ｊ１とする。この命令ｊ１を受けたカウンタｉは、ポートｇ２の出力ｇ１を取り込み、加算部２３によって出力ｇ１に１を加算し、加算後の値すなわち「ｎ＋１」をカウント部２１に転送し、カウント部２１はこの「ｎ＋１」の値からカウントアップしていく。また、マーカ応答受信ｄ１を受け取ったことにより、比較・選択部２２は、パケット処理計数カウンタ１８からの入力をマスクし、カウント部２１での計数値を、カウンタ１９の出力ｉ１とする。この出力ｉ１が記憶素子ｅ　１５のポートｅ２及び記憶素子ｆ　１６のポートｆ２でのアドレスとなる。これらの記憶素子１５，１６は上述したようにデュアルポート素子であり、カウンタ１９の出力ｉ１は「ｎ＋１」から計数されるため、記憶素子ｅ　１５のポートｅ２と記憶素子ｆ　１６のポートｆ２からのデータとして、マーカパケット送信以降のパケットのペイロード及び識別要素がそれぞれ新たに読み出されることになる。これらはアセンブリ部１２（図３参照）で結合され送信パケットとなる。また、マーカ応答パケットを受信した時点で、セグメント部１４からリンク切替部１１へリンク切替の通知が伝達されているから、アセンブリ部１２で生成された送信パケットは、リンク切替部１１での新たな切替後のリンク上に転送される。リンク１からリンク２への切替がなされているのであれば、この送信パケットはリンク２上に転送される。これにより、マーカパケット送信した直後のパケットから、リンク２上に転送されることとなり、対話に支障をきたすことなく、リンク切替が行われたことになる。
【００５０】
なお、カウンタ１９内の比較・選択部２２は、マーカ応答パケットを受信した以降のカウント部２１でのカウンタ値とパケット処理計数カウンタ１８から入力するカウンタ値とを常に比較しており、両者が一致した場合に切り替わり、それ以降は、次にマーカパケットの送信やマーカ応答バケットの受信があるまで、パケット処理計数カウンタ１８から入力するカウンタ値をカウンタ１９の出力ｉ１とする。
【００５１】
図５に示した例では、パケット処理計数カウンタ１８の計数値がｎ＋５のとき、マーカ応答パケットが受信される。すると上述したように、そのマーカ応答パケットの識別要素ｍが記憶素子ｇの読み出しアドレスとして与えられ、その結果、記憶素子ｇからは、マーカパケット送信時の計数値ｎがカウンタ１９に出力される。また、カウンタ１９も切り替わって、ｎ＋１からカウントアップを開始して、そのカウントアップされた値が記憶素子ｅ及び記憶素子ｆに読み出しアドレスとして与えられるようになる。その結果、記憶素子ｅ及び記憶素子ｆに与えられる読み出しアドレスは、ｎ＋５の次がｎ＋１となり、記憶素子ｅ及び記憶素子ｆからは、パケットｐｋｔ４も含めてそれ以降のパケットが順次再出力されることになる。ここで、マーカ応答パケットの受信に応じてリンク切替部１１も切り替わっているから、その結果、パケット処理計数カウンタ１８の計数値ｎ＋１から、対応するパケットのペイロード及び識別要素が記憶素子ｅ及び記憶素子ｆからそれぞれ読み出され、送信パケットに組み立てられて、マーカ応答パケットに応じて切り替わった後のリンクに送出されることになる。その結果、マーカプロトコルによるパケットの再送処理が、ハードウエア構成で実行されたことになる。
【００５２】
パケットの再送処理を開始した時点では、記憶素子ｅ及び記憶素子ｆにおいて、書き込みアドレス（＝パケット処理計数カウンタ１８の計数値）よりも読み出しアドレス（カウンタ１９の出力値）の方が遅れているが、カウンタ１９のカウントアップのクロックはパケット処理計数カウンタ１８のカウントアップのクロック（送信キューからこのリンクインターフェースに入力するパケットの転送速度）よりも速く設定されており、その結果、書き込みアドレスと読み出しアドレスとの差は徐々に小さくなり、ついには書き込みアドレスが読み出しアドレスに追いつくこととなる。その時点でカウンタ１９は通常状態に切り替わって、その後は、カウンタ１９を介してパケット処理計数カウンタ１８の計数値が記憶素子ｅ及び記憶素子ｆに読み出しアドレスとしても供給されるようになる。図５に示した例では、パケット処理計数カウンタ１８の計数値がｎ＋１１のときに、カウンタ１９の計数値もｎ＋１１となって追いつくことから、通常状態に切り替わる。
【００５３】
次に、本発明の別の実施の形態のリンクインターフェースについて説明する。図３に示したリンクインターフェースは、冗長構成のために現用系のリンクと予備系のリンクとを切替えることを目的としたものであったが、ここでは、さらに、対話ごとにリンクを分散させる例を説明する。図７は、対話ごとにリンクを分散する機能を有するリンクインターフェースを示すブロック図である。
【００５４】
図７に示したリンクインターフェースは、図３に示したリンクインターフェースと同様の構成のものであるが、対話ごとにリンクを分散させるために、送信すべき各パケットについて識別要素とペイロードのほかに、対話識別要素が入力する。対話識別要素は、そのパケットがどの対話に属するかを識別するフラグである。リンク切替の技術分野でよく知られているように、あるパケットがどの対話に属するかは、例えば、宛先アドレスが異なっている、あるいは送信元アドレスが異なっている、あるいは、上位レイヤ側で用いるポート番号などが異なっている、などに基づいて判別することができる。ここでは図示していないが、送信キューにおいてそのような判別を行い、その結果、送信キューから各パケットの識別要素、ペイロード及び対話識別要素がこのリンクインターフェースに与えられるようになっている。
【００５５】
さらに、図７に示したリンクインターフェースは、リンク切替部１１と、アセンブリ部１２と、受信バッファ１３と、セグメント部１４と、記憶素子１５〜１７と、パケット処理計数カウンタ１８と、カウンタ１９との他に、個々のアプリケーションの対話パケットごとの対話識別要素と識別要素とによって、対話ごとにリンクを分散させるリンク制御部３１と、パケット処理計数カウンタ１８の計数値を一時的に格納するレジスタ３２とを備えている。リンク制御部３１は、リンク切替部１１を制御し、対話ごとに使用するリンクを分散させる。またレジスタ３２は、マーカ応答パケットを受信したときのパケット処理計数カウンタ１８の値を格納するものであって、ホスト２０からアクセス可能である。ホスト２０は、通常運用時における負荷分散などのためのリンク切替も制御する。
【００５６】
ここで、送信すべきパケットがｐｋｔ１〜ｐｋｔ７までであるとし、ｐｋｔ２とｐｋｔ４、ｐｋｔ３とｐｋｔ６、ｐｋｔ５とｐｋｔ７はそれぞれ同じ対話に属するパケットであるとする。また、ネットワークの通常運用時には、ｐｋｔ１をリンク１、ｐｋｔ２とｐｋｔ４及びｐｋｔ３とｐｋｔ６をリンク２、ｐｋｔ５とｐｋｔ７をリンク１上に分散させるとする。自デバイスがデバイスＡであり、対向デバイスがデバイスＢであるとする。その結果、通常運用時におけるパケットの転送は、図８に示すようになる。デバイスＡには、図７に示したリンクインターフェースが装備されているとする。
【００５７】
ここで、トラフィックの負荷分散のためｐｋｔ３とｐｋｔ６に属する対話をリンク２からリンク１へ移動させるとすると、図２に示した場合と同様に、ｐｋｔ３の後にマーカパケットを送信する準備を行う。図９は、このときのパケット転送を示している。マーカパケットは、リンク２上で、ｐｋｔ３の直後にデバイスＡからデバイスＢへ転送され、これによりデバイスＡは、ｐｋｔ３とｐｋｔ６に属する対話をリンク１へ移動する要求を行う。マーカパケットを認識したデバイスＢは、マーカ応答パケットをリンク２上でデバイスＢからデバイスＡへ転送し、ｐｋｔ３とｐｋｔ６に属する対話をリンク１へ移動する要求を認識したことを通知する。このとき、ｐｋｔ４はリンクの移動対象外であるため、前述したデバイスＡのリンク制御部３１とリンク切替部１１によって、リンク２上に送信される。
【００５８】
デバイスＡのリンクインターフェース（図７参照）では、受信バッファ１３においてマーカ応答パケットを受信すると、セグメント部１４においてマーカ応答パケットの識別要素が取り出され、これが記憶素子ｇ　１７のポートｇ２のアドレスとして入力する。記憶素子ｇ　１７には、図３に示したリンクインターフェースと同様に、パケット処理計数カウンタ１８のカウント値がデータとして格納されており、特に、マーカパケットの識別要素に対応するアドレスには、そのマーカパケットを送信したときのパケット処理計数カウンタ１８のカウント値が記憶されているため、マーカパケットとマーカ応答パケットの識別要素が同じであることから、記憶素子ｇ　１７からは、マーカパケット送信時のパケット計数処理カウンタ１８の計数値が読み出されることになる。読み出された値（マーカパケット送信時のカウント値）は、カウンタ１９に送られ、カウンタ１９は、マーカ応答受信の通知に基づいて、この送られた値に１を加算した値からカウントアップを行い、カウントアップされた値が、順次、記憶素子ｅ　１５のポートｅ２及び記憶素子ｆ　１６のポートｆ２のアドレスとして入力する。これらの記憶素子１５，１６は、デバイスＡがマーカパケットを送信した時点及び以降のパケットのペイロード及び識別要素を記憶しているため、マーカパケットの送信の直後からのパケットのペイロード及び識別要素が記憶素子ｅ　１５のポートｅ２及び記憶素子ｆ　１６のポートｆ２から読み出され、これらはアセンブリ部１２において送信パケットとして組み立てられる。そして、マーカパケットを送信した直後のパケットから、リンク制御部３１とリンク切替部１１によって、対話ごとに切替後のリンクへの転送が開始される。前述の例だと、ｐｋｔ６は新たにリンク１から転送される。図１０はこの様子を示している。
【００５９】
図１１は、ここでのパケット処理計数カウンタ１８及びカウンタ１９の動作を説明する図である。この実施の形態のリンクインターフェースにおいても、基本的な動作は図６を用いて示したものと同様であるが、対話の移動を行うために、細部の動作が異なっている。図１１においては、記憶素子ｅ及び記憶素子ｆの記憶内容がアドレスごとに１つにまとめられて、「マーカパケット」やｐｋｔ４〜ｐｋｔ２１としてまとめて示されている。
【００６０】
ここで、マーカパケットは、パケット処理計数カウンタ１８の計数値がＮのときに送信され、マーカ応答パケットを受信したときのパケット処理計数カウンタ１８の計数値はＮ＋１２であるとする。上述したように、マーカ応答パケットを受信したときのパケット処理計数カウンタ１８の計数値（この例の場合はＮ＋１２）は、レジスタ３２に格納される。マーカ応答パケットを受信したことによって、記憶素子ｇ　１７からカウント値Ｎが読み出され、カウンタ１９はホスト２０からの命令を受けてカウンタ値Ｎに１を加算した値（Ｎ＋１）から計数を再開する。このＮ＋１は、マーカパケットを送信した直後のパケットであるｐｋｔ４に対応するものである。このときｐｋｔ３やｐｋｔ６と同じ対話に属するパケットを、ｐｋｔ８、ｐｋｔ９、ｐｋｔ１４、ｐｋｔ１５とすると、これらのパケットは、新たな切替後のリンク１上で送信される。その他のパケットであるｐｋｔ４、ｐｋｔ５、ｐｋｔ７、ｐｋｔ１０〜ｐｋｔ１３は、リンク切替の対象外であるため再送の必要はない。これは、セグメント部１４からのマーカ応答パケット受信通知をリンク切替部１１に渡すとともに、ホスト２０からリンク切替部１１に対して、マーカプロトコルにしたがって再送処理を行うべき対話についてその対話に対応する識別情報を指定し、リンク切替部１１において、指定された識別情報にもとづいてパケットをフィルタリングすることにより、その対話のパケットだけをリンクに送出することによって行われる。すなわち、記憶素子ｅ及び記憶素子ｆからは、図６において説明したようにマーカパケット送出時点以降のパケットが、再送の必要性の有無に関わらず読み出されるが、リンク切替部１１は、再送の必要のないパケットは破棄することになる。
【００６１】
カウンタ１９の計数値がレジスタ３２に格納された値（この例ではＮ＋１２）に達するまでは、リンク移動する対話に属するパケットについてのみリンクを開放するが、パケット処理計数カウンタ１８におけるこれ以降のカウント値に対応するパケットについては、通常動作、すなわち、リンク切替により改めて対話ごとに集約されたリンク上で、パケット転送を行う。このときホスト２０は、カウンタ１９からの出力値がレジスタ３２に格納された値に達したことを検出すると、リンク切替部１１に対し、上述したパケットを破棄する処理を止めるように指示する。ここでは、カウンタ１９からの出力値がレジスタ３２に格納された値に達したことをホスト２０が検出するとしたが、ホスト２０とは別のハードウエアを設けて、そのハードウエアからの指示でリンク切替部１１がパケットの破棄を止めるようにしてもよい。
【００６２】
したがって、この実施の形態によれば、ネットワークトラフィックの負荷を分散させるために対話ごとにリンクを切り替えるときであっても、リンクの切替後における対話ごとの伝送パケットの並びの順序を維持でき、対向デバイス側で廃棄されるパケットをなくすことができる。
【００６３】
以上、本発明の好ましい実施形態について、リンクインターフェースを有する自デバイス（図１におけるデバイスＡ）と対向デバイス（図１におけるデバイスＢ）とが２本のリンクで接続され、これらのリンクがリンク集約あるいはリンク切替の対象となる場合を例に挙げて説明したが、本発明の適用範囲はこれに限定されるものではない。自デバイスと対向デバイスとの間のリンク集約の対象となるリンクの数は、３以上であってもよい。また、図１では自デバイス（デバイスＡ）と対向デバイス（デバイスＢ）とがリンク１やリンク２によって直接接続されているように描かれているが、マーカプロトコルの処理が行える限り、自デバイスと対向デバイスとの間にブリッジやルータ、スイッチなどの他のネットワーク要素が介在していてもよい。もちろん、集約化されたリンクの両端に位置する２つのネットワークデバイスの両方が、ここで述べたリンクインターフェースを備えるようにしてもよい。
【００６４】
【発明の効果】
以上説明したように本発明では、ネットワークデバイス内でリンク上にパケットを送信するリンクインターフェースに、宛先アドレスなどパケットを識別する識別要素を格納する記憶素子とパケットのペイロードを格納する記憶素子と、送信パケットを計数、管理するカウンタ回路と、受信したマーカ応答パケットの識別要素からマーカパケットを送信したときのパケット計数の値を参照できる記憶素子とを用いることにより、送信キュー内でマーカパケットの直後に格納されていたパケットから順番に切替後のリンクによって送信できるようになる。したがって、本発明によれば、リンク切替の処理をハードウエアで高速処理することができるようになるという効果がある。
【図面の簡単な説明】
【図１】ネットワーク構成の一例を示す図である。
【図２】ネットワークデバイスにおける従来のリンクインターフェースの構成を示すブロック図である。
【図３】本発明の実施の一形態のリンクインターフェースの構成を示すブロック図である。
【図４】カウンタの構成を示すブロック図である。
【図５】図３に示すリンクインターフェースの動作を説明する図である。
【図６】記憶素子ｇの記憶内容を説明する図である。
【図７】本発明の別の実施の形態のリンクインターフェースの構成を示すブロック図である。
【図８】パケット転送を説明する図である。
【図９】パケット転送を説明する図である。
【図１０】パケット転送を説明する図である。
【図１１】パケット処理計数カウンタ及びカウンタの動作を説明する図である。
【符号の説明】
１０　　リンクインターフェース
１１　　リンク切替部
１２　　アセンブリ部
１３　　受信バッファ
１４　　セグメント部
１５　　記憶素子ｅ
１６　　記憶素子ｆ
１７　　記憶素子ｇ
１８　　パケット処理計数カウンタ
１９　　カウンタ
２０　　ホスト
２１　　カウント部
２２　　比較・選択部
２３　　加算部
２５　　送信キュー
３１　　リンク制御部
３２　　バッファ
【図１】
2004056736.tif 000003
【図２】
2004056736.tif 000004
【図３】
2004056736.tif 000005
【図４】
2004056736.tif 000006
【図５】
2004056736.tif 000007
【図６】
2004056736.tif 000008
【図７】
2004056736.tif 000009
【図８】
2004056736.tif 000010
【図９】
2004056736.tif 000011
【図１０】
2004056736.tif 000012
【図１１】
2004056736.tif 000013