KR20050002617A - 호스트 상태 정보를 이용한 네트워크 로드 밸런싱 - Google Patents

호스트 상태 정보를 이용한 네트워크 로드 밸런싱 Download PDF

Info

Publication number
KR20050002617A
KR20050002617A KR1020040049533A KR20040049533A KR20050002617A KR 20050002617 A KR20050002617 A KR 20050002617A KR 1020040049533 A KR1020040049533 A KR 1020040049533A KR 20040049533 A KR20040049533 A KR 20040049533A KR 20050002617 A KR20050002617 A KR 20050002617A
Authority
KR
South Korea
Prior art keywords
load
health
load balancing
host
application
Prior art date
Application number
KR1020040049533A
Other languages
English (en)
Other versions
KR101109218B1 (ko
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 KR20050002617A publication Critical patent/KR20050002617A/ko
Application granted granted Critical
Publication of KR101109218B1 publication Critical patent/KR101109218B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Small-Scale Networks (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Oscillators With Electromechanical Resonators (AREA)
  • Control Of Multiple Motors (AREA)
  • Multi Processors (AREA)

Abstract

제1 미디어 구현예에서, 하나 이상의 처리기-억세스가능 미디어는, 실행되는 경우, 복수의 호스트에서 호스트 상태 정보를 누적하는 동작; 및 상기 복수의 호스트로부터 상기 누적된 호스트 상태 정보를 전송하는 동작을 포함하는 동작들을 시스템이 수행하도록 지시하는 처리기-실행가능 명령들을 포함한다. 제2 미디어 구현예에서, 하나 이상의 처리기-억세스가능 미디어는, 실행되는 경우, 복수의 호스트로부터 호스트 상태 정보를 수신하는 동작과, 상기 수신된 호스트 상태 정보에 응답하여, 로드 밸런싱을 결정하는 동작을 포함하는 동작들을 수행하도록 시스템에 지시하는 처리기-실행가능 명령들을 포함한다. 제3 미디어 구현예에서, 처리기-실행가능 명령들을 포함하는 하나 이상의 처리기-억세스가능 미디어는, 상기 처리기 실행가능 명령들이, 실행될 때, 어플리케이션을 기초로 건강 및 로드 정보를 결정하는 동작, 및 상기 건강 및 로드 정보에 응답하여 복수의 어플리케이션 중에서 하나의 어플리케이션을 선택하는 동작을 포함하는 동작들을 시스템이 수행하게 한다.

Description

호스트 상태 정보를 이용한 네트워크 로드 밸런싱{NETWORK LOAD BALANCING WITH HOST STATUS INFORMATION}
본 발명은 일반적으로 네트워크 로드 밸런싱에 관한 것이며, 특히 예의 방식이나 제한은 아닌, 호스트 상태 정보를 이용하여 네트워크 로드 밸런싱하는 것에 관한 것이다.
통신, 및 통신을 포함하는 삶의 여러 면들이 인터넷에 의해 상당히 영향을 받아 왔다. 인터넷은 정보가 두 사람들 및/또는 엔티티들 간에 신속하고, 비교적 쉽게 통신될 수 있도록 한다. 그 인터넷은 정보가 그들 간에 전달될 수 있도록 함께 링크되는 많은 네트워크 노드들을 포함한다. 몇몇 네트워크 노드들은 하나의 링크로부터 또 다른 링크로 패킷을 전파하는 라우터들이 될 수 있고, 개개의 클라이언트 컴퓨터들이 될 수 있고, 다른 엔티티들에 대한 개인용 네트워크들(예를 들어, 비지니스용 인트라넷들) 등이 될 수 있다.
이러한 개인용 네트워크 경우에 대해, 다른 것들에 추가해서, 인터넷 노드 또는 노드들에 도착하는 패킷들은 개인용 네트워크 내의 다른 노드들에 분배된다. 그러한 개인용 네트워크는 예를 들어 개인용 네트워크에 도착하는 패킷들에 각각 작용할 수 있는 한 세트의 서버들로부터 형성될 수 있다. 비즈니스, 대학, 관공서 등은 자신의 개인용 네트워크에서 짧은 타임프레임(timeframe) 내에 많은 패킷들을수신할 수 있다. 적시에 응답하여 도착 패킷들의 거부 또는 손실의 가능성을 줄이기 위해, 그 개인용 네트워크는 도착 패킷들을 각각 동시에 작용할 수 있는 다중 서버들에 의존할 수 있다.
그 도착 패킷들은 종종 문서, 카탈로그 아이템, 웹 페이지 등과 같은 임의의 정보에 속하는 질의들이다. 그 도착 패킷들은 또한 고객과 상인 간의 경제상의 거래에 속할 수 있다. 패킷-기반 통신의 패킷들의 다른 목적들이 가능하다. 관계없이, 그 도착 패킷들은 패킷들의 신속한 도착 및/또는 복잡한 통신 교환을 수용하기 위해 한 세트의 서버들과는 다른 서버들 간에 분배된다.
한 세트의 서버들과는 다른 서버들 간의 도착 패킷들의 분배는 종종 네트워크 로드 밸런싱으로 불린다. 다시 말해서, 로드 밸런싱 동작은, 노드 또는 노드들이 개인용 네트워크를 구성하는 경우 및/또는 그들이 개인용 서버를 인터넷에 접속하는 경우, 패킷들이 인터넷의 노드 또는 노드들에 도착하기 때문에, 패킷들 상에서 수행될 수 있다.
그러한 로드 밸런싱 동작은 개인용 네트워크를 인터넷에 접속하고 및/또는 인터넷 상에 개인용 네트워크의 존재를 제공하는 노드 또는 노드들에서 개인용 네트워크를 향하는 전용 하드웨어를 사용하여 달성된다. 그 로드 밸런싱 동작을 수행하는 물리적 하드웨어는 보통 그 로드 밸런싱 동작의 반복성을 실행하고 가용성을 개선하기 위해 그 전체에 복제된다. 로드 밸런싱 동작들에 대한 용량을 증가시키기 위해, 보다-강력한 하드웨어가 그 이전의 로드 밸런싱 하드웨어의 전체를 복사하고 그리하여 그의 동작 능력은 그 이전의 로드 밸런싱 하드웨어로 대체된다.그러므로, 로드 밸런싱 동작 능력들의 그러한 확대(scaling up)는 그 대체를 통해 하드웨어의 파워를 증가하는 것으로 한정된다.
로드 밸런싱 동작을 구현하기 위해, 그 하드웨어는 보통 도착한 접속 요청들의 라운드 로빈(round robin) 분배를 수행한다. 다시 말해, 도착한 접속 요청들은 각 서버에 분배되고 있는 단일의 접속 요청으로서 선형의 반복적인 방식으로 한 세트의 서버들 중의 서버들에 분배된다. 이러한 접속들의 라운드-로빈 로드 밸런싱 분배는 통상적으로 개인용 네트워크의 조건 또는 도착하는 접속 요청의 성질에 무관하게 이용된다. 만일 로드 밸런싱 동작이 라운드 로빈 분배를 넘어 연장하는 경우, 이러한 다른 인자들은 단지 그들이 네트워크 트래픽으로부터 및/또는 개인용 네트워크의 폭주 레벨로부터 추정될 수 있는 범위로 고려된다.
따라서, 네트워크 로드 밸런싱 및/또는 그와 연관된 옵션들을 개선하는 구성들 및/또는 기술들이 필요하다.
제1 미디어 구현예에서, 하나 이상의 처리기-억세스가능 미디어는, 실행되는 경우, 복수의 호스트에서 호스트 상태 정보를 누적하는 동작; 및 상기 복수의 호스트로부터 상기 누적된 호스트 상태 정보를 전송하는 동작을 포함하는 동작들을 시스템이 수행하도록 지시하는 처리기-실행가능 명령들을 포함한다. 제2 미디어 구현예에서, 하나 이상의 처리기-억세스가능 미디어는, 실행되는 경우, 복수의 호스트로부터 호스트 상태 정보를 수신하는 동작과, 상기 수신된 호스트 상태 정보에 응답하여, 로드 밸런싱을 결정하는 동작을 포함하는 동작들을 수행하도록 시스템에지시하는 처리기-실행가능 명령들을 포함한다. 제3 미디어 구현예에서, 처리기-실행가능 명령들을 포함하는 하나 이상의 처리기-억세스가능 미디어는, 상기 처리기 실행가능 명령들이, 실행될 때, 어플리케이션을 기초로 건강 및 로드 정보를 결정하는 동작, 및 상기 건강 및 로드 정보에 응답하여 복수의 어플리케이션 중에서 하나의 어플리케이션을 선택하는 동작을 포함하는 동작들을 시스템이 수행하게 한다.
제4 미디어 구현예에서, 하나 이상의 처리기-억세스가능 미디어는, 실행될 때, 복수의 어플리케이션 종단점에 대하여 건강 및/또는 로드 정보를 분석하는 동작, 및 상기 분석 동작에 응답하여, 상기 복수의 어플리케이션 종단점에 대한 토큰 할당을 확인하는 동작을 포함하는 동작들을 시스템이 수행하게 하는 처리기-실행가능 명령을 포함한다.
제5 미디어 구현예에서, 하나 이상의 처리기-억세스가능 미디어는, 실행될 때, 적어도 하나의 호스트와 하나 이상의 로드 밸런싱 유닛 간에 메시지 프로토콜을 시스템이 구현하게하는 처리기-실행가능 명령들을 포함하고, 상기 메시지 프로토콜은 적어도 하나의 상기 호스트와 하나 이상의 상기 로드 밸런싱 유닛 간에 건강 및/또는 로드 정보를 통신하기 위해 사용된다.
예시적 시스템 구현예에서, 시스템은 하나 이상의 어플리케이션을 호스팅하는 적어도 하나의 디바이스를 포함하고, 상기 적어도 하나의 디바이스는 복수의 엔트리를 포함하는 건강 및 로드 테이블을 포함하며, 상기 복수의 엔트리 각각은 하나 이상의 상기 어플리케이션과 관계가 있으며, 상기 복수의 엔트리 각각은: 하나 이상의 어플리케이션 중 하나의 특정 어플리케이션에 대한 어플리케이션 식별자;상기 특정 어플리케이션의 적어도 하나의 상태를 특징짓는 정보; 및 상기 특정 어플리케이션과 관계하는 적어도 하나의 로드 밸런싱 지령을 포함한다.
다른 방법, 시스템, 접근법, 장치, 어플리케이션 프로그래밍 인터페이스(API), 디바이스, 미디어, 절차, 배열등 구현예가 설명된다.
도면들 전체에서 유사한 및/또는 대응하는 양상들, 특징들, 및 구성요소들을 참조하는데 동일한 번호들이 사용된다.
도 1은 로드 밸런싱 인프라스트럭쳐 및 다수의 호스트들을 도시하는 예시적인 네트워크 로드 밸런싱 패러다임.
도 2는 다수의 로드 밸런싱 유닛들과 다수의 호스트들을 도시하는 예시적인 네트워크 로드 밸런싱 패러다임.
도 3은 분리된 기능성 및 예시적인 호스트를 갖는 예시적인 로드 밸런싱 유닛을 도시하는 도면.
도 4는 분리된 분류 및 포워딩 기능성을 갖는 예시적인 로드 밸런싱 인프라스트럭쳐를 도시하는 도면.
도 5는 네트워크 로드 밸런싱 인프라스트럭쳐를 다른 구성들로 스케일 아웃하기 위한 예시적인 방법을 도시하는 흐름도.
도 6은 디바이스 시각으로부터 제 1의 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성을 도시하는 도면.
도 7은 디바이스 시각으로부터 제 2의 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성을 도시하는 도면.
도 8a 및 도 8b는 구성요소 시각으로부터 제 1 및 제 2의 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성들을 도시하는 도면.
도 9a 및 도 9b는 리소스 시각으로부터의 제 1 및 제 2의 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성들을 도시하는 도면.
도 10은 호스트 상태 정보를 포함하는 예시적인 네트워크 로드 밸런싱 접근법을 도시하는 도면.
도 11은 호스트 상태 정보를 포함하는 네트워크 로드 밸런싱을 위한 예시적인 방법을 도시하는 흐름도.
도 12는 건강(health) 및 로드 정보를 포함하는 예시적인 네트워크 로드 밸런싱 접근법을 도시하는 도면.
도 13a는 도 12에 도시된 바와 같은 예시적인 건강 및 로드 테이블.
도 13b는 도 12에 도시된 바와 같은 예시적인 통합된 건강 및 로드 캐쉬.
도 14는 건강 및 로드 정보를 포함하는 네트워크 로드 밸런싱을 위한 예시적인 방법을 도시하는 흐름도.
도 15는 도 12에 도시된 호스트들과 로드 밸런싱 유닛들 간의 통신들을 위한 예시적인 메시지 프로토콜을 도시하는 도면.
도 16은 도 12에 도시된 호스트들과 로드 밸런싱 유닛들 간의 통신들을 위한 예시적인 메시지 전송 스킴을 도시하는 도면.
도 17a 및 도 17b는 도 13a의 건강 및 로드 테이블 그리고 도 13b의 통합된건강 및 로드 캐쉬들을 위한 예시적인 건강 및 로드 정보 프록시 저장 시나리오들을 도시하는 도면.
도 18은 건강 및 로드 정보를 이용하는 예시적인 타겟 호스트 할당 절차를 도시하는 도면.
도 19는 세션 정보를 포함하는 예시적인 네트워크 로드 밸런싱 접근법을 도시하는 도면.
도 20은 통지들 및 메시지들을 이용하여 세션 정보를 통신하는 단계를 포함하는 예시적인 네트워크 로드 밸런싱 접근법을 도시하는 도면.
도 21은 통지들 및 메시지들을 이용하여 세션 정보를 통신하는 단계를 포함하는 네트워크 로드 밸런싱을 위한 예시적인 방법을 도시하는 흐름도.
도 22는 다수의 로드 밸런싱 유닛들에서 세션 정보를 관리하는 단계에 대해 예시적인 접근법을 도시하는 도면.
도 23a는 도 20에 도시된 바와 같은 예시적인 세션 테이블.
도 23b는 도 22에 도시된 바와 같은 예시적인 분포된 원자 관리자(DAM) 테이블(DAMT).
도 24는 다수의 로드 밸런싱 유닛들에서 세션 정보를 관리하기 위한 예시적인 방법을 도시하는 흐름도.
도 25는 요청 라우팅 기능성을 갖는 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐를 도시하는 도면.
도 26은 (ⅰ) 세션 정보 및 (ⅱ) 건강 및 로드 정보에 관하여 들어오는 패킷들을 라우팅하기 위한 예시적인 방법을 도시하는 흐름도.
도 27은 실패가 없는 예시적인 트래픽 라우팅 흐름을 도시하는 도면.
도 28은 실패(들)이 없는 예시적인 트래픽 라우팅 흐름을 도시하는 도면.
도 29는 네트워크 로드 밸런싱 인프라스트럭쳐의 높은 가용성을 위한 부가적인 예시적인 네트워크 로드 밸런싱 정보와의 트래픽 라우팅 상호작용의 예시적인 동작 구현을 도시하는 도면.
도 30은 건강 및 로드 정보와의 트래픽 라우팅 상호작용의 예시적인 동작 구현을 도시하는 도면.
도 31은 네트워크 로드 밸런싱 인프라스트럭쳐를 위한 예시적인 높은 가용성 메카니즘들을 도시하는 도면.
도 32는 접속 이동으로 응용-레벨 네트워크 로드 밸런싱에 대한 예시적인 접근법을 도시하는 도면.
도 33은 제 1 디바이스로부터 제 2 디바이스로의 접속을 이동시키기 위한 예시적인 방법을 도시하는 흐름도.
도 34는 발신 디바이스의 시각으로부터 접속 이동에 대한 예시적인 접근법을 도시하는 도면.
도 35는 타겟팅된 디바이스의 시각으로부터 접속 이동에 대한 예시적인 접근법을 도시하는 도면.
도 36은 접속 이동을 위한 오프로딩 절차(offloading procedure)에 대한 예시적인 접근법을 도시하는 도면.
도 37은 접속 이동을 위한 업로딩 절차(uploading procedure)에 대한 예시적인 접근법을 도시하는 도면.
도 38은 포워더(forwarder)와 호스트 간의 패킷 터널링에 대한 예시적인 접근법을 도시하는 도면.
도 39는 제 1 디바이스와 제 2 디바이스 간의 패킷 터널링을 위한 예시적인 방법을 도시하는 흐름도.
도 40은 본 명세서에 기재된 바와 같이 네트워크 로드 밸런싱의 적어도 하나의 양상을 (전체적으로 또는 부분적으로) 구현할 수 있는 예시적인 컴퓨팅(또는 일반적인 디바이스) 동작 환경을 도시하는 도면.
* 도면의 주요 부분에 대한 부호의 설명 *
102(1), 102(2), 102(m) : 클라이언트
104 : 요청
106 : 로드 밸런싱 인프라스트럭쳐
108(1), 108(2), 108(n) : 호스트
202(1), 202(2) : 라우터/스위치
106(1), 106(2), 106(u) : 로드 밸런싱 유닛
302 : 포워더
304 : 분류기
306 : 요청 라우터
308 : 세션 트랙커
312 : 터널러
314 : 건강 및 로드 핸들러
예시적인 네트워크 로드 밸런싱 파라다임
이 섹션은 네트워크 로드 밸런싱을 위한 예시적인 파라다임을 설명하고, 다음 섹션들에서의 설명을 위한 기초, 환경, 콘텍스트 등을 제공하는데 사용된다. 이 섹션은 주로 도 1 내지 도 3을 참조한다.
도 1은 로드 밸런싱 인프라스트럭쳐(106) 및 다수의 호스트들(108)을 도시하는 예시적인 네트워크 로드 밸런싱 파라다임(100)이다. 예시적인 네트워크 로드 밸런싱 파라다임(100)은 네트워크(104) 및 로드 밸런싱 인프라스트럭쳐(106) 뿐만 아니라 다수의 클라이언트들(102(1), 102(2) ... 102(m)) 및 다수의 호스트들(108(1), 108(2) ... 108(n))도 포함한다.
각각의 클라이언트들(102)은 컴퓨터, 이동국, 오락기, 또 다른 네트워크 등과 같은 네트워크 통신을 할 수 있는 임의의 디바이스가 될 수 있다. 클라이언트들(102)은 또한 클라이언트 디바이스를 동작시키는 사람(person) 및/또는 엔티티(entity)에 관한 것일 수 있다. 다시 말해서, 클라이언트들(102)은 사용자들 및/또는 기계들인 논리 클라이언트(logical client)들을 포함할 수 있다. 네트워크(104)는 인터넷, 인트라넷, 유선 또는 무선 전화 네트워크 등과 같은 하나 이상의 네트워크들로부터 형성될 수 있다. 클라이언트들(102)을 위한 디바이스들 및 네트워크(104)를 위한 네트워크 타입들/위상들의 부가적인 예들이 "컴퓨터 또는 다른 디바이스를 위한 예시적인 동작 환경"이란 제목의 섹션에서 도 40을 참조하여 이하에 기재된다.
개별 클라이언트들(102)이 로드 밸런싱 인프라스트럭쳐(106)를 통해 네트워크(104)를 가로질러 하나 이상의 호스트들(108)과 통신할 수 있으며, 그 역도 같다. 호스트들(108)은 클라이언트들(102)과의 상호작용/통신, 클라이언트들(102)에 의한 사용 등을 위한 하나 이상의 응용들을 호스팅한다. 각각의 호스트(108)는 서버 및/또는 디바이스, 다수의 서버들 및/또는 다수의 디바이스들, 서버의 일부 및/또는 디바이스의 일부, 이들의 몇가지 조합 등에 대응할 수 있다. 호스트들(108)을 위한 특정 구현들이 다른 네트워크 로드 밸런싱 상황들의 콘텍스트에서 이하에 더 기재된다. (그러나 호스트들(108)을 위한 후위 지원(back-end support)은 일반적으로 명료성을 위해 도시되지 않는다.) 더구나, 호스트들(108)을 위한 디바이스들의 부가적인 예들은 또한 "컴퓨터 또는 다른 디바이스를 위한 예시적인 동작 환경"란 제목의 섹션에서 도 40을 참조하여 이하에 기재된다.
로드 밸런싱 인프라스트럭쳐(106)는 하나 이상의 가상 인터넷 프로토콜(IP) 어드레스들에서 네트워크(104)를 통해 도착가능 또는 위치가능하다. 로드 밸런싱 인프라스트럭쳐(106)의 가상 IP 어드레스에 지시되는 클라이언트들(102)(또는 다른 노드들)로부터의 통신들이 수신되고 호스트(108)로 포워딩된다. 로드 밸런싱 인프라스트럭쳐(106)는 하드웨어 및/또는 소프트웨어 구성요소들(도 1에 명백하게 도시되지 않음)로 구성된다.
비록 로드 밸런싱 인프라스트럭쳐(106)가 완전한 타원으로 도시될지라도, 로드 밸런싱을 유효하게 할 인프라스트럭쳐는 또한 예시적인 네트워크 로드 밸런싱 파라다임(100)의 다른 양상들에 분배될 수 있다. 예를 들어, 로드 밸런싱 인프라스트럭쳐(106)의 소프트웨어 구성요소(들)은 이하에 더 기재되는 바와 같이 하나 이상의 호스트들(108)에 위치될 수 있다. 로드 밸런싱 인프라스트럭쳐(106)를 위한 아키텍쳐들의 예들은 "컴퓨터 또는 다른 디바이스를 위한 예시적인 동작 환경"이란 제목의 섹션에서 도 40을 참조하여 이하에 기재된다.
(1)에 지시된 바와 같이, 하나 이상의 호스트들(108)은 호스트들(108)로부터 로드 밸런싱 인프라스트럭쳐(106)로 호스트 상태 정보를 제공할 수 있다. 이러한 호스트 상태 정보는 어플리케이션에 종속적일 수 있다. 그러한 호스트 상태 정보의 예들은 이하에 더 기재되며, 호스트들(108)을 위한 건강 및/또는 로드 정보, 세션 정보 등을 포함한다. 호스트들(108)로부터 로드 밸런싱 인프라스트럭쳐(106)로 건강 및/또는 로드 정보를 제공하는 단계를 포함하는 특정 구현이 "예시적인 건강 및 로드 처리"라는 제목의 섹션에서 이하에 기재된다.
(2)에서, 요청이 가상 IP 어드레스에서 네트워크(104)를 가로질러 클라이언트(102(1))로부터 로드 밸런싱 인프라스트럭쳐(106)로 보내진다. 클라이언트(102)로부터의 요청의 콘텐트, 포맷 등은 그 요청이 지시된 어플리케이션에 의존할 수 있으며, 용어 "요청"은 그 콘텍스트에 의존하여 호스트(들)로부터 응답 또는 응답들을 암시적으로 포함할 수 있다. 클라이언트 요청들의 종류들은 다음을 포함하지만 그에 제한되지는 않는다:
1. 브라우저 프로그램을 이용한 클라이언트로부터의 하이퍼 텍스트 전송 프로토콜(HTTP) GET 요청들. 어플리케이션에 따라서(특히, 그 요청들의 URL(uniform resource locator) 상에서), 다른 호스트 세트들에 의한 요청들을 서비스하는 것이 더 나을 수 있으며, 그 호스트들 상의 클라이언트 "세션" 상태의 존재는 특정 클라이언트들로부터의 요청들이 특정 호스트들로 라우팅되도록 작용할 수 있다. 그 요청들은 SSL(secure socket layer)(또는 다른 암호화된) 접속을 통해 이루어질 수 있다.
2. 가상 사설 네트워크(VPN) 접속들(예를 들어, 그 호스트들은 VPN 서버들의 세트이다). 이 경우, 그 "요청"은 L2TP(layer-2 tunneling protocol) 또는 PPTP(point-to-point tunneling protocol) "접속"(후자는 전송 제어 프로토콜(TCP) 제어 접속과 연관된 일반적 라우팅 캡슐화(GRE) 데이터 트래픽의 조합임)으로 고려될 수 있다.
3. 터미널 서버 접속들(예를 들어, 그 호스트들은 터미널 서버들의 세트임).
4. 특허 출원 특정 프로토콜을 이용한 개별 TCP 접속들(요청당 하나)의 형태의 특허 요청들.
5. 단순 객체 접근 프로토콜(SOAP) 요청들.
6. TCP 접속을 통한 제어 정보 및 실시간 프로토콜(RTP)을 통한 레턴시-민감성 미디어 스트림을 포함하는 실시간 통신 요청들.
그러므로, 요청들은 많은 다양한 어플리케이션-특정 형태들을 취할 수 있다. 임의의 기재된 구현들에서, 로드 밸런싱 인프라스트럭쳐(106)는 어플리케이션-특정 포워딩 결정들을 만들 수 있다.
(3)에서, 로드 밸런싱 인프라스트럭쳐(106)는 (이 예에서) 102(1)로부터 108(2)로 그 요청을 포워딩한다. 로드 밸런싱 인프라스트럭쳐(106)는 본 명세서에 기재된 구현(들)이 이용되는 것에 의존하여, 그 요청이 포워딩될 호스트(108)을 선택하는 경우에 하나 이상의 많은 인자들을 고려할 수 있다. 예를 들어, 로드 밸런싱 인프라스트럭쳐(106)는 다음을 고려할 수 있다: 각각의 호스트(108)의 그 어플리케이션 건강 및/또는 로드 정보, 호스트(108)에서 저장된 바와 같이 클라이언트(102(1))에 관한 세션 정보 등.
도 2는 다수의 로드 밸런싱 유닛들(106) 및 다수의 호스트들(108)을 도시하는 예시적인 네트워크 로드 밸런싱 파라다임(200)이다. 특히, 로드 밸런싱 인프라스트럭쳐(106)는 예시적인 네트워크 로드 밸런싱 파라다임(200)에서 다수의 로드 밸런싱 유닛들(106(1), 106(2) ... 106(u))로서 도시된다. 부가적으로, 두 개의 라우터 및/또는 스위치들(202(1), 202(2))이 도시된다.
라우터/스위치들(202)은 존재한다면, (도 1의) 로드 밸런싱 인프라스트럭쳐(106)의 일부 또는 그로부터 분리된 것으로 고려될 수 있다. 라우터/스위치들(202)은 네트워크(104)로부터 로드 밸런싱 유닛들(106)의 공유된 가상 IP(VIP)로 수신되는 전체 요청들 및 개별 패킷들을 지시할 책임이 있다. 제 1의 라우터/스위치(202)가 실패한다면, 제 2 라우터/스위치(202)가 제 1에 대해 인계될수 있다. 두 라우터/스위치들(202)가 도시될지라도, 하나 또는 둘 이상의 라우터/스위치들(202)이 대안으로 이용될 수 있다.
라우터/스위치들(202)은 로드 밸런싱 인프라스트럭쳐 또는 로드-밸런싱 어웨어를 무시할 수 있다. 라우터/스위치들(202)이 로드-밸런싱 어웨어가 아니라면, 두 예시적인 옵션들 중 하나가 이용할 수 있다: 제 1 옵션에 대해, 하나의 로드 밸런싱 유닛(106)은 그 공유된 VIP 어드레스에 "할당"되고, 모든 네트워크 트래픽은 거기에 포워딩된다. 이어서 이러한 하나의 로드 밸런싱 유닛(106)은 다른 로드 밸런싱 유닛들(106)을 가로질러 그 트래픽을 균등하게 재분배한다. 그러나, 이러한 (다수의 VIP 어드레스들이 다수의 로드 밸런싱 유닛들(106) 간에 공유되고, 분리되면 이동될 수 있는) 제 1 옵션을 갖는 병목 및 장애극복 문제들이 있다. 제 2 옵션에 대해, 라우터/스위치들(202)이 모든 로드 밸런싱 유닛들(106)에 네트워크 트래픽을 지시하는 것으로 "속으며(tricked)", 이는 개별적으로 로드 밸런싱을 위해 어떤 트래픽이 각각 받아들여야 하는지를 결정한다. 그러나, 이러한 제 2 옵션을 갖는 비효율적인 결과 복제 및 스위치 성능/호환성 문제들이 존재한다.
만일, 다른 한편으로, 라우터/스위치들(202)이 로드-밸런싱 어웨어라면, 라우터/스위치들(202)는 다수의 로드 밸런싱 유닛들(106) 간에 들어오는 네트워크 트래픽을 (예를 들어, 라운드-로빈 형태로) 분배하도록 이루어질 수 있다. 그러한 로드-밸런싱-어웨어 라우터들/스위치들(202)은 (예를 들어, 하드웨어로) 기본 레벨에서 로드 밸런싱 함수들을 실행할 수 있음을 이해해야 한다. 예를 들어, 로드-밸런싱-어웨어 라우터들/스위치들(202)은 특정 소스 IP 어드레스로부터의 모든 패킷들이 동일한 로드 밸런싱 유닛(106)에 지시되도록 단순 IP-어드레스-기초의 세션 친화도를 수행할 수 있다.
로드 밸런싱 유닛들(106)의 각각의 개별적으로-도시된 로드 밸런싱 유닛(106)하나의 물리 디바이스, 다수의 물리 디바이스들, 또는 단일의 물리 디바이스의 일부를 나타낼 수 있다. 예를 들어, 로드 밸런싱 유닛(106(1))은 하나의 서버, 두 개의 서버들, 또는 그 이상에 대응할 수 있다. 대안으로, 로드 밸런싱 유닛(106(1)) 및 로드 밸런싱 유닛(106(2))은 함께 단일의 서버에 대응할 수 있다. 예시적인 로드 밸런싱 유닛(106)이 도 3을 참조하여 기능적 시각으로부터 아래에 더 기재된다.
두 개의 예시적인 요청 경로들 [1] 및 [2]는 도 2에 도시된다. 요청 경로 [1]에 대해, 클라이언트(102(2))는 라우터/스위치(202(1))에 도착하는 네트워크(104)를 통해 요청을 전송한다. 라우터/스위치(202(1))는 클라이언트(102(2))로부터 로드 밸런싱 유닛(106(1))으로 발신된 요청의 패킷(들)을 지시한다. 로드 밸런싱 유닛(106(1))은 이어서 몇몇 로드-밸런싱 기능성(예를 들어, 정책)에 따라서 호스트(108(1))에 그 요청의 패킷(들)을 포워딩한다. 요청 경로 [2]에 대해, 클라이언트(102(m))는 네트워크(104)를 통하여 라우터/스위치(202(2))에 도착하는 요청을 전송한다. 라우터/스위치(202(2))는 클라이언트(102(m))로부터 발신된 요청의 패킷(들)을 로드 밸런싱 유닛(106(u))으로 지시한다. 로드 밸런싱 유닛(106(u))은 이어서 몇몇 로드-밸런싱 기능성에 따라서 호스트(108(n))에 그 요청의 패킷(들)을 전송한다. 예시적인 로드-밸런싱 기능성이 도 3을 참조하여 아래에 더 기재된다.
도 3은 분리된 기능성 및 예시적인 호스트(108)를 갖는 예시적인 로드 밸런싱 유닛(106)을 도시한다. 로드 밸런싱 유닛(106)은 일곱(7)개의 기능성 블록들(302 내지 314)을 포함한다. 호스트(108)는 하나 이상의 어플리케이션들(316)을 포함한다. 기재된 구현에서, 로드 밸런싱 유닛(106)은 포워더(302), 분류기(304), 요청 라우터(306), 세션 트랙커(308), 접속 이동기(310), 터널러(312), 및 건강 및 로드 핸들러(314)를 포함한다.
건강 및 로드 핸들러(314)는 부분적으로 호스트들(108)에 그리고 부분적으로 로드 밸런싱 유닛들(106)의 디바이스 상에 위치된다. 건강 및 로드 핸들러(314)는 (예를 들어, 로드-밸런싱 결정들을 이루는 경우) 건강 및/또는 그 로드 정보가 로드-밸런싱 기능성을 위해 사용될 수 있다. 건강 및 로드 핸들러(314)를 위한 예시적인 구현들은 아래에 특히 "예시적인 건강 및 로드 핸들러"라는 제목의 섹션에서 더 기재된다.
세션 트랙커(308)는 또한 부분적으로 호스트들(108)에 그리고 부분적으로 로드 밸런싱 유닛들(106)의 디바이스 상에 위치될 수 있다. 세션 트랙커(308)는 미리-설정된 세션들의 재접속들/연속들이 로드-밸런싱 기능성에 의해 촉진될 수 있도록 클라이언트들(102)에 의해 설정된 세션들을 모니터링한다. 예를 들어, 몇몇 어플리케이션들이 그 호스트들 상에 (또한 호스트 상태 정보 타입인) 어플리케이션-특정 클라이언트 세션 데이터를 유지한다. 이러한 어플리케이션들은 통상적으로 클라이언트들이 임의의 주어진 세션의 기간동안 동일한 호스트를 사용하는 것으로예상한다. 세션들의 예시적인 타입들은: (ⅰ) (엄밀히 말해서 세션인) TCP 접속; (ⅱ) SSL 세션; (ⅲ) 보안 IP(IPsec) 세션; (ⅳ) HTTP 쿠키-기반 세션; 등을 포함한다.
세션 트랙커(308)가 로드 밸런싱 유닛(106)에서 이산 블록으로 도시되었을지라도, 세션 트랙커(308)의 세션 트랙킹 기능성은 실제로 글로벌 레벨에서 구현될 수 있다. 다시 말해서, 세션 친화도는 다수의 로드 밸런싱 유닛들(106)을 가로질러 지지된다. 세션 트랙커(308)는 세션 친화도를 보존하기 위해 집중된 데이터베이스 및/또는 세션 정보의 분배된 데이터베이스를 포함한다. 분배된 데이터베이스 접근시 강조되는, 세션 트랙커(308)을 위한 예시적인 구현들은, 아래에 특히 "예시적인 세션 트랙킹"이란 제목의 섹션에서 더 기재된다.
분류기(304)는 들어오는 요청들을 분류하기 위해, 다른 인자들에 관련하여 건강 및 로드 핸들러(314) 및/또는 세션 트랙커(308)에 의해 획득되고 유지되는 데이터를 사용한다. 다시 말해서, 분류기(304)는 클라이언트(102)로부터의 각각의 들어오는 요청에 대해 타겟 호스트(108)를 선택한다. 포워더(302)는 분류기(304)에 의해 선택된 것과 같은 타겟팅된 호스트(108)에 따라서 클라이언트 요청들(및/또는 그 패킷)을 포워딩한다. 포워더(302) 및 분류기(304)는 패킷 단위당 동작할 수 있다. 포워더(302) 및 분류기(304)에 대한 예시적인 구현들은 아레에 특히 "유연성 네트워크 로드 밸런싱으로의 예시적인 접근법" 및 "예시적인 분류, 포워딩 및 요청 라우팅"이란 제목의 섹션들에서 더 기재된다.
포워더(302) 및 분류기(304)의 패킷당 구현들과 대비되는, 요청 라우터(306)는 호스트(108)에서 수행하는 어플리케이션을 위한 프록시로서 동작할 수 있다. 예를 들어, 요청 라우터(306)는 TCP 접속들을 종료하고, 클라이언트(102)로부터 각각의 논리 요청을 (아마도 부분적으로) 파싱하고, 타겟팅된 호스트(108)에 각각의 논리 요청을 다시 제출할 수 있다. 결과적으로, 클라이언트(102)로부터의 각각의 논리 요청은 요청 라우터(306)에 의해 이루어진 결정들에 의존하여, 다른 호스트(108)에 지시될 수 있다. 더구나, 요청 라우터(306)는 접속(예를 들어, SSL 암호화)시 전저치를 수행할 수 있고, (예를 들어, 요청 라우터(306)가 응답들의 캐쉬를 유지하기 때문에), 임의의 요청들을 흡수하도록 선택할 수 있고, 그들을 호스트들(108)로 포워딩하기 전에 요청들을 독단적으로 변경할 수 있는 등을 할 수 있다. 요청 라우터(306)에 대한 예시적인 구현들은 또한 아래에 특히 "유연성 네트워크 로드 밸런싱으로의 예시적인 접근법" 및 "예시적인 분류, 포워딩 및 요청 라우팅"이란 제목의 섹션들에서 더 기재된다.
접속 이동기(310)는 접속이 로드 밸런싱 유닛(106)에서 초기에 종료되고 이어서 그 접속이 다음으로 호스트(108)에서 종료되도록 이동될 수 있도록 한다. 이러한 접속 이동은 어플리케이션-레벨 로드 밸런싱을 용이하게 할 수 있다. 접속 이동기(310)는 로드 밸런싱 유닛(106)에서의 최초의 종료가 요청 클라이언트(102) 및 새로 종료한 호스트(108)의 어플리케이션에 전혀 무관한 방식으로 로드 밸런싱 유닛(106)으로부터 호스트(108)로 접속을 이동할 수 있다. 터널러(312)는 각각의 터널링된 패킷에 오버헤드(overhead)를 도입하지 않는 패킷들의 터널링에 대한 캡슐화 스킴을 이용할 수 있다.
터널러(312)의 기능성은 또한 접속 이동을 포함하지 않는 상황들에서 사용될 수 있다. 더구나, 접속 이동기(310) 및/또는 터널러(312)는 부가적으로 비-로드-밸런싱 구현들에서 사용될 수 있다. 터널러(312)뿐만 아니라 접속 이동기(310)에 대한 예시적인 구현들은 아래에 특히 "선택적 터널링 및/또는 어플리케이션-레벨 로드 밸런싱으로 이동하는 예시적인 접속"이란 제목의 섹션에서 더 기재된다.
로드 밸런싱 유닛(106)의 임의의 주어진 구현이 하나 이상의 도시된 함수들을 포함할 수 있다. 개별적으로 도시될지라도, 블록들(302 내지 314)의 각각의 함수들은 실제로 다른 함수들과 상호관련되고, 다른 함수들과 중복하고, 및/또는 다른 함수들을 포함할 수 있다. 예를 들어, 건강 및/또는 건강 및 로드 핸들러(314)의 로드 정보가 분류기(304)에 의해 사용될 수 있다. 또한, 접속 이동기(310) 및 터널러(312)는 포워더(302) 및 분류기(304)와 관련하여 작동한다. 임의의 다른 예시적인 중복 및 상호작용들이 아래에 더 기재된다.
기재된 구현에서, 호스트(108)는 하나 이상의 어플리케이션들(316)로의 억세스들을 실행하고 제공한다. 일반적으로, 어플리케이션들(316)은 파일 전달 프로그램들, 웹 사이트 관리/서버 프로그램들, 원격 억세스 프로그램들, 전자 메일 프로그램들, 데이터베이스 억세스 프로그램들 들을 포함한다. 특히, 어플리케이션들(316)은 마이크로소프트®회사로부터의 인터넷 정보 서버®(IIS), 마이크로소프트®터미널 서버TM와 같은 터미널 서버들, 및 인터넷 보안 및 가속 서버TM(ISA)와 같은 방화벽 및 프록시 제품들을 포함할 수는 있지만 이에 제한되지는 않는다. 비록 앞선 문장에서의 특정 어플리케이션(316) 예들이 마이크로소프트®제품들에 관련할지라도, 본 명세서에 기재된 바와 같은 네트워크 로드 밸런싱은 임의의 특정 벤더(들), 어플리케이션(들), 또는 운영 체제(들)에 제한되지는 않는다.
유연성 네트워크 로드 밸런싱으로의 예시적인 접근법
이 섹션은 본 명세서의 이 섹션 및 다른 섹션들에 기재된 네트워크 로드 밸런싱 구현들이 네트워크 로드 밸런싱으로의 유연성 접근법을 어떻게 제공하는지를 설명한다. 이 섹션은 주로 도 4 내지 도 9b를 참조한다.
앞서 명시된 바와 같이, 네트워크 로드 밸런싱 기능성은 제 1 네트워크 로드 밸런서(balancer)를 제 2의 보다 크고 보다 강력한 네트워크 로드 밸런서로 대체함으로써 스케일업(scale up)될 수 있다. 제 2 네트워크 로드 밸런서의 하드웨어 능력들은 더 큰 용량이 제공되는 것을 제외하고는 제 1 네트워크 로드 밸런서의 하드웨어 능력들의 전체를 복제한 것이다. 이는 특히 단지 하나의 네트워크 로드 밸런싱 특징이 성능을 제한하고 네트워크 로드 밸런서의 업그레이드를 촉진하는 경우, 매우 비효율적일 수 있는 비유연성(inflexible) 접근법이다.
도 4는 기능성을 분류하고 포워딩하는 분류되었던 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐를 도시한다. 그 분리된 분류 기능성 및 포워딩 기능성은 분류기(304) 및 포워더(302)에 의해 각각 표현된다. 분류 및 포워딩 함수들이 아래에 특히 "예시적인 분류, 포워딩, 및 요청 라우팅"이란 제목의 섹션에서 더 기재될지라도, 여기서는 초기의 기재가 네트워크 로드 밸런싱 인프라스트럭쳐 기능성과 호스트들(108) 간의 상호작용의 예로서 제시된다.
기재된 구현에서, 포워더(302)는 가상 IP(VIP) 어드레스(또는 어드레스들)에 대응하고, 그에 대한 네트워크 종단점(endpoint)이다. 포워더(302)는 추가의 또는 최종의 목적지에 패킷들을 라우팅하는 임의의 경우, 간소화된 및/또는 기초의 정책 결정들을 이루는 비교적 저-레벨의 구성요소이다. 분류기(304)는 하나 이상의 인자들(예를 들어, 호스트 상태 정보)에 기초하는 라우팅 테이블을 파퓰레이팅(populate)하며, 이는 본 명세서의 다른 섹션들에서 더 기재된다.
클라이언트들(102) 및 호스트들(108)은 또한 지시된 네트워크 어드레스들에 대응한다. 특히, 클라이언트(102(1))는 어드레스(C1)에 대응하고, 클라이언트(102(2))는 어드레스(C2)에 대응하고, ... 클라이언트(102(m))는 어드레스(Cm)에 대응한다. 또한, 호스트(108(1))는 어드레스(H1)에 대응하고, 호스트(108(2))는 어드레스(H2)에 대응하고, ... 호스트(108(n))는 어드레스(H(n))에 대응한다.
5개의 통신 경로들((1) 내지 (5))가 도 4에 도시된다. 통신 경로(1)는 클라이언트(102(1))와 포워더(302) 간이며, 통신 경로(5)는 포워더(302)와 호스트(108(1) 간이다. 통신 경로들((2) 내지 (4))은 포워더(302)와 분류기(304) 간이다. 이 예에서 간단성을 위해, 통신 경로((1) 내지 (5))와 연관된 접속은 HTTP TCP 접속이다. 더구나, 이 예에서 로드 밸런싱은 적어도 어플리케이션-레벨 로드 밸런싱의 어떤 명료한 고려없이, 최소의 로딩된 호스트(108)에 대한 들어오는접속들을 라우팅하는 것에 관한 것이다.
통신 경로들((1) 내지 (5))은 포워더(302) 및 분류기(304)가 클라이언트(102(1))로부터의 단일의 HTTP TCP 접속을 어떻게 로드-밸런싱하는지를 나타낸다. (1)에서, 클라이언트(102(1))는 어드레싱된 TCP SYN 패킷을 VIP 어드레스로 보냄으로써 TCP 접속을 시작한다. 네트워크(104)의 라우팅 인프라스트럭쳐는 이러한 패킷을 라우터/스위치(202(1))를 통해 포워더(302)로 라우팅하며, 이는 포워더(302)에 "가장 가까운" 라우터/스위치(202)이다.
(2)에서, 포워더(302)는 이러한 접속을 룩업하기 위해 포워더(302) 내부일 수 있는 라우팅 테이블을 참고하고, 그렇지 않으면 그로부터 억세스가능할 수 있다. 이러한 접속은 TCP/IP 4-튜플(즉, 소스 IP 어드레스, 소스 TCP 포트, 목적지 IP 어드레스, 목적지 TCP 포트)에 의해 라우팅 테이블에서 식별될 수 있다. 이것은 그 접속의 제 1 패킷이기 때문에, 라우팅 테이블 내에 어떠한 엔트리도 없다. 그러므로 포워더(302)는 "디폴트 라우팅" 동작을 적용하고, 이는 이러한 패킷을 분류기(304)로 보내기 위한 것이다.
(3)에서, 분류기(304)는 호스트들(108(1), 108(2), ... 108(n))에 대한 호스트 상태 정보의 그(예를 들어, 통합된) 캐쉬를 참고한다. 분류기(304)는 호스트(108(1))가 이용가능하고 본 예에서 이 순간 최소 로딩된 호스트(108)임을 결정한다. 분류기(304)는 또한 이러한 TCP 접속을 위한 포워더(302)에 의해 참고되는 라우팅 테이블 내의 루트를 "부설(plumb)"한다. 예를 들어, 분류기(304)는 루트 엔트리를 추가하거나 또는 루트 엔트리를 (예를 들어, TCP 4-튜플에 의해 식별되는) TCP 접속을 맵핑하는 라우팅 테이블에 추가하도록 포워더(302)를 명령한다. 특히, 그 루트 엔트리는 호스트(108(1)의 네트워크 어드레스(H1)를 지정한다.
(4)에서, 분류기(304)는 TCP SYN 패킷을 포워더(302)에 다시 돌려 보낸다. 대안으로, 분류기(304)는 포워더(302)를 사용하지 않고도 호스트(108(1))에 이러한 초기 TCP SYN 패킷을 포워딩할 수 있다. 분류기(304)에 이용가능한 다른 옵션들이 아래에 기재된다.
(5)에서, 포워더(302)는 SYN 패킷에 의해 표현된 접속을 위해 루트 엔트리를 억세스할 수 있고, 그래서 이는 어드레스(H1)에서 그 패킷을 호스트(108(1)로 포워딩한다. 포워더(302)는 또한 호스트(108(1)에 직접적으로 이러한 접속을 위해 모든 후속하는 패킷들을 클라이언트(102(1))로 포워딩한다. 다시 말해서, 포워더(302)는 이러한 접속을 위해 분류기(304)와의 추가의 상호작용을 피할 수 있다. 아래에 더 기재되는 하나 또는 메카니즘들의 조합은 접속이 중지할 때 그 루트 엔트리를 삭제하는데 사용될 수 있다.
많은 프로토콜 환경에서의 통신 경로(5)에 대해, 포워더(302)는 이러한 패킷들이 포워더(302) 자체에 의해 호스팅되는 VIP 어드레스에 어드레스되기 때문에, 그 패킷들을 클라이언트(102(1))로부터 네트워크 어드레스(H1)에서의 호스트(108(1))로 간단히 전송할 수 없다. 대신에, 포워더(302)는 다음의 하나 이상의 예시적인 옵션들을 이용할 수 있다:
1. 포워더(302)는 (ⅰ) 소스(클라이언트(102(1)) IP 어드레스(C1) 및 포트 넘버를 포워더(302)의 IP 어드레스 및 NAT(네트워크 어드레스 변환(NetworkAddress Translation))-생성된 포트 넘버로 겹쳐쓰고, (ⅱ) 그 목적지 IP 어드레스(VIP)를 호스트(108(1))의 IP 어드레스(H1)로 겹쳐씀으로써 NAT를 수행한다.
2. 포워더(302)는 그 소스(클라이언트(102(1)) IP 어드레스(C1) 및 포트 넘버가 보존되도록 목적지 IP 어드레스(VIP)를 그 호스트(108(1))의 IP 어드레스(H1)로 겹쳐씀으로써 "Half-NAT"를 수행한다.
3. 포워더(302)는 클라이언트(102(1))로부터 수신된 패킷들을 포워더(302)로부터 호스트(108(1))로 "터널링"한다. 특히 이 예에서, 터널링은 호스트(108(1))에 어드레싱된 새로운 IP 패킷 내에 각각의 패킷을 캡슐화함으로써 달성될 수 있다. 호스트(108(1)) 상의 네트워크-로드-밸런싱-어웨어(aware) 소프트웨어는 클라이언트(102(1))로부터 포워더(302)에서 수신된 최초의 패킷을 재구성한다. 이어서 이러한 최초의 패킷은 호스트(108(1))에서 가상 인터페이스에서 지시된다(예를 들어, 포워더(302)에 대응하는 VIP 어드레스는 호스트(108(1)에서 이러한 가상 인터페이스에 결합된다). 그러한 터널링의 예시적인 구현들은 특히 접속 이동 시나리오에 대해 터널러(312)에 관련하여 아래에 특히 "선택적인 터널링 및/또는 어플리케이션-레벨 로드 밸런싱을 갖는 예시적인 접속 이동"이란 제목의 섹션에서 기재된다.
비록 도 4 내지 도 9b가 두 개의 특정 분리된 기능들, 즉 분류 및 포워딩을 도시할지라도, 이는 요청 라우터(306), 세션 트랙커(308), 접속 이동기(310), 및 건강 및 로드 핸들러(314) 기능들과 같은 다른 기능들이 또한 아래에 더 기재되는바와 같이 독립적으로 스케일링 아웃될 수 있음을 (예를 들어, 독립적으로 팩터링 아웃될 수 있음을) 이해해야 한다. 더구나, 두 기능들보다 하나 이상 더 많은 기능들이 분리될 수 있으며 다른 때에 독립적으로 및/또는 동시에 스케일링 아웃될 수 있음을 유의해야 한다. 또한, TCP/IP가 이 섹션 및 다른 섹션들에서의 많은 예들에서 명료성을 위해 사용될지라도, 본 명세서에 기재된 네트워크 로드 밸런싱 원리들이 전송 및/또는 통신 프로토콜들에 적용가능하다.
도 4의 예시적인 방식에서, (도 3에 도시된 바와 같은) 네트워크 로드 밸런싱 기능들이 확장성 목적들을 위해 서로로부터 분리될 수 있다. 그들은 또한 증가된 가용성을 위해 여러가지 구성들로 분리되고 복제될 수 있다. 확장성 및/또는 가용성을 위한 예시적인 구성들이 도 5의 방법이 기재된 후에 도 6 내지 도 9b를 참조하여 아래에 기재된다.
도 5는 네트워크 로드 밸런싱 인프라스트럭쳐를 다른 구성들로 스케일링 아웃하기 위한 예시적인 방법을 설명하는 흐름도(500)이다. 흐름도(500)는 세 개의 블록들(502 내지 506)을 포함한다. 흐름도(500)의 작용들이 다른 환경들에서 여러가지 소프트웨어 스킴들로 수행될 수 있을지라도, 도 1 내지 도 4 및 도 6 내지 도 9b는 특히 그 방법의 임의의 양상들 및 예들을 설명하는데 사용된다.
블록(502)에서, 네트워크 로드 밸런싱 인프라스트럭쳐는 제 1 구성으로 동작된다. 예를 들어, 각각의 구성은 선택, 비율, 및/또는 다른 로드 밸런싱 기능성들과의 상호관계와; 많은 다른 디바이스들 및/또는 타입(들)과; 다른 구성요소들의 조직 및/또는 레이아웃과; 리소스의 분배 및/또는 할당 등에 관련할 수 있다. 블록(504)에서, 네트워크 로드 밸런싱 인프라스트럭쳐는 스케일 아웃된다. 예를 들어, 분리된 로드 밸런싱 기능성들이 확장될 수 있고, 및/또는 개별 및/또는 독립 기반으로 부수적으로 생략될 수 있다. 블록(506)에서, 그 스케일 아웃된 네트워크 로드 밸런싱 인프라스트럭쳐는 제 2 구성으로 동작된다.
앞서 명시된 바와 같이, 모놀리식(monolithic) 네트워크 로드 밸런서가 이전의 네트워크 로드 밸런싱 하드웨어를 보다 강력한 네트워크 로드 밸런싱 하드웨어로 대신함으로써 그 전체의 네트워크 로드 밸런싱 기능성을 증가시킴에 의해 스케일링 업될 수 있다. 대비에서, 네트워크 로드 밸런싱 인프라스트럭쳐를 스케일 아웃함으로써, 네트워크 로드 밸런싱 (하부)기능들이 개별적으로 및/또는 독립적으로 스케일 아웃될 수 있도록 할 수 있다. 이는 또한 네트워크 로드 밸런싱 기능들이 디바이스들의 다른 넘버들 간에 함께 또는 개별적으로 스케일링 아웃될 수 있도록 할 수 있다. 디바이스, 구성요소, 및 리소스에 중점을 둔 스케일링 아웃 예들이 아래에 제공된다.
도 6은 디바이스 관점에서 제 1의 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성을 도시한다. 이러한 제 1의 디바이스에 중점을 둔 네트워크 로드 밸런싱 인프라스트럭쳐 구성에서, 세 개의 디바이스들(602(1), 602(2), 602(3))이 도시된다. 그러나, 세 개의 디바이스들(602)보다 하나, 둘 또는 그보다 많은 디바이스들이 대안으로 이용될 수 있다.
도시된 바와 같이, 포워더(302(1)), 분류기(304(1)) 및 호스트(108(1))가 디바이스(602(1))에 존재하고 디바이스(602(1)) 상에서 실행한다. 포워더(302(2)),분류기(304(2)) 및 호스트(108(2))가 디바이스(602(2))에 존재하고 디바이스(602(2)) 상에서 실행한다. 그러므로, 이러한 제 1의 디바이스에 중점을 둔 네트워크 로드 밸런싱 인프라스트럭쳐 구성에서, 각각의 포워더(302), 분류기(304) 및 호스트(108)은 각각의 디바이스(602)의 리소스들을 공유한다.
동작시, 포워더들(302)은 VIP 어드레스(들)을 위한 네트워크 종단점들이다. 임의의 분류기(304)는 호스트 상태 정보에 의존하여 임의의 호스트(108)로의 접속을 위한 루트를 부설할 수 있다. 예를 들어, 분류기(304(2))가 호스트(108(3))로의 새로운 들어오는 접속을 위한 루트를 부설할 수 있다. 이러한 접속을 위한 새로운 루트 엔트리에 따라서, 포워더(302(2))는 호스트(108(3))로의 후속하는 패킷들을 포워딩한다.
도시된 제 1의 구성이 스케일 아웃될 수 있는 하나의 대안의 디바이스에 중점을 둔 네트워크 로드 밸런싱 인프라스트럭쳐 구성에서, 포워더(302(4)), 분류기(304(4)), 및 호스트(108(4))를 포함하는 제 4 디바이스(602(4))(도 6에 명료하게 도시되지 않음)가 추가될 수 있다. 다른 한편으로, 충분한 분류 기능성이 분류기들(304(1 내지 3))로 이미 존재하지만 부가적인 포워딩 기능성니 호스트들(108)의 요청 핸들링에 유리할 수 있다면, 제 4 디바이스(602(4))가 포워더(302(4))와 부가적으로 호스트(108(4))를 포함한다. 이러한 스케일링 아웃된 구성에 대해, 또 다른 분류기(304(1, 2 또는 3))가 존재한다면, 포워더(302(4))를 위한 루트들을 임의의 호스트들(108(1, 2 또는 3)) 및 호스트(108(4))에 부설할 수 있다.
도 6의 제 1의 디바이스에 중점을 둔 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성은 기술적으로 및/또는 경제적으로 가치있거나 실행가능한 것이 아닌 경우들을 보다 작게 호스팅하기에 특히 적절할 수 있다. 그러나, 그 호스팅 임무들이 호스트(108)의 보다 큰 수(및/또는 동일한 수에서 보다 큰 수요)로 확장하기 때문에 또는 호스트들(108) 상의 네트워크 로드가 중요하다면, 그 제 1의 디바이스에 중점을 둔 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성은 이러한 확장을 수용하도록 스케일링 아웃될 수 있으며, 이는 도 7의 제 2의 디바이스에 중점을 둔 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성에 의해 표현된다.
도 7은 디바이스 시각으로부터 제 2의 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성을 도시한다. 이러한 제 2의 디바이스에 중점을 둔 네트워크 로드 밸런싱 인프라스트럭쳐 구성에서, 세 개의 디바이스들(602(1), 602(2), 602(3))이 또한 도시된다. 다시, 세 개의 디바이스들(602)보다 하나, 둘, 또는 그 이상 많은 디바이스들이 대안으로 사용될 수 있다.
도시된 바와 같이, 포워더(302(1)) 및 분류기(304(1))는 디바이스(602(1))에 존재하고 그 디바이스(602(1)) 상에서 실행한다. 포워더(302(2)) 및 분류기(304(2))는 디바이스(602(2))에 존재하고 그 디바이스(602(2)) 상에서 실행한다. 또한, 포워더(302(3)) 및 분류기(304(3))는 디바이스(602(3))에 존재하고 그 디바이스(602(3)) 상에서 실행한다. 그러므로, 제 2의 디바이스에 중점을 둔 네트워크 로드 밸런싱 인프라스트럭쳐 구성에서, 각각의 포워더(302) 및 분류기(304)는 각각의 디바이스(602)의 리소스들을 호스트(108)와 공유하지 않는다. 더구나, 그 네트워크 로드 밸런싱 인프라스트럭쳐는 임의의 수의 호스트들(108)을 제공할 수 있다.
동작시, 포워더들(302)는 다시 VIP 어드레스(들)을 위한 네트워크 종단점들이다. 또한, 임의의 분류기(304)는 호스트 상태 정보에 의존하여, 임의의 호스트(108)로의 접속을 위한 루트를 부설할 수 있다. 예를 들어, 분류기(304(3))는 호스트(108(2))로의 새로운 들어오는 접속을 위한 루트를 부설할 수 있다. 이 접속을 위한 새로운 루트 엔트리에 따라서, 포워더(302(3))는 후속하는 패킷들을 호스트(108(2))로 포워딩한다.
그러므로, 예를 들어, 소프트웨어에서 실행되는 바와 같은 네트워크 로드 밸런싱 인프라스트럭쳐는 호스트들(108)과 공유되는 디바이스들로부터 호스트들(108)과 공유되지 않는 디바이스들로 그 네트워크 로드 밸런싱 인프라스트럭쳐(또는 그의 부분)를 이동시킴으로써 스케일링 아웃될 수 있다. 또한, 도 6에 대해 앞서 언급된 바와 같이, 또 다른 디바이스(602(4))가 부가적인 포워딩 기능성, 부가적인 분류 기능성, 부가적인 둘 모두의 타입의 기능성 등을 제공하기 위해 네트워크 로드 밸런싱 인프라스트럭쳐에 추가될 수 있다.
도 8a 및 도 8b는 구성요소 시각으로부터 제 1 및 제2의 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐를 도시한다. 도시된 바와 같이, 제 1의 구성요소에 중점을 둔 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성(800)은 네 개의 구성요소들을 포함한다. 제 2의 구성요소에 중점을 둔 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성(850)은 여섯개의 구성요소들을 포함한다. 대안의 제 2 구성(850)이 점선의 블록으로 표시된 바와 같이 7번째 구성요소를 포함하며, 이는 아래에 더 기재된다.
특히, 제 1의 구성요소에 중점을 둔 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성(800)(또는 제 1 구성(800))이 (ⅰ) 두 개의 포워더들(302(1), 302(2)) 및 (ⅱ) 두 개의 분류기들(304(1), 304(2))을 포함한다. 제 2의 예시적인 구성요소에 중점을 둔 네트워크 로드 밸런싱 인프라스트럭쳐 구성(850)(또는 제 2 구성(850))은 (ⅰ) 네개의 포워더들(302(1), 302(2), 302(3), 302(4)) 및 (ⅱ) 두 개의 분류기들(304(1), 304(2))을 포함한다. 그러므로, 제 1 구성(800)은 두 구성요소들을 추가함으로써 제 2 구성(850)에 대해 스케일링 아웃되며, 이는 이 예에서 구성요소들을 포워딩한다.
기재된 구현에서, 각각의 네트워크-로드-밸런싱-관련 기능성 구성요소는 각각의 디바이스(도 8a 또는 도 8b에 명료하게 도시되지 않음)에 대응하며; 그러나, 각각의 구성요소는 대안으로 디바이스의 부분 또는 하나 이상의 디바이스에 대응할 수 있다. 예를 들어, 포워더들(302(1), 302(2))이 세 개의 디바이스들을 가로질러 분배될 수 있다. 즉 포워더(302(1)) 및 분류기(304(1))는 제 1 디바이스에 대응할 수 있고, 포워더(302(2)) 및 분류기(304(2))는 제 2 디바이스에 대응할 수 있다.
두 네트워크-로드-밸런싱-관련 기능성 구성요소들은 제 1 구성(800)을 스케일링 아웃하기 위해 제 2 구성(850)에 추가된다. 그러나, 하나의 구성요소(또는 둘 이상)는 대안으로 네트워크 로드 밸런싱 인프라스트럭쳐를 스케일링 아웃하기 위해 추가될 수 있다. 더구나, 기능성 구성요소들의 둘 이상의 다른 타입들은 "동시에" 스케일링 아웃될 수 있다. 예를 들어, 점선의 블록으로 도시된 바와 같이, 또 다른 분류 구성요소(예를 들어, 분류기(304(3))가 또한 제 1 구성(800)을 제 2 구성(850)에 스케일링 아웃하는 경우에 추가될 수 있다.
게다가, 둘 이상의 다른 타입의 기능성 구성요소들에 의해 스케일링하는 것은 서로에 대해 유사하거나(예를 들어 같거나) 유사하지 않은 비율로 수행될 수 있다. 도시된 바와 같이, 포워더 구성요소들(302(3), 302(4))을 추가하는 반면, 임의의 분류기 구성요소(304)를 추가하지 않거나 단일의 분류기 구성요소(304(3))을 추가하는 것은 유사하지 않은 비율들로 스케일링 아웃하는 것을 나타낸다. 그러나, 두 개의 분류기 구성요소들(304(3), 304(4))(후자는 도 8b에 명료하게 도시되지 않음)이 추가될 수 있지만, 두 개의 포워더(302(3), 302(4))가 유사한 비율로의 스케일 아웃을 위해 추가된다. 그럼에도 불구하고, 각각의 개별 네트워크-로드-밸런싱-관련 기능성 구성요소는 도 9a 및 도 9b를 참조하여 기재되는 바와 같이, 다른 양의 이용가능한 네트워크 로드 밸런싱 인프라스트럭쳐 리소스들을 소모할 수 있다.
도 9a 및 도 9b는 리소스 시각으로부터 제 1 및 제 2의 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성들을 도시한다. 제 1의 리소스에 중점을 둔 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성(900)(또는 제 1 구성(900))은 로드 밸런싱 유닛(106)을 위한 제 1 리소스 분배 또는 할당을 포함한다. 제 2의 리소스에 중점을 둔 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성(950)(또는 제 2 구성(950)은 로드 밸런싱 유닛(106)을 위한 제 2 리소스 분배를 포함한다.
도시된 바와 같이, 제 1 구성(900)은 70% 내지 30%의 리소스 분배를 포함하고, 제 2 구성(950)은 40% 내지 60%의 리소스 분배를 포함한다. 그러한 리소스들은 전체 디바이스 리소스들(예를 들어, 디바이스들의 수), 처리 리소스들(예를 들어, 처리기 사이클 수), 메모리 리소스들(예를 들어, 캐쉬의 부분, 주 메모리 등), 네트워크 대역폭 및/또는 인터페이스 리소스들(예를 들어, 초당 비트수 및/또는 물리적 네트워크 인터페이스 카드들(NICs)) 등을 포함할 수 있다.
특히, 제 1 구성(900)에 대해, 포워더(302)는 로드 밸런싱 유닛(106)의 리소스들 중 70%를 소모하는 반면, 분류기(304)는 이 리소스들 중 30%를 소모한다. 제 2 구성(950)을 생성하기 위한 절차를 스케일링 아웃하는 동안의 재할당 후에, 포워더(302)는 로드 밸런싱 유닛(106)의 리소스들 중 40%를 소모하는 반면 분류기(304)는 이러한 리소스들 중 60%를 소모한다.
예시적인 상황에서, 제 1 구성(900)은, 분류 기능성이 접속을 위한 초기의 통신시에 이용되고 포워딩 기능성이 그 후에 이용되기 때문에, 보다 적고, 보다 긴 트랜잭션들이 연관된 호스트들(도 9a 및 도 9b)에 도시되지 않음)에 의해 핸들링되는 경우 보다 나은 네트워크 로드 밸런싱 성능을 용이하게 할 수 있다. 다른 한편으로, 제 2 구성(950)은, 분류 기능성이 네트워크 로드 밸런싱 인프라스트럭쳐를 통해 퍼널링된(funneled) 패킷들의 총수 중 보다 큰 백분율을 위해 이용되기 때문에, 보다 많고, 보다 짧은 트랜잭션들이 연관된 호스트들(도 9a 및 도 9b)에 도시되지 않음)에 의해 핸들링되는 경우 보다 나은 네트워크 로드 밸런싱 성능을 용이하게 할 수 있다. 이 상황에서, 요청 라우팅 기능성이 또한 이용되면, 요청 라우터(들)(306)에는 또한 총 컴퓨팅 리소스들의 백분율이 할당된다. 세 개의 기능성들 간의 리소스 분배가 조정될 수 있는 반면, 현재 리소스 소모 및/또는 결손(deficit)에 의존하여 접속들을 핸들링하는 동안 조정될 수 있다(예를 들어, "이동 중에" 조정될 수 있다).
도 2 및 도 3을 참조하여 앞서 지시된 바와 같이, 각각의 로드 밸런싱 유닛(106)은 총 네트워크 로드 밸런싱 인프라스트럭쳐(106)의 모두 또는 일부에 대응할 수 있다. 임의의 주어진 물리적으로, 논리적으로, 임의적으로 등으로 정의된 또는 규정된 로드 밸런싱 유닛(106)에 대해, 그 리소스들은 스케일 아웃 절차동안 재할당될 수 있다. 특히, 로드 밸런싱 유닛(106)의 다른 네트워크-로드-밸런싱-관련 분리 기능들 간의 리소스 분배는 스케일 아웃 절차에서 변경될 수 있다. 더구나, 특히 도 9a 및 도 9b에 도시되지 않은 다른 네트워크-로드-밸런싱-관련 기능들 뿐만 아니라, 둘 이상의 다른 기능들이 다른 리소스 백분율로 할당될 수 있다.
모든 로드 밸런싱 기능들에 할당된 총 시스템 리소스들의 백분율은 또한 스케일 아웃 절차로 변경될 수 있다. 일반적인 처리 전력의 예로서, 로드 밸런싱에 소비된 총 처리 전력의 백분율은 로드 밸런싱될 필요가 있는 트래픽 양이 증가함에 따라서 점차적으로 증가될 수 있다.
네트워크 로드 밸런싱 소프트웨어는 리소스들이 재할당되어야 하는지를 분석하고 결정하기 위해 선택적으로 모니터링을 수행할 수 있다. 예를 들어, 그 네트워크 로드 밸런싱 소프트웨어는 다른 네트워크-로드-밸런싱-관련 기능들의 처리기 이용을 모니터링할 수 있다. 그 실제의 재할당은 또한 선택적으로 오프라인 또는온라인 모드에서 네트워크 로드 밸런싱 소프트웨어에 의해 자동으로 수행된다.
본 명세서에 기재된 바와 같은 네트워크 로드 밸런싱 인프라스트럭쳐(예를 들어, 소프트웨어에서 적어도 부분적으로 실현되는 바와 같이)의 스케일링 아웃 능력이 다른 설치들 및 필수적이지는 않은 단일의 설치로의 변화에 관련할 수 있음을 이해해야 한다. 리소스에 중점을 둔 예에서, 본 명세서에 기재된 네트워크 로드 밸런싱 인프라스트럭쳐는 하나의 설치 환경에서의 하나의 리소스 분배에 따라서 구성될 수 있으며, 다른 동작 파라미터들을 갖는 또 다른 설치 환경에서의 또 다른 리소스 분배에 따라서 구성될 수 있다. 부가적으로, 스케일링 아웃에 관한 앞서 기재된 능력들, 특징들, 옵션들 등은 또한 "스케일링 인(scaling in)"에 대해 적용가능하다. 다시 말해, 네트워크 로드 밸런싱 인프라스트럭쳐(또는 그의 부-기능들)에 소비되는 리소스들이 또한 감소될 수 있다.
예시적인 건강 및 로드 핸들링
이 섹션은 건강 및/또는 로드 정보와 같은 호스트 상태 정보가 네트워크 로드 밸런싱에 대해 어떻게 수집되고 이용될 수 있는지를 기재한다. 이 섹션은 주로 도 10 내지 도 18을 참조하고 (도 3의) 건강 및 로드 핸들러(314)에 의해 제공되는 것과 같은 건강 및 로드 기능성을 도시한다. 도 3을 참조하여 앞서 기재된 바와 같이, 각각의 호스트(108)는 하나 이상의 어플리케이션들(316)을 호스팅한다. 건강 및 로드 핸들러(314)는 네트워크 로드 밸런싱의 임의의 기재된 구현들에 대해 어플리케이션들(316) 및/또는 호스트들(108)에 관련하는 건강 및/또는 로드 정보를 이용한다.
도 10은 호스트 상태 정보(HSI)(1006)를 포함하는 예시적인 네트워크 로드 밸런싱 접근법을 도시한다. 각각의 호스트(108(1), 108(2), ... 108(n))는 하나 이상의 어플리케이션들(316(1), 316(2), ... 316(n)) 각각을 포함한다. 이들 호스트들(108)은 일반적으로 그리고 이들 어플리케이션들(316)은 특히 때때로 상태들을 변경할 수 있다.
예를 들어, 호스트들(108) 및 어플리케이션들(316)은 새로운 접속들을 받아들이거나 또는 새로운 접속들을 받아들이지 않을 수 있다. 또한, 그들은 클라이언트 요청들을 신속하게 핸들링할 수 있거나 또는 클라이언트 요청들을 느리게 핸들링할 수 있다. 더구나, 그들은 예비의 또는 소수의 비사용된 리소스들의 많은 리소스들을 가질 수 있다. 그러한 데이터 또는 다른 데이터의 모든 또는 임의의 부분이 호스트 상태 정보(1006)를 포함할 수 있다. 일반적으로, 호스트 상태 정보(1006)는 호스트들(108)의 몇몇 양상의 상태의 표시 및/또는 그 위에서 수행하는 어플리케이션들(316)을 제공한다.
기재된 구현에서, 각각의 호스트(108(1), 108(2), ... 108(n))는 호스트 상태 정보(HSI) 결정자(determiner)(1002(1), 1002(2), ... 1002(n))을 각각 포함한다. 각각의 호스트(108(1), 108(2), ... 108(n))는 또한 호스트 상태 정보(HSI) 결정자(determiner)(1004(1), 1004(2), ... 1004(n))을 각각 포함한다. 각각의 호스트 상태 정보 결정자(1002) 및/또는 호스트 상태 정보 보급자(disseminator)(1004(1), 1004(2), ... 1004(n)) 각각을 포함한다. 각각의 호스트 상태 정보 결정자(1002) 및 또는 호스트 상태 정보 보급자(1004)는 로드 밸런싱 인프라스트럭쳐(LBI)(106)의 부분일 수 있다.
각각의 호스트 상태 정보 결정자(1002)는 각각의 호스트(108)에 대한 호스트 상태 정보(1006) 및/또는 그 위에서 실행 중인 어플리케이션들(316)을 결정한다. 그러한 호스트 상태 정보(1006)을 결정하기 위한 예시적인 기술들이 도 12 내지 도 14, 특히 도 13a를 참조하여 아래에 기재된다. 각각의 호스트 상태 정보 보급자(1004)는 로드 밸런싱 인프라스트럭쳐(106)(예를 들어, 호스트들(108)에 위치되지 않은 로드 밸런싱 인프라스트럭쳐(106)의 부분(들))에 대한 각각의 호스트(108) 및/또는 어플리케이션들(316)에 대한 호스트 상태 정보(1006)를 보급한다. 그러한 호스트 상태 정보(1006)를 보급하기 위한 예시적인 기술들이 도 12 내지 도 17, 특히 도 13b 및 도 15 내지 도 17을 참조하여 아래에 기재된다.
특히, 각각의 호스트 상태 정보 보급자(1004)는 호스트 상태 정보(1006)를 (직접적으로 또는 간접적으로) 적어도 하나의 건강 및 로드 핸들러(314) 및/또는 분류기(304)를 포함하는 로드 밸런싱 인프라스트럭쳐(106)의 각각의 로드 밸런싱 유닛(LBU)(106)에 보급한다. 로드 밸런싱 인프라스트럭쳐(106)는 네트워크 로드 밸런싱을 구현하는 경우, 호스트 상태 정보(1006)를 언급한다. 예를 들어, 로직(logic)(1008)으로 표시된 바와 같이, 로드 밸런싱 인프라스트럭쳐(106)는 호스트 상태 정보(1006)에 응답하여 로드 밸런싱을 결정할 수 있다.
(1)에서의 동작시, 호스트 상태 정보 결정자(1002)는 각각의 호스트들(108) 및/또는 어플리케이션들(316)에 대한 호스트 상태 정보(1006)를 결정한다. (1) 및 (2)에서, 호스트 상태 정보 보급자들(1004)는 호스트들(108)로부터 로드 밸런싱 인프라스트럭쳐(106)로 호스트 상태 정보(1006)를 보급한다. 예를 들면, 호스트 상태 정보(1006)는 개개의 로드 밸런싱 유닛(106)으로 보급될 수 있다. (3)에서, 로직(1008)은 호스트 상태 정보(1006)에 응답하여 네트워크 로드 밸런싱을 결정한다. (4)에서, 접속들은 이러한 네트워크 로드 밸런싱 결정들에 기초하여 타겟팅된 호스트들(108)로 포워딩된다.
도 11은 호스트 상태 정보를 포함하는 네트워크 로드 밸런싱을 위한 예시적인 방법을 도시하는 흐름도(1100)이다. 흐름도(1100)는 세 개의 블록들(1102 내지 1106)을 포함한다. 비록 흐름도(1100)의 동작들이 다른 환경들에서 그리고 다양한 소프트웨어 스킴들로 수행될지라도, 도 1 내지 도 3 및 도 10은 특히 그 방법의 임의의 양상들 및 예들을 도시하는데 사용된다.
블록(1102)에서, 호스트 상태 정보는 호스트들로부터 로드 밸런싱 유닛들로 보내진다. 예를 들어, 호스트 상태 정보(1006)는 호스트들(108)로부터 로드 밸런싱 유닛들(106)로 보내질 수 있다. 블록(1104)에서, 그 호스트 상태 정보는 로드 밸런싱 유닛들에서 그 호스트들로부터 수신된다. 예를 들어, 로드 밸런싱 유닛들(106)은 호스트들(108)로부터 호스트 상태 정보(1006)을 수신할 수 있다. 블록(1106)에서, 로드 밸런싱 결정들이 수신된 호스트 상태 정보에 응답하여 이루어진다. 예를 들어, 로드 밸런싱 유닛들(106)에서의 로직(1008)은 호스트 상태 정보(1006)에 응답하여 네트워크 로드 밸런싱에 대한 결정들을 만들 수 있다.
그러므로, 도 10에서, 호스트 상태 정보(1006)에 응답하여 호스트들(108)로 지시되는 로드 밸런스 들어오는 요청들 및 로드 밸런싱 인프라스트럭쳐(106)는 호스트들(108)(및/또는 그의 어플리케이션들(316))로부터 호스트 상태 정보(1006)를 수집한다. 도 12 내지 도 18을 참조하여 아래에 더 기재되는 바와 같이, 이러한 호스트 상태 정보(1006)는 어플리케이션-지정이 될 수 있다. 또한 아래에 더 기재되는 바와 같이, 호스트 상태 정보(1006)의 예들은 건강 및/또는 로드 정보를 포함한다.
도 12는 건강 및/또는 로드 정보(HLI)(1206)를 포함하는 예시적인 네트워크 로드 밸런싱 접근법을 도시한다. 호스트들(108(1), 108(2), ...108(n))은 네트워크와 같은 통신 연계(1210)를 통해 로드 밸런싱 유닛들(106(1), 106(2), ...106(u))에 결합된다.
도시된 바와 같이, 호스트들(108)은 건강 및 로드 정보(1206)를 통신 연계(1210)를 사용하여 로드 밸런싱 유닛들(106)로 통신한다. 이중 지시 화살표(double-pointed arrow)로 표시된 바와 같이 건강 및 로드 정보(1206)의 양방향 통신은, 호스트들(108) 및/또는 로드 밸런싱 유닛들(106)이 다른 것과 독립적으로 실패할 수 있도록 로드 밸런싱 유닛들(106)로부터 임의의 완료(completeness), 간섭(coherency), 정확(correctness) 등을 제공하는 호스트들(108)로의 투-웨이(two-way) 통신을 언급한다. 로드 밸런싱 유닛들(106)로부터 호스트(108)로의 그러한 투-웨이 통신들은 아래에 특히 도 15를 참조하여 더 기재된다.
건강 정보는 주어진 호스트 및/또는 어플리케이션이 클라이언트 요청들을 처리할 수 있는지를 반영한다. 로드 정보는 주어진 호스트 및/또는 어플리케이션이특정 순간에 핸들링할 수 있는 클라이언트 요청들의 수, 양, 및/또는 레벨을 반영한다. 다시 말해서, 로드는 주어진 호스트 및/또는 어플리케이션의 총 용량의 이용가능한 수, 양, 및/또는 레벨을 직접적으로 및/또는 반대로 반영할 수 있다. 앞서 명시된 바와 같이, 도 12 내지 도 18을 참조하여 기재된 구현들은 건강 및/또는 로드 정보에 집중하지만; 그 구현들은 또한 (그 어플리케이션을 포함하는) 호스트들을 위한 일반적인 상태 정보에 적용가능하다.
기재된 구현에서, 각각의 호스트(108(1), 108(2), ...108(n))는 각각의 건강 및/또는 인프라스트럭쳐(H&LI) 구성요소(1202(1), 1202(2), ...1202(n))를 포함한다. 각각의 건강 및 로드 인프라스트럭쳐 구성요소(1202)는 선택적으로 각각의 호스트(108)에 존재하고 각각의 호스트(108) 상에서 실행하는 로드 밸런싱 인프라스트럭쳐(106)의 일부가 될 수 있다. 건강 및 로드 정보(1206)는 소프트웨어에서 실현될 수 있다. 기능하는 경우, 각각의 건강 및 로드 인프라스트럭쳐(1202(1), 1202(2), ... 1202(n))는 각각의 건강 및 로드(H&L) 테이블(1204(1), 1204(2), ...1204(n))을 생성하고 유지한다.
이러한 건강 및 로드 테이블(1204)은 어플리케이션-지정 엔트리들을 포함할 수 있다. 건강 및 로드 테이블들(1204)에 저장된 건강 및 로드 정보(1206)는 로드 밸런싱 인프라스트럭쳐(106)에 독립할 수 있다. 예를 들어, 관리자들, 디자이너들 등이 구성 시간에 건강 및 로드 정보(1206)를 위한 기준을 지정할 수 있다. 부가적으로, 호스트(108)이거나 호스트(108)를 갖는 디바이스 외부의 엔트리들이 그 디바이스 상의 어플리케이션들(316)에 대한 건강 및 로드 정보(1206)을 결정하는데기여할 수 있다. 예시적인 건강 및 로드 테이블(1204)가 도 13a를 참조하여 아래에 더 기재된다.
각각의 로드 밸런싱 유닛(106(1), 106(2), ... 106(u))은 각각의 통합된 건강 및 로드(H&L) 캐쉬(1208(1), 1208(2), ... 1208(u))를 포함한다. 각각의 통합된 건강 및 로드 캐쉬(1208)는 각각의 건강 및 로드 테이블(1204(1), 1204(2), ...1204(n))로부터의 정보를 포함한다. 결과적으로, 각각의 로드 밸런싱 유닛(106)은 로드 밸런싱 유닛들(106)이 로드 밸런싱 네트워크 트래픽인 각각의 호스트(108)에 대한 건강 및 로드 정보에 신속한(예를 들어, 캐쉬된) 억세스가 제공된다.
동작시, 건강 및 로드 인프라스트럭쳐들(1202)은 건강 및 로드 테이블들(1204)로부터 통합된 건강 및 로드 캐쉬들(1208)로 건강 및 로드 정보(1206)를 푸쉬한다. 건강 및 로드 정보(1206)을 제공할 메카니즘은 건강 및 로드 테이블들(1204)로의 변화들이 적시에 스케일링가능한 방식으로 통합된 건강 및 로드 캐쉬들(1208)에 제공되도록 구동되는 이벤트이다.
도 13A는 도 12에 도시된 바와 같이 예시적인 건강 및 로드 테이블(1204)이다. 기재된 구현에서, 건강 및 로드 테이블(1204)은 다른 어플리케이션(316)과 각각 연관된 다수의 엔트리들(1302)을 포함한다. 각각의 엔트리(1302)는 세 개의 열(column)들을 갖는 건강 및 로드 테이블(1204) 내의 행에 대응할 수 있다. 이 열들은 어플리케이션 식별자(ID)(1302(A)), 어플리케이션 상태 특성(1302(B)), 및 로드 밸런서 지령(1302(C))에 대응한다.
각각의 엔트리(1302)가 특정 어플리케이션(316)과 연관되기 때문에, 각각의 어플리케이션이 스핀업(spin up)되므로 행이 추가된다. 유사하게, 어플리케이션이 닫힐 때마다 행이 삭제/제거된다. 유사하게, 열들(1302(A), 1302(B) 및/또는 1302(C)) 내의 개별 필드들이 그 값이 변화하는 경우 변경되고/업데이트된다. 예를 들어, 상태 특성 값이 주어진 어플리케이션(316)에 대해 변화하는 경우, 주어진 어플리케이션(316)의 엔트리(1302)에 대한 어플리케이션 상태 특성(1302(B))의 필드 내의 값이 업데이트된다.
어플리케이션들(316)을 위한 엔트리들(1302)의 추가들 및 삭제들은 호스트(108)에서 제어 관리자로부터의 입력으로 달성될 수 있다. 예를 들어, 운영 체제의 제어 관리자 부분이, 어플리케이션들(316)의 시작 및 중지에 활발하게 포함되기 때문에 어플리케이션(316)이 언제 시작되고 중지되는 지를 안다. 그러므로, 제어 관리자가 적어도 부분적으로 어플리케이션(316)을 시작했음을 식별할 수 있고, 그 제어 관리자는 적어도 부분적으로 어플리케이션(316)을 중지하는 것으로 설정할 수 있다. 그러므로, 건강 및 로드 인프라스트럭쳐(1202)는 제어 관리자에 의해 어플리케이션들(316)의 시작 및 중지를 알릴 수 있다. 그러므로, 어플리케이션들(316)로부터의 그러한 어떤 명료한 통신도 건강 및 로드 인프라스트럭쳐(1202)에 제공되어서는 않된다. 제어 관리자의 예가 마이크로소프트®회사로부터의 윈도우즈®운영 체제의 서비스 제어 관리자(SCM)이다.
어플리케이션 식별자(1302(A))는 엔트리(1302)가 연관된 어플리케이션(316)을 유일하게 식별하는데 사용되는 정보를 포함한다. 어플리케이션 식별자(1302(A))가 연관된 어플리케이션(316)에 대한 다음 중 하나 이상을 포함할 수 있다: 가상 IP 어드레스 및 포트, 물리 IP 어드레스 및 포트, 사용된 프로토콜 및 임의의 프로토콜-지정 정보. 그 프로토콜은 HTTP, IPsec, SOAP, 등이 될 수 있다. 그 프로토콜-지정 정보는 엔트리(1302)와 연관된 어플리케이션을 더 묘사할 URL 패턴 또는 스트링이 될 수 있다. 그러므로, 특히 어플리케이션 식별자(1302(A))가 특정 호스트(108) 상의 특정 어플리케이션 종단점을 언급한다.
다른 어플리케이션 식별자들이 대안으로 이용될 수 있다. 예를 들어, 통신 대역폭을 감소시키기 위해, 어플리케이션 식별자(1302(A))는 건강 및 로드 인프라스트럭쳐(1202)에서 그리고 로드 밸런싱 유닛들(106)에서 상기 예시적인 정보로 맵핑하는 32-비트 넘버가 될 수 있다. 게다가, 엔트리(1302) 내의 임의의 필드들이 실제로 그 필드에 대한 진짜의 정보를 룩업하기 위해 키(key)로서 사용되는 GUID(global unique identifier)를 포함할 수 있다.
어플리케이션 상태 특성(1302(B))은 엔트리(1302)가 연관되는 어플리케이션(316)의 상태를 반영하는 정보를 포함한다. 어플리케이션 상태 특성(1302(B))는 연관된 어플리케이션(316)에 대해 다음을 포함한다: 어플리케이션 건강, 어플리케이션 로드 및 어플리케이션 용량. 어플리케이션 건강은 어플리케이션이 기능하는지를 나타내는 의사-불린 값(quasi-Boolean value)이다. 어플리케이션 건강은 건강하거나, 그렇지 않거나 또는 알려지지 않을 수 있다. 어플리케이션 건강은, 어플리케이션 건강 값이 변화하는 경우, 로드 밸런싱 유닛들(106)에 대해비교적-순간 값이며, 비교적 낮은 레턴시(예를 들어, 대략적으로 일초 또는 수 초로)로 통신한다.
어플리케이션 로드가 점유되거나 바쁜 주어진 어플리케이션이고, 그러므로 얼마나 많은 부가적인 로드를 그 주어진 어플리케이션이 핸들링할 수 있는지를 지시하는 값이다. 어플리케이션 로드는 원한다면, 증가된 또는 감소된 로드의 과도한 스파이크들을 제거하기 위해, 히스테리시스-포함 메카니즘으로 평탄화될 수 있는 비교적 느리게 변화하는 또는 평균된 값이다. 이는 로드 밸런싱 유닛들(106)에 비교적 드물게(예를 들어, 대략적으로 분당 한번 내지 네번) 통신된다. 어플리케이션 로드의 값은 어플리케이션 용량에 관해서는 주어진 평균이다.
어플리케이션 용량이 그 어플리케이션의 최대 용량을 나타내는 값이다. 이는 주어진 콘텍스트에 대해 평균적인 것으로 다른 콘텍스트들에 대해 여전히 충분히 유연한 일반적인 방식으로 선택된다. 어플리케이션 용량은 구성 시간에 결정가능한 단위없는(unit-less) 한정된 수(예를 들어, 0~99)이다. 이는 처리 전력, 메모리 사이즈/스피드, 네트워크 억세스, 그의 몇가지 조합 등에 기초할 수 있다. 어플리케이션 용량이 호스트들(108(1, 2, ...n)의 세트에서 동일한 타입의 다른 어플리케이션들 간의 상대적 용량들을 표현한다.
그러므로, 어플리케이션 용량에 관하여, 어플리케이션 로드가 평균을 얻는다. 주어진 어플리케이션에 대한 어플리케이션 로드는 주어진 어플리케이션에 대한 어플리케이션 용량의 백분율이다. 대안으로, 어플리케이션 로드는 백분율이 어플리케이션 용량의 값에 관련하여 확인될 수 있는 단위없는 수로서 표현될 수 있다.
로드 밸런서 지령(1302(C))은 엔트리(1302)가 연관된 어플리케이션(316)에 관하여 로드 밸런싱 유닛들(106)에 대한 건강 및 로드 인프라스트럭쳐(1202)에 의해 설정된 지령의 소망된 및/또는 예상되는 상태를 반영하는 정보를 포함한다. 로드 밸런서 지령(1302(C)가 연관된 어플리케이션(316)에 대해 다음을 포함한다: 타겟 로드 상태 및 현재 로드 밸런싱 상태.
그 타겟 로드 밸런싱 상태는 건강 및 로드 인프라스트럭쳐(1202)에 의해 소망되는 바와 같이 로드 밸런싱 유닛들(106)로의 지령의 상태를 반영한다. 그 현재 로드 밸런싱 상태는 건강 및 로드 인프라스트럭쳐(1202)가 로드 밸런싱 유닛들(106)에 대한 지령의 현재 상태를 로드 밸런싱 유닛들(106)에서 기록된 것으로 이해함을 반영한다. 그러므로 그 현재 로드 밸런싱 상태는 건강 및 로드 인프라스트럭쳐(1202)가 로드 밸런싱 유닛들(106)이 통신 프로토콜을 사용하여 명령된 것 아래에서 현재 동작하도록 예상되는 로드 밸런싱 지령을 반영한다. 그러한 예시적인 통신 프로토콜은 도 15를 참조하여 아래에 더 기재된다. 타겟 로드 밸런싱 상태와 현재 로드 밸런싱 상태 간의 상호작용 및 관계는 또한 도 15의 기재로 더 명백해진다.
그 타겟 로드 밸런싱 상태 및 현재 로드 밸런싱 상태는 활성(active), 비활성(inactive), 또는 드레이닝(draining) 값을 각각 취할 수 있다. 활성 지령은 새로운 요청들/접속들이 받아들이며 엔트리(1302)와 연관된 어플리케이션에서 타겟팅될 수 있음을 지시한다. 비활성 지령은 어떠한 부가적인 패킷들도 그 연관된 어플리케이션으로 포워딩해서는 안됨을 지시한다. 드레이닝 지령은 새로운 요청들/접속들에 대한 어떠한 패킷들도 그 연관된 어플리케이션으로 보내져서는 안되지만 현존하는 요청들/접속들에 대한 패킷들이 그 연관된 어플리케이션으로 계속해서 포워딩되어야 함을 지시한다.
기재된 구현에서, 각각의 건강 및 로드 정보(1206)의 결정적인 버전은 다수의 호스트들(108)의 각각의 호스트(108)에 위치되는 건강 및 로드 테이블들(1204)에 저장된다. 이러한 구현으로서, 호스트(108)가 폭주하면, 또한 폭주되는 어플리케이션들(316)에 속하는 건강 및 로드 정보(1206)가 손실된다. 그러므로, 높은 가용성의 측정이 데이터를 복제하지 않고도 자동으로 획득된다. 그러나, 건장 및 로드 정보(1206)의 결정적인 버전은 대안으로 다른 장소에 저장될 수 있다. 다른 그러한 저장 옵션들이 로드 밸런싱 유닛들(106) 자체 및 (모든 다른 호스트들을 포함하는) 다수의 다른 호스트들(108), 또 다른 분리 및/또는 외부의 디바이스 등에 대한 건강 및 로드 정보(1206)를 (그 단일의 태스크로서 또는 호스팅 임무들에 따라) 저장하고 유지하는 호스트(108)를 포함한다.
건강 및 로드 정보(1206)의 결정적인 버전(definitive version)이 호스트들(108(1, 2, ...n))을 가로질러 분배되는 것을 제외하고 다른 장소에 저장되고 유지되는 경우, 그러한 건강 및 로드 정보(1206)는 높은-가용성 목적들에 대해 (또한, 예를 들어, 복제 디바이스, 백업 등에 저장된) 과다하게 저장될 수 있다. 건강 및 로드 정보(1206)를 저장하기 위한 예시적인 프록시 시나리오들이 도 17a 및 도 17b를 참조하여 아래에 기재된다. 도 17a는 건강 및 로드테이블들(1204)에 대한 프록시 시나리오에 지시되고, 도 17b는 통합된 건강 및 로드 캐쉬들(1208)에 대한 프록시 시나리오를 지시한다.
도 13b는 도 12에 도시된 바와 같이 예시적인 통합된 건강 및 로드 캐쉬(1208)이다. 기재된 구현에서, 각각의 로드 밸런싱 유닛(106) 내의 각각의 통합된 건강 및 로드 캐쉬(1208)는 각각의 호스트(108)에서 각각의 건강 및 로드 인프라스트럭쳐(1202)에 대한 각각의 건강 및 로드 테이블(1204)에 저장된 정보의 적어도 부분을 포함한다. 그 캐쉬된 건강 및 로드 정보는 통합된 건강 및 로드 캐쉬(1208)에서 임의의 방식으로 체계화될 수 있다.
도시된 바와 같이, 통합된 건강 및 로드 캐쉬(1208)는 각각의 호스트(108(1, 2,...n)의 건강 및 로드 테이블(1204) 내의 정보의 부분 또는 모두를 복제하는 각각의 호스트(108(1), 108(2), ...108(n))에 대한 캐쉬를 포함한다. 특히, 통합된 건강 및 로드 캐쉬(1208)는 호스트 #1(1304(1))에 대한 캐쉬, 호스트 #2(1304(2))에 대한 캐쉬,... 호스트 #n(1304(n))을 포함한다. 그러므로, 그 도시된 통합된 건강 및 로드 캐쉬(1208)는 호스트(1, 2, ...n)에 의해 넓은 레벨에서 대응하는 각각의 호스트(108(1, 2, ...n))에 대한 어플리케이션-지정 엔트리들을 포함하는 각각의 개별 캐쉬(1304)로 체계화된다. 대안으로, 통합된 건강 및 로드 캐쉬(1208)는 어플리케이션(316)의 타입에 의해 넓은 레벨에서 호스트(108(1, 2, ...n))로 더 나눠진 특정 어플리케이션 타입으로 지시된 개별 블록들로, 체계화될 수 있다. 다른 데이터 구조 포맷들이 또한 이용될 수 있다.
도 14는 건강 및 로드 정보를 포함하는 네트워크 로드 밸런싱을 위한 예시적인 방법을 도시하는 흐름도이다. 흐름도(1400)는 여덟개의 블록들(1402 내지 1416)을 포함한다. 흐름도(1400)의 작용들이 다른 환경들에서 그리고 여러가지 소프트웨어 스킴들로 수행될수 있을지라도, 도 1 내지 도 3 및 도 12 내지 도 13b가 특히 그 방법의 임의의 양상들 및 예들을 도시하는데 사용된다. 예를 들어, 두 개의 블록들(1402 내지 1404)의 동작들은 호스트(108)에 의해 수행되고, 여섯개의 블록들(1406 내지 1416)의 동작들은 로드 밸런싱 유닛(106)에 의해 수행된다.
블록(1402)에서, 호스트에서의 건강 및 로드 정보가 결정된다. 예를 들어, 어플리케이션들(316(2)에 대한 건강 및 로드 정보(1206)가 건강 및 로드 인프라스트럭쳐(1202(2))에 의해 확인되고 호스트(108(2))에서 건강 및 로드 테이블(1204(2))에 저장될 수 있다. 블록(1404)에서, 그 결정된 건강 및 로드 정보는 로드 밸런싱 유닛들에 보급된다. 예를 들어, 건강 및 로드 인프라스트럭쳐(1202(2))는 어플리케이션들(316(2))에 대한 건강 및 로드 정보(1206)를 로드 밸런싱 유닛들(106(1, 2,...u)으로 보낼 수 있다. 화살표(1418)로 표시된 바와 같이, 블록들(1402, 1404)의 동작들은 (어플리케이션) 건강 및 로드가 변화들이 발생하면 계속적으로 모니터링되고 업데이트될 수 있도록 반복된다.
블록(1406)에서, 건강 및 로드 정보가 호스트들로부터 수신된다. 예를 들어, 로드 밸런싱 유닛(106(1))은 다수의 호스트들(108(1, 2, ...n))로부터 건강 및 로드 정보(1206)를 수신할 수 있으며, 이는 호스트(108(2))의 어플리케이션들(316(2))에 대한 건강 및 로드 정보(1206)를 포함한다. 블록(1408)에서, 그 수신된 건강 및 로드 정보는 캐쉬된다. 예를 들어, 로드 밸런싱 유닛(106(1))은 호스트들(108(1, 2,,...n))로부터의 건강 및 로드 정보(1206)을 통합된 건강 및 로드 캐쉬(1208(1))로 저장할 수 있다. 도 13b을 참조하면, 호스트(108(2))로부터의 어플리케이션들(316(2))에 대한 통합된 건강 및 로드 캐쉬(1208(1)), 건강 및 로드 정보(1206)의 도 13b의 구현은 호스트 #2(1304(2))에 대한 캐쉬 내에 저장될 수 있다. 화살표(1420)로 표시된 바와 같이, 블록들(1406, 1408)의 동작들은 (어플리케이션) 건강 및 로드 정보가 변화들이 발생하면 계속적으로 수신되고 업데이트될 수 있도록 반복된다.
점선의 화살표(1422)로 표시된 바와 같이, 로드 밸런싱 유닛들(106)은 또한 클라이언트들(102)로부터의 통신들을 핸들링하고, (어플리케이션) 건강 및 로드 문제들을 핸들링한다. 블록(1410)에서, 새로운 접속을 요청하는 패킷이 수신된다. 예를 들어, 로드 밸런싱 유닛(106(1))은 네트워크(104)를 통해 클라이언트(102(2))로부터 TCP SYN 패킷을 수신할 수 있다. 블록(1412)에서, 그 캐쉬된 건강 및 로드 정보가 참고된다. 예를 들어, 로드 밸런싱 유닛(106(1))은 통합된 건강 및 로드 캐쉬(1208(1))를 참고할 수 있다. 특히, 로드 밸런싱 유닛(106(1))은 TCP SYN 패킷이 호스트들 #1, #2,...#n(1304(1, 2, ...n))을 위한 캐쉬들을 가로질러 지시되는 어플리케이션과 연관된 엔트리들을 참고할 수 있다.
블록(1414)에서, 캐쉬된 건강 및 로드 정보에 응답하는 호스트가 선택된다. 예를 들어, 로드 밸런싱 유닛(106(1))이 통합된 건강 및 로드 캐쉬(1208(1))에서 캐쉬된 건강 및 로드 정보(1206)에 응답하는 어플리케이션(들)(316(2))을 갖는 호스트(108(2))를 선택할 수 있다. 그 선택된 어플리케이션(316)(및 호스트(108))(예를 들어, TCP SYN 패킷이 지시되는 어플리케이션 타입인 그 어플리케이션들 간의 가능한 최소 로딩된 어플리케이션)은 건강해야하고 부가적인 로드를 받아들일 수 있다.
(블록(1412)에서) 그 캐쉬된 건강 및 로드 정보의 참고 및 (블록(1414)에서) 그 캐쉬된 건강 및 로드 정보에 응답하는 호스트-선택은 특정의 새로운-접속-요청 패킷의 수신에 앞서 및/또는 일괄된 스킴을 사용하여 수행될 수 있다. 또한, 그 선택은 많은 스킴들 중 어떤 것에 따를 수 있다. 예를 들어, 토큰(token) 기반 또는 라운드-로빈 기반의 스킴이 이용될 수 있다. 다른 스킴으로써, 그 선택은 어플리케이션 옵션들 간의 상대적 로드들의 가중치를 포함할 수 있다. 그 토큰 및 라운드-로빈 기반의 스킴들에 따른 이러한 참고 및 선택은 특히 분류 기능성에 관해서는 도 18과 "예시적인 분류, 포워딩, 및 요청 라우팅"이란 제목의 섹션을 참조하여 아래에 더 기재된다.
타겟 호스트가 블록(1414)에서 선택된 후에, 그 새로운-접속-요청 패킷은 그에 보내질 수 있다. 블록(1416)에서, 그 클라이언트로부터 수신된 패킷은 선택된 호스트로 포워딩된다. 예를 들어, 그 TCP SYN 패킷은 로드 밸런싱 유닛(106(1))으로부터 선택된 호스트(108(2))로 포워딩된다. 이러한 초기 패킷의 포워딩은 분류기(304)에 의해 또는 포워더(302)에 의해 직접적으로 달성될 수 있으며, 또한 아래의 "예시적인 분류, 포워딩, 및 요청 라우팅"이란 제목의 섹션에서 더 기재된다.
기재된 구현에 대해, 건강 및 로드 인프라스트럭쳐(1202)는 (건강 및 로드핸들러(314)로 표시된 바와 같이) 로드 밸런싱 유닛들(106)에 위치될 뿐만 아니라 다수의 호스트들(108)에 존재하고 그를 가로질러 분배된다. 건강 및 로드 인프라스트럭쳐(1202)는 세가지 의무들을 갖는다. 첫째, 건강 및 로드 테이블들(1204)의 어플리케이션 상태 특성들(1302)에 대한 어플리케이션 상태 업데이트들을 확보하기 위해 청취 포인트(들)을 노출한다. 둘째, 로드 밸런싱 유닛들(106)이 무엇을 해야 하는지를 결정하기 위해 어플리케이션 상태 정보를 종합하고, 이는 로드 밸런서 지령(1302(C))에서 구현된다. 세째, 건강 및 로드 인프라스트럭쳐(1202)는 호스트들(108)로부터 로드 밸런싱 유닛들(106)로 이 지령을 통신한다.
로드 밸런서 지령(1302(C))의 지령 콘텐트는 효율적으로 어플리케이션 상태 특성들(1302(B))에 대한 정보의 요약된 버전이다. 그러나, 로드 밸런싱 유닛들(106)은 또한 이러한 처리된 지령뿐만 아니라 어플리케이션 상태 특성들(1302(B))의 원 정보를 수신할 수 있다. 건강 및 로드 테이블들(1204)의 이들 및 다른 필드들의 지령 콘텐트의 통신은 도 15를 참조하여 아래에 기재되는 메시지 프로토콜을 이용하여 달성된다.
도 15는 호스트들(108)과 로드 밸런싱 유닛들(106) 간의 도 12에서 도시된 건강 및 로드 정보-관련 통신들에 대한 예시적인 메시지 프로토콜(1500)을 도시한다. 일반적으로, 이벤트-구동 메카니즘이 호스트들(108)로부터 로드 밸런싱 유닛들(106)로의 건강 및 로드 테이블들(1204)에 대한 변화들을 푸쉬하는데 사용된다. 다시 말해서, 기재된 구현에 대해, 건강 및 로드 테이블들(1204)가 업데이트되는 경우, 정보는 호스트들(108)로부터 로드 밸런싱 유닛들(106)로 전달된다. 이것은각각의 건강 및 로드 테이블(1204) 모두의 스냅샷(snapshot)을 주기적으로 보내는 것을 피하고, 이는 건강 및 로드 인프라스트럭쳐(1202)에 의해 네트워크 대역폭 소모를 감소시킨다.
메시지 프로토콜(1500)이 임의의 이용가능한 메시지 전송 메카니즘을 이용하여 구현될 수 있다. 그러한 메카니즘들은 신뢰할만한 멀티캐스트 전송, 포인트-투-포인트 전송(예를 들어, 사용자 데이터그램 프로토콜(UDP) 등을 포함한다. 도시된 바와 같이, 메시지 프로토콜(1500)이 일곱개의 메시지 타입들(1502 내지 1514)을 포함한다: 심장박동 메시지(1502), 굳바이 메시지(1504), 행 변경 메시지(1506), 획득 테이블 스냅샷 메시지(1508), 전송 테이블 스냅샷 메시지(1510), 요구 테이블 상태 메시지(1512) 및 요구 부정 메시지(1514).
화살표들(1516, 1518)을 제외하고, 어떤 다른 메시지 타입들(1502 내지 1514) 간에 어떠한 시간 관계도 도면에 의해 암시되지 않는다. 예를 들어, 행 변경 메시지(1506)가 통상적으로 굳바이 메시지(1504)를 따르지 않음이 이해되어야 한다.
심장박동 메시지(1502)는 특정 호스트(108)가 기능함을 지시하고, 통합된 건강 및 로드 캐쉬(1208)에서 특정 호스트(1304)에 대한 대응하는 특정 캐쉬에 관해서는 대응하는 특정 건강 및 로드 테이블(1204)의 콘텐트에 대한 몇가지 에러 체킹을 제공한다. 각각의 호스트(108)에서의 각각의 건강 및 로드 인프라스트럭쳐(1202)는 심장박동 메시지를 각각의 로드 밸런싱 유닛(106)에서의 각각의 통합된 건강 및 로드 캐쉬(1208)에 직접적으로 또는 간접적으로 보낸다.
심장박동 메시지들(1502)이 각각의 건강 및 로드 테이블(1204)의 전체의 스냅샷이 각각의 로드 밸런싱 유닛(106)으로 주기적으로 전송되지 않기 때문에, 부분적으로 제기하는 통합된 건강 및 로드 캐쉬들(1208) 내의 데이터에 대한 에이징-아웃(aging-out) 문제를 언급한다. 심장박동 메시지들(1502)에 대한 전송 스킴이 도 16을 참조하여 아래에 더 기재된다.
심장박동 메시지들(1502)이 호스트, 에러 체킹 데이터, 선택적 DNS명에 대한 식별자를 포함한다. 그 호스트의 식별자는 구성 시간에 선택되는 유일한(예를 들어, 32-비트) 수가 될 수 있다. 그 에러 체킹 데이터는 수신 로드 밸런싱 유닛(106)이 통합된 건강 및 로드 캐쉬(1208)의 콘텐트들이 전송 호스트(108)의 건강 및 로드 테이블(1204)의 콘텐트들에 적합함을 입증할 수 있도록 하는 체크섬(checksum), 상태-변경 시퀀스 넘버, 발생 넘버, CRC 값 등이 될 수 있다. 발생 넘버 접근법이 이용되면, 다수의 발생 ID들이 어플리케이션들의 "청크(chunk)"에 할당되는 각각의 발생 ID로 사용될 수 있다. 메시지들은 이어서 그 콘텍스트에 의존하여 청크 넘버 또는 청크 넘버/발생 ID 쌍을 언급할 수 있다.
그 에러 체킹 데이터가 건강 및 로드 테이블(1204) 전체에 대해 단일의 값이 될 수 있으며, 또는 엔트리당(1302) 단위로 결정되는 다수의 값들이 될 수 있다. 그 DNS명은 그 호스트(예를 들어, 모든 "x" 심장박동들)에 대한 현재 정확한 네트워크 어드레스를 입증하거나 업데이트하기 위해 선택적으로 보내질 수 있다.
굳바이 메시지(1504)는 특정 호스트(108)가 셧다운(shutdown)으로 계획함을 지시하기 위해 특정 호스트(108)로부터 로드 밸런싱 유닛들(106)로 보내진다. 굳바이 메시지(1504)는 특정 호스트(108)에 대한 네트워크 어드레스로 인덱스되거나/맵핑될 수 있는 호스트 식별자를 포함한다. 굳바이 메시지(1504)는 "패스트 클리어(fast clear)"를 촉진시키기 위해 호스트들(108)에 의해 명백한 의도적인 셧다운들을 위해 사용된다. 그러나, 굳바이 메시지(1504)가 손실되면, 캐쉬들은 결국 심장박동 메시지들(1502)이 더 이상 보내지지 않기 때문에, 특정 호스트(108)의 엔트리들을 에이징 아웃한다.
행 변경 메시지(1506)는 특정 호스트(108)의 주어진 어플리케이션(316)에 대한 건강 및/또는 로드가 변경됨을 지시하기 위해 특정 호스트(108)로부터 로드 밸런싱 유닛들(106)로 보내진다. 행 변경 메시지(1506)는 호스트 식별자, 어플리케이션 식별자, 동작 및 동작을 위한 데이터를 포함한다. 예시적인 호스트 식별자들은 심장박동 메시지들(1502) 및 굳바이 메시지들(1504)에 관해서는 앞서 기재된다. 예시적인 어플리케이션 식별자들이 건강 및 로드 테이블(1204)의 어플리케이션-연관 엔트리(1302)의 어플리케이션 식별자(1302(A))에 관해서 앞서 기재된다.
그 행 변경 동작은 추가, 삭제 또는 업데이트될 수 있다. 다시 말해서, 그 동작을 위한 데이터는 (추가 동작을 위해) 추가될 수 있으며 또는 (업데이트 동작을 위해) 정보를 위한 대체가 로드 밸런싱 유닛들(106)에서 통합된 건강 및 로드 캐쉬들(1208)에 이미 존재한다. 삭제 동작에 대해, 어떤 데이터도 제공될 필요가 없다. 메시지 프로토콜(1500)은 다수의 동작들이 단일의 행 변경 메시지(1506)를 위한 수행되도록 규정될 수 있도록 정의된다. 그러므로, 특정 호스트 식별자에 대해, 어플리케이션 식별자, 동작 및 동작 데이터의 세트들은 그 특정 호스트 식별자에 의해 식별된 호스트(108)의 다수의 어플리케이션들(316)에 대해 반복될 수 있다.
획득 테이블 스냅샷 메시지(1508)는 특정 통합된 건강 및 로드 캐쉬(1208)에 대한 특정 로드 밸런싱 유닛(106)으로부터 개별 호스트(108) 또는 호스트들(108)로 보내진다. 이러한 획득 테이블 스냅샷 메시지(1508)는 호스트들(108)에서 건강 및 로드 인프라스트럭쳐(1202)가 각각의 호스트(108)에 대해 각각의 건강 및 로드 테이블(1204)의 스냅샷을 제공하도록 요청한다. 이러한 메시지는 그 요청 로드 밸런싱 유닛(106)의 확인을 포함하고, (ⅰ) 실패되고 이어서 회복된 후; (ⅱ)호스트(108)이 심장박동 메시지들(1502)을 다시 보내는 것을 실패하고, 회복하고 시작한 후; (ⅲ) 행 변경 메시지(1506)이 로드 밸런싱 유닛(106)으로 보내지지만 그 메시지는 드롭된다면, 그 통합된 건강 및 로드 캐쉬(1208)는 각각의 호스트(108)에 대해 각각의 건강 및 로드 테이블(1204)과 동조하고; (ⅳ) 등에서 로드 밸런싱 유닛(106)에 의해 사용될 수 있다.
세번째 (ⅲ) 상황에 대해, 통합된 건강 및 로드 캐쉬(1208)와 각각의 건강 및 로드 테이블(1204) 간의 동시성 부족 및 각각의 호스트(108)에 대한 각각의 건강 및 로드 테이블(1204)은 "에러 체킹"이 통합된 건강 및 로드 캐쉬(1208)이 구식임을 나타낼 것이기 때문에 각각의 호스트(108)로부터의 후속하는 심장박동 메시지(1502)에 의해 발견된다. 로드 밸런싱 유닛(106)은 이어서 그것이 통합된 건강 및 로드 캐쉬(1208)를 업데이트할 수 있도록 획득 테이블 스냅샷 메시지(1508)를 보낼 수 있다. 그러므로, 세개(ⅰ, ⅱ, ⅲ)의 예시적인 상황들에대해서, 로드 밸런싱 유닛(106)은 다음으로 획득 테이블 스냅샷(1508)을 이용하여 통합된 건강 및 로드 캐쉬(1208)을 재구성한다. 획득 테이블 스냅샷(1508)은 포인트-투-포인트 방식으로 각각의 호스트(108)로 반복적으로 보내질 수 있거나 또는 한번 멀티캐스트 방식으로 많은 호스트들(108)로 보내질 수 있다.
개별 호스트(108)가 화살표(1516)로 표시된 바와 같이 특정 로드 밸런싱 유닛(106)으로부터 획득 테이블 스냅샷 메시지(1508)을 수신한 후에, 전송 테이블 스냅샷 메시지(1510)는 개별 호스트(108)로부터 특정 로드 밸런싱 유닛(106)으로 보내진다. 전송 테이블 스냅샷 메시지(1510)의 콘텐트는 건강 및 로드 인프라스트럭쳐(1202)에 의해 준비되고, 그 특정 로드 밸런싱 유닛(106)이 통합된 건강 및 로드 캐쉬(1208)을 재구축할 수 있도록 개별 호스트(108)의 건강 및 로드 테이블(1204)의 모두 또는 적어도다수의 행들을 포함할 수 있다. 전송 테이블 스냅샷 메시지(1510)는 개별적으로 구성된 메시지가 될 수 있으며, 또는 행 변경 메시지(1506) 내의 추가 동작들의 시퀀스와 동등할 수 있다.
요구 테이블 상태 메시지(1512) 및 요구 부정 메시지(1514)는 건강 및 로드 테이블(1204)에서 엔트리(1302)의 로드 밸런서 지령(1302(C))의 타겟 로드 밸런싱 상태 및 현재 로드 밸런싱 상태에 관련된다. 그 타겟 로드 밸런싱 상태는 건강 및 로드 인프라스트럭쳐(1202)가 로드 밸런싱 유닛들(106)이 아래에서 동작하기를 원하는 지령이다. 그 현재 로드 밸런싱 상태는 건강 및 로드 인프라스트럭쳐(1202)가 로드 밸런싱 유닛들(106)이 현재 아래에서 동작한다고 예상하거나 신뢰하는 지령이다. 일반적으로, 그 두 로드 밸런싱 상태들은 동일하다.
그러나, 그 타겟 로드 밸런싱 상태는 상태 지령 변화에 대한 변하는 기간 동안 현재 로드 밸런싱 상태와는 다를 수 있다. 예를 들어, 타겟 로드 밸런싱 상태 및 현재 로드 밸런싱 상태는 둘 모두 초기에 활성으로 설정된다. 호스트(108) 및/또는 그 어플리케이션(316)의 문제점이 검출되며, 타겟 로드 밸런싱 상태 지령은 드레이닝으로 전환된다. 이러한 드레이닝 지령은 행 변경 메시지(1506)을 이용하여 로드 밸런싱 유닛들(106)로 통신된다.
이러한 지령 변화가 모든 로드 밸런싱 유닛들(106)의 모든 통합된 건강 및 로드 캐쉬들(1208)에서 명시되기 전에 지연이 존재한다. 이러한 변하는 기간 동안, 그 타겟 로드 밸런싱 상태는 드레이닝이고 반면 현재 로드 밸런싱 상태는 호스트(108)의 건강 및 로드 테이블(1204)에서 여전히 활성이다. 현재 로드 밸런싱 상태를 드레이닝으로 변화시키기 전에, 건강 및 로드 인프라스트럭쳐(1202)는 통합된 건강 및 로드 캐쉬들(1208)이 실제로 드레이닝의 새로운 지령 상태로 업데이트되었음을 보장하기를 원한다.
로드 밸런싱 유닛들(106)의 통합된 건강 및 로드 캐쉬들(1208)이 새로운 상태 지령으로 업데이트되었음을 입증하기 위해, 건강 및 로드 인프라스트럭쳐(1202)는 요구 테이블 상태 메시지(1512)를 로드 밸런싱 유닛들(106)로 보낸다. 요구 테이블 상태 메시지(1512)는 그 상태 지령이 변경되는 것으로 지시하는 행 변경 메시지(1506)의 전송 후에 얼마간의 시간(예를 들어, 소정의 지연 주기) 동안 보내진다. 본 예에서, 그 요구 테이블 상태 메시지(1512)는 테이블 상태가 드레이닝이어야 함을 나타낸다. 점선 화살표(1518)로 표시된 바와 같이, 로드 밸런싱유닛(106)은 그 통합된 건강 및 로드 캐쉬(1208)가 요구되는 상태 지령과 다르다면, 이러한 요구 테이블 상태 메시지(1512)에 응답한다.
통합된 건강 및 로드 캐쉬(1208)에서의 지령이 그 요구된 상태 지령과 다르다면, 그 로드 밸런싱 유닛(106)은 요구 부정 메시지(1514)를 요구된 테이블 상태 메시지(1512)를 발행했던 호스트(108)의 건강 및 로드 인프라스트럭쳐(1202)로 보낸다. 이러한 건강 및 로드 인프라스트럭쳐(1202)는 이어서 어떠한 추가의 요구 부정 메시지들(1514)도 통합된 건강 및 로드 메시지(1208)로부터 수신되지 않을때까지 요구 테이블 상태 메시지(1512)를 주기적으로 재전송한다. 그 점에서, 건강 및 로드 인프라스트럭쳐(1202)는 새로운 현재 로드 밸런싱 상태를 갖는 행 변경 메시지(1506)를 보낸다. 이러한 경우, 통합된 건강 및 로드 캐쉬들(1208)은 현재 로드 밸런싱 상태의 한정적인 결정자들이며, 건강 및 로드 인프라스트럭쳐(1202)는 타겟 로드 밸런싱 상태의 한정적인 결정자이다.
도 16은 호스트들(108)과 로드 밸런싱 유닛들(106) 간에 도 12에 도시된 통신들에 대한 예시적인 메시지 전송 스킴을 도시한다. 그 예시적인 메시지 전송 스킴은 통신 연계(1210) 상에서 심장박동 메시지들(1502)에 의헤 소모되는 대역폭을 감소시킬 수 있다. 도 16의 메시지 전송 스킴은 심장박동 메시지들(1502)에 특히 적응되지만, 또한 메시지 프로토콜(1500)의 다른 메시지들을 위해 이용될 수 있다.
호스트들(108(1), 108(2), 108(3), ...108(11), 108(12))의 그룹이 로드 밸런싱 유닛들(106(1), 106(2), 106(3), ...106(u))에 따라 도시된다. 각각의 라인은 호스트들(108(1, 2, ... 12))의 그룹 간에 회원 연계 또는 포함을 나타낸다.호스트들(108(1, 2, ...12))의 그룹은 로드 밸런싱 유닛들(106)으로 심장박동 정보를 전파하기 위해 함께 작동하는 노드들의 회원을 형성한다. 열두개의 호스트들이 도시될지라도, 더 많거나 더 적은 호스트들이 임의의 주어진 호스트들의 그룹의 부분이 될 수 있다. 또한, 호스트들(108)의 총 세트가 하나, 둘, 셋 또는 그 이상의 호스트들의 그룹들로 나눠질 수 있다.
기재된 구현에서, 호스트들(108(1, 2, ...12))의 그룹에 대한 노드들의 회원은 심장박동 메시지들*1502)를 로드 밸런싱 유닛들(106)으로 전송할 책임이 있는 리더(leader)를 선출한다. 호스트들(108(1, 2, ...12))의 그룹 내의 각각의 (비-리딩(non-leading)) 호스트(108)는 그 심장박동 메시지들(1502)을 선출된 리더에게 보낸다. 호스트(108(4))는 이 예에서 선출된 리더이다.
노드들의 회원으로서, 호스트들(108(1, 2, ...12))의 그룹 내의 각각의 호스트(108)에 대한 심장박동 정보는 그 그룹 리더 호스트(108)로 전파한다. 호스트(108(4))는 심장박동 정보를 수집하고 이를 통합된 심장박동 메시지(1602)로 통합한다. 통합된 심장박동 메시지들(1602(1), 1602(2), ... 1602(u))은 이어서 각각의 로드 밸런싱 유닛들(106(1), 106(2), ...106(u))에 보낸다. 이러한 통합된 심장박동 메시지들(1602)은 선택적으로 대역폭 소모를 더 감소시키기 위해서 압축될 수 있다.
또 다른 대안으로서, 그 리더 호스트(108(4))는 그룹 회원에서의 변화들을 통합된 건강 및 로드 캐쉬들(1208)로 단지 포워딩할 수 있다. 다시 말해서, 이러한 모드에서, 통합된 건강 및 로드 캐쉬들(1208)은 주로 회원들에 대한 상태 변화들이 단독이 아닌지를 주로 다룬다. 먼저 헬로우(hello)가 호스트(108)가 온라인인 경우에 포워딩되고, 굳바이 메시지(1504)가 호스트(108)가 오프라인인 경우 보내짐을 보증하는 리더 호스트(108(4))의 의무이다. 부가적으로, 호스트(108)는 심장박동 메시지(1502)가 "포워딩"되어야 함을 주기적으로 명시할 수 있다. 이는 비록 회원 변화를 나타내지 않을지라도 그것을 통합된 건강 및 로드 캐쉬들(1208)로 보내기 위해 리더 호스트(108(4))에 지시한다.
(통합된 심장박동 메시지들(1602)을 포함하는) 심장박동 메시지들(1502)이 그들의 통합된 건강 및 로드 캐쉬들(1208)이 건강 및 로드 테이블들(1204)과 비동기되는 경우 로드 밸런싱 유닛들(106)에 의해 사용된다. 이러한 동시성의 부족은 예를 들어, 통합된 건강 및 로드 캐쉬(1208) 및/또는 로드 밸런싱 유닛(106)의 파손 또는 다른 실패로부터 발생할 수 있다. 앞서 기재된 바와 같이, 각각의 심장박동 메시지(1502)는 통합된 건강 및 로드 캐쉬(1208)와 건강 및 로드 테이블들(1204) 간의 동등함을 입증하는데 사용가능한 에러 체킹 데이터를 포함한다. 비-동등성(non-equivalency)이 특정 호스트(108) 및/또는 그의 어플리케이션(316)에 관련하여 발견되는 경우, 특정 호스트(108)의 DNS 명은 심장박동 메시지들(1502)로부터 획득된다.
그 DNS 명은 전송 테이블 스냅샷 메시지(1510)의 형태로 업데이트된 건강 및 로드 정보(1206)를 얻기 위해 획득 테이블 스냅샷 메시지(1508)를 특정 호스트(108)로 보내기 위해 통합된 건강 및 로드 캐쉬(1208)에 의해 사용된다. 다르거나 또는 동일한 획득 테이블 스냅샷 메시지(1508)가 비-동등성이 발견되는 각각의 호스트(108)로 보내진다. 결국, 통합된 건강 및 로드 캐쉬(1208) 내의 건강 및 로드 정보(1206)는 새로운 심장박동 메시지들(1502)에 의해 입증할만한 건강 및 로드 테이블들(1204) 내의 건강 및 로드 정보(1206)와 동일하다. 이러한 방식으로, 실패된 통합된 건강 및 로드 캐쉬(1208)가 메시지 프로토콜(1500) 및 동등성-체킹 스킴을 사용하여 수동의 감시없이 동작들로 다시 부트스트랩(bootstrap)될 수 있다.
도 17a 및 도 17b는 건강 및 로드 테이블들(1204) 및 통합된 건강 및 로드 캐쉬들(1208) 각각에 대해 예시적인 건강 및 로드 정보 프록시 저장 시나리오들을 도시한다. 도 12 내지 도 16을 참조하여 앞서 기재된 구현들에서, 호스트들(108)은 건강 및 로드 인프라스트럭쳐(1202)를 포함한다. 그러나, 다른 구현들이 건강 및 로드 인프라스트럭쳐(1202)를 포함하지 않는 호스트들을 수반할 수 있다.
예를 들어, 호스트가 어플리케이션(들)의 버전 및/또는 건강 및 로드 인프라스트럭쳐가 구현되지 않는 운영 체제를 실행할 수 있고 또는 정책에 대해 이유들이 호스트 상에 설치되지 않을 수 있다. 결과적으로, 호스트들의 이러한 타입들은 그 위에서 실행하는 건강 및 로드 인프라스트럭쳐(1202)를 갖지 않는다. 호스트(1702)는 건강 및 로드 인프라스트럭쳐(1202)를 실행하지 않는 호스트이다. 그럼에도 불구하고, 호스트(1702)는 프록시(1704)와 같은 하나 이상의 프록시들 상에서 실행하는 건강 및 로드 인프라스트럭쳐(1202)를 이용할 수 있다.
프록시(1704)는 건강 및 로드 인프라스트럭쳐(1202)에 존재하고, 그 건강 및 로드 인프라스트럭쳐(1202) 상에서 실행하며, 이는 건강 및 로드 테이블(1204)을포함한다. 호스트(1702)가 호스트(1702) 상에서 실행하는 어플리케이션들에 대한 건강 및 로드 테이블(1204)에 건강 및 로드 정보(1206)를 제공함으로써 건강 및 로드 인프라스트럭쳐(1202)의 기능성을 사용할 수 있다. 대안으로, 프록시(1704)가 외부 모니터링 동작들을 수행함으로써 호스트(1702) 상에서 건강 및 로드를 추론할 수 있다. 프록시(1704)는 중복성 및 결과의 높은 가용성을 위해 프록시(1704(1), 1704(2))로서 도시된다.
도 12 내지 도 16을 참조하여 앞서 기재되고 도 18을 참조하여 아래에 기재되는 구현들에서, 로드 밸런싱은 통합된 건강 및 로드 캐쉬들(1208)을 포함하는 로드 밸런싱 유닛들(106)로 달성된다. 그러나, 다른 구현들이 통합된 건강 및 로드 캐쉬들(1208)을 포함하지 않는 로드 밸런싱을 수반할 수 있다.
예를 들어, 로드 밸런싱은 모놀리식 로드 밸런싱 하드웨어 또는 통합된 건강 및 로드 캐쉬(1208)를 저장하지 않거나 및/또는 저장할 수 없으며, 그렇지 않으면 포함하는 다른 로드 밸런싱 인프라스트럭쳐에 의해 달성될 수 있다. 로드 밸런서(1706)는 통합된 건강 및 로드 캐쉬(1208)를 갖지 않는 그러한 로드 밸런싱 디바이스 또는 디바이스들을 반영한다. 그럼에도 불구하고, 로드 밸런서(1706)는 프록시(1708)와 같은 하나 이상의 프록시들 상에 현존하는 통합된 건강 및 로드 캐쉬(1208)를 이용할 수 있다.
프록시(1708)가 통합된 건강 및 로드 캐쉬(1208)를 포함하고, 이는 로드 밸런스(1706)에 의해 서비스되는 호스팅된 어플리케이션들에 대한 건강 및 로드 정보(1206)을 저장한다. 로드 밸런서(1706)는 로드 밸런서(1706)에 내재되고 그에의해 지지되는 어플리케이션 프로그래밍 인터페이스들(API들)을 이용하여 그러한 정보를 억세스함으로써 로드 밸런싱 기능들을 수행하는 경우 통합된 건강 및 로드 캐쉬(1208)의 건강 및 로드 정보(1206)를 사용할 수 있다. 대안으로, 통합된 건강 및 로드 캐쉬(1208)는 로드 밸런서(1706)으로의 지령들을 포함하는 건강 및 로드 정보(1206)를 푸쉬하기 위해 API들을 야기할 수 있다. 프록시(1708)는 중복성 및 결과의 높은 가용성을 위해 프록시(1708(1), 1708(2))로서 도시된다.
도 18은 로드 밸런싱 유닛(106)의 분류기(304) 및 건강 및 로드 핸들러(314)를 포함하는 예시적인 타겟 어플리케이션 종단점 할당 절차를 도시한다. 건강 및 로드 핸들러(314)가 통합된 건강 및 로드 캐쉬(1208)를 획득한 후에, 그의 건강 및 로드 정보(1206)가 새로운 요청들/접속들을 위한 어플리케이션 종단점들의 선택세 이용된다.
도 13b를 참조하여 앞서 기재된 바와 같이, 통합된 건강 및 로드 캐쉬(1208)는 다수의 호스트들(108)에 대한 캐쉬된 건강 및 로드 정보(1206)를 포함한다. 다수의 호스트들(108)로부터 시작한 건강 및 로드 정보(1206)로부터 통합된 건강 및 로드 캐쉬(1208)의 생성 및 업데이트를 용이하게 하기 위해, 그 건강 및 로드 정보(1206)은 각각의 호스트(108)의 식별자에 의해 억세스될 수 있도록 체계화된다. 그러나, 그 내의 건강 및 로드 정보(1206)는 또한 어플리케이션 종단점 선택을 용이하게 하기 위해 어플리케이션(316)의 타입에 의해 억세스될 수 있도록 도한 체계화된다.
다시 말해서, 건강 및 로드 핸들러(314)는 다수의 호스트들(108)에 대해 건강 및 로드 정보(1206)를 가로질러 어플리케이션(316) 단위로 건강 및 로드 정보(1206)를 억세스할 수 있다. 일단 주어진 어플리케이션(316)에 대한 건강 및 로드 정보(1206)가 각각의 호스트(108)에 대해 억세스되면, 들어오는 접속 요청들의 할당이 그러한 건강 및 로드 정보(1206)에 따라서 수행될 수 있다. 예를 들어, 주어진 어플리케이션(316)에 대한 가능한 종단점들은 주어진 어플리케이션(316)에 대한 건강한 종단점들 간의 상대적 로드 용량을 이요할 수 있는 고려로 그 주어진 어플리케이션(316)의 종단점들의 선택에 의한 들어오는 접속 요청들에 할당될 수 있다.
기재된 구현에서, 분류기(304)가 건강 및 로드 핸들러(314)에 타겟 어플리케이션 종단점 할당 요청(1802)을 만든다. 도시된 바와 같이, 타겟 어플리케이션 종단점 할당 요청(1802)이 (ⅰ) 가상 IP 어드레스 및 포트, (ⅱ) 프로토콜, 및 (ⅲ) 프로토콜-특정 정보를 포함한다. 그러므로 타겟 어플리케이션 종단점 할당 요청(1802)은 들어오는 접속 요청들이 지시되는 어플리케이션(316)의 타입을 식별한다.
건강 및 로드 핸들러(314)는 타겟 어플리케이션 종단점 할당 요청(1802)을 수신하고 임의의 하나 이상의 많은 선택 메카니즘들을 이용하여 어플리케이션(316)의 식별된 타입에 대응하는 적어도 하나의 물리적 종단점을 선택하다. 레턴시를 감소시키기 위해, 건강 및 로드 핸들러(314)가 들어오는 접속요청들의 수를 통해 사용될 어플리케이션 종단점들의 할당을 선택한다. 이러한 할당은 타겟 어플리케이션 종단점 할당 응답(1804)을 사용하여 건강 및 로드 핸들러(314)로부터분류기(304)로 제공된다. 도시된 바와 같이, 타겟 어플리케이션 종단점 할당 응답(1804)이 어플리케이션(316)의 식별된 타입에 대한 (종단점들(IP1, IP2, IP3)과 같은) 물리적 IP 어드레스들 및 포트들의 할당을 포함한다.
타겟 어플리케이션 종단점 할당 응답(1804)에 대한 할당은 하나 이상의 할당 스킴들을 이용하여 완료될 수 있다. 예의 방식으로, 토큰 할당 스킴(1806) 및 백분율 할당 스킴(1808)이 도시된다. 토큰 할당 스킴(1806)은 유닛-기반의 할당 스킴이고, 백분율 할당 스킴(1808)은 시간-기반의 할당 스킴이다.
토큰 할당 스킴(1806)은 그들의 상대적 로드 및 용량 비에 응답하여 각각의 건강한 종단점(IP1, IP2, IP3)에 대한 토큰들을 할당한다. 총 사용가능 용량의 도시된 바와 같은 예에 대해, IP1은 사용가능 용량의 40%를 가지며, IP2는 사용가능 용량의 35%를 가지며, IP3은 사용가능 용량의 25%를 갖는다. 그러므로, 토큰들의 총수는 이러한 백분율에 따라 나눠진다. 토큰들의 총수는 타겟 어플리케이션 종단점의 부분으로서 제공될 수 있거나 또는 건강 및 로드 핸들러(314)에 의해 결정될 수 있다.
토큰들의 총수에 대한 임의의 값이 10, 45, 100, 250, 637, 1000 등과 같이 사용될 수 있다. 이러한 값은 초당 접속 요청들의 수 및 어플리케이션 건강 및/또는 로드가 변화하는 스피드/주파수에 의존하여 설정될 수 있다. 분류기(304)는 토큰들이 고갈될 때까지 어플리케이션 종단점 할당을 갖는 각각의 접속 요청에 응답하는 경우 하나의 토큰을 "사용하고"/소모하며; 이어서 분류기(304)는 타겟 어플리케이션 종단점 할당 요청(1802)을 사용하여 또 다른 토큰 할당을 요청한다.
백분율 할당 스킴(1808)이 유사한 방식으로 사용가능한 상대적 용량을 결정한다. 그러나, 토큰들 대신, 어플리케이션 종단점 당 이러한 결정된 사용가능한 상대적 용량들이 기간 타이머(18010)에 따라 분류기(304)에 제공된다. 분류기(304)가 기간 타이머(1810)의 만료까지 이러한 사용가능한 상대적 용량 백분율들에 따라서 들어오는 접속 요청들에 타겟 어플리케이션 종단점들을 할당한다.
백분율 할당 스킴(1808)에 대해, 분류기(304)는 할당된 백분율들에 집착하기 위해 어플리케이션 종단점 할당들의 실행 기록을 유지하고 기간 타이머(1810)에 대한 시간의 트랙을 유지한다. 타이머 만료의 경우, 이어서 분류기(304)가 타겟 어플리케이션 종단점 할당 요청(1802)을 이용하여 또 다른 백분율 할당을 요청한다.
토큰 할당 스킴(1806)이 시간 제한을 또한 사용할 수 있음을 이해해야 한다. 할당된 토큰들이 너무 오래되면, 그들은 버려져야 하고 새로운 것들이 획득되어야 한다. 그렇지 않으면, 분류기(304)는 현재 너무 낡게 되어 건강 및 로드 정보에 기초하여 이전에 할당된 부패된 토큰들을 소모할 수 있다. 분류기(304)에 의한 어플리케이션 종단점 할당들의 사용은 아래의 "예시적인 분류, 포워딩, 및 요청 라우팅"이란 제목의 섹션에서 더 기재된다.
예시적인 세션 트랙킹
이 섹션은 세션 정보와 같은 호스트 상태 정보가 어떻게 네트워크 로드 밸런싱에 대해 수집되고 이용될 수 있는지를 기재한다. 이러한 섹션은 주로 도 19 내지 도 24를 참조하고, (도 3의) 세션 트랙커(308)에 의해 제공되는 것과 같은 세션 친화성 보존 기능성을 도시한다. 도 1 내지 도 3을 참조하여 앞서 기재된 바와 같이, 각각의 호스트(108)는 클라이언트들(102)에 서비스(들)을 제공하는 하나 이상의 어플리케이션들(316)을 호스팅한다. 세션 트랙커(308)는 네트워크 로드 밸런싱의 임의의 기재된 구현들에 대해 어플리케이션들(316)과 클라이언트들(102) 간에 설정된 접속들에 대한 콘텍스트들에 관련한다.
도 19는 세션 정보(1902)를 포함하는 예시적인 네트워크 로드 밸런싱 접근법을 도시한다. 접속 [1]에서, 클라이언트(102(1))가 로드 밸런싱 인프라스트럭쳐(106)를 통해 호스트(108(2)와의 새로운 접속을 이루는 것으로 도시된다. 로드 밸런싱 인프라스트럭쳐(106)은 하나 이상의 로드 밸런싱 유닛들(106)을 구성할 수 있다. 그 접속 요청이 로드 밸런싱 인프라스트럭쳐(106)에 도착하는 경우, 그 요청은 통상적으로 호스트들(108)의 건강 및/또는 로드 정보 및/또는 그의 어플리케이션들(316)(도 19에 명료히 도시되지 않음)에 응답하는 네트워크 로드 밸런싱 기능성을 사용하여 호스트(108)로 라우팅된다.
접속[1]이 이루어지는 경우, 세션이 클라이언트(102(1))와 서비스 어플리케이션(316) 간에 설정되고, 이는 이 예에서 호스트(108(2)) 상에 존재한다. 그 세션은 클라이언트(102(1))와 호스트(108(2)) 간에 통신 교환을 위한 콘텍스트를 제공한다. 그 세션 콘텍스트를 위한 정보는 호스트(108(2))에 저장된다. 접속[1]이 완료되는 경우, 그 세션 콘텍스트는 다시 사용되지 않을 수 있다. 다른 한편으로, 클라이언트(102(1))가 어플리케이션(316)에 의해 제공되는 서비스를 위한 호스트들(108)과의 또 다른 접속을 시작하려고 시도한다면, 그 세션 콘텍스트는 다시 사용할 수 있다. 이 다른 접속이 그 세션 콘텍스트를 저장하는 동일한호스트(108(2)로 라우팅된다면, 클라이언트(102(1))가 새로운 세션 콘텍스트를 설정해야 하며, 이는 클라이언트(102(1))의 사람 사용자에게 시간 소모적인 것이고, 강력한 및/또는 방해하는 데이터 처리가 될 수 있다. 건강 및/또는 로드 정보-기반의 네트워크 로드 밸런싱으로서, 제 2 접속이 108(2)로 라우팅될 임의의 기회보다 큰 어떠한 가능성도 없다.
그러나, 로드 밸런싱 인프라스트럭쳐(106)가 세션 정보과 호스트들(108) 간의 맵핑에 억세스한다면, 로드 밸런싱 인프라스트럭쳐(106)는 적절한 호스트(108)에 앞서 설정된 세션들에 관련하는 접속 요청들을 라우팅할 수 있다. 몇몇 세션 정보가 로드 밸런싱 인프라스트럭쳐(106)을 통해 흐르는 패킷들의 콘텐트들로부터 추론될 수 있다. 그러나, 이러한 접근법은 이유들의 수에 대해 부정확하고 계획성 없는 것이다. 첫째, 세션 설정 및 종료가 단지 추론된다. 둘째, 몇몇 세션들이 패킷에 포함된 적절한 지시로 "표면상(officially)" 종료되지 않는다. 예를 들어, 몇몇 세션들이 간단히 중단한다. 셋째, 호스트(108(2))로부터 클라이언트(102(1))로 전송된 패킷들은 로드 밸런싱 인프라스트럭쳐(106)을 포함하지 않는 경로를 취할 수 있으며, 이는 세션 정보에 대한 로드 밸런싱 인프라스트럭쳐(106)에 의한 그러한 패킷들의 임의의 스누핑(snooping)을 배제한다.
도 19에 도시된 바와 같이, 호스트들(108)은 세션 정보(SI)(1902)를 로드 밸런싱 인프라스트럭쳐(106)에 제공한다. 호스트들(108)로부터의 세션 정보(1902)를 사용하면, 세션 친화성 보호자(1904)가 설정된 세션과 그 세션이 설정되었던 호스트(108) 간의 친화성을 보호할 수 있다. 세션 정보(1902)가 클라이언트(102)와 특정 호스트(108) 간의 연계를 포함하고, 또는 클라이언트(102)와 특정 호스트(108) 간에 설정된 각각의 세션으로부터 그 특정 호스트(108)로의 맵핑을 포함한다. 이러한 맵핑은 호스트-세션 정보 맵핑(1906)의 부분으로서 세션 친화성 보호자(1904)에 억세스가능하다. 세션 정보(1902)의 특정 예들이 특히 도 20, 도 22, 도 23a, 도 23b를 참조하여 아래에 제공된다.
세션 트랙킹에 대한 임의의 기재된 구현들에서, 클라이언트들(102)의 논리 성질은 적절하다. 도 1을 참조하여 앞서 명시된 바와 같이, 클라이언트(102)가 디바이스의 특정 디바이스 및/또는 특정 사용자가 될 수 있다. 결과적으로, 다른 디바이스들로부터 호스트들(108)을 억세스하는 사용자 클라이언트(102)에 대한 세션 친화성은 여전히 보존될 수 있다. 그러므로, 세션 정보(1902)를 사용한 세션 연속들은 프록시 시나리오들(예를 들어, 몇몇 인터넷 서비스 제공자들(ISP들))에서 여전히 달성될 수 있다.
접속[1] 예에 연속하여, 호스트(108(2))에 설정된 셰션은 세션 정보(1902)로서 로드 밸런싱 인프라스트럭쳐(106)에 제공된다. 특히, (ⅰ) 클라이언트(102(1)) 및 호스트(108(2))의 세션 콘텍스트와 (ⅱ) 호스트(108(2)에 대한 식별자 간의 연계/맵핑이 호스트-세션 정보 맵핑(1906)에 생성된다. 접속[2]에 대한 접속 요청이 동일한 세션 콘텍스트에 대해 후속하여 도착하는 경우, 세션 친화성 보호자(1904)는 호스트-세션 정보 맵핑(1906)에 세션 콘텍스트를 위치시키고 호스트(108(2))가 그 연계/맵핑으로부터의 세션 콘텍스트와 연관됨을 확인한다.
호스트-세션 정보 맵핑(1906)으로부터의 세션 친화성 보호자(1904)에 의해확인된 바와 같은 요청된 세션 콘텍스트로의 호스트(108(2)의 맵핑에 응답하여, 접속[2]은 호스트(108(2))로 라우팅된다. 이 점에서, 세션 친화성을 보호하는 것은 로드 밸런싱 인프라스트럭쳐(106)에 대해 어플리케이션 건강 및 로드-기반의 네트워크 로드 밸런싱 결정들보다 더 높은 우선순위이다. 그러나, 건강 및/또는 로드는 예를 들어, 로딩이 몹시 무거운 경우 또는 세션-관련 어플리케이션 및/또는 호스트가 실패된 조건인 경우, 세션 트랙킹보다 더 중요한 네트워크 로드 밸런싱이 될 수 있다.
접속들의 많은 타입들이 세션-관련될 수 있다. 예들은: TCP 접속, 전송 계층 보안(TLS)/SSL 세션, PPTP 세션, IPSec/L2TP 세션, ISA 세션, HTTP 쿠키-기반의 세션, 터미널 서버 세션, 관리자-정의 세션 등을 포함한다. 설명에 의해, TCP 접속이 TCP 패킷들의 세션이 되는 것으로 고려된다. 또한, 관리자에 의해 세션들을 정의하는 모델이 열거되고 지원될 수 있다. 더구나, 타임아웃에 의해 경계식별된 클라이언트 IP-어드레스-기반의 세션들이 지원될 수 있다. 이는 상대적으로 비-이성적(non-intelligent) 세션 지원이지만 몇몇 사용자들은 기대한다.
클라이언트(102)로부터의 접속 요청이 소망의 세션의 타입에 의해 변경한다. 예를 들어, "TCP 접속" 타입의 세션들에 대해, 그 접속 요청은 TCP 패킷을 포함한다. "SSL 세션" 타입의 세션들에 대해, 그 접속 요청은 TCP 접속을 포함한다. 다른 그러한 접속 요청들은 다른 세션 타입들에 대응한다. 이러한 예들은 또한 세션 계층들이 어떻게 존재할 수 있는 지를 도시한다. 보다 낮은 세션 레벨에서, TCP 접속에 대한 세션 콘텍스트가 TCP 4-튜플, 세션 넘버, 전송된/수신된 바이트 수 등을 포함할 수 있다. 보다 높은 세션 레벨에서, SSL 세션에 대한 세션 콘텍스트가 32-바이트 세션 IP와 호스트(108) 등에 제공된 클라이언트(102)의 공개 키를 포함할 수 있다.
도 20은 통지들(2006) 및 메시지들(2008)을 사용하는 통신 세션 정보를 포함하는 예시적인 네트워크 로드 밸런싱 접근법을 도시한다. 다수의 로드 밸런싱 유닛들(106(1), 106(2),...106(u)) 및 다수의 호스트들(108(1), 108(2),...108(n))이 도시된다. 각각의 호스트(108(1), 108(2),...108(n))은 거기에 존재하고 그 위에서 실행하는 하나 이상의 각각의 어플리케이션들(316(1), 316(2), ...316(n))을 포함한다. 통지들(2006)은 어플리케이션들(316)로부터 세션 정보를 제공하는데 사용되고, 메시지들(2008)은 호스트들(108)로부터 로드 밸런싱 유닛들(106)로의 세션 정보를 제공하는데 사용된다.
도시된 바와 같이, 각각의 호스트(108(1), 108(2),...108(n))는 각각의 세션 트랙킹 인프라스트럭쳐(STI)(2002(1), 2002(2), ... 2002(n))를 포함한다. (단지 세션 테이블(2014(1))이 도 19에 명료하게 도시될지라도) 각각의 세션 트랙킹 인프라스트럭쳐(2002(1), 2002(2), ...2002(n))는 각각의 세션 테이블(2014(1), 2014(2), ... 2014(n))을 포함한다.
각각의 로드 밸런싱 유닛(106(1), 106(2), ... 106(u))은 각각의 트래픽 라우팅 기능성(TRF)(2012(1), 2012(2), ...2012(u))을 포함한다. 트래픽 라우팅 기능성(2012)은 예를 들어, 분류기(304) 및 요청 라우터(306)에 의해 각각 제공된 것과 같이, 분류 및/또는 요청 라우팅 기능성을 포함할 수 있다. 로드 밸런싱 유닛들(106(1), 106(2), ...106(u))을 가로질러 분배된 것은 분배된 세션 트랙킹 관리자(2010)이다.
기재된 구현에서, 트래픽 라우팅 기능성(2012) 및 분배된 세션 트랙킹 관리자(2010)는 로드 밸런싱 인프라스트럭쳐(106)의 일부이다. 세션 트랙킹 인프라스트럭쳐(2002)는 또한 (예를 들어, 원격의) 로드 밸런싱 인프라스트럭쳐(106)의 일부가 될 수 있다.
API(2004)가 어플리케이션들(316)로부터 세션 트랙킹 인프라스트럭쳐(2002)로 세션 정보를 제공하도록 사용된다. API(2004)를 사용하면, 어플리케이션들(316)은 그에 대해 여러가지 변경들을 포함하는 세션 정보를 세션 트랙킹 인프라스트럭쳐(200)에 통지하도록 권한 부여된다. 특히, 각각의 어플리케이션(316)은 통지들(2006)을 제공할 수 있고, 세션 트랙킹 인프라스트럭쳐(2002)가 그 통지들(2006)을 받아들일 수 있다.
세션이 설정되었다는 통지(또는 세션 설정 통지(2006(E))는 세션이 새로 설정되거나 열려진 경우 어플리케이션(316)으로부터 제공된다. 세션 설정 통지(2006(E))가 세션 식별자 및 선택적으로 어플리케이션(316)의 식별자를 포함한다. 세션이 종료되었다는 통지(또는 세션 종료 통지(2006(T))는 세션이 종료되거나 닫혀진 경우 어플리케이션(316)으로부터 제공된다. 세션 종료 통지(2006(T))는 또한 세션 식별자 및 선택적으로 어플리케이션(316)의 식별자를 포함한다.
세션 트랙킹 인프라스트럭쳐(2002)가 세션 설정 통지(2006(E))를 받아들이는 경우, 이는 엔트리를 새로운 세션에 대한 세션 테이블(2014)에 삽입한다. 예시적인 세션 테이블(2014)가 도 23a를 참조하여 아래에 더 기재된다. 세션 트랙킹 인프라스트럭쳐(2002)가 세션 종료 통지(2006(T))를 받아들이는 경우, 이는 오래된 세션에 대한 세션 테이블(2014) 내의 엔트리를 제거한다.
세션 테이블(2014(1))은 호스트(108(1)) 상의 어플리케이션들(316(1))을 참조하여 세션 정보(1902)에 대한 믿을만한 소스이다. 그러나, 일반적으로 너무 많은 레턴시가 존재해서 세션 참조를 갖는 각각의 들어오는 접속 요청의 수신시 세션 테이블들(2014)로의 억세스를 위한 호스트들(108)을 접촉하도록 트래픽 라우팅 기능성(2012)을 요청할 수 없다. 그러므로, 세션 정보(1902)는 로드 밸런싱 유닛들(106)에서 캐쉬된다.
로드 밸런싱 유닛들(106)에서, 분배된 세션 트랙킹 관리자(2010)는 그 세션 트랙킹 관리 의무들의 부분으로서 세션 정보(1902)를 캐쉬한다. 일반적으로, 분배된 세션 트랙킹 관리자(2010)은 각각의 로드 밸런싱 유닛(106) 상에 부분적으로 존재하는 분배된 어플리케이션 및/또는 가상 서비스이다. 그러므로 각각의 논리 세션에 대해, 분배된 세션 트랙킹 관리자(2010)는 세션 참조를 갖는 들어오는 접속 요청들이 로드 밸런싱 인프라스트럭쳐(106)에 의해 수신된 라우팅 트래픽에 대해 신속하게 이용될 수 있는 신뢰할만하고 스케일가능한 방식으로 세션 정보의 적어도 하나의 캐쉬된 카피를 유지한다.
호스트들(108)과 로드 밸런싱 유닛들(106) 간의 통신들은 호스트(108)로부터 보내진 메시지들(2008)이 의도된 로드 밸런싱 유닛(106)으로 도착함을 보증하는 신뢰할만한 프로토콜로 달성된다. 각각의 호스트(108)는 메시지들(2008)에 대한 의도된 로드 밸런싱 유닛(106)인 적어도 하나의 특정 로드 밸런싱 유닛(106)에 결합된다. 이러한 바인딩(binding)은 특정 로드 밸런싱 유닛(106)의 IP 어드레스를 세션 트랙킹 인프라스트럭쳐(2002)와 분배된 세션 트랙킹 관리자(2010) 간에 세션-트랙킹 메시지들(2008)을 보내기 위한 각각의 호스트(108)에 할당함으로써 생성된다. 로드 밸런싱 인프라스트럭쳐(106)의 높은 가용성을 용이하게 하기 위해, 로드 밸런싱 유닛(106)이 실패한 경우, 또 다른 로드 밸런싱 유닛(106)이 그 실패된 로드 밸런싱 유닛(106)의 IP 어드레스를 가정한다. IP 어드레스 가정을 위한 실패 검출이 심장박동 또는 또 다른 얼라이브니스(aliveness) 모니터링 스킴을 이용하여 달성될 수 있다.
그러므로, 메시지들(2008)은 세션 트랙킹 인프라스트럭쳐(2002)로부터 분배된 세션 트랙킹 관리자(2010)로 통신한다. 예를 들어, 세션 트랙킹 인프라스트럭쳐(2002)가 세션 설정 통지(2006(E))를 받아들이는 경우, 이는 또한 세션 업 메시지들(2008(U))을 분배된 세션 트랙킹 관리자(2010)로 보낸다. 세션 업 메시지(2008(U))는 세션 식별자, 호스트 식별자, 및 선택적으로 다른 정보를 포함한다. 세션 업 메시지(2008(U))에 대한 콘텐트들은 분배된 세션 트랙킹 관리자(2010)의 구현에 의해 각각의 세션에 대해 저장될 수 있는 정보에 관해 도 23b를 참조하여 아래에 더 기재된다. 세션 트랙킹 인프라스트럭쳐(2002)가 세션 종료 통지(2006(T))를 받아들이는 경우, 이는 또한 세션 다운 메시지(2008(D))를 분배된 세션 트랙킹 관리자(2010)로 보낸다. 메시지들(2008)은 세션 트랙킹 인프라스트럭쳐(200)가 통지(2006)에 응답하여 세션 테이블(2014)을 적절하게 변경하기전, 동안, 또는 후에 보내질 수 있다.
도 21은 통지들 및 메시지들을 이용하여 통신 세션 정보를 포함하는 네트워크 로드 밸런싱을 위한 예시적인 방법을 도시하는 흐름도(2100)이다. 흐름도(2100)는 열다섯개의 블록들(2102 내지 2130)을 포함한다. 흐름도(2100)의 동작들이 다른 환경들에서 그리고 다양한 소프트웨어 스킴들로 수행될 수 있을지라도, 도 1 내지 도 3 및 도 19 내지 도 20은 본 방법의 임의의 양상들 및 예들을 도시하는데 특히 사용된다.
예를 들어, 네개의 블록들(2102 내지 2104 및 2118 내지 2120)의 동작들은 어플리케이션(316)에 의해 수행되며, 여섯개의 블록들(2106 내지 2110 및 2122 내지 2126)의 동작들은 세션 트랙킹 인프라스트럭쳐(200)에 의해 수행되고, 다섯개의 블록들(2112 내지 2116 및 2128 내지 2130)의 동작들은 분배된 세션 트랙킹 관리자(2010)에 의해 수행된다. 이러한 여덟개의 블록들(2102 내지 2116)의 동작들은 주로 세션을 열도록 지시되고, 이러한 일곱개의 블록들(2118 내지 2130)의 동작들은 주로 세션을 닫도록 지시된다.
블록(2102)에서, 세션이 열린다. 예를 들어, 어플리케이션(316)이 클라이언트(102)로 세션을 열 수 있다. 블록(2104)에서, 세션 설정 통지가 제공된다. 예를 들어, 어플리케이션(316)은 세션 설정 통지(2006(E))를 그 세션을 여는 것의 결과로서 및/또는 그 세션을 여는 것에 관련하여 API(2004)를 이용하는 세션 트랙킹 인프라스트럭쳐(2002)에 제공할 수 있다.
블록(2106)에서, 그 세션 설정 통지가 받아들여진다. 예를 들어, 세션 트랙킹 인프라스트럭쳐(200)가 API(2004)에 따라 어플리케이션(316)으로부터 세션 설정 통지(2006(E))를 받아들일 수 있다. 블록(2108)에서, 세션 테이블 내에 엔트리가 삽인된다. 예를 들어, 세션 트랙킹 인프라스트럭쳐(2002)는 열려진 세션에 대한 세션 테이블(2014) 내에 엔트리를 삽입할 수 있다. 그러한 삽입의 예들은 특히 도 23a를 참조하여 아래에 기재된다. 블록(2110)에서, 세션 업 메시지가 보내진다. 예를 들어, 세션 트랙킹 인프라스트럭쳐(2002)가 세션 업 메시지(2008(U))를 신뢰할만한 통신 프로토콜을 이용하여 분배된 세션 트랙킹 관리자(2010)에 보낼 수 있다.
블록(2112)에서, 그 세션 업 메시지는 수신된다. 예를 들어, 분배된 세션 트랙킹 관리자(2010)가 신뢰할만한 통신 프로토콜에 따라서 세션 트랙킹 인프라스트럭쳐(2002)로부터 세션 업 메시지(2008(U))를 수신할 수 있다. 블록(2114)에서, 세션 정보 엔트리가 생성된다. 예를 들어, 분배된 세션 트랙킹 관리자(2010)는 하나 이상의 로드 밸런싱 유닛들(106)에 캐쉬된 세션 정보(1902)에 대한 세션 정보 엔트리를 생성할 수 있다. 그러한 생성 및 후속하는 추가의 예들은 특히 도 22 및 도 23b를 참조하여 아래에 더 기재된다.
블록(2116)에서, 네트워크 트래픽이 세션 정보로 라우팅된다. 예를 들어, 분배된 세션 트랙킹 관리자(2010)에 관련한 트래픽 라우팅 기능성(2012)은 세션 참조를 갖는 들어오는 접속 요청들을 라우팅하기 위해, 생성된 세션 정보 엔트리를 포함하는 캐쉬된 세션 정보(1902)를 사용할 수 있다. 그러한 트래픽 라우팅의 예가 특히 도 24를 참조하여 아래에 더 기재된다. 부가적인 예들이 아래의 "예시적인 분류, 포워딩, 및 요청 라우팅"이란 제목의 섹션에 기재된다.
블록(2118)에서, 그 세션은 닫혀진다. 예를 들어, 어플리케이션(316)이 클라이언트(102)로 그 세션을 닫을 수 있다. 블록(2120)에서, 세션 종료 통지가 제공된다. 예를 들어, 어플리케이션(316)은 세션 종료 통지(2006(T))를 그 세션을 닫는 것의 결과로서 및/또는 그 세션을 닫는 것에 관련하여 API(2004)를 이용하는 세션 트랙킹 인프라스트럭쳐(2002)에 제공할 수 있다.
블록(2122)에서, 그 세션 종료 통지가 받아들여진다. 예를 들어, 세션 트랙킹 인프라스트럭쳐(2002)가 API(2004)에 따라서 어플리케이션(316)으로부터 세션 종료 통지(2006(T))를 받아들일 수 있다. 블록(2124)에서, 그 세션 테이블 내의 엔트리는 제거된다. 예를 들어, 세션 트랙킹 인프라스트럭쳐(2002)는 그 닫혀진 세션에 대한 세션 테이블(2014) 내의 엔트리를 제거할 수 있다. 블록(2126)에서, 세션 다운 메시지가 보내진다. 예를 들어, 세션 트랙킹 인프라스트럭쳐(2002)가 신뢰할만한 통신 프로토콜을 사용하여 세션 다운 메시지(2008(D))를 분배된 세션 트랙킹 관리자(2010)에 보낼 수 있다.
블록(2128)에서, 그 세션 다운 메시지가 수신된다. 예를 들어, 분배된 세션 트랙킹 관리자(2010)는 신뢰할만한 통신 프로토콜에 따라서 세션 트랙킹 인프라스트럭쳐(2002)로부터 세션 다운 메시지(2008(D))를 수신할 수 있다. 블록(2130)에서, 그 세션 정보 엔트리는 파괴된다. 예를 들어, 분배된 세션 트랙킹 관리자(2010)는 세션 정보 엔트리를 갖는 임의의 로드 밸런싱 유닛(106)에 그 캐쉬된 세션 정보(1902)에서 세션 정보 엔트리를 파괴할 수 있다. 그러한 파괴 및 후속하는 삭제의 예들은 특히 도 22 및 도 23b를 참조하여 아래에 더 기재된다.
도 22는 다수의 로드 밸런싱 유닛들(106)에서 관리 세션 정보로으 예시적인 접근법을 도시한다. 각각의 로드 밸런싱 유닛(106(1), 106(2), ...106(u))은 분배된 원자 관리자(DAM)(2202)의 각각의 부분(2202(1), 2202(2), ...2202(u))을 포함한다. DAM(2202)은 분배된 세션 트랙킹 관리자(2010)의 예시적인 구현이다. 각각의 DAM 부분(2202(1), 2202(2), ... 2202(u))는 DAM 테이블(DAMT)(2206)의 각각의 부분(2206(1), 2206(2),...2206(u))을 포함한다.
DAM(2202)은 트래픽 라우팅 기능성(2012)가 세션 친화성을 보호하기 위해 이를 사용하도록 신뢰할만하고 스케일가능한 방식으로 세션 정보(1902)를 관리하는 분배된 어플리케이션 또는 가상 서비스이다. 예를 들어, 트래픽 라우팅 기능성(2012)은 DAMT(2206)를 검색하거나 또는 검색된 DAMT(2206)를 갖기 위해 API(명확하게 도시되지 않음)를 이용하여 DAM(2202)을 억세스할 수 있다. 함수 호출들(2204), DAM(2202)의 동작, 및 도 22의 다른 양상들은 도 23a 및 도 23b의 기재 후에 아래에 더 기재된다.
도 23a은 도 20에 도시된 바와 같이 예시적인 세션 테이블(2014)이다. 세션 테이블(2014)은 "v" 엔트리들(2302(1), 2302(2), ...2302(ⅴ))을 포함한다. 각각의 엔트리(2302)는 어플리케이션(316)으로부터 받아들여진 세션 설정 통지(2006(E))에 응답하는 세션 트랙킹 인프라스트럭쳐(2002)에 의해 삽입된다. 각각의 엔트리(2302)는 어플리케이션(316)으로부터 받아들여지는 세션 종료 통지(2006(T))에 응답하는 세션 트랙킹 인프라스트럭쳐(2002)에 의해 제거된다.
앞서 기재된 바와 같이, 각각의 세션 설정 통지(2006(E)는 세션 식별자 및 선택적으로 어플리케이션(316)의 식별자를 포함한다. 세션 테이블(2014) 내의 각각의 엔트리(2302(1), 2302(2), ...2302(ⅴ))는 (ⅰ) 세션 식별자(2302(1I), 2302(2I) ... 2302(ⅵ)) 및 (ⅱ) 세션 타입 및/또는 어플리케이션(2302(1T), 2302(2T) ... 2303(vT))의 각각의 필드들을 포함한다.
세션 타입 및/또는 어플리케이션(2302(T))은 "TCP", "IPSEC", "터미널 서버", "HTTP-쿠키" 앞서 명시된 어플리케이션 타입 등이 될 수 있다. 세션 식별자(2302(I))는 "<source IP address, source TCP port, destination IP address, destination TCP port>", "Client IP=172.30.189.122", "User='joe_user'", "Cookie='{b7595cc9-e68b-4eb0-9bf1-bb717b31d447}'", 또 다른 예를 들어 세션의 어플리케이션-지정 확인 등이 될 수 있다. 대안으로, TCP 접속/세션 타입들에 대해, 세션 식별자(2302(I))는 TCP 4-튜플(IPv4 또는 IPv6)의 정준(canonical) 버전이 될 수 있다. 세션 식별자(2302(I)의 필드들 및 어플리케이션/세션 타입(2302(T))에 대한 다른 값들이 대안으로 사용될 수 있다.
도 23b는 도 22에 도시된 바와 같이 예시적인 분배된 원자 관리자(DAM) 테이블(DAMT)(2206)이다. DAM 테이블(2206)은 "w" 엔트리들(2304(1), 2304(2) ... 2304(w))을 포함한다. 각각의 세션 정보 엔트리(2304)는 세션 트랙킹 인프라스트럭쳐(2002)로부터 수신된 세션 업 메시지(2008(U))에 응답하여 DAM(2202)에 의해 생성된다. 각각의 세션 정보 엔트리(2304)는 세션 트랙킹 인프라스트럭쳐(2002)로부터 수신된 세션 다운 메시지(2008(D))에 응답하여 파괴된다. 아래에 더 기재되는 바와 같이, DAM 테이블들(2206)의 세션 정보 엔트리들(2304)은 실제로 함수 호출들(2204)을 사용하여 DAM(2202)에 의해 조작될 수 있다.
앞서 기재된 바와 같이 세션 업 메시지(2008(U))는 세션 식별자, 호스트 식별자, 및 선택적으로 다른 정보를 포함한다. DAM 테이블(2206) 내의 각각의 세션 정보 엔트리(2304(1), 2304(2) ... 2304(w))는 (ⅰ) 키(2304(1K), 2304(2K) ... 2304(wK)), (ⅱ) 데이터(2304(1D), 2304(2D) ... 2304(wD)), (ⅲ) 메타데이터(2304(1M), 2304(2M) ... 2304(wM))의 각각의 필드들을 포함한다. 예를 들어, 키(2304(K)) 필드들에 대한 값들은 알파벳 순서의 스트링들이 될 수 있고, 데이터(2304(D)) 필드들에 대한 값들은 바이너리 비트가 될 수 있다. 키(2304(K))에 대한 값들 역시 바이너리 비트가 될 수 있다.
키(2304(K))가 세션 식별자(2302(I))에 응답할 수 있다. 데이터(2304(D))는 세션 콘텍스트가 현존하는 호스트(108)의 네트워크 어드레스와 같은 호스트 식별자에 대응할 수 있다. 메타데이터(2304(M))는 다른 선택적 정보에 대응할 수 있다. 그러한 메타데이터(2304(M))의 예들은 원자 충돌들을 해결하고 원자 얼라이브니스(예를 들어, 타임아웃 메카니즘을 통해)를 트랙킹하기 위해 DAM(2202)에 의해 내부적으로 사용되는 데이터를 포함한다. (원자가 되는 이 엔트리들(2304)의 특성은 다음 단락에서 더 완전하게 기재된다.) 특히, 메타데이터(2304(M))는 다른 것들 간에 DAM 테이블(2206)에 세션 정보 엔트리(2304)를 추가했던 엔티티(예를 들어, 트래픽 라우팅 기능성(2012)의 경우)의 식별을 포함한다.
기재된 구현에서, 각각의 세션 정보 엔트리(2304)는 DAM(2202)이 그 엔트리들(2304)을 전체적으로 추가, 삭제, 카피 등을 할 수 있는 센스에서 원자이지만, DAM(2202)은 보통 임의의 전체 엔트리(2304)의 일부를 변경하지 않는다. 그러므로, 원자 엔트리들(2304)은 세션 친화성 보호 구현에 대해 가용성 및 스케일가능성을 구현하기 위해 DAM(2202)에 의해 DAM 테이블들(2206)을 가로질러 추가되고, 삭제되고, 카피되고, 그렇지 않으면 조작된다.
(도 22의) 함수 호출들(2204)은 DAM 테이블(2206)의 원자 엔트리들(2304)을 조작하기 위해 DAM(2202)으로 사용할 수 있다. 함수 호출들(2204)은 포인트-투-포인트 또는 멀티캐스트 방식으로 하나의 로드 밸런싱 유닛(106)으로부터 하나 이상의 다른 로드 밸런싱 유닛들(106)로 통신될 수 있다. 이러한 함수 호출들은 원자 추가(2204(A)), 원자 삭제(2204(D)), 원자 질의(2204(Q)), 원자 리턴(2204(R))을 포함한다.
원자 추가(2204(A))는 형태 AddAtom(키, 데이터)를 취하고 원자 엔트리(2304)를 하나 이상의 DAM 테이블들(2206)에 추가되는데 사용된다. 그러므로, 원자 추가(2204(A)) 함수 호출이 AddAtom(<세션 식별자>, 호스트 IP 어드레스)로서 공식화될 수 있다. 원자 삭제(2204(D))는 형태 DeleteAtom(키)를 취하고, 하나 이상의 DAM 테이블들(2206)에서 원자 엔트리(2304)를 삭제하는데 사용된다. 원자 삭제(2204(D)) 함수 호출들은 키(2304(K))에 의해 식별된 세션의 카피를 갖도록 알려진 그 DAM 테이블들(2206)에 지시될 수 있거나, 임의의 카피들이 삭제됨을 보장하기 위해 모든 DAM 테이블들(2206)을 멀티캐스트할 수 있다.
원자 질의(2204(Q))는 형태 QueryAtom(키)를 취하고, 들어오는 접속 요청에의해 참조되는 세션 식별자가 특정 DAM 부분(2202)의 특정 로컬 DAM 테이블(2206)에 위치되지 않는 경우 특정 DAM 부분(2202)에 의해 사용된다. 원자 질의(2204(Q)) 함수 호출들은 하나 이상의(가능한 모두) 다른 DAM 부분들(2202)에 보내진다. 응답하여, 각각의 다른 DAM 부분(2202)는 키/세션 식별자에 대한 로컬 DAM 테이블(2206)을 체크한다. 그 키가 또 다른 DAM 부분(2202)에 의해 위치되면, 이 다른 DAM 부분(2202)는 원자 리턴(2204(R))으로 대답한다.
원자 리턴(2204(R))은 형태 ReturnAtom(키, 데이터)를 취하고, 원자 질의(2204(Q)) 함수 호출에 대답하는데 사용된다. 원자 리턴(2204(R)) 함수 호출들은 DAM 부분(2202)이 원자 질의(2204(Q)) 함수 호출에서 지정된 키(2304(K))에 의해 식별된 로컬 DAM 테이블(2206) 내에 요청된 원자 엔트리(2304)를 갖는 경우 사용된다. 원자 리턴(2204(R)) 함수 호출들은 원자 질의(2204(Q)) 함수 호출을 발행했던 DAM 부분(2202)으로 다시 지시될 수 있다.
원자 추가(2204(A)) 함수 호출들은 세션 업 메시지들(2008(U))에 응답하고 및/또는 하나 이상의 다른 DAM 테이블들(2206)에 원자 엔트리(2304)를 복제하는데 사용된다. 그러한 복제는 중복성 및/또는 스케일가능성을 위한 것일 수 있다.
원자 삭제(2204(D)) 함수 호출들은 세션 다운 메시지들(2008(D))에 응답하여 사용되고 또한 하나 이상의 다른 DAM 테이블들(2206)에 보내질 수 있다. 원자 엔트리(2304)가 삭제된 후에, 그 원자 엔트리(2304)는 그것이 DAM(2202)으로 남아있고 선택적으로 그것이 실제로 여전히 원자 엔트리(2304)의 메타데이터(2304(M)) 필드에 좀비 표시를 갖는 DAM 테이블(2206)로 저장되도록 "좀비(zombie)" 상태로 될수 있다.
그러므로, 일단 원자 엔트리(2304)가 삭제되면, 이러한(이제 죽고 닫혀진) 세션에 대한 패킷들이 적절한, 프로토콜-지정 처리에 대한 세션 콘텍스트의 호스트(108)에 지시되도록 좀비 상태에서 DAM(2202) 및 DAM 테이블(2206)에 머물 수 있다. 예를 들어, TCP 접속이 부숴진 후에 수신된 TCP 패킷들이 그 접속을 종료했던 호스트(108)에 지시된다. 이러한 호스트(108)는 적절하게 - 아마도 RST를 전송하고 FIN-ACK를 재전송함으로써 응답할 수 있다. 원자 엔트리(2304)가 이러한 좀비 상태에서 소비한 시간은 이용된 신뢰할만한 통신 프로토콜의 프로토콜-지정의 데드 타임과 (합리적으로 가능한 근접하게) 매칭한다.
원자 질의(2204(Q)) 함수 호출은 제 1 로드 밸런싱 유닛(106)이 그 제 1 로드 밸런싱 유닛(106)의 DAM(2202)의 로컬 DAM 테이블(2206)에 저장되지 않은 세션을 참조하는 들어오는 접속 요청을 수신하는 경우 원자 엔트리(2304)를 확보하는데 사용된다. 다른 DAM 부분들(2202)이 브로드캐스트 원자 질의(2204(Q)) 함수 호출에서 동시에 또는 포지티브 원자 리턴(2204(R)) 함수 호출이 수신될 때까지 순차적으로 질의될 수 있다.
원자 리턴(2204(R)) 함수 호출이 원자 엔트리(2304)를 제 1 로드 밸런싱 유닛(106)의 DAM 부분(2202)에 제공하기 위해 제 2 로드 밸런싱 유닛(106)의 DAM 부분(2202)에 의해 사용되며, 그 원자 엔트리(2304)는 제 1 로드 밸런싱 유닛(106)의 DAM 부분(2202)에 의해앞서 발행되었던 원자 질의(2204(Q)) 함수 호출에서 키/세션 식별자에 의해 지정된 키(2304(K))를 갖는다. 트래픽 라우팅 기능성(2012)과 같은다른 구성요소들이 또한 API 또는 이와 유사한 것에 따라서 기능들(2204), 특히 원자 질의(2204(Q)) 함수 호출을 호출할 수 있음을 유의해야 한다.
DAM 부분들(2202) 및 DAM 테이블들(2206)은 무수히 많은 방법들로 체계화되고 관리될 수 있다. 예시적인 방법들이 획득시 로컬 캐쉬하고(local caching), 위치 선택에 대해 해싱하는(hashing) 등의 복제/중복성에 관한 것이다. 복제를 채우기 위한 복제의 0, 1, 2, 또는 그 이상의 레벨들이 이용될 수 있다. 복제의 0 레벨로서, 그러므로 각각의 원자 엔트리(2304)가 다른 DAM 부분들(2202)에 대한 복제없이 세션 업 메시지(2008(U))를 수신하는 DAM(2202)에서 저장된다.
복제의 제 1 레벨로서, 각각의 원자 엔트리(2304)는 세션 업 메시지(2008(U))를 수신하는 DAM(2202)에서 저장되며, 그러므로 이는 또한 원자 추가(2204(A)) 함수 호출을 사용하는 하나의 다른 DAM 부분(2202)에 추가된다. 이는 로드 밸런싱 유닛(106)에 대해 하나의 실패 레벨을 핸들링한다. 유사하게, 복제의 제 2 레벨로서, 각각의 원자 엔트리(2304)는 세션 업 메시지(2008(U))를 수신하는 DAM(2202)에서 저장되며, 그러므로 이는 또한 두 개의 다른 DAM 부분들(2202)에 추가된다. 일반적으로, 주어진 DAM 부분(2202)이 원자 엔트리들(2304)을 카피하는 하나, 둘 등의 다른 DAM 부분들(2202)은 랜덤으로 미리 결정되거나 선택된다. 제 3, 제 4 등의 복제 레벨이 또한 이용될 수 있다.
더구나, 완전한 복제가 세션 업 메시지(2008(U))를 수신하는 DAM(2202)에서 저장되는 각각의 원자 엔트리(2304)를 가지고 그러므로 또한 모든 다른 DAM 부분(2202)에 추가됨으로써 이용될 수 있다. 몇가지 인자들이 복제 레벨의 선택에의해 영향을 받는다: 복제 레벨이 증가함에 따라, 가용성이 증가하고 레턴시가 감소한다. 다른 한편으로, 복제 레벨이 증가함에 따라 네트워크 트래픽 및 메모리 사용법 둘 모두 증가한다.
완전한 복제가 이용되지 않는 경우, 획득시 로컬 캐쉬할 수 있다. 예를 들어, DAM 부분(2202)이 DAM 테이블(2206)의 부분에 참조된 세션 식별자를 위치시키지 않는 경우, 그 DAM 부분(2202)은 원자 리턴(2204(R)) 함수 호출을 통해 참조된 세션 식별자와 연관된 원자 엔트리(2304)를 확보하기 위해 원자 질의(2204(Q)) 함수 호출을 발행한다. 그 확보된 원자 엔트리(2304)를 사용후에 투하하는 대신에, DAM 부분(2202)은 DAM 테이블(2206)의 부분에 그 확보된 원자 엔트리(2304)를 캐쉬한다. 이러한 옵션은 앞서 열거된 인자들 간에 트레이드오프(tradeoff)를 제공한다.
완전한 복제가 이용되지 않는 경우, 또 다른 옵션이 위치 선택을 위해 해싱할 수 있다. 세션을 위한 제 1 원자 엔트리(2304)는 세션 업 메시지(2008(U))를 수신하는 DAM 부분(2202)에서 저장된다. 복제된 카피 또는 카피들이 해싱 기능을 사용하여 원자 추가(2204(A)) 함수 호출들을 통해 특정 DAM 부분(들)(2202)에 보내진다. 가능한 해시 값들의 총 범위 중, 각각의 DAM 부분(2202)이 그의 서브세트(subset)에 할당된다. 각각의 세션 식별자는 해싱 값에 도착하기 위해 몇가지 해싱 함수를 사용하여 해싱된다. 이러한 해싱 값은 할당된 DAM 부분(들)(2202)에 맵핑된다. 이어서 먼저 원자 엔트리(2304)를 추가한 DAM 부분(2202)은 그 할당된 DAM 부분(들)(2202)에 그 원자 엔트리(2304)를 복제한다.
위치 선택을 위한 해싱으로서, DAM 테이블(2206)에서 국부적으로 캐쉬된 소망의 원자 엔트리(2304)를 갖는 적어도 하나의 DAM 부분(2202)이 세션 식별자로부터 알 수 있다. 그러므로 원자 질의(2204(Q)) 함수 호출이 알려진 DAM 부분(들)(2202)에 지시될 수 있다. 이것은 보통 네트워크 트래픽 및/또는 레턴시를 감소시킨다.
위치 선택을 위한 이러한 해싱은 1, 2, 3 등의 다른 DAM 부분들(2202) 각각으로 맵핑하는 해싱 값들의 각각의 범위를 갖는 1, 2, 3 또는 그 이상의 복제 레벨들로 사용될 수 있다. 부가적으로, 위치 선택을 위한 해싱이 획득시 로컬 캐쉬로 사용될 수 있다.
도 24는 다수의 로드 밸런싱 유닛들에서 세션 정보를 관리하기 위한 예시적인 방법을 도시하는 흐름도(2400)이다. 흐름도(2400)는 여덟개의 블록들(2402 내지 2416)을 포함한다. 흐름도(2400)의 동작들이 다른 환경들에서 그리고 다양한 소프트웨어 스킴들로 수행될 수 있을지라도, 특히 도 1 내지 도 3, 도 19, 도 20, 도 22 및 도 23b는 본 방법의 임의의 양상들 및 예들을 도시하기 위해 사용된다.
블록(2402)에서, 세션 참조를 갖는 들어오는 접속 요청이 분석된다. 예를 들어, 트래픽 라우팅 기능성(2012)이 앞서-열린/설정된 특정 타입의 세션을 참조하는 들어오는 접속 요청을 수신할 수 있다. 블록(2404)에서, 로컬 DAM 테이블이 세션 참조를 이용하여 검색된다. 예를 들어, 주어진 로드 밸런싱 유닛(106) 및 트래픽 라우팅 기능성(2012)에 대해, 그의 DAM 부분(2202)은 세션 참조를 찾는 대응하는 DAM 테이블(2206)을 검색할 수 있다.
블록(2406)에서, 세션 참조가 그 로컬 DAM 테이블의 키를 매칭하는지가 결정된다. 예를 들어, DAM 부분(2202)은 세션 참조가 키 필드들(2304(K))의 임의의 값들을 매칭하는 지를 결정하기 위해 DAM 테이블(2206)의 다수의 엔트리들(2304)의 키 필드들(2304(K))을 검색할 수 있다. 그렇다면, 흐름도(2400)는 블록(2412)에서 계속한다.
다른 한편으로, 그 세션 참조가 임의의 키를 매칭하지 않는다면, 흐름도(2400)가 블록(2408)에서 계속한다. 블록(2408)에서, 원자 질의 함수 호출이 이루어 진다. 예를 들어, DAM 부분(2202)이 그 세션 참조/식별자를 키로서 포함하는 원자 질의(2204(Q)) 함수 호출을 이룰 수 있다. 그 원자 질의(2204(Q)) 함수 호출은 적어도 하나의 다른 DAM 부분(2202)에 보내질 수 있다. 원자 질의(2204(Q))에 대한 가능한 목적지 DAM 부분들(2202)의 수, 선택, 순서 등은 DAM(2202)에 의해 이용된 옵션들(예를 들어, 복제 레벨, 위치 선택을 위한 해싱, 획득시 로컬 캐싱, 포인트-투-포인트 대 멀티캐스트 등)에 의존할 수 있다.
블록(2410)에서, 원자 리턴이 수신된다. 예를 들어, 또 다른 DAM 부분(2202)에 의해 발행된 리턴된 원자(2204(R)) 함수 호출로부터의 정보가 수신될 수 있다. 다른 DAM 부분(2202)는 세션 참조와 매칭하는 키를 갖는 그 위치된 원자 엔트리(2304)로, 대응하는 DAM 테이블(2206)에 원자 엔트리(2304)를 성공적으로 위치된다. 리턴된 원자(2204(R)) 함수 호출로부터의 정보는 위치된 원자 엔트리(2304)에 대한 키 필드(2304(K)) 및 데이터 필드(2304(D))로부터의 값들을 포함한다. 이러한 값들은 그 세션의 세션 식별자 및 그 세션에 친화처리된호스트(108)의 네트워크 어드레스에 대응한다.
블록(2412)에서, 원자 엔트리가 추출된다. 그 원자 엔트리는 매치가 (블록(2404, 2406)에서) 국부적으로 발견되었다면 로컬 DAM 테이블로부터 또는 매치가 다른 곳에서 (블록들(2408, 2410)에서) 발견되었다면 그 리턴된 원자로부터 추출된다. 예를 들어, 원자 엔트리(2304)가 DAM 부분(2202)의 DAM 테이블로부터 또는 원자 리턴(2204(R)) 함수 호출에 의해 수신된 정보로부터 추출될 수 있다. 그 추출된 원자 엔트리(2304)는 원자 리턴(2204(R)) 함수 호출의 결과로서 수신되었다면 그 로컬 DAM 테이블(2206)에서 캐쉬될 수 있다.
블록(2414)에서, 참조된 세션으로 세션 친화성을 갖는 호스트는 원자 엔트리로부터 확인된다. 예를 들어, 추출된 원자 엔트리(2304)의 데이터 필드(2304(D))의 값이 확인될 수 있으며, 그리하여 친화처리된 호스트(108)의 네트워크 어드레스를 확인한다. 블록(2416)에서, 그 들어오는 접속 요청은 확인된 호스트에 라우팅된다. 예를 들어, 트래픽 라우팅 기능성(2012) 및/또는 포워딩 기능성이 확인되고 친화처리된 호스트(108)로 세션 참조를 갖는 들어오는 접속 요청을 라우팅할 수 있다. 예시적인 분류, 요청 라우팅, 및 포워딩 기능성들은 다음의 섹션에 기재된다.
예시적인 분류, 포워딩 및 요청 라우팅
이 섹션은 그러한 트래픽 라우팅 기능성의 높은 가용성을 포함하는 네트워크 로드 밸런싱에 대해 구현될 수 있다. 트래픽 라우팅 기능성은 특히 포워딩 기능성에 관련하여 분류 및/또는 요청 라우팅 기능성을 포함할 수 있다. 이 섹션은 주로 도 25 내지 도 31을 참조한다. 이는 (도 3의) 요청 라우터(306)의 기능성, 섹션들을 트랙킹하는 것과 라우팅 트래픽의 경우 건강 및 로드 정보를 이용하는 것 간의 상호관련성, 세션 정보 및/또는 건강 및 로드 정보와의 트래픽 라우팅 상호작용들에 대한 동작 구현들, (분류, 포워딩 및/또는 요청 라우팅 구성요소들의 핸들링 특징들을 포함하는) 네트워크 로드 밸런싱 인프라스트럭쳐의 높은 가용성을 위한 장애극복 절차들, 부가적인 네트워크 로드 밸런싱 인프라스트럭쳐 구성들 등을 도시한다.
도 25는 요청 라우터(306)(H/S)에 의해 실현되는 것으로서 요청 라우팅 기능성을 갖는 예시적인 네트워크 로드 밸런싱 인프라스트럭쳐를 도시한다. 트래픽 라우팅 기능성(2012)을 참조하여 앞서 명시된 바와 같이, 트래픽 라우팅은 분류(예를 들어, 포워딩으로) 및/또는 요청 라우팅에 관련할 수 있다. 포워딩에 관련하여 패킷-레벨 분류는 특히 도 4를 참조하여 앞서 기재된다. 요청 라우팅은 특히 도 25를 참조하여 본 명세서에 기재된다.
요청-레벨 라우팅은 패킷-레벨 라우팅의 그것보다 높은 레벨에서 발생한다. 일반적으로, 요청 라우터(306)가 호스트(108) 상에서 실행하는 어플리케이션(316)에 대해 프록시로서 동작한다. 요청 라우터(306)은 TCP 접속들을 종료하고, 클라이언트(102)로부터 각각의 요청을 (아마도 부분적으로) 파싱하고, 호스트(108)에 각각의 요청을 다시 제출한다. 요청 라우터(306)는 SSL 해독화와 같은 접속에 대한 전처리를 수행할 수 있다. 또한, 요청 라우터(306)는 임의의 요청들을 흡수하도록 선택될 수 있으며(예를 들어, 그 요청 라우터는 응답들의 캐쉬를 유지할 수 있으며), 이는 그들을 호스트들(108)에 포워딩하기 전에 요청들을"독단적으로(arbitrarily)" 변경할 수 있다.
요청 라우터들(306)은 보통 어플리케이션-지정이며, 그 라우터들은 그들이 할 수 있는 것에서 다소 개방될 수 있다. 단지 예의 방식으로, 요청 라우터들(306)의 단일 클래스가 -HTTP/SSL 요청 라우터들(306(H/S))- 다음의 기재에서 언급된다. 도시된 바와 같이, 네트워크 어드레스(C1)를 갖는 클라이언트(102)가 네트워크 어드레스들(H1, H2) 각각을 갖는 호스트들(108(1), 108(2))로 네트워크(104)를 가로질러 통신한다. 그 통신들은 HTTP/SSL 요청 라우터(306)(H/S)를 포함하는 로드 밸런싱 인프라스트럭쳐를 통해 달성된다.
HTTP/SSL 요청 라우터(306)(H/S)는 HTTP 및 SSL 트래픽을 종료하고, SSL 트래픽을 해독하고, 클라이언트(102)로부터 각각의 HTTP 요청을 시험하고, 어플리케이션 종단점 건강 및 로드 정보를 고려하는 동안 각각의 요청을 분류하고 그 요청에 대한 "최고의" 종단점을 결정하기 위해 어플리케이션-지정 규칙들을 적용하고, 그 요청을 종단점에 제출한다. 종단점으로의 요청 제출은 클라이언트(102)에 의해 발신된 접속보다는 분리된 TCP 접속을 사용한다 (전자의 접속은 HTTP/SSL 요청 라우터(306)(H/S)에서 종료된다). 이러한 동작들은 분류기(304)에 의해 수행되는 동작들에 논리적으로 동일한 것으로 고려될 수 있으나, HTTP/SSL 요청 라우터(306)(H/S)에서의 이러한 동작들이 TCP 접속 내에서 각각의 요청에 대해논리 요청 레벨에서 발생한다는 점에서 차이점이 발생한다. HTTP/SSL 요청 라우터(306)(H/S), 일반적으로는 요청 라우터들(306)가 (ⅰ) 어플리케이션 건강 및 로드와, (ⅱ) 분류기(304)에 의해 사용된 세션 트랙킹 인프라스트럭쳐의 동일함을사용할 수 있다.
HTTP/SSL 요청 라우터(306)(H/S)는 클라이언트(102)와 두 개의 호스트들(108(1), 108(2)) 간에서 중개자(intermediary)로서 동작한다. 단일의 TCP 접속을 통해 클라이언트(102)로부터 두 개의 요청들을 핸들링한다. 기재된 구현에서, 그 결과의 요청 라우팅은 다수의 동작들을 포함한다. 첫째, 클라이언트(102)는 HTTP/SSL 요청 라우터(306)(H/S)에 http 또는 https 접속[1]을 설정하고 요청 #1(2502(1))을 보낸다.
둘째, HTTP/SSL 요청 라우터(306)(H/S)는 (그 트래픽이 SSL 암호화되면) SSL 세션을 종료하고, 요청 #1(2502(1))을 구문분석(parsing)여 요청 #1(2502(1))을 검사한다. 세션 정보 뿐만 아니라 어플리케이션 건강 및 로드를 고려하면, HTTP/SSL 요청 라우터(306)(H/S)는 호스트(108(1))가 이 예에서 특정 요청 #1(2502(1))에 대한 "최고의" 호스트임을 결정한다.
셋째, HTTP/SSL 요청 라우터(306)(H/S)는 호스트(108(1))로의 2차 TCP 접속[2]을 설정한다. 호스트(108(1))로의 현존 접속[2]를 대안으로 사용할 수 있다. HTTP/SSL 요청 라우터(306(H/S))는 다음에, 예를 들면, 암호화되지 않은 버젼의 요청 #1 (2502(1))를 호스트(108(1))로 전송한다. 넷째, 호스트(108(1))는 응답 #1 (2504(1))으로 응답한다. 다섯째, HTTP.SSL 요청 라우터(306(H/S))는 상기 응답 #1 (2504(1))을 암호화하고 이것은 TCP 접속[1] 상의 클라이언트(102)로 다시 전송한다.
여섯째, 클라이언트(102)는 다른 요청, 즉, 요청 #2(2502(2))를 보낸다. 요청 #2(2502(2))는 HTTP/SSL 요청 라우터(306)(H/S)가 호스트 (108(2))를 선택하는 것을 제외하고는, 요청 #1(2502(1))에 대한 취급과 유사하게 취급된다. 다른 선택은 호스트(108(1))가 실패하거나 너무 과중하게 로딩되기 때문이거나, 요청 #2(2502(2))이 요청 #1(2502(1)) 등 보다는 다른 URL에 지시되기 때문일 수 있다. 그럼에도 불구하고, HTTP/SSL 요청 라우터(306)(H/S)는 다른 제 2 TCP 접속을 설정하지만, 이 제 2 TCP 접속[3]은 호스트(108(2))로의 것이다. 암호화되지 않은 요청 #2(2502(2))는 호스트(108(2))로 보내지고, 응답 #2 (2504(2))이 결과로써 그로부터 수신된다. 이어서, 암호화된 버젼의 응답 #2 2504(2)는 HTTP/SSL 요청 라우터(306)(H/S)로부터 클라이언트(102)로 보낸다.
일곱째, 클라이언트(102)는 HTTP/SSL 요청 라우터(306)(H/S)와 함께 TCP 접속[1]을 닫는다. HTTP/SSL 요청 라우터(306)(H/S)는 (미래의 어떤 순간에) 클라이언트(102)를 대신해서, 각각, 호스트 (108(1), 108(2))에 대해 이루어진 접속들[2] 및 [3]을 닫는다. TCP 접속[2]은 선택적으로 HTTP/SSL 요청 라우터(306)(H/S)는 요청 #2(2502(2))에 대한 TCP 접속[3]을 열거나/이용할 것을 결정한 후에 닫혀질 수 있다.
HTTP/SSL 요청 라우터(306)(H/S)는 HTTP/HTTPS 접속을 종료하기 때문에, HTTP/SSL 요청 라우터(306)(H/S)는 라우팅 요청들 이상을 할 수 있다. 예를 들어, HTTP/SSL 요청 라우터(306)(H/S)는 응답들의 포워더 고유의 캐쉬를 (즉, 캐쉬를 무효로하는 대역을 벗어난(out-of-band) 체계와 함께) 잠재적으로 유지할 수 있다. 상기 예에서 기재된 바와 같이, HTTP/SSL 요청 라우터(306)(H/S)는 즉 요청된 URL에 기초한 호스트(108)의 상이한 세트들로의 상이한 종류의 요청들을 또한 잠재적으로 라우팅할 수 있다. 역으로, HTTP/SSL 요청 라우터(306)(H/S)는 잠재적으로 많은 단기 클라이언트 접속들로부터 요청들을 모으고 상기 요청들을 적은, 오래 지속되는 TCP 접속들을 통해 호스트(108)로 보낸다. 그러한 접속 집합은 호스트(108) 내의 TCP 접속 처리 오버헤드(overhead)를 줄일 수 있다.
다른 부류들의 요청 라우터들은 HTTP 외에 다른 예시적인 프로토콜들에 부합할 수 있다. 예를 들어, 요청 라우터는 SOAP 요청 라우터가 될 수 있다. SOAP 요청 라우터들은 HTTP/SSL 요청 라우터(306)(H/S)에 유사하게 작동한다. 하지만, SOAP 요청 라우터들은 SOAP 트래픽들을 라우팅할 때에 특화된다. SOAP 요청 라우터들은 SOAP 헤더를 이해하고 어플리케이션 건강 및 로드 뿐만 아니라 SOAP 헤더에 기초한 라우팅 결정을 한다.
패킷 레벨 분류 및 포워딩(즉, 패킷-레벨 라우팅)과 요청-레벨 라우팅은 둘 모두 계층-7 로드 밸런싱의 일정한 형태를 제공할 수 있다. 계층-7 로드 밸런싱은 “선택적인 터널링 및/또는 어플리케이션-레벨 로드 밸런싱을 가진 예시적인 접속 이동"의 섹션에서 이하에서 자세히 기재된다. 패킷-레벨 라우팅은 클라이언트의 TCP 접속 데이터의 초기 부분으로의 판독 전용 접근을 제공하고, 요청-레벨 라우팅은 판독을 제공하고 전체 데이터 흐름으로의 접근을 수정한다.
패킷-레벨 라우팅은 보통 요청-레벨 라우팅에 대하여 여러 장점을 가진다. 이러한 장점들은 투명성(클라이언트 패킷들은 소스 및 목적지 IP 어드레스 및 포트 번호를 유지하면서, 호스트 as-is로 전달), 낮은 처리 오버헤드(일반적으로, 전송트래픽은 라우팅 룩업을 포함), 낮은 레턴시(TCP 접속 목적지가 결정되었을 경우에 개개의 패킷들이 전송되고, 패킷들은 줄지어 기다리지 않음), 및 높은 가용성(일반적으로, 포워더 내의 장애는 TCP 접속을 종료하지 않음)을 포함한다. 요청-레벨 라우팅은 한편, 보통 패킷 레벨 라우팅보다 다음의 장점들: 클라이언트에서의 출입하는 전체 데이터 흐름을 조사하는 능력; 및 데이터 흐름을 변환하고, 다수의 호스트들 사이에서 데이터 흐름을 분해하거나 다수의 클라이언트들로부터 데이터 스트림을 모으는 능력을 가진다.
도 26은 (ⅰ) 세션 정보 및 (ⅱ) 건강 및 로드 정보에 관한 들어오는 패킷들을 라우팅하기 위한 예시적 방법을 도시하는 흐름도(2600)이다. 흐름도(2600)는 8개의 블록들(2602 내지 2616)을 포함한다. 흐름도(2600)의 작동들은 다른 환경들에서 및 다양한 소프트웨어 체계로 실행될 수 있지만, 도 1 내지 도 3, 도 12, 도 18 내지 도 20, 도 22 및 도 23b)는 상기 방법의 일정한 측면들 및 예들을 도시하도록 사용된다.
블록(2602)에서, 들어오는 패킷들이 수신된다. 예를 들어, 클라이언트(102)로부터의 패킷은 로드 밸런싱 유닛(106)의 포워더(302)에서 수신될 수 있다. 블록(2604)에서, 수신된 패킷이 미리 존재했던 세션을 위한 것인지 결정된다. 예를 들어, 포워더(302)는 수신된 패킷이 이미 TCP/IP 세션의 일부분인지 결정하기 위해서 로컬 DAM 테이블(2206())을 참고할 수 있다.
또한, 포워더(302)는 로컬 DAM 테이블(2206())을 참고하고 수신된 패킷이 이미 TCP/IP 세션의 일부분이 아니라고 결정한다. 이 경우에, 포워더(302)는 수신된패킷을 분류기(classifier)(304)로 제공하며, 상기 분류기는 수신된 패킷이 세션 관계(reference)를 가지는 지 수신된 패킷에 대한 더 높은 레벨 세션 친화성(affinity)을 체크한다. 이러한 동작들에 대한 예들은 도 24를 참조하여 앞서 기재되었고 도 27 및 도 28에서 아래에 더 기재된다.
(블록(2604)에서 결정되었을 때) 수신된 패킷이 미리 존재하는 세션에 대한 것이라면, 그러면 흐름은 블록(2606)에서 계속된다. 블록(2606)에서, 미리 존재된 세션에 유사한 호스트로 확인된다. 예를 들어, 유사한 호스트(108)는 포워더(302) 또는 분류기(304)에 의해서 로컬 DAM(2206()) 및/또는 전체에 분배된 DAM(2206)으로부터 확인될 수 있다.
블록(2608)에서, 유사한 호스트가 건강한지 결정된다. 예를 들어, 분류기(304)는 유사한 호스트(108)가 TCP/IP 세션들보다 더 높은 논리 레벨인 세션들의 일부분인 수신된 패킷들에 대해서 특히, 건강한지 결정하기 위해서 통합된 건강 및 로드 캐쉬(1208)를 참고할 수 있다. 이 블록의 동작(들)은 건강 및 로드 핸들러(314)와 함께 달성될 수 있다.
(블록 (2608)에서 결정되었을 때) 유사한 호스트가 건강하면, 흐름은 블록(2610)에서 계속된다. 블록(2610)에서, 수신된 패킷은 유사한 호스트로 라우팅된다. 예를 들어, (TCP/IP 세션들에 대한) 포워더(302) 또는 (더 높은 레벨 세션들에 대한) 분류기(304)는 유사한 호스트(108)로 패킷을 라우팅한다. 대안적인 구현으로, 분류기(304)는 더 높은 레벨 세션의 일부분인 수신된 패킷들을 위해서 유사한 호스트(108)로 라우팅하기 위해서 상기 수신된 패킷을 라우팅기로 되돌려보낼 수 있다.
한편, (블록(2608)에서 결정되었을 때) 유사한 호스트가 건강하지 않다면, 흐름은 블록(2612)에서 계속된다. 또한, 한편, 수신된 패킷이 (블록(2604)에서 결정되었을 때) 미리 존재하는 세션에 대한 것이 아니라면, 흐름은 블록(2612)에서 계속된다. 블록(2612)에서, 호스트는 건강 및 로드 정보에 응답하여 선택된다. 예를 들어, 분류기(304)는 건강 및 로드 핸들러(314)로부터 성취되는 건강 및 로드-관계된 어플리케이션 할당(즉, 타킷 어플리케이션 종단점(endpoint) 할당 반응(1804))사용하거나/또는 상기 할당으로부터 호스트(108)를 선택한다. 이러한 동작(들)의 예들은 도 19 및 도 18을 참조하여 상기 설명되고 도 30을 참조하여 아래에 더 기재된다.
블록 (2614)에서, 수신된 패킷은 선택된 호스트로 라우팅된다. 예를 들어, 분류기(304)는 패킷을 선택된 호스트로 (선택적으로 포워더(302)를 경유해서) 라우팅할 수 있다. 블록(2616)에서, 선택된 호스트로의 접속 경로에 대한 루트가 부설된다. 예를 들어, 분류기(304)는 세션 정보 엔트리를 DAM 테이블(2206), 특히 수신된 패킷을 분류기(304)에 제공했던 포워더(302)에 로컬 DAM 테이블(2206())에 추가할 수 있다. 이 세션 정보 엔트리는 (세션 트랙커(tracker)(308)의) DAM(2202)에 대한 설치된 중복(redundancy) 방법에 따라서 복제될 수 있다.
블록(2614)의 동작(들) 및 블록(2616)의 동작들은, 블록(2614)의 동작들 이전에 수행되는 블록(2616)의 동작들과 함께, 일정한 순서로 부분적으로 또는 전체적으로 중첩되는 동작들 등과 함께, 도시된 순서로 수행될 수 있다. 상기 기재된 바와 같이, 분류기(304)에 의해서 수행된 동작들은 요청 라우터(306) (또는 더 일반적으로는 트래픽 라우팅 기능(functionality)(2012))에 의해서 선택적으로 수행될 수 있다.
도 27은 장애가 없을 경우의 예시적인 트래픽 라우팅 흐름을 도시한다. 도시된 바와 같이, 하나 이상의 로드 밸런싱 인지 스위치(202)(LBA : Load-Balancing-Aware)는 남아있는 (분리되어 표시되지 않는) 로드 밸런싱 인프라스트럭쳐(106)에 접해있다. 전송 및 분류 기능은 세개의 디바이스들 또는 노드들에 분배되어있다. 제 1 디바이스는 포워더(302(1)) 및 분류기(304(1))를 포함한다. 제 2 디바이스는 분류기(304(2))를 포함한다. 제 3 디바이스는 포워더(302(2))를 포함한다.
제 2 디바이스 상에서 실행하는 분류기(304(2)) 및 제 3 디바이스 상에서 실행하는 포워더(302(2))와 함께, 각 디바이스는 각각의 기능들에 대하여 특별하게 조정될 수 있다. 예를 들어, 제 2 디바이스 및 제 3 디바이스의 하드웨어, 소프트웨어, 펌웨어, 그것들의 조합등은 예비(provisioning)를 넘어서는 과도함없이 희망된 기능을 지원하도록 순응될 수 있다. 이렇게, 포워더(302(2))를 포함하는 제 3 디바이스는 하드웨어 기능 관점에서 스위치 및/또는 라우팅기에 유사하고, 분류기(304(2))를 포함하는 제 2 디바이스는 하드웨어 기능 관점에서 서버 및/또는 개인용 컴퓨터에 유사하다.
4개의 구성 부분에 걸쳐서 기능을 제공하는 3개의 디바이스들처럼 도시되지만, 기능을 전송하고 분류하기 위한 대안적인 논리적 및/또는 디바이스 레벨 구성이 도 27에 대하여 설명되는 예시적인 트래픽 라우팅 흐름에 적용될 수 있다. 또한, 라우팅 목적지는 호스트(108)로 도시되지만, 라우팅 구현들의 본 명세서의 설명들은 선택적으로 패킷에 대한 다음 노드 목적지에 더 일반적으로 적용될 수 있으며 반드시 패킷을 소모하는 마지막 노드에 적용되는 것은 아니다.
세션 트랙커(308)의 DAM(2202) 실현(realization)은 DAM 테이블(2206)을 구현하도록 사용된다. 하지만 세션 유사 보존기(preserver)(1904)는 일반적으로 도 27의 예시적인 트래픽 라우팅 흐름에 적용될 수 있다. 포워더(302(1))는 DAM 테이블 부분(2206(1))을 포함하며, 포워더(302(2))는 DAM 테이블 부분(2206(2))을 포함한다. 들어오는 패킷들은 호스트(108(1)) 또는 호스트(109(2))로 라우팅된다.
기재된 구현에서, DAM(2202)는 세션 정보를 가지는 “원자들(atoms)"(2304)의 메모리 테이블(즉, 선택적 메타데이터(metadata)를 가진, 중요값(keyword-value) 쌍들)로 분배된다. DAM(2202) 및 DAM 테이블(2206)은 도 22 내지 도 24를 참조하여 자세히 기재된다. 분류기(304)의 클러스터내에서 어떤 노드는 원자들(2304)을 추가하고, 질문하고(query), 삭제한다. DAM(2202)는 더 높은 레벨 세션 정보 뿐만 아니라 활성(즉, TCP/IP 레벨) 라우팅들을 포함하는 매우 가용한 DAM 테이블(2206)을 유지한다.
(1)에서, 로드-밸런싱-인지 스위치(202)(LBA)는 들어오는 패킷을 포워더(302(1))로 이끈다. (2)에서, 포워더(302(1))는 내부의 라우팅 테이블, DAM 테이블(2206(1))을 참조한다. 포워더(302(1))가 이 패킷에 대한 원자 엔트리(2304)를 찾지 못할 때, 포워더는 패킷을 할당되고/되거나 연관된 분류기,분류기(304(1))로 전송한다.
(3)에서, 분류기(304(1))는 이 예에서의 패킷이 TCP SYN 패킷임을 확인한다. 분류기(304(1))는 그러므로 패킷을 클라이언트(108)로부터의 새로운 TCP 접속의 개시로써 취급한다. 건강 및 로드 핸들러(314)(명확하게 도시되지는 않음)로부터 건강 및 로드 정보를 사용하면서, 분류기(304(1))는 호스트(108(1))가 이 TCP 접속을 수신해야 한다고 결정한다. 분류기(304(1))는 포워더(302(1))에 대한 지역 라우팅 테이블로 작용한는 DAM 테이블(2206(1))을 갱신하고, 또한 라우팅을 나타내는 원자 엔트리(2304)를 전체적인 DAM (2206)에 입력한다. 이것들은 별개의 동작들, 즉, DAM 테이블(2206)의 TCP/IP 레벨 세션들이 포워더(302)에 위치되는 단독 동작이다. DAM(2202)는 내부적으로 이 라우팅을 규정된 중복 방식에 따라서 분류기(304)의 클러스터의 하나 이상의 다른 요소들로 복제한다.
(4)에서, 포워더(302(1))는 분류기(304(1))와 상호 작용하는 것 없이 호스트(109(1))에 접속을 위해서 후속 패킷들을 직접 전송한다. DAM(2202)는 적어도 부분적으로 포워더(302), 분류기(304), 또는 라우팅기/분류기 쌍(302/304)의 장애를 감추도록 사용될 수 있다. DAM(2202)는 또한 로드-밸런싱-인지 스위치(202)(LBA)가 부주의하게 다른 포워더(302)로의 설정된 접속을 위해서 패킷을 보내는 것을 시작했다면 클라이언트 접속을 유지하기 위해서 적어도 부분적으로 사용될 수 있다.
도 28은 장애(들)의 존재 상황에서의 예시적인 트래픽 라우팅 흐름을 도시한다. 도 27의 ‘장애없는’ 예시적인 트래픽 라우팅 흐름과 대조적으로, 장애는 네트워크 로드 밸런싱 인프라스트럭쳐(106)의 일부분(명확하게는 동일하지 않음)에서 발생한다. 특히, 포워더(302(1)) 및 분류기(304(1))가 상주하고 실행하는 제 1 디바이스는 도 27에서 도시된 접속이 설정된 후에 장애가 발생한다. 이 장애는 적어도 부분적으로 DAM(2202)에 의해서 감추어진다.
(1)에서, 로드-밸런싱-인지 스위치들(202)(LBA)은 포워더(302(1))의 장애를 탐지하고 연결을 위한 패킷을 클러스터내의 어떤 다른 포워더(302)로 전송을 시작한다. 이 예에서, 다른 포워더(302)는 포워더(302(2))이다. 도 28이 장애 상황을 도시하지만, 로드-밸런싱-인지 스위치들(202)(LBA)은 포워더(302(1))가 아직 사용 가능하더라도 이 트래픽을 포워더(302(2))로 보낸다. 포워더(302)의 이러한 비-장애-유도된 변화는 예를 들어, 로드 밸런싱-인지 스위치들(202)(LBA)이 포워더(302(1))로의 트래픽의 유사점을 "망각(forget)"했기 때문에 발생한다. 표기(2)-(5)의 동작들은 장애 및 “망각된 유사점”상황 모두에 적용된다.
(2)에서, 포워더(302(2))는 라우팅 테이블, DAM 테이블(2206(2))을 참고한다. 포워더가 이 패킷에 대한 라우팅 경로(route)를 찾지 못하면 패킷을 분류기(304(2))로 전송한다. (3)에서, 분류기(304(2))는 이 패킷을 “중간-세션”패킷이라고 확인하고, 분류기(304(2))는 이 패킷에 대한 경로에 대해서 DAM(2202)을 질문한다. DAM(2202)는 관련된 원자 엔트리(2304)로부터의 접속에 대한 라우팅 경로로 응답한다.
(4)에서, 분류기(304(2))는 포워더(302(2))내의 라우팅 경로를 봉한다. 라우팅 경로들을 봉하기 위한 예시적인 프로토콜은 이하에서 기재된다. (5)에서, 포워더(302(2))로 이끌려지는 접속에 대한 후속 패킷들은 직접 올바른 호스트로 라우팅되고, 상기 호스트는 이 예에서는 분류기(304(2))를 참고하지 않는, 호스트(108(1))이다.
일반적으로, 분류기들(304)과 포워더들(302)사이의 통신을 위한 라우팅 경로를 봉하는 프로토콜은 라우팅 경로들을 추가하고 제거하는 명령들을 포함한다. 더욱 명확하게는, 라우팅 경로 추가 명령은 상기 접속을 위해서 포워더(302)에서 목적지 호스트(108)로의 라우팅 경로를 봉하기 위해서 분류기(304)로부터 포워더(302)로 보낸다. 예로써, 라우팅 경로 추가 명령은 도 28의 (4)에서 지시된 바와 같이 분류기(304(2))에서 포워더(302(2))로 제공될 수 있다. 라우팅 경로(즉, 중요 및 통신 값)는 미래에 포워더(302(2))에 의해서 빠른 접근을 위해서 로컬 DAM 테이블(2206(2))로 추가된다. 이 예에서, 분류기(304(2))는 포워더(302(2))와 별개의 디바이스가고, 그래서 라우팅 경로를 봉하는 프로토콜은 내부 연결-디바이스(inter-device) 프로토콜일 수 있다. 하지만, 라우팅 경로를 봉하는 프로토콜은 내부 연결-디바이스 통신을 위해서 사용될 수 있다.
기재된 구현에서, 분류기(304(2))는 접속 목록(2802)을 포함한다. 접속 목록(2802)과 함께, 분류기(304(2))는 분류기(304(2))가 라우팅 경로를 봉하는 (포워더(302(2))와 같은) 포워더(302)의 접속들을 트랙킹한다. 분류기(304(2))가 접속들을 트랙킹하는 것이 가능하도록, 그것의 정지를 포함해서, 포워더(302(2))는 (TCP FIN 패킷과 같은) 세션들에 대한 마지막 패킷들을 분류기(304(2))로 전송한다. 이어서 분류기(304(2))는 세션에 대응하는 접속 목록(2802)에서의 엔트리를삭제하고 라우팅 경로 삭제 명령을 포워더(302(2))로 보낸다. 라우팅 경로 삭제 명령을 수신하자마자, 포워더(302(2))는 DAM 테이블(2206(2))에서 관련 라우팅 경로를 제거한다. 이 방식으로, 세션 트랙킹 기능과 관련해서 분류 기능은 라우팅 경로 테이블을 제어할 수 있고, 전송 기능에 의해서 사용되는 라우팅 경로를 제어할 수 있다. 따라서, 다른 디바이스 상으로 분리되는 전송 기능은 높은-스피드, 하지만 비교적 단순한 하드웨어를 사용해서 달성될 수 있다.
도 29는 네트워크 로드 밸런싱 인프라스트럭쳐(106)의 높은 가용성에 대한 추가적 예시적인 장애극복(failover) 절차를 도시한다. 두 개의 다른 장애들, 장애(2902) 및 장애(2906)에 대한 장애극복 절차가 기재된다. 도시된 바와 같이, 네트워크 로드 밸런싱 인프라스트럭쳐(106)(분리된 것으로 표시되지 않음)는 다섯 개의 구성요소; 포워더(302(1)), 포워더(302(2)), 포워더(302(3)), 분류기(304(1)), 및 분류기(304(2))를 포함한다.
기재된 구현에서, 이러한 다섯 개의 구성요소들 302(1), 302(2), 302(3), 304(1), 및 304(2)의 각각은 개별적인 디바이스에 대응한다. 하지만, 유사한 장애극복 절차들은 상이한 로드 밸런싱 구성요소들이 디바이스들을 공유하는 환경에 적용된다.
[1]에서 초기에, 라우팅기/스위치(들)(202)는 새로운 연결이 될 들어오는 패킷을 포워더(302(1))로 이끈다. 포워더(302(1))는 지역 라우팅 경로 테이블에서 이 접속에 대한 발생 경로를 가지지 않기 때문에, 포워더는 패킷을 (1)에서 점선 이중 화살표에 의해서 표시된 바와 같이 분류기(304(1))에 보낸다.분류기(304(1))는 먼저 가능성있는 더 높은-레벨 세션 친화성에 대한 세션 트랙킹(308)에 관한 세션 정보를 검사한다. 이 예에서, 패킷은 존재하는 세션에 유사하지 않아서, 분류기(304(1))는 건강 및 로드 핸들링(314)과 관련하여 건강 및 로드 정보와 관련해서 호스트(108)를 선택한다.
특히, 분류기(304(1))는 이 예에서 호스트(108(1))를 선택한다. 패킷이 TCP/IP 접속을 위한 것이라고 가정하면, 호스트(108(1))에 연결된 이 TCP/IP 세션은 원자 추가(2204(A)) 기능 호출을 이용하면서 분류기(304(1))에 의해서 DAM(2202)로 추가된다. 초기 패킷은 분류기(304(1)) 또는 포워더(302(1))에 의해서 호스트(108(1))로 전송된다. 분류기(304(1))는 또한 포워더(302(1))의 지역 라우팅 경로 테이블에서 라우팅 경로를 봉한다. 이후 패킷은 분류기(304(1)와 다른 상호작용 없이 포워더(302(1))에 의해서 호스트(108(1))로 전송된다.
접속[1] 중 일부 시간에, 포워더(302(1))에서 장애(2902)가 존재한다. 로드-밸런싱-인지 라우팅기/스위치(들)(202)(LBA)와 함께, 이 장애(2902)가 탐지된다. 결과로써, (2904)에서, 라우팅기/스위치(들)(202)는 접속[1]을 통해서 포워더(302(1))로 보내진 이후 패킷들을 다른 포워더(302)로 이끌고, 상기 포워더(302)는 이 예에서 포워더(302(2))이다.
포워더(302(2))는 이렇게 접속[2]을 통해서 미래 패킷들을 수신한다. 포워더(302(2))는 포워더(302(1))로 전에 이끌려졌던 패킷들에 대한 지역 라우팅 경로 테이블에서의 엔트리를 가지지 않기 때문에, 포워더(302(2))는 접속[2]의 제 1 수신된 패킷을 할당된/관련된 분류기로 보낸다. 이 예에서, 포워더(302(2))는 (2)에서 점선 이중 화살표에 의해서 표시된 바와 같이 분류기(304(2))로 할당된다.
분류기(304(2))는 존재하는 TCP/IP 접속과 관련된 DAM(2202)로부터 원자 엔트리(2304)(명백하게 도시되지는 않음)를 달성하기 위해서 원자 질문(query atom)(2204)(Q) 기능 호출을 사용한다. 이 원자 엔트리(2304)는 원자 반환(return atom)(2204)(R) 기능 호출을 통해서 세션 트랙킹(308)의 DAM(2202)를 통해서 제공된다. 분류기(304(2))는 반환된 원자 엔트리(2304)로부터 이 TCP/IP 접속과 유사한 호스트(108(1))를 추출한다. 분류기(304(2))는 호스트(108(1))로의 접속[2]에 대한 제 1 수신된 패킷을 전송하고 포워더(302(2))의 지역 라우팅 경로 테이블에서 경로를 또한 봉한다. 이후 패킷들은 분류기(304(2))와의 상호작용 없이 포워더(302(2))에 의해서 호스트(108(1))로 전송된다.
상기 설명들은 각각의 포워더(302) 구성요소들의 장애들에 주로 집중한다. 그러나, 분류기(304) 구성요소들은 또한 장애가 발생할 수 있다. 예를 들어, 어떤 지점에서, 분류기(304(2))에서 장애(2906)가 있다. 포워더(302(2))는 분류 서비스(classification service)들을 소모하려고 할 때 또는 심장박동 타입 표시기와 같은 생존(aliveness) 표시의 부족을 지시하는 것을 통해서 장애(2906)를 탐지한다. 장애(2906)를 다루기 위해서, 포워더(302(2))는 다른 분류기(304)와 재할당되거나 재결합되며, 상기 분류기(304)는 이 예에서 분류기(304(1))이다. 미래 분류 기능은 (3)에서 점선 이중 화살표에 의해서 표시된 바와 같이 분류기(304(1))에 의해서 포워더(302(2))로 제공된다.
도 30은 건강 및 로드 정보와의 트래픽 라우팅 상호 작용의 예시적인 동작구현을 도시한다. 포워더(302) 및 분류기(304)는 호스트들 108(1), 108(2)...108(n)로 패킷들을 라우팅하기 위해서 건강 및 로드 헨들러(314)와 상호 작용한다. 포워더(302) 및 분류기(304)가 도시되지만, 예시적인 동작 구현은 요청 라우터(306)(또는 일반적으로 트래픽 라우팅 기능(2012))로 또한 적용될 수 있다.
도시된 바와 같이, 호스트(108(1))는 어플리케이션 #1, 어플리케이션 #1, 및 어플리케이션 #2에 대해서 각각 어플리케이션 종단점 IP1, IP3, 및 IP4를 포함한다. 호스트(108(2))는 어플리케이션 #1 및 어플리케이션 #2에 대해서 각각 어플리케이션 종단점 IP2 및 IP6을 포함한다. 호스트(108(n))는 어플리케이션 #2에 대해서 어플리케이션 종단점 IP5를 포함한다. 이러한 호스트 108(1), 108(2)...108(n) 및 어플리케이션 종결 지점들 IP1, IP2, IP3, IP4, IP5 및 IP6은 건강 및 로드 헨들러(314)(즉, 건강 및 로드 인프라스트럭쳐(1202), 통합된 건강 및 로드 캐쉬(1208)등을 사용하면서)에 의해서 모니터링된다.
기재된 구현에서, (1)에서 분류기(304)는 토큰(token) 할당 체계(1806)를 사용하는 환경에서 하나 이상의 어플리케이션 종단점 할당(즉, 적어도 하나의 목적 어플리케이션 종단점 할당 요청(1802)을 경유해서)을 요청한다. 건강 및 로드 헨들러(314)는 이 예에서, 토큰 할당(3002)(즉, 적어도 하나의 목적 어플리케이션 종결 지점 할당 반응(1804)을 경유해서)을 제공함으로써 반응한다.
특히, 어플리케이션 #1 (3002(1))에 토큰(token) 할당 및 어플리케이션 #2 (3002(2))에 대한 토큰 할당은 분류기(304)에 사용 가능하다. 어플리케이션 #1 (3002(1))에 대한 토큰 할당은 초기에 IP1에 대해서 40 토큰, IP2에 대해서 35 토큰, IP3에 대해서 25 토큰을 제공한다. 어플리케이션 #2 (3002(2))에 대한 토큰 할당은 IP4에 대해서 10 토큰, IP5에 대해서 72 토큰, IP6에 대해서 18토큰을 제공한다. 분류기(304)에 의해서 어플리케이션 종결 지점으로의 라우팅이 할당되는 각각의 새로운 연결에 대해서, 토큰은 분류기(304)에 의해서 소모된다.
(2)에서, 포워더(302)는 새로운 접속을 위해서 초기의 들어오는 패킷을 수신한다. 이 새로운 접속에 대한 어떤 라우팅도 포워더(302)의 지역 DAM 테이블 부분(2206)에 존재하지 않기 때문에 포워더(302)는 (3)에서 초기 패킷을 분류기(304)로 전송한다.
(4)에서, 분류기(304)(즉, 초기 패킷은 더 높은 레벨 세션에 대한 세션 관계(reference)를 포함하지 않는다고 결정한 후에) 건강 및 로드 정보에 응답하여 어플리케이션 종단점(및 호스트(108))을 선택한다. 특히, 어플리케이션 #1에 의해서 작용되는 새로운 접속을 위해서, 분류기(304)는 각각의 종결 지점에 대한 토큰이 여전히 존재한다면 IP1, IP2, 및 IP3의 일부를 선택할 수 있다.
분류기(304)는 많은 가능한 방식 중 일부에서 토큰들을 소모할 수 있다. 예를 들어, 분류기(304)는 종결 지점당 토큰들의 수에 관련없이 순환 할당(round-robin) 접근을 사용한다. 선택적으로, 분류기(304)는 선형 접근으로 다음 종결 지점으로 이동하기 전에 각각의 종결 지점에 대한 모든 토큰들을 소모하는 동안에 IP1에서 단순히 시작해서 IP3을 통해서 진전한다. 또한, 분류기(304)는 어떤 순간에 가장 많은 회수의 토큰을 가진 토큰들의 종단점-정의된-세트로부터 토큰을 소모한다. 이후의 접근을 사용하면서, 분류기(304)는 IP1을 선택한다. 다른 접근들이또한 사용될 수 있다.
도시된 바와 같이, 분류기(304)는 어플리케이션 종결 지점IP2에 대한 토큰을 소모한다. 따라서, IP2에 대한 토큰 세트는 토큰이 소모됨에 따라서 35 토큰들에서 34토큰들로 감소된다. 또한, 새로운 연결에 대한 초기 패킷은 어플리케이션 종결 지점 IP2로 라우팅된다.
(5A)에서, 초기 패킷은 분류기(304)에서 호스트(108(2))의 어플리케이션 종단점 IP2으로 전송된다. 이러한 전송 전에, 도중에, 후에, (5B)에서 분류기(304)는 지역 DAM 테이블 부분(2206)에서 이 접속에 대한 라우팅 경로를 봉한다. 분류기(304)는 또한 분류 및 복제 목적으로 DAM 테이블 (2206)로 이 세션에 대한 원자 엔트리(304)를 추가한다. (6)에서, 이 접속/세션에 대한 미래 패킷들은 도 30에서 지역 DAM 테이블 부분에 의해서 실현되는 바와 같이 포워더(302)의 지역 라우팅 경로 테이블을 사용하는 호스트(108(2))의 어플리케이션 종결 지점 IP2로 포워더(302)에서 전송된다.
도 31은 네트워크 로드 밸런싱 인프라스트럭쳐(106)에 대한 예시적인 높은 가용성 체계를 도시한다. 특히, 예시적인 장애 탐지(3104), 예시적인 장애 핸들링(3106), 및 예시적인 장애 회복(3108)이 도시된다. 이 예시적인 높은 가용성 체계는 다른 네트워크 로드 밸런싱 인프라스트럭쳐(106) 구성요소에 관해서 기재된다. 네트워크 밸런싱 인프라스트럭쳐(106) 구성요소는 포워더(302), 분류기(304), 요청 라우터(306), 세션 트랙커(308), 및 건강 및 로드 핸들러(314)를 포함한다.
3102(A)에서, 포워더(302)는 국소적인 장애를 겪는다. (3104(A))에서, 적어도 하나의 로드-밸런싱-인지 스위치는 장애를 탐지한다. 국소적인 장애(3102(A))를 다루기 위해서, 패킷은 지역-밸런싱-인지 스위치에 의해서 3106(A)에서 다른 포워더(들)로 다시 이끌려진다. 포워더(302)의 장애로부터 회복하기 위해서, 포워더(302)에서 국소적으로 저장되는 라우팅 경로들은 패킷들이 DAM 및 DAM 테이블과 같은 분배된 세션 트랙킹 관리자(manager) 및 테이블을 사용하면서 다시 이끌려지는 라우팅기에서 3108(A)에서 다시 만들어진다. 분배된 세션 트랙킹 관리자는 그러므로 하나 이상의 레벨들의 데이터 중복들을 포함할 수 있다.
3102(B)에서, 분류기(304)는 국소적인 장애를 겪는다. 3104(B)에서, 적어도 하나의 포워더는 장애를 탐지한다. 국소적인 장애(3102(B))를 다루기 위해서, 패킷들은 장애를 탐지하는 포워더에 의해서 3106(B)에서 다른 분류기(들)로 다시 이끌려진다. 분류기(304)의 장애로부터 회복하기 위해서 분류기(304)에서 국소적으로 저장되는 세션 정보는 패킷들이 DAM을 이용하면서 다시 이끌려지는 분류기(들)에서 3108(B)에서 다시 만들어진다. 이 세션 정보는 예를 들어, 기준선 TCP/IP 접속들보다 더 높은 레벨의 세션 정보일 수 있다. 또한, 그런 세션 정보는 분류기(304)와 같은 동일한 디바이스에 존재하는 세션 트랙킹 인프라스트럭쳐의 일부분으로 고려될 수 있다.
3102(C)에서, 요청 라우터(306)는 국소적인 장애를 겪는다. 3104(C)에서, 적어도 하나의 포워더 및/또는 로드-밸런싱-인지 스위치는 장애를 탐지한다. 국소적인 장애(3102(C))를 다루기 위해서, 패킷들은 포워더 및/또는 로드-밸런싱-인지스위치에 의해서 (3106(C))에서 다른 요청 라우터(들)로 다시 이끌려진다. 요청 라우터(306)가 지역 장애(3102(C))의 발생에 작용하는 개별적인 흐름(current) 논리적 요청들은 요청이 보조되는(serviced) 동안에 각각의 그런 개별적인 논리 요청이 복제되지 않는다면 상실될 수 있다. 요청 라우터(306)의 장애로부터 회복하기 위해서, 요청 라우터(306)에서 국소적으로 저장되는 세션 정보 및/또는 라우팅 경로들은 패킷들 (및 새로운 논리 요청들)이 다시 이끌려지는 요청 라우터(들)에서 (3108(C))에서 다시 만들어진다. 세션 정보 재작성은 DAM을 사용하면서 달성될 수 있다. 다시, 그런 세션 정보는 요청 라우터(306)와 같은 동일한 디바이스에 존재하는 세션 트랙킹 인프라스트럭쳐의 일부분으로 고려될 수 있다.
3102(D)에서, 세션 트랙커(308)는 국소적인 장애를 겪는다. 3104(D)에서, 적어도 하나의 포워더 및/또는 분류기는 장애를 탐지한다. 예를 들어, 세션 트랙커(308)는 분류기와 같은 동일한 디바이스에 존재한다면, 포워더 또는 다른 분류기는 장애를 탐지할 수 있다. 세션 트랙커(308)가 개별적인 디바이스에 존재하면, 분류기는 장애를 탐지할 수 있다. 지역 장애(3102(D))를 다루기 위해서, 하나 이상의 레벨들의 데이터 중복 및 다수의 디바이스들에 걸친 분배가 트랙킹된 세션 정보에 대한 3106(D)에서 설정된다. 중복 및 분배는 장애 (3102(D))이전에 설정되는 것을 주의해야 한다. 세션 트랙커(308)의 장애로부터 회복하기 위해서, DAM의 테이블로부터 세션 정보는 장애의 제 2 레벨을 다루기 위해서 (이미 분배되고 충분하게 복제되지 않는다면) 적어도 두 개의 디바이스들에 걸쳐서 3108D에서 재분배되고 재복제될 수 있다.
3102(E)에서, 건강 및 로드 핸들러(314)는 국소적인 장애를 겪는다. 3104(E)에서, 적어도 하나의 분류기 및/또는 요청 라우터는 장애를 탐지한다. 예를 들어, 건강 및 로드 핸들러(314)로부터 건강 및 로드 정보를 수신하는 구성요소는 건강 및 핸들러(314)가 비-반응성이 된다면, 특히 건강 및 로드 핸들러(314)가 질문하는(inquiring) 구성요소의 디바이스와 다른 디바이스에 존재한다면, 장애를 탐지할 수 있다. 지역 장애(3102(E))를 다루기 위해서, 캐쉬된 건강 및 로드 데이터 중복, 및 고유의 장애 핸들링이 건강 및 로드 정보를 위해서 3106(E)에서 사용된다.
예를 들어, 각각의 건강 및 로드 핸들러(314)는 다수의 호스트들(108)상의 건강 및 로드 테이블(1204)에서 정보를 복제하는 통합된 건강 및 로드 정보 캐쉬(1208)를 포함할 수 있다. 또한, 상기 건강 및 로드 핸들러(314)의 건강 및 로드 정보(1206)의 소모자들은 건강 및 로드 핸들러(314)의 장애가 본질적으로 용인할 수 있도록 건강 및 로드 핸들러(314)와 같은 동일한 디바이스 상에 위치될 수 있다. 유사하게, 건강 및 로드 정보(1206)의 개별적인 부분의 신뢰할만한 버전이 호스트(108)의 장애가 건강 및 로드 정보의 개별적인 부분들의 손실을 주도록 개별적인 호스트(108)상에 위치된다.
건강 및 로드 헨들러(314)의 장애로부터 회복하기 위해서, 건강 및 로드 정보를 소모하는 상기 네트워크 로드 밸런싱 구성요소는 각각의 그런 건강 및 로드 핸들러가 건강 및 로드 핸들러 정보의 통합된 캐쉬를 포함하기 때문에 상이한 건강 및 로드 핸들러를 질문한다. 또한, 건강 및 로드 핸들러(314)가 다시 이용할 수있을 때, 메시지 프로토콜(1500)은 건강 및 로드 정보의 통합된 캐쉬를 다시 만들기 위해서 3108(E)에서 사용될 수 있다. 이러한 예시적인 높은 가용성 체계를 사용하면서, 네트워크 로드 밸런싱 인프라스트럭쳐(106) 구성요소의 장애들이 클라이언트(102)로부터 그런 장애를 감추기 위해서 탐지되고, 다루어지며, 회복될 수 있다.
선택적 터널링 및/또는 어플리케이션 레벨 로드 밸런싱을 사용한 예시적인 접속 이동
이 섹션은 접속 이동처럼, 접속 조작이 네트워크 로드 밸런싱에서 어떻게 활용되는지 설명한다. 이 섹션은 기본적으로 도 32 내지 도 39를 참조하며 (도 3)의 접속 이동기(migrator)(310)에 의해서 제공되는 것과 같은 접속 이동 기능을 명확히 한다. 도 3 및 도 4를 참조하여 상기 기재된 바와 같이, 로드 밸런싱 인프라스트럭쳐(106)에서의 각각의 들어오는 접속은 그곳에서 제거된다. 이후에, 접속은 접속이 호스트(108)에서 제거되도록 호스트(108)로 이동된다. 접속 이동기(310)는 이 접속 이동을 수행할 수 있고 이동을 달성하기 위해서 호스트(108)에서 부분적으로 위치될 수 있다. 그런 접속 이동은 분류기(304)에 의해서 어플리케이션-레벨 로드 밸런싱과 관련하여 수행될 수 있고/있거나 터널러(tunneler)(312)를 통해서 터널링을 사용하면서 수행될 수 있다.
도 32는 접속 이동을 가진 어플리케이션-레벨 네트워크 로드 밸런싱에 대한 예시적인 접근을 도시한다. 어플리케이션-레벨, 즉, 계층-7, 로드 밸런싱은 접속을 다루는 어플리케이션에 대하여 로드 밸런싱 결정을 하는 것에 관련된다. 어플리케이션-레벨 로드 밸런싱을 수행하기 위해서, 로드 밸런싱 인프라스트럭쳐(106)는 보통 접속의 데이터 부분을 고려한다. 요청 라우팅이 사용되지 않는다면, 분류기(304)는 보통 연결의 초기 부분을 엿보고(peek) 접속 이동기(310)와 관련해서 접속을 선택된 호스트(108)로 이동시킨다.
일반적으로 TCP-기초 환경에서의 어플리케이션-레벨 로드 밸런싱에 대하여 분류기들(304)은 어디로 클라이언트의 TCP 연결을 전송할지 결정할 때 클라이언트의 TCP 데이터의 초기부분을 엿본다. 이렇게, 어플리케이션-레벨 논리는 클라이언트의 데이터를 조사하고 상기 데이터에 기초한 로드 밸런싱 결정을 한다. 예를 들어, 접속이 (암호화되지 않은) HTTP 연결이라면, 분류기(304)는 접속에서의 제 1 HTTP 요청의 HTTP 헤더에서 엿볼 수 있고, 헤더의 내용의 일부(즉, URL, 쿠키,등)에 기초하여 결정을 라우팅할 수 있다. 어플리케이션 레벨 로드 밸런싱, 접속 이동, 및 터널링이 다른 프로토콜들에 적용될 수 있지만, TCP/IP는 본 명세서에서의 예들에서 주로 사용된다.
도시된 바와 같이, 로드 밸런싱 인프라스트럭쳐(106)(명확하게 표시되지 않음)는 포워더(302), 분류기(304), 터널러(312), 및 접속 이동기(310) (및 아마도 즉 로드 밸런싱-인지 라우팅기/스위치(202)(LBA))를 포함한다. 포워더(302)는 가상 IP 어드레스에 대응하고 패킷들을 분류기(304)에 의해서 호스트 선택들에 따라서 호스트(108)로 전송한다. 도 32에서는 명확성을 위해서 자세하게 도시되지는 않지만, 호스트(108)는 접속 이동기(310) 기능 및 터널러(312) 기능을 또한 포함한다.
기재된 구현에서, 분류기(304) 및 호스트(108)에서의 TCP 프로토콜 소프트웨어와 함께, 포워더(302), 분류기(304), 및 (분류기(304)에서 및 호스트(108)상에서의) 접속 이동기(310)는 접속 이동을 제공하기 위해서 협력한다. 도 32에서 도시된 접속 이동은 분류기(304)에서 초기에 제거되는 클라이언트(102(1))로부터의 접속을 위한 것이다. 접속 이동 후에, 클라이언트(102(1))로부터의 접속은 호스트(108(1))에서 제거된다. 접속이 호스트(108(1))에서 제거될 경우에, 접속을 위한 패킷들은 (포워더(302) 및 호스트(108(1))에서) 터널러(312)를 사용해서 터널링될 수 있다.
(1)에서, 클라이언트(102(1))는 새로운 TCP 접속의 시작을 신호를 보내기 위해서 포워더(302)로 SYN 패킷을 보낸다. (2)에서, 포워더(302)는 이 패킷을 분류기(304)로 전송한다. (3)에서, 분류기(304)는 (실제 목적 호스트(108())는 선택되어야 하기 때문에 동일성(identity)이 아직 알려지지 않는) 호스트(108)를 대신해서 TCP 접속을 받아들인다. TCP 프로토콜 용어로, 분류기(304)는 SYN-ACK 패킷을 클라이언트(102(1))로 보낸다.
(4)에서, 클라이언트(102(1))는 데이터를 송신하기 시작한다. (초기 SYN 패킷은 또한 데이터를 포함할 수 있다.) 데이터는 분류기(304)에 의해서 처리되며, 상기 분류기(304)는 어플리케이션-특정 논리를 참조할 수 있다. 어플리케이션-특정 논리는 어떤 호스트(108)가 어떤 타입의 요청들 또는 접속들을 다룰 수 있는 지 또는 가장 잘 다룰 수 있는지에 관한 것이다. 그러므로, 분류기(304)는 클라이언트(102(1))로부터의 이 접속을 다루는데 더 잘 또는 가장 적합한 호스트(108)를 결정하기 위해서, 건강 및 로드 핸들러(314)로부터의 어플리케이션 건강 및 로드 정보, 및 선택적으로 세션 트랙커(308)로부터 어플리케이션 세션 정보뿐만 아니라, 상기 데이터를 사용한다. 이 예에서, 호스트(108(1))가 선택된다.
(5)에서, 분류기(304)는 TCP 접속 상태를 나타내는 “바이너리 블로브(binary blob)"을 호스트(108(1))로 보낸다. 이 접속 상태는 접속 이동기(310)에 의해서 분류기(304)상의 TCP 스택(stack)으로부터의 협력으로 모여진다. 바이너리 블로브는 분류기(304)에 의해서 인지되는 클라이언트(102(1))로부터의 데이터 및 TCP/IP-4-투플(tuple), 초기 일련번호등과 같은 TCP 파라미터들을 포함한다.
(6)에서, (도 32에서는 명확하게 도시되지 않는) 호스트(108(1))상의 접속 이동기(310) 구성요소는 이 접속을 호스트(108(1))상의 TCP 스택으로 "삽입한다(inject)". 이 접속 상태 삽입은 이 접속이 원래 호스트(108(1))에 의해서 받아들여지는 것이 호스트(108(1))상에서 나타나게 하면서, 호스트(108(1))상의 TCP 스택과 협력하여 수행된다. 클라이언트(102(1))는 접속 이동을 인지하지 못한다.
(7)에서, 분류기(304)는, 분류기(304)상의 TCP 스택과 협력하여, 이 접속을 위해서 지속되는 내부 상태를 조용하게 비운다. 분류기(304)는 호스트(108(1))를 이 접속의 패킷에 대한 목적지로써 지시하는 포워더(302)의 지역 라우팅 경로 테이블에서의 라우팅 경로를 추가할 수 있다.
(8)에서, 접속에 대한 이후 패킷은 포워더(302)에 의해서 호스트(108(1))로라우팅된다. 이 패킷들은 접속 이동을 사용하는 것 없이 분류되며 라우팅되는 접속들에 대한 패킷들로써 포워더(302)에 의해서 다루어질 수 있었다. 이런 이후 패킷들은 터널러(312)를 사용해서 포워더(302)에서 호스트(108(1))로 선택적으로 터널링될 수 있다. 터널러(312)에 의해서 사용된 어떤 파라미터(들)는 접속 이동 동안에 결정되고/되거나 이동되는 접속과 관련되기 때문에 터널러(312)는 또한 분류기(304)에서의 접속 이동기(310)에서 (점선을 사용해서) 도시된다. 터널러(312)를 위한 예시적인 구현들은 도 38 및 도 39를 참조하여 아래에 더 기재된다.
도 33은 제 1 디바이스에서 제 2 디바이스로의 접속을 이동시키기 위한 예시적인 방법을 도시하는 흐름도(3300)이다. 흐름도(3300)는 7개의 블록들(3302-3314)을 포함한다. 도 32 및 도 34 내지 도 37은 네트워크 로드 밸런싱 환경에서 접속 이동에 기본적으로 집중하지만, 본 명세서에서 설명되는 접속 이동은 각각이 접속 이동기(310)의 기능과 같은, 접속 이동 기능을 포함하는 두 개의 디바이스 사이에서 일반적으로 달성될 수 있다.
블록(3302)에서, 접속은 제 1 디바이스에서 받아들여진다. 예를 들어, 제 1 디바이스는 네트워크 스택의 프로토콜 스택 일부분의 하나 이상의 프로토콜들에 따라서 들어오는 접속을 제거할 수 있다. 블록(3304)에서, 데이터는 제 1 디바이스에서 접속을 위해서 수신된다. 예를 들어, 이 데이터는 접속을 요청하는 초기 패킷으로 또는 접속이 받아들여진 후에 수신된 하나 이상의 패킷들로 수신될 수 있다.
블록(3306)에서, 받아들여진 접속에 대한 접속 상태는 제 1 디바이스에서의프로토콜 스택으로부터 (또는 더 일반적으로는 네트워크 스택으로부터) 모여진다. 예를 들어, 프로토콜 스택의 하나 이상의 프로토콜들의 프로토콜 상태는 인지된 수신된 데이터에 따르며 모여진다. 블록(3308)에서, 접속 상태는 제 1 디바이스로부터 제 2 디바이스로 보내진다. 예를 들어, 접속 상태의 모여진 정보는 제 2 디바이스로의 신뢰성 높은 프로토콜을 사용해서 보내질 수 있다.
블록(3310)에서, 이동되는 접속에 대한 접속 상태는 제 2 디바이스에서 제 1 디바이스로부터 수신된다. 블록(3312)에서, 접속 상태는 제 2 디바이스의 프로토콜 스택으로 (더 일반적으로는 네트워크 스택으로) 삽입된다. 예를 들어, 접속은 프로토콜 스택 레벨을 넘어선 프로그램들이 접속이 이동된 접속이라는 것을 인지하지 못하도록 제 2 디바이스의 프로토콜 스택의 프로토콜들을 사용해서 원상태로 돌아가게될 수 있다(rehydrated). 보다 명확하게는, 프로토콜 상태는 프로토콜 스택으로 주입될 수 있다. 접속 상태의 모여진 데이터는 또한 제 2 디바이스에서 통합된다. 블록(3314)에서, 접속은 제 2 디바이스에서 계속된다. 예를 들어, 접속은 접속이 이전에 다른 장소에서 제거되지 않았던 것처럼 제 2 디바이스에서 계속될 수 있다.
도 34는 발신 디바이스(3400)의 관점에서 접속 이동에 대한 예시적인 접근을 도시한다. 발신 디바이스(3400)에서의 접속 이동은 접속 이동기(310)에 의해서, 적어도 부분적으로, 달성된다. 기재된 구현에서, 발신 디바이스(3400)는 네트워크 로드 밸런싱 인프라스트럭쳐(106)의 일부분인 디바이스이다. 예를 들어, 발신 디바이스(3400)는, 아마도 포워더(302), 요청 라우터(306) 등과 함께, 분류기(304)를구비한다.
도시된 바와 같이, 발신 디바이스(3400)는 네트워크 스택의 부분으로서 물리적 네트워크 인터페이스(PNI : Physical Network Interface)(3410), PNI 미니포트(3408), 프로토콜 하드웨어 인터페이스(3406), 프로토콜 스택(3404), 및 소켓(socket) 계층(3402)를 포함한다. 발신 디바이스(3400)는 또한 어플리케이션 레벨 및 접속 이동기(310)에서 분류기(304)처럼, 로드 밸런싱 기능(106)을 포함한다. 명확하게는, 접속 이동기(310)는 이동기 중간 드라이버(3414) 및 이동기 쐐기(shim)(3412)을 포함한다. 접속 이동기(310)는 발신 디바이스(3400)로부터 접속을 오프로드할 수 있다(offload).
기재된 구현에서, 물리적 네트워크 인터페이스(3410)는 네트워크 인터페이스 카드(NIC)(즉, 에더넷 NIC), 무선 인터페이스 등이 될 수 있다. 오직 하나의 물리적 네트워크 인터페이스(3410)가 도시되지만, 상기 디바이스는 실제로 다수의 그러한 물리적 네트워크 인터페이스(3410)를 가질 수 있다(즉, 발신 디바이스(3400)는 다중-근거될 수 있다(multi-homed)). 각 물리적 네트워크 인터페이스(3410)는 보통 하나 이상의 물리적 네트워크 어드레스에 대응된다.
PNI 미니포트(3408)는 물리적 네트워크 인터페이스(3410)의 특정 하드웨어 구현을 이해하고 인터페이스로 접속하는 소프트웨어 모듈이다. 프로토콜 하드웨어 인터페이스(3406)는 하나 이상의 개별적인 프로토콜들과 PNI 미니포트(3408)사이의 하나 이상의 개별적인 인터페이스들을 포함하는 계층이다.
프로토콜 스택(3404)은 각각 하나 이상의 개별적인 프로토콜로 이끌려지는하나 이상의 개별적인 모듈들을 포함한다. 그러한 프로토콜들의 예들은 도 36 및 도 37를 참조하여 아래에 더 기재된다. 일시적인 컨택스트(context)에서, 프로토콜 스택(3404)은 발신 디바이스(3400)에서 존재하는 각각의 접속을 위한 프로토콜 상태(3420)를 포함한다. 소켓 계층(3402)는 로드 밸런싱 기능(106)과 같은 프로그램과 프로토콜 스택(3404)사이에 놓인다. 소켓 계층(3402)는 로드 밸런싱 기능(106)과 프로토콜 스택(3404)사이에서 API들을 제공하고, 프로그램들이 다른 것들 사이에서 접속들을 위해서 기록하는 것이 가능하도록 한다.
이동기 중간 드라이버(3414), 즉 더 일반적으로는 이동기 드라이버(3414)는 프로토콜-하드웨어 인터페이스 계층(3406)에서 위치된다. 이동기 쐐기(3412)는 프로토콜 스택(3404)과 소켓 계층(3402)사이에서 투명하게 위치된다.
새로운 접속을 요청하는 새로운 패킷(도시되지 않음)은 발신 디바이스(3400)로 제출될 때, 패킷은 물리적 네트워크 인터페이스(3400)로부터, 프로토콜-하드웨어 인터페이스 계층(3406)를 통해서, PNI 미니포트(3408) 및 프로토콜 스택(3404)으로 위쪽으로 이끌려진다. 패킷이 프로토콜 스택(3404)의 하나 이상의 프로토콜들을 가로지름에 따라, 프로토콜 상태(3420)가 거기에서 생성된다. 또한, 초기 패킷의 결과로써 또는 요청을 엿보기 위해서 접속을 받아들이는 로드 밸런싱 기능(106)의 결과로써, 데이터(3416)는 발신 디바이스(3400)에서 도달한다.
작동 중에, 이동기 중간 드라이버(3414)는 데이터(3416)의 복제물을 접속 이동기(310)의 논리로 변환시킨다. 로드 밸런싱 기능(106)이 이동 접속 기능 호출을 할 때, 이동 기능 호출은 접속 상태 집합(3418)이 시작할 수 있도록 프로토콜스택(3404)의 최상위 계층로 보내진다. 프로토콜 상태(3420)는 프로토콜 스택(3404)의 하나 이상의 프로토콜들로부터 컴파일링된다. TCP/IP 구현에서, 프로토콜 상태(3420)는 (ⅰ) 목적지 및 소스 TCP 포트 및 IP 어드레스(즉, TCP/IP 4-터플), (ⅱ)TCP 윈도우 상태, (ⅲ) 초기 일련번호, (ⅳ) 타임아웃 정보, (ⅴ) IP 단편 ID, (ⅵ) 라우팅 정보, 및 (ⅶ) 기타 등을 포함할 수 있다.
접속 상태 집합(3418)은 또한 접속 이동기(310)로 전환되고 발신 디바이스(3400)로부터(즉, 로드 밸런싱 기능(106)에 의해서) 이미 인지되어있는 데이터(3416)를 모은다. 이 모여진 접속 상태(3418)는 프로토콜 상태(3420) 및 데이터(3416)(및 선택적으로 다른 접속 관련 정보)를 포함한다. 이어서 모여진 접속 상태(3418)는 발신 디바이스(3400)로부터 목적된 디바이스로 신뢰성있는 프로토콜을 사용하여 바이너리 블로브로써 보내진다. 바이너리 블로브(3422)은 접속이 또한 터널러(312)를 가지고 이후에 터널링된다면 흐름 식별자로 묶여질 수 있다. 터널링을 가진 흐름 식별자는 도 38 및 도 39를 특히 참조하여 이하에서 자세히 기재된다.
도 35는 목적지 디바이스(3500)의 원근법으로 접속 이동에 대한 예시적인 접근을 도시한다. 목적지 디바이스(3500)는 접속 이동기(310)를 포함한 다양한 도시된 계층들/모듈들에 관해서 발신 디바이스(3400)와 유사하다. 도시된 바와 같이, 어플리케이션 레벨에서의 적어도 하나의 어플리케이션(316)이 소켓 계층(3402)와 인터페이스로 접속된다. 목적지 디바이스(3500)는 그러므로 호스트(108)를 구비한다. 또한, 접속 이동기(310)는 발신 디바이스(3400)로부터 접속을 업로드하는 것이 가능하다.
기재된 구현에서, 어플리케이션(316)은 발신 디바이스(3400)에서 수신된 접속-초기화 패킷의 목적지이다. 발신 디바이스(3400)로부터, 목적지 디바이스(3500)는 바이너리 블로브(3422)을 수신한다. 바이너리 블로브(3422)은 목적지 디바이스(3500) 및 선택적으로 흐름 식별자로 이동되는 접속과 관련된 접속 상태를 포함한다. 이 접속 상태는 프로토콜 상태(3420) 및 인지된 데이터(3416)(및 아마도 다른 접속 관련 정보)를 포함한다.
동작 중에, 바이너리 블로브(3422)이 프로토콜-하드웨어 인터페이스 계층(3406)에 도달할 때, 이동기 중간 드라이버(3414)는 상기 바이너리 블로브를 접속 이동을 위한 blob으로 인지하고 그것을 변환한다. 접속 상태는 연결이 목적지 디바이스(3500)에서 원시적으로 제거되는 어플리케이션(316)에 나타나기 위해서 (3502)에서 삽입된다.
명확하게는, 삽입된 접속 상태(3502)의 프로토콜 상태(3420)는 프로토콜 스택(3404)으로 주입된다. 기재된 구현에서, 프로토콜 상태(3420)는 먼저 프로토콜 스택(3404)의 더 높은 레벨 프로토콜에서 그리고 그후에 더 낮은 레벨 프로토콜에서 주입된다. 프로토콜 상태(3420)가 프로토콜 스택(3404)으로 주입된 후에, 데이터(3416)는 어플리케이션(316)까지 표시될 수 있다. 이 데이터(3416)는 데이터가 새롭게 및 국소적으로 제거된 접속의 일부분인 것처럼 어플리케이션(316)으로 제공될 수 있다.
접속 상태 삽입(3502)이 완수된 후에, 발신 디바이스(3400)에서 수신된 패킷에 의해서 초기화된 접속은 성공적으로 목적지 디바이스(3500)로 이동된다. 접속에 대한 이후 패킷들은 발신 디바이스(3400)를 통과하지 않고, 즉 적어도 오직 단독 라우팅과 함께 및 거기에 인가된 어떤 어플리케이션 레벨 분석도 없이, 목적지 디바이스(3500)로 직접 전송될 수 있다. 선택적으로, 이 패킷들은 이동기 중간 드라이버(3414)가 가상 IP 어드레스가 되게 되어있는 소프트웨어-기초된 가상 NIC로써 효과적으로 동작하도록 터널링될 수 있다.
도 36은 연결 이동에 대한 오프로딩 절차(3600)에 대한 예시적인 접근을 도시한다. 이동 오프로딩 절차(3600)은 시작 디바이스(3400)에 의해서 연결 이동에 대한 추가적인 예시적인 상세를 도시한다. 도시된 바와 같이, 일반적인 프로토콜 스택(3404)은 TCP 스택(3404(T)), IP 스택(3404(ⅰ) ), 및 어드레스 분석(resolution) 프로토콜(ARP) 스택(3404(A))을 포함한다. 하지만, 다른 특정 프로토콜 스택(3404())이 선택적으로 사용될 수 있다.
예로써, 프로토콜-하드웨어 계층(3406)는 마이크로소프트 윈도우즈 운영 시스템(OS) 환경에서 네트워크 드라이버 인터페이스 명세(NDIS : Network Driver Interface Specification)에 기초한 계층로써 구현될 수 있다. 또한, 소켓 계층(3402)는 Microsoft®Windows®OS 환경에서 윈소크(Winsock™) 계층으로써 구현될 수 있다.
기재된 구현에서, 이동기 중간 드라이버(3414)는 ARP 스택(3404(A)) 및 PNI 미니포트(3408)로의 접합점에서 프로토콜 하드웨어 인터페이스(3406)를 포함한다.이동기 중간 드라이버(3414)는 이동 오프로딩 절차(3600)에서 오프로드 목적지로 작용한다. 오프로드 목적지는 이 예에서 도시된 바와 같이 프로토콜-하드웨어 인터페이스(3406)이다. (도 37에서처럼) 이동 업로딩 절차(3700)에서, 이동기 중간 드라이버(3414)는 업로드 변환기로써 작용한다.
보다 명확하게는, 이동기 중간 드라이버(3414)는 TCP 연결이 이동되는 각각의 물리적 네트워크 인터페이스(3410)가 되게 되어있다. 이동기 중간 드라이버(3414)는 패킷들과 상호작용하지 않고 네트워크 스택에서 윗방향으로 또는 아랫방향으로 패킷을 통과시키는 것에 의해서 통과(pass-through) 드라이버로써 동작한다. 하지만, 이동기 중간 드라이버(3414)는 (선택적으로 이후에 터널링되는 패킷들을 포함하는) 접속 이동과 관련된 패킷들과 상호작용한다.
이동기 중간 드라이버의 책임은 (ⅰ) 이동 오프로드 요청들의 접수; (ⅱ)접속 상태 정보를 만드는 인지된 데이터와 함께, 특정 프로토콜 스택(3404())로부터 컴파일링되면서 이동되는 TCP 접속과 관련된 프로토콜 상태 정보의 집합; 및 (ⅲ)모여진 접속 상태를 이동 업로딩 절차(3700)을 위한 목적된 디바이스(3500)로의 전송을 포함한다. 그러한 전송에 대한 신뢰할만한 배선 프로토콜은 (즉, 도 20과 관련해서 상기 기재된 바와 같이) 세션 정보 메시지(2008)를 보내고 수신하기 위해서 세션 트랙킹 구성요소들(2002 및 2010)에 의해서 사용되는 배선과 공유될 수 있다.
이동기 중간 드라이버(3414)(즉, 이동 업로딩 절차(3700)에서)의 다른 책임은 이동기 중간 드라이버가 다른 디바이스로부터 수신하는 이동된 접속들의 업로딩을 초기화하고 이동기 중간 드라이버가 업로딩되는 절차에 있는 동안에 이동 접속과 관련된 들어오는 패킷을 버퍼(buffer)하는 것이다. 접속을 업로드하기 위해서, 이동기 중간 드라이버(3414)는 업로드 요청을 이동기 쐐기(3412)으로 보낸다. 이동기 쐐기(3412)는 네트워크 스택의 프로토콜 스택(3404)에서의 접속을 실증하기 위해서 TCP 스택(3404(A))에서 프로토콜 스택(3404)으로 삽입 호출을 한다.
이동기 쐐기(shim)(3412)는 클라이언트 인터페이스를 TCP 스택(3404(T))으로 노출하고 제공자 인터페이스를 소켓 계층(3402)로 노출한다. 이동기 쐐기(3412)는 (ⅰ) 발신 디바이스(3400)상에서 접속 이동 오프로드 절차(3600) 및 이후에 목적된 디바이스(3500)상에서 이동 업로드 절차(3700)을 초기화하고 (ⅱ) 호스트 어플리케이션(316) 프로그램, 즉 로드 밸런싱 분류기(304) 프로그램, 및 소켓 계층(3402) 사이의 분류 절차를 중재하는 두 가지 역할을 한다. 이동기 쐐기(3412) 및 이동기 중간 드라이버(3414)는 도 36 및 도 37과 관련해서 아래에 더 기재된다.
예시적인 이동 오프로딩 절차(3600)에 대해서, TCP 접속의 이동은 분류기(304)는 하나, 둘 또는 그이상의 패킷들을 사용해서 들어오는 TCP 접속을 분류한 후에 수행된다. 이동 오프로딩 절차(3600)은 <1> 내지 <7> 지점에서 기재된다.
<1>에서, 초기화는 분류 작동 이전에 수행된다. 프로토콜 스택(3404)은 어떤 오프로딩 능력이, 즉 만약 있다면, 가능한지 결정하기 위해서 프로토콜 하드웨어 인터페이스 계층(3406)에 질문한다. 이동기 중간 드라이버(3414)는 접속 이동 오프로딩이 가능하다는 것을 표시하고 PNI 미니포트(3408)로 질문을 전파한다. 물리적 네트워크 인터페이스(3410)에 의해 TCP 침니(chimney) 오프로드 능력이 제공되면, PNI 미니포트(3408) 또한 그렇게 지시한다. TCP 침니 오프로드는 일정 TCP/IP 절차가 물리적 네트워크 인터페이스(3410)의 하드웨어로 오프로딩되는 것이 가능하도록 하고 프로토콜 상태(3420)의 일부 컴파일링을 포함한다. 따라서, 일부 컴파일링 및 집합 논리가 두 개의 오프로딩 체계 사이에서 공유된다.
<2>에서, TCP 접속이 분류되는 경우에, 분류기(304)는 선택된 호스트(108)로의 TCP 접속 이동을 초기화한다. 명확하게는, 목적된 디바이스(3500)를 표시하는 이동 명령은 이동기 쐐기(3412)으로 소켓 계층(3402)를 경유하여 넘겨진다.
<3>에서, 이동기 쐐기(3412)는 TCP 프로토콜 상태를 컴파일링하기 위해서 TCP 접속 이동을 초기화한다. 명확하게는, 이동기 쐐기(3412)는 TCP 초기화 이동 오프로드(API)(즉, 더 일반적으로는 이동 접속 기능 호출 또는 이동 접속 명령)를 야기한다. 이 루틴(routine)은 목적된 디바이스(3500)에 대한 접속을 회복하도록 사용되는 특정된 TCP 연결에 대한 관련된 상태를 컴파일한다. 컴파일된 프로토콜 상태(3420)는 TCP 스택(3404(T)), IP 스택(3404(ⅰ)), 및 ARP 스택(3404(A))을 포함하면서 중간 스택 계층들로부터의 상태를 포함한다.
<4>에서, 프로토콜 스택(3404)은 이동된 TCP 접속을 위해서 프로토콜 상태(3420)를 컴파일하는 경우에, 프로토콜 스택은 미니포트 상에서 초기화 이동 오프로드 API를 야기하며, 이 예에서, 상기 미니포트는 이동기 중간 드라이버(3414)이다. 하지만, 실제로, IP QoS와 같은, 이동기 중간 드라이버(3414)와 프로토콜 스택(3404) 사이에서 입력된 다른 중간 드라이버일 수 있다. 그렇다면, 그러한 중간(IM) 드라이버들은 이동된 접속에 대한 접속 상태 정보에 대한 그들의 상태를 컴파일링/집합에 의해서 이동에 참여할 수 있다. 중간 드라이버들은 초기화 이동 오프로드 호출을 네트워크 스택으로 전파하는 것을 계속하며, 상기 네트워크 스택은 마지막으로 이동기 중간 드라이버(3414)에서 이동 오프로드 핸들러의 실행을 초래된다. 이 지점에서, 이동기 중간 드라이버(3414)는 또한 인지된 데이터를 목적된 디바이스(3500)로의 TCP 접속의 전송에 대한 유지되는 접속 상태와 함께 인지된 데이터를 모은다.
<5>에서, 이동된 TCP 접속에 대한 접속 상태 정보를 저장/복제한 후에, 이동기 중간 드라이버(3414)는 네트워크 스택에게 초기화 이동 오프로드 완성 API를 야기하는 것에 의해서 이동은 마지막 단계에서라는 것을 통지한다. 상기 초기화 이동 오프로드 완성 API는, (존재한다면) 동일한 중간 드라이버들을 통해서, 네트워크 스택으로 역방향 경로를 따라가고, 마지막으로 프로토콜 스택(3404)을 따른다. 각각의 계층이 상기 호출을 처리함에 따라, 이동된 접속과 관련된 상태 정보가 방출된다. 상기 호출의 처리가 완수될 때까지, 각각의 계층은 이동이 초기화된 이후로 변해온 접속 상태의 일부분을 갱신하기 위해서 네트워크 스택으로 통지들을 갱신하는 것을 보낼 수 있다.
<6>에서, 초기화 이동 오프로드 완수 루틴이 TCP 스택(3404(T))에 도달할 때, TCP는 이동된 접속과 관련된 모든 상태를 불러내면서, 접속을 조용히(즉, 어떤 재설정 신호(reset)도 클라이언트(108)로 보내지지 않음) 닫고, 초기화 이동 오프로드 완수 호출을 이동기 쐐기(3412)으로 전파한다. 이 지점에서, 네트워크 스택은 이동된 TCP 접속의 어떤 잔여 지식도 없다.
<7>에서, 초기화 이동 오프로드 완수 호출이 이동기 중간 드라이버(3414)로 (접속 이동기(310)의 이동기 쐐기(3412) 일부분을 경유하여) 되돌아갈 때, 발신 디바이스(3400)에서 목적된 디바이스(3500)로의 TCP 접속의 이동은 접속 상태의 전송으로 개시한다. 접속 상태는 비동기적으로 및 신뢰성있게 전송될 수 있다.
이동이 초기화된 경우에, 발신 디바이스(3400)는 클라이언트(108)로부터의 이후 데이터가 목적지 디바이스(3500)로 전송되는 것을 확인하는 것을 또한 책임진다. 따라서, 접속이 성공적으로 목적지로 이동된 후라도, 발신기는 이후의 패킷들을 적절히 목적지로 라우팅하기 위해서 접속에 대한 상태의 일부량(즉, 라우팅 테이블 엔트리)을 유지한다. 접속이 제거될 때, 목적지는 어떠한 잔여 상태가 이동된 접속에 대해서 남아있는지 상관없이 발신기가 잔여 상태를 소거하는 것이 가능하도록 통지한다.
또한, 접속 이동의 비동기 특성의 결과로써, 발신 디바이스(3400)(또는 별개의 디바이스라면 그것에 의해서 지명된 포워더)에 의해서 전송된 이동 접속에 대한 데이터 패킷들은 목적된 디바이스(3500)가 이동된 접속 상태를 수신하기 전에 목적된 디바이스(3500)에 도달하는 것을 시작한다. 목적된 디바이스(3500)에서의 이동기 중간 드라이버(3414)는 관련된 이동된 접속이 목적된 디바이스(3500)상에서 설정될 때까지 상기 패킷들을 버퍼링하는 것을 책임진다.
도 37은 접속 이동에 대한 업로딩 절차(3700)에 대한 예시적인 접근을 도시한다. 이동 업로딩 절차(3700)은 목적된 디바이스(3500)에 의해서 접속 이동에 대한 추가적 예시적인 상세를 도시한다.
이동된 접속이 목적된 디바이스(3500)에 도달할 때, 이동된 접속은 처리를 위해서 이동기 중간 드라이버(3414)로 다시 놓여진다(relayed). 이동된 접속 상태를 혼합하고(amalgamate) 동화한(assimilate) 후에, 이동기 중간 드라이버(3414)는 이동기 쐐기(3412)과 관련하여, 이동된 접속을 어플리케이션(316)에 투명한 방식으로 지역 네트워크 스택으로 삽입한다. 예시적인 이동 업로딩 절차(3700)에 대해서, <1> 내지 <8> 지점에서의 TCP 접속의 이동이 기재된다.
<1>에서, 이동 오프로딩 절차(3600)을 참조하여 상기 기재된 바와 같이, 초기화는 어플리케이션 호스팅 동작들 이전에 수행된다. 명확하게는, 프로토콜 스택(3404)은, 만약 있다면, 어떤 오프로딩 기능들이 가능한지에 관하여 질문한다. 이동기 중간 드라이버(3414)는 접속 이동 업로딩이 가능하다는 것을 표시하기 위해서 TCP 접속 이동에서 지원 질문(support query)을 채우고 상기 질문을 가능한 TCP 침니 오프로드 기능들을 위해서 PNI 미니포트(3408)로도 전파한다.
<2>에서, 접속 이동 데이터가 목적지 디바이스(3500)에 도달할 때, 접속 이동 정보(즉, 묶여진 바이너리 블로브(3422))는 이동기 중간 드라이버(3414)로 전달된다. 이동기 중간 드라이버(3414)는 접속 상태를 다시 모으고, 접속 상태를 이동 기간에 도착한 관련된 데이터와 혼합하고, 네트워크 스택으로의 업로드를 준비한다. 이동된 접속을 업로딩하는 절차에서 도달하는 클라이언트(102)로부터의 일부 데이터는 이동기 중간 드라이버(3414)에 의해서 버퍼링될 수 있다. 성공적인 이동이 완수되면, 데이터는 어플리케이션(316)으로 전달될 것이다.
<3>에서, 지역 네트워크 스택으로의 이동된 접속의 업로드를 초기화하기 위해서, 이동기 중간 드라이버(3414)는 이동된 접속 요청이 도달했다고 이동기 쐐기(3412)에 통보한다. 이동기 중간 드라이버(3414)는 또한 접속 상태(즉 적어도 프로토콜 상태(3420))를 이동기 쐐기(3412)으로 전달한다.
<4>에서, 이동기 쐐기(3412)는 TCP 초기화 삽입 루틴(즉 더 일반적으로 주입 프로토콜 상태 루틴)을 야기하는 것 및 이동된 프로토콜 상태(3420)를 TCP 스택(3404(T))으로 제공하는 것에 의해서 이동된 접속의 업로드를 초기화한다. <5>에서, TCP/IP는 제공된 프로토콜 상태(3420)를 사용하면서 프로토콜 스택(3404)을 통해서 이동된 접속을 재생성한다. 이 프로토콜 상태(3420)는 하나 이상의 전송 상태(TCP), 경로 상태(IP), 주변 및 넥스트-홉(next-hop)상태 등을 포함할 수 있다.
<6>에서, 이동된 접속이 성공적으로 목적지 디바이스(3500)상에서 재설정되면, TCP는 새로운 접속이 설정되었다고 표시하기 위해서 이동기 쐐기(3412)의 클라이언트 부분으로 접속 이벤트(event)를 초기화한다. 장애에 대하여 다수의 가능한 원인들이 있지만, 일반적인 원인으로는 통신(corresponding) 청취자, 라우팅 장애등의 부족을 포함할 수 있다. 네트워크 스택이 이동된 접속을 재설정시킬 수 없는 경우에는, 어떠한 접속 이벤트도 표시되지 않고, 장애 상태가 초기화 삽입 완수 호출에서 명기된다. 접속 이동기(310)는 이동을 비우고 상기 접속을 금하기 위하여 클라이언트(102)로 재설정 통고를 보내는 것을 책임진다.
<7>에서, 이동기 쐐기(3412)는 새로운 접속이 설정되었다고 청취(listening) 어플리케이션(316)에 표시하기 위하여 소켓 계층(3402)에 접속 이벤트를 전파하는제공자로서 동작한다. 어플리케이션(316)이 접속을 받아들이면, 어플리케이션은 요청을 처리하고 정상적 판독 및 기록 소켓 동작들을 통해서 반응한다; 어플리케이션(316)은 접속이 이동되었음을 인지할 수 없다. 접속이 어플리케이션(316)에 의해서 받아들여지지 않으면, TCP는 접속을 제거하지만 재설정 통고를 클라이언트(102)로 보내지 않는다. 다시, 장애 상태는 초기화 삽입 완수 호출에서 명기되고, 접속 이동기(310)는 이동을 지우고 접속을 금하기 위해서 클라이언트(102)로 재설정 통고를 보내는 것을 책임진다.
어플리케이션(316) 및 분류기(304)는 동일한 디바이스 상에서 같이 위치될 때 특별한 상황이 발생한다: 이동기 쐐기(3412)는 그것들 사이에서 중재할 수 있다. 프로그램들의 두 부류들이 동일한 호스트(108)상에 존재할 때, 동일한 IP 어드레스(들) 및 포트(들)에 청취할 수 있다. 하지만, TCP는 보통 고유의 IP 어드레스 및 포트 당 하나의 청취자를 가진다. 따라서, 이동기 쐐기(3412)는 두 개의 소켓들을 TCP 계층에서 단독 청취자로 다중화(multiplex)하는 것에 의해서 두 개의 프로그램들이 동일한 IP 어드레스 및 포트를 청취하는 구조를 모호하게 할 수 있다.
그러한 경우에서, 접속 이벤트가 이동기 쐐기(3412)의 클라이언트 부분에 도달할 때, 제공자로써 이동기 쐐기(3412)는 어떤 청취 소켓이 소켓 계층(3402)에서 접속 통고를 전달할 것인지 결정한다. 통신 IP 어드레스 및 포트를 청취하는 하나의 소켓만 있다면, 상기 소켓은 접속 이벤트를 수신한다. 하나 이상의 청취하는 소켓이 있다면, 수신자는 접속 이벤트가 표시되는 컨텍스트에 의존한다. 접속 이벤트가 가상 IP 어드레스를 위한 브랜드(brand) 새로운 접속이라면, 접속 이벤트는 분류기(304)로 전달되고; 접속 이벤트가 전용 IP 어드레스(로드-밸런스화되지 않은 IP 에드레스) 또는 이동된 접속을 업로딩하는 결과에 대한 것이라면, 접속 이벤트는 목적 어플리케이션(316)으로 전달된다.
<8>에서, 이동된 접속의 삽입이 완수된 경우에, TCP는 제공된 초기화 삽입 완수 핸들러를 부르는 것에 의해서 이동기 쐐기(3412)에 통고한다. 상태 코드는 접속이 성공적으로 업로드되었는지 아닌지를 이동기 쐐기(3412)에 통고하기 위해서 제공된다. 이동된 접속의 업로드가 실패하면, 접속 이동기(310)는 이동을 비우는 것 및 접속이 재설정으로 보내는 것에 의해서 금해졌다고 클라이언트(102)에게 통고하는 것을 책임진다. 이동된 접속이 성공적으로 지역 네트워크 스택으로 삽입되면, 이동기 중간 드라이버(3414)는 수신된 패킷(들)을 프로토콜-하드웨어 인터페이스(3406)의 패킷 수신 경로를 통해서 보내는 것에 의해서 일부의 버퍼링된 데이터를 클라이언트(102)로부터 전달하는 것을 시작한다.
(업로딩이 실패했기 때문에, 이동된 접속이 이후에 정상적 수단을 통해서 닫혀지기 때문에) 이동된 접속이 제거될 때, 목적지 디바이스(3500)는 발신 디바이스(3400)에 통고한다. 발신 디바이스(3400)는 라우팅 테이블 엔트리들을 포함하면서, 더 효율적이고 신뢰할만하게 이동된 접속들에 대한 남아있는(lingering) 상태를 비우기 위해서 상기 통보들을 사용한다. 그러므로, 미래에 임의로 제거되어버리는 성공적으로 이동된 접속들을 설명하기 위해서, 이동기 쐐기(3412)는 접속들의 동작들을 모니터하고 관련된 소켓이 닫힐 때 이동기 중간 드라이버(3414)에통고한다.
도 38은 포워더(302)와 호스트(108)사이에서의 패킷 터널링에 대한 예시적인 접근을 도시한다. 캡슐화된 패킷들(3808)은 전달된 각각의 패킷에 대한 오버헤드를 초래하지 않고 포워더(302)에서 호스트(108)로 터널링될 수 있다. 이하에서 설명하는 바와 같이, 터널링은 포워더(302) 및 호스트(108) 각각의 터널러들(312(F) 및 312(H)) 각각의 캡슐화 맵핑 테이블(3806 및 3810) 및 흐름 식별자(3814)를 사용하면서 달성된다. 흐름 식별자(3814)는 캡슐화된 패킷들(3808)로 삽입된다.
도 32를 참조하여 상기 기재된 바와 같이, 접속 이동 이전에 도달한 접속에 대한 패킷들은 터널러(312)에 의한 터널링을 사용하면서 포워더(302)에 의해서 라우팅될 수 있다. (도 32의) (8)에서, 포워더(302)는 이후 패킷들을 "F"의 네트워크 어드레스를 가지는 포워더(302)로부터 “H1"의 네트워크 어드레스를 가지는 호스트(108(1))로 전송한다. 도 4를 참조하여 상기 기재된 바와 같이, 포워더(302)는 들어오는 패킷들을 호스트(108(1))로 라우팅하기 위해서, NAT, 반-NAT(half-NAT), 터널링등을 수행할 수 있다.
그런 들어오는 패킷들은 클라이언트(102(1))로부터 도달하는 패킷들에 대한 가상 IP("VIP") 어드레스의 목적지 IP 어드레스 및 “C1"의 소스 IP 어드레스를 포함한다. 호스트(108(1))로 라우팅되는 패킷들은 H1의 목적지 IP 어드레스 및 (반-NAT에 대한) C1 또는 (완전한-NAT에 대한) ”F"의 소스 어드레스를 가진다. 어드레스들의 재작성은 클라이언트(102(1)) 및 호스트(108(1))가 소스 및 목적지 어드레스에 대한 동일한 시각을 갖도록 하는 일부 프로토콜과 충돌할 수 있다.
또한, 적어도 완전한 NAT에 관하여, 호스트(108(1))는 클라이언트(102(1))의 어드레스를 알지 못하기 때문에 포워더(302)로 통하지 않는 호스트(108(1))에서 클라이언트(102(1))로의 반환 경로들은 금지된다. 호스트(108(1))로의 클라이언트(102(1))로의 트래픽이 특히 높고/높거나 반대 방향으로의 트래픽보다 훨씬 더 큰 경우(즉, 호스트(108(1))가 스트리밍(streaming) 매체를 클라이언트(102(1))로 제공할 때)에서 호스트(108(1))로부터 클라이언트(102(1))로의 직접적인 경로가 요구된다.
본 명세서에 설명되는 바와 같이 터널러(312)에 의한 터널링은 호스트(108)상에서의 어플리케이션(316) 및 클라이언트(102)에 대한 소스 및 목적지 어드레스 (및 포트)에 관하여 동일한 시각을 제공할 수 있다. 예로써 그리고 도 34 및 도 35를 참조하여, 포워더(302) 및 호스트(108)의 각각에서의 터널러(312)는 접속 이동기(310)의 이동기 중간 드라이버(3414)의 일부 또는 관련하여 동작한다.
도 38의 기재된 구현에서, 접속 이동기(310)는 흐름 식별자(3814)와 TCP/IP 4-터플(3804) 사이에서 캡슐화 맵핑(3812)을 제공한다. 접속 이동기(310)는 분류기(304)와 관련될 수 있고, 접속 이동기(310)(선택적으로 분류기(304)와 함께)는 포워더(302)와 동일한 디바이스 상에서 위치될 수 있다. 선택적으로, (분류기(304) 뿐만 아니라) 접속 이동기(310)는 포워더(302)로부터 상이한 디바이스 상에서 위치될 수 있다. 캡슐화 맵핑(3812)은 예를 들어, 분류기(304)에 관련되고/되거나 위치되는 터널러(312) 기능에 의해서 또는 와 함께 선택적으로 제공될 수 있다.
캡슐화 맵핑(3812)에서의 TCP/IP 4-터플(3804)로의 맵핑되는 것에 의해서, 흐름 식별자(3814)는 특정 접속에 대한 캡슐화된 패킷들(3808)의 흐름을 확인하도록 작용한다. TCP/IP 4-터플(3804)은 TCP/IP 프로토콜, 또는 유사하거나 비슷한 프로토콜에 따라서 특정 접속에 대한 소스 및 목적지에 대한 네트워크 어드레스 (및 포트들등)를 포함한다. 흐름 식별자(3814)는 기재된 구현에서 32 비트인데 이 32 비트는 인터넷 IPv4 프로토콜에 따라 설치되는 접속에 대하여 이용가능하기 때문이다. 하지만, 다른 길이(length)의 흐름 식별자(3814)가 인터넷 IPv6, UDP 등과 같은 다른 프로토콜에 대해서 특히, 선택적으로 사용될 수 있다.
흐름 식별자(3814)는 증가하는 접속 카운터와 같은, 적절한 체계를 사용해서 발생될 수 있다. 또한, TCP/IP 4-터플(3804)은 더 일반적으로는 소스/목적지 쌍이다. 개개의 소스/목적지 쌍의 각각의 소스 값 및 목적지 값은 특정 접속으로 전파하는 상기 패킷의 소스 및 목적지 각각에 대해서 네트워크 노드 식별자(즉, 네트워크 어드레스, 포트, 그것들의 조합등)를 포함할 수 있다.
접속 이동기(310)는 캡슐화 맵핑(3812)을 호스트(108)로 제공한다. 호스트(108)에서 터널러(312(H))는 캡슐화 맵핑 엔트리(3810(1))로써 캡슐화 맵핑 테이블(3810)에서 캡슐화 맵핑(3812)을 저장한다. 터널러(312(H))는 TCP/IP 4-터플(3804)에 통신하는 특정 접속으로 맵핑하고 확인하기 위해서 흐름 식별자(3814)를 사용할 수 있다. 캡슐화 맵핑(3812)은 선택적으로 접속 이동 동작에서 묶여진 바이너리 블로브(3422)의 일부분으로써 호스트(108)로 제공될 수 있다.
포워더(302)는 또한 캡슐화 맵핑 테이블(3806)을 가진 터널러(312(F)) 구성요소를 포함할 수 있다. 캡슐화 맵핑 테이블(3806)은 특정 접속에 대한 TCP/IP 4-터플(3804)을 흐름 식별자(3814)로 연결/맵핑하는 캡슐화 맵핑 엔트리(3806(1))를 저장한다. 터널러(312(F))는 또한 접속 이동기(310)(즉, 캡슐화 맵핑(3812)로써)로부터 캡슐화 맵핑 엔트리(3806(1))에 대한 맵핑 정보를 수신한다.
오직 하나의 캡슐화 맵핑 엔트리(3806(1) 및 3810(1))가 도시되지만, 캡슐화 맵핑 테이블(3806) 및 캡슐화 맵핑 테이블(3810)의 각각은 다수의 그러한 엔트리들을 가질 수 있다. 이러한 캡슐화 맵핑 테이블들(3806 및 3810)은 세션 트랙커(308)의 세션 정보에 대한 테이블들과 같은, 다른 정보들과 혼합될 수 있다.
캡슐화된 패킷(3808)의 (포워더(302)와 같은) 전달 디바이스 및 (호스트(108)와 같은) 수신 디바이스는 서로 사이에서 오직 터널링할 때, 관련된 캡슐화 맵핑 테이블은 아마도 동일한 캡슐화 맵핑 엔트리를 가진다. 그렇지 않으면, 캡슐화 맵핑 테이블(3806) 및 캡슐화 맵핑 테이블(3810)은 아마도 캡슐화 맵핑 엔트리(3806()) 및 캡슐화 맵핑 엔트리(3810()) 각각의 상이한 전체 세트를 가진다.
동작 중에, 특정 접속에 대한 들어오는 패킷(3802)은 포워더(302)에서 수신된다. 특정 접속은 TCP/IP 4-터플과 관련된다. 들어오는 패킷(3802)은 (클라이언트(102)의) 소스 IP 어드레스, 목적지 IP 어드레스(가상 IP), (클라이언트(102)의) 소스 TCP 포트, 및 목적지 TCP 포트를 가진 TCP/IP 4-터플(3804)을 포함한다.
터널러(312(F))는 호스트(108)로의 터널링을 위해서 들어오는 패킷(3802)을 받아들인다. TCP/IP 4-터플(3804)을 사용하면서, 터널러(312(F))는 캡슐화 맵핑엔트리(3806(1))를 위치하게 하기 위해서 캡슐화 맵핑 테이블(3806)에 접속한다. 흐름 식별자(3814)는 TCP/IP 4-터플(3804)로 연결되면서/맵핑되면서 캡슐화 맵핑 엔트리(3806(1))로부터 추출된다.
캡슐화 패킷(3808)을 생성하기 위해서, 터널러(312(F))는 흐름 식별자(3814)를 TCP/IP 4-터플 헤더의 소스 및 목적지 포트 부분으로 삽입한다. 인터넷 IPv4 구현예에 대하여, 이러한 두 개의 TCP 부분은 32비트의 총 스페이스를 제공한다. 또한, TCP/IP 4-터플의 소스 IP 어드레스 부분에 대해서, 터널러(312(F))는 포워더(302)의 IP 어드레스“F"를 삽입한다. TCP/IP 4-터플 헤더의 목적지 IP 어드레스 부분을 위해서, 터널러(312(F))는 호스트(108)의 IP 어드레스”H"를 삽입한다.
포워더(302)는 캡슐화된 패킷(3808)을 호스트(108)로 라우팅/전달하고, 호스트(108)는 포워더(302)로부터 캡슐화된 패킷(3808)을 수신한다. 호스트(108)에서의 터널러(312(H)) 구성요소는 캡슐화된 패킷(3808)이 탈-캡슐화(de-encapsulated) 터널링된 패킷임을 탐지한다.
흐름 식별자(3814)는 캡슐화된 패킷(3808)으로부터 추출되고 캡슐화 맵핑 테이블(3810)의 캡슐화 맵핑 엔트리(3810(1))에서 연결된 통신 TCP/IP 4-터플을 검색하도록 사용된다. TCP/IP 4-터플(3804)은 처음에 포워더(302)에서 들어오는 패킷(3802)에서 수신되는 것처럼 TCP/IP 4-터플(3804) 헤더를 재생성하기 위해서 터널러(312(H))에 의해서 사용된다.
특히, 포워더(302)의 IP 어드레스는 소스 IP 어드레스로 대체되고,호스트(108)의 IP 어드레스는 목적지 IP 어드레스로 대체된다. 또한, 흐름 식별자(3814)는 소스 TCP 포트 및 목적지 TCP 포트에 의해서 대체된다. 이어서 탈-캡슐화 패킷은 목적된 어플리케이션(316)으로의 호스트(108)의 네트워크 스택으로 표시된다.
보다 일반적으로, 소스/목적지 쌍의 일부분을 포함하면서, 반드시 주어진 패킷을 통신시키는데 사용되지는 않는 주어진 패킷에 대한, 패킷 헤더의 일부분은 흐름 식별자(3814)를 운반하는 데 사용될 수 있다. 호스트(108)에서 소스/목적지 쌍의 적어도 일부분을 미리 제공하는 것에 의해서, 흐름 식별자(3814)는 각각의 패킷 상에서 캡슐화 오버헤드를 초래하지 않고 패킷을 터널링하는(즉, 캡슐화하고/하거나 캡슐화에서 푸는) 것에 사용될 수 있다. 또한, 주어진 프로토콜에 관하여 전체크기(full-size)인 패킷들은 쪼개지지 않고 터널링될 수 있다.
도 39는 제 1 디바이스와 제 2 디바이스 사이에서 패킷 터널링에 대한 예시적인 방법을 도시하는 흐름도(3900)이다. 예를 들어, 제 1 디바이스 및 제 2 디바이스는 각각, 로드 밸런싱 인프라스트럭쳐(106) 및 호스트(108)의 클러스터의 각각, 발신 디바이스(3400) 및 목적지 디바이스(3500)에 대응할 수 있다. 그럼에도 불구하고, 터널링은 비-로드-밸런싱 구현들에서 사용될 수 있다.
흐름도(3900)는 12개의 블록들(3902-3924)을 포함한다. 흐름도(3900)의 동작들이 다른 환경들에서 및 다양한 소프트웨어 체계를 가지고 실행되지만, 도(1-3, 32, 34, 35, 및 38)는 상기 방법의 일정 측면 및 예들을 도시하기 위해서 특히 사용된다.
블록(3902)에서, TCP/IP 4-터플로의 흐름 식별자의 맵핑은 개시디바이스로부터 목적지 디바이스로 보내진다. 예를 들어, 발신 디바이스(3400)는 흐름 식별자(3814)를 TCP/IP 4-터플(3804)로 연결하는 캡슐화 맵핑(3812)을 보낼 수 있다. 블록(3914)에서, TCP/IP 4-터플로의 흐름 식별자의 맵핑은 발신 디바이스로부터 목적지 디바이스에서 수신된다. 예를 들어, 목적지 디바이스(3500)는 발신 디바이스(3400)로부터 TCP/IP 4-터플(3804)로 흐름 식별자(3814)를 연결하는 캡슐화 맵핑(3812)을 수신한다.
선택적으로, 목적지 디바이스(3500)는 다른 디바이스로부터의 캡슐화 맵핑(3812)으로부터 수신할 수 있다. 점선 화살표들(3926, 3928)로 표시되는 바와 같이, 블록들(3904 내지 3912) 및 블록들(3916 내지 3924)의 동작들은 각각, 블록들(3902, 3914)의 동작들에 뒤이어 일정한 순간에 발생될 수 있다.
블록(3904)에서, 들어오는 패킷은 클라이언트로부터 발신 디바이스에서 수신된다. 예를 들어, TCP/IP 4-터플(3804)을 갖는 헤더를 가진 들어오는 패킷(3802)은 클라이언트(102)로부터 발신 디바이스(3400)에서 수신될 수 있다. 블록(3906)에서, 흐름 식별자는 들어오는 패킷의 TCP/IP 4-터플을 사용하는 클라이언트의 패킷에 통신하는 접속을 위해서 검색된다. 예를 들어, 흐름 식별자(3814)는 캡슐화 맵핑 테이블(3806)의 캡슐화 맵핑 엔트리에서 맵핑되는 TCP/IP 4-터플(3804)을 사용하는 클라이언트(102)와의 접속을 위해서 검색될 수 있다.
블록(3908)에서, 들어오는 패킷의 소스 IP 및 목적지 IP는 각각 발신 디바이스의 개시 IP 어드레스 및 목적지 디바이스의 목적지 IP 어드레스로 대체된다. 예를 들어, 발신 디바이스(3400)는 들어오는 패킷(3802)의 헤더의 TCP/IP 4-터플 부분의 IP 어드레스 부분들을 발신 디바이스(3400) 및 목적지 디바이스(3500)의 IP 어드레스로 대체한다.
블록(3910)에서, 들어오는 패킷의 소스 포트 및 목적지 포트는 흐름 식별자로 대체된다. 예를 들어, 발신 디바이스(3400)는 들어오는 패킷(3802)의 헤더의 TCP/IP 4-터플(3804)의 소스 및 목적지 TCP 포트들을 흐름 식별자(3814)로 대체할 수 있다. 블록(3912)에서, 캡슐화된 패킷은 발신 디바이스로부터 목적지 디바이스로 보내진다. 예를 들어, 발신 디바이스(3400)는 캡슐화된 패킷(3808)을 목적지 디바이스(3500)로 보낼 수 있다.
블록(3916)에서, 캡슐화된 패킷은 발신 디바이스로부터 목적지 디바이스에서 수신된다. 예를 들어, 목적지 디바이스(3500)는 발신 디바이스(3400)로부터 캡슐화된 패킷(3808)을 수신할 수 있다. 블록(3918)에서, TCP/IP 4-터플은 흐름 식별자를 사용하는 클라이언트로부터 수신된 패킷에 대응하는 접속을 위하여 검색된다. 예를 들어, 목적지 디바이스(3500)는 흐름 식별자(3814)를 TCP/IP 4-터플(3804)로 맵핑하는 캡슐화 맵핑 엔트리(3810(1))에서 캡슐화 맵핑 테이블(3810)에 접근할 수 있다.
블록(3920)에서, 개시 IP 어드레스 및 목적지 IP 어드레스는 검색된 TCP/IP 4-터플을 사용하면서, 각각, 소스 IP 어드레스 및 목적지 IP 어드레스로 대체된다. 예를 들어, 목적지 디바이스(3500)는 캡슐화된 패킷(3808)에서의 발신 디바이스(3400) 및 목적지 디바이스(3500)의 IP 어드레스를 캡슐화 맵핑테이블(3810)에서 달성되는 것처럼 TCP/IP 4-터플(3804)로부터의 소스 IP 어드레스 및 목적지 IP 어드레스로 대체한다.
블록(3922)에서, 흐름 식별자는 검색된 TCP/IP 4-터플을 사용하는 들어오는 패킷의 소스 포트 및 목적지 포트로 대체된다. 예를 들어, 목적지 디바이스(3500)는 캡슐화 패킷(3808)내의 흐름 식별자(3814)를 TCP/IP 4-터플 (3804)로부터의 소스 TCP 포트 및 목적지 TCP 포트로 대체할 수 있다. 블록(3924)에서, 클라이언트의 패킷은 목표 디바이스에서 어플리케이션까지 표시된다. 예를 들어, 캡슐화된 패킷(3808)의 탈-캡슐화 버전, 즉 들어오는 패킷(3802)은 목적지 디바이스(3500)의 어플리케이션(316)에 표시된다.
도 1 내지 도 39의 동작들, 측면들, 특징들, 구성요소들은 다수의 블록들로 나뉘어진 도면들에서 도시된다. 하지만, 도 1 내지 도 39가 설명되고/되거나 도시되는 순서, 상호 접속, 레이아웃(layout)등이 한계로써 해석되도록 의도되지 않으며, 블록들 중 일부는 네트워크 로드 밸런싱을 위해서 하나 이상의 시스템, 방법들, 디바이스들, 절차, API들, 기구들들을 구현하는 방법에서 합쳐지고, 재배열되고, 확대되고, 생략될 수 있다. 또한, 본 명세서의 설명은 특정한 구현들 (및 도 40의 예시적인 동작 환경)에 대한 참조를 포함하지만, 도시되고/되거나 기재된 구현들은 임의의 적당한 하드웨어, 소프트웨어, 또는 그것들의 조합으로 구현될 수 있고 임의의 적당한 네트워크 구조(들), 전송/통신 프로토콜(들), 어플리케이션 프로그래밍 인터페이스(들)(API들), 클라이언트-서버 구조(들)등을 사용해서 구현될 수 있다.
컴퓨터 또는 다른 디바이스에 대한 예시적인 동작 환경
도 40은 본 명세서에서 기재된 네트워크 로드 밸런싱을 위해서 적어도 하나의 시스템, 디바이스, 기구, 구성요소, 배열, 프로토콜, 접근, 방법, 절차, 매체, API, 그것들의 조합을 (전체적으로 또는 부분적으로) 구현할 수 있는 예시적인 전산(또는 일반 디바이스) 동작 환경(4000)을 도시한다. 동작 환경(4000)은 이하에서 설명되는 컴퓨터 및 네트워크 구조에서 또는 독립형(stand-alone) 상황에서 사용될 수 있다.
예시적인 동작 환경(4000)은 환경에 대한 오직 하나의 예이며 (컴퓨터, 네트워크 노드, 오락(entertainment) 디바이스, 이동 디바이스, 범용 전자 디바이스등을 포함하는) 응용가능한 디바이스의 이용 또는 기능에 대한 한계를 제시하도록 의도되지 않는다. 동작 환경(4000)(또는 그것의 디바이스)은 도 40에 도시된 바와 같은 구성요소의 하나 또는 그것들의 조합에 대한 어떠한 의존성이나 요구도 가지지 않는 것으로 이해되어야 한다.
또한, 네트워크 로드 밸런싱은 (전산 시스템을 포함하는) 많은 다른 범용 또는 전용 디바이스 환경 또는 구성으로 구현될 수 있다. 사용에 적합할 수 있는 공지된 디바이스, 시스템, 및/또는 구조들의 예들은 개인용 컴퓨터, 서버 컴퓨터, 씬 클라이언트(thin client), 씩 클라이언트(thick client), PDA 또는 휴대 전화, 시계, 헨드헬드(hand-held) 또는 렙톱(laptop) 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기초 시스템, 셋-톱 박스, 프로그래밍가능한 소비자 전자디바이스, 비디오 게임 기계, 게임 콘솔, 이동가능한 또는 헨드헬드 게임 유닛, 네트워크 PC,미니 컴퓨터, 메인프레임 컴퓨터, 네트워크 노드, 상기 시스템 또는 디바이스 중 일부를 포함하는 분산 또는 멀티프로세싱 전산 환경, 그것들의 조합등을 포함하지만 그에 국한되지는 않는다.
네트워크 로드 밸런싱을 위한 구현들은 프로세서-실행가능한 명령들의 일반적인 컨택스트로 설명될 수 있다. 일반적으로, 프로세서-실행가능한 명령들은 실행하고/하거나 특정 업무를 가능하게 하고/하거나 특정 추상적인(abstract) 데이터 형태를 구현하는 루틴들, 프로그램들, 프로토콜들, 객체들, 인터페이스들, 구성요소들, 데이터 구조들등을 포함한다. 본 명세서에서의 일부 구현들에서 기재된 것처럼, 네트워크 로드 밸런싱은 업무들이 통신 연결 및/또는 네트워크를 통해서 접속되는 원격-연결된 처리 디바이스에 의해서 실행되는 분산된 처리 환경에서 실행될 수 있다. 분산 전산 환경에서 특히, 프로세서-실행가능한 명령들은 개별적인 저장 매체에 위치될 수 있고 다른 프로세서에 의해서 실행될 수 있으며/있거나 전달 매체를 통해서 전파될 수 있다.
예시적인 동작 환경(4000)은 컴퓨터(4002)의 형태로 범용 컴퓨팅 디바이스를 포함하며, 상기 디바이스는 전산/처리 기능들을 가진 일정 (즉, 전자) 디바이스를 구비할 수 있다. 컴퓨터(4002)의 구성요소는 하나 이상의 프로세서 또는 처리 유닛(4004), 시스템 메모리(4006), 및 시스템 메모리(4006)에 프로세서(4004)를 포함한 다양한 시스템 구성요소들을 결합하는 시스템 버스(4008)를 포함하지만, 그에 국한되지는 않는다.
프로세서(4004)는 프로세서가 형성되는 물질들 또는 사용되는 처리 쳬계에의해서 제한되지 않는다. 예를 들어, 프로세서(4004)는 반도체(들) 및/또는 트랜지스터들(즉, 전자 집적 회로(IC))로 구성될 수 있다. 그러한 컨텍스트에서, 프로세서-실행가능한 명령들은 전자적으로 실행가능한 명령들일 수 있다. 선택적으로, 프로세서(4004)의 또는 위한 체계들, 및 컴퓨터(4002)의 또는 위한 체계들은 양자 컴퓨팅, 광학 컴퓨팅, 기계적 컴퓨팅(즉 나노기술을 사용하는),등을 포함하지만, 그에 국한되지는 않는다.
시스템 버스(4008)는 메모리 버스 또는 메모리 제어기, 점대점(point-to-point) 접속, 스위칭 조직(fabric), 주변 디바이스 버스, 가속 그래픽 포트 및 다양한 버스 구조들의 일부를 사용하는 처리기 또는 로컬 버스를 포함하면서, 하나 이상의 유선 또는 무선 버스 구조의 많은 형태를 나타낸다. 예로써, 그런 구조는 산업 표준 구조(ISA :Industry Standard Architechture) 버스, 마이크로 채널 구조(MCA : Micro Channel Architecture) 버스, 향상된 ISA(EISA) 버스, 비디오 전자디바이스 표준 제휴(VESA :Video Electronics Standards Association) 로컬 버스, 메저닌(Mezzanine) 버스로 공지된 주변디바이스 구성요소 상호 접속(PCI : Peripheral Component Interconnect), 그것의 조합등을 포함할 수 있다.
컴퓨터(4002)는 보통 다양한 프로세서-접근가능한 매체를 포함한다. 그러한 매체는 컴퓨터(4002) 또는 다른 (즉, 전자) 디바이스에 의해서 접근가능한 사용가능한 매체이고, 휘발성 및 비휘발성 매체, 삭제 가능한 및 삭제 불가능한 매체, 및 저장 및 전송 매체를 모두 포함한다.
시스템 메모리(4006)는 RAM(4040)과 같은, 휘발성 메모리 및 ROM(4012)와 같은, 비휘발성 메모리의 형태로 프로세서-접근가능한 저장 매체를 포함한다. 기본 입력/출력 시스템(BIOS)(4014)은 시동시간에서처럼, 컴퓨터(4002)내부에서 구성요소들 사이에서 정보를 전송하는 것을 돕는 기본 루틴들을 포함하면서, 보통 ROM(4012)에서 저장된다. RAM(4010)은 처리 유닛(4004)에 의해서 즉시 접근가능하고/하거나 현재 작동되는 프로그램 모듈/명령들 및/또는 데이터를 보통 포함한다.
컴퓨터(4002)는 또한 다른 삭제가능/삭제불가능 및/또는 휘발성/비휘발성 저장 매체를 포함할 수 있다. 예로써, 도 40은 (보통) 삭제 불가능한, 비휘발성 자성 매체(분리되는 것으로 도시되지 않음)로부터 판독될 수 있고 기록할 수 있는 하드 디스크 드라이브 또는 디스크 드라이브 어레이(4016); (보통) 삭제가능한, 비휘발성 자성 디스크 드라이브(4020)(즉, “플로피 디스크”)로부터 판독되고 기록하기 위한 자성 디스크 드라이브(4018); 및 CD, DVD, 또는 다른 광학 매체와 같은 삭제가능한, 비휘발성 광학 디스크(4024)로부터 판독되고 기록하기 위한 광학 디스크 드라이브(4022)를 도시한다. 하드 디스크 드라이브(4016), 자성 디스크 드라이브(4018), 및 광학 디스크 드라이브(4022)는 하나 이상의 저장 매체 인터페이스(4026)에 의해서 시스템 버스(4008)에 각각 접속된다. 선택적으로, 하드 디스크 드라이브(4016), 자성 디스크 드라이브(4018), 및 광학 디스크 드라이브(4022)는 하나 이상의 다른 별개 또는 합쳐진 인터페이스(도시되지 않음)에 의해서 시스템 버스(4008)로 접속될 수 있다.
디스크 드라이브 및 관련된 프로세서 접근가능한 매체는 컴퓨터(4002)를 위한 데이터 구조들, 프로그램 모듈들, 및 다른 데이터와 같은 프로세서-실행가능한명령들의 비휘발성 저장을 제공한다. 예시적인 컴퓨터(4002)는 하드 디스크(4016), 삭제가능한 자성 디스크(4020), 및 삭제가능한 광학 디스크(4024)를 도시하지만, 다른 형태의 프로세서-접근가능한 매체가 자성 카세트 또는 다른 자성 저장디바이스, 플래쉬 메모리, 컴팩트 디스크(CD), 디지털 다용도 디스크(DVD) 또는 다른 광학 저장, RAM, ROM, 전자적으로 삭제가능한 프로그래밍가능한 판독 전용 메모리(EEPROM)등에 의해서 접근가능한 명령들을 저장할 수 있음을 이해해야 한다. 그러한 매체는 소위 전용 또는 강하게 배선된 IC 칩들을 또한 포함할 수 있다. 다른 말로 하자면, 일부의 프로세서-접근가능한 매체는 예시적인 동작 환경(4000)의 저장 매체를 구현하기 위해서 사용될 수 있다.
일부의 프로그램 모듈들(또는 명령들/코드의 다른 유닛 또는 세트)은 일반적인 예로써, 운영 시스템(4028), 하나 이상의 응용 프로그램(4030), 다른 프로그램 모듈들(4032), 및 프로그램 데이터(4034)를 포함하면서, 하드디스크(4016), 자기디스크(4020), 광학디스크(4024), ROM(4012), 및/또는 RAM(4040)상에 저장될 수 있다.
사용자는 키보드(4036) 및 포인팅 디바이스(4038)(즉, “마우스”)와 같은 입력 디바이스들을 통해서 명령들 및/또는 정보를 입력할 수 있다. 다른 입력 디바이스들(4040)(명백하게 도시되지는 않음)은 마이크로폰, 조이스틱, 게임패드, 위성접시, 직렬 포트, 스케너등을 포함할 수 있다. 이것들 및 다른 입력 디바이스들은 시스템 버스(4008)에 결합된 입력/출력 인터페이스(4042)를 경유하여 처리 유닛(4004)으로 접속된다. 하지만, 입력 디바이스들 및/또는 출력 디바이스들은병렬 포트, 게임 포트, 범용 직렬 버스(USB)포트, 적외선 포트, IEEE 1394("화이어와이어(Firewire)") 인터페이스, IEEE 802.11 무선 인터페이스, 블루투스(Bluetooth) 무선 인터페이스등과 같은 다른 인터페이스 및 버스 구조에 의하여 대신 접속될 수 있다.
모니터/스크린(4044) 또는 디스플레이 디바이스의 다른 형태가 또한 비디오 어뎁터(4046)와 같은, 인터페이스를 경유하여 시스템 버스(4008)로 접속될 수 있다. 비디오 어뎁터(4046)(또는 다른 구성요소)는 그래픽-집약 계산들을 처리하고 요구되는 디스플레이 요구사항을 다루기 위한 그래픽 카드일 수 있거나 포함할 수 있다. 보통, 그래픽 카드는 그래픽의 신속한 디스플레이 및 그래픽 동작들의 실현을 용이하게 하기 위해서 그래픽 처리 유닛(GPU), 비디오 램(VRAM)등을 포함한다. 모니터(4044)외에, 다른 출력 주변디바이스들은 입력/출력 인터페이스들(4042)을 경유하여 컴퓨터(4002)로 접속될 수 있는, 스피커들(도시되지는 않음) 및 프린터(4048)와 같은 구성요소를 포함할 수 있다.
컴퓨터(4002)는 원격 컴퓨팅 디바이스(4050)와 같은, 하나 이상의 원격 컴퓨터들에 대한 논리 접속을 이용하여 네트워크화된 환경에서 동작할 수 있다. 예로써, 원격 컴퓨팅 디바이스(4050)는 개인 컴퓨터, 휴대용 컴퓨터(즉, 랩톱 컴퓨터, 태블릿(tablet) 컴퓨터, PDA, 이동 무선국(mobile station)등), 팜 또는 포켓용 컴퓨터, 시계, 게임 디바이스, 서버, 라우팅기, 네트워크 컴퓨터, 피어 디바이스, 다른 네트워크 노드 또는 상기 열거된 것과 같은 다른 디바이스 형태가 될 수 있다. 하지만, 원격 컴퓨팅 디바이스(4050)는 컴퓨터(4002)와 관련해서 본 명세서에서 기재된 요소들 및 특징들의 많은 부분 또는 모든 것을 포함하는 휴대용 컴퓨터로써 도시된다.
컴퓨터(4002)와 원격 컴퓨터(4050)사이에서의 논리 접속은 근거리 네트워크(LAN)(4052) 및 광역 네트워크(WAN)(4052)로 서술된다. 그러한 네트워크 환경은 사무실, 기업 컴퓨터 네트워크, 인트라넷, 인터넷, 고정 및 이동 전화 네트워크, ad-hoc 및 인프라스트럭쳐 무선 네트워크, 다른 무선 네트워크, 게임 네트워크, 그것들의 조합등에서 일반적이다. 그러한 네트워크 및 통신 접속들은 전송 매체의 예들이다.
LAN 네트워크 환경에서 구현될 때, 컴퓨터(4002)는 보통 네트워크 인터페이스 또는 어뎁터(4056)를 경유하여 LAN(4052)로 접속된다. WAN 네트워크 환경에서 구현될 때, 컴퓨터(4002)는 WAN(4054)을 통해서 통신들을 설정하기 위한 보통 모뎀(4058) 또는 다른 수단을 포함한다. 컴퓨터(4002)에 내부적이거나 외부적일 수 있는, 모뎀(4058)은 입력/출력 인터페이스(4042) 또는 다른 적절한 체계(들)를 경유하여 시스템 버스(4008)로 접속될 수 있다. 도시된 네트워크 접속들은 예시적이며 컴퓨터(4002)와 (4050)사이의 통신 연결을 설정하기 위한 다른 수단들이 사용될 수 있다는 것이 이해되어야 한다.
또한, 서버들에 대하여 특정하게 설계된 다른 하드웨어가 사용될 수 있다. 예를 들어, SSL 가속 카드들은 SSL 전산화를 오프로드하기위해서 사용될 수 있다. 또한, 네트워크 로드 밸런싱 동작 환경에서 특히, 네트워크 인터페이스 또는 어뎁터(4056)(즉, 네트워크 인터페이스 카드들) 상에서 TCP 오프로드 하드웨어 및/또는패킷 분류기들이 서버 디바이스들에서 설치되고 사용될 수 있다.
네트워크화된 환경에서, 동작 환경(4000)과 함께 도시되는 바와 같이, 컴퓨터(4002), 또는 그것의 일부분과 관련하여 서술된 다른 명령들 또는 프로그램 모듈들이 전체적으로 또는 부분적으로 원격 매체 저장 디바이스내에서 저장될 수 있다. 예로써, 원격 응용 프로그램들(4060)은 원격 컴퓨터(4050)의 메모리 구성요소에 위치할 수 있지만 사용가능하거나 그렇지 않으면 컴퓨터(4002)를 경유하여 접근가능하다. 또한, 도시의 목적으로, 운영 체제(4028)와 같은 응용 프로그램(4030) 및 다른 프로세서-실행가능한 명령들이 불연속 블록으로 본 명세서에서 도시되지만, 그러한 프로그램들, 구성요소들 및 다른 명령들은 컴퓨팅 디바이스(4002)(및/또는 원격 컴퓨팅 디바이스(4050))의 다른 저장 구성요소에서 다른 시간에 거주하고 컴퓨터(4002)의 프로세서(들)(4004)(및/또는 원격 컴퓨팅 디바이스(4050))의 프로세서)에 의해서 실행된다.
시스템들, 매체, 디바이스들, 방법들, 절차들, 기구들, 기술들, 체계들, 접근들, 절차들, 배열들 및 다른 구현들이 구조적, 논리적, 알고리즘적, 및 기능적 특징들에 특정한 언어들 및/또는 도면들에 설명되지만, 첨부된 청구항들에서 규정된 발명은 기재된 특정 특징들 또는 도면들에 반드시 제한되는 것은 아님을 이해되해야 한다. 오히려, 특정 특징들 및 도면들이 청구된 발명을 구현하는 예시적인 형태로 공개된다.
따라서, 본 발명에 따라 네트워크 로드 밸런싱 및/또는 그와 연관된 옵션들이 개선된다.

Claims (124)

  1. 하나 이상의 처리기-억세스가능 미디어(processor-accessible media)에 있어서,
    실행되는 경우,
    복수의 호스트로부터 호스트 상태 정보를 수신하는 동작(action)과;
    상기 수신된 호스트 상태 정보에 응답하여 로드 밸런싱을 결정하는 동작을 포함하는 동작들을 수행하도록 시스템에 지시하는 처리기-실행가능 명령들(processor-accessible instructions)을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  2. 제 1 항에 있어서,
    실행되는 경우,
    클라이언트로부터 새로운 접속을 위한 요청을 수신하는 동작을 포함하는 추가의 동작을 수행하도록 상기 시스템에 지시하는 처리기-실행가능 명령들을 포함하고,
    상기 결정하는 동작은 상기 수신된 호스트 상태 정보에 응답하여 새로운 접속을 위한 수신지 타겟을 선택하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  3. 제 1 항에 있어서,
    상기 호스트 상태 정보는 복수의 호스트와 관계되는 건강(health) 및/또는 로드 정보를 포함하고, 상기 수신하는 동작은 상기 복수의 호스트로부터 건강 및/또는 로드 정보를 수신하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  4. 제 1 항에 있어서,
    상기 호스트 상태 정보는 어플리케이션 종속 호스트 상태 정보를 포함하고, 상기 결정하는 동작은 상기 수신된 어플리케이션 종속 호스트 상태 정보에 응답하여 로드 밸런싱을 결정하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  5. 제 1 항에 있어서,
    상기 수신하는 동작은:
    상기 복수의 호스트 중 하나 이상의 호스트로부터 상기 호스트 상태 정보를 직접 수신하는 동작; 및
    상기 복수의 호스트 중 하나 이상의 호스트로부터 상기 호스트 상태 정보를 간접적으로 수신하는 동작 중 적어도 하나를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  6. 시스템에 있어서,
    적어도 하나의 처리기; 및
    적어도 하나의 처리기에 의해 실행될 수 있는 처리기-실행가능 명령들을 포함하는 하나 이상의 미디어를 포함하고,
    상기 처리기-실행가능 명령들은,
    복수의 호스트로부터 호스트 상태 정보를 수신하는 동작, 및
    상기 수신된 호스트 상태 정보에 응답하여 로드 밸런싱을 결정하는 동작을 포함하는 동작들을 시스템이 수행하도록 적응되는 시스템.
  7. 제 6 항에 있어서,
    상기 수신하는 동작은, 적어도 하나의 프록시를 경유하여 상기 복수의 호스트로부터 상기 호스트 상태 정보를 수신하는 동작을 포함하는 시스템.
  8. 제 6 항에 있어서,
    호스트 상태 정보는 적어도 하나의 로드 밸런싱 지령(directive)을 포함하고, 상기 수신하는 단계는,
    상기 적어도 하나의 로드 밸런싱 지령을 푸쉬하기 위해 하나 이상의 어플리케이션 프로그래밍 인터페이스(API)를 야기하는 적어도 하나의 프록시를 경유하여 상기 복수의 호스트로부터 적어도 하나의 로드 밸런싱 지령을 수신하는 동작으로 포함하는 시스템.
  9. 제 6 항에 있어서,
    상기 시스템은 단일 디바이스 및 복수의 디바이스들 중 적어도 하나를 포함하는 시스템.
  10. 네트워크 로드 밸런싱하는 방법에 있어서,
    복수의 호스트로부터 호스트 상태 정보를 결정하는 단계,
    상기 복수의 호스트로부터의 상기 호스트 상태 정보를 로드 밸런싱 인프라스트럭쳐를 포함하는 적어도 하나의 디바이스로 전송하는 단계,
    적어도 하나의 상기 디바이스에서 상기 복수의 호스트로부터의 상기 호스트 상태 정보를 수신하는 단계,
    수신된 상기 호스트 상태 정보에 응답하여 로드 밸런싱 인프라스트럭쳐를 시용하여 로드 밸런싱을 결정하는 단계를 포함하는 방법.
  11. 하나 이상의 처리기-억세스가능 미디어에 있어서,
    실행되는 경우,
    복수의 호스트에서 호스트 상태 정보를 누적하는 동작; 및
    상기 복수의 호스트로부터 상기 누적된 호스트 상태 정보를 전송하는 동작을 포함하는 동작들을 시스템이 수행하도록 지시하는 처리기-실행가능 명령들을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  12. 제 11 항에 있어서,
    상기 호스트 상태 정보는 복수의 상기 호스트와 관계되는 건강 및/또는 로드 정보를 포함하고, 상기 전송하는 동작은 복수의 상기 호스트로부터의 상기 건강 및/또는 로드 정보를 전송하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  13. 제 11 항에 있어서,
    상기 누적하는 동작은 복수의 상기 호스트 상에서 실행중인 어플리케이션과 관련한 호스트 상태 정보를 누적하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  14. 제 11 항에 있어서,
    상기 전송하는 동작은, 복수의 상기 호스트로부터의 누적된 상기 호스트 상태 정보를 적어도 하나의 프록시로 전송하는 동작을 포함하는 하나 이상의 처리기-억세스 가능 미디어.
  15. 제 11 항에 있어서,
    상기 전송하는 동작은, 복수의 상기 호스트로부터 누적된 상기 호스트 상태 정보를 로드 밸런싱 기능성(functionality)으로 전송하는 동작을 포함하는 하나 이상의 처리기-억세스 가능 미디어.
  16. 시스템에 있어서,
    호스트에 대하여 호스트 상태 정보를 결정하도록 적응된 호스트 상태 결정자; 및
    상기 호스트 상태 정보를 로드 밸런싱 인프라스트럭쳐로 보급하도록 적응된 호스트 상태 정보 보급자를 포함하는 시스템.
  17. 제 16 항에 있어서,
    상기 시스템은 하나 이상의 어플리케이션을 더 포함하고, 상기 호스트 상태 정보 결정자는 하나 이상의 상기 어플리케이션과 관련한 호스트 상태 정보를 결정하는 시스템.
  18. 제 16 항에 있어서,
    상기 시스템은 상기 호스트가 상주하는 디바이스를 포함하는 시스템.
  19. 제 16 항에 있어서,
    상기 시스템은:
    또 다른 호스트에 대한 부가의 호스트 상태 정보를 결정하도록 적응되는 또 다른 호스트 상태 정보 결정자; 및
    상기 부가의 호스트 상태 정보를 상기 로드 밸런싱 인프라스트럭쳐에 보급하도록 적응되는 또 다른 호스트 상태 보급자를 더 포함하고,
    상기 시스템은, 호스트가 상주하는 제1 디바이스 및 다른 호스트가 상주하는 제2 디바이스를 포함하는 시스템.
  20. 하나 이상의 처리기-억세스가능 미디어에 있어서,
    적어도 하나의 호스트와 하나 이상의 로드 밸런싱 유닛 간에 메시지 프로토콜을 시스템이 구현하게하는 처리기-실행가능 명령들을 포함하고, 상기 메시지 프로토콜은 적어도 하나의 상기 호스트와 하나 이상의 상기 로드 밸런싱 유닛 간에 건강 및/또는 로드 정보를 통신하기 위해 사용되는, 하나 이상의 처리기-억세스가능 미디어.
  21. 제 20 항에 있어서,
    상기 처리기-실행가능 명령들 중 적어도 일부는 적어도 하나의 상기 호스트 상에서 실행되도록 적응되는 소프트웨어를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  22. 제 20 항에 있어서,
    상기 처리기-실행가능 명령들 중 적어도 일부는 하나 이상의 상기 로드 밸런싱 유닛 상에서 실행되도록 적응되는 소프트웨어를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  23. 제 20 항에 있어서,
    실행될 때, 적어도 하나의 메시지를 포함하는 상기 메시지 프로토콜을 상기 시스템이 구현하도록하는 처리기-실행가능 명령들을 포함하고, 적어도 하나의 상기 메시지는 적어도 하나의 호스트가 기능하는 하나 이상의 로드 밸런싱 유닛에 지시하는 심장박동 메시지를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  24. 제 23 항에 있어서,
    상기 심장박동 메시지의 포맷은 적어도 하나의 호스트에 대한 식별자, 건강 및/또는 로드 정보에 대한 에러 검사 데이터, 및 도메인 네임 시스템(DNS)명을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  25. 제 23 항에 있어서,
    상기 심장박동 메시지의 포맷은 청크(chunk) 수/발생 식별자(ID) 쌍의 포함을 허거하는 하나 이상의 처리기-억세스가능 미디어.
  26. 제 20 항에 있어서,
    실행될 때, 적어도 하나의 메시지를 포함하는 메시지 프로토콜을 시스템이 구현하게하는 처리기-실행가능 명령들을 포함하고, 상기 적어도 하나의 메시지는적어도 하나의 호스트가 셧다운(shutdown)될 예정인 하나 이상의 로드 밸런싱 유닛에 지시하는 굿바이 메시지를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  27. 제 26 항에 있어서,
    상기 굿바이 메시지의 포맷은 적어도 하나의 상기 호스트에 대한 식별자를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  28. 제 20 항에 있어서,
    실행될 때, 적어도 하나의 메시지를 포함하는 상기 메시지 프로토콜을 상기 시스템이 구현하게하는 처리기-실행가능 명령들을 포함하고, 상기 적어도 하나의 메시지는 적어도 하나의 호스트의 어플리케이션에 대한 건강 및/또는 로드 정보가 변경되었다는 것을 하나 이상의 로드 밸런싱 유닛에 지시하는 행 변경 메시지를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  29. 제 28 항에 있어서,
    상기 행 변경 메시지의 포맷은 적어도 하나의 호스트에 대한 식별자, 상기 어플리케이션에 대한 식별자, 상기 변경을 반영하는 연산, 및 상기 연산에 대한 데이터를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  30. 제 20 항에 있어서,
    실행될 때, 적어도 하나의 메시지를 포함하는 메시지 프로토콜을 시스템이 구현하게 하는 처리기-실행가능 명령들을 포함하고, 상기 적어도 하나의 메시지는적어도 하나의 로드 밸런싱 유닛으로부터 적어도 하나의 호스트로 전송되는 획득(get) 테이블 스냅샷 메시지를 포함하고, 상기 획득 테이블 스냅샷 메시지는 적어도 하나의 호스트의 현재 건강 및/또는 로드 정보의 스냅샷을 요청하는 하나 이상의 처리기-억세스가능 미디어.
  31. 제 30 항에 있어서,
    상기 획득 테이블 스냅샷 메시지의 포맷은 하나 이상의 로드 밸런싱 유닛의 요청 로드 밸런싱 유닛의 식별을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  32. 제 20 항에 있어서,
    실행될 때, 적어도 하나의 메시지를 포함하는 메시지 프로토콜을 시스템이 구현하게 하는 처리기-실행가능 명령들을 포함하고, 상기 적어도 하나의 메시지는 적어도 하나의 호스트로부터 하나 이상의 로드 밸런싱 유닛의 요청 로드 밸런싱 유닛으로 전송되는 전송 테이블 스냅샷 메시지를 포함하고, 상기 전송 테이블 스냅샷 메시지는 적어도 하나의 호스트의 현재 건강 및/또는 로드 정보의 스냅샷을 제공하는 하나 이상의 처리기-억세스가능 미디어.
  33. 제 32 항에 있어서,
    상기 전송 테이블 스냅샷 메시지의 포맷은 적어도 하나의 호스트의 현재 건강 및/또는 로드 정보의 스냅샷을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  34. 제 20 항에 있어서,
    실행될 때, 적어도 하나의 메시지를 포함하는 메시지 프로토콜을 시스템이 구현하게 하는 처리기-실행가능 명령들을 포함하고, 상기 적어도 하나의 메시지는 적어도 하나의 호스트로부터 하나 이상의 로드 밸런싱 유닛으로 송신되는 요구(postulate) 테이블 상태 메시지를 포함하고, 상기 요구 테이블 상태 메시지는 적어도 하나의 호스트에 의해 기대되는 현재 로드 밸런싱 상태 지령을 하나 이상의 로드 밸런싱 유닛에 존재하는 것으로 지시하는 로드 밸런싱 상태 지령을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  35. 제 34 항에 있어서,
    상기 요구 테이블 상태 메시지의 포맷은 현재 로드 밸런싱 상태 지령 및 적어도 하나의 호스트에 대한 식별자를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  36. 제 20 항에 있어서,
    실행될 때, 적어도 하나의 메시지를 포함하는 메시지 프로토콜을 시스템이구현하게 하는 처리기-실행가능 명령들을 포함하고, 상기 적어도 하나의 메시지는 하나 이상의 로드 밸런싱 유닛 중 하나의 로드 밸런싱 유닛으로부터 적어도 하나의 상기 호스트로 전송되는 요구 부정(wrong) 메시지를 포함하고, 상기 요구 부정 메시지는 요구 테이블 상태 메시지에 포함되어 있는 요구 로드 밸런싱 상태 지령과는 다른 실제 로드 밸런싱 상태 지령을 상기 로드 밸런싱 유닛이 갖는다는 것을 지시하는 하나 이상의 처리기-억세스가능 미디어.
  37. 시스템에 있어서,
    하나 이상의 어플리케이션을 호스팅하는 적어도 하나의 디바이스를 포함하고, 상기 적어도 하나의 디바이스는 복수의 엔트리를 포함하는 건강 및 로드 테이블을 포함하며, 상기 복수의 엔트리 각각은 하나 이상의 상기 어플리케이션과 관계가 있으며, 상기 복수의 엔트리 각각은:
    하나 이상의 어플리케이션 중 하나의 특정 어플리케이션에 대한 어플리케이션 식별자;
    상기 특정 어플리케이션의 적어도 하나의 상태를 특징짓는 정보; 및
    상기 특정 어플리케이션과 관계하는 적어도 하나의 로드 밸런싱 지령을 포함하는 시스템.
  38. 제 37 항에 있어서,
    상기 어플리케이션 식별자는 하나 이상의 상기 어플리케이션 중에서 특정 어플리케이션을 유일하게 식별하는 시스템.
  39. 제 37 항에 있어서,
    상기 어플리케이션 식별자는 적어도 하나의 가상 인터넷 프로토콜(IP) 어드레스 및 포트, 물리적 IP 어드레스 및 포트, 상기 특정 어플리케이션과 관련하는 프로토콜, 및 상기 프로토콜에 특정되는 정보를 포함하는 시스템.
  40. 제 37 항에 있어서,
    상기 어플리케이션 식별자는 적어도 하나의 범용(globally)의 단일 식별자(GUID)를 포함하는 시스템.
  41. 제 41 항에 있어서,
    특정 어플리케이션의 적어도 하나의 상태를 특징짓는 상기 정보는 어플리케이션 건강, 어플리케이션 로드, 및 어플리케이션 용량 중 적어도 하나를 포함하는 시스템.
  42. 제 41 항에 있어서,
    상기 어플리케이션 건강은, 상기 특정 어플리케이션의 상태가 건강한지, 장애가 있는지, 또는 알려지지 않았는지를 지시하고; 상기 어플리케이션 로드는 상기 특정 어플리케이션이 어떻게 점유되었는지를 지시하고; 상기 어플리케이션 용량은상기 특정 어플리케이션의 최대 용량을 지시하는 시스템.
  43. 제 42 항에 있어서,
    상기 특정 어플리케이션의 최대 용량은 상기 시스템에서 실행되고 있는 특정 어플리케이션의 용량에 따라 동일한 유형의 어플리케이션에 대한 총 용량에 상대적으로 표현되는 시스템.
  44. 제 42 항에 있어서,
    상기 특정 어플리케이션의 최대 용량은 단위없는 한정된 수로 표현되는 시스템.
  45. 제 37 항에 있어서,
    적어도 하나의 상기 로드 밸런싱 지령이 복수의 로드 밸런싱 유닛에 제공되어, 상기 특정 어플리케이션 및 동일 어플리케이션 타입의 다른 어플리케이션들에 관하여 네트워크 로드 밸런싱을 위해 가이드를 제공하는 시스템.
  46. 제 37 항에 있어서,
    적어도 하나의 상기 로드 밸런싱 지령은 활성, 드레이닝(draining) 및 비활성 중 적어도 하나을 포함하는 시스템.
  47. 제 37 항에 있어서,
    적어도 하나의 상기 로드 밸런싱 지령은 타겟 로드 밸런싱 상태 지령 및 현재 로드 밸런싱 상태 지령을 포함하는 시스템.
  48. 제 47 항에 있어서,
    상기 타겟 로드 밸런싱 상태 지령은, 적어도 하나의 디바이스에 위치되는 건강 및 로드 인프라스트럭쳐가 복수의 로드 밸런싱 유닛에 위치되는 건강 및 로드 인프라스트럭쳐를 동작되게하는 것을 지시하는 시스템.
  49. 제 47 항에 있어서,
    상기 현재 로드 밸런싱 상태 지령은, 적어도 하나의 디바이스에 위치되는 건강 및 로드 인프라스트럭쳐가 복수의 로드 밸런싱 유닛에 위치되는 건강 및 로드 인프라스트럭쳐를 현재 동작되게하는 것을 지시하는 시스템.
  50. 제 37 항에 있어서,
    상기 시스템은 복수의 디바이스를 더 포함하며, 상기 복수의 디바이스 중 각 디바이스가 각각의 건강 및 로드 테이블을 포함하는 시스템.
  51. 적어도 운영 체제의 일부를 포함하는 처리기-실행가능 명령들을 포함하는 하나 이상의 처리기-억세스가능 미디어에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    어플리케이션이 시작될 때를 결정하는 동작,
    상기 결정 동작에 응답하여, 시작되는 상기 어플리케이션을 네트워크 로드 밸런싱 인프라스트럭쳐와 통신할 수 있는 건강 및 로드 인프라스트럭쳐에 보고하는 동작,
    상기 어플리케이션이 정지한 때를 검출하는 동작, 및
    상기 검출 동작에 응답하여, 정지된 상기 어플리케이션을 상기 건강 및 로드 인프라스트럭쳐에 보고하는 동작을 포함하는 동작들을 시스템이 수행하도록 하는,하나 이상의 처리기-억세스가능 미디어.
  52. 제 51 항에 있어서,
    적어도 일부의 처리기-실행가능 명령들은 운영 체제의 적어도 일부의 제어 관리자를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  53. 적어도 운영 체제의 일부를 포함하는 처리기-실행가능 명령들을 포함하는 하나 이상의 처리기-억세스가능 미디어에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    어플리케이션이 상기 어플리케이션을 시작하는 결과로써 시작되는 것을 식별하는 동작,
    상기 식별 동작에 응답하여, 시작되는 상기 어플리케이션을 네트워크 로드밸런싱 인프라스트럭쳐와 통신할 수 있는 건강 및 로드 인프라스트럭쳐에 보고하는 동작,
    상기 어플리케이션이 상기 어플리케이션 정지 결과로써 정지되는 것을 결정정하는 동작, 및
    상기 결정 동작에 응답하여, 정지된 상기 어플리케이션을 상기 건강 및 로드 인프라스트럭쳐에 보고하는 동작을 포함하는 동작들을 시스템이 수행하도록 하는,하나 이상의 처리기-억세스가능 미디어.
  54. 제 53 항에 있어서,
    적어도 일부의 처리기-실행가능 명령들은 운영 체제의 적어도 일부의 제어 관리자를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  55. 시스템에 있어서,
    어플리케이션 지정 건강 및 로드 정보를 결정하도록 적응되는 건강 및 로드 인프라스트럭쳐, 및
    요청들을 복수의 어플리케이션에 할달할 때 상기 어플리케이션 지정 건강 및 로드 정보를 이용하도록 적응되는 로드 밸런싱 인프라스트럭쳐를 포함하는 시스템.
  56. 제 55 항에 있어서,
    상기 건강 및 로드 인프라스트럭쳐는 적어도 일부의 상기 어플리케이션 지정건강 및 로드 정보를 저장하는 건강 및 로드 테이블을 포함하는 시스템.
  57. 제 55 항에 있어서,
    상기 건강 및 로드 인프라스트럭쳐는 적어도 일부의 어플리케이션 지정 건강 및 로드 정보를 저장하는 건강 및 로드 테이블을 포함하고, 상기 건강 및 로드 테이블은 복수의 엔트리를 포함하며, 상기 복수의 엔트리 각각은 상기 복수의 어플리케이션 중 특정 어플리케이션과 관련되는 시스템.
  58. 제 55 항에 있어서,
    상기 건강 및 로드 인프라스트럭쳐는 적어도 일부의 어플리케이션 지정 건강 및 로드 정보를 저장하는 건강 및 로드 테이블을 포함하고, 상기 건강 및 로드 테이블은 복수의 엔트리를 포함하며, 상기 복수의 엔트리 각각은, 상기 엔트리가 관련되는 특정 어플리케이션에 대한 어플리케이션 식별자, 상기 특정 어플리케이션의 적어도 하나의 상태를 특징짓는 정보, 및 상기 특정 어플리케이션과 관련하는 적어도 하나의 로드 밸런싱 지령을 포함하는 시스템.
  59. 제 55 항에 있어서,
    상기 로드 밸런싱 인프라스트럭쳐는 상기 어플리케이션 지정 건강 및 로드 정보를 저장하는 통합 건강 및 로드 캐시를 포함하는 시스템.
  60. 제 55 항에 있어서,
    상기 로드 밸런싱 인프라스트럭쳐는, 복수의 호스트 상에서 실행 중인 복수의 어플리케이션에 대한 어플리케이션 지정 건강 및 로드 정보를 저장하는 통합 건강 및 로드 캐시를 포함하는 시스템.
  61. 제 55 항에 있어서,
    상기 어플리케이션 지정 건강 및 로드 정보는 어플리케이션 종단점 지정 건강 및 로드 정보를 포함하는 시스템.
  62. 제 55 항에 있어서,
    적어도 일부의 건강 및 로드 인프라스트럭쳐를 포함하는 프록시 디바이스를 더 포함하고, 상기 적어도 일부의 건강 및 로드 인프라스트럭쳐는 외부 모니터링 동작을 수행함으로써 상기 어플리케이션 지정 건강 및 로드 정보를 결정하도록 적응되는 시스템.
  63. 제 55 항에 있어서,
    상기 건강 및 로드 인프라스트럭쳐는 상기 어플리케이션 지정 건강 및 로드 정보를 저장하는 복수의 건강 및 로드 테이블을 포함하고, 상기 로드 밸런싱 인프라스트럭쳐는 상기 어플리케이션 지정 건강 및 로드 정보를 저장하는 복수의 통합 건강 및 로드 캐시를 포함하는 시스템.
  64. 제 63 항에 있어서,
    상기 시스템은, 상기 건강 및 로드 인프라스트럭쳐가 그위에 분배되어 있는 복수의 호스트 및 적어도 일부의 로드 밸런싱 인프라스트럭쳐에 대응하는 복수의 로드 밸런싱 유닛을 더 포함하고, 상기 복수의 호스트 중 각각의 호스트는 복수의 건강 및 로드 테이블 중 하나의 건강 및 로드 테이블을 가지며, 상기 복수의 로드 밸런싱 유닛 중 각 로드 밸런싱 유닛은 복수의 통합 건강 및 로드 캐시 중 하나의 통합 건강 및 로드 캐시를 갖는 시스템.
  65. 제 63 항에 있어서,
    상기 시스템은, 건강 및 로드 인프라스트럭쳐가 그 위에 분배되어 있는 복수의 호스트 및 적어도 일부의 로드 밸런싱 인프라스트럭쳐에 대응하는 복수의 로드 밸런싱 유닛을 더 포함하고, 상기 복수의 호스트 중 각각의 호스트는 복수의 건강 및 로드 테이블 중 하나의 건강 및 로드 테이블을 가지며, 상기 복수의 로드 밸런싱 유닛 중 각 로드 밸런싱 유닛은 복수의 통합 건강 및 로드 캐시 중 하나의 통합 건강 및 로드 캐시를 갖고, 상기 복수의 건강 및 로드 캐시 중 각각의 통합 건강 및 로드 캐시는 상기 복수의 건강 및 로드 테이블 중 각각의 건강 및 로드 테이블 상에 저장되어 있는 상기 어플리케이션 지정 건강 및 로드 정보를 포함하는 시스템.
  66. 제 63 항에 있어서,
    상기 시스템은, 건강 및 로드 인프라스트럭쳐가 그 위에 분배되어 있는 복수의 호스트 및 적어도 일부의 로드 밸런싱 인프라스트럭쳐에 대응하는 복수의 로드 밸런싱 유닛을 더 포함하고, 상기 복수의 호스트 중 각각의 호스트는 복수의 건강 및 로드 테이블 중 하나의 건강 및 로드 테이블을 가지며, 상기 복수의 로드 밸런싱 유닛 중 각 로드 밸런싱 유닛은 복수의 통합 건강 및 로드 캐시 중 하나의 통합 건강 및 로드 캐시를 갖고, 상기 복수의 어플리케이션은 상기 복수의 호스트 상에서 실행중인 시스템.
  67. 제 63 항에 있어서,
    상기 시스템은, 복수의 디바이스에 상주하는 복수의 호스트 및 적어도 하나의 디바이스로 구성되고 적어도 일부의 로드 밸런싱 인프라스트럭쳐에 대응하는 복수의 로드 밸런싱 유닛을 더 포함하고, 상기 건강 및 로드 인프라스트럭쳐는 상기 복수의 호스트상에 분배되고, 상기 복수의 호스트 중 각각의 호스트는 상기 복수의 건강 및 로드 테이블 중 하나의 건강 및 로드 테이블을 가지며, 상기 복수의 로드 밸런싱 유닛 중 각각의 로드 밸런싱 유닛은 복수의 통합 건강 및 로드 캐시 중 하나의 통합 건강 및 로드 캐시를 갖는 시스템.
  68. 제 63 항에 있어서,
    상기 시스템은, 복수의 디바이스에 상주하는 복수의 호스트 및 적어도 하나의 디바이스로 구성되고 적어도 일부의 로드 밸런싱 인프라스트럭쳐에 대응하는 복수의 로드 밸런싱 유닛을 더 포함하고, 상기 건강 및 로드 인프라스트럭쳐는 상기 복수의 호스트상에 분배되고, 상기 복수의 호스트 중 각각의 호스트는 상기 복수의 건강 및 로드 테이블 중 하나의 건강 및 로드 테이블을 가지며, 상기 복수의 로드 밸런싱 유닛 중 각각의 로드 밸런싱 유닛은 복수의 통합 건강 및 로드 캐시 중 하나의 통합 건강 및 로드 캐시를 갖고, 상기 건강 및 로드 인프라스트럭쳐는 상기 로드 밸런싱 인프라스트럭쳐의 원격부를 포함하는 시스템.
  69. 제 63 항에 있어서,
    상기 시스템은, 복수의 호스트 및 적어도 하나의 디바이스로 구성되고 적어도 일부의 로드 밸런싱 인프라스트럭쳐에 대응하는 복수의 로드 밸런싱 유닛을 더 포함하고, 상기 건강 및 로드 인프라스트럭쳐는 상기 복수의 호스트상에 분배되고, 상기 복수의 호스트 중 각각의 호스트는 상기 복수의 건강 및 로드 테이블 중 하나의 건강 및 로드 테이블을 가지며, 상기 복수의 로드 밸런싱 유닛 중 각각의 로드 밸런싱 유닛은 복수의 통합 건강 및 로드 캐시 중 하나의 통합 건강 및 로드 캐시를 갖고, 적어도 하나의 상기 디바이스는 복수의 상기 디바이스 중 하나인 시스템.
  70. 제 63 항에 있어서,
    상기 시스템은, 복수의 호스트 및 적어도 하나의 디바이스로 구성되고 적어도 일부의 로드 밸런싱 인프라스트럭쳐에 대응하는 복수의 로드 밸런싱 유닛을 더포함하고, 상기 건강 및 로드 인프라스트럭쳐는 상기 복수의 호스트상에 분배되고, 상기 복수의 호스트 중 각각의 호스트는 상기 복수의 건강 및 로드 테이블 중 하나의 건강 및 로드 테이블을 가지며, 상기 복수의 로드 밸런싱 유닛 중 각각의 로드 밸런싱 유닛은 복수의 통합 건강 및 로드 캐시 중 하나의 통합 건강 및 로드 캐시를 갖고, 적어도 하나의 상기 디바이스는 상기 복수의 디바이스 중의 하나가 아니고, 상기 건강 및 로드 인프라스트럭쳐는 상기 복수의 디바이스로부터 적어도 하나의 상기 디바이스로 상기 어플리케이션 지정 건강 및 로드 정보를 보급하도록 더 적응되는 시스템.
  71. 제 55 항에 있어서,
    상기 건강 및 로드 인프라스트럭쳐 및 상기 로드 밸런싱 인프라스트럭쳐는, 상기 어플리케이션 지정 건강 및 로드 정보에 관련하여 그들 사이에 통신하는 메시지 프로토콜을 사용할 수 있는 시스템.
  72. 제 71 항에 있어서,
    상기 메시지 프로토콜은, 심장박동 메시지 타입, 굳바이 메시지 타입, 행 변경 메시지 타입, 획득 테이블 스냅샷 메시지 타입, 전송 테이블 스냅샷 메시지 타입, 요구 테이블 상태 메시지 타입, 및 요구 부정 메시지 타입 중 하나 이상의 메시지 타입을 포함하는 시스템.
  73. 제 71 항에 있어서,
    상기 메시지 프로토콜은 그룹 회원(membership)을 사용하여 통신하는 능력을 포함하는 시스템.
  74. 제 55 항에 있어서,
    상기 로드 밸런싱 인프라스트럭쳐는, 실패 후에, 상기 건강 및 로드 인프라스트럭쳐를 경유하여 상기 어플리케이션 지정 건강 및 로드 정보를 그들간의 통신용 프로토콜을 이용하여 복원할 수 있는 시스템.
  75. 제 55 항에 있어서,
    상기 로드 밸런싱 인프라스트럭쳐는 요청들을 복수의 어플리케이션에 하나 이상의 할당 스킴(scheme)을 이용하여 할당하도록 더 적응되는 시스템.
  76. 제 75 항에 있어서,
    상기 하나 이상의 할당 스킴은 토큰 할당 스킴 및 백분율 할당 스킴 중 적어도 하나를 포함하는 시스템.
  77. 제 75 항에 있어서,
    상기 하나 이상의 할당 스킴은 타이머 만료 메카니즘을 사용하는 것을 필요로 하는 시스템.
  78. 제 75 항에 있어서,
    상기 하나 이상의 할당 스킴은 상기 로드 밸런싱 인프라스트럭쳐의 건강 및 로드 핸들러 구성요소에 의해 구현되는 시스템.
  79. 처리기-실행가능 명령들을 포함하는 하나 이상의 처리기-억세스가능 미디어에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    복수의 어플리케이션 종단점에 대하여 건강 및/또는 로드 정보를 분석하는 동작, 및
    상기 분석 동작에 응답하여, 상기 복수의 어플리케이션 종단점에 대한 토큰 할당을 확인하는 동작을 포함하는 동작들을 시스템이 수행하게 하는, 하나 이상의 처리기-억세스가능 미디어.
  80. 제 79 항에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    상기 복수의 어플리케이션 종단점을 식별하는 타겟 어플리케이션 종단점 할당 요청을 수신하는 동작, 및
    상기 토큰 할당을 포함하는 타겟 어플리케이션 종단점 할당 응답을 전송하는 동작을 포함하는 동작들을 상기 시스템이 더 수행하도록 하는, 하나 이상의처리기-억세스가능 미디어.
  81. 제 79 항에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    가상 인터넷 프로토몰(IP) 어드레스 및 포트, 프로토콜, 및 상기 프로토콜에 지정되는 정보 중 하나 이상을 포함하는 타겟 어플리케이션 종단점 할당 요청을 수신하는 동작, 및
    물리적 IP 어드레스 및 포트를 포함하는 타겟 어플리케이션 종단점 할당 응답을 전송하는 동작을 포함하는 동작들을 상기 시스템이 더 수행하도록 하는, 하나 이상의 처리기-억세스가능 미디어.
  82. 제 79 항에 있어서,
    상기 분석하는 동작은, 상기 복수의 어플리케이션 종단점에 대한 어플리케이션-종다점-지정 건강 및/또는 로드 정보를 분석하는 동작을 포함하는, 하나 이상의 처리기-억세스가능 미디어.
  83. 제 79 항에 있어서,
    상기 확인하는 동작은, 상기 복수의 어플리케이션 종단점들 간의 상대적 가용 능력을 기초로 상기 복수의 어플리케이션 종단점에 대하여 상기 토큰을 확인하는 동작을 포함하는, 하나 이상의 처리기-억세스가능 미디어.
  84. 제 79 항에 있어서,
    상기 토큰 할당은 상기 복수의 어플리케이션 종단점 중 제1 어플리케이션 종단점에 대응하는 토큰의 제1 개수와 상기 복수의 어플리케이션 종단점 중 제2 어플리케이션 종단점에 대응하는 토큰의 제2 개수를 포함하는, 하나 이상의 처리기-억세스가능 미디어.
  85. 제 79 항에 있어서,
    상기 토큰 할당은:
    상기 복수의 어플리케이션 종단점 중 제1 어플리케이션 종단점에 대응하는 토큰의 제1 개수;
    상기 복수의 어플리케이션 종단점 중 제2 어플리케이션 종단점에 대응하는 토큰의 제2 개수; 및
    시간 제한을 포함하고, 상기 시간 제한의 만료는 상기 제1 수의 토큰 및 상기 제2 수의 토큰의 임의의 잔여 토큰을 사용가능하지 못하게하는, 하나 이상의 처리기-억세스가능 미디어.
  86. 제 79 항에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    들어오는 접속 요청을 분류하기 위해 토큰 할당을 사용하는 동작을 상기 시스템이 더 수행하게 하는, 하나 이상의 처리기-억세스가능 미디어.
  87. 처리기-실행가능 명령들을 포함하는 하나 이상의 처리기-억세스가능 미디어에 있어서,
    상기 처리기 실행가능 명령들은, 실행될 때,
    어플리케이션을 기초로 건강 및 로드 정보를 결정하는 동작; 및
    상기 건강 및 로드 정보에 응답하여 복수의 어플리케이션 중에서 하나의 어플리케이션을 선택하는 동작을 포함하는 동작들을 시스템이 수행하게 하는, 하나 이상의 처리기-억세스가능 미디어.
  88. 제 87 항에 있어서,
    상기 결정하는 동작은, 상기 복수의 어플리케이션들 중 어플리케이션들이 시작하고 중지할 때 결정하는 동작을 포함하는, 하나 이상의 처리기-억세스가능 미디어.
  89. 제 87 항에 있어서,
    상기 결정하는 동작은, 복수의 어플리케이션 중 하나의 어플리케이션이 양호할 때 그리고 어플리케이션이 결함이 발생중이거나 발생했을 때를 결정하는 동작을 포함하는, 하나 이상의 처리기-억세스가능 미디어.
  90. 제 87 항에 있어서,
    상기 결정 동작은, 특정 어플리케이션 타입의 하나 이상의 다른 어플리케이션들의 로딩에 관련하여 특정 어플리케이션 타입의 주어진 어플리케이션의 로드를 결정하는 동작으로 포함하는, 하나 이상의 처리기-억세스가능 미디어.
  91. 제 87 항에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    어플리케이션을 기초로 건강 및 로드 정보의 결정에 관련하는 외부 입력을 수신하는 추가의 동작을 상기 시스템이 수행하도록 하고, 상기 결정 단계는 상기 외부 입력에 따라 어플리케이션을 기초로 상기 건강 및 로드 정보를 결정하는 동작을 포함하는, 하나 이상의 처리기-억세스가능 미디어.
  92. 제 87 항에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    적어도 하나의 호스트로부터 하나 이상의 로드 밸런싱 유닛으로 상기 건강 및 로드 정보를 보급하는 추가의 동작을 상기 시스템이 수행하도록 하는, 하나 이상의 처리기-억세스가능 미디어.
  93. 제 87 항에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    적어도 하나의 호스트로부터 하나 이상의 로드 밸런싱 유닛으로 메시지 프로토콜을 이용하여 상기 건강 및 로드 정보를 보급하는 추가의 동작을 상기 시스템이 수행하도록 하는, 하나 이상의 처리기-억세스가능 미디어.
  94. 제 87 항에 있어서,
    상기 처리기-실행가능 명령들은, 실행될 때,
    적어도 하나의 호스트로부터 하나 이상의 로드 밸런싱 유닛으로 회원 그룹핑을 이용하여 상기 건강 및 로드 정보를 보급하는 추가의 동작을 상기 시스템이 수행하도록 하는, 하나 이상의 처리기-억세스가능 미디어.
  95. 제 94 항에 있어서,
    상기 보급하는 동작은 적어도 하나의 호스트로부터 리더 호스트로 심장박동 메시지를 전송하는 동작을 포함하고, 상기 심장박동 메시지는, 회원 그룹핑에 어떠한 변경이 없을지라도, 상기 리더 호스트가 상기 심장박동 메시지를 상기 하나 이상의 로드 밸런싱 유닛으로 포워딩하도록하는 포워딩 지시를 포함하는, 하나 이상의 처리기-억세스가능 미디어.
  96. 제87항에 있어서,
    적어도 하나의 건강 및 로드 테이블로부터 하나 이상의 통합된 건강 및 로드 캐시로 상기 건강 및 로드 정보를 보급하는 동작을 상기 시스템이 더 수행하도록하는 처리기-수행가능 명령을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  97. 제87항에 있어서,
    복수의 호스트로부터 건강 및 로드 정보를 수신하고,
    상기 건강 및 로드 정보를 캐시하는 것을 포함하는 동작을
    상기 시스템이 더 수행하도록 하는 처리기-수행가능 명령을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  98. 제87항에 있어서,
    복수의 호스트로부터 건강 및 로드 정보를 수신하고,
    수신된 건강 및 로드 정보를 캐시하고,
    접속 개시를 요청하는 패킷을 수신하고,
    상기 접속 개시를 위해, 캐시된 건강 및 로드 정보를 참고하는 것을 포함하는 동작을 상기 시스템이 더 수행하도록 하는 처리기-수행가능 명령을 포함하며,
    상기 동작은, 참고에 응답하여 복수의 어플리케이션중 상기 어플리케이션을 선택하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  99. 제98항에 있어서,
    상기 접속 개시는 특정한 어플리케이션 타입에 해당하는 하나 이상의 처리기-억세스가능 미디어.
  100. 제87항에 있어서,
    상기 동작 선택은, 상기 건강 및 로드 정보에 응답하여 복수의 어플리케이션 종단점 중 어플리케이션 종단점을 선택하는 것을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  101. 제87항에 있어서,
    상기 동작은,
    상기 건강 및 로드 정보에 응답하여, 복수의 호스트에 분포되는 복수의 어플리케이션 종단점중 하나의 어플리케이션 종단점을 선택하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  102. 제87항에 있어서,
    (i) 하나 이상의 저장 미디어 및 (ii) 하나 이상의 전송 미디어중 적어도 하나를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  103. 제87항에 있어서,
    상기 처리기-수행가능 명령중 적어도 일부는, 로드 밸런싱 소프트웨어 프로그램의 적어도 일부를 포함하는 하나 이상의 처리기-억세스가능 미디어.
  104. 제87항에 있어서,
    상기 처리기-수행가능 명령중 적어도 일부는, 단일 디바이스를 포함하는 상기 시스템 상에서 실행되도록 구성되는 하나 이상의 처리기-억세스가능 미디어.
  105. 제87항에 있어서,
    상기 처리기-수행가능 명령중 적어도 일부는, 복수의 디바이스를 포함하는 상기 시스템 상에서 실행되도록 구성되는 하나 이상의 처리기-억세스가능 미디어.
  106. 제87항에 있어서,
    상기 동작은, 상기 건강 및 로드 정보에 응답하여, 복수의 어플리케이션 종단점간에 또는 복수의 어플리케이션 종단점중의 상대적 이용가능 용량에 대하여 상기 복수의 어플리케이션 종단점로부터 어플리케이션 종단점의 할당을 선택하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  107. 제106항에 있어서,
    상기 동작은, 토큰 할당 스킴을 이용하여 어플리케이션 종단점의 할당을 선택하는 동작을 더 포함하는 하나 이상의 처리기-억세스가능 미디어.
  108. 제106항에 있어서,
    상기 동작은, 퍼센트 할당 스킴을 이용하여 어플리케이션 종단점의 할당을선택하는 동작을 더 포함하는 하나 이상의 처리기-억세스가능 미디어.
  109. 제106항에 있어서,
    상기 복수의 어플리케이션 종단점은 단일 어플리케이션 타입의 어플리케이션에 대응하는 하나 이상의 처리기-억세스가능 미디어.
  110. 제87항에 있어서,
    상기 동작은, 입력되는 패킷에 의해 발생하는 네트워크 로드를 밸런싱하기 위해 상기 건강 및 로드 정보에 응답하여 복수의 어플리케이션중 상기 어플리케이션을 선택하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  111. 제87항에 있어서,
    상기 동작은, 입력되는 접속 요청에 의해 발생하는 네트워크 로드를 밸런싱하기 위해 상기 건강 및 로드 정보에 응답하여 복수의 어플리케이션중 상기 어플리케이션을 선택하는 동작을 포함하는 하나 이상의 처리기-억세스가능 미디어.
  112. 복수의 호스트에 대한 호스트 상태 정보를 결정하는 수단과,
    상기 호스트 상태 정보에 응답하여 로드 밸런싱을 결정하는 수단
    을 포함하는, 호스트 상태 정보를 이용한 네트워크 로드 밸런싱 장치.
  113. 제112항에 있어서,
    상기 결정 수단은, 상기 복수의 호스트에 위치하며, 로드 밸런싱 인프러스트럭쳐에 위치하고,
    상기 복수의 호스트로부터 상기 로드 밸런싱 인프러스트럭쳐로 상기 호스트 상태 정보를 전달하는 수단을 더 포함하는, 호스트 상태 정보를 이용한 네트워크 로드 밸런싱 장치.
  114. 제112항에 있어서,
    상기 결정 수단은, 상기 복수의 호스트에 대한 특정 어플리케이션 호스트 상태 정보를 결정하는 수단과,
    상기 특정 어플리케이션 호스트 상태 정보에 응답하여 로드 밸런싱 결정 수단을 포함하는, 호스트 상태 정보를 이용한 네트워크 로드 밸런싱 장치.
  115. 제112항에 있어서,
    적어도 하나의 시스템을 포함하는 호스트 상태 정보를 이용한 네트워크 로드 밸런싱 장치.
  116. 제112항에 있어서,
    하나 이상의 처리기-억세스가능 미디어를 포함하는 호스트 상태 정보를 이용한 네트워크 로드 밸런싱 장치.
  117. 복수의 호스트에 호스트 상태 정보를 축적하는 수단과,
    상기 복수의 호스트로부터 축적된 호스트 상태 정보를 전송하는 송 수단
    을 포함하는 장치.
  118. 제117항에 있어서,
    상기 호스트 상태 정보는, 상기 복수의 호스트와 관련된 건강 및/또는 로드 정보를 포함하고,
    상기 전송 수단은, 상기 복수의 호스트로부터 상기 건강 및/또는 로드 정보를 전송하는 수단을 포함하는 장치.
  119. 제117항에 있어서,
    상기 축적 수단은, 상기 복수의 호스트 상에서 실행되는 어플리케이션에 관한 호스트 상태 정보를 축적하는 수단을 포함하는 장치.
  120. 제117항에 있어서,
    상기 전송 수단은, 상기 축적된 호스트 상태 정보를 상기 복수의 호스트로부터 로드 밸런싱 기능부로 전송하는 장치.
  121. 하나의 어플리케이션 마다 건강 및 로드 정보를 결정하는 수단과,
    상기 건강 및 로드 정보에 응답하여 복수의 어플리케이션중 하나의 어플리케이션을 선택하는 수단
    을 포함하는 장치.
  122. 제121항에 있어서,
    상기 결정 수단은, 상기 복수의 어플리케이션중 하나의 어플리케이션이 양호하고 결함 발생중이거나 결함이 발생하였는지를 결정하는 수단을 포함하는 장치.
  123. 제121항에 있어서,
    상기 결정 수단은, 특정 애플리케이션 타입의 하나 이상의 다른 애플리케이션의 로딩에 대하여 상기 특정 애플리케이션 타입의 주어진 애플리케이션의 로드를 결정하는 수단을 포함하는 장치.
  124. 제121항에 있어서,
    상기 선택 수단은, 상기 건강 및 로드 정보에 응답하여 복수의 애플리케이션 종단점중 하나의 애플리케이션 종단점을 선택하는 수단을 포함하는 장치.
KR1020040049533A 2003-06-30 2004-06-29 호스트 상태 정보를 이용한 네트워크 로드 밸런싱 KR101109218B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/610,519 US7636917B2 (en) 2003-06-30 2003-06-30 Network load balancing with host status information
US10/610,519 2003-06-30

Publications (2)

Publication Number Publication Date
KR20050002617A true KR20050002617A (ko) 2005-01-07
KR101109218B1 KR101109218B1 (ko) 2012-01-30

Family

ID=33435411

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040049533A KR101109218B1 (ko) 2003-06-30 2004-06-29 호스트 상태 정보를 이용한 네트워크 로드 밸런싱

Country Status (22)

Country Link
US (1) US7636917B2 (ko)
EP (1) EP1494421B1 (ko)
JP (1) JP4942921B2 (ko)
KR (1) KR101109218B1 (ko)
CN (1) CN1578320B (ko)
AT (1) ATE407506T1 (ko)
AU (1) AU2004202389B2 (ko)
BR (1) BRPI0402591B1 (ko)
CA (1) CA2470300A1 (ko)
CO (1) CO5590203A1 (ko)
DE (1) DE602004016255D1 (ko)
EG (1) EG23984A (ko)
HK (1) HK1073025A1 (ko)
IL (1) IL162164A0 (ko)
MX (1) MXPA04006411A (ko)
MY (1) MY142244A (ko)
NO (1) NO331320B1 (ko)
NZ (1) NZ533148A (ko)
RU (1) RU2380746C2 (ko)
SG (1) SG117505A1 (ko)
TW (1) TWI356311B (ko)
ZA (1) ZA200404375B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190068803A (ko) * 2017-12-11 2019-06-19 엔에이치엔 주식회사 서버 모니터링 방법 및 이를 이용한 서버 모니터링 시스템

Families Citing this family (373)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343413B2 (en) 2000-03-21 2008-03-11 F5 Networks, Inc. Method and system for optimizing a network by independently scaling control segments and data flow
US8380854B2 (en) 2000-03-21 2013-02-19 F5 Networks, Inc. Simplified method for processing multiple connections from the same client
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7890543B2 (en) 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7730175B1 (en) 2003-05-12 2010-06-01 Sourcefire, Inc. Systems and methods for identifying the services of a network
US20040243852A1 (en) 2003-05-28 2004-12-02 Rosenstein Adam H. Method, system and software for state signing of internet resources
WO2004107131A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Policy based network address translation
US9525566B2 (en) * 2003-07-31 2016-12-20 Cloudsoft Corporation Limited Self-managed mediated information flow
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US8572249B2 (en) * 2003-12-10 2013-10-29 Aventail Llc Network appliance for balancing load and platform services
US7774834B1 (en) 2004-02-18 2010-08-10 Citrix Systems, Inc. Rule generalization for web application entry point modeling
US7890996B1 (en) 2004-02-18 2011-02-15 Teros, Inc. Using statistical analysis to generate exception rules that allow legitimate messages to pass through application proxies and gateways
US7778422B2 (en) 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
JP2005293370A (ja) * 2004-04-01 2005-10-20 Hitachi Ltd 記憶制御システム
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US20060209695A1 (en) * 2005-03-15 2006-09-21 Archer Shafford R Jr Load balancing in a distributed telecommunications platform
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
EP2264956B1 (en) 2004-07-23 2017-06-14 Citrix Systems, Inc. Method for securing remote access to private networks
US9219579B2 (en) 2004-07-23 2015-12-22 Citrix Systems, Inc. Systems and methods for client-side application-aware prioritization of network communications
US7539681B2 (en) 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US7496962B2 (en) * 2004-07-29 2009-02-24 Sourcefire, Inc. Intrusion detection strategies for hypertext transport protocol
US20060069761A1 (en) * 2004-09-14 2006-03-30 Dell Products L.P. System and method for load balancing virtual machines in a computer network
US20060072482A1 (en) * 2004-10-06 2006-04-06 Nokia Corporation Service routing
US7734785B2 (en) * 2004-12-09 2010-06-08 International Business Machines Corporation On demand message based financial network integration middleware
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US8040903B2 (en) * 2005-02-01 2011-10-18 Hewlett-Packard Development Company, L.P. Automated configuration of point-to-point load balancing between teamed network resources of peer devices
JP4621044B2 (ja) * 2005-03-15 2011-01-26 富士通株式会社 負荷分散装置および負荷分散方法
JP4848660B2 (ja) * 2005-03-30 2011-12-28 ソニー株式会社 情報処理分散システム,情報処理装置および情報処理分散方法
MX2007012209A (es) * 2005-04-04 2007-12-06 Ericsson Telefon Ab L M Un metodo y aparato para distribuir carga en servidores de aplicacion.
US7797147B2 (en) 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US8489728B2 (en) 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
JP2006323526A (ja) * 2005-05-17 2006-11-30 Fujitsu Ltd クラスタ管理プログラム、該プログラムを記録した記録媒体、クラスタ管理方法、ノード、およびクラスタ
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US8135814B2 (en) * 2005-06-29 2012-03-13 At&T Intellectual Property I, L.P. Network capacity management system
US20070041327A1 (en) * 2005-08-16 2007-02-22 Cisco Technology, Inc. Multicast heartbeat signaling
US7882209B1 (en) * 2005-09-30 2011-02-01 At&T Intellectual Property Ii, L.P. Tiered and modular approach to operational support systems
US7926071B2 (en) * 2005-10-20 2011-04-12 Microsoft Corporation Load balancing interfaces
US8234378B2 (en) * 2005-10-20 2012-07-31 Microsoft Corporation Load balancing in a managed execution environment
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
JP4001297B2 (ja) * 2005-11-10 2007-10-31 株式会社日立製作所 情報処理システム及びその管理サーバ
US7733803B2 (en) 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
US8046833B2 (en) 2005-11-14 2011-10-25 Sourcefire, Inc. Intrusion event correlation with network discovery information
AU2006320203B2 (en) 2005-12-02 2011-12-01 Citrix Systems, Inc. Method and apparatus for providing authentication credentials from a proxy server to a virtualized computing environment to access a remote resource
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US8756298B2 (en) * 2005-12-21 2014-06-17 Cisco Technology, Inc. System for automatic configuration of computers in a server farm
US20070150600A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation Method and apparatus for collecting data for characterizing HTTP session workloads
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
JP4652981B2 (ja) * 2006-01-13 2011-03-16 日本電信電話株式会社 Dnsサーバ選択装置、dnsサーバ選択方法、dnsサーバ選択プログラムおよび名前解決システム
US20070168548A1 (en) * 2006-01-19 2007-07-19 International Business Machines Corporation Method and system for performing multi-cluster application-specific routing
US20070198524A1 (en) * 2006-02-09 2007-08-23 International Business Machines Corporation Maintaining connections between application servers and databases in a multitier computer architecture
US7675854B2 (en) 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US20070198982A1 (en) * 2006-02-21 2007-08-23 International Business Machines Corporation Dynamic resource allocation for disparate application performance requirements
US8531953B2 (en) * 2006-02-21 2013-09-10 Barclays Capital Inc. System and method for network traffic splitting
US8295275B2 (en) * 2006-03-20 2012-10-23 Intel Corporation Tagging network I/O transactions in a virtual machine run-time environment
US7643410B2 (en) * 2006-03-29 2010-01-05 Intel Corporation Method and apparatus for managing a connection in a connection orientated environment
US20070239854A1 (en) * 2006-04-11 2007-10-11 Gopalakrishnan Janakiraman Method of migrating process domain
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
CN100461719C (zh) * 2006-06-15 2009-02-11 华为技术有限公司 服务健康度检测系统及方法
US7890636B2 (en) * 2006-06-28 2011-02-15 Cisco Technology, Inc. Application integrated gateway
US7760641B2 (en) * 2006-07-10 2010-07-20 International Business Machines Corporation Distributed traffic shaping across a cluster
US7948988B2 (en) 2006-07-27 2011-05-24 Sourcefire, Inc. Device, system and method for analysis of fragments in a fragment train
US8869262B2 (en) 2006-08-03 2014-10-21 Citrix Systems, Inc. Systems and methods for application based interception of SSL/VPN traffic
US8108525B2 (en) * 2006-08-03 2012-01-31 Citrix Systems, Inc. Systems and methods for managing a plurality of user sessions in a virtual private network environment
US8495181B2 (en) 2006-08-03 2013-07-23 Citrix Systems, Inc Systems and methods for application based interception SSI/VPN traffic
US7701945B2 (en) 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
US8141164B2 (en) 2006-08-21 2012-03-20 Citrix Systems, Inc. Systems and methods for dynamic decentralized load balancing across multiple sites
US8054241B2 (en) 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
US7791559B2 (en) 2006-09-14 2010-09-07 Citrix Systems, Inc. System and method for multiple display support in remote access software
JP4324975B2 (ja) * 2006-09-27 2009-09-02 日本電気株式会社 負荷低減システム、計算機、及び負荷低減方法
US20080114858A1 (en) * 2006-11-14 2008-05-15 Fmr Corp. Reconstructing Data on a Network
US7856494B2 (en) 2006-11-14 2010-12-21 Fmr Llc Detecting and interdicting fraudulent activity on a network
US20080115213A1 (en) * 2006-11-14 2008-05-15 Fmr Corp. Detecting Fraudulent Activity on a Network Using Stored Information
US8180873B2 (en) * 2006-11-14 2012-05-15 Fmr Llc Detecting fraudulent activity
US8145560B2 (en) * 2006-11-14 2012-03-27 Fmr Llc Detecting fraudulent activity on a network
WO2008127372A2 (en) * 2006-12-05 2008-10-23 Qualcomm Incorporated Apparatus and methods of a zero single point of failure load balancer
US20080209053A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation HTTP-Based Peer-to-Peer Framework
US8069352B2 (en) 2007-02-28 2011-11-29 Sourcefire, Inc. Device, system and method for timestamp analysis of segments in a transmission control protocol (TCP) session
US7760642B2 (en) 2007-03-12 2010-07-20 Citrix Systems, Inc. Systems and methods for providing quality of service precedence in TCP congestion control
US7796510B2 (en) 2007-03-12 2010-09-14 Citrix Systems, Inc. Systems and methods for providing virtual fair queueing of network traffic
CN101296176B (zh) * 2007-04-25 2010-12-22 阿里巴巴集团控股有限公司 一种基于群集的数据处理方法和装置
CA2685292C (en) 2007-04-30 2013-09-24 Sourcefire, Inc. Real-time user awareness for a computer network
US20080307426A1 (en) * 2007-06-05 2008-12-11 Telefonaktiebolaget Lm Ericsson (Publ) Dynamic load management in high availability systems
US8086674B2 (en) * 2007-06-21 2011-12-27 Research In Motion Limited Attachment server network for viewing attachments on a portable electronic device
US9032079B2 (en) * 2007-06-26 2015-05-12 Microsoft Technology Licensing, Llc Management and diagnosis of telephonic devices
US8132247B2 (en) * 2007-08-03 2012-03-06 Citrix Systems, Inc. Systems and methods for authorizing a client in an SSL VPN session failover environment
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
US8068416B2 (en) * 2007-09-20 2011-11-29 At&T Intellectual Property I, L.P. System and method of communicating a media stream
US8996707B2 (en) * 2007-09-28 2015-03-31 Alcatel Lucent Method and apparatus for performing load balancing for a control plane of a mobile communication network
US8156504B2 (en) * 2007-10-05 2012-04-10 Cisco Technology, Inc. Scalable resources in a virtualized load balancer
US7925694B2 (en) 2007-10-19 2011-04-12 Citrix Systems, Inc. Systems and methods for managing cookies via HTTP content layer
TWI399982B (zh) * 2007-12-05 2013-06-21 Ol2 Inc 用以壓縮串流互動視訊之系統
US7983166B2 (en) * 2008-01-03 2011-07-19 At&T Intellectual Property I, L.P. System and method of delivering video content
US8291086B2 (en) * 2008-01-18 2012-10-16 General Electric Company Method and system for accessing data in an enterprise information system
US8090877B2 (en) 2008-01-26 2012-01-03 Citrix Systems, Inc. Systems and methods for fine grain policy driven cookie proxying
US20090199290A1 (en) * 2008-02-01 2009-08-06 Secure Computing Corporation Virtual private network system and method
US7467207B1 (en) * 2008-02-01 2008-12-16 International Business Machines Corporation Balancing communication load in a system based on determination of user-user affinity levels
US11323510B2 (en) 2008-02-28 2022-05-03 Level 3 Communications, Llc Load-balancing cluster
US8489750B2 (en) 2008-02-28 2013-07-16 Level 3 Communications, Llc Load-balancing cluster
JP2009237763A (ja) * 2008-03-26 2009-10-15 Hitachi Ltd サーバシステム及びその制御方法
US8474043B2 (en) 2008-04-17 2013-06-25 Sourcefire, Inc. Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
US8806053B1 (en) 2008-04-29 2014-08-12 F5 Networks, Inc. Methods and systems for optimizing network traffic using preemptive acknowledgment signals
JP5264297B2 (ja) * 2008-06-03 2013-08-14 キヤノン株式会社 ジョブ処理方法及び画像処理システム並びに画像処理装置
US8447881B2 (en) 2008-09-02 2013-05-21 Microsoft Corporation Load balancing for services
US8533333B2 (en) * 2008-09-03 2013-09-10 Microsoft Corporation Shared hosting using host name affinity
US8272055B2 (en) 2008-10-08 2012-09-18 Sourcefire, Inc. Target-based SMB and DCE/RPC processing for an intrusion detection system or intrusion prevention system
US8566444B1 (en) 2008-10-30 2013-10-22 F5 Networks, Inc. Methods and system for simultaneous multiple rules checking
US8738780B2 (en) * 2009-01-22 2014-05-27 Citrix Systems, Inc. System and method for hybrid communication mechanism utilizing both communication server-based and direct endpoint-to-endpoint connections
WO2010106772A1 (ja) * 2009-03-17 2010-09-23 日本電気株式会社 分散処理システム及び分散処理方法
US8433749B2 (en) * 2009-04-15 2013-04-30 Accenture Global Services Limited Method and system for client-side scaling of web server farm architectures in a cloud data center
US8416692B2 (en) * 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
US8613085B2 (en) * 2009-07-22 2013-12-17 Broadcom Corporation Method and system for traffic management via virtual machine migration
GB2473023A (en) 2009-08-27 2011-03-02 Intergrated Security Mfg Ltd Monitoring system
US9450804B2 (en) * 2009-09-03 2016-09-20 At&T Intellectual Property I, L.P. Anycast aware transport for content distribution networks
US8775553B2 (en) * 2009-09-11 2014-07-08 The Directv Group, Inc. Managing signal delivery to a plurality of display platforms
US10157280B2 (en) 2009-09-23 2018-12-18 F5 Networks, Inc. System and method for identifying security breach attempts of a website
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US8868961B1 (en) 2009-11-06 2014-10-21 F5 Networks, Inc. Methods for acquiring hyper transport timing and devices thereof
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8510409B1 (en) * 2009-12-23 2013-08-13 Emc Corporation Application-specific outbound source routing from a host in a data network
US8634842B2 (en) * 2010-01-15 2014-01-21 Telefonaktiebolaget L M Ericsson (Publ) Radio resource allocation in systems comprising relays
US8910176B2 (en) * 2010-01-15 2014-12-09 International Business Machines Corporation System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance
CN101788909B (zh) * 2010-01-28 2012-12-05 北京天空堂科技有限公司 一种网络游戏服务器端行走系统的解决方法和装置
TWI502375B (zh) * 2010-03-09 2015-10-01 Alibaba Group Holding Ltd Instant messaging method, system and device
CN101783771A (zh) * 2010-03-24 2010-07-21 杭州华三通信技术有限公司 一种实现负载均衡持续性的方法和设备
CA2789824C (en) 2010-04-16 2018-11-06 Sourcefire, Inc. System and method for near-real time network attack detection, and system and method for unified detection via detection routing
US9667569B1 (en) 2010-04-29 2017-05-30 Amazon Technologies, Inc. System and method for adaptive server shielding
CN102255932B (zh) * 2010-05-20 2015-09-09 百度在线网络技术(北京)有限公司 负载均衡方法和负载均衡器
JP5530810B2 (ja) * 2010-06-02 2014-06-25 株式会社日立システムズ スケールアウトシステムおよび方法ならびにプログラム
US8433790B2 (en) 2010-06-11 2013-04-30 Sourcefire, Inc. System and method for assigning network blocks to sensors
CN101873237B (zh) * 2010-06-13 2012-02-22 用友软件股份有限公司 动态维护集群中的成员服务器的方法和系统
US9141625B1 (en) 2010-06-22 2015-09-22 F5 Networks, Inc. Methods for preserving flow state during virtual machine migration and devices thereof
US8671182B2 (en) * 2010-06-22 2014-03-11 Sourcefire, Inc. System and method for resolving operating system or service identity conflicts
US10015286B1 (en) 2010-06-23 2018-07-03 F5 Networks, Inc. System and method for proxying HTTP single sign on across network domains
US20120221603A1 (en) * 2010-07-02 2012-08-30 salesforces.com, Inc. Distributed mobile services
US8908545B1 (en) 2010-07-08 2014-12-09 F5 Networks, Inc. System and method for handling TCP performance in network access with driver initiated application tunnel
US8391174B2 (en) 2010-07-13 2013-03-05 Hewlett-Packard Development Company, L.P. Data packet routing
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US8244881B2 (en) * 2010-08-06 2012-08-14 Palo Alto Research Center Incorporated Service virtualization over content-centric networks
US9083760B1 (en) 2010-08-09 2015-07-14 F5 Networks, Inc. Dynamic cloning and reservation of detached idle connections
US8630174B1 (en) 2010-09-14 2014-01-14 F5 Networks, Inc. System and method for post shaping TCP packetization
US8886981B1 (en) 2010-09-15 2014-11-11 F5 Networks, Inc. Systems and methods for idle driven scheduling
US8804504B1 (en) 2010-09-16 2014-08-12 F5 Networks, Inc. System and method for reducing CPU load in processing PPP packets on a SSL-VPN tunneling device
EP2622495A4 (en) * 2010-09-27 2015-08-12 Lantronix Inc VARIOUS METHODS AND APPARATUSES FOR ACCESSING NETWORK DEVICES WITHOUT ADDRESSES ACCESSIBLE THROUGH VIRTUAL IP ADDRESSES
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US20120109852A1 (en) * 2010-10-27 2012-05-03 Microsoft Corporation Reactive load balancing for distributed systems
US8959571B2 (en) 2010-10-29 2015-02-17 F5 Networks, Inc. Automated policy builder
US9554276B2 (en) 2010-10-29 2017-01-24 F5 Networks, Inc. System and method for on the fly protocol conversion in obtaining policy enforcement information
JP5538560B2 (ja) 2010-11-01 2014-07-02 かもめエンジニアリング株式会社 アクセス制御方法、アクセス制御装置およびアクセス制御プログラム
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US8755283B2 (en) * 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
CN102137005B (zh) 2010-12-31 2014-04-02 华为技术有限公司 一种通信系统中的数据转发方法、装置和系统
EP2663919B1 (en) 2011-01-11 2019-07-03 A10 Networks Inc. Virtual application delivery chassis system
US8627467B2 (en) 2011-01-14 2014-01-07 F5 Networks, Inc. System and method for selectively storing web objects in a cache memory based on policy decisions
JP2012156698A (ja) * 2011-01-25 2012-08-16 Hitachi Ltd 中継装置、通信ネットワークシステム、及び、負荷分散方法
US10135831B2 (en) 2011-01-28 2018-11-20 F5 Networks, Inc. System and method for combining an access control system with a traffic management system
US8612550B2 (en) 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity
US8812586B1 (en) * 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US8601034B2 (en) 2011-03-11 2013-12-03 Sourcefire, Inc. System and method for real time data awareness
US9578126B1 (en) 2011-04-30 2017-02-21 F5 Networks, Inc. System and method for automatically discovering wide area network optimized routes and devices
US9154577B2 (en) 2011-06-06 2015-10-06 A10 Networks, Inc. Sychronization of configuration file of virtual application distribution chassis
US9246819B1 (en) * 2011-06-20 2016-01-26 F5 Networks, Inc. System and method for performing message-based load balancing
US9055076B1 (en) 2011-06-23 2015-06-09 Amazon Technologies, Inc. System and method for distributed load balancing with load balancer clients for hosts
US8812727B1 (en) 2011-06-23 2014-08-19 Amazon Technologies, Inc. System and method for distributed load balancing with distributed direct server return
CN102201010A (zh) * 2011-06-23 2011-09-28 清华大学 无共享架构的分布式数据库系统及其实现方法
CN102891868B (zh) * 2011-07-19 2016-09-28 上海可鲁系统软件有限公司 一种分布式系统的负载均衡方法及装置
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9432321B2 (en) * 2011-12-19 2016-08-30 Alcatel Lucent Method and apparatus for messaging in the cloud
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US9270766B2 (en) 2011-12-30 2016-02-23 F5 Networks, Inc. Methods for identifying network traffic characteristics to correlate and manage one or more subsequent flows and devices thereof
US9444884B2 (en) * 2011-12-31 2016-09-13 Level 3 Communications, Llc Load-aware load-balancing cluster without a central load balancer
DE102012200042A1 (de) * 2012-01-03 2013-07-04 Airbus Operations Gmbh Serversystem, luft- oder raumfahrzeug und verfahren
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9231879B1 (en) 2012-02-20 2016-01-05 F5 Networks, Inc. Methods for policy-based network traffic queue management and devices thereof
US9172753B1 (en) 2012-02-20 2015-10-27 F5 Networks, Inc. Methods for optimizing HTTP header based authentication and devices thereof
EP2853074B1 (en) 2012-04-27 2021-03-24 F5 Networks, Inc Methods for optimizing service of content requests and devices thereof
US9197545B2 (en) 2012-05-18 2015-11-24 Benu Networks, Inc. Highly scalable modular system with high reliability and low latency
US9363313B2 (en) * 2012-06-11 2016-06-07 Cisco Technology, Inc. Reducing virtual IP-address (VIP) failure detection time
US8805990B2 (en) 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
US10002141B2 (en) * 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US10021174B2 (en) * 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US9246998B2 (en) 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US9185006B2 (en) 2012-12-17 2015-11-10 Microsoft Technology Licensing, Llc Exchange of server health and client information through headers for request management
CN103259832A (zh) * 2012-12-24 2013-08-21 中国科学院沈阳自动化研究所 实现动态负载平衡、故障诊断与转移的群集资源控制方法
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
US9992107B2 (en) 2013-03-15 2018-06-05 A10 Networks, Inc. Processing data packets using a policy based network path
US9553809B2 (en) * 2013-04-16 2017-01-24 Amazon Technologies, Inc. Asymmetric packet flow in a distributed load balancer
US9871712B1 (en) 2013-04-16 2018-01-16 Amazon Technologies, Inc. Health checking in a distributed load balancer
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US10038626B2 (en) 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer
US10135914B2 (en) 2013-04-16 2018-11-20 Amazon Technologies, Inc. Connection publishing in a distributed load balancer
US10038693B2 (en) 2013-05-03 2018-07-31 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US10057173B2 (en) * 2013-05-28 2018-08-21 Convida Wireless, Llc Load balancing in the Internet of things
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
WO2015135124A1 (zh) 2014-03-11 2015-09-17 华为技术有限公司 一种信息传送方法及装置
US20150261721A1 (en) * 2014-03-13 2015-09-17 Lantiq Deutschland Gmbh Flow control between processing devices
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
CN104980361B (zh) * 2014-04-01 2018-09-21 华为技术有限公司 一种负载均衡方法、装置及系统
US9961130B2 (en) * 2014-04-24 2018-05-01 A10 Networks, Inc. Distributed high availability processing methods for service sessions
US10742559B2 (en) 2014-04-24 2020-08-11 A10 Networks, Inc. Eliminating data traffic redirection in scalable clusters
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9871849B2 (en) * 2014-05-20 2018-01-16 Citrix Systems, Inc. Systems and methods for just-in-time state sharing
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US10015143B1 (en) 2014-06-05 2018-07-03 F5 Networks, Inc. Methods for securing one or more license entitlement grants and devices thereof
WO2015195734A1 (en) * 2014-06-19 2015-12-23 Thomson Licensing Natural language control of a gateway device
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10511694B2 (en) 2014-07-23 2019-12-17 Citrix Systems, Inc. Systems and methods for application specific load balancing
US10122630B1 (en) 2014-08-15 2018-11-06 F5 Networks, Inc. Methods for network traffic presteering and devices thereof
US10432711B1 (en) * 2014-09-15 2019-10-01 Amazon Technologies, Inc. Adaptive endpoint selection
US11095715B2 (en) * 2014-09-24 2021-08-17 Ebay Inc. Assigning storage responsibility in a distributed data storage system with replication
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9646163B2 (en) 2014-11-14 2017-05-09 Getgo, Inc. Communicating data between client devices using a hybrid connection having a regular communications pathway and a highly confidential communications pathway
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
CN105808343B (zh) * 2014-12-31 2019-01-04 中国科学院沈阳自动化研究所 用于复杂生产管理系统中的群集资源控制方法
US9565167B2 (en) * 2015-01-21 2017-02-07 Huawei Technologies Co., Ltd. Load balancing internet protocol security tunnels
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
WO2017023860A1 (en) 2015-07-31 2017-02-09 Modulus Technology Solutions Corp. Estimating wireless network load and adjusting applications to minimize network overload probability and maximize successful application operation
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10264092B2 (en) * 2015-08-24 2019-04-16 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Signature based distributed inventory caching
EP3353951A1 (en) 2015-09-25 2018-08-01 FSA Technologies, Inc. Multi-trunk data flow regulation system and method
US10623319B1 (en) * 2015-09-28 2020-04-14 Amazon Technologies, Inc. Load rebalancing in a network-based system
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US20200389495A1 (en) 2015-10-28 2020-12-10 Qomplx, Inc. Secure policy-controlled processing and auditing on regulated data sets
US20170353537A1 (en) * 2015-10-28 2017-12-07 Fractal Industries, Inc. Predictive load balancing for a digital environment
IL242353B (en) * 2015-10-29 2021-01-31 Verint Systems Ltd System and method for soft failovers for proxy servers
US10880381B2 (en) 2015-11-04 2020-12-29 Micro Focus Llc Direct connection limitation based on a period of time
TW201721498A (zh) * 2015-12-01 2017-06-16 Chunghwa Telecom Co Ltd 具安全與功能擴充性的有線區域網路使用者管理系統及方法
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9894670B1 (en) * 2015-12-17 2018-02-13 Innovium, Inc. Implementing adaptive resource allocation for network devices
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10318288B2 (en) 2016-01-13 2019-06-11 A10 Networks, Inc. System and method to process a chain of network applications
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
TWI612429B (zh) 2016-04-12 2018-01-21 緯創資通股份有限公司 伺服器系統及其資料存取方法
US10904127B2 (en) * 2016-06-13 2021-01-26 Intel Corporation Systems and methods for detecting a zombie server
US10644963B2 (en) * 2016-06-13 2020-05-05 Intel Corporation Systems and methods for detecting a zombie server
US10791088B1 (en) 2016-06-17 2020-09-29 F5 Networks, Inc. Methods for disaggregating subscribers via DHCP address translation and devices thereof
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
CN109479214B (zh) * 2016-08-19 2021-05-18 华为技术有限公司 一种负载均衡的方法及相关装置
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US10778585B1 (en) * 2016-11-30 2020-09-15 Amazon Technologies, Inc. Connection and application state migration for uninterrupted service availability
US10235069B2 (en) * 2016-12-22 2019-03-19 Western Digital Technologies, Inc. Load balancing by dynamically transferring memory range assignments
US10084855B2 (en) * 2017-01-23 2018-09-25 Akamai Technologies, Inc. Pixel-based load balancing
US10476945B2 (en) * 2017-02-01 2019-11-12 Juniper Networks, Inc. Consistent flow assignment in load balancing
US11496438B1 (en) 2017-02-07 2022-11-08 F5, Inc. Methods for improved network security using asymmetric traffic delivery and devices thereof
US10834176B2 (en) 2017-03-10 2020-11-10 The Directv Group, Inc. Automated end-to-end application deployment in a data center
US10791119B1 (en) 2017-03-14 2020-09-29 F5 Networks, Inc. Methods for temporal password injection and devices thereof
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US10931662B1 (en) 2017-04-10 2021-02-23 F5 Networks, Inc. Methods for ephemeral authentication screening and devices thereof
US10972453B1 (en) 2017-05-03 2021-04-06 F5 Networks, Inc. Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US10212043B1 (en) * 2017-07-26 2019-02-19 Citrix Systems, Inc. Proactive link load balancing to maintain quality of link
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10887235B2 (en) 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US10599482B2 (en) 2017-08-24 2020-03-24 Google Llc Method for intra-subgraph optimization in tuple graph programs
US11122083B1 (en) 2017-09-08 2021-09-14 F5 Networks, Inc. Methods for managing network connections based on DNS data and network policies and devices thereof
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
JP2019161603A (ja) * 2018-03-16 2019-09-19 株式会社東芝 負荷分散装置、負荷分散システム、プログラム及び負荷分散方法
US11658995B1 (en) 2018-03-20 2023-05-23 F5, Inc. Methods for dynamically mitigating network attacks and devices thereof
US20190319933A1 (en) * 2018-04-12 2019-10-17 Alibaba Group Holding Limited Cooperative tls acceleration
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11044200B1 (en) 2018-07-06 2021-06-22 F5 Networks, Inc. Methods for service stitching using a packet header and devices thereof
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
CN110858229B (zh) 2018-08-23 2023-04-07 阿里巴巴集团控股有限公司 数据处理方法、设备、访问控制系统及存储介质
US20210192390A1 (en) * 2018-09-24 2021-06-24 Hewlett-Packard Development Company, L.P. Device status assessment
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
TWI684131B (zh) * 2019-02-26 2020-02-01 華碩電腦股份有限公司 資料傳輸裝置、資料傳輸方法以及非暫態電腦可讀取記錄媒體
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
TWI689186B (zh) * 2019-04-09 2020-03-21 聚騰科技股份有限公司 資料傳輸及接收方法
CN110308983B (zh) * 2019-04-19 2022-04-05 中国工商银行股份有限公司 资源负载均衡方法及系统、服务节点和客户端
JP7275314B2 (ja) * 2019-04-25 2023-05-17 ライブパーソン, インコーポレイテッド 作業負荷ルーティングのためのスマートキャパシティ
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
CN111130979B (zh) * 2019-12-09 2022-02-22 苏州浪潮智能科技有限公司 一种sdwan场景下分支节点连接中心节点的方法和设备
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US20210326353A1 (en) * 2020-04-17 2021-10-21 Unisys Corporation Incremental change and deploy
US11616721B2 (en) 2020-11-24 2023-03-28 International Business Machines Corporation In-packet version tagging utilizing a perimeter NAT
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN114039881B (zh) * 2021-10-19 2023-08-08 创盛视联数码科技(北京)有限公司 一种通信连接监控方法
EP4268912A1 (en) * 2022-04-26 2023-11-01 Build A Rocket Boy Games Ltd. Dynamic transitioning of a simulating host of a portion or all of a network interactive environment
CN116233137B (zh) * 2023-02-17 2023-11-17 通明智云(北京)科技有限公司 一种基于集群的负载分担和备份方法及装置

Family Cites Families (184)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200770A (en) 1977-09-06 1980-04-29 Stanford University Cryptographic apparatus and method
US4218582A (en) 1977-10-06 1980-08-19 The Board Of Trustees Of The Leland Stanford Junior University Public key cryptographic apparatus and method
US4405829A (en) 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
US4424414A (en) 1978-05-01 1984-01-03 Board Of Trustees Of The Leland Stanford Junior University Exponentiation cryptographic apparatus and method
DE3789215T2 (de) 1986-12-22 1994-06-01 American Telephone & Telegraph Gesteuerter dynamischer Belastungsausgleich für ein Multiprozessorsystem.
US5031089A (en) 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
JPH0488489A (ja) 1990-08-01 1992-03-23 Internatl Business Mach Corp <Ibm> 一般化ハフ変換を用いた文字認識装置および方法
DE69126666T2 (de) 1990-09-17 1998-02-12 Cabletron Systems Inc Netzwerkverwaltungssystem mit modellbasierter intelligenz
JPH04287290A (ja) 1990-11-20 1992-10-12 Imra America Inc ハフ変換画像処理装置
WO1992016905A1 (en) * 1991-03-18 1992-10-01 Echelon Corporation Programming language structures for use in a network for communicating, sensing and controlling information
AU1645092A (en) 1991-03-18 1992-10-21 Echelon Corporation Binder interface structure
US6115393A (en) 1991-04-12 2000-09-05 Concord Communications, Inc. Network monitoring
IL99923A0 (en) 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5371852A (en) 1992-10-14 1994-12-06 International Business Machines Corporation Method and apparatus for making a cluster of computers appear as a single host on a network
US5557774A (en) 1993-03-22 1996-09-17 Hitachi, Ltd. Method for making test environmental programs
BR9402027A (pt) 1993-05-28 1994-12-13 Xerox Corp Processo para gerenciar uma configuração e assegurar compatibilidade entre componentes num sistema de computação, e, processo para eliminar incompatibilidades entre software residente e software de migração num sistema de computador automatizado
JP3487515B2 (ja) * 1993-06-15 2004-01-19 株式会社日立製作所 分散処理システムおよび分散処理方法
US5686940A (en) 1993-12-24 1997-11-11 Rohm Co., Ltd. Display apparatus
US5668995A (en) 1994-04-22 1997-09-16 Ncr Corporation Method and apparatus for capacity planning for multiprocessor computer systems in client/server environments
JPH0844677A (ja) * 1994-07-29 1996-02-16 Toshiba Corp 分散処理システム
WO1996016497A1 (en) 1994-11-21 1996-05-30 Oracle Corporation Transferring binary large objects (blobs) in a network environment
US5758351A (en) 1995-03-01 1998-05-26 Sterling Software, Inc. System and method for the creation and use of surrogate information system objects
US5724508A (en) 1995-03-09 1998-03-03 Insoft, Inc. Apparatus for collaborative computing
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5895499A (en) 1995-07-03 1999-04-20 Sun Microsystems, Inc. Cross-domain data transfer using deferred page remapping
US5917730A (en) 1995-08-17 1999-06-29 Gse Process Solutions, Inc. Computer implemented object oriented visualization system and method
US5774689A (en) 1995-09-22 1998-06-30 Bell Atlantic Network Services, Inc. Network configuration management system for digital communication networks
US6047323A (en) 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5684800A (en) 1995-11-15 1997-11-04 Cabletron Systems, Inc. Method for establishing restricted broadcast groups in a switched network
US5801970A (en) 1995-12-06 1998-09-01 Martin Marietta Corporation Model-based feature tracking system
GB2309558A (en) * 1996-01-26 1997-07-30 Ibm Load balancing across the processors of a server computer
JP3847364B2 (ja) * 1996-02-14 2006-11-22 富士通株式会社 ロードシェアシステム
JP3083476B2 (ja) * 1996-03-06 2000-09-04 松下電器産業株式会社 アプリケーションサーバシステム
JPH09244940A (ja) * 1996-03-12 1997-09-19 Hitachi Ltd 分散計算機資源の管理方法
US5768271A (en) 1996-04-12 1998-06-16 Alcatel Data Networks Inc. Virtual private network
US6085238A (en) 1996-04-23 2000-07-04 Matsushita Electric Works, Ltd. Virtual LAN system
US5748958A (en) 1996-04-30 1998-05-05 International Business Machines Corporation System for utilizing batch requests to present membership changes to process groups
US5845124A (en) 1996-05-01 1998-12-01 Ncr Corporation Systems and methods for generating and displaying a symbolic representation of a network model
DE69738095T2 (de) 1996-06-07 2008-05-29 Nippon Telegraph And Telephone Corp. Verfahren und System zur Steuerung eines VLANs
KR100204029B1 (ko) 1996-06-19 1999-06-15 이계철 비동기전달모드 교환 시스템에서 연결 식별자 할당방법
US5822531A (en) 1996-07-22 1998-10-13 International Business Machines Corporation Method and system for dynamically reconfiguring a cluster of computer systems
US5796830A (en) 1996-07-29 1998-08-18 International Business Machines Corporation Interoperable cryptographic key recovery system
US5774660A (en) 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US5818937A (en) 1996-08-12 1998-10-06 Ncr Corporation Telephone tone security device
US5930798A (en) 1996-08-15 1999-07-27 Predicate Logic, Inc. Universal data measurement, analysis and control system
US5918017A (en) 1996-08-23 1999-06-29 Internatioinal Business Machines Corp. System and method for providing dynamically alterable computer clusters for message routing
US6236365B1 (en) 1996-09-09 2001-05-22 Tracbeam, Llc Location of a mobile station using a plurality of commercial wireless infrastructures
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5790895A (en) 1996-10-18 1998-08-04 Compaq Computer Corporation Modem sharing
US5784463A (en) 1996-12-04 1998-07-21 V-One Corporation Token distribution, registration, and dynamic configuration of user entitlement for an application level security system and method
US5938732A (en) 1996-12-09 1999-08-17 Sun Microsystems, Inc. Load balancing and failover of network services
RU2210803C2 (ru) 1996-12-13 2003-08-20 Мейвиз Интэнэшнл Софтвэа, Инк. Компьютерное устройство для выполнения прикладных программ
GB9626241D0 (en) 1996-12-18 1997-02-05 Ncr Int Inc Secure data processing method and system
US5845277A (en) 1996-12-19 1998-12-01 Mci Communications Corporation Production of statistically-based network maps
US6272523B1 (en) 1996-12-20 2001-08-07 International Business Machines Corporation Distributed networking using logical processes
US6112243A (en) 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
JPH10198642A (ja) * 1997-01-09 1998-07-31 Fujitsu Ltd サーバ装置
US5826015A (en) 1997-02-20 1998-10-20 Digital Equipment Corporation Method and apparatus for secure remote programming of firmware and configurations of a computer over a network
US6151688A (en) * 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5958009A (en) 1997-02-27 1999-09-28 Hewlett-Packard Company System and method for efficiently monitoring quality of service in a distributed processing environment
US6067580A (en) 1997-03-11 2000-05-23 International Business Machines Corporation Integrating distributed computing environment remote procedure calls with an advisory work load manager
US5968126A (en) 1997-04-02 1999-10-19 Switchsoft Systems, Inc. User-based binding of network stations to broadcast domains
JP2001519120A (ja) 1997-04-04 2001-10-16 アセンド コミュニケーションズ インコーポレイテッド 階層型パケット・スケジューリング方法及び装置
CA2202572C (en) 1997-04-14 2004-02-10 Ka Lun Eddie Law A scaleable web server and method of efficiently managing multiple servers
US6065058A (en) 1997-05-09 2000-05-16 International Business Machines Corp. Dynamic push filtering based on information exchanged among nodes in a proxy hierarchy
US6049528A (en) 1997-06-30 2000-04-11 Sun Microsystems, Inc. Trunking ethernet-compatible networks
FR2765702B1 (fr) 1997-07-02 2001-07-06 Bull Sa Architecture de systeme de traitement de l'information
US6185308B1 (en) 1997-07-07 2001-02-06 Fujitsu Limited Key recovery system
US6233610B1 (en) 1997-08-27 2001-05-15 Northern Telecom Limited Communications network having management system architecture supporting reuse
US5960371A (en) 1997-09-04 1999-09-28 Schlumberger Technology Corporation Method of determining dips and azimuths of fractures from borehole images
US6041054A (en) 1997-09-24 2000-03-21 Telefonaktiebolaget Lm Ericsson Efficient transport of internet protocol packets using asynchronous transfer mode adaptation layer two
JP3649367B2 (ja) 1997-09-26 2005-05-18 ソニー株式会社 パケット伝送制御方法および装置
EP0907145A3 (en) 1997-10-03 2003-03-26 Nippon Telegraph and Telephone Corporation Method and equipment for extracting image features from image sequence
US6192401B1 (en) 1997-10-21 2001-02-20 Sun Microsystems, Inc. System and method for determining cluster membership in a heterogeneous distributed system
US6047325A (en) 1997-10-24 2000-04-04 Jain; Lalit Network device for supporting construction of virtual local area networks on arbitrary local and wide area computer networks
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6088734A (en) 1997-11-12 2000-07-11 International Business Machines Corporation Systems methods and computer program products for controlling earliest deadline first scheduling at ATM nodes
US6125447A (en) 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
US6035405A (en) 1997-12-22 2000-03-07 Nortel Networks Corporation Secure virtual LANs
US6370584B1 (en) * 1998-01-13 2002-04-09 Trustees Of Boston University Distributed routing
US6086618A (en) 1998-01-26 2000-07-11 Microsoft Corporation Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration
US6182275B1 (en) 1998-01-26 2001-01-30 Dell Usa, L.P. Generation of a compatible order for a computer system
US6076108A (en) 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
US6208649B1 (en) 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6691148B1 (en) * 1998-03-13 2004-02-10 Verizon Corporate Services Group Inc. Framework for providing quality of service requirements in a distributed object-oriented computer system
TW374965B (en) 1998-03-17 1999-11-21 Winbond Electronics Corp Method of processing of transmission of confidential data and the network system
US6098093A (en) 1998-03-19 2000-08-01 International Business Machines Corp. Maintaining sessions in a clustered server environment
US6393386B1 (en) * 1998-03-26 2002-05-21 Visual Networks Technologies, Inc. Dynamic modeling of complex networks and prediction of impacts of faults therein
US6236901B1 (en) 1998-03-31 2001-05-22 Dell Usa, L.P. Manufacturing system and method for assembly of computer systems in a build-to-order environment
JP4243019B2 (ja) * 1998-04-03 2009-03-25 ヴァーティカル・ネットワークス・インコーポレーテッド インテリジェント・ブリッジtdmおよびパケット・バスを用いて音声およびデータを伝送するシステムおよび方法
US6118785A (en) 1998-04-07 2000-09-12 3Com Corporation Point-to-point protocol with a signaling channel
US6059842A (en) 1998-04-14 2000-05-09 International Business Machines Corp. System and method for optimizing computer software and hardware
US6208345B1 (en) 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6167052A (en) 1998-04-27 2000-12-26 Vpnx.Com, Inc. Establishing connectivity in networks
US6311144B1 (en) 1998-05-13 2001-10-30 Nabil A. Abu El Ata Method and apparatus for designing and analyzing information systems using multi-layer mathematical models
FR2779018B1 (fr) * 1998-05-22 2000-08-18 Activcard Terminal et systeme pour la mise en oeuvre de transactions electroniques securisees
US6269076B1 (en) 1998-05-28 2001-07-31 3Com Corporation Method of resolving split virtual LANs utilizing a network management system
US6360265B1 (en) * 1998-07-08 2002-03-19 Lucent Technologies Inc. Arrangement of delivering internet protocol datagrams for multimedia services to the same server
US6226788B1 (en) 1998-07-22 2001-05-01 Cisco Technology, Inc. Extensible network management system
US6266707B1 (en) 1998-08-17 2001-07-24 International Business Machines Corporation System and method for IP network address translation and IP filtering with dynamic address resolution
US6336138B1 (en) 1998-08-25 2002-01-01 Hewlett-Packard Company Template-driven approach for generating models on network services
US6327622B1 (en) 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6311270B1 (en) 1998-09-14 2001-10-30 International Business Machines Corporation Method and apparatus for securing communication utilizing a security processor
US6253230B1 (en) 1998-09-22 2001-06-26 International Business Machines Corporation Distributed scalable device for selecting a server from a server cluster and a switched path to the selected server
US6167383A (en) 1998-09-22 2000-12-26 Dell Usa, Lp Method and apparatus for providing customer configured machines at an internet site
US6230312B1 (en) 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
US6438652B1 (en) * 1998-10-09 2002-08-20 International Business Machines Corporation Load balancing cooperating cache servers by shifting forwarded request
US6546423B1 (en) * 1998-10-22 2003-04-08 At&T Corp. System and method for network load balancing
US6212559B1 (en) 1998-10-28 2001-04-03 Trw Inc. Automated configuration of internet-like computer networks
JP3820777B2 (ja) * 1998-11-12 2006-09-13 富士ゼロックス株式会社 秘密鍵寄託システムおよび方法
US6272522B1 (en) 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
US6330605B1 (en) 1998-11-19 2001-12-11 Volera, Inc. Proxy cache cluster
US6108702A (en) 1998-12-02 2000-08-22 Micromuse, Inc. Method and apparatus for determining accurate topology features of a network
US6336171B1 (en) * 1998-12-23 2002-01-01 Ncr Corporation Resource protection in a cluster environment
US6570847B1 (en) * 1998-12-31 2003-05-27 At&T Corp. Method and system for network traffic rate control based on fractional tokens
US6691168B1 (en) * 1998-12-31 2004-02-10 Pmc-Sierra Method and apparatus for high-speed network rule processing
US6377996B1 (en) * 1999-02-18 2002-04-23 International Business Machines Corporation System for seamless streaming of data stored on a network of distributed primary and target servers using segmentation information exchanged among all servers during streaming
JP2000268012A (ja) * 1999-03-12 2000-09-29 Nec Corp クライアントサーバシステムにおけるサーバ負荷の分散方法ならびに装置
US6341356B1 (en) * 1999-03-25 2002-01-22 International Business Machines Corporation System for I/O path load balancing and failure which can be ported to a plurality of operating environments
JP2000322288A (ja) * 1999-05-06 2000-11-24 Fujitsu Ltd 分散オブジェクト開発システム、および、分散オブジェクト開発をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6757744B1 (en) * 1999-05-12 2004-06-29 Unisys Corporation Distributed transport communications manager with messaging subsystem for high-speed communications between heterogeneous computer systems
US6944183B1 (en) * 1999-06-10 2005-09-13 Alcatel Object model for network policy management
US6539494B1 (en) * 1999-06-17 2003-03-25 Art Technology Group, Inc. Internet server session backup apparatus
US6505244B1 (en) * 1999-06-29 2003-01-07 Cisco Technology Inc. Policy engine which supports application specific plug-ins for enforcing policies in a feedback-based, adaptive data network
US6367010B1 (en) * 1999-07-02 2002-04-02 Postx Corporation Method for generating secure symmetric encryption and decryption
US6684335B1 (en) * 1999-08-19 2004-01-27 Epstein, Iii Edwin A. Resistance cell architecture
US7162427B1 (en) * 1999-08-20 2007-01-09 Electronic Data Systems Corporation Structure and method of modeling integrated business and information technology frameworks and architecture in support of a business
US6256773B1 (en) 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6370573B1 (en) * 1999-08-31 2002-04-09 Accenture Llp System, method and article of manufacture for managing an environment of a development architecture framework
US6351685B1 (en) * 1999-11-05 2002-02-26 International Business Machines Corporation Wireless communication between multiple intelligent pickers and with a central job queue in an automated data storage library
AU4717901A (en) * 1999-12-06 2001-06-25 Warp Solutions, Inc. System and method for dynamic content routing
US6529953B1 (en) * 1999-12-17 2003-03-04 Reliable Network Solutions Scalable computer network resource monitoring and location system
US6862613B1 (en) * 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
US6983317B1 (en) * 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6701363B1 (en) * 2000-02-29 2004-03-02 International Business Machines Corporation Method, computer program product, and system for deriving web transaction performance metrics
US7506034B2 (en) * 2000-03-03 2009-03-17 Intel Corporation Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US6678821B1 (en) * 2000-03-23 2004-01-13 E-Witness Inc. Method and system for restricting access to the private key of a user in a public key infrastructure
US6574195B2 (en) * 2000-04-19 2003-06-03 Caspian Networks, Inc. Micro-flow management
WO2001084313A2 (en) * 2000-05-02 2001-11-08 Sun Microsystems, Inc. Method and system for achieving high availability in a networked computer system
US6675308B1 (en) * 2000-05-09 2004-01-06 3Com Corporation Methods of determining whether a network interface card entry within the system registry pertains to physical hardware or to a virtual device
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
US7272653B2 (en) * 2000-09-28 2007-09-18 International Business Machines Corporation System and method for implementing a clustered load balancer
US6886038B1 (en) * 2000-10-24 2005-04-26 Microsoft Corporation System and method for restricting data transfers and managing software components of distributed computers
US6853841B1 (en) * 2000-10-25 2005-02-08 Sun Microsystems, Inc. Protocol for a remote control device to enable control of network attached devices
US7003574B1 (en) * 2000-11-01 2006-02-21 Microsoft Corporation Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US6785707B2 (en) * 2000-11-14 2004-08-31 Bitfone Corp. Enhanced multimedia mobile content delivery and message system using cache management
US6856591B1 (en) * 2000-12-15 2005-02-15 Cisco Technology, Inc. Method and system for high reliability cluster management
US20030046615A1 (en) * 2000-12-22 2003-03-06 Alan Stone System and method for adaptive reliability balancing in distributed programming networks
US7383329B2 (en) * 2001-02-13 2008-06-03 Aventail, Llc Distributed cache for state transfer operations
US7003562B2 (en) * 2001-03-27 2006-02-21 Redseal Systems, Inc. Method and apparatus for network wide policy-based analysis of configurations of devices
US7162634B2 (en) * 2001-04-18 2007-01-09 Thomson Licensing Method for providing security on a powerline-modem network
US7194439B2 (en) * 2001-04-30 2007-03-20 International Business Machines Corporation Method and system for correlating job accounting information with software license information
US20030014644A1 (en) * 2001-05-02 2003-01-16 Burns James E. Method and system for security policy management
US7013462B2 (en) * 2001-05-10 2006-03-14 Hewlett-Packard Development Company, L.P. Method to map an inventory management system to a configuration management system
US20030008712A1 (en) * 2001-06-04 2003-01-09 Playnet, Inc. System and method for distributing a multi-client game/application over a communications network
US20030009559A1 (en) * 2001-07-09 2003-01-09 Naoya Ikeda Network system and method of distributing accesses to a plurality of server apparatus in the network system
US7174379B2 (en) * 2001-08-03 2007-02-06 International Business Machines Corporation Managing server resources for hosted applications
AU2002326117A1 (en) * 2001-08-15 2003-03-03 Ariel Noy Service provisioning in a distributed network management architecture
US20030041159A1 (en) * 2001-08-17 2003-02-27 David Tinsley Systems and method for presenting customizable multimedia presentations
US20030041142A1 (en) * 2001-08-27 2003-02-27 Nec Usa, Inc. Generic network monitoring tool
US6980978B2 (en) * 2001-09-07 2005-12-27 International Business Machines Corporation Site integration management system for operational support service in an internet data center
US7500069B2 (en) * 2001-09-17 2009-03-03 Hewlett-Packard Development Company, L.P. System and method for providing secure access to network logical storage partitions
US7769823B2 (en) * 2001-09-28 2010-08-03 F5 Networks, Inc. Method and system for distributing requests for content
US7200665B2 (en) * 2001-10-17 2007-04-03 Hewlett-Packard Development Company, L.P. Allowing requests of a session to be serviced by different servers in a multi-server data service system
US7194616B2 (en) * 2001-10-27 2007-03-20 International Business Machines Corporation Flexible temporary capacity upgrade/downgrade in a computer system without involvement of the operating system
US20030126464A1 (en) * 2001-12-04 2003-07-03 Mcdaniel Patrick D. Method and system for determining and enforcing security policy in a communication session
US6990666B2 (en) * 2002-03-18 2006-01-24 Surgient Inc. Near on-line server
US6681262B1 (en) * 2002-05-06 2004-01-20 Infinicon Systems Network data flow optimization
US20040002878A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Method and system for user-determined authentication in a federated environment
US7191344B2 (en) * 2002-08-08 2007-03-13 Authenex, Inc. Method and system for controlling access to data stored on a data storage device
US20040054791A1 (en) * 2002-09-17 2004-03-18 Krishnendu Chakraborty System and method for enforcing user policies on a web server
US8122106B2 (en) * 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7890543B2 (en) * 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7689676B2 (en) * 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7350186B2 (en) * 2003-03-10 2008-03-25 International Business Machines Corporation Methods and apparatus for managing computing deployment in presence of variable workload
US7603442B2 (en) * 2003-06-20 2009-10-13 Microsoft Corporation Method and system for maintaining service dependency relationships in a computer system
US7606929B2 (en) * 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US20060025984A1 (en) * 2004-08-02 2006-02-02 Microsoft Corporation Automatic validation and calibration of transaction-based performance models
US8627149B2 (en) * 2004-08-30 2014-01-07 International Business Machines Corporation Techniques for health monitoring and control of application servers
US7333000B2 (en) * 2004-11-12 2008-02-19 Afco Systems Development, Inc. Tracking system and method for electrically powered equipment
US7350068B2 (en) * 2005-04-22 2008-03-25 International Business Machines Corporation Server blade network boot method that minimizes required network bandwidth
US7805496B2 (en) * 2005-05-10 2010-09-28 International Business Machines Corporation Automatic generation of hybrid performance models

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190068803A (ko) * 2017-12-11 2019-06-19 엔에이치엔 주식회사 서버 모니터링 방법 및 이를 이용한 서버 모니터링 시스템

Also Published As

Publication number Publication date
ATE407506T1 (de) 2008-09-15
EP1494421A1 (en) 2005-01-05
RU2004117220A (ru) 2006-01-10
BRPI0402591B1 (pt) 2018-10-16
HK1073025A1 (en) 2005-09-16
JP4942921B2 (ja) 2012-05-30
KR101109218B1 (ko) 2012-01-30
BRPI0402591A (pt) 2005-02-09
AU2004202389B2 (en) 2009-12-10
CN1578320B (zh) 2012-06-20
TWI356311B (en) 2012-01-11
US7636917B2 (en) 2009-12-22
RU2380746C2 (ru) 2010-01-27
JP2005025756A (ja) 2005-01-27
MY142244A (en) 2010-11-15
IL162164A0 (en) 2005-11-20
CO5590203A1 (es) 2005-12-30
US20040268358A1 (en) 2004-12-30
EP1494421B1 (en) 2008-09-03
ZA200404375B (en) 2004-12-09
MXPA04006411A (es) 2005-03-31
NO20042744L (no) 2005-01-03
SG117505A1 (en) 2005-12-29
NZ533148A (en) 2006-02-24
DE602004016255D1 (de) 2008-10-16
NO331320B1 (no) 2011-11-21
EG23984A (en) 2008-02-27
CN1578320A (zh) 2005-02-09
CA2470300A1 (en) 2004-12-30
AU2004202389A1 (en) 2005-01-20
TW200506646A (en) 2005-02-16

Similar Documents

Publication Publication Date Title
KR101169073B1 (ko) 접속 조정을 이용한 네트워크 로드 밸런싱
KR101109218B1 (ko) 호스트 상태 정보를 이용한 네트워크 로드 밸런싱
US7613822B2 (en) Network load balancing with session information
US7567504B2 (en) Network load balancing with traffic routing
US7590736B2 (en) Flexible network load balancing
Kopparapu Load balancing servers, firewalls, and caches
US8671205B2 (en) Cooperative proxy auto-discovery and connection interception
US7363347B2 (en) Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US8077622B2 (en) Systems and methods for efficiently load balancing based on least connections
US7627650B2 (en) Short-cut response for distributed services
RU2387002C2 (ru) Выравнивание сетевой нагрузки с помощью управления соединением
Ivanisenko Methods and Algorithms of load balancing
WO2008017030A2 (en) System and method for routing traffic at a client via a first or a second transport layer connection
Prakash Enhance features and performance of content switches
Koskinen IP substitution as a building block for fault tolerance in stateless distributed network services

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 8