KR101086545B1 - 수동적 tcp 성능 계측을 이용하여 글로벌 트래픽 로드 밸런싱을 위한 네트워크 근접도를 결정하기 위한 방법 - Google Patents

수동적 tcp 성능 계측을 이용하여 글로벌 트래픽 로드 밸런싱을 위한 네트워크 근접도를 결정하기 위한 방법 Download PDF

Info

Publication number
KR101086545B1
KR101086545B1 KR1020107016192A KR20107016192A KR101086545B1 KR 101086545 B1 KR101086545 B1 KR 101086545B1 KR 1020107016192 A KR1020107016192 A KR 1020107016192A KR 20107016192 A KR20107016192 A KR 20107016192A KR 101086545 B1 KR101086545 B1 KR 101086545B1
Authority
KR
South Korea
Prior art keywords
user
data
clients
connection quality
client
Prior art date
Application number
KR1020107016192A
Other languages
English (en)
Other versions
KR20100095472A (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 KR20100095472A publication Critical patent/KR20100095472A/ko
Application granted granted Critical
Publication of KR101086545B1 publication Critical patent/KR101086545B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/125Shortest path evaluation based on throughput or bandwidth
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0829Packet loss
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

클라이언트와 복수의 데이터 센터 사이의 TCP 접속 품질을 측정하기 위한 기술들이 설명된다. 웹 비컨이라고 하는 적은 양의 코드가 제작 웹페이지들 상에 배치된다. 클라이언트가 제작 웹페이지를 요청할 때, 웹페이지가 클라이언트에게 제공된다. 웹페이지 코드가 처리될 때, 웹 비컨은 클라이언트에게 배경에서 TCP 접속들을 통해 복수의 데이터 센터로부터 제로 콘텐츠 이미지들을 검색하도록 지시한다. 각각의 접속이 이루어질 때, 수동 모니터링 시스템은 클라이언트에서 데이터 센터로의 각각의 TCP 접속에 대한 통계들을 측정하고 로깅한다. 통계들은 데이터베이스 내에 수집될 수 있으며, 클라이언트들의 IP 어드레스들의 범위들 및 접속 품질 측정치들에 기초하여 분류될 수 있다. 후속 클라이언트들에서 복수의 데이터 센터로의 라우팅을 결정하기 위해 데이터베이스에서 글로벌 로드 밸런서들로 데이터가 전송된다.

Description

수동적 TCP 성능 계측을 이용하여 글로벌 트래픽 로드 밸런싱을 위한 네트워크 근접도를 결정하기 위한 방법{METHOD FOR DETERMINING NETWORK PROXIMITY FOR GLOBAL TRAFFIC LOAD BALANCING USING PASSIVE TCP PERFORMANCE INSTRUMENTATION}
본 발명은 TCP 접속들에 관한 것으로서, 구체적으로는 TCP 접속들의 접속 품질 결정에 관한 것이다.
이 장에 설명되는 접근법들은 추구될 수 있는 접근법들이지만, 반드시 이전에 구상되거나 추구된 접근법들은 아니다. 따라서, 달리 지시되지 않는 한, 이 장에 설명되는 접근법들 중 그 어느 것도 단지 그들의 이 장 내의 포함에 의해 종래 기술로서 간주되는 것으로 가정되지 않아야 한다.
본 명세서에서 사용될 때, "데이터 센터"라는 용어는 관련된 서버들의 콜로케이션(colocation)을 지칭한다. 특정 데이터 센터에 속하는 서버들은 동일한 빌딩 내에 있거나, 복합 버스 데이터 센터들은 통상적으로 지리적으로 서로 떨어져 위치한다. 지리적인 거리는 보호를 강화하며, 따라서 자연 재해에 의해 유발되는 하나의 데이터 센터에서의 치명적 고장은 다른 데이터 센터에서의 고장을 또한 유발하지 못할 것이다. 예를 들어, 하나의 데이터 센터는 뉴욕의 이스트 코스트에 위치할 수 있으며, 다른 데이터 센터는 샌프란시스코의 웨스트 코스트에 위치할 수 있다.
글로벌 로드 밸런싱(global load balancing), 즉 "GLB"는 특정 서비스들에 대한 클라이언트 액세스를 복수의 서버에 걸쳐 분산하기 위한 메커니즘이다. 예를 들어, 뉴욕 및 샌프란시스코 내의 데이터 센터들에 속하는 서버들에 의해 특정 서비스가 제공되는 상황에서, GLB는 뉴욕 내의 데이터 센터에 접속되는 클라이언트들의 수가 샌프란시스코 내의 데이터 센터에 접속되는 클라이언트들의 수와 거의 동일하도록 클라이언트 액세스를 분산시킬 수 있다.
인터넷과 관련하여 사용될 때, GLB는 다양한 능동적 및 수동적 모니터링 기술들을 이용하여 인터넷의 복합 맵을 생성할 수 있다. 이 맵에 기초하여, GLB는 클라이언트를 "가장 가까운" 서버에 접속하기 위한 트래픽 라우팅 결정을 행한다. 본 명세서에서 사용될 때, "가깝다"라는 것은 그러한 결정이 지리적 가까움에만 기초한다는 것을 반드시 의미하지는 않는다. 본 명세서에서 사용될 때, "가까운" 서버는 클라이언트에 대한 가장 빠른 접속을 제공하는 서버이다. 따라서, 100마일 떨어진 곳에 위치하는 서버가 심한 혼잡으로 인해 200마일 떨어진 곳에 위치하는 서버보다 클라이언트가 도달하기에 더 느린 경우, GLB는 클라이언트를 200마일 떨어져 있는 "더 가까운" 서버로 라우팅할 것이다.
많은 능동 및 수동 모니터링 메커니즘들은 GLB를 위한 인터넷 근접도의 글로벌 맵을 구축한다. 이러한 메커니즘들에 의해 사용되는 프로토콜들은 ICMP(핑), BGP(경계 게이트웨이 프로토콜) 및 수동 엔트리를 포함할 수 있지만, 이에 한정되지 않는다. 인터넷 제어 메시지 프로토콜(Internet Control Message Protocol: ICMP)은 인터넷의 코어 프로토콜들 중 하나이다. 하나의 중요한 ICMP 응용은 핑 도구(ping tool)이다. 핑 도구는 ICMP 에코 요청 및 응답 메시지들을 송신하고 수신하여, 호스트가 도달 가능한지의 여부 및 패킷들이 호스트로 그리고 호스트로부터 전송되는 데 걸리는 시간의 길이를 결정한다. 경계 게이트웨이 프로토콜(BGP)은 인터넷의 코어 라우팅 프로토콜이다. BGP는 자율 시스템들(autonomous systems: AS) 사이의 네트워크 도달성을 나타내는 IP 네트워크들의 표를 유지함으로써 동작한다. BGP는 경로, 네트워크 정책들 및 규칙 세트들에 기초하여 라우팅 결정을 행한다. 불행하게도, 이러한 메커니즘들 및 프로토콜들은 TCP 프로토콜을 사용하는 웹 접속의 실제 성능을 모니터링할 수 없으며, 따라서 TCP 접속들에 대한 정확한 라우팅 결정들이 수행되지 못할 수 있다.
토폴로지 및 접속성의 동적 변화들로 인해, GLB 시스템들은 인터넷의 완전하고 정확한 맵을 유지하는 것이 어려울 수 있다. 맵의 부정확은 잘못된 라우팅 결정으로 이어질 수 있다. 어떠한 맵핑 프로토콜이 사용되는가에 따라 이러한 라우팅 결정들을 수정하는 데에 상당한 시간이 필요할 수 있다.
본 발명은 동일한 참조 번호들이 유사한 요소들을 나타내는 첨부 도면들에 제한이 아니라 예시적으로 도시된다.
도 1은 본 발명의 일 실시예에 따른, 상이한 데이터 센터들 내에 위치하는 웹 비컨들에 접속하는 클라이언트를 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른, 웹 비컨들로부터 수집되는 데이터 및 GLB 서버들로 분산된 처리된 데이터를 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른, 네트블록에 의해 그룹화된 처리된 데이터를 나타내는 도면이다.
도 4는 본 발명의 실시예들이 구현될 수 있는 컴퓨터 시스템의 블록도이다.
실제 TCP 접속들의 접속 품질을 측정하고, 후속 트래픽 라우팅 결정들에서 측정 정보를 이용하기 위한 기술들이 설명된다. 아래의 설명에서는 설명의 목적으로 본 발명의 충분한 이해를 제공하기 위하여 다양한 특정 상세들이 설명된다. 그러나, 본 발명은 이러한 특정 상세들 없이도 실시될 수 있음이 명백할 것이다. 다른 예들에서는, 본 발명을 불필요하게 불명확하게 하는 것을 피하기 위하여, 공지 구조들 및 장치들은 블록도 형태로 도시된다.
일반 개요
전송 제어 프로토콜(Transmission Control Protocol: "TCP")은 네트워킹된 호스트 상의 애플리케이션들이 다른 호스트에 대한 접속을 생성하는 것을 가능하게 하는 인터넷 프로토콜이다. 예를 들어, 웹페이지를 요청하는 클라이언트가 하나의 호스트를 나타낼 수 있으며, 웹페이지 콘텐츠를 클라이언트에게 제공하는 서버가 다른 호스트를 나타낼 수 있다.
TCP 프로토콜은 호스트들 사이의 접속과 관련된 많은 특성을 갖는다. TCP는 송신기에서 수신기로의 신뢰성 있고 순차적인 데이터 전달을 보증한다. 순차적 전달을 달성하기 위하여, TCP는 또한 손실된 패킷들의 재전송 및 전송된 중복 패킷들의 폐기를 제공한다. TCP는 또한 동일 호스트 상에서 실행되는 동시 애플리케이션들(예컨대, 웹 서버 및 이메일 서버)에 의한 다수의 접속에 대해 데이터를 구별할 수 있다.
TCP 접속을 개시하기 위하여, 2개의 호스트는 최초 시퀀스 번호를 교환한다. 최초 시퀀스 번호는 각각의 호스트로부터 전송된 바이트들의 순서를 식별하며, 따라서 전송된 데이터는 전송 동안에 발생할 수 있는 임의의 조각화 또는 무순서화에 관계없이 순서대로 유지된다. 전송된 모드 바이트에 대해, 시퀀스 번호가 증가된다.
전송된 각각의 바이트는 송신기에 의해 시퀀스 번호를 할당받고, 이어서 수신기는 전송을 확인하기 위한 수령 통지를 송신기로 전송한다. 예를 들어, 컴퓨터 A(송신기)가 50의 시퀀스 번호를 갖는 4개 바이트(패킷 내의 4개 바이트는 50, 51, 52 및 53의 시퀀스 번호를 할당받음)를 전송하는 경우, 컴퓨터 B(수신기)는 컴퓨터 B가 수신할 것으로 예상하는 다음 바이트를 지시하기 위해 54의 수령 통지를 컴퓨터 A를 역전송할 것이다. 54의 수령 통지를 전송함으로써, 컴퓨터 B는 바이트들(50, 51, 52, 53)이 올바르게 수신되었음을 알린다. 우연히 최종 2개의 바이트가 손상된 경우, 컴퓨터 B는 바이트들(50, 51)이 성공적으로 수신되었으므로 52의 수령 통지 값을 전송한다. 이어서, 컴퓨터 A는 시퀀스 번호 52로 시작하는 데이터를 컴퓨터 B로 재전송할 것이다.
TCP는 또한 혼잡 제어를 수행할 수 있다. 예를 들어, TCP는 네트워크에 들어가는 데이터의 레이트를 조정하여, 네트워크 혼잡 문제들을 유발하는 레이트 아래로 데이터 흐름을 유지할 수 있다. 송신기와 수신기 사이의 네트워크 상태를 해석하기 위해, 전송된 데이터에 대해 수신된 수령 통지들 또는 수신된 수령 통지들의 결여가 송신기에 의해 측정된다. 이어서, TCP 송신기 및 수신기는 양호한 트래픽 흐름을 보장하기 위하여 마주한 네트워크 상태에 따라 데이터 흐름의 레이트를 변경할 수 있다.
불행하게도, 접속 품질의 정확한 척도(measure)를 보장하기 위해 실제 TCP 접속을 측정하는 것은 제삼자들 또는 비 TCP 프로토콜들에 의해 수행되지 못할 수 있다. 예를 들어, 실제 TCP 접속 척도들에 대한 대체물로서 ICMP와 같은 비 TCP 프로토콜들을 사용하는 것은 부정확한 결과들로 이어질 수 있다. 하나의 이유는 ICMP 트래픽이 종종 TCP의 그것보다 낮은 서비스 품질("QoS")을 갖는다는 것이다. QoS는 인터넷 상의 트래픽에 주어지는 우선 순위이다. QoS는 애플리케이션으로부터의 요청들에 따라 데이터 흐름에 소정 레벨의 성능을 보증함으로써 상이한 데이터 흐름들에 대해 상이한 우선 순위를 제공한다. ICMP에 의해 사용되는 핑 트래픽의 QoS는 TCP보다 낮은 우선 순위를 부여받는데, 이는 핑잉(pinging)이 핑의 목적지에 항상 도달하는 것이 보증되지 않기 때문이다. 이와 달리, TCP는 모든 트래픽이 특정 목적지에 도달하는 것을 보증한다. 결과적으로, 일부 척도들은 정상보다 큰 패킷 드롭 레이트들 및 큐잉(queueing) 시간들과 같은, 그러나 이에 한정되지 않는 더 낮은 QoS에 의해 영향을 받을 수 있다. 따라서, ICMP에 기초하는 TCP 접속들에 대한 라우팅 결정들은 부정확할 것이다.
제삼자 서비스들은 TCP 접속 품질을 측정하기가 어려운데, 이는 TCP가 점대점 프로토콜이기 때문이다. 점대점 프로토콜에서, 트래픽은 하나의 네트워크 포인트에서 다른 네트워크 포인트로 라우팅된다. 예를 들어, 하나의 네트워크 포인트는 웹페이지를 요청하는 클라이언트일 수 있고, 다른 네트워크 포인트는 클라이언트에게 웹페이지를 제공하는 서버일 수 있다. 제삼자는 그가 네트워크 상에서 2개의 접속 포인트 사이에 있는 경우에 점대점 접속으로부터 TCP 트래픽을 인터셉트할 수만 있으며, 두 당사자 사이의 접속에서 모든 패킷을 능동적으로 볼 수 있다. 따라서, 제삼자 서비스에 의해 이루어지는 TCP 접속의 측정들은 매우 어렵고, 실용적이지 못하다.
웹 비컨들 및 수동 모니터링
일 실시예에서는, 웹 비컨들 및 수동 서버 모니터링이 클라이언트와 클라이언트 콘텐츠를 제공하는 데이터 센터 내의 서버 사이의 실제 TCP 접속의 접속 품질을 측정한다. 웹 비컨들은 픽셀 태그들, 클리어 GIF들 또는 제로 콘텐츠 이미지들로도 알려져 있으며, 일반적으로 1x1 픽셀보다 크지 않은 투명한 또는 보이지 않는 그래픽 이미지들이다.
일 실시예에서는, 적은 양의 코드 또는 비컨 코드를 제작 웹페이지들 내에 배치함으로써 웹 비컨이 생성된다. 클라이언트들은 데이터 센터 내의 웹 서버로부터 제작 웹페이지를 요청하고 제공받는다. 제작 웹페이지가 클라이언트에 의해 처리될 때, 비컨 코드는 클라이언트 브라우저가 모든 잠재적인 데이터 센터 위치에 위치하는 비컨 서버로부터 웹 비컨들 또는 제로 콘텐츠 이미지들을 검색하게 한다. 예를 들어, 미국 내에 웹페이지를 제공할 수 있는 3개의 상이한 콜로케이션 또는 데이터 센터, 즉 웨스트 코스트 상의 하나의 콜로케이션, 이스트 코스트 상의 다른 하나의 콜로케이션 및 미드웨스트 내의 또 하나의 콜로케이션이 존재하는 경우, 비컨 코드는 클라이언트가 TCP 접속을 갖는 각각의 콜로케이션에 위치하는 비컨 서버로부터 웹 비컨 또는 제로 콘텐츠 이미지를 요청하게 한다. 이러한 요청들은 클라이언트의 배경에서 수행되며, 따라서 웹 서버로부터의 현재의 제작 웹페이지 부하와의 충돌은 존재하지 않는다.
일 실시예에서는, 비컨 서버의 커널 모듈 내의 수동 모니터링 시스템이 웹 비컨 검색으로부터 클라이언트와 데이터 센터 사이의 TCP 접속들에 대한 통계치들을 측정하고 로깅(logging)한다. 예를 들어, 네트워크 레이턴시는 TCP 핸드쉐이크 시퀀스 동안에 패킷들의 도달 및 출발의 시간을 확인함으로써 측정될 수 있다. 다른 예로서, TCP 접속의 수명 동안, 접속에 의해 요구되는 TCP 재전송들의 수를 계산함으로써 패킷 손실률이 측정될 수 있다. 이러한 2개의 척도, 즉 네트워크 레이턴시 및 패킷 손실률은 특정 클라이언트와 특정 데이터 센터 사이의 접속 품질의 우수한 지시를 제공한다. TCP 접속들과 관련된 임의의 다른 측정치들도 수동 모니터링 시스템에 의해 측정되고 로깅될 수 있다.
웹 비컨들로부터의 TCP 접속들의 측정들이 데이터 센터에서 클라이언트로의 실제 웹 트래픽에 기초하므로, 정확한 TCP 접속 품질 측정들이 보장된다. 이어서, 이러한 측정들은 데이터 센터 내의 "가장 가까운" 서버를 클라이언트에 접속하기 위한 지능적인 글로벌 트래픽 라우팅 결정들을 후속 수행하는 데 이용될 수 있다.
일 실시예에 따른 웹 비컨들 및 수동 모니터링을 나타내는 도면이 도 1에 도시되어 있다. 도 1에서, 클라이언트(100)는 3개의 상이한 데이터 센터로 라우팅될 수 있다. 데이터 센터(102)는 비컨 서버(108) 및 웹 서버(110)를 포함한다. 데이터 센터(104)는 비컨 서버(112) 및 웹 서버(114)를 포함한다. 데이터 센터(106)는 비컨 서버(116) 및 웹 서버(118)를 포함한다. 클라이언트(100)는 서버(110)로부터 웹페이지를 요청하고 수신한다(전송 120). 웹 서버(110)에 의해 제공되는 웹페이지는 클라이언트(100)에게 각각의 데이터 센터에 위치하는 웹 비컨 서버들로부터 웹 비컨을 검색하도록 지시하는 비컨 코드를 포함한다. 결과적으로, 클라이언트(100)는 요청(122)을 이용하여 데이터 센터(102) 내의 비컨 서버(108)로부터 웹 비컨을, 요청(124)을 이용하여 데이터 센터(104) 내의 비컨 서버(112)로부터 웹 비컨을, 요청(126)을 이용하여 데이터 센터(106) 내의 비컨 서버(116)로부터 웹 비컨을 요청한다. 웹 비컨을 검색하기 위하여, 클라이언트(100)와 각각의 비컨 서버(108, 112, 116) 사이에 TCP 접속이 이루어진다. 웹 비컨들에 대한 이러한 요청들 모두는 웹 서버(110)에 의한 페이지 부하와 충돌하지 않도록 클라이언트의 배경에서 이루어진다.
비컨 서버들 각각 내의 수동 모니터링 시스템들은 클라이언트(100)와 각각의 비컨 서버(108, 112, 116) 사이에 웹 비컨들을 검색하기 위해 이루어진 TCP 접속들에 대한 통계치들을 측정하고 로깅한다. TCP 접속들의 척도들은 클라이언트(100)와 각각의 비컨 서버에 대응하는 데이터 센터 사이의 품질을 결정하는 데 사용된다. 로깅되고 기록된 측정 데이터는 구현마다 다를 수 있다. 일 실시예에서, 측정 데이터는 왕복 레이턴시 데이터 및 패킷 손실률 데이터를 포함하지만, 이에 한정되지 않는다. 웹 비컨들에 대한 각각의 TCP 접속에 대한 척도들 및 통계들은 각각의 비컨 서버에 의해 저장된다.
다른 방법들을 통한 TCP 접속들의 측정
TCP 접속들의 성능의 측정은 또한 다양한 다른 방법을 이용하여 수행될 수 있다. 클라이언트를 서버에 접속하도록 비커닝하거나 지시하는 것은 접속의 성능을 측정하는 데 이용된다. 클라이언트는 복수의 비컨 서버에 접속하도록 지시될 수 있다. 다수의 접속 엔드포인트가 측정되도록 둘 이상의 비컨 서버가 이용된다. 또한, 클라이언트는 비컨 서버들의 무작위 선택들에 기초하여 특정 비컨 서버에 접속하도록 지시될 수 있다. 비컨 서버는 접속 데이터 측정에만 전용화된 전용 서버일 수 있다. 비컨 서버는 실제 트래픽을 제공하는 서버일 수도 있다. 파일 전송 프로토콜(File Transfer Protocol: FTP), 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol: HTTP) 또는 인터넷 릴레이 채트(Internet Relay Chat: IRC)를 포함하지만, 이에 한정되지 않는 임의 타입의 TCP 기반 접속 프로토콜이 사용될 수 있으며, 사용자가 접속하는 위치들에 대해 소정 레벨의 제어를 갖는 임의의 애플리케이션이 사용될 수 있다.
일 실시예에서, 애플리케이션은 클라이언트의 컴퓨터 상에 배치된다. 애플리케이션이 시동되거나 실행될 때, 애플리케이션은 복수의 비컨 서버에 대한 접속을 시도한다. 다른 실시예에서는, 리졸버로부터 DNS 요청이 행해질 때마다, 복수의 비컨 서버에 접속하려는 클라이언트에 대해 응답이 전송된다. 비컨 서버들의 선택은 구현마다 다를 수 있다. 일 실시예에서, 클라이언트는 무작위 선택 방법들에 기초하여 특정 비컨 서버들에 접속하도록 지시된다. 무작위 선택이 사용되지만, 시간이 지남에 따라 수집되는 데이터의 양은 무작위 선택 방법이 각각의 클라이언트를 모든 데이터 센터 내의 비컨 서버에 접속하게 하는 정확도에 근접하게 할 만큼 충분하다. 임의의 비컨 서버에 대한 접속시, 각각의 비컨 서버 내의 수동 모니터링 시스템들은 클라이언트에서 비컨 서버로 이루어진 접속에 대한 통계들을 측정하고 로깅한다.
데이터 수집 및 처리
일 실시예에서는, 데이터베이스가 각각의 데이터 센터에 위치하는 비컨 서버들로부터 TCP 측정치들 및 관련된 클라이언트 IP 어드레스들을 함께 수집한다. 데이터는 데이터베이스 서버에 의해 요청되거나, 웹 비컨 서버들의 각각에 의해 주기적으로 전송될 수 있다. 데이터베이스는 특정 데이터 센터 내에 또는 개별 설비 내에 원격적으로 위치할 수 있다.
일 실시예에서, 데이터베이스 서버는 비컨 서버들로부터 수신된 데이터를 개별 네트블록들의 세트들로 정규화한다. 본 명세서에서 사용될 때, 네트블록은 클라이언트 IP 어드레스들의 범위이다. 예를 들어, 네트블록 "1.1.1.0"은 "1.1.1.x"로 시작하는 IP 어드레스들을 갖는 모든 클라이언트를 나타내며, 여기서 "x"는 0과 255 사이의 임의 값일 수 있다. 동일 네트블록 내의 클라이언트들은 데이터 센터에 대한 동일 경로를 사용할 수 있다. 결과적으로, 특정 클라이언트에서 특정 데이터 센터로의 경로에 대한 더욱 완전한 정보를 제공하기 위해, 동일 네트블록 내의 클라이언트들에 대한 TCP 접속 측정들이 수집될 수 있다. 최상의 서비스 목적지를 결정하기 위하여, 각각의 데이터 센터에서 각각의 가능한 네트블록으로의 경로들의 접속 성능이 측정되고 유지된다.
일 실시예에서는, 이용 가능한 서버들 또는 데이터 센터들의 리스트가 각각의 특정 네트블록에 대한 접속 품질에 의해 분류된다. 다른 실시예에서, 데이터베이스 서버는 비컨 서버들로부터 수신된 TCP 통계들에 기초하여 데이터를 정규화한다. 이러한 상황에서, 접속들은 관련 IP 어드레스와의 접속 품질에 기초하여 분류된다. 또 다른 실시예에서, 데이터베이스는 측정 데이터 및 대응하는 IP 어드레스를 수집하고, 데이터에 대한 추가 처리를 수행하지 않는다.
일 실시예에서, 측정 기반 데이터가 데이터베이스로부터 글로벌 로드 밸런서들로서 작용하는 분산된 유권 네임 서버들로 전송된다. 측정 기반 데이터는 클라이언트 라우팅에 대한 적절한 결정을 행하기 위한 정보를 글로벌 로드 밸런서들에게 제공한다. 일 실시예에서, 측정 기반 데이터는 클라이언트 라우팅을 결정하기 위해 글로벌 로드 밸런서에 의해 독점적으로 사용될 수 있다. 다른 실시예에서, 측정 기반 데이터는 라우팅 결정을 행하기 위해 글로벌 로드 밸런서에 의해 고려되는 추가 데이터이다.
일 실시예에 따른, 비컨 서버들로부터 TCP 통계들을 수집하는 중앙 데이터베이스를 나타내는 도면이 도 2에 도시되어 있다. 도 2에서, 도 1의 3개의 데이터 센터로부터의 비컨 서버들(데이터 센터(102)로부터의 비컨 서버(108), 데이터 센터(104)로부터의 비컨 서버(112) 및 데이터 센터(106)로부터의 비컨 서버(116))은 데이터를 중앙 데이터베이스(200)로 전송한다. 중앙 데이터베이스(200)는 다양한 기준에 기초하여 데이터를 수집, 분류한다. 이어서, 처리된 데이터는 GLB(202), GLB(204), GLB(206) 및 GLB(208)로 전송된다. 다른 실시예에서, 처리된 데이터는 중앙 데이터베이스(200)에서 다른 소비자들(210)로 전송된다. 다른 소비자들은 데이터 센터들 내에 위치할 수 있는 웹 서버들과 다른 애플리케이션들을 포함한다. 예를 들어, 인터넷 회사는 클라이언트들이 애플리케이션들에 직접 접속하는 것을 가능하게 하는 개별 음악 또는 매체 애플리케이션을 구비할 수 있다. 이러한 애플리케이션들은 비컨 서버와 동일한 데이터 센터 내에 포함되므로, 중앙 데이터베이스에 의해 수집된 TCP 데이터는 트래픽을 그러한 다른 애플리케이션들로 효율적으로 라우팅하는 데에도 사용될 수 있다.
측정 기반 데이터를 이용하는 글로벌 로드 밸런서
글로벌 로드 밸런서가 측정 기반 데이터를 어떻게 이용하는지에 대한 일례가 이어진다. 글로벌 로드 밸런싱은 클라이언트가 특정 웹페이지를 방문하려고 요청할 때 수행된다. 클라이언트에 의해 입력된 웹사이트 URL(예를 들어, "www.sampledomain.com")을 IP 어드레스(예를 들어, "1.2.3.4")로 변환하기 위해 DNS 탐색이 수행된다. 탐색은 (글로벌 로드 밸런서이기도 한) 유권 네임 서버로 지향된다. 글로벌 로드 밸런서는 요청 IP 어드레스를 검사한다. 이어서, 요청 IP 어드레스는 분류된 측정 기반 데이터 중의 해당 특정 네트블록에 대한 정보 또는 IP 어드레스들의 범위와 비교된다. 글로벌 로드 밸런서는 네트워크 레이턴시 및 패킷 손실과 같은 다양한 TCP 통계에 의해 분류된 리스트 상에서 첫 번째의 이용 가능한 웹 서버를 선택하고, 웹 서버의 IP 어드레스를 클라이언트에게 반환한다. 이에 따라, 클라이언트는 최상의 이용 가능한 TCP 접속성을 갖는 웹 서버로 라우팅된다.
본 발명의 일 실시예에 따른 네트블록에 의해 분류된 처리된 데이터의 도면이 도 3에 도시되어 있다. 데이터는 "클라이언트" 열(300), "콜로케이션 A" 열(302), "콜로케이션 B" 열(304) 및 "콜로케이션 C" 열(306)을 구비한다. "클라이언트" 열(300)은 콜로케이션들 각각이 접속하는 클라이언트들의 IP 어드레스들을 리스트한다. 일 실시예에서, 클라이언트들은 네트블록들 내에 리스트된다. 행(308)에서, 네트블록 "1.1.1.0/24"는 IP 어드레스 "1.1.1.x"에 있는 클라이언트들을 갖는 24의 서브네트 마스크를 나타내며, 여기서 x는 0과 255 사이의 임의의 수일 수 있다. 클라이언트가 이 네트블록으로부터의 콜로케이션에 접속하기를 원하는 경우, 콜로케이션 A에 대한 접속은 10ms가 걸리고, 콜로케이션 B에 대한 접속은 50ms가 걸리며, 콜로케이션 C에 대한 접속은 80ms가 걸린다. 따라서, 네트블록 "1.1.1.0"으로부터의 클라이언트는 콜로케이션 A에 가장 가까울 것이다.
행(310)에서, 네트블록 "2.2.2.0/26"는 IP 어드레스 "2.2.2.x"에 있는 클라이언트들을 갖는 26의 서브네트 마스크를 나타내며, 여기서 x는 0과 63 사이의 임의의 수일 수 있다. 클라이언트가 이 네트블록으로부터의 콜로케이션에 접속하기를 원하는 경우, 콜로케이션 A에 대한 접속은 100ms가 걸리고, 콜로케이션 B에 대한 접속은 40ms가 걸리며, 콜로케이션 C에 대한 접속은 5ms가 걸린다. 따라서, 네트블록 "2.2.2.0"으로부터의 클라이언트는 콜로케이션 C에 가장 가까울 것이다.
행(312)에서, 네트블록 "3.3.3.0/24"는 IP 어드레스 "3.3.3.x"에 있는 클라이언트들을 갖는 24의 서브네트 마스크를 나타내며, 여기서 x는 0과 255 사이의 임의의 수일 수 있다. 클라이언트가 이 네트블록으로부터의 콜로케이션에 접속하기를 원하는 경우, 콜로케이션 A에 대한 접속은 300ms가 걸리고, 콜로케이션 B에 대한 접속은 1ms가 걸리며, 콜로케이션 C에 대한 접속은 500ms가 걸린다. 따라서, 네트블록 "3.3.3.0"으로부터의 클라이언트는 콜로케이션 B에 가장 가까울 것이다.
폐쇄 회로 피드백
일 실시예에서는, 인터넷 토폴로지 및 성능의 변경들에 동적으로 응답할 수 있는 폐쇄 회로 피드백 루프가 생성된다. 전술한 바와 같이, 글로벌 로드 밸런서는 클라이언트를 웹 콘텐츠를 인출하도록 특정 웹 서버로 라우팅한다. 글로벌 로드 밸런서는 웹 비컨들의 검색으로부터의 TCP 접속들의 측정들에 기초하여 라우팅을 결정한다.
클라이언트가 서버로부터 웹페이지 콘텐츠를 수신할 때, 웹페이지 콘텐츠는 클라이언트에게 각각의 데이터 센터로부터 웹 비컨들을 다시 한 번 검색하도록 지시하는 비컨 코드를 포함한다. 웹 비컨 TCP 접속들로부터 더 많은 측정치들 및 통계들을 계속 얻음으로써, 접속 품질 측정 시스템은 네트워크 이용성에 영향을 미치는 상황들을 빠르게 자동 수정할 수 있다. 이러한 상황들은 광섬유 절단, 장비 문제, 서버 장애 극복 또는 용량 문제를 포함하지만, 이에 한정되지 않는다.
하드웨어 개요
도 4는 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템(400)을 나타내는 블록도이다. 컴퓨터 시스템(400)은 정보를 통신하기 위한 버스(402) 또는 다른 통신 메커니즘, 및 정보를 처리하기 위해 버스(402)와 결합되는 프로세서(404)를 포함한다. 컴퓨터 시스템(400)은 또한 프로세서(404)에 의해 실행될 명령어들 및 정보를 저장하기 위하여 버스(402)에 결합되는 랜덤 액세스 메모리(RAM)와 같은 메인 메모리(406) 또는 기타 동적 저장 장치를 포함한다. 메인 메모리(406)는 프로세서(404)에 의해 실행될 명령어들의 실행 동안에 임시 변수들 또는 다른 중간 정보를 저장하는 데에도 사용될 수 있다. 컴퓨터 시스템(400)은 프로세서(404)에 대한 정적 정보 및 명령어들을 저장하기 위해 버스(402)에 결합되는 판독 전용 메모리(ROM)(408) 또는 다른 정적 저장 장치를 더 포함한다. 정보 및 명령어들을 저장하기 위해 자기 디스크 또는 광 디스크와 같은 저장 장치(410)가 제공되고 버스(402)에 결합된다.
컴퓨터 시스템(400)은 컴퓨터 사용자에게 정보를 표시하기 위한 음극선관(CRT)과 같은 디스플레이(412)에 버스(402)를 통해 결합될 수 있다. 정보 및 명령 선택들을 프로세서(404)로 통신하기 위한 영숫자 및 다른 키들을 포함하는 입력 장치(414)가 버스(402)에 결합된다. 다른 타입의 사용자 입력 장치는 방향 정보 및 명령 선택들을 프로세서(404)로 통신하고 디스플레이(412) 상의 커서 이동을 제어하기 위한 마우스, 트랙볼 또는 커서 방향 키들과 같은 커서 제어(416)이다. 이러한 입력 장치는 통상적으로 장치가 평면 내의 위치들을 지정할 수 있게 하는 2개 축, 즉 제1 축(예를 들어, x) 및 제2 축(예를 들어, y)에서의 2개의 자유도를 갖는다.
본 발명은 여기에 설명되는 기술들을 구현하기 위한 컴퓨터 시스템(400)의 사용에 관한 것이다. 본 발명의 일 실시예에 따르면, 이러한 기술들은 프로세서(404)가 메인 메모리(406)에 포함된 하나 이상의 명령어의 하나 이상의 시퀀스를 실행하는 것에 응답하여 컴퓨터 시스템(400)에 의해 수행된다. 그러한 명령어들은 저장 장치(410)와 같은 다른 기계 판독 가능 매체로부터 메인 메모리(406) 내로 판독될 수 있다. 메인 메모리(406) 내에 포함된 명령어들의 시퀀스들의 실행은 프로세서(404)가 여기에 설명되는 단계들을 수행하게 한다. 대안 실시예들에서는, 본 발명을 구현하기 위해, 소프트웨어 명령어들 대신에 또는 그와 함께 하드와이어드 회로(hard-wired circuitry)가 사용될 수 있다. 따라서, 본 발명의 실시예들은 하드웨어 회로와 소프트웨어의 임의의 특정 조합으로 한정되지 않는다.
본 명세서에서 사용될 때 "기계 판독 가능 매체"라는 용어는 기계가 특정 방식으로 동작하게 하는 데이터의 제공에 관여하는 임의의 매체를 지칭한다. 컴퓨터 시스템(400)을 이용하여 구현되는 일 실시예에서, 다양한 기계 판독 가능 매체는 예를 들어 실행을 위해 프로세서(404)에 명령어들을 제공하는 것에 관련된다. 그러한 매체는 저장 매체 및 전송 매체를 포함하지만 이에 한정되지 않는 다양한 형태를 가질 수 있다. 저장 매체는 비휘발성 및 휘발성 매체 양자를 포함한다. 비휘발성 매체는 예를 들어 저장 장치(410)와 같은 광 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(406)와 같은 동적 메모리를 포함한다. 전송 매체는 버스(402)를 포함하는 와이어들을 포함하는 동축 케이블, 구리 와이어 및 광섬유를 포함한다. 전송 매체는 또한 무선파 및 적외선 데이터 통신 동안에 생성되는 것들과 같은 음향파 또는 광파의 형태를 가질 수 있다. 그러한 모든 매체는 매체들에 의해 운반되는 명령어들이 명령어들을 기계 내로 판독하는 물리적 메커니즘에 의해 검출될 수 있게 하도록 실체적이어야 한다.
기계 판독 가능 매체들의 일반 형태들은 예를 들어 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프 또는 임의의 다른 자기 매체, CD-ROM, 임의의 다른 광학 매체, 펀치 카드, 종이 테이프, 구멍 패턴들을 갖는 임의의 다른 물리적 매체, RAM, PROM 및 EPROM, 플래시 EPROM, 임의의 다른 메모리 칩 또는 카트리지, 후술하는 바와 같은 반송파, 또는 컴퓨터가 판독할 수 있는 임의의 다른 매체를 포함한다.
다양한 형태의 기계 판독 가능 매체들은 실행을 위해 하나 이상의 명령어의 하나 이상의 시퀀스를 프로세서(404)로 운반하는 것과 관련될 수 있다. 예를 들어, 명령어들은 처음에 원격 컴퓨터의 자기 디스크 상에 보유될 수 있다. 원격 컴퓨터는 명령어들을 그의 동적 메모리 내에 로딩하고, 모뎀을 이용하여 전화선을 통해 명령어들을 전송할 수 있다. 컴퓨터 시스템(400)에 국한되는 모뎀은 전화선 상에서 데이터를 수신하고, 적외선 송신기를 이용하여 데이터를 적외선 신호로 변환할 수 있다. 적외선 검출기가 적외선 신호 내에 보유된 데이터를 수신할 수 있고, 적절한 회로가 데이터를 버스(402) 상에 실을 수 있다. 버스(402)는 데이터를 메인 메모리(406)로 전송하며, 프로세서(404)는 메인 메모리로부터 명령어들을 검색하여 실행한다. 메인 메모리(406)에 의해 수신되는 명령어들은 옵션으로서 프로세서(404)에 의한 실행 전 또는 후에 저장 장치(410)에 저장될 수 있다.
컴퓨터 시스템(400)은 또한 버스(402)에 결합되는 통신 인터페이스(418)를 포함한다. 통신 인터페이스(418)는 로컬 네트워크(422)에 접속되는 네트워크 링크(420)에 대한 양방향 데이터 통신 결합을 제공한다. 예를 들어, 통신 인터페이스(418)는 대응하는 타입의 전화선에 대한 데이터 통신 접속을 제공하기 위한 통합 서비스 디지털 네트워크(integrated services digital network: ISDN) 카드 또는 모뎀일 수 있다. 다른 예로서, 통신 인터페이스(418)는 호환 가능한 근거리 네트워크(local area network: LAN)에 대한 데이터 통신 접속을 제공하기 위한 LAN 카드일 수 있다. 무선 링크들도 구현될 수 있다. 임의의 그러한 구현에서, 통신 인터페이스(418)는 다양한 타입의 정보를 표현하는 디지털 데이터 스트림들을 운반하는 전기, 전자기 또는 광 신호들을 송신하고 수신한다.
네트워크 링크(420)는 통상적으로 하나 이상의 네트워크를 통해 다른 데이터 장치들로의 데이터 통신을 제공한다. 예컨대, 네트워크 링크(420)는 로컬 네트워크(422)를 통해 호스트 컴퓨터(424), 또는 인터넷 서비스 제공자(Internet Service Provider: ISP)(426)에 의해 운영되는 데이터 장비에 대한 접속을 제공할 수 있다. ISP(426)는 또한 "인터넷"(428)으로서 현재 일반적으로 참조되는 월드 와이드 패킷 데이터 통신 네트워크를 통해 데이터 통신 서비스들을 제공한다. 로컬 네트워크(422) 및 인터넷(428) 양자는 디지털 데이터 스트림들을 운반하는 전기, 전자기 또는 광 신호들을 이용한다. 컴퓨터 시스템(400)으로 그리고 그로부터 디지털 데이터를 운반하는 다양한 네트워크를 통한 신호들 및 네트워크 링크(420) 상의, 통신 인터페이스(418)를 통한 신호들은 정보를 전송하는 반송파들의 예시적인 형태들이다.
컴퓨터 시스템(400)은 네트워크(들), 네트워크 링크(420) 및 통신 인터페이스(418)를 통해 메시지들을 송신하고, 프로그램 코드를 포함하는 데이터를 수신할 수 있다. 인터넷 예에서, 서버(430)는 인터넷(428), ISP(426), 로컬 네트워크(422) 및 통신 인터페이스(418)를 통해 애플리케이션 프로그램에 대해 요청된 코드를 전송할 수 있다.
수신된 코드는 수신되는 대로 프로세서(404)에 의해 실행될 수 있고, 그리고/또는 나중의 실행을 위해 저장 장치(410) 또는 다른 비휘발성 저장 장치에 저장될 수 있다. 이러한 방식으로, 컴퓨터 시스템(400)은 반송파 형태의 애플리케이션 코드를 얻을 수 있다.
위의 명세서에서, 본 발명의 실시예들은 구현마다 다를 수 있는 다양한 특정 상세들과 관련하여 설명되었다. 따라서, 본 발명이 무엇인지, 그리고 출원인들이 본 발명이 무엇일 것으로 의도하는지에 대한 유일하고 배타적인 지시자는 본 출원에서 제공되는 청구항들의 세트이며, 그러한 청구항이 제공되는 특정 형태에는 임의의 후속 보정이 포함된다. 그러한 청구항들에 포함된 용어들에 대하여 본 명세서에 명시적으로 설명되는 임의의 정의들은 청구항들에서 사용되는 바와 같은 그러한 용어들의 의미를 결정할 것이다. 따라서, 청구항에 명시적으로 기재되지 않은 제한, 요소, 특성, 특징, 이익 또는 속성은 어떠한 방식으로도 그러한 청구항의 범위를 한정하지 않아야 한다. 따라서, 명세서 및 도면들은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다.

Claims (28)

  1. 복수의 데이터 센터로부터 엔드-유저-클라이언트들로의 접속 품질을 측정하기 위한 방법으로서,
    수집기(aggregator)에서 엔드-유저-클라이언트/데이터-센터 조합 각각에 대해 접속 품질 측정치들(measurements)의 대조 세트(distinct set)를 수신하는 단계 - 엔드-유저-클라이언트/데이터-센터 조합에 대한 접속 품질 측정치는 (a) 엔드-유저-클라이언트와 (b) 데이터 센터 간의 접속 품질 척도들(measures)을 포함함 -;
    상기 수집기에서 상기 엔드-유저-클라이언트들의 IP 주소들에 기초해서 상기 엔드-유저-클라이언트를 네트블록들(netblocks)로 결정하고 그룹핑하는 단계;
    상기 네트블록들의 각각에 대해, 네트블록에 속하는 엔드-유저-클라이언트들에 대한 상기 접속 품질 측정치들의 대조 세트를 수집함으로써 상기 수집기가 수집된 접속 품질 측정치 데이터를 생성하는 단계;
    로드 밸런싱 서버들이 상기 엔드-유저-클라이언트들과 상기 데이터-센터들 사이에서 메시지들을 어떻게 라우팅할지를 결정하는데 사용하도록 상기 수집된 접속 품질 측정치 데이터를 상기 수집기로부터 복수의 로드 밸런싱 서버로 출력하는 단계를 포함하는 접속 품질 측정 방법.
  2. 제1항에 있어서, 상기 접속 품질 척도들은 상기 엔드-유저-클라이언트들로부터 복수의 비컨 서버들로의 TCP 접속들에 기초하고, 상기 복수의 비컨 서버들 각각은 상기 복수의 데이터 센터 중 하나에 대응하는, 접속 품질 측정 방법.
  3. 제2항에 있어서, 상기 TCP 접속들은 상기 복수의 엔드-유저-클라이언트의 각각에 제공되는 웹 비컨 코드(web beacon code)의 결과인, 접속 품질 측정 방법.
  4. 제1항에 있어서, 상기 수집된 접속 품질 측정치 데이터는 그룹들로 체계화되며, 각각의 그룹에 대해, 상기 엔드-유저-클라이언트들의 IP 어드레스들은 IP 어드레스들의 특정 범위 내에 있는, 접속 품질 측정 방법.
  5. 제4항에 있어서, 상기 수집된 접속 품질 측정치 데이터의 그룹들은 접속 품질에 의해 상기 IP 어드레스들의 특정 범위로 분류된 데이터 센터들을 포함하는 접속 품질 측정 방법.
  6. 제1항에 있어서, 상기 접속 품질 척도들은 네트워크 레이턴시(network latency)를 포함하는 접속 품질 측정 방법.
  7. 제1항에 있어서, 상기 접속 품질 척도들은 패킷 손실률을 포함하는 접속 품질 측정 방법.
  8. 제2항에 있어서, 상기 TCP 접속들은 상기 복수의 데이터 센터 중 하나에 대응하는 상기 복수의 데이터 센터의 각각으로부터 제로 콘텐츠 이미지(zero-content image)들을 검색하는 엔드-유저-클라이언트들로부터의 접속들인, 접속 품질 측정 방법.
  9. 수집기에서, 서버로부터 컴퓨터 판독가능 영구적(non-transitory) 저장 매체로 엔드-유저-클라이언트/데이터-센터 조합 각각에 대한 접속 품질 측정치들의 대조 세트를 저장하는 단계 - 엔드-유저-클라이언트/데이터-센터 조합에 대한 접속 품질 측정치는 (a) 엔드-유저-클라이언트와 (b) 데이터-센터 간의 접속 품질 척도들을 포함함 -;
    상기 수집기에서 상기 엔드-유저-클라이언트들의 IP 주소들에 기초해서 상기 엔드-유저-클라이언트를 네트블록들(netblocks)로 결정하고 그룹핑하는 단계;
    상기 네트블록들의 각각에 대해, 복수의 네트블록 중 하나의 네트블록에 속하는 엔드-유저-클라이언트들에 대한 상기 접속 품질 측정치들의 대조 세트를 수집함으로써 상기 수집기가 수집된 접속 품질 측정치 데이터를 생성하는 단계 - 엔드-유저-클라이언트 각각이 속하는 네트블록은 상기 엔드-유저-클라이언트의 IP 어드레스에 기초함 -;
    복수의 로드 밸런싱 서버가 상기 엔드-유저-클라이언트들과 상기 데이터-센터들 사이에서 메시지들을 어떻게 라우팅할지를 결정하는데 사용하도록 상기 수집된 접속 품질 측정치 데이터를 상기 수집기로부터 상기 복수의 로드 밸런싱 서버로 출력하는 단계를 포함하는 방법.
  10. 복수의 데이터 센터로부터 클라이언트들로의 접속 품질을 측정하기 위한 방법으로서,
    수집기에서 복수의 엔드-유저-클라이언트들로부터의 요청들을 수신하는 단계;
    상기 수집기에서, 상기 요청들에 기초해서 생성된 엔드-유저-클라이언트/데이터-센터 조합 각각에 대한 접속 품질 측정치들의 대조 세트를 저장하는 단계;
    상기 수집기에서, 상기 엔드-유저-클라이언트들의 IP 주소들에 기초해서 상기 엔드-유저-클라이언트들을 네트블록들로 결정하고 그룹핑하는 단계;
    로드 밸런싱 서버들이 상기 엔드-유저-클라이언트들과 상기 데이터-센터들 사이에서 메시지들을 어떻게 라우팅할지를 결정하는데 사용하도록 상기 수집된 접속 품질 측정치 데이터를 상기 수집기로부터 복수의 로드 밸런싱 서버로 출력하는 단계를 포함하고,
    상기 수집기는 네트블록에 속하는 엔드-유저-클라이언트들에 대한 상기 접속 품질 측정치들의 대조 세트를 수집함으로써 상기 네트블록들의 각각에 대해 수집된 접속 품질 측정치 데이터를 생성하고,
    상기 방법은 하나 이상의 컴퓨팅 장치들에 의해 수행되는, 방법.
  11. 시스템으로서,
    제1 복수의 서버 - 상기 제1 복수의 서버 중 각각의 특정 서버는 복수의 데이터 센터 중 특정 데이터 센터 내에 위치하고, 상기 제1 복수의 서버는 엔드-유저-클라이언트/데이터-센터 조합 각각에 대해 접속 품질 측정치들을 측정하고, 상기 엔드-유저-클라이언트/데이터-센터 조합 각각에 대한 접속 품질 측정치들의 대조 세트를 생성하고, 엔드-유저-클라이언트/데이터-센터 조합에 대한 접속 품질 측정치는 (a) 엔드-유저-클라이언트, 및 (b) 데이터-센터 간의 접속 품질 척도들을 포함함 -;
    상기 제1 복수의 서버로부터 엔드-유저-클라이언트/데이터-센터 조합 각각에 대한 접속 품질 측정치들의 대조 세트를 수신하고, 상기 엔드-유저-클라이언트들의 IP 주소들에 기초해서 상기 엔드-유저-클라이언트들을 네트블록들로 결정하고 그룹핑하고, 네트블록에 속하는 엔드-유저-클라이언트들에 대한 상기 접속 품질 측정치들의 대조 세트를 수집함으로써 상기 네트블록들의 각각에 대해 수집된 접속 품질 측정치 데이터를 생성하는 집합 서버; 및
    메시지들을 상기 엔드-유저-클라이언트 및 상기-데이터 센터들 사이에서 어떻게 라우팅할지를 결정하는데 사용하도록 상기 수집된 접속 품질 측정치 데이터를 수신하는 제2 복수의 서버
    를 포함하는 시스템.
  12. 명령어들의 하나 이상의 시퀀스를 저장하는 컴퓨터 판독가능 영구적 저장 매체로서, 상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제1항 내지 제10항 중 어느 한 항에 따른 방법을 수행하도록 하는, 컴퓨터 판독가능 영구적 저장 매체.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 제9항에 있어서,
    상기 접속 품질 척도들은 상기 엔드-유저-클라이언트들로부터 복수의 비컨 서버들로의 TCP 접속들에 기초하고, 상기 복수의 비컨 서버들 각각은 상기 복수의 데이터 센터 중 하나에 대응하는, 방법.
  21. 제20항에 있어서, 상기 TCP 접속들은 상기 복수의 엔드-유저-클라이언트의 각각에 제공되는 웹 비컨 코드(web beacon code)의 결과인, 방법.
  22. 제9항에 있어서, 상기 수집된 접속 품질 측정치 데이터는 그룹들로 체계화되며, 각각의 그룹에 대해, 상기 엔드-유저-클라이언트들의 IP 어드레스들은 IP 어드레스들의 특정 범위 내에 있는, 방법.
  23. 제10항에 있어서, 상기 접속 품질 척도들은 상기 엔드-유저-클라이언트들로부터 복수의 비컨 서버들로의 TCP 접속들에 기초하고, 상기 복수의 비컨 서버들 각각은 상기 복수의 데이터 센터 중 하나에 대응하는, 방법.
  24. 제23항에 있어서, 상기 TCP 접속들은 상기 복수의 엔드-유저-클라이언트의 각각에 제공되는 웹 비컨 코드(web beacon code)의 결과인, 방법.
  25. 제10항에 있어서, 상기 수집된 접속 품질 측정치 데이터는 그룹들로 체계화되며, 각각의 그룹에 대해, 상기 엔드-유저-클라이언트들의 IP 어드레스들은 IP 어드레스들의 특정 범위 내에 있는, 방법.
  26. 제11항에 있어서, 상기 접속 품질 척도들은 상기 엔드-유저-클라이언트들로부터 복수의 비컨 서버들로의 TCP 접속들에 기초하고, 상기 복수의 비컨 서버들 각각은 상기 복수의 데이터 센터 중 하나에 대응하는, 시스템.
  27. 제26항에 있어서, 상기 TCP 접속들은 상기 복수의 엔드-유저-클라이언트의 각각에 제공되는 웹 비컨 코드(web beacon code)의 결과인, 시스템.
  28. 제11항에 있어서, 상기 수집된 접속 품질 측정치 데이터는 그룹들로 체계화되며, 각각의 그룹에 대해, 상기 엔드-유저-클라이언트들의 IP 어드레스들은 IP 어드레스들의 특정 범위 내에 있는, 시스템.

KR1020107016192A 2007-12-21 2008-12-12 수동적 tcp 성능 계측을 이용하여 글로벌 트래픽 로드 밸런싱을 위한 네트워크 근접도를 결정하기 위한 방법 KR101086545B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/963,700 US7962631B2 (en) 2007-12-21 2007-12-21 Method for determining network proximity for global traffic load balancing using passive TCP performance instrumentation
US11/963,700 2007-12-21
PCT/US2008/086700 WO2009085669A2 (en) 2007-12-21 2008-12-12 Method for determining network proximity for global traffic load balancing using passive tcp performance instrumentation

Publications (2)

Publication Number Publication Date
KR20100095472A KR20100095472A (ko) 2010-08-30
KR101086545B1 true KR101086545B1 (ko) 2011-11-23

Family

ID=40789973

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107016192A KR101086545B1 (ko) 2007-12-21 2008-12-12 수동적 tcp 성능 계측을 이용하여 글로벌 트래픽 로드 밸런싱을 위한 네트워크 근접도를 결정하기 위한 방법

Country Status (9)

Country Link
US (1) US7962631B2 (ko)
EP (1) EP2225657A4 (ko)
JP (1) JP5081308B2 (ko)
KR (1) KR101086545B1 (ko)
CN (1) CN101903872B (ko)
AU (1) AU2008343433C1 (ko)
HK (1) HK1151368A1 (ko)
TW (1) TWI381691B (ko)
WO (1) WO2009085669A2 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9065595B2 (en) 2005-04-07 2015-06-23 Opanga Networks, Inc. System and method for peak flow detection in a communication network
US8909807B2 (en) * 2005-04-07 2014-12-09 Opanga Networks, Inc. System and method for progressive download using surplus network capacity
US7500010B2 (en) 2005-04-07 2009-03-03 Jeffrey Paul Harrang Adaptive file delivery system and method
US8589508B2 (en) * 2005-04-07 2013-11-19 Opanga Networks, Inc. System and method for flow control in an adaptive file delivery system
US11258531B2 (en) 2005-04-07 2022-02-22 Opanga Networks, Inc. System and method for peak flow detection in a communication network
US8719399B2 (en) * 2005-04-07 2014-05-06 Opanga Networks, Inc. Adaptive file delivery with link profiling system and method
US20080176554A1 (en) * 2007-01-16 2008-07-24 Mediacast, Llc Wireless data delivery management system and method
US8756340B2 (en) 2007-12-20 2014-06-17 Yahoo! Inc. DNS wildcard beaconing to determine client location and resolver load for global traffic load balancing
US7962631B2 (en) 2007-12-21 2011-06-14 Yahoo! Inc. Method for determining network proximity for global traffic load balancing using passive TCP performance instrumentation
US20090172192A1 (en) * 2007-12-28 2009-07-02 Christian Michael F Mapless Global Traffic Load Balancing Via Anycast
US20090245114A1 (en) * 2008-04-01 2009-10-01 Jayanth Vijayaraghavan Methods for collecting and analyzing network performance data
WO2010017205A2 (en) * 2008-08-04 2010-02-11 Jeffrey Harrang Systems and methods for video bookmarking
US8706878B1 (en) * 2008-08-21 2014-04-22 United Services Automobile Association Preferential loading in data centers
EP2350962A4 (en) * 2008-09-18 2013-08-21 Opanga Networks Inc SYSTEMS AND METHODS FOR AUTOMATIC DETECTION AND COORDINATED DISTRIBUTION OF TOO LARGE MULTIMEDIA CONTENT
JP2012508424A (ja) * 2008-11-07 2012-04-05 オパンガ ネットワークス インコーポレイテッド ホスト装置を利用してデータ転送を開始するポータブルデータ記憶装置
US20100131385A1 (en) * 2008-11-25 2010-05-27 Opanga Networks, Llc Systems and methods for distribution of digital media content utilizing viral marketing over social networks
US8886790B2 (en) 2009-08-19 2014-11-11 Opanga Networks, Inc. Systems and methods for optimizing channel resources by coordinating data transfers based on data type and traffic
WO2011022095A1 (en) 2009-08-19 2011-02-24 Opanga Networks, Inc Enhanced data delivery based on real time analysis of network communications quality and traffic
US7978711B2 (en) * 2009-08-20 2011-07-12 Opanga Networks, Inc. Systems and methods for broadcasting content using surplus network capacity
US8904016B2 (en) * 2010-03-02 2014-12-02 Nokia Corporation Method and apparatus for selecting network services
US8495196B2 (en) 2010-03-22 2013-07-23 Opanga Networks, Inc. Systems and methods for aligning media content delivery sessions with historical network usage
KR20130040255A (ko) * 2010-07-21 2013-04-23 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 정보 처리 장치, 서버-클라이언트 시스템, 및 컴퓨터 프로그램 제품
US9363312B2 (en) 2010-07-28 2016-06-07 International Business Machines Corporation Transparent header modification for reducing serving load based on current and projected usage
TW201328270A (zh) * 2011-12-22 2013-07-01 East Moon Creation Technology Corp 多伺服器系統負荷平衡機制
US9594911B1 (en) * 2012-09-14 2017-03-14 EMC IP Holding Company LLC Methods and apparatus for multi-factor authentication risk detection using beacon images
US20150319063A1 (en) * 2014-04-30 2015-11-05 Jive Communications, Inc. Dynamically associating a datacenter with a network device
CN104967648B (zh) * 2014-12-26 2018-06-22 深圳市腾讯计算机系统有限公司 一种网际协议地址的调度方法、装置和系统
WO2024081025A1 (en) * 2022-10-13 2024-04-18 Netflix, Inc. Predetermining network route for content steering

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188073A1 (en) * 2003-02-13 2005-08-25 Koji Nakamichi Transmission system, delivery path controller, load information collecting device, and delivery path controlling method

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665702B1 (en) * 1998-07-15 2003-12-16 Radware Ltd. Load balancing
US6249801B1 (en) * 1998-07-15 2001-06-19 Radware Ltd. Load balancing
JP3871486B2 (ja) * 1999-02-17 2007-01-24 株式会社ルネサステクノロジ 半導体装置
US6628956B2 (en) * 1999-03-15 2003-09-30 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive power control in a radio communications systems
US6785704B1 (en) * 1999-12-20 2004-08-31 Fastforward Networks Content distribution system for operation over an internetwork including content peering arrangements
US6405252B1 (en) * 1999-11-22 2002-06-11 Speedera Networks, Inc. Integrated point of presence server network
FI108592B (fi) * 2000-03-14 2002-02-15 Sonera Oyj Laskutus langatonta sovellusprotokollaa käyttävässä matkapuhelinjärjestelmässä
US6836465B2 (en) * 2001-11-29 2004-12-28 Ipsum Networks, Inc. Method and system for path identification in packet networks
US7020698B2 (en) * 2000-05-31 2006-03-28 Lucent Technologies Inc. System and method for locating a closest server in response to a client domain name request
US7165116B2 (en) * 2000-07-10 2007-01-16 Netli, Inc. Method for network discovery using name servers
US6850984B1 (en) * 2000-09-08 2005-02-01 Intel Corporation System for isolating other clients that experience different connection performance than the client and directing the other clients to another different mirrored server
US7333794B2 (en) * 2001-03-06 2008-02-19 At&T Mobility Ii Llc Real-time network analysis and performance management
EP1402692A4 (en) * 2001-06-04 2005-06-15 Nct Group Inc SYSTEM AND METHOD FOR INCREASING THE EFFECTIVE BANDWIDTH OF A COMMUNICATION NETWORK
US7007089B2 (en) * 2001-06-06 2006-02-28 Akarnai Technologies, Inc. Content delivery network map generation using passive measurement data
US7120120B2 (en) * 2001-11-29 2006-10-10 Ipsum Networks, Inc. Method and system for topology construction and path identification in a two-level routing domain operated according to a simple link state routing protocol
US20030079027A1 (en) * 2001-10-18 2003-04-24 Michael Slocombe Content request routing and load balancing for content distribution networks
KR100428767B1 (ko) * 2002-01-11 2004-04-28 삼성전자주식회사 트래픽 정보를 이용한 가입자 라우팅 설정 방법 및 이를위한 기록매체
US7512702B1 (en) * 2002-03-19 2009-03-31 Cisco Technology, Inc. Method and apparatus providing highly scalable server load balancing
US7139840B1 (en) * 2002-06-14 2006-11-21 Cisco Technology, Inc. Methods and apparatus for providing multiple server address translation
US7159034B1 (en) * 2003-03-03 2007-01-02 Novell, Inc. System broadcasting ARP request from a server using a different IP address to balance incoming traffic load from clients via different network interface cards
KR20050055305A (ko) 2003-12-08 2005-06-13 주식회사 비즈모델라인 네트워크를 이용한 지역별 서버 이용방법 및 시스템과이를 위한 저장매체 및 기록매체
US7584435B2 (en) * 2004-03-03 2009-09-01 Omniture, Inc. Web usage overlays for third-party web plug-in content
US7609619B2 (en) * 2005-02-25 2009-10-27 Cisco Technology, Inc. Active-active data center using RHI, BGP, and IGP anycast for disaster recovery and load distribution
JP2006293422A (ja) * 2005-04-05 2006-10-26 Matsushita Electric Ind Co Ltd ネットワーク性能測定システム及びネットワーク性能測定方法
US7548945B2 (en) * 2005-04-13 2009-06-16 Nokia Corporation System, network device, method, and computer program product for active load balancing using clustered nodes as authoritative domain name servers
JP4101251B2 (ja) * 2005-05-24 2008-06-18 富士通株式会社 負荷分散プログラム、負荷分散方法、及び負荷分散装置
US7957363B2 (en) * 2005-05-26 2011-06-07 International Business Machines Corporation System, method, and service for dynamically selecting an optimum message pathway
US20070036146A1 (en) * 2005-08-10 2007-02-15 Bellsouth Intellectual Property Corporation Analyzing and resolving internet service problems
US8015294B2 (en) * 2006-08-22 2011-09-06 Embarq Holdings Company, LP Pin-hole firewall for communicating data packets on a packet network
US8743703B2 (en) * 2006-08-22 2014-06-03 Centurylink Intellectual Property Llc System and method for tracking application resource usage
US8307065B2 (en) * 2006-08-22 2012-11-06 Centurylink Intellectual Property Llc System and method for remotely controlling network operators
US9479341B2 (en) * 2006-08-22 2016-10-25 Centurylink Intellectual Property Llc System and method for initiating diagnostics on a packet network node
US20080167886A1 (en) * 2007-01-05 2008-07-10 Carl De Marcken Detecting errors in a travel planning system
US20090100128A1 (en) * 2007-10-15 2009-04-16 General Electric Company Accelerating peer-to-peer content distribution
US7962631B2 (en) 2007-12-21 2011-06-14 Yahoo! Inc. Method for determining network proximity for global traffic load balancing using passive TCP performance instrumentation
US20090245114A1 (en) * 2008-04-01 2009-10-01 Jayanth Vijayaraghavan Methods for collecting and analyzing network performance data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188073A1 (en) * 2003-02-13 2005-08-25 Koji Nakamichi Transmission system, delivery path controller, load information collecting device, and delivery path controlling method

