JP6503476B2 - セキュアソケットレイヤ(ssl)通信のセキュリティを改良するためのシステムおよび方法 - Google Patents

セキュアソケットレイヤ(ssl)通信のセキュリティを改良するためのシステムおよび方法 Download PDF

Info

Publication number
JP6503476B2
JP6503476B2 JP2017554850A JP2017554850A JP6503476B2 JP 6503476 B2 JP6503476 B2 JP 6503476B2 JP 2017554850 A JP2017554850 A JP 2017554850A JP 2017554850 A JP2017554850 A JP 2017554850A JP 6503476 B2 JP6503476 B2 JP 6503476B2
Authority
JP
Japan
Prior art keywords
server
appliance
service
network
virtual server
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.)
Expired - Fee Related
Application number
JP2017554850A
Other languages
English (en)
Other versions
JP2018523181A (ja
Inventor
アヌープ レディ,
アヌープ レディ,
ケネス ベル,
ケネス ベル,
ジョージ オイコノム,
ジョージ オイコノム,
カート レーマー,
カート レーマー,
Original Assignee
サイトリックス システムズ,インコーポレイテッド
サイトリックス システムズ,インコーポレイテッド
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 サイトリックス システムズ,インコーポレイテッド, サイトリックス システムズ,インコーポレイテッド filed Critical サイトリックス システムズ,インコーポレイテッド
Publication of JP2018523181A publication Critical patent/JP2018523181A/ja
Application granted granted Critical
Publication of JP6503476B2 publication Critical patent/JP6503476B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0884Network architectures or network communication protocols for network security for authentication of entities by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/59Network arrangements, protocols or services for addressing or naming using proxies for addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Description

(関連出願の相互参照)
本願は、“SYSTEMS AND METHODS FOR IMPROVING SECURITY OF SECURE SOCKET LAYER (SSL) COMMUNICATIONS”と題され、2015年5月8日に出願された米国仮特許出願第62/158876号の優先権および利益を主張するものであり、該米国仮特許出願は、あらゆる目的のために参照により本明細書中に援用される。
本願は、概して、コンピュータネットワークに関する。具体的には、本願は、セキュアソケットレイヤ(SSL)通信のセキュリティを改良するためのシステムおよび方法に関する。
コンピューティングデバイスは、一般的に、暗号化された情報を伝送および受信するためにセキュアソケットレイヤ(SSL)として公知の技術を使用する。しかしながら、本技術は、第三者による攻撃に対して脆弱であり得る。
セキュアソケットレイヤ(SSL)は、コンピュータネットワークを経由して通信セキュリティを提供するように設計されるプロトコルである。クライアントデバイスがサーバとのSSL接続を確立しようとするとき、サーバは、SSL証明書をクライアントデバイスに発行する。典型的には、SSL証明書は、サーバを所有する組織のドメイン名、会社名、およびアドレス等の情報を含む。SSL証明書は、証明書を申請する組織の識別を確認するステップをとるはずである、証明機関によって、組織に発行される。したがって、SSL証明書の受信は、クライアントが接続を要求したサーバが信頼される組織によって所有されるという、ある程度の確信をクライアントデバイスに提供することを意図している。
SSL証明書が証明機関によって発行されるため、SSL証明書は、証明機関自体と同じ程度にセキュアであるにすぎない。例えば、ある事例では、証明機関が、有効な証明書を誤った関係者に故意に発行し得る。他の事例では、証明機関が、有効な証明書を信頼される組織になりすましている悪意のある関係者に発行するように騙され得る。したがって、クライアントデバイスによる有効なSSL証明書の受信だけでは、クライアントが接続を要求したサーバが信頼される組織によって実際に所有されていることを保証できない。
さらに、SSL通信はまた、他のタイプの攻撃によっても侵害され得る。例えば、介入者(MITM)攻撃では、第三者が、クライアントデバイスからサーバに送信される通信を傍受し、また、サーバからクライアントデバイスに送信される通信も傍受する。第三者は、クライアントデバイスに対してサーバになりすまし、サーバに対してサーバクライアントデバイスになりすまし、それによって、クライアントデバイスまたはサーバのいずれの知識も伴わずに、接続を経由して伝送される情報の全てにアクセスする。
したがって、SSL通信を支える証明書信頼モデルは、信頼性を欠き得る。本開示は、SSL通信のセキュリティを改良するための方法およびシステムを提供する。SSLセキュリティは、例えば、予期されるSSL証明書を使用して、SSL証明書を発行するサーバが応答することを検証し、証明書が偽造されていないことを示すことによって、かつサーバへの接続が予期されるインターネットプロトコル(IP)アドレスに決定することを検証し、秘密キーが盗まれていないことを示すことによって、改良されることができる。いくつかの実装では、付加的保護対策もまた、講じられてもよい。例えば、SSL証明書は、証明書がコンピュータセキュリティにおける最新の最善実践に対応するかどうかを判定するように分析されることができる。ボーダゲートウェイプロトコル(BGP)等の他のネットワーキング機能もまた、セキュリティの付加的対策を提供するように分析されることができる。
本開示のいくつかの実装では、複数のクライアントと複数のサーバとの間で仲介するデバイスは、ウェブサーバと通信することができる。本デバイスは、構成されるSSL証明書を伴う仮想サーバ毎に、1つまたはそれを上回るサービスフィンガプリントをウェブサービスに通信することができる。サービスフィンガプリントは、仮想サーバの仮想IPアドレスのためのドメイン名サービス(DNS)エイリアスと、SSL証明書を供給する1つまたはそれを上回るポート番号と、デバイスによってサービス提供されるIPアドレスと、供給されている証明書とを含むことができる。いくつかの実装では、サービスフィンガプリントは、SSL証明書に対応する秘密キーを含まない。
ウェブサービスは、SSL証明書が任意の特定のインターネット向け仮想サーバによって発行されるはずであるマッピングの完全なセットを構築するように、SSL証明書と関連付けられる顧客によって所有される1つまたはそれを上回るデバイスから本情報を組み合わせることができる。ウェブサービスは、各既知の仮想サーバに周期的に接続する複数のサービスプロバイダネットワークを経由して大域的に分配されるエージェントのセットを管理、維持、または所有し、DNSとIPのマッピングまたはSSL証明書が予測されるものではなかったかどうかを報告することができる。これらの結果を照合することに応じて、次いで、ウェブサービスは、それらの仮想サーバが攻撃を受けていると考えられることをデバイスの管理者に通知する。本デバイスが(失効しようとしているSSL証明書に取って代わるように、または新しいIPもしくはDNS名をサービス提供するように)経時的に再構成されると、本デバイスは、新しいサービスフィンガプリントをウェブサービスに自動的に伝搬することができる。
一側面では、本開示は、SSL通信のセキュリティを改良するためのシステムを対象とする。本システムは、1つまたはそれを上回るサーバ、1つまたはそれを上回るクライアント、複数のエージェント、およびウェブサービスの間で仲介するデバイスを含むことができる。サーバは、SSL接続を受信し、SSL証明書を発行するように構成されることができる。仲介デバイスは、個別のサーバのSSL証明書が仲介デバイスを通して伝送されるように、サーバのうちの個別のものと関連付けられる仮想サーバを含むことができる。仲介デバイスは、1つまたはそれを上回るサーバ用のサービスフィンガプリントを生成するように構成されることができる。各サービスフィンガプリントは、個別の仮想サーバのSSL証明書に対応する情報、個別の仮想サーバの仮想IPアドレスのための1つまたはそれを上回るDNSエイリアス、SSL証明書を供給する1つまたはそれを上回るポート番号、およびデバイスによってサービス提供されるIPアドレスを含むことができる。仲介デバイスはまた、サービスフィンガプリントをウェブサービスに伝送するように構成されることもできる。エージェントは、仮想サーバのうちの少なくとも1つへのSSL接続を確立しようとするように、かつそれに応答してSSL証明書を受信するように構成されることができる。ウェブサービスは、少なくとも1つのエージェントから、SSL証明書およびSSL証明書がエージェントによって受信されたIPアドレスに対応する情報を受信するように構成されることができる。ウェブサービスはまた、少なくとも1つの仮想サーバの個別のサービスマッピングと、受信されたSSL証明書またはSSL証明書がエージェントによって受信されたIPアドレスとの間の不一致に基づいて、仮想サーバが侵害されていることを判定するように構成されることもできる。
いくつかの実装では、仲介デバイスは、サービスフィンガプリントに含まれることができる、一意の検証キーを生成してもよい。次いで、本検証キーは、SSLエンドポイントが実際にサーバであるというさらなる信頼を可能にするように、SSLハンドシェイクへのプライベート拡張を介して、エージェントによってチェックされることができる。いくつかの実装では、エージェントは、潜在的攻撃の性質を理解することに関連する付加的情報を収集してもよい。例えば、確立されたSSL接続を経由して伝送されるデータ上で行われる「トレースルート」コマンドの出力は、攻撃による影響を受ける、起こり得る接続経路に関する付加的情報を提供することができる。いくつかの実装では、ウェブサービスは、サーバ709のSSL証明書が侵害されているかどうかを示す、付加的ソースとして証明機関から発行される、または取り消される、SSL証明書のフィードを収集してもよい。いくつかの実装では、ウェブサービスは、サーバに対応する仮想サーバが悪意のあるトラフィックルートによって侵害されているかどうかを検出するように、ボーダゲートウェイプロトコル(BGP)等の付加的プロトコルを監視してもよい。いくつかの実装では、ウェブサービスは、SSL証明書が最新の最善実践にもはや従っていないかどうかを判定するように、キー長、パディング、および暗号アルゴリズム等の進化しつつある業界最善実践に対して、全ての既知の証明書を周期的にチェックしてもよい。
別の側面では、本開示は、SSL通信のセキュリティを改良するための方法を対象とする。本方法は、1つまたはそれを上回る仮想サーバ用の1つまたはそれを上回るサービスフィンガプリントを生成するステップを含むことができる。各サービスフィンガプリントは、個別の仮想サーバのSSL証明書、個別の仮想サーバの仮想IPアドレスのための1つまたはそれを上回るDNSエイリアス、SSL証明書を供給する1つまたはそれを上回るポート番号、およびデバイスによってサービス提供されるIPアドレスに対応する情報を含むことができる。本方法は、1つまたはそれを上回るサービスフィンガプリントに基づいて、SSL証明書および仮想サーバのサービスマッピングを作成するステップを含むことができる。本方法は、仮想サーバのうちの少なくとも1つへのSSL接続を確立してSSL証明書を受信しようとするステップを含むことができる。本方法は、少なくとも1つの仮想サーバの個別のサービスマッピングと、受信されたSSL証明書またはSSL証明書が受信されたIPアドレスとの間の不一致に基づいて、少なくとも1つの仮想サーバが侵害されていることを判定するステップを含むことができる。
別の側面では、本開示は、SSL通信のセキュリティを改良するための方法を対象とする。本方法は、複数のクライアントおよび1つまたはそれを上回るサーバを仲介するデバイスによって、デバイス上で実行する仮想サーバと関連付けられる構成変更を判定するステップを含むことができる。本方法は、仮想サーバと関連付けられる構成変更を判定するステップに応答して、デバイスによって、仮想サーバ用のサービスフィンガプリントを生成するステップを含むことができる。サービスフィンガプリントは、仮想サーバの仮想IPアドレスのためのDNSエイリアスと、仮想サーバのSSL証明書を供給する仮想サーバのポート番号と、デバイスによってサービス提供されるIPアドレスと、SSL証明書とを含むことができる。本方法は、デバイスによって、生成されたサービスフィンガプリントをウェブサービスに伝送し、生成されたサービスフィンガプリントをエージェントからウェブサービスによって受信されるデータと比較して、デバイスが攻撃を受けているかどうかを識別するステップを含むことができる。
いくつかの実装では、本方法は、ウェブサービスが、i)SSL証明書が仮想サーバとのセキュアな接続を確立しようとしたエージェントから受信される第2のSSL証明書に合致しないこと、またはii)仮想サーバのIPアドレスがエージェントから受信される第2のIPアドレスに合致しないことを判定するステップに応答して、ウェブサービスからデバイスによって、デバイスが攻撃を受けているという通知を受信するステップを含むことができる。いくつかの実装では、通知は、攻撃が介入者(MITM)攻撃であることを示す。
いくつかの実装では、仮想サーバと関連付けられる構成変更を判定するステップは、デバイスによって、仮想サーバのSSL証明書が仮想サーバの失効したSSL証明書に取って代わったことを判定するステップを含む。いくつかの実装では、仮想サーバと関連付けられる構成変更を判定するステップは、デバイスによって、仮想サーバが仮想サーバによって前もってサービス提供されていない新しいIPアドレスと関連付けられることを判定するステップを含む。いくつかの実装では、仮想サーバと関連付けられる構成変更を判定するステップは、デバイスによって、仮想サーバが仮想サーバによって前もってサービス提供されていない新しいDNS名をサービス提供することを判定するステップを含む。
いくつかの実装では、サービスフィンガプリントは、SSL証明書に対応する秘密キーを含まない。いくつかの実装では、本方法は、デバイスによって、一意の検証キーを生成し、SSL証明書が一意の検証キーに基づいて供給されるときに、仮想サーバがSSLハンドシェイクのプライベート拡張を実装することを可能にするステップを含むことができる。いくつかの実装では、サービスフィンガプリントを生成するステップはさらに、デバイスによって、一意の検証キーを含む、サービスフィンガプリントを生成するステップを含む。いくつかの実装では、本方法は、エージェントから、エージェントと仮想サーバとの間にセキュアな接続を確立する要求を受信するステップと、セキュアな接続を確立する要求を受信するステップに応答して、デバイスによって、SSL証明書および一意の検証キーをエージェントに伝送するステップとを含む。
別の側面では、本開示は、SSL通信のセキュリティを改良するためのシステムを対象とする。本システムは、複数のクライアントおよび1つまたはそれを上回るサーバを仲介するデバイスを含むことができる。本デバイスは、デバイス上で実行する仮想サーバと関連付けられる構成変更を判定するように構成される、構成変更識別子を含むことができる。本デバイスは、仮想サーバと関連付けられる構成変更を判定することに応答して、仮想サーバ用のサービスフィンガプリントを生成するように構成される、サービスフィンガプリントジェネレータを含むことができる。サービスフィンガプリントは、仮想サーバの仮想IPアドレスのためのDNSエイリアスと、仮想サーバのSSL証明書を供給する仮想サーバのポート番号と、仮想サーバのIPアドレスと、SSL証明書とを含むことができる。本デバイスはまた、生成されたサービスフィンガプリントをウェブサービスに伝送し、生成されたサービスフィンガプリントをエージェントからウェブサービスによって受信されるデータと比較して、デバイスが攻撃を受けているかどうかを識別するように構成される、サービスフィンガプリント伝送機を含むこともできる。
いくつかの実装では、本デバイスは、ウェブサービスが、i)SSL証明書が仮想サーバとのセキュアな接続を確立しようとしたエージェントから受信される第2のSSL証明書に合致しないこと、またはii)仮想サーバのIPアドレスがエージェントから受信される第2のIPアドレスに合致しないことを判定することに応答して、デバイスが攻撃を受けているという通知をウェブサービスから受信するように構成される、通知受信機を含むことができる。
いくつかの実装では、通知は、攻撃が介入者(MITM)攻撃であることを示す。いくつかの実装では、構成変更識別子はさらに、仮想サーバのSSL証明書が仮想サーバの失効したSSL証明書に取って代わったことを判定するように構成される。いくつかの実装では、構成変更識別子はさらに、仮想サーバが仮想サーバによって前もってサービス提供されていない新しいIPアドレスと関連付けられることを判定するように構成される。いくつかの実装では、構成変更識別子はさらに、仮想サーバが仮想サーバによって前もってサービス提供されていない新しいDNS名をサービス提供することを判定するように構成される。
いくつかの実装では、サービスフィンガプリントは、SSL証明書に対応する秘密キーを含まない。いくつかの実装では、本デバイスはさらに、一意の検証キーを生成し、SSL証明書が一意の検証キーに基づいて供給されるときに、仮想サーバがSSLハンドシェイクのプライベート拡張を実装することを可能にするように構成される、検証キージェネレータを備える。いくつかの実装では、サービスフィンガプリントジェネレータはさらに、サービスフィンガプリントを生成して一意の検証キーを含むように構成される。
いくつかの実装では、本デバイスはさらに、エージェントから、エージェントと仮想サーバとの間にセキュアな接続を確立する要求を受信し、セキュアな接続を確立する要求を受信することに応答して、SSL証明書および一意の検証キーをエージェントに伝送するように構成される、セキュア接続インターフェースを備える。
本発明の種々の実施形態の詳細が、付随の図面および以下の説明に記載される。
本発明の先述および他の目的、側面、特徴、ならびに利点は、付随の図面と併せて解釈される以下の説明を参照することによって、より明白となり、より理解されるであろう。
図1Aは、クライアントがアプライアンスを介してサーバにアクセスするためのネットワーク環境の実施形態のブロック図である。 図1Bは、アプライアンスを介してサーバからクライアントにコンピュータ環境を配信するための環境の実施形態のブロック図である。 図1Cは、アプライアンスを介してサーバからクライアントにコンピュータ環境を配信するための環境の別の実施形態のブロック図である。 図1Dは、アプライアンスを介してサーバからクライアントにコンピュータ環境を配信するための環境の別の実施形態のブロック図である。 図1E−1Hは、コンピューティングデバイスの実施形態のブロック図である。 図1E−1Hは、コンピューティングデバイスの実施形態のブロック図である。 図1E−1Hは、コンピューティングデバイスの実施形態のブロック図である。 図1E−1Hは、コンピューティングデバイスの実施形態のブロック図である。 図2Aは、クライアントとサーバとの間の通信を処理するためのアプライアンスの実施形態のブロック図である。 図2Bは、クライアントとサーバとの間の通信を最適化、加速、負荷平衡、およびルーティングするためのアプライアンスの別の実施形態のブロック図である。 図3は、アプライアンスを介してサーバと通信するためのクライアントの実施形態のブロック図である。 図4Aは、仮想化環境の実施形態のブロック図である。 図4Bは、仮想化環境の別の実施形態のブロック図である。 図4Cは、仮想化されたアプライアンスの実施形態のブロック図である。 図5Aは、マルチコアシステムで並列性を実装することへのアプローチの実施形態のブロック図である。 図5Bは、マルチコアシステムを利用するシステムの実施形態のブロック図である。 図5Cは、マルチコアシステムの側面の別の実施形態のブロック図である。 図6は、クラスタシステムの実施形態のブロック図である。 図7Aは、SSL通信のセキュリティを改良するためのシステムの実施形態のブロック図である。 図7Bは、図7Aに示されるシステムに含まれる仲介デバイスの実施形態のブロック図である。 図7Cは、SSL通信のセキュリティを改良するための第1の方法の実施形態のフローチャートである。 図7Dは、SSL通信のセキュリティを改良するための第2の方法の実施形態のフローチャートである。
本発明の特徴および利点は、同様の参照記号が全体を通して対応する要素を識別する、図面と併せて解釈されるときに、以下に記載される発明を実施するための形態から、より明白となるであろう。図面では、同様の参照数字は、概して、同じ、機能的に類似する、および/または構造的に類似する要素を示す。
以下の種々の実施形態の説明を読む目的で、本明細書の節およびそれらの個別の内容の以下の説明が役立ち得る。
第A節は、本明細書に説明される実施形態を実践するために有用であり得る、ネットワーク環境およびコンピュータ環境を説明する。
第B節は、コンピュータ環境を遠隔ユーザに配信するためのシステムおよび方法の実施形態を説明する。
第C節は、クライアントとサーバとの間の通信を加速するためのシステムおよび方法の実施形態を説明する。
第D節は、アプリケーション配信コントローラを仮想化するためのシステムおよび方法の実施形態を説明する。
第E節は、マルチコアアーキテクチャおよび環境を提供するためのシステムおよび方法の実施形態を説明する。
第F節は、クラスタ化されたアプライアンスアーキテクチャ環境を提供するためのシステムおよび方法の実施形態を説明する。
第G節は、SSL通信のセキュリティを改良するためのシステムおよび方法の実施形態を説明する。
A.ネットワークおよびコンピュータ環境
アプライアンスおよび/またはクライアントのシステムならびに方法の実施形態の詳細について議論にすることに先立って、そのような実施形態が展開され得る、ネットワークおよびコンピュータ環境について議論することが役立ち得る。ここで図1Aを参照すると、ネットワーク環境の実施形態が描写されている。要するに、ネットワーク環境は、1つまたはそれを上回るネットワーク104、104’(概して、ネットワーク104と称される)を介して1つまたはそれを上回るサーバ106a−106n(概して、サーバ106または遠隔マシン106とも称される)と通信する1つまたはそれを上回るクライアント102a−102n(概して、ローカルマシン102またはクライアント102とも称される)を備える。いくつかの実施形態では、クライアント102は、アプライアンス200を介してサーバ106と通信する。
図1Aは、クライアント102とサーバ106との間のネットワーク104およびネットワーク104’を示すが、クライアント102およびサーバ106は、同一ネットワーク104上にあってもよい。ネットワーク104および104’は、同一タイプのネットワークまたは異なるタイプのネットワークであることができる。ネットワーク104および/またはネットワーク104’は、企業イントラネット、メトロポリタンエリアネットワーク(MAN)等のローカルエリアネットワーク(LAN)、またはインターネットもしくはワールドワイドウェブ等の広域ネットワーク(WAN)であることができる。一実施形態では、ネットワーク104’は、プライベートネットワークであってもよく、ネットワーク104は、公衆ネットワークであってもよい。いくつかの実施形態では、ネットワーク104は、プライベートネットワークであってもよく、ネットワーク104’は、公衆ネットワークであってもよい。別の実施形態では、ネットワーク104および104’は両方とも、プライベートネットワークであってもよい。いくつかの実施形態では、クライアント102は、企業データセンタに位置するサーバ106へのネットワーク104を経由したWAN接続を介して通信する、企業の支店に位置してもよい。
ネットワーク104および/または104’は、任意のタイプならびに/もしくは形態のネットワークであってもよく、以下、すなわち、2点間ネットワーク、放送ネットワーク、広域ネットワーク、ローカルエリアネットワーク、電気通信ネットワーク、データ通信ネットワーク、コンピュータネットワーク、ATM(非同期転送モード)ネットワーク、SONET(同期光ネットワーク)ネットワーク、SDH(同期デジタル階層)ネットワーク、無線ネットワーク、および有線ネットワークのうちのいずれかを含んでもよい。いくつかの実施形態では、ネットワーク104は、赤外線チャネルまたは衛星帯等の無線リンクを備えてもよい。ネットワーク104および/または104’のトポロジは、バス、スター、もしくはリングネットワークトポロジであってもよい。ネットワーク104および/または104’ならびにネットワークトポロジは、本明細書に説明される動作をサポートすることが可能である、当業者に公知であるもの等の任意のネットワークもしくはネットワークトポロジであってもよい。
図1Aに示されるように、インターフェースユニット200またはゲートウェイ200とも称され得る、アプライアンス200が、ネットワーク104と104’との間に示されている。いくつかの実施形態では、アプライアンス200は、ネットワーク104上に位置してもよい。例えば、企業の支店が、支店においてアプライアンス200を展開してもよい。他の実施形態では、アプライアンス200は、ネットワーク104’上に位置してもよい。例えば、アプライアンス200は、企業データセンタに位置してもよい。さらに別の実施形態では、複数のアプライアンス200が、ネットワーク104上に展開されてもよい。いくつかの実施形態では、例えば、図1A−1Dに示されるように、複数のアプライアンス200が、ネットワーク104’上に展開されてもよい。一実施形態では、第1のアプライアンス200が、第2のアプライアンス200’と通信する。他の実施形態では、アプライアンス200は、任意のクライアント102またはクライアント102と同一もしくは異なるネットワーク104、104’上のサーバ106の一部であり得る。1つまたはそれを上回るアプライアンス200は、クライアント102とサーバ106との間のネットワークまたはネットワーク通信経路内の任意の点に位置してもよい。
いくつかの実施形態では、アプライアンス200は、Citrix NetScalerデバイスと称される、Citrix Systems, Inc.(Ft. Lauderdale Florida)製のネットワークデバイスのうちのいずれかを備える。他の実施形態では、アプライアンス200は、F5 Networks, Inc.(Seattle, Washington)製のWebAcceleratorおよびBigIPと称される製品実施形態のうちのいずれかを含む。別の実施形態では、アプライアンス205は、DX加速デバイスプラットフォームおよび/またはJuniper Networks, Inc.(Sunnyvale, California))製のSA700、SA2000、SA4000、ならびにSA6000デバイス等のSSL VPNシリーズのデバイスのうちのいずれかを含む。さらに別の実施形態では、アプライアンス200は、Cisco ACEアプリケーション制御エンジンモジュールサービスソフトウェアおよびネットワークモジュール、ならびにCisco AVSシリーズアプリケーション速度システム等のCisco Systems, Inc.(San Jose, California)製の任意のアプリケーション加速および/またはセキュリティ関連アプライアンスならびに/もしくはソフトウェアを含む。
一実施形態では、本システムは、複数の論理的にグループ化されたサーバ106を含んでもよい。これらの実施形態では、サーバの論理グループは、サーバファーム38と称されてもよい。これらの実施形態のうちのいくつかでは、サーバ106は、地理的に分散されてもよい。ある場合には、ファーム38は、単一のエンティティとして運営されてもよい。他の実施形態では、サーバファーム38は、複数のサーバファーム38を備える。一実施形態では、サーバファームは、1つまたはそれを上回るクライアント102の代わりに、1つまたはそれを上回るアプリケーションを実行する。
各ファーム38内のサーバ106は、異種であり得る。サーバ106のうちの1つまたはそれを上回るものが、1つのタイプのオペレーティングシステムプラットフォーム(例えば、Microsoft Corp.(Redmond, Washington)製のWINDOWS(登録商標) NT)に従って動作することができる一方で、他のサーバ106のうちの1つまたはそれを上回るものは、別のタイプのオペレーティングシステムプラットフォーム(例えば、Unix(登録商標)またはLinux(登録商標))に従って動作することができる。各ファーム38のサーバ106は、同一ファーム38内の別のサーバ106に物理的に近接する必要はない。したがって、ファーム38として論理的にグループ化されたサーバ106のグループは、広域ネットワーク(WAN)接続または中域ネットワーク(MAN)接続を使用して、相互接続されてもよい。例えば、ファーム38は、異なる大陸、または大陸、国、州、都市、キャンパス、もしくは部屋の異なる領域の中に物理的に位置する、サーバ106を含んでもよい。ファーム38内のサーバ106の間のデータ伝送速度は、サーバ106がローカルエリアネットワーク(LAN)接続または何らかの形態の直接接続を使用して接続される場合に、増加されることができる。
サーバ106は、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、またはゲートウェイサーバと称されてもよい。いくつかの実施形態では、サーバ106は、アプリケーションサーバとして、またはマスタアプリケーションサーバとして機能する能力を有してもよい。一実施形態では、サーバ106は、アクティブディレクトリを含んでもよい。クライアント102はまた、クライアントノードまたはエンドポイントと称されてもよい。いくつかの実施形態では、クライアント102は、サーバ上のアプリケーションへのアクセスを求めるクライアントノードとして、および他のクライアント102a−102nのためのホスト型アプリケーションへのアクセスを提供するアプリケーションサーバとしての両方で機能する能力を有する。
いくつかの実施形態では、クライアント102は、サーバ106と通信する。一実施形態では、クライアント102は、ファーム38内のサーバ106のうちの1つと直接通信する。別の実施形態では、クライアント102は、ファーム38内のサーバ106と通信するように、プログラム隣接アプリケーションを実行する。なおも別の実施形態では、サーバ106は、マスタノードの機能性を提供する。いくつかの実施形態では、クライアント102は、ネットワーク104を通してファーム38内のサーバ106と通信する。ネットワーク104を経由して、クライアント102は、例えば、ファーム38内のサーバ106a−106nによってホストされる種々のアプリケーションの実行を要求し、表示するためにアプリケーション実行の結果の出力を受信することができる。いくつかの実施形態では、マスタノードのみが、要求されたアプリケーションをホストするサーバ106’と関連付けられるアドレス情報を識別して提供するために要求される機能性を提供する。
一実施形態では、サーバ106は、ウェブサーバの機能性を提供する。別の実施形態では、サーバ106aは、クライアント102から要求を受信し、要求を第2のサーバ106bに転送し、サーバ106bからの要求への応答とともに、クライアント102による要求に応答する。なおも別の実施形態では、サーバ106は、クライアント102に利用可能なアプリケーションの列挙、およびアプリケーションの列挙によって識別されるアプリケーションをホストするサーバ106と関連付けられるアドレス情報を獲得する。さらに別の実施形態では、サーバ106は、ウェブインターフェースを使用して、要求への応答をクライアント102に提示する。一実施形態では、クライアント102は、識別されたアプリケーションにアクセスするようにサーバ106と直接通信する。別の実施形態では、クライアント102は、サーバ106上の識別されたアプリケーションの実行によって生成される、表示データ等のアプリケーション出力データを受信する。
ここで図1Bを参照すると、複数のアプライアンス200を展開するネットワーク環境の実施形態が描写されている。第1のアプライアンス200が、第1のネットワーク104上に、第2のアプライアンス200’が、第2のネットワーク104’上に展開されてもよい。例えば、企業が、支店において第1のアプライアンス200を、データセンタにおいて第2のアプライアンス200’を展開してもよい。別の実施形態では、第1のアプライアンス200および第2のアプライアンス200’は、同一のネットワーク104またはネットワーク104’上に展開される。例えば、第1のアプライアンス200は、第1のサーバファーム38のために展開されてもよく、第2のアプライアンス200は、第2のサーバファーム38’のために展開されてもよい。別の実施例では、第1のアプライアンス200が、第1の支店において展開されてもよい一方で、第2のアプライアンス200’は、第2の支店’において展開されてもよい。いくつかの実施形態では、第1のアプライアンス200および第2のアプライアンス200’は、ネットワークトラフィックまたはクライアントとサーバとの間のアプリケーションならびにデータの配信を加速するように、相互と協力して、または連動して作動する。
ここで図1Cを参照すると、1つまたはそれを上回るWAN最適化アプライアンス205、205’の間等で1つまたはそれを上回る他のタイプのアプライアンスとともにアプライアンス200を展開する、ネットワーク環境の別の実施形態が描写されている。例えば、第1のWAN最適化アプライアンス205が、ネットワーク104と104’との間に示され、第2のWAN最適化アプライアンス205’が、アプライアンス200と1つまたはそれを上回るサーバ106との間に展開されてもよい。一例として、企業が、支店において第1のWAN最適化アプライアンス205を、データセンタにおいて第2のWAN最適化アプライアンス205’を展開してもよい。いくつかの実施形態では、アプライアンス205は、ネットワーク104’上に位置してもよい。他の実施形態では、アプライアンス205’は、ネットワーク104上に位置してもよい。いくつかの実施形態では、アプライアンス205’は、ネットワーク104’またはネットワーク104”上に位置してもよい。一実施形態では、アプライアンス205および205’は、同一ネットワーク上にある。別の実施形態では、アプライアンス205および205’は、異なるネットワーク上にある。別の実施例では、第1のWAN最適化アプライアンス205が、第1のサーバファーム38のために、第2のWAN最適化アプライアンス205’が、第2のサーバファーム38’のために展開されてもよい。
一実施形態では、アプライアンス205は、WAN接続へ、および/またはそこからのトラフィック等の任意のタイプならびに形態のネットワークトラフィックの性能、動作、もしくはサービス品質を加速、最適化、または別様に改良するためのデバイスである。いくつかの実施形態では、アプライアンス205は、性能強化プロキシである。他の実施形態では、アプライアンス205は、WAN最適化コントローラと称されることもある、任意のタイプおよび形態のWAN最適化または加速デバイスである。一実施形態では、アプライアンス205は、Citrix Systems, Inc.(Ft. Lauderdale, Florida)製のWANScalerと称される製品実施形態のうちのいずれかである。他の実施形態では、アプライアンス205は、F5 Networks,Inc.(Seattle, Washington)製のBIG−IPリンクコントローラおよびWANjetと称される製品実施形態のうちのいずれかを含む。別の実施形態では、アプライアンス205は、Juniper Networks, Inc.(Sunnyvale, California)製のWXおよびWXC WAN加速デバイスプラットフォームのうちのいずれかを含む。いくつかの実施形態では、アプライアンス205は、Riverbed Technology(San Francisco, California)製のスチールヘッドラインのWAN最適化アプライアンスのうちのいずれかを含む。他の実施形態では、アプライアンス205は、Expand Networks Inc.(Roseland, NewJersey)製のWAN関連デバイスのうちのいずれかを含む。一実施形態では、アプライアンス205は、Packeteerによって提供されるPacketShaper、iShared、およびSkyX製品実施形態等のPacketeer Inc.(Cupertino, California)製のWAN関連アプライアンスのうちのいずれかを含む。さらに別の実施形態では、アプライアンス205は、Cisco広域ネットワークアプリケーションサービスソフトウェアおよびネットワークモジュール、ならびに広域ネットワークエンジンアプライアンス等のCisco Systems, Inc.(San Jose, California)製の任意のWAN関連アプライアンスおよび/またはソフトウェアを含む。
一実施形態では、アプライアンス205は、支店または遠隔オフィスのためのアプリケーションおよびデータ加速サービスを提供する。一実施形態では、アプライアンス205は、広域ファイルサービス(WAFS)の最適化を含む。別の実施形態では、アプライアンス205は、共通インターネットファイルシステム(CIFS)プロトコルを介して等、ファイルの配信を加速する。他の実施形態では、アプライアンス205は、アプリケーションならびにデータの配信を加速するように、メモリおよび/または記憶装置の中でキャッシングを提供する。一実施形態では、アプライアンス205は、任意のレベルのネットワークスタックにおいて、または任意のプロトコルもしくはネットワーク層において、ネットワークトラフィックの圧縮を提供する。別の実施形態では、アプライアンス205は、WAN接続を経由したアプリケーションおよびデータの配信を加速するように、トランスポート層プロトコル最適化、フロー制御、性能強化もしくは修正、および/または管理を提供する。例えば、一実施形態では、アプライアンス205は、トランスポート制御プロトコル(TCP)最適化を提供する。他の実施形態では、アプライアンス205は、任意のセッションまたはアプリケーション層プロトコルのための最適化、フロー制御、性能強化もしくは修正、および/または管理を提供する。
別の実施形態では、アプライアンス205は、存在、機能性、または能力を別のアプライアンス205’にアナウンスするように、任意のタイプおよび形態のデータもしくは情報を、ネットワークパケットのカスタムもしくは標準TCPおよび/またはIPヘッダフィールドもしくはオプションフィールドにエンコードする。別の実施形態では、アプライアンス205’は、TCPおよび/またはIPヘッダフィールドもしくはオプションの両方でエンコードされるデータを使用して、別のアプライアンス205’と通信してもよい。例えば、アプライアンスは、WAN加速等の機能性を果たす際に、または相互と連動して作動するために、アプライアンス205、205’によって使用される1つまたはそれを上回るパラメータを通信するようにTCPオプションまたはIPヘッダフィールドもしくはオプションを使用してもよい。
いくつかの実施形態では、アプライアンス200は、アプライアンス205と205’との間で通信されるTCPおよび/またはIPヘッダならびに/もしくはオプションフィールドの中でエンコードされる情報のうちのいずれかを保存する。例えば、アプライアンス200は、クライアントとアプライアンス205および205’をトラバースするサーバとの間からのトランスポート層接続等のアプライアンス200をトラバースするトランスポート層接続を終了させてもよい。一実施形態では、アプライアンス200は、第1のトランスポート層接続を介して第1のアプライアンス205によって伝送されるトランスポート層パケットの中の任意のエンコードされた情報を識別して保存し、第2のトランスポート層接続を介してエンコードされた情報とともにトランスポート層パケットを第2のアプライアンス205’に通信する。
ここで図1Dを参照すると、クライアント102上でコンピュータ環境を配信する、および/または動作させるためのネットワーク環境が描写されている。いくつかの実施形態では、サーバ106は、コンピュータ環境もしくはアプリケーションおよび/またはデータファイルを1つまたはそれを上回るクライアント102に配信するためのアプリケーション配信システム190を含む。要するに、クライアント102は、ネットワーク104、104’およびアプライアンス200を介してサーバ106と通信する。例えば、クライアント102は、企業の遠隔オフィス、例えば、支店内に常駐してもよく、サーバ106は、企業データセンタに常駐してもよい。クライアント102は、クライアントエージェント120と、コンピュータ環境15とを備える。コンピュータ環境15は、データファイルにアクセスする、それを処理または使用する、アプリケーションを実行もしくは動作させてもよい。コンピュータ環境15、アプリケーション、および/またはデータファイルは、アプライアンス200ならびに/もしくはサーバ106を介して配信されてもよい。
いくつかの実施形態では、アプライアンス200は、クライアント102へのコンピュータ環境15またはその任意の部分の配信を加速する。一実施形態では、アプライアンス200は、アプリケーション配信システム190によるコンピュータ環境15の配信を加速する。例えば、本明細書に説明される実施形態は、中央企業データセンタから企業の支店等の遠隔ユーザ場所へのアプリケーションによって処理可能なストリーミングアプリケーションおよびデータファイルの配信を加速するために使用されてもよい。別の実施形態では、アプライアンス200は、クライアント102とサーバ106との間のトランスポート層トラフィックを加速する。アプライアンス200は、1)トランスポート層接続プール、2)トランスポート層接続多重化、3)トランスポート制御プロトコルバッファリング、4)圧縮、および5)キャッシング等のサーバ106からクライアント102への任意のトランスポート層ペイロードを加速するための加速技法を提供してもよい。いくつかの実施態では、アプライアンス200は、クライアント102からの要求に応答する際に、サーバ106の負荷平衡を提供する。他の実施形態では、アプライアンス200は、1つまたはそれを上回るサーバ106へのアクセスを提供するように、プロキシもしくはアクセスサーバとして作用する。別の実施形態では、アプライアンス200は、SSL VPN接続等のクライアント102の第1のネットワーク104からサーバ106の第2のネットワーク104’へのセキュアな仮想プライベートネットワーク接続を提供する。さらに他の実施形態では、アプライアンス200は、クライアント102とサーバ106との間の接続および通信のアプリケーションファイアウォールセキュリティ、制御、ならびに管理を提供する。
いくつかの実施形態では、アプリケーション配信管理システム190は、複数の実行方法に基づいて、かつポリシエンジン195を介して適用される任意の認証および承認ポリシに基づいて、コンピュータ環境を遠隔または別様のユーザのデスクトップに配信するアプリケーション配信技法を提供する。これらの技法を用いることで、遠隔ユーザは、任意のネットワーク接続されたデバイス100から、コンピュータ環境およびサーバに記憶されたアプリケーションならびにデータファイルへのアクセスを取得してもよい。一実施形態では、アプリケーション配信システム190は、サーバ106上で常駐または実行してもよい。別の実施形態では、アプリケーション配信システム190は、複数のサーバ106a−106n上で常駐または実行してもよい。いくつかの実施形態では、アプリケーション配信システム190は、サーバファーム38内で実行してもよい。一実施形態では、アプリケーション配信システム190を実行するサーバ106はまた、アプリケーションおよびデータファイルを記憶または提供してもよい。別の実施形態では、1つまたはそれを上回るサーバ106の第1のセットが、アプリケーション配信システム190を実行してもよく、異なるサーバ106nが、アプリケーションおよびデータファイルを記憶または提供してもよい。いくつかの実施形態では、アプリケーション配信システム190、アプリケーション、およびデータファイルはそれぞれ、異なるサーバ上に常駐または位置してもよい。さらに別の実施形態では、アプリケーション配信システム190の任意の部分が、アプライアンス200または複数のアプライアンス上に常駐、実行、または記憶される、もしくはそれに分配されてもよい。
クライアント102は、データファイルを使用または処理するアプリケーションを実行するためのコンピュータ環境15を含んでもよい。ネットワーク104、104’およびアプライアンス200を介したクライアント102は、サーバ106からアプリケーションならびにデータファイルを要求してもよい。一実施形態では、アプライアンス200は、クライアント102からサーバ106に要求を転送してもよい。例えば、クライアント102は、ローカルに記憶された、またはアクセス可能であるアプリケーションおよびデータファイルを有していない場合がある。要求に応答して、アプリケーション配信システム190および/またはサーバ106は、アプリケーションならびにデータファイルをクライアント102に配信してもよい。例えば、一実施形態では、サーバ106は、クライアント102上のコンピュータ環境15内で動作するようにアプリケーションストリームとしてアプリケーションを伝送してもよい。
いくつかの実施形態では、アプリケーション配信システム190は、MetaFrameもしくはCitrix Presentation ServerTM等のCitrix Systems, Inc.によるCitrix Access SuiteTMの任意の部分、および/またはMicrosoft Corporation製のMicrosoft(R) Windows(登録商標) Terminal Servicesのうちのいずれかを備える。一実施形態では、アプリケーション配信システム190は、遠隔表示プロトコルを介して、または別様に遠隔ベースもしくはサーバベースの計算を介して、1つまたはそれを上回るアプリケーションをクライアント102もしくはユーザに配信してもよい。別の実施形態では、アプリケーション配信システム190は、アプリケーションのストリーミングを介して、1つまたはそれを上回るアプリケーションをクライアントもしくはユーザに配信してもよい。
一実施形態では、アプリケーション配信システム190は、アプリケーションへのアクセス、アプリケーション実行方法の選択、およびアプリケーションの配信を制御ならびに監視するためのポリシエンジン195を含む。いくつかの実施形態では、ポリシエンジン195は、ユーザもしくはクライアント102がアクセスし得る、1つまたはそれを上回るアプリケーションを判定する。別の実施形態では、ポリシエンジン195は、どのようにしてアプリケーションがユーザまたはクライアント102に配信されるべきか、例えば、実行の方法を判定する。いくつかの実施形態では、アプリケーション配信システム190は、サーバベースの計算、ローカル実行のためにローカルにアプリケーションをクライアント120にストリーム配信または配信すること等のアプリケーション実行の方法を選択する、複数の配信技法を提供する。
一実施形態では、クライアント102は、アプリケーションプログラムの実行を要求し、サーバ106を備えるアプリケーション配信システム190は、アプリケーションプログラムを実行する方法を選択する。いくつかの実施形態では、サーバ106は、クライアント102から証明書を受信する。別の実施形態では、サーバ106は、クライアント102から利用可能なアプリケーションの列挙の要求を受信する。一実施形態では、証明書の要求または受信に応答して、アプリケーション配信システム190は、クライアント102に利用可能な複数のアプリケーションプログラムを列挙する。アプリケーション配信システム190は、列挙されたアプリケーションを実行する要求を受信する。アプリケーション配信システム190は、例えば、ポリシエンジンのポリシに応答して、列挙されたアプリケーションを実行するための所定数の方法のうちの1つを選択する。アプリケーション配信システム190は、クライアント102が、サーバ106上のアプリケーションプログラムの実行によって生成されるアプリケーション出力データを受信することを可能にする、アプリケーションの実行の方法を選択してもよい。アプリケーション配信システム190は、アプリケーションを備える複数のアプリケーションファイルを読み出した後に、ローカルマシン10がローカルでアプリケーションプログラムを実行することを可能にする、アプリケーションの実行の方法を選択してもよい。さらに別の実施形態では、アプリケーション配信システム190は、ネットワーク104を介してクライアント102にアプリケーションをストリーム配信するように、アプリケーションの実行の方法を選択してもよい。
クライアント102は、任意のタイプおよび/または形態のウェブブラウザ、ウェブベースのクライアント、クライアント・サーバアプリケーション、シンクライアントコンピューティングクライアント、ActiveXコントロール、もしくはJava(登録商標)アプレット等の任意のタイプおよび/または形態のソフトウェア、プログラム、もしくは実行可能命令、またはクライアント102上で実行することが可能な任意のタイプおよび/または形態の実行可能命令であることができる、アプリケーションを実行、動作、もしくは別様に提供してもよい。いくつかの実施形態では、アプリケーションは、サーバ106上のクライアント102の代わりに実行される、サーバベースまたは遠隔ベースのアプリケーションであってもよい。一実施形態では、サーバ106は、Citrix Systems, Inc.(Ft. Lauderdale, Florida)製の独立コンピューティングアーキテクチャ(ICA)プロトコルまたはMicrosoft Corporation(Redmond, Washington)製の遠隔デスクトッププロトコル(RDP)等の任意のシンクライアントもしくは遠隔表示プロトコルを使用して、クライアント102への出力を表示してもよい。アプリケーションは、任意のタイプのプロトコルを使用することができ、それは、例えば、HTTPクライアント、FTPクライアント、Oscarクライアント、またはTelnetクライアントであることができる。他の実施形態では、アプリケーションは、ソフトIP電話等のVoIP通信に関連する任意のタイプのソフトウェアを備える。さらなる実施形態では、アプリケーションは、ビデオおよび/またはオーディオをストリーミング配信するためのアプリケーション等のリアルタイムデータ通信に関連する任意のアプリケーションを備える。
いくつかの実施形態では、サーバ106またはサーバファーム38は、シンクライアント計算を提供するアプリケーションもしくは遠隔表示プレゼンテーションアプリケーション等の1つまたはそれを上回るアプリケーションを起動していてもよい。一実施形態では、サーバ106またはサーバファーム38は、MetaFrameもしくはCitrix Presentation ServerTM等のCitrix Systems, Inc.によるCitrix Access SuiteTMの任意の部分、および/またはMicrosoft Corporation製のMicrosoft(R) Windows(登録商標) Terminal Servicesのうちのいずれかをアプリケーションとして実行する。一実施形態では、アプリケーションは、Citrix Systems,Inc.(Fort Lauderdale, Florida)によって開発されたICAクライアントである。他の実施形態では、アプリケーションは、Microsoft Corporation(Redmond, Washington)によって開発された遠隔デスクトップ(RDP)クライアントを含む。また、サーバ106は、例えば、Microsoft Corporation(Redmond, Washington)製のMicrosoft Exchange等のEメールサービスを提供するアプリケーションサーバ、ウェブまたはインターネットサーバ、もしくはデスクトップ共有サーバ、または協調サーバであり得る、アプリケーションを起動してもよい。いくつかの実施形態では、アプリケーションのうちのいずれかは、Citrix Online Division, Inc.(Santa Barbara, California)によって提供されるGoToMeetingTM、WebEx, Inc.(Santa Clara, California)によって提供されるWebExTM、またはMicrosoft Corporation(Redmond, Washington)によって提供されるMicrosoft Office Live Meeting等の任意のタイプのホスト型サービスもしくは製品を備えてもよい。
依然として図1Dを参照すると、ネットワーク環境の実施形態は、監視サーバ106Aを含んでもよい。監視サーバ106Aは、任意のタイプおよび形態の性能監視サービス198を含んでもよい。性能監視サービス198は、データ収集、集約、分析、管理、および報告を含む、監視、測定、および/または管理ソフトウェアならびに/もしくはハードウェアを含んでもよい。一実施形態では、性能監視サービス198は、1つまたはそれを上回る監視エージェント197を含む。監視エージェント197は、クライアント102、サーバ106、またはアプライアンス200、205等のデバイス上で監視、測定、およびデータ収集アクティビティを行うための任意のソフトウェア、ハードウェア、もしくはその組み合わせを含む。いくつかの実施形態では、監視エージェント197は、Visual BasicスクリプトまたはJavascript(登録商標)等の任意のタイプおよび形態のスクリプトを含む。一実施形態では、監視エージェント197は、デバイスの任意のアプリケーションおよび/またはユーザに対して透過的に実行する。いくつかの実施形態では、監視エージェント197は、アプリケーションまたはクライアントに影響を及ぼすことなくインストールおよび動作される。さらに別の実施形態では、監視エージェント197は、アプリケーションまたはデバイスのためのいかなる計装も伴わずにインストールおよび動作される。
いくつかの実施形態では、監視エージェント197は、所定の頻度でデータを監視、測定、および収集する。他の実施形態では、監視エージェント197は、任意のタイプおよび形態のイベントの検出に基づいて、データを監視、測定、ならびに収集する。例えば、監視エージェント197は、ウェブページまたはHTTP応答の受信の要求の検出に応じて、データを収集してもよい。別の実施例では、監視エージェント197は、マウスのクリック等の任意のユーザ入力イベントの検出に応じて、データを収集してもよい。監視エージェント197は、任意の監視、測定、または収集されたデータを監視サービス198に報告もしくは提供してもよい。一実施形態では、監視エージェント197は、スケジュールまたは所定の頻度に従って、情報を監視サービス198に伝送する。別の実施形態では、監視エージェント197は、イベントの検出に応じて、情報を監視サービス198に伝送する。
いくつかの実施形態では、監視サービス198および/または監視エージェント197は、クライアント、サーバ、サーバファーム、アプライアンス200、アプライアンス205、もしくはネットワーク接続等の任意のネットワークリソースまたはネットワークインフラストラクチャ要素の監視ならびに性能測定を行う。一実施形態では、監視サービス198および/または監視エージェント197は、TCPもしくはUDP接続等の任意のトランスポート層接続の監視ならびに性能測定を行う。別の実施形態では、監視サービス198および/または監視エージェント197は、ネットワーク待ち時間を監視して測定する。さらなる一実施形態では、監視サービス198および/または監視エージェント197は、帯域幅利用を監視して測定する。
他の実施形態では、監視サービス198および/または監視エージェント197は、エンドユーザ応答時間を監視して測定する。いくつかの実施形態では、監視サービス198は、アプリケーションの監視および性能測定を行う。別の実施形態では、監視サービス198および/または監視エージェント197は、アプリケーションへの任意のセッションもしくは接続の監視ならびに性能測定を行う。一実施形態では、監視サービス198および/または監視エージェント197は、ブラウザの性能を監視して測定する。別の実施形態では、監視サービス198および/または監視エージェント197は、HTTPベースのトランザクションの性能を監視して測定する。いくつかの実施形態では、監視サービス198および/または監視エージェント197は、ボイスオーバーIP(VoIP)アプリケーションもしくはセッションの性能を監視して測定する。他の実施形態では、監視サービス198および/または監視エージェント197は、ICAクライアントもしくはRDPクライアント等の遠隔表示プロトコルアプリケーションの性能を監視して測定する。さらに別の実施形態では、監視サービス198および/または監視エージェント197は、任意のタイプならびに形態のストリーミングメディアの性能を監視して測定する。なおもさらなる実施形態では、監視サービス198および/または監視エージェント197は、ホスト型アプリケーションもしくはサービスとしてのソフトウェア(SaaS)配信モデルの性能を監視して測定する。
いくつかの実施形態では、監視サービス198および/または監視エージェント197は、アプリケーションに関連する1つまたはそれを上回るトランザクション、要求、もしくは応答の監視ならびに性能測定を行う。他の実施形態では、監視サービス198および/または監視エージェント197は、任意の.NETもしくはJ2EEコール等のアプリケーション層スタックの任意の部分を監視して測定する。一実施形態では、監視サービス198および/または監視エージェント197は、データベースもしくはSQLトランザクションを監視して測定する。さらに別の実施形態では、監視サービス198および/または監視エージェント197は、任意の方法、機能、もしくはアプリケーションプログラミングインターフェース(API)コールを監視して測定する。
一実施形態では、監視サービス198および/または監視エージェント197は、アプライアンス200ならびに/もしくはアプライアンス205等の1つまたはそれを上回るアプライアンスを介したサーバからクライアントへのアプリケーションおよび/またはデータの配信の監視ならびに性能測定を行う。いくつかの実施形態では、監視サービス198および/または監視エージェント197は、仮想化されたアプリケーションの配信の性能を監視して測定する。他の実施形態では、監視サービス198および/または監視エージェント197は、ストリーミングアプリケーションの配信の性能を監視して測定する。別の実施形態では、監視サービス198および/または監視エージェント197は、クライアントへのデスクトップアプリケーションの配信ならびに/もしくはクライアント上のデスクトップアプリケーションの実行の性能を監視して測定する。別の実施形態では、監視サービス198および/または監視エージェント197は、クライアント/サーバアプリケーションの性能を監視して測定する。
一実施形態では、監視サービス198および/または監視エージェント197は、アプリケーション配信システム190のためのアプリケーション性能管理を提供するように設計ならびに構築される。例えば、監視サービス198および/または監視エージェント197は、Citrixプレゼンテーションサーバを介して、アプリケーションの配信の性能を監視、測定、ならびに管理してもよい。本実施例では、監視サービス198および/または監視エージェント197は、個々のICAセッションを監視する。監視サービス198および/または監視エージェント197は、合計およびセッション毎のシステムリソース使用料、ならびにアプリケーションおよびネットワーキング性能を測定してもよい。監視サービス198および/または監視エージェント197は、所与のユーザおよび/またはユーザセッションのためのアクティブなサーバを識別してもよい。いくつかの実施形態では、監視サービス198および/または監視エージェント197は、アプリケーション配信システム190とアプリケーションならびに/もしくはデータベースサーバとの間のバックエンド接続を監視する。監視サービス198および/または監視エージェント197は、ユーザセッションもしくはICAセッションあたりのネットワーク待ち時間、遅延、ならびに量を測定してもよい。
いくつかの実施形態では、監視サービス198および/または監視エージェント197は、ユーザセッションあたりならびに/もしくはプロセスあたりの総メモリ使用量等のアプリケーション配信システム190のためのメモリ使用量を測定して監視する。他の実施形態では、監視サービス198および/または監視エージェント197は、ユーザセッションあたりならびに/もしくはプロセスあたりの総CPU使用量等のアプリケーション配信システム190のCPU使用量を測定して監視する。別の実施形態では、監視サービス198および/または監視エージェント197は、Citrixプレゼンテーションサーバ等のアプリケーション、サーバ、もしくはアプリケーション配信システムにログインするために要求される時間を測定して監視する。一実施形態では、監視サービス198および/または監視エージェント197は、ユーザがアプリケーション、サーバ、もしくはアプリケーション配信システム190にログインされている持続時間を測定して監視する。いくつかの実施形態では、監視サービス198および/または監視エージェント197は、アプリケーション、サーバ、もしくはアプリケーション配信システムセッションのためのアクティブならびに非アクティブなセッションカウントを測定して監視する。さらに別の実施形態では、監視サービス198および/または監視エージェント197は、ユーザセッション待ち時間を測定して監視する。
その上さらなる実施形態では、監視サービス198および/または監視エージェント197は、任意のタイプならびに形態のサーバメトリックを測定して監視する。一実施形態では、監視サービス198および/または監視エージェント197は、システムメモリ、CPU使用量、ならびにディスク記憶装置に関連するメトリックを測定して監視する。別の実施形態では、監視サービス198および/または監視エージェント197は、1秒あたりのページフォールト等のページフォールトに関連するメトリックを測定して監視する。他の実施形態では、監視サービス198および/または監視エージェント197は、ラウンドトリップタイムメトリックを測定して監視する。さらに別の実施形態では、監視サービス198および/または監視エージェント197は、アプリケーションクラッシュ、エラー、ならびに/もしくはハングアップに関連するメトリックを測定して監視する。
いくつかの実施形態では、監視サービス198および監視エージェント198は、Citrix Systems, Inc.(Ft. Lauderdale, Florida)製のEdgeSightと称される製品実施形態のうちのいずれかを含む。別の実施形態では、性能監視サービス198および/または監視エージェント198は、Symphoniq Corporation(Palo Alto, California)製のTrueView製品スイートと称される、製品実施形態の任意の部分を含む。一実施形態では、性能監視サービス198および/または監視エージェント198は、TeaLeaf Technology Inc.(San Francisco, California)製のTeaLeaf CX製品スイートと称される、製品実施形態の任意の部分を含む。他の実施形態では、性能監視サービス198および/または監視エージェント198は、BMC Software, Inc.(Houston, Texas)製のBMC性能マネージャならびにパトロール製品等のビジネスサービス管理製品の任意の部分を含む。
クライアント102、サーバ106、およびアプライアンス200は、任意のタイプならびに形態のネットワーク上で通信し、本明細書に説明される動作を行うことが可能なコンピュータ、ネットワークデバイス、もしくはアプライアンス等の任意のタイプならびに形態のコンピューティングデバイスとして展開され、および/またはその上で実行されてもよい。図1Eおよび1Fは、クライアント102、サーバ106、またはアプライアンス200の実施形態を実践するために有用なコンピューティングデバイス100のブロック図を描写する。図1Eおよび1Fに示されるように、各コンピューティングデバイス100は、中央処理ユニット101と、主要メモリユニット122とを含む。図1Eに示されるように、コンピューティングデバイス100は、視覚表示デバイス124、キーボード126、および/またはマウス等のポインティングデバイス127を含んでもよい。各コンピューティングデバイス100はまた、1つまたはそれを上回る入出力デバイス130a−130b(概して、参照数字130を使用して参照される)および中央処理ユニット101と通信するキャッシュメモリ140等の付加的な随意の要素を含んでもよい。
中央処理ユニット101は、主要メモリユニット122からフェッチされた命令に応答し、それらを処理する、任意の論理回路である。多くの実施形態では、中央処理ユニットは、Intel Corporation(Mountain View, California)製のもの、Motorola Corporation(Schaumburg, Illinois)製のもの、Transmeta Corporation(Santa Clara, California)製のもの、RS/6000プロセッサ、International BusinessMachines(White Plains, NewYork)製のもの、またはAdvanced MicroDevices(Sunnyvale, California)製のもの等のマイクロプロセッサユニットによって提供される。コンピューティングデバイス100は、これらのプロセッサのうちのいずれか、または本明細書に説明されるように動作することが可能な任意の他のプロセッサに基づいてもよい。
主要メモリユニット122は、スタティックランダムアクセスメモリ(SRAM)、バーストSRAMまたは同期バーストSRAM(BSRAM)、ダイナミックランダムアクセスメモリ(DRAM)、高速ページモードDRAM(FPM DRAM)、強化DRAM(EDRAM)、拡張データ出力RAM(EDORAM)、拡張データ出力DRAM(EDO DRAM)、バースト拡張データ出力DRAM(BEDO DRAM)、強化DRAM(EDRAM)、同期DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、ダブルデータレートSDRAM(DDR SDRAM)、強化SDRAM(ESDRAM)、SyncLink DRAM(SLDRAM)、Direct Rambus DRAM(DRDRAM)、または強誘電体RAM(FRAM(登録商標))等のデータを記憶することが可能であり、任意の記憶場所がマイクロプロセッサ121によって直接アクセスすることを可能にする、1つもしくはそれを上回るメモリチップであってもよい。主要メモリ122は、上記のメモリチップのうちのいずれか、または本明細書に説明されるように動作することが可能である任意の他の利用可能なメモリチップに基づいてもよい。図1Eに示される実施形態では、プロセッサ101は、システムバス150を介して主要メモリ122と通信する(以下でさらに詳細に説明される)。図1Fは、プロセッサがメモリポート103を介して主要メモリ122と直接通信する、コンピューティングデバイス100の実施形態を描写する。例えば、図1Fでは、主要メモリ122は、DRDRAMであってもよい。
図1Fは、主要プロセッサ101が、バックサイドバスと称されることもある二次バスを介して、キャッシュメモリ140と直接通信する、実施形態を描写する。他の実施形態では、主要プロセッサ121は、システムバス150を使用してキャッシュメモリ140と通信する。キャッシュメモリ140は、典型的には、主要メモリ122よりも速い応答時間を有し、典型的には、SRAM、BSRAM、またはEDRAMによって提供される。図1Fに示される実施形態では、プロセッサ101は、ローカルシステムバス150を介して種々のI/Oデバイス130と通信する。中央処理ユニット101をI/Oデバイス130のうちのいずれかに接続するために、VESA VLバス、ISAバス、EISAバス、MicroChannel Architecture(MCA)バス、PCIバス、PCI−Xバス、PCI−Expressバス、またはNuBusを含む、種々のバスが使用されてもよい。I/Oデバイスがビデオディスプレイ124である実施形態に関して、プロセッサ101は、ディスプレイ124と通信するためにAdvanced Graphics Port(AGP)を使用してもよい。図1Fは、主要プロセッサ121が、HyperTransport、Rapid I/O、またはInfiniBandを介してI/Oデバイス130bと直接通信する、コンピュータ100の実施形態を描写する。図1Fはまた、ローカルバスおよび直接通信が混合される、実施形態も描写し、プロセッサ101は、I/Oデバイス130aと直接通信しながら、ローカル相互接続バスを使用してI/Oデバイス130bと通信する。
コンピューティングデバイス100は、3.5インチ、5.25インチディスク、またはZIPディスク等のフロッピー(登録商標)ディスクを受容するためのフロッピー(登録商標)ディスクドライブ、CD−ROMドライブ、CD−R/RWドライブ、DVD−ROMドライブ、種々の形式のテープドライブ、USBデバイス、ハードドライブ、またはソフトウェアおよび任意のクライアントエージェント120もしくはその一部等のプログラムをインストールするために好適な任意の他のデバイス等の任意の好適なインストールデバイス116をサポートしてもよい。コンピューティングデバイス100はさらに、オペレーティングシステムおよび他の関連ソフトウェアを記憶するため、ならびにクライアントエージェント120に関連する任意のプログラム等のアプリケーションソフトウェアプログラムを記憶するために、1つまたはそれを上回るハードディスクドライブもしくは独立ディスクの冗長アレイ等の記憶デバイス128を備えてもよい。随意に、インストールデバイス116のうちのいずれかはまた、記憶デバイス128としても使用され得る。加えて、オペレーティングシステムおよびソフトウェアは、ブート可能媒体、例えば、knoppix.netからのGNU/Linux(登録商標)配布として入手可能であるGNU/Linux(登録商標)用のブート可能CDである、KNOPPIX(R)等のブート可能CDから起動されることができる。
さらに、コンピューティングデバイス100は、標準電話回線、LANまたはWANリンク(例えば、802.11、T1、T3、56kb、X.25)、ブロードバンド接続(例えば、ISDN、フレームリレー、ATM)、無線接続、または上記のうちのいずれかもしくは全てのある組み合わせを含むが、それらに限定されない、種々の接続を通して、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、またはインターネットにインターフェース接続するように、ネットワークインターフェース118を含んでもよい。ネットワークインターフェース118は、内蔵ネットワークアダプタ、ネットワークインターフェースカード、PCMCIAネットワークカード、カードバスネットワークアダプタ、無線ネットワークアダプタ、USBネットワークアダプタ、モデム、または通信が可能であり、本明細書に説明される動作を行う、任意のタイプのネットワークにコンピューティングデバイス100をインターフェース接続するために好適な任意の他のデバイスを備えてもよい。
多種多様なI/Oデバイス130a−130nが、コンピューティングデバイス100の中に存在し得る。入力デバイスは、キーボード、マウス、トラックパッド、トラックボール、マイクロホン、ドローイングタブレットを含む。出力デバイスは、ビデオディスプレイ、スピーカ、インクジェットプリンタ、レーザプリンタ、および染料昇華プリンタを含む。I/Oデバイス130は、図1Eに示されるようにI/Oコントローラ123によって制御されてもよい。I/Oコントローラは、キーボード126およびポインティングデバイス127、例えば、マウスもしくは光学ペン等の1つまたはそれを上回るI/Oデバイスを制御してもよい。さらに、I/Oデバイスはまた、コンピューティングデバイス100用の記憶装置128および/またはインストール媒体116を提供してもよい。なおも他の実施形態では、コンピューティングデバイス100は、Twintech Industry, Inc.(Los Alamitos, California)製のUSBフラッシュドライブ系列のデバイス等のハンドヘルドUSB記憶デバイスを受容するUSB接続を提供してもよい。
いくつかの実施形態では、コンピューティングデバイス100は、それぞれ、同一もしくは異なるタイプおよび/または形態であり得る、複数の表示デバイス124a−124nを備える、またはそれらに接続されてもよい。したがって、I/Oデバイス130a−130nおよび/またはI/Oコントローラ123のうちのいずれかは、コンピューティングデバイス100による複数の表示デバイス124a−124nの接続および使用をサポートする、有効にする、または提供するように、任意のタイプならびに/もしくは形態の好適なハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせを備えてもよい。例えば、コンピューティングデバイス100は、表示デバイス124a−124nをインターフェース接続する、通信する、接続する、または別様に使用するように、任意のタイプおよび/または形態のビデオアダプタ、ビデオカード、ドライバ、ならびに/もしくはライブラリを含んでもよい。一実施形態では、ビデオアダプタは、複数の表示デバイス124a−124nにインターフェース接続するように、複数のコネクタを備えてもよい。他の実施形態では、コンピューティングデバイス100は、複数のビデオアダプタを含んでもよく、各ビデオアダプタは、表示デバイス124a−124nのうちの1つまたはそれを上回るものに接続される。いくつかの実施形態では、コンピューティングデバイス100のオペレーティングシステムの任意の部分が、複数の表示デバイス124a−124nを使用するために構成されてもよい。他の実施形態では、表示デバイス124a−124nのうちの1つまたはそれを上回るものは、例えば、ネットワークを介して、コンピューティングデバイス100に接続されるコンピューティングデバイス100aおよび100b等の1つまたはそれを上回る他のコンピューティングデバイスによって提供されてもよい。これらの実施形態は、コンピューティングデバイス100用の第2の表示デバイス124aとして別のコンピュータの表示デバイスを使用するように設計および構築される、任意のタイプのソフトウェアを含んでもよい。当業者は、コンピューティングデバイス100が複数の表示デバイス124a−124nを有するように構成されてもよい、種々の方法および実施形態を認識して理解するであろう。
さらなる実施形態では、I/Oデバイス130は、システムバス150と、USBバス、Apple Desktopバス、RS−232シリアル接続、SCSIバス、FireWireバス、FireWire 800バス、イーサネット(登録商標)バス、AppleTalkバス、ギガビットイーサネット(登録商標)バス、非同期転送モードバス、HIPPIバス、スーパーHIPPIバス、SerialPlusバス、SCI/LAMPバス、FibreChannelバス、またはシリアルアタッチド小型コンピュータシステムインターフェースバス等の外部通信バスとの間のブリッジ170であってもよい。
図1Eおよび1Fで描写される種類のコンピューティングデバイス100は、典型的には、タスクのスケジューリングおよびシステムリソースへのアクセスを制御する、オペレーティングシステムの制御下で動作する。コンピューティングデバイス100は、Microsoft(R) Windows(登録商標)オペレーティングシステムのバージョンのうちのいずれか、Unix(登録商標)およびLinux(登録商標)オペレーティングシステムの異なるリリース、Macintoshコンピュータ用のMac OS(R)の任意のバージョン、任意の組み込みオペレーティングシステム、任意のリアルタイムオペレーティングシステム、任意のオープンソースオペレーティングシステム、任意の専有オペレーティングシステム、モバイルコンピューティングデバイス用の任意のオペレーティングシステム、またはコンピューティングデバイス上で起動し、本明細書に説明される動作を行うことが可能な任意の他のオペレーティングシステム等の任意のオペレーティングシステムを起動することができる。典型的なオペレーティングシステムは、とりわけ、全てMicrosoft Corporation(Redmond, Washington)製である、WINDOWS(登録商標) 3.x、WINDOWS(登録商標) 95、WINDOWS(登録商標) 98、WINDOWS(登録商標) 2000、WINDOWS(登録商標) NT 3.51、WINDOWS(登録商標) NT 4.0、WINDOWS(登録商標) CE、WINDOWS(登録商標) XP、WINDOWS(登録商標) 7、WINDOWS(登録商標) 8、およびWINDOWS(登録商標) SERVER 2012、Apple Computer(Cupertino, California)製のMacOS、International Business Machines(Armonk, New York)製のOS/2、ならびにCaldera Corp.(Salt Lake City, Utah)によって配布される無料で入手可能なオペレーティングシステムであるLinux(登録商標)、もしくは任意のタイプおよび/または形態のUnix(登録商標)オペレーティングシステムを含む。
他の実施形態では、コンピューティングデバイス100は、デバイスと一致する、異なるプロセッサ、オペレーティングシステム、および入力デバイスを有してもよい。例えば、一実施形態では、コンピュータ100は、Palm, Inc製のTreo 180、270、1060、600、または650スマートフォンである。本実施形態では、Treoスマートフォンは、PalmOSオペレーティングシステムの制御下で動作され、スタイラス入力デバイスならびに5方向ナビゲータデバイスを含む。また、コンピューティングデバイス100は、任意のワークステーション、デスクトップコンピュータ、ラップトップまたはノートブックコンピュータ、サーバ、ハンドヘルドコンピュータ、携帯電話、任意の他のコンピュータ、または通信が可能であり、本明細書に説明される動作を行うために十分なプロセッサ能力およびメモリ容量を有する、他の形態のコンピューティングもしくは電気通信デバイスであることができる。
図1Gに示されるように、コンピューティングデバイス100は、複数のプロセッサを備えてもよく、命令の同時実行のため、または1つよりも多くのデータについての1つの命令の同時実行のための機能性を提供してもよい。いくつかの実施形態では、コンピューティングデバイス100は、1つまたはそれを上回るコアを伴う並列プロセッサを備えてもよい。これらの実施形態のうちの1つでは、コンピューティングデバイス100は、単一のグローバルアドレス空間としての全ての利用可能なメモリにアクセスする、複数のプロセッサおよび/または複数のプロセッサコアを伴う共有メモリ並列デバイスである。これらの実施形態のうちの別のものでは、コンピューティングデバイス100は、それぞれローカルメモリのみにアクセスする、複数のプロセッサを伴う分散型メモリ並列デバイスである。これらの実施形態のうちのなおも別のものでは、コンピューティングデバイス100は、共有される、あるメモリと、特定のプロセッサまたはプロセッサのサブセットのみによってアクセスされることができる、あるメモリとの両方を有する。これらの実施形態のうちのなおもさらに別のものでは、マルチコアマイクロプロセッサ等のコンピューティングデバイス100は、2つまたはそれを上回る独立プロセッサを、単一のパッケージ、多くの場合、単一の集積回路(IC)に合体させる。これらの実施形態のうちのさらに別のものでは、コンピューティングデバイス100は、CELL BROADBAND ENGINEアーキテクチャを有し、Powerプロセッサ要素と、複数の相乗的処理要素とを含む、チップを含み、Powerプロセッサ要素および複数の相乗的処理要素は、要素相互接続バスと称され得る、内部高速バスによってともに連結される。
いくつかの実施形態では、プロセッサは、複数のデータについての単一の命令を同時に実行するための機能性(SIMD)を提供する。他の実施形態では、プロセッサは、複数のデータについての複数の命令を同時に実行するための機能性(MIMD)を提供する。なおも他の実施形態では、プロセッサは、単一のデバイスでSIMDおよびMIMDコアの任意の組み合わせを使用してもよい。
いくつかの実施形態では、コンピューティングデバイス100は、グラフィックス処理ユニットを備えてもよい。図1Hで描写される、これらの実施形態のうちの1つでは、コンピューティングデバイス100は、少なくとも1つの中央処理ユニット101と、少なくとも1つのグラフィックス処理ユニットとを含む。これらの実施形態のうちの別のものでは、コンピューティングデバイス100は、少なくとも1つの並列処理ユニットと、少なくとも1つのグラフィックス処理ユニットとを含む。これらの実施形態のうちのなおも別のものでは、コンピューティングデバイス100は、任意のタイプの複数の処理ユニットを含み、複数の処理ユニットのうちの1つは、グラフィックス処理ユニットを備える。
いくつかの実施形態では、第1のコンピューティングデバイス100、例えば、サーバ106aは、クライアントコンピューティングデバイス100、例えば、クライアント102aのユーザの代わりにアプリケーションを実行する。他の実施形態では、コンピューティングデバイス100、例えば、サーバ106aは、その内側でアプリケーションが、ユーザまたはクライアントコンピューティングデバイス100、例えば、クライアント102aの代わりに実行する、実行セッションを提供する、仮想マシンを実行する。これらの実施形態のうちの1つでは、実行セッションは、ホスト型デスクトップセッションである。これらの実施形態のうちの別のものでは、コンピューティングデバイス100は、端末サービスセッションを実行する。端末サービスセッションは、ホスト型デスクトップ環境を提供してもよい。これらの実施形態のうちのなおも別のものでは、実行セッションは、アプリケーション、複数のアプリケーション、デスクトップアプリケーション、および1つまたはそれを上回るアプリケーションが実行し得るデスクトップアプリケーションのうちの1つもしくはそれを上回るものを備え得る、コンピュータ環境へのアクセスを提供する。
B.アプライアンスアーキテクチャ
図2Aは、アプライアンス200の例示的実施形態を図示する。図2Aのアプライアンス200のアーキテクチャは、例証のみとして提供され、限定的であることを意図していない。図2に示されるように、アプライアンス200は、ハードウェア層206と、ユーザ空間202およびカーネル空間204に分割されるソフトウェア層とを備える。
ハードウェア層206は、カーネル空間204およびユーザ空間202内のプログラムならびにサービスが実行される、ハードウェア要素を提供する。ハードウェア層206はまた、カーネル空間204およびユーザ空間202内のプログラムならびにサービスがアプライアンス200に対して内部および外部の両方でデータを通信することを可能にする、構造ならびに要素も提供する。図2に示されるように、ハードウェア層206は、ソフトウェアプログラムおよびサービスを実行するための処理ユニット262と、ソフトウェアおよびデータを記憶するためのメモリ264と、ネットワークを経由してデータを伝送および受信するためのネットワークポート266と、ネットワークを経由して伝送および受信されるデータのセキュアなソケット層処理に関連する機能を果たすための暗号化プロセッサ260とを含む。いくつかの実施形態では、中央処理ユニット262は、単一のプロセッサにおいて暗号化プロセッサ260の機能を果たしてもよい。加えて、ハードウェア層206は、処理ユニット262および暗号化プロセッサ260のそれぞれのための複数のプロセッサを備えてもよい。プロセッサ262は、図1Eおよび1Fに関連して上記で説明されるプロセッサ101のうちのいずれかを含んでもよい。例えば、一実施形態では、アプライアンス200は、第1のプロセッサ262と、第2のプロセッサ262’とを備える。他の実施形態では、プロセッサ262または262’は、マルチコアプロセッサを備える。
アプライアンス200のハードウェア層206は、概して、暗号化プロセッサ260とともに図示されるが、プロセッサ260は、セキュアソケットレイヤ(SSL)またはトランスポート層セキュリティ(TLS)プロトコル等の任意の暗号化プロトコルに関連する機能を果たすためのプロセッサであってもよい。いくつかの実施形態では、プロセッサ260は、汎用プロセッサ(GPP)であってもよく、さらなる実施形態では、任意のセキュリティ関連プロトコルの処理を行うための実行可能命令を有してもよい。
アプライアンス200のハードウェア層206は、図2のある要素とともに図示されるが、アプライアンス200のハードウェア部分またはコンポーネントは、図1Eおよび1Fと併せて本明細書に図示ならびに議論されるコンピューティングデバイス100等のコンピューティングデバイスの任意のタイプおよび形態の要素、ハードウェア、またはソフトウェアを備えてもよい。いくつかの実施形態では、アプライアンス200は、サーバ、ゲートウェイ、ルータ、スイッチ、ブリッジ、または他のタイプのコンピューティングもしくはネットワークデバイスを備え、それと関連付けられる任意のハードウェアおよび/またはソフトウェア要素を有してもよい。
アプライアンス200のオペレーティングシステムは、利用可能なシステムメモリをカーネル空間204およびユーザ空間204の中へ配分、管理、または別様に分離する。例示的ソフトウェアアーキテクチャ200では、オペレーティングシステムは、任意のタイプおよび/または形態のUnix(登録商標)オペレーティングシステムであってもよいが、本ソリューションは、そのように限定されない。したがって、アプライアンス200は、Microsoft(R)Windows(登録商標)オペレーティングシステムのバージョンのうちのいずれか、Unix(登録商標)およびLinux(登録商標)オペレーティングシステムの異なるリリース、Macintoshコンピュータ用のMacOS(R)の任意のバージョン、任意の組み込みオペレーティングシステム、任意のネットワークオペレーティングシステム、任意のリアルタイムオペレーティングシステム、任意のオープンソースオペレーティングシステム、任意の専有オペレーティングシステム、モバイルコンピューティングデバイスもしくはネットワークデバイス用の任意のオペレーティングシステム、またはアプライアンス200上で起動し、本明細書に説明される動作を行うことが可能な任意の他のオペレーティングシステム等の任意のオペレーティングシステムを起動することができる。
カーネル空間204は、任意のデバイスドライバ、カーネル拡張、または他のカーネル関連ソフトウェアを含む、カーネル230を起動するために留保される。当業者に公知であるように、カーネル230は、オペレーティングシステムのコアであり、アプリケーション104のリソースおよびハードウェア関連要素のアクセス、制御、ならびに管理を提供する。アプライアンス200の実施形態によると、カーネル空間204はまた、その利益が本明細書でさらに詳細に説明される、統合キャッシュと称されることもある、キャッシュマネージャ232と連動して作動するいくつかのネットワークサービスまたはプロセスも含む。加えて、カーネル230の実施形態は、デバイス200によってインストール、構成、または別様に使用されるオペレーティングシステムの実施形態に依存するであろう。
一実施形態では、デバイス200は、クライアント102および/またはサーバ106と通信するために、TCP/IPベースのスタック等の1つのネットワークスタック267を備える。一実施形態では、ネットワークスタック267は、ネットワーク104等の第1のネットワークおよび第2のネットワーク104’と通信するために使用される。いくつかの実施形態では、デバイス200は、クライアント102のTCP接続等の第1のトランスポート層接続を終了させ、クライアント102によって使用するためにサーバ106への第2のトランスポート層接続を確立し、例えば、第2のトランスポート層接続は、アプライアンス200およびサーバ106において終了される。第1および第2のトランスポート層接続は、単一のネットワークスタック267を介して確立されてもよい。他の実施形態では、デバイス200は、複数のネットワークスタック、例えば、第1のスタック267と、第2のスタック267とを備えてもよく、第1のトランスポート層接続は、1つのネットワークスタック267において、第2のトランスポート層接続は、第2のネットワークスタック267上で、確立または終了されてもよい。例えば、1つのネットワークスタックは、第1のネットワーク上でネットワークパケットを受信および伝送するため、別のネットワークスタックは、第2のネットワーク上でネットワークパケットを受信および伝送するためのものであってもよい。一実施形態では、ネットワークスタック267は、アプライアンス200による伝送のために1つまたはそれを上回るネットワークパケットを待ち行列に入れるためのバッファ243を備える。
図2Aに示されるように、カーネル空間204は、キャッシュマネージャ232と、高速層2−7統合パケットエンジン240と、暗号化エンジン234と、ポリシエンジン236と、マルチプロトコル圧縮論理238とを含む。ユーザ空間202の代わりにカーネル空間204またはカーネルモードでこれらのコンポーネントもしくはプロセス232、240、234、236、および238を起動することは、単独で、ならびに組み合わせて、これらのコンポーネントのそれぞれの性能を改良する。カーネル動作は、これらのコンポーネントまたはプロセス232、240、234、236、および238が、デバイス200のオペレーティングシステムのコアアドレス空間内で起動することを意味する。例えば、カーネルモードで暗号化エンジン234を起動することは、暗号化および暗号解読動作をカーネルに移動させ、それによって、カーネルモードにおけるメモリ空間またはカーネルスレッドとユーザモードにおけるメモリ空間またはスレッドとの間の移行の数を削減することによって、暗号化性能を改良する。例えば、カーネルモードで取得されるデータは、カーネルレベルデータ構造からユーザレベルデータ構造まで等、ユーザモードで起動するプロセスまたはスレッドにパスもしくはコピーされる必要がなくなり得る。別の側面では、カーネルモードとユーザモードとの間のコンテキスト切替の数も削減される。加えて、コンポーネントまたはプロセス232、240、234、236、および238のうちのいずれかの同期化およびその間の通信が、カーネル空間204内でより効率的に行われることができる。
いくつかの実施形態では、コンポーネント232、240、234、236、および238の任意の部分が、カーネル空間204内で起動または動作してもよい一方で、これらのコンポーネント232、240、234、236、および238の他の部分は、ユーザ空間202内で起動または動作してもよい。一実施形態では、アプライアンス200は、1つまたはそれを上回るネットワークパケットの任意の部分、例えば、クライアント102からの要求またはサーバ106からの応答を備える、ネットワークパケットへのアクセスを提供する、カーネルレベルデータ構造を使用する。いくつかの実施形態では、カーネルレベルデータ構造は、ネットワークスタック267へのトランスポート層ドライバインターフェースまたはフィルタを介して、パケットエンジン240によって取得されてもよい。カーネルレベルデータ構造は、ネットワークスタック267、ネットワークトラフィック、またはネットワークスタック267によって受信もしくは伝送されるパケットに関連するカーネル空間204を介してアクセス可能である、任意のインターフェースおよび/またはデータを備えてもよい。他の実施形態では、カーネルレベルデータ構造は、コンポーネントまたはプロセスの所望の動作を行うために、コンポーネントまたはプロセス232、240、234、236、および238のうちのいずれかによって使用されてもよい。一実施形態では、コンポーネント232、240、234、236、および238が、カーネルレベルデータ構造を使用するときにカーネルモード204で起動している一方で、別の実施形態では、コンポーネント232、240、234、236、および238は、カーネルレベルデータ構造を使用するときにユーザモードで起動している。いくつかの実施形態では、カーネルレベルデータ構造は、第2のカーネルレベルデータ構造または任意の所望のユーザレベルデータ構造にコピーもしくはパスされてもよい。
キャッシュマネージャ232は、発信サーバ106によって供給される、オブジェクトまたは動的に生成されたオブジェクト等の任意のタイプおよび形態のコンテンツのキャッシュアクセス、制御、ならびに管理を提供する、ソフトウェア、ハードウェア、もしくはソフトウェアおよびハードウェアの任意の組み合わせを備えてもよい。キャッシュマネージャ232によって処理および記憶されるデータ、オブジェクト、またはコンテンツは、マークアップ言語等の任意の形式である、もしくは任意のプロトコルを介して通信される、データを備えてもよい。いくつかの実施形態では、キャッシュマネージャ232は、元のデータが、キャッシュメモリ要素を読み取ることに対して、フェッチ、計算、または別様に取得するためにより長いアクセス時間を要求し得る、他の場所に記憶された元のデータ、または前もって計算、生成、もしくは伝送されたデータを複製する。いったんデータがキャッシュメモリ要素に記憶されると、元のデータを再フェッチまたは再計算するのではなく、キャッシュされたコピーにアクセスし、それによって、アクセス時間を短縮することによって、将来の使用が行われることができる。いくつかの実施形態では、キャッシュメモリ要素は、デバイス200のメモリ264の中にデータオブジェクトを備えてもよい。他の実施形態では、キャッシュメモリ要素は、メモリ264よりも速いアクセス時間を有する、メモリを備えてもよい。別の実施形態では、キャッシュメモリ要素は、ハードディスクの一部等のデバイス200の任意のタイプおよび形態の記憶要素を備えてもよい。いくつかの実施形態では、処理ユニット262は、キャッシュマネージャ232によって使用するためのキャッシュメモリを提供してもよい。その上さらなる実施形態では、キャッシュマネージャ232は、データ、オブジェクト、および他のコンテンツをキャッシュするためのメモリ、記憶装置、または処理ユニットの任意の部分ならびに組み合わせを使用してもよい。
さらに、キャッシュマネージャ232は、本明細書に説明されるアプライアンス200の技法の任意の実施形態を行う任意の論理、機能、ルール、または動作を含む。例えば、キャッシュマネージャ232は、無効化時間期間の満了に基づいて、またはクライアント102もしくはサーバ106からの無効化コマンドの受信に応じて、オブジェクトを無効化する論理または機能性を含む。いくつかの実施形態では、キャッシュマネージャ232は、カーネル空間204内で、他の実施形態では、ユーザ空間202内で実行する、プログラム、サービス、プロセス、またはタスクとして動作してもよい。一実施形態では、キャッシュマネージャ232の第1の部分が、ユーザ空間202内で実行する一方で、第2の部分は、カーネル空間204内で実行する。いくつかの実施形態では、キャッシュマネージャ232は、任意のタイプの汎用プロセッサ(GPP)、またはフィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、もしくは特定用途向け集積回路(ASIC)等の任意の他のタイプの集積回路を備えることができる。
ポリシエンジン236は、例えば、知的統計エンジンまたは他のプログラマブルアプリケーションを含んでもよい。一実施形態では、ポリシエンジン236は、ユーザがキャッシングポリシを識別、規定、定義、または構成することを可能にする構成機構を提供する。ポリシエンジン236はまた、いくつかの実施形態では、ユーザ選択キャッシングポリシ決定を有効にするように、ルックアップテーブルまたはハッシュテーブル等のデータ構造をサポートするメモリへのアクセスも有する。他の実施形態では、ポリシエンジン236は、セキュリティ、ネットワークトラフィック、ネットワークアクセス、圧縮、またはアプライアンス200によって行われる任意の他の機能もしくは動作のアクセス、制御、および管理に加えて、アプライアンス200によってキャッシュされているオブジェクト、データ、またはコンテンツのアクセス、制御、および管理を判定して提供する、任意の論理、ルール、機能、もしくは動作を備えてもよい。具体的キャッシングポリシのさらなる実施例が、本明細書でさらに説明される。
暗号化エンジン234は、SSLまたはTLS等の任意のセキュリティ関連プロトコル、もしくはそれに関連する任意の機能の処理をハンドリングするための任意の論理、ビジネスルール、機能、または動作を備える。例えば、暗号化エンジン234は、アプライアンス200を介して通信されるネットワークパケットまたはその任意の部分を暗号化および解読する。暗号化エンジン234はまた、クライアント102a−102n、サーバ106a−106n、またはアプライアンス200の代わりにSSLもしくはTLS接続を設定または確立してもよい。したがって、暗号化エンジン234は、SSL処理のオフローディングおよび加速を提供する。一実施形態では、暗号化エンジン234は、クライアント102a−102nとサーバ106a−106nとの間に仮想プライベートネットワークを提供するために、トンネリングプロトコルを使用する。いくつかの実施形態では、暗号化エンジン234は、暗号化プロセッサ260と通信する。他の実施形態では、暗号化エンジン234は、暗号化プロセッサ260上で起動する実行可能命令を備える。
マルチプロトコル圧縮エンジン238は、デバイス200のネットワークスタック267によって使用されるプロトコルのうちのいずれか等のネットワークパケットの1つまたはそれを上回るプロトコルを圧縮するための任意の論理、ビジネスルール、機能、もしく動作を備える。一実施形態では、マルチプロトコル圧縮エンジン238は、クライアント102a−102nとサーバ106a−106nとの間で双方向性に、メッセージングアプリケーションプログラミングインターフェース(MAPI)(Eメール)、ファイル転送プロトコル(FTP)、ハイパーテキスト転送プロトコル(HTTP)、共通インターネットファイルシステム(CIFS)プロトコル(ファイル転送)、独立コンピューティングアーキテクチャ(ICA)プロトコル、遠隔デスクトッププロトコル(RDP)、無線アプリケーションプロトコル(WAP)、モバイルIPプロトコル、およびボイスオーバーIP(VoIP)プロトコルを含む、任意のTCP/IPベースのプロトコルを圧縮する。他の実施形態では、マルチプロトコル圧縮エンジン238は、ハイパーテキストマークアップ言語(HTML)ベースのプロトコルの圧縮を提供し、いくつかの実施形態では、拡張マークアップ言語(XML)等の任意のマークアップ言語の圧縮を提供する。一実施形態では、マルチプロトコル圧縮エンジン238は、アプライアンス間通信のために設計される任意のプロトコル等の任意の高性能プロトコルの圧縮を提供する。別の実施形態では、マルチプロトコル圧縮エンジン238は、トランザクションTCP(T/TCP)、選択確認応答を伴うTCP(TCP−SACK)、大型ウィンドウを伴うTCP(TCP−LW)、TCP−Vegasプロトコル等の輻輳予測プロトコル、およびTCPスプーフィングプロトコル等の修正されたトランスポート制御プロトコルを使用して、任意の通信の任意のペイロードまたは任意の通信を圧縮する。
したがって、マルチプロトコル圧縮エンジン238は、デスクトップクライアント、例えば、Oracle、SAP、およびSiebelのような頻用されている企業アプリケーションによって起動される任意のクライアント等のMicrosoft Outlookならびに非ウェブシンクライアント、およびPocket PCまたはAndroid等のモバイルクライアントさえも介して、アプリケーションにアクセスするユーザのために性能を加速する。いくつかの実施形態では、マルチプロトコル圧縮エンジン238は、カーネルモード204内で実行し、ネットワークスタック267にアクセスするパケット処理エンジン240と統合することによって、任意のアプリケーション層プロトコル等のTCP/IPプロトコルによって搬送されるプロトコルのうちのいずれかを圧縮することができる。
概して、パケット処理エンジンまたはパケットエンジンとも称される、高速層2−7統合パケットエンジン240は、ネットワークポート266を介してアプライアンス200によって受信および伝送されるパケットのカーネルレベル処理を管理する責任がある。高速層2−7統合パケットエンジン240は、ネットワークパケットの受信またはネットワークパケットの伝送のため等、処理中に1つまたはそれを上回るネットワークパケットを待ち行列に入れるためのバッファを備えてもよい。加えて、高速層2−7統合パケットエンジン240は、ネットワークポート266を介してネットワークパケットを送信および受信するように、1つまたはそれを上回るネットワークスタック267と通信する。高速層2−7統合パケットエンジン240は、暗号化エンジン234、キャッシュマネージャ232、ポリシエンジン236、およびマルチプロトコル圧縮論理238と連動して作動する。具体的には、暗号化エンジン234は、パケットのSSL処理を行うように構成され、ポリシエンジン236は、要求レベルコンテンツ切替および要求レベルキャッシュリダイレクト等のトラフィック管理に関連する機能を果たすように構成され、マルチプロトコル圧縮論理238は、データの圧縮および解凍に関連する機能を果たすように構成される。
高速層2−7統合パケットエンジン240は、パケット処理タイマ242を含む。一実施形態では、パケット処理タイマ242は、着信、すなわち、受信された、または発信、すなわち、伝送されたネットワークパケットの処理をトリガするように、1つもしくはそれを上回る時間間隔を提供する。いくつかの実施形態では、高速層2−7統合パケットエンジン240は、タイマ242に応答してネットワークパケットを処理する。パケット処理タイマ242は、時間関連イベント、間隔、または発生を通知、トリガ、もしくは通信するように、任意のタイプおよび形態の信号をパケットエンジン240に提供する。多くの実施形態では、パケット処理タイマ242は、例えば、100ミリ秒、50ミリ秒、または25ミリ秒等、ほぼミリ秒単位で動作する。例えば、いくつかの実施形態では、パケット処理タイマ242が、時間間隔を提供する、または別様にネットワークパケットを10ミリ秒時間間隔で高速層2−7統合パケットエンジン240によって処理させる一方で、他の実施形態では、5ミリ秒時間間隔で、依然としてさらに、さらなる実施形態では、3、2、または1ミリ秒ほどの短さの時間間隔で処理させる。高速層2−7統合パケットエンジン240は、動作中に暗号化エンジン234、キャッシュマネージャ232、ポリシエンジン236、およびマルチプロトコル圧縮エンジン238とインターフェースをとられ、統合され、または通信してもよい。したがって、暗号化エンジン234、キャッシュマネージャ232、ポリシエンジン236、およびマルチプロトコル圧縮論理238の論理、機能、または動作のうちのいずれかが、パケット処理タイマ242および/またはパケットエンジン240に応答して行われてもよい。したがって、暗号化エンジン234、キャッシュマネージャ232、ポリシエンジン236、およびマルチプロトコル圧縮論理238の論理、機能、または動作のうちのいずれかは、パケット処理タイマ242を介して提供される時間間隔の粒度で、例えば、10ミリ秒未満またはそれに等しい時間間隔で行われてもよい。例えば、一実施形態では、キャッシュマネージャ232は、高速層2−7統合パケットエンジン240および/またはパケット処理タイマ242に応答して、任意のキャッシュされたオブジェクトの無効化を行ってもよい。別の実施形態では、キャッシュされたオブジェクトの満了または無効化時間は、10ミリ秒毎等のパケット処理タイマ242の時間間隔と同程度の粒度に設定されることができる。
カーネル空間204と対照的に、ユーザ空間202は、別様にユーザモードで起動するユーザモードアプリケーションまたはプログラムによって使用される、オペレーティングシステムのメモリ領域もしくは部分である。ユーザモードアプリケーションは、カーネル空間204に直接アクセスしなくてもよく、カーネルサービスにアクセスするためにサービスコールを使用する。図2Aに示されるように、アプライアンス200のユーザ空間202は、グラフィカルユーザインターフェース(GUI)210と、コマンドラインインターフェース(CLI)212と、シェルサービス214と、健全性監視プログラム216と、デーモンサービス218とを含む。GUI210およびCLI212は、システム管理者または他のユーザが、アプライアンス200のオペレーティングシステムを介して等、アプライアンス200と相互作用し、その動作を制御することができる、手段を提供する。GUI210またはCLI212は、ユーザ空間202もしくはカーネル空間204内で起動するコードを備えることができる。GUI210は、任意のタイプおよび形態のグラフィカルユーザインターフェースであってもよく、テキスト、グラフィカルを介して、または別様にブラウザ等の任意のタイプのプログラムもしくはアプリケーションによって、提示されてもよい。CLI212は、オペレーティングシステムによって提供されるコマンドライン等の任意のタイプおよび形態のコマンドラインまたはテキストベースのインターフェースであってもよい。例えば、CLI212は、ユーザがオペレーティングシステムと相互作用することを可能にするツールである、シェルを備えてもよい。いくつかの実施形態では、CLI212は、bash、csh、tcsh、またはkshタイプシェルを介して提供されてもよい。シェルサービス214は、GUI210および/またはCLI212を介したユーザによるアプライアンス200もしくはオペレーティングシステムとの相互作用をサポートする、プログラム、サービス、タスク、プロセス、または実行可能命令を備える。
健全性監視プログラム216は、ネットワークシステムが適切に機能していることと、ユーザがネットワークを経由して要求されたコンテンツを受信することとを監視し、チェックし、報告し、確実にするために使用される。健全性監視プログラム216は、アプライアンス200の任意のアクティビティを監視するための論理、ルール、機能、または動作を提供する、1つもしくはそれを上回るプログラム、サービス、タスク、プロセス、または実行可能命令を備える。いくつかの実施形態では、健全性監視プログラム216は、アプライアンス200を介してパスされる任意のネットワークトラフィックを傍受して点検する。他の実施形態では、健全性監視プログラム216は、任意の好適な手段および/または機構によって、以下、すなわち、暗号化エンジン234、キャッシュマネージャ232、ポリシエンジン236、マルチプロトコル圧縮論理238、パケットエンジン240、デーモンサービス218、ならびにシェルサービス214のうちの1つもしくはそれを上回るものとインターフェースをとる。したがって、健全性監視プログラム216は、アプライアンス200の任意の部分の状態、ステータス、または健全性を判定するように、任意のアプリケーションプログラミングインターフェース(API)を呼び出してもよい。例えば、健全性監視プログラム216は、プログラム、プロセス、サービス、またはタスクがアクティブであり、現在起動しているかどうかをチェックするように、周期的基準でステータス問い合わせをpingもしくは送信してもよい。別の実施例では、健全性監視プログラム216は、アプライアンス200の任意の部分と任意の条件、ステータス、またはエラーを判定するように、任意のプログラム、プロセス、サービス、もしくはタスクによって提供される、任意のステータス、エラー、または履歴ログをチェックしてもよい。
デーモンサービス218は、連続的に、またはバックグラウンドで起動し、アプライアンス200によって受信される周期的サービス要求をハンドリングする、プログラムである。いくつかの実施形態では、デーモンサービスは、適宜、別のデーモンサービス218等の他のプログラムまたはプロセスに要求を転送してもよい。当業者に公知であるように、デーモンサービス218は、ネットワーク制御等の連続的または周期的なシステム全体の機能を果たすように、もしくは任意の所望のタスクを行うように、無人で起動してもよい。いくつかの実施形態では、1つまたはそれを上回るデーモンサービス218は、ユーザ空間202内で起動し、いくつかの実施形態では、1つまたはそれを上回るデーモンサービス218は、カーネル空間内で起動する。
ここで図2Bを参照すると、アプライアンス200の別の実施形態が描写されている。要するに、アプライアンス200は、以下のサービス、機能性、または動作、すなわち、SSL VPNコネクティビティ280、切替/負荷平衡284、ドメイン名サービス解決286、加速288、および1つまたはそれを上回るクライアント102と1つまたはそれを上回るサーバ106との間の通信用のアプリケーションファイアウォール290のうちの1つもしくはそれを上回るものを提供する。サーバ106はそれぞれ、1つまたはそれを上回るネットワーク関連サービス270a−270n(サービス270と称される)を提供してもよい。例えば、サーバ106は、httpサービス270を提供してもよい。アプライアンス200は、vServer、VIPサーバ、または単にVIP275a−275nと称される(本明細書ではvServer275とも称される)、1つもしくはそれを上回る仮想サーバまたは仮想インターネットプロトコルサーバを備える。vServer275は、アプライアンス200の構成および動作に従って、クライアント102とサーバ106との間の通信を受信、傍受、または別様に処理する。
vServer275は、ソフトウェア、ハードウェア、またはソフトウェアおよびハードウェアの任意の組み合わせを備えてもよい。vServer275は、アプライアンス200においてユーザモード202、カーネルモード204、またはそれらの任意の組み合わせで動作する、任意のタイプおよび形態のプログラム、サービス、タスク、プロセス、もしくは実行可能命令を備えてもよい。vServer275は、SSL VPN280、切替/負荷平衡284、ドメイン名サービス解決286、加速288、およびアプリケーションファイアウォール290等の本明細書に説明される技法の任意の実施形態を行う任意の論理、機能、ルール、または動作を含む。いくつかの実施形態では、vServer275は、サーバ106のサービス270への接続を確立する。サービス270は、アプライアンス200、クライアント102、またはvServer275に接続し、それと通信することが可能な任意のプログラム、アプリケーション、プロセス、タスク、もしくは実行可能命令のセットを備えてもよい。例えば、サービス270は、ウェブサーバ、httpサーバ、ftp、Eメール、またはデータベースサーバを備えてもよい。いくつかの実施形態では、サービス270は、Eメール、データベース、または企業アプリケーション等のアプリケーションのための通信をリッスン、受信、および/または送信するためのデーモンプロセスもしくはネットワークドライバである。いくつかの実施形態では、サービス270は、具体的IPアドレス、またはIPアドレスおよびポート上で通信してもよい。
いくつかの実施形態では、vServer275は、ポリシエンジン236の1つまたはそれを上回るポリシを、クライアント102とサーバ106との間のネットワーク通信に適用する。一実施形態では、ポリシは、vServer275と関連付けられる。別の実施形態では、ポリシは、ユーザまたはユーザのグループに基づく。さらに別の実施形態では、ポリシは、大域的であり、1つまたはそれを上回るvServer275a−275n、およびアプライアンス200を介して通信する任意のユーザもしくはユーザのグループに適用される。いくつかの実施形態では、ポリシエンジン236のポリシは、インターネットプロトコルアドレス、ポート、プロトコルタイプ、ヘッダ、またはパケット内のフィールド等の通信の任意のコンテンツ、もしくはユーザ、ユーザのグループ、vServer275、トランスポート層接続、および/またはクライアント102もしくはサーバ106の識別または属性等の通信のコンテキストに基づいて、ポリシが適用される条件を有する。
他の実施形態では、アプライアンス200は、サーバ106からコンピュータ環境15、アプリケーション、および/またはデータファイルにアクセスするための遠隔ユーザまたは遠隔クライアント102の認証ならびに/もしくは承認を判定するように、ポリシエンジン236と通信する、またはインターフェースをとる。別の実施形態では、アプライアンス200は、アプリケーション配信システム190にコンピュータ環境15、アプリケーション、および/またはデータファイルのうちの1つもしくはそれを上回るものを配信させるための遠隔ユーザまたは遠隔クライアント102の認証ならびに/もしくは承認を判定するように、ポリシエンジン236と通信する、またはインターフェースをとる。さらに別の実施形態では、アプライアンス200は、ポリシエンジン236の認証および/または遠隔ユーザもしくは遠隔クライアント102の承認に基づいて、VPNまたはSSL VPN接続を確立する。一実施形態では、アプライアンス200は、ポリシエンジン236のポリシに基づいて、ネットワークトラフィックおよび通信セッションのフローを制御する。例えば、アプライアンス200は、ポリシエンジン236に基づいて、コンピュータ環境15、アプリケーション、またはデータファイルへのアクセスを制御してもよい。
いくつかの実施形態では、vServer275は、クライアントエージェント120を介したクライアント102とのTCPまたはUDP接続等のトランスポート層接続を確立する。一実施形態では、vServer275は、クライアント102からの通信をリッスンして受信する。他の実施形態では、vServer275は、クライアントサーバ106とのTCPまたはUDP接続等のトランスポート層接続を確立する。一実施形態では、vServer275は、サーバ106上で起動するサーバ270のインターネットプロトコルアドレスおよびポートへのトランスポート層接続を確立する。別の実施形態では、vServer275は、クライアント102への第1のトランスポート層接続をサーバ106への第2のトランスポート層接続と関連付ける。いくつかの実施形態では、vServer275は、サーバ106へのトランスポート層接続のプールを確立し、プールされたトランスポート層接続を介してクライアント要求を多重化する。
いくつかの実施形態では、アプライアンス200は、クライアント102とサーバ106との間のSSL VPN接続280を提供する。例えば、第1のネットワーク102上のクライアント102は、第2のネットワーク104’上のサーバ106への接続を確立することを要求する。いくつかの実施形態では、第2のネットワーク104’は、第1のネットワーク104からルーティング可能ではない。他の実施形態では、クライアント102は、公衆ネットワーク104上にあり、サーバ106は、企業ネットワーク等のプライベートネットワーク104’上にある。一実施形態では、クライアントエージェント120は、第1のネットワーク104上のクライアント102の通信を傍受し、通信を暗号化し、第1のトランスポート層接続を介してアプライアンス200に通信を伝送する。アプライアンス200は、第1のネットワーク104上の第1のトランスポート層接続を、第2のネットワーク104上のサーバ106への第2のトランスポート層接続に関連付ける。アプライアンス200は、クライアントエージェント102から傍受された通信を受信し、通信を解読し、第2のトランスポート層接続を介して第2のネットワーク104上のサーバ106に通信を伝送する。第2のトランスポート層接続は、プールされたトランスポート層接続であってもよい。したがって、アプライアンス200は、2つのネットワーク104、104’の間のクライアント102のためのエンドツーエンドセキュアトランスポート層接続を提供する。
一実施形態では、アプライアンス200は、仮想プライベートネットワーク104上のクライアント102のイントラネットインターネットプロトコルまたはIntranetIP282アドレスをホストする。クライアント102は、第1のネットワーク104上のインターネットプロトコル(IP)アドレスおよび/またはホスト名等のローカルネットワーク識別子を有する。アプライアンス200を介して第2のネットワーク104’に接続されたとき、アプライアンス200は、第2のネットワーク104’上のクライアント102のIPアドレスおよび/またはホスト名等のネットワーク識別子である、IntranetIPアドレス282を確立する、割り当てる、もしくは別様に提供する。アプライアンス200は、クライアントの確立されたIntranetIP282を使用して、クライアント102に向かってダイレクトされる任意の通信のための第2またはプライベートネットワーク104’をリッスンし、その上で受信する。一実施形態では、アプライアンス200は、第2のプライベートネットワーク104上のクライアント102として、またはその代わりに作用する。例えば、別の実施形態では、vServer275は、クライアント102のIntranetIP282への通信をリッスンし、それに応答する。いくつかの実施形態では、第2のネットワーク104’上のコンピューティングデバイス100が要求を伝送する場合、アプライアンス200は、それがクライアント102であるかのように要求を処理する。例えば、アプライアンス200は、クライアントのIntranetIP282へのpingに応答してもよい。別の実施例では、アプライアンスは、クライアントのIntranetIP282との接続を要求する、第2のネットワーク104上のコンピューティングデバイス100とのTCPまたはUDP接続等の接続を確立してもよい。
いくつかの実施形態では、アプライアンス200は、以下の加速技法288のうちの1つまたはそれを上回るもの、すなわち、1)圧縮、2)解凍、3)伝送制御プロトコルプーリング、4)伝送制御プロトコル多重化、5)伝送制御プロトコルバッファリング、および6)キャッシングを、クライアント102とサーバ106との間の通信に提供する。
一実施形態では、アプライアンス200は、各サーバ106との1つまたはそれを上回るトランスポート層接続を開放し、インターネットを介したクライアントによる反復データアクセスを可能にするように、これらの接続を維持することによって、クライアント102へのトランスポート層接続を繰り返し開放および閉鎖することによって引き起こされる処理負荷の多くからサーバ106を解放する。本技法は、本明細書では「接続プーリング」と称される。
いくつかの実施形態では、プールされたトランスポート層接続を介してクライアント102からサーバ106への通信をシームレスに接合するために、アプライアンス200は、トランスポート層プロトコルレベルでシーケンス番号および確認応答番号を修正することによって、通信を変換または多重化する。これは、「接続多重化」と称される。いくつかの実施形態では、いかなるアプリケーション層プロトコル相互作用も要求されない。例えば、インバウンドパケット(すなわち、クライアント102から受信されるパケット)の場合、パケットのソースネットワークアドレスは、アプライアンス200の出力ポートのものに変更され、宛先ネットワークアドレスは、意図されたサーバのものに変更される。アウトバウンドパケット(すなわち、サーバ106から受信されるもの)の場合、ソースネットワークアドレスは、サーバ106のものからアプライアンス200の出力ポートのものに変更され、宛先アドレスは、アプライアンス200のものから宛先クライアント102のものに変更される。パケットのシーケンス番号および確認応答番号はまた、クライアント102へのアプライアンス200のトランスポート層接続上でクライアント102によって予期されるシーケンス番号および確認応答番号に変換される。いくつかの実施形態では、トランスポート層プロトコルのパケットチェックサムが、これらの変換を考慮するように再計算される。
別の実施形態では、アプライアンス200は、クライアント102とサーバ106との間の通信のための切替または負荷平衡機能性284を提供する。いくつかの実施形態では、アプライアンス200は、トラフィックを配布し、層4またはアプリケーション層要求データに基づいてクライアント要求をサーバ106にダイレクトする。 一実施形態では、ネットワークパケットのネットワーク層または層2が宛先サーバ106を識別するが、アプライアンス200は、トランスポート層パケットのペイロードとして搬送されるアプリケーション情報およびデータによってネットワークパケットを分配するサーバ106を判定する。一実施形態では、アプライアンス200の健全性監視プログラム216は、クライアントの要求を分配するサーバ106を判定するように、サーバの健全性を監視する。いくつかの実施形態では、アプライアンス200が、サーバ106が利用可能ではない、または所定の閾値を上回る負荷を有することを検出する場合、アプライアンス200は、クライアント要求を別のサーバ106にダイレクトまたは分配することができる。
いくつかの実施形態では、アプライアンス200は、ドメイン名サービス(DNS)リゾルバとして作用する、または別様にクライアント102からのDNS要求の解決を提供する。いくつかの実施形態では、アプライアンスは、クライアント102によって伝送されるDNS要求を傍受する。一実施形態では、アプライアンス200は、アプライアンス200の、またはそれによってホストされるIPアドレスを用いて、クライアントのDNS要求に応答する。本実施形態では、クライアント102は、ドメイン名のためのネットワーク通信をアプライアンス200に伝送する。別の実施形態では、アプライアンス200は、第2のアプライアンス200’の、またはそれによってホストされるIPアドレスを用いて、クライアントのDNS要求に応答する。いくつかの実施形態では、アプライアンス200は、アプライアンス200によって判定されるサーバ106のIPアドレスを用いて、クライアントのDNS要求に応答する。
さらに別の実施形態では、アプライアンス200は、クライアント102とサーバ106との間の通信のためのアプリケーションファイアウォール機能性290を提供する。一実施形態では、ポリシエンジン236は、違法な要求を検出して遮断するためのルールを提供する。いくつかの実施形態では、アプリケーションファイアウォール290は、サービス妨害(DoS)攻撃から保護する。他の実施形態では、アプライアンスは、アプリケーションベースの攻撃を識別して遮断する傍受された要求のコンテンツを点検する。いくつかの実施形態では、ルール/ポリシエンジン236は、以下のうちの1つまたはそれを上回るもの、すなわち、1)バッファオーバーフロー、2)CGI−BINパラメータ操作、3)フォーム/非表示フィールド操作、4)強制的ブラウジング、5)クッキーまたはセッションポイズニング、6)破損したアクセス制御リスト(ACL)または弱いパスワード、7)クロスサイトスクリプティング(XSS)、8)コマンドインジェクション、9)SQLインジェクション、10)エラートリガ型機密情報漏出、11)暗号化の不安定な使用、12)サーバ不正構成、13)バックドアおよびデバッグオプション、14)ウェブサイト改変、15)プラットフォームまたはオペレーティングシステム脆弱性、ならびに16)ゼロデイ攻撃等の種々のクラスおよびタイプのウェブまたはインターネットベースの脆弱性に対する保護を提供するための1つまたはそれを上回るアプリケーションファイアウォールもしくはセキュリティ制御ポリシを備える。ある実施形態では、アプリケーションファイアウォール290は、以下のうちの1つまたはそれを上回るもの、すなわち、1)要求されたフィールドが返される、2)いかなる追加フィールドも許容されない、3)読取専用および非表示フィールド実行、4)ドロップダウンリストおよびラジオボタンフィールド適合性、ならびに5)フォームフィールド最大長実行のためにネットワーク通信を点検もしくは分析する形態でHTMLフォームフィールド保護を提供する。いくつかの実施形態では、アプリケーションファイアウォール290は、クッキーが修正されていないことを確実にする。他の実施形態では、アプリケーションファイアウォール290は、合法なURLを実行することによって強制的ブラウジングから保護する。
なおもさらなる他の実施形態では、アプリケーションファイアウォール290は、ネットワーク通信に含有される任意の極秘情報を保護する。アプリケーションファイアウォール290は、ネットワークパケットの任意のフィールド内の任意の極秘情報を識別するように、エンジン236のルールまたはポリシに従って任意のネットワーク通信を点検もしくは分析してもよい。いくつかの実施形態では、アプリケーションファイアウォール290は、ネットワーク通信内で、クレジットカード番号、パスワード、社会保障番号、氏名、患者コード、連絡先情報、および年齢のうちの1つまたはそれを上回る発生を識別する。ネットワーク通信のエンコードされた部分は、これらの発生または極秘情報を備えてもよい。これらの発生に基づいて、一実施形態では、アプリケーションファイアウォール290は、ネットワーク通信の伝送を防止する等のポリシアクションをネットワーク通信上でとってもよい。別の実施形態では、アプリケーションファイアウォール290は、そのような識別された発生または極秘情報を書き換える、除去する、または別様に隠してもよい。
依然として図2Bを参照すると、アプライアンス200は、図1Dと併せて上記で議論されるような性能監視エージェント197を含んでもよい。一実施形態では、アプライアンス200は、図1Dで描写されるように監視サービス198または監視サーバ106から監視エージェント197を受信する。いくつかの実施形態では、アプライアンス200は、アプライアンス200と通信する任意のクライアントまたはサーバに配信するために、ディスク等の記憶装置の中に監視エージェント197を記憶する。例えば、一実施形態では、アプライアンス200は、トランスポート層接続を確立する要求を受信することに応じて、監視エージェント197をクライアントに伝送する。他の実施形態では、アプライアンス200は、クライアント102とのトランスポート層接続を確立することに応じて、監視エージェント197を伝送する。別の実施形態では、アプライアンス200は、ウェブページの要求を傍受または検出することに応じて、監視エージェント197をクライアントに伝送する。さらに別の実施形態では、アプライアンス200は、監視サーバ198からの要求に応答して、監視エージェント197をクライアントまたはサーバに伝送する。一実施形態では、アプライアンス200は、監視エージェント197を第2のアプライアンス200’またはアプライアンス205に伝送する。
他の実施形態では、アプライアンス200は、監視エージェント197を実行する。一実施形態では、監視エージェント197は、アプライアンス200上で実行する任意のアプリケーション、プログラム、プロセス、サービス、タスク、またはスレッドの性能を測定して監視する。例えば、監視エージェント197は、vServer275A−275Nの性能および動作を測定して監視してもよい。別の実施形態では、監視エージェント197は、アプライアンス200の任意のトランスポート層接続の性能を測定して監視する。いくつかの実施形態では、監視エージェント197は、アプライアンス200をトラバースする任意のユーザセッションの性能を測定して監視する。一実施形態では、監視エージェント197は、SSL VPNセッション等のアプライアンス200をトラバースする任意の仮想プライベートネットワーク接続および/またはセッションの性能を測定して監視する。なおもさらなる実施形態では、監視エージェント197は、アプライアンス200のメモリ、CPU、およびディスク使用量ならびに性能を測定して監視する。さらに別の実施形態では、監視エージェント197は、SSLオフローディング、接続プーリングおよび多重化、キャッシング、ならびに圧縮等のアプライアンス200によって行われる任意の加速技法288の性能を測定して監視する。いくつかの実施形態では、監視エージェント197は、アプライアンス200によって行われる任意の負荷平衡および/またはコンテンツ切替284の性能を測定して監視する。他の実施形態では、監視エージェント197は、アプライアンス200によって行われるアプリケーションファイアウォール290保護および処理の性能を測定して監視する。
C.クライアントエージェント
ここで図3を参照すると、クライアントエージェント120の実施形態が描写されている。クライアント102は、ネットワーク104を介してアプライアンス200および/またはサーバ106との通信を確立して交換するためのクライアントエージェント120を含む。要するに、クライアント102は、カーネルモード302およびユーザモード303を伴うオペレーティングシステムと、1つまたはそれを上回る層310a−310bを伴うネットワークスタック310とを有する、コンピューティングデバイス100上で動作する。クライアント102は、1つまたはそれを上回るアプリケーションをインストールしている、および/または実行してもよい。いくつかの実施形態では、1つまたはそれを上回るアプリケーションは、ネットワークスタック310を介してネットワーク104に通信してもよい。ウェブブラウザ等のアプリケーションのうちの1つはまた、第1のプログラム322を含んでもよい。例えば、第1のプログラム322は、いくつかの実施形態では、クライアントエージェント120もしくはその任意の部分をインストールおよび/または実行するために使用されてもよい。クライアントエージェント120は、1つまたはそれを上回るアプリケーションからのネットワークスタック310からのネットワーク通信を傍受するための傍受機構もしくはインターセプタ350を含む。
クライアント102のネットワークスタック310は、ネットワークへのコネクティビティおよびネットワークとの通信を提供するための任意のタイプならびに形態のソフトウェア、またはハードウェア、もしくはそれらの任意の組み合わせを備えてもよい。一実施形態では、ネットワークスタック310は、ネットワークプロトコルスイートのためのソフトウェア実装を備える。ネットワークスタック310は、当業者が認識して理解するようなオープンシステム間相互接続(OSI)通信モデルの任意のネットワーク層等の1つまたはそれを上回るネットワーク層を備えてもよい。したがって、ネットワークスタック310は、OSIモデルの以下の層、すなわち、1)物理リンク層、2)データリンク層、3)ネットワーク層、4)トランスポート層、5)セッション層、6)プレゼンテーション層、および7)アプリケーション層のうちのいずれかのための任意のタイプならびに形態のプロトコルを備えてもよい。一実施形態では、ネットワークスタック310は、概して、TCP/IPと称される、インターネットプロトコル(IP)のネットワーク層プロトコルを経由したトランスポート制御プロトコル(TCP)を備えてもよい。いくつかの実施形態では、TCP/IPプロトコルは、IEEE 802.3によって網羅されるこれらのプロトコル等のIEEE広域ネットワーク(WAN)またはローカルエリアネットワーク(LAN)プロトコル群のうちのいずれかを備え得る、イーサネット(登録商標)プロトコルを経由して搬送されてもよい。いくつかの実施形態では、ネットワークスタック310は、IEEE 802.11および/またはモバイルインターネットプロトコル等の任意のタイプならびに形態の無線プロトコルを備える。
TCP/IPベースのネットワークに照らして、メッセージングアプリケーションプログラミングインターフェース(MAPI)(Eメール)、ファイル転送プロトコル(FTP)、ハイパーテキスト転送プロトコル(HTTP)、共通インターネットファイルシステム(CIFS)プロトコル(ファイル転送)、独立コンピューティングアーキテクチャ(ICA)プロトコル、遠隔デスクトッププロトコル(RDP)、無線アプリケーションプロトコル(WAP)、モバイルIPプロトコル、およびボイスオーバーIP(VoIP)プロトコルを含む、任意のTCP/IPベースのプロトコルが使用されてもよい。別の実施形態では、ネットワークスタック310は、修正されたトランスポート制御プロトコル、例えば、トランザクションTCP(T/TCP)、選択確認応答を伴うTCP(TCP−SACK)、大型ウィンドウを伴うTCP(TCP−LW)、TCP−Vegasプロトコル等の輻輳予測プロトコル、およびTCPスプーフィングプロトコル等の任意のタイプならびに形態のトランスポート制御プロトコルを備える。他の実施形態では、IPを経由したUDP等の任意のタイプおよび形態のユーザデータグラムプロトコル(UDP)が、音声通信またはリアルタイムデータ通信のため等に、ネットワークスタック310によって使用されてもよい。
さらに、ネットワークスタック310は、TCPドライバまたはネットワーク層ドライバ等の1つまたはそれを上回る層をサポートする、1つまたはそれを上回るネットワークドライバを含んでもよい。ネットワークドライバは、コンピューティングデバイス100のオペレーティングシステムの一部として、またはコンピューティングデバイス100の任意のネットワークインターフェースカードもしくは他のネットワークアクセスコンポーネントの一部として、含まれてもよい。いくつかの実施形態では、ネットワークスタック310のネットワークドライバのうちのいずれかは、本明細書に説明される技法のうちのいずれかをサポートしてネットワークスタック310のカスタムまたは修正部分を提供するようにカスタマイズ、修正、もしくは適合されてもよい。他の実施形態では、加速プログラム302は、クライアント102のオペレーティングシステムによってインストールまたは別様に提供されるネットワークスタック310とともに、もしくはそれと連動して動作するように設計および構築される。
ネットワークスタック310は、クライアント102のネットワーク通信に関連する任意の情報およびデータを受信する、取得する、提供する、または別様にそれにアクセスするための任意のタイプならびに形態のインターフェースを備える。一実施形態では、ネットワークスタック310へのインターフェースは、アプリケーションプログラミングインターフェース(API)を備える。インターフェースはまた、任意の機能コール、フッキングおよびフィルタリング機構、イベントもしくはコールバック機構、または任意のタイプのインターフェーシング技法を備えてもよい。インターフェースを介したネットワークスタック310は、ネットワークスタック310の機能性または動作に関連するオブジェクト等の任意のタイプおよび形態のデータ構造を受信もしくは提供してもよい。例えば、データ構造は、ネットワークパケットまたは1つもしくはそれを上回るネットワークパケットに関連する情報およびデータを備えてもよい。いくつかの実施形態では、データ構造は、トランスポート層のネットワークパケット等のネットワークスタック310のプロトコル層において処理されるネットワークパケットの一部を備える。いくつかの実施形態では、データ構造325が、カーネルレベルデータ構造を備える一方で、他の実施形態では、データ構造325は、ユーザモードデータ構造を備える。カーネルレベルデータ構造は、取得される、もしくはカーネルモード302で動作するネットワークスタック310の一部に関連するデータ構造、またはカーネルモード302で起動するネットワークドライバもしくは他のソフトウェア、またはオペレーティングシステムのカーネルモードで起動もしくは動作するサービス、プロセス、タスク、スレッド、または他の実行可能命令によって取得もしくは受信される任意のデータ構造を備えてもよい。
加えて、ネットワークスタック310のいくつかの部分、例えば、データリンクもしくはネットワーク層が、カーネルモード302で実行または動作してもよい一方で、ネットワークスタック310のアプリケーション層等の他の部分は、ユーザモード303で実行または動作する。例えば、ネットワークスタックの第1の部分310aが、アプリケーションへのネットワークスタック310へのユーザモードアクセスを提供してもよい一方で、ネットワークスタック310の第2の部分310aは、ネットワークへのアクセスを提供する。いくつかの実施形態では、ネットワークスタックの第1の部分310aは、層5−7のうちのいずれか等のネットワークスタック310の1つまたはそれを上回る上層を備えてもよい。他の実施形態では、ネットワークスタック310の第2の部分310bは、層1−4のうちのいずれか等の1つまたはそれを上回る下層を備える。ネットワークスタック310の第1の部分310aおよび第2の部分310bはそれぞれ、ユーザモード303、カーネルモード302、またはその組み合わせで、いずれか1つもしくはそれを上回るネットワーク層において、またはネットワーク層もしくはネットワーク層へのインターフェース点の任意の部分、またはユーザモード303およびカーネルモード302の任意の部分もしくはそこへのインターフェース点において、ネットワークスタック310の任意の部分を備えてもよい。
インターセプタ350は、ソフトウェア、ハードウェア、またはソフトウェアおよびハードウェアの任意の組み合わせを備えてもよい。一実施形態では、インターセプタ350は、ネットワークスタック310内の任意の点においてネットワーク通信を傍受し、インターセプタ350またはクライアントエージェント120によって所望、管理、もしくは制御される宛先にネットワーク通信をリダイレクトまたは伝送する。例えば、インターセプタ350は、第1のネットワークのネットワークスタック310のネットワーク通信を傍受し、第2のネットワーク104上で伝送するためにネットワーク通信をアプライアンス200に伝送してもよい。いくつかの実施形態では、インターセプタ350は、ネットワークスタック310とインターフェースをとって連動するように構築および設計されるネットワークドライバ等のドライバを備える、任意のタイプのインターセプタ350を備える。いくつかの実施形態では、クライアントエージェント120および/またはインターセプタ350は、トランスポート層において等、ネットワークスタック310の1つまたはそれを上回る層において動作する。一実施形態では、インターセプタ350は、フィルタドライバ、フッキング機構、またはトランスポートドライバインターフェース(TDI)を介して等、ネットワークスタックのトランスポート層にインターフェース接続する任意の形態およびタイプの好適なネットワークドライバインターフェースを備える。いくつかの実施形態では、インターセプタ350は、トランスポート層等の第1のプロトコル層、およびトランスポートプロトコル層の上方の任意の層、例えば、アプリケーションプロトコル層等の別のプロトコル層にインターフェース接続する。一実施形態では、インターセプタ350は、ネットワークドライバインターフェース仕様(NDIS)またはNDISドライバに準拠するドライバを備えてもよい。別の実施形態では、インターセプタ350は、ミニフィルタまたはミニポートドライバを備えてもよい。一実施形態では、インターセプタ350またはその一部は、カーネルモード302で動作する。別の実施形態では、インターセプタ350またはその一部は、ユーザモード303で動作する。いくつかの実施形態では、インターセプタ350の一部が、カーネルモード302で動作する一方で、インターセプタ350の別の部分は、ユーザモード303で動作する。他の実施形態では、クライアントエージェント120は、ユーザモード303で動作するが、カーネルレベルデータ構造225を取得するため等に、インターセプタ350を介して、カーネルモードドライバ、プロセス、サービス、タスク、またはオペレーティングシステムの一部にインターフェース接続する。さらなる実施形態では、インターセプタ350は、アプリケーション等のユーザモードアプリケーションまたはプログラムである。
一実施形態では、インターセプタ350は、任意のトランスポート層接続要求を傍受する。これらの実施形態では、インターセプタ350は、場所のための所望の場所への宛先IPアドレスおよび/またはポート等の宛先情報を設定するように、トランスポート層アプリケーションプログラミングインターフェース(API)コールを実行する。このようにして、インターセプタ350は、インターセプタ350またはクライアントエージェント120によって制御もしくは管理されるIPアドレスおよびポートへのトランスポート層接続を傍受してリダイレクトする。一実施形態では、インターセプタ350は、クライアントエージェント120がリッスンしているクライアント102のローカルIPアドレスおよびポートへの接続のための宛先情報を設定する。例えば、クライアントエージェント120は、リダイレクトされたトランスポート層通信のためのローカルIPアドレスおよびポート上でリッスンするプロキシサービスを備えてもよい。いくつかの実施形態では、次いで、クライアントエージェント120は、リダイレクトされたトランスポート層通信をアプライアンス200に通信する。
いくつかの実施形態では、インターセプタ350は、ドメイン名サービス(DNS)要求を傍受する。一実施形態では、クライアントエージェント120および/またはインターセプタ350は、DNS要求を解決する。別の実施形態では、インターセプタは、DNS解決のために傍受されたDNS要求をアプライアンス200に伝送する。一実施形態では、アプライアンス200は、DNS要求を解決し、DNS応答をクライアントエージェント120に通信する。いくつかの実施形態では、アプライアンス200は、別のアプライアンス200’またはDNSサーバ106を介してDNS要求を解決する。
さらに別の実施形態では、クライアントエージェント120は、2つのエージェント120および120’を備えてもよい。一実施形態では、第1のエージェント120は、ネットワークスタック310のネットワーク層において動作するインターセプタ350を備えてもよい。いくつかの実施形態では、第1のエージェント120は、インターネット制御メッセージプロトコル(ICMP)要求(例えば、pingおよびトレースルート)等のネットワーク層要求を傍受する。他の実施形態では、第2のエージェント120’は、トランスポート層において動作し、トランスポート層通信を傍受してもよい。いくつかの実施形態では、第1のエージェント120は、ネットワークスタック310の1つの層において通信を傍受し、傍受された通信とインターフェースをとる、またはそれを第2のエージェント120’に通信する。
クライアントエージェント120および/またはインターセプタ350は、ネットワークスタック310の任意の他のプロトコル層に対して透過的な様式で、プロトコル層において動作してもよい、またはそれとインターフェースをとってもよい。例えば、一実施形態では、インターセプタ350は、ネットワーク層等のトランスポート層の下方の任意のプロトコル層、およびセッション、プレゼンテーション、またはアプリケーション層プロトコル等のトランスポート層の上方の任意のプロトコル層に対して透過的に、ネットワークスタック310のトランスポート層とともに動作する、もしくはそれとインターフェースをとる。これは、所望に応じて、かつインターセプタ350を使用するための修正を伴わずに、ネットワークスタック310の他のプロトコル層が動作することを可能にする。したがって、クライアントエージェント120および/またはインターセプタ350は、TCP/IPを経由した任意のアプリケーション層プロトコル等のトランスポート層によって搬送される任意のプロトコルを介して提供される、任意の通信をセキュアにする、最適化する、加速する、ルーティングする、もしくは負荷平衡するように、トランスポート層とインターフェースをとることができる。
さらに、クライアントエージェント120および/またはインターセプタは、任意のアプリケーション、クライアント102のユーザ、およびクライアント102と通信するサーバ等の任意の他のコンピューティングデバイスに対して透過的な様式で、ネットワークスタック310において動作してもよい、もしくはそれとインターフェースをとってもよい。クライアントエージェント120および/またはインターセプタ350は、アプリケーションの修正を伴わない様式で、クライアント102上にインストールならびに/もしくは実行されてもよい。いくつかの実施形態では、クライアント102のユーザまたはクライアント102と通信するコンピューティングデバイスは、クライアントエージェント120および/またはインターセプタ350の存在、実行、もしくは動作を認識していない。したがって、いくつかの実施形態では、クライアントエージェント120および/またはインターセプタ350は、アプリケーション、クライアント102のユーザ、サーバ等の別のコンピューティングデバイス、またはインターセプタ350によってインターフェース接続されるプロトコル層の上方ならびに/もしくは下方のプロトコル層のうちのいずれかに対して透過的に、インストールされ、実行され、および/または動作される。
クライアントエージェント120は、加速プログラム302、ストリーミングクライアント306、収集エージェント304、および/または監視エージェント197を含む。一実施形態では、クライアントエージェント120は、Citrix Systems,Inc.(Fort Lauderdale, Florida)によって開発された独立コンピューティングアーキテクチャ(ICA)クライアントまたはその一部を備え、ICAクライアントとも称される。いくつかの実施形態では、クライアント120は、サーバ106からクライアント102にアプリケーションをストリーム配信するためのアプリケーションストリーミングクライアント306を備える。いくつかの実施形態では、クライアントエージェント120は、クライアント102とサーバ106との間の通信を加速するための加速プログラム302を備える。別の実施形態では、クライアントエージェント120は、エンドポイント検出を行う/アプライアンス200および/またはサーバ106のためのエンドポイント情報を走査して収集するための収集エージェント304を含む。
いくつかの実施形態では、加速プログラム302は、クライアントのサーバ106との通信および/またはサーバ106によって提供されるアプリケーションにアクセスすること等のサーバ106へのアクセスを加速、強化、もしくは別様に改良するように、1つまたはそれを上回る加速技法を行うためのクライアント側加速プログラムを備える。加速プログラム302の実行可能命令の論理、機能、および/または動作は、以下の加速技法のうちの1つまたはそれを上回るもの、すなわち、1)マルチプロトコル圧縮、2)トランスポート制御プロトコルプーリング、3)トランスポート制御プロトコル多重化、4)トランスポート制御プロトコルバッファリング、および5)キャッシュマネージャを介したキャッシングを行ってもよい。加えて、加速プログラム302は、クライアント102によって受信および/または伝送される任意の通信の暗号化ならびに/もしくは暗号解読を行ってもよい。いくつかの実施形態では、加速プログラム302は、統合様式または方式で加速技法のうちの1つまたはそれを上回るものを行う。加えて、加速プログラム302は、トランスポート層プロトコルのネットワークパケットのペイロードとして搬送される、プロトコルのうちのいずれかまたは複数のプロトコルに圧縮を行うことができる。ストリーミングクライアント306は、サーバ106からストリーム配信されたアプリケーションを受信して実行するためのアプリケーション、プログラム、プロセス、サービス、タスク、または実行可能命令を備える。サーバ106は、クライアント102上でアプリケーションを再生する、実行する、または別様に実行させられるために、1つまたはそれを上回るアプリケーションデータファイルをストリーミングクライアント306にストリーム配信してもよい。いくつかの実施形態では、サーバ106は、圧縮またはパッケージ化されたアプリケーションデータファイルのセットをストリーミングクライアント306に伝送する。いくつかの実施形態では、複数のアプリケーションファイルは、圧縮され、CAB、ZIP、SIT、TAR、JAR、または他のアーカイブ等のアーカイブファイル内でファイルサーバ上に記憶される。一実施形態では、サーバ106は、アプリケーションファイルを解凍、非パッケージ化、または非アーカイブ化し、ファイルをクライアント102に伝送する。別の実施形態では、クライアント102が、アプリケーションファイルを解凍、非パッケージ化、または非アーカイブ化する。ストリーミングクライアント306は、アプリケーションまたはその一部を動的にインストールし、アプリケーションを実行する。一実施形態では、ストリーミングクライアント306は、実行可能プログラムであってもよい。いくつかの実施形態では、ストリーミングクライアント306は、別の実行可能プログラムを起動することが可能であり得る。
収集エージェント304は、クライアント102についての情報を識別、取得、および/または収集するためのアプリケーション、プログラム、プロセス、サービス、タスク、もしくは実行可能命令を備える。いくつかの実施形態では、アプライアンス200は、収集エージェント304をクライアント102またはクライアントエージェント120に伝送する。収集エージェント304は、アプライアンスのポリシエンジン236の1つまたはそれを上回るポリシに従って構成されてもよい。他の実施形態では、収集エージェント304は、クライアント102についての収集された情報をアプライアンス200に伝送する。一実施形態では、アプライアンス200のポリシエンジン236は、ネットワーク104へのクライアントの接続のアクセス、認証、および承認制御を判定して提供するために、収集された情報を使用する。
一実施形態では、収集エージェント304は、クライアントの1つまたはそれを上回る属性もしくは特性を識別して判定する、エンドポイント検出および走査機構を備える。例えば、収集エージェント304は、以下のクライアント側属性のうちのいずれか1つまたはそれを上回るもの、すなわち、1)オペレーティングシステムおよび/またはオペレーティングシステムのバージョン、2)オペレーティングシステムのサービスパック、3)起動しているサービス、4)起動しているプロセス、ならびに5)ファイルを識別して判定してもよい。収集エージェント304はまた、クライアント上で以下のうちのいずれか1つまたはそれを上回るもの、すなわち、1)ウイルス対策ソフトウェア、2)パーソナルファイアウォールソフトウェア、3)スパム対策ソフトウェア、および4)インターネットセキュリティソフトウェアの存在もしくはバージョンを識別して判定してもよい。ポリシエンジン236は、クライアントの属性または特性もしくはクライアント側属性のうちのいずれか1つまたはそれを上回るものに基づく、1つまたはそれを上回るポリシを有してもよい。
いくつかの実施形態では、クライアントエージェント120は、図1Dおよび2Bと併せて議論されるような監視エージェント197を含む。監視エージェント197は、Visual BasicまたはJavascript(登録商標)等の任意のタイプおよび形態のスクリプトであってもよい。一実施形態では、監視エージェント197は、クライアントエージェント120の任意の部分の性能を監視して測定する。例えば、いくつかの実施形態では、監視エージェント197は、加速プログラム302の性能を監視して測定する。別の実施形態では、監視エージェント197は、ストリーミングクライアント306の性能を監視して測定する。他の実施形態では、監視エージェント197は、収集エージェント304の性能を監視して測定する。なおも別の実施形態では、監視エージェント197は、インターセプタ350の性能を監視して測定する。いくつかの実施形態では、監視エージェント197は、メモリ、CPU、およびディスク等のクライアント102の任意のリソースを監視して測定する。
監視エージェント197は、クライアントの任意のアプリケーションの性能を監視して測定してもよい。一実施形態では、監視エージェント197は、クライアント102上のブラウザの性能を監視して測定する。いくつかの実施形態では、監視エージェント197は、クライアントエージェント120を介して配信される任意のアプリケーションの性能を監視して測定する。他の実施形態では、監視エージェント197は、ウェブベースまたはHTTP応答時間等のアプリケーションのエンドユーザ応答時間を測定して監視する。監視エージェント197は、ICAまたはRDPクライアントの性能を監視して測定してもよい。別の実施形態では、監視エージェント197は、ユーザセッションまたはアプリケーションセッションのメトリックを測定して監視する。いくつかの実施形態では、監視エージェント197は、ICAまたはRDPセッションを測定して監視する。一実施形態では、監視エージェント197は、クライアント102へのアプリケーションおよび/またはデータの配信を加速する際のアプライアンス200の性能を測定して監視する。
いくつかの実施形態では、依然として図3を参照すると、第1のプログラム322が、自動的に、無音で、透過的に、または別様に、クライアントエージェント120もしくはインターセプタ350等のその一部をインストールおよび/または実行するために使用されてもよい。一実施形態では、第1のプログラム322は、アプリケーションにロードされ、それによって実行される、ActiveX制御またはJava(登録商標)制御もしくはスクリプト等のプラグインコンポーネントを備える。例えば、第1のプログラムは、アプリケーションのメモリ空間またはコンテキスト内等でウェブブラウザアプリケーションによってロードされて起動される、ActiveX制御を備える。別の実施形態では、第1のプログラム322は、ブラウザ等のアプリケーションにロードされ、それによって起動される、実行可能命令のセットを備える。一実施形態では、第1のプログラム322は、クライアントエージェント120をインストールするように設計および構築されたプログラムを備える。いくつかの実施形態では、第1のプログラム322は、別のコンピューティングデバイスからネットワークを介してクライアントエージェント120を取得、ダウンロード、または受信する。別の実施形態では、第1のプログラム322は、クライアント102のオペレーティングシステム上にネットワークドライバ等のプログラムをインストールするためのインストーラプログラムまたはプラグアンドプレイマネージャである。
D.仮想化されたアプリケーション配信コントローラを提供するためのシステムおよび方法
ここで図4Aを参照すると、ブロック図が、仮想化環境400の一実施形態を描写する。要するに、コンピューティングデバイス100は、ハイパーバイザ層と、仮想化層と、ハードウェア層とを含む。ハイパーバイザ層は、仮想化層内で実行する少なくとも1つの仮想マシンによる、ハードウェア層内のいくつかの物理リソース(例えば、プロセッサ421およびディスク428)へのアクセスを配分して管理する、ハイパーバイザ401(仮想化マネージャとも称される)を含む。ハイパーバイザ401は、仮想リソースを任意の数のゲストオペレーティングシステム410a、410b(概して410)に提供してもよい。仮想化層は、少なくとも1つのオペレーティングシステム410と、少なくとも1つのオペレーティングシステム410に配分される複数の仮想リソースとを含む。仮想リソースは、限定ではないが、複数の仮想プロセッサ432a、432b、432c(概して432)、および仮想ディスク442a、442b、442c(概して442)、ならびに仮想メモリおよび仮想ネットワークインターフェース等の仮想リソースを含んでもよい。複数の仮想リソースおよびオペレーティングシステム410は、仮想マシン406と称されてもよい。仮想マシン406は、ハイパーバイザ401と通信し、コンピューティングデバイス100上で他の仮想マシンを管理および構成するためのアプリケーションを実行するために使用される、制御オペレーティングシステム405を含んでもよい。
さらに詳細には、ハイパーバイザ401は、物理デバイスへのアクセスを有するオペレーティングシステムをシミュレートする任意の様式で、仮想リソースをオペレーティングシステムに提供してもよい。いくつかの実施形態では、コンピューティングデバイス100は、1つまたはそれを上回るタイプのハイパーバイザを実行する。これらの実施形態では、ハイパーバイザは、仮想ハードウェアをエミュレートし、物理ハードウェアをパーティション化し、物理ハードウェアを仮想化し、コンピュータ環境へのアクセスを提供する仮想マシンを実行するために使用されてもよい。ハイパーバイザは、VMWare, Inc.(Palo Alto, California)製のもの、その開発がオープンソースXen.orgコミュニティによって監督されるオープンソース製品である、XENハイパーバイザ、Microsoftによって提供されるHyperV、VirtualServer、または仮想PCハイパーバイザ、もしくはその他を含んでもよい。いくつかの実施形態では、ゲストオペレーティングシステムが実行し得る、仮想マシンプラットフォームを作成する、ハイパーバイザを実行するコンピューティングデバイス100は、ホストサーバと称される。これらの実施形態のうちの1つでは、例えば、コンピューティングデバイス100は、Citrix Systems, Inc.(Fort Lauderdale, FL)によって提供されるXEN SERVERである。
いくつかの実施形態では、ハイパーバイザ401は、コンピューティングデバイス上で実行する、オペレーティングシステム内で実行する。これらの実施形態のうちの1つでは、オペレーティングシステムおよびハイパーバイザ401上で実行するコンピューティングデバイスは、ホストオペレーティングシステム(コンピューティングデバイス上で実行するオペレーティングシステム)と、ゲストオペレーティングシステム(ハイパーバイザ401によって提供されるコンピューティングリソースパーティション内で実行するオペレーティングシステム)とを有すると言える。他の実施形態では、ハイパーバイザ401は、ホストオペレーティングシステム上で実行する代わりに、コンピューティングデバイス上でハードウェアと直接相互作用する。これらの実施形態のうちの1つでは、ハイパーバイザ401は、コンピューティングデバイスを備えるハードウェアを指す、「ベアメタル」上で実行していると言える。
いくつかの実施形態では、ハイパーバイザ401は、オペレーティングシステム410が実行する、仮想マシン406a−c(概して406)を作成してもよい。これらの実施形態のうちの1つでは、例えば、ハイパーバイザ401は、仮想マシン406を作成するように仮想マシンイメージをロードする。これらの実施形態のうちの別のものでは、ハイパーバイザ401は、仮想マシン406内でオペレーティングシステム410を実行する。これらの実施形態のうちのなおも別のものでは、仮想マシン406は、オペレーティングシステム410を実行する。
いくつかの実施形態では、ハイパーバイザ401は、コンピューティングデバイス100上で実行する仮想マシン406のためのプロセッサスケジューリングおよびメモリ分割を制御する。これらの実施形態のうちの1つでは、ハイパーバイザ401は、少なくとも1つの仮想マシン406の実行を制御する。これらの実施形態のうちの別のものでは、ハイパーバイザ401は、コンピューティングデバイス100によって提供される少なくとも1つのハードウェアリソースの抽象化を少なくとも1つの仮想マシン406に提示する。他の実施形態では、ハイパーバイザ401は、物理的プロセッサ能力が仮想マシン406に提示されるかどうかと、どのようにして提示されるかとを制御する。
制御オペレーティングシステム405は、ゲストオペレーティングシステムを管理して構成するための少なくとも1つのアプリケーションを実行してもよい。一実施形態では、制御オペレーティングシステム405は、仮想マシンを実行する、仮想マシンの実行を終了させる、または仮想マシンに配分するための物理リソースのタイプを識別するための機能性を含む、仮想マシンの実行を管理するための機能性へのアクセスを管理者に提供するユーザインターフェースを含むアプリケーション等の管理アプリケーションを実行してもよい。別の実施形態では、ハイパーバイザ401は、ハイパーバイザ401によって作成される仮想マシン406内で制御オペレーティングシステム405を実行する。なおも別の実施形態では、制御オペレーティングシステム405は、コンピューティングデバイス100上の物理リソースに直接アクセスする権限を与えられている仮想マシン406内で実行する。いくつかの実施形態では、コンピューティングデバイス100a上の制御オペレーティングシステム405aは、ハイパーバイザ401aとハイパーバイザ401bとの間の通信を介して、コンピューティングデバイス100b上の制御オペレーティングシステム405bとデータを交換してもよい。このようにして、1つまたはそれを上回るコンピューティングデバイス100は、プロセッサおよびリソースのプールで利用可能な他の物理リソースに関して、他のコンピューティングデバイス100のうちの1つまたはそれを上回るものとデータを交換してもよい。これらの実施形態のうちの1つでは、本機能性は、ハイパーバイザが複数の物理コンピューティングデバイスを横断して分配されるリソースのプールを管理することを可能にする。これらの実施形態のうちの別のものでは、複数のハイパーバイザは、コンピューティングデバイス100のうちの1つの上で実行されるゲストオペレーティングシステムのうちの1つまたはそれを上回るものを管理する。
一実施形態では、制御オペレーティングシステム405は、少なくとも1つのゲストオペレーティングシステム410と相互作用する権限を与えられている仮想マシン406内で実行する。別の実施形態では、ゲストオペレーティングシステム410は、ディスクまたはネットワークへのアクセスを要求するために、ハイパーバイザ401を介して制御オペレーティングシステム405と通信する。なおも別の実施形態では、ゲストオペレーティングシステム410および制御オペレーティングシステム405は、例えば、ハイパーバイザ401によって利用可能にされる複数の共有メモリページを介して等、ハイパーバイザ401によって確立される通信チャネルを介して通信してもよい。
いくつかの実施形態では、制御オペレーティングシステム405は、コンピューティングデバイス100によって提供されるネットワーキングハードウェアと直接通信するためのネットワークバックエンドドライバを含む。これらの実施形態のうちの1つでは、ネットワークバックエンドドライバは、少なくとも1つのゲストオペレーティングシステム110からの少なくとも1つの仮想マシン要求を処理する。他の実施形態では、制御オペレーティングシステム405は、コンピューティングデバイス100上の記憶装置要素と通信するためのブロックバックエンドドライバを含む。これらの実施形態のうちの1つでは、ブロックバックエンドドライバは、ゲストオペレーティングシステム410から受信される少なくとも1つの要求に基づいて、記憶要素からデータを読み取って書き込む。
一実施形態では、制御オペレーティングシステム405は、ツールスタック404を含む。別の実施形態では、ツールスタック404は、ハイパーバイザ401と相互作用する、(例えば、第2のコンピューティングデバイス100b上の)他の制御オペレーティングシステム405と通信する、またはコンピューティングデバイス100上の仮想マシン406b、406cを管理するための機能性を提供する。別の実施形態では、ツールスタック404は、改良された管理機能性を仮想マシンファームの管理者に提供するためのカスタマイズされたアプリケーションを含む。いくつかの実施形態では、ツールスタック404および制御オペレーティングシステム405のうちの少なくとも1つは、コンピューティングデバイス100上で起動する仮想マシン406を遠隔で構成して制御するためのインターフェースを提供する、管理APIを含む。他の実施形態では、制御オペレーティングシステム405は、ツールスタック404を通してハイパーバイザ401と通信する。
一実施形態では、ハイパーバイザ401は、ハイパーバイザ401によって作成される仮想マシン406内でゲストオペレーティングシステム410を実行する。別の実施形態では、ゲストオペレーティングシステム410は、コンピュータ環境内のリソースへのアクセスをコンピューティングデバイス100のユーザに提供する。なおも別の実施形態では、リソースは、プログラム、アプリケーション、文書、ファイル、複数のアプリケーション、複数のファイル、実行可能プログラムファイル、デスクトップ環境、コンピュータ環境、またはコンピューティングデバイス100のユーザに利用可能にされる他のリソースを含む。さらに別の実施形態では、リソースは、コンピューティングデバイス100上への従来の直接インストール、アプリケーションストリーミングのための方法を介したコンピューティングデバイス100への配信、第2のコンピューティングデバイス100’上のリソースの実行によって生成され、プレゼンテーション層プロトコルを介してコンピューティングデバイス100に通信される、出力データのコンピューティングデバイス100への配信、第2のコンピューティングデバイス100’上で実行する仮想マシンを介したリソースの実行によって生成される、出力データのコンピューティングデバイス100への配信、またはUSBデバイス等のコンピューティングデバイス100に接続された可撤性記憶デバイスから、もしくはコンピューティングデバイス100上で実行して出力データを生成する仮想マシンを介した実行を含むが、それらに限定されない、複数のアクセス方法を介して、コンピューティングデバイス100に配信されてもよい。いくつかの実施形態では、コンピューティングデバイス100は、リソースの実行によって生成される出力データを別のコンピューティングデバイス100’に伝送する。
一実施形態では、ゲストオペレーティングシステム410は、それが実行する仮想マシンと連動して、それが仮想マシンであることを認識していない、完全仮想化仮想マシンを形成し、そのようなマシンは、「ドメインU HVM(ハードウェア仮想マシン)仮想マシン」と称されてもよい。別の実施形態では、完全仮想化マシンは、完全仮想化マシン内でオペレーティングシステムを実行するために、基本入出力システム(BIOS)をエミュレートするソフトウェアを含む。なおも別の実施形態では、完全仮想化マシンは、ハイパーバイザ401と通信することによって機能性を提供するドライバを含んでもよい。そのような実施形態では、ドライバは、それが仮想化された環境内で実行することを認識してもよい。別の実施形態では、ゲストオペレーティングシステム410は、それが実行する仮想マシンと連動して、それが仮想マシンであることを認識している、準仮想化仮想マシンを形成し、そのようなマシンは、「ドメインU PV仮想マシン」と称されてもよい。別の実施形態では、準仮想化マシンは、完全仮想化マシンが含まない、付加的ドライバを含む。なおも別の実施形態では、準仮想化マシンは、上記で説明されるように、制御オペレーティングシステム405に含まれる、ネットワークバックエンドドライバおよびブロックバックエンドドライバを含む。
ここで図4Bを参照すると、ブロック図が、少なくとも1つの物理ホストが仮想マシンを実行する、システム内の複数のネットワーク化されたコンピューティングデバイスの一実施形態を描写する。要するに、本システムは、管理コンポーネント404と、ハイパーバイザ401とを含む。本システムは、複数のコンピューティングデバイス100と、複数の仮想マシン406と、複数のハイパーバイザ401と、ツールスタック404または管理コンポーネント404と様々に称される、複数の管理コンポーネントと、物理リソース421、428とを含む。複数の物理マシン100はそれぞれ、図1E−1Hおよび4Aに関連して上記で説明される、コンピューティングデバイス100として提供されてもよい。
さらに詳細には、物理ディスク428が、コンピューティングデバイス100によって提供され、仮想ディスク442の少なくとも一部を記憶する。いくつかの実施形態では、仮想ディスク442は、複数の物理ディスク428と関連付けられる。これらの実施形態のうちの1つでは、1つまたはそれを上回るコンピューティングデバイス100は、プロセッサおよびリソースのプールで利用可能な他の物理リソースに関して、他のコンピューティングデバイス100のうちの1つまたはそれを上回るものとデータを交換してもよく、ハイパーバイザが複数の物理コンピューティングデバイスを横断して分配されるリソースのプールを管理することを可能にする。いくつかの実施形態では、仮想マシン406が実行するコンピューティングデバイス100は、物理ホスト100またはホストマシン100と称される。
ハイパーバイザは、コンピューティングデバイス100上のプロセッサ上で実行する。ハイパーバイザは、物理ディスクへのある量のアクセスを仮想ディスクに配分する。一実施形態では、ハイパーバイザ401は、物理ディスク上のある量の空間を配分する。別の実施形態では、ハイパーバイザ401は、物理ディスク上の複数のページを配分する。いくつかの実施形態では、ハイパーバイザは、仮想マシン450を初期化して実行するプロセスの一部として、仮想ディスク442をプロビジョニングする。
一実施形態では、管理コンポーネント404aは、プール管理コンポーネント404aと称される。別の実施形態では、制御オペレーティングシステム405aと称され得る、管理オペレーティングシステム405aは、管理コンポーネントを含む。いくつかの実施形態では、管理コンポーネントは、ツールスタックと称される。これらの実施形態のうちの1つでは、管理コンポーネントは、図4Aに関連して上記で説明されるツールスタック404である。他の実施形態では、管理コンポーネント404は、管理者等のユーザから、プロビジョニングおよび/または実行する仮想マシン406の識別を受信するためのユーザインターフェースを提供する。なおも他の実施形態では、管理コンポーネント404は、管理者等のユーザから、1つの物理マシン100から別の物理マシンへの仮想マシン406bの移動の要求を受信するためのユーザインターフェースを提供する。さらなる実施形態では、管理コンポーネント404aは、要求された仮想マシン406dを実行するコンピューティングデバイス100bを識別し、識別された仮想マシンを実行するように識別されたコンピューティングデバイス100b上のハイパーバイザ401bに命令し、そのような管理コンポーネントは、プール管理コンポーネントと称されてもよい。
ここで図4Cを参照すると、サーバ106のハイパーバイザ401上で動作する仮想アプライアンス450の実施形態の略図が描写されている。要するに、図2Aおよび2Bに関連して上記で説明されるアプライアンス200(例えば、アプリケーション配信コントローラ)の機能性および/または実施形態のうちのいずれかが、図4Aおよび4Bに関連して上記で説明される仮想化された環境の任意の実施形態で展開されてもよい。アプライアンス200の形態で展開されているアプリケーション配信コントローラの機能性の代わりに、そのような機能性は、クライアント102、サーバ106、またはアプライアンス200等の任意のコンピューティングデバイス100上の仮想化された環境400で展開されてもよい。
図2Aおよび2Bのアプライアンス200と同様に、仮想アプライアンス450は、可用性、性能、オフロード、ならびにセキュリティのための機能性を提供してもよい。可用性に関して、仮想アプライアンスは、ネットワークの層4と7との間で負荷平衡を行ってもよく、また、知的サービス健全性監視を行ってもよい。ネットワークトラフィック加速を介した性能増加に関して、仮想アプライアンスは、キャッシングおよび圧縮を行ってもよい。任意のサーバの処理をオフロードするために、仮想アプライアンスは、接続多重化ならびにプーリングおよび/またはSSL処理を行ってもよい。セキュリティに関して、仮想アプライアンスは、アプライアンス200のアプリケーションファイアウォール機能性およびSSL VPN機能のうちのいずれかを行ってもよい。
図2Aに関連して説明されるようなアプライアンス200のモジュールのうちのいずれかは、既製のサーバ等の任意のサーバ上の仮想化された環境300または仮想化されていない環境で実行可能な1つまたはそれを上回るソフトウェアモジュールもしくはコンポーネントとして展開可能である、仮想化されたアプライアンス配信コントローラ450の形態でパッケージ化される、組み合わせられる、設計される、または構築されてもよい。例えば、仮想アプライアンスは、コンピューティングデバイス上にインストールするインストールパッケージの形態で提供されてもよい。図2Aを参照すると、キャッシュマネージャ232、ポリシエンジン236、圧縮238、暗号化エンジン234、パケットエンジン240、GUI210、CLI212、シェルサービス214、および健全性監視プログラム216のうちのいずれかは、コンピューティングデバイスおよび/または仮想化された環境300の任意のオペレーティングシステム上で起動するソフトウェアコンポーネントもしくはモジュールとして、設計ならびに構築されてもよい。アプライアンス200の暗号化プロセッサ260、プロセッサ262、メモリ264、およびネットワークスタック267を使用する代わりに、仮想化されたアプライアンス400は、仮想化された環境400によって提供されるような、または別様にサーバ106上で利用可能であるような、これらのリソースのうちのいずれかを使用してもよい。
依然として図4Cを参照すると、要するに、いずれか1つまたはそれを上回るvServer275A−275Nが、任意のサーバ106等の任意のタイプのコンピューティングデバイス100の仮想化された環境400で動作または実行されてもよい。図2Bに関連して説明されるアプライアンス200のモジュールまたは機能性のうちのいずれかは、サーバの仮想化された、もしくは仮想化されていない環境のいずれかで動作するように設計および構築されてもよい。vServer275、SSL VPN280、イントラネットUP282、切替284、DNS286、加速288、App FW290、および監視エージェントのうちのいずれかは、デバイスおよび/または仮想化された環境400上で実行可能な1つまたはそれを上回るソフトウェアモジュールもしくはコンポーネントとして展開可能である、アプリケーション配信コントローラ450の形態でパッケージ化される、組み合わせられる、設計される、または構築されてもよい。
いくつかの実施形態では、サーバは、各仮想マシンが仮想アプリケーション配信コントローラ450の同一または異なる実施形態を起動する、仮想化環境で複数の仮想マシン406a−406nを実行してもよい。いくつかの実施形態では、サーバは、マルチコア処理システムのコア上の1つまたはそれを上回る仮想マシン上で1つまたはそれを上回る仮想アプライアンス450を実行してもよい。いくつかの実施形態では、サーバは、多重プロセッサデバイスの各プロセッサ上の1つまたはそれを上回る仮想マシン上で1つまたはそれを上回る仮想アプライアンス450を実行してもよい。
E.マルチコアアーキテクチャを提供するためのシステムおよび方法
ムーアの法則によると、集積回路上に置かれ得るトランジスタの数は、約2年毎に倍になり得る。しかしながら、CPU速度増加は、停滞状態に達し得、例えば、CPU速度は、2005年以降、約3.5〜4GHz範囲になっている。ある場合には、CPU製造業者は、付加的性能を獲得するためにCPU速度増加に依拠しない場合がある。一部のCPU製造業者は、付加的性能を提供するように、付加的コアをそれらのプロセッサに追加し得る。性能獲得のためにCPUに依拠する、ソフトウェアおよびネットワーキングベンダのもの等の製品は、これらのマルチコアCPUを活用することによって、それらの性能を改良し得る。単一のCPUのために設計および構築されるソフトウェアは、マルチスレッドの並列アーキテクチャもしくは別様にマルチコアアーキテクチャを利用するように、再設計され、および/または書き換えられてもよい。
nCoreまたはマルチコア技術と称される、アプライアンス200のマルチコアアーキテクチャは、アプライアンスが、いくつかの実施形態では、単一コア性能障壁を突破することと、マルチコアCPUの能力を活用することとを可能にする。図2Aに関連して説明される前のアーキテクチャでは、単一のネットワークまたはパケットエンジンが起動される。nCore技術およびアーキテクチャの複数のコアは、複数のパケットエンジンが同時に、および/または並行して起動することを可能にする。パケットエンジンが各コア上で起動すると、アプライアンスアーキテクチャは、付加的コアの処理容量を活用する。いくつかの実施形態では、これは、性能および拡張可能性の最大7倍の増加を提供する。
図5Aには、機能並列性、データ並列性、またはフローベースのデータ並列性等の並列性もしくは並列コンピューティング方式のタイプに従って、1つまたはそれを上回るプロセッサコアを横断する作業、タスク、負荷、もしくはネットワークトラフィック分布のいくつかの実施形態が、図示されている。要するに、図5Aは、1からNの合計コア数である、n個のコアを伴うアプライアンス200’等のマルチコアシステムの実施形態を図示する。一実施形態では、作業、負荷、またはネットワークトラフィックは、分布がn個のコア505N(以降では集合的にコア505と称される)のうちの全てもしくは2つまたはそれを上回るものを横断するように、第1のコア505A、第2のコア505B、第3のコア505C、第4のコア505D、第5のコア505E、第6のコア505F、第7のコア505G等の間に分配されることができる。それぞれ、複数のコアのうちの個別のコア上で起動する、複数の仮想インターネットプロトコルサーバ(VIP)275があってもよい。それぞれ、複数のコアのうちの個別のコア上で起動する、複数のパケットエンジン240があってもよい。使用されるアプローチのうちのいずれかは、コアのうちのいずれかを横断する、異なる、様々な、または類似する作業負荷もしくは性能レベル515につながり得る。機能並列性アプローチに関して、各コアは、パケットエンジン、VIP275、またはアプライアンス200によって提供される機能性のうちの異なる機能を起動してもよい。データ並列性アプローチでは、データは、データを受信するネットワークインターフェースカード(NIC)またはVIP275に基づいて、コアを横断して並列化もしくは分配されてもよい。別のデータ並列性アプローチでは、処理は、データフローを各コアに分配することによって、コアを横断して分配されてもよい。
図5Aに関してさらに詳細には、いくつかの実施形態では、負荷、作業、またはネットワークトラフィックが、機能並列性500に従って、コア505の間で分配されることができる。機能並列性は、1つまたはそれを上回る個別の機能を果たす各コアに基づいてもよい。いくつかの実施形態では、第1のコアが、第1の機能を果たしてもよい一方で、第2のコアは、第2の機能を果たす。機能並列性アプローチでは、マルチコアシステムによって果たされる機能は、分割され、機能性に従って各コアに分配される。いくつかの実施形態では、機能並列性は、タスク並列性と称されてもよく、各プロセッサまたはコアが同一もしくは異なるデータに異なるプロセスまたは機能を実行するときに、達成されてもよい。コアまたはプロセッサは、同一もしくは異なるコードを実行してもよい。ある場合には、異なる実行スレッドまたはコードは、それらが作動するにつれて相互と通信してもよい。通信は、ワークフローの一部として、1つのスレッドから次のスレッドにデータをパスするように行われてもよい。
いくつかの実施形態では、機能並列性500に従って、コア505を横断して作業を分配するステップは、ネットワーク入出力管理(NWI/O)510A、セキュアソケットレイヤ(SSL)暗号化および暗号解読510B、ならびに伝送制御プロトコル(TCP)機能510C等の特定の機能に従って、ネットワークトラフィックを分配するステップを含むことができる。これは、使用されている機能性の量またはレベルに基づく、作業、性能、または計算負荷515につながり得る。いくつかの実施形態では、データ並列性540に従って、コア505を横断して作業を分配するステップは、特定のハードウェアまたはソフトウェアコンポーネントと関連付けられるデータを分配することに基づいて、ある量の作業515を分配するステップを含むことができる。いくつかの実施形態では、フローベースのデータ並列性520に従って、コア505を横断して作業を分配するステップは、各コア上の作業515A−Nの量が、同様である、実質的に等しい、または比較的均等に分配され得るように、コンテキストもしくはフローに基づいてデータを分配するステップを含むことができる。
機能並列性アプローチの場合、各コアは、アプライアンスのパケットエンジンもしくはVIPによって提供される複数の機能性のうちの1つまたはそれを上回る機能性を起動するように構成されてもよい。例えば、コア1が、アプライアンス200’のためのネットワークI/O処理を行ってもよい一方で、コア2は、アプライアンスのためのTCP接続管理を行う。同様に、コア3が、SSLオフローディングを行ってもよい一方で、コア4は、層7またはアプリケーション層処理およびトラフィック管理を行ってもよい。コアはそれぞれ、同一機能または異なる機能を果たしてもよい。コアはそれぞれ、1つよりも多くの機能を果たしてもよい。コアのうちのいずれかは、図2Aおよび2Bと併せて識別ならびに/または説明される、機能性もしくはその部分のうちのいずれかを起動してもよい。本アプローチでは、コアを横断する作業は、粗粒または細粒様式のいずれかで機能別に分割されてもよい。ある場合には、図5Aに図示されるように、機能別の分割は、性能または負荷515の異なるレベルで起動する、異なるコアにつながり得る。
機能並列性アプローチの場合、各コアは、アプライアンスのパケットエンジンによって提供される複数の機能性のうちの1つまたはそれを上回る機能性を起動するように構成されてもよい。例えば、コア1が、アプライアンス200’のためのネットワークI/O処理を行ってもよい一方で、コア2は、アプライアンスのためのTCP接続管理を行う。同様に、コア3が、SSLオフローディングを行ってもよい一方で、コア4は、層7またはアプリケーション層処理およびトラフィック管理を行ってもよい。コアはそれぞれ、同一機能または異なる機能を果たしてもよい。コアはそれぞれ、1つよりも多くの機能を果たしてもよい。コアのうちのいずれかは、図2Aおよび2Bと併せて識別ならびに/または説明される、機能性もしくはその部分のうちのいずれかを起動してもよい。本アプローチでは、コアを横断する作業は、粗粒または細粒様式のいずれかで機能別に分割されてもよい。ある場合には、図5Aに図示されるように、機能別の分割は、負荷または性能の異なるレベルで起動する、異なるコアにつながり得る。
機能性またはタスクは、任意の配列および方式で分配されてもよい。例えば、図5Bは、第1のコア、すなわち、ネットワークI/O機能性510Aと関連付けられるアプリケーションおよびプロセスを処理する、コア1 505Aを図示する。ネットワークI/Oと関連付けられるネットワークトラフィックは、いくつかの実施形態では、特定のポート番号と関連付けられることができる。したがって、NW I/O510Aと関連付けられるポート宛先を有する、発信および着信パケットは、NW I/Oポートと関連付けられる全てのネットワークトラフィックをハンドリングすることに専用である、コア1 505Aに向かってダイレクトされるであろう。同様に、コア2 505Bは、SSL処理と関連付けられる機能性をハンドリングすることに専用であって、コア4 505Dは、全てのTCPレベル処理および機能性をハンドリングすることに専用であり得る。
図5Aは、ネットワークI/O、SSL、およびTCP等の機能を図示するが、他の機能もコアに割り当てられることができる。これらの他の機能は、本明細書に説明される機能または動作のうちのいずれか1つもしくはそれを上回るものを含むことができる。例えば、図2Aおよび2Bと併せて説明される機能のうちのいずれかは、機能性基準でコアを横断して分配されてもよい。ある場合には、第1のVIP275Aが、第1のコア上で起動してもよい一方で、異なる構成を伴う第2のVIP275Bは、第2のコア上で起動してもよい。いくつかの実施形態では、各コア505が特定の機能と関連付けられる処理をハンドリングすることができるように、各コア505は、その特定の機能性をハンドリングすることができる。例えば、コア2 505Bが、SSLオフローディングをハンドリングしてもよい一方で、コア4 505Dは、アプリケーション層処理およびトラフィック管理をハンドリングしてもよい。
他の実施形態では、作業、負荷、またはネットワークトラフィックが、任意のタイプおよび形態のデータ並列性540に従って、コア505の間で分配されてもよい。いくつかの実施形態では、データ並列性は、異なる分配されたデータ上で同一のタスクまたは機能性を果たす各コアによって、マルチコアシステムにおいて達成されてもよい。いくつかの実施形態では、単一の実行スレッドまたはコードが、全てのデータ上の動作を制御する。他の実施形態では、異なるスレッドまたは命令が、動作を制御するが、同一コードを実行してもよい。いくつかの実施形態では、データ並列性が、パケットエンジン、vServer(VIP)275A−C、ネットワークインターフェースカード(NIC)542D−E、および/またはアプライアンス200上に含まれる、もしくはそれと関連付けられる任意の他のネットワーキングハードウェアまたはソフトウェアの観点から、達成される。例えば、各コアは、同一パケットエンジンまたはVIPコードもしくは構成を起動してもよいが、分配されたデータの異なるセット上で動作してもよい。各ネットワーキングハードウェアまたはソフトウェア構築物は、異なる、様々な、もしくは実質的に同一の量のデータを受信することができ、結果として、様々な、異なる、または比較的同一の量の負荷515を有し得る。
データ並列性アプローチの場合、作業は、VIP、NIC、および/またはVIPもしくはNICのデータフローに基づいて、分割されて分配されてもよい。これらのアプローチのうちの1つでは、マルチコアシステムの作業は、データの分配されたセット上に各VIP作業を有することによって、VIPの間で分割または分配されてもよい。例えば、各コアは、1つまたはそれを上回るVIPを起動するように構成されてもよい。ネットワークトラフィックは、そのトラフィックをハンドリングする各VIPのためのコアに分配されてもよい。これらのアプローチのうちの別のものでは、アプライアンスの作業は、いずれのNICがネットワークトラフィックを受信するかに基づいて、コアの間で分割または分配されてもよい。例えば、第1のNICのネットワークトラフィックが、第1のコアに分配されてもよい一方で、第2のNICのネットワークトラフィックは、第2のコアに分配されてもよい。ある場合には、コアは、複数のNICからのデータを処理してもよい。
図5Aは、VIP1 275A、VIP2 275B、およびVIP3 275Cの場合のように、単一のコア505と関連付けられる単一のvServerを図示する。いくつかの実施形態では、単一のvServerは、1つまたはそれを上回るコア505と関連付けられることができる。対照的に、1つまたはそれを上回るvServerは、単一のコア505と関連付けられることができる。vServerをコア505と関連付けるステップは、その特定のvServerと関連付けられる全ての機能を処理するように、そのコア505を含んでもよい。いくつかの実施形態では、各コアは、同一コードおよび構成を有する、VIPを実行する。他の実施形態では、各コアは、同一コードを有するが、異なる構成を有する、VIPを実行する。いくつかの実施形態では、各コアは、異なるコードと、同一または異なる構成とを有する、VIPを実行する。
vServerのように、NICはまた、特定のコア505と関連付けられることもできる。多くの実施形態では、NICがデータパケットを受信または伝送するときに、特定のコア505がデータパケットを受信および伝送することに関与する処理をハンドリングするように、NICは、1つまたはそれを上回るコア505に接続されることができる。一実施形態では、単一のNICは、NIC1 542DおよびNIC2 542Eの場合のように、単一のコア505と関連付けられることができる。他の実施形態では、1つまたはそれを上回るNICは、単一のコア505と関連付けられることができる。他の実施形態では、単一のNICは、1つまたはそれを上回るコア505と関連付けられることができる。これらの実施形態では、負荷は、各コア505が実質的に類似する量の負荷を処理するように、1つまたはそれを上回るコア505の間で分配され得る。NICと関連付けられるコア505は、その特定のNICと関連付けられる全ての機能および/またはデータを処理してもよい。
VIPまたはNICのデータに基づいて、コアを横断して作業を分配するステップは、独立性のレベルを有し得るが、いくつかの実施形態では、これは、図5Aの様々な負荷によって図示されるように、コアの不平衡使用につながり得る。
いくつかの実施形態では、負荷、作業、またはネットワークトラフィックは、任意のタイプおよび形態のデータフローに基づいて、コア505の間で分配されることができる。これらのアプローチのうちの別のものでは、作業は、データフローに基づいてコアの間で分割または分配されてもよい。例えば、クライアントと、アプライアンスをトラバースするサーバとの間のネットワークトラフィックが、複数のコアのうちの1つのコアに分配され、それによって処理されてもよい。ある場合には、最初にセッションまたは接続を確立するコアは、そのセッションまたは接続のためのネットワークトラフィックが分配される、コアであってもよい。いくつかの実施形態では、データフローは、クライアント上のアプリケーションから生じるトランザクション、要求/応答通信、またはトラフィック等のネットワークトラフィックの任意の単位もしくは部分に基づく。このようにして、いくつかの実施形態では、クライアントとアプライアンス200’をトラバースするサーバとの間のデータフローは、他のアプローチよりも平衡のとれた様式で分配されてもよい。
フローベースのデータ並列性520では、データの分布は、要求/応答ペアリング、トランザクション、セッション、接続、またはアプリケーション通信等の任意のタイプのデータのフローに関連する。例えば、クライアントと、アプライアンスをトラバースするサーバとの間のネットワークトラフィックが、複数のコアのうちの1つのコアに分配され、それによって処理されてもよい。ある場合には、最初にセッションまたは接続を確立するコアは、そのセッションまたは接続のためのネットワークトラフィックが分配される、コアであってもよい。データフローの分布は、各コア505が、実質的に等しい、または比較的均等に分配された量の負荷、データ、もしくはネットワークトラフィックを搬送するようなものであってもよい。
いくつかの実施形態では、データフローは、クライアント上のアプリケーションから生じるトランザクション、要求/応答通信、またはトラフィック等のネットワークトラフィックの任意の単位もしくは部分に基づく。このようにして、いくつかの実施形態では、クライアントとアプライアンス200’をトラバースするサーバとの間のデータフローは、他のアプローチよりも平衡のとれた様式で分配されてもよい。一実施形態では、データフローは、トランザクションまたは一連のトランザクションに基づいて、分配されることができる。本トランザクションは、いくつかの実施形態では、クライアントとサーバとの間にあることができ、IPアドレスまたは他のパケット識別子によって特徴付けられることができる。例えば、コア1 505Aは、特定のクライアントと特定のサーバとの間のトランザクションに専用であることができ、したがって、コア1 505A上の負荷515Aは、特定のクライアントとサーバとの間のトランザクションと関連付けられるネットワークトラフィックから成ってもよい。ネットワークトラフィックをコア1 505Aに配分することは、特定のクライアントまたはサーバのいずれかから生じる全てのデータパケットをコア1 505Aにルーティングすることによって、達成されることができる。
作業または負荷は、部分的にトランザクションに基づいてコアに分配されることができるが、他の実施形態では、負荷または作業は、パケット毎の基準で配分されることができる。これらの実施形態では、アプライアンス200は、データパケットを傍受し、それらを、最少量の負荷を有するコア505に配分することができる。例えば、コア1上の負荷515Aが、残りのコア505B−N上の負荷515B−Nより少ないため、アプライアンス200は、第1の着信データパケットをコア1 505Aに配分し得る。いったん第1のデータパケットがコア1 505Aに配分されると、コア1 505A上の負荷515Aの量は、第1のデータパケットを処理するために必要とされる処理リソースの量に比例して増加される。アプライアンス200が第2のデータパケットを傍受するとき、コア4 505Dが第2の最少量の負荷を有するため、アプライアンス200は、負荷をコア4 505Dに配分するであろう。最少量の負荷を伴うコアにデータパケットを配分することは、いくつかの実施形態では、各コア505に分配される負荷515A−Nが実質的に等しいままであることを確実にすることができる。
他の実施形態では、負荷は、ネットワークトラフィックのある区分が特定のコア505に配分される、単位毎の基準で配分されることができる。上記の実施例は、パケット毎の基準で負荷平衡を例証する。他の実施形態では、負荷は、全ての10、100、または1,000個のパケットが、最少量の負荷を有するコア505に配分されるように、パケットの数に基づいて配分されることができる。コア505に配分されるパケットの数は、アプリケーション、ユーザ、または管理者によって判定される数であることができ、ゼロより大きい任意の数であることができる。なおも他の実施形態では、負荷は、パケットが所定の時間量にわたって特定のコア505に分配されるように、時間メトリックに基づいて配分されることができる。これらの実施形態では、パケットは、5ミリ秒にわたって、またはユーザ、プログラム、システム、管理者によって、もしくは別様に判定される、任意の時間期間にわたって、特定のコア505に配分されることができる。所定の時間期間が経過した後、データパケットが、所定の時間期間にわたって異なるコア505に伝送される。
1つまたはそれを上回るコア505の間で作業、負荷、もしくはネットワークトラフィックを分配するためのフローベースのデータ並列性方法は、上記の実施形態の任意の組み合わせを備えることができる。これらの方法は、アプライアンス200の任意の部分によって、パケットエンジン等のコア505のうちの1つの上で実行するアプリケーションもしくは実行可能命令のセットによって、またはアプライアンス200と通信するコンピューティングデバイス上で実行する任意のアプリケーション、プログラム、もしくはエージェントによって、実施されることができる。
図5Aに図示される機能およびデータ並列性計算方式は、機能並列性500、データ並列性540、フローベースのデータ並列性520、またはそれらの任意の部分を包含する、ハイブリッド並列性もしくは分散処理方式を生成するように、任意の様式で組み合わせられることができる。ある場合には、マルチコアシステムは、1つまたはそれを上回るコア505の間で負荷を分配するために、任意のタイプおよび形態の負荷平衡方式を使用してもよい。負荷平衡方式は、機能およびデータ並列性方式のうちのいずれかまたはそれらの組み合わせとの任意の組み合わせで、使用されてもよい。
図5Bには、任意のタイプおよび形態の1つまたはそれを上回るシステム、アプライアンス、デバイス、もしくはコンポーネントであり得る、マルチコアシステム545の実施形態が図示されている。本システム545は、いくつかの実施形態では、1つまたはそれを上回る処理コア505A−Nを有する、アプライアンス200内に含まれることができる。システム545はさらに、メモリバス556と通信する、1つまたはそれを上回るパケットエンジン(PE)もしくはパケット処理エンジン(PPE)548A−Nを含むことができる。メモリバスは、1つまたはそれを上回る処理コア505A−Nと通信するために使用されてもよい。また、システム545内には、1つまたはそれを上回るネットワークインターフェースカード(NIC)552と、1つまたはそれを上回る処理コア505A−Nとさらに通信し得るフローディストリビュータ550とが含まれることができる。フローディストリビュータ550は、受信側スケーラ(RSS)または受信側スケーリング(RSS)モジュール560を備えることができる。
さらに図5Bを参照すると、さらに詳細には、一実施形態では、パケットエンジン548A−Nは、図2Aおよび2Bに説明されるアプライアンスの任意の部分等の本明細書に説明されるアプライアンス200の任意の部分を備えることができる。パケットエンジン548A−Nは、いくつかの実施形態では、以下の要素、すなわち、パケットエンジン240、ネットワークスタック267、キャッシュマネージャ232、ポリシエンジン236、圧縮エンジン238、暗号化エンジン234、GUI210、CLI212、シェルサービス214、監視プログラム216、およびメモリバス556または1つもしくはそれを上回るコア505A−Nのいずれかの1つからデータパケットを受信することが可能な任意の他のソフトウェアまたはハードウェア要素のうちのいずれかを備えることができる。いくつかの実施形態では、パケットエンジン548A−Nは、1つまたはそれを上回るvServer275A−Nもしくはその任意の部分を備えることができる。他の実施形態では、パケットエンジン548A−Nは、以下の機能性、すなわち、SSL VPN280、イントラネットUP282、切替284、DNS286、パケット加速288、App FW280、監視エージェント197によって提供される監視等の監視、TCPスタックとして機能することと関連付けられる機能性、負荷平衡、SSLオフローディングおよび処理、コンテンツ切替、ポリシ評価、キャッシング、圧縮、エンコード、解凍、デコード、アプリケーションファイアウォール機能性、XML処理および加速、ならびにSSL VPNコネクティビティの任意の組み合わせを提供することができる。
パケットエンジン548A−Nは、いくつかの実施形態では、特定のサーバ、ユーザ、クライアント、またはネットワークと関連付けられることができる。パケットエンジン548が特定のエンティティと関連付けられるとき、そのパケットエンジン548は、そのエンティティと関連付けられるデータパケットを処理することができる。例えば、パケットエンジン548が第1のユーザと関連付けられる場合、そのパケットエンジン548は、第1のユーザによって生成されるパケット、または第1のユーザと関連付けられる宛先アドレスを有するパケットを処理し、それに作用するであろう。同様に、パケットエンジン548は、パケットエンジン548が、特定のエンティティによって生成されていない、またはそのエンティティに向けられていない任意のデータパケットを処理し、別様にそれに作用することができるように、そのエンティティと関連付けられないことを選定してもよい。
ある事例では、パケットエンジン548A−Nは、図5Aに図示される機能および/またはデータ並列性方式のうちのいずれかを実施するように構成されることができる。これらの事例では、パケットエンジン548A−Nは、分布が並列性または分布方式に従うように、処理コア505A−Nの間で機能もしくはデータを分配することができる。いくつかの実施形態では、単一のパケットエンジン548A−Nが、負荷平衡方式を実施する一方で、他の実施形態では、1つまたはそれを上回るパケットエンジン548A−Nが、負荷平衡方式を実施する。各コア505A−Nは、一実施形態では、負荷平衡がパケットエンジンによって実施され得るように、特定のパケットエンジン548と関連付けられることができる。負荷平衡は、本実施形態では、パケットエンジン548A−Nが負荷を分配する場所を集合的に判定することができるように、コア505と関連付けられる各パケットエンジン548A−Nが、コアと関連付けられる他のパケットエンジンと通信することを要求してもよい。本プロセスの一実施形態は、負荷のために各パケットエンジンから投票を受信する、アービタを含むことができる。アービタは、部分的に、エンジンの投票の時期、ある場合には、エンジンの関連付けられるコア505上の負荷の現在の量と関連付けられる優先順位値に基づいて、負荷を各パケットエンジン548A−Nに分配することができる。
コア上で起動するパケットエンジンのうちのいずれかは、ユーザモード、カーネル、またはそれらの任意の組み合わせで起動してもよい。いくつかの実施形態では、パケットエンジンは、ユーザまたはアプリケーション空間内で起動するアプリケーションもしくはプログラムとして動作する。これらの実施形態では、パケットエンジンは、カーネルによって提供される任意の機能性にアクセスするために、任意のタイプおよび形態のインターフェースを使用してもよい。いくつかの実施形態では、パケットエンジンは、カーネルモードで、またはカーネルの一部として動作する。いくつかの実施形態では、パケットエンジンの第1の部分が、ユーザモードで動作する一方で、パケットエンジンの第2の部分は、カーネルモードで動作する。いくつかの実施形態では、第1のコア上の第1のパケットエンジンが、カーネルモードで実行する一方で、第2のコア上の第2のパケットエンジンは、ユーザモードで実行する。いくつかの実施形態では、パケットエンジンまたはその任意の部分は、NICもしくはその任意のドライバ上で、またはそれと連動して動作する。
いくつかの実施形態では、メモリバス556は、任意のタイプおよび形態のメモリまたはコンピュータバスであることができる。単一のメモリバス556が図5Bで描写されているが、システム545は、任意の数のメモリバス556を備えることができる。一実施形態では、各パケットエンジン548は、1つまたはそれを上回る個々のメモリバス556と関連付けられることができる。
NIC552は、いくつかの実施形態では、本明細書に説明されるネットワークインターフェースカードまたは機構のうちのいずれかであることができる。NIC552は、任意の数のポートを有することができる。NICは、任意のタイプおよび形態のネットワーク104に接続するように設計および構築されることができる。単一のNIC552が図示されているが、システム545は、任意の数のNIC552を備えることができる。いくつかの実施形態では、各コア505A−Nは、1つまたはそれを上回る単一のNIC552と関連付けられることができる。したがって、各コア505は、特定のコア505専用の単一のNIC552と関連付けられることができる。
コア505A−Nは、本明細書に説明されるプロセッサのうちのいずれかを備えることができる。さらに、コア505A−Nは、本明細書に説明されるコア505構成のうちのいずれかに従って構成されることができる。なおもさらに、コア505A−Nは、本明細書に説明されるコア505機能性のうちのいずれかを有することができる。図5Bは、7つのコア505A−Gを図示するが、任意の数のコア505が、システム545内に含まれることができる。具体的には、システム545は、「N」個のコアを備えることができ、「N」は、ゼロより大きい整数である。
コアは、使用するためにそのコアに配分される、または割り当てられる、メモリを有する、もしくは使用してもよい。メモリは、そのコアのプライベートまたはローカルメモリと見なされ、そのコアのみによってアクセス可能であり得る。コアは、共有される、または複数のコアに割り当てられる、メモリを有する、もしくは使用してもよい。メモリは、1つを上回るコアによってアクセス可能である公共または共有メモリと見なされてもよい。コアは、プライベートおよび公共メモリの任意の組み合わせを使用してもよい。各コアのための別個のアドレス空間を用いることで、あるレベルの協調が、同一アドレス空間を使用する場合から排除される。別個のアドレス空間を用いることで、コアは、他のコアとの対立について心配することなく、コアの独自のアドレス空間内で情報およびデータに作業を行うことができる。各パケットエンジンは、TCPおよび/またはSSL接続のための別個のメモリプールを有してもよい。
さらに図5Bを参照すると、図5Aに関連して上記で説明されるコア505の機能性および/または実施形態のうちのいずれかが、図4Aならびに4Bに関連して上記で説明される仮想化された環境の任意の実施形態で展開されることができる。物理プロセッサ505の形態で展開されているコア505の機能性の代わりに、そのような機能性は、クライアント102、サーバ106、またはアプライアンス200等の任意のコンピューティングデバイス100上の仮想化された環境400で展開されてもよい。他の実施形態では、アプライアンスまたは単一のデバイスの形態で展開されているコア505の機能性の代わりに、機能性は、任意の配列で複数のデバイスを横断して展開されてもよい。例えば、1つのデバイスは、2つまたはそれを上回るコアを備えてもよく、別のデバイスは、2つまたはそれを上回るコアを備えてもよい。例えば、マルチコアシステムは、コンピューティングデバイスのクラスタ、サーバファーム、またはコンピューティングデバイスのネットワークを含んでもよい。いくつかの実施形態では、コアの形態で展開されているコア505の機能性の代わりに、機能性は、複数の単一コアプロセッサ等の複数のプロセッサ上で展開されてもよい。
一実施形態では、コア505は、任意のタイプおよび形態のプロセッサであってもよい。いくつかの実施形態では、コアは、本明細書に説明される任意のプロセッサまたは中央処理ユニットと実質的に同様に機能することができる。いくつかの実施形態では、コア505は、本明細書に説明される任意のプロセッサの任意の部分を備えてもよい。図5Aは、7つのコアを図示するが、任意の「N」個のコアがアプライアンス200内に存在することができ、「N」は、1より大きい任意の整数である。いくつかの実施形態では、コア505は、共通アプライアンス200内にインストールされることができる一方で、他の実施形態では、コア505は、相互に通信可能に接続される1つまたはそれを上回るアプライアンス200内にインストールされることができる。コア505は、いくつかの実施形態では、グラフィックス処理ソフトウェアを備えることができる一方で、他の実施形態では、コア505は、一般処理能力を提供する。コア505は、物理的に相互の近傍にインストールされることができ、および/または相互に通信可能に接続されることができる。コアは、物理的に任意のタイプおよび形態のバスまたはサブシステムによって接続され、ならびに/もしくはコアに、コアから、および/またはコアの間でデータを伝送するためにコアに通信可能に結合されてもよい。
各コア505は、他のコアと通信するためのソフトウェアを備えることができるが、いくつかの実施形態では、コアマネージャ(図示せず)は、各コア505の間の通信を促進することができる。いくつかの実施形態では、カーネルは、コア管理を提供してもよい。コアは、種々のインターフェース機構を使用して、相互とインターフェースをとってもよい、または通信してもよい。いくつかの実施形態では、コア間メッセージングが、コアを接続するバスまたはサブシステムを介してメッセージもしくはデータを第2のコアに送信する第1のコア等のコアの間で通信するために使用されてもよい。いくつかの実施形態では、コアは、任意のタイプおよび形態の共有メモリインターフェースを介して通信してもよい。一実施形態では、全てのコアの間で共有される1つまたはそれを上回るメモリ場所があってもよい。いくつかの実施形態では、各コアは、相互のコアと共有される別個のメモリ場所を有してもよい。例えば、第1のコアは、第2のコアとの第1の共有メモリと、第3のコアとの第2の共有メモリとを有してもよい。いくつかの実施形態では、コアは、カーネルを介した機能コール等の任意のタイプのプログラミングまたはAPIを介して通信してもよい。いくつかの実施形態では、オペレーティングシステムは、複数のコアデバイスを認識してサポートし、コア間通信のためのインターフェースおよびAPIを提供してもよい。
フローディストリビュータ550は、任意のタイプおよび形態のハードウェア上で実行する、任意のアプリケーション、プログラム、ライブラリ、スクリプト、タスク、サービス、プロセス、または任意のタイプおよび形態の実行可能命令であることができる。いくつかの実施形態では、フローディストリビュータ550は、本明細書に説明される動作および機能のうちのいずれかを果たす回路の任意の設計および構築であることができる。いくつかの実施形態では、フローディストリビュータは、コア505および/またはコア上で起動するパケットエンジンもしくはVIPの間のデータパケットの分布を分配、転送、ルーティング、ならびに/もしくは管理する。フローディストリビュータ550は、いくつかの実施形態では、インターフェースマスタまたはマネージャと称されることができる。一実施形態では、フローディストリビュータ550は、アプライアンス200のコアまたはプロセッサ上で実行する実行可能命令のセットを備える。別の実施形態では、フローディストリビュータ550は、アプライアンス200と通信するコンピューティングマシン上で実行する実行可能命令のセットを備える。いくつかの実施形態では、フローディストリビュータ550は、ファームウェア等のNIC上で実行する実行可能命令のセットを備える。なおも他の実施形態では、フローディストリビュータ550は、コアまたはプロセッサの間でデータパケットを分配するソフトウェアおよびハードウェアの任意の組み合わせを備える。一実施形態では、フローディストリビュータ550が、コア505A−Nのうちの少なくとも1つの上で実行する一方で、他の実施形態では、各コア505A−Nに割り当てられる別個のフローディストリビュータ550が、関連付けられるコア505A−N上で実行する。フローディストリビュータは、コアを横断するフローの平衡をとるために、任意のタイプおよび形態の統計的または確率的アルゴリズムもしくは意思決定を使用してもよい。NIC等のアプライアンスのハードウェアまたはカーネルは、NICおよび/もしくはコアを横断して順次動作をサポートするように設計ならびに構築されてもよい。
システム545が1つまたはそれを上回るフローディストリビュータ550を備える、実施形態では、各フローディストリビュータ550は、プロセッサ505またはパケットエンジン548と関連付けられることができる。フローディストリビュータ550は、各フローディストリビュータ550が、システム545内で実行する他のフローディストリビュータ550と通信することを可能にする、インターフェース機構を備えることができる。1つの事例では、1つまたはそれを上回るフローディストリビュータ550は、相互と通信することによって、負荷の平衡をとる方法を判定することができる。本プロセスは、次いで、いずれのフローディストリビュータ550が負荷を受容するべきかを判定する、アービタに投票を提出するために、上記で説明されるプロセスと実質的に同様に動作することができる。他の実施形態では、第1のフローディストリビュータ550’は、関連付けられるコア上の負荷を識別し、以下の基準、すなわち、関連付けられるコア上の負荷が所定の閾値を上回ること、関連付けられるコア上の負荷が所定の閾値を下回ること、関連付けられるコア上の負荷が他のコア上の負荷より少ないこと、または部分的にプロセッサ上の負荷の量に基づいてデータパケットを転送する場所を判定するために使用されることができる任意の他の測定基準のうちのいずれかに基づいて、第1のデータパケットを関連付けられるコアに転送するかどうかを判定することができる。
フローディストリビュータ550は、本明細書に説明されるもの等の分布、計算、または負荷平衡方式に従って、コア505の間でネットワークトラフィックを分配することができる。一実施形態では、フローディストリビュータは、機能並列性分布方式550、データ並列性負荷分布方式540、フローベースのデータ並列性分布方式520、またはこれらの分布方式もしくは複数のプロセッサの間で負荷を分配するための任意の負荷平衡方式の任意の組み合わせのうちのいずれか1つに従って、ネットワークトラフィックを分配することができる。したがって、フローディストリビュータ550は、データパケットを取り込み、動作負荷平衡または分布方式に従って、プロセッサを横断してそれらを分配することによって、負荷ディストリビュータとして作用することができる。一実施形態では、フローディストリビュータ550は、それに応じて、パケット、作業、または負荷を分配する方法を判定する1つまたはそれを上回る動作、機能、もしくは論理を備えることができる。なおも他の実施形態では、フローディストリビュータ550は、ソースアドレスおよびデータパケットと関連付けられる宛先アドレスを識別し、それに応じて、パケットを分配し得る、1つまたはそれを上回るサブ動作、機能、もしくは論理を備えることができる。
いくつかの実施形態では、フローディストリビュータ550は、1つまたはそれを上回るコア505の間でデータパケットを分配する、受信側スケーリング(RSS)ネットワークドライバモジュールもしくは任意のタイプおよび形態の実行可能命令を備えることができる。RSSモジュールは、ハードウェアおよびソフトウェアの任意の組み合わせを備えることができる。いくつかの実施形態では、RSSモジュールは、コア505A−Nを横断して、またはマルチプロセッサネットワーク内の複数のプロセッサの間でデータパケットを分配するように、フローディストリビュータ550と連動して作動する。RSSモジュールは、いくつかの実施形態では、NIC552内で実行することができ、他の実施形態では、コア505のうちのいずれか1つの上で実行することができる。
いくつかの実施形態では、RSSモジュールは、MICROSOFT受信側スケーリング(RSS)方式を使用する。一実施形態では、RSSは、データの順序正しい配信を維持しながら、受信処理がシステム内の複数のプロセッサを横断して平衡をとられることを可能にする、Microsoft拡張可能ネットワーキングイニシアチブ技術である。RSSは、ネットワークパケットを処理するためのコアまたはプロセッサを判定するために任意のタイプおよび形態のハッシング方式を使用してもよい。
RSSモジュールは、Toeplitzハッシュ関数等の任意のタイプおよび形態のハッシュ関数を適用することができる。ハッシュ関数は、ハッシュタイプまたは一連の値のうちのいずれかに適用されてもよい。ハッシュ関数は、任意のセキュリティレベルのセキュアなハッシュであってもよい、または別様に暗号論的にセキュアである。ハッシュ関数は、ハッシュキーを使用してもよい。キーのサイズは、ハッシュ関数に依存している。Toeplitzハッシュに関して、サイズは、IPv6については40バイト、IPv4については16バイトであってもよい。
ハッシュ関数は、いずれか1つまたはそれを上回る基準もしくは設計目標に基づいて設計および構築されてもよい。いくつかの実施形態では、TCP/IPv4、TCP/IPv6、IPv4、およびIPv6ヘッダを含む、異なるハッシュ入力ならびに異なるハッシュタイプのハッシュ結果の均等な分布を提供する、ハッシュ関数が使用されてもよい。いくつかの実施形態では、少数のバケット(例えば、2つまたは4つ)が存在しているときに均等に分配されるハッシュ結果を提供する、ハッシュ関数が使用されてもよい。いくつかの実施形態では、多数のバケット(例えば、64個のバケット)が存在したときにランダムに分配されるハッシュ結果を提供する、ハッシュ関数が使用されてもよい。いくつかの実施形態では、ハッシュ関数は、計算またはリソース使用量のレベルに基づいて判定される。いくつかの実施形態では、ハッシュ関数は、ハードウェアでハッシュを実装することの容易性または困難に基づいて判定される。いくつかの実施形態では、ハッシュ関数は、悪意のある遠隔ホストが、全てハッシュするであろうパケットを同一バケットに送信することの容易性または困難に基づいて、判定される。
RSSモジュールは、一連の値等の任意のタイプおよび形態の入力からハッシュを生成してもよい。本一連の値は、ネットワークパケットの任意のヘッダ、フィールド、またはペイロード、もしくはそれらの部分等のネットワークパケットの任意の部分を含むことができる。いくつかの実施形態では、ハッシュへの入力は、ハッシュタイプと称され、以下、すなわち、少なくとも2つのIPアドレスと、2つのポートとを備える、4タプル、値のいずれか4つのセットを備える4タプル、6タプル、2タプル、および/または任意の他の一連の数もしくは値のうちのいずれか等のネットワークパケットまたはデータフローと関連付けられる情報の任意のタプルを含んでもよい。
以下は、RSSによって使用され得る、ハッシュタイプの実施例である。
ソースTCPポート、ソースIPバージョン4(IPv4)アドレス、宛先TCPポート、および宛先IPv4アドレスの4タプル。
ソースTCPポート、ソースIPバージョン6(IPv6)アドレス、宛先TCPポート、および宛先IPv6アドレスの4タプル。
ソースIPv4アドレスおよび宛先IPv4アドレスの2タプル。
ソースIPv6アドレスおよび宛先IPv6アドレスの2タプル。
IPv6拡張ヘッダを解析するためのサポートを含む、ソースIPv6アドレスおよび宛先IPv6アドレスの2タプル。
ハッシュ結果またはその任意の部分は、ネットワークパケットを分配するためのパケットエンジンもしくはVIP等のコアまたはエンティティを識別するために使用されてもよい。いくつかの実施形態では、1つまたはそれを上回るハッシュビットもしくはマスクが、ハッシュ結果に適用される。ハッシュビットまたはマスクは、任意の数のビットもしくはバイトであってもよい。NICは、7ビット等の任意の数のビットをサポートしてもよい。ネットワークスタックは、初期化中に使用される実際のビットの数を設定してもよい。数は、1〜7を含むであろう。
ハッシュ結果は、バケットテーブルまたは間接テーブル等の任意のタイプおよび形態のテーブルを介して、コアもしくはエンティティを識別するために使用されてもよい。いくつかの実施形態では、ハッシュ結果ビットの数は、テーブルの中へインデックス化するために使用される。ハッシュマスクの範囲は、間接テーブルのサイズを効果的に定義してもよい。ハッシュ結果の任意の部分またはハッシュ結果自体が、間接テーブルをインデックス化するために使用されてもよい。テーブル内の値は、コアまたはプロセッサ識別子によって等、コアもしくはプロセッサのうちのいずれかを識別してもよい。いくつかの実施形態では、マルチコアシステムのコアの全てが、テーブル内で識別される。他の実施形態では、マルチコアシステムのコアのポートが、テーブル内で識別される。間接テーブルは、任意の数のバケット、例えば、ハッシュマスクによってインデックス化され得る、2〜128個のバケットを備えてもよい。各バケットは、コアまたはプロセッサを識別する、一連のインデックス値を備えてもよい。いくつかの実施形態では、フローコントローラおよび/またはRSSモジュールは、間接テーブルを変更することによって、ネットワークの平衡を再びとり、ネットワーク負荷の平衡を再びとってもよい。
いくつかの実施形態では、マルチコアシステム545は、RSSドライバまたはRSSモジュールを含まない。これらの実施形態のうちのいくつかでは、ソフトウェアステアリングモジュール(図示せず)またはシステム内のRSSモジュールのソフトウェア実施形態が、パケットをマルチコアシステム545内のコア505にステアリングするように、フローディストリビュータ550と連動して、またはその一部として動作することができる。
フローディストリビュータ550は、いくつかの実施形態では、アプライアンス200の上、コア505のうちのいずれか1つの上、およびマルチコアシステム545内に含まれるデバイスまたはコンポーネントのうちのいずれか1つの上の任意のモジュールもしくはプログラム内で実行する。いくつかの実施形態では、フローディストリビュータ550が、第1のコア505A上で実行することができる一方で、他の実施形態では、フローディストリビュータ550は、NIC552上で実行することができる。なおも他の実施形態では、フローディストリビュータ550’のインスタンスが、マルチコアシステム575に含まれる各コア505上で実行することができる。本実施形態では、フローディストリビュータ550’の各インスタンスは、コア505を横断してパケットを往復して転送するように、フローディストリビュータ550’の他のインスタンスと通信することができる。要求パケットへの応答が、同一のコアによって処理されない場合がある、すなわち、第1のコアが要求を処理する一方で、第2のコアが応答を処理する、状況が存在する。これらの状況では、フローディストリビュータ550’のインスタンスは、パケットを傍受し、それを所望または正しいコア505に転送することができ、すなわち、フローディストリビュータインスタンス550’は、応答を第1のコアに転送することができる。フローディストリビュータ550’の複数のインスタンスが、任意の数のコア505およびコア505の任意の組み合わせの上で実行することができる。
フローディストリビュータは、いずれか1つまたはそれを上回るルールもしくはポリシに応答して動作してもよい。ルールは、ネットワークパケット、データ、またはデータフローを受信するようにコアもしくはパケット処理エンジンを識別してもよい。ルールは、ソースおよび宛先IPアドレスならびにソースおよび宛先ポートの4タプル等のネットワークパケットに関連する任意のタイプおよび形態のタプル情報を識別してもよい。ルールによって規定されるタプルに合致する、受信されたパケットに基づいて、フローディストリビュータは、パケットをコアまたはパケットエンジンに転送してもよい。いくつかの実施形態では、パケットは、共有メモリおよび/またはコア間メッセージングを介して、コアに転送される。
図5Bは、マルチコアシステム545内で実行するものとしてフローディストリビュータ550を図示するが、いくつかの実施形態では、フローディストリビュータ550は、マルチコアシステム545から遠隔に位置するコンピューティングデバイスまたはアプライアンス上で実行することができる。そのような実施形態では、フローディストリビュータ550は、データパケットを取り込み、1つまたはそれを上回るコア505を横断してパケットを分配するように、マルチコアシステム545と通信することができる。フローディストリビュータ550は、一実施形態では、アプライアンス200に向けられているデータパケットを受信し、分布方式を受信されたデータパケットに適用し、データパケットをマルチコアシステム545の1つまたはそれを上回るコア505に分配することができる。一実施形態では、フローディストリビュータ550は、各パケットがマルチコアシステム55のサブノードに向かって標的化されるように、各パケットと関連付けられるメタデータを改変することによって、ルータが特定のコア505を標的化し得るように、ルータまたは他のアプライアンスに含まれることができる。そのような実施形態では、CISCOのvnタグ機構が、適切なメタデータを用いて各パケットを改変する、またはタグ付けするために使用されることができる。
図5Cには、1つまたはそれを上回る処理コア505A−Nを備える、マルチコアシステム575の実施形態が図示されている。要するに、コア505のうちの1つは、制御コア505Aとして指定されることができ、かつ他のコア505のための制御プレーン570として使用されることができる。他のコアが、データプレーン内で動作する二次コアであってもよい一方で、制御コアは、制御プレーンを提供する。コア505A−Nは、グローバルキャッシュ580を共有してもよい。制御コアが、制御プレーンを提供する一方で、マルチコアシステム内の他のコアは、データプレーンを形成または提供する。これらのコアが、ネットワークトラフィック上でデータ処理機能性を果たす一方で、制御は、マルチコアシステムの初期化、構成、および制御を提供する。
さらに図5Cを参照すると、さらに詳細には、コア505A−Nならびに制御コア505Aは、本明細書に説明される任意のプロセッサであることができる。さらに、コア505A−Nおよび制御コア505Aは、図5Cに説明されるシステム575内で機能することが可能な任意のプロセッサであることができる。なおもさらに、コア505A−Nおよび制御コア505Aは、本明細書に説明される任意のコアまたはコアのグループであることができる。制御コアは、他のコアと異なるタイプのコアまたはプロセッサであってもよい。いくつかの実施形態では、制御は、異なるパケットエンジンを動作させてもよい、または他のコアのパケットエンジンと異なって構成されるパケットエンジンを有してもよい。
コアのそれぞれのメモリの任意の部分は、コアによって共有されるグローバルキャッシュに配分されてもよい、またはそれに使用されてもよい。要するに、各コアのメモリのそれぞれの所定の割合または所定の量が、グローバルキャッシュに使用されてもよい。例えば、各コアの各メモリの50%が、共有グローバルキャッシュに専用である、または配分されてもよい。すなわち、図示される実施形態では、制御プレーンコアまたはコア1を除外する各コアの2GBが、28GB共有グローバルキャッシュを形成するために使用されてもよい。構成サービスを介する等の制御プレーンの構成は、共有グローバルキャッシュに使用されるメモリの量を判定してもよい。いくつかの実施形態では、各コアは、グローバルキャッシュによって使用するための異なる量のメモリを提供してもよい。他の実施形態では、いずれか1つのコアは、いかなるメモリも提供しない、またはグローバルキャッシュを使用しない場合がある。いくつかの実施形態では、コアのうちのいずれかはまた、グローバル共有メモリに配分されていないメモリ内にローカルキャッシュを有してもよい。コアはそれぞれ、ネットワークトラフィックの任意の部分をグローバル共有キャッシュに記憶してもよい。コアはそれぞれ、要求または応答で使用するように、任意のコンテンツのためのキャッシュをチェックしてもよい。コアのうちのいずれかは、データフロー、要求、または応答で使用するように、グローバル共有キャッシュからコンテンツを取得してもよい。
グローバルキャッシュ580は、本明細書に説明される任意のメモリまたは記憶要素等の任意のタイプおよび形態のメモリまたは記憶要素であることができる。いくつかの実施形態では、コア505は、所定量のメモリ(すなわち、32GBまたはシステム575にふさわしい任意の他のメモリ量)へのアクセスを有してもよい。グローバルキャッシュ580が、その所定量のメモリから配分されることができる一方で、残りの利用可能なメモリは、コア505の間で配分されることができる。他の実施形態では、各コア505は、所定量のメモリを有することができる。グローバルキャッシュ580は、各コア505に配分されたメモリの量を備えることができる。本メモリ量は、バイトで測定されることができる、または各コア505に配分されたメモリの割合として測定されることができる。したがって、グローバルキャッシュ580は、各コア505と関連付けられるメモリからの1GBのメモリを備えることができる、または各コア505と関連付けられるメモリの20%もしくは半分を備えることができる。いくつかの実施形態では、コア505の一部のみが、メモリをグローバルキャッシュ580に提供する一方で、他の実施形態では、グローバルキャッシュ580は、コア505に割り当てられていないメモリを備えることができる。
各コア505は、ネットワークトラフィックまたはキャッシュデータを記憶するためにグローバルキャッシュ580を使用することができる。いくつかの実施形態では、コアのパケットエンジンは、複数のパケットエンジンによって記憶されるデータをキャッシュして使用するために、グローバルキャッシュを使用する。例えば、図2Aのキャッシュマネージャおよび図2Bキャッシュ機能性は、加速のためにデータを共有するようにグローバルキャッシュを使用してもよい。例えば、パケットエンジンはそれぞれ、HTMLデータ等の応答をグローバルキャッシュに記憶してもよい。コア上で動作するキャッシュマネージャのうちのいずれかは、クライアント要求へのキャッシュ応答を供給するように、グローバルキャッシュにアクセスしてもよい。
いくつかの実施形態では、コア505は、部分的にポートに基づいてデータフローを判定するために使用され得る、ポート配分テーブルを記憶するために、グローバルキャッシュ580を使用することができる。他の実施形態では、コア505は、着信および発信データパケットをダイレクトする場所を判定するためにフローディストリビュータによって使用され得る、アドレスルックアップテーブルまたは任意の他のテーブルもしくはリストを記憶するために、グローバルキャッシュ580を使用することができる。コア505は、いくつかの実施形態では、キャッシュ580から読み取ること、およびそれに書き込むことができる一方で、他の実施形態では、コア505は、キャッシュ580から読み取ること、またはそれに書き込むことのみできる。コアは、コア間通信を行うためにグローバルキャッシュを使用してもよい。
グローバルキャッシュ580は、各区分が特定のコア505に専用であることができる、個々のメモリ区分に区分化されてもよい。一実施形態では、制御コア505Aが、より多くの量の利用可能なメモリを受信することができる一方で、他のコア505は、グローバルキャッシュ580への様々な量またはアクセスを受信することができる。
いくつかの実施形態では、システム575は、制御コア505Aを備えることができる。図5Cは、制御コアとしてコア1 505Aを図示するが、制御コアは、アプライアンス200またはマルチコアシステム内の任意のコアであることができる。さらに、単一の制御コアのみが描写されているが、システム575は、それぞれ、システムに対するあるレベルの制御を有する、1つまたはそれを上回る制御コアを備えることができる。いくつかの実施形態では、1つまたはそれを上回る制御コアはそれぞれ、システム575の特定の側面を制御することができる。例えば、1つのコアが、いずれの分布方式を使用するかを決定することを制御することができる一方で、別のコアは、グローバルキャッシュ580のサイズを判定することができる。
マルチコアシステムの制御プレーンは、専用管理コアとして、またはマスタコアとしてのコアの指定および構成であってもよい。本制御プレーンコアは、マルチコアシステム内の複数のコアの動作および機能性の制御、管理、ならびに協調を提供してもよい。本制御プレーンコアは、マルチコアシステム内の複数のコアの初期化および構成を含む、同一コアの間のシステムのメモリの配分ならびに使用の制御、管理、および協調を提供してもよい。いくつかの実施形態では、制御プレーンは、データフローに基づいて、コアへのデータフローの割当およびコアへのネットワークパケットの分布を制御するためのフローディストリビュータを含む。いくつかの実施形態では、制御プレーンコアは、パケットエンジンを起動し、他の実施形態では、制御プレーンコアは、本システムの他のコアの管理および制御に専用である。
制御コア505Aは、どれだけのメモリが各コア505に配分されるべきかを判定するステップ、またはいずれのコア505が特定の機能またはハードウェア/ソフトウェアエンティティをハンドリングするように割り当てられるべきかを判定するステップ等の他のコア505に対するあるレベルの制御を実行することができる。制御コア505Aは、いくつかの実施形態では、制御プレーン570内でこれらのコア505に対する制御を実行してもよい。したがって、制御コア505Aによって制御されないプロセッサが制御プレーン570の外側に存在することができる。制御プレーン570の境界を判定するステップは、システム575内で実行する制御コア505Aまたはエージェントによって、制御コア505Aによって制御される、これらのコア505のリストを維持するステップを含むことができる。制御コア505Aは、以下、すなわち、コアの初期化、コアが利用不可能であるときを判定するステップ、1つのコアが故障したときに負荷を他のコア505に再配分するステップ、いずれの分布方式を実装するかを判定するステップ、いずれのコアがネットワークトラフィックを受信するべきかを判定するステップ、どれだけのキャッシュが各コアに配分されるべきかを判定するステップ、特定の機能または要素を特定のコアに割り当てるかどうかを判定するステップ、コアが相互と通信することを可能にするかどうかを判定するステップ、グローバルキャッシュ580のサイズを判定するステップ、およびシステム575内のコアの機能、構成、または動作の任意の他の判定のうちのいずれかを制御することができる。
F.分散クラスタアーキテクチャを提供するためのシステムおよび方法
前の節で議論されるように、トランジスタ間隔およびCPU速度増加に対する限界を克服するために、多くのCPU製造業者は、単一のより高速のCPUさえも可能なものを超えて性能を改良するように、マルチコアCPUを組み込んでいる。類似する、またはさらなる性能獲得が、単一もしくはマルチコアのいずれかである複数のアプライアンスを、分散またはクラスタ化アプライアンスとしてともに動作させることによって、得られてもよい。個々のコンピューティングデバイスまたはアプライアンスは、クラスタのノードと称されてもよい。集中型管理システムが、ノードが単一のコンピューティングシステムとして連動することを可能にするように、負荷平衡、分布、構成、または他のタスクを行ってもよい。外部に、またはサーバおよびクライアントを含む、他のデバイスに対して、多くの実施形態では、クラスタは、典型的な個々のアプライアンスの性能を超える性能を伴うものではあるが、単一の仮想アプライアンスもしくはコンピューティングデバイスと見なされてもよい。
ここで図6を参照すると、コンピューティングデバイスクラスタまたはアプライアンスクラスタ600の実施形態が図示されている。複数のアプライアンス200a−200n、またはデスクトップコンピュータ、サーバ、ラックマウントサーバ、ブレードサーバ、もしくは任意の他のタイプおよび形態のコンピューティングデバイス等のノードと称されることもある、他のコンピューティングデバイスが、単一のアプライアンスクラスタ600に参入されてもよい。アプライアンスクラスタと称されるが、多くの実施形態では、クラスタは、限定ではないが、アプリケーションサーバ、ネットワーク記憶サーバ、バックアップサービス、または任意の他のタイプのコンピューティングデバイスとして動作してもよい。多くの実施形態では、アプライアンスクラスタ600は、アプライアンス200、WAN最適化デバイス、ネットワーク加速デバイス、または上記で議論される他のデバイスの機能の多くを果たすために使用されてもよい。
いくつかの実施形態では、アプライアンスクラスタ600は、同じアプライアンス、1つまたはそれを上回るシャーシ内のブレードサーバ、デスクトップもしくはラックマウントコンピューティングデバイス、または他のデバイス等のコンピューティングデバイスの同種セットを備えてもよい。他の実施形態では、アプライアンスクラスタ600は、アプライアンスの異なるモデル、混合アプライアンスおよびサーバ、またはコンピューティングデバイスの任意の他のセットを含む、デバイスの異種もしくは混合セットを備えてもよい。これは、アプライアンスクラスタ600が、例えば、新しいモデルまたはデバイスを用いて経時的に拡張もしくはアップグレードされることを可能にし得る。
いくつかの実施形態では、アプライアンスクラスタ600の各コンピューティングデバイスまたはアプライアンス200は、上記で議論されるようなマルチコアアプライアンスを備えてもよい。多くのそのような実施形態では、上記で議論されるコア管理およびフロー分布方法は、本明細書で議論されるノード管理および分布方法に加えて、各個々のアプライアンスによって利用されてもよい。これは、1つのアプライアンスがデータを備え、それを複数のノードに配分し、各ノードが処理のためのデータを備え、それを複数のコアに配分する、2層分散システムと考えられてもよい。故に、そのような実施形態では、ノード分布システムは、上記で議論されるようなマスタまたは制御コアによって保護され得るため、個々のコアへのフロー分布を管理する必要がない。
多くの実施形態では、アプライアンスクラスタ600は、シャーシ内の複数のブレードサーバまたは単一のラック内の複数のラックマウントデバイス等、物理的にグループ化されてもよいが、他の実施形態では、アプライアンスクラスタ600は、複数のシャーシ、複数のラック、データセンタ内の複数の部屋、複数のデータセンタ、または任意の他の物理的配列で分配されてもよい。故に、アプライアンスクラスタ600は、物理的グループではなく、共通構成、管理、および目的を介してグループ化される、仮想アプライアンスと見なされてもよい。
いくつかの実施形態では、アプライアンスクラスタ600は、1つまたはそれを上回るネットワーク104、104’に接続されてもよい。例えば、簡潔に図1Aを再び参照すると、いくつかの実施形態では、アプライアンス200は、1つまたはそれを上回るクライアント102に参入されたネットワーク104と1つまたはそれを上回るサーバ106に参入されたネットワーク104’との間に展開されてもよい。アプライアンスクラスタ600は、同様に、単一のアプライアンスとして動作するように展開されてもよい。多くの実施形態では、これは、アプライアンスクラスタ600の外部の任意のネットワークトポロジ変更を要求しなくてもよく、単一のアプライアンスシナリオからのインストールおよび拡張可能性の容易性を可能にする。他の実施形態では、アプライアンスクラスタ600は、同様に、図1B−1Dに示される、または上記で議論されるように展開されてもよい。なおも他の実施形態では、アプライアンスクラスタは、1つまたはそれを上回るサーバによって実行される複数の仮想マシンもしくはプロセスを備えてもよい。例えば、1つのそのような実施形態では、サーバファームは、複数の仮想マシンを実行してもよく、各仮想マシンは、アプライアンス200として構成され、複数の仮想マシンは、アプライアンスクラスタ600として一斉に作用する。さらになおも他の実施形態では、アプライアンスクラスタ600は、アプライアンス200またはアプライアンス200として構成される仮想マシンの混合を備えてもよい。いくつかの実施形態では、アプライアンスクラスタ600は、同一場所に設置されていない複数のアプライアンス200を伴って、地理的に分配されてもよい。例えば、図6を再び参照すると、1つのそのような実施形態では、第1のアプライアンス200aは、データセンタ等の第1の場所に位置してもよく、第2のアプライアンス200bは、中央オフィスまたは企業の本社等の第2の場所に位置してもよい。さらなる実施形態では、そのように地理的に遠隔のアプライアンスは、T1またはT3ポイントツーポイント接続、VPN、または任意の他のタイプおよび形態のネットワーク等の専用ネットワークによって参入されてもよい。故に、同一場所に設置されたアプライアンス200a−200bと比較して、付加的通信待ち時間があり得るが、現場の停電または通信不能状態の場合の信頼性、拡張可能性、もしくは他の利益において利点があってもよい。いくつかの実施形態では、待ち時間の問題は、データフローの地理またはネットワークベースの分布を通して低減させられ得る。例えば、アプライアンスクラスタ600として構成されるが、企業の本社におけるクライアントおよびサーバからの通信が、現場で展開されるアプライアンス200bにダイレクトされてもよい、負荷平衡が、場所によって加重されてもよい、または類似ステップが、いかなる待ち時間も軽減するようにとられることができる。
依然として図6を参照すると、アプライアンスクラスタ600は、クライアントデータプレーン602を介してネットワークに接続されてもよい。いくつかの実施形態では、クライアントデータプレーン602は、クライアントとアプライアンスクラスタ600との間でデータを搬送する、ネットワーク104等の通信ネットワークを備えてもよい。いくつかの実施形態では、クライアントデータプレーン602は、外部ネットワーク104およびアプライアンスクラスタ600の複数のアプライアンス200a−200nに橋架する、スイッチ、ハブ、ルータ、または他のネットワークデバイスを備えてもよい。例えば、1つのそのような実施形態では、ルータが、外部ネットワーク104に接続され、各アプライアンス200a−200nのネットワークインターフェースに接続されてもよい。いくつかの実施形態では、本ルータまたはスイッチは、インターフェースマネージャもしくはマスタと称されてもよく、さらに、アプリケーションクラスタ600内のノードを横断してトラフィックを均等に分配するように構成されてもよい。したがって、多くの実施形態では、インターフェースマスタは、アプライアンスクラスタ600の外部にフローディストリビュータを備えてもよい。他の実施形態では、インターフェースマスタは、アプライアンス200a−200nのうちの1つを備えてもよい。例えば、第1のアプライアンス200aは、アプライアンスクラスタ600のための着信トラフィックを受信し、アプライアンス200b−200nのそれぞれを横断してトラフィックを分配する、インターフェースマスタとしての役割を果たしてもよい。いくつかの実施形態では、帰還トラフィックが、同様に、インターフェースマスタとしての役割を果たす第1のアプライアンス200aを介して、アプライアンス200b−200nのそれぞれからフローしてもよい。他の実施形態では、アプライアンス200b−200nのそれぞれからの帰還トラフィックが、ネットワーク104、104’に直接、または外部ルータ、スイッチ、もしくは他のデバイスを介して、伝送されてもよい。いくつかの実施形態では、インターフェースマスタとしての役割を果たさないアプライアンスクラスタのアプライアンス200は、インターフェーススレーブと称されてもよい。
インターフェースマスタは、種々の方法のうちのいずれかで負荷平衡またはトラフィックフロー分布を行ってもよい。例えば、いくつかの実施形態では、インターフェースマスタは、クラスタのアプライアンスまたはノードを伴って構成されるネクストホップと平等コストマルチパス(ECMP)ルーティングを行う、ルータを備えてもよい。インターフェースマスタは、オープン・ショーテスト・パス・ファースト(OSPF)を使用してもよい。いくつかの実施形態では、インターフェースマスタは、上記で議論されるように、IPアドレスまたは他のパケット情報タプルに基づくハッシュ等のトラフィック分布のためのステートレスハッシュベースの機構を使用してもよい。ハッシュキーおよび/またはソルトが、ノードを横断する均等な分布のために選択されてもよい。他の実施形態では、インターフェースマスタは、リンクアグリゲーション(LAG)プロトコル、または任意の他のタイプおよび形態のフロー分布、負荷平衡、ならびにルーティングを介して、フロー分布を行ってもよい。
いくつかの実施形態では、アプライアンスクラスタ600は、サーバデータプレーン604を介してネットワークに接続されてもよい。クライアントデータプレーン602と同様に、サーバデータプレーン604は、サーバとアプライアンスクラスタ600との間にデータを搬送する、ネットワーク104’等の通信ネットワークを備えてもよい。いくつかの実施形態では、サーバデータプレーン604は、外部ネットワーク104’およびアプライアンスクラスタ600の複数のアプライアンス200a−200nに橋架する、スイッチ、ハブ、ルータ、または他のネットワークデバイスを備えてもよい。例えば、1つのそのような実施形態では、ルータが、外部ネットワーク104’に接続され、各アプライアンス200a−200nのネットワークインターフェースに接続されてもよい。多くの実施形態では、各アプライアンス200a−200nは、第1のネットワークインターフェースがクライアントデータプレーン602に接続され、第2のネットワークインターフェースがサーバデータプレーン604に接続される、複数のネットワークインターフェースを備えてもよい。これは、付加的セキュリティを提供し、仲介デバイスとしてアプライアンスクラスタ600サーバを有することによって、クライアントおよびサーバネットワークの直接インターフェースを防止し得る。他の実施形態では、クライアントデータプレーン602およびサーバデータプレーン604は、マージされる、または組み合わせられてもよい。例えば、アプライアンスクラスタ600は、クライアント102およびサーバ106とのネットワーク上で非仲介ノードとして展開されてもよい。上記で議論されるように、多くの実施形態では、インターフェースマスタが、サーバおよびネットワーク104’からアプライアンスクラスタの各アプライアンスに通信をルーティングして分配するために、サーバデータプレーン604上に展開されてもよい。多くの実施形態では、クライアントデータプレーン602用のインターフェースマスタおよびサーバデータプレーン604用のインターフェースマスタは、同様に構成されてもよく、上記で議論されるようなECMPまたはLAGプロトコルを行う。
いくつかの実施形態では、アプライアンスクラスタ600内の各アプライアンス200a−200nは、内部通信ネットワークまたはバックプレーン606を介して接続されてもよい。バックプレーン606は、ノード間またはアプライアンス間制御および構成メッセージ用、ならびにトラフィックのノード間転送用の通信ネットワークを備えてもよい。例えば、第1のアプライアンス200aがネットワーク104を介してクライアントと通信し、第2のアプライアンス200bがネットワーク104’を介してサーバと通信する、一実施形態では、クライアントとサーバとの通信は、クライアントから第1のアプライアンスへ、バックプレーン606を介して第1のアプライアンスから第2のアプライアンスへ、および第2のアプライアンスからサーバへ、ならびに逆も同様にフローしてもよい。他の実施形態では、バックプレーン606は、インターフェース一時停止もしくはリセットコマンド、フィルタリングもしくは圧縮ポリシ等のポリシ更新、バッファステータス、スループット、もしくはエラーメッセージ等のステータスメッセージ、または任意の他のタイプおよび形態のノード間通信等の構成メッセージを搬送してもよい。いくつかの実施形態では、RSSキーまたはハッシュキーは、クラスタ内の全てのノードによって共有されてもよく、バックプレーン606を介して通信してもよい。例えば、第1のノードまたはマスタノードは、始動またはブート等のRSSキーを選択してもよく、他のノードによって使用するために本キーを分配してもよい。いくつかの実施形態では、バックプレーン606は、各アプライアンス200のネットワークインターフェースの間にネットワークを備えてもよく、ルータ、スイッチ、または他のネットワークデバイス(図示せず)を備えてもよい。したがって、いくつかの実施形態では、上記で議論されるように、クライアントデータプレーン602用のルータが、アプライアンスクラスタ600とネットワーク104との間に展開されてもよく、サーバデータプレーン604用のルータが、アプライアンスクラスタ600とネットワーク104’との間に展開されてもよく、バックプレーン606用のルータが、アプライアンスクラスタ600の一部として展開されてもよい。各ルータは、各アプライアンス200の異なるネットワークインターフェースに接続してもよい。他の実施形態では、1つまたはそれを上回るプレーン602−606が、組み合わせられてもよい、またはルータもしくはスイッチが、複雑性を低減させる、または本システムから余分なデバイスを排除するために、アプライアンス200a−200nの異なるインターフェースに接続し、同時に複数のルーティング機能を果たすように、複数のLANもしくはVLANに分割されてもよい。
いくつかの実施形態では、制御プレーン(図示せず)は、管理者またはユーザからアプライアンスクラスタ600への構成および制御トラフィックを通信してもよい。いくつかの実施形態では、制御プレーンは、第4の物理ネットワークであってもよい一方で、他の実施形態では、制御プレーンは、プレーン602−606のうちの1つを介したVPN、トンネル、または通信を備えてもよい。したがって、制御プレーンは、いくつかの実施形態では、仮想通信プレーンと見なされてもよい。他の実施形態では、管理者は、RS−232等のシリアル通信インターフェース、USB通信インターフェース、または任意の他のタイプおよび形態の通信等の別個のインターフェースを通して、構成ならびに制御を提供してもよい。いくつかの実施形態では、アプライアンス200は、ボタンおよびディスプレイを伴うフロントパネル、ネットワーク104、104’もしくはバックプレーン606を介した構成用のウェブサーバ、または任意の他のタイプおよび形態のインターフェース等の管理用のインターフェースを備えてもよい。
いくつかの実施形態では、上記で議論されるように、アプライアンスクラスタ600は、内部フロー分布を含んでもよい。例えば、これは、ノードが外部デバイスに透過的に参入/そこから離脱することを可能にするように行われてもよい。外部フローディストリビュータがそのような変更に応じて繰り返し再構成されなければならないことを防止するために、ノードまたはアプライアンスが、ネットワークパケットをクラスタ600内の正しいノードにステアリングするためにインターフェースマスタもしくはディストリビュータとして作用してもよい。例えば、いくつかの実施形態では、(故障、リセット、または類似する場合に応じて等)ノードがクラスタから離脱するとき、外部ECMPルータが、ノードの変更を識別してもよく、かつトラフィックを再分配するように全てのフローを再ハッシュしてもよい。これは、全ての接続をドロップしてリセットさせ得る。同一のドロップおよびリセットが、ノードが再参入するときに起こり得る。いくつかの実施形態では、信頼性のために、アプライアンスクラスタ600内の2つのアプライアンスまたはノードが、接続ミラーリングを介して外部ルータから通信を受信してもよい。
多くの実施形態では、アプライアンスクラスタ600のノードの間のフロー分布は、アプライアンスのコアの間のフロー分布について上記で議論される方法のうちのいずれかを使用してもよい。例えば、一実施形態では、マスタアプライアンス、マスタノード、またはインターフェースマスタは、着信トラフィック上のToeplitzハッシュ等のRSSハッシュを計算し、ハッシュの選好リストもしくは分布テーブルを参考にしてもよい。多くの実施形態では、フローディストリビュータは、トラフィックを転送するときに、ハッシュを受信側アプライアンスに提供してもよい。これは、ノードがコアへのフロー分布のためのハッシュを再計算する必要性を排除し得る。多くのそのような実施形態では、アプライアンスの間の分布のためのハッシュを計算するために使用されるRSSキーは、グローバルRSSキーと称され得る、コアの間の分布のためのハッシュを計算するために使用されるものと同一のキーを備えてもよく、計算されたハッシュの再利用を可能にする。いくつかの実施形態では、ハッシュは、ポート番号、IPアドレスを含むインターネット層ヘッダ、または任意の他のパケットヘッダ情報を含む、トランスポート層ヘッダの入力タプルを用いて計算されてもよい。いくつかの実施形態では、パケット本体情報が、ハッシュに利用されてもよい。例えば、無損失TCPヘッダを介してカプセル化される損失性UDPトラフィック等の1つのプロトコルのトラフィックが、別のプロトコルのトラフィック内にカプセル化される、一実施形態では、フローディストリビュータは、カプセル化プロトコル(例えば、TCPヘッダ)ではなく、カプセル化されたプロトコル(例えば、UDPヘッダ)のヘッダに基づいて、ハッシュを計算してもよい。同様に、パケットがカプセル化され、暗号化または圧縮される、いくつかの実施形態では、フローディストリビュータは、暗号解読もしくは解凍後のペイロードパケットのヘッダに基づいて、ハッシュを計算してもよい。なおも他の実施形態では、ノードは、構成または管理目的のため等に、内部IPアドレスを有してもよい。これらのIPアドレスへのトラフィックは、ハッシュされて分配される必要はなく、むしろ、宛先アドレスを所有するノードに転送されてもよい。例えば、アプライアンスは、1.2.3.4のIPアドレスにおいて構成または管理目的のために起動するウェブサーバまたは他のサーバを有してもよく、いくつかの実施形態では、その内部IPアドレスとして、本アドレスをフローディストリビュータに登録してもよい。他の実施形態では、フローディストリビュータは、内部IPアドレスをアプライアンスクラスタ600内の各ノードに割り当ててもよい。アプライアンスの内部IPアドレス(1.2.3.4)にダイレクトされる、管理者によって使用されるワークステーション等の外部クライアントまたはサーバから着信するトラフィックは、ハッシングを要求することなく、直接転送されてもよい。
G.SSL通信のセキュリティを改良するためのシステムおよび方法
セキュアソケットレイヤ(SSL)は、コンピュータネットワークを経由して通信セキュリティを提供するように設計されるプロトコルである。クライアントデバイスがサーバとのSSL接続を確立しようとするとき、サーバは、SSL証明書をクライアントデバイスに発行する。典型的には、SSL証明書は、サーバを所有する組織のドメイン名、会社名、住所等の情報を含む。SSL証明書は、証明書を申請する組織の識別を確認するステップをとるはずである、証明機関によって、組織に発行される。したがって、SSL証明書の受信は、クライアントが接続を要求したサーバが信頼される組織によって所有されているという、ある程度の確信を、クライアントデバイスに提供することを意図している。
SSL証明書が証明機関によって発行されるため、SSL証明書は、証明機関自体と同じ程度にセキュアにすぎない。例えば、ある事例では、証明機関は、有効な証明書を誤った関係者に故意に発行し得る。他の事例では、証明機関が、有効な証明書を信頼される組織になりすましている悪意のある関係者に発行するように騙され得る。したがって、クライアントデバイスによる有効なSSL証明書の受信だけでは、クライアントが接続を要求したサーバが信頼される組織によって実際に所有されていることを保証できない。
さらに、SSL通信はまた、他のタイプの攻撃によっても侵害され得る。例えば、介入者(MITM)攻撃では、第三者が、クライアントデバイスからサーバに送信される通信を傍受し、また、サーバからクライアントデバイスに送信される通信も傍受する。第三者は、クライアントデバイスに対してサーバになりすまし、サーバに対してサーバクライアントデバイスになりすまし、それによって、クライアントデバイスまたはサーバのいずれの知識も伴わずに、接続を経由して伝送される情報の全てにアクセスする。
したがって、SSL通信は、種々の形態の攻撃の影響を受けやすい。本開示は、SSL通信のセキュリティを改良するための方法およびシステムを提供する。SSLセキュリティは、例えば、予期されるSSL証明書を使用して、SSL証明書を発行するサーバが応答することを検証し、証明書が偽造されていないことを示すことによって、かつサーバへの接続が予期されるインターネットプロトコル(IP)アドレスに決定することを検証し、秘密キーが盗まれていないことを示すことによって、改良されることができる。いくつかの実装では、付加的保護対策もまた、講じられてもよい。例えば、SSL証明書は、証明書がコンピュータセキュリティにおける最新の最善実践に対応するかどうかを判定するように分析されることができる。ボーダゲートウェイプロトコル(BGP)等の他のネットワーキング機能もまた、セキュリティの付加的対策を提供するように分析されることができる。
いくつかの既存のサービスは、単純に、証明書の発行および存在についてのデータを収集し、証明書が所与のサービスに使用されることを意図している、決定的なデータを有し得ない。仲介デバイスをSSL証明書監視機構と統合することによって、仲介デバイスは、以前に利用可能ではなかった洞察を獲得することができる。本開示を介して、SSL証明書をホストするコードは、仮想サーバが他のデバイスにどのように表示されるはずであるかを示す、サービスフィンガプリントをウェブサービスに提供するために使用される。さらに、本開示を介して、仮想サーバとの接続は、SSLハンドシェイクを拡張することによって、リアルタイムで能動的に正当性を立証されることができる。
図7Aは、SSL通信のセキュリティを改良するためのシステム700の実施形態のブロック図である。システム700は、少なくとも1つのサーバ709、ウェブサービス710、および複数のエージェント715と通信するデバイス705を含む。図7Aに示されるように、デバイス705は、図2Aに示されるアプライアンス200等の複数のクライアントおよび複数のサーバを仲介するデバイスであることができる。いくつかの実装では、デバイス705は、図6に示されるアプライアンスクラスタ600等のアプライアンスのクラスタの一部であることができる。デバイス705は、サーバ709、ウェブサービス710、およびエージェント715への直接通信リンクを有するものとして図示されるが、いくつかの実装では、デバイス705は、ローカルエリアネットワーク、広域ネットワーク、またはインターネット等の1つもしくはそれを上回る付加的コンピュータネットワークを介して、サーバ709、ウェブサービス710、およびエージェント715のうちのいずれかと通信し得ることを理解されたい。いくつかの実装では、デバイス705およびサーバ709は、データセンタネットワーク内に含まれることができる。ウェブサービス710およびエージェント715は、同一のデータセンタネットワーク内に含まれてもよい、またはデータセンタネットワークの外部にあり得る。
図7Bは、図7Aに示されるシステム700に含まれるデバイス705の実施形態のブロック図である。図7Bに示されるように、デバイス705は、構成変更識別子720と、サービスフィンガプリントジェネレータ722と、セキュア接続インターフェース724と、サービスフィンガプリント伝送機726と、検証キージェネレータ728と、通知受信機730とを含む。図7Aのシステム700および図7Bのデバイス705は、以下でともに議論される。
いくつかの実装では、システム700はまた、複数のクライアントデバイス(図7Aに示されていない)を含むこともできる。デバイス705は、複数のクライアントデバイスとサーバ709との間の通信を管理することができる。単一のサーバ709のみが図7Aに示されているが、システム700は、サーバ709と同様にデバイス705と通信する複数のサーバを含むことができることを理解されたい。
いくつかの実装では、デバイス705は、サーバ709に対応する仮想サーバを実装するように構成される、アプリケーション配信コントローラ(ADC)であることができる。仮想サーバは、外部クライアントがサーバ709等のサーバ上でホストされるアプリケーションにアクセスするために使用することができる、デバイス705の名称が付けられたエンティティである。仮想サーバは、英数字の名称、仮想IP(VIP)アドレス、ポート、およびプロトコルによって表されることができる。クライアントがサーバ上のアプリケーションにアクセスしようとするとき、クライアントは、要求を物理サーバのIPアドレスの代わりにVIPに送信する。アプライアンスは、VIPアドレスにおいて要求を受信するとき、仮想サーバにおいて接続を終了させ、クライアントの代わりにサーバとのその独自の接続を使用する。仮想サーバのポートおよびプロトコル設定は、仮想サーバが表すアプリケーションを判定する。例えば、ウェブサーバは、仮想サーバと、そのポートおよびプロトコルが、それぞれ、80およびHTTPに設定される、サービスとによって、表されることができる。複数の仮想サーバは、同一VIPアドレスを使用するが、異なるプロトコルおよびポートを使用することもできる。
仮想サーバは、ネットワーキング特徴を有効にするように構成されることができる。圧縮、キャッシング、およびSSLオフロードのような殆どの特徴は、通常、仮想サーバ上で有効にされる。デバイス705がVIPアドレスにおいて要求を受信するとき、デバイス705は、要求が受信されたポートおよびそのプロトコルによって、適切な仮想サーバを選定する。次いで、デバイス705は、適宜、仮想サーバ上に構成される特徴の要求を処理する。
多くの場合、仮想サーバは、サービスと提携して作動する。複数のサービスは、仮想サーバにバインドされることができる。これらのサービスは、サーバファーム内の物理サーバ上で起動するアプリケーションを表す。デバイス705がVIPアドレスにおいて受信される要求を処理した後、デバイス705は、仮想サーバ上で構成される1つまたはそれを上回る負荷平衡アルゴリズムに従って、それらをサーバに転送することができる。
いくつかの実装では、サーバ709を所有、管理、維持、または利用する組織は、サーバ709と1つまたはそれを上回るクライアントとの間の暗号化された通信を促進するために、SSL証明書を申請してもよい。したがって、サーバ709のSSL証明書は、サーバ709とのセキュアな接続を確立する要求に応答して、デバイス705を通して伝送されることができる。いくつかの実装では、デバイス705は、サーバ709のSSL証明書のコピーを保存することができる。これは、サーバ709が要求を処理する必要なく、セキュア接続インターフェース724を介してSSL証明書を要求デバイスに伝送することによって、デバイス705がセキュアな接続を確立する要求に応答することができるため、応答時間を改良することに役立ち得る。デバイス705はまた、サーバ709に属する秘密キーのコピーを記憶することができる。デバイス705は、サーバ709に暗号解読を行うという計算タスクを負担させることなく、サーバ709に向けられているセキュアな通信を解読するために秘密キーを使用することによって、応答時間をさらに短縮するためにサーバ709の秘密キーを使用することができる。いくつかの実装では、デバイス705は、サーバ709のための1つを上回るSSL証明書または1つを上回る秘密キーを記憶することができる。いくつかの実装では、デバイス705は、サーバ709に類似する複数のサーバのそれぞれに対応する、SSL証明書および秘密キーを記憶することができる。
デバイス705は、サービスフィンガプリント707を生成するように構成され得る、サービスフィンガプリントジェネレータ722を含むことができる。サービスフィンガプリントジェネレータ722は、サーバ709のSSL証明書と関連付けられる情報を含む、サービスフィンガプリントを生成するように構成されることができる。いくつかの実装では、サービスフィンガプリント707は、サーバ709の個別の仮想サーバのSSL証明書に対応する情報(またはSSL証明書自体)、個別の仮想サーバの仮想IPアドレスのための1つまたはそれを上回るドメイン名サービス(DNS)エイリアス、SSL証明書を供給する1つまたはそれを上回るポート番号、およびデバイス705によってサービス提供されるIPアドレス等の個別の仮想サーバと関連付けられるIPアドレスを含むことができる。いくつかの実装では、デバイスによってサービス提供されるIPアドレスは、仮想サーバに対応するサーバのIPアドレスであることができる。いくつかの実装では、サービスフィンガプリント707は、サーバ709の秘密キーに対応する情報を含まない。サービスフィンガプリント707に含まれる情報は、以下でさらに議論されるように、エージェント715とサーバ709であると主張するサーバとの間に確立される接続の真正性を検証するために、後に使用されることができる。いくつかの実装では、サービスフィンガプリントジェネレータ722によって生成されるサービスフィンガプリント707は、テキスト形式で情報を記憶するコンピュータファイルであることができる、またはそれを含むことができる。いくつかの他の実装では、サービスフィンガプリント707は、2つまたはそれを上回るコンピュータファイルを有する、パッケージを含むことができる。
いくつかの実装では、サービスフィンガプリントジェネレータ722は、デバイス705の仮想サーバの検出された構成変更に応答して、サービスフィンガプリント707を生成するように構成されることができる。構成変更は、例えば、構成変更識別子720によって検出されることができる。いくつかの実装では、構成変更識別子720は、仮想サーバのSSL証明書が仮想サーバの失効したSSL証明書に取って代わったことを判定することによって、構成変更を検出することができる。いくつかの他の実装では、構成変更識別子720は、仮想サーバが仮想サーバによって前もってサービス提供されなかった新しいIPアドレスと関連付けられることを判定することによって、構成変更を検出することができる。なおも他の実装では、構成変更識別子720は、仮想サーバが仮想サーバによって前もってサービス提供されていない新しいDNS名をサービス提供することを判定することによって、構成変更を検出することができる。
デバイス705は、サーバ709のサービスフィンガプリント707をウェブサービス710に送信または伝送するように構成され得る、サービスフィンガプリント伝送機726を含むことができる。いくつかの実装では、サービスフィンガプリント伝送機726は、サービスフィンガプリントジェネレータ722からサービスフィンガプリント707を読み出し、続いて、サービスフィンガプリント707をウェブサービス710に伝送する。いくつかの実装では、ウェブサービス710は、デバイス705から受信されるサービスフィンガプリント707の記録を維持することができる。例えば、サービスフィンガプリント707は、ウェブサービス710によって維持されるデータベースの中に記憶されることができる。いくつかの実装では、ウェブサービス710は、デバイス705、ならびにサービスフィンガプリント707に類似するサービスフィンガプリントをウェブサービス710に送信し得る任意の他のデバイスから受信される、複数のサービスフィンガプリント707を記憶することができる。
いくつかの実装では、ウェブサービス710は、SSL証明書および仮想サーバのサービスマッピングを作成するために、その記憶されたサービスフィンガプリント707の全てに含まれる情報を使用することができる。例えば、サービスフィンガプリント707に基づいて、ウェブサービス710は、特定のSSL証明書がデバイス705の特定の仮想サーバと関連付けられることを判定することができる。いくつかの実装では、SSL証明書は、1つを上回る仮想サーバと関連付けられてもよい。いくつかの実装では、ウェブサービスは、証明書が任意の特定のインターネット向け仮想サーバによって発行されるはずであるマッピングの完全なセットを構築するように、顧客(またはサーバ所有者)によって所有される1つまたはそれを上回るデバイスから受信されるサービスフィンガプリントを組み合わせることができる。
例えば、それぞれ同一SSL証明書を記憶するように構成される、2つまたはそれを上回るサーバ709があってもよい。サーバ709はそれぞれ、デバイス705上に対応する仮想サーバを有してもよい。したがって、ウェブサービス710は、SSL証明書が、デバイス705上のそのSSL証明書と関連付けられる仮想サーバのうちのいずれかから発行され得ることを判定することができる。ウェブサービス710によって維持されるサービスマッピングは、例えば、データベースの中に記憶されることができる。ウェブサービス710は、SSL接続を通して通信されるデータを傍受しようとし得る第三者による、MITM攻撃等の潜在的攻撃を検出するためにサービスマッピングを使用することによって、サーバ709へのSSL接続のセキュリティを改良することができる。
ウェブサービス710は、地理的に異種の場所を横断してコンピューティングデバイス上に複数のエージェント715を展開するように構成されることができる。エージェント715は、1つまたはそれを上回るコンピューティングデバイス上で実行することができる。エージェント715は、サーバ709に対応する仮想サーバへのSSL接続を確立しようとするように構成されることができる。ウェブサービス710は、1つまたはそれを上回る仮想サーバとのセキュアな接続を確立するように命令を1つまたはそれを上回るエージェントに送信することができる。いくつかの実装では、エージェントは、1つまたはそれを上回るポリシに従ってセキュアな接続を確立するように構成されることができる。ポリシは、それに従ってエージェントがセキュアな接続を確立しようとし得る、1つまたはそれを上回るルールを含むことができる。例えば、いくつかの実装では、エージェント715は、例えば、エージェントが実行しているデバイスの場所に対する、サーバに場所に基づいて、サーバ709等のサーバのサブセットとの接続を確立するように構成されることができる。いくつかの実装では、エージェント715は、時刻に基づいて種々のサーバとのセキュアな接続を確立するように構成されることができる。いくつかの実装では、エージェント715は、セキュアな接続を確立する1つまたはそれを上回るサーバのリストを提供されることができる。
1つまたはそれを上回るエージェント715がセキュアな接続を要求するとき、そのような要求は、例えば、図7Bに示されるように、デバイス705のセキュア接続インターフェース724によって受信されることができる。デバイス705が仮想サーバとエージェント715との間にセキュアな接続を確立する要求を受信した後、デバイス705は、対応するSSL証明書を個別の要求エージェント715それぞれに発行することによって応答することができる。SSL証明書は、セキュア接続インターフェース724を介して、エージェント715に伝送されることができる。次いで、エージェント715は、発行されたSSL証明書およびSSL証明書が受信されたIPアドレスに対応して、情報をウェブサービス710に通信することができる。
ウェブサービス710は、エージェント715から受信される情報を、ウェブサービス710によって維持されるサービスマッピングと比較することができる。上記で議論されるように、ウェブサービス710は、いずれの仮想サーバが、仮想サーバへのセキュアな接続を要求するエージェント715に所与のSSL証明書を発行しているはずであるかを判定するために、サービスマッピングに含まれる情報を使用することができる。したがって、ウェブサービス710は、ソースIPアドレス等のエージェント715から受信されるパケットから抽出される情報とサービスマッピングに含まれるIPアドレスとの間の不一致を判定することによって、仮想サーバが侵害され得ることを検出することができる。ウェブサービス710はまた、エージェント715から受信されるSSL証明書とサービスマッピングに含まれるSSL証明書との間の不一致を判定することによって、仮想サーバが侵害され得ることを検出することができる。例えば、ウェブサービス710が、エージェント715によって受信されるSSL証明書が、サービスマッピングに含まれた予期されるSSL証明書に合致しないことを検出する場合、ウェブサービス710は、エージェント715によって受信されたSSL証明書が偽造された可能性が高いことを判定することができる。
逆に、ウェブサービス710が、エージェントによって受信されるSSL証明書が、予期されるSSL証明書に合致するが、SSL証明書が受信されたIPアドレスが、サービスマッピングに含まれたIPアドレス(またはIPアドレスのためのDNSエイリアス)に合致しないことを検出する場合、ウェブサービス710は、SSL接続のエンドポイントがサーバ709ではなくて信頼できないサーバであり得ること示して、SSL証明書を発行するサーバがサーバ709と異なることを判定することができる。したがって、ウェブサービス710がエージェント715から受信される情報とサービスマッピングに含まれる情報との間の不一致を判定するとき、ウェブサービス710は、サーバ709が第三者による攻撃を受け得ることをサーバ709の所有者に通知することができる。いくつかの実装では、そのような通知は、デバイス705の通知受信機730に伝送され、かつそれによって受信されることができる。
いくつかの実装では、ウェブサービス710は、テキスト形式で通知を生成することができる。例えば、通知は、デバイス705がウェブサービス710から通知を受信した後にデバイス705によって表示されるように構成される、人間可読テキストを含むことができる。いくつかの実装では、そのようなテキストは、MITM攻撃等のウェブサービス710が判定した攻撃のタイプのインジケーションを含んでもよい。通知はまた、通知を生成させたSSL証明書、またはSSL証明書が受信されたポートもしくはIPアドレスに関する情報を含んでもよい。いくつかの他の実装では、通知は、人間可読テキストを含まなくてもよい。例えば、ウェブサービス710は、エンコードされた通知を生成することができ、かつエンコードされた通知をデバイス705に伝送することができる。次いで、デバイス705は、通知をデコードして、攻撃と関連付けられるSSL証明書、ポート、およびIPアドレス等のウェブサービス710が検出した攻撃についての詳細を判定するように構成されることができる。
いくつかの実装では、エージェント715は、地理的に分配されてもよい。例えば、いくつかのSSL攻撃は、特定のサービスプロバイダネットワーク内で生じるサーバ709へのSSL接続のみに影響を及ぼし得る。影響を受けたサービスプロバイダネットワークの外側に展開される、または別様に位置するエージェント715は、潜在的脅威を検出しない場合がある。したがって、広範囲の地理的場所で多くの異なるサービスプロバイダネットワークを横断してエージェント715を展開または分配することは、サーバ709上の潜在的攻撃が検出される信頼性を改良することができる。
いくつかの実装では、デバイス705は、サービスフィンガプリント707に含まれることができる、一意の検証キーを生成してもよい。例えば、一意の検証キーは、図7Bに示されるように、デバイス705の検証キージェネレータ728によって生成されることができる。いくつかの実装では、検証キーは、セキュリティ目的のためにランダムまたは疑似ランダム様式で検証キージェネレータ728によって生成され得る、一意の一連の文字および数字であることができる。いくつかの他の実装では、検証キーは、一意のビット列であることができる。なおも他の実装では、検証キーは、1つまたはそれを上回るコンピュータファイルであることができる。さらに他の実装では、検証キーは、SSL秘密キーと同一の形式を有することができる。いくつかの実装では、検証キーは、エージェント715がセキュアな接続を確立する要求を発行するときに、エージェント715に伝送されることができる。いくつかの実装では、検証キーは、セキュア接続インターフェース724を介してエージェント715に伝送されることができる。次いで、本検証キーは、SSLエンドポイントが実際にサーバであるというさらなる信頼を可能にするように、SSLハンドシェイクへのプライベート拡張を介して、エージェント715によってチェックされることができる。いくつかの実装では、エージェント715は、潜在的攻撃の性質を理解することに関連する付加的情報を収集してもよい。例えば、確立されたSSL接続を経由して伝送されるデータ上で行われる「トレースルート」コマンドの出力は、攻撃による影響を受ける、起こり得る接続経路に関する付加的情報を提供することができる。いくつかの実装では、ウェブサービス710は、サーバ709のSSL証明書が侵害されているかどうかを示す、付加的ソースとしての証明機関から発行される、または取り消される、SSL証明書のフィードを収集してもよい。いくつかの実装では、ウェブサービス710は、サーバ709に対応する仮想サーバが悪意のあるトラフィックルートによって侵害されているかどうかを検出するように、ボーダゲートウェイプロトコル(BGP)等の付加的プロトコルを監視してもよい。いくつかの実装では、ウェブサービス710は、SSL証明書が最新の最善実践にもはや従っていないかどうかを判定するように、キー長、パディング、および暗号アルゴリズム等の進化しつつある業界最善実践に対して、全ての既知の証明書を周期的にチェックしてもよい。
図7Cは、SSL通信のセキュリティを改良するための方法の実施形態のフローチャートである。要するに、方法750は、1つまたはそれを上回る仮想サーバ用の1つまたはそれを上回るサービスフィンガプリントを生成するステップを含む(ステップ755)。方法750は、1つまたはそれを上回るサービスフィンガプリントに基づいて、SSL証明書および仮想サーバのサービスマッピングを作成するステップを含む(ステップ760)。方法750はさらに、仮想サーバのうちの少なくとも1つへのSSL接続を確立してSSL証明書を受信するステップを含む(ステップ765)。方法750はまた、少なくとも1つの仮想サーバの個別のサービスマッピングと、受信されたSSL証明書またはSSL証明書が受信されたIPアドレスとの間の不一致に基づいて、少なくとも1つの仮想サーバが侵害されていることを判定するステップも含む(ステップ770)。
再度、図7Cを参照すると、さらに詳細には、1つまたはそれを上回るクライアントおよび1つまたはそれを上回るサーバを仲介するデバイスのサービスフィンガプリントジェネレータは、1つまたはそれを上回る仮想サーバ用の1つまたはそれを上回るサービスフィンガプリントを生成することができる(ステップ755)。仮想サーバはそれぞれ、デバイスによって実行されることができ、かつサーバのうちの個別のものに対応することができる。各サービスフィンガプリントは、個別の仮想サーバのSSL証明書に対応する情報、個別の仮想サーバの仮想IPアドレスのDNSエイリアス、SSL証明書を供給するポート番号、およびデバイス705によってサービス提供されるIPアドレス等の個別の仮想サーバと関連付けられるIPアドレスを含むことができる。いくつかの実装では、デバイスによってサービス提供されるIPアドレスは、仮想サーバに対応するサーバのIPアドレスであることができる。いくつかの実装では、サービスフィンガプリントジェネレータが実行する仲介デバイスは、SSL証明書を発行するように構成される物理サーバに接続されることができる。本デバイスは、物理サーバによって発行されるSSL証明書が、セキュアな接続を確立する外部クライアントデバイスからの要求に応答して、本デバイスを通して伝送されるように、物理サーバに対応する仮想サーバを含むことができる。いくつかの実装では、本デバイスは、サービスフィンガプリントをウェブサービスに伝送することができる。
ウェブサービスは、1つまたはそれを上回るサービスフィンガプリントに基づいて、SSL証明書および仮想サーバのサービスマッピングを作成することができる(ステップ760)。例えば、仲介デバイスから受信されるサービスフィンガプリントに基づいて、ウェブサービスは、特定のSSL証明書が特定の仮想サーバと関連付けられることを判定することができる。いくつかの実装では、SSL証明書は、1つを上回る仮想サーバと関連付けられてもよい。したがって、ウェブサービスは、SSL証明書が、そのSSL証明書と関連付けられる仮想サーバのうちのいずれかから外部デバイスに発行され得ることを判定することができる。
エージェントは、SSL証明書を受信するように、仮想サーバのうちの少なくとも1つへのSSL接続を確立することができる(ステップ765)。いくつかの実装では、SSL接続は、仮想サーバと関連付けられるユニフォームリソースロケータ(URL)をエージェントのウェブブラウザアプリケーションに入力することによって、エージェントによって確立されることができる。仮想サーバへの接続を確立しようとすることに応答して、エージェントは、SSL証明書を受信することができる。いくつかの実装では、エージェントは、仮想サーバへの1つを上回る接続を確立することができる。例えば、種々の地理的領域の異なるサービスプロバイダネットワーク内に位置するエージェントはそれぞれ、仮想サーバへの個別の接続を確立することができる。仮想サーバへのセキュアな接続を確立しようとする各エージェントは、それに応答してSSL証明書を受信することができる。各エージェントはまた、受信されたSSL証明書をウェブサービスに伝送することができる。いくつかの実装では、各エージェントはまた、SSL証明書が受信されたIPアドレスまたはポート番号等の他の情報をウェブサービスに提出することもできる。
ウェブサービスは、少なくとも1つの仮想サーバの個別のサービスマッピングと、受信されたSSL証明書またはSSL証明書が受信されたIPアドレスとの間の不一致に基づいて、少なくとも1つの仮想サーバが侵害されていることを判定することができる(ステップ760)。ウェブサービスは、いずれの仮想サーバが所与のSSL証明書を発行しているはずであるかを判定するために、サービスマッピングに含まれる情報を使用することができる。例えば、ウェブサービスは、所与のSSL証明書のサービスフィンガプリントを参照して、仮想サーバがそのSSL証明書と関連付けられることを判定することができる。したがって、ウェブサービスが、受信されたSSL証明書がサービスマッピングに含まれた予期されるSSL証明書に合致しないことを判定する場合、ウェブサービスはまた、受信されたSSL証明書が偽造されている場合があることを判定することもできる。同様に、ウェブサービスが、受信されたSSL証明書が予期されるSSL証明書に合致するが、SSL証明書が受信されたIPアドレスがサービスマッピングに含まれるIPアドレスまたはIPアドレスのためのDNSエイリアスに合致しないことを判定する場合、ウェブサービスはまた、SSL証明書を発行するサーバが予期されるサーバと異なることを判定することもできる。これは、SSL接続のエンドポイントが予期されるサーバではなくて信頼できないサーバであることを示し得る。
図7Dは、SSL通信のセキュリティを改良するための第2の方法780の実施形態のフローチャートである。要するに、方法780は、複数のクライアントおよび1つまたはそれを上回るサーバを仲介するデバイスによって、デバイス上で実行する仮想サーバと関連付けられる構成変更を判定するステップを含むことができる(ステップ785)。本方法は、仮想サーバと関連付けられる構成変更を判定するステップに応答して、デバイスによって、仮想サーバ用のサービスフィンガプリントを生成するステップを含むことができる(ステップ790)。サービスフィンガプリントは、仮想サーバの仮想IPアドレスのためのDNSエイリアスと、仮想サーバのSSL証明書を供給する仮想サーバのポート番号と、仮想サーバのIPアドレスと、SSL証明書とを含むことができる。本方法は、デバイスによって、生成されたサービスフィンガプリントをウェブサービスに伝送し、生成されたサービスフィンガプリントをエージェントからウェブサービスによって受信されるデータと比較して、デバイスが攻撃を受けているかどうかを識別するステップを含むことができる(ステップ795)。
再度、図7Dを参照すると、さらに詳細には、方法780は、複数のクライアントおよび1つまたはそれを上回るサーバを仲介するデバイスによって、デバイス上で実行する仮想サーバと関連付けられる構成変更を判定するステップを含むことができる(ステップ785)。いくつかの実装では、図7Bに示される構成変更識別子720等のデバイスの構成変更識別子は、構成変更を検出することができる。構成変更識別子は、仮想サーバのSSL証明書が仮想サーバの失効したSSL証明書に取って代わったことを判定することによって、構成変更を検出することができる。いくつかの他の実装では、構成変更識別子は、仮想サーバが仮想サーバによって前もってサービス提供されなかった新しいIPアドレスと関連付けられることを判定することによって、構成変更を検出することができる。なおも他の実装では、構成変更識別子は、仮想サーバが仮想サーバによって前もってサービス提供されていない新しいDNS名をサービス提供することを判定することによって、構成変更を検出することができる。
本方法は、仮想サーバと関連付けられる構成変更を判定するステップに応答して、デバイスによって、仮想サーバ用のサービスフィンガプリントを生成するステップを含むことができる(ステップ790)。サービスフィンガプリントは、仮想サーバの仮想IPアドレスのためのDNSエイリアスと、仮想サーバのSSL証明書を供給する仮想サーバのポート番号と、仮想サーバのIPアドレスと、SSL証明書とを含むことができる。いくつかの実装では、図7Bに示されるサービスフィンガプリントジェネレータ722等の本デバイスのサービスフィンガプリントジェネレータは、サービスフィンガプリントを生成するように構成されることができる。いくつかの実装では、サービスフィンガプリントは、仮想サーバのSSL証明書と、仮想サーバの仮想IPアドレスのための1つまたはそれを上回るDNSエイリアスと、SSL証明書を供給するポート番号と、個別の仮想サーバと関連付けられるIPアドレスとを含むことができる。いくつかの実装では、サービスフィンガプリントは、サーバの秘密キーに対応する情報を含まない。遠隔ウェブサービスは、サービスフィンガプリントを受信することができ、エージェントと仮想サーバとの間に確立される接続の真正性を検証するために、サービスフィンガプリントに含まれる情報を以降で使用することができる。いくつかの実装では、サービスフィンガプリントジェネレータによって生成されるサービスフィンガプリントは、テキスト形式で情報を記憶するコンピュータファイルであることができる、またはそれを含むことができる。いくつかの他の実装では、サービスフィンガプリントは、2つまたはそれを上回るコンピュータファイルを有する、パッケージを含むことができる。
本方法は、デバイスによって、生成されたサービスフィンガプリントをウェブサービスに伝送し、生成されたサービスフィンガプリントをエージェントからウェブサービスによって受信されるデータと比較して、デバイスが攻撃を受けていることを識別するステップを含むことができる(ステップ795)。いくつかの実装では、図7Bに示されるサービスフィンガプリント伝送機726等の本デバイスのサービスフィンガプリント伝送機は、サービスフィンガプリントをウェブサービスに伝送することができる。いくつかの実装では、サービスフィンガプリント伝送機は、サービスフィンガプリントジェネレータからサービスフィンガプリントを読み出し、続いて、サービスフィンガプリントをウェブサービスに伝送する。いくつかの実装では、ウェブサービスは、デバイスから受信されるサービスフィンガプリントの記録を維持することができる。例えば、ウェブサービスは、データベースを維持することができ、かつフィンガプリントをデータベースの中に記憶することができる。いくつかの実装では、ウェブサービスは、本デバイス、ならびにサービスフィンガプリントに類似するサービスフィンガプリントをウェブサービスに送信し得る任意の他のデバイスから受信される、複数のサービスフィンガプリントを記憶することができる。
上記で説明されるシステムは、これらのコンポーネントのうちのいずれかまたはそれぞれの複数のものを提供し得、これらのコンポーネントは、独立型マシンの上、またはいくつかの実施形態では、分散システム内の複数のマシンのいずれかの上に提供され得ることを理解されたい。上記で説明されるシステムおよび方法は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生産するために、プログラミングならびに/もしくは工学技法を使用して、方法、装置、または製造品として実装されてもよい。加えて、上記で説明されるシステムおよび方法は、1つまたはそれを上回る製造品の上もしくは中で具現化される、1つまたはそれを上回るコンピュータ可読プログラムとして提供されてもよい。本明細書で使用されるような「製造品」という用語は、1つまたはそれを上回るコンピュータ可読デバイス、ファームウェア、プログラマブル論理、メモリデバイス(例えば、EEPROM、ROM、PROM、RAM、SRAM等)、ハードウェア(例えば、集積回路チップ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等)、電子デバイス、コンピュータ可読不揮発性記憶ユニット(例えば、CD−ROM、フロッピー(登録商標)ディスク、ハードディスクドライブ等)からアクセス可能であり、かつそれに組み込まれる、コードもしくは論理を包含することを意図している。製造品は、ネットワーク伝送線、無線伝送媒体、空間を通して伝搬する信号、電波、赤外線信号等を介したコンピュータ可読プログラムへのアクセスを提供する、ファイルサーバからアクセス可能であり得る。製造品は、フラッシュメモリカードまたは磁気テープであってもよい。製造品は、ハードウェア論理、ならびにプロセッサによって実行されるコンピュータ可読媒体に組み込まれるソフトウェアまたはプログラマブルコードを含む。一般に、コンピュータ可読プログラムは、LISP、PERL、C、C++、C#、PROLOG等の任意のプログラミング言語で、またはJAVA(登録商標)等の任意のバイトコード言語で実装されてもよい。ソフトウェアプログラムは、オブジェクトコードとして1つまたはそれを上回る製造品の上または中に記憶されてもよい。
方法およびシステムの種々の実施形態が説明されているが、これらの実施形態は、例示的であり、説明される方法またはシステムの範囲をいかようにも限定しない。当業者は、説明される方法およびシステムの最も広い範囲から逸脱することなく、説明される方法およびシステムの形態ならびに詳細への変更を達成することができる。したがって、本明細書に説明される方法およびシステムの範囲は、例示的実施形態のうちのいずれによっても限定されるべきではなく、付随の請求項ならびにそれらの均等物に従って定義されるべきである。

