JPH09160856A - 通信管理方法及びコンピュータ・システム - Google Patents

通信管理方法及びコンピュータ・システム

Info

Publication number
JPH09160856A
JPH09160856A JP8192028A JP19202896A JPH09160856A JP H09160856 A JPH09160856 A JP H09160856A JP 8192028 A JP8192028 A JP 8192028A JP 19202896 A JP19202896 A JP 19202896A JP H09160856 A JPH09160856 A JP H09160856A
Authority
JP
Japan
Prior art keywords
rpc
protocol
unix
host computer
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8192028A
Other languages
English (en)
Other versions
JP3962112B2 (ja
Inventor
S Verdon Kumar
クマール・エス・バーダン
Capul Sandaya
サンダヤ・カプール
Shu Uei I
イ・シュー・ウェイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH09160856A publication Critical patent/JPH09160856A/ja
Application granted granted Critical
Publication of JP3962112B2 publication Critical patent/JP3962112B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【課題】 トランスポート層及びネットワーク層を持つ
物理的ネットワークに接続されたホスト・コンピュータ
中に常駐し、分散計算環境内にあるクライアント・プロ
セス及びサーバ・プロセス間の通信路を管理する方法を
与える。 【解決手段】 クライアント・プロセスが遠隔プロシー
ジャ呼び出し(RPC)を行なった時、RPCによって
識別されたサーバ・プロセスがホスト・コンピュータ中
にあるか否かを検出することにより本発明の方法が開始
する。若し存在すれば、バインディング・ハンドルがク
ライアント・プロセスに返送される。バインディング・
ハンドル中のプロトコル順序は、物理的ネットワークの
トランスポート及びネットワーク層を通る通信路の代わ
りに、クライアント及びサーバ・プロセス間のインター
プロセス通信路を設定する第2プロトコル順序にマップ
される。次に、オペレーティング・システムの機能を用
いてRPCが実行される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ネットワーク通
信、より詳細に言えば、コンピュータ・ネットワーク中
のクライアント・プロセス及びサーバ・プロセスが同じ
ホスト・コンピュータにおいてサポートされている時、
クライアント・プロセス及びサーバ・プロセスとの間の
遠隔プロシージャ呼び出しを効率的に管理する方法に関
する。
【0002】
【従来の技術】複数のコンピュータが、情報を交換し、
かつリソースを共有することができるように、ローカル
・エリア・ネットワーク(LAN)に複数のコンピュー
タを相互に接続する技術は公知である。ローカル・エリ
ア・ネットワークは、分散されたリソースと複数のコン
ピュータ中のプロセス・アプリケーションとに対して、
ユーザがアクセスできるような分散計算環境を与える。
ネットワーク通信は、いわゆる通信プロトコルを用いて
遂行される。この通信規則によって、ローカル・エリア
・ネットワークにおける通信アーキテクチャは、通常、
物理層、論理リンク層、ネットワーク層、トランスポー
ト層、セッション層、プレゼンテーション層及びアプリ
ケーション層からなる7層モデルに標準化したものとし
て特徴付けられる。物理層は、情報を伝送するために使
用される実際の物理的な装置及び媒体を含んでいる。論
理リンク層は、データ・パケットをフレームし、かつ物
理層のデータ・フローを制御して、実際の物理的媒体と
は無関係にデータのデリバリーを保証する。ネットワー
ク層は、データ・パケットをアドレスし、そして経路指
定を行なう。この層は、ソース・ノードと宛先ノードと
の間で、ネットワーク中の経路を作成し、そして維持す
る。トランスポート層は、ノード間の伝送パイプライン
を作成し、そしてネットワーク層との接続を管理する。
セッション層は、通常、遠隔プロシージャ呼び出し(R
PC)のサポートを与え、ノード間の接続の一貫性を維
持し、そしてデータ交換を制御する。プレゼンテーショ
ン層は、データをエンコードし、かつデコードし、そし
てノード間の透過性動作態様を与える。最後に、アプリ
ケーション層は、エンド・ユーザのプロセスに対してイ
ンターフェースを与え、かつアプリケーションに対して
標準化されたサービスを与える。
【0003】7層モデルは特定のネットワークに応じて
多くの変形を持っている。従って、例えばAIXオペレ
ーティング・システムの下でIBM社のRISC System/60
00(商標)のコンピュータ・ワークステーションを動作
するTCP/IP(Transmission Control Protocol/In
ternet Protocol)アーキテクチャに基づいたネットワ
ーク・アーキテクチャにおいては、セッション層とトラ
ンスポート層との間に存在するソケット層と呼ばれる他
の層がある。ソケット層は、物理的なポートと等価な論
理構造を持つ所謂「ソケット」を作成する。このアーキ
テクチャにおいて、RPC機構は、セッション層におい
てサポートされるばかりでなく、セッション層の機能も
含んでいる。分散計算環境(DCE)において有用な周
知のRPC機構は「オープン・システムズ・ファンデー
ション(OSF)」によって与えられたソフトウェア・
コードを含んでいる。
【0004】OSF−DCE−RPC機構は、クライア
ントが遠隔プロシージャ呼び出し(RPC)を用いてサ
ーバにサービスを要求する場合に、「クライアント」及
び「サーバ」間の通信を管理するために従来から使用さ
れている。「クライアント」とは、計算環境内の何処か
でアクセス可能なサービスを要求したネットワークの参
加者のことである。「サーバ」は、クライアントにより
要求されたサービスを提供する。OSF−DCE−RP
C機構において、各クライアント・プロセス(クライア
ントのコンピュータ中で実行されるプロセス)は、ソケ
ット層によって作成される1つの関連ソケットを持って
いる。同様に、各サーバ・プロセスは1つのソケットに
関連付けられる。RPCに応答して、呼び出しディレク
トリ・サービスは、サーバ・プロセスが実行されるネッ
トワーク・アドレス及びポート番号として、サーバ・プ
ロセスの位置を特定する「バインディング・ハンドル」
と呼ばれるデータ構造を戻す。次に、バインディング・
ハンドルは、クライアント・プロセスとサーバ・プロセ
スとの間の通信路を定義するためにRPC機構によって
使用される。この通信路は、ソケットをオープンするた
めに、「インターネット・ネットワーク・アドレス・フ
ァミリィ(AF_INET)」のipベース(即ち、ネ
ットワーク層)プロトコル順序を用いて定義される。こ
の通信路は、クライアント・プロセスから出発して、ト
ランスポート層及びネットワーク層を通ってネットワー
クへ出た後に、サーバ・プロセスが実行されるホスト・
コンピュータに関連した層へ戻るループ路を構成してい
る。
【0005】上述のOSF−DCE−RPC機構は、ク
ライアント・プロセス及びサーバ・プロセスが同じホス
ト・コンピュータ中で動作されているか否かを判別する
ことはできない。すべての場合において、この機構は、
トランスポート(TCPまたはUDP)層及びネットワ
ーク(IP)層を通過する通信路を設定するAF_IN
ETプロトコル順序を含むクライアント・プロセスに、
バインディング・ハンドルを戻す。TCPを通る通信
は、接続指向プロトコル順序を使用するけれども、UD
Pを通る通信は、非接続プロトコル順序を使用する。然
しながら、いずれの場合においても、クライアント・プ
ロセス及びサーバ・プロセスが同じホスト・コンピュー
タ中に存在する時には、RPCは、所謂ループバック・
メッセージを生成する。何故ならば、ネットワーク層
(IP層)が宛先ネットワーク・アドレスを受け取った
ならば、IP層は、RPCが「ローカル」であると認識
し、従って、その通信路がトランスポート層を通ってア
プリケーション層上のサーバ・プロセスにループ・バッ
クされねばならないと認識するからである。このループ
・バックの要件のために、同じコンピュータ中のクライ
アント・プロセス及びサーバ・プロセス間のRPCは、
性能の観点から見て最適化されていない。何故ならば、
それらのRPCは、必要としないトランスポート層及び
ネットワーク層を使用するからである。
【0006】
【発明が解決しようとする課題】従って、本発明の主目
的は、ネットワーク中の同じホスト・コンピュータ中で
実行しているクライアント・プロセス及びサーバ・プロ
セス間の遠隔プロシージャ呼び出し(RPC)を効率的
に管理することにある。
【0007】本発明の他の目的は、クライアント・プロ
セス及びサーバ・プロセスが同じホスト・コンピュータ
中で実行されているか否かを、ネットワークのRPC機
構によって識別させ、若しクライアント及びサーバ・プ
ロセスの両方が同じホスト・コンピュータ中で実行され
ているならば、ローカル・インタープロセス通信(IP
C)機能を活用する代替プロトコル順序を用いてネット
ワーク層及びトランスポート層をバイパスさせることに
ある。
【0008】本発明のより特別の目的は、DCE内のク
ライアント・プロセス及びサーバ・プロセスが同じホス
ト・コンピュータ中に存在する場合を検知し、これによ
り、遠隔プロシージャ呼び出しを動作させるためのネッ
トワーク層(IP)またはトランスポート層(TP)の
経路の代わりに、ローカルIPC機構を使用することに
ある。IP層またはTP層をバイパスさせることは、性
能に顕著な向上を与える。
【0009】本発明の他の目的は、同じホスト・コンピ
ュータ中で実行されている2つのプロセスの間で行なわ
れるRPCである「ローカル」RPCに影響するための
IPC機構を使用することにある。特定の実施例におい
て、IPC機構は「UNIXドメイン」ソケットであっ
て、本発明は「UNIXネットワーク・アドレス・ファ
ミリィ(AF_UNIX)」に基づいた上述のソケット
をオープンするために、接続指向プロトコル順序を使用
している。AF_UNIXを使用することによって、そ
のオペレーティング・システム・カーネルは、同じホス
ト・コンピュータ中の2つのプロセス間のブリッジ通信
のタスクを操作する。
【0010】本発明の他の目的は、サーバ・プロセス及
びクライアント・プロセスが同じホスト・コンピュータ
中で動作している時に、ローカルRPC機構の使用を自
動化することにある。サーバ・プロセス及びクライアン
ト・プロセスが同じホスト・コンピュータ中に存在する
時に、アプリケーションがRPCのローカル性に気づく
ことなく、ローカルRPC用のプロトコル順序が使用さ
れる。
【0011】
【課題を解決するための手段】ローカルRPC機能は常
に使用可能にされていることが望ましく、そして「ロー
カル」RPCはクライアント・プロセスに対して透過的
な動作態様を持っている。従って、ローカル・サーバ・
プロセスに対するRPCの検出に応答して、予期された
プロトコル順序が、クライアント・プロセスに戻され、
他方、ホスト・コンピュータのIPC機構を通るRPC
を促進するために、代替のプロトコル順序が使用され
る。
【0012】本発明の上述の目的及び他の目的は、トラ
ンスポート層及びネットワーク層を有する物理的ネット
ワークに接続されたホスト・コンピュータ中に常駐する
クライアント・プロセス及びサーバ・プロセス間の通信
であり、かつ分散計算環境内にある通信を管理するため
の方法によって具現化される。本発明の方法は、クライ
アント・プロセスが遠隔プロシージャ呼び出し(RP
C)を行なった時に、遠隔プロシージャ呼び出しによっ
て識別されたサーバ・プロセスが同じホスト・コンピュ
ータ中に存在するか否かを検出することによって開始す
る。若し、クライアント・プロセスとサーバ・プロセス
とが同じホスト・コンピュータ中に存在すれば、物理的
ネットワークのトランスポート層及びネットワーク層を
通る通信路の代わりに、クライアント・プロセス及びサ
ーバ・プロセス間にインタープロセス通信路を設定する
プロトコル順序を持つ少なくとも1つのバインディング
・ハンドルを含んでいるバインディング・ハンドル・ベ
クトルがクライアント・プロセスに戻される。次に、望
ましくはホスト・コンピュータのオペレーティング・シ
ステムの送信及び受信メッセージ伝達機能を用いて、遠
隔プロシージャ呼び出しが実行される。
【0013】本発明の良好な実施例に従った「ローカ
ル」RPCは、クライアント・プロセスに対する影響が
透過的である(クライアント・プロセスに対して影響を
与えない)。従って、ローカル・サーバ・プロセスに対
するRPCの検出に応答して、予期されたプロトコル順
序がクライアント・プロセスに戻され、他方、RPCを
助長するために、代替プロトコル順序が使用される。代
替プロトコル順序は同じホスト・コンピュータのIPC
機構を通る通信路を設定する。
【0014】より包括的に言えば、本発明の方法は、ト
ランスポート層及びネットワーク層の両方を使用する通
信路を定義するプロトコル順序を含む第1のデータ構造
をクライアント・プロセスへ先ず戻すことによって、ロ
ーカルRPCに応答する。次に、第1のデータ構造は、
クライアント・プロセス及びサーバ・プロセス間のイン
タープロセス通信路を定義するプロトコル順序を含む第
2のデータ構造にマップされる。次に、遠隔プロシージ
ャ呼び出しは、第2のデータ構造中のプロトコル順序に
よって定義されたインタープロセス通信路を介して実行
される。従って、本発明の良好な実施例において、第1
のデータ構造のプロトコル順序は、RPCに影響を与え
ないで使用される。
【0015】ホスト・コンピュータがUNIXベースの
オペレーティング・システムをサポートしている特定の
実施例において、本発明の方法は、RPCによって識別
されたサーバ・プロセスが同じホスト・コンピュータ中
に存在するか否かを検出することによってRPCに応答
する。若し、RPCによって定義されたサーバ・プロセ
スが同じホスト・コンピュータ中に存在しているなら
ば、本発明の方法は、遠隔プロシージャ呼び出しに通常
関連しているプロトコル順序を持っているバインディン
グ・ハンドルをクライアント・プロセスに戻す。遠隔プ
ロシージャ呼び出しに関連しているプロトコル順序は、
通常、接続指向プロトコル「ncacn_ip_tcp」か、または
非接続プロトコル「ncadg_ip_udp」かの何れかである。
次に、プロトコル順序は、クライアント・プロセス及び
サーバ・プロセス間のインタープロセス通信路を設定す
る代替プロトコル順序にマップされる。RPCが接続指
向プロトコルを識別した場合には、このステップは、
「ncacn_ip_tcp」をプロトコル順序「ncacn_unix_strea
m」にマップする。RPCが非接続プロトコルを識別し
た場合には、このステップは、「ncadg_ip_udp」を「nc
adg_unix_dgram」プロトコル順序にマップする。次に、
クライアント・プロセスは、クライアント・プロセスが
予期したプロトコル順序を「検出する(見る)」けれど
も、しかし、そのプロトコル順序は、RPCに影響せず
に使用される。上述の動作態様とは異なって、本発明の
方法は、代表例において、UNIXベースのオペレーテ
ィング・システムのメッセージ送受信機能を用いること
によって、クライアント・プロセスに対して透過的に実
行される。
【0016】上述の記載は、本発明に特に関連を持つ幾
つかの目的の概略を説明したものである。これらの目的
は、本発明の幾つかの特別な特徴及び適用例について単
に説明したものとして理解されるべきである。本発明の
実施の態様は以下に説明する通りであり、本発明を適用
することによって、多くの他の有益な結果を得ることが
できる。
【0017】
【発明の実施の形態】上述したように、本発明は、総括
的に言えば、複数のコンピュータに分散されたリソース
及びプロセス・アプリケーションに、ユーザがアクセス
することのできる分散計算環境を提供するローカル・エ
リア・ネットワーク中のクライアント・プロセス及びサ
ーバ・プロセス間の通信を管理することに向けられてい
る。従来の分散計算環境(DCE)は、図1に示されて
おり、そしてネットワーク14を介してサーバ12に相
互接続されたクライアント10を含んでいる。クライア
ント10及びサーバ12の各々はコンピュータである。
例えば、各コンピュータは、AIX(Advanced Interac
tive Executive)オペレーティング・システムを実行す
るIBM(商標)社のRISC System/6000(商標)(縮小
されたインストラクション・セット、即ち、所謂RIS
Cをベースとしたワークステーション)であってもよ
い。AIXオペレーティング・システムは、アプリケー
ションのインターフェース・レベルにおいて、AT&T
社のUNIXオペレーティング・システムのバージョン
5.2と互換性を持っている。RISCベースのワーク
ステーション型コンピュータの種々のモデルは、例えば
刊行物「RISC System/6000, 7073 and 7016 POWERstati
on and POWERserver Hardware Technical Reference, -
- Order No. SA23-2644-00」など、IBM社の多くの刊
行物に記載されている。AIXオペレーティング・シス
テムは、IBM社で刊行された刊行物「AIX Operating
System Technical Reference, First Edition(198
5年11月)及び他の刊行物に記載されている。UNI
Xオペレーティング・システムの設計に関する細部につ
いては、Prentice-Hall社により刊行された(1986
年)バッハ(Maurice J. Bach)著の刊行物「Design of
the Unix Operating System」を参照されたい。
【0018】本発明は、特定の1実施例において、IB
Mのシステム・ネットワーク・アーキテクチャ(SN
A)、より特定して言えばSNAのLU6.2の拡張プ
ログラム間通信(Advanced Program to Program Commun
ication-APPC)によって相互接続された複数個のI
BM社のRISC System/6000において実行される。SNA
は、そのリンク・レベルとして、ゼロックス社によって
開発されたローカル・エリア・ネットワーク(LAN)
のイーサネットまたはSDLC(同期データ・リンク制
御)を使用する。ローカル・エリア・ネットワークの簡
単な説明は、ブレディ(Robert J. Brady、Prentice-Ha
ll社)により刊行された(1983年)ジョーダン及び
チャーチル(Larry E. Jordan and Bruce Churchill)
共著の刊行物「Communications and Networking for th
e IBM PC」に記載されている。本発明は、上述した刊行
物に記載されている技術を対象としているけれども、イ
ーサネットLAN及びIBMのSNA以外の他のネット
ワークによって相互接続されたIBMのRISCベース
のパーソナルコンピュータ以外の他の異なったコンピュ
ータを用いて実施することができることには注意を払う
必要がある。従って、本発明は、例えば、OS/2オペ
レーティング・システムの下で動作するIBM社のPS
/2において実施することができる。PS/2コンピュ
ータ及びOS/2オペレーティング・システムに関する
情報については、IBM社で刊行した刊行物「Technica
l Reference Manual Personal Systems/2 Model 50, 60
Systems, Part No. 68x2224 -- Order Number S68X-22
24」と、「OS/2 2.0 Technical Library, Programming
Guide Volume 1~3 Version 2.00 -- Order No. 10G6495
及び10G6494」とを参照されたい。
【0019】図1に戻って説明を続けると、クライアン
ト10及びサーバ12の各々は、そのコンピュータがサ
ービスを要求しているのか、またはそのコンピュータが
サービスを提供するのかに応じて、クライアントとして
か、またはサーバとして動作する。通常、クライアント
は、遠隔プロシージャ呼び出し(RPC)を用いてサー
バ・プロセスにサービスを要求する少なくとも1つのプ
ロセスを含んでいる。然しながら、多くのDCEアプリ
ケーションは、「クライアント」プロセス及び「サー
バ」プロセスの両方が同じホスト・コンピュータ中で実
行されるような態様で書かれている。この態様は、クラ
イアント/サーバ15によって図1に示されている。ク
ライアント/サーバ15中のサーバ・プロセスのために
意図されたクライアント・プロセスからのRPCは、下
記の説明を行なう目的のために、「ローカル」または
「ローカルRPC」と呼ぶ。
【0020】従来のOSF−DCE−RPC機構におい
て、ローカルであると否とに拘らずすべてのRPCは、
「ncacn_ip_tcp」か、または「ncadg_ip_udp」プロトコ
ル順序であるネットワーク・ベース(例えば、「ipベ
ース」)プロトコル順序を用いて遂行される。この場
合、「ncacn」は接続指向のOSF−DCE−RPCプ
ロトコル順序を表わし、そして「ncadg」は非接続のO
SF−DCE−RPCプロトコル順序を表わす。これら
のプロトコルを用いた時、「ip」術語によって明らか
なように、インターネット・アドレス・ファミリィ(A
F_INET)通信ドメインが使用される。各プロトコ
ル順序の最後の構成要素はソケット・タイプを参照する
から、従って、例えば、「udp」はデータグラムを参照
する。RPCに応答して、セル・ディレクトリ・サービ
ス・デーモン(cell directory service daemon−CD
SD)の呼び出しは、サーバ・プロセスが実行されてい
るネットワーク・アドレス及びポート番号としてのサー
バ・プロセスの位置を特定する、所謂、「バインディン
グ・ハンドル」を戻す。また、バインディング・ハンド
ルは、RPCによって要求されたサーバ・プロセスを識
別する。次に、バインディング・ハンドルは、クライア
ント・プロセス及びサーバ・プロセス間の通信路を定義
するために、RPC機構によって用いられる。この通信
路は、ソケットをオープンするために、AF_INET
のipベース(即ちネットワーク層)のプロトコル順序
を用いて定義される。この通信路は、クライアント・プ
ロセスからトランスポート層及びネットワーク層を通っ
てネットワークに出た後に、サーバ・プロセスが動作し
ているホスト・コンピュータに関連された層に戻るルー
プを形成する。
【0021】従って、クライアント・プロセス及びサー
バ・プロセスが同じホスト・コンピュータ中に存在して
いるとしても、トランスポート層(TCPまたはUD
P)及びネットワーク(IP)層がループバック・メッ
セージを送るのに使用される。これは、図2に示されて
いる。
【0022】本発明に従うと、ipベースのプロトコル
順序を使用する代りに、クライアント・プロセスに対し
て透過的な態様(影響を与えない)でローカルRPCを
助長するための代替プロトコル順序が用いられる。この
透過的な態様のために、ローカルRPCは、アプリケー
ションに「隠されて」遂行されると言われる。若しオペ
レーティング・システムがAIX、またはOS/2オペ
レーティング・システムであれば、プロトコル順序「nc
acn_unix_stream」は、接続指向ipベースのプロトコ
ル順序(即ち、「ncacn_ip_tcp」)を識別するローカル
RPCに使用される。指定子「ncacn」は、接続指向R
PCプロトコルを指定し、「unix」はUNIXネットワ
ーク・アドレス・ファミリィ(AF_UNIX)通信ド
メインを識別し、そして「stream」はUNIXドメイン
のストリーム・ソケットを識別する。OS/2オペレー
ティング・システムの下でローカルRPC機能が動作し
ている場合、非接続ipベースのプロトコル順序(即
ち、「ncadg_ip_udp」)の下で発行されたRPCは、プ
ロトコル順序「ncadg_unix_dgram」の使用を生じる。こ
の場合、「ncadg」は非接続RPCプロトコルを表わ
し、そして「unix_dgram」はUNIXドメイン・データ
グラム・ソケットを識別する。勿論、上述したオペレー
ティング・システムは、単なる例示であって、本発明は
これらのオペレーティング・システムのみに限定して解
釈されるべきものではない。何れの場合でも、クライア
ント・プロセスには、実際のRPCが、異なったローカ
ルの機構を用いて遂行されたとしても、クライアント・
プロセスが予期するプロトコル順序が戻される。使用さ
れる実際のプロトコル順序は、「UNIXネットワーク
・アドレス・ファミリィ(AF_UNIX)」を使用す
ることによって、トランスポート層及びネットワーク層
の使用を回避する。
【0023】AF_UNIXを使用することによって、
オペレーティング・システム・カーネルは、同じホスト
・コンピュータ中の2つのプロセスの間の通信を連結す
るタスクを操作する。AF_UNIXは、クライアント
・プロセスとサーバ・プロセスとの間のインタープロセ
ス通信(IPC)を実行するために好ましい技術である
けれども、他のオペレーティング・システム(OS)の
IPC機構(共有メモリとかメッセージ待ち行列など)
も同じように使用することができる。どのような場合で
も、ローカルIPC機構の使用は、トランスポート層及
びネットワーク層を通したループバック呼び出しを行な
うよりも著しく速いので、性能の改善は顕著なものがあ
る。本発明の機能は図3に示されている。
【0024】ncacn_unix_streamプロトコル順序は、同
じホスト・コンピュータ中に存在するDCE(分散計算
環境)アプリケーションのプロセスの間で行なわれるR
PCによってのみ用いられるのが好ましい。RPCラン
タイム(runtime)は、若しサーバが同じホスト・コン
ピュータ中に存在しなければ、クライアント・アプリケ
ーションに、ncacn_unix_streamのバインディングを戻
さない。ncacn_unix_streamプロトコル順序は、同じホ
スト・コンピュータ中のDCEアプリケーションによっ
て使用されるものだから、これらのバインディングはネ
ットワーク・アドレスを含んでいない。また、ncacn_un
ix_streamのバインディング・ハンドルのエンドポイン
ト(endpoint)は、UNIXソケット・ファイルのフル
通信路名(full pathname)として表示される。固有の
ソケット・ファイルが、クライアント・プロセスとサー
バ・プロセスとの間で設定された各アソシエーション
(組み合せ)のために使用される。デフォルトによっ
て、これらのソケット・ファイルは、接頭部、DCE_CNを
持つファイル名を有するディレクトリ、/var/dce/rpc/s
ocket中にオープンされる。また、デフォルトによっ
て、各ソケット・ファイルの名前は、オブジェクトUU
ID(universal unique identifier−ユニバーサル・
ユニーク識別子)であり、このユニバーサル・ユニーク
識別子は各ファイル名の固有性を保証する。UUID
は、UUIDゼネレータ・ルーチンによって作成された
実質的に長くランダムな数字である。RPCランタイム
によって、エンドポイントをncacn_unix_streamのバイ
ンディングに割り当てる時、そのバインディングは、
「オブジェクトUUID」であり、これは、ソケット・
ファイル名の固有性を保証する。これは、DCEアプリ
ケーションの2つの呼び出しにおいて、ソケット・ファ
イルが再度使用されるような場合が皆無であることを意
味する。
【0025】UNIXベースのオペレーティング・シス
テムにおいて、OSカーネルは、そのカーネルがユーザ
のために作業を行なう前に、ファイルをオープンするこ
とをユーザに要求する。本発明によって作成されたソケ
ット・ファイルは、OSカーネルのプレースホルダーと
して保存される長さのないファイルである。固有の各ソ
ケット・ファイルは、作成されたファイル・システム中
にiノードのエントリを占領する。OSカーネルは、フ
ァイル・システム中のプレースホルダーとしてソケット
・ファイルを用いることによってRPCを遂行し、次
に、それ自身のデータ構造を制御して、RPCを具現さ
せるために、クライアント・プロセス及びサーバ・プロ
セスの間でデータを送信し、かつ受信する。従って、O
Sカーネルは、この目的のために、例えば「Mbuf」
のデータ構造を使用することができる。
【0026】下記の記載は、本発明において使用される
ncacn_unix_streamストリングのバインディングの幾つ
かの例を示している。 ncacn_unix_stream:[] ncacn_unix_stream:[/var/dce/rpc/socket/0063980e357
b-le07-878b-10005a4f3bce] このように、プロトコル順序は、接続指向の「ncacn」
RPCプロトコル、AF_UNIX通信ドメイン(「uni
x」のコンポーネントによって識別される)及び「stre
am」タイプのソケットの返却を含んでいる。1番目の例
示において、エンドポイント(つまり、括弧[]内のデ
ータ)は空である。2番目の例示においては、エンドポ
イントは、デフォルトのソケット・ディレクトリ「/var
/dce/rpc/socket/_」及びUUIDを識別する。
【0027】従って、エンドポイントは、/var/dce/rpc
/socketディレクトリ中のオブジェクトUUIDである
必要はない。IDL(Interface Definition Langauge-
インターフェース定義言語)仕様書のファイル中の「エ
ンドポイント」の属性は、固有のファイルに対する通信
路名を特定するのに用いることができる。あるいは、ア
プリケーションは、ncacn_unix_streamストリングのバ
インディングを、コマンド・ライン引数として取ること
ができ、そして、その引数を、rpc_binding_from_strin
g_binding()ルーチンを用いてバインディング・ハンド
ルに変換することができる。ユーザにより特定されたソ
ケット・ファイル通信路の例を下記に示す。 ncacn_unix_stream:[/var/dce/rpc/socket/foo] ncacn_unix_stream:[/tmp/6094] ncacn_unix_stream:[/5423] 最後に示した例において、エンドポイントは絶対通信路
によって表示されていないので、ncacn_unix_stream:[/
var/dce/rpc/socket/5423]が仮定され、ソケット・ファ
イルを作成するために使用される。また、エンドポイン
ト・マップのエントリは、絶対通信路を持っている。こ
のことは、相対通信路が初めて使用される前に、相対通
信路は、絶対通信路まで常に拡張され得るので、2つの
フォームが相互に交換可能に用いられた時に問題を生じ
ることがない。
【0028】ローカルRPC技術のオリジナルの実施に
おいて、RPCランタイム(実行時)ライブラリは、ク
ライアント及びサーバが同じホスト・コンピュータ中に
存在する場合を認識し、そして、機能rpc_ns_binding_i
mport_next()が他のプロトコル順序のためのバインディ
ングを戻す前に、そのようなバインディングを、機能rp
c_ns_binding_import_next()に戻させることによるか、
あるいは、バインディング・ベクトルの低い位置中のす
べてのncacn_unix_streamのバインディングを、機能rpc
_ns_binding_lookup_next()に戻させることによってnca
cn_unix_streamの使用を促進する。性能上の理由のため
に、そのような実施例においてrpc_ns_binding_<import
/lookup>_next()ルーチンから戻されたncacn_unix_stre
amのバインディング・ハンドルは、完全に結合される。
これは、そのバインディングのベクトルがRPCエンド
ポイント・マップから到来し、そのバインディングの中
にエンドポイントを持っていたことによる。この実施例
において、ncacn_unix_streamのバインディング情報
は、RPCのAPIルーチンrpc_ns_binding_export()
が呼び出された時、CDS(セル・ディレクトリ・サー
ビス)ネーム・スペースのデータベースへエクスポート
されない。この理由は、クライアント及びサーバのアプ
リケーションが同じホスト・コンピュータ中に存在する
時だけに、ncacn_unix_streamのバインディングが使用
可能だからである。CDSネーム・スペースは、「DC
Eセル」中の任意のコンピュータ中のDCEのアプリケ
ーションによって読み取ることができるから、CDSネ
ーム・スペースのデータベース中のncacn_unix_stream
ストリームのバインディングは、遠隔地のサーバと通信
する必要のあるクライアントに対して使用不能である。
【0029】その代わりに、ncacn_unix_streamのバイ
ンディングは、DCEのサーバ・アプリケーションがR
PCのAPIルーチンrpc_ep_register()を呼び出した
時に、RPCエンドポイント・マップのデータベース中
にのみ登録される。この理由は、DCEセル中の各ホス
ト・コンピュータで実行するRPCエンドポイント・マ
ップのデーモンがあるためであり、これは、ホスト・コ
ンピュータ特定の情報をストアするために、更に良い論
理的位置にする。クライアントが、互換性を有するサー
バのバインディング用のCDSネーム・スペースを問い
合わせた時、RPCランタイムは、セルがローカル・ホ
スト・コンピュータ中のサーバ用であるか否かを決定す
る。若しセルがサーバ用であれば、CDSネーム・スペ
ースから、すべてのバインディングを戻すことに加え
て、RPCランタイムは、互換性を有するncacn_unix_s
treamのバインディングがあるか否かを検出するために
RPCエンドポイント・マップに行く。若し互換性を持
つncacn_unix_streamのバインディングがあれば、その
バインディングはCDSネーム・スペースから戻された
バインディングよりも高い優先権を与えられる。若しク
ライアント及びサーバが異なったホスト・コンピュータ
の中にあれば、エンドポイント・マップの検索は行なわ
れない。何故ならば、この場合のエンドポイント・マッ
プの検索は、使用可能なバインディングを生じないから
である。
【0030】DCEサーバ・アプリケーションが通常の
状態で存在する時、この状態は、DCEサーバ・アプリ
ケーションが存在する前に、RPCのエンドポイント・
マップから、他のものと共に、そのエンドポイントを登
録しない。ncacn_ip_tcp及びncacn_ip_udpのようなip
ベースのプロトコルの場合において、DECアプリケー
ションを受信しようとしていたポートは、オペレーティ
ング・システムによって整理されるから、ポートを解放
するためのアプリケーション動作は要求されない。ncac
n_unix_streamのエンドポイントは、ユーザ・スペース
・ファイルであり、これらのファイルは、DCEアプリ
ケーションが存在する時には、オペレーティング・シス
テムによって除去されない。
【0031】既に説明したように、RPCランタイムに
よって、エンドポイントをncacn_unix_streamのバイン
ディングに割り当てる時に、このバインディングは、固
有であることが保証されている「オブジェクトUUI
D」である。このことは、DCEアプリケーションの2
つの呼び出し中で、ソケット・ファイルが再度使用され
ることはあり得ないことを意味する。従って、古いソケ
ット・ファイルが残留している事実は、短時間では問題
にはならない。然しながら、時間の経過と共に、これら
のソケット・ファイルは累積されるであろう。既に述べ
たように、ソケット・ファイルは、長さがゼロであるけ
れども、しかし、各ソケット・ファイルは、ソケット・
ファイルが作成されたファイル・システム中にiノード
・エントリを占める。従って、これらの古いソケット・
ファイルを整理するための何らかの手段を持つことが必
要である。これは、RPCエンドポイント・マッパ(R
PCデーモン)によって行なわれる。
【0032】/var/dce/rpc/socketディレクトリ中のソ
ケットだけが自動的に整理されることには注意を払う必
要がある。若しDCEアプリケーションがDCEアプリ
ケーション以外のディレクトリを用いて、そのncacn_un
ix_streamエンドポイントを作成したならば、古いエン
ドポイントが整理されることを保証することは、アプリ
ケーション、またはアプリケーションのユーザの責任で
ある。これは、rpc.cleanユティリティを用いて行なわ
れる。rpc.cleanユティリティは、検査されるべき古い
ソケット・ファイルに関するディレクトリを、ユーザに
より特定させる。このユティリティは、そのディレクト
リを検索し、そして検出されたすべての古いソケット・
ファイルを除去する。これは、RPCのエンドポイント
・マップが行なう整理と同じ整理を遂行する。DCE管
理記述、dce.clean、rc.dce、またはrmdceが実行される
時には常に、ソケット・ファイルの累積問題を解決する
付加的な保護策として、rpc.cleanユティリティが含ま
れる。
【0033】DCEの多くの内部活動(即ち、RPCデ
ーモン及びセキュリティ/ネーム・スペースのサービス
を含む通信活動)が、同じコンピュータにおいて実行さ
れている2つのプロセスの間でRPCを用いて遂行され
た場合であって、上述のローカルRPCのアプローチ
(unixドメイン・ソケットを用いた方法)が実施さ
れた場合、DCEシステム全体の性能は約40%向上し
た。このローカルRPC構造は、本発明に従って更に改
善される。本発明の実施例において理解できるように、
すべてのローカルRPC動作はデフォルト動作として最
適化されることが望ましい。明示的な接続指向(CN)
プロトコルは、RPCのアプリケーション及びクライア
ント・プロセスに対して透過的な態様(影響を与えな
い)で、しかも、速いローカルunix_streamプロトコル
に自動的に切換えられる。同様に、明示的な非接続(D
G)プロトコルは、速いローカルunix_dgramプロトコル
に自動的に切換えられる。本発明の実施例において、明
示的なunix_streamプロトコルをクライアント・プロセ
スに戻すことは最早や必要としない。プロトコルの切り
換えは、RPC機構及びアプリケーションに「隠され
て」遂行され、これは性能を更に向上させる。
【0034】特に、上述したオリジナルのローカルRP
Cアプローチにおいて、unix_streamプロトコルは、明
示的に与えられており、DCEデーモンの「エンドポイ
ント・マッパ」中に現われる異なったタイプのエンドポ
イントの形式でユーザに可視的である。アプリケーショ
ンが、接続指向プロトコル順序かまたは非接続プロトコ
ル順序を使用するように選択し、かつローカルRPC機
構が暗黙的に優先権を取る場合か、または、アプリケー
ションが、unix_streamプロトコルを使用するように選
択した場合に、改良型のローカルRPCが行なわれる。
改良型のローカルRPCは、unix_streamのエンドポイ
ントのための動作に関連された「エンドポイント・マッ
パ」を除去する。
【0035】従って、本発明の上述の改良型の実施例に
おいて、透過的な態様の切換えはユーザのプロトコル順
序(RPCにおいて識別される)から、ある種のローカ
ル・プロトコルに移り、そして、この透過的な態様の切
換えは自動的に生じるのが望ましい。このアプローチ
は、明示的なunix_streamまたはunix_dgramプロトコル
を取り除き、そして、接続指向(CN)及び非接続(D
G)プロトコルのために最適化されたローカルRPCを
デフォルトとして設定する。然しながら、CN及びDG
デフォルトの意味を保存するために、別個のCNローカ
ルRPC内部サポート(ncacn_unix_stream)及びDG
ローカルRPC内部サポート(ncacn_unix_dgram)が作
成される。
【0036】クライアント・プロセスが遠隔プロシージ
ャ呼び出しを行なった時に、分散計算環境内のクライア
ント・プロセス及びサーバ・プロセス間の通信を管理す
る方法における主要なステップを示した図4の流れ図に
おいて、上述の代替プロトコル順序の処理方法が示され
ている。この方法において、クライアント・プロセス
は、ホスト・コンピュータがAIXのようなUNIXベ
ースのオペレーティング・システムをサポートしてお
り、かつ、トランスポート層及びネットワーク層を有す
る物理的ネットワークに接続されている同じホスト・コ
ンピュータ中に常駐しているものと仮定する。この方法
は、サーバ・プロセスが同じホスト・コンピュータ中に
存在しているか否かを決定するステップ30で開始す
る。若しサーバ・プロセスが同じホスト・コンピュータ
中にあれば、この方法は、遠隔プロシージャ呼び出しに
通常関連しているプロトコル順序を持つバインディング
・ハンドルをクライアント・プロセスへ戻すステップ3
2に続く。次に、クライアント・プロセスは、予期して
いるプロトコル順序(RPCで与えられたプロトコル順
序)を「検出」する。次に、この方法は、遠隔プロシー
ジャ呼び出しと通常関連しているプロトコル順序を、ク
ライアント・プロセス及びサーバ・プロセス間のインタ
ープロセス通信路を設定する代替プロトコル順序にマッ
プ処理するステップ34に続く。(ステップ32及び3
4を反対にすることができる。)従って、例示的な説明
目的に限定して、若し遠隔プロシージャ呼び出しに関連
したプロトコル順序が接続指向のプロトコル「ncacn_ip
_tcp」であれば、このステップは、そのプロトコル順序
を、同じコンピュータ上で実行している代替プロトコル
順序にマップする。この機能は常に使用可能にされてい
ることが望ましい。従ってサーバ・プロセス及びクライ
アント・プロセスが同じコンピュータ中に存在する場合
には、「ncacn_ip_tcp」プロトコル順序の代わりに「nc
acn_unix_stream」プロトコル順序が使用され、そし
て、「ncadg_ip_udp」プロトコル順序の代わりに「ncad
g_unix_dgram」プロトコル順序が使用される。上述した
2つの代表的なオペレーティング・システムのコンテキ
ストにおいて、この技術は、AIX及びOS/2の両方
のオペレーティング・システムに対して、「ncacn_ip_t
cp」プロトコル順序を「ncacn_unix_stream」に切換
え、そして、OS/2オペレーティング・システムだけ
に対して、この機能が動作可能にされる時に「ncacn_ip
_udp」プロトコル順序を「ncadg_unix_dgram」に切換え
ることが望ましい。OS/2オペレーティング・システ
ムだけに限定した後者の場合の理由は、「ncadg_unix_d
gram」プロトコル順序を実行することが、AIXオペレ
ーティング・システムの性能を顕著に改善しないからで
ある。従って、若しアプリケーションがAIXの「ncad
g_ip_udp」プロトコル順序を使用したならば、ローカル
RPCは、サーバ及びクライアントのプロセスが同じコ
ンピュータ中に存在したとしても推奨されるものではな
い。この機能を使用不能にするために、環境変数、DISA
BLE_AUTO_LRPCは1にセットされる。
【0037】以下の記載は、最適化されたローカルRP
C機構の細部を更に詳しく説明したものである。この説
明を総括的に言えば、DCEのプログラミング規則に精
通していること、より特定して言えば、RPC機構に精
通していることが前提とされる。設計の第1の局面は、
どのプロトコル順序がサポートされているかをユーザが
識別することであり、この識別はRPC初期化ルーチン
の間で行なわれる。若しユーザがRPC_SUPPOR
TED_PROTSEQSを、1つまたはそれ以上のプ
ロトコル順序にセットしたならば、これらのプロトコル
順序だけがサポートされる。然しながら、RPC初期化
ルーチンを終了する時に、DISABLED_AUTO
_LRPC変数がチェックされる。若しこの変数が1に
セットされていなければ、大域変数「defaultrpc」が
「真」にセットされる。次に、RPC「ランタイム」は
最適化されたローカルRPC機能をサポートする。これ
は、「ncacn_unix_stream」及び「ncadg_unix_dgram」
プロトコル順序がRPC「ランタイム」によってサポー
トされていることを意味する。「ランタイム」コードの
すべての変更は、defaultlrpc変数が「真」である時だ
けに実行される。
【0038】最適化されたローカルRPC機能をサポー
トするために必要な変更であって、アプリケーションの
サーバ・プロセスに関連する変更は、以下に説明する通
りである。以下の説明は、ncacn_ip_tcpプロトコル順序
の場合に関連するものであるけれども、同じ考え方をnc
acn_ip_udpプロトコル順序に適用することができるのは
理解されるべきである。ローカルRPCの1つの機能
は、サーバ・プロセスが聴取しているプロトコル順序用
の公知のエンドポイント及び動的エンドポイントのすべ
てのエンドポイントを含む「Unixドメイン」ソケッ
トをオープンしなければならないことである。この理由
は、若しストリング・バインディングが公知のエンドポ
イントまたは動的エンドポイントを用いてクライアント
に与えられたならば、DCEデーモンが同じコンピュー
タ中で実行されるものと推測することができないからで
ある。従って、ncacn_unix_streamプロトコル順序及び
特別のエンドポイントを用いて、完全な宛先rpcアドレ
スを作成し、次に、その宛先rpcアドレスをバインディ
ング表示中にストアする必要がある。これは、「Uni
xドメイン」ソケットに結合されている特別な公知のエ
ンドポイント及び動的エンドポイントのすべてを持って
いる「Unixドメイン」ソケットを、サーバ・プロセ
スが聴取しなければならないことを意味する。
【0039】最適化されたローカルRPCを実施するた
めに、ファイルsrc/rpc/runtime/cnnet.cの中のrpc_cn_
network_use_protseq()は変更されねばならない。この
ルーチンにおいて、tcpソケットがオープンされる時
には常に、対応するunixストリーム・ソケットがオ
ープンされる。この処理が、図4に示したマップ作成ス
テップである。このunixストリーム・ソケットのた
めに、unixのrpc_addrが割り当てられ、tcpエンド
ポイントが命名規則に従ってunixストリームのエン
ドポイントに変換される。また、このunixストリー
ム・ソケットは、ソケット記述子に加えられる。従っ
て、rpc_cn_network_use_protseq()ルーチンは以下のよ
うに実行される。 if auto LRPC is on(若し自動LRPCがオンならば) Get the tcp endpoint(tcpエンドポイントを獲得せ
よ) Allocate memory for the new unix RPC address(新し
いunixRPCアドレス用のメモリを割り当てよ) Insert the protseq id, socket address structure le
ngth,and Network- Address Family into RPC addre
ssstructure(protseq識別子、ソケット・アドレス構造
の長さ及びネットワーク・アドレス・ファミリィをRP
Cアドレス構造中に挿入せよ) Open a unix socket and bind the RPC address to it
(unixソケットをオープンし、それにRPCアドレ
スを与えよ) Add the socket to the socket descriptor.(ソケット
にソケット記述子を加えよ。) end if 以上の説明は、アプリケーション・サーバ・プロセスに
関係した変更に関するものである。
【0040】アプリケーションのクライアント・プロセ
スに関係した変更を以下に説明する。クライアントのア
プリケーションがRPCランタイムに対して先ず最初に
行なう第1の呼び出しは、rpc_call_start()であり、こ
の呼び出しは、転じて、バインディング・ハンドル中の
プロトコル識別子に従って、プロトコル特定のルーチ
ン、つまりrpc_dg_call_start()か、またはrpc_cn_call
_start()を呼び出す。プロトコル特定のルーチンを呼び
出す前に、rpc_call_start()に対して下記のような変更
が行なわれる。
【0041】このルーチンは、バインディング・ハンド
ル中の宛先アドレスがローカル・ホスト・コンピュータ
のipアドレスの1つと等しいか否かを決定することによ
って開始する。(この比較は、若しTCP/IPがコン
ピュータ中に導入されていなければ動作しない。むし
ろ、NetBios用のRPCプロトコル順序に関係し
たアドレスのために、異なったタイプの比較が必要とさ
れる。)若しこの比較が真であれば、アプリケーション
がrpc_call_start()に通されたプロトコル順序に代わっ
て、ncacn_unix_streamプロトコル順序が使用されるよ
うに、バインディング表示中の該当するフィールドが変
更される。バインディング表示は下記のフィールドを持
っている。 typedef struct { rpc_list_t link; rpc_protocol_id_t protocol_id; signed8 refcnt; uuid_t obj; rpc_addr_p_t rpc_addr; unsigned is_server: 1; unsigned addr_is_dynamic: 1; rpc_auth_info_p_t auth_info; unsigned32fork_count; unsigned bound_server_instance: 1; unsigned addr_has_endpoint: 1; unsigned32 timeout; signed8 calls_in_progress; pointer_t ns_specific; rpc_clock_t call_timeout_time; } rpc_binding_rep_t, rpc_binding_rep_p_t; このルーチンに従って、バインディング表示中のプロト
コル識別子フィールドは、接続指向RPCプロトコル識
別子、つまり0で置き換えられる。バインディング表示
は、その中にストアされた宛先rpcアドレスを持って
おり、そしてrpc_addrは、rpc_addr_p_tタイプである。 typedef struct { rpc_protseq_id_t rpc_protseq_id; unsigned32 len; sockaddr_t sa; } rpc_addr_p_t;
【0042】ファイルsrc/rpc/runtime/cncall.c中の機
能rpc_cn_call_start()は変更されなければならない。
先ず、元のrpc_addr構造が保存される。この時点におい
て、rpc_addrは公知のエンドポイントを持っている。ル
ーチンは、このエンドポイントをunixストリーム・
エンドポイントに変換した後にunixストリームのた
めの宛先rpcアドレスを作成する。次に、ルーチンは、
バインディング表示中のrpc_addrを、新しいrpc_addrに
置き換える。ncacn_unix_streamプロトコルを持つこのr
pc_addrは「エンドポイント・マッパ」に登録されず、
従って、ユーザに対して可視的ではない。その後、RP
Cはunixストリーム及び接続指向RPCプロトコル
を使用して可視的になる。すべての送信及び受信が完了
した後、元のrpc_addr構造は、バインディング表示にコ
ピーされ、そしてクライアント・プロセスに戻される。
rpc_cn_call_start()の機能は下記の通りである。 if auto LRPC is on(若し自動LRPCがオンならば) Allocate memory for the new unix RPC address(新し
いunixRPCアドレス用のメモリを割り当てよ) Insert the protseq id, socket address structure le
ngth,and Network- Address Family into RPC addresss
tructure(protseq識別子、ソケット・アドレス構造の
長さ及び「ネットワーク・アドレス・ファミリィ」をR
PCアドレス構造中に挿入せよ) Save the original rpc_addr from the bindingreprese
ntation(バインディング表示からオリジナルのRPC
アドレスを保存せよ) Copy the unix rpc_addr to the binding representati
on(unixRPCアドレスをバインディング表示にコ
ピーせよ) Do the transmits and receives(送信及び受信を行な
え) Copy the original rpc_addr back to the bindingrepr
esentation(オリジナルのRPCアドレスをバインディ
ング表示にコピーし戻せ) If any error occured in the transmit or receive us
ingunix stream,try again transmitting/receiving us
ing the originalrpc_addr(若しunixストリームを
用いた送信または受信においてエラーが発生したなら
ば、オリジナルのRPCアドレスを用いて送信/受信を
試行せよ) Return to the client(クライアントに戻れ) end if
【0043】最適化されたローカルRPC機構におい
て、unixストリームを持つバインディングは、「エ
ンドポイント・マッパ」中に登録されず、あるいはネー
ム・スペースにエクスポートされない。クライアント・
プロセスが、import_begin及びimport_next呼び出し機
能を用いてバインディングに問い合せを行なった時、ク
ライアント・プロセスは、ncacn_unix_streamを持つバ
インディングを獲得しない。API呼び出しrpc_server
_inq_bindingsは、RPCが行なわれるサーバのバイン
ディングを戻す。この機能はバインディングを得るため
に、聴取側のソケットからのソケットを使用する。サー
バはストリーム・ソケットにおいて聴取しているから、
下記のフィルタが与えられる。 for loop for enquiring the bindings from the liste
ner sockets(聴取ソケットからのバインディングの問
い合せを行なうためのループ) if the socket protseq is unix stream,(若しソケッ
トprotseqがunixストリームならば、) skip the binding(そのバインディングをスキップせ
よ) end for loop(ループの終り)
【0044】既に説明したように、本発明に従って、ア
プリケーションのクライアントは、unixストリーム
・プロトコルを使用してアプリケーションのサーバと対
話するから、従って、このプロトコルはアプリケーショ
ンのサーバに露呈される。これを遮蔽するために、rpc_
binding_from_string_bindingルーチンが変更される。
この場合、rpc_addrは、バインディング・ハンドルから
のものではなく、ローカル・コンピュータのアドレス及
びncacn_ip_tcpプロトコル順序によって満たされる。こ
れを行なうことによって、クライアント・プロセスは、
それが予期していたプロトコル順序を「検知」し、そし
て代替プロトコル順序が通信路に影響するように使用さ
れる。その結果、ncacn_unix_streamが、ユーザから隠
蔽される。この機能は下記の通りである。 if the binding rep rpc_addr has unix stream in it
(若しバインディング表示rpc_addrがその中にunix
ストリームを持っているならば) enquire the local machine address with tcp protoco
lsequence(ローカル・コンピュータ・アドレスをtc
pプロトコル順序に問い合せよ) Insert the tcp protseq id, socket address structur
elength, and IP- Network Address family into RPCad
dress structure(tcp Protseq識別子、ソケット・アド
レス構造の長さ及びIPネットワーク・アドレス・ファ
ミリィをRPCアドレス構造に挿入せよ) Copy this rpc_addr to the binding representation
(このrpc_addrをバインディング表示にコピーせよ) return this rpc_addr back(このrpc_addrを戻せ) end if
【0045】上述した設計は、最適化されたローカルR
PC構造を実行するために必要な変更を説明するもので
ある。この改善の重要な目標は、この最適化されたRP
C構造の実施がユーザに不可視的にすることと、従来の
クライアント/サーバ・アプリケーションに対して逆向
きの互換性を持たせることとを保証することである。
【0046】ncacn_unix_streamプロトコル順序に対し
てどのようにしてRPCのサポートを付加するかについ
ての細部の説明を以下に記載する。
【0047】0.1.1 外部インターフェースの説明 RPCランタイム及びRPCDの外部インターフェース
は以下のように変更される。ユーザは、従来からサポー
トされているプロトコル順序に加えて、付加的なプロト
コル順序を指定するための新しい能力を持っている。こ
の新しいプロトコル順序は「ncacn_unix_stream」と名
付けられる。API機能パラメータ、環境変数、または
コマンド・ライン引数を、プロトコル順序用ストリング
・フォーマットの仕様に用いることができる場合には常
に、ストリーム「ncacn_unix_stream」の使用が可能で
ある。
【0048】0.1.2 内部設計の説明 RPCの拡張は、クライアント及びサーバが同じホスト
・コンピュータ中に存在する場合に使用される新しいプ
ロトコル順序(ncacn_unix_stream)のためのサポート
を加える。
【0049】このRPCの拡張は、ユーザに対して仮想
的に不可視であり、そして、従来のクライアント/サー
バ・アプリケーションとは逆向きの互換性を有する。
【0050】本発明は、IBMのOS/2プラットホー
ムのような他のプラットホームに対して移植性(portab
le)がある。OS/2はUNIXドメインに対するサポ
ートを有する(MPTSを介して)。OS/2の「共通
ポーティング・プラットホーム(CPP)」のDLL
は、OS/2を変更することなく、殆どすべてのUNI
X特定サブルーチン呼び出しを使用可能にする。
【0051】新しいプロトコル順序の付加が従来のコー
ドを殆ど変更することなく、RPCランタイム・ライブ
ラリの設計を行なうことができる。これは、2つの手
段、即ち(1)モジュラー・データ構造と、(2)エン
トリ・ポイント・ベクトルとを使用することによって達
成される。モジュラー・データ構造は、プロトコル順序
を作る幾つかの要素に関する一貫した機構を与えること
によって新しいプロトコル順序を付加することを容易に
する。RPCランタイム・コードの大部分がすべてのプ
ロトコルに共通なので、エントリ・ポイント・ベクトル
を使用することは、インデックスを通して機能アレイの
ライン毎に、プロトコル特定のルーチンにアクセスする
ことができる。プロトコル識別子は、エントリ・ポイン
ト・ベクトル中のインデックスとして使用される。新し
いプロトコル順序には、そのプロトコル順序に特定され
た処理を操作するための新しいルーチンを加えることが
必要である。
【0052】ncacn_unix_streamプロトコル順序は、AF_
UNIXアドレス・ファミリィと、SOCK__STREA
Mのソケット・タイプとを用いて作成される。ソケット
・アドレスは、インタープロセス通信機構としてのフル
通信路名の仕様を用いて、構造sockaddr_unを使用す
る。クライアント及びサーバはこのプロトコル順序を用
いるために同じホスト・コンピュータ中に常駐していな
ければならない。このプロトコル順序は接続指向であ
り、そしてCNプロトコル識別子を使用する。
【0053】以下の項において、新しいプロトコル順序
を実行するために変更を必要とするRPCソース・ファ
イルを説明する。以下の説明において、広範な含意変更
(implication change)から開始して、より特別な変更
に減縮するようなファイルのリストを作るように試みら
れている。
【0054】0.1.2.1 src/rpc/runtime/com.h このファイルは既存のファイルである。下記のような定
数識別子を付加することが必要である。これらの定数
は、使用する構造及び適正なインデックス・エントリ・
ポイント・ベクトルにアクセスするために、すべてのR
PCランタイム・コードに亙って使用される。 RPCプロトコル順序識別子定数: #define rpc_c_protseq_id_ncacn_unix_stream 5 RPCプロトコル順序ストリング定数: #difine rpc_protseq_ccacn_unix_stream "ncacn_unix_
stream" RPC「ネットワーク・アドレス・ファミリィ」定数: #define rpc_c_naf_id_unix 1
【0055】0.1.2.2 src/rpc/runtime/comp.c このファイルは既存のファイルである。下記に示すテー
ブル・エレメントを付加することが必要である。これら
のテーブル・エレメントは、「Unixドメイン・アド
レス・ファミリィ」と、ncacn_unix_streamプロトコル
順序とのためのサポートを付加する。
【0056】大域アレイrpc_g_protseq_id[]は下記のよ
うに拡張された。 GLOBAL rpc_protseq_id_elt_t rpc_g_protseq_id[rpc_protseq_id_max] = { .../*existing table elements */ (存在するテーブル・エレメント) { 0, rpc_c_protseq_id_ncacn_unix_stream, rpc_c_protocol_id_ncacn, rpc_c_naf_id_unix, rpc_c_network_protocol_id_uns /*Unspecified*/ rpc_protseq_ncacn_unix_stream } {;
【0057】大域アレイrpc_g_naf_id[]は下記のように
拡張されなければならない。 GLOBAL rpc_naf_id_elt_t rpc_g_naf_id[rpc_naf_id_max] = { ... /*existing table elements */ (存在するテーブル・エレメント ) { rpc_unix_init, rpc_c_naf_id_unix, rpc_c_network_if_id_stream, NULL } .../* existing table elements*/ (存在するテーブル・エレメント ) };
【0058】0.1.2.3 src/rpc/runtime/unixnaf.c このファイルは作成を必要とする新しいファイルであ
る。このファイルは、「Unixドメイン・ネットワー
ク・アドレス・ファミリィ」のために必要なエントリ・
ポイント・ベクトルのルーチンのためのサポートを与え
る。下記のように定義されたrpc_naf_epv_tと呼ばれる
RPC構造がある。 typedef struct { rpc_naf_addr_alloc_fn_t naf_addr_alloc; rpc_naf_addr_copy_fn_t naf_addr_copy; rpc_naf_addr_free_fn_t naf_addr_free; rpc_naf_addr_set_endpoint_fn_t naf_addr_set_endpoint; rpc_naf_addr_inq_endpoint_fn_t naf_addr_inq_endpoint; rpc_naf_addr_set_netaddr_fn_t naf_addr_set_netaddr; rpc_naf_addr_inq_netaddr_fn_t naf_add_inq_netaddr; rpc_naf_addr_set_options_fn_t naf_addr_set_options; rpc_naf_addr_inq_options_fn_t naf_addr_inq_options; rpc_naf_desc_inq_addr_fn_t naf_desc_inq_addr; rpc_naf_desc_inq_network_fn_t naf_desc_inq_network; rpc_naf_inq_max-tsdu_fn_t naf_inq_max_tsdu; rpc_naf_get_broadcast_fn_t naf_get_broadcast; rpc_naf_addr_compare_fn_t naf_addr_compare; rpc_naf_inq_pth_unfrg_tpdu_fn_t naf_inq_max_pth_unfrg_tpdu; rpc_naf_inq_loc_unfrg_tpdu_fn_t naf_inq_max_loc_unfrg_tpdu; rpc_naf_set_pkt_nodelay_fn_t naf_set_pkt_nodelay; rpc_naf_is_connect_closed_fn_t naf_is_connect_closed; rpc_naf_twr_flrs_from_addr_fn_t naf_tower_flrs_from_addr; rpc_naf_twr_flrs_to_addr_fn_t naf_tower_flrs_to_addr; rpc_naf_desc_inq_peer_addr_fn_t naf_desc_inq_peer_addr; }rpc_naf_epv_t, *rpc_naf_epv_p_t;
【0059】各NAFは、この構造をロードし、かつ、
特定されたNAFのためのrpc_g_naf_id[]テーブルのエ
ントリにそれを付加する初期化ルーチンを持っている。
この時点から、「Unixネットワーク・アドレス・フ
ァミリィ」のすべての呼び出しは、これらのEPVを通
して行なわれる。「Unixネットワーク・アドレス・
ファミリィ」を実施するために、下記のルーチンを作成
しなければならない。
【0060】 0.1.2.3.1 rpc_unix_init() PRIVATE void rpc_unix_init(naf_epv,status) rpc_naf_epv_p_t*naf_epv; unsigned32*status: { Load the rpc_unix_epv structure with the static routines defined in this file (unixnaf.c).(このファイル(unixnaf.c)中 に定義されている静的ルーチンを持つrpc_unix構造をロードせよ。) Return the NAF epv, so it can be added to the global NAF table.(大域NAFテーブルに付加できるように、NAF epvを戻せ。 ) }
【0061】 0.1.2.3.2 addr_alloc() INTERNAL void-addr-alloc(rpc_protseq_id_naf_id, endpoint,netaddr,netwo rk options,rpc_addr,status) rpc_addr_p_t src_rpc_addr; rpc_addr_p_t*dst_rpc_addr; unsigned32*status; { Allocate memory for destination RPC address(宛先RPCアドレ スのためのメモリを割当てよ) Copy source rpc address to destination rpc address(ソースrp cアドレスを宛先rpcアドレスにコピーせよ) }
【0062】 0.1.2.3.3 addr_copy() INTERNAL void addr_copy (src_rpc_addr. dist_rpc_addr. status) rpc_addr_p_t_src_rpc_addr; rpc_addr_p_t *dist_rpc_adr; unsigned32 *status; { Allocate memory for the destination RPC address(宛先RPCア ドレスのためのメモリを割り当てよ) Copy source rpc address to destination rpc address(ソースrp cアドレスを宛先rpcアドレスにコピーせよ) }
【0063】 0.1.2.3.4 addr_free() INTERNAL void addr_free (rpc_addr,status) rpc_addr_p_t*rpc_addr; unsigned 32 *status; { Free memory of RPC addr and set the RPC address pointer to NULL.(RPCアドレスのメモリを開放して、RPCポイ ンタを「無効」にセットせよ。) }
【0064】 0.1.2.3.5 addr_set_endpoint () INTERNAL void addr_set_endpoint (endpoint,rpc_add,status) unsigned_char_p_t endpoint; rpc_addr_p_t *rpc_addr; unsigned32*status; } Check for the special case where endpoint is a pointer to a zero length string (as opposed to NULL). In this case, the caller is requesting that the endpoint be zeroed out of the rpc_addr structure, so just set rpc addr-> sa.sun_path[0] = '?0' and return.(エンドポイントが長 さゼロのストリング(「無効」と対立する)へのポインタである特別の場合をチ ェックせよ。この場合において、rpc_addr構造からエンドポイントがゼロにされ ることを、呼び出し側が要求し、従ってrpc_addrをsa.sun_path[0]='?0'にセッ トだけで、復帰せよ。) BEGIN AIX ONLY Check for the existence of the RPC_UNIX_DOMAIN_DIR_PATH environment variable.(RPC_UNIX_DOMAIN_DIR_PATH環境変数の存在を チェックせよ。) if it exists then use it as the base for file name paths.(若し 存在するならば、ファイル名パスのためのベースとしてそれを使用せよ。) if it doesn't exist, then use the default: /var/dce/rpc/socket on AIX.(若し存在しなければ、AIXのデフォルト/var/dce/rpc/sock etを使用せよ。) if an endpoint was specified, then check if it is a full path(i.e. starts with '/' character) or just a relative filename.(若しエンドポイントが特定されていたな らば、それはフル・パス(即ち、'/'文字で開始する)であるか、または相対フ ァイル名であるかをチェックせよ。) if it is a relative path, then append it to the base path.(若し それが相対パスであれば、それをベース・パスに付加せよ。) if it is an absolute path, then overwrite what has been given as the path up to this point, no matter what it is.(若し それが絶対パスであれば、どんなパスであれ、このポイントまでのパスとして与 えられものを書き重ねよ。) END AIX ONLY if no endpoint was given, create one using uuid_create() and uuid_to_string().(若しエンドポイントが与えられていなければ、uui d_create()及びuuid_to_string()を用いてエンドポイントを作成せよ。) Now have a 32 character uuid string as the filename.(現在、ファ イル名として32文字のuuidストリングを持っている。) append the filename to the path.(パスにファイル名を付加せよ。) Now that a full path has been built, add the pathname to the RPC addr structure (sa.sun_path) and set the length of the filename.(現在、フルパスが作成されており、そのパス名をRP Cアドレス構造(sa.sun_path)に付加し、そしてファイル名の長さをセットせ よ。) }
【0065】 0.1.2.3.6 addr_inq_endpoint() INTERNAL void addr-inq-endpoint (rpc_addr,endpoint,status) rpc_addr_p_t_ rpc_addr; unsigned_char_t**endpoint; unsigned32 *status: { Allocate memory for the filename (i.e. the endpoint).(ファイル 名(即ちエンドポイント)のためのメモリを割り当てよ。) strcpy() the filename from the RPC addr structure into the newly allocated string.(RPCアドレス構造からのファイル名 を新しく割り当てられたストリング中にstrcyp()せよ。) }
【0066】 0.1.2.3.7 addr_set_netaddr() INTERNAL void addr_set_netaddr(netaddr,rpc_addr,status) unsigned_char_p_t netaddr; rpc_addr_p_t*rpc_addr; unsigned32*status; { これは不動作ルーチンである。「Unixドメイン」を用いた時、 netaddrの概念はない。 このルーチンを必要とする他のNAF(ネットワーク・アドレス・ ファミリィ)と一貫性を持たせるために、このルーチンは存在しな ければならない。 }
【0067】 0.1.2.3.8 addr_inq_netaddr() INTERNAL void addr_inq_netaddr(rpc_addr,netaddr,status) rpc_addr_p_t rpc_addr; unsigned_char_5**netaddr; unsigned32*status; } これは不動作ルーチンである。「Unixドメイン」を用いた時、 netaddrの概念はない。 このルーチンを必要とする他のNAF(ネットワーク・アドレス・ ファミリィ)と一貫性を持たせるために、このルーチンは存在しな ければならない。 }
【0068】 0.1.2.3.9 addr_set_options() INTERNAL void addr_set_options(network_options,rpc_addr,status) unsigned_char_p_t network_options; rpc_addr_p_t*rpc_addr unsigned32 *status; { これは不動作ルーチンである。「Unixドメイン」を用いた時、 netaddrの概念はない。 このルーチンを必要とする他のNAF(ネットワーク・アドレス・ ファミリィ)と一貫性を持たせるために、このルーチンは存在しな ければならない。 }
【0069】 0.1.2.3.10 addr_inq_options() INTERNAL void addr_inq_options(rpc_addr,network_options,status) rpc_addr_p_t rpc_addr; unsigned_char_t **network_options; unsigned_32 *status; { これは不動作ルーチンである。「Unixドメイン」を用いた時、 netaddrの概念はない。 このルーチンを必要とする他のNAF(ネットワーク・アドレス・ ファミリィ)と一貫性を持たせるために、このルーチンは存在しな ければならない。)
【0070】 0.1.2.3.11 inq_max_tsdu() INTERNAL void inq_max_tsdu (naf_id, iftype,protocol,max_tsdu,status) rpc_naf_id_t naf_id; rpc_network_if_id_t iftype; rpc_network_protocol_id_t protocol; unsigned 32 *max_tsdu; unsigned 32 *status; { これは不動作ルーチンである。パケットはネットワーク上には出な いから、IPの設定は関係なし。 }
【0071】 0.1.2.3.12 addr_compare() INTERNAL boolean addr_compare (addr1, addr2, status) rpc_addr_p_t addr1, addr2; unsigned 32 *status; { Compare the socket address file name paths of the 2 RPC addrs passed in.(通された2つのRPCアドレスのソケット・アドレ ス・ファイル名パスを比較せよ。) Return TRUE or FALSE.(真または偽を戻せ。) }
【0072】 0.1.2.3.13 inq_max_pth_unfrag_tpdu() INTERNAL void inq_max_pth_unfrag_tpdu (rpc_addr,iftype,protocol,max_tpdu,status) rpc_addr_p_t rpc_addr; rpc_network_if_id_t iftype; rpc_network_protocol_id_t protocol; unsigned 32 *max_tpdu; unsigned 32 *status; これは不動作ルーチンである。パケットはネットワーク上には出な いから、IPの設定は関係なし。 }
【0073】 0.1.2.3.14 inq_max_loc_unfrag_tpdu() INTERNAL void inq_max_loc__unfrag_tpdu (naf_id,iftype,protocol,max_tpdu,status) rpc_naf_id_t naf_id; rpc_network_if_id_t iftype; rpc_network_protocol_id_t protocol; unsignd32* mas_tpdu;; unsigne32* status: { これは不動作ルーチンである。パケットはネットワーク上には出な いから、IPの設定は関係なし。 }
【0074】 0.1.2.3.15 desc_inq_network() INTERNAL void desc_inq_network(desc,socket_type,protocol_id,status) rpc_socket_t desc; rpc_network_if_id_t *socket_type; rpc_network_protocol_id_t *protocol_id; unsigned32 *status; { Call RPC_socket_get_if_id() to get the socket_type.(socket_type を得るためにRPC_socket_get_if_id()を呼び出せ。) Based on the socket type, return the protocol id. In our case it will always be rpc_c_network_protocol_id_uns (Unspecified).(ソケット・タイプに基いて、プロトコル識別子を戻せ 。この実施例においては、これは、常にrpc_c_network_protocol_id_uns(不特 定)である。) }
【0075】 0.1.2.3.16. set_pkt_nodelay() INTERNAL void set_pkt_nodelay(desc.status) rpc_socket_t desc; unsigned32* status; { これは不動作ルーチンである。パケットはネットワーク上には出な いから、IPの設定は関係なし。 }
【0076】 0.1.2.3.17 is_connect_closed() INTERNAL boolean is_connect_closed(desc,status) rpc_socket_t desc; unsigned 32 *status; { このルーチンは常に真を返却する。 }
【0077】 0.1.2.3.18 tower_flrs_from_addr() INTERNAL void tower_flrs_from_addr (rpc_addr,lower_flrs,status) rpc_addr_p_t rpc_addr; twr_p_t *lower_flrs; unsinged 32 *status; { Get the network protocol id (aka transport layer protocol) for this RPC addr.(このRPCアドレスのためのネットワーク・プロ トコル識別子を獲得せよ(akaトランスポート層プロトコル)。) Use the network protocol id as a parameter to the routine twr_unix_lower_flrs_from_sa().(ルーチンtwr_unix_lower_flrs_from _sa()に対するパラメータとしてネットワーク・プロトコル識別子を使用せよ。 ) このルーチンは、「Unixドメイン」RPCアドレスのタワー参 照子の下位フロアを示すタワーのオクテットを戻す。twr_unix_ lower_flrs_from_sa()ルーチンの細部に関してはファイルtwr_unix.c (本明細書で後述する)を参照されたい。 }
【0078】 0.1.2.3.19 tower_flrs_to_addr() INTERNAL void tower_flrs_to_addr (tower_octet_string, rpc_addr, status) byte_p_t tower_octet_string; rpc_addr_p_T *rpc_addr; unsigned 32 *status; { Convert the lower floors of a tower to a sockaddr, calling the routine twr_unix_lower_flrs_to_sa().(ルーチンtwr_unix_lower _flrs_to_sa()を呼び出して、タワーの下位フロアをソケット・アドレスに変換 せよ。) twr_unix_lower_flrs_from_sa()ルーチンの細部に関してはファイル twr_unix.c(本明細書で後述する)を参照されたい。 Add the socket address to an RPC address and return it.(ソケッ ト・アドレスをRPCアドレスに加え、それを戻せ。) }
【0079】 0.1.2.3.20 desc_inq_peer_addr() INTERNAL void desc_inq_peer_addr (protseq_id,desc,rpc_addr,status) rpc_protseq_id_t_ protesq_id rpc_socket_t desc; rpc_addr_p_t *rpc_addr; unsigned32 *status; } Allocate memory for the new RPC address, and fill in the protseq id and length of the sockaddr structure.(新しいRP Cアドレス用のメモリを割り当て、そしてprotseq識別子及びソケット・アドレ ス構造の長さを満たせ。) Call rpc_socket_inq_endpoint(), which will fill in the peer endpoint, which is always the same as the current processes endpoint, in the case of Unix Domain.(「Unixドメ イン」の場合、現在のプロセス・エンドポイントと常に同じであるピア・エンド ポイント中に満たすrpc_socket_inq_endpoint()を呼び出せ。) }
【0080】0.1.2.4 src/rpc/runtime/unixnaf.h このファイルは、作成しなければならない新しいファイ
ルである。このファイルは、主として、「UnixのN
AF epv」ルーチンのためのプロトタイプを含んでい
る。加えて、このファイルは、「unixドメイン」R
PCアドレスの表示の定義を含んでいる。これは以下の
ように定義される。
【0081】RPCがコマンド・コードを実行している
時に、RPCアドレスは、疑似透明構造(rpc_addr_t)
として通過されるが、しかし、この構造がNAF特定ル
ーチンに通された時、この構造は使用するファミリィ用
のRPCアドレス構造に与えられる。unixストリー
ムの場合、この構造はrpc_unix_addr_tに与えられる。
【0082】このファイルに対して必要とする他の付加
部分は、AIXオペレーティング・システムにおける
「Unixドメイン」ソケット呼び出しに使用するため
のファイル名を作成するために使用されるデフォルト・
パス名である。これは、「オペレーティング・システ
ム」特定のものであり、OS/2に関しては必要としな
い。エンドポイントを作成する時に、若しエンドポイン
トが存在しないか、または使用されるエンドポイントが
フル・パス名を特定しなければ、デフォルト・パス名が
用いられる。デフォルト・パス名は下記のようにして定
義される。 #ifdefined(AIX_RROD) #define RPC_DEFAULT_UNIX_DOMAIN_PATH "_" /var/dce/rpc/socket" #endif
【0083】OS/2オペレーティング・システムに関
しては、「Unixドメイン」ソケット・ファイルは内
部的のみに使用される。ユーザが目視できるファイルは
作成されない。OS/2オペレーティング・システム
は、ソケット・ファイルに関連した管理的なタスク(即
ち、整理動作)を取り扱う。特別なパスを生成する必要
はない。
【0084】0.1.2.5 src/rpc/runtime/RIOS/unixnaf_
sys.c これは、作成しなければならない新しいファイルであ
る。このファイルは、「Unixドメイン・ネットワー
ク・アドレス・ファミリィ」に付属するような、RIO
Sプラットフォームに対してシステム特定のルーチンを
含んでいる。
【0085】0.1.2.5.1 rpc_unix_desc_inq_addr() ファミリィ、エンドポイント及びネットワーク・アドレ
スを得るために問い合せられたソケット記述子を受信す
る。若しこの情報が「Unixドメイン」アドレスに対
して有効ならば、ソケットから得られた情報によって初
期化されるRPCアドレス用のスペースが割り当てられ
る。作成されたRPCアドレスを表示したアドレスはrp
c_addr中に戻される。 PRIVATE void rpc_unix_desc_inq_addr(protseq_id,desc,rpc_addr_vec,statu s) rpc_protseq_id_t protseq_id; rpc_socket_t desc; rpc_addr_vector_p_t *rpc_addr_vec; unsigned 32 *status; { Simply do a "getsockname" into a local Unix Domain RPC address.(ローカル「Unixドメイン」RPCアドレスの中にソケッ ト名を単純に獲得せよ。) Allocate memory for the RPC address, and RPC address vector.(R PCアドレス及びRPCアドレス・ベクトル用のメモリを割り当てよ。) Fill in the RPC address structure with the protocol sequence id, and the Unix sockaddr structure.(RPCアドレス構造の中に、 プロトコル順序識別子及びUnixソケット・アドレス構造を満たせ。) Add the RPC address to the RPC address vector.(RPCアドレスを RPCアドレス・ベクトルに加えよ。) }
【0086】0.1.2.5.2 rpc_unix_get_broadcast() このルーチンは不動作であるけれども、必要なルーチン
であり、NAF_epvの中にエントリがある。 PRIVATE void rpc_unix_get_broadcast(naf_id,protseq_id,rpc_addr_vec,sta tus) rpc_naf_id_t naf_id; rpc_protseq_id_t protseq_id; rpc_addr_vector_p_t *rpc_addr_vec; unsigned32 *status; { Do nothing. Set output parameters to NULL and return.(何もせず 。出力パラメータを「無効」にセットし、復帰せよ。) }
【0087】0.1.2.6 src/rpc/runtime/twr_unix.h これは新しいファイルであって、作成しなければならな
い。このファイルは宣言と、twr_unix.cファイルに特定
するプロトタイプとを含んでいる。現在、このファイル
だけが、ルーチンrpc_rpcd_is_running()のためのプロ
トタイプを含んでいる。
【0088】0.1.2.7 src/rpc/runtime/twr_unix.c これは新しいファイルであって、作成しなければならな
い。このファイルは、タワー表示からソケット・アドレ
スへの変換を行なうことと、ソケット・アドレスからタ
ワー表示への変換を行なうこととを特定するルーチンを
含んでいる。また、このファイルは、RPCランタイム
及びRPCDの両方によって使用されるユティリティ・
ルーチンを含んでいる。
【0089】0.1.2.7.1 rpc_rpcd_is_running() これは新しいルーチンである。このルーチンは、下記の
2つの目的のために使用される。2つの目的とは(1)
RPCDのインスタンスが既に実行されているか否かを
決定するための初期化の間で、RPCDがこのルーチン
を使用する目的と、(2)ローカル・ホスト・コンピュ
ータ中のRPCDが実行されているか否かと、このプロ
シージャがncacn_unix_streamプロトコル順序をサポー
トするか否かとを決定するためにRPCランタイムがこ
のルーチンを使用する目的とである。
【0090】このルーチンは、ucacn_unix_streamをサ
ポートするRPCDのインスタンスをチェックする。こ
れは、RPCDエンドポイント・ファイルの存在を検索
することによって行なわれる。若しこのファイルが存在
しなければ、RPCDは、Unixストリームのサポー
トによって実行されない。若しこのファイルが存在すれ
ば、このファイルは、RPCDインスタンスへの接続を
試みるために使用される。若し接続が不成功に終わった
ならば、RPCDはUnixストリームのサポートによ
って実行されない。このファイルは除去される。若し接
続が成功したならば、RPCDは実行される。このファ
イルは除去されない。 PRIVATE boolean32 rpc_rpcd_is_running(status) unsigned32 *status; { Check if the Unix Stream protocol sequence is supported. If not, return the error rpc_s_protseq_not_supported.(Unix ストリーム・プロトコル順序がサポートされているか否かをチェックせよ。若し サポートされていなければ、エラーrpc_s_protseq_not_supportedを戻せ。) Inspect the instance specification for the RPCD(ept_ v30_cifspec) and get the well-known endpoint for the Unix Stream protocol sequence.(RPCD(ept_v30_cifspec)のイ ンスタンス仕様を検査し、そしてUnixストリーム・プロトコル順序の公知の エンドポイントを獲得せよ。) The endpoint is used as a socket file for communicating to the RPCD. First, check if the file exists. If it does exist, then we expect it to be a file associated with a socket, and the fopen() should fail with the appropriate error. If it doesn't exist, then there is no rpcd running (at least with support for ncacn_unix_stream). So just return. Everything is OK.(そのエンドポイントはRPCDと通信するためのソケット・フ ァイルとして使用される。先ず、そのファイルが存在するか否かをチェックせよ 。若しそのファイルが存在すれば、そのファイルはソケットに関連されたファイ ルであると想定され、そしてfopen()は適当なエラーで不成功にされる。若しそ のファイルが存在しなければ、RPCD(少なくともncacn_unix_streamをサポ ートするRPCD)は実行されない。従って、戻るだけである。すべてOKであ る。) If this file can be opened, then it is NOT a socket file. Therefore remove it (i.e. it shouldn't be therein the first place) and return.(若しこのファイルがオープンできれば、そ れはソケット・ファイルではない。従って、それを除去し(即ち、最初の位置で はない)、そして戻れ。) If the file exists, and is a socket file, check if there is an RPCD actively using it. Do this via a socket()/connect() sequence.(若しこのファイルが存在し、ソケット・ファイルであれば 、それを積極的に使用するRPCDがあるか否かをチェックせよ。これを、sock et()/connect()順序を介して行なえ。) If no rpcd is running, we expect the connect call to fail. We check for the proper error, and flag the case where an unexpected error occurs.(若しRPCDが実行されていなければ、接 続呼び出しは不成功に終わると予測される。ユーザはエラーの適正をチェックし 、そして、予想外のエラーが発生した場合、フラグする。) If able to connect to the RPCD, return true. Otherwise, return false.(若しRPCDへの接続が成功したならば、真を戻せ。 RPCDへの接続が不成功ならば、偽を戻せ。) }
【0091】0.1.2.8 src/rpc/runtime/twrp.h これは既存のファイルである。このファイルは、RPC
タワー参照子構造及びオクテット・ストリングの構造及
び検査に関する宣言を含んでいる。このファイルは下記
の付加的なラインを含ませるために変更される。 /* Protocol identifiers for each lower tower floor. */ #define twr_c_flr_prot_id_fname 0x20 /* Unix Domain filename */ #define twr_c_flr_prot_id_dummy 0x21 /* Dummy prot id for floor 5 */ /* Number of lower floors in Unix address family. */ #define twr_c_num_unix_lower_flrs 2 /* Number lower flrs in unix tower */ /* Unix family filename size */ #define twr_c_unix_frame_size 108
【0092】注記 :「Unixドメイン」タワー参照
子はタワー・フロアを4個しか使用しないけれども、し
かし、第5のフロアが含まれており、これはデータを含
んでいない。これは、5個のフロアが「フル・タワー」
であると見做されるタワー・オクテット・ストリングを
検査するのに用いられるRPCランタイムのアルゴリズ
ムに原因がある。「Unixドメイン」はフル・タワー
であるけれども、タワーに関連するデータを持つフロア
は4個だけしかない。
【0093】0.1.2.9 src/rpc/runtime/comtwrref.c これは既存のファイルである。このファイルはプロトコ
ル・タワーのランタイム参照子表示に関して動作するル
ーチンを含んでいる。
【0094】0.1.2.9.1 rpc_tower_ref_inq_protseq_i
d() このルーチンは変更される。このルーチンは、そのプロ
トコル順序のためのタワー参照子を作る上位フロア3及
び下位タワー・フロアのためのプロトコル識別子の組み
合せに対して使用可能なすべてのプロトコル順序のマッ
ピングを含む静的テーブルを含んでいる。このテーブル
は、ncacn_unix_streamプロトコル順序用のエントリの
付加を含ませるために変更されなければならない。 static_rpc_tower_prot_ids_t rpc_tower_prot_ids[rpc_c_protseq_id_max + 1] = { {rpc_c_protseq_id__ncacn_unix_stream,3, {{rpc_c_cn_proto_id,{0}}, {twr_c_flr_prot_id_fname,{0}}, {twr_c_flr_prot_id_dummy,{0}}, {0x00,{0}} } }, .../* other existing table elements */ };
【0095】0.1.2.10 src/rpc/rpcd/rpcd.c これは既存のファイルである。このファイルは、rpcdサ
ーバが来た時、ncacn_unix_streamを介する要求を聴取
するのに使用されるソケット・ファイルが存在するか否
かを、rpcdサーバがチェックするように、変更される必
要がある。若しソケット・ファイルが存在していれば、
そのソケット・ファイルは削除する必要がある。これ
は、ファイルが既に存在しているならば、ソケット・フ
ァイルは作成できないからである。
【0096】0.1.2.10.1 main() データベースが初期化された後で、プロトコル順序のサ
ポートが設定される前に、下記のコード付加されなけれ
ばならない。 ..../* database initialization */ .... if (rpc_rpcd_is_running(&status)) { fprintf(stderr, "(rpcd) Instance already running. Can't continue.?n"); exit(1); } if((status ! = rpc_s_ok) && (status ! = rpc_s_protseq_not_supported)) } fprintf(stderr, "(rpcd) Error checking for other rpcd instances.?n"); exit(1); } .... ..../* rest of rpcd setup */
【0097】0.1.2.11 src/libdce/RIOS/libdce.syms これは既存のファイルである。このファイルは、ルーチ
ンrpc_rpcd_is_running()を含ませるために更新する必
要がある。これは、libdce.aの外側のルーチンまたはプ
ログラムがこのルーチンにアクセスできるようにするた
めである。rpcdがこのルーチンを呼び出すので、このル
ーチンが必要である。下記のラインをlibdce.-symsに付
加するだけでよい。 rpc_rpcd_is_running
【0098】0.1.2.12 Auto Handles [auto_handle]の属性の使用は、アプリケーション・コ
ードがバインディング・ハンドルを獲得し及び/又はそ
のバインディング・ハンドルのエンドポイントを分析す
るための責任を持たないことを表示する。[auto_handl
e]の属性は、RPCランタイムがこれのすべてを操作す
ることを特定する。ユーザが特定するすべてのものは、
RPCランタイムがバインディング・ハンドルの検索を
開始するネーム・スペースのエントリ位置を特定するだ
けである。(これは、環境変数RPC_DEFAULT_ENTRYを介
して行なわれる。)クライアント及びサーバが同じホス
ト・コンピュータに存在する場合に、RPCランタイム
は、ncacn_unix_streamを使用するインテリジェンスを
持つ。
【0099】0.1.2.13 Utilities この機能の実施は管理的な責任を遂行するための幾つか
のユティリティの作成を必要とする。これらのユティリ
ィティは下記に説明されている。
【0100】0.1.2.13.1 src/rpc/utils/rpcclean このユティリティは、RPCランタイムのルーチンrpc_
network_inq_protseqs()を単に呼び出し、そして、呼び
出されたプロトコル順序のストリング・ベクトルを、1
行に1プロトコル順序づつ印刷する。このユティリティ
は、与えられたホスト・コンピュータに使用可能なプロ
トコル順序を決定するためのmkdceに対して使用され
る。1実施例において、サポートされたプロトコル順序
はmkdce記述子に配線される。また、この記述子は、与
えられたホスト・コンピュータにおいてサポートされた
プロトコル順序を決定するための管理用の迅速な方法に
使用することができる。このユティリティのためのコー
ドは以下の通りである。 *include <stdio.h> *include <dce/rpc.h> *include <dce/ecd_error.h> char message[dce_c_error_string_len]; main(unsigned32argc,unsigned_char_p_t argv[]) { rpc_protseq_vector_p_t psvp; unsigned32i,status=0,tmp_status=); rpc_network_inq_protseqs( &psvp, &status); if(status ! = rpc_s_ok) { dce_error_inq_text(status,message,&tmp_status); printf("%s: %s/n, argv[0], message); exist(1); } for (i = 0;i<psvp->count;i+ +) { printf("%s/n",psvp->protseq[i]); } }
【0101】0.1.2.13.2 src/rpc/utils/rpcprotseqs このユティリティはRPCランタイムのルーチンrpc_ne
twork_inq_protseqs()を単純に呼び出し、そして、呼び
出されたプロトコル順序のストリング・ベクトルを、1
行に1プロトコル順序づつ印刷する。このユティリティ
は、与えられたホスト・コンピュータに使用可能なプロ
トコル順序を決定するためのmkdceに対して使用され
る。1実施例において、サポートされたプロトコル順序
はmkdce記述子に配線される。また、この記述子は、与
えられたホスト・コンピュータにおいてサポートされた
プロトコル順序を決定するための管理用の迅速な方法に
使用することができる。このユティリティのためのコー
ドは以下の通りである。 #include <stdio.h> #include <dce/rpc.h> #include <dce/dce_error.h> char message[dce_c_error_string_len]; main(unsigned32 argc,unsigned_char_p_t argv[]) { rpc_protseq_vector_p_t psvp; unsigned32 i,status=0,tmp_status=0; rpc_network_inq_protseqs(&psvp,&status); if(status ! = rpc_s_ok) { dce_error_inq_text(status,message,&tmp_status); printf("%s; %s/n, argv[0], message); exit(1); } for (i = 0;i<psvp->count;i+ +) { printf("%s/n",psvp->protseq[i]); } }
【0102】0.1.3 互換性 この機能は互換性の問題を全く生じない。
【0103】0.1.3.1 逆方向の互換性 既存のアプリケーションはこの機能を含ませるためにD
CEをアップグレードすることができ、修正を施すこと
なく実行することができる。また、クライアント/サー
バ・アプリケーションが異なったホスト・コンピュータ
にあり、一方のアプリケーションがこの機能を使用し、
他方のアプリケーションがこの機能を使用しない場合で
も、修正することなく実行することができる。複数のコ
ンピュータに跨がって「Unixドメイン」を使用する
ことはできないので、上述のことは、互換性の問題では
なく、共存の問題である。
【0104】0.1.3.2 Cross-Platformの互換性 この機能は、AIX及びOS/2を使用して実行され
る。AIX及びOS/2プラットフォームの間を通信す
るクライアント/サーバ・アプリケーションは、この機
能の利益を享受することができないけれども、既存のア
プリケーションは、この機能を含ませるためにDCEを
アップグレードすることができ、そして修正することな
く実行することができる。
【0105】逆方向の互換性は、この機能の導入前に可
能であった範囲内で、プラットフォームに跨がってのみ
拡大する。この機能の範囲を越えたソースからの他の非
互換性の導入があるにも拘らず、勿論、互換性のすべて
のクレームがある。
【0106】0.1.4 DCEの導入及び構成の影響 DCEがコンピュータに導入される時、ディレクトリ/v
ar/dce/rpc/socketが作成されなければならない。若し
このディレクトリが既に存在しているならば、そのディ
レクトリは消去され、再作成されねばならない。これ
は、DCE導入のアップグレードが起きた時、すべての
DCEアプリケーションが停止されるものと仮定され、
「Unixドメイン」ソケット・ファイルが作成される
場合、このディレクトリ中に残されたすべてのファイル
は古いファイルとなるからである。
【0107】0.1.5 RAS(信頼性、可用性、保守
性)に対する影響 この機能によってRASに及ぼす影響はない。
【0108】0.1.6 NLS(各国語サポート)に対す
る影響 この機能によってNLSに及ぼす影響はない。
【0109】0.1.7 性能及び記憶域の見積り RPCの性能は、クライアント及びサーバが同じホスト
・コンピュータ中に存在する場合、10%乃至20%ま
での性能向上がある。クライアント及びサーバが異なっ
たホスト・コンピュータ中にある場合でも、性能は影響
されない。
【0110】記憶域の見積りは問題にはならない。サー
バが登録する各「Unixドメイン」のエンドポイント
に対してソケット・ファイルが作成されるけれども、こ
のファイルは長さが0である。
【0111】システム中に取り残されている古いソケッ
ト・ファイルを除去するために、rpccleanユティリティ
(この明細書において既に説明されている)を実行する
ことができる。これは、ファイルシステム中に用いられ
ているiノードの数を減小する。
【0112】0.1.8 テストの計画 テストの計画はこの明細書には記載しない。この機能が
正しく動作することを保証するのに必要とする付加的な
テストケースまたはテスト構成を示した現用のRPC
FVTテスト計画の付属書を参照されたい。
【0113】本発明の良好な実施例は、パーソナル・コ
ンピュータ、またはワークステーションのランダム・ア
クセス・メモリ中に常駐するコード・モジュール中のイ
ンストラクションの組として実行される。コンピュータ
・システムによって要求されるまで、インストラクショ
ンの組は、例えばハード・ディスク・ドライブ、または
オプティカル・ディスク(CD−ROM中に使用されて
いる)や、フロッピィ・ディスク(フロッピィ・デイス
ク・ドライブ中で使用されている)などの取り外し可能
なメモリなどの他のコンピュータ・メモリ中にストアす
ることができる。
【0114】以上、本発明は特定のオペレーティング・
システム及びネットワーク環境における良好な実施例に
ついて説明してきたが、本発明の技術思想の範囲内で、
本発明の実施例を他のオペレーティング・システム及び
ネットワーク・アーキテクチャによって変更し、または
置換することは当業者であれば容易に行なうことができ
るのは自明であろう。従って、例えば、DCE−RPC
アーキテクチャの術語において、クライアント・プロセ
スはサーバ・プロセスに「バインディング・ハンドル」
を渡す。然しながら、本発明はDCE−RPCアーキテ
クチャに限定して解釈されるべきではなく、従って、本
発明は、例えば、サーバ・プロセスの位置を特定し、そ
してクライアント及びサーバ・プロセスの間で使用され
る通信プロトコルを設定するデータ構造を、サーバ・プ
ロセスに通過することなどにより、クライアント・プロ
セスがローカル通信を獲得し、かつ設定する任意のネッ
トワーク環境をカバーするようなより包括的な観点から
解釈されるべきである。
【0115】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0116】(1)分散計算環境内におけるクライアン
ト・プロセスとサーバ・プロセスの間の通信を管理する
方法であって、上記クライアント・プロセスは、トラン
スポート層及びネットワーク層を有する物理ネットワー
クに接続されたホスト・コンピュータ中に存在し、上記
方法は、(a) クライアント・プロセスによって行な
われた遠隔プロシージャ呼び出し(RPC)に応答し
て、該RPCによって識別されたサーバ・プロセスが上
記ホスト・コンピュータ中に存在するか否かを決定する
ステップを含み、上記RPCは、トランスポート層及び
ネットワーク層の使用を介した通信路を定義するプロト
コル順序を持ち、(b) 若し上記サーバ・プロセスが
上記ホスト・コンピュータ中に存在するならば、上記R
PCのプロトコル順序には関係なく、上記クライアント
・プロセスと上記サーバ・プロセスとの間にインタープ
ロセス通信路を設定するステップと、(c) 上記RP
Cのプロトコル順序を上記クライアント・プロセスに戻
すステップと、(d) 上記インタープロセス通信路を
介して上記遠隔プロシージャ呼び出しを実行するステッ
プと、を含む通信管理方法。 (2)上記プロトコル順序はRPCに影響を与えないで
使用されることを特徴とする(1)に記載の通信管理方
法。 (3)上記プロトコル順序は接続指向プロトコル順序で
あることを特徴とする(1)に記載の通信管理方法。 (4)上記プロトコル順序は非接続プロトコル順序であ
ることを特徴とする(1)に記載の通信の管理方法。 (5)上記遠隔プロシージャ呼び出しは、上記ホスト・
コンピュータのオペレーティング・システムのメッセー
ジ送受信機能を用いて実行されることを特徴とする
(1)に記載の通信管理方法。 (6)分散計算環境内におけるクライアント・プロセス
とサーバ・プロセスの間の通信を管理する方法であっ
て、上記クライアント・プロセスは、トランスポート層
及びネットワーク層を有する物理ネットワークに接続さ
れたホスト・コンピュータ中に存在し、上記方法は、
(a) 遠隔プロシージャ呼び出し(RPC)が上記ク
ライアント・プロセスによって行なわれた時、上記遠隔
プロシージャ呼び出しによって識別されたサーバ・プロ
セスが上記ホスト・コンピュータ中に存在しているか否
かを決定するステップと、(b) 若し上記サーバ・プ
ロセスが上記ホスト・コンピュータ中にあれば、トラン
スポート層及びネットワーク層の使用を介した通信路を
定義するプロトコル順序を含む第1データ構造を上記ク
ライアント・プロセスに戻すステップと、(c) 上記
第1データ構造を、上記クライアント・プロセス及び上
記サーバ・プロセス間のインタープロセス通信路を定義
するプロトコル順序を含む第2データ構造にマップする
ステップと、(d) 上記第2データ構造中のプロトコ
ル順序によって定義された上記インタープロセス通信路
を介して上記遠隔プロシージャ呼び出しを実行するステ
ップと、を含む通信管理方法。 (7)上記遠隔プロシージャ呼び出しは、上記ホスト・
コンピュータのオペレーティング・システムのメッセー
ジ送受信機能を用いて実行されることを特徴とする
(6)に記載の通信管理方法。 (8)上記第1データ構造のプロトコル順序は上記RP
Cに影響を与えることなく使用されることを特徴とする
(6)に記載の通信管理方法。 (9)上記第1データ構造のプロトコル順序は接続指向
プロトコル順序であることを特徴とする(6)に記載の
通信管理方法。 (10)上記第2データ構造のプロトコル順序はソケッ
ト・ファイルに対するフル・パス名を含んでいることを
特徴とする(9)に記載の通信管理方法。 (11)命名規則及びエンドポイントが上記パス名を決
定するのに用いられることを特徴とする(10)に記載
の通信管理方法。 (12)ホスト・コンピュータがUNIXベースのオペ
レーティング・システムをサポートしており、クライア
ント・プロセスがトランスポート層及びネットワーク層
を有する物理ネットワークに接続された上記ホスト・コ
ンピュータ中に常駐している分散計算環境内において、
上記クライアント・プロセスが遠隔プロシージャ呼び出
しを行なった時に、上記クライアント・プロセス及びサ
ーバ・プロセス間の通信を管理する方法であって、
(a) 若し上記サーバ・プロセスが上記ホスト・コン
ピュータ中に存在するならば、上記遠隔プロシージャ呼
び出しに通常関連しているプロトコル順序を持つバンイ
ンディング・ハンドルを上記クライアント・プロセスに
戻すステップと、(b) 上記遠隔プロシージャ呼び出
しに通常関連しているプロトコル順序を、上記クライア
ント・プロセス及び上記サーバ・プロセス間のインター
プロセス通信路を設定する代替プロトコル順序にマップ
するステップと、(c) 上記UNIXベースのオペレ
ーティング・システムのメッセージ送受信機能を用い
て、上記インタープロセス通信路を介して上記遠隔プロ
シージャ呼び出しを実行するステップと、を含む通信管
理方法。 (13)「ncacn」は接続指向RPCプロトコルであ
り、「unix」は「UNIXネットワーク・アドレス・フ
ァミリィ(AF_UNIX)通信ドメイン」を識別し、
「stream」はUNIXドメイン・ソケットを識別するも
のとした場合、上記遠隔プロシージャ呼び出しに関連し
たプロトコル順序は接続指向プロトコル「ncacn_ip_tc
p」であり、上記代替プロトコル順序は「ncacn_unix_st
ream」であることを特徴とする(12)に記載の通信管
理方法。 (14)「ncadg」は非接続RPCプロトコルであり、
「unix」は「UNIXネットワーク・アドレス・ファミ
リィ(AF_UNIX)通信ドメイン」を識別し、「dg
ram」はUNIXドメイン・ソケットを識別するものと
した場合、上記遠隔プロシージャ呼び出しに関連したプ
ロトコル順序は非接続指向プロトコル「ncacn_ip_udp」
であり、上記代替プロトコル順序は「ncadg_unix_dgra
m」であることを特徴とする(12)に記載の通信管理
方法。 (15)ホスト・コンピュータがインタープロセス通信
(IPC)機構を有し、かつ、ユーザが分散されたリソ
ース及びプロセス・アプリケーションにアクセスするこ
とのできる分散計算環境を与えるローカル・エリア・ネ
ットワークであって、クライアント・プロセスからの遠
隔プロシージャ呼び出し(RPC)に応答して、該RP
Cによって識別されたサーバ・プロセスが上記ホスト・
コンピュータ中にあるか否かを検出する検出手段と、該
検出手段に応答して、予期されたプロトコル順序を上記
クライアント・プロセスに戻し、かつ、上記RPCを助
長するために代替プロトコル順序を用いる手段を含み、
上記代替プロトコル順序はIPC構造を通る通信路を設
定することと、を含むローカル・エリア・ネットワー
ク。 (16)ユーザが分散されたリソース及びプロセス・ア
プリケーションにアクセスすることのできる分散計算環
境を与え、かつ、トランスポート層及びネットワーク層
を有するローカル・エリア・ネットワークに接続された
ホスト・コンピュータを含むコンピュータ・システムで
あって、クライアント・プロセスからの遠隔プロシージ
ャ呼び出し(RPC)に応答して、該RPCによって識
別されたサーバ・プロセスが上記ホスト・コンピュータ
中にあるか否かを検出する検出手段と、該検出手段に応
答して、予期されたプロトコル順序を上記クライアント
・プロセスに戻し、かつ、上記RPCを助長するために
代替プロトコル順序を用いる手段を含み、上記代替プロ
トコル順序の使用は上記クライアント・プロセスに影響
を与えないことと、を含むコンピュータ・システム。 (17)ホスト・コンピュータによって読み取り可能で
あり、かつ、上記ホスト・コンピュータで実行されるク
ライアント・プロセスからの通信を管理する方法を実施
するための、該ホスト・コンピュータによって実行可能
な命令からなるプログラムを具現化するプログラム記憶
装置であって、上記ホスト・コンピュータはトランスポ
ート層及びネットワーク層を有するローカル・エリア・
ネットワークに接続されており、上記方法は、(a)
遠隔プロシージャ呼び出しが上記クライアント・プロセ
スによって行なわれた時、上記遠隔プロシージャ呼び出
しによって識別されたサーバ・プロセスが上記ホスト・
コンピュータ中にあるか否かを検出するステップと、
(b) 若し上記サーバ・プロセスが上記ホスト・コン
ピュータ中にあるならば、上記トランスポート層及びネ
ットワーク層の使用を介した通信路を定義するプロトコ
ル順序を含む第1データ構造を上記クライアント・プロ
セスに戻すステップと、(c) 上記第1データ構造
を、上記クライアント・プロセス及び上記サーバ・プロ
セス間のインタープロセス通信路を定義するプロトコル
順序を含む第2データ構造にマップするステップと、
(d) 上記第2データ構造のプロトコル順序によって
定義された上記インタープロセス通信路を介して上記遠
隔プロシージャ呼び出しを実行するステップと、を含む
プログラム記憶装置。
【図面の簡単な説明】
【図1】本発明が適用されるコンピュータ・ネットワー
クを説明するための図である。
【図2】物理的ネットワークのネットワーク層及びトラ
ンスポート層を使用した従来のRPCを説明するための
図である。
【図3】ローカルRPCがホスト・コンピュータのIP
C構造を用いて遂行された本発明の実施例を説明するた
めの図である。
【図4】ローカル遠隔プロシージャ呼び出しを与えるた
めのプロシージャを最適化するための本発明の実施例を
説明するための図である。
【符号の説明】
10 クライアント 12 サーバ 14 ネットワーク 15 クライアント/サーバ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 サンダヤ・カプール アメリカ合衆国 78759、テキサス州、オ ースチン、バーカー・リッジ・ドライブ 5711 (72)発明者 イ・シュー・ウェイ アメリカ合衆国 78726、テキサス州、オ ースチン、ベックウッド・ドライブ 10611

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 分散計算環境内におけるクライアント・
    プロセスとサーバ・プロセスの間の通信を管理する方法
    であって、上記クライアント・プロセスは、トランスポ
    ート層及びネットワーク層を有する物理ネットワークに
    接続されたホスト・コンピュータ中に存在し、上記方法
    は、 (a) クライアント・プロセスによって行なわれた遠
    隔プロシージャ呼び出し(RPC)に応答して、該RP
    Cによって識別されたサーバ・プロセスが上記ホスト・
    コンピュータ中に存在するか否かを決定するステップを
    含み、上記RPCは、トランスポート層及びネットワー
    ク層の使用を介した通信路を定義するプロトコル順序を
    持ち、 (b) 若し上記サーバ・プロセスが上記ホスト・コン
    ピュータ中に存在するならば、上記RPCのプロトコル
    順序には関係なく、上記クライアント・プロセスと上記
    サーバ・プロセスとの間にインタープロセス通信路を設
    定するステップと、 (c) 上記RPCのプロトコル順序を上記クライアン
    ト・プロセスに戻すステップと、 (d) 上記インタープロセス通信路を介して上記遠隔
    プロシージャ呼び出しを実行するステップと、 を含む通信管理方法。
  2. 【請求項2】 上記プロトコル順序はRPCに影響を与
    えないで使用されることを特徴とする請求項1に記載の
    通信管理方法。
  3. 【請求項3】 上記プロトコル順序は接続指向プロトコ
    ル順序であることを特徴とする請求項1に記載の通信管
    理方法。
  4. 【請求項4】 上記プロトコル順序は非接続プロトコル
    順序であることを特徴とする請求項1に記載の通信の管
    理方法。
  5. 【請求項5】 上記遠隔プロシージャ呼び出しは、上記
    ホスト・コンピュータのオペレーティング・システムの
    メッセージ送受信機能を用いて実行されることを特徴と
    する請求項1に記載の通信管理方法。
  6. 【請求項6】 分散計算環境内におけるクライアント・
    プロセスとサーバ・プロセスの間の通信を管理する方法
    であって、上記クライアント・プロセスは、トランスポ
    ート層及びネットワーク層を有する物理ネットワークに
    接続されたホスト・コンピュータ中に存在し、上記方法
    は、 (a) 遠隔プロシージャ呼び出し(RPC)が上記ク
    ライアント・プロセスによって行なわれた時、上記遠隔
    プロシージャ呼び出しによって識別されたサーバ・プロ
    セスが上記ホスト・コンピュータ中に存在しているか否
    かを決定するステップと、 (b) 若し上記サーバ・プロセスが上記ホスト・コン
    ピュータ中にあれば、トランスポート層及びネットワー
    ク層の使用を介した通信路を定義するプロトコル順序を
    含む第1データ構造を上記クライアント・プロセスに戻
    すステップと、 (c) 上記第1データ構造を、上記クライアント・プ
    ロセス及び上記サーバ・プロセス間のインタープロセス
    通信路を定義するプロトコル順序を含む第2データ構造
    にマップするステップと、 (d) 上記第2データ構造中のプロトコル順序によっ
    て定義された上記インタープロセス通信路を介して上記
    遠隔プロシージャ呼び出しを実行するステップと、 を含む通信管理方法。
  7. 【請求項7】 上記遠隔プロシージャ呼び出しは、上記
    ホスト・コンピュータのオペレーティング・システムの
    メッセージ送受信機能を用いて実行されることを特徴と
    する請求項6に記載の通信管理方法。
  8. 【請求項8】 上記第1データ構造のプロトコル順序は
    上記RPCに影響を与えることなく使用されることを特
    徴とする請求項6に記載の通信管理方法。
  9. 【請求項9】 上記第1データ構造のプロトコル順序は
    接続指向プロトコル順序であることを特徴とする請求項
    6に記載の通信管理方法。
  10. 【請求項10】 上記第2データ構造のプロトコル順序
    はソケット・ファイルに対するフル・パス名を含んでい
    ることを特徴とする請求項9に記載の通信管理方法。
  11. 【請求項11】 命名規則及びエンドポイントが上記パ
    ス名を決定するのに用いられることを特徴とする請求項
    10に記載の通信管理方法。
  12. 【請求項12】 ホスト・コンピュータがUNIXベー
    スのオペレーティング・システムをサポートしており、
    クライアント・プロセスがトランスポート層及びネット
    ワーク層を有する物理ネットワークに接続された上記ホ
    スト・コンピュータ中に常駐している分散計算環境内に
    おいて、上記クライアント・プロセスが遠隔プロシージ
    ャ呼び出しを行なった時に、上記クライアント・プロセ
    ス及びサーバ・プロセス間の通信を管理する方法であっ
    て、 (a) 若し上記サーバ・プロセスが上記ホスト・コン
    ピュータ中に存在するならば、上記遠隔プロシージャ呼
    び出しに通常関連しているプロトコル順序を持つバンイ
    ンディング・ハンドルを上記クライアント・プロセスに
    戻すステップと、 (b) 上記遠隔プロシージャ呼び出しに通常関連して
    いるプロトコル順序を、上記クライアント・プロセス及
    び上記サーバ・プロセス間のインタープロセス通信路を
    設定する代替プロトコル順序にマップするステップと、 (c) 上記UNIXベースのオペレーティング・シス
    テムのメッセージ送受信機能を用いて、上記インタープ
    ロセス通信路を介して上記遠隔プロシージャ呼び出しを
    実行するステップと、 を含む通信管理方法。
  13. 【請求項13】 「ncacn」は接続指向RPCプロトコ
    ルであり、「unix」は「UNIXネットワーク・アドレ
    ス・ファミリィ(AF_UNIX)通信ドメイン」を識
    別し、「stream」はUNIXドメイン・ソケットを識別
    するものとした場合、上記遠隔プロシージャ呼び出しに
    関連したプロトコル順序は接続指向プロトコル「ncacn_
    ip_tcp」であり、上記代替プロトコル順序は「ncacn_un
    ix_stream」であることを特徴とする請求項12に記載
    の通信管理方法。
  14. 【請求項14】 「ncadg」は非接続RPCプロトコル
    であり、「unix」は「UNIXネットワーク・アドレス
    ・ファミリィ(AF_UNIX)通信ドメイン」を識別
    し、「dgram」はUNIXドメイン・ソケットを識別す
    るものとした場合、上記遠隔プロシージャ呼び出しに関
    連したプロトコル順序は非接続指向プロトコル「ncacn_
    ip_udp」であり、上記代替プロトコル順序は「ncadg_un
    ix_dgram」であることを特徴とする請求項12に記載の
    通信管理方法。
  15. 【請求項15】 ホスト・コンピュータがインタープロ
    セス通信(IPC)機構を有し、かつ、ユーザが分散さ
    れたリソース及びプロセス・アプリケーションにアクセ
    スすることのできる分散計算環境を与えるローカル・エ
    リア・ネットワークであって、 クライアント・プロセスからの遠隔プロシージャ呼び出
    し(RPC)に応答して、該RPCによって識別された
    サーバ・プロセスが上記ホスト・コンピュータ中にある
    か否かを検出する検出手段と、 該検出手段に応答して、予期されたプロトコル順序を上
    記クライアント・プロセスに戻し、かつ、上記RPCを
    助長するために代替プロトコル順序を用いる手段を含
    み、上記代替プロトコル順序はIPC構造を通る通信路
    を設定することと、 を含むローカル・エリア・ネットワーク。
  16. 【請求項16】 ユーザが分散されたリソース及びプロ
    セス・アプリケーションにアクセスすることのできる分
    散計算環境を与え、かつ、トランスポート層及びネット
    ワーク層を有するローカル・エリア・ネットワークに接
    続されたホスト・コンピュータを含むコンピュータ・シ
    ステムであって、 クライアント・プロセスからの遠隔プロシージャ呼び出
    し(RPC)に応答して、該RPCによって識別された
    サーバ・プロセスが上記ホスト・コンピュータ中にある
    か否かを検出する検出手段と、 該検出手段に応答して、予期されたプロトコル順序を上
    記クライアント・プロセスに戻し、かつ、上記RPCを
    助長するために代替プロトコル順序を用いる手段を含
    み、上記代替プロトコル順序の使用は上記クライアント
    ・プロセスに影響を与えないことと、 を含むコンピュータ・システム。
  17. 【請求項17】 ホスト・コンピュータによって読み取
    り可能であり、かつ、上記ホスト・コンピュータで実行
    されるクライアント・プロセスからの通信を管理する方
    法を実施するための、該ホスト・コンピュータによって
    実行可能な命令からなるプログラムを具現化するプログ
    ラム記憶装置であって、上記ホスト・コンピュータはト
    ランスポート層及びネットワーク層を有するローカル・
    エリア・ネットワークに接続されており、上記方法は、 (a) 遠隔プロシージャ呼び出しが上記クライアント
    ・プロセスによって行なわれた時、上記遠隔プロシージ
    ャ呼び出しによって識別されたサーバ・プロセスが上記
    ホスト・コンピュータ中にあるか否かを検出するステッ
    プと、 (b) 若し上記サーバ・プロセスが上記ホスト・コン
    ピュータ中にあるならば、上記トランスポート層及びネ
    ットワーク層の使用を介した通信路を定義するプロトコ
    ル順序を含む第1データ構造を上記クライアント・プロ
    セスに戻すステップと、 (c) 上記第1データ構造を、上記クライアント・プ
    ロセス及び上記サーバ・プロセス間のインタープロセス
    通信路を定義するプロトコル順序を含む第2データ構造
    にマップするステップと、 (d) 上記第2データ構造のプロトコル順序によって
    定義された上記インタープロセス通信路を介して上記遠
    隔プロシージャ呼び出しを実行するステップと、を含む
    プログラム記憶装置。
JP19202896A 1995-09-12 1996-07-22 通信管理方法及びコンピュータ・システム Expired - Fee Related JP3962112B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/526833 1995-09-12
US08/526,833 US5682534A (en) 1995-09-12 1995-09-12 Transparent local RPC optimization

Publications (2)

Publication Number Publication Date
JPH09160856A true JPH09160856A (ja) 1997-06-20
JP3962112B2 JP3962112B2 (ja) 2007-08-22

Family

ID=24098997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19202896A Expired - Fee Related JP3962112B2 (ja) 1995-09-12 1996-07-22 通信管理方法及びコンピュータ・システム

Country Status (2)

Country Link
US (1) US5682534A (ja)
JP (1) JP3962112B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177930A (ja) * 2001-09-04 2003-06-27 Samsung Electronics Co Ltd プロセス間通信方法及び装置
JP2005506629A (ja) * 2001-10-24 2005-03-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 効率的な通信方法及びシステム
JP2010237977A (ja) * 2009-03-31 2010-10-21 Fujitsu Ltd マルチプロセッサ及び制御プログラム
US8656120B2 (en) 2009-09-21 2014-02-18 Samsung Electronics Co., Ltd. Device, method and computer-readable medium relocating remote procedure call data in heterogeneous multiprocessor system on chip
JP2014186473A (ja) * 2013-03-22 2014-10-02 Fuji Xerox Co Ltd プログラム及び装置
JP2020042809A (ja) * 2018-08-31 2020-03-19 サブコム,エルエルシー ウェブサービスとインターフェース記述言語(idl)ベースのリモートプロシージャコール(rpc)サービスとの間をインターフェースするための技術及びそれを実施する光通信システム
WO2024053733A1 (ja) * 2022-09-09 2024-03-14 コネクトフリー株式会社 情報処理装置、仮想サービス提供プログラムおよび通信方法

Families Citing this family (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718399B1 (en) * 1993-05-21 2004-04-06 Candle Distributed Solutions, Inc. Communications on a network
US6418324B1 (en) 1995-06-01 2002-07-09 Padcom, Incorporated Apparatus and method for transparent wireless communication between a remote device and host system
US6782538B1 (en) * 1995-12-14 2004-08-24 International Business Machines Corporation Object oriented information handling system including an extensible instance manager
US6128647A (en) 1996-04-05 2000-10-03 Haury; Harry R. Self configuring peer to peer inter process messaging system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6625641B1 (en) * 1996-06-03 2003-09-23 Sun Microsystems, Inc. Method and apparatus for providing client support without installation of server software
US6718550B1 (en) * 1996-06-26 2004-04-06 Sun Microsystems, Inc. Method and apparatus for improving the performance of object invocation
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US5999972A (en) 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US5987245A (en) 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US6038590A (en) 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6052711A (en) * 1996-07-01 2000-04-18 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session web access in an interprise computing framework system.
US6233620B1 (en) * 1996-07-02 2001-05-15 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a presentation engine in an interprise computing framework system
US5848246A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US5857191A (en) * 1996-07-08 1999-01-05 Gradient Technologies, Inc. Web application server with secure common gateway interface
US5935211A (en) * 1996-07-10 1999-08-10 Microsoft Corporation Distributed notification
US6212578B1 (en) * 1996-09-09 2001-04-03 Oracle Corporation Method and apparatus for managing dependencies in a distributed computing environment for ensuring the safety of remote procedure calls
US6687762B1 (en) * 1996-10-10 2004-02-03 Hewlett-Packard Development Company, L.P. Network operating system adapted for simultaneous use by different operating systems
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6208952B1 (en) * 1996-10-24 2001-03-27 Microsoft Corporation Method and system for delayed registration of protocols
WO1998025376A2 (en) * 1996-12-02 1998-06-11 First Data Corporation Method and apparatus for improved transaction processing in a distributed computing environment
US6363433B1 (en) * 1997-03-12 2002-03-26 Microsoft Corporation Method and mechanism for client-side handling of extensions originally written for servers
US6088728A (en) * 1997-06-11 2000-07-11 Oracle Corporation System using session data stored in session data storage for associating and disassociating user identifiers for switching client sessions in a server
US6243751B1 (en) * 1997-06-11 2001-06-05 Oracle Corporation Method and apparatus for coupling clients to servers
US6065045A (en) * 1997-07-03 2000-05-16 Tandem Computers Incorporated Method and apparatus for object reference processing
US6157959A (en) * 1997-07-03 2000-12-05 Tandem Computers, Incorporated Method and apparatus for providing portable kernel-mode support for fast interprocess communication
US6253253B1 (en) * 1997-08-25 2001-06-26 International Business Machines Corporation Method and apparatus for optimizing references to objects in a data processing system
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US7167927B2 (en) * 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US7237036B2 (en) 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US7185266B2 (en) 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US6658480B2 (en) 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
US8782199B2 (en) 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6697868B2 (en) 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US7133940B2 (en) 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US7174393B2 (en) * 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US6687758B2 (en) 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6757746B2 (en) 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US6249803B1 (en) 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6510460B1 (en) 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
AU2680399A (en) * 1998-02-26 1999-09-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6026414A (en) * 1998-03-05 2000-02-15 International Business Machines Corporation System including a proxy client to backup files in a distributed computing environment
US20020046228A1 (en) * 1998-03-20 2002-04-18 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6185695B1 (en) 1998-04-09 2001-02-06 Sun Microsystems, Inc. Method and apparatus for transparent server failover for highly available objects
US6694366B1 (en) 1998-04-29 2004-02-17 Symbol Technologies, Inc. Data reconciliation between a computer and a mobile data collection terminal
US6826571B1 (en) 1998-05-22 2004-11-30 International Business Machines Corporation Method and apparatus for dynamically customizing and extending functions of a server program to enable and restrict functions of the server
US6366916B1 (en) 1998-05-22 2002-04-02 International Business Machines Corporation Configurable and extensible system for deploying asset management functions to client applications
US6912561B1 (en) 1998-05-22 2005-06-28 International Business Machines Corporation Method and apparatus for using classes, encapsulating data with its behaviors, for transferring between databases and client applications and for enabling applications to adapt to specific constraints of the data
US6917939B1 (en) 1998-05-22 2005-07-12 International Business Machines Corporation Method and apparatus for configurable mapping between data stores and data structures and a generalized client data model using heterogeneous, specialized storage
EP0973094B1 (en) * 1998-05-29 2002-04-24 Sun Microsystems, Inc. Fast invocations for local highly available objects
US6237053B1 (en) 1998-06-30 2001-05-22 Symbol Technologies, Inc. Configurable operating system having multiple data conversion applications for I/O connectivity
US6826756B1 (en) 1998-06-30 2004-11-30 Symbol Technologies, Inc. Automatic transfer of data from an input device to a software application
US7664883B2 (en) 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
JP2000099332A (ja) 1998-09-25 2000-04-07 Hitachi Ltd 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法
US6675203B1 (en) 1998-10-05 2004-01-06 Symbol Technologies, Inc. Collecting data in a batch mode in a wireless communications network with impeded communication
US7206849B1 (en) 1998-10-05 2007-04-17 Symbol Technologies, Inc. Communication in a wireless communications network when a mobile computer terminal may be unreachable
US7293107B1 (en) 1998-10-09 2007-11-06 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8078727B2 (en) 1998-10-09 2011-12-13 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7136645B2 (en) 1998-10-09 2006-11-14 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6546425B1 (en) 1998-10-09 2003-04-08 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7778260B2 (en) 1998-10-09 2010-08-17 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8060656B2 (en) 1998-10-09 2011-11-15 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
EP1681827A1 (en) * 1998-10-16 2006-07-19 Auspice, Inc. Enterprise level integration and communication techniques
AU769359B2 (en) * 1998-10-16 2004-01-22 Auspice, Inc. Enterprise level integration and communication techniques
US6519636B2 (en) * 1998-10-28 2003-02-11 International Business Machines Corporation Efficient classification, manipulation, and control of network transmissions by associating network flows with rule based functions
US9239763B2 (en) 2012-09-28 2016-01-19 Oracle International Corporation Container database
US6665304B2 (en) * 1998-12-31 2003-12-16 Hewlett-Packard Development Company, L.P. Method and apparatus for providing an integrated cluster alias address
US6920475B1 (en) * 1999-04-23 2005-07-19 Oracle International Corporation Communication architecture for distributed computing environment
US7882247B2 (en) 1999-06-11 2011-02-01 Netmotion Wireless, Inc. Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments
WO2001025894A1 (en) * 1999-10-05 2001-04-12 Ejasent Inc. Snapshot virtual-templating
US6526433B1 (en) * 1999-12-15 2003-02-25 International Business Machines Corporation Adaptive timeout value setting for distributed computing environment (DCE) applications
US7331058B1 (en) 1999-12-16 2008-02-12 International Business Machines Corporation Distributed data structures for authorization and access control for computing resources
US6728788B1 (en) 1999-12-16 2004-04-27 International Business Machines Corporation Method and system for converting a remote procedure call to a local procedure call when the service is on the same device as the calling client
US6915525B2 (en) * 2000-04-14 2005-07-05 Sony Corporation Method and apparatus for controlling set-top box hardware and software functions
US6934933B2 (en) * 2000-08-14 2005-08-23 Twin Communications Of America, Inc. Portable operating environment for information devices
US20020095528A1 (en) * 2000-09-29 2002-07-18 International Business Machines Corporation Method and system for operating a client in a client/server system
US8019901B2 (en) 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US20020091826A1 (en) * 2000-10-13 2002-07-11 Guillaume Comeau Method and apparatus for interprocessor communication and peripheral sharing
US7039717B2 (en) 2000-11-10 2006-05-02 Nvidia Corporation Internet modem streaming socket method
US20020112181A1 (en) * 2000-12-12 2002-08-15 Smith Mark Elwin Multilevel secure network access system
US7051108B1 (en) * 2000-12-21 2006-05-23 Emc Corporation Method and system of interprocess communications
US7047536B1 (en) * 2000-12-29 2006-05-16 Nortel Networks Ltd Method and apparatus for classifying remote procedure call transport traffic
US7296275B2 (en) 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US6986147B2 (en) 2001-03-28 2006-01-10 International Business Machines Corporation Method for transparent, location-independent, remote procedure calls in a heterogeneous network environment
US7028313B2 (en) * 2001-03-28 2006-04-11 International Business Machines Corporation Method for transmitting function parameters to a remote node for execution of the function thereon
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US7562146B2 (en) 2003-10-10 2009-07-14 Citrix Systems, Inc. Encapsulating protocol for session persistence and reliability
US7219161B1 (en) * 2001-08-29 2007-05-15 Cisco Technology, Inc. Techniques for network address and port translation for network protocols that do not use translated ports when requesting network resources
US7131004B1 (en) * 2001-08-31 2006-10-31 Silicon Image, Inc. Method and apparatus for encrypting data transmitted over a serial link
EP1296239A3 (en) * 2001-09-04 2004-05-19 Samsung Electronics Co., Ltd. Interprocess communication method and apparatus
US7263701B2 (en) 2001-09-04 2007-08-28 Samsung Electronics Co., Ltd. Interprocess communication method and apparatus
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030051029A1 (en) 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US7406693B1 (en) * 2001-09-10 2008-07-29 Ncr Corporation Method of controlling applications
US7644171B2 (en) 2001-09-12 2010-01-05 Netmotion Wireless, Inc. Mobile networking system and method using IPv4 and IPv6
US6811085B2 (en) 2001-10-26 2004-11-02 Symbol Technologies, Inc. Miniature imager
US7661129B2 (en) 2002-02-26 2010-02-09 Citrix Systems, Inc. Secure traversal of network components
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7496689B2 (en) 2002-04-22 2009-02-24 Alacritech, Inc. TCP/IP offload device
US7543087B2 (en) 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US7945636B2 (en) * 2002-05-15 2011-05-17 In-Store Broadcasting Network, Llc Providing a multi-tier enterprise level application
US7337241B2 (en) 2002-09-27 2008-02-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US20040268362A1 (en) * 2003-06-25 2004-12-30 International Business Machines Corporation Method, apparatus and program storage device for providing a two-step communication scheme
US7472398B2 (en) * 2003-11-17 2008-12-30 Hewlett-Packard Development Company, L.P. Method and system for hosting an application with a facade server
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7502824B2 (en) * 2004-08-12 2009-03-10 Oracle International Corporation Database shutdown with session migration
US7415470B2 (en) * 2004-08-12 2008-08-19 Oracle International Corporation Capturing and re-creating the state of a queue when migrating a session
EP1810160A4 (en) * 2004-09-22 2008-05-21 Xyratex Tech Ltd INTERCONTROLLER INTERPROCESSOR COMMUNICATION IN XML / SOAP PROTOCOL
JP2006127461A (ja) * 2004-09-29 2006-05-18 Sony Corp 情報処理装置、通信処理方法、並びにコンピュータ・プログラム
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
DE102004062116B3 (de) * 2004-12-23 2006-05-11 Ab Skf Lageranordnung für einen Computertomographen
US7366734B2 (en) * 2004-12-25 2008-04-29 Oracle International Corporation Enabling client systems to discover services accessible by remote procedure calls (RPC) on server systems
US9176772B2 (en) * 2005-02-11 2015-11-03 Oracle International Corporation Suspending and resuming of sessions
US8332485B1 (en) 2005-03-04 2012-12-11 Cisco Technology, Inc. Lock optimization and lock prediction approaches for reducing client-server messages
US7853962B1 (en) * 2005-05-31 2010-12-14 Cisco Technology, Inc. Method and apparatus for optimization of remote procedure call communications
US20070027877A1 (en) * 2005-07-29 2007-02-01 Droshev Mladen I System and method for improving the efficiency of remote method invocations within a multi-tiered enterprise network
US9606846B2 (en) * 2005-07-29 2017-03-28 Sap Se System and method for dynamic proxy generation
US10805275B1 (en) * 2005-08-23 2020-10-13 Trend Micro Incorporated Multi-process architecture for implementing a secure internet service
US7716307B1 (en) 2005-10-21 2010-05-11 Cisco Technology, Inc. Method and apparatus for reducing client-server messages associated with opening a file
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US7738500B1 (en) 2005-12-14 2010-06-15 Alacritech, Inc. TCP timestamp synchronization for network connections that are offloaded to network interface devices
US20070168509A1 (en) * 2005-12-30 2007-07-19 Droshev Mladen I System and method for remote loading of classes
US8032900B2 (en) * 2006-08-02 2011-10-04 Microsoft Corporation Conducting client-server inter-process communication
US20080155103A1 (en) * 2006-12-21 2008-06-26 Kimberly Tekavec Bailey AF UNIX Socket Across Systems in the Same Computer on Computer Systems that Support Multiple Operating System Images
US10120733B2 (en) * 2007-08-30 2018-11-06 Red Hat, Inc. Remote procedure call supporting multiple versions
US20090064208A1 (en) * 2007-08-30 2009-03-05 Thomas Mitchell Elrod SSL socket builder
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
US8549038B2 (en) * 2009-06-15 2013-10-01 Oracle International Corporation Pluggable session context
US8635632B2 (en) * 2009-10-21 2014-01-21 International Business Machines Corporation High performance and resource efficient communications between partitions in a logically partitioned system
US8656412B2 (en) * 2009-12-25 2014-02-18 International Business Machines Corporation Pipeline across isolated computing environments
US20110219387A1 (en) * 2010-03-04 2011-09-08 Microsoft Corporation Interactive Remote Troubleshooting of a Running Process
US8438220B2 (en) 2010-06-30 2013-05-07 International Business Machines Corporation Method for optimizing remote object implementations
WO2015151113A1 (en) 2014-04-02 2015-10-08 Hewlett-Packard Development Company, L.P. Direct access to network file system exported share
US10387387B2 (en) 2015-12-17 2019-08-20 Oracle International Corporation Enabling multi-tenant access to respective isolated data sets organized using different application schemas
US10289617B2 (en) 2015-12-17 2019-05-14 Oracle International Corporation Accessing on-premise and off-premise datastores that are organized using different application schemas
CN107438060B (zh) * 2016-05-28 2020-12-15 华为技术有限公司 一种网络设备中的远程过程调用方法及网络设备
US10303894B2 (en) 2016-08-31 2019-05-28 Oracle International Corporation Fine-grained access control for data manipulation language (DML) operations on relational data
KR20180046791A (ko) * 2016-10-28 2018-05-09 삼성전자주식회사 전자 장치 및 전자 장치의 데이터 전송 방법
CA3088394C (en) 2018-03-08 2023-08-01 Landmark Graphics Corporation Using existing servers in a wellbore environment as data sources for streaming servers
CN108681490B (zh) * 2018-03-15 2020-04-28 阿里巴巴集团控股有限公司 针对rpc信息的向量处理方法、装置以及设备
US10880388B1 (en) * 2018-09-17 2020-12-29 EMC IP Holding Company LLC Automatic redirection in scale-out cluster environments that perform distributed deduplication
US10983930B1 (en) * 2020-01-14 2021-04-20 EMC IP Holding Company LLC Efficient non-transparent bridge (NTB) based data transport

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914586A (en) * 1987-11-06 1990-04-03 Xerox Corporation Garbage collector for hypermedia systems
US5187787B1 (en) * 1989-07-27 1996-05-07 Teknekron Software Systems Inc Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5257369A (en) * 1990-10-22 1993-10-26 Skeen Marion D Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5218699A (en) * 1989-08-24 1993-06-08 International Business Machines Corporation Remote procedure calls in heterogeneous systems
US5404519A (en) * 1989-10-11 1995-04-04 Texas Instruments Incorporated System for extending software calls to functions on another processor by means of a communications buffer
DE4112638A1 (de) * 1990-04-20 1991-10-24 Mazda Motor Einrichtung zur steuerung der drehmomentverteilung fuer allradgetriebene fahrzeuge
US5280610A (en) * 1990-08-14 1994-01-18 Digital Equipment Corporation Methods and apparatus for implementing data bases to provide object-oriented invocation of applications
US5297285A (en) * 1991-07-23 1994-03-22 Telefonaktiebolaget L M Ericsson System for dynamically linking modular portions of computer software
US5363489A (en) * 1991-12-30 1994-11-08 At&T Bell Laboratories Auxiliary circuit for complementing the signaling of incompatible protocol systems
US5307490A (en) * 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
US5497463A (en) * 1992-09-25 1996-03-05 Bull Hn Information Systems Inc. Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system
US5386568A (en) * 1992-12-01 1995-01-31 Yamaha Corporation Apparatus and method for linking software modules
US5377350A (en) * 1993-04-30 1994-12-27 International Business Machines Corporation System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages
US5379430A (en) * 1993-08-04 1995-01-03 Taligent, Inc. Object-oriented system locator system
US5404523A (en) * 1993-11-10 1995-04-04 Digital Equipment Corporation Method of managing requests in a transaction processing system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177930A (ja) * 2001-09-04 2003-06-27 Samsung Electronics Co Ltd プロセス間通信方法及び装置
JP2005506629A (ja) * 2001-10-24 2005-03-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 効率的な通信方法及びシステム
JP2010237977A (ja) * 2009-03-31 2010-10-21 Fujitsu Ltd マルチプロセッサ及び制御プログラム
US8656120B2 (en) 2009-09-21 2014-02-18 Samsung Electronics Co., Ltd. Device, method and computer-readable medium relocating remote procedure call data in heterogeneous multiprocessor system on chip
JP2014186473A (ja) * 2013-03-22 2014-10-02 Fuji Xerox Co Ltd プログラム及び装置
JP2020042809A (ja) * 2018-08-31 2020-03-19 サブコム,エルエルシー ウェブサービスとインターフェース記述言語(idl)ベースのリモートプロシージャコール(rpc)サービスとの間をインターフェースするための技術及びそれを実施する光通信システム
WO2024053733A1 (ja) * 2022-09-09 2024-03-14 コネクトフリー株式会社 情報処理装置、仮想サービス提供プログラムおよび通信方法

Also Published As

Publication number Publication date
JP3962112B2 (ja) 2007-08-22
US5682534A (en) 1997-10-28

Similar Documents

Publication Publication Date Title
JPH09160856A (ja) 通信管理方法及びコンピュータ・システム
US6842903B1 (en) System and method for providing dynamic references between services in a computer system
US6542908B1 (en) Technique for automatically and transparently transforming software components into software components capable of execution in a client/server computing environment
US6282581B1 (en) Mechanism for resource allocation and for dispatching incoming calls in a distributed object environment
US9183066B2 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
Jiang et al. Soda: A service-on-demand architecture for application service hosting utility platforms
US6820267B2 (en) Method and system for remote automation of object oriented applications
US6654794B1 (en) Method, data processing system and program product that provide an internet-compatible network file system driver
US8151281B2 (en) Method and system of mapping at least one web service to at least one OSGi service
US6101328A (en) System for preventing multiple instances of the same dynamic executable module
US20080320503A1 (en) URL Namespace to Support Multiple-Protocol Processing within Worker Processes
JPH09506726A (ja) オブジェクト指向ネットワーク・プロトコル構成システム
JP2003533766A (ja) 分散コンピューティング環境でサービスにアクセスし、アドレッシングする機構および装置
JP2000057113A (ja) サ―バ上で働くJavaプログラムの性能向上を図るコンピュ―タ・システム
EP0709994B1 (en) Communications management between client and server processes
CA2358131A1 (en) Dynamic class loading
US7418712B2 (en) Method and system to support multiple-protocol processing within worker processes
Schmidt et al. Osgi 4c: enabling osgi for the cloud
Brune et al. Message-passing environments for metacomputing
Ismail et al. Evaluation of the mobile agents technology: Comparison with the Client/Server Paradigm
Schmidt et al. Applying patterns to develop a pluggable protocols framework for orb middleware
Hanslo et al. The efficiency of XML as an intermediate data representation for wireless middleware communication
Ogle et al. Dynamically selecting protocols for socket applications
Diehl Towards lean and open multi-user technologies
Ismail et al. Evaluation of the Mobile Agents Technology and Comparison Studies

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070412

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070509

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070518

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110525

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110525

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120525

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120525

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130525

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140525

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees