JP2004510394A - 仮想ipフレームワーク及びインターフェイス接続方法 - Google Patents
仮想ipフレームワーク及びインターフェイス接続方法 Download PDFInfo
- Publication number
- JP2004510394A JP2004510394A JP2002531709A JP2002531709A JP2004510394A JP 2004510394 A JP2004510394 A JP 2004510394A JP 2002531709 A JP2002531709 A JP 2002531709A JP 2002531709 A JP2002531709 A JP 2002531709A JP 2004510394 A JP2004510394 A JP 2004510394A
- Authority
- JP
- Japan
- Prior art keywords
- framework
- packet
- defragmenter
- fragmentor
- outgoing
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1017—Server selection for load balancing based on a round robin mechanism
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
Abstract
インターフェース接続方法と仮想IPフレームワーク(10)。好適な実施例はIPレベルで動作し、これによりフレームワークはIPの上部で動作する任意のアプリケーションで動作可能となる。入データ・パケットとパケット片は、ルーテッド・プロセスが外部ルータにアドレスを提供するための複数のネットワーク終端装置(21)で受信される。各ネットワーク終端装置は複数の転送プロセス(11a〜11n)の1つと組み合わされ、各転送プロセスは複数のフラグメンタ/デフラグメンタ(12a〜12n)に接続されている。各転送プロセスは、共通のソース・アドレスを有する全ての入データを受信するために単一のフラグメンタ/デフラグメンタを選択する。入パケットとパケット片は次に、選択されたフラグメンタ/デフラグメンタに送られて、そこで、必要ならば再組み立てされる。前記選択されたフラグメンタ/デフラグメンタは、この選択されたフラグメンタ/デフラグメンタが再組み立てされた入データ・パケットを送るべき相手の有効なアプリケーション・サーバ(14〜17)を識別する。
Description
【0001】
(発明の背景)
(発明の技術分野)
本発明は、通信システム、特に、複数のサーバとインターネットのようなパケット・データ・ネットワークとの間で故障耐性(fault tolerance)があり、スケールラブルなインターフェイスを提供する仮想のインターネット・プロトコル(IP)フレームワークとインターフェイス接続する方法とに関する。
【0002】
(関連技術の記載)
多くの会社は、現在インターネットを介して行われるビジネスにより、それぞれの収入の流れの大部分または全てを確立している。従って、これらの会社は非常に高い信頼性あるアクセス及び交換のテクノロジーを必要とする。これらの会社が短い期間の間だけでもインターネット・アクセスを失うと、多くの収入が失われる。従って、インターネット・アクセス・テクノロジの故障耐性を増大することは極めて望ましい。更に、これらの種類の会社はデータ取引の必要が増大し得るネットワーク・アクセス・テクノロジを必要としている。もしも例えば、より大きな帯域幅を得る必要がある場合、これらの会社はこれを容易に行うことができることが必要である。それ故、スケーラビリティを提供するソリューションも望ましい。
【0003】
今日、IP界に存在する種々のテクノロジは、全て問題または限界を有している。故障耐性のみを扱うシステムは、一般的にはこのシステムとスケーラビリティに重きを置くシステムの両方の要求を達成するためにスケーラビリティに重きを置くシステムとは組み合わせることができない。それは、スケーラビリティに重きを置くシステムの一部が故障耐性を有さず、これによりシステム全体の故障耐性に影響が与えられるからである。一般的には、その要求の一方は他方の要求と妥協することになる。
【0004】
例えば、クライアントがウエッブ・サーバにアクセスする時、ブラウザは最初に、ドメイン・ネーム・サーバ(DNS)を使用して一意のIPアドレスに変換されたユニフォーム・リソース・ロケータ(URL)の名称を得る。この一意なIPアドレスにより、クライアントは、ハイパーテキスト転送プロトコル(HTTP)の要求を扱うサーバに達することができる。それ故、単一のIPアドレスをクライアントに提供するソリューションが必要である。このソリューションはスケーラビリティと故障耐性を提供すべきであり、クライアントに更なる要求を課すべきではない。更に、ソリューションはHTTPトラフィックまたはTCPトラフィックに特に制限されるべきではない。ソリューションは全ての種類のIPトラフィックに適用可能であることが望ましい。
【0005】
マーケットには、スケーラビリティの程度を与えるラウンド・ロビンDNSが存在する。このラウンド・ロビンDNSは、同一のURL名称の場合、別のIPアドレスを毎回提供する。DNSは互いに異なるサーバ間での負荷を平衡する任意のアルゴリズムを使用することができる。更に別のサーバを加えてもよく、DNSはより多くのサーバに対し負荷を分散する。しかし、ラウンド・ロビンDNSソリューションは、平衡した分散を保証するためにクライアントがDNS要求をしなければならないという制限を有している。クライアントは、IPアドレスをキャッシュ保存する能力を有し、そして、将来のアクセスのためにDNSから新しいIPアドレスを得るよりもむしろキャッシュ保存したIPアドレスを使用してもよい。これにより、スケーラビリティの特徴を無効とすることができる。それは、クライアントがDNSにより戻されたIPアドレスをキャッシュ保存する時は常にラウンド・ロビンDNSが分散を保証することができないからである。システムの故障耐性は、もしクライアントがサーバのIPアドレスをキャッシュ保存し、そのサーバが後で故障を生じる場合には不利な影響を被る可能性もある。従って、スケーラビリティと故障耐性はクライアントの挙動により拘束される。クライアントに制限を加えずにスケーラビリティと故障耐性を提供することが望ましい。従って、ラウンド・ロビンDNSは充分ではない。
【0006】
他のソリューションは、パケットを異なるエンド・ホストに向け直す焦点に対し全てのメッセージを送ることである。この種のソリューションは、WO99/33227に示してあり、そこでは、ネットワーク・フロー・スイッチ(NFS)が使用される。しかし、このソリューションでは、システム能力は増大することができない。それは、NFSが制限ファクタとなるからである。このNFSは、ネットワーク・カードとCPUにより制御されるインターネット・コントローラとを有する標準のルータのように実施され、トラフィックはCPUとカードとの間を流れる。従って、CPUにおける能力の限界によりシステム全体の能力を制限することができる。NFSは、システムの故障耐性を大いに減少する単一の故障点でもある。
【0007】
EP 0 865 180 A2では、要求を複数のサーバに分散する2つの代替手段が記載されているが、これらの代替手段のどれもスケーラビリティを提供するものではない。一方の代替手段では、入トラフィックを管理するためにディスパッチャが使用される。ルータは、どのサーバがトラフィックを取るべきかを決定するようディスパッチャに要求する。ディスパッチャは単一点であって、その能力が充分に利用されると、別のサーバは加えることができない。ディスパッチャは、データを送りもするので、単一の故障点であり、それによりシステムの故障耐性を減少させてしまう。他方の代替手段は、バスを介するブロードキャストを使用する。しかし、このバスの帯域幅が制限されると、システムのスケーラビリティは同様に制限される。
【0008】
ローカルディレクタとして知られる他の製品は、パケットがエンド・ホストに到達する前にパケットの正しい再組み立てを保証する単一の焦点も提供する。ローカルディレクタは、VIP終端装置として動作し、要求を次のいずれかを使用して実際のエンド・ホストに送る:
1.MACアドレス変換。全てのエンド・ホストはVIP終端装置をサポートする。ローカルディレクタは、特定のエンド・ホストのMACアドレスを使用してこのエンド・ホストにIPデータグラムを送信する。エンド・ホストは次に直接発信終端装置に対し逆方向に送信することができる。
【0009】
2.トンネリング。IPデータグラムは、エンド・ホストに送られるように他のプロトコル層でカプセル化される。エンド・ホストはこのカプセル化をサポートしなければならない。次に、エンド・ホストは発信端に対し逆方向に直接、またはローカル・ディレクタを介して送信することができる。
3.ネットワーク・アドレス変換(NAT)。ローカルディレクタは、IPヘッダを変換してVIPアドレスを目的のエンド・ホストの実際のIPアドレスで置換する。エンド・ホストは、ローカルディレクタに対して逆方向に送信しなければならない。
【0010】
ローカルディレクタのような実装の場合の問題は、それらが故障耐性問題を解決する「ホット・スタンバイ」技術を使用するということである。ホット・スタンバイ・システムでは、もし主システムが故障した場合に引き受ける用意のできた十分に能力のあり副システムを保守する。これは、故障耐性を扱うが、スケーラビリティは扱わない。それは、主システムまたは副システムの能力がシステム能力を制限するからである。従って、ローカル・ディレクタを使用するアーキテクチャはスケーラビリティの要求を満足しない。
【0011】
現存のソリューションの欠点を克服するために、複数のサーバとインターネットのようなパケット・データ・ネットワークとの間で故障耐性で拡張可能のインターフェースを提供する仮想IP(VIP)フレームワークを有することは有利であろう。更に、フレームはクライアント、アプリケーション設計者及び現存のネットワーク基盤に対する影響を制限するであろう。最後にこのフレームワークは多重プロトコルに適用可能であろう。本発明は、このようなフレームワークを提供する。
【0012】
(発明の要約)
本発明は、サーバとネットワーク・インターフェースの高度な故障耐性と線形のスケーラビリティを提供するインターネット接続方法及びフレームワークである。このフレームワークは、クライアントとサーバにとっては透過であり、周囲のネットワーク基盤に対する影響も最小である。更に、好適な実施例はIPレベルで動作するので、本発明はIPの上部で動作するどのようなアプリケーションでも動作させることができる。
【0013】
従って、1つの態様において、本発明は、パケット・データ・ネットワーク(PDN)と複数のアプリケーション・サーバとをインターフェース接続する故障耐性のある拡張可能な方法である。入メッセージの場合、この方法は複数のネットワーク終端装置においてPDNからの入データ・パケットとパケット片とを受信することにより開始される。ネットワーク終端の各々は複数の転送プロセスの1つと関係があり、その転送プロセスの各々は複数のフラグメンタ/デフラグメンタ(fragmenter/defragmenter)に接続されている。次に、各転送プロセスでは、共通のソース・アドレスを有する全ての入データ・パケットと全てのパケット片を受信するために単一のフラグメンタ/デフラグメンタを選択する。これに伴い、共通のソース・アドレスを有する入データ・パケットとパケット片とは選択したフラグメンタ/デフラグメンタに送られる。この場合入データ・パケットは、転送プロセスから受信した入パケット片から再組み立てされる。フラグメンタ/デフラグメンタの各々は、今度は複数のアプリケーション・サーバに接続され、選択されたフラグメンタ/デフラグメンタはその再組み立ての入データ・パケットを受信するための有効なアプリケーション・サーバを識別する。次に、この選択されたフラグメンタ/デフラグメンタは、その再組み立ての入データ・パケットをその有効なアプリケーション・サーバに送る。
【0014】
出メッセージの場合、本方法は、有効なアプリケーション・サーバがその複数のフラグメンタ/デフラグメンタから1つのフラグメンタ/デフラグメンタを選択すると開始される。これに伴って、有効なアプリケーション・サーバからその選択されたフラグメンタ/デフラグメンタに出データ・パケットが送られ、その選択されたフラグメンタ/デフラグメンタによりその複数の転送プロセスから単一の転送プロセスが識別される。この選択されたフラグメンタ/デフラグメンタは、次に、出データ・パケットをネットワーク終端装置と関係付けるその識別された転送プロセスに対し、その出データ・パケットを送る。次に、この出データ・パケットはその関連するネットワーク終端装置からPDNに送られる。
【0015】
他の態様では、本発明はPDNから入データ・パケットとパケット片とを受信して再組み立てのパケットを複数のアプリケーション・サーバに送る故障耐性があり拡張可能なインターフェースを提供するフレームワークである。このフレームワークは、PDNから入データ・パケットとパケット片とを受信する複数のネットワーク終端装置と、このネットワーク終端装置に関連付けた複数の転送プロセスと、を有している。この転送プロセスの各々は、共通のソース・アドレスを有する全ての入データ・パケットと全てのパケット片とを受信するために複数のデフラグメンタから単一のフラグメンタを識別する手段を有している。各デフラグメンタは入パケット片から入データ・パケットを再組み立てする手段とこの再組み立てした入データ・パケットを受信するために有効なアプリケーション・サーバを識別する手段とを有している。複数のプロセス間通信(IPC)リンクは各デフラグメンタを各アプリケーション・サーバに接続し、複数のIPCリンクは各デフラグメンタを各転送プロセスと接続する。フレームワークは、特定のクライアントIPアドレスに達するために使用することができるVIP転送部のリストを含むルーチング・プロセスも有してもよい。このルーチング・プロセスはPDNの外部ルータに対してネットワーク終端装置のアドレスを提供する。
【0016】
更に他の態様において、本発明は複数のアプリケーション・サーバから出データ・パケットを受信して出データ・パケットと出パケット片をPDNに送る故障耐性があり拡張可能なインターフェースを提供するフレームワークである。複数のIPCリンクは各アプリケーション・サーバを複数のフラグメンタに接続する。データ・パケットを発信するアプリケーション・サーバは、フラグメンタを選択し、この選択したフラグメンタに対して出データ・パケットを送る。各フラグメンタは、出パケット片に出データ・パケットを分解する手段と、複数の転送プロセスから1つの転送プロセスを識別する手段と、を有している。ルーチン処理は、出データ・パケットの出ルーチング情報をフラグメンタに提供するために利用してもよい。複数のIPCリンクは、各フラグメンタを各転送プロセスに接続し、その選択されたフラグメンタは、ネットワーク終端装置に転送するために出データ・パケットと出パケット片とをその識別した転送プロセスに送る。次に、ネットワーク終端装置は、出データ・パケットと出パケット片とをPDNに送る。
【0017】
本発明は、更によく理解され、その多くの目的及び利点は添付の明細書と共に図面を参照することにより当業者に更に明らかとなろう。
【0018】
(実施の形態の詳細な説明)
本発明は、複数のサーバとパケット・データ・ネットワーク(PDN)との間に故障耐性があり拡張可能なインターフェースを提供するフレームワークである。このフレームワークは、ユーザとPDNの既存のインフラストラクチャとに対する影響を制限している。好適な実施例では、フレームワークはインターネット・プロトコル(IP)の上部で動作する任意のより高いレベルのプロトコルを使用してもよい仮想IP(VIP)フレームワークである。例えば、このVIPフレームワークは、インターネットとインターフェイス接続するために使用してもよく、インターネット・プロトコル(IP)の上部で動作する送信制御プロトコル(TCP)、ユーザ・データグラム・プロトコル(UDP)、ファイル転送プロトコル(FTP)またはハイパーテキスト転送プロトコル(HTTP)で動作するサーバとインターフェイス接続してもよい。従って、本発明は、故障耐性とスケーラビリティの両方を提供しながらIPレベルで動作するように設計されている。こうして、ソリューションはIPの上部で動作する他のアプリケーションの全てに適用することができる。
【0019】
更に、フレームワークは、このフレームワークの外部での処理には透過であり、クライアントもサーバもVIPフレームワークには気づかない。フレームワークの上部のアプリケーションは、通常の場合のように動作しつづけ、アプリケーション・デザイナはソケットの開閉、データの読み取りなどのためのオペレーティング・システムからの同一のアプリケーション・プログラミング・インターフェース(API)を使用しつづける。アプリケーションは、それらの下にあるプロトコル層についての差異は分からない。ネットワークの観点から、外部ルータはフレームワークを単なるより多くのルータと見なし、通常の如くフレームワークとインターネット接続を行う。
【0020】
VIPフレームワークの場合、トラフィックの要求を扱うために必要とされるだけのウエッブ・サーバを開始して、全てのウエッブ・サーバは同一のVIPアドレスを与えるようにしてもよい。従って、VIPアドレスは全てのサーバにより使用されるようVIPフレームワークの中央で定義されている。しかし、フレームワークは1つ以上のVIPアドレスをサポートすることができ、1つ以上のウエッブ・サイトをホストをすることができる。それ故、ローカル・ルーチング・テーブルは特定のクライアントIPアドレスに達するために使用することができるVIP転送部11のリストを含むルート付けプロセスで設定することができる。
【0021】
ウエッブ・サーバを始動すると、ソフトウエアはリスニング・ポートとして動作するTCPサーバ・ソケットを開放するためにオペレーティング・システムからAPIを使用する。APIで使用されるIPアドレスは「全ての」利用可能なIPアドレスに設定することができ、または、明確に設定することができる。ジグソー(Jigsaw)(ウエッブ・サーバ・プラットホーム)のようなプログラムには、このサーバ・ソケットを開く時にどのIPアドレスを使用すべきかをソフトウエアに知らせる各サーバごとのコンフィグレーション・ファイルが存在する。ジグソーは、サンプルのHTTP 1−1の実装とJava(R)で実施される高級なアーキテクチャの上部に種々の特徴とを提供する。他のAPIにより、サーバは、特定のホストに対してどのIPアドレスを提供することができるかを発見することができる。従って、サポートされたVIPアドレスのリストはこのフレームワークでの全てのプロセッサにこのAPIを介して利用可能とされる。こうして、VIPサーバ・ソケットはこのフレームワークの任意のプロセッサで開始することができる。
【0022】
VIPフレームワークは、ネットワーク容量に対して更に多くのネットワーク・カードを追加することにより、拡張することもできる。ネットワーク容量の増加はサーバの容量の増加に頼られるべきではないということに注意することが重要である。換言すれば、サーバ・ソフトウエアの場所はネットワーク・インターフェース・カードの場所から切り離す必要がある。従って、VIPフレームワークで、TCPサーバ・ソケットの所有者が存在する同一のプロセッサでIPスタックが終端すると仮定する従来技術のシステムとは異なり、IPスタックは、アプリケーションが要求を出す場合に必ずしも終るとは限らない。
【0023】
図1は、本発明の仮想IP(VIP)フレームワーク10の簡略化したブロック線図である。VIPフレームワークは3つの基本処理型、すなわち、VIP転送とフラグメンテーション/デフラグメンテーションとルーチングとを有する分散されたIPスタックを提供する。これらは、複数のVIP転送部11a〜11n、複数のフラグメンタ/デフラグメンタ12a〜12n、及びルーテッド・プロセス13として示される。このルーテッド・プロセスは、特定のクライアントIPアドレスに到達するために使用することができるVIP転送部11のリストを含む局部的なルーチング・テーブルを備えている。ルーテッド・プロセスは、全てのプロセッサに共通/包括的な情報を含んでいるが、ルーテッド・プロセスの局部段階により各プロセッサで利用可能でもある。処理は、図面で八角形で示してあり、黒円はIPパケットを再度ルートするイーサネット(R)・カードのようなネットワーク・インターフェース・カードを表し、三角形は、内部プロセス間通信(IPC)プロトコルを使用するインターフェースを表す。同一の機能を発揮する他のプロトコルも利用してよい。
【0024】
HTTP−1(14)、HTTP−2(15)、HTTP−3(16)、HTTP−4(17)のような複数のウエッブ・サーバは、IPCによりフラグメンタ/デフラグメンタ12に接続されてもよい。HTTP−1とHTTP−2はそれぞれ別々のプロセッサ18と19で動作するように示してあるが、HTTP−3とHTTP−4は、同一のプロセッサ20で動作するように示してある。4つのサーバのみが示してあるが、フレームワークは拡張可能であり、更に多くのサーバは、システム容量を増加するために更に加えてもよい。更に、HTTPサーバのみが示してあるが、上位のアプリケーションはファイル転送のためにウエッブ・サーバまたはFTPサーバのようなIPで動作する任意のサーバ・アプリケーションを含んでもよい。
【0025】
VIP転送部は、複数の外部ルータ22〜24に接続されるイーサネット(R)・カード21のようなネットワーク終端装置と関連付けられている。外部ルータは、イントラネットまたはインターネットのようなパケット・データ・ネットワーク(PDN)25に接続される。外部ルータの各々は、イーサネット(R)・カード(及び関連のVIP転送部)のいずれとも接続することができ、VIP転送部の各々はフラグメンタ/デフラグメンタのいずれとも接続することができ、フラグメンタ/デフラグメンタの各々はサーバのいずれとも接続することができる。例として、外部ルータ23からVIP転送部11a、フラグメンタ/デフラグメンタ12a及びHTTP−2サーバ15に対する接続を表す実線が描いてある。
【0026】
インターネットに接続されるネットワーク終端装置(例えば、イーサネット(R)・カード)を物理的に有する各プロセッサの場合、VIP転送プロセスはそのプロセッサ上に存在する。実際には、VIP終端装置として使用される各カードは対応のVIP転送プロセスを有している。カードはランタイムにVIP終端装置用に構成することができる。各VIP終端装置は、ルーテッド・プロセス13で定義された全てのIPアドレスを終端してもよい。あるいはまた、特定のVIP終端装置は特定のVIPアドレスを終端させるだけであるということを特定してもよい。
【0027】
なお、ネットワーク終端装置21はこのような終端装置がVIPアドレスに使用されるか否かに関係なく(プロセッサあたり)局部的に定義されるIPアドレスで構成されている。外部ルータ22〜24は、例えば、ルーチング情報プロトコル(RIP)を使用してルーテッド・プロセス13によりどの終端装置がVIPアドレスをサポートするかを知らされる。本発明のスケーラビリティの一部は、若干の異なるプロセッサに存在し得るイーサネット(R)・カードのような若干の物理的終端装置が存在し得るという事実から来る。一般的には、IPアドレスとはカードまたはIP終端装置のことを云う。通常、各イーサネット(R)・アドレスごとに、異なるIPアドレスが割り当てられる。本発明は同一のものを割り当てる。外部ルータは、どのカードも皆別のアドレスとして見る。従って、VIPフレームワークは外部ルータをネットワークの他のルータのように監視して、データを所望の時にそれらに送る。データが一度フレームワークに入ると、イーサネット(R)層は、そのデータを受信して、そのレイヤ1情報を検証する。このデータがIPスタックに行くと、このスタックは分散される。
【0028】
図2Aと図2Bは、入メッセージがPDN25からVIPフレームワーク10で受信された時における本発明の方法の好適な実施例のステップを示すフローチャートである。まず図2Aで、パケット/フラグメントは、ステップ31においてPDN(イントラネット/インターネット)25から外部ルータ22〜24に達する。上述のように及びステップ32で示したように、外部ルータはルーテッド・プロセス13によりどの終端装置がそのパケットで示されたVIPアドレスをサポートするかを知らされる。ステップ33で次にパケット/フラグメントは、サポートするネットワーク終端装置21とそれらの関連するVIP転送部(forwarder)11に送られる。しかし、パケットは分解され(更に小さなフレームにスライスされ)ている可能性があるので、フラグメントはVIPフレームワークに入るために異なるルートを取ってもよい。受信したフラグメントは、TCPとアプリケーション層とまで送る前に再組み立てをしなければならない。パケットの再組み立ては共通の場所で行わなければならない。再組み立てを任意の単一VIP転送プロセスにより行うことはできない。それは、そのプロセスが全ての分解フレームについて知らなくてよいからである。従って、入パケットの再組み立てはフラグメンタ/デフラグメンタ・レベル12において行われる。
【0029】
VIP転送部11により受信された全てのパケットは、パケットがどのような再組み立て(デフラグメンテーション)を必要としなくても所定のフラグメンタ/デフラグメンタ12に対して、例えばIPCを使用して、転送される。フレームワークでの進行障害の発生を回避するために、本発明は常にアクティブのフラグメンタ/デフラグメンタ・プロセスの複数の段階を作成する。例えば、フレームワークはプロセスの256個の段階を有してもよい。これらのフラグメンタ/デフラグメンタ・プロセスの段階は、フレームワークで分散され、多重プロセッサで動作する。例えば、2つのプロセッサの各々で動作する128個の段階、4つのプロセッサの各々で動作する64個の段階、または極端な場合、256のプロセッサの各々で動作する1個の段階が存在してもよい。数256は、単に例示的なものであって実際には更に多く、または更に少ない段階が存在してもよい。その数は、必要ならば増大または減少させてもよい。
【0030】
(各パケット片を含む)同一ソースから生じる全てのIPパケットは、同一ソースのIPアドレスを含んでいる。ステップ34で、ソースIPアドレスは、どのフラグメンタ/デフラグメンタの段階12がパケットの再組み立てに使用すべきかを決定するための決定論的機能計算において使用される。この決定論的機能計算により、特定のソースIPアドレスから来る全てのパケットは、ステップ35において同一のフラグメンタ/デフラグメンタ・プロセスの段階に常に送られる。全てのVIP転送プロセス段階11は、この同一の決定論的機能を利用する。従って、特定ソースVIPアドレスから来る全てのパケットは、同一のフラグメンタ/デフラグメンタに達するよう保証される。好適な実施例では、その決定論的機能は完全なソースアドレスの値を0とn−1(nがフラグメンタ/デフラグメンタの段階の数の場合)の間の値に小さく切る。あるいはまた、完全なソースアドレス、行き先アドレスまたは行き先ポートは、予測可能な結果が得られる限りその機能への入力として利用してもよい。
【0031】
あるフラグメンタ/デフラグメンタの段階が故障すると、この段階は、フレームワークの同一プロセッサまたは他のプロセッサで自動的に再始動される。もしあるVIP転送段階が故障すると、それは同一プロセッサで自動的に再始動される。ルーテッド・プロセス13は、もしその故障が持続性のものである場合、故障したVIP転送段階が除外されるように外部ルータ22〜24を更新する。従って、フレームワークは、故障耐性と線形拡張可能な能力の両方を増大させる。
【0032】
ステップ36で、要求されると、フラグメンタ/デフラグメンタ12はパケットの再組み立てを行う。IPパケットが一度再組み立てされると、それはアプリケーション・サーバまで送ることができる。しかし、VIPフレームワークは、種々のアプリケーション・サーバで動作可能であるので、フラグメンタ/デフラグメンタ・プロセス12は、まず、行き先VIPアドレスのための有効なアプリケーション・サーバを識別しなければならない。ステップ37で、フラグメンタ/デフラグメンタは行き先VIPアドレスをパケットから抽出する。次に、処理は、図2B(ステップ41)に移動し、そこで、フラグメンタ/デフラグメンタはVIPアドレス/サーバ・ソケットの組み合わせとIPCポートを関連付ける更新されたサーバ・ソケット・リストを保守する。この処理は以下に図3に関連して更に詳細に記載する。ステップ42で、フラグメンタ/デフラグメンタは、サーバ・ソケット・リストから1つ以上の有効なアプリケーション・サーバを識別する。ステップ43において、1つ以上の有効なアプリケーション・サーバが識別されたということが決定されると、処理はステップ44に移動して、フラグメンタ/デフラグメンタはラウンド・ロビン選択または負荷平衡のような処理を使用して単一のサーバを選択する。次に、処理はステップ45に移動して、フラグメンタ/デフラグメンタはその選択したサーバに対しIPCを使用して再組み立てのパケットを送る。
【0033】
次に図3を見ると、IPCポートをVIPアドレス/サーバ・ソケットの組み合わせと関連付ける更新されたリストを保守するステップを示すフローチャートが示してある。ステップ51において、全てのフラグメンタ/デフラグメンタはフレームワーク内のIPCポート名称を公表するということを特に言及している。ステップ52においてVIPアドレス用のサーバ・ソケット(例えば、80)を開くためにサーバがAPIを使用すると、システム・コールは、それがVIPアドレス用のソケットであるということを決定する。ステップ53で、次にフレームワークはこの新しいサーバ・ソケットでIPCポートのリストを更新するようフラグメンタ/デフラグメンタの1つに要求する。VIPアドレスとサーバ・ソケットの組み合わせが同一の場合、多くのIPCポートが存在してもよい。従って、54において、サーバ・ソケット・リストは全てのフラグメンタ/デフラグメンタの間で分散され共有される。
【0034】
パケットが任意のソースのIPアドレスから生じてフラグメンタ/デフラグメンタの1つに達すると、その処理はそのパケットから行き先VIPアドレスと行き先ソケット(例えば、80)を抽出する。次に、そのサーバ・ソケット・リストを介してフラグメンタ/デフラグメンタは、有効なアプリケーション・サーバを見つける。もし複数のサーバがこのVIPアドレスとサーバ・ソケットの組み合わせとを提供できる場合、フラグメンタ/デフラグメンタはその1つを選択する。例えば、もし6つの異なるプロセッサが存在してFTPサーバがこのVIPアドレスを求めてそれらプロセッサで動作する場合、フラグメンタ/デフラグメンタはその1つを選択する。この選択はラウンド・ロビン選択に基づいてもよく、または、プロセッサの負荷、遅延または他の要因を考慮するために拡張してもよい。接続が一度なされると、この接続に対する他のパケットの全ては、そのサーバまで戻り、それらの処理を仕上げる。
【0035】
図4は、出メッセージがVIPフレームワークからPDNへ送られる時の、本発明の方法の好適な実施例のステップを示すフローチャートである。HTTP−2 15のようなアプリケーション・サーバがそれ自体と遠隔のクライアントとの間にソケットを確立する必要がある場合、このアプリケーション・サーバはまず、ステップ61においてクライアント・ソケットを開く。このクライアント・ソケットは、そのアプリケーションと、遠隔のIPアドレス用の再組み立て点としての役目を果たすフラグメンタ/デフラグメンタ12aと、の間の管理されるIPCリンクにより表される。フラグメンタ/デフラグメンタは、到来メッセージ用のフラグメンタ/デフラグメンタを識別するためにVIP転送部により使用されるのと同一の決定論的機能により、ステップ62において識別してもよい。システム・コールはどのフラグメンタ/デフラグメンタがこの特定の遠隔IPアドレスを与えるかを決定し、このフラグメンタ/デフラグメンタがステップ63において、IPC管理のリンクを設定するよう要求する。
【0036】
IPC管理のリンクが一度設定されると、サーバとクライアントは互いの通信のためにこの新しいクライアント・ソケットを使用することができる。前述のように、サーバに送られたクライアント・パケットは任意のVIP転送部11を介してフレームワークに到達し、クライアント特定のフラグメンタ/デフラグメンタ12と管理されたIPCリンクとを介してサーバ・アプリケーションに転送される。クライアントに送られたサーバ・パケットはステップ64において、アプリケーション・サーバからその管理されるIPCリンクを介してフラグメンタ/デフラグメンタ12に送られる。ステップ65で、次にフラグメンタ/デフラグメンタは要求があればパケットを細分化し、ステップ66でどの出ルートを使用すべきかを決定するためにルート付けプロセス13においてルーチング・テーブルを使用する。
【0037】
このルーチング・テーブルは、特定のクライアントIPアドレスに到達するために使用し得るVIP転送部11のリストを含む局部的なテーブルである。例えば、内部ネットワーク用の第1のルートと外部ネットワーク用の別のルートが存在し得る。ルーテッド・プロセスは、単一のプロセッサに集中するか、分散してもよく、ルーテッド・プロセスは多重プロセッサで動作する。ルーテッド・プロセスは、VIP転送部のリストを戻してもよく、すなわち、ラウンド・ロビンまたは負荷平衡の手順により選択された特定のVIP転送部を戻してもよい。局部的に利用可能なVIP転送部に優先順位を与えるために、局部利用可能なVIP転送部用のルーチング・テーブル登録は低いMETRIC値を有している。ステップ67において、パケットはPDN25に対してネットワーク終端装置21と外部ルータ22〜24とを介して送られる。
【0038】
上記から、VIPフレームワークにより外部存在は、フレームワーク全体を単一のIPアドレスとして見ることができ、同時に、高度のスケーラビリティと故障耐性を提供することができる。スケーラビリティの場合、別のプロセスをVIPフレームワークの任意の層に追加することができる。もし、例えば多数のトランザクションが存在する場合、更に多くのサーバをVIPフレームワークの実装に影響を与えずに加えることができる。もし充分なサーバが存在するが帯域幅に問題がある場合は、更に多くのVIP転送部を加えることができる。もしルータに対するトランクの容量が超過すると、別のトランクをVIPフレームワーク基盤のいずれをも変化する必要なしに加えることができる。
【0039】
故障耐性のために、故障したプロセスは迂回させることができる。それは、多重プロセッサで動作する各プロセスの段階が多く存在するからである。VIP転送層では、ポートのイーサネット(R)・カードとルータとの間には物理的な接続が存在する。もしVIP転送プロセス11が故障すると、出メッセージは外部ルータ22〜24に対しその故障のプロセスを迂回することができる。到来メッセージの場合、外部ルータは故障を検出し、パケットを、動作するVIP転送プロセスにルートを決めて送る。フラグメンタ/デフラグメンタ・レベルでは、プロセスの段階の各々はVIPフレームワークで一意の「名称アドレス」を有している。従って、例えばプロセッサ1または15で動作するこのプロセスの特定段階は常に見つけられる。もしある段階が故障してその後再始動される場合、その段階は同一の独自性を有する。それは一意の同一性を有するので、メッセージはその同一の段階に方向を決めて送り戻される。
【0040】
同様に、状態依存の全てが制限され除外されていたという事実は、故障耐性に寄与する。すなわち、フラグメンタ/デフラグメンタとHTTPサーバとのようなクライアントとサーバとの位置における2つのプロセスの間でのトランザクションに関するメッセージが到来し、そして、フラグメンタ/デフラグメンタ・プロセスが故障すると、サーバは未決のトランザクションがあると言って数秒内にメッセージを送り返す。このメッセージが送り返された時は、故障したフラグメンタ/デフラグメンタ・プロセスはVIPフレームワークで同一のプロセッサかまたは別のプロセッサのいずれかで再始動されているであろう。次に、フラグメンタ/デフラグメンタはそのトランザクションを続行し、フラグメンタ/デフラグメンタが故障した時に動作状態にあったプロセスのどれにでもパケットを送り始める。従って、その情報はフラグメンタ/デフラグメンタには保持されず、すなわち、情報は状態なしとなる。
【0041】
従って、リスクは、プロセス故障の時に確立されていたトランザクションを失うだけで済む。しかし、TCPのようなプロトコルは誤り訂正機構を有していて、もしフラグメントが失われると送信を再度試みる。しかし、本発明は、TCPまたは再送信の試みを行う他のプロトコルに対して制限されない。例えば、UDPは再送信の能力を本来有していない。それは、送信物の配信を保証する必要がないからである。この場合、VIPフレームワークは、プロトコルの要件と一致する。
【0042】
従って、フレームワークの利点には、サーバの線形のスケーラビリティ、ネットワーク・インターフェースの線形のスケーラビリティ、及び高度の故障耐性が含まれる。フレームワークは、クライアントとサーバにとって透過であるので、周りのPDN基盤に対する影響は最小である。更に、好適な実施例はIPレベルで動作するので、多くの種々のアプリケーションは上位層(UDP,HTTP,FTPなど)で動作することができる。なお、本発明は第2世代のIPv4に制限されず、第3世代のIPv6に適用可能でもある。
【0043】
更に、本発明は、IPに対して制限されない。本発明は、他のプロトコルがメッセージ識別ヘッダと、メッセージ内容を含む要素を利用する限り、その他のプロトコルにも同様に適用可能である。例えば、遠距離通信においては、シグナリング・システム7(SS7)プロトコルが利用され、本発明は互いにトラフィックを発生し合う数千のノードを修正する必要なしに遠距離通信ネットワークで故障耐性とスケーラビリティとを提供するためにSS7で実施してもよい。
【0044】
フレームワークは、アプリケーション特定層より下のプロトコル・スタックの任意のレベルで実施することができる。この好適な実施例は、本発明の適用性を拡大しIPで動作する全てのプロトコルに対し利点を与えるためにIP層において実施される。フレームワークは、特定のアプリケーションまたはHTTPのようなプロトコルに対し利点を与えることが望まれる場合、より高いレベルで実施することができる。
従って、本発明の動作及び構成は上記から明らかであると信ずる。図示し記載されたフレームワークと方法は好適なものとして特徴付けられたが、上記の請求項に明示された本発明の範囲から逸脱せずに種々の変形及び変更がなし得ることは容易に明らかであろう。
【図面の簡単な説明】
【図1】
本発明の仮想IP(VIP)フレームワークの簡略化したブロック線図である。
【図2A】
入メッセージがパケット・データ・ネットワークからVIPフレームワークで受信された時の本発明の方法の好適な実施例のステップを示すフローチャートである。
【図2B】
入メッセージがパケット・データ・ネットワークからVIPフレームワークで受信された時の本発明の方法の好適な実施例のステップを示すフローチャートである。
【図3】
IPCポートをVIPアドレスとサーバ・ソケットとの組み合わせに関連付ける更新リストを保守するステップを示すフロー・チャートである。
【図4】
送信メッセージがVIPフレームワークからパケット・データ・ネットワークに送られる時の本発明の方法の好適な実施例のステップを示すフローチャートである。
(発明の背景)
(発明の技術分野)
本発明は、通信システム、特に、複数のサーバとインターネットのようなパケット・データ・ネットワークとの間で故障耐性(fault tolerance)があり、スケールラブルなインターフェイスを提供する仮想のインターネット・プロトコル(IP)フレームワークとインターフェイス接続する方法とに関する。
【0002】
(関連技術の記載)
多くの会社は、現在インターネットを介して行われるビジネスにより、それぞれの収入の流れの大部分または全てを確立している。従って、これらの会社は非常に高い信頼性あるアクセス及び交換のテクノロジーを必要とする。これらの会社が短い期間の間だけでもインターネット・アクセスを失うと、多くの収入が失われる。従って、インターネット・アクセス・テクノロジの故障耐性を増大することは極めて望ましい。更に、これらの種類の会社はデータ取引の必要が増大し得るネットワーク・アクセス・テクノロジを必要としている。もしも例えば、より大きな帯域幅を得る必要がある場合、これらの会社はこれを容易に行うことができることが必要である。それ故、スケーラビリティを提供するソリューションも望ましい。
【0003】
今日、IP界に存在する種々のテクノロジは、全て問題または限界を有している。故障耐性のみを扱うシステムは、一般的にはこのシステムとスケーラビリティに重きを置くシステムの両方の要求を達成するためにスケーラビリティに重きを置くシステムとは組み合わせることができない。それは、スケーラビリティに重きを置くシステムの一部が故障耐性を有さず、これによりシステム全体の故障耐性に影響が与えられるからである。一般的には、その要求の一方は他方の要求と妥協することになる。
【0004】
例えば、クライアントがウエッブ・サーバにアクセスする時、ブラウザは最初に、ドメイン・ネーム・サーバ(DNS)を使用して一意のIPアドレスに変換されたユニフォーム・リソース・ロケータ(URL)の名称を得る。この一意なIPアドレスにより、クライアントは、ハイパーテキスト転送プロトコル(HTTP)の要求を扱うサーバに達することができる。それ故、単一のIPアドレスをクライアントに提供するソリューションが必要である。このソリューションはスケーラビリティと故障耐性を提供すべきであり、クライアントに更なる要求を課すべきではない。更に、ソリューションはHTTPトラフィックまたはTCPトラフィックに特に制限されるべきではない。ソリューションは全ての種類のIPトラフィックに適用可能であることが望ましい。
【0005】
マーケットには、スケーラビリティの程度を与えるラウンド・ロビンDNSが存在する。このラウンド・ロビンDNSは、同一のURL名称の場合、別のIPアドレスを毎回提供する。DNSは互いに異なるサーバ間での負荷を平衡する任意のアルゴリズムを使用することができる。更に別のサーバを加えてもよく、DNSはより多くのサーバに対し負荷を分散する。しかし、ラウンド・ロビンDNSソリューションは、平衡した分散を保証するためにクライアントがDNS要求をしなければならないという制限を有している。クライアントは、IPアドレスをキャッシュ保存する能力を有し、そして、将来のアクセスのためにDNSから新しいIPアドレスを得るよりもむしろキャッシュ保存したIPアドレスを使用してもよい。これにより、スケーラビリティの特徴を無効とすることができる。それは、クライアントがDNSにより戻されたIPアドレスをキャッシュ保存する時は常にラウンド・ロビンDNSが分散を保証することができないからである。システムの故障耐性は、もしクライアントがサーバのIPアドレスをキャッシュ保存し、そのサーバが後で故障を生じる場合には不利な影響を被る可能性もある。従って、スケーラビリティと故障耐性はクライアントの挙動により拘束される。クライアントに制限を加えずにスケーラビリティと故障耐性を提供することが望ましい。従って、ラウンド・ロビンDNSは充分ではない。
【0006】
他のソリューションは、パケットを異なるエンド・ホストに向け直す焦点に対し全てのメッセージを送ることである。この種のソリューションは、WO99/33227に示してあり、そこでは、ネットワーク・フロー・スイッチ(NFS)が使用される。しかし、このソリューションでは、システム能力は増大することができない。それは、NFSが制限ファクタとなるからである。このNFSは、ネットワーク・カードとCPUにより制御されるインターネット・コントローラとを有する標準のルータのように実施され、トラフィックはCPUとカードとの間を流れる。従って、CPUにおける能力の限界によりシステム全体の能力を制限することができる。NFSは、システムの故障耐性を大いに減少する単一の故障点でもある。
【0007】
EP 0 865 180 A2では、要求を複数のサーバに分散する2つの代替手段が記載されているが、これらの代替手段のどれもスケーラビリティを提供するものではない。一方の代替手段では、入トラフィックを管理するためにディスパッチャが使用される。ルータは、どのサーバがトラフィックを取るべきかを決定するようディスパッチャに要求する。ディスパッチャは単一点であって、その能力が充分に利用されると、別のサーバは加えることができない。ディスパッチャは、データを送りもするので、単一の故障点であり、それによりシステムの故障耐性を減少させてしまう。他方の代替手段は、バスを介するブロードキャストを使用する。しかし、このバスの帯域幅が制限されると、システムのスケーラビリティは同様に制限される。
【0008】
ローカルディレクタとして知られる他の製品は、パケットがエンド・ホストに到達する前にパケットの正しい再組み立てを保証する単一の焦点も提供する。ローカルディレクタは、VIP終端装置として動作し、要求を次のいずれかを使用して実際のエンド・ホストに送る:
1.MACアドレス変換。全てのエンド・ホストはVIP終端装置をサポートする。ローカルディレクタは、特定のエンド・ホストのMACアドレスを使用してこのエンド・ホストにIPデータグラムを送信する。エンド・ホストは次に直接発信終端装置に対し逆方向に送信することができる。
【0009】
2.トンネリング。IPデータグラムは、エンド・ホストに送られるように他のプロトコル層でカプセル化される。エンド・ホストはこのカプセル化をサポートしなければならない。次に、エンド・ホストは発信端に対し逆方向に直接、またはローカル・ディレクタを介して送信することができる。
3.ネットワーク・アドレス変換(NAT)。ローカルディレクタは、IPヘッダを変換してVIPアドレスを目的のエンド・ホストの実際のIPアドレスで置換する。エンド・ホストは、ローカルディレクタに対して逆方向に送信しなければならない。
【0010】
ローカルディレクタのような実装の場合の問題は、それらが故障耐性問題を解決する「ホット・スタンバイ」技術を使用するということである。ホット・スタンバイ・システムでは、もし主システムが故障した場合に引き受ける用意のできた十分に能力のあり副システムを保守する。これは、故障耐性を扱うが、スケーラビリティは扱わない。それは、主システムまたは副システムの能力がシステム能力を制限するからである。従って、ローカル・ディレクタを使用するアーキテクチャはスケーラビリティの要求を満足しない。
【0011】
現存のソリューションの欠点を克服するために、複数のサーバとインターネットのようなパケット・データ・ネットワークとの間で故障耐性で拡張可能のインターフェースを提供する仮想IP(VIP)フレームワークを有することは有利であろう。更に、フレームはクライアント、アプリケーション設計者及び現存のネットワーク基盤に対する影響を制限するであろう。最後にこのフレームワークは多重プロトコルに適用可能であろう。本発明は、このようなフレームワークを提供する。
【0012】
(発明の要約)
本発明は、サーバとネットワーク・インターフェースの高度な故障耐性と線形のスケーラビリティを提供するインターネット接続方法及びフレームワークである。このフレームワークは、クライアントとサーバにとっては透過であり、周囲のネットワーク基盤に対する影響も最小である。更に、好適な実施例はIPレベルで動作するので、本発明はIPの上部で動作するどのようなアプリケーションでも動作させることができる。
【0013】
従って、1つの態様において、本発明は、パケット・データ・ネットワーク(PDN)と複数のアプリケーション・サーバとをインターフェース接続する故障耐性のある拡張可能な方法である。入メッセージの場合、この方法は複数のネットワーク終端装置においてPDNからの入データ・パケットとパケット片とを受信することにより開始される。ネットワーク終端の各々は複数の転送プロセスの1つと関係があり、その転送プロセスの各々は複数のフラグメンタ/デフラグメンタ(fragmenter/defragmenter)に接続されている。次に、各転送プロセスでは、共通のソース・アドレスを有する全ての入データ・パケットと全てのパケット片を受信するために単一のフラグメンタ/デフラグメンタを選択する。これに伴い、共通のソース・アドレスを有する入データ・パケットとパケット片とは選択したフラグメンタ/デフラグメンタに送られる。この場合入データ・パケットは、転送プロセスから受信した入パケット片から再組み立てされる。フラグメンタ/デフラグメンタの各々は、今度は複数のアプリケーション・サーバに接続され、選択されたフラグメンタ/デフラグメンタはその再組み立ての入データ・パケットを受信するための有効なアプリケーション・サーバを識別する。次に、この選択されたフラグメンタ/デフラグメンタは、その再組み立ての入データ・パケットをその有効なアプリケーション・サーバに送る。
【0014】
出メッセージの場合、本方法は、有効なアプリケーション・サーバがその複数のフラグメンタ/デフラグメンタから1つのフラグメンタ/デフラグメンタを選択すると開始される。これに伴って、有効なアプリケーション・サーバからその選択されたフラグメンタ/デフラグメンタに出データ・パケットが送られ、その選択されたフラグメンタ/デフラグメンタによりその複数の転送プロセスから単一の転送プロセスが識別される。この選択されたフラグメンタ/デフラグメンタは、次に、出データ・パケットをネットワーク終端装置と関係付けるその識別された転送プロセスに対し、その出データ・パケットを送る。次に、この出データ・パケットはその関連するネットワーク終端装置からPDNに送られる。
【0015】
他の態様では、本発明はPDNから入データ・パケットとパケット片とを受信して再組み立てのパケットを複数のアプリケーション・サーバに送る故障耐性があり拡張可能なインターフェースを提供するフレームワークである。このフレームワークは、PDNから入データ・パケットとパケット片とを受信する複数のネットワーク終端装置と、このネットワーク終端装置に関連付けた複数の転送プロセスと、を有している。この転送プロセスの各々は、共通のソース・アドレスを有する全ての入データ・パケットと全てのパケット片とを受信するために複数のデフラグメンタから単一のフラグメンタを識別する手段を有している。各デフラグメンタは入パケット片から入データ・パケットを再組み立てする手段とこの再組み立てした入データ・パケットを受信するために有効なアプリケーション・サーバを識別する手段とを有している。複数のプロセス間通信(IPC)リンクは各デフラグメンタを各アプリケーション・サーバに接続し、複数のIPCリンクは各デフラグメンタを各転送プロセスと接続する。フレームワークは、特定のクライアントIPアドレスに達するために使用することができるVIP転送部のリストを含むルーチング・プロセスも有してもよい。このルーチング・プロセスはPDNの外部ルータに対してネットワーク終端装置のアドレスを提供する。
【0016】
更に他の態様において、本発明は複数のアプリケーション・サーバから出データ・パケットを受信して出データ・パケットと出パケット片をPDNに送る故障耐性があり拡張可能なインターフェースを提供するフレームワークである。複数のIPCリンクは各アプリケーション・サーバを複数のフラグメンタに接続する。データ・パケットを発信するアプリケーション・サーバは、フラグメンタを選択し、この選択したフラグメンタに対して出データ・パケットを送る。各フラグメンタは、出パケット片に出データ・パケットを分解する手段と、複数の転送プロセスから1つの転送プロセスを識別する手段と、を有している。ルーチン処理は、出データ・パケットの出ルーチング情報をフラグメンタに提供するために利用してもよい。複数のIPCリンクは、各フラグメンタを各転送プロセスに接続し、その選択されたフラグメンタは、ネットワーク終端装置に転送するために出データ・パケットと出パケット片とをその識別した転送プロセスに送る。次に、ネットワーク終端装置は、出データ・パケットと出パケット片とをPDNに送る。
【0017】
本発明は、更によく理解され、その多くの目的及び利点は添付の明細書と共に図面を参照することにより当業者に更に明らかとなろう。
【0018】
(実施の形態の詳細な説明)
本発明は、複数のサーバとパケット・データ・ネットワーク(PDN)との間に故障耐性があり拡張可能なインターフェースを提供するフレームワークである。このフレームワークは、ユーザとPDNの既存のインフラストラクチャとに対する影響を制限している。好適な実施例では、フレームワークはインターネット・プロトコル(IP)の上部で動作する任意のより高いレベルのプロトコルを使用してもよい仮想IP(VIP)フレームワークである。例えば、このVIPフレームワークは、インターネットとインターフェイス接続するために使用してもよく、インターネット・プロトコル(IP)の上部で動作する送信制御プロトコル(TCP)、ユーザ・データグラム・プロトコル(UDP)、ファイル転送プロトコル(FTP)またはハイパーテキスト転送プロトコル(HTTP)で動作するサーバとインターフェイス接続してもよい。従って、本発明は、故障耐性とスケーラビリティの両方を提供しながらIPレベルで動作するように設計されている。こうして、ソリューションはIPの上部で動作する他のアプリケーションの全てに適用することができる。
【0019】
更に、フレームワークは、このフレームワークの外部での処理には透過であり、クライアントもサーバもVIPフレームワークには気づかない。フレームワークの上部のアプリケーションは、通常の場合のように動作しつづけ、アプリケーション・デザイナはソケットの開閉、データの読み取りなどのためのオペレーティング・システムからの同一のアプリケーション・プログラミング・インターフェース(API)を使用しつづける。アプリケーションは、それらの下にあるプロトコル層についての差異は分からない。ネットワークの観点から、外部ルータはフレームワークを単なるより多くのルータと見なし、通常の如くフレームワークとインターネット接続を行う。
【0020】
VIPフレームワークの場合、トラフィックの要求を扱うために必要とされるだけのウエッブ・サーバを開始して、全てのウエッブ・サーバは同一のVIPアドレスを与えるようにしてもよい。従って、VIPアドレスは全てのサーバにより使用されるようVIPフレームワークの中央で定義されている。しかし、フレームワークは1つ以上のVIPアドレスをサポートすることができ、1つ以上のウエッブ・サイトをホストをすることができる。それ故、ローカル・ルーチング・テーブルは特定のクライアントIPアドレスに達するために使用することができるVIP転送部11のリストを含むルート付けプロセスで設定することができる。
【0021】
ウエッブ・サーバを始動すると、ソフトウエアはリスニング・ポートとして動作するTCPサーバ・ソケットを開放するためにオペレーティング・システムからAPIを使用する。APIで使用されるIPアドレスは「全ての」利用可能なIPアドレスに設定することができ、または、明確に設定することができる。ジグソー(Jigsaw)(ウエッブ・サーバ・プラットホーム)のようなプログラムには、このサーバ・ソケットを開く時にどのIPアドレスを使用すべきかをソフトウエアに知らせる各サーバごとのコンフィグレーション・ファイルが存在する。ジグソーは、サンプルのHTTP 1−1の実装とJava(R)で実施される高級なアーキテクチャの上部に種々の特徴とを提供する。他のAPIにより、サーバは、特定のホストに対してどのIPアドレスを提供することができるかを発見することができる。従って、サポートされたVIPアドレスのリストはこのフレームワークでの全てのプロセッサにこのAPIを介して利用可能とされる。こうして、VIPサーバ・ソケットはこのフレームワークの任意のプロセッサで開始することができる。
【0022】
VIPフレームワークは、ネットワーク容量に対して更に多くのネットワーク・カードを追加することにより、拡張することもできる。ネットワーク容量の増加はサーバの容量の増加に頼られるべきではないということに注意することが重要である。換言すれば、サーバ・ソフトウエアの場所はネットワーク・インターフェース・カードの場所から切り離す必要がある。従って、VIPフレームワークで、TCPサーバ・ソケットの所有者が存在する同一のプロセッサでIPスタックが終端すると仮定する従来技術のシステムとは異なり、IPスタックは、アプリケーションが要求を出す場合に必ずしも終るとは限らない。
【0023】
図1は、本発明の仮想IP(VIP)フレームワーク10の簡略化したブロック線図である。VIPフレームワークは3つの基本処理型、すなわち、VIP転送とフラグメンテーション/デフラグメンテーションとルーチングとを有する分散されたIPスタックを提供する。これらは、複数のVIP転送部11a〜11n、複数のフラグメンタ/デフラグメンタ12a〜12n、及びルーテッド・プロセス13として示される。このルーテッド・プロセスは、特定のクライアントIPアドレスに到達するために使用することができるVIP転送部11のリストを含む局部的なルーチング・テーブルを備えている。ルーテッド・プロセスは、全てのプロセッサに共通/包括的な情報を含んでいるが、ルーテッド・プロセスの局部段階により各プロセッサで利用可能でもある。処理は、図面で八角形で示してあり、黒円はIPパケットを再度ルートするイーサネット(R)・カードのようなネットワーク・インターフェース・カードを表し、三角形は、内部プロセス間通信(IPC)プロトコルを使用するインターフェースを表す。同一の機能を発揮する他のプロトコルも利用してよい。
【0024】
HTTP−1(14)、HTTP−2(15)、HTTP−3(16)、HTTP−4(17)のような複数のウエッブ・サーバは、IPCによりフラグメンタ/デフラグメンタ12に接続されてもよい。HTTP−1とHTTP−2はそれぞれ別々のプロセッサ18と19で動作するように示してあるが、HTTP−3とHTTP−4は、同一のプロセッサ20で動作するように示してある。4つのサーバのみが示してあるが、フレームワークは拡張可能であり、更に多くのサーバは、システム容量を増加するために更に加えてもよい。更に、HTTPサーバのみが示してあるが、上位のアプリケーションはファイル転送のためにウエッブ・サーバまたはFTPサーバのようなIPで動作する任意のサーバ・アプリケーションを含んでもよい。
【0025】
VIP転送部は、複数の外部ルータ22〜24に接続されるイーサネット(R)・カード21のようなネットワーク終端装置と関連付けられている。外部ルータは、イントラネットまたはインターネットのようなパケット・データ・ネットワーク(PDN)25に接続される。外部ルータの各々は、イーサネット(R)・カード(及び関連のVIP転送部)のいずれとも接続することができ、VIP転送部の各々はフラグメンタ/デフラグメンタのいずれとも接続することができ、フラグメンタ/デフラグメンタの各々はサーバのいずれとも接続することができる。例として、外部ルータ23からVIP転送部11a、フラグメンタ/デフラグメンタ12a及びHTTP−2サーバ15に対する接続を表す実線が描いてある。
【0026】
インターネットに接続されるネットワーク終端装置(例えば、イーサネット(R)・カード)を物理的に有する各プロセッサの場合、VIP転送プロセスはそのプロセッサ上に存在する。実際には、VIP終端装置として使用される各カードは対応のVIP転送プロセスを有している。カードはランタイムにVIP終端装置用に構成することができる。各VIP終端装置は、ルーテッド・プロセス13で定義された全てのIPアドレスを終端してもよい。あるいはまた、特定のVIP終端装置は特定のVIPアドレスを終端させるだけであるということを特定してもよい。
【0027】
なお、ネットワーク終端装置21はこのような終端装置がVIPアドレスに使用されるか否かに関係なく(プロセッサあたり)局部的に定義されるIPアドレスで構成されている。外部ルータ22〜24は、例えば、ルーチング情報プロトコル(RIP)を使用してルーテッド・プロセス13によりどの終端装置がVIPアドレスをサポートするかを知らされる。本発明のスケーラビリティの一部は、若干の異なるプロセッサに存在し得るイーサネット(R)・カードのような若干の物理的終端装置が存在し得るという事実から来る。一般的には、IPアドレスとはカードまたはIP終端装置のことを云う。通常、各イーサネット(R)・アドレスごとに、異なるIPアドレスが割り当てられる。本発明は同一のものを割り当てる。外部ルータは、どのカードも皆別のアドレスとして見る。従って、VIPフレームワークは外部ルータをネットワークの他のルータのように監視して、データを所望の時にそれらに送る。データが一度フレームワークに入ると、イーサネット(R)層は、そのデータを受信して、そのレイヤ1情報を検証する。このデータがIPスタックに行くと、このスタックは分散される。
【0028】
図2Aと図2Bは、入メッセージがPDN25からVIPフレームワーク10で受信された時における本発明の方法の好適な実施例のステップを示すフローチャートである。まず図2Aで、パケット/フラグメントは、ステップ31においてPDN(イントラネット/インターネット)25から外部ルータ22〜24に達する。上述のように及びステップ32で示したように、外部ルータはルーテッド・プロセス13によりどの終端装置がそのパケットで示されたVIPアドレスをサポートするかを知らされる。ステップ33で次にパケット/フラグメントは、サポートするネットワーク終端装置21とそれらの関連するVIP転送部(forwarder)11に送られる。しかし、パケットは分解され(更に小さなフレームにスライスされ)ている可能性があるので、フラグメントはVIPフレームワークに入るために異なるルートを取ってもよい。受信したフラグメントは、TCPとアプリケーション層とまで送る前に再組み立てをしなければならない。パケットの再組み立ては共通の場所で行わなければならない。再組み立てを任意の単一VIP転送プロセスにより行うことはできない。それは、そのプロセスが全ての分解フレームについて知らなくてよいからである。従って、入パケットの再組み立てはフラグメンタ/デフラグメンタ・レベル12において行われる。
【0029】
VIP転送部11により受信された全てのパケットは、パケットがどのような再組み立て(デフラグメンテーション)を必要としなくても所定のフラグメンタ/デフラグメンタ12に対して、例えばIPCを使用して、転送される。フレームワークでの進行障害の発生を回避するために、本発明は常にアクティブのフラグメンタ/デフラグメンタ・プロセスの複数の段階を作成する。例えば、フレームワークはプロセスの256個の段階を有してもよい。これらのフラグメンタ/デフラグメンタ・プロセスの段階は、フレームワークで分散され、多重プロセッサで動作する。例えば、2つのプロセッサの各々で動作する128個の段階、4つのプロセッサの各々で動作する64個の段階、または極端な場合、256のプロセッサの各々で動作する1個の段階が存在してもよい。数256は、単に例示的なものであって実際には更に多く、または更に少ない段階が存在してもよい。その数は、必要ならば増大または減少させてもよい。
【0030】
(各パケット片を含む)同一ソースから生じる全てのIPパケットは、同一ソースのIPアドレスを含んでいる。ステップ34で、ソースIPアドレスは、どのフラグメンタ/デフラグメンタの段階12がパケットの再組み立てに使用すべきかを決定するための決定論的機能計算において使用される。この決定論的機能計算により、特定のソースIPアドレスから来る全てのパケットは、ステップ35において同一のフラグメンタ/デフラグメンタ・プロセスの段階に常に送られる。全てのVIP転送プロセス段階11は、この同一の決定論的機能を利用する。従って、特定ソースVIPアドレスから来る全てのパケットは、同一のフラグメンタ/デフラグメンタに達するよう保証される。好適な実施例では、その決定論的機能は完全なソースアドレスの値を0とn−1(nがフラグメンタ/デフラグメンタの段階の数の場合)の間の値に小さく切る。あるいはまた、完全なソースアドレス、行き先アドレスまたは行き先ポートは、予測可能な結果が得られる限りその機能への入力として利用してもよい。
【0031】
あるフラグメンタ/デフラグメンタの段階が故障すると、この段階は、フレームワークの同一プロセッサまたは他のプロセッサで自動的に再始動される。もしあるVIP転送段階が故障すると、それは同一プロセッサで自動的に再始動される。ルーテッド・プロセス13は、もしその故障が持続性のものである場合、故障したVIP転送段階が除外されるように外部ルータ22〜24を更新する。従って、フレームワークは、故障耐性と線形拡張可能な能力の両方を増大させる。
【0032】
ステップ36で、要求されると、フラグメンタ/デフラグメンタ12はパケットの再組み立てを行う。IPパケットが一度再組み立てされると、それはアプリケーション・サーバまで送ることができる。しかし、VIPフレームワークは、種々のアプリケーション・サーバで動作可能であるので、フラグメンタ/デフラグメンタ・プロセス12は、まず、行き先VIPアドレスのための有効なアプリケーション・サーバを識別しなければならない。ステップ37で、フラグメンタ/デフラグメンタは行き先VIPアドレスをパケットから抽出する。次に、処理は、図2B(ステップ41)に移動し、そこで、フラグメンタ/デフラグメンタはVIPアドレス/サーバ・ソケットの組み合わせとIPCポートを関連付ける更新されたサーバ・ソケット・リストを保守する。この処理は以下に図3に関連して更に詳細に記載する。ステップ42で、フラグメンタ/デフラグメンタは、サーバ・ソケット・リストから1つ以上の有効なアプリケーション・サーバを識別する。ステップ43において、1つ以上の有効なアプリケーション・サーバが識別されたということが決定されると、処理はステップ44に移動して、フラグメンタ/デフラグメンタはラウンド・ロビン選択または負荷平衡のような処理を使用して単一のサーバを選択する。次に、処理はステップ45に移動して、フラグメンタ/デフラグメンタはその選択したサーバに対しIPCを使用して再組み立てのパケットを送る。
【0033】
次に図3を見ると、IPCポートをVIPアドレス/サーバ・ソケットの組み合わせと関連付ける更新されたリストを保守するステップを示すフローチャートが示してある。ステップ51において、全てのフラグメンタ/デフラグメンタはフレームワーク内のIPCポート名称を公表するということを特に言及している。ステップ52においてVIPアドレス用のサーバ・ソケット(例えば、80)を開くためにサーバがAPIを使用すると、システム・コールは、それがVIPアドレス用のソケットであるということを決定する。ステップ53で、次にフレームワークはこの新しいサーバ・ソケットでIPCポートのリストを更新するようフラグメンタ/デフラグメンタの1つに要求する。VIPアドレスとサーバ・ソケットの組み合わせが同一の場合、多くのIPCポートが存在してもよい。従って、54において、サーバ・ソケット・リストは全てのフラグメンタ/デフラグメンタの間で分散され共有される。
【0034】
パケットが任意のソースのIPアドレスから生じてフラグメンタ/デフラグメンタの1つに達すると、その処理はそのパケットから行き先VIPアドレスと行き先ソケット(例えば、80)を抽出する。次に、そのサーバ・ソケット・リストを介してフラグメンタ/デフラグメンタは、有効なアプリケーション・サーバを見つける。もし複数のサーバがこのVIPアドレスとサーバ・ソケットの組み合わせとを提供できる場合、フラグメンタ/デフラグメンタはその1つを選択する。例えば、もし6つの異なるプロセッサが存在してFTPサーバがこのVIPアドレスを求めてそれらプロセッサで動作する場合、フラグメンタ/デフラグメンタはその1つを選択する。この選択はラウンド・ロビン選択に基づいてもよく、または、プロセッサの負荷、遅延または他の要因を考慮するために拡張してもよい。接続が一度なされると、この接続に対する他のパケットの全ては、そのサーバまで戻り、それらの処理を仕上げる。
【0035】
図4は、出メッセージがVIPフレームワークからPDNへ送られる時の、本発明の方法の好適な実施例のステップを示すフローチャートである。HTTP−2 15のようなアプリケーション・サーバがそれ自体と遠隔のクライアントとの間にソケットを確立する必要がある場合、このアプリケーション・サーバはまず、ステップ61においてクライアント・ソケットを開く。このクライアント・ソケットは、そのアプリケーションと、遠隔のIPアドレス用の再組み立て点としての役目を果たすフラグメンタ/デフラグメンタ12aと、の間の管理されるIPCリンクにより表される。フラグメンタ/デフラグメンタは、到来メッセージ用のフラグメンタ/デフラグメンタを識別するためにVIP転送部により使用されるのと同一の決定論的機能により、ステップ62において識別してもよい。システム・コールはどのフラグメンタ/デフラグメンタがこの特定の遠隔IPアドレスを与えるかを決定し、このフラグメンタ/デフラグメンタがステップ63において、IPC管理のリンクを設定するよう要求する。
【0036】
IPC管理のリンクが一度設定されると、サーバとクライアントは互いの通信のためにこの新しいクライアント・ソケットを使用することができる。前述のように、サーバに送られたクライアント・パケットは任意のVIP転送部11を介してフレームワークに到達し、クライアント特定のフラグメンタ/デフラグメンタ12と管理されたIPCリンクとを介してサーバ・アプリケーションに転送される。クライアントに送られたサーバ・パケットはステップ64において、アプリケーション・サーバからその管理されるIPCリンクを介してフラグメンタ/デフラグメンタ12に送られる。ステップ65で、次にフラグメンタ/デフラグメンタは要求があればパケットを細分化し、ステップ66でどの出ルートを使用すべきかを決定するためにルート付けプロセス13においてルーチング・テーブルを使用する。
【0037】
このルーチング・テーブルは、特定のクライアントIPアドレスに到達するために使用し得るVIP転送部11のリストを含む局部的なテーブルである。例えば、内部ネットワーク用の第1のルートと外部ネットワーク用の別のルートが存在し得る。ルーテッド・プロセスは、単一のプロセッサに集中するか、分散してもよく、ルーテッド・プロセスは多重プロセッサで動作する。ルーテッド・プロセスは、VIP転送部のリストを戻してもよく、すなわち、ラウンド・ロビンまたは負荷平衡の手順により選択された特定のVIP転送部を戻してもよい。局部的に利用可能なVIP転送部に優先順位を与えるために、局部利用可能なVIP転送部用のルーチング・テーブル登録は低いMETRIC値を有している。ステップ67において、パケットはPDN25に対してネットワーク終端装置21と外部ルータ22〜24とを介して送られる。
【0038】
上記から、VIPフレームワークにより外部存在は、フレームワーク全体を単一のIPアドレスとして見ることができ、同時に、高度のスケーラビリティと故障耐性を提供することができる。スケーラビリティの場合、別のプロセスをVIPフレームワークの任意の層に追加することができる。もし、例えば多数のトランザクションが存在する場合、更に多くのサーバをVIPフレームワークの実装に影響を与えずに加えることができる。もし充分なサーバが存在するが帯域幅に問題がある場合は、更に多くのVIP転送部を加えることができる。もしルータに対するトランクの容量が超過すると、別のトランクをVIPフレームワーク基盤のいずれをも変化する必要なしに加えることができる。
【0039】
故障耐性のために、故障したプロセスは迂回させることができる。それは、多重プロセッサで動作する各プロセスの段階が多く存在するからである。VIP転送層では、ポートのイーサネット(R)・カードとルータとの間には物理的な接続が存在する。もしVIP転送プロセス11が故障すると、出メッセージは外部ルータ22〜24に対しその故障のプロセスを迂回することができる。到来メッセージの場合、外部ルータは故障を検出し、パケットを、動作するVIP転送プロセスにルートを決めて送る。フラグメンタ/デフラグメンタ・レベルでは、プロセスの段階の各々はVIPフレームワークで一意の「名称アドレス」を有している。従って、例えばプロセッサ1または15で動作するこのプロセスの特定段階は常に見つけられる。もしある段階が故障してその後再始動される場合、その段階は同一の独自性を有する。それは一意の同一性を有するので、メッセージはその同一の段階に方向を決めて送り戻される。
【0040】
同様に、状態依存の全てが制限され除外されていたという事実は、故障耐性に寄与する。すなわち、フラグメンタ/デフラグメンタとHTTPサーバとのようなクライアントとサーバとの位置における2つのプロセスの間でのトランザクションに関するメッセージが到来し、そして、フラグメンタ/デフラグメンタ・プロセスが故障すると、サーバは未決のトランザクションがあると言って数秒内にメッセージを送り返す。このメッセージが送り返された時は、故障したフラグメンタ/デフラグメンタ・プロセスはVIPフレームワークで同一のプロセッサかまたは別のプロセッサのいずれかで再始動されているであろう。次に、フラグメンタ/デフラグメンタはそのトランザクションを続行し、フラグメンタ/デフラグメンタが故障した時に動作状態にあったプロセスのどれにでもパケットを送り始める。従って、その情報はフラグメンタ/デフラグメンタには保持されず、すなわち、情報は状態なしとなる。
【0041】
従って、リスクは、プロセス故障の時に確立されていたトランザクションを失うだけで済む。しかし、TCPのようなプロトコルは誤り訂正機構を有していて、もしフラグメントが失われると送信を再度試みる。しかし、本発明は、TCPまたは再送信の試みを行う他のプロトコルに対して制限されない。例えば、UDPは再送信の能力を本来有していない。それは、送信物の配信を保証する必要がないからである。この場合、VIPフレームワークは、プロトコルの要件と一致する。
【0042】
従って、フレームワークの利点には、サーバの線形のスケーラビリティ、ネットワーク・インターフェースの線形のスケーラビリティ、及び高度の故障耐性が含まれる。フレームワークは、クライアントとサーバにとって透過であるので、周りのPDN基盤に対する影響は最小である。更に、好適な実施例はIPレベルで動作するので、多くの種々のアプリケーションは上位層(UDP,HTTP,FTPなど)で動作することができる。なお、本発明は第2世代のIPv4に制限されず、第3世代のIPv6に適用可能でもある。
【0043】
更に、本発明は、IPに対して制限されない。本発明は、他のプロトコルがメッセージ識別ヘッダと、メッセージ内容を含む要素を利用する限り、その他のプロトコルにも同様に適用可能である。例えば、遠距離通信においては、シグナリング・システム7(SS7)プロトコルが利用され、本発明は互いにトラフィックを発生し合う数千のノードを修正する必要なしに遠距離通信ネットワークで故障耐性とスケーラビリティとを提供するためにSS7で実施してもよい。
【0044】
フレームワークは、アプリケーション特定層より下のプロトコル・スタックの任意のレベルで実施することができる。この好適な実施例は、本発明の適用性を拡大しIPで動作する全てのプロトコルに対し利点を与えるためにIP層において実施される。フレームワークは、特定のアプリケーションまたはHTTPのようなプロトコルに対し利点を与えることが望まれる場合、より高いレベルで実施することができる。
従って、本発明の動作及び構成は上記から明らかであると信ずる。図示し記載されたフレームワークと方法は好適なものとして特徴付けられたが、上記の請求項に明示された本発明の範囲から逸脱せずに種々の変形及び変更がなし得ることは容易に明らかであろう。
【図面の簡単な説明】
【図1】
本発明の仮想IP(VIP)フレームワークの簡略化したブロック線図である。
【図2A】
入メッセージがパケット・データ・ネットワークからVIPフレームワークで受信された時の本発明の方法の好適な実施例のステップを示すフローチャートである。
【図2B】
入メッセージがパケット・データ・ネットワークからVIPフレームワークで受信された時の本発明の方法の好適な実施例のステップを示すフローチャートである。
【図3】
IPCポートをVIPアドレスとサーバ・ソケットとの組み合わせに関連付ける更新リストを保守するステップを示すフロー・チャートである。
【図4】
送信メッセージがVIPフレームワークからパケット・データ・ネットワークに送られる時の本発明の方法の好適な実施例のステップを示すフローチャートである。
Claims (17)
- 複数のアプリケーション・サーバとパケット・データ・ネットワーク(PDN)との間に故障耐性があり拡張可能なインターフェースとを提供するフレームワークにおいて、
前記PDNからの入データ・パケットと入パケット片とを受信すると共に、出データ・パケットと出パケット片とを前記PDNに送信する複数のネットワーク終端装置と、
入データ・パケットをアプリケーション・サーバに送信すると共に出データ・パケットを前記アプリケーション・サーバから受信する複数のフラグメンタ/デフラグメンタであって、各前記フラグメンタ/デフラグメンタは、
入パケット片から入データ・パケットを再組み立てする手段と、
その再組み立てされた入データ・パケットを受信するために前記複数のアプリケーション・サーバから有効なアプリケーション・サーバを識別する手段と、
出データ・パケットを出パケット片に分解する手段と、
出データ・パケットと出パケット片とを受信するための複数の転送プロセスから1つの転送プロセスを識別する手段と、
を有する前記複数のフラグメンタ/デフラグメンタと、
転送プロセス(11)の各々が前記複数のネットワーク終端装置(21)の1つと関連していて、共通のソース・アドレスを有する入データ・パケットと入パケット片との全てを受信するために前記複数のフラグメンタ/デフラグメンタから単一のフラグメンタ/デフラグメンタを識別する手段を含んだ複数の転送プロセスと、
前記転送プロセスの各々と前記フラグメンタ/デフラグメンタの各々との間の複数のプロセス間通信(IPC)リンクと、
前記フラグメンタ/デフラグメンタの各々と前記アプリケーション・サーバの各々との間の複数のIPCリンクと、
を備えた前記フレームワーク。 - 前記フレームワークは、アプリケーション・サーバ・レベルの下の任意のプロトコル・レベルで実行される、請求項1記載のフレームワーク。
- 前記フレームワークは、インターネット・プロトコル(IP)レベルで実行され、前記フレームワークは、前記IP・プロトコルによりサポートされる任意のプロトコルを動かすアプリケーション・サーバをサポートする仮想IP(VIP)フレームワークである、請求項2記載のフレームワーク。
- 前記PDNはインターネットであり、前記ネットワーク終端装置はイーサネット(R)・カードである、請求項3記載のフレームワーク。
- 前記フレームワークは、シグナリング・システム7(SS7)フレームワークであって、このSS7によりサポートされる任意のプロトコルを動かすアプリケーション・サーバをサポートする、請求項2記載のフレームワーク。
- 前記フラグメンタ/デフラグメンタにより、前記アプリケーション・サーバの変更なしに前記アプリケーション・サーバはソケットを開閉し、データ・パケットを送受信することができる、請求項1記載のフレームワーク。
- 前記フレームワークにアドレスのテーブルを有していて、前記PDNの外部ルータに対してネットワーク終端装置のアドレスを提供するルーチング・プロセスを更に有する、請求項1記載のフレームワーク。
- 前記ルーチング・プロセスの前記テーブルは、特定のネットワーク終端装置のための特定のフレームワーク・アドレスを特定する、請求項7記載のフレームワーク。
- 前記ネットワーク終端装置は、前記PDNの外部ルータと通信し、この外部ルータは追加のネットワーク・ルータのように見える、請求項7記載のフレームワーク。
- 前記ルーチング・プロセスは、出データ・パケットのための出ルーチング情報を前記フラグメンタ/デフラグメンタに提供するルーチング・テーブルを有する、請求項7記載のフレームワーク。
- 前記出ルーチング情報は、前記フラグメンタ/デフラグメンタが出データ・パケットと出パケット片とを送信すべき場合の、前記複数の転送プロセスの1つの識別を有している、請求項10記載のフレームワーク。
- 入データ・パケットと入パケット片をパケット・データ・ネットワーク(PDN)から受信すると共に、再組み立てされたパケットを複数のアプリケーション・サーバに送信する故障耐性があり拡張可能なインターフェースを提供するフレームワークにおいて、
入データ・パケットと入パケット片とを前記PDNから受信する複数のネットワーク終端装置と、
入データ・パケットを前記アプリケーション・サーバに送信する複数のデフラグメンタであって、各前記デフラグメンタが、
入パケット片から入データ・パケットを再組み立てする手段と、
前記の再組み立てされた入データ・パケットを受信するために前記複数のアプリケーション・サーバから有効なアプリケーション・サーバを識別する手段と、
を有する複数のデフラグメンタと、
各々が前記複数のネットワーク終端装置の1つと関連していて、共通のソース・アドレスを有する入データ・パケットとパケット片の全てを受信するために前記複数のデフラグメンタから単一のデフラグメンタを識別する手段を備えている複数の転送プロセスと、
前記転送プロセスの各々と前記フラグメンタ/デフラグメンタの各々との間の複数のプロセス間通信(IPC)リンクと、
前記フラグメンタ/デフラグメンタの各々と前記アプリケーション・サーバの各々との間の複数のIPCリンクと、
を備えたフレームワーク。 - 複数のアプリケーション・サーバから出データ・パケットを受信すると共に、出データ・パケットと出パケット片とをパケット・データ・ネットワーク(PDN)に送信する故障耐性があり拡張可能なインターフェースを提供するフレームワークにおいて、
複数の転送プロセスと、
前記アプリケーション・サーバから出データ・パケットを受信する複数のフラグメントであって、各前記フラグメントは、
出データ・パケットを出パケット・フラグメントに分解する手段と、
出データ・パケットと出パケット片とをネットワーク終端装置に転送するために前記複数の転送プロセスから1つの転送プロセスを識別する手段と、
を有する複数のフラグメントと、
各々が、前記複数の転送プロセスの1つと関連付けられていて、出データ・パケットと出パケット片とを前記PDNに送信する複数のネットワーク終端装置と、
前記フラグメントの各々と前記アプリケーション・サーバの各々との間の複数のプロセス間通信(IPC)リンクと、
前記フラグメンタの各々と前記転送プロセスの各々との間の複数のIPCリンクとを、
有するフレームワーク。 - 複数のアプリケーション・サーバをパケット・データ・ネットワーク(PDN)とインターフェース接続する、故障耐性があり拡張可能な方法において、
複数のネットワーク終端装置において、前記PDNから入データ・パケットと入パケット片とを受信するステップと、
前記ネットワーク終端装置の各々を複数の転送プロセスの1つと関連付けるステップと、
前記転送プロセスの各々を複数のフラグメンタ/デフラグメンタに接続するステップと、
各転送プロセスにより共通のソース・アドレスを有する前記入データ・パケットとパケット片の全てを受信するために単一のフラグメンタ/デフラグメンタを選択するステップと、
共通のソース・アドレスを有する前記入データ・パケットと入パケット片とを前記選択されたフラグメンタ/デフラグメンタに送信するステップと、
前記転送プロセスから受信された前記入パケット片から前記選択されたフラグメンタ/デフラグメンタにより入データ・パケットを再組み立てするステップと、
前記フラグメンタ/デフラグメンタの各々を前記複数のアプリケーション・サーバに接続するステップと、
前記再組み立てされた入データ・パケットを受信するため、前記複数のアプリケーション・サーバから前記選択されたフラグメンタ/デフラグメンタにより有効なアプリケーション・サーバを識別するステップと、
前記選択されたフラグメンタ/デフラグメンタから前記有効なアプリケーション・サーバに前記再組み立てされた入データ・パケットを送信するステップと、
を有する故障耐性があり拡張可能な方法。 - 前記有効なアプリケーション・サーバにより前記複数のフラグメンタ/デフラグメンタから1つのフラグメンタ/デフラグメンタを選択するステップと、
前記有効なアプリケーション・サーバから前記選択されたフラグメンタ/デフラグメンタに出データ・パケットを送信するステップと、
前記選択されたフラグメンタ/デフラグメンタにより前記複数の転送プロセスから単一の転送プロセスを識別するステップと、
前記選択されたフラグメンタ/デフラグメンタから前記識別された転送プロセスに前記出データ・パケットを送信するステップと、
前記識別された転送プロセスにより前記出データ・パケットをネットワーク終端装置と関連付けるステップと、
前記関連付けられたネットワーク終端装置から前記PDNに出データ・パケットを送信するステップと、
を更に有する請求項14記載の故障耐性があり拡張可能な方法。 - 前記選択されたフラグメンタ/デフラグメンタにより前記出データ・パケットを出パケット片に分割するステップを更に有する、請求項15記載の故障耐性があり拡張可能な方法。
- 前記選択されたフラグメンタ/デフラグメンタから前記識別された転送プロセスに前記出データ・パケットを送信する前記ステップは、前記選択されたフラグメンタ/デフラグメンタから前記識別された転送プロセスに出パケット・データを送信するステップも含む、請求項16記載の故障耐性があり拡張可能な方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/675,035 US6731598B1 (en) | 2000-09-28 | 2000-09-28 | Virtual IP framework and interfacing method |
PCT/CA2001/001353 WO2002028048A2 (en) | 2000-09-28 | 2001-09-26 | Virtual ip framework and interfacing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004510394A true JP2004510394A (ja) | 2004-04-02 |
Family
ID=24708802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002531709A Pending JP2004510394A (ja) | 2000-09-28 | 2001-09-26 | 仮想ipフレームワーク及びインターフェイス接続方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6731598B1 (ja) |
EP (1) | EP1320977B1 (ja) |
JP (1) | JP2004510394A (ja) |
CN (1) | CN1214595C (ja) |
AT (1) | ATE424081T1 (ja) |
AU (1) | AU2001295309A1 (ja) |
DE (1) | DE60137782D1 (ja) |
WO (1) | WO2002028048A2 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3557998B2 (ja) * | 2000-04-28 | 2004-08-25 | 日本電気株式会社 | フラグメンテーション処理デバイスおよびこれを用いたフラグメンテーション処理装置 |
SE0004178D0 (sv) * | 2000-11-14 | 2000-11-14 | Ericsson Telefon Ab L M | Network requested packet data protocol context activation |
EP1495591B1 (en) * | 2002-03-22 | 2008-08-13 | Telefonaktiebolaget LM Ericsson (publ) | Reducing transmission time for data packets controlled by a link layer protocol comprising a fragmenting/defragmenting capability |
US8051176B2 (en) | 2002-11-07 | 2011-11-01 | Hewlett-Packard Development Company, L.P. | Method and system for predicting connections in a computer network |
US7647384B2 (en) * | 2002-11-07 | 2010-01-12 | Hewlett-Packard Development Company, L.P. | Method and system for managing fragmented information packets in a computer network |
EP1480377B1 (en) * | 2003-05-23 | 2005-09-07 | Alcatel | Method and system for creating a protocol-independent meta-model in a Network Management System of a telecommunication network |
US20050165932A1 (en) * | 2004-01-22 | 2005-07-28 | International Business Machines Corporation | Redirecting client connection requests among sockets providing a same service |
CN1708139B (zh) * | 2004-06-11 | 2010-08-11 | 华为技术有限公司 | 虚拟交换机系统 |
US7535856B2 (en) * | 2005-02-19 | 2009-05-19 | Cisco Technology, Inc. | Techniques for zero touch provisioning of edge nodes for a virtual private network |
US7633855B2 (en) | 2005-11-03 | 2009-12-15 | Cisco Technology, Inc. | System and method for resolving address conflicts in a network |
US8056089B2 (en) * | 2006-11-07 | 2011-11-08 | International Business Machines Corporation | Shortcut IP communications between software entities in a single operating system |
CN101026622B (zh) * | 2007-01-12 | 2010-10-06 | 华为技术有限公司 | 分布式系统对象请求传输方法、设备和分布式系统 |
CN101035082B (zh) * | 2007-04-28 | 2010-09-22 | 杭州华三通信技术有限公司 | 分片报文重组方法及接口板 |
CN101267280B (zh) * | 2008-04-18 | 2011-01-26 | 清华大学 | 用于片上网络的一种基于学习的自适应容错方法 |
CN101510901B (zh) * | 2009-02-19 | 2011-11-16 | 杭州华三通信技术有限公司 | 一种分布式设备间的通信方法、通信设备和通信系统 |
US20130086414A1 (en) | 2010-07-13 | 2013-04-04 | Telefonaktiebolaget L M Ericsson (Publ) | Systems and methods recovering from the failure of a server load balancer |
US9935880B2 (en) | 2012-01-12 | 2018-04-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Systems and methods for scalable and resilient load balancing |
CN103809952B (zh) * | 2012-11-14 | 2018-07-27 | 腾讯科技(深圳)有限公司 | 一种网络平台展示富文本消息的方法和装置 |
US10757166B2 (en) * | 2018-11-20 | 2020-08-25 | International Business Machines Corporation | Passive re-assembly of HTTP2 fragmented segments |
CN113268316A (zh) * | 2021-04-19 | 2021-08-17 | 广东荟萃网络科技有限公司 | 基于地址转换的多活动进程数据交换系统及其工作方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774668A (en) * | 1995-06-07 | 1998-06-30 | Microsoft Corporation | System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing |
US6865610B2 (en) * | 1995-12-08 | 2005-03-08 | Microsoft Corporation | Wire protocol for a media server system |
US6073176A (en) * | 1996-07-29 | 2000-06-06 | Cisco Technology, Inc. | Dynamic bidding protocol for conducting multilink sessions through different physical termination points |
US6470389B1 (en) | 1997-03-14 | 2002-10-22 | Lucent Technologies Inc. | Hosting a network service on a cluster of servers using a single-address image |
US6006264A (en) * | 1997-08-01 | 1999-12-21 | Arrowpoint Communications, Inc. | Method and system for directing a flow between a client and a server |
US6266335B1 (en) | 1997-12-19 | 2001-07-24 | Cyberiq Systems | Cross-platform server clustering using a network flow switch |
GB2338870A (en) | 1998-06-01 | 1999-12-29 | Chen Yong Cong | Network of distributed, non-permanent, and human interactive web servers |
US6373838B1 (en) * | 1998-06-29 | 2002-04-16 | Cisco Technology, Inc. | Dial access stack architecture |
US20020010866A1 (en) * | 1999-12-16 | 2002-01-24 | Mccullough David J. | Method and apparatus for improving peer-to-peer bandwidth between remote networks by combining multiple connections which use arbitrary data paths |
-
2000
- 2000-09-28 US US09/675,035 patent/US6731598B1/en not_active Expired - Lifetime
-
2001
- 2001-09-26 EP EP01975898A patent/EP1320977B1/en not_active Expired - Lifetime
- 2001-09-26 AU AU2001295309A patent/AU2001295309A1/en not_active Abandoned
- 2001-09-26 AT AT01975898T patent/ATE424081T1/de not_active IP Right Cessation
- 2001-09-26 JP JP2002531709A patent/JP2004510394A/ja active Pending
- 2001-09-26 CN CNB018163785A patent/CN1214595C/zh not_active Expired - Lifetime
- 2001-09-26 DE DE60137782T patent/DE60137782D1/de not_active Expired - Fee Related
- 2001-09-26 WO PCT/CA2001/001353 patent/WO2002028048A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
ATE424081T1 (de) | 2009-03-15 |
CN1214595C (zh) | 2005-08-10 |
DE60137782D1 (de) | 2009-04-09 |
EP1320977B1 (en) | 2009-02-25 |
AU2001295309A1 (en) | 2002-04-08 |
CN1466840A (zh) | 2004-01-07 |
WO2002028048A2 (en) | 2002-04-04 |
EP1320977A2 (en) | 2003-06-25 |
WO2002028048A3 (en) | 2002-09-19 |
US6731598B1 (en) | 2004-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11522734B2 (en) | Method for controlling a remote service access path and relevant device | |
US6731598B1 (en) | Virtual IP framework and interfacing method | |
US7114008B2 (en) | Edge adapter architecture apparatus and method | |
US6857009B1 (en) | System and method for network access without reconfiguration | |
US7570663B2 (en) | System and method for processing packets according to concurrently reconfigurable rules | |
JP2561797B2 (ja) | 経路指定方法及び装置 | |
EP1234246B1 (en) | System and method for network access without reconfiguration | |
US6760775B1 (en) | System, method and apparatus for network service load and reliability management | |
US7292571B2 (en) | Load balancing with direct terminal response | |
US20050005006A1 (en) | System and method for accessing clusters of servers from the internet network | |
US20060123130A1 (en) | Decoupling TCP/IP processing in system area networks with call filtering | |
US8130755B2 (en) | Load balancing with direct terminal response | |
US8209371B2 (en) | Method and system for managing communication in a computer network using aliases of computer network addresses | |
WO2000052906A1 (en) | System, method and apparatus for network service load and reliability management | |
Cisco | Bridging and IBM Networking Overview | |
Cisco | Bridging and IBM Networking Overview | |
Cisco | Designing APPN Internetworks | |
Cisco | Bridging and IBM Networking Overview | |
Cisco | Bridging and IBM Networking Overview | |
Cisco | Bridging and IBM Networking Overview | |
Cisco | Bridging and IBM Networking Overview | |
Cisco | Bridging and IBM Networking Overview | |
Cisco | Bridging and IBM Networking Overview | |
Cisco | Bridging and IBM Networking Overview | |
Wang et al. | Web Server Clustering with Single-IP Image: Design and Implementation |