Claims (20)

  1. セキュアソケットレイヤ(SSL)通信のセキュリティを改良するための方法であって、
    複数のクライアントおよび1つまたはそれを上回るサーバを仲介するデバイスによって、前記デバイス上で実行する仮想サーバと関連付けられる構成変更を判定するステップと、
    前記仮想サーバと関連付けられる前記構成変更を判定するステップに応答して、前記デバイスによって、前記仮想サーバ用のサービスフィンガプリントを生成するステップであって、前記サービスフィンガプリントは、前記仮想サーバの仮想インターネットプロトコル(IP)アドレスのためのドメイン名サービス(DNS)エイリアスと、前記仮想サーバのセキュアソケットレイヤ(SSL)証明書を供給する前記仮想サーバのポート番号と、前記デバイスによってサービス提供されるIPアドレスと、前記SSL証明書とを含む、ステップと、
    前記デバイスによって、前記生成されたサービスフィンガプリントをウェブサービスに伝送し、前記デバイスが攻撃を受けているかどうかを識別するステップと、
    を含む、方法。
  2. 前記ウェブサービスが前記生成されたサービスフィンガプリントをエージェントから前記ウェブサービスによって受信されるデータと比較し、i)前記SSL証明書が前記仮想サーバとのセキュアな接続を確立しようとした前記エージェントから受信される第2のSSL証明書に合致しないこと、またはii)前記仮想サーバの前記IPアドレスが前記エージェントから受信される第2のIPアドレスに合致しないことを判定するステップに応答して、前記ウェブサービスから前記デバイスによって、前記デバイスが攻撃を受けているという通知を受信するステップをさらに含む、請求項1に記載の方法。
  3. 前記通知は、前記攻撃が介入者(MITM)攻撃であることを示す、請求項2に記載の方法。
  4. 前記仮想サーバと関連付けられる前記構成変更を判定するステップは、前記デバイスによって、前記仮想サーバの前記SSL証明書が前記仮想サーバの失効したSSL証明書に取って代わったことを判定するステップを含む、請求項1に記載の方法。
  5. 前記仮想サーバと関連付けられる前記構成変更を判定するステップは、前記デバイスによって、前記仮想サーバが前記仮想サーバによって前もってサービス提供されていない新しいIPアドレスと関連付けられることを判定するステップを含む、請求項1に記載の方法。
  6. 前記仮想サーバと関連付けられる前記構成変更を判定するステップは、前記デバイスによって、前記仮想サーバが前記仮想サーバによって前もってサービス提供されていない新しいDNS名をサービス提供することを判定するステップを含む、請求項1に記載の方法。
  7. 前記サービスフィンガプリントは、前記SSL証明書に対応する秘密キーを含まない、請求項1に記載の方法。
  8. 前記デバイスによって、一意の検証キーを生成し、前記SSL証明書が前記一意の検証キーに基づいて供給されるときに、前記仮想サーバがSSLハンドシェイクのプライベート拡張を実装することを可能にするステップをさらに含む、請求項1に記載の方法。
  9. 前記サービスフィンガプリントを生成するステップはさらに、前記デバイスによって、前記一意の検証キーを含む、前記サービスフィンガプリントを生成するステップを含む、請求項8に記載の方法。
  10. エージェントから、前記エージェントと前記仮想サーバとの間にセキュアな接続を確立する要求を受信するステップと、
    前記セキュアな接続を確立する前記要求を受信するステップに応答して、前記デバイスによって、前記SSL証明書および前記一意の検証キーを前記エージェントに伝送するステップと、
    をさらに含む、請求項8に記載の方法。
  11. セキュアソケットレイヤ(SSL)通信のセキュリティを改良するためのシステムであって、
    複数のクライアントおよび1つまたはそれを上回るサーバを仲介するデバイスであって、
    前記デバイス上で実行する仮想サーバと関連付けられる構成変更を判定するように構成される、構成変更識別子と、
    前記仮想サーバと関連付けられる前記構成変更を判定することに応答して、前記仮想サーバ用のサービスフィンガプリントを生成するように構成されるサービスフィンガプリントジェネレータであって、前記サービスフィンガプリントは、前記仮想サーバの仮想インターネットプロトコル(IP)アドレスのためのドメイン名サービス(DNS)エイリアスと、前記仮想サーバのセキュアソケットレイヤ(SSL)証明書を供給する前記仮想サーバのポート番号と、前記デバイスによってサービス提供されるIPアドレスと、前記SSL証明書とを含む、サービスフィンガプリントジェネレータと、
    前記生成されたサービスフィンガプリントをウェブサービスに伝送し、前記デバイスが攻撃を受けていることを識別するように構成される、サービスフィンガプリント伝送機と、
    を含む、デバイス
    を備える、システム。
  12. 前記デバイスはさらに、前記ウェブサービスが前記生成されたサービスフィンガプリントをエージェントから前記ウェブサービスによって受信されるデータと比較し、i)前記SSL証明書が前記仮想サーバとのセキュアな接続を確立しようとした前記エージェントから受信される第2のSSL証明書に合致しないこと、またはii)前記仮想サーバの前記IPアドレスが前記エージェントから受信される第2のIPアドレスに合致しないことを判定することに応答して、前記デバイスが攻撃を受けているという通知を前記ウェブサービスから受信するように構成される、通知受信機を備える、請求項11に記載のシステム。
  13. 前記通知は、前記攻撃が介入者(MITM)攻撃であることを示す、請求項12に記載のシステム。
  14. 前記構成変更識別子はさらに、前記仮想サーバの前記SSL証明書が前記仮想サーバの失効したSSL証明書に取って代わったことを判定するように構成される、請求項11に記載のシステム。
  15. 前記構成変更識別子はさらに、前記仮想サーバが前記仮想サーバによって前もってサービス提供されていない新しいIPアドレスと関連付けられることを判定するように構成される、請求項11に記載のシステム。
  16. 前記構成変更識別子はさらに、前記仮想サーバが前記仮想サーバによって前もってサービス提供されていない新しいDNS名をサービス提供することを判定するように構成される、請求項11に記載のシステム。
  17. 前記サービスフィンガプリントは、前記SSL証明書に対応する秘密キーを含まない、請求項11に記載のシステム。
  18. 前記デバイスはさらに、一意の検証キーを生成し、前記SSL証明書が前記一意の検証キーに基づいて供給されるときに、前記仮想サーバがSSLハンドシェイクのプライベート拡張を実装することを可能にするように構成される、検証キージェネレータを備える、請求項11に記載のシステム。
  19. 前記サービスフィンガプリントジェネレータはさらに、前記サービスフィンガプリントを生成して前記一意の検証キーを含むように構成される、請求項18に記載のシステム。
  20. 前記デバイスはさらに、
    エージェントから、前記エージェントと前記仮想サーバとの間にセキュアな接続を確立する要求を受信し、
    前記セキュアな接続を確立する前記要求を受信することに応答して、前記SSL証明書および前記一意の検証キーを前記エージェントに伝送するように構成される、
    セキュア接続インターフェースを備える、
    請求項18に記載のシステム。
