KR20160140995A - 애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템 - Google Patents

애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20160140995A
KR20160140995A KR1020167033455A KR20167033455A KR20160140995A KR 20160140995 A KR20160140995 A KR 20160140995A KR 1020167033455 A KR1020167033455 A KR 1020167033455A KR 20167033455 A KR20167033455 A KR 20167033455A KR 20160140995 A KR20160140995 A KR 20160140995A
Authority
KR
South Korea
Prior art keywords
devices
data structure
load balancing
anycast
data
Prior art date
Application number
KR1020167033455A
Other languages
English (en)
Other versions
KR101754408B1 (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 KR20160140995A publication Critical patent/KR20160140995A/ko
Application granted granted Critical
Publication of KR101754408B1 publication Critical patent/KR101754408B1/ko

Links

Images

Classifications

    • 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/1002
    • 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
    • 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/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • 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/1025Dynamic adaptation of the criteria on which the server selection is based
    • 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/1027Persistence of sessions during load balancing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

몇몇 구현들에서, 애니캐스트 어드레스로 주소지정된 데이터 트래픽을 로드 밸런싱하기 위한 시스템 및 대응하는 방법은, 복수의 로드 밸런싱(LB) 디바이스들 각각에 의해, LB 디바이스에 의해 서빙되는 애플리케이션 인스턴스들의 그룹 내의 애플리케이션 인스턴스들과 연관된 엔트리들을 포함하는 데이터 구조를 보유하는 단계를 포함한다. 각각의 서빙되는 애플리케이션 인스턴스가 데이터 구조에 포함되는 빈도는, 대응하는 서빙되는 애플리케이션 인스턴스의 용량과 연관된 가중값을 표시한다. 애니캐스트 어드레스로 본래 주소지정된 데이터 패킷을 수신할 시에, LB 디바이스는, LB 디바이스에 의해 보유된 데이터 구조 내의 서빙되는 애플리케이션 인스턴스들 중 하나의 가상 인터넷 프로토콜(IP) 어드레스를 식별하기 위해, 수신된 데이터 패킷의 하나 이상의 헤더 필드들을 사용한다. 그 후, LB 디바이스는 식별된 애플리케이션 인스턴스로 데이터 패킷을 포워딩한다.

Description

애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR LOAD BALANCING ANYCAST DATA TRAFFIC}
관련 특허 출원들에 대한 상호-참조
[0001] 본 출원은, 발명의 명칭이 "METHOD AND SYSTEM FOR LOAD BALANCING ANYCAST DATA TRAFFIC"으로 2014년 9월 24일자로 출원된 미국 특허출원 제14/495,683호의 이점을 주장하고 그 특허출원을 우선권으로 주장하고, 그 특허출원은, 발명이 명칭이 또한 "METHOD AND SYSTEM FOR LOAD BALANCING ANYCAST DATA TRAFFIC"으로 2014년 5월 13일자로 출원된 미국 가특허출원 제61/992,623호의 이점을 주장하고 그 가특허출원을 우선권으로 주장하며, 그 특허출원 및 그 가특허출원의 개시내용들 각각은 그 전체가 인용에 의애 본 명세서에 포함된다.
[0002] 본 개시내용은 일반적으로, 데이터 트래픽 로드 밸런싱의 분야에 관한 것이다.
[0003] 세계의 인터넷-액세스가능한 콘텐츠의 대부분은 큰 데이터 센터들에 호스팅된 서버들에 의해 제공된다. 그러한 데이터 센터들은 통상적으로, 다수의 지리적 위치들에 걸쳐 분산되어 있으며, 최종-사용자들을 글로벌하게 서빙한다. 통상적인 데이터 센터는, 최종-사용자(end-user)들에 제공되는 상이한 서비스들과 연관된 소프트웨어 애플리케이션들의 다수의 인스턴스(instance)들을 호스팅하는 수천개의 서버들을 하우징한다. 최종-사용자가, 예를 들어, 웹 사이트, 소셜 미디어 서비스, 스트리밍 미디어 콘텐츠 아이템, 게이밍 서비스, 또는 임의의 다른 온라인 서비스와 연관된 인터넷 콘텐츠에 대한 요청을 행할 경우, 요청은, 최종 사용자의 요청을 서빙하기 위하여 데이터 센터에 의해 호스팅되는 서비스와 연관된 애플리케이션 인스턴스로 전송된다.
[0004] 개시내용의 일 양상에 따르면, 애니캐스트(anycast) 어드레스로 주소지정된 데이터 트래픽을 로드 밸런싱하기 위한 방법은, 로드 밸런싱(LB) 디바이스들의 제1 세트의 각각의 LB 디바이스에 의해, LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 애플리케이션 인스턴스들의 그룹 내의 애플리케이션 인스턴스들과 연관된 엔트리들을 포함하는 제1 데이터 구조를 보유하는 단계를 포함한다. 각각의 서빙되는 애플리케이션 인스턴스가 제1 데이터 구조에 포함되는 빈도는, 대응하는 서빙되는 애플리케이션 인스턴스의 용량과 연관된 가중값을 표시한다. LB 디바이스들의 제1 세트 내의 LB 디바이스가 애니캐스트 어드레스로 본래 주소지정된 데이터 패킷을 수신할 시에, LB 디바이스는, 수신된 데이터 패킷의 헤더 필드들의 제1 세트에 기초하여 제1 해시값(hash value)을 생성한다. 그 후, 제1 세트의 LB는, 생성된 제1 해시값에 기초하여 서빙되는 애플리케이션 인스턴스들 중 하나의 가상 인터넷 프로토콜(IP) 어드레스를 식별하기 위해 제1 데이터 구조를 사용하며, 식별된 애플리케이션 인스턴스로 데이터 패킷을 포워딩한다. 방법은 또한, LB 디바이스들의 제2 세트의 LB 디바이스에 의해, 제1 세트 내의 각각의 LB 디바이스들과 연관된 엔트리들을 포함하는 제2 데이터 구조를 보유하는 단계를 포함하며, LB 디바이스들의 제1 세트 내의 각각의 LB 디바이스가 제2 데이터 구조에 포함되는 빈도는 제1 세트의 대응하는 LB 디바이스와 연관된 가중값을 표시한다. LB 디바이스들의 제2 세트의 LB 디바이스가 애니캐스트 어드레스로 본래 주소지정된 데이터 패킷을 수신할 시에, LB 디바이스는, 수신된 데이터 패킷의 헤더 필드들의 제2 세트에 기초하여 제2 해시값을 생성하고, 생성된 제2 해시값에 기초하여, 제2 데이터 구조를 사용하여 제1 세트의 LB 디바이스를 식별한다. 그 후, 제2 세트의 LB는 LB 디바이스들의 제1 세트의 식별된 LB 디바이스로 데이터 패킷을 포워딩한다.
[0005] 개시내용의 다른 양상에 따르면, 통신 네트워크에서 애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템은 로드 밸런싱(LB) 디바이스들의 제1 세트를 포함한다. LB 디바이스들의 제1 세트의 각각의 LB 디바이스는, LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 애플리케이션 인스턴스들의 그룹에서 애플리케이션 인스턴스들과 연관된 엔트리들을 포함하는 제1 데이터 구조를 보유하도록 구성된다. 각각의 서빙되는 애플리케이션 인스턴스가 제1 데이터 구조에 포함되는 빈도는, 대응하는 서빙되는 애플리케이션 인스턴스와 연관된 가중값을 표시한다. LB 디바이스들의 제1 세트의 LB 디바이스가 애니캐스트 어드레스로 주소지정된 시스템에서 수신되는 데이터 패킷을 수신할 시에, LB 디바이스는, 수신된 데이터 패킷의 하나 이상의 제1 헤더 필드들에 기초하여 제1 해시값을 생성하고, 생성된 제1 해시값에 기초하여, 서빙되는 애플리케이션 인스턴스들 중 하나의 가상 인터넷 프로토콜(IP) 어드레스를 식별하기 위해 제1 데이터 구조를 사용한다. 그 후, 제1 세트의 LB 디바이스는 식별된 애플리케이션 인스턴스로 데이터 패킷을 포워딩한다. 시스템은 또한, 로드 밸런싱(LB) 디바이스들의 제2 세트를 포함한다. LB 디바이스들의 제2 세트의 각각의 LB 디바이스는, 제1 세트 내의 각각의 LB 디바이스과 연관된 엔트리들을 포함하는 제2 데이터 구조를 보유하도록 구성된다. LB 디바이스들의 제1 세트 내의 각각의 LB 디바이스가 제2 데이터 구조에 포함되는 빈도는, 제1 세트의 대응하는 LB 디바이스와 연관된 가중값을 표시한다. LB 디바이스들의 제2 세트 내의 LB 디바이스가 애니캐스트 어드레스로 주소지정된 시스템에서 수신되는 데이터 패킷을 수신할 시에, LB 디바이스는, 수신된 데이터 패킷의 하나 이상의 제2 헤더 필드들에 기초하여 제2 해시값을 생성하고, 생성된 제2 해시값에 기초하여, 제2 데이터 구조를 사용하여 LB 디바이스들의 제1 세트의 LB 디바이스를 식별한다. 그 후, 제2 세트의 LB 디바이스는 제1 세트의 식별된 LB 디바이스로 데이터 패킷을 포워딩한다. 시스템은, 애니캐스트 어드레스로 주소지정된 데이터 패킷을 수신할 시에, 수신된 데이터 패킷을 LB 디바이스들의 제2 세트 내의 LB 디바이스로 포워딩하도록 구성된 애니캐스트 어드레스와 연관된 애니캐스트 노드를 더 포함한다.
[0006] 본 개시내용의 위의 그리고 관련 목적들, 특성들, 및 이점들은, 다음의 도면들과 함께 취해졌을 때 다음의 상세한 설명을 참조하여 더 완전하게 이해될 것이다.
[0007] 도 1은, 애니캐스트 어드레스로 주소지정된 데이터 트래픽을 로드 밸런싱하기 위한 단일-계층 로드 밸런싱 시스템의 일 구현의 블록도를 도시한다.
[0008] 도 2는, 단일-계층 로드 밸런싱 시스템에 의해 수행되는 애니캐스트 데이터 패킷들을 프로세싱하는 프로세스의 일 구현을 설명하는 흐름도를 도시한다.
[0009] 도 3은, 애니캐스트 어드레스로 주소지정된 데이터 트래픽을 로드 밸런싱하기 위한 2계층 로드 밸런싱 시스템의 일 구현의 블록도를 도시한다.
[0010] 도 4는, 2계층 로드 밸런싱 시스템의 다른 구현을 표현하는 블록도를 도시한다.
[0011] 도 5는, 2계층 로드 밸런싱 시스템에 의해 수행되는 애니캐스트 데이터 패킷들을 핸들링하는 프로세스의 일 구현을 설명하는 흐름도를 도시한다.
[0012] 도 6은, 로드 밸런서들에 의해 이용되는 데이터 구조를 생성하기 위한 프로세스의 일 구현을 설명하는 흐름도를 도시한다.
[0013] 도 7은 도 1 및 3의 시스템들에 의해 이용되는 데이터 구조들의 예시들을 도시한다.
[0014] 다양한 도면들 내의 동일한 참조 번호들 및 지정들은 동일한 엘리먼트들을 표시한다.
[0015] 온라인 서비스들 또는 애플리케이션들은 일반적으로, 각각의 애플리케이션 또는 서비스에 대한 다수의 애플리케이션 인스턴스들을 포함한다. 각각의 애플리케이션 또는 서비스에 대한 다수의 애플리케이션 인스턴스들은 다수의 컴퓨터 서버들 상에 상주할 수도 있다. 그러므로, 다수의 최종 사용자들에 의해 애플리케이션 또는 서비스에 액세스하는 것과 연관된 로드는, 대응하는 다수의 애플리케이션 인스턴스들의 적어도 서브세트에 걸쳐 분산될 수도 있다. 또한, 상이한 지리적 위치들에 걸쳐 주어진 애플리케이션 또는 서비스에 대한 다수의 애플리케이션 인스턴스들을 분산시키는 것은, 최종 사용자들에 의해 경험되는 레이턴시를 감소시키는 것을 돕는다. 특히, 최종-사용자는, 대응하는 다수의 애플리케이션 인스턴스들 중 하나 이상을 갖는 가장 가까운 지리적 위치에 의해 서빙될 수도 있다. 대응하는 가장 가까운 지리적 위치에 의해 각각의 최종 사용자 또는 클라이언트를 서빙하는 것이 레이턴시를 감소시키지만, 각각의 지리적 위치 내의 컴퓨터 서버들, 및 그 내의 애플리케이션 인스턴스들은 유한한 용량을 갖는다. 특정한 위치에서 주어진 애플리케이션 또는 서비스에 대한 요구가 동일한 위치에서 애플리케이션 인스턴스들의 용량을 초과하는 경우, 애플리케이션에 대한 과도한 요구는 다음의 가장 가까운 위치로 오버플로우(overflow)될 수도 있다.
[0016] 컴퓨터 서버들 및 그 상에서 실행되는 애플리케이션 인스턴스들의 유한한 용량들을 해결하기 위해, 도메인 명칭 시스템(DNS) 서버들이 전통적으로, 로드 밸런싱 기능들을 수행하기 위해 기존의 데이터 센터들에서 이용되었다. 다음에서, 애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 프로세스들, 장치들, 및 시스템들의 구현들이 제시된다.
[0017] 애니캐스트-기반 서비스들 또는 애플리케이션들에서, 하나 이상의 인터넷 프로토콜(IP) 어드레스들은, 애니캐스트를 사용하여 글로벌하게 다수의 서버들로부터 통지된다. 그 후, 주어진 애플리케이션 또는 서비스에 대한 애니캐스트 IP 어드레스는, 동일한 애플리케이션 또는 서비스에 액세스할 경우 최종-사용자들에 의해 사용된다. 그 후, 애니캐스트 어드레스와 연관된 데이터 트래픽, 예를 들어, 애플리케이션 또는 서비스에 액세스하기 위한 최종-사용자들로부터의 요청들은, 아래에서 설명되는 구현들에 도시된 바와 같이, 상이한 대응하는 애플리케이션 인스턴스들에 걸쳐 로드 밸런싱된다. 애니캐스트 어드레스와 연관된 데이터 트래픽은 또한, 애니캐스트 트래픽 또는 애니캐스트 데이터 트래픽으로 본 명세서에서 지칭된다. 몇몇 구현에서, 스테이트풀(stateful) 프로토콜들, 예를 들어, 전송 제어 프로토콜(TCP)과 연관된 애니캐스트 트래픽은, 인터넷 라우팅 테이블들이 변하더라도 대응하는 접속들이 유지되는 동안 로드 밸런싱 및 서빙된다. 또한, 아래에서 설명되는 구현들은, 상이한 위치들에 대한 용량들 또는 다른 로드 밸런싱 메트릭들을 특정하는 것을 허용하고, 로드, 용량, 또는 임의의 다른 로드 밸런싱 메트릭들에서의 변화들에 대한 신속한 로드 밸런싱 응답들을 허용한다.
[0018] 도 1은, 애니캐스트 어드레스로 주소지정된 데이터 트래픽을 로드 밸런싱하기 위한 단일 계층 로드 밸런싱 시스템(100)의 일 구현의 블록도를 도시한다. 시스템(100)은, 다수의 애니캐스트 리디렉터(redirector) 노드들(110a-110c)(또한, 개별적으로 또는 집합적으로 애니캐스트 노드(들)(110)로 아래에서 지칭됨), 로드 밸런서 디바이스들(120a-120b)(또한, 개별적으로 또는 집합적으로 로드 밸런서(들)(120)로 아래에서 지칭됨) 및 다수의 서버 클러스터들(130a-130c)(또한, 개별적으로 또는 집합적으로 클러스터(들)(130)로 아래에서 지칭됨)을 포함한다. 클러스터들(130) 각각은 다수의 애플리케이션 인스턴스들(131)을 포함한다.
[0019] 애니캐스트 어드레스로 주소지정된 데이터 패킷(10)은 애니캐스트 노드(110)에 의해 시스템(100)에서 수신된다. 예를 들어, 데이터 패킷(10)은 애니캐스트 노드(110)에 의해 수신된다. 애니캐스트 노드들(110)은, 애니캐스트 어드레스로 주소지정된 데이터 패킷들(10)을 수신하고, 수신된 데이터 패킷들을 대응하는 로드 밸런서들(120)에 리디렉팅(redirect)하도록 구성된 디바이스들이다. 몇몇 인스턴스들에서, 애니캐스트 노드(110)는, 수신된 데이터 패킷(10)을 대응하는 로드 밸런서(120)에 리디렉팅한다. 다른 인스턴스들에서, 수신 애니캐스트 노드(110)는, 시스템(100)의 하나 이상의 각각의 클러스터들(130)을 서빙하는 로드 밸런서들(120)의 풀(pool)에 수신된 데이터 패킷(10)을 리디렉팅한다.
[0020] 몇몇 구현들에서, 각각의 애니캐스트 노드(110)는, 대응하는 클러스터들(130) 또는 그러한 클러스터들과 연관된 로드 밸런서들(120)에 소스 인터넷 프로토콜(IP) 어드레스들을 매핑하는 각각의 맵을 보유하거나 그에 대한 액세스를 갖는다. 맵은 또한, 소스 IP 맵으로 지칭된다. 몇몇 인스턴스들에서, 각각의 소스 IP 어드레스는, 동일한 소스 IP 어드레스와 연관된 데이터 패킷 소스에 가장 가까운 클러스터(130) 또는 대응하는 로드 밸런서(들)(120)에 매핑된다. 당업자는, 소스 IP 어드레스들과 클러스터들(130), 또는 로드 밸런서들(120) 사이의 매핑들이, 예를 들어, 시스템(100)의 관리자들에 의해 행해진 할당들에 기초하여 상이하게 정의될 수도 있음을 인식해야 한다. 애니캐스트 어드레스로 주소지정된 데이터 패킷(10)을 수신할 시에, 애니캐스트 노드(110)는, 소스 인터넷 프로토콜(IP) 맵에서 패킷의 소스 IP 어드레스를 룩업(look up)하고, 매핑된 위치, 즉 소스 IP 맵 내의 소스 IP 어드레스와 연관된 위치에 데이터 패킷(10)을 리디렉팅한다. 매핑된 위치는, 시스템(100)의 로드 밸런서(120) 또는 로드 밸런서들(120)의 풀을 표시한다.
[0021] 몇몇 구현들에서, 애니캐스트 노드(110)는, 수신된 데이터 패킷(10)이 리디렉팅될 로드 밸런서(120) 또는 로드 밸런서들(120)의 풀을 결정하기 위해, 수신된 데이터 패킷(10)의 수 개의 헤더 필드들을 사용한다. 예를 들어, 수신 애니캐스트 노드(110)는, 다수의 애니캐스트 서비스 그룹들 중에서 애니캐스트 서비스 그룹을 결정하기 위해, 수신된 데이터 패킷(10)과 연관된 (가상 IP(VIP) 어드레스와 같은) 목적지 IP 어드레스 및 소스 포트를 사용한다. 몇몇 구현들에서, 수신 애니캐스트 노드(110)는, 애니캐스트 서비스 그룹을 결정하기 위해, 목적지 어드레스, 목적지 포트, 소스 IP 어드레스, 소스 포트, 프로토콜, 또는 이들의 임의의 결합을 사용할 수 있다. 수신 애니캐스트 노드(110)는 또한, 접속 식별자(ID) 등과 같은 데이터 패킷 페이로드에 포함된 다른 정보를 사용할 수도 있다. 예를 들어, 2개의 애니캐스트 서비스 그룹들이 정의될 수도 있으며, 하나의 그룹은 후단(backend) 로드 밸런싱을 위해 엔드포인트(endpoint) 서버들을 사용하고, 다른 그룹은 후단 로드 밸런싱을 위해 로드 밸런싱 서버들을 이용한다. 엔드포인트 서버들은 전송 제어 프로토콜(TCP) 접속을 종결시키도록 구성된다. 다른 예들에서, 상이한 애니캐스트 서비스 그룹들이 정의될 수도 있다. 패킷의 목적지 IP 어드레스 및 소스 포트를 대응하는 애니캐스트 서비스 그룹에 매핑할 시에, 수신 애니캐스트 노드(110)는, 예를 들어, 그러한 매핑들을 표시하는 제2 맵 또는 구성 정보를 이용한다. 수신 애니캐스트 노드(110)는 시스템(100)의 구역, 예를 들어, 하나 이상의 클러스터들(130)을 결정하기 위해, 수신 애니캐스트 노드(110)와 연관된 소스 IP 맵 및 수신된 데이터 패킷(10)의 소스 IP 어드레스를 추가적으로 이용한다. 몇몇 구현들에서, 단일 소스 IP 맵은 모든 애니캐스트 노드들(110)에 의해 공유된다. 다른 구현들에서, 상이한 애니캐스트 노드들(110)은 별개의 소스 IP 맵들과 연관될 수도 있다. 몇몇 구현들에서, 각각의 소스 Ip는 각각의 서비스와 연관된다. 그 후, 수신 애니캐스트 노드(110)는, 예를 들어, 제3 맵에 기초하여, 결정된 구역 및 결정된 애니캐스트 서비스 그룹을 로드 밸런서(120) 또는 로드 밸런서들(120)의 풀에 매핑한다. 그 후, 수신 애니캐스트 노드는, 결정된 로드 밸런서(120) 또는 로드 밸런서들(120)의 결정된 풀에 수신된 데이터 패킷(10)을 리디렉팅한다.
[0022] 당업자는 글로벌 매핑, 즉 소스 IP 맵을 사용하는 것이 애니캐스트 노드들(110)에 의한 데이터 패킷들(10)의 리디렉팅을 일관성있게 한다는 것을 인식해야 한다. 즉, 데이터 패킷이 애니캐스트(110b) 대신 애니캐스트 노드(110c)에서 수신되면, 애니캐스트 노드(110c)는, 소스 IP 맵을 사용하여, 애니캐스트 노드(110b)에 의해 선택될 동일한 로드 밸런서에 데이터 패킷(10)을 디리덱팅할 것이다.
[0023] 수신 애니캐스트 노드(110)는, 수신된 데이터 패킷(10)이 수신 애니캐스트 노드(110)에 의해 최근에 서빙되는 데이터 흐름, 또는 세션에 대응하는지를 결정하기 위하여 접속 테이블을 체크하도록 추가적으로 구성될 수 있다. 수신된 데이터 패킷이 접속 테이블에서 표시된 데이터 흐름 또는 세션에 대응하면, 수신 애니캐스트 노드(110)는, 대응하는 데이터 흐름 또는 세션과 연관된 목적지로 수신된 데이터 패킷(10)을 포워딩한다. 그렇지 않으면, 수신 애니캐스트 노드(110)는, 위에서 설명된 바와 같이 로드 밸런서(120) 또는 로드 밸런서들(120)의 풀을 결정하며, 결정된 로드 밸런서(120) 또는 로드 밸런서들(120)의 결정된 풀에 수신된 데이터 패킷(10)을 리디렉팅한다.
[0024] 몇몇 구현들에서, 각각의 로드 밸런서(120)는 프로세서 및 메모리를 포함하는 컴퓨팅 디바이스이다. 메모리는, 데이터 패킷(10)이 본래 주소지정된 애니캐스트 어드레스와 연관되는 컴퓨터 코드 명령들 및 데이터 구조(121)를 저장한다. 컴퓨터 코드 명령들은, 애니캐스트 어드레스와 연관된 데이터 패킷들을 로드 밸런싱하기 위한 소프트웨어 로드 밸런서를 포함한다. 몇몇 구현들에서, 소프트웨어 로드 밸런서는 가상 머신이다. 로드 밸런서(120)는, 동일한 애니캐스트 어드레스와 연관된 다수의 소프트웨어 로드 밸런서들 및/또는 다수의 애니캐스트 어드레스들과 연관된 다수의 소프트웨어 로드 밸런서들을 포함할 수도 있다. 데이터 구조(121)는, 애니캐스트 어드레스와 연관된 데이터 패킷들을 클러스터들(130)에 상주하는 대응하는 애플리케이션 인스턴스들(131)에 매핑하기 위하여 로드 밸런서(120)에 의해 이용된다. 몇몇 인스턴스들에서, 각각의 로드 밸런서(120)는, 동일한 로드 밸런서(120)에 의해 서빙되는 각각의 애니캐스트 어드레스에 대한 별도의 데이터 구조를 포함한다. 프로세서는, 메모리에 저장된 컴퓨터 코드 명령들을 실행하도록 구성된다. 당업자는, 각각의 로드 밸런서(120)가 다수의 프로세서들 및/또는 다수의 메모리들을 포함할 수도 있다는 것을 인식해야 한다. 로드 밸런서들(120)은, 컴퓨터 서버, TCP 접속을 종결시키는 엔드포인트 서버, 본 명세서에서 설명된 바와 같이 로드 밸런싱을 수행하도록 구성된 다른 전자 디바이스들, 또는 이들의 결합들을 포함한다.
[0025] 몇몇 인스턴스들에서, 로드 밸런서들(120)은 시스템(100)의 상이한 지리적 영역들에 걸쳐 분산된다. 예를 들어, 로드 밸런서들(120a, 120b, 및 120c)은 대응하는 클러스터들(130a, 130b, 및 130c)을 각각 서빙한다. 다른 인스턴스들에서, 로드 밸런서(120)는 하나보다 많은 클러스터(130)를 서빙할 수도 있다. 로드 밸런서(120)는 시스템(100)의 구역을 서빙할 수도 있다. 본 명세서의 구역은, 예를 들어, 대응하는 지리적 위치들 또는 다른 기준들에 기초하여 관련되는 시스템(100)의 하나 이상의 클러스터들(130)을 지칭한다. 예를 들어, 구역은, 동일한 데이터 센터 내에서와 같이 서로 가깝게 지리적으로 근접한 곳에 로케이팅된 다수의 클러스터들(130)을 포함할 수도 있다. 다른 인스턴스들에서, 구역은, 비교적 고속의 통신 링크들을 통해 상호-접속된 더 원거리의 클러스터들(130)을 포함할 수도 있다. 또한, 구역은 로드 밸런서들의 풀에 의해 서빙될 수도 있다.
[0026] 수신된 데이터 패킷(10)이 애니캐스트 노드(110)에 의해 로드 밸런서들(120)의 풀로 리디렉팅되는 인스턴스들에서, 동일-비용 다중-경로(equal-cost multi-path: ECMP) 라우팅은, 로드 밸런서들(120)의 풀의 특정한 로드 밸런서(120)로 수신된 데이터 패킷을 포워딩하기 위해 이용될 수도 있다. 예를 들어, 데이터 패킷(10)을 수신하는 디바이스는, 데이터 패킷(10)의 헤더 필드들, 예를 들어, 프로토콜, 소스 IP 어드레스, 목적지 IP 어드레스, 소스 포트, 및 목적지 포트를 포함하는 패킷의 5-튜플(tuple)에 기초하여 정수 해시값을 생성한다. 그 후, 수신 디바이스는, 생성된 해시값 모듈로(modulo) 로드 밸런서들(120)의 식별들을 포함하는 테이블의 사이즈에 기초하여 목적지 로드 밸런서(120)를 결정한다. 몇몇 구현들에서, 수신 디바이스는 아래에서 추가적으로 설명되는 바와 같이, 로드 밸런서(120)에 의해 사용된 것과 동일하거나 실질적으로 유사한 알고리즘들을 사용하여 목적지 로드 밸런서(120)를 결정한다. 그 후, 수신 디바이스는, 목적지 로드 밸런서(120)로 포인팅하기 위해 패킷의 계층-2 이더넷 헤더를 재기입함으로써 또는 제너릭(generic) 라우팅 인갭슐레이션(encapsulation)(GRE) 헤더 및 외부 IP 헤더와 데이터 패킷(10)을 인캡슐레이팅함으로써 데이터 패킷(10)을 목적지 로드 밸런서(120)에 전달한다. 다수의 소프트웨어 로드 밸런서들 중 하나로 수신된 데이터 패킷(10)을 포워딩하기 위해 패킷의 목적지 IP 어드레스를 서빙하는 다수의 소프트웨어 로드 밸런서들을 포함하는 로드 밸런서(120)에 의해 동일한 접근법이 이용될 수도 있다.
[0027] 데이터 패킷(10)을 수신할 시에, 수신 로드 밸런서(120) 또는 그 상의 소프트웨어 로드 밸런서는, 데이터 패킷(10)의 하나 이상의 헤더 필드들, 예를 들어, 프로토콜, 소스 IP 어드레스, 목적지 IP 어드레스, 소스 포트, 및 목적지 포트를 포함하는 패킷의 5-튜플에 기초하여 해시값을 생성한다. 몇몇 구현들에서, 데이터 구조(121)는, 수신 로드 밸런서(120)에 의해 서빙되는 애플리케이션 인스턴스들(131)의 그룹과 연관된 엔트리들을 포함한다. 애플리케이션 인스턴스들(131)의 그룹은, 데이터 패킷(10)이 시스템(100)에 도달할 경우 주소지정되었던 애니캐스트 어드레스와 연관된 애플리케이션 또는 서비스에 대응한다. 그 후, 수신 로드 밸런서(120)는, 수신 로드 밸런서(120)에 의해 서빙되는 애플리케이션 인스턴스들의 그룹의 애플리케이션 인스턴스(131)의 목적지 IP 어드레스를 결정하기 위해, 생성된 해시값 및 데이터 구조(121)를 사용한다. 그 후, 수신 로드 밸런서(120)는 결정된 애플리케이션 인스턴스(131)로 데이터 패킷(10)을 포워딩한다.
[0028] 몇몇 구현들에서, 데이터 구조(121)는, 각각의 애플리케이션 인스턴스(131)가 데이터 구조(121)에 포함되는 빈도가 동일한 애플리케이션 인스턴스(131)와 연관된 가중치를 반영하는 방식으로 설계된다. 애플리케이션 인스턴스(131)와 연관된 가중치는, 용량, 프로세싱 시간, 또는 데이터 패킷이 어떤 애플리케이션 인스턴스(131)로 포워딩될지를 결정하는 것에 관련된 다른 기준들과 같은 로드 밸런싱 메트릭들을 표시한다. 즉, 각각의 애플리케이션 인스턴스(131)와 연관된 가중치는, 애플리케이션 인스턴스(131)가 얼마나 비지(busy)한지 또는 얼마나 프리(free)한지를 반영할 수도 있다. 대안적으로, 주어진 애플리케이션 인스턴스(131)와 연관된 가중치는, 동일한 애플리케이션 인스턴스(131)가 사용되면 데이터 패킷(10)을 프로세싱하는 것이 얼마나 신속한지 또는 얼마나 느린지를 반영할 수도 있다. 각각의 애플리케이션의 용량은 초당 패킷들, 접속들, 또는 초당 동기식(SYN) 패킷들, 대역폭 등의 관점들에서 정의될 수도 있다. 프로세싱 시간은 라운드 트립 시간(RTT), 또는 당업계에 알려진 다른 메트릭들의 관점들에서 정의될 수도 있다. 데이터 구조(121)에서, 애플리케이션 인스턴스(131)가 더 빈번하게 포함될수록, 데이터 패킷(10)과 연관된 요청을 프로세싱하기 위해 동일한 애플리케이션(131)이 선택될 가능성이 더 많아진다.
[0029] 수신 로드 밸런서(120)는, 데이터 구조(121)의 엔트리를 선택하기 위해, 생성된 해시값을 사용한다. 예를 들어, 수신 로드 밸런서(120)는, 생성된 해시값 모듈로 데이터 구조의 사이즈 또는 데이터 구조의 엘리먼트 부분의 사이즈와 동일한 인덱스를 갖는 데이터 구조 엔트리를 선택할 수도 있다. 데이터 구조(121)의 각각의 엔트리는 대응하는 애플리케이션 인스턴스(131)를 표시한다. 예를 들어, 데이터 구조(121)의 각각의 엔트리는 대응하는 애플리케이션 인스턴스(131)의 목적지 IP 어드레스를 포함한다. 그 후, 수신 로드 밸런서(120)는, 선택된 데이터 구조 엔트리로부터 획득된 목적지 IP 어드레스를 갖는 애플리케이션 인스턴스(131)로 데이터 패킷(10)을 포워딩한다.
[0030] 몇몇 구현들에서, 데이터 구조(121)는, 시스템(100)의 대응하는 위치, 예를 들어, 클러스터(130) 또는 구역과 연관된 애플리케이션 인스턴스들에 대한 엔트리들을 포함하는 각각의 행(row) 또는 대안적으로는 각각의 열(column)을 갖는 단일 테이블이다. 그러므로, 수신 로드 밸런서(120)는 생성된 해시값에 기초하여, 먼저 행, 또는 대안적으로는 열을 선택하고, 그 후, 선택된 행, 또는 대안적으로는 선택된 열 내에서 엔트리를 선택할 수도 있다. 몇몇 구현들에서, 데이터 구조(121)는, 시스템(100)의 위치, 예를 들어, 구역 또는 클러스터(130)에 대응하는 각각의 테이블을 갖는 다수의 테이블들을 포함한다. 그러한 경우, 수신 로드 밸런서(120)는 생성된 해시값에 기초하여, 먼저 테이블을 선택하고, 그 후, 선택된 테이블 내에서 엔트리를 선택할 수도 있다.
[0031] 수신 로드 밸런서(120)는, 상이한 방식들로 시스템(100)의 위치에 대응하는 테이블, 또는 행 또는 열과 같은 서브-테이블을 선택할 수도 있다. 예를 들어, 선택은, 시스템(100)의 대응하는 위치들에 IP 서브넷들을 연관시키는 맵에 기초할 수도 있다. 그러한 맵은, 각각의 IP 서브넷으로부터의 트래픽이 시스템(100)의 어떤 위치에 일반적으로 도달하는지를 관측함으로써 정의될 수도 있다. 대안적으로, 맵은, 시스템(100)의 관리자들에 의해 행해진 할당들에 기초하여, 또는 시스템(100)의 위치들(130)과 IP 서브넷들 사이의 RTT 및 거리들에 기초하여 정의될 수도 있다. 수신 로드 밸런서(120)는, 맵에서 수신 데이터 패킷(10)과 연관된 소스 IP 어드레스를 룩업하고, 위치 또는 위치들의 가중된 리스트를 되돌린다(get back). 위치의 가중된 리스트가 맵으로부터 리트리브되면, 수신 로드 밸런서는, 대응하는 가중치들, 및 데이터 패킷(10)의 하나 이상의 헤더 필드들, 예를 들어, 5 튜플을 사용하여 생성된 다른 해시값에 기초하여 리스트로부터 위치를 선택할 수도 있다. 그러나, 어떠한 가중된 리스트도 사용되지 않으면, 수신 로드 밸런서(120)는, 맵에서 표시된 가장 가까운 위치가 데이터 패킷(10)을 핸들링하는데 충분한 이용가능한 용량을 갖는지를 체크한다. 충분한 용량을 갖는다면, 가장 가까운 위치가 선택되고, 그렇지 않다면, 맵에서 표시된 바와 같은 다음의 가장 가까운 위치가 체크되는 등의 식이다. 각각의 위치가 대응하는 테이블 또는 서브-테이블과 연관된다고 가정하면, 수신 로드 밸런서(120)는, 맵으로부터 위치를 선택할 경우 데이터 패킷(10)에 대한 목적지 애플리케이션 인스턴스(131)를 결정할 시에 사용을 위해 테이블 또는 서브-테이블을 선택한다. 당업자는, 데이터 구조(121)가 하나 이상의 테이블들 대신 하나 이상의 트리(tree)들 또는 당업계에 알려진 임의의 다른 데이터 구조들을 대안적으로 포함할 수도 있음을 인식해야 한다.
[0032] 수신 로드 밸런서(120)는 또한, 수신된 데이터 패킷(10)이 기존의 접속과 연관된 흐름 또는 세션에 대응하는지를 결정하기 위해, 애플리케이션 인스턴스(131)를 선택하기 전에, 접속 테이블을 체크할 수도 있다. 수신된 데이터 패킷(10)이 기존의 접속과 연관되는 것으로 발견되면, 데이터 패킷(10)은, 접속 테이블에서 접속과 연관된 애플리케이션 인스턴스로 포워딩된다. 그렇지 않으면, 수신 로드 밸런서(120)는, 데이터 구조(121)로부터 애플리케이션 인스턴스(131)를 결정하고, 결정된 애플리케이션 인스턴스(131)로 데이터 패킷(10)을 포워딩한다. 또한, 데이터 패킷(10)을 수신할 시에, 로드 밸런서(120)는, 데이터 패킷(10)이 하나 이상의 횟수들로 이전에 인캡슐레이팅되었다면, 데이터 패킷(10)을 추가적으로 디캡슐레이팅(de-capsulate)할 수도 있다. 그러므로, 수신 로드 밸런서(120)는, 내부 패킷에 도달할 때까지 데이터 패킷(10)을 디캡슐레이팅하며, 그 후, 데이터 패킷(10)을 프로세싱하기 위해 애플리케이션 인스턴스(131)를 결정할 시에 사용을 위하여 임의의 헤더 필드들을 리트리브한다.
[0033] 각각의 클러스터(130)는, 하나 이상의 서비스들과 연관된 애플리케이션 인스턴스들을 보유하는 하나 이상의 컴퓨터 서버들, 예를 들어, 콘텐츠 전달 서버들 및/또는 애플리케이션 서버들을 포함한다. 도 1에서, 클러스터들(130a-130c) 각각은, 데이터 패킷(10)이 시스템(100)에 도달할 경우 주소지정되었던 애니캐스트 어드레스를 통해 액세스된 애플리케이션 또는 서비스와 연관된 다수의 애플리케이션 인스턴스들(131)을 포함한다. 주어진 클러스터(130) 내의 애플리케이션 인스턴스들(131)은, 단일 컴퓨터 서버에 상주할 수도 있거나, 동일한 클러스터(130)의 다수의 컴퓨터 서버들 중에 분산될 수도 있다. 애플리케이션 인스턴스들(131)은 대응하는 목적지 IP 어드레스들을 통해 주소지정된다. 본 명세서에서 참조된 바와 같은 애플리케이션 인스턴스는, 이메일 애플리케이션, 게임 애플리케이션, 소셜 미디어 애플리케이션, 캘린더 애플리케이션, 또는 임의의 다른 온라인 애플리케이션과 같은 웹 페이지 또는 애플리케이션의 최종 사용자들의 요청들을 서빙하는 서버 애플리케이션의 카피(copy)를 포함한다. 데이터 패킷(10)을 수신하는 애플리케이션 인스턴스(131)는 데이터 패킷(10)과 연관된 요청을 프로세싱한다.
[0034] 도 2는, 단일-계층 로드 밸런싱 시스템(100)에 의해 수행되는 애니캐스트 데이터 패킷들을 프로세싱하는 프로세스(200)의 일 구현을 설명하는 흐름도를 도시한다. 프로세스(200)는, 애니캐스트 노드(110)에 의해, 애니캐스트 어드레스로 주소지정된 데이터 패킷(10)을 수신하고(스테이지(210)), 애니캐스트 노드(110)에 의해, 수신된 데이터 패킷(10)을 로드 밸런서(120)로 포워딩하며(스테이지(220)), 로드 밸런서(120)에 의해, 데이터 패킷이 이전에 서빙된 흐름 또는 세션과 연관되는지를 결정하는(스테이지(230)) 프로세스들을 포함한다. 데이터 패킷이 이전에 서빙된 흐름 또는 세션과 연관된다고 결정되면, 프로세스(200)는, 이전에 서빙된 흐름 또는 세션과 연관된 애플리케이션 인스턴스로 데이터 패킷(10)을 포워딩하는 것(스테이지(240))을 포함한다. 그렇지 않으면, 프로세스(200)는, 다수의 서브-데이터 구조들로부터 서브-데이터 구조를 선택하는 것(스테이지(250)), 선택된 서브-데이터 구조 및 데이터 패킷(10)의 하나 이상의 헤더 필드들에 기초하여 애플리케이션 인스턴스(131)를 결정하는 것(스테이지(260)), 및 결정된 애플리케이션 인스턴스로 데이터 패킷을 포워딩하는 것(스테이지(270))을 포함한다.
[0035] 최종 사용자들이 애니캐스트 어드레스와 연관된 온라인 서비스를 요청 또는 소비하는 경우, 최종 사용자들로부터 전송된 대응하는 데이터 패킷들은 동일한 애니캐스트 어드레스로 주소지정된다. 하나 이상의 애니캐스트 노드들(110)은, 애니캐스트 어드레스로 주소지정된 데이터 패킷들을 수신한다(스테이지(210)). 예를 들어, 애니캐스트 어드레스로 주소지정된 각각의 데이터 패킷은 데이터 패킷의 소스에 가장 가까운 애니캐스트 노드(110)에 의해 수신된다. 애니캐스트 노드로 주소지정된 데이터 패킷을 수신할 시에(스테이지(210)), 수신 애니캐스트 노드는, 수신된 데이터 패킷이 이전에 서빙된 흐름 또는 세션, 예를 들어, 이미 설정된 접속과 연관되는지를 결정하기 위해 접속 테이블을 체크할 수도 있다. 데이터 패킷이 기존의 흐름 또는 세션과 연관된다고 결정되면, 수신 애니캐스트 노드(110)는, 기존의 흐름 또는 세션과 연관된 다음의 홉(hop)으로 데이터 패킷을 포워딩한다. 접속 테이블의 체크는, 그것이 수신 애니캐스트 노드(110) 이외의 다른 네트워크 엘리먼트 또는 디바이스에 의해 수행될 수도 있거나 그것이 전체적으로 스킵될 수도 있으므로 선택적이다.
[0036] 동기식(SYN) 데이터 패킷 또는 흐름이 상이한 애니캐스트 노드에 의해 이전에 행해진 데이터 패킷과 같이 데이터 패킷이 기존의 흐름 또는 세션과 연관되지 않는 것으로 결정되거나, 어떠한 체크도 수신 애니캐스트 노드(110)에 의해 수행되지 않으면, 애니캐스트 노드는 데이터 패킷을 로드 밸런서(LB)(120)로 포워딩한다(스테이지(220)). 데이터 패킷을 포워딩(스테이지(220))할 시에, 수신 애니캐스트 노드(110)는, 데이터 패킷의 하나 이상의 헤더 필드들, 예를 들어, 소스 IP 어드레스, 목적지 IP 어드레스, 및/또는 소스 포트, 및 수신 애니캐스트 노드(110)와 연관된 서브-데이터 구조에 기초하여 로드 밸런서(120)를 결정할 수도 있다. 또한, 애니캐스트 노드(110)는, 데이터 패킷을 로드 밸런서(120)로 포워딩하기 전에, 데이터 패킷을 디캡슐레이팅하고 그리고/또는 하나 이상의 새로운 헤더들과 그 데이터 패킷을 인캡슐레이팅할 수도 있다.
[0037] 데이터 패킷을 수신할 시에, 로드 밸런서(120)는, 수신된 데이터 패킷이 이전에 서빙된 흐름 또는 세션, 예를 들어, 이미 설정된 접속과 연관되는지를 결정하기 위해 접속 테이블을 체크할 수도 있다(스테이지(230)). 데이터 패킷이 기존의 흐름 또는 세션에 대응한다고 결정되면, LB(120)는, 기존의 흐름 또는 세션을 서빙하는 애플리케이션 인스턴스로 데이터 패킷을 포워딩한다(스테이지(240)). 접속 테이블의 체크는, 그것이 LB(120) 이외의 다른 네트워크 엘리먼트 또는 디바이스에 의해 수행될 수도 있거나 그것이 전체적으로 스킵될 수도 있으므로 선택적이다.
[0038] 동기식(SYN) 데이터 패킷 또는 흐름이 상이한 애니캐스트 노드에 의해 이전에 행해진 데이터 패킷과 같이 데이터 패킷이 기존의 흐름 또는 세션과 연관되지 않는 것으로 결정되거나, 어떠한 체크도 LB(120)에 의해 수행되지 않으면, LB는 LB(120)에 의해 보유된 데이터 구조(121)로부터 서브-데이터 구조를 선택한다(스테이지(250)). 예를 들어, 데이터 구조(121)가 단일 테이블이면, 선택된 서브-데이터 구조는 테이블의 행 또는 열일 수도 있다. 데이터 구조(121)가 다수의 테이블들을 포함하는 다른 인스턴스들에서, 선택된 서브-데이터 구조는 다수의 테이블들의 테이블이다. 서브-데이터 구조의 선택은, 데이터 패킷의 헤더 필드(들) 및 IP 서브넷들과 시스템(100)의 대응하는 위치들 사이의 서브-데이터 구조에 기초할 수도 있다. 대안적으로, 선택은, 데이터 패킷의 헤더 필드(들) 및 서브-데이터 구조들의 리스트 내의 각각의 서브-데이터 구조에 대한 가중치를 반영하는 그 리스트에 기초할 수도 있다. 데이터 구조(121)의 각각의 서브-데이터 구조는, 시스템(100)의 대응하는 위치, 예를 들어, 클러스터(130) 또는 구역과 연관된 애플리케이션 인스턴스들(131)의 리던던트(redundant) 리스트를 표현한다. 애플리케이션 인스턴스(131)가 대응하는 서브-데이터 구조에 포함되는 빈도는, 동일한 애플리케이션 인스턴스(131)와 연관된 가중값에 의존한다.
[0039] 그 후, LB(120)는, 데이터 패킷의 하나 이상의 헤더 필드들을 사용하여, 선택된 서브-데이터 구조로부터 애플리케이션 인스턴스(131)를 결정한다(스테이지(260)). 예를 들어, LB(120)는, 데이터 패킷의 하나 이상의 헤더 필드들을 사용하여 해시값을 생성하고, 그 후, 서브-데이터 구조의 엔트리를 결정하기 위해, 생성된 해시값을 사용한다. LB(120)는, 생성된 해시값 모듈로 서브-데이터 구조의 사이즈를 계산하고, 선택된 엔트리에 대한 인덱스로서 결과를 사용할 수도 있다. 당업자는, 데이터 패킷의 헤더 필드(들)가 선택을 위해 서브-데이터 구조의 엔트리를 식별하기 위하여 상이한 방식들로 사용될 수도 있음을 인식해야 한다. 선택된 서브-데이터 구조의 각각의 엔트리는, 대응하는 애플리케이션 인스턴스(131)와 연관된 IP 어드레스, 예를 들어, 목적지 IP 어드레스를 포함한다. 그 후, LB(120)는 결정된 애플리케이션 인스턴스(131)로 데이터 패킷을 포워딩하며(스테이지(270)), 여기서, 데이터 패킷과 연관된 요청이 서빙된다.
[0040] 도 3은, 애니캐스트 어드레스로 주소지정된 데이터 트래픽을 로드 밸런싱하기 위한 2계층 로드 밸런싱 시스템(300)의 일 구현의 블록도를 도시한다. 시스템(300)은, 개별적으로 또는 집합적으로 애니캐스트 노드(들)(310)로 또한 아래에서 지칭되는 애니캐스트 리디렉터 노드들(310a-310c), 개별적으로 또는 집합적으로 제1 계층 로드 밸런서(들)(320)로 또한 아래에서 지칭되는 제1 계층 로드 밸런서 디바이스들(320a-320c), 개별적으로 또는 집합적으로 제2 계층 로드 밸런서(들)(325)로 또한 아래에서 지칭되는 제2 계층 로드 밸런서들(325a-325c), 및 개별적으로 또는 집합적으로 클러스터(들)(330)로 아래에서 또한 지칭되는 다수의 서버 클러스터들, 예를 들어, 클러스터들(330a-330c)을 포함한다. 클러스터들(330a-330c) 각각은 애니캐스트 어드레스를 통해 액세스되는 서비스와 연관된 다수의 애플리케이션 인스턴스들(331)을 포함한다.
[0041] 애니캐스트 노드(310)는, 대응하는 애니캐스트 어드레스로 주소지정된 수신된 데이터 패킷(10)을 하나 이상의 제1 계층 LB들(320)의 제1 계층 LB(320)로 포워딩하도록 구성된다. 애니캐스트 노드(310)는, 데이터 패킷(10)의 하나 이상의 헤더 필드들, 예를 들어, 소스 IP 어드레스, 목적지 IP 어드레스, 및/또는 소스 포트, 및 애니캐스트 노드(310)와 연관된 서브-데이터 구조에 기초하여, 데이터 패킷을 포워딩하기 위한 제1 계층 LB(320)를 결정한다. 또한, 애니캐스트 노드(310)는, 데이터 패킷을 선택된 제1 계층 LB(320)로 포워딩하기 전에, 데이터 패킷을 디캡슐레이팅하고 그리고/또는 하나 이상의 새로운 헤더들과 그 데이터 패킷을 인캡슐레이팅할 수도 있다. 또한, 애니캐스트 노드(310)는, 도 1에 관련하여 설명된 애니캐스트 노드(110)와 유사하게, 데이터 패킷을 수신할 시에 접속 테이블을 체크할 수도 있다.
[0042] 몇몇 구현들에서, 각각의 제1 계층 LB(320)는, 수신된 데이터 패킷들을 각각의 제2 계층 LB들(325)에 매핑하기 위한 제1 데이터 구조(321)를 포함한다. 몇몇 인스턴스들에서, 제1 데이터 구조(321)는, 각각의 제2 계층 LB(325)가 제1 데이터 구조에 포함되는 빈도가 동일한 제2 계층 LB(325) 또는 대응하는 위치와 연관된 가중값에 의존하도록, 제2 계층 LB들(325)의 리던던트 리스트를 포함한다. 예를 들어, 가중치들은, 각각의 대응하는 위치에서의 이용가능한 용량, 각각의 대응하는 위치에 대한 RTT, 다른 로드 밸런싱 기준, 또는 이들의 결합들을 반영할 수도 있다. 제1 계층 LB(320)는, 데이터 패킷(10)의 하나 이상의 헤더 필드들에 기초하여, 대응하는 제1 데이터 구조(321)로부터 제2 계층 LB(325)를 선택한다. 그 후, 제1 계층 LB(325)는 선택된 제2 계층 LB(325)로 데이터 패킷(10)을 포워딩한다. 몇몇 인스턴스들에서, 제1 계층 LB(320)는, 데이터 패킷(10)의 헤더 필드(들)를 사용하여 해시값을 생성하고, 생성된 해시값에 기초하여 제1 데이터 구조(321)로부터 제2 계층 LB(325)를 선택한다. 다른 인스턴스들에서, 제1 계층 LB(320)에 의한 제2 계층 LB(325)의 선택은, 도 2와 관련하여 설명된 바와 같이 서브-데이터 구조의 선택(스테이지(250))과 유사하게 수행될 수도 있다. 제1 계층 LB(320)에 의한 제2 계층 LB(325)의 선택은, (도 2의 스테이지(230), 스테이지(240) 및 스테이지(250)와 유사하게) 제1 계층 LB(320)에 의해 접속 테이블을 체크하는 것에 의존할 수도 있다.
[0043] 각각의 제2 계층 LB(325)는, 시스템(300)의 위치, 예를 들어, 구역 또는 클러스터(330)와 연관되며, 시스템(300)의 동일한 위치와 연관된 대응하는 제2 데이터 구조(326)를 포함한다. 제2 데이터 구조(326)는, 동일한 위치와 연관된 애플리케이션 인스턴스들의 리던던트 리스트를 포함한다. 각각의 애플리케이션 인스턴스가 제2 데이터 구조(326)에 포함되는 빈도는, 동일한 애플리케이션 인스턴스와 연관된 가중값을 반영한다. 그러한 가중치들은, 각각의 애플리케이션 인스턴스에서의 이용가능한 용량, 각각의 애플리케이션 인스턴스에 대한 RTT, 다른 로드 밸런싱 기준들, 또는 이들의 결합들을 반영할 수도 있다. 선택된 제2 계층 LB(325)는, 데이터 패킷(10)을 수신하고, 데이터 패킷(10)의 하나 이상의 헤더 필드들에 기초하여, 대응하는 제2 데이터 구조(326)로부터 애플리케이션 인스턴스를 선택한다. 예를 들어, 제1 계층 LB(320)는, 데이터 패킷(10)의 헤더 필드(들)를 사용하여 해시값을 생성하고, 생성된 해시값에 기초하여 제1 데이터 구조(321)로부터 제2 계층 LB(325)를 선택한다. 몇몇 구현들에서, 제2 데이터 구조(326)의 각각의 엔트리는, 대응하는 애플리케이션 인스턴스와 연관된 IP 어드레스, 예를 들어, 목적지 IP 어드레스를 포함한다. 생성된 해시값은, IP 어드레스를 선택할 시에 제2 데이터 구조 내의 엔트리의 인덱스로서 사용될 수 있다. 그 후, 제2 계층 LB(325)는 결정된 애플리케이션 인스턴스로 데이터 패킷(10)을 포워딩한다.
[0044] 각각의 클러스터(330)는, 하나 이상의 서비스들과 연관된 애플리케이션 인스턴스들을 보유하는 하나 이상의 컴퓨터 서버들, 예를 들어, 콘텐츠 전달 서버들 및/또는 애플리케이션 서버들을 포함한다. 도 3에서, 클러스터들(330a-330c) 각각은, 데이터 패킷(10)이 시스템(300)에 도달할 경우 주소지정되었던 애니캐스트 어드레스를 통해 액세스된 애플리케이션 또는 서비스와 연관된 다수의 애플리케이션 인스턴스들(331)을 포함한다. 주어진 클러스터(330) 내의 애플리케이션 인스턴스들(331)은, 단일 컴퓨터 서버에 상주할 수도 있거나, 동일한 클러스터(330)의 다수의 컴퓨터 서버들 중에 분산될 수도 있다. 애플리케이션 인스턴스들(331)은 대응하는 목적지 IP 어드레스들을 통해 주소지정된다. 데이터 패킷(10)을 수신하는 애플리케이션 인스턴스(331)는 데이터 패킷(10)과 연관된 요청을 프로세싱한다. 도 3에 도시된 바와 같이, 시스템(300)의 각각의 클러스터(330), 또는 구역은 하나 이상의 제2 계층 LB들(325)에 의해 서빙될 수도 있다. 예를 들어, 클러스터(330a)가 제2 계층 LB(325a)에 의해 서빙되는 반면, 클러스터(330b)는 2개의 제2 계층 LB들(325b 및 325b')에 의해 서빙된다.
[0045] 도 4는, 2계층 로드 밸런싱 시스템(300)의 다른 구현의 블록도를 도시한다. 예시의 편의성을 위해, 도 4에 도시된 블록도는 단지, 시스템(300)의 단일 애니캐스트 노드(310), 2개의 제1 계층 LB들(320a 및 320b), 2개의 제2 계층 LB들(325a 및 325b), 및 2개의 클러스터들(330a 및 330b)만을 도시한다. 시스템(300)은 또한, 제1 제어기(312), 제2 제어기(322), 제3 제어기(327), 및 글로벌 로드 밸런싱 제어기(350)를 포함한다.
[0046] 제1 제어기(312)는, 네트워크 엘리먼트, 컴퓨터 서버, 또는 다른 전자 디바이스를 포함한다. 제1 제어기(312)는, 대응하는 애니캐스트 어드레스로 주소지정된 수신된 데이터 패킷들(10)을 핸들링할 시에 애니캐스트 노드(310)에 의해 이용되는 소스 IP 맵, 접속 테이블, 및/또는 다른 정보와 같은 정보를 이용하여 애니캐스트 노드(310)를 구성한다. 제1 제어기(312)는, 시스템(300)의 하나 이상의 데이터베이스들 또는 다른 디바이스들로부터 그러한 정보를 포착하고, 대응하는 업데이트들을 애니캐스트 노드(310)에 제공할 수도 있다.
[0047] 제2 제어기(322)는, 네트워크 엘리먼트, 컴퓨터 서버, 또는 다른 전자 디바이스를 포함한다. 제2 제어기(322)는, 시스템(300)의 각각의 위치, 예를 들어, 클러스터(330) 또는 구역과 연관된 가중치들, 데이터 패킷들을 시스템(300)의 위치들로 라우팅하기 위한 라우팅 정보, 접속 테이블, 및/또는 수신된 데이터 패킷들(10)을 핸들링할 시에 제1 계층 LB(320)에 의해 이용되는 다른 정보와 같은 정보를 제공함으로써 제1 계층 LB들(320a 및 320b)을 구성한다. 제2 제어기 디바이스(322)는, 시스템(300)의 글로벌 로드 밸런싱 제어기(350), 하나 이상의 데이터베이스들, 또는 다른 디바이스들로부터 그러한 정보를 포착하고, 대응하는 업데이트들을 제1 계층 LB(320)에 제공할 수도 있다.
[0048] 제3 제어기(327)는, 네트워크 엘리먼트, 컴퓨터 서버, 또는 다른 전자 디바이스를 포함한다. 제3 제어기(327)는, 시스템(300)의 대응하는 위치 내의 각각의 애플리케이션 인스턴스(331)와 연관된 가중치들, 데이터 패킷들(10)을 애플리케이션 인스턴스들(331)로 라우팅하기 위한 라우팅 정보, 및/또는 수신된 데이터 패킷들(10)을 핸들링할 시에 제2 계층 LB(320)에 의해 이용되는 다른 정보와 같은 정보를 제공함으로써 제2 계층 LB들(325a 및 325b)을 구성한다. 제3 제어기 디바이스(327)는, 시스템(300)의 하나 이상의 데이터베이스들 또는 다른 디바이스들로부터 그러한 정보를 포착하고, 대응하는 업데이트들을 제2 계층 LB(320)에 제공할 수도 있다.
[0049] 도 4에서, 시스템(300)의 상이한 컴포넌트들 사이의 실선들은 데이터 패킷 경로(또한, 데이터 평면으로 지칭됨)를 표시하고, 파선들은 구성 정보/명령들의 흐름(또한, 제어 평면으로 지칭됨)을 표시하며, 파단선들은 (또한, 제어 평면의 일부일 수도 있는) 피드백 경로들을 표시한다. 몇몇 구현들에서, 제1 계층 LB(320)가 시스템(300)의 위치 또는 대응하는 제2 계층 LB(325)로 데이터 패킷을 포워딩할 때마다, 제1 계층 LB(325)는 포워딩을 글로벌 로드 밸런싱 제어기(350)에 보고한다. 또한, 제2 계층 LB(325)는, 데이터 패킷(10)의 포워딩을 글로벌 로드 밸런싱 제어기(350) 및/또는 시스템(300)의 다른 디바이스에 보고할 수도 있다. 글로벌 로드 밸런싱 제어기(350)는, 시스템(300)의 상이한 위치들과 연관된 가중치들을 업데이트하기 위하여 제1 계층 LB(320)에 의해 보고된 정보를 사용한다. 제2 계층 LB(325)에 의해 보고된 정보는, 상이한 애플리케이션 인스턴스들(331)과 연관된 가중치들을 업데이트하기 위해, 글로벌 로드 밸런싱 제어기(350), 또는 제2 계층 LB(325)와 연관된 위치에 로컬인 디바이스에 의해 사용된다. 몇몇 구현들에서, 클러스터들(330)은, 자신의 서버들 또는 애플리케이션 인스턴스들(331)의 상태 정보를 시스템(300) 내의 글로벌 로드 밸런싱 제어기(350) 및/또는 다른 디바이스들에 제공하도록 구성될 수 있다. 시스템(300) 내의 글로벌 로드 밸런싱 제어기(350) 또는 다른 디바이스는, 상이한 애플리케이션 인스턴스들(331)과 연관된 가중치들을 업데이트하기 위하여 클러스터들(330)에 의해 보고된 정보를 사용할 수 있다. 몇몇 구현들에서, 글로벌 로드 밸런싱 제어기(350)는 또한, 링크 혼잡들에 대한 데이터를 라우터들 및/또는 네트워크 엘리먼트들로부터 획득한다.
[0050] 도 5는, 2계층 로드 밸런싱 시스템(300)에 의해 수행되는 애니캐스트 데이터 패킷들을 프로세싱하는 프로세스(500)의 일 구현을 설명하는 흐름도를 도시한다. 프로세스(500)는, 애니캐스트 노드(310)에 의해, 애니캐스트 어드레스로 주소지정된 데이터 패킷(10)을 수신하고(스테이지(510)), 애니캐스트 노드(310)에 의해, 수신된 데이터 패킷(10)을 제1 계층 LB(320)로 포워딩하고(스테이지(520)), 제1 계층 LB(320)에 의해, 데이터 패킷이 이전에 서빙된 흐름 또는 세션과 연관되는지를 결정하고(스테이지(530)), 데이터 패킷(10)이 이전에 서빙된 흐름 또는 세션과 연관되는 것으로 결정되면, 이전에 서빙된 데이터 흐름 또는 세션과 연관된 애플리케이션 인스턴스로 데이터 패킷(10)을 포워딩하고(스테이지(540)), 그렇지 않으면, 제1 계층 LB(320)에 의해 보유된 제1 데이터 구조 및 데이터 패킷(10)의 하나 이상의 헤더 필드들에 기초하여 제2 계층 LB(325)를 선택하고(스테이지(550)), 선택된 제2 계층 LB(325)로 데이터 패킷을 포워딩하고(스테이지(560)), 선택된 제2 계층 LB(325)에 의해, 제2 계층 LB(325)에 의해 보유된 제2 데이터 구조 및 데이터 패킷(10)의 하나 이상의 헤더 필드들에 기초하여 애플리케이션 인스턴스(331)를 결정하며(스테이지(570)), 결정된 애플리케이션 인스턴스로 데이터 패킷을 포워딩하는(스테이지(580)) 프로세스들을 포함한다.
[0051] 프로세스(500)의 스테이지들(510-540)은, (도 3 및 4에 도시된) 제1 계층 LB(325)가 (도 1에 도시된) 로드 밸런서(120) 대신 사용된다는 점을 제외하고, 도 2와 관련하여 설명된 프로세스(200)의 스테이지들(210-240)과 유사하다. 또한, 스테이지들(530 및 540)은, 접속 테이블의 체크가 제1 계층 LB(320) 이외의 다른 디바이스에 의해 수행될 수도 있으므로 선택적이다. 데이터 패킷(10)을 수신하는 제1 계층 LB(320)는, 제1 계층 LB(320)에 의해 보유된 제1 데이터 구조(321) 및 데이터 패킷(10)의 하나 이상의 헤더 필드들에 기초하여 제2 계층 LB(325)를 선택한다(스테이지(550)). 제1 데이터 구조(321)는, 시스템(300)에 제2 계층 LB들(325) 또는 대응하는 위치들, 예를 들어, 클러스터들(330) 또는 구역들의 리던던트 리스트를 포함한다. 각각의 제2 계층 LB(325) 또는 대응하는 위치가 제1 데이터 구조(321)에 포함되는 빈도는 동일한 대응하는 위치와 연관된 가중값에 의존한다. 가중치들은, 각각의 대응하는 위치에서의 이용가능한 용량, 각각의 대응하는 위치에 대한 RTT, 다른 로드 밸런싱 기준, 또는 이들의 결합들을 반영할 수도 있다. 몇몇 인스턴스들에서, 제1 계층 LB(320)는, 데이터 패킷(10)의 헤더 필드(들)를 사용하여 해시값을 생성하고, 생성된 해시값에 기초하여 제1 데이터 구조(321)로부터 제2 계층 LB(325)를 선택한다. 예를 들어, 제1 계층 LB(320)는, 제1 데이터 구조로부터 선택될 엔트리의 인덱스로서, 생성된 해시값 모듈로 제1 데이터 구조의 사이즈를 사용한다. 그 후, 제1 계층 LB(320)는, 선택된 제2 계층 LB(325) 또는 선택된 위치와 연관된 제2 계층 LB(325)로 데이터 패킷을 포워딩한다(스테이지(560)).
[0052] 데이터 패킷(10)을 수신하는 제2 계층 LB(325)는, 제2 계층 LB(325)에 의해 보유된 제2 데이터 구조(326) 및 데이터 패킷(10)의 하나 이상의 헤더 필드들에 기초하여 애플리케이션 인스턴스(331)를 결정한다(스테이지(570)). 제2 데이터 구조(326)는, 애플리케이션 인스턴스들(331)의 리던던트 리스트를 포함한다. 각각의 애플리케이션 인스턴스(331)가 제2 데이터 구조(326)에 포함되는 빈도는, 애플리케이션 인스턴스들(331)과 연관된 가중값에 의존한다. 가중치들은, 각각의 대응하는 애플리케이션 인스턴스(331)에서의 이용가능한 용량, 각각의 대응하는 애플리케이션 인스턴스(331)에 대한 RTT, 다른 로드 밸런싱 기준들, 또는 이들의 결합들을 반영할 수도 있다. 제2 계층 LB(325)는, 데이터 패킷(10)의 헤더 필드(들)를 사용하여 해시값을 생성하고, 생성된 해시값에 기초하여 제2 데이터 구조(326)로부터 애플리케이션 인스턴스(331)를 결정한다. 예를 들어, 제2 계층 LB(325)는, 제2 데이터 구조(326)로부터 선택될 엔트리의 인덱스로서, 생성된 해시값 모듈로 제2 데이터 구조(326)의 사이즈를 사용한다. 그 후, 제2 계층 LB(325)는 결정된 애플리케이션 인스턴스(331)로 데이터 패킷(10)을 포워딩한다(스테이지(580)).
[0053] 도 6은, 로드 밸런서들에 의해 이용되는 리던던트 리스트를 생성하기 위한 프로세스(600)의 일 구현을 설명하는 흐름도를 도시한다. 예를 들어, 엔티티들의 리스트 각각이 대응하는 가중값과 연관된다고 가정하면, 리스트 내의 엔티티들의 수보다 큰 소수(prime number)는 생성될 리던던트 리스트의 사이즈로서 선택된다. 프로세스(600)를 실행하는 프로세서는, 엔티티들의 주어진 리스트 내의 각각의 엔티티에 대한 오프셋 값 및 스텝(step) 값을 선택한다(스테이지(610)). 그 후, 프로세서는, 엔티티들의 주어진 리스트로부터 엔티티를 선택한다(스테이지(620)). 선택은, 엔티티들의 (명칭들, 명칭들의 일부들, 식별 스트링들 등과 같은) 식별들의 의사랜덤 치환(permutation)에 기초하여 행해질 수 있다. 프로세서는, 선택된 엔티티에 대한 리던던트 리스트에 이미 포함된 엔트리들의 수를 대응하는 동적 임계값과 비교한다(스테이지(630)). 예를 들어, 동적 임계값은, 선택된 엔티티에 대응하는 가중치 곱하기 반복 수로서 정의된다. 이미 포함된 엔트리들의 수가 (스테이지(630))에서 동적 임계값보다 작은 것으로 발견되면, 프로세서는, 생성될 리던던트 리스트 내의 오프셋 값에 의해 표시된 포지션이 비워져 있는지를 체크한다(스테이지(640)). 오프셋 값에 의해 표시된 포지션이 비워져 있는 것으로 발견되지 않으면, 프로세서는, 대응하는 스텝값을 이용하여 오프셋 값을 증분시키고 증분된 값 모듈로 리던던트 리스트의 사이즈를 절단(truncate)시킴으로써 그 오프셋 값을 업데이트한다(스테이지(650)). 그 후, 프로세서는, 업데이트된 오프셋 값에 의해 표시된 포지션이 비워져 있는지를 체크한다(스테이지(640)). 스테이지들(650 및 640)은, 비워져 있는 포지션이 검출될 때까지 반복된다. 임의의 포인트에서 프로세스(스테이지(640))의 결과가 비워져 있는 포지션을 표시하면, 프로세서는, 비워져 있는 포지션에 선택된 엔티티에 대응하는 엔트리를 부가한다(스테이지(660)). 일단 선택된 엔티티에 대한 엔트리가 리던던트 리스트에 부가되거나(스테이지(660)), 선택된 엔티티에 대한 이미 부가된 엔트리들의 수가 (스테이지(630))에서 동적 임계치보다 큰 것으로 발견되면, 프로세서는, 주어진 리스트 내의 모든 엔티티들이 현재의 반복에서 프로세싱되는지를 체크한다(스테이지(670)). 주어진 리스트 내의 모든 엔티티들이 프로세싱되지는 않으면, 프로세서는 프로세싱을 위해 주어진 리스트로부터 새로운 엔티티를 선택한다(스테이지(620)). 그렇지 않으면, 프로세서는 반복 수를 증분시키며(스테이지(680)), 그 후, 프로세싱을 위해 주어진 리스트로부터 엔티티를 선택한다(스테이지(620)). 프로세서는, 리던던트 리스트가 가득찰 때까지 도 6에 도시된 스테이지들을 통해 반복한다.
[0054] 프로세스(600)는 1차원 테이블, 예를 들어, 행 또는 열, 트리, 서브-트리, 또는 임의의 다른 데이터 구조로서 리던던트 리스트를 생성한다. 주어진 리스트 내의 엔티티들은, 애플리케이션 인스턴스들(131 또는 331), 로드 밸런서들(120 또는 325), 또는 로드 밸런싱 시스템(100 또는 300)의 위치들일 수도 있다. 생성된 리던던트 리스트에서, 각각의 엔티티가 반복되는 빈도는, 동일한 엔티티에 대응하는 가중값에 의존한다. 리던던트 리스트의 사이즈가 주어진 리스트 내의 엔티티들의 총 수보다 훨씬 더 크도록, 예를 들어, 100배 더 크도록 선택되는 인스턴스들에서, 엔티티들이 리던던트 리스트에 포함되는 빈도들은, 대응하는 가중치들에 거의 비례하게 된다. 주어진 리스트 내의 엔티티들의 수에 대한 생성된 리던던트 리스트의 사이즈가 더 커질수록, 빈도들과 동일한 엔티티들의 가중치들 사이의 비례가 더 정확하게 된다.
[0055] 도 7은 도 1 및 3의 시스템들에 의해 이용되는 데이터 구조들의 예시들을 도시한다. 클러스터 A, 예를 들어, 클러스터들(130a 또는 330a)의 3개의 애플리케이션 인스턴스들(A_1, A_2, 및 A_3), 및 클러스터 B, 예를 들어, 클러스터들(130b 또는 330b)의 3개의 애플리케이션 인스턴스들(B_1, B_2, 및 B_3)을 고려하면, 도 7의 테이블의 각각의 행은, 가중치들의 대응하는 세트들에 기초하여 생성된 (도 6에 도시된) 프로세스(600)의 (17과 동일한 사이즈를 갖는) 샘플 출력을 도시한다. 예를 들어, 제1 행은, 각각의 애플리케이션 인스턴스(A_1, A_2, 및 A_3)와 연관된 가중치들이 1.0과 동일하고 애플리케이션 인스턴스들(B_1, B_2, 및 B_3)과 연관된 가중치들이 0.0과 동일한 출력에 대응한다. 임의의 행으로부터 다음의 행으로 진행하면, 애플리케이션 인스턴스들(A_1, A_2, 및 A_3)에 대한 가중값은 0.1만큼 감분되고, 애플리케이션 인스턴스들(B_1, B_2, 및 B_3)에 대한 가중값은 0.1만큼 증분된다.
[0056] 애플리케이션 인스턴스들과 연관된 가중치들이 도 7에 도시된 테이블에서 하나의 행으로부터 다음의 행까지 느리게 변하므로, 하나의 행으로부터 다음의 행까지 몇몇 변화들만이 관측된다. 사실, 도 7의 테이블의 열들을 조사함으로써, 판독자는, 가중치들이 하나의 행으로부터 다음의 행까지 약간 변하므로, 몇몇 변화들만이 각각의 열에 걸쳐 발생한다는 것을 관측할 수 있다.
[0057] 도 1의 클러스터(130a)가 애플리케이션 인스턴스들(A_1, A_2, 및 A_3)을 포함하고 이들 인스턴스들 각각이 오버플로우를 경험하고 있다는 시나리오를 고려한다. 오버플로우 요건, 예를 들어, 20%는, 이용가능한 용량을 갖는 다음의 가장 가까운 클러스터, 예를 들어, 애플리케이션 인스턴스들(B_1, B_2, 및 B_3)을 포함하는 도 1의 클러스터(130b)로 리디렉팅될 것이다. 그러므로, 도 1의 클러스터(130a)와 연관된 애니캐스트 트래픽에 대해, 0.8의 가중값은 애플리케이션 인스턴스들(A_1, A_2, 및 A_3) 각각과 연관되고, 0.2의 가중값은 애플리케이션 인스턴스들(B_1, B_2, 및 B_3) 각각과 연관된다. 그러한 경우, 도 7의 테이블의 제3 행은 도 1의 클러스터(130a)와 연관된 서브-데이터 구조의 샘플을 표현한다. 또한, 애플리케이션 인스턴스들(B_1, B_2, 및 B_3)이 클러스터(130b)로 진행하는 애니캐스트 트래픽을 서빙하기에 충분한 대역폭을 갖는다고 가정하면, 이들 애플리케이션 인스턴스들 모두는, 그 트래픽이 도 1에 도시된 클러스터(130b)와 연관된 애니캐스트 트래픽이 되는 경우 1.0의 동일한 가중치를 가질 것이다. 그러므로, 도 7의 테이블의 마지막 행은 도 1의 클러스터(130b)와 연관된 서브-데이터 구조의 샘플을 표현한다.
[0058] 연속하는 행들의 임의의 쌍을 비교하면, 판독자는, 몇몇 엔트리들만이 하나의 행으로부터 다음의 행까지 변한다는 것을 관측할 수 있다. 그러한 관측은, 가중값들에서의 작은 변화(가중값들은 하나의 행으로부터 다음의 행까지 ±0.1만큼 변함)가 데이터 경로들에 대해 약간의 영향을 갖는다는 것을 표시한다. 작은 가중값과 연관된 하나의 애플리케이션 인스턴스를 부가 또는 제거하는 것은 또한, 각각의 행 또는 서브-데이터 구조의 엔트리들에 대해 약간의 영향을 가질 것이다. (도 6에 도시된 프로세스(600)를 사용하여) 행들 또는 서브-데이터 구조들이 생성되는 방식은, 새로운 요청들을 (도 1 및 3에 도시된) 각각의 애플리케이션 인스턴스들(131 또는 331)에 할당할 시에 일관성을 초래한다. 몇몇 구현들에서, 가중값들에서의 작은 변화들 및/또는 작은 가중치들과 연관된 애플리케이션 인스턴스들을 부가/제거하는 것은, 그러한 변화들이 데이터 트래픽을 로드 밸런싱하는 것에 대해 약간의 영향을 가지므로, 데이터 트래픽의 재라우팅(또는, 네트워크 라우터들 또는 다른 네트워크 엘리먼트들에서 라우팅 테이블들을 재계산하는 것)을 초래하지 않을 것이다.
[0059] 예를 들어, 이전의 단락에서 논의된 바와 같이 동일한 가중치들을 갖는 유사한 시나리오를 고려하면, 애플리케이션 인스턴스들이 도 3의 클러스터(330a)와 연관되고, 애플리케이션 인스턴스들(B_1, B_2, 및 B_3)이 도 3의 클러스터(330b)와 연관되는 경우, 도 7의 테이블의 제3 행은 그 후에, 도 3의 클러스터(330a)와 연관된 제2 데이터 구조(326)의 샘플을 표현한다. 또한, 도 7의 테이블의 마지막 행은 도 3의 클러스터(330b)와 연관된 제2 데이터 구조(326)의 샘플을 표현한다.
[0060] 본 명세서에서 설명된 청구대상 및 동작들의 구현들은, 디지털 전자 회로에서, 또는 본 명세서에 기재된 구조들 및 그들의 구조적 등가물들을 포함하는 유형의 매체, 펌웨어, 또는 하드웨어 상에 수록된 컴퓨터 소프트웨어에서, 또는 그들 중 하나 이상의 결합들에서 구현될 수 있다. 본 명세서에 설명된 청구대상의 구현들은, 데이터 프로세싱 장치에 의한 실행을 위해, 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 하나 이상의 컴퓨터 저장 매체들 상에서 인코딩되는 유형의 매체 상에 수록된 하나 이상의 컴퓨터 프로그램들, 즉 컴퓨터 프로그램 명령들의 하나 이상의 모듈들로서 구현될 수 있다. 컴퓨터 저장 매체는, 컴퓨터-판독가능 저장 디바이스, 컴퓨터-판독가능 저장 기판, 랜덤 또는 시리얼 액세스 메모리 어레이 또는 디바이스, 또는 그들 중 하나 이상의 결합일 수 있거나 그들에 포함될 수 있다. 컴퓨터 저장 매체는 또한, 하나 이상의 별도의 컴포넌트들 또는 매체들(예를 들어, 다수의 CD들, 디스크들, 또는 다른 저장 디바이스들)일 수 있거나 그들에 포함될 수 있다. 컴퓨터 저장 매체는 유형이고 비-일시적일 수도 있다.
[0061] 본 명세서에 설명된 동작들은, 하나 이상의 컴퓨터-판독가능 저장 디바이스들 상에 저장되거나 다른 소스들로부터 수신된 데이터에 대하여 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예를 들어, FPGA(필드 프로그래밍가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)에 의해 수행될 수 있거나, 장치는 또한 그들로서 구현될 수 있다.
[0062] 본 명세서가 많은 특정한 구현 세부사항들을 포함하지만, 이들은 임의의 발명들 또는 청구될 수도 있는 것의 범위에 대한 제한들로서 해석되는 것이 아니라 오히려, 특정한 발명들의 특정한 구현들에 특정한 특성들의 설명들로서 해석되어야 한다. 별도의 구현들의 맥락에서 본 명세서에 설명된 특정한 특성들은 또한, 단일 구현의 결합으로 구현될 수 있다. 대조적으로, 단일 구현의 맥락에서 설명된 다양한 특성들은 또한, 다수의 구현들에서 별개로 또는 임의의 적절한 서브-결합으로 구현될 수 있다. 또한, 특성들이 특정한 결합들에서 동작하는 것으로 위에서 설명되고 심지어 초기에는 그와 같이 청구될 수도 있지만, 청구된 결합으로부터의 하나 이상의 특성들은 몇몇 경우들에서, 그 결합으로부터 삭제될 수 있으며, 청구된 결합은 서브-결합 또는 서브-결합의 변경으로 안내될 수도 있다.
[0063] "또는"에 대한 참조들은, "또는"을 사용하여 설명된 임의의 용어들이 설명된 용어들 중 하나의 용어, 하나보다 많은 용어, 및 그 전체 중 임의의 것을 표시할 수도 있도록 포괄적인 것으로 해석될 수도 있다. 라벨들 "제1", "제2", "제3" 등은, 반드시 순서화를 표시하도록 의미되지는 않으며, 동일하거나 유사한 아이템들 또는 엘리먼트들 사이를 구별하기 위해서만 일반적으로 사용된다.
[0064] 이와 같이, 청구대상의 특정한 구현들이 설명되었다. 다른 구현들은 다음의 청구항들의 범위 내에 존재한다. 몇몇 경우들에서, 청구항들에서 인용된 동작들은, 상이한 순서로 수행될 수 있으며, 여전히 바람직한 결과들을 달성할 수 있다. 부가적으로, 첨부한 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 특정한 구현들에서, 멀티태스킹 및 병렬 프로세싱이 이용될 수도 있다.

Claims (22)

  1. 통신 네트워크에서 애니캐스트(anycast) 트래픽을 로드 밸런싱하기 위한 시스템으로서,
    로드 밸런싱(LB) 디바이스들의 제1 세트;
    로드 밸런싱(LB) 디바이스들의 제2 세트; 및
    상기 애니캐스트 어드레스와 연관된 애니캐스트 노드를 포함하며,
    상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스는,
    상기 LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 애플리케이션 인스턴스(instance)들의 그룹 내의 애플리케이션 인스턴스들과 연관된 엔트리들을 포함하는 제1 데이터 구조를 보유하고 - 각각의 서빙되는 애플리케이션 인스턴스가 상기 제1 데이터 구조에 포함되는 빈도는, 대응하는 서빙되는 애플리케이션 인스턴스의 용량과 연관된 가중값을 표시함 -;
    애니캐스트 어드레스로 주소지정된 상기 시스템에서 수신되는 데이터 패킷을 수신할 시에, 수신된 데이터 패킷의 하나 이상의 제1 헤더 필드들에 기초하여 제1 해시값(hash value)을 생성하고;
    상기 제1 데이터 구조를 사용하여, 생성된 제1 해시값에 기초하여, 서빙되는 애플리케이션 인스턴스들 중 하나의 가상 인터넷 프로토콜(IP) 어드레스를 식별하며; 그리고
    식별된 애플리케이션 인스턴스로 상기 데이터 패킷을 포워딩
    하도록 구성되고,
    상기 LB 디바이스들의 제2 세트의 각각의 LB 디바이스는,
    상기 제1 세트 내의 각각의 LB 디바이스들과 연관된 엔트리들을 포함하는 제2 데이터 구조를 보유하고 - 상기 LB 디바이스들의 제1 세트 내의 각각의 LB 디바이스가 상기 제2 데이터 구조에 포함되는 빈도는, 상기 제1 세트의 대응하는 LB 디바이스와 연관된 가중값을 표시함 -;
    상기 애니캐스트 어드레스로 주소지정된 상기 시스템에서 수신되는 상기 데이터 패킷을 수신할 시에, 수신된 데이터 패킷의 하나 이상의 제2 헤더 필드들에 기초하여 제2 해시값을 생성하고;
    생성된 제2 해시값에 기초하여, 상기 제2 데이터 구조를 사용하여 상기 LB 디바이스들의 제1 세트의 LB 디바이스를 식별하며; 그리고
    상기 제1 세트의 식별된 LB 디바이스로 상기 데이터 패킷을 포워딩
    하도록 구성되며,
    상기 애니캐스트 노드는, 상기 애니캐스트 노드와 연관된 애니캐스트 어드레스로 주소지정된 데이터 패킷을 수신할 시에, 상기 LB 디바이스들의 제2 세트 내의 LB 디바이스로 수신된 데이터 패킷을 포워딩하도록 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  2. 제 1 항에 있어서,
    상기 LB 디바이스들의 제2 세트의 LB 디바이스는, 상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스로 포워딩된 트래픽 로드를 글로벌 LB 엘리먼트에 보고하도록 추가적으로 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  3. 제 2 항에 있어서,
    상기 글로벌 LB 엘리먼트는, 상기 LB 디바이스들의 제2 세트의 LB 디바이스들로부터 상기 LB 디바이스들의 제1 세트의 LB 디바이스들로의 포워딩된 트래픽 로드들의 수신된 보고들에 적어도 부분적으로 기초하여 상기 LB 디바이스들의 제1 세트의 LB 디바이스들과 연관된 가중치들을 생성하도록 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  4. 제 1 항에 있어서,
    상기 제1 세트의 대응하는 LB 디바이스와 연관된 가중값은, 상기 제1 세트의 대응하는 LB 디바이스에 의해 서빙되는 프로세싱 디바이스들의 그룹의 용량을 표시하는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  5. 제 1 항에 있어서,
    상기 애플리케이션 인스턴스들은, 애플리케이션 서버, 콘텐츠 서버, 및 가상 머신 중 적어도 하나와 연관되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  6. 제 1 항에 있어서,
    상기 LB 디바이스들의 제2 세트의 각각의 LB 디바이스는,
    상기 LB 디바이스들의 제1 세트 내의 하나 이상의 LB 디바이스들에 대한 가중값을 수신하고; 그리고
    상기 LB 디바이스들의 제1 세트 내의 하나 이상의 LB 디바이스들에 대한 수신된 가중값들에 기초하여 상기 제2 데이터 구조를 생성
    하도록 추가적으로 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  7. 제 6 항에 있어서,
    상기 제2 데이터 구조를 생성할 시에, 상기 LB 디바이스들의 제2 세트의 각각의 LB 디바이스는,
    상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스에 대한 비워져있는 데이터 구조 포지션들의 수를 선택하고 - 선택된 데이터 구조 포지션들의 수는, 상기 LB 디바이스들의 제1 세트의 LB 디바이스에 대응하는 가중값에 기초하여 결정됨 -; 그리고
    선택된 비워져있는 데이터 구조 포지션들 각각에 상기 LB 디바이스들의 제1 세트의 LB 디바이스의 IP 어드레스를 삽입
    하도록 추가적으로 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  8. 제 7 항에 있어서,
    상기 LB 디바이스들의 제2 세트의 각각의 LB 디바이스는, 상기 LB 디바이스들의 제1 세트의 LB 디바이스와 연관된 오프셋 값에 기초하여 상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스에 대한 비워져있는 데이터 구조 포지션들의 수를 선택하도록 추가적으로 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  9. 제 1 항에 있어서,
    상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스는,
    상기 LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 애플리케이션 인스턴스들의 그룹 내의 각각의 애플리케이션 인스턴스에 대한 가중값을 수신하고; 그리고
    상기 LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 그룹 내의 애플리케이션 인스턴스들에 대한 수신된 가중값들에 기초하여 상기 제1 데이터 구조를 생성
    하도록 추가적으로 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  10. 제 9 항에 있어서,
    상기 제1 데이터 구조를 생성할 시에, 상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스는,
    상기 LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 그룹의 각각의 애플리케이션 인스턴스에 대한 비워져있는 데이터 구조 포지션들의 수를 선택하고 - 선택된 데이터 구조 포지션들의 수는, 상기 애플리케이션 인스턴스에 대응하는 가중값에 기초하여 결정됨 -; 그리고
    선택된 비워져있는 데이터 구조 포지션들 각각에 상기 애플리케이션 인스턴스의 가상 IP 어드레스를 삽입
    하도록 추가적으로 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  11. 제 10 항에 있어서,
    상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스는, 상기 애플리케이션 인스턴스와 연관된 오프셋 값에 기초하여 상기 LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 그룹의 각각의 애플리케이션 인스턴스에 대한 비워져있는 데이터 구조 포지션들의 수를 선택하도록 추가적으로 구성되는,
    애니캐스트 트래픽을 로드 밸런싱하기 위한 시스템.
  12. 데이터 트래픽 로드 밸런싱을 위한 방법으로서,
    로드 밸런싱(LB) 디바이스들의 제1 세트의 각각의 LB 디바이스에 의해, 상기 LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 애플리케이션 인스턴스들의 그룹 내의 애플리케이션 인스턴스들과 연관된 엔트리들을 포함하는 제1 데이터 구조를 보유하는 단계 - 각각의 서빙되는 애플리케이션 인스턴스가 상기 제1 데이터 구조에 포함되는 빈도는, 대응하는 서빙되는 애플리케이션 인스턴스의 용량과 연관된 가중값을 표시함 -;
    애니캐스트 어드레스로 주소지정된 LB 시스템에서 수신되는 데이터 패킷을 수신할 시에, 수신된 데이터 패킷의 하나 이상의 제1 헤더 필드들에 기초하여 제1 해시값을 생성하는 단계;
    상기 제1 데이터 구조를 사용하여, 생성된 제1 해시값에 기초하여, 서빙되는 애플리케이션 인스턴스들 중 하나의 가상 인터넷 프로토콜(IP) 어드레스를 식별하는 단계;
    식별된 애플리케이션 인스턴스로 상기 데이터 패킷을 포워딩하는 단계;
    LB 디바이스들의 제2 세트의 LB 디바이스에 의해, 상기 제1 세트 내의 각각의 LB 디바이스들과 연관된 엔트리들을 포함하는 제2 데이터 구조를 보유하는 단계 - 상기 LB 디바이스들의 제1 세트 내의 각각의 LB 디바이스가 상기 제2 데이터 구조에 포함되는 빈도는, 상기 제1 세트의 대응하는 LB 디바이스와 연관된 가중값을 표시함 -;
    상기 애니캐스트 어드레스로 주소지정된 상기 LB 시스템에서 수신되는 상기 데이터 패킷을 수신할 시에, 수신된 데이터 패킷의 하나 이상의 제2 헤더 필드들에 기초하여 제2 해시값을 생성하는 단계 - 상기 데이터 패킷은 상기 애니캐스트 어드레스로 주소지정된 상기 LB 디바이스에서 수신됨 -;
    생성된 제2 해시값에 기초하여, 상기 제2 데이터 구조를 사용하여 상기 LB 디바이스들의 제1 세트의 LB 디바이스를 식별하는 단계; 및
    상기 LB 디바이스들의 제1 세트의 식별된 LB 디바이스로 상기 데이터 패킷을 포워딩하는 단계를 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  13. 제 12 항에 있어서,
    상기 LB 디바이스들의 제2 세트의 LB 디바이스에 의해, 상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스로 포워딩된 트래픽 로드를 글로벌 LB 엘리먼트에 보고하는 단계를 더 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  14. 제 13 항에 있어서,
    상기 글로벌 LB 엘리먼트에 의해, 상기 LB 디바이스들의 제2 세트의 LB 디바이스들로부터 상기 LB 디바이스들의 제1 세트의 LB 디바이스들로의 포워딩된 트래픽 로드들의 수신된 보고들에 적어도 부분적으로 기초하여 상기 LB 디바이스들의 제1 세트의 LB 디바이스들과 연관된 가중치들을 생성하는 단계를 더 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  15. 제 12 항에 있어서,
    상기 LB 디바이스들의 제1 세트의 대응하는 LB 디바이스와 연관된 가중값은, 상기 LB 디바이스들의 제1 세트의 대응하는 LB 디바이스에 의해 서빙되는 상기 애플리케이션 인스턴스들의 그룹의 용량을 표시하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  16. 제 12 항에 있어서,
    상기 애플리케이션 인스턴스들은, 애플리케이션 서버, 콘텐츠 서버, 및 가상 머신 중 적어도 하나와 연관되는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  17. 제 12 항에 있어서,
    상기 LB 디바이스들의 제2 세트의 LB 디바이스에 의해, 상기 LB 디바이스들의 제1 세트 내의 하나 이상의 LB 디바이스들에 대한 가중값을 수신하는 단계; 및
    상기 LB 디바이스들의 제1 세트 내의 하나 이상의 LB 디바이스들에 대한 수신된 가중값들에 기초하여 상기 제2 데이터 구조를 생성하는 단계를 더 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  18. 제 17 항에 있어서,
    제2 테이블을 생성하는 단계는,
    상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스에 대한 비워져있는 데이터 구조 포지션들의 수를 선택하는 단계 - 선택된 데이터 구조 포지션들의 수는, 상기 LB 디바이스들의 제1 세트의 LB 디바이스에 대응하는 가중값에 기초하여 결정됨 -; 및
    선택된 비워져있는 데이터 구조 포지션들 각각에 상기 제1 세트의 LB 디바이스의 IP 어드레스를 삽입하는 단계를 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  19. 제 18 항에 있어서,
    상기 LB 디바이스들의 제1 세트의 각각의 LB 디바이스에 대한 비워져있는 데이터 구조 포지션들의 수를 선택하는 단계는, 상기 LB 디바이스들의 제1 세트의 LB 디바이스와 연관된 오프셋 값에 기초하여 비워져있는 데이터 구조 포지션들의 수를 선택하는 단계를 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  20. 제 12 항에 있어서,
    상기 제1 세트의 LB 디바이스에 의해, 상기 LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 애플리케이션 인스턴스들의 그룹 내의 각각의 애플리케이션 인스턴스에 대한 가중값을 수신하는 단계; 및
    수신된 가중값들에 기초하여 상기 제1 데이터 구조를 생성하는 단계를 더 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  21. 제 20 항에 있어서,
    상기 제1 데이터 구조를 생성하는 단계는,
    상기 LB 디바이스들의 제1 세트의 LB 디바이스에 의해 서빙되는 그룹의 각각의 애플리케이션 인스턴스에 대한 비워져있는 데이터 구조 포지션들의 수를 선택하는 단계 - 선택된 데이터 구조 포지션들의 수는, 상기 애플리케이션 인스턴스에 대응하는 가중값에 기초하여 결정됨 -; 및
    선택된 비워져있는 데이터 구조 포지션들 각각에 상기 애플리케이션 인스턴스의 가상 IP 어드레스를 삽입하는 단계를 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
  22. 제 21 항에 있어서,
    각각의 애플리케이션 인스턴스에 대한 비워져있는 데이터 구조 포지션들의 수를 선택하는 단계는, 상기 애플리케이션 인스턴스와 연관된 오프셋 값에 기초하여 상기 비워져있는 데이터 구조 포지션들의 수를 선택하는 단계를 포함하는,
    데이터 트래픽 로드 밸런싱을 위한 방법.
KR1020167033455A 2014-05-13 2015-05-11 애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템 KR101754408B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461992623P 2014-05-13 2014-05-13
US61/992,623 2014-05-13
US14/495,683 2014-09-24
US14/495,683 US9560124B2 (en) 2014-05-13 2014-09-24 Method and system for load balancing anycast data traffic
PCT/US2015/030235 WO2015175442A1 (en) 2014-05-13 2015-05-11 Method and system for load balancing anycast data traffic

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177018044A Division KR102146476B1 (ko) 2014-05-13 2015-05-11 애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20160140995A true KR20160140995A (ko) 2016-12-07
KR101754408B1 KR101754408B1 (ko) 2017-07-19

Family

ID=53276271

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167033455A KR101754408B1 (ko) 2014-05-13 2015-05-11 애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템
KR1020177018044A KR102146476B1 (ko) 2014-05-13 2015-05-11 애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177018044A KR102146476B1 (ko) 2014-05-13 2015-05-11 애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템

Country Status (7)

Country Link
US (2) US9560124B2 (ko)
EP (2) EP3143753B1 (ko)
JP (2) JP6355759B2 (ko)
KR (2) KR101754408B1 (ko)
CN (2) CN110365781B (ko)
DK (2) DK3328038T3 (ko)
WO (1) WO2015175442A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220116448A1 (en) * 2017-07-03 2022-04-14 Pure Storage, Inc. Load Balancing Reset Packets

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170006082A1 (en) * 2014-06-03 2017-01-05 Nimit Shishodia Software Defined Networking (SDN) Orchestration by Abstraction
US9923959B2 (en) * 2014-06-05 2018-03-20 Microsoft Technology Licensing, Llc Load balancing with layered edge servers
JP2016081119A (ja) * 2014-10-10 2016-05-16 富士通株式会社 情報処理システム、情報処理システムの制御方法および制御装置の制御プログラム
US10313271B2 (en) * 2016-03-16 2019-06-04 At&T Intellectual Property I, L.P. Providing and using a distributed forwarding service
US10574741B2 (en) 2016-04-18 2020-02-25 Nokia Technologies Oy Multi-level load balancing
US10122647B2 (en) * 2016-06-20 2018-11-06 Microsoft Technology Licensing, Llc Low-redistribution load balancing
CN108259334A (zh) 2017-01-25 2018-07-06 新华三技术有限公司 一种等价路由表项建立方法和装置
US10536517B2 (en) * 2017-03-16 2020-01-14 A10 Networks, Inc. Distributed global server load balancing controllers sharing service delay time
CN107864101A (zh) * 2017-12-26 2018-03-30 杭州迪普科技股份有限公司 负载均衡方法和装置
US10462233B2 (en) * 2018-01-23 2019-10-29 Charter Communications Operating, Llc Protocol for anycast based discovery of local resources
CN108768878A (zh) * 2018-06-06 2018-11-06 北京奇艺世纪科技有限公司 一种负载均衡系统、方法、装置及负载均衡设备
CN108769271A (zh) * 2018-08-20 2018-11-06 北京百度网讯科技有限公司 负载均衡的方法、装置、存储介质和终端设备
US10645008B1 (en) * 2018-12-06 2020-05-05 Verizon Digital Media Services Inc. Predictive Anycast traffic shaping
US11005929B1 (en) 2019-01-30 2021-05-11 Cisco Technology, Inc. Dynamic data center load balancing using border gateway protocol
US10887380B2 (en) * 2019-04-01 2021-01-05 Google Llc Multi-cluster ingress
EP4193302A1 (en) * 2020-08-05 2023-06-14 Avesha, Inc. Performing load balancing self adjustment within an application environment
US11805073B2 (en) 2021-05-03 2023-10-31 Avesha, Inc. Controlling placement of workloads of an application within an application environment
CN113655994B (zh) * 2021-10-21 2022-02-18 北京壁仞科技开发有限公司 多核处理器的电流变化斜率控制方法、控制设备和介质
US20240146657A1 (en) * 2022-10-31 2024-05-02 Telefonaktiebolaget Lm Ericsson (Publ) Reducing Network Congestion Using a Load Balancer
US11936560B1 (en) * 2023-05-09 2024-03-19 The Adt Security Corporation Systems and methods for data flow between mobile applications and customer premises equipment, using a consistent server hash

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3369445B2 (ja) * 1997-09-22 2003-01-20 富士通株式会社 ネットワークサービスサーバ負荷調整装置、方法および記録媒体
JP3898498B2 (ja) * 2001-12-06 2007-03-28 富士通株式会社 サーバ負荷分散システム
US7355977B1 (en) * 2002-08-16 2008-04-08 F5 Networks, Inc. Method and system for a weighted allocation table
US20050195834A1 (en) * 2003-03-31 2005-09-08 Shunsuke Kikuchi Load distribution system
WO2004088940A1 (ja) * 2003-03-31 2004-10-14 Fujitsu Limited 負荷分散システム
US7270869B2 (en) 2003-07-25 2007-09-18 Fujifilm Corporation Image-recording material, process for producing the same and process for forming image
JP2005092862A (ja) * 2003-08-11 2005-04-07 Hitachi Ltd 負荷分散方法及びクライアント・サーバシステム
US20060064478A1 (en) * 2004-05-03 2006-03-23 Level 3 Communications, Inc. Geo-locating load balancing
KR100645041B1 (ko) 2004-07-12 2006-11-10 삼성전자주식회사 엠아이엠 캐패시터를 갖는 반도체 소자 및 그 형성 방법
US8145908B1 (en) * 2004-10-29 2012-03-27 Akamai Technologies, Inc. Web content defacement protection system
JP2006227963A (ja) * 2005-02-18 2006-08-31 Fujitsu Ltd 多段負荷分散装置、方法及びプログラム
US20090172192A1 (en) * 2007-12-28 2009-07-02 Christian Michael F Mapless Global Traffic Load Balancing Via Anycast
CN101404616A (zh) * 2008-11-04 2009-04-08 北京大学深圳研究生院 一种负载均衡分组交换结构及其构造方法
US8416692B2 (en) * 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
US9176784B2 (en) * 2009-12-11 2015-11-03 Verizon Patent And Licensing Inc. Load balancing
WO2011093288A1 (ja) * 2010-02-01 2011-08-04 日本電気株式会社 ネットワークシステム、コントローラ、ネットワーク制御方法
US8755283B2 (en) * 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
CN102404229B (zh) * 2011-12-14 2013-03-13 华为技术有限公司 负载均衡系统、装置及方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220116448A1 (en) * 2017-07-03 2022-04-14 Pure Storage, Inc. Load Balancing Reset Packets
US11689610B2 (en) * 2017-07-03 2023-06-27 Pure Storage, Inc. Load balancing reset packets

Also Published As

Publication number Publication date
KR20170081717A (ko) 2017-07-12
CN106416197A (zh) 2017-02-15
DK3328038T3 (da) 2020-06-29
EP3328038B1 (en) 2020-04-15
EP3143753A1 (en) 2017-03-22
JP6578416B2 (ja) 2019-09-18
DK3143753T3 (en) 2018-12-03
JP6355759B2 (ja) 2018-07-11
US9998529B2 (en) 2018-06-12
EP3328038A1 (en) 2018-05-30
CN110365781B (zh) 2020-11-13
US9560124B2 (en) 2017-01-31
CN110365781A (zh) 2019-10-22
US20170099346A1 (en) 2017-04-06
EP3143753B1 (en) 2018-08-29
WO2015175442A1 (en) 2015-11-19
KR102146476B1 (ko) 2020-08-20
CN106416197B (zh) 2019-07-30
JP2018164285A (ja) 2018-10-18
JP2017516399A (ja) 2017-06-15
KR101754408B1 (ko) 2017-07-19
US20150334179A1 (en) 2015-11-19

Similar Documents

Publication Publication Date Title
KR101754408B1 (ko) 애니캐스트 데이터 트래픽을 로드 밸런싱하기 위한 방법 및 시스템
US9762494B1 (en) Flow distribution table for packet flow load balancing
KR101664922B1 (ko) 정책 시행 포인트의 분산을 위한 시스템 및 방법
US7321926B1 (en) Method of and system for allocating resources to resource requests
US10749805B2 (en) Statistical collection in a network switch natively configured as a load balancer
US11057459B2 (en) Datapath-driven fully distributed east-west application load balancer
US10009282B2 (en) Self-protecting computer network router with queue resource manager
CN103401799A (zh) 负载均衡的实现方法和装置
US10033805B1 (en) Spanning tree approach for global load balancing
US9832072B1 (en) Self-configuring computer network router
Paul et al. OpenADN: a case for open application delivery networking
EP3026851B1 (en) Apparatus, network gateway, method and computer program for providing information related to a specific route to a service in a network
Ivanisenko Methods and Algorithms of load balancing
US20240113959A1 (en) Instance-affine service scheduling
US11770338B2 (en) Increasing multi-path size using hierarchical forwarding equivalent classes

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right