説明

移動局のアプリケーションが生のパケット化されたデータを受信および送信するための方法および装置

【課題】移動局のアプリケーションが無線通信システムにおいて生のパケット化されたデータを受信および送信するための方法および装置を提供する。
【解決手段】移動局のアプリケーションは少なくとも1つのソケットを生成する。通信プロトコルスタックの移動局のプロトコル層は、カプセル化され、宛先ポートの情報を欠いている生のパケット化されたデータを通信ネットワークから受信する。移動局のプロトコル層は、逆カプセル化された生のパケット化されたデータを、生成されたソケットへ送る。そして、生成されたソケットが、生のパケット化されたデータを移動局のアプリケーションへ送る。別の構成では、生成されたソケットは、移動局のアプリケーションの生のパケット化されたデータを、移動局のプロトコル層へ送る。そして、移動局のプロトコル層が、カプセル化された生のパケット化されたデータを通信ネットワークへ送る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概ね、無線通信の分野に関する。とくに、本発明は無線通信システムにおいて移動局のアプリケーションが生のパケット化されたデータを受信および送信するための斬新な方法および装置に関する。
【背景技術】
【0002】
A.無線通信
無線通信およびコンピュータに関係する技術における最近の革新、並びにインターネット加入者の今までにない増加によって、モバイルコンピューティングへの道が開かれた。事実、モバイルコンピューティングの大衆性により、現在のインターネットのインフラストラクチャに対して、モバイルのユーザにより多くのサポートを与える要求が強まった。このインフラストラクチャの原動力は、種々のサービスを提供するパケット指向のインターネットプロトコル(Internet Protocol, IP)であり、種々のサービスには、パケット(データグラム)をローカルエリアネットワーク(local area network, LAN)とワイドエリアネットワーク(wide area network, WAN)との間でアドレス指定してルート設定するサービスが含まれる。IPプロトコルは、Request For Comment(RFC 791)(“INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION”, 1981 9)において規定されている。
【0003】
IPプロトコルは、送信のためにデータをIPパケットへカプセル化するネットワーク層プロトコルである。アドレス指定およびルート設定の情報はパケットのヘッダに付される。IPヘッダには、例えば送信ホストおよび受信ホストを識別する32ビットのアドレスが含まれている。中間のルータはこれらのアドレスを使用して、パケットを、意図されたアドレスをもつその最終的な宛先へ向わせるためのネットワーク上の経路を選択する。したがって、IPプロトコルにより、世界中の何れかのインターネットノードにおいて発信されたパケットを、世界中の他の何れかのインターネットノードへルート設定することができる。これに対して、特定のアプリケーションに対処するためには、伝送制御プロトコル(Transmission Control Protocol, TCP)またはユーザデータグラムプロトコル(User Datagram Protocol, UDP)の何れかを含むトランスポート層が使用される。
【0004】
現在の傾向では、モバイルのユーザはラップトップまたはパームトップコンピュータのようなモバイルコンピュータを、セルラまたは携帯電話のような無線通信デバイスと共に使用して、インターネットにアクセスしている。したがって、ちょうど、従来からユーザが“有線の”通信デバイスを使用してコンピュータを陸上ネットワーク(land-based network)へ接続していたように、モバイルのユーザは一般的に“移動局”(mobile station, MS)と呼ばれる無線通信デバイスを使用してモバイル端末をこのようなネットワークへ接続する。本明細書で使用しているように、移動局またはMSは、公共の無線ラジオネットワーク(wireless radio network)の加入者局を指す。
【0005】
(従来技術を示している)図1は、無線データ通信システムの高レベルのブロック図を示しており、この中でMS110は基地局/移動局スイッチングセンタ(Base Station/Mobile Switching Center, BS/MSC)106を介して相互接続機能(Interworking Function, IWF)108と通信する。IWF108は、インターネットへのアクセス点として働く。IWF108はBS/MSC106に接続されていて、一緒に位置していることも多く、BS/MSC106はこの技術において知られているように従来の無線基地局であってもよい。無線データ通信システムに対処する別の標準プロトコルは、“WIRELESS IP NETWORK STANDARD”というタイトルで1999年12月に発行された第3世代パートナーシッププロジェクト2(3rd Generation Partnership Project 2, “3GPP2”)である。3G無線IPネットワークの標準規格には、例えば、IWF108のように機能するパケットデータ供給ノード(Packet Data Serving Node, PDSN)が含まれる。
【0006】
種々のプロトコルが、MS110とIWF108との間のデータ通信に対処している。例えば、米国電気通信工業会(Telecommunications Industry Association, TIA)/電子機械工業会(Electronics Industries Association, EIA)の暫定的標準規格(Interim Standard)のIS−95は、“MOBILE STATION-BASE STATION COMPATIBILITY STANDARD FOR DUAL-MODE WIDEBAND SPREAD SPECTRUM CELLULAR SYSTEM”というタイトルで1993年7月に発行されていて、これは概して広帯域拡散スペクトル無線通信システムの標準規格を与えている。さらに加えて、標準規格のTIA/EIA IS−707.5は、“DATA SERVICE OPTIONS FOR WIDEBAND SPREAD SPECTRUM SYSTEMS: PACKET DATA SERVICES”というタイトルで1998年2月に発行されていて、これはTIA/EIA IS−95のシステムのパケットデータ伝送能力のサポート要件を規定し、BS/MSC106を介してのMS110とIWF108との間の通信に使用できるパケットデータ伝達サービスを指定している。さらに加えて、“DATA SERVICE OPTIONS FOR SPREAD SPECTRUM SYSTEMS: PACKET DATA SERVICES”というタイトルのTIA/EIA IS−707−A.5の標準規格と、“DATA SERVICE OPTIONS FOR SPREAD SPECTRUM SYSTEMS: HIGH-SPEED PACKET DATA SERVICES”というタイトルのTIA/EIA IS−707−A.9の標準規格とは、両者とも1999年3月に発行されており、これらもTIA/EIA IS−95のシステムのパケットデータ伝送のサポート要件を規定している。さらに加えて、MS110とIWF108との間の通信に対処している別の標準規格のプロトコルにはTIA/EIA IS−2000があり、これは“INTRODUCTION TO CDMA 2000 STANDARDS FOR SPREAD SPECTRUM SYSTEMS”というタイトルで1999年7月に発行されている。
【0007】
IS−707.5では、MS110とBS/MSC106(Umインターフェイス)との間およびBS/MSC106とIWF108(Lインターフェイス)との間の通信プロトコルのオプションモデルを取り入れている。例えば、中継モデルは、ポイント−ツウ−ポイントプロトコル(Point to Point Protocol, PPP)のリンクがMS110とIWF108との間のUmインターフェイス上に存在している情況を表わしている。PPPプロトコルは、Request For Comment(RFC 1661)(“THE POINT-TO-POINT PROTOCOL (PPP)”)に詳しく記載されている。
【0008】
(従来技術を示している)図2は、IS−707.5の中継モデルの各エンティティ内のプロトコルスタックの図である。図の左端には、従来の垂直形のフォーマットで示された通信プロトコルスタックが記載されており、これはMS110上で実行されるプロトコル層を示している。MS110のプロトコルスタックは、Umインターフェイスを通してBS/MSC106のプロトコルスタックへ論理的に接続されているように示されている。また、MS/MSC106のプロトコルスタックは、Lインターフェイスを通してIWF108のプロトコルスタックへ論理的に接続されているように示されている。
【0009】
図2は次に記載する動作が行われることを示している。すなわち、MS110上で実行される上位層プロトコル200のエンティティ、例えばアプリケーションプログラムは、インターネットを通してデータを送る必要がある。代表的なアプリケーションには、ウエブブラウザプログラム(例えば、Netscape Navigator(ネットスケープナビゲータ)(商標)、Microsoft Internet explorer(マイクロソフトインターネットエクスプローラ)(商標))がある。ウエブブラウザには、ハイパーリンク“http://www.Qualcomm.com/”のようなユニバーサルリソースロケータ(Universal Resource Locator, URL)が必要である。同じく上位層プロトコル200内のドメイン名システム(Domain Name System (DNS))プロトコルは
ドメイン名の分解(resolution)を使用して、名前をインターネットのアドレスへ変換することによって、テキストホスト名www.Qualcom.comを32ビットの数字のIPアドレスへ変換する。同じく上位層プロトコル200であるハイパーテキスト転送プロトコル(Hypertext Transfer Protocol, HTTP)は、要求されているURLのためのGETメッセージを作成し、このメッセージを送るのに使用されるTCPおよびHTTPの動作を指定する。トランスポート層202では、宛先ポートとして、この技術において使用されているポート80を使用して、HTTPの動作をアプリケーションへルート設定する。
【0010】
TCPプロトコルは、トランスポート層プロトコル202であり、DNSによって指定されるIPアドレスとの接続を開き、アプリケーションレベルのHTTPのGETメッセージを送る。TCPプロトコルでは、IPプロトコルを使用してメッセージを転送することを指定している。IPプロトコルはネットワーク層プロトコル204であり、TCPパケットを指定されたIPアドレスへ送る。PPPはリンク層プロトコル206であり、IPパケットをコード化し、それらを中継層プロトコル208へ送る。中継層プロトコル208は、例えば、TIA/EIA−232Fの標準規格であり、TIA/EIA−232Fの標準規格は“INTERFACE BETWEEN DATA TERMINAL EQUIPMENT AND DATA CIRCUIT-TERMINATING EQUIPMENT EMPLOYING SERIAL BINARY DATA INTERCHANGE”に規定されており、1997年10月に発行されている。層間の伝送を規定するのに、この技術において普通の技能をもつ技術者に知られている他の標準規格またはプロトコルを使用できることが分かるであろう。例えば、他の応用可能な標準規格には、1998年9月に発行された“UNIVERSAL SERIAL BUS (USB) SPECIFICATION, Revision 1.1”と、1999年7月に発行された“BLUETOOTH(登録商標) SPECIFICATION VERSION 1.0A CORE”とが含まれる。最後に、PPPパケットは中継層プロトコル208から無線リンクプロトコル(Radio Link Protocol, RLP)210、次にIS−95プロトコル212を経由して、Umインターフェイスを通してBS/MSC106へ送られる。RLPプロトコル210はIS−707.2の標準規格に規定されており、IS−707.2の標準規格は“DATA SERVICE OPTIONS FOR WIDEBAND SPREAD SPECTRUM SYSTEMS: RADIO LINK PROTOCOL”というタイトルで1998年2月に発行されていて、IS−95プロトコルは上述で識別したIS−95の標準規格に規定されている。
【0011】
PPPパケットはUmインターフェイスを通してBS/MSC106上のIS−95の層218、次にRLPの層216へ送られ、相補的な中継層プロトコル220によって受信される。中継層プロトコル220は、このPPPパケットをLインターフェイスを通してIWF108上の中継層プロトコル228へ送る。IWF108上のPPPプロトコルリンク層226が中継層プロトコル228からPPPパケットを受信すると、MS110とIWF108との間のPPP接続は終了する。パケットは、IWF108上のPPP層226からIP層224へ送られ、IP層224では最後のルート設定のためにIPパケットのヘッダ(このシナリオではwww.Qualcomm.comである)を調べる。
【0012】
MS110によって生成されたIPパケットの最終的な宛先がIWF108ではないと仮定すると、パケットはネットワーク層プロトコル224、さらにリンク層プロトコル225を経由して、インターネット上の次のルータ(図示されていない)へ送られる。このやり方では、MS110からのIPパケットは、IS−707.5の標準規格の中継モデルにしたがって、BS/MSC106、およびIWF108を経由して、インターネット内の最終的な意図された宛先へ伝達される。
【0013】
MS110のパケットがその宛先へ到達する前に、先ずデータリンク接続が設定されなければならない。RFC1661に指定されているように、このデータリンク接続では、先ずポイント−ツウ−ポイントリンクの各終端(すなわち、PPPプロトコル206および226)がPPPリンク制御プロトコル(Link Control Protocol, LCP)へパケットを送って、データリンク接続を設定し、構成し、試験することが求められている。LCPによってリンクが設定された後で、PPPプロトコル206はネットワーク制御プロトコル(Network Control Protocol, NCP)のパケットを送って、ネットワーク層プロトコル204および224を構成する。PPPリンクにおけるIPのためのNCPはIP制御プロトコル(IP Control Protocol, IPCP)である。IPCPは、Request For Comment 1332(RFC 1332)に詳しく記載されており、RFC 1332は“THE PPP INTERNET PROTOCOL CONTROL PROTOCOL (IPCP)”というタイトルで1992年5月に発行されている。しかしながら、IPCPのネゴシエーションの前には、認証段階が必要である。各ネットワーク層プロトコルが構成された後では、各ネットワーク層プロトコルからのパケットは、プロトコル間のリンクを通して送られる。
【0014】
B.アプリケーションプログラムインターフェイス
MS110上の通信プロトコルスタックをサポートするプロセスは、その全てではないが、ほとんどがアプリケーションプログラムによって実行される。一般的に従来のデータネットワークでは、アプリケーションプログラムインターフェイス(application program interface, API)を採用して、あるコンピュータ上で実行されるアプリケーションプログラムと別のコンピュータ上で実行されるアプリケーションプログラムとの通信を可能にしている。APIは“ソケット”を使用して、基礎ネットワークのプロトコルの相違によって、呼出しているアプリケーションを保護する。ネットワーク間の通信(inter-networked communication)を実現するために、APIには、アプリケーションが、例えばソケットを開き、データをネットワークへ送り、ネットワークからデータを受信し、ソケットを閉じることを可能にする機能(function)が含まれている。通信ネットワークのプログラミングインターフェイスには、UNIX(登録商標)(ユニックス)(商標)のオペレーティングシステムのもとで動作するバークレイシステム開発(Berkeley System Development, BSD)のソケットインターフェイス、およびWindows(登録商標)(ウインドウズ)のオペレーティングシステムのもとで動作するWindows(登録商標)(ウインドウズ)Sockets Interface(ソケットインターフェイス) (WinSock(ウインソック)(登録商標))が含まれる。
【0015】
BSDソケットもWinSock(ウインソック)(登録商標)の何れも無線MS110上の通信プロトコルスタック(図2参照)をサポートしていないので、このようなスタックをサポートする斬新なAPIが必要である。とくに、無線通信システムにおいて移動局のアプリケーションが生のパケット化されたデータを受信および送信するための斬新な方法および装置が必要とされている。
【発明の概要】
【0016】
本発明では、移動局のアプリケーションが無線通信システムにおいて生のパケット化されたデータを受信および送信するための方法および装置を提供することによって、上述で識別した必要に対処している。1つの構成では、移動局のアプリケーションは少なくとも1つのソケットを生成する。移動局のプロトコル層の少なくとも1つは、宛先ポートの情報を欠いているカプセル化された生のパケット化されたデータを通信ネットワークから受信する。移動局のプロトコル層の少なくとも1つは、逆カプセル化された生のパケット化されたデータを少なくとも1つのソケットへ送る。そして今度は、少なくとも1つのソケットが生のパケット化されたデータを移動局のアプリケーションへ送る。別の構成では、少なくとも1つのソケットは、移動局のアプリケーションの生のパケット化されたデータを、移動局のプロトコル層の少なくとも1つへ送る。そして今度は、移動局のプロトコル層の少なくとも1つが、カプセル化された生のパケット化されたデータを通信ネットワークへ送る。
【図面の簡単な説明】
【0017】
【図1】(従来技術において)移動局がインターネットに接続している無線通信システムの高レベルのブロック図。
【図2】(従来技術において)TIA/EIA IS−707.5の中継モデルの各エンティティにおけるプロトコルスタックを模式的に示す図。
【図3】本発明の実施形態の特徴を模式的に示す図。
【図4】指定されたイベントを検出するフローチャート。
【図5】指定されたイベントを検出するフローチャート。
【図6】非同期接続を示すブロック図。
【図7】非同期ソケット入力を示すブロック図。
【図8】本発明の実施形態の状態図。
【図9】本発明の実施形態の状態図。
【図10】本発明の実施形態の状態図。
【発明を実施するための態様】
【0018】
本発明の実施形態は、ソフトウエア、ファームウエア、および/またはハードウエアを含む種々の構成において実現することができる。したがって、本発明の動作および働き(behavior)はソフトウエアコードまたはハードウエアの構成要素をとくに参照せずに記載されているが、この技術において普通の技能をもつ人には、本明細書の記述に基づいて、本発明を構成するソフトウエアまたはハードウエア、あるいはこの両者を設計でき、これにより移動局のアプリケーションが生のパケット化されたデータを受信および送信できることが分かるであろう。
【0019】
図3には、MS110内のアプリケーション260、通信プロトコルスタック280、およびAPI270が示されている。アプリケーション260および通信プロトコルスタック280(すなわち、プロトコル層202、204、206、208、210、212)は、API270によって与えられる機能呼出し(function call)によって通信する。言い換えると、API270は、アプリケーション260および通信プロトコルスタック280を機能を損わずに異なるプロセッサおよびオペレーティングシステム上で実行できるようにする。当業者には、本発明の技術的範囲から逸脱することなく、呼出された機能に対して種々の名前が可能であることが分かるであろう。
【0020】
通信プロトコルスタック280には、複数の送信待ち行列と受信待ち行列とが含まれていて、これらの待ち行列はデータを記憶することに注意すべきである。出力機能では、アプリケーション260のメモリからデータを読出し、そのデータを通信プロトコルスタック280の送信待ち行列の1つへ記憶する。入力機能では、通信プロトコルスタック280の受信待ち行列の1つからデータを読出し、そのデータをアプリケーション260のメモリへ記憶する。
【0021】
動作を示すために、MS110はIPパケットを受信する。MS110の通信プロトコルスタック280は、IPパケットを逆カプセル化して(unencapsulate)、それらをトランスポート層202へ送る(図3参照)。IPパケットヘッダ内の1つのフィールドはトランスポートを示していて、TCPまたはUDPの何れかでを含む。トランスポート層のヘッダにおいて指定されている宛先ポートの番号に基づいて、データは、特定のソケットに対応する通信プロトコルスタック280の適切な受信待ち行列へルート設定される。次にデータは、アプリケーション260へ送られる。
【0022】
一定の情況では、プロトコルスタック280の種々の層をバイパスするパケットを使用して動作して、待ち時間の影響を軽減することが望ましい。このようなパケットには、生のIPパケットのような生のパケット化されたデータが含まれているが、これには宛先の情報(すなわち、宛先ポートの番号)が欠けている。したがって、宛先のアプリケーションは、生のIPパケットから判断できない。このような情況では、通信プロトコルスタック280は受信した生のIPパケットを、例えばIPプロトコルをサポートするために登録されている全てのソケットへ送る。このようにしてペイロードデータは宛先のアプリケーションへ送られる。インターネット制御メッセージングプロトコル(Internet Control Messaging Protocol, ICMP)のパーシングエンジンはIPパケットに応答して、生のパケット化されたデータも受信することができる。周知のICMPのパーシングエンジンは、“INTERNET CONTROL MESSAGE PROTOCOL”というタイトルでRFC 792に規定されている。したがって、通信プロトコルスタック280は、受信したパケットを処理し、その後でパケットをスタックを逆上ってアプリケーション260へ送り、アプリケーション260が逆カプセル化する量を低減することが明らかである。
【0023】
逆に、アプリケーション260は、ソケットを使用することによって生のパケット化されたデータをUmインターフェイスを通して送り、通信プロトコルスタック280とアプリケーション260との間の通信を容易にすることもできる。さらに、アプリケーション260は、生のパケット化されたデータをUmインターフェイスを通して送ることもできる。また、通信プロトコルスタック280は、例えばパケット化された、または生のパケット化されたデータをIPパケットへカプセル化し、それらをUmインターフェイスを通して送る。この例では、通信プロトコルスタック280はIPヘッダおよびチェックサムを用意して、IPパケットを生成する。他方で、ICMPでは、指定されたプロトコルのタイプはIPヘッダへコピーされる。
【0024】
既に記載したように、アプリケーション260はソケットを生成し、ソケットはプロトコル層202、204、206、208、210、212の少なくとも1つとアプリケーション260との間のデータ通信が、通信プロトコルスタック280を使用するときに必ず伴う待ち時間を低減できるようにする。したがってアプリケーション260はソケットを生成し、ソケットはトランスポート層202、ネットワーク層204、およびリンク層206をバイパスして、アプリケーション260がRLP層210との間でペイロードデータを送受信できるようにする。さらに加えて、アプリケーション260はソケットを生成し、ソケットはアプリケーション260がIS−95の層212との間でペイロードデータを送受信できるようにする。
【0025】
1つの実施形態では、アプリケーション260は機能open netlib()を呼出して、通信プロトコルスタック280を開き、アプリケーションの識別を割り当てる。アプリケーションを識別すると、多数のアプリケーションが通信プロトコルスタック280と通信すること(すなわち、マルチタスキング)ができる。例えば、機能open netlib()の呼出しの一部として、アプリケーション260はネットワークコールバック機能およびソケットコールバック機能へのポインタを指定する。トラヒックチャンネル(すなわち、Um)またはリンク層(すなわち、PPP206)、あるいはこの両者から読出し、そこへ書込み、それを閉じるといった、ネットワークサブシステムの指定されたイベントが生成される(または、イネーブルされる)たびに、ネットワークコールバック機能が呼出されて、アプリケーション260に知らせる。トランスポート層(すなわち、TCP)から読出し、そこへ書込み、それを閉じるといったソケットの指定されたイベントが生成される(または、イネーブルされる)たびに、ソケットコールバック機能が呼出され、アプリケーション260へ知らされる。通信ネットワークがトラヒックチャンネル、リンク層、およびトランスポート層の少なくとも1つを含むことは、当業者には明らかである。
【0026】
通信プロトコルスタック280が開かれると、機能pppopen()が呼出され、トラヒックチャンネルおよびリンク層を含むネットワークサブシステムの接続を開始する。これはアプリケーション全体の呼であり、個々のソケットに依存していない。しかしながら、これはアプリケーションの識別を必要とする。ネットワークサブシステムの接続が設定されるか、またはそれが故障すると、ネットワークコールバック機能が呼出されて、指定されたイベントが通知される。例えば、トラヒックチャンネルが設定されていないときは、ネットワークサブシステムは故障する。さらに加えて、ネットワークサブシステムの特徴は、機能net ioctl()を呼出すことによって設定される。この呼出しは、例えば、ソケットのデータレートを指定する。
【0027】
ネットワークサブシステムの接続が設定されると、機能socket()を呼出すことによって、ソケットが生成されて初期設定される。しかしながら、ソケットの機能が使用できる前に、機能socket()を呼出して、ソケット記述子を戻してもよい。次に、アプリケーション260は機能async select()を呼出して、指定されたイベントを登録し、非同期の通知を受信する。この登録は、アプリケーション260によって機能呼出しの一部として実行され、指定されたイベントの要求する通知のソケット記述子およびビットマスクを指定する(すなわち、多数のイベントの論理和がとられる)。指定されたイベントが生成され(すなわち、イネーブルされ)、それが、例えば通信プロトコルスタック280またはAPI270によって検出されると、ソケットコールバック機能が呼出されて、非同期の通知を与える。コールバック機能では、信号、メッセージ、例えば遠隔手続き呼出し(remote procedure call, RPC)についてのメッセージ、あるいはハードウエアまたはソフトウエアの割込みを使用することによって、指定されたイベントのアプリケーション260を通知することができる。
【0028】
アプリケーション260は、指定されたイベントについて通知されると、機能getnextevent()を呼出して、指定されたイベントを判断してサービスする。この機能は、生成された指定されたイベントのマスクを指定されたソケット記述子へ戻す。さらに加えて、この機能は、生成された指定されたイベントのマスク内のビットをクリアする。したがって、アプリケーション260は、ディスエーブルされた指定されたイベントの通知を最早受信できない。アプリケーション260は、次に機能async select()を呼出すことによって、これらの指定されたイベントを再登録(すなわち、再イネーブル)しなければならない。
【0029】
さらに加えて、アプリケーション260は、指定されたイベントのビットマスク内の対応するビットをクリアすることによって、登録された指定されたイベントを変更する。ビットマスク内でビットが既にクリアされているときは、要求は単に無視される。簡潔に言えば、イベントの通知は、例えば機能async deselect()を呼出すことによって、イベントごとにディスエーブルされる。
【0030】
図4および5は、指定されたイベントを検出するフローチャートである。図4に示したように、例えばブロック400では、通信プロトコルスタック280は、アプリケーション260が指定されたイベントを登録するのを待つ。指定されたイベントが登録されると、ブロック402では、通信プロトコルスタック280はメモリをポーリングする。ブロック404では、ブロック402のポーリングされた情報に基づいて、指定されたイベントが検出される。ブロック406では、例えば通信プロトコルスタック280のメモリ(すなわち、送信待ち行列)が十分な量のデータを受け付けるのに使用可能であるときは、書込みイベントが検出される。データはアプリケーション260から送られる。ブロック404においてポーリングされた情報が十分でない(すなわち、指定されたイベントが生成されなかった)ときは、通信プロトコルスタック280は、ブロック402のように、メモリをポーリングし続ける。
【0031】
図5では、ブロック500に示したように、通信プロトコルスタック280は、アプリケーション260が指定されたイベントを登録するのを待つ。この時間の間は、割込み通知はディスエーブルされる。したがって、割込み通知はトリガすることも、トリガされることもできない。ブロック500において指定されたイベントが登録された後で、ブロック502において、指定されたイベントが生成されたことに基づいて、割込み通知がトリガされる。例えば、データが通信プロトコルスタック280(すなわち、受信待ち行列)のメモリへ書込まれるとき、読出しイベントが生成される。したがって、ブロック504では、イベントの生成によってトリガされた割込み通知を通信プロトコルスタック280が受信するとき、通信プロトコルスタック280は読出しイベントを検出する。通信プロトコルスタック280のメモリ内に記憶されるデータは、通信ネットワークから送られる。さらに、読出しイベントにおいて記憶されるデータは、アプリケーション260へ送られる。
【0032】
最後に、ソケットが再使用に利用できるとき、トランスポート層のようにデータリンク接続は終了しているので、閉鎖イベントが検出される。
【0033】
次に示す非同期接続(図6参照)および非同期入力(図7参照)の例では、非
同期のイベントの通知の使用を示す。
【0034】
図6を参照すると、機能open netlib()を呼出すことによって、通信プロトコルスタック280へ入り、かつコールバック機能が指定される。機能pppopen()を呼出すと(A)、ネットワークサブシステムの接続が始まる(B)。ネットワークサブシステムの接続が設定された後で、コールバック機能が呼出され(C)、ネットワークサブシステムが使用可能であることが報告される。
【0035】
ソケットが開かれて、割り当てられていると仮定すると、機能connect()を呼出して(D)、TCP接続が始まる(E)。さらに、アプリケーション260は機能async select()を呼出すと(F)、指定されたイベントを登録して、通知を受信する。この例では、目的の指定されたイベントは書込みイベントであり、書込みイベントは接続を設定するときに生成される。
【0036】
接続を設定する際に、指定されたイベントがマスク内に登録されるときは、コールバック機能が呼出される。そのときは、コールバック機能が呼出され(G)、非同期の通知が与えられる。アプリケーション260は、通知を受取ると、機能getnextevent()を呼出し(H)、生成された何れかの指定されたイベントを判断する(I)。さらに加えて、この呼はマスク内のイベント(すなわち、書込みイベント)のビットをクリアする(J)。アプリケーション260は、機能async select()を呼出すことによって、指定されたイベントの次の通知を再登録しなければならない。
【0037】
図7には、非同期のソケットの読出しが示されている。読出しを開始するために、アプリケーション260は機能read()を呼出す(A)。読出すデータがないとみなされると、アプリケーション260は機能async select()を呼出し(B)、イベントを登録し(すなわち、マスク内の対応するビットを設定し)、通知を受信する。この例では、目的の指定されたイベントは読出しイベントであり、読出しイベントは、アプリケーション260によって読出されるデータがあるときに生成される。
【0038】
受信待ち行列内にデータを記憶する際に、読出しイベントがマスク内で指定されるときは、コールバック機能が呼出される。そのときは、コールバック機能が呼出され(C)、非同期の通知を与える。アプリケーション260は、通知を受取ると、機能getnextevent()を呼出し(D)、何れのイベントが生成されるかを判断する(E)。さらに加えて、この呼出しは、マスク内のイベントのビットをクリアする(F)。アプリケーション260は、機能async select()を呼出すことによって、イベントの次の通知を再びイネーブルしなければならない。最後に、受信待ち行列内に記憶されたデータを読出すために、アプリケーション260は機能read()を呼出す(G)。
【0039】
図8ないし10には、本発明の実施形態の状態機械が示されている。図8ないし10では、通信プロトコルスタック280は開いていて、ネットワークサブシステムの接続(すなわち、トラヒックチャンネル、および必要であればリンク層の接続−生のソケットはネットワークサブシステムをバイパスする)が設定されると仮定されている。当業者には、本発明の技術的範囲から逸脱することなく、状態に対する種々の名前が可能であることが分かるであろう。
【0040】
状態機械は、状態間を非同期で遷移でき、読取り、書込み、および閉鎖といった指定されたイベントを制御する(すなわち、イネーブルおよびディスエーブルする)。指定されたイベントは動作の開始時にはディスエーブルされていて、所定の状態でイネーブルされ、アプリケーション260がMS110の状態を識別するのを助ける。
【0041】
さらに加えて、API270は、API270の状態およびアプリケーション260によって呼出される機能のタイプに基づいて、特定の(すなわち、単に一般的でない)指定された状況メッセージをアプリケーション260へ報告する。指定された状況メッセージは、基礎の通信ネットワークの状態を反映する。状況メッセージは、例えば機能呼出しの立証(argument)としてアプリケーション260へ報告される。
【0042】
図8には、例えばAPI270のTCPソケットの状態図が示されている。初期設定されていないソケットは、“ナル”状態800で始まる。ソケットは、このときはまだ割り当てられていないので、“存在”しない。ソケットは、機能socket()を呼出すことによって生成されて初期設定され、ソケット記述子を戻して、ソケットに関係する機能を使用する。機能socket()を呼出した後で、状態機械は“初期設定”状態805へ遷移する。
【0043】
初期設定状態805では、状態機械は、機能close()を呼出すことによってTCP接続が終了可能になるたびに、ナル状態800へ再び遷移する。機能close()を呼出すと、全てのソケットに関係する資源が解放される。他方で、機能connect()を呼出すと、TCP接続が開始され、状態機械は“オープニング”状態810へ遷移する。
【0044】
オープニング状態810では、(1)ネットワークサブシステムが故障したとき、(2)TCP接続の設定に失敗したとき、または(3)IPアドレスを変更したときは、そのたびに状態機械は“クローズド”状態815へ遷移する。さらに加えて、TCP接続を終了する機能close()を呼出した後に、状態機械はソケットを“クロージング”状態820へ遷移し、一方では終了手続きが開始される。最後に、TCP接続が設定されたときは、状態機械は“オープン”状態825へ遷移する。
【0045】
オープン状態825では、ソケットは読出しおよび書込みのために開いている。とくに、書込みイベントは直ぐにイネーブルされ、読出しイベントは、通信プロトコルスタック280のメモリへデータが記憶されるかどうかに基づいてイネーブルされる。(1)ネットワークサブシステムが故障したとき、(2)TCP接続を設定するのに失敗したとき、(3)TCPのリセット、TCPのアボート、またはTCPの閉鎖のようなTCP接続を終了する試みをネットワークサーバが開始したとき、および(4)IPアドレスが変更されたときは、そのたびに状態機械はクローズド状態815に遷移する。例えば機能close()を呼出すことによって、アプリケーションがTCP接続の終了を開始すると、状態機械はクロージング状態820へ遷移する。
【0046】
クローズド状態815では、読出し、書込み、および閉鎖イベントは全てアサートされる。TCP接続を終了する機能close()を呼出した後で、状態機械はソケットをナル状態800へ遷移し、ソケットを解放し、それを再使用に利用できるようにする。
【0047】
クロージング状態820では、(1)ネットワークサブシステムが故障したとき、(2)ネットワークサーバが、例えばTCPのリセットまたはTCPの閉鎖のようなTCP接続の終了の試みを開始したとき、(3)タイマの時限が切れたとき、および(4)IPアドレスを変更したときは、そのたびに状態機械は“閉鎖待機”の状態830へ遷移する。TCP接続を終了するときに遅延するのを防ぐために、API270は、TCP接続の終了を開始するときに作動するタイマを含んでいる。タイマの時限が切れると、状態機械は閉鎖待機の状態830に遷移することが分かるであろう。
【0048】
閉鎖待機の状態830では、機能close()を呼出して、TCP接続を終了し、状態機械をナル状態800へ遷移する。閉鎖イベントは、この状態830でアサートされる。
【0049】
表1−3は、API270によってサポートされる指定された状況メッセージを示している。(表1ないし3には示されていない)ナル状態では、記述的な指定された状況メッセージ、すなわち“追加の資源は使用できない(no additional resources are available)”が、アプリケーション260へ報告される。
【表1】