JP2017554850A 2015-05-08 2016-05-06 セキュアソケットレイヤ(ssl)通信のセキュリティを改良するためのシステムおよび方法 Expired - Fee Related JP6503476B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562158876P 2015-05-08 2015-05-08
US62/158,876 2015-05-08
PCT/US2016/031250 WO2016182923A1 (en) 2015-05-08 2016-05-06 Systems and methods for improving security of secure socket layer (ssl) communications

Publications (2)

Publication Number Publication Date
JP2018523181A JP2018523181A (ja) 2018-08-16
JP6503476B2 true JP6503476B2 (ja) 2019-04-17

Family

ID=56072429

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017554850A Expired - Fee Related JP6503476B2 (ja) 2015-05-08 2016-05-06 セキュアソケットレイヤ(ssl)通信のセキュリティを改良するためのシステムおよび方法

Country Status (6)

Country Link
US (2) US10218734B2 (ja)
EP (1) EP3295644B1 (ja)
JP (1) JP6503476B2 (ja)
KR (1) KR102052810B1 (ja)
CN (1) CN107771320B (ja)
WO (1) WO2016182923A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103841592B (zh) * 2012-11-27 2017-12-05 中兴通讯股份有限公司 一种微波设备托管的实现方法及装置
CN104580168B (zh) * 2014-12-22 2019-02-26 华为技术有限公司 一种攻击数据包的处理方法、装置及系统
US10659366B1 (en) 2015-11-04 2020-05-19 Amazon Technologies, Inc. Load balancer metadata forwarding on secure connections
US10581823B2 (en) * 2016-03-21 2020-03-03 Vmware, Inc. Web client plugin manager in vCenter managed object browser
US10218694B2 (en) 2016-11-22 2019-02-26 Bank Of America Corporation Securely orchestrating events initiated at remote servers using a certificate server
EP3382617A1 (en) * 2017-03-30 2018-10-03 Tata Consultancy Services Limited Method and system for conducting audit for an assessment platform
US10666640B2 (en) * 2017-12-20 2020-05-26 Cisco Technology, Inc. Semi-active probing framework to gather threat intelligence for encrypted traffic and learn about devices
EP3732824A4 (en) * 2017-12-29 2021-09-15 Pensando Systems Inc. METHODS AND SYSTEMS FOR NETWORK MICROSEGMENTATION BASED ON CRYPTOGRAPHIC IDENTITY
CN110059475A (zh) * 2018-01-18 2019-07-26 伊姆西Ip控股有限责任公司 用于数据保护的方法、设备和计算机程序产品
US10841280B2 (en) 2018-03-16 2020-11-17 Lightspeed Systems, Inc. User device-based enterprise web filtering
FR3083887B1 (fr) * 2018-07-11 2020-11-27 Wallix Procede et dispositif de detection de compromission d’une cible par une attaque laterale
US10951496B2 (en) * 2018-12-24 2021-03-16 Threat Stack, Inc. System and method for cloud-based control-plane event monitor
US11201853B2 (en) 2019-01-10 2021-12-14 Vmware, Inc. DNS cache protection
WO2020150880A1 (en) * 2019-01-22 2020-07-30 道里云信息技术(北京)有限公司 Publicly verifiable compressed fingerprints and an application in securing domain name systems
US11048544B2 (en) * 2019-04-08 2021-06-29 Sap Se Cloud resource credential provisioning for services running in virtual machines and containers
CN110572381A (zh) * 2019-08-30 2019-12-13 北京科东电力控制系统有限责任公司 一种应用在电力安全保护装置中的智能学习系统及方法
US10855644B1 (en) 2019-09-09 2020-12-01 Vmware, Inc. Address resolution protocol entry verification
US11582193B2 (en) * 2019-09-16 2023-02-14 Saudi Arabian Oil Company System and method for securely interconnecting branch networks to enterprise network through TSPS
CN110535886B (zh) * 2019-09-30 2022-09-16 中国工商银行股份有限公司 用于检测中间人攻击的方法、装置、系统、设备及介质
KR102295484B1 (ko) * 2019-11-25 2021-08-30 순천향대학교 산학협력단 안드로이드 플랫폼에서의 ssl 통신시 보안 위협 검증 장치 및 방법
US11182150B2 (en) 2020-01-14 2021-11-23 Pensando Systems Inc. Zero packet loss upgrade of an IO device
US11575646B2 (en) * 2020-03-12 2023-02-07 Vmware, Inc. Domain name service (DNS) server cache table validation
WO2021234580A1 (en) * 2020-05-21 2021-11-25 Marvell Asia Pte. Ltd. Methods and systems for secure network communication
CN111865992B (zh) * 2020-07-23 2021-04-02 亚数信息科技(上海)有限公司 一种acme集中管理系统及其负载均衡方法
CN112003689A (zh) * 2020-08-31 2020-11-27 北京三未信安科技发展有限公司 一种ssl数据包的快速处理方法、系统和电子设备
CN112055032B (zh) * 2020-09-21 2022-05-17 迈普通信技术股份有限公司 一种报文处理方法、装置、电子设备及存储介质
US11782748B2 (en) * 2021-05-14 2023-10-10 Oracle International Corporation Cloud shell extension framework
KR102321934B1 (ko) * 2021-07-05 2021-11-04 주식회사 두두아이티 보안성 향상을 위한 ssl 기반의 프록시 서버
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
CN114490033B (zh) * 2021-12-27 2024-05-03 华东师范大学 一种多样化算力的统一性能建模和适应性变更方法及装置
WO2024071927A1 (ko) * 2022-09-28 2024-04-04 삼성전자 주식회사 전자 장치 및 이를 이용한 데이터 보호 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0022485D0 (en) * 2000-09-13 2000-11-01 Apl Financial Services Oversea Monitoring network activity
US7512974B2 (en) * 2004-09-30 2009-03-31 International Business Machines Corporation Computer system and program to update SSL certificates
US8683052B1 (en) * 2008-10-23 2014-03-25 NexWavSec Software Inc. Online communication risks
US8677466B1 (en) * 2009-03-10 2014-03-18 Trend Micro Incorporated Verification of digital certificates used for encrypted computer communications
US9817695B2 (en) * 2009-04-01 2017-11-14 Vmware, Inc. Method and system for migrating processes between virtual machines
US8654659B2 (en) * 2009-12-23 2014-02-18 Citrix Systems, Inc. Systems and methods for listening policies for virtual servers of appliance
US8621204B2 (en) * 2009-12-23 2013-12-31 Citrix Systems, Inc. Systems and methods for evaluating and prioritizing responses from multiple OCSP responders
US8627063B2 (en) * 2009-12-23 2014-01-07 Citrix Systems, Inc. Systems and methods for flash crowd control and batching OCSP requests via online certificate status protocol
JP5903822B2 (ja) * 2011-09-30 2016-04-13 富士通株式会社 設定制御装置、設定制御方法および設定制御プログラム
US9077546B1 (en) * 2012-11-27 2015-07-07 Symnatec Corporation Two factor validation and security response of SSL certificates
US8966659B2 (en) * 2013-03-14 2015-02-24 Microsoft Technology Licensing, Llc Automatic fraudulent digital certificate detection
CN103312689B (zh) * 2013-04-08 2017-05-24 西安电子科技大学 一种计算机的网络隐身方法及基于该方法的网络隐身系统
US10019272B1 (en) * 2013-11-12 2018-07-10 VCE IP Holding Company LLC Virtual appliance manager
US9639691B2 (en) * 2014-06-26 2017-05-02 Vmware, Inc. Dynamic database and API-accessible credentials data store
EP3160092B1 (en) * 2014-06-28 2019-02-27 Huawei Technologies Co., Ltd. Method and device for network resource balancing
CN104378374B (zh) * 2014-11-14 2017-11-07 国家超级计算深圳中心(深圳云计算中心) 一种基于安全套接层建立通信的方法及系统

