(57)【特許請求の範囲】
【請求項１】
キャッシュと転送部と制御部とを備えたパケット転送装置であって、
前記キャッシュはフォワーディング情報を記憶し、
前記転送部は前記フォワーディング情報を参照して受信したパケットの転送先の決定を試み、該パケットの転送先を決定することができたか否かに関わらず該パケットを前記制御部へ送信し、該パケットの転送先を決定することができなかった場合には前記制御部に該パケットの転送先の決定を依頼し、
前記制御部は前記転送部からパケットを受信し、前記転送部から該パケットの転送先の決定を依頼された場合には該パケットの転送先を決定し、該転送先へ該パケットを送信した後に該転送先をフォワーディング情報として前記キャッシュに記憶させ、それ以外の場合には前記転送部によって決定された転送先へ該パケットを送信する、パケット転送装置。
【請求項２】
前記転送部は、パケットの転送先を決定することができたか否かを示すフラグを該パケットの内部ヘッダへ追加し、
前記制御部は、前記フラグを参照して前記パケットの転送先を決定する必要があるか否かを判定する、請求項１に記載のパケット転送装置。
【請求項３】
請求項１又は２に記載のパケット転送装置を備えるルータ。
【請求項４】
転送部がパケットを受信する工程と、
前記転送部がキャッシュに記憶されたフォワーディング情報を参照して前記パケットの転送先の決定を試みる工程と、を含み、
前記転送部が前記パケットの転送先を決定することができた場合には、前記転送部が前記パケットを制御部へ送信する工程と、
前記制御部が前記転送部によって決定された転送先へ前記パケットを送信する工程と、を含み、
前記転送部が前記パケットの転送先を決定することができなかった場合には、前記転送部が前記パケットを前記制御部へ送信するとともに前記制御部に前記パケットの転送先の決定を依頼する工程と、
前記制御部が前記パケットの転送先を決定し、該転送先へ前記パケットを送信した後に該転送先をフォワーディング情報として前記キャッシュに記憶させる工程と、を含むパケット転送方法。
【請求項５】
前記転送部が前記パケットの転送先を決定することができたか否かを示すフラグを前記パケットの内部ヘッダへ追加する工程と、
前記制御部が前記フラグを参照して該パケットの転送先を決定する必要があるか否かを判定する工程と、を含む、請求項４に記載のパケット転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット転送装置及び転送方法に関し、特に、パケットの順序を転送の前後において保持するパケット転送装置及び転送方法に関する。
【背景技術】
【０００２】
パケットの転送を行うルータは、正しい宛先へパケットを転送することを目的とする。しかし、近年、ルータによって処理されるパケットには、文字や静止画等のデータのみならず、リアルタイム性が必要とされる音声や動画等のストリーミングデータが多く含まれる。ルータは、ストリーミングデータのパケットを到着した順番に処理し、転送する必要がある。パケットの順序が逆転した場合、リアルタイム性が要求されるストリーミングにおいて、パケットのロスが生じるとともに、再生エラーが発生するからである。
【０００３】
転送部と制御部とが分離されたアーキテクチャに基づくパケット転送装置を備えたフロールータは、到着したパケットを、それぞれ個別のパケット処理時間と個別の処理経路とによって処理する。したがって、かかる処理において、パケットの順序の逆転（すなわち、パケットの追い越し）が生じうる。
【０００４】
図６は、転送部と制御部が分離されたアーキテクチャに基づく従来のパケット転送装置のブロック図である。図６において、ルータ内部のパケット転送装置１１０は、転送部１１１、制御部１１２及びキャッシュ１１３を備える。
【０００５】
制御部１１２は、最初に到着した（先頭）パケットの転送先を決定するために、パケットヘッダの宛先ＩＰアドレスを参照して、パケットの転送先のネクストホップ及び出力インタフェースを計算し、パケットを転送する。このとき、制御部１１２は、主記憶装置（非図示）に格納されたフォワーディング情報を参照して検索を行うため、長い検索時間を必要とする。また、制御部１１２は、計算したネクストホップ及び出力インタフェースを、フォワーディング情報として、キャッシュ１１３のフォワーディングテーブルへ登録する。
【０００６】
キャッシュ１１３は、記録用の高速メモリであって、登録されたフォワーディング情報を一時的に記憶（保持）する。
【０００７】
転送部１１１は、到着したパケットのパケットヘッダの宛先ＩＰアドレスを参照するとともに、キャッシュ１１３に記憶されているフォワーディングテーブルを参照し、所望のフォワーディング情報が記憶されている場合には、短時間かつ高速に転送先を決定し、パケットを転送する。
【０００８】
全てのパケットの転送先のフォワーディング情報を計算するのではなく、キャッシュ１１３に保存されたフォワーディング情報を利用することによって、転送部１１１は短時間でパケットの転送先を判断することができ、高速にパケットを転送することができる。
【０００９】
なお、特許文献１において、パケットのフォワーディング性能を向上させつつ、装置内におけるパケット転送の負荷を軽減させたネットワーク中継装置が開示されている。
【００１０】
【特許文献１】特開２００１−０９４５６８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
以下の分析は、本発明者によってなされたものである。図６に示すように、転送部１１１と制御部１１２とが分離したパケット転送装置１１０では、宛先のネクストホップ及び出力インタフェースへパケットを転送する場合、次のような問題が生じる。
【００１２】
キャッシュ１１３にフォワーディング情報がまだ登録されていない最初の（先頭）パケットが転送部１１１に到着した場合、転送部１１１はパケットヘッダの宛先ＩＰアドレス情報に基づいて、キャッシュ１１３に保存されているフォワーディングテーブルを参照する。しかし、最初のパケットであるため、キャッシュ１１３にフォワーディング情報（ネクストホップ及び出力インタフェース）がまだ登録されていないため、転送部１１１は制御部１１２へパケットを転送する。制御部１１２はパケットヘッダの宛先ＩＰアドレスを利用し、パケットの転送先のネクストホップ及び出力インタフェースを計算し、パケットを転送する。制御部１１２は計算したフォワーディング情報をキャッシュ１１３のフォワーディングテーブルに登録する。
【００１３】
キャッシュ１１３にフォワーディング情報が登録された後においては、同じフローに含まれるパケットに関し、転送部１１１はキャッシュ１１３のフォワーディングテーブルを参照することによって転送先を決定し、転送処理を行うことができる。
【００１４】
このとき、制御部１１２によって長い時間を要して転送先を検索（計算）して転送される先頭パケットと、転送部１１１によってキャッシュ１１３に登録されたフォワーディング情報に基づいて短時間で転送される後続パケットとの間では処理の経路及び処理の時間が異なる。したがって、これらのパケットの間で転送前後においてパケットの順序が逆転するという問題がある。なお、特許文献１に開示されたネットワーク中継装置においても、同様の問題が生じる。
【００１５】
そこで、パケット転送の前後におけるパケットの順序を保持するパケット転送装置、方法等を提供することが課題となる。
【課題を解決するための手段】
【００１６】
本発明の第１の視点に係るパケット転送装置は、
キャッシュと転送部と制御部とを備えたパケット転送装置であって、
前記キャッシュはフォワーディング情報を記憶し、
前記転送部は前記フォワーディング情報を参照して受信したパケットの転送先の決定を試み、該パケットの転送先を決定することができたか否かに関わらず該パケットを前記制御部へ送信し、該パケットの転送先を決定することができなかった場合には前記制御部に該パケットの転送先の決定を依頼し、
前記制御部は前記転送部からパケットを受信し、前記転送部から該パケットの転送先の決定を依頼された場合には該パケットの転送先を決定し、該転送先へ該パケットを送信した後に該転送先をフォワーディング情報として前記キャッシュに記憶させ、それ以外の場合には前記転送部によって決定された転送先へ該パケットを送信する。
【００１７】
本発明の第１の展開形態のパケット転送装置は、
前記転送部は、パケットの転送先を決定することができたか否かを示すフラグを該パケットの内部ヘッダへ追加するように構成され、
前記制御部は、前記フラグを参照して前記パケットの転送先を決定する必要があるか否かを判定するように構成されることが好ましい。
【００１８】
本発明の第２の展開形態のルータは、上記のパケット転送装置を備えることが好ましい。
【００１９】
本発明の第２の視点に係るパケット転送方法は、
転送部がパケットを受信する工程と、
前記転送部がキャッシュに記憶されたフォワーディング情報を参照して前記パケットの転送先の決定を試みる工程と、を含み、
前記転送部が前記パケットの転送先を決定することができた場合には、前記転送部が前記パケットを制御部へ送信する工程と、
前記制御部が前記転送部によって決定された転送先へ前記パケットを送信する工程と、を含み、
前記転送部が前記パケットの転送先を決定することができなかった場合には、前記転送部が前記パケットを前記制御部へ送信するとともに前記制御部に前記パケットの転送先の決定を依頼する工程と、
前記制御部が前記パケットの転送先を決定し、該転送先へ前記パケットを送信した後に該転送先をフォワーディング情報として前記キャッシュに記憶させる工程と、を含む。
【００２０】
本発明の第３の展開形態のパケット転送方法は、
前記転送部が前記パケットの転送先を決定することができたか否かを示すフラグを前記パケットの内部ヘッダへ追加する工程と、
前記制御部が前記フラグを参照して該パケットの転送先を決定する必要があるか否かを判定する工程と、を含むことが好ましい。
【発明の効果】
【００２１】
本発明のパケット転送装置によって、パケット転送の前後におけるパケットの順序を保持することができる。転送部は、キャッシュに記憶されたフォワーディング情報に基づいてパケットの転送先を決定することができたか否かに関わらず、パケットを制御部に送信するため、同じフローに含まれる全てのパケットは転送部と制御部とによって逐次処理されるからである。
【００２２】
さらに、本発明の転送装置によって、高速にパケットの転送を行うことができる。制御部は転送部によって、パケットに挿入されたフラグを参照して、パケットの転送先を自身が決定する必要があるか否かを判定することができるからである。
【発明を実施するための最良の形態】
【００２３】
本発明の実施形態に係るパケット転送装置について図面を参照して説明する。図１は、本実施形態のパケット転送装置の構成を示すブロック図である。図１を参照すると、パケット転送装置１０は、転送部１１と制御部１２とキャッシュ１３とを備える。
【００２４】
キャッシュ１３はフォワーディング情報を記憶する。転送部１１はフォワーディング情報を参照して受信したパケットの転送先の決定を試み、パケットの転送先を決定することができたか否かに関わらずパケットを制御部１２へ送信し、パケットの転送先を決定することができなかった場合には制御部１２にパケットの転送先の決定を依頼する。
【００２５】
制御部１２は転送部１１からパケットを受信し、転送部１１からパケットの転送先の決定を依頼された場合にはパケットの転送先を決定し、その転送先へパケットを送信するとともにその転送先をフォワーディング情報としてキャッシュ１３へ登録し、それ以外の場合には転送部１１によって決定された転送先へパケットを送信する。
【００２６】
また、転送部１１は、パケットの転送先を決定することができたか否かを示すフラグをパケットの内部ヘッダへ追加し、制御部１２は、フラグを参照してパケットの転送先を決定する必要があるか否かを判定することが好ましい。
【００２７】
さらに、ルータにおいて、上記パケット転送装置を備えることが好ましい。
【実施例１】
【００２８】
本発明の第１の実施例に係るパケット転送装置について、図面を参照して説明する。図２はルータの内部に備えたパケット転送装置に格納されたレイヤー３・フォワーディングテーブルの一例を示す。パケットを転送する際、ルータの内部に備えたパケット転送装置は、宛先のＩＰアドレスに基づいて、ネクストホップＩＰアドレス（ネクストホップ）を計算し、ネクストホップへの出力インタフェースを決定する。また、パケット転送装置は、フォワーディングテーブルを検索し、検索結果のネクストホップ及び出力インタフェースへパケット送信する。
【００２９】
図３は本実施形態に係るパケット転送装置のブロック図である。パケット転送装置２０は、転送部２１と制御部２２とキャッシュ２３とを備える。パケット転送装置２０は、キャッシュ２３に一時的に保存しているフォワーディング情報に基づいて、入力インタフェース３０から入力したパケットを処理し、宛先の出力インタフェース４０へ出力する。
【００３０】
転送部２１は、全てのパケットについて、キャッシュ２３に保存しているフォワーディングテーブルを参照し、宛先アドレスに相当するフォワーディング情報（ネクストホップ及び出力インタフェース）が含まれるか否かを判定する。
【００３１】
キャッシュ２３にフォワーディング情報が含まれない場合には、転送部２１から制御部２２へ転送先のネクストホップ及び出力インタフェースの計算を依頼する。制御部２２は、パケットヘッダに含まれるＩＰアドレスに基づいて、主記憶装置５０上に格納されたフォワーディングテーブルを検索する。制御部２２は、検索したフォワーディング情報に基づいてパケットを送信する。
【００３２】
一方、キャッシュ２３にフォワーディング情報が存在する場合、転送部２１は、そのフォワーディング情報に基づいて、転送先のネクストホップ及び出力インタフェースを短時間で決定することができる。この場合にも、パケットは転送部２１から制御部２２へ転送されるものの、制御部２２はパケットの転送先を計算することなく、パケットを送信する。
【００３３】
以上のように、本実施形態に係るパケット転送装置２０においては、転送部２１と制御部２２とによるパイプライン処理に基づいてパケット転送が行われる。すなわち、同じフローのパケットは、順次転送先が決定されて送信されるため、パケットの順序が逆転することはない。
【実施例２】
【００３４】
本発明の第２の実施例に係るパケット転送装置について図面を参照して説明する。図３は、ルータ内部におけるパケット転送装置２０を示す。転送部２１は、短時間で転送先を決定し、高速にパケット転送を行う。制御部２２は、主記憶装置５０に格納されたフォワーディング情報を最長一致検索（Ｌｏｎｇｅｓｔ  Ｐｒｅｆｉｘ  Ｍａｔｃｈ、ＬＰＭ）し、転送先を決定してパケットを転送する。キャッシュ２３は高速メモリであって、制御部２２によって検索されたフォワーディング情報を格納する。転送部２１はキャッシュ２３に登録されたフォワーディング情報を参照する。
【００３５】
図４は、転送部２１によって作成された内部ヘッダの詳細を示す。転送部２１は、内部ヘッダ“１”を追加し、制御部２２へ転送する。制御部２２は、内部ヘッダが“１”である場合には、宛先のネクストホップ及び出力インタフェースの計算を転送部２１から依頼されたものと判断する。一方、転送部２１が内部ヘッダ“０”を追加した場合には、制御部２２は、宛先のネクストホップ及び出力インタフェースの計算が不要であるものと判断する。この場合には、パケットは制御部２２を単に通過するのみである。
【００３６】
最初のパケットが入力された場合、本実施例のパケット転送装置２０における転送部２１は、ネクストホップへの出力インタフェースを決定するため、パケットヘッダの宛先のＩＰアドレスと、キャッシュ２３に格納されたフォワーディングテーブルと、を参照する。しかし、最初のパケットであるため、キャッシュ２３には、フォワーディング情報がまだ保存されていない。転送部２１は、パケットの転送の宛先が未決定であるため、パケットの内部ヘッダに“１”を追加し、制御部２２に対して宛先のネクストホップ及び出力インタフェースの計算を依頼する。
【００３７】
制御部２２は、内部ヘッダにおける識別子“１”を参照し、自身が処理を依頼されたものと判断する。このとき、制御部２２は、パケットヘッダに含まれる宛先のＩＰアドレスに基づいて、パケットの転送先を計算し、宛先のネクストホップ及び出力インタフェースを決定することによって、パケットを転送する。さらに、制御部２２は、計算したネクストホップ及び出力インタフェースをフォワーディング情報としてキャッシュ２３へ登録する。
【００３８】
フォワーディング情報の登録後において、同じフローに含まれる後続のパケットを転送する場合には、転送部２１は、キャッシュ２３に登録されたフォワーディング情報を検索し、検索がヒットしたネクストホップ及び出力インタフェースに基づいてパケットを転送する。また、フォワーディング情報の登録後において、転送部２１は、内部ヘッダへ識別子“０”を追加し、制御部２２へ転送する。制御部２２は、内部ヘッダの識別子“０”を参照し、転送先の計算が必要でないものと判断し、パケットを通過させる。
【００３９】
このように、本実施例においては、フロー内に含まれるパケット毎に、転送部２１と制御部２２とによってパイプライン処理が行われるため、パケットの順序を維持することができる。また、最初に到着した先頭のパケットのみを制御部２２によって処理し、その後に到着した後続のパケットは転送部２１によって高速に処理するため、パケットの順序を維持しつつ、高速なパケット転送を実現することができる。
【００４０】
次に、本実施例のパケット転送装置の動作について図面を参照して説明する。図５は、本実施例のパケット転送装置の動作のフローチャートである。
【００４１】
図３及び図５を参照すると、パケット転送装置２０の転送部２１は、入力インタフェース３０からパケットデータを受信する（ステップＳ１１）。転送部２１は、パケットのレイヤー３ヘッダ（又はレイヤー２ヘッダ）の情報を抽出する（ステップＳ１２）。転送部２１は、レイヤー３ヘッダに含まれる宛先ＩＰアドレス（又はレイヤー２ヘッダに含まれる宛先ＭＡＣアドレス）の情報と、キャッシュ２３に一時保存しているフォワーディングテーブルとを参照し、転送先のネクストホップ及び出力インタフェースを決定する。
【００４２】
キャッシュ２３のフォワーディングテーブルにパケットの転送先の情報が未登録である場合、キャッシュ２３はヒットしないものと判定される（ステップＳ１３のＮｏ）。この場合、転送部２１は、パケットの内部ヘッダへ“１”を追加し（ステップＳ１４）、制御部２２へのネクストホップ及び出力インタフェースの計算を依頼する。制御部２２は、レイヤー３の宛先ＩＰアドレス情報を利用し、ネクストホップ及び出力インタフェースを計算し（すなわちＬ３ヘッダの解析を行い）（ステップＳ１７）、出力インタフェースへパケットを転送する（ステップＳ１８）。また、制御部２２は、計算したフォワーディング情報をキャッシュ２３へ登録する。
【００４３】
登録後において、転送部２１が同じフローに含まれる後続のパケット群に対してキャッシュ２３のフォワーディング情報を参照した場合、キャッシュ２３に登録されているフォワーディング情報にヒットする（ステップＳ１３のＹｅｓ）。したがって、転送部２１は、ヒットしたフォワーディング情報に基づいて、後続のパケット群に対するネクストホップ及び出力インタフェースを決定することができる。キャッシュ２３に登録されたフォワーディング情報を利用することができる場合、転送部２１は、パケットの内部ヘッダへ“０”を追加し（ステップＳ１５）、制御部２２へ転送する。制御部２２は、内部ヘッダにおける“０”の識別子を参照し、パケットの転送先の計算を行うことなく（すなわちＬ３ヘッダの解析を行うことなく）（ステップＳ１６）、転送部２１によるフォワーディング情報を利用し、そのネクストホップ及び出力インタフェースの情報に基づいてパケットを送信する（ステップＳ１８）。
【００４４】
以上の記載は実施例に基づいて行ったが、本発明は、上記実施例に限定されるものではない。
【産業上の利用可能性】
【００４５】
パケットの順序を維持する必要があるストリームデータなどのパケットの転送処理を司るルータにおいて、本発明のパケット転送装置を用いることができる。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態に係るパケット転送装置のブロック図である。
【図２】キャッシュに格納されたフォワーディングテーブルを示す。
【図３】本発明の第１及び第２の実施例に係るパケット転送装置のブロック図である。
【図４】本発明の第２の実施例におけるパケットのデータフォーマットを示す。
【図５】本発明の第２の実施例に係るパケット転送装置の動作を示すフローチャートである。
【図６】従来のパケット転送装置のブロック図である。
【符号の説明】
【００４７】
１０、２０、１１０  パケット転送装置
１１、２１、１１１  転送部
１２、２２、１１２  制御部
１３、２３、１１３  キャッシュ
３０  入力インタフェース
４０  出力インタフェース
５０  主記憶装置
【図１】
0005012526.tif 000002
【図２】
0005012526.tif 000003
【図３】
0005012526.tif 000004
【図４】
0005012526.tif 000005
【図５】
0005012526.tif 000006
【図６】
0005012526.tif 000007