【表2】

【表3】

【0050】
例として、図9はAPI270のUDPソケットの状態図を示している。初期設定されていないソケットは“ナル”状態900で始まる。ナル状態800に関して既に記載したように、ソケットは、割り当てられていないので“存在”しない。ソケットは、機能socket()を呼出すことによって生成および初期設定され、ソケットに関係する機能で使用するためにソケットの記述子を戻す。機能socket()を呼出した後で、状態機械は“オープン”状態905へ遷移する。
【0051】
オープン状態905では、ソケットは読出しおよび書込みのために開いている。とくに、書込みイベントは直ちにイネーブルされ、一方で読出しイベントはデータが通信プロトコルスタック280のメモリへ記憶されるかどうかに基づいてイネーブルされる。状態機械は、ネットワークサブシステムが故障するたびに“クローズド”状態910へ遷移する。例えば機能close()を呼出すことによって、アプリケーションはUDP接続の終了を開始して、状態機械をナル状態900へ遷移する。
【0052】
クローズド状態910では、読出し、書込み、および閉鎖の状態は全てイネーブルされる。UDP接続を終了する機能close()を呼出した後で、状態機械はソケットをナル状態900へ遷移し、ソケットを解放し、再使用に利用できるようにする。
【0053】
表4ないし6は、API270によってサポートされる指定された状況メッセージを示している。(表4ないし6には示されていない)ナル状態では、既出の指定された状況メッセージである“追加の資源は使用できない(no additional resources are available)”が、アプリケーション260へ報告される。
【表4】

【表5】

【表6】

【0054】
図10は、トラヒックチャンネル(すなわち、Um)およびリンク層(すなわち、PPP206)のようなネットワークサブシステムを制御する状態図を示している。機能open netlib()を呼出すことによって、ネットワークサブシステムを開き、“クローズド”状態1000へソケットを初期設定する。機能pppopen()を呼出すことにより、ネットワークサブシステムの接続を開始し、ソケットを“オープニング”状態1005へ遷移する。さらに加えて、到来するPPP呼出しによるMS110へのページは、ソケットをオープニング状態1005へ遷移する。両者の場合において、ネゴシエーションが成功するときは、MS110はトラヒックチャンネルにおいてRLPおよびPPPの両者を同期させて設定することを試みる。
【0055】
オープニング状態1005では、ネットワークサブシステムの接続が設定されたときに、ソケットは“オープン”状態1010へ遷移する。他方では、ネットワークサブシステムの接続が設定されていないときは、ソケットはクローズド状態1000へ再び遷移する。
【0056】
オープン状態1010では、コールバック機能が呼出されて、イネーブルされた読出し、書込み、および閉鎖のようなアプリケーション1060の指定されたイベントを識別する。このとき、MS110はトラヒックチャンネルによって通信することができる。しかしながらソケットは、ネットワークサブシステムが故障し、コールバック機能を呼出すたびに、クローズド状態1000へ遷移する。例えば機能close()を呼出すことによって、アプリケーションは、ネットワークサブシステムの接続の終了を開始し、ソケットを“クロージング”状態1015へ遷移する。
【0057】
クロージング状態1015では、ネットワークサブシステムの接続が終了するたびに、ソケットはクローズド状態1000へ遷移する。クローズド状態1000では、コールバック機能を呼出して、イネーブルされたアプリケーション260の指定されたイベントを識別する。
【0058】
表7は、特定の機能呼出しに対応し、かつAPI270によってサポートされる指定された状況メッセージを示している。
【表7】

【表8】

【表9】

【表10】

【表11】

【表12】

【表13】

【表14】

【0059】
別の実施形態では、機械は、コード化されたソフトウエアコードのようなコード化された情報を含む機械読出し可能媒体を読出して、移動局のアプリケーションが生のパケット化されたデータを受信および送信できるようにする上述のプロセスを行う。機械読出し可能媒体は、メモリまたは記憶ディスクのような記憶デバイスから、あるいは通信ネットワークから、コード化された情報を受取る。さらに加えて、機械読出し可能媒体は、製造されたときに、コード化された情報でプログラムされる。機械は、アプリケーション260、通信プロトコルスタック280、およびAPI270の少なくとも1つを含み、一方で機械の読出し媒体はメモリまたは記憶ディスクを含む。
【0060】
本発明は特定の実施形態に関連して示したが、そのように制限されているわけではないと考えられる。むしろ、本発明は特許請求の範囲およびそれに相当するものの技術的範囲のみによって制限される。

【特許請求の範囲】
【請求項1】
移動局のアプリケーションが生のパケット化されたデータを受信するための方法であって、
移動局のアプリケーションによって、少なくとも1つのソケットを生成することと、
複数の移動局のプロトコル層の少なくとも1つによって、宛先ポートの情報を欠いているカプセル化された生のパケット化されたデータを、通信ネットワークから受信することと、
移動局のプロトコル層の少なくとも1つによって、逆カプセル化された生のパケット化されたデータを少なくとも1つのソケットへ送ることと、
少なくとも1つのソケットによって、生のパケット化されたデータを移動局のアプリケーションへ送ることとを含む方法。
【請求項2】
生のパケット化されたデータをインターネット制御メッセージングプロトコルのパーシングエンジンへ送ることをさらに含む請求項1記載の方法。
【請求項3】
生のパケット化されたデータが、生のIPパケットを含む請求項1記載の方法。
【請求項4】
複数の移動局のプロトコル層が、移動局の無線リンクプロトコル層および移動局のIS−95のプロトコル層の少なくとも一方を含む請求項1記載の方法。
【請求項5】
複数の移動局のプロトコル層が、移動局の通信プロトコルスタックを含む請求項1記載の方法。
【請求項6】
移動局のアプリケーションが生のパケット化されたデータを受信する装置であって、装置が、
少なくとも1つのソケットを生成するための移動局のアプリケーションと、
複数の移動局のプロトコル層とを含んでいて、
移動局のプロトコル層の少なくとも1つが、宛先ポートの情報を欠いているカプセル化された生のパケット化されたデータを、通信ネットワークから受信するようにされていて、
移動局のプロトコル層の少なくとも1つが、逆カプセル化された生のパケット化されたデータを少なくとも1つのソケットへ送るようにされていて、かつ、
少なくとも1つのソケットが、生のパケット化されたデータを移動局のアプリケーションへ送るようにされている装置。
【請求項7】
少なくとも1つのソケットが、生のパケット化されたデータをインターネット制御メッセージングプロトコルのパーシングエンジンへ送るようにされている請求項6記載の装置。
【請求項8】
生のパケット化されたデータが生のIPパケットを含む請求項6記載の装置。
【請求項9】
複数の移動局のプロトコル層が、移動局の無線リンクプロトコル層および移動局のIS−95のプロトコル層の少なくとも一方を含む請求項6記載の装置。
【請求項10】
複数の移動局のプロトコル層が、移動局の通信プロトコルスタックを含む請求項6記載の装置。
【請求項11】
コード化された情報を含む機械読出し可能媒体であって、機械によって読出されたときに、
移動局のアプリケーションによって、少なくとも1つのソケットを生成するプロセスと、
複数の移動局のプロトコル層の少なくとも1つによって、宛先ポートの情報を欠いているカプセル化された生のパケット化されたデータを、通信ネットワークから受信するプロセスと、
移動局のプロトコル層の少なくとも1つによって、逆カプセル化された生のパケット化されたデータを少なくとも1つのソケットへ送るプロセスと、
少なくとも1つのソケットによって、生のパケット化されたデータを移動局のアプリケーションへ送るプロセスとを行なう機械読出し可能媒体。
【請求項12】
生のパケット化されたデータを、インターネット制御メッセージングプロトコルのパーシングエンジンへ送ることをさらに含む請求項11記載の機械読出し可能媒体。
【請求項13】
生のパケット化されたデータが、生のIPパケットを含む
請求項11記載の機械読出し可能媒体。
【請求項14】
複数の移動局のプロトコル層が、移動局の無線リンクプロトコル層および移動局のIS−95のプロトコル層の少なくとも一方を含む請求項11記載の機械読出し可能媒体。
【請求項15】
複数の移動局のプロトコル層が、移動局の通信プロトコルスタックを含む請求項11記載の機械読出し可能媒体。
【請求項16】
移動局のアプリケーションが生のパケット化されたデータを送るための方法であって、
移動局のアプリケーションによって、少なくとも1つのソケットを生成することと、
少なくとも1つのソケットによって、移動局のアプリケーションの生のパケット化されたデータを、複数の移動局のプロトコル層の少なくとも1つへ送ることと、
複数の移動局のプロトコル層の少なくとも1つによって、カプセル化された生のパケット化されたデータを通信ネットワークへ送ることとを含む方法。
【請求項17】
生のパケット化されたデータが、生のIPパケットを含む請求項16記載の方法。
【請求項18】
複数の移動局のプロトコル層が、移動局の無線リンクプロトコル層および移動局のIS−95のプロトコル層の少なくとも一方を含む請求項16記載の方法。
【請求項19】
複数の移動局のプロトコル層が移動局の通信プロトコルスタックを含む請求項16記載の方法。
【請求項20】
移動局のアプリケーションが生のパケット化されたデータを送るための装置であって、装置が、
少なくとも1つのソケットを生成するための移動局のアプリケーションと、
複数の移動局のプロトコル層とを含み、
少なくとも1つのソケットが、移動局のアプリケーションの生のパケット化されたデータを、移動局のプロトコル層の少なくとも1つへ送るようにされていて、かつ、
移動局のプロトコル層の少なくとも1つが、カプセル化された生のパケット化されたデータを通信ネットワークへ送るようにされている装置。
【請求項21】
生のパケット化されたデータが、生のIPパケットを含む請求項20記載の装置。
【請求項22】
複数の移動局のプロトコル層が、移動局の無線リンクプロトコル層および移動局のIS−95のプロトコル層の少なくとも一方を含む請求項20記載の装置。
【請求項23】
複数の移動局のプロトコル層が、移動局の通信プロトコルスタックを含む請求項20記載の装置。
【請求項24】
コード化された情報を含む機械読出し可能媒体であって、機械によって読出されたときに、
移動局のアプリケーションによって、少なくとも1つのソケットを生成するプロセスと、
少なくとも1つのソケットによって、移動局のアプリケーションの生のパケット化されたデータを、複数の移動局のプロトコル層の少なくとも1つへ送るプロセスと、
複数の移動局のプロトコル層の少なくとも1つによって、カプセル化された生のパケット化されたデータを通信ネットワークへ送るプロセスとを行なう機械読出し可能媒体。
【請求項25】
生のパケット化されたデータが、生のIPパケットを含む請求項24記載の機械読出し可能媒体。
【請求項26】
複数の移動局のプロトコル層が、移動局の無線リンクプロトコル層および移動局のIS−95のプロトコル層の少なくとも一方を含む請求項24記載の機械読出し可能媒体。
【請求項27】
複数の移動局のプロトコル層が、移動局の通信プロトコルスタックを含む請求項24記載の機械読出し可能媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−223587(P2011−223587A)
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−91010(P2011−91010)
【出願日】平成23年4月15日(2011.4.15)
【分割の表示】特願2001−573731(P2001−573731)の分割
【原出願日】平成13年3月29日(2001.3.29)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】