Also Published As

Publication number Publication date
EP3295644B1 (en) 2021-06-30
KR20180002832A (ko) 2018-01-08
KR102052810B1 (ko) 2019-12-05
CN107771320A (zh) 2018-03-06
CN107771320B (zh) 2021-08-31
US10819734B2 (en) 2020-10-27
US20160330230A1 (en) 2016-11-10
EP3295644A1 (en) 2018-03-21
JP2018523181A (ja) 2018-08-16
US20190182288A1 (en) 2019-06-13
US10218734B2 (en) 2019-02-26
WO2016182923A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
JP6503476B2 (ja) セキュアソケットレイヤ(ssl)通信のセキュリティを改良するためのシステムおよび方法
US10630674B2 (en) Systems and methods for performing targeted scanning of a target range of IP addresses to verify security certificates
US9467454B2 (en) Systems and methods for network filtering in VPN
US10361972B2 (en) Systems and methods to support VXLAN in partition environment where a single system acts as multiple logical systems to support multitenancy
US9497281B2 (en) Systems and methods to cache packet steering decisions for a cluster of load balancers
US10785315B2 (en) Method for resumption of an application session with a very dynamic and very large state in a standby intermediary device when the primary device fails
US9491161B2 (en) Systems and methods for performing single sign-on by an intermediary device for a remote desktop session of a client
US10057084B2 (en) Systems and methods of extending on premise network into the cloud
US9749148B2 (en) Systems and methods for load balancing non-IP devices
US8891364B2 (en) Systems and methods for distributing traffic across cluster nodes
KR20190126143A (ko) 대체 링크 상의 패킷의 적응형 복제에 의한 하이브리드 wan 링크의 자동 튜닝
US8832241B2 (en) Systems and methods for validating a configuration in a cluster
JP2019518272A (ja) サービスチェーン負荷平衡のためのシステムおよび方法
US8996652B2 (en) Systems and methods for cluster LAG
US9923818B2 (en) Systems and methods of achieving equal distribution of packets in a multicore system which acts as a tunnel end point
US20130336337A1 (en) Systems and methods for sharing l2 information & mac based forwarding
US20130339547A1 (en) Systems and methods for arp resolution over a cluster channel
US9794219B2 (en) Systems and methods for ARP resolution over an asynchronous cluster network
US9866529B2 (en) Systems and methods for ETAG persistency
US20160057031A1 (en) Systems and methods for high volume logging and synchronization for large scale network address translation

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190325

R150 Certificate of patent or registration of utility model

Ref document number: 6503476

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees