(57)【要約】【課題】ＳＩＰ信号の受信順序の入れ替わりを防止すること。【解決手段】ＵＤＰ取り出しスレッド部１３において、ＵＤＰソケットバッファ部１２から取り出した対象ＳＩＰリクエスト信号のＣＳｅｑ値が、当該対象ＳＩＰリクエスト信号と同一のダイアログであって全てのＵＤＰ取り出しスレッド部１３によって最後に処理されたＳＩＰリクエスト信号のＣＳｅｑ値よりも２以上大きい場合、対象ＳＩＰリクエスト信号を一定時間スリープさせた後に該当ダイアログのダイアログキューへ格納する。【選択図】図１
2016032191.tif 000002
【特許請求の範囲】
【請求項１】
受信した複数のＳＩＰ信号を記憶する第１の記憶手段と、
前記第１の記憶手段から各ＳＩＰ信号を時間的に並列に取り出し、ＳＩＰ信号に含まれるシーケンス値を用いて各ＳＩＰ信号を受信順に第２の記憶手段へ記憶させる複数の取り出し手段と、
を有することを特徴とするＳＩＰサーバ。
【請求項２】
前記シーケンス値は、ＣＳｅｑヘッダに含まれるＣＳｅｑ値であり、
前記複数の取り出し手段は、それぞれ、
取り出した対象ＳＩＰ信号のＣＳｅｑ値が、前記対象ＳＩＰ信号と同一のダイアログであって全ての取り出し手段によって最後に記憶処理されたＳＩＰ信号のＣＳｅｑ値よりも２以上大きい場合、前記対象ＳＩＰ信号を一定時間スリープさせた後に前記第２の記憶手段へ記憶させることを特徴とする請求項１に記載のＳＩＰサーバ。
【請求項３】
ＳＩＰサーバで行うＳＩＰ信号の受信順序入れ替わり防止方法において、
第１の記憶手段により、受信した複数のＳＩＰ信号を記憶する第１のステップと、
複数の取り出し手段により、前記第１の記憶手段から各ＳＩＰ信号を時間的に並列に取り出し、ＳＩＰ信号に含まれるシーケンス値を用いて各ＳＩＰ信号を受信順に第２の記憶手段へ記憶させる第２のステップと、
を有することを特徴とするＳＩＰ信号の受信順序入れ替わり防止方法。
【請求項４】
前記シーケンス値は、ＣＳｅｑヘッダに含まれるＣＳｅｑ値であり、
前記第２のステップでは、
取り出した対象ＳＩＰ信号のＣＳｅｑ値が、前記対象ＳＩＰ信号と同一のダイアログであって全ての取り出し手段によって最後に記憶処理されたＳＩＰ信号のＣＳｅｑ値よりも２以上大きい場合、前記対象ＳＩＰ信号を一定時間スリープさせた後に前記第２の記憶手段へ記憶させることを特徴とする請求項３に記載のＳＩＰ信号の受信順序入れ替わり防止方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＰ信号を処理する技術に関する。
【背景技術】
【０００２】
現在、ＳＩＰ信号を処理するＳＩＰサーバが存在する。かかるＳＩＰサーバでは、ＳＩＰのトランスポートプロトコルとしてＵＤＰが利用される（非特許文献１）。図１０を参照しながら、ＳＩＰのトランスポートプロトコルにＵＤＰが採用された従来のＳＩＰサーバ１００の動作を説明する。
【０００３】
まず、ネットワークカード１１でＳＩＰ信号を受信するとＵＤＰソケットバッファ部１２に順次格納する。次に、ＵＤＰ取り出しスレッド部１３がＵＤＰソケットバッファ部１２からＳＩＰ信号を取り出し、そのＳＩＰ信号内の各種ヘッダのフォーマットチェック等を実行した後に、Ｃａｌｌ−ＩＤヘッダ等に設定された値を基にダイアログを特定し、ダイアログ毎に用意されたダイアログキューに格納する。ダイアログキュー部１４に格納されたＳＩＰ信号はＦＩＦＯで呼処理スレッド部１５へ渡され、呼処理のためのＳＩＰ信号処理が行われる。
【０００４】
このようなＳＩＰサーバ１００では、ＢＨＣＡ（Busy Hour Call Attempts：最繁時呼数）を向上するため、複数のＵＤＰ取り出しスレッド部１３が起動され、ＳＩＰ信号の取り出し処理が時間的に並列に実行される。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】J. Rosenberg、外７名、“SIP: Session Initiation Protocol”、Network Working Group、RFC3261、2002年6月
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、複数のＵＤＰ取り出しスレッド部によりＳＩＰ信号が並列的に取り出されるため、同一のＳＩＰ端末から連続して送信された複数のＳＩＰ信号を短期間で連続受信した場合、受信した順序とは異なる順序でダイアログキュー部に格納される可能性がある（図１１参照）。この場合、呼処理スレッド部に渡されるＳＩＰ信号の順序が本来の順序（ＳＩＰ端末からの受信順序）と入れ替わる可能性があるため、ＳＩＰ端末を操作したユーザの意図しない動作を提供することになる。
【０００７】
本発明は、上記事情を鑑みてなされたものであり、ＳＩＰ信号の受信順序の入れ替わりを防止することを目的とする。
【課題を解決するための手段】
【０００８】
以上の課題を解決するため、請求項１に記載のＳＩＰサーバは、受信した複数のＳＩＰ信号を記憶する第１の記憶手段と、前記第１の記憶手段から各ＳＩＰ信号を時間的に並列に取り出し、ＳＩＰ信号に含まれるシーケンス値を用いて各ＳＩＰ信号を受信順に第２の記憶手段へ記憶させる複数の取り出し手段と、を有することを要旨とする。
【０００９】
請求項２に記載のＳＩＰサーバは、請求項１に記載のＳＩＰサーバにおいて、前記シーケンス値は、ＣＳｅｑヘッダに含まれるＣＳｅｑ値であり、前記複数の取り出し手段は、それぞれ、取り出した対象ＳＩＰ信号のＣＳｅｑ値が、前記対象ＳＩＰ信号と同一のダイアログであって全ての取り出し手段によって最後に記憶処理されたＳＩＰ信号のＣＳｅｑ値よりも２以上大きい場合、前記対象ＳＩＰ信号を一定時間スリープさせた後に前記第２の記憶手段へ記憶させることを要旨とする。
【００１０】
請求項３に記載のＳＩＰ信号の受信順序入れ替わり防止方法は、ＳＩＰサーバで行うＳＩＰ信号の受信順序入れ替わり防止方法において、第１の記憶手段により、受信した複数のＳＩＰ信号を記憶する第１のステップと、複数の取り出し手段により、前記第１の記憶手段から各ＳＩＰ信号を時間的に並列に取り出し、ＳＩＰ信号に含まれるシーケンス値を用いて各ＳＩＰ信号を受信順に第２の記憶手段へ記憶させる第２のステップと、を有することを要旨とする。
【００１１】
請求項４に記載のＳＩＰ信号の受信順序入れ替わり防止方法は、請求項３に記載のＳＩＰ信号の受信順序入れ替わり防止方法において、前記シーケンス値は、ＣＳｅｑヘッダに含まれるＣＳｅｑ値であり、前記第２のステップでは、取り出した対象ＳＩＰ信号のＣＳｅｑ値が、前記対象ＳＩＰ信号と同一のダイアログであって全ての取り出し手段によって最後に記憶処理されたＳＩＰ信号のＣＳｅｑ値よりも２以上大きい場合、前記対象ＳＩＰ信号を一定時間スリープさせた後に前記第２の記憶手段へ記憶させることを要旨とする。
【発明の効果】
【００１２】
本発明によれば、ＳＩＰ信号の受信順序の入れ替わりを防止できる。
【図面の簡単な説明】
【００１３】
【図１】ＳＩＰサーバの機能ブロック構成を示す図である。
【図２】ＣＳｅｑ値管理テーブルの構成例を示す図である。
【図３】ＣＳｅｑチェック対象管理テーブルの構成例を示す図である。
【図４】ＳＩＰ信号の受信順序入れ替わり防止処理フローを示す図である。
【図５】ＣＳｅｑチェック対象管理テーブルの構成例を示す図である。
【図６】ＣＳｅｑ値管理テーブルの構成例を示す図である。
【図７】ＣＳｅｑ値管理テーブルの構成例を示す図である。
【図８】ＣＳｅｑ値管理テーブルの構成例を示す図である。
【図９】ＣＳｅｑ値管理テーブルの構成例を示す図である。
【図１０】従来のＳＩＰサーバの機能ブロック構成を示す図である。
【図１１】課題を説明する際の参照図である。
【発明を実施するための形態】
【００１４】
本発明の目的は、ＳＩＰサーバが受信した同一ダイアログに対する複数のＳＩＰリクエスト信号の呼処理の順序を信号の受信順序と同じにすることにある。この目的を実現するため、ＳＩＰリクエスト信号の処理順序の判定には、ＳＩＰリクエスト信号内のＣＳｅｑヘッダに設定されているシーケンス値を利用する。
【００１５】
非特許文献１には、ＣＳｅｑヘッダには符号なしの整数値が設定されることが規定されており、ＳＩＰ端末が新しいＳＩＰリクエスト信号を送信する場合、以前に送信したＳＩＰリクエスト信号のＣＳｅｑ値に１だけインクリメントした値をＣｓｅｑヘッダに設定しなければならない。
【００１６】
したがって、ＵＤＰ取り出しスレッド部でＳＩＰリクエスト信号を処理する際に、同一ダイアログで最後に処理したＳＩＰリクエスト信号のＣＳｅｑ値と受信したＳＩＰリクエスト信号のＣＳｅｑ値とを比較し、受信した信号のＣＳｅｑ値が上記最後に処理した信号のＣＳｅｑ値よりも２以上大きい場合には、取り出したＳＩＰリクエスト信号よりも前に処理されるべき信号が１つ以上あるとみなすことができる。
【００１７】
そこで、ＣＳｅｑ値を比較して２以上大きかった場合は、ダイアログキュー部にＳＩＰリクエスト信号を格納する前にスリープ処理を行い、その後に最新のＣＳｅｑ値を用いて再度チェックする。そして、最新のＣＳｅｑ値と取り出したＳＩＰリクエスト信号のＣＳｅｑ値との差が１になっていれば、取り出したＳＩＰリクエスト信号よりも前に処理される信号はなくなったとみなすことができる。もし、最新のＣＳｅｑ値と比較した結果、値の差が２以上のままであれば、先に処理すべき信号がまだ残っているとみなすことができるので、再度、スリープ処理と、最新のＣＳｅｑ値とのチェック処理とを行う。
【００１８】
ただし、途中経路でのパケットロス発生等により、ＳＩＰサーバが最後に処理したＣＳｅｑ値＋１のＣＳｅｑ値を持つＳＩＰリクエスト信号を受信していない場合もあるので、スリープ処理回数は別に規定されている最大回数を超えないようにする。また、非特許文献１での規定上、ＣＡＮＣＥＬやＡＣＫのようにＣＳｅｑ値がインクリメントされないＳＩＰリクエスト信号もあるため、ＣＳｅｑ値をチェックするための信号一覧を別に保持し、そこに保持されている信号のみを上記のチェック対象とする。以下、本発明を実施する一実施の形態について図面を用いて説明する。
【００１９】
図１は、本実施の形態に係るＳＩＰサーバ１００の機能ブロック構成を示す図である。このＳＩＰサーバ１００は、ネットワークカード１１と、ＵＤＰソケットバッファ部１２と、ＵＤＰ取り出しスレッド部１３と、ダイアログキュー部１４と、呼処理スレッド部１５と、データメモリ部１６と、を備えて構成される。
【００２０】
ネットワークカード１１は、ＳＩＰ信号等のパケットデータを送受信する。ＩＰネットワークＮを介してＳＩＰ端末３００からのＳＩＰ信号を受信した場合、その受信順でＵＤＰソケットバッファ部１２に格納するように構成されている。
【００２１】
ＵＤＰソケットバッファ部１２は、ネットワークカード１１で受信したＳＩＰ信号を記憶するように構成されている。
【００２２】
ＵＤＰ取り出しスレッド部１３は、複数で構成され、ＵＤＰソケットバッファ部１２から各ＳＩＰ信号を時間的に並列に取り出し、そのＳＩＰ信号内の各種ヘッダのフォーマットチェック等を実行した後に、Ｃａｌｌ−ＩＤヘッダ等に設定された値を基にダイアログを特定する。そして、取り出した対象ＳＩＰ信号に含まれるＣＳｅｑ値と全てのＵＤＰ取り出しスレッド部で最後に処理したＳＩＰ信号のＣＳｅｑ値とを比較し、その比較結果に基づき対象ＳＩＰ信号を一定時間スリープさせた後又はスリープさせることなくダイアログキュー部１４に各ＳＩＰ信号の受信順で格納するように構成されている。
【００２３】
ダイアログキュー部１４は、ダイアログの種別毎にダイアログキューを備え、各ＵＤＰ取り出しスレッド部１３で取り出されたＳＩＰ信号を所定ダイアログのダイアログキューに格納し、ＦＩＦＯ（First In, First Out）で呼処理スレッド部１５に渡すように構成されている。
【００２４】
呼処理スレッド部１５は、ダイアログキュー部１４から渡されたＳＩＰ信号の内容に応じた呼処理（呼の接続や切断等）を行うように構成されている。
【００２５】
データメモリ部１６は、ＣＳｅｑ値管理テーブル、ＣＳｅｑチェック対象信号管理テーブル、処理待ち合わせ時間、最大待ち合わせ回数、を記憶するように構成されている。ＣＳｅｑ値管理テーブルとは、ダイアログと当該ダイアログで利用されている最新のＣＳｅｑ値とを管理するテーブルである。図２に示すように、あるダイアログの最新のＣＳｅｑ値が格納され、ＵＤＰ取り出しスレッド部１３がＳＩＰ信号をダイアログキュー部１４に格納するタイミングで更新される。ＣＳｅｑチェック対象管理テーブルとは、ＣＳｅｑ値をチェックする対象ＳＩＰ信号の種別を記録したテーブルである。図３に示すように、ＣＳｅｑ値がインクリメントされるＳＩＰ信号の種別のみが記録されている。処理待ち合わせ時間には、ＵＤＰ取り出しスレッド部１３でＳＩＰ信号をスリープさせる時間が設定されている。最大待ち合わせ回数には、全てのＵＤＰ取り出しスレッド部１３でスリープ処理を行う最大回数が設定されている。
【００２６】
次に、このＳＩＰサーバ１００で行うＳＩＰ信号の受信順序入れ替わり防止方法を説明する。図４は、ＵＤＰ取り出しスレッド部１３で行われるＳＩＰ信号の受信順序入れ替わり防止処理フローを示す図である。
【００２７】
まず、ステップＳ１において、ＵＤＰソケットバッファ部１２からＳＩＰリクエスト信号（対象ＳＩＰリクエスト信号）を取り出した後、ステップＳ２において、その対象ＳＩＰリクエスト信号のフォーマットをチェックしてダイアログを特定する。
【００２８】
次に、ステップＳ３において、対象ＳＩＰリクエスト信号のダイアログがＣＳｅｑ値管理テーブルに存在するかを判定する。存在しない場合はステップＳ４へ進み、対象ＳＩＰリクエスト信号のダイアログとＣＳｅｑ値とを対応付けてＣＳｅｑ値管理テーブルに登録し、ステップＳ１５へ進む。一方、ＣＳｅｑ値管理テーブルに存在する場合はステップＳ５へ進む。
【００２９】
次に、ステップＳ５において、ＣＳｅｑチェック対象信号管理テーブルを参照し、対象ＳＩＰリクエスト信号がＣＳｅｑ値チェック対象のＳＩＰリクエスト信号であるかを判定する。対象でない場合、つまり、ＣＡＮＣＥＬやＡＣＫのようにＣＳｅｑ値がインクリメントされないＳＩＰリクエスト信号の場合はステップＳ１５へ進む。一方、対象である場合はステップＳ６へ進む。
【００３０】
次に、ステップＳ６において、待ち合わせ回数をカウントするためのカウンタ値ｌを０に設定した後、ステップＳ７において、対象ＳＩＰリクエスト信号に含まれるＣＳｅｑ値から、ＣＳｅｑ値管理テーブルに格納されている同一ダイアログのＣＳｅｑ値を引いたＣＳｅｑ差分値ｎを求め、ステップＳ８において、そのＣＳｅｑ差分値ｎが２以上であるかを判定する。ｎ＜２の場合は対象ＳＩＰリクエスト信号よりも前に処理される信号はないとみなし、その対象ＳＩＰリクエスト信号をスリープ処理することなくステップＳ１２へ進む。一方、ｎ≧２の場合は先に処理すべき信号がまだ残っているとみなし、ステップＳ９へ進む。
【００３１】
次に、ステップＳ９において、処理待ち合わせ時間に設定された時間分だけ対象ＳＩＰリクエスト信号をスリープさせ、ステップＳ１０において、カウンタ値ｌをインクリメントした後に、ステップＳ１１において、そのカウンタ値ｌが最大待ち合わせ回数以下であるかを判定する。ｌ≦最大待ち合わせ回数の場合はステップＳ７に戻る。一方、ｌ＞最大待ち合わせ回数の場合は再度スリープ処理を行うことなくステップＳ１２へ進む。
【００３２】
次に、ステップＳ１２において、対象ＳＩＰリクエスト信号がＢＹＥの信号であるかを判定する。ＢＹＥ信号でない場合は、ステップＳ１３において、ＣＳｅｑ値管理テーブルのＣＳｅｑ値を対象ＳＩＰリクエスト信号のＣＳｅｑ値で更新する。一方、ＢＹＥ信号である場合は、ステップＳ１４において、ＣＳｅｑ値管理テーブルから該当のダイアログを削除する。
【００３３】
最後に、ステップＳ１５において、対象ＳＩＰリクエスト信号を該当ダイアログのダイアログキューに格納する。これにより、同一ダイアログに対する複数のＳＩＰリクエスト信号が受信した順序で格納されるため、呼処理スレッド部１５により当該順序で呼処理されることになる。
【００３４】
引き続き、図４に示した処理フローに基づき、ＳＩＰ信号の受信順序入れ替わり防止処理動作を具体的に説明する。ただし、ＣＳｅｑチェック対象管理テーブルの構成は図５とし、ＣＳｅｑ値管理テーブルの構成は図６とする。
【００３５】
まず、ＳＩＰ端末３００からＩｎｉｔｉａｌ−ＩＮＶＩＴＥ信号（ＣＳｅｑ値＝１２３４５）が送信された場合を説明する。ＳＩＰサーバ１００は、Ｉｎｉｔｉａｌ−ＩＮＶＩＴＥ信号を受信すると、ネットワークカード１１を経由してＵＤＰソケットバッファ部１２に格納する。その後、ＵＤＰ取り出しスレッド部（＃１）１３ａがＩｎｉｔｉａｌ−ＩＮＶＩＴＥ信号をＵＤＰソケットバッファ部１２から取り出し、フォーマットチェック及びダイアログ判定処理を行う。このダイアログは現在のＣＳｅｑ値管理テーブル（図６）に存在しないため、既存ダイアログではなく新規ダイアログと判定し、ダイアログＣとして管理する。このとき、ＣＳｅｑ値管理テーブルにダイアログＣ用の新規レコードを生成し、ＣＳｅｑ値にＩｎｉｔｉａｌ−ＩＮＶＩＴＥ信号のＣＳｅｑ値を設定する。このときのＣＳｅｑ値管理テーブルの構成を図７に示す。そして、ダイアログキューＣにＩｎｉｔｉａｌ−ＩＮＶＩＴＥ信号を格納する。その後、呼処理スレッド部１５によりＩｎｉｔｉａｌ−ＩＮＶＩＴＥ信号が処理される。
【００３６】
続いて、ＳＩＰ端末３００からダイアログＣのＡＣＫ信号が送信された場合を説明する。ＳＩＰサーバ１００は、ネットワークカード１１を経由してＡＣＫ信号をＵＤＰソケットバッファ部１２に格納する。その後、ＵＤＰ取り出しスレッド部（＃１）１３ａがＡＣＫ信号をＵＤＰソケットバッファ部１２から取り出し、フォーマットチェック及びダイアログ判定処理を行う。ダイアログＣは現在のＣＳｅｑ値管理テーブル（図７）に存在するため、既存ダイアログと判定する。引き続き、ＣＳｅｑチェック対象信号かを判定するが、ＣＳｅｑチェック対象信号管理テーブル（図５）にＡＣＫは登録されていないため、スリープ処理を行うことなくダイアログキューＣにＡＣＫ信号を格納する。その後、呼処理スレッド部１５によりＡＣＫ信号が処理される。
【００３７】
続いて、ＳＩＰ端末３００から、ダイアログＣのＵＰＤＡＴＥ信号（ＣＳｅｑ＝１２３４６）が送信され、その直後にＩＮＦＯ信号（ＣＳｅｑ＝１２３４７）が送信された場合を説明する。ＳＩＰサーバ１００は、ネットワークカード１１を経由してＵＰＤＡＴＥ信号とＩＮＦＯ信号をＵＤＰソケットバッファ部１２に格納する。その後、ＵＤＰ取り出しスレッド部（＃１）１３ａがＵＰＤＡＴＥ信号をＵＤＰソケットバッファ部１２から取り出し、それと同時にＵＤＰ取り出しスレッド部（＃２）１３ｂがＩＮＦＯ信号を取り出す。そして、各ＵＤＰ取り出しスレッド部（＃１）１３ａ，（＃２）１３ｂでフォーマットチェック及びダイアログ判定処理をそれぞれ行う。ダイアログＣは現在のＣＳｅｑ値管理テーブル（図７）に存在するため、既存ダイアログと判定する。
【００３８】
引き続き、各ＵＤＰ取り出しスレッド部（＃１）１３ａ，（＃２）１３ｂは、ＣＳｅｑチェック対象信号かをそれぞれ判定する。ＵＰＤＡＴＥ、ＩＮＦＯともにＣＳｅｑチェック対象信号管理テーブル（図５）に存在するので、「受信信号のＣＳｅｑ値−ＣＳｅｑ値管理テーブルのＣＳｅｑ値」の値を算出する。ＵＤＰ取り出しスレッド部（＃１）１３ａでのＣＳｅｑ差分値ｎは１、ＵＤＰ取り出しスレッド部（＃１）１３ａでは２となる。ＵＤＰ取り出しスレッド部（＃１）１３ａは、ｎ＜２のため、スリープ処理を行うことなくＣＳｅｑ値管理テーブルのＣＳｅｑ値をＵＰＤＡＴＥのＣＳｅｑ値で更新する。このときのＣＳｅｑ値管理テーブルの構成を図８に示す。一方、ＵＤＰ取り出しスレッド部（＃２）１３ｂは、ｎ≧２のため、「処理待ち合わせ時間」に設定された時間分だけスリープ処理を行う。
【００３９】
その後、ＵＤＰ取り出しスレッド部（＃１）１３ａは、ＵＰＤＡＴＥ信号をダイアログキューＣに格納する。一方、ＵＤＰ取り出しスレッド部（＃２）１３ｂは、上記スリープ処理の完了後に、「受信信号のＣＳｅｑ値−ＣＳｅｑ値管理テーブルのＣＳｅｑ値」の値を再度算出する。ＣＳｅｑ値管理テーブルのＣＳｅｑ値は更新されているため、ＣＳｅｑ差分値ｎは１となる。それゆえ、スリープ処理を再度行うことなくＣＳｅｑ値管理テーブルのＣＳｅｑ値をＩＮＦＯのＣＳｅｑ値で更新する。このときのＣＳｅｑ値管理テーブルの構成を図９に示す。
【００４０】
その後、呼処理スレッド部１５により、まずＵＰＤＡＴＥ信号が処理される。このとき、ＵＤＰ取り出しスレッド部（＃２）１３ｂがＩＮＦＯ信号をダイアログキューＣに格納するので、呼処理スレッド部１５により次にＩＮＦＯ信号が処理される。これにより、ＵＰＤＡＴＥ信号とＩＮＦＯ信号が受信順序で処理されることになる。
【００４１】
以上より、本実施の形態では、ＵＤＰ取り出しスレッド部１３において、ＳＩＰリクエスト信号のＣＳｅｑ値を比較し、待ち合わせを行うようにしている。つまり、ＵＤＰソケットバッファ部１２から取り出した対象ＳＩＰリクエスト信号のＣＳｅｑ値が、当該対象ＳＩＰリクエスト信号と同一のダイアログであって全てのＵＤＰ取り出しスレッド部１３によって最後に処理されたＳＩＰリクエスト信号のＣＳｅｑ値よりも２以上大きい場合、対象ＳＩＰリクエスト信号を一定時間スリープさせた後に該当ダイアログのダイアログキューへ格納するので、先に受信したＳＩＰリクエスト信号を先にダイアログキューへ格納できる。これにより、ＵＤＰ取り出しスレッドを複数化した際に発生する可能性のあるＳＩＰリクエスト信号の受信順序の入れ替わり（ＳＩＰ信号の受信順序と処理順序の逆転）を防止できる。
【００４２】
最後に、本実施の形態で説明したＳＩＰサーバ１００をプログラムとして構築し、コンピュータにインストールして実行させることや、通信ネットワークを介して流通させることも可能である。
【符号の説明】
【００４３】
１００…ＳＩＰサーバ
１１…ネットワークカード
１２…ＵＤＰソケットバッファ部（第１の記憶手段）
１３…ＵＤＰ取り出しスレッド部（取り出し手段）
１４…ダイアログキュー部（第２の記憶手段）
１５…呼処理スレッド部
１６…データメモリ部
３００…ＳＩＰ端末
Ｎ…ＩＰネットワーク
Ｓ１〜Ｓ１５…ステップ
【図１】
2016032191.tif 000003
【図２】
2016032191.tif 000004
【図３】
2016032191.tif 000005
【図４】
2016032191.tif 000006
【図５】
2016032191.tif 000007
【図６】
2016032191.tif 000008
【図７】
2016032191.tif 000009
【図８】
2016032191.tif 000010
【図９】
2016032191.tif 000011
【図１０】
2016032191.tif 000012
【図１１】
2016032191.tif 000013