(57)【要約】  【課題】  サーバやクライアントにおいて実行されるＩＰパケットの処理速度を向上させる。  【解決手段】  受信したパケットを構成する各行と各語句とに関し、位置情報及び長さ情報から成る行エレメント及び語句エレメントを作成し、行エレメント及び語句エレメントにより、受信したパケットの構成を表すエレメントリストを作成する。次に、パケットの所定箇所のメッセージの書き換えや記載の追加を行い、書き換えや追加と共に行エレメントや語句エレメントの情報も書き換えることにより更新エレメントリストを作成する。最終的に、更新エレメントリストを構成するエレメントに基づき、順次各語句を読み出して応答用パケットとして書き出す。【選択図】  図１
2007013755.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上の端末又はサーバにおいて、受信したＩＰパケットのメッセージ内容に応じて所定の処理を行うＩＰパケット処理方法であって、
受信したＩＰパケットの各行について、位置情報及び長さ情報から成る行エレメントを作成し、
該ＩＰパケットの所定の行を構成する語句について、位置情報及び長さ情報から成る語句エレメントを作成し、
前記行エレメント及び語句エレメントによって前記ＩＰパケットの構造を表すエレメントリストを作成し、
予め定められているパケットの処理方法に基づき、前記行エレメント及び／又は語句エレメントの有する情報によってＩＰパケットのメッセージ内の所定の語句の位置を検索して該語句の記載を変更するとともに、前記エレメントリストにおいて、記載の変更を行った語句に対応する語句エレメントに含まれる情報を更新して更新エレメントリストを作成し、
該更新エレメントリストを構成する語句エレメントに対応する語句を書き出すことにより応答用ＩＰパケットを生成する
ことを特徴とするＩＰパケット処理方法。
【請求項２】
記載変更後の語句が変更前の語句よりも長い場合、又は新たに追加される場合には、記載変更後の語句又は追加される語句をメモリの別領域に保存する
ことを特徴とする請求項１に記載のＩＰパケット処理方法。
【請求項３】
請求項１又は２に記載のＩＰパケット処理方法において、さらに、
受信したＩＰパケットのメッセージ内容に含まれる空行に基づき、該ＩＰパケットを複数のブロックに分割し、
各ブロックについて、位置情報及び長さ情報から成るブロックエレメントを作成する
ことを特徴とするＩＰパケット処理方法。
【請求項４】
前記更新エレメントリストにおいて、
前記記載の変更を行った語句に対応する語句エレメント、及び該語句を含む行に対応する行エレメントに変更識別子を付与し、
応答用ＩＰパケットを生成する際に、
行エレメントが変更識別子を有する場合には、その行エレメントに係る語句エレメントに対応する語句を書き出し、
行エレメントが変更識別子を有さない場合には、その行エレメントに対応する行を書き出す
ことを特徴とする請求項１〜３のいずれかに記載のＩＰパケット処理方法。
【請求項５】
前記ＩＰパケットが、ＳＩＰパケットであることを特徴とする請求項１〜４のいずれかに記載のＩＰパケット処理方法。
【請求項６】
受信したＩＰパケットのメッセージ内容に応じて所定の処理を行うネットワーク上に配置されたＩＰパケット処理装置であって、
受信したＩＰパケットの各行について、位置情報及び長さ情報から成る行エレメントを作成する行エレメント作成手段と、
該ＩＰパケットの所定の行を構成する語句について、位置情報及び長さ情報から成る語句エレメントを作成する語句エレメント作成手段と、
前記行エレメント及び語句エレメントによって前記ＩＰパケットの構造を表すエレメントリストを作成するエレメントリスト作成手段と、
予め定められているパケットの処理方法に基づき、前記行エレメント及び／又は語句エレメントの有する情報によってＩＰパケットのメッセージ内の所定の語句の位置を検索して該語句の記載を変更する書換手段と、
前記エレメントリストにおいて、記載の変更を行った語句に対応する語句エレメントに含まれる情報を更新して更新エレメントリストを作成する更新エレメントリスト作成手段と、
該更新エレメントリストを構成する語句エレメントに対応する語句を書き出すことにより応答用ＩＰパケットを生成するパケット生成手段と、
を備えることを特徴とするＩＰパケット処理装置。
【請求項７】
前記書換手段が、
記載変更後の語句が変更前の語句よりも長い場合、又は新たに追加される場合には、記載変更後の語句又は追加される語句をメモリの別領域に保存する
ことを特徴とする請求項６に記載のＩＰパケット処理装置。
【請求項８】
受信したＩＰパケットのメッセージ内容に含まれる空行に基づき、該ＩＰパケットを複数のブロックに分割するブロック分割手段と、
各ブロックについて、位置情報及び長さ情報から成るブロックエレメントを作成するブロックエレメント作成手段と、を更に備える
ことを特徴とする請求項６又は７に記載のＩＰパケット処理装置。
【請求項９】
前記記載の変更を行った語句に対応する語句エレメント、及び該語句を含む行に対応する行エレメントに変更識別子を付与する変更識別子付与手段を更に備える
ことを特徴とする請求項６〜８のいずれかに記載のＩＰパケット処理装置。
【請求項１０】
前記ＩＰパケットが、ＳＩＰパケットであることを特徴とする請求項６〜９のいずれかに記載のＩＰパケット処理装置。
【請求項１１】
ネットワーク上でＩＰパケットを受信し、該ＩＰパケットのメッセージ内容に応じて所定の処理を行うＩＰパケット処理装置に、応答用ＩＰパケットを生成する処理を行わせるためのプログラムであって、
受信したＩＰパケットの各行について、位置情報及び長さ情報から成る行エレメントを作成し、
該ＩＰパケットの所定の行を構成する語句について、位置情報及び長さ情報から成る語句エレメントを作成し、
前記行エレメント及び語句エレメントによって前記ＩＰパケットの構造を表すエレメントリストを作成し、
予め定められているパケットの処理方法に基づき、前記行エレメント及び／又は語句エレメントの有する情報によってＩＰパケットのメッセージ内の所定の語句の位置を検索して該語句の記載を変更し、
記載変更後の語句が変更前の語句よりも長い場合、又は新たに追加される場合には、記載変更後の語句又は追加される語句をメモリの別領域に保存し、
前記エレメントリストにおいて、記載の変更を行った語句に対応する語句エレメントに含まれる情報を更新して更新エレメントリストを作成し、
該更新エレメントリストを構成する語句エレメントに対応する語句を書き出すことにより応答用ＩＰパケットを生成する
処理をＩＰパケット処理装置に行わせるためのＩＰパケット処理プログラム。
【請求項１２】
前記更新エレメントリストにおいて、
前記記載の変更を行った語句に対応する語句エレメント、及び該語句を含む行に対応する行エレメントに変更識別子を付与し、
行エレメントが変更識別子を有する場合には、その行エレメントに係る語句エレメントに対応する語句を書き出し、
行エレメントが変更識別子を有さない場合には、その行エレメントに対応する行を書き出すことにより単一の応答用ＩＰパケットを生成する
処理をさらに行わせることを特徴とする請求項１１に記載のＩＰパケット処理プログラム。
【請求項１３】
前記ＩＰパケットが、ＳＩＰパケットであることを特徴とする請求項１１又は１２のいずれかに記載のＩＰパケット処理プログラム。
【請求項１４】
ＩＰパケットの各行について少なくとも位置情報及び長さ情報から成る行エレメントと、
ＩＰパケットの各語句について少なくとも位置情報及び長さ情報から成る語句エレメントと、
から構成されるＩＰパケットの構造を表すデータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信ネットワークを介して接続されたクライアントやサーバにおけるＩＰ（Internet Protocol）パケットの処理方法、処理装置及び処理プログラムに関し、ＩＰパケットのうち、特にＳＩＰ（Session Initiation Protocol）パケットを処理するための技術に関する。
【背景技術】
【０００２】
近年、インターネットやイントラネットなどのネットワーク上で音声データや動画データ等のマルチメディアデータをリアルタイムで送受信するための技術の開発及び普及が進んでいる。このようなリアルタイムデータ通信技術において、昨今ひときわ注目されているのが、ＩＰ電話システムの構築を可能とするＩＰ音声通信（VoIP：Voice over Internet Protocol）技術である。
【０００３】
VoIPによってＩＰ電話を実現する（クライアント間での通話を実現する）にあたっては、クライアント間でデータ通信が可能であるというだけでは不十分であり、クライアント間で通話セッションを確立し、当該セッションを適切に制御することが重要な課題となる。具体的には、以下に挙げるような機能が実現されなければならない。
・電話番号やアドレスによって相手先や自分を識別する
・互いのＩＰアドレス及び音声通信用のポート番号を交換する
・発信、着信、通話開始、通話終了などを制御する
【０００４】
上記のような、ＩＰ電話システムに固有の課題を解決するためのシグナリングプロトコル（呼制御通信手順）のひとつに、ＳＩＰがある。ＳＩＰはRFC3261において定義されている、ＩＰネットワーク上でクライアント間のセッションを確立するためのプロトコルであり、リアルタイム通信セッションの開始、変更、終了を制御する（ＳＩＰを用いて構築される基本的な電話通信システムの一例として、特許文献１に記載の技術がある。）。
【０００５】
ＳＩＰによってセッションを確立するVoIPシステムでは、ＳＩＰによって制御されるＩＰパケット（本発明ではこのようなＩＰパケットを「ＳＩＰパケット」と称する。）を受信したサーバは、そのＳＩＰパケットのメッセージを解析することにより、受信したパケットを破棄したり、RFC文書等によって予め定められている形式に従って新たなパケットを生成して、その新たに生成されたパケットをネットワーク上の他のサーバやクライアントに送信するといった所定の処理を行う。
【０００６】
ＳＩＰベースの電話システムにおける通信手順（ＳＩＰパケットの送受信）について図４に基づき具体的に説明する。端末Ａ（実際には端末Ａを操作するユーザ）が端末Ｂ（実際には端末Ｂを操作するユーザ）を呼び出して通話をしたいとき、端末Ａは、サーバＡに対して、セッションの確立を促すためのINVITEリクエストパケット（ＳＩＰパケット）を発行する。サーバＡは通常、端末Ａと同一ドメイン内のプロキシサーバである。INVITEリクエストパケットを受信したサーバＡは、端末ＢのドメインのプロキシサーバであるサーバＢに対してINVITEリクエストパケットを送信する。
サーバＡから送信されたINVITEリクエストパケットを受信したサーバＢは、INVITEリクエストパケットの中に含まれるユーザIDに基づき、そのIDを有する端末Ｂに対してINVITEリクエストパケットを送信する。このようにして端末Ａから送信されたINVITEリクエストパケット（正確には所定の変更が加えられた後のパケット）が端末Ｂに到達する。
INVITEリクエストパケットを受信した端末Ｂでは、端末Ａより通話の要求があることを、呼び出し音を鳴らしたりポップアップメッセージ（端末Ｂがコンピュータ上で動作している場合）を表示したりすることによってユーザに通知する。ユーザが通話の要求を受け容れれば、通話受容を意味するパケット（200OK）が、先程と反対方向に端末Ｂから端末Ａへ送信される。端末Ａが200OKパケットを受信すると通話セッションが確立され、通話を開始することができる。
【０００７】
なお、先に述べたように、ＳＩＰはセッションの制御のみを取り扱うプロトコルである。従って、通話セッションが確立された後の通話制御はＳＩＰによってではなく、例えばマルチメディアセッションの制御を行うためのプロトコルであるＳＤＰ（Session Description Protocol）等によって行われる。
【０００８】
通話が終了した時には、再びＳＩＰパケット（BYEリクエスト）が送信、又は受信されることによってセッション終了制御が行われる。
【０００９】
【特許文献１】特開2002-152224号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
VoIP技術の発展や、VoIP技術を利用するＩＰ電話の普及に伴い、ＩＰパケット、とりわけＳＩＰパケットの処理に要するサーバやクライアントの負担を可能な限り小さくしたいという要求が高まっている。ＳＩＰパケットの処理を低負荷で行うことが可能となれば、単位時間により多くの処理を行えるだけでなく、メモリやCPU（Central Processing Unit：中央処理装置）のリソースを節約することができ、ＳＩＰ処理装置を小型化することができるからである。
【００１１】
しかし、これまでに、ＳＩＰ処理装置の小型化を図ることができる程度にまで、ＳＩＰパケットを高速に処理することができる有効な策は開示されていない。
【００１２】
本願発明者は上記課題に鑑み研究を重ねた結果、ＩＰネットワーク上のサーバやクライアントが、受信したＳＩＰパケットのメッセージ内容に基づいて新たにＳＩＰパケットを生成する場合、受信したＳＩＰパケットの内容と、新たに生成されたＳＩＰパケットの内容の大部分が同一であるという特徴、すなわち、変更箇所が少ないという特徴を有している点に着目した。以下、この特徴について説明する。
【００１３】
まず、ＳＩＰパケットの一般的な構成について説明する。図５はINVITEリクエストパケットの一例である。このINVITEリクエストパケットに代表されるように、一般的なＳＩＰパケットは、スタートライン、ヘッダフィールド部、空行、ボディから構成される。（パケットに記述されているメッセージがエラーメッセージの場合等には、空行及びボディ以下が存在しないこともある。）
【００１４】
各ＳＩＰパケット生成装置（端末やサーバ）において生成され、送信されるＳＩＰパケットについて説明する。図６は、図４に示すシステムの端末Ａにおいて生成されてサーバＡに送信されるＳＩＰパケット（図６上段）と、サーバＡにおいて生成されてサーバＢに送信されるＳＩＰパケット（図６下段）の一例を示す図である。ただし、図６ではＳＩＰパケットのスタートライン及びヘッダフィールド部のみを描いている。
【００１５】
図６に示されているように、端末Ａで生成されるＳＩＰパケットの記載と、そのＳＩＰパケットを受信したサーバＡにおいて生成されるＳＩＰパケットの記載とは、変更箇所（下線部）が非常に少なく、大部分が同一の記載である。なお、図示していないボディについても同様に、通常は変更箇所が非常に少ない。
【課題を解決するための手段】
【００１６】
このようにして成された本発明に係るＩＰパケット処理方法は、
ネットワーク上の端末又はサーバにおいて、受信したＩＰパケットのメッセージ内容に応じて所定の処理を行うＩＰパケット処理方法であって、
受信したＩＰパケットの各行について、位置情報及び長さ情報から成る行エレメントを作成し、
該ＩＰパケットの所定の行を構成する語句について、位置情報及び長さ情報から成る語句エレメントを作成し、
前記行エレメント及び語句エレメントによって前記ＩＰパケットの構造を表すエレメントリストを作成し、
予め定められているパケットの処理方法に基づき、前記行エレメント及び／又は語句エレメントの有する情報によってＩＰパケットのメッセージ内の所定の語句の位置を検索して該語句の記載を変更するとともに、前記エレメントリストにおいて、記載の変更を行った語句に対応する語句エレメントに含まれる情報を更新して更新エレメントリストを作成し、
該更新エレメントリストを構成する語句エレメントに対応する語句を書き出すことにより応答用ＩＰパケットを生成する
ことを特徴とする。
【００１７】
また、本発明のＩＰパケット処理方法は、好ましくは、
記載変更後の語句が変更前の語句よりも長い場合、又は新たに追加される場合には、記載変更後の語句又は追加される語句をメモリの別領域に保存する構成とすることができる。
【００１８】
また、上記課題を解決するために成された本発明に係るＩＰパケット処理装置は、上記ＩＰパケット処理方法を具現化した装置であって、
受信したＩＰパケットの各行について、位置情報及び長さ情報から成る行エレメントを作成する行エレメント作成手段と、
該ＩＰパケットの所定の行を構成する語句について、位置情報及び長さ情報から成る語句エレメントを作成する語句エレメント作成手段と、
前記行エレメント及び語句エレメントによって前記ＩＰパケットの構造を表すエレメントリストを作成するエレメントリスト作成手段と、
予め定められているパケットの処理方法に基づき、前記行エレメント及び／又は語句エレメントの有する情報によってＩＰパケットのメッセージ内の所定の語句の位置を検索して該語句の記載を変更する書換手段と、
前記エレメントリストにおいて、記載の変更を行った語句に対応する語句エレメントに含まれる情報を更新して更新エレメントリストを作成する更新エレメントリスト作成手段と、
該更新エレメントリストを構成する語句エレメントに対応する語句を書き出すことにより応答用ＩＰパケットを生成するパケット生成手段と、
を備えることを特徴とする。
【発明の効果】
【００１９】
本発明に係るＩＰパケット処理方法によれば、受信したパケットのメッセージを構成している各行に関して位置情報及び長さ情報から成る行エレメントを作成するため、ある情報がメモリ上のどこに記載されているかを知りたい場合に、従来のように目的の情報を探知するまでメッセージ全体の始点から順次走査することなく、行エレメントの情報をもとに極めて短時間でその記載箇所を特定することが可能となる。従って、受信したパケットを取り扱うかどうかの判断等を迅速に行うことができる。
【００２０】
さらに、本発明のＩＰパケット処理方法においては、各行を構成する各語句についても位置情報及び長さ情報から成る語句エレメントを作成し、行エレメントと語句エレメントとを用いて、ＩＰパケットの構造を表すエレメントリストを作成する。応答用ＩＰパケットを生成する際には、書き換えの必要がある語句のみを検索して書き換えを行い、書き換えを行った語句に係る語句エレメントの情報を書き換え、更新エレメントリストを作成する。この更新エレメントリストの構造と、更新エレメントリストに含まれる語句エレメントの位置情報及び長さ情報を参照することにより、応答用パケットを一度に一括して生成することができる。
従来は一つの語句の書き換えを行う都度パケット全体の書き換えを行っていたが、この方法により、パケット処理効率が著しく向上する。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例に係るＳＩＰベースの電話システムの構成図である。図１に示す例では、端末Ａ及び端末Ｂの間にプロキシサーバであるサーバＡとサーバＢとが設けられており、これらの端末及びサーバが互いにインターネットやＬＡＮ等のデータ通信ネットワークによって接続されている。本実施例においては端末Ａ、サーバＡ、サーバＢ、端末Ｂのいずれもが、本発明に係るプログラムを実行することによってＳＩＰパケット処理装置として機能する。
【００２２】
なお、本発明に係るＳＩＰパケット処理装置として機能することが可能なサーバはＳＩＰプロキシサーバのほか、ＳＩＰレジストラサーバ、ＳＩＰリダイレクトサーバ、ＳＩＰボイスメールサーバ、ＳＩＰストリーミングサーバ、ＳＩＰカンファレンスサーバなど、ＳＩＰを扱うサーバであればいかなるサーバであっても構わない。
また、端末は、ＳＩＰベースの通信が可能であれば、ハードウエア（ＳＩＰベース電話機）であっても良いし、コンピュータ上で所定のプログラムを実行することによって機能として実現されるＳＩＰベース電話機であっても良い。
【００２３】
次に、ＳＩＰパケット処理装置の構成について図１に基づき説明する。なお、図１ではサーバＡにおける構成のみが示されているが、端末Ａ、Ｂ、またはサーバＢに関しても略同一の構成である。
【００２４】
パケット処理装置１の要部は、パケット処理部２及びRAM（Random Access Memory）等から成るメモリ２０から成る。パケット処理部２は、後述するように、受信したＳＩＰパケットを処理するための各種の手段を備えている。これら各種の手段はサーバＡ上で所定のプログラムを実行することによって実行される。
【００２５】
以下、図２に示すフローチャートを参照しつつ、本実施例に係るＳＩＰパケット処理方法の流れの一例を説明する。
【００２６】
通常、ネットワーク上では多種多様なＩＰパケットが往来している。そこで、サーバＡにあるＩＰパケットが到来すると、サーバＡの受信部５はそのＩＰパケットの種類を確認し、その種類に応じた処理を行う。なお、受信部５は、サーバＡが所定のプログラムを実行することによって実現される機能である。受信したＩＰパケット（以下、「受信パケット」とする）の種類がＳＩＰパケットであると判断した場合、受信部５はその受信パケット３をパケット処理部２に渡す。この受信パケット３はメモリ２０上に保存される。
【００２７】
パケット処理部２はまず、ブロックエレメント作成手段１０を実行することにより、受信パケット３の空行を検索し、その空行に基づき受信パケット３を複数のブロックに分割する（ステップＳ１）。受信パケット３がボディを有している場合（図５参照）には、スタートライン及びヘッダフィールド部から成るブロック（以下、「ヘッダブロック」とする）と、ボディから成るブロック（以下、「ボディブロック」とする）の二ブロックに分割される。受信パケット３がボディを有していない場合には空行が存在しないため、ブロックの分割は行われない。なお、ここにいう分割とは、受信パケット３をブロックに分けて扱うことを意味しており、実際にメモリ２０上での記憶箇所を分けるという意味ではない。
【００２８】
次にパケット処理部２は、ヘッダブロックのヘッダラインを走査し、この受信パケット３を扱うか扱わないかを判断する（ステップＳ２）。ここで、受信パケット３を扱わないと判断（ステップＳ２のＮｏ）するのは、例えばスタートラインに記載されている命令がパケット処理部２では取り扱い不可の命令であったり、ＳＩＰ ＵＲＩ（Uniform Resource Identifier）に記載されているユーザが不許可のユーザであったりするような場合である。この場合には、パケット処理部２は所定のエラー応答メッセージを生成し、そのエラー応答メッセージを送信部６（送信部６は、サーバＡが所定のプログラムを実行することによって実現される機能である。）に対して出力し、送信部６がそのエラー応答メッセージを受信パケット３の送信元に対して送信する。また、パケット処理部２はエラー応答メッセージを生成することなく、受信パケット３をそのまま破棄することもある。このステップＳ２で受信パケット３を扱わないと判断した場合にどのような処理を行うかは、サーバやクライアント毎に固有に設定されている。
【００２９】
受信パケット３を取り扱うと判断（ステップＳ２のＹｅｓ）した場合には、パケット処理部２は、自身の機能の一つである行エレメント作成手段１１を実行することにより、ヘッダブロック及びボディブロックのそれぞれに関し、各行の始点（位置情報）と各行の長さ（長さ情報）とを読み取る。（ステップＳ３）。本発明では、この各行毎に設けられる位置情報及び長さ情報の組を行エレメントと呼ぶ。なお、行の区切りは改行コードによって認識する。ここにおいて、各行の始点とは、その行の開始点のメモリ２０上における位置のことであり、各行の長さとは、バイト値等によって表される行の始点から終点までの距離のことである。
【００３０】
また、本発明では、行に関してのみならず、各ブロックに関しても同様にメモリ２０上での位置情報や長さ情報等から成るブロックエレメントを作成することが望ましい。ブロックエレメントを設けることにより、応答用ＩＰパケットを生成する効率を高めることが可能となる（詳細は後述。）
【００３１】
次に、パケット処理部２は、ヘッダブロックに必須行の記載があるかどうかを確認する（ステップＳ４）。必須行とは、例えばFromやContactなど、パケットのメッセージ内に必ず含まれていなければならないと規定されているヘッダフィールドである（必須行はRFC3261においてＳＩＰパケットのメッセージの種類に応じて規定されている。）。
【００３２】
必須行の確認は、上記ステップＳ３において作成された行エレメントを参照することにより行う。行エレメントの位置情報は、メモリ上に記載されている行の開始位置を表しているため、ある行のヘッダフィールドの種類を知るためには各行毎に数文字分だけを走査すれば十分であり、従来であれば受信パケット３のメッセージの全文を走査しなければならなかった処理が著しく簡略化される。
なお、このステップＳ４においては、後に行う検索の効率を上げるために、各行の意味や種類を、意味情報として行エレメントに関連付けておくことが望ましい。こうすることにより、所望の行のメモリ上の位置を瞬時に特定することが可能になる。
【００３３】
ステップＳ４を実行した結果、必須行が含まれていなかった場合（ステップＳ４のＮｏ）には、パケット処理部２は、上記ステップＳ２のＮｏの場合と同様に、予め設定されている条件に基づいて、所定のエラー応答メッセージを生成したり受信パケット３を破棄する。
【００３４】
ヘッダブロックに必須行が含まれていた場合（ステップＳ４のＹｅｓ）には、パケット処理部２は、語句エレメント作成手段１２を実行することによって、各行を構成する語句の始点（位置情報）と各語句の長さ（長さ情報）とを読み取り、各語句について語句エレメントを作成する（ステップＳ５）。各語句の区切りは、スペース、コロン、カンマをはじめとする所定の演算子によって認識する。
【００３５】
次に、パケット処理部２は、図３に示すように、ステップＳ５において作成した語句エレメントを、ステップＳ３で作成した行エレメントと関連付け、各ブロックのメッセージの構造を反映したリストであるエレメントリストを作成する（エレメントリスト作成手段１３）。作成したエレメントリストはメモリ２０内の所定の位置に格納する。
【００３６】
続いてステップＳ７において、パケット処理部２は書換手段１４を実行することにより、予め定められているパケットの処理方法に基づき応答用ＳＩＰパケットを生成する。なお、ここにいう「予め定められているパケットの処理方法」とは、RFC3261において規定されているＳＩＰパケットの処理方法のことを指しており、受信パケット３のどの箇所にどのような変更を加えるかという規定のことである。パケット処理部２はこの処理方法に基づき、行エレメントや語句エレメントに含まれる情報を参照することによってメモリ２０上に保存されている受信パケット３において変更を加える語句の箇所を特定し、その語句の記載を変更する。
【００３７】
このとき、記載の変更を行う後の語句の長さが、変更を行う前の語句の長さよりも短い場合には、変更後の語句を上書きするだけでよい。
【００３８】
一方、変更を行う語句が変更を行う前の語句よりも長い場合や、新たに語句が追加される場合には、受信パケット３の記載に上書きすると、次に記されている他の語句に対しても上書きしてしまうことになる。そこで、この場合には、メモリ２０上の、受信パケット３が保存されている箇所とは異なる新たなメモリ領域に変更後の語句を記載する。
【００３９】
上記のように書換手段１４によって語句の記載の変更や語句の追加を行った場合には、パケット処理部２は、更新エレメントリスト作成手段１５を実行することによって、各語句に加えられた変更や、語句の追加をエレメントリストにも反映させる（図３）。
すなわち、語句が変更された場合にはエレメントリストにおいてその語句に対応する語句エレメントの情報も変更し、語句が新たに追加された場合には、エレメントリストにおいて、その語句が対応する位置に新たな語句エレメントを挿入する。追加される語句が、新たな行として挿入される場合には、その行に対応する行エレメントも作成する。図３の右側は、受信パケット３の記載の変更に基づいて作成された更新エレメントリストの模式図である。ここでは、一行目の第二番目の語句が変更されており、三行目には新たな行が追加挿入されている。
【００４０】
次に、パケット処理部２はパケット生成手段１６を実行し、更新エレメントリストに記載されている語句エレメントの位置情報及び長さ情報に基づき、各語句エレメントに対応する語句をメモリ２０上から順次読み出す。読み出した語句をメモリ２０上の所定の領域に書き出すことにより、応答用ＳＩＰパケットが生成される。
【００４１】
ステップＳ９にて生成された応答用ＳＩＰパケットは送信部６へ出力され、送信部６より送信パケット４として所定の宛先に対して送信される。
【００４２】
なお、応答用ＳＩＰパケットの生成をより効率的に行うために、図３において模式的に示すように、変更又は追加された語句エレメントには、変更があったことを示す変更識別子であるフラグを設ける（フラグを立てる）ことが望ましい。このとき、ある語句エレメントに変更フラグを立てた場合には、その語句を含む行の行エレメントにもフラグを立て、その行を含むブロックのブロックエレメントにもフラグを立てる。このような方法でフラグを立てることにより、そのエレメントリストを参照して応答用パケットを生成する際に、記載の変更がない（フラグが立っていない）ブロックや行は、その中に含まれる行や語句に関知することなく、そのブロック全体又はその行全体の記載を位置情報及び長さ情報に基づいて受信パケット３より読み出し、そのまま応答用パケットの記載として書き出して利用することができる。よって、処理の高速化を図ることができる。
【００４３】
また、上記実施例では各行に関して語句エレメントを作成するとしたが、ある行を構成する語句が一つしかない場合には、語句エレメントを設けることなく、行エレメントのみでエレメントリストを形成してもよい。
【００４４】
また、受信パケット３の全語句について語句エレメントを作成するのではなく、予め定められているパケットの処理方法に基づき、記載の変更が必要となる行のみに関して語句エレメントを作成することもできる。この構成により、さらに高効率でパケットを処理することが可能となる。
【００４５】
以上のように、本発明に係るＳＩＰパケット処理方法では、更新エレメントリストを作成し、それに基づき語句を書き出すため、応答用パケットの生成が一度で完了する。特に、受信パケットと送信パケットの記載内容が非常に類似しているＳＩＰパケットのようなＩＰパケットでは、応答用パケットの基となる受信パケットの記載を最大限に利用することができる。従来であれば、語句の書き換えや追加を行う必要が生じる度に、逐一応答用パケット全体のためのメモリ領域を確保し、その新しい領域に応答用パケットを書き出すという処理を行っていたため、本発明の処理方法により、パケット生成に必要となるメモリやCPUのリソースが大幅に節約される。
【００４６】
なお、上記実施例は本発明の一例に過ぎず、本発明の精神内で適宜に変更、修正、追加、改良を行っても構わないことは明らかである。上記実施例ではＳＩＰパケットを中心に構成の説明を行ったが、本発明はＳＩＰパケットに限らず、あらゆるパケットに適応することができることは言うまでもない。
【００４７】
また、語句の書き換えを行うタイミングは、語句エレメント等を作成した後でなくても構わない。例えば、ヘッダフィールド「Max-Forwards」を検知したときには、直ちにその後に記載されている数字から1を減算する構成としてもよい。
【産業上の利用可能性】
【００４８】
以上のような本発明に係るＩＰパケット処理方法を具現化したＩＰパケット処理装置は従来のＩＰパケット処理装置よりも大幅に小型化することが可能となるため、例えば携帯電話等の小型端末に機能として実装させることが可能となる。また、ＳＩＰパケット処理装置をルータ等に実装することも可能となるため、クライアント端末を使用することができない場合にはルータが応答するというような、より柔軟性の高いＩＰ電話システムを実現することが可能となる。
【図面の簡単な説明】
【００４９】
【図１】本発明の一実施例に係るＳＩＰベースの電話システムの構成図。
【図２】本発明の一実施例に係るＳＩＰパケット処理方法の流れを示すフローチャート。
【図３】エレメントリスト及び更新エレメントリストの模式図。
【図４】ＳＩＰベースの電話システムにおける通信手順を示す図。
【図５】ＳＩＰパケットの一例。
【図６】ネットワーク上で受信され、生成されるＳＩＰパケットの記載の変更の例を示す図。
【符号の説明】
【００５０】
１…パケット処理装置
２…パケット処理部
３…受信パケット
４…送信パケット
５…受信部
６…送信部
１０…ブロックエレメント作成手段
１１…行エレメント作成手段
１２…語句エレメント作成手段
１３…エレメントリスト作成手段
１４…書換手段
１５…更新エレメントリスト作成手段
１６…パケット生成手段
２０…メモリ
【図１】
2007013755.tif 000003
【図２】
2007013755.tif 000004
【図３】
2007013755.tif 000005
【図４】
2007013755.tif 000006
【図５】
2007013755.tif 000007
【図６】
2007013755.tif 000008