(57)【特許請求の範囲】
【請求項１】
何れかのネットワークから受信したパケットのヘッダ情報に従って、受信したパケットの中継先を決定し、受信したパケットを何れかのネットワークへ中継するネットワーク中継装置において、
ネットワークと接続されたインタフェースと、
前記インタフェースが受信したパケットを予め決められたサイズの領域に保持するパケットバッファと、
前記パケットバッファにおける受信したパケットの保持領域の管理情報を生成するパケット転送処理部と、
受信したパケットの転送先をヘッダ情報に従って決定し、該転送先を前記パケット転送処理部へ指示する経路検索部と、
受信したパケットに対するカプセル処理またはデカプセル処理を実行するトンネル処理部とを有し、
前記トンネル処理部により実行されるカプセル処理は、前記管理情報の内容を変更する処理を含み、さらに、新たなヘッダデータを作成して前記パケットバッファの他の領域に保持させる処理と、該新たなヘッダデータの保持領域の管理情報を生成する処理を含むことを特徴とするネットワーク中継装置。
【請求項２】
何れかのネットワークから受信したパケットのヘッダ情報に従って、受信したパケットの中継先を決定し、受信したパケットを何れかのネットワークへ中継するネットワーク中継装置において、
ネットワークと接続されたインタフェースと、
前記インタフェースが受信したパケットを分割された保持領域に保持するパケットバッファと、
前記パケットバッファにおける保持領域の管理情報を生成するパケット転送処理部と、
受信したパケットの転送先をヘッダ情報に従って決定して当該転送先を前記パケット転送処理部へ指示する経路検索部と、
受信したパケットに対するカプセル処理またはデカプセル処理を実行するトンネル処理部とを有し、
前記トンネル処理部により実行されるデカプセル処理は、前記管理情報に含まれるデータ開始位置を、前記受信したパケットから取り除くべきヘッダデータのサイズに対応して移動し、且つ、前記管理情報に含まれるデータサイズから前記ヘッダデータのサイズを減らす処理を含み、前記移動したデータ開始位置が前記分割された保持領域の全体サイズを超える場合、もしくは前記減らしたデータサイズが負の値になる場合に、デカプセル処理前のヘッダデータが前記保持領域を跨っていることを検出することを特徴とするネットワーク中継装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク中継装置に関し、特に、データ通信において通信プロトコル等が互いに異なる各種ネットワーク間の通信において使用される、カプセル化によるトンネル通信を効率的に実行する機能を備えたネットワーク中継装置に関する。
【０００２】
【従来の技術】
ネットワーク上のデータ通信においては、一般に、本来の伝送データに、各種の通信プロトコルで定められた宛先の情報等を含むデータがヘッダデータとして先頭に付加されたパケットと呼ばれる単位が使用される。
【０００３】
また、データ通信において、ネットワークの構成や運用上の都合から通信プロトコルや宛先アドレスといった情報等の体系が異なる複数のネットワークを渡って通信を行わせる場合がある。例えば、離れた位置に配置されたプライベートネットワーク間で通信を実現する場合や、中継経路中の通信プロトコルと送受信を行なうホストの通信プロトコルが異なる場合、そして送信パケットを暗号化する場合などである。このような場合に利用される通信手法を一般にトンネル通信と呼ぶ。
【０００４】
トンネル通信を実現するには、カプセル化と呼ばれる技術が用いられる。カプセル化とは通信プロトコル等の異なるネットワーク間を渡る際にヘッダデータを含むパケット全体をひとつの新たな伝送データとして扱い、このパケットに更にヘッダデータを付加することで異なるパケットを新たに構成することである。つまり、通信プロトコル等が異なるネットワークをトンネルさせたい場合、そのトンネル対象ネットワークの通信プロトコル等に合わせたヘッダデータで元々のパケットをカプセル化すれば良い。そしてトンネル対象のネットワークの出口となる点においては、カプセル化されたときに付加されたヘッダデータを取り除きカプセル化される前のパケットを復元し受信先へ転送する。前者のようなトンネル対象ネットワーク入り口でヘッダデータを新たに付加する処理をカプセル処理、後者のようなトンネル出口にてヘッダデータを取り除いてトンネルに入る前のパケットを復元する処理をデカプセル処理と呼ぶ。
【０００５】
一般に、ネットワークシステムにおいて複数のネットワーク間を接続するためにはルータやブリッジ等のネットワーク中継装置が用いられる。これらネットワーク中継装置は接続されているネットワークから受け取ったパケット内に含まれるヘッダデータを基に宛先アドレスを調べてパケットの転送先を決定し、転送先のネットワーク中継装置又はホストが接続されたネットワークにパケットを転送する。さらに上記のようなトンネル通信を行なう必要がある場合には、カプセル処理およびデカプセル処理も行なう機能を備える。なお、ネットワーク中継装置を実現する方式として、特開平５−１９９２３０号公報や特開２００１−２１１２０３号公報等に記載された方式がある。
【０００６】
【発明が解決しようとする課題】
近年、これまでの企業、研究機関等で固定的に運用されるコンピュータシステムから、企業や家庭でのパーソナルコンピュータ、また、個人の持つ携帯端末まで多様性を増す多くのシステムを収容するべく、それぞれのシステムの機能や特徴に特化した技術を適用することによりネットワークもまた多様性を増している。こういった背景からトンネル通信機能はネットワーク中継装置にとって欠かせない機能となりつつある。
【０００７】
一方、ネットワークに接続されるシステムの性能向上および絶対数の増加に伴い、各種ネットワークを流れるトラフィックも増大し続けており、トンネル通信の処理においても処理性能の向上が求められている。
【０００８】
ところが、上述した従来のネットワーク中継処理装置によれば、中継処理のために受信したパケットからヘッダデータと伝送すべきデータの区別し、またヘッダデータから宛先アドレス等必要な情報を抽出する処理を行なうことはできるが、ヘッダデータを付加したり削除したりするいわゆるカプセル処理およびデカプセル処理を行なうことができないためにトンネル通信機能の実現は困難という問題がある。また、ソフトウエアにて構成されるネットワーク中継処理装置ならばソフトウエアの変更によりカプセル処理およびデカプセル処理の機能を追加することでトンネル通信を実現する方法もあるが、ハードウエアにて中継処理をおこなうネットワーク中継処理装置に比較するとその処理性能に差があることは否めず、性能向上も難しい。
【０００９】
本発明は、以上の点に鑑み、トンネル通信機能を備え、且つ、カプセル処理およびデカプセル処理を効率的に実効可能なデータ構造および機器構成を採用することで、多様性を増し且つトラフィックも増大し続けるネットワークの接続を柔軟かつ高速に処理することができるネットワーク中継装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明では、ネットワーク中継装置の入力されたパケットを保持する機構に、新規データを追加したり、逆に既存のパケットから特定の範囲のデータを削除する操作を効率良く実行可能な機能を備える。また、このような操作を可能とするために、入力されたパケットを保持する機構としてディスクリプタとパケットバッファを持つ。ディスクリプタは固定長であって、パケットバッファが保持している内容を管理するための情報を保持する。一方、パケットバッファは受信したパケットを保持するが、その方法として受信したパケットの内容を１つもしくは複数のセグメントと呼ばれる固定長の領域に分割して格納する。これはパケットバッファをハードウエアによって制御しやすくするという特徴を持たせるためである。その固定長のサイズは、例えばバースト転送をサポートするメモリのバーストサイズに合わせるなど、ハードウエアの構成に合わせて設計時に任意に決定することができる。
【００１１】
ここで、ディスクリプタはセグメントに対し１対１に対応する。ディスクリプタが保持する内容は、図１に示されるように、パケットに対するセグメントの位置を識別する識別子、パケットバッファ全体におけるセグメントの位置を示すセグメントポインタ、セグメント内での実効データ開始を示すオフセット、セグメント内における実効データのサイズを示すセグメント長、パケットが複数セグメント、ディスクリプタで構成される場合の次ディスクリプタの位置を示すリンクポインタから構成される。なおリンクポインタについては、ディスクリプタを記憶機構に保持する方式の場合にあれば良い情報であり、単にキュー等でディスクリプタを管理する方式の場合は、必ずしもリンクポインタは必須ではない。ディスクリプタおよびセグメントは、その対応関係が明確である限り、入力されたパケットに応じて自動的に生成される他に、外部からの制御により生成されても良く、またパケット出力の際に削除される他に外部からの制御により削除されても良い。
【００１２】
また、本発明では、回線対応部、パケット交換部、パケット転送および経路検索部といったネットワーク中継装置の基本的な構成に加えて、パケットのカプセル処理およびデカプセル処理をおこなうトンネル通信処理機能部をネットワーク中継装置が備える。
【００１３】
具体的には、トンネル通信処理機能部は、カプセル処理の場合、トンネル対象ネットワークのヘッダ情報を新たなセグメントに登録し、それに対応したディスクリプタを生成する。次に、その生成した新たなセグメントとディスクリプタを、入力パケットを保持しているセグメントとそれに対応するディスクリプタ群の先頭に位置するようにリンクさせる。以上の操作によりカプセル化パケットの生成を実現する。
【００１４】
また、デカプセル処理の場合は、入力したパケットから除外すべきヘッダデータ分だけ、そのヘッダデータの存在するセグメントに対応するディスクリプタ内のオフセット値およびセグメント値を変更し、見かけ上そのヘッダデータが削除されたように見せかける。削除すべきヘッダデータがセグメントをまたぐ場合には、ヘッダデータの削除によって不要となるセグメントを解放し、また、対応するディスクリプタを削除し、それに続くセグメントが先頭のセグメントとなるようにそのセグメントに対応するディスクリプタの識別子ならびにオフセットとセグメント長を変更する。以上の操作によってカプセル化されていたパケットを取り出す。
【００１５】
経路検索の結果、自装置がネットワークにおけるトンネルの入り口またはトンネルの出口にあるという判定がなされた場合、トンネル通信処理機能部は、判定処理開始通知を経路処理部から受け、該当するカプセル処理またはデカプセル処理を終了するとその旨を経路処理部に通知する。経路検索部はこの通知を持って、今度はトンネル対象のネットワークに対し再び経路検索を行なう。この時、再度、別のネットワークトンネルの入り口またはトンネル出口にあるという判定がなされた場合は上記の手順を繰り返す。つまりトンネルが多重化されている場合でも、上記のような単純な操作の繰り返しによりカプセル処理またはデカプセル処理を行ない得る。この特徴もまたハードウエアなどによる装置構成の容易さを可能とし処理の高速化に貢献する点である。
【００１６】
【発明の実施の形態】
以下、本発明の一実施形態を図面を用いて説明する。
【００１７】
図２は本発明のネットワーク中継装置が適用されるネットワークシステム全体の概念図を示す。図２において、同一のプロトコルに従うネットワーク５およびネットワーク９に、パケットのヘッダ内に記述される情報に従ってパケットを転送するネットワーク中継装置３およびネットワーク中継装置７がそれぞれ接続されている。さらに、ネットワーク中継装置３およびネットワーク中継装置７はネットワーク１に接続されている。ここでネットワーク１は、ネットワーク５およびネットワーク９とは異なるプロトコルに従うものである。また、ネットワーク５にはサーバ装置６が接続され、ネットワーク９にはクライアント装置１０が接続されている。
【００１８】
ネットワーク５とネットワーク中継装置３との間で伝送されるパケット４と、ネットワーク８とネットワーク中継装置７との間で伝送されるパケット８とは、同一のプロトコルに従っている為、宛先アドレス等の情報が異なることはあってもそのフォーマットは同じものとなる。しかしながら、ネットワーク１がネットワーク５およびネットワーク９とは異なるプロトコルに従っている為、ネットワーク中継装置３およびネットワーク中継装置７はパケット４やパケット８と同じフォーマットのパケットをネットワーク１に送出することはできない。そこで図２においてパケット２として示されているように、ネットワーク１が従うプロトコルに沿ったヘッダデータを、例えばネットワーク５からネットワーク中継装置３に伝送されてきたパケット４に付加したパケットを用いて、ネットワーク中継装置３およびネットワーク中継装置７はネットワーク１を介して通信を行なう。これをトンネル通信と呼ぶ。
【００１９】
ここで、サーバ装置６がクライアント装置１０に対してパケットを送信する場合について説明する。
【００２０】
サーバ装置６は、宛先アドレスとしてクライアント装置１０のアドレスを含むヘッダ２０２を持つパケット４をネットワーク５に送信する。パケット中継装置３はパケット４をネットワーク５から受け取る。ネットワーク中継装置３は、ネットワーク１を介してパケット４をネットワーク中継装置７に中継するため、パケット４からパケット２を生成する。即ち、ネットワーク１が従っているプロトコルに応じたフォーマットを持つヘッダデータ２０３を、パケット４に付加する。ネットワーク中継装置３で行われるこの処理がカプセル処理である。一方、ネットワーク中継装置７は、パケット２からパケット８を取り出すことになる。即ち、ネットワーク９を介して通信を行なう際には不要であるヘッダデータ２０３をパケット２から削除する。ネットワーク中継装置７で行われるこの処理がデカプセル処理である。そして取り出されたパケット８はネットワーク９を介してクライアント装置１０へ送られる。
【００２１】
図３にトンネル処理をおこなうネットワーク中継装置３の全体構成のブロック図を示す。図３においてネットワーク中継装置３は、経路交換部３１と経路検索処理部３２０、３２１を備える。
【００２２】
経路検索処理部３２０、３２１は、回線インタフェース３００、３０１に対してパケットの入出力を行い、また、パケットのヘッダ情報からパケットの転送先を検索してパケットを転送する。経路交換部３１は、経路検索処理部３２０、３２１に接続され、それぞれの経路検索処理部の間のパケット転送を行なう。経路検索処理部３２０、３２１に繋がる回線インタフェース３００、３０１の種類にはイーサネット等のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＡＴＭ（ＡｓｙｎｃｈｒｏｎｏｕｓＴｒａｎｓｆｅｒ  Ｍｏｄｅ）等がある。
【００２３】
図４に経路検索処理部３２０の詳細ブロック図を示す。
【００２４】
図４において、パケット転送処理部３２０１は、回線対応部インタフェース３２０５または経路交換部インタフェース３２０４に到着したパケットからディスクリプタの生成を行い、経路検索部３２０２へ転送先の検索要求を出し、その結果を元に転送先の決定を行なう。経路検索処理部３２０２は、パケット転送処理部３２０１からの情報および要求に基づきパケット転送先を検索処理する。トンネル処理部３２０３は、カプセル処理、デカプセル処理といったトンネル処理が必要な場合にヘッダデータの付け外しを行なう。経路交換部インタフェース３２０４は、経路交換部とのインタフェースを制御する。回線対応部インタフェース３２０５は、回線対応部とのインタフェースを制御する。パケットバッファ３２０７はパケットを保持する。パケットバッファ制御部３２０６はパケットバッファ３２０７を制御する。ディスクリプタバッファ３２０９はディスクリプタを保持する。ディスクリプタバッファ制御部３２０８はディスクリプタバッファ３２０９を制御する。
【００２５】
回線対応部インタフェース３２０５または経路交換部インタフェース３２０４にパケットが到着すると、パケットをパケット転送処理部３２０１に転送する。パケット転送処理部３２０１ではパケットからディスクリプタを生成し、ディスクリプタバッファ制御部３２０８へ書き込み要求を、またパケット本体についてはパケットバッファ制御部３２０６に書き込み要求を出し、それぞれを保持する。続いて経路検索部３２０２に転送先の検索要求を発行する。経路検索部３２０２では検索要求を受けるとパケットのヘッダデータよりパケットの転送先を検索し、その結果をパケット転送処理部３２０１に返すことで応答する。経路検索部３２０２での検索の結果が通常のパケット中継の場合は、その内容に応じてパケットを回線対応部インタフェース３２０５または経路交換部インタフェース３２０４へ転送すべきことをパケット転送処理部３２０１に応答する。一方、検索の結果、自装置がトンネルの入り口または出口であることが判明した場合には、カプセル処理またはデカプセル処理が必要であるという情報とともにトンネル処理部３２０３にパケットを転送すべきことをパケット転送処理部３２０１に応答する。パケット転送処理部３２０１は経路検索部３２０２からの応答に基づきパケットを転送処理するが、トンネル処理部３２０３へパケットを転送する場合には、ディスクリプタとパケットは保持したままトンネル処理部３２０３にトンネル通信の処理要求を発行する。
【００２６】
トンネル処理部３２０３では、カプセル処理またはデカプセル処理の指示によってパケット転送処理部３２０１にて生成されたディスクリプタを変更し、場合によってはさらに別途新規なディスクリプタとヘッダデータを生成し、本来のディスクリプタやパケットに結合させる。トンネル処理部３２０３での処理が終了すると、パケット転送処理部３２０１に処理終了の応答を返す。
【００２７】
カプセル処理やデカプセル処理を行なうということはすなわちヘッダデータが置き換わるということであり、経路処理の観点からみれば、それは処理前のパケットとは異なるパケットに変わることを意味する。このためパケット転送処理部３２０１では、このトンネル処理部３２０３からの処理終了応答の受信は、回線対応部インタフェース３２０５や経路交換部インタフェース３２０４からのパケット到着通知と同等な意味を持って扱われる。ただし、そのパケットのディスクリプタとパケットは既に存在するため、ディスクリプタ生成および保持、パケットの保持要求はおこなわずそのまま再び経路検索部３２０２に転送先の検索要求を発行する。そして、その結果に基づき再度パケットの転送処理を行なう。
【００２８】
以上の動作により、トンネル通信が可能となる。尚、仮にトンネルが多重化されているようなトンネル通信を行なう場合でも、本実施形態におけるネットワーク中継装置によれば、上述のようにパケット転送処理部３２０１から経路検索部３２０２に対する検索処理要求、そしてパケット転送処理部３２０１からトンネル処理部３２０３に対するトンネル処理要求を繰り返すだけで、他に複雑な手順を要することなくトンネル通信に必要な処理を実現できる。
【００２９】
図５に、ディスクリプタのデータ構造およびセグメントとの関係を具体的に示す。セグメント５１１に対応するディスクリプタ５０１は、対応するセグメント５１１の属性を示す識別子５０１１、パケットバッファメモリ内のセグメントの位置を示すセグメントポインタ５０１２、セグメントに格納されている実効データ（パケット）の先頭位置を示すオフセット５０１３、セグメントに格納されている実効データ（パケット）の長さを示すセグメント長５０１４、複数のディスクリプタおよびセグメントによって１パケットが構成される場合にディスクリプタ５０１に続くディスクリプタ５０２のディスクリプタバッファ内の位置を示すリンクポインタ５０１５を含む。
【００３０】
識別子５０１１が表すセグメント種別の一覧を図６に示す。識別子「１」で示される先頭かつ最終セグメントとは、例えば、図７に示されたセグメント７０２のように単一のセグメント内にヘッダデータを含めたパケット全体が収まる場合のセグメントを示す。識別子「０」で示される先頭かつ継続セグメント有りとは、例えば、図８に示されたセグメント８１１のように、単一セグメント内にパケットが収まらない場合の、そのパケットが格納されているセグメント群のうちの先頭のセグメントを示す。識別子「３」で示される非先頭かつ最終セグメントとは、例えば図８に示されたセグメント８１３のように、単一のセグメント内にパケットが収まらない場合の、そのパケットが格納されているセグメント群のうちの最後尾のセグメントを示す。識別子「２」で示される非先頭かつ継続セグメント有りとは、例えば図８に示されたセグメント８１２のように、単一のセグメント内にパケットが収まらない場合の、そのパケットが格納されているセグメント群のうちの中間にあるセグメントを示す。
【００３１】
以下、ディスクリプタを用いたパケットの管理の仕方について説明する。
【００３２】
図７に、トンネル通信されない通常のパケットであって１セグメントのトータルサイズよりもパケット全体のサイズが小さいパケットが、セグメントに格納されている状態と、そのセグメントに対応するディスクリプタの構成を示す。
【００３３】
セグメント７０２には、ヘッダデータとデータ本体からなるパケット全体が格納されている。この場合、パケット転送処理部３２０１は、ディスクリプタ７０１として、識別子７０１１が先頭かつ最終セグメントを示す「１」、セグメントポインタ７０１２がセグメント７０２の所在する先頭アドレスの値、オフセット７０１３が値「０」、セグメント長７０１４がパケットのオクテット長であるディスクリプタを生成する。尚、この場合、リンクポインタ７０１５の値は無視される。
【００３４】
また、図８に、トンネル通信されない通常のパケットであってパケットサイズが２セグメント分のサイズよりも大きいパケットが、セグメント群に格納されている状態と、各セグメントに対応するディスクリプタの構成を示す。
【００３５】
図８において、セグメント８１１、８１２、８１３にパケットが分割されて格納されている。セグメント８１１には、パケットの先頭部分、即ち、ヘッダデータとデータ本体の先頭部分が格納されている。また、セグメント８１２には、パケットの中間部分、即ちデータ本体の中間部分が格納されている。さらに、セグメント８１３には、パケットの残り、即ち、データ本体の残りの部分が格納されている。この場合、パケット転送処理部３２０１は、セグメント８１１に対応するディスクリプタ８０１と、セグメント８１２に対応するディスクリプタ８０２と、セグメント８１３に対応するディスクリプタ８０３をそれぞれ生成する。ディスクリプタ８０１は、識別子８０１１として先頭かつ継続セグメント有を示す「０」、セグメントポインタ８０１２としてセグメント８１１の所在する先頭アドレス値、オフセット８０１３として値「０」、セグメント長８０１４としてセグメント８１１全体のサイズ、リンクポインタ８０１５としてディスクリプタ８０１に続くディスクリプタ８０２の所在する先頭アドレス値を含む。ディスクリプタ８０２は、識別子８０２１として非先頭かつ継続セグメント有を示す「２」、セグメントポインタ８０２２としてセグメント８１２の所在する先頭アドレス値、オフセット８０２３として値「０」、セグメント長８０２４としてセグメント８１２全体のサイズ、リンクポインタ８０２５としてディスクリプタ８０２に続くディスクリプタ８０３の所在する先頭アドレス値を含む。ディスクリプタ８０３は、識別子８０３１として非先頭かつ最終セグメントを示す「３」、セグメントポインタ８０３２としてセグメント８１３の所在する先頭アドレス値、オフセット８０３３として値「０」、セグメント長８０３４としてパケットのうちセグメント８１３内に格納されている部分のサイズを含む。ディスクリプタ８０３の場合、リンクポインタ８０３５については特になにもされず、転送処理においてこの情報は無視される。
【００３６】
以上のようにパケット転送処理部３２０１により生成されたディスクリプタ８０１〜８０３によって１つのパケットが管理される。
【００３７】
通常のパケット中継の場合は、上述のように生成したディスクリプタとセグメントデータを用いてパケット転送処理部３２０１がパケットを管理し、経路交換部インタフェース３２０４や回線対応部インタフェース３２０５へのパケット転送処理を行なう。しかし、トンネル通信のためにカプセル処理、デカプセル処理が必要となった場合は、トンネル処理部３２０３において、これらのディスクリプタとセグメントの組み合わせを以下の様に追加または変更することが必要となる。
【００３８】
図９は、トンネル処理部３２０３によってカプセル処理が実行される場合に、トンネル処理部３２０３によって追加される新たなヘッダデータとそれに対応するディスクリプタの構成を示したものである。
【００３９】
図７に示したのと同様に、パケット転送処理部３２０１に到着したパケットに対しディスクリプタ９０１がパケット転送処理部３２０１により生成され、また、パケットはセグメント９１１に保持されている。ここで、トンネル処理部３２０３がカプセル処理要求を受け付けると、パケットバッファ３２０７に新規にセグメント９１２を確保し、トンネル通信用の新規ヘッダデータを作成する。また、セグメント９１２に対応するディスクリプタ９０２を生成する。ディスクリプタ９０２は、識別子９０２１として先頭かつ継続セグメント有を示す「０」、セグメントポインタ９０２２としてセグメント９１２の所在を示す先頭アドレス値、オフセット９０２３として値「０」、セグメント長９０２４として新規ヘッダデータのデータ長、リンクポインタ９０２５としてディスクリプタ９０１の所在するアドレス値を含む。続いて、トンネル処理部３２０３は、ディスクリプタバッファ３２０９に保持されているディスクリプタ９０１の識別子９０１１を先頭かつ最終セグメントを示す「１」から、非先頭かつ最終セグメントを示す「３」に書き換える。カプセル処理部３２０３が以上の処理を行なうことによってカプセル処理をしたパケットが作成され、トンネル処理部３２０３は処理終了をパケット転送処理部３２０１に通知する。
【００４０】
図９に示した例は、カプセル処理前のパケットサイズが１セグメントのサイズ以下の場合を想定したものであるが、図８のようにパケットサイズが１セグメントのサイズより大きい場合についても、パケットを格納するセグメント群のうちの先頭セグメントとそれに対応するディスクリプタに対して、図９を用いて説明したのと同様の動作をトンネル処理部３２０３は行なうのみである。トンネル処理部３２０３は、識別子が「０」か「１」であるディスクリプタを変更すべきディスクリプタとして認識し、識別子が「２」または「３」である中間セグメントおよび最終セグメントに対しては追加、変更等を行なわない。
【００４１】
図１０は、トンネル処理部３２０３によってデカプセル処理が実行される場合に、トンネル処理部３２０３によってディスクリプタが変更される様子を示したものである。
【００４２】
まず、パケット転送処理部３２０１に到着したカプセル処理をされたパケットに対しディスクリプタ１００１が生成され、また、パケットがセグメント１０１１に保持されている。
【００４３】
この状態において、トンネル処理部３２０３がデカプセル処理要求を受け付けると、トンネル処理部３２０３は、ディスクリプタバッファ３２０９に保持されているディスクリプタ１００１のオフセット１００１３を、それまで保持していた値に取り除くべきヘッダデータのサイズを加えた値に変更する。また、セグメント長１００１４の値を、それまで保持していた値から取り除くべきヘッダデータサイズの値を引いた値へと変更する。このような変更処理をトンネル処理部３２０３が行なうことにより、ディスクリプタ１００１はディスクリプタ１００２に変更される。ディスクリプタ１００２において、オフセット１００２３はセグメント１０１１に格納されているカプセル化されたパケットのうちの元のヘッダデータの先頭位置を示し、セグメント長１００２４はセグメント１０１１に格納されているカプセル化されたパケットのうちのカプセル化によって付加されたヘッダデータが取り除かれた（カプセル化される以前の）パケットの長さを示す。従って、図１０に示すように、変更されたディスクリプタ１００２によって管理されるパケットは、セグメント１０１１に格納されているカプセル化されたパケット全体ではなく、見かけ上はセグメント１０１２として示されているように、カプセル化によって付加されたヘッダデータを除いた（カプセル化される以前の）パケットとなる。
【００４４】
これによって、トンネル処理部３２０３によるデカプセル処理が完了する。
【００４５】
なお、多重トンネル通信の為の処理によりデカプセル処理が連続する場合、デカプセル処理前のヘッダデータがセグメントをまたぎ、デカプセル処理後に得たい元のヘッダデータが先頭のセグメントではなく、それに続く中間のセグメントに存在するという場合が考えられる。
【００４６】
このような場合のセグメントおよびディスクリプタの構成を図１１に示す。
【００４７】
先頭のセグメント１１１１にはカプセル処理により付加されたヘッダデータの一部が格納されており、また、セグメント１１１２にはカプセル処理により付加されたヘッダデータの残りの部分および元々のパケット（元のヘッダデータおよびデータ本体からなる）が格納されている。
【００４８】
この状態において、トンネル処理部３２０３がデカプセル処理要求を受け付けると、上述したのと同様に、先頭セグメント１１１１に対応するディスクリプタ１１０１のオフセット１１０１３およびセグメント長１１０１４の値を変更する。
【００４９】
このとき、先頭のセグメント１１１１に対応するディスクリプタ１１０１のセグメント長１１０１４の値を変更する際の算出値が負の値になる、またはオフセット１１０１３を変更する際の算出値がセグメント１１１１全体のサイズ以上になることにより、トンネル処理部３２０３は上述のような場合が発生したことを検出する。そこで、トンネル処理部３２０３は、デカプセル処理前に先頭であったセグメント１１１１およびそれに対応するディスクリプタ１１０１を削除する。そして、トンネル処理部３２０３は、ディスクリプタ１１０１に続くディスクリプタ１１０２の識別子１１０２１が非先頭かつ継続セグメント有りを示す「２」である場合には、その識別子を先頭かつ継続セグメント有りを示す「０」に、非先頭かつ最終セグメントを示す「３」である場合には、先頭かつ最終セグメントを示す「１」に変更する。また、オフセット１１０２３の値を、オフセット１１０１３を変更する際に算出した値からセグメント１１１２全体のサイズを引いた値に変更し、セグメント長１１０２４の値を、元の値から上記オフセット１１０２３の値を引いた値に変更する。トンネル処理部３２０３が以上の処理を行なうことによりデカプセル処理済のパケットが作成され、トンネル処理部３２０３は処理終了をパケット転送処理部３２０１に通知する。
【００５０】
図１０に示した例は、デカプセル処理を行なうパケットのサイズが１セグメントのサイズ以下の場合を想定したものであるが、図８のようにデカプセル処理前のパケットサイズが１セグメントのサイズより大きい場合についても、パケットを格納するセグメント群のうちの先頭セグメントとそれに対応するディスクリプタに対して、図１０を用いて説明したのと同様の動作をトンネル処理部３２０３は行なうのみである。
【００５１】
【発明の効果】
本発明によれば、ネットワーク中継装置におけるトンネル通信の為の処理をハードウエアによって高速かつ効率的に実現可能である。
【図面の簡単な説明】
【図１】ディスクリプタとセグメントの構成を示す図
【図２】ネットワーク中継装置が適用されるネットワークシステム全体の概念図
【図３】ネットワーク中継装置の構成を示すブロック図
【図４】ネットワーク中継装置の経路検索処理部の詳細ブロック図
【図５】ディスクリプタとセグメントの構成を示す図
【図６】識別子が表すセグメント種別を示す図
【図７】パケットサイズが１セグメントサイズ以下の場合のディスクリプタとセグメントの構成を示す図
【図８】パケットサイズが１セグメントサイズ以上の場合のディスクリプタとセグメントの構成を示す図
【図９】カプセル処理が実行された場合のディスクリプタとセグメントの構成を示す図
【図１０】デカプセル処理が実行された場合のディスクリプタとセグメントの構成を示す図
【図１１】デカプセル処理によって取り除かれるべきヘッダデータがセグメントをまたぐ場合のディスクリプタとセグメントの構成を示す図
【符号の説明】
１，５，９…ネットワーク
２，４，８…パケット
３，７…ネットワーク中継装置
６…サーバ装置
１０…クライアント装置
３１…経路交換部
３２０，３２１…経路検索処理部
３２０１…パケット転送処理部３２０１
３２０２…経路検索部
３２０３…トンネル処理部
３２０４…経路交換部インタフェース
３２０５…回線対応部インタフェース
３２０６…パケットバッファ制御部
３２０７…パケットバッファ
３２０８…ディスクリプタバッファ制御部
３２０９…ディスクリプタバッファ
【図１】
0003896829.tif 000002
【図２】
0003896829.tif 000003
【図３】
0003896829.tif 000004
【図４】
0003896829.tif 000005
【図５】
0003896829.tif 000006
【図６】
0003896829.tif 000007
【図７】
0003896829.tif 000008
【図８】
0003896829.tif 000009
【図９】
0003896829.tif 000010
【図１０】
0003896829.tif 000011
【図１１】
0003896829.tif 000012