Also Published As

Publication number Publication date
CN101903872A (zh) 2010-12-01
TWI381691B (zh) 2013-01-01
JP2011508524A (ja) 2011-03-10
WO2009085669A2 (en) 2009-07-09
CN101903872B (zh) 2013-11-20
HK1151368A1 (en) 2012-01-27
KR20100095472A (ko) 2010-08-30
AU2008343433B2 (en) 2011-06-09
AU2008343433A1 (en) 2009-07-09
JP5081308B2 (ja) 2012-11-28
TW200943866A (en) 2009-10-16
EP2225657A4 (en) 2017-01-25
WO2009085669A3 (en) 2009-08-27
EP2225657A2 (en) 2010-09-08
US7962631B2 (en) 2011-06-14
AU2008343433C1 (en) 2011-12-15
US20090164646A1 (en) 2009-06-25

Similar Documents

Publication Publication Date Title
KR101086545B1 (ko) 수동적 tcp 성능 계측을 이용하여 글로벌 트래픽 로드 밸런싱을 위한 네트워크 근접도를 결정하기 위한 방법
KR101114152B1 (ko) 네트워크 성능 데이터를 수집 및 분석하는 방법
KR101154799B1 (ko) 전역 트래픽 부하 균형화를 위하여 클라이언트 위치 및 리졸버 부하를 결정하는 dns 와일드카드 비컨화
KR101177203B1 (ko) 애니캐스트를 통한 맵리스 글로벌 트래픽 로드 밸런싱
US9800478B2 (en) Cross-layer troubleshooting of application delivery
CN108027800B (zh) 使用跟踪路由进行地理定位的方法、系统和装置
CN106998263B (zh) 用于保持网络服务级别的系统和方法
CN104836732B (zh) 网络连接的自动选择方法及系统
CN111771359B (zh) 用于连接通信网络的方法和系统
US20090150564A1 (en) Per-user bandwidth availability
Dowling et al. Building an information-centric and LoRa-based sensing platform for IoT
Matthews et al. Internet Monitoring in the HEP Community.
CN118055067A (zh) 通信方法及装置
KR20220149056A (ko) IoT 단말 기반 데이터 전송 방법 및 장치
JP2013069146A (ja) バックアップ装置、バックアップ方法、及びバックアッププログラム

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: 20141022

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8