KR20200015492A - 예상 오버레이 네트워크 아키텍처 - Google Patents

예상 오버레이 네트워크 아키텍처 Download PDF

Info

Publication number
KR20200015492A
KR20200015492A KR1020197034402A KR20197034402A KR20200015492A KR 20200015492 A KR20200015492 A KR 20200015492A KR 1020197034402 A KR1020197034402 A KR 1020197034402A KR 20197034402 A KR20197034402 A KR 20197034402A KR 20200015492 A KR20200015492 A KR 20200015492A
Authority
KR
South Korea
Prior art keywords
node
nodes
overlay network
topology
link
Prior art date
Application number
KR1020197034402A
Other languages
English (en)
Other versions
KR102569433B1 (ko
Inventor
조세 다니엘 페레아 스트롬
도론 파즈
윌리엄 씨. 어비
듀오 장
Original Assignee
시스템73 리미티드
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 시스템73 리미티드 filed Critical 시스템73 리미티드
Priority to KR1020237027968A priority Critical patent/KR20230124112A/ko
Publication of KR20200015492A publication Critical patent/KR20200015492A/ko
Application granted granted Critical
Publication of KR102569433B1 publication Critical patent/KR102569433B1/ko

Links

Images

Classifications

    • 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/12Discovery or management of network topologies
    • 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/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • 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/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
    • 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/14Network analysis or design
    • H04L41/147Network analysis or design for predicting network behaviour
    • 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
    • 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/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • 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
    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • 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/5019Ensuring fulfilment of SLA
    • H04L41/5025Ensuring fulfilment of SLA by proactively reacting to service quality change, e.g. by reconfiguration after service quality degradation or upgrade
    • 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/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명의 예상 오버레이 네트워크 아키텍처는 관련 콘텐트 아이템들이 분배되는 오버레이 네트워크 토폴로지들을 수립 및 재구성함으로써 인터넷과 같은 기본 네트워크의 노드들 사이에 디지털 콘텐트를 분배하는 어플리케이션들을 성능을 개선시킨다. 본 발명은 빈번하게 변경되는 네트워크 혼잡뿐만 아니라, 예상 오버레이 네트워크 토폴로지의 노드들과 링크들 사이의 상호 의존성을 해결한다. 본 발명은 메트릭들을 모니터링하고, 오버레이 네트워크의 노드들 간 콘텐트의 중계가 (현재 또는 향후) 기본 네트워크 혼잡에 의해 영향을 받는 정도를 반영하기 위해 시간이 지남에 따라 개별 노드들 및 링크들의 중계 용량(뿐만 아니라 목적지 노드들의 디맨드)를 예측하는 예측 예진을 제공한다. 본 발명은 어플리케이션 별 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 결정하기 위해 노드 및 링크 상호 의존성을 해결하면서 여분 용량을 재분배하는 토폴로지 선택기를 더 제공한다.

Description

예상 오버레이 네트워크 아키텍처
관련 출원들에 대한 상호 참조
본 출원은 2017년 4월 21일 출원된 미국 임시 특허 출원 일련 번호 제62/488,502호, 및 2018년 4월 10일 출원된 미국 임시 특허 출원 일력 번호 제62/655,703호에 대한 우선권을 주장하며, 이의 개시 내용은 본 출원에 전부 명시된 바와 같이 참조로서 포함된다.
I. 배경기술
기술분야
본 발명은 일반적으로 인터넷과 같은 기본 네트워크의 위에 구축된 오버레이 네트워크의 노드들 사이에서 디지털 콘텐트의 분포에 관한 것으로, 보다 구체적으로는 오버레이 네트워크의 노드들과 링크들 사이의 성능 상호 의존성 맥락에서 자주 변하는 기본 네트워크 혼잡(congestion)을 해결함으로써 정의된 어플리케이션 별(application-specific) 성능 기준을 만족시키는 오버레이 네트워크 토폴로지를 결정하는 예측 오버레이 네트워크 아키텍처에 관한 것이다.
관련 기술의 설명
A. 네트워크 혼잡의 문제
가장 기본 레벨에서, 컴퓨터 네트워크는 데이터 또는 정보(본 출원에서 호환되어 사용됨)를 교환하고 네트워크 노드들에 의해 제공된 리소스들을 공유하기 위해, 직접적으로 또는 간접적으로 상호 연결되는 복수의 네트워크 장치들(노드들)로 구성된다. 예를 들어, 네트워크 스위치에 연결된, 두 대의 컴퓨터들과 네트워크 프린터는 두 컴퓨터의 사용자들이 네트워크 프린터에 의해 제공되는 프린팅 리소스들을 공유할 수 있게 하는 단순한 "로컬 영역 네트워크(LAN)"를 형성한다.
이러한 단순한 네트워크에서, 두 컴퓨터와 네트워크 프린터는 네트워크 스위치에 직접 연결되나, 서로 간접적으로만 연결되지만, 모두 LAN의 노드들로 간주된다. 유선 매체를 통해 연결되든 또는 무선 매체를 통해 연결되는 마찬가지다.
이러한 단순한 LAN에서도, 하나 또는 두 대의 컴퓨터가 일정 기간 동안 충분히 많은 양의 정보를 네트워크 프린터로 전송할 때 네트워크 혼잡이 발생하여, 프린팅이 지연되고 개별 프린팅 작업이 실패할 가능성(예컨대, 네트워크 프린터의 메모리 버퍼가 과부하되거나 네트워크 트래픽이 프린터의 설계 성능을 초과하는 경우)이 있다. 네트워크 혼잡 문제를 해결하기 위해, 특히 더 많은 컴퓨터가 LAN에 추가됨에 따라, 공유 네트워크 프린터 중 컴퓨터의 인쇄 요청을 "로드 밸런싱"하기 위해 - 즉, 공급을 늘리고 디맨드를 분배하기 위해 추가 네트워크 프린터 및 소프트웨어를 도입할 수 있다.
명백히 보이듯이, 공유 리소스들을 제공하는 네트워크 노드들에서의 네트워크 혼잡 문제는 기본 컴퓨터 네트워크의 크기와 범위가 증가함에 따라 기하급수적으로 더 복잡해진다. 예를 들어, 네트워크 프린팅을 지원하는 것 외에, LAN상의 장치들은 파일 전송, 전자 메일, 화상 회의 및 기타 네트워크 어플리케이션들 및 서비스들과 같은 추가 네트워크 기능을 제공할 수 있습니다. 네트워크 노드들에 의한 이 추가 기능의 공유 사용은 이 공유 기능을 소비하는 노드들의 "디맨드"가 이러한 기능을 제공하고 분배하기 위해 개별 노드들의 "공급(supply)" 또는 용량을 일상적으로 초과하기 때문에 네트워크 혼잡 문제를 반드시 악화시킨다.
기본 네트워크가 (예컨대, 다양한 개인, 민간, 정부 및 기타 엔티티들에 의해 운영되는) 다른 물리적 위치에 있는 더 많은 노드들을 포함하기 위해 LAN을 넘어 확장되면, 네트워크 라우터들은 복수의 컴퓨터 네트워크들의 상호 연결이 "광역 네트워크(wide area network)"(WAN)를 형성할 수 있도록 배치된다. 가장 대중적이고 많이 사용되는 WAN(즉, 네트워크들의 네트워크)인 인터넷은 전 세계 수십억 개의 장치들을 상호 연결하고 방대한 공유 네트워크 어플리케이션들 및 서비스들을 지원하는 기본 인프라스트럭처(underlying infrastructure)(본 출원에서는 단순히 "어플리케이션들(applications)"로 지칭됨)를 제공한다.
중앙 집중식 제어가 거의 없거나 전혀 없는 애드혹 네트워크로서의 역사적 발전으로 인해, 인터넷은 전체적으로 해결하기 어려운 네트워크 혼잡 문제들이 만연해 있다. 특히, 네트워크 노드들 간의 정보 라우팅은 분산되어 있다. 다양한 분산형 라우팅 알고리즘들을 구현하는 "중간 라우팅 노드들"(많은 각기 다른 엔티티들에 의해 제공된 라우터들, 스위치들, 브리지들, 게이트웨이들, 방화벽들 등)에 의한 분산 방식으로 라우팅 결정이 이루어진다.
그 결과, 각 라우터 또는 기타 중간 라우팅 노드가 정보를 전송할 "다음 홉(next hop)" 노드를 결정하는 동안, 정보가 "소스" 노드에서 "목적지" 노드로 이동하는 전체 경로(즉, 두 노드들 사이의 개별 "홉" 세트)를 결정하는 중앙 집중화된 엔티티는 없다. 더욱이, 현재, 상호 연결을 포함하는 인터넷 상의 네트워크 노드들의 글로벌 토폴로지는 이러한 엔티티에 의해 실행 가능하게 결정될 수 없다.
인터넷 상에서 정보(본 출원에서는 "디지털 콘텐트(digital content)"로도 지칭됨)를 분배하기 위해, 정보는 고유한 IP 주소로 각 네트워크 노드를 식별하는 "인터넷 프로토콜(Internet Protocol)" (IP) 어드레싱 방식에 따라 개별적으로 라우팅되는 더 작은 패킷들로 분할된다. 한 네트워크 노드(노드 A)가 다른 네트워크 노드(노드 B)로 정보를 보낼 때, 해당 정보는 일반적으로 복수의 IP 패킷들로 분할되며, 각 패킷은 목적지 노드(노드 B)의 목적지 IP 주소로 어드레싱되지만, 노드 A로부터 노드 B로의 각기 다른 경로(다양한 중간 라우팅 노드들 사이의 홉)를 각각 잠재적으로 이동하며, 여기서 이러한 패킷들은 재구성(reassembled)된다.
이러한 중간 라우팅 노드들이 광범위한 어플리케이션들(예컨대, 웹 브라우징, 파일 전송, 이메일, 텔레포니, 비디오 스트리밍 등을 포함함)에 참여하는 많은 다른 네트워크 노드들에 의해 언제든지 리소스들이 공유되기 때문에, 이러한 공유된 중간 라우팅 노드들 중 하나 이상에서의 네트워크 혼잡은 매우 일반적이다. 그 결과, 정보를 목적지 노드로 전송하는 소스 노드의 능력은, 공유된 중간 라우팅 노드들을 통해 정보가 분배될 때 정보가 지연에 직면하기 때문에, 이 네트워크 혼잡에 의해 부정적인 영향을 받는다. 이러한 네트워크 혼잡은 정보가 이러한 공유된 중간 라우팅 노드들을 통해 분배될 때 "성능"을 제한하는 장치나 케이블 연결 장애, 과도한 대역폭 디맨드(demand) 및 다양한 기타 요인들로 인해 발생할 수 있다.
이러한 공유된 중간 라우팅 노드들에서의 네트워크 혼잡의 특성을 이해하기 위해, 어플리케이션과 관련된 네트워크(즉, 소스 노드) 상에서 디지털 콘텐트(digital content)(즉, 목적지 노드들)를 "소비(consuming)"하거나 디지털 콘텐트를 생성 또는 삽입하는 "사용자" 노드들과 이러한 중간 라우팅 노드들을 구별하는 것이 유용하다. 위에 언급된 네트워크 프린터(목적지 노드)는 정보를 소비하는 동안 혼잡을 경험할 수 있는 공유 네트워크 리소스이지만, 훨씬 문제가 많은 네트워크 혼잡의 형태는 전세계 인터넷을 통해 정보를 분배하기 위해 존재하는 공유 중간 라우팅 노드들에서 발생한다.
개별 네트워크 노드는 소스 노드와 목적지 노드 둘 다의 기능을 수행할 수 있다는 점에 유의해야 한다. 이러한 노드들은, 노드들이 상호 연결되는 특정 유형의 네트워크 토폴로지(예컨대, 스타(star), 링(ring), 트리(tree), 메쉬(mesh) 및 사실상 모든 유형의 그래프 또는 기타 물리적 또는 논리적 토폴로지)와 상관없이, 컴퓨터 서버뿐만 아니라 클라이언트 노드 - 예컨대, 데스크톱 및 랩톱 컴퓨터, 스마트 폰, 텔레비전, 스트리밍 미디어 박스, 센서 및 다양한 기타 연결 장치들 - 가 포함된다.
모든 네트워크 장치들은 인터넷과 같은 기본 네트워크의 네트워크 노드들로 간주될 수 있지만, 특정 어플리케이션에 참여하는 사용자 노드들은 종종 기본 네트워크 위에 구축된 "오버레이 네트워크(overlay network)"를 형성하는 "오버레이 노드들(overlay nodes)"로 일컫는다. 다시 말해, 어플리케이션의 상위 레벨의 "논리적" 관점에서 볼 때, (정보는 궁극적으로 소정의 오버레이 노드 쌍 사이의 중간 라우팅 노드들을 이동함에도 불구하고) 오버레이 노드들만이 이러한 오버레이 노드들 간 정보의 "오버레이 분배(overlay distribution)"에 포함된다.
예를 들어, 오버레이 노드들 A, B 및 C가 주어질 때, 노드 A에서 노드 C로의 경로는 두 개의 논리적 오버레이 경로들 또는 "링크들"의 세트 - 즉 노드 A에서 노드 B 로의 첫 번째 링크 및 노드 B에서 노드 C로의 두 번째 링크 - 로 표현될 수 있다. 그러나, 기초 네트워크의 관점에서, 한 쌍의 오버레이 노드들 사이의 각 논리적 링크는 다양한 중간 라우팅 노드들 통한 하나 이상의 하위 레벨 홉(hop)들을 포함하고, 그 중 하나 이상은 (예를 들어, 다른 어플리케이션 서비스 제공자들에 의해 구현된 각기 다른 오버레이 네트워크들 간 이러한 중간 라우팅 노드들의 공유로부터 발생되는 네트워크 혼잡으로 인해) 상당한 지연을 가져올 수 있다.
따라서, 오버레이 네트워크의 오버레이 노드들 간 오버레이 경로들 또는 링크 세트를 각 링크의 결정의 결과에 따라 정보가 이동하는 중간 라우팅 노드들 간 하위 레벨 경로들 또는 홉 세트와 구별하는 것이 중요하다. 각 논리적 링크의 작성자는 해당 링크를 따라 정보가 이동할 하위 레벨 경로를 명시적으로 결정하지 않는다. 실제로, 이러한 하위 레벨 경로는 링크가 결정된 후에도 미리 공지되지 않는다.
대신, 이러한 하위 레벨 경로들은 중간 라우팅 노드들 자체 내에서 구현된 분산형 라우팅 알고리즘들에 의해 동적으로 결정된다. 따라서, 한 쌍의 사용자 노드들 사이의 각 링크의 결정은 (데이터의 각 패킷에 대해) 해당 링크에 따른 중간 라우팅 노드들 간 많은 각기 다른 하위 레벨 경로들 중 하나로 결정되며, 이들 각각은 각기 다른 정도로 네트워크 혼잡을 겪을 수 있다.
또한, 정보의 분배는 본질적으로 한 노드에서 다른 노드로의 - 즉, "상위(parent)" 노드에서 "하위(child)" 노드로의 해당 정보의 - 이러한 노드들이 오버레이 노드들이든 중간 라우팅 노드들이든 (또는 무선으로 연결되든 물리적 케이블을 통해 연결되든) 상관없이 - "중계(relaying)"를 수반한다는 점에 유의해야 한다. 예를 들어, 위에 언급된 (노드 A에서 노드 C로의) 오버레이 경로 노드 B를 통한 정보의 중계를 수반한다. 마찬가지로, 노드 A와 노드 B 사이의 개별 링크는 A→B 링크에 따라 기본 네트워크 상의 다양한 중간 라우팅 노드들에 의한 정보의 중계를 야기한다.
현실적으로, 정보를 중계하기 위해, 노드는 먼저 해당 정보를 수신한 다음 다른 노드들로 정보를 전송하기 전에 정보를 복제한다 - 이 프로세스는 본질적으로 완료하는 데 약간의 시간이 필요하며, 따라서 지연 시간이 발생한다. 이 지연 시간은 노드 자체의 내부 혼잡을 포함하여, 변화되는 네트워크 혼잡의 결과로서 시간이 지남에 따라 증가 및 감소할 수 있다. 예를 들어, 노드는 프로세서(들), 메모리 및 기타 컴퓨팅 리소스를 요구하는 복수의 내부 태스크(task)들(예컨대, 게임 생 또는 스프레드 시트 재계산)을 수행할 때 지연을 유발할 수 있으며, 결국 다른 노드들로 정보를 중계하기 위한 능력에 영향을 줄 수 있다. 중간 라우팅 노드들은 그들이 복수의 어플리케이션들 간에 일상적으로 공유되므로 특히 지연이 발생하기 쉽다.
인터넷 상에서 패킷들을 라우팅하는 맥락에서, 노드들 사이의 물리적 거리 (또는 지리학적 근접성)는 패킷들이 광속에 가깝게 이동하기 때문에 성능에 큰 영향을 미치지 않는다. 그러나, 경로에 따른 평균 속도 또는 총 처리량은 해당 경로를 따라 발생하는 중지 또는 로드 블록의 수, 또는 이러한 맥락에서 소스 노드에서 목적지 노드로 정보를 중계하는 중간 라우팅 노드들에서 발생하는 홉의 수에 의해 영향을 받는다. 따라서, 두 노드들은 그들의 지리적 근접성에 관계없이, 상대적으로 적은 홉 간격으로 떨어져 있는 경우, 서로 "근접(nearby)"한 것으로 ("네트워크 근접"으로) 말할 수 있다.
네트워크 근접은 두 사용자 노드들 사이의 링크에 따른 처리량을 결정하는 요소일 수 있지만, 여러 가지 이유로 결정적인 것은 아니다. 예를 들어, 소스 또는 목적지 노드, 또는 해당 링크를 따르는 임의의 중간 라우팅 노드는 혼잡 또는 다양한 양의 지연을 유발하는 기타 문제들을 겪을 수 있다. 복수의 독립형 또는 네트워크 어플리케이션들에 동시에 참여하는 사용자 노드들이 혼잡되어, 정보를 수신하고, 소비하고 중계하는 성능에 영향을 줄 수 있다. 지연은 또한 해당 링크에 따라 노드들을 상호 연결하는 물리적 케이블의 고장으로 인해 발생할 수 있습니다.
그 결과, (특히 하나 이상의 중간 라우팅 노드들에서의) 네트워크 혼잡은 임의의 한 쌍의 소스 및 목적지 노드들 사이의 전체 이동 시간 또는 처리량에 크게 영향을 미칠 수 있다. 예를 들어, 한 쌍의 사용자 노드들 사이의 링크를 따르는 6-홉 경로는 4-홉 경로를 따라서만 직면하게 되는 중간 라우팅 노드에서의 네트워크 혼잡으로 인한 지연 결과 4-홉 경로보다 빠를 수 있다.
요컨대, 네트워크 혼잡에는 많은 원인들이 있다. 위에 설명된 바와 같이, (중간 라우팅 노드들뿐만 아니라 사용자 노드들을 포함하는) 임의의 네트워크 노드 또는 상호 연결된 노드 쌍의 성능은 - 내부 디맨드, 노드 내에서의 작동 지연 또는 장애, 다른 노드들로 및 다른 노드로부터의 트래픽으로 인한 혼잡 또는 기타 원인들로 인한- 네트워크 혼잡에 의해 영향을 받을 수 있다 더욱이, 인터넷과 같은 기본 네트워크 상의 혼잡은 네트워크 트래픽 성쇠(network traffic ebbs and flows)에 따라 엄청난 변동성의 영향을 받기 때문에, 이러한 혼잡은 어느 때라도 분리하여 측정하기가 어렵고, 특히 단기적으로도 예측하기가 어렵다.
넷플릭스(Netflix)와 같은 단일 회사가 최대 인터넷 트래픽의 3 분의 1 이상을 차지할 때, 인터넷을 통해 디지털 정보를 분배하는 다른 회사들은 안정적으로 일정한 성능이라는 목표(그들이 그러한 목표를 정의하나)를 충족하려는 희망이 있다면 인터넷 혼잡의 점점 더 큰 변동 특성을 어떻게든 해결해야 한다.
마찬가지로, 모바일 음성 및 데이터 사용이 급증함에 따라, 규제된 RF 스펙트럼의 제한적인 가용성은 고-대역폭 모바일 어플리케이션들을 개발하는 회사들에게 특히 중요하다.
네트워크 혼잡을 예측하는 문제는 인구 밀집 지역의 공유 도로와 고속도로의 교차 지점에서 교통 혼잡을 예측하는 것과 유사하다. 기존 GPS 네비게이션 및 교통 제어 시스템은 이러한 지점에서 현재 혼잡을 측정하고 이러한 혼잡 주변의 개별 운전자들을 경로 변경하기 위한 대체 경로들을 계산하지만, 임의의 특정 운전자에 대한 바람직한 경로들을 예측하는 능력은 교통 혼잡의 변동 특성으로 인해 제한된다.
아래에 명백하게 나타나듯이, (네트워크 혼잡의 부정적인 영향을 줄이기 위해) 대안적인 경로들 중에서 선택하는 문제는 이러한 네트워크 혼잡의 많은 원인 각각의 특성 및 위치에 대한 완전한 지식을 반드시 필요로 하는 것은 아니다. 이는 대안적인 경로들 또는 그의 컴포넌트들(예컨대, 개별 노드 또는 링크)의 성능에 대한 네트워크 혼잡의 영향을 결정하는 것으로 충분하다.
기존의 오버레이 네트워크 아키텍처가 네트워크 혼잡 문제에 접근하는 방법을 검토하기 전에, 인터넷의 기본 아키텍처가 문제를 악화시키는 데 중요한 역할을 하는 방법을 이해하는 것이 유용하다.
B. 기본 인터넷 아키텍처
ARPANET(인터넷 프로토콜 제품군 또는 TCP/IP를 구현하는 가장 빠른 패킷 교환 네트워크) 및 이후 NSFNET을 시작으로, 인터넷 "백본(backbone)"은 제어를 분산시키고 원하는 목적지에 도달하도록 정보에 대한 대안적인 통신 경로들을 제공함으로써 신뢰성(reliability)과 "복원력(resiliency)"이 제공되는 리던던트 "네트워크들의 네트워크" (즉, 인터넷)로 설계되었다. 그러나, 중간 라우팅 노드들과 같은 공유 네트워크 리소스들을 통해 각기 다른 경로들을 따르는 패킷들로 인해, 일정한 성능을 유지하는 어플리케이션의 능력은 매우 어려운 문제로 남아 있다.
분산된 라우팅 제어에 의해 제공되는 복원력과 일정한 성능에 대한 욕구 사이의 이러한 근본적인 트레이드오프는, 시간이 지남에 따라 인터넷 토폴로지의 진화에 의해 입증된 바와 같이, 인터넷의 네트워크 혼잡 문제의 중심에 있다. 이 토폴로지는 아마도 여러 다른 유형의 네트워크들을 포함하는 라우팅 계층으로 가장 잘 설명될 수 있다.
이 라우팅 계층의 핵심에는 "자율 시스템(autonomous system)" (AS)이라고하는 그 각각의 상호 연결된 네트워크 그룹이 있다. 위키디피아(Wikipedia)에 설명된 바와 같이, 각 AS는 "인터넷에 대해 공통적이고 명확하게 정의된 라우팅 정책을 제시하는 단일 관리 엔티티 또는 도메인을 대신하여 하나 이상의 네트워크 운영자들의 제어 하에" 연결된 IP 라우팅 프리픽스(IP 주소 범위)로 구성된다. 각 AS에는 라우팅 목적으로 인터넷 상에서 고유하게 식별되는 "자동 시스템 번호(autonomous system number)"(ASN)가 할당된다.
이러한 코어 네트워크들 각각은 본 출원에서 AS 또는 ASN으로 상호 교환적으로 지칭된다. 이러한 네트워크들의 수는 오늘날 전세계에 걸쳐 15년 전 약 5,000개에서 50,000개 이상으로, 최근 몇 년 동안 급격히 증가했다. 이와 함께, 이러한 네트워크들은, 주로 상당한 양의 정보를 그들 사이에 전파하거나 중계하고, 결국 전세계로 사실상 모든 국가의 다양한 목적지 사용자 노드들로 전달하기 위해 존재한다는 점에서, 인터넷의 "백본"을 형성한다고 말할 수 있다.
여러 회들이 이러한 코어 네트워크들을 소유하고 있기 때문에, 이들은 종종 이러한 네트워크들에 걸쳐 전 세계 인터넷을 통해 인터넷 트래픽의 라우팅을 용이하게 하기 위해 서로 "피어링(peering)" 규약을 맺는다. 각 AS 네트워크는, "보더 게이트웨이 프로토콜(border gateway protocol)" 또는 BGP("AS 내(intra-AS)" 중간 라우팅 노드들에 의해 사용된 라우팅 프로토콜들과 구별됨)로 알려진 라우팅 프로토콜을 사용하여, 다른 AS 네트워크로의 액세스를 제어하기 위해, 종종 "피어링 포인트"로 불리는 라우터 뱅크(중간 라우팅 노드들)를 사용한다. 임의의 소정의 AS는 하나 이상의 다른 AS 네트워크들에 연결하기 위해 복수의 피어링 포인트들을 사용할 수 있다. 상호 연결된 AS 네트워크들은 지리적으로 인접하거나 멀리 떨어져 있을 수 있으며, (예컨대, 국가 및 대양에 걸쳐) 장거리에 거쳐 있는 긴 섬유 트렁크(fiber trunks)를 통해 연결될 수 있다.
인터넷상의 네트워크 트래픽의 실질적인 부분이 이러한 상호 연결된 AS 네트워크들 중 가장 큰 교차점 또는 "교차로"을 통과함에 따라, 이러한 AS 네트워크들의 피어링 포인트들은, 러시아워 동안 주요 고속도로의 교차로에서의 트래픽 혼잡과 다르지 않은, 많은 네트워크 혼잡을 겪는다. 그러나, 상당한 네트워크 혼잡은 또한 이러한 네트워크들 내의 AS 내 중간 라우팅 노드들에서도 발생한다는 점에 유의해야 한다.
AS 간(inter-AS) 및 AS 내(intra-AS) 라우팅을 수행하는 중간 라우팅 노드들을 제공하는 것 외에도, 많은 AS 네트워크들은 또한 "인터넷 서비스 제공자(Internet Service Provider)들" (ISP들)로 알려진 엔티티들에 의해 제공된 특정 유형의 AS 내 "게이트웨이" 중간 라우팅 노드를 포함한다. 이러한 ISP 게이트웨이 중간 라우팅 노드들은 인터넷 상에서 이용할 수 있는 다양한 어플리케이션들과 관련된 디지털 콘텐트를 분배하고 소비하는 다양한 사용자 노드들의 네트워크들을 위한 인터넷에 게이트웨이를 제공한다. 사용자 노드가 해당 ISP에 의해 제공된 게이트웨이 노드를 통해 인터넷에 연결되면, 해당 사용자 노드는 그 게이트웨이 중간 라우팅 노드를 포함하는 AS 네트워크 내에 "네트워크 위치"를 갖고 있다고 말할 수 있다.
이러한 게이트웨이 노드들을 포함하지 않는 AS 네트워크들은 종종, (사용자 노드) 고객들에게 서비스를 제공하는 "공용(public)" 네트워크와는 대조적으로, "사설 백본(private backbone)" 네트워크들로 불린다. (주요 ISP와 같은) 대규모 공용 네트워크들의 많은 사업자들은 상당한 인터넷 트래픽의 라우팅을 용이하게 하기 위해 (자신의 공용 네트워크들 및/또는 다른 사람들에 의해 소유된 네트워크들에 연결된) 사설 백본 네트워크들을 소유하고 있다.
그러나, AS 네트워크들에 의해 제공된 중간 라우팅 노드들(예컨대, 게이트웨이 라우터들을 포함한 AS 내 라우터들 및 AS 간 BGP 라우터들)은 사용자 소스 및 목적지 노드들 사이에 생성 및 분배된 정보의 오리지널 소스 또는 최종 목적지가 아니라는 점에 유의하는 것이 중요하다. 이러한 중간 라우팅 노드들은 대신에 인터넷에 걸쳐 위치된 여러 목적지 사용자 노드들 사이에 다양한 소스 사용자 노드들에 의해 제공된 정보를 분배하기 위한 궁극적인 목적을 위해 그들 사이에 상당한 양의 정보를 중계하도록 설계된 "도관들(conduits)"이다. 이러한 구별은 아래의 도 1a에 예시되어 있다.
도 1a의 그래프(100a)는 공공(public) AS 네트워크들(110a)의 세트로 구성된, 인터넷의 아키텍처 뷰(view)를 예시한다. 각 AS 네트워크(110a-1 - 110a-8)는, 이러한 AS 네트워크들(110a) 사이에 정보를 상호 연결 및 중계하는 AS 간 라우터들(BGP 라우터들)(115a)뿐만 아니라, 각 AS 네트워크(110a) 내에서 정보를 중계하는 (ISP들에 의해 제공된 게이트웨이 라우터들을 포함한) AS 내 라우터들(125a)을 포함한, 두 세트의 중간 라우팅 노드들을 포함한다.
사용자 노드(130a)는 게이트웨이 라우터들로 알려진 AS 내 라우터들(125a)의 서브셋을 통해 인터넷에 연결된다. 사용자 노드(130a)는 인터넷 위에서 실행되는 다양한 공유 어플리케이션들에 참여(및/또는 기본적인 기능을 제공)하는 소스 및 목적지 노드들을 나타낸다. 특정 어플리케이션에 대해, 이러한 사용자 노드들(130a)은 특정 어플리케이션과 관련된 오버레이 네트워크를 구성하는 오버레이 노드들("어플리케이션 노드들(application nodes)"로도 지칭됨)로 간주될 수 있다. 이 오버레이 네트워크는 인터넷의 기본 인프라스트럭처 상에서 - 즉, 다양한 AS 네트워크들(110a) 내의 그리고 종종 다양한 AS 네트워크들에 걸친 두 세트의 중간 라우팅 노드들(115a 및 125a)에서 실행된다.
위에 언급한 바와 같이, 사용자 노드들(130a)은 이러한 어플리케이션의 일부로서 어떠한 콘텐트도 소비하거나 제공하지 않는 중간 라우팅 노드들(115a 및 125a)과 구별될 수 있다. 그리고, 아래에 논의되는 바와 같이, 한 유형의 오버레이 네트워크 아키텍처("엣지-기반(edge-based)")는 기술적으로 인터넷의 기본적인 아키텍처의 일부는 아니지만 본 출원에서 참조된 바와 같은 사용자 노드들보다 중간 라우팅 노드들에 더 유사한 역할을 수행하는 노드들로 구성된다.
C. 오버레이 네트워크 아키텍처
위에 논의된 바와 같이, 오버레이 네트워크들은 인터넷과 같은 기본적인 네트워크들 위에 구축된다. 오버레이 네트워크의 한 목적은 기본적인 네트워크 혼잡(network congestion)을 해결하는 것이다. 예를 들어, 두 오버레이 노드들 간 특정 링크에 따르는 중간 라우팅 노드들에서의 네트워크 혼잡은 이러한 혼잡을 효과적으로 "라우팅(route around)"하거나 바이패싱하는 오버레이 네트워크를 재구성함으로써 해결될 수 있다.
기본 네트워크 혼잡의 결과, 많은 어플리케이션들은 사용자의 "체감 품질(quality of experience)" (QoE) - 즉, 어플리케이션 성능의 품질에 대한 사용자 중심 또는 어플리케이션 레벨 뷰(view) - 에 부정적으로 영향을 미치는 중단(interruptions) 및 지연(delays)을 겪는다. 방송 비디오 어플리케이션에서, 예를 들어, 그들 사이에서 프레임 손실 및 리버퍼링 이벤트와 같은 요소들은 사용자의 QoE에 영향을 미칠 수 있다. 게다가, QoE의 감소(drop)는 종종 일정한 "서비스 품질(quality of service)" (QoS) - 즉, 처리량, 레이턴시 및 지터(jitter)와 같은 네트워크 중심 메트릭들에 기반한 성능 측정치를 제공하기 위한 인터넷의 기본 공유 인프라스트럭처의 많은 능력 부족으로 인한 것이다.
네트워크 중심의 추상적 개념 레벨에서 성능이 평가되든 및/또는 어플리케이션 사용자의 경험을 반영하는 더 높은 (어플리케이션 별) 레벨에서 성능이 평가되든, 오버레이 네트워크 내의 임의의 특정 경로를 따라 데이터에 의해 이동되는 노드들 및 링크들의 다양한 속성들은 시간이 지남에 따라 측정될 수 있다. 본 출원에서는 이러한 속성들을 메트릭(metric)들이라고 지칭한다.
이러한 맥락에서, 메트릭들은 또한 기본 네트워크 상의 다른 어플리케이션들 및 이벤트들로 인한 이러한 노드들 및 링크들에 미치는 영향의 "외부" 지표들(예를 들어, 더수퍼볼(the Super Bowl)) 또는 기타 인기 있는 대역폭 집약적인 이벤트, 특정 네트워크 영역에서의 네트워크 정지로 인한 트래픽 증가 및 지연 등)을 포함한다. 이러한 정보는, 예를 들어, 시간이 지남에 따른 네트워크 트래픽을 모니터링함으로써 직접 획득되거나, 또는 인터넷 트래픽을 모니터링하고 간헐적으로 시간이 지남에 따른 특정 트래픽 패턴들을 나타내는 로컬 또는 글로벌 인터넷 "트래픽 맵(traffic maps)"을 구축하는 제 3 자로부터 간접적으로 획득될 수 있다.
정해진 시간 기간 동안, 어플리케이션과 관련하여 분배된 특정 "콘텐트 아이템(content item)"에 대해, 연관된 "오버레이 네트워크 토폴로지"는 그들을 상호 연결하는 링크 세트와 함께 오버레이 노드 세트로 정의될 수 있으며, 이를 통해 콘텐트 아이템(또는 그 일부)이 분배되고 소비된다. 더욱이, 해당 오버레이 네트워크 토폴로지(및 그의 컴포넌트 노드들 및 링크들)의 성능은 메트릭 세트의 어플리케이션 별 기능으로 표현될 수 있다.
해당 시간 기간 동안, 현재 오버레이 네트워크 토폴로지의 성능은, 어플리케이션 별 성능 제약 세트로 표현될 수 있는, 정의된 "성능 기준(performance criteria)"을 충족하거나 충족하지 않을 수 있다. 성능 기준이 (예를 들어, 기본 네트워크 혼잡으로 인해) 충족되지 않은 경우, 그 링크들 중 하나 이상을 변경함으로써 오버레이 네트워크 토폴로지를 재구성하도록 하나를 선택할 수 있을 것이며, 이는 결국 콘텐트 아이템이 이동될 하위 레벨 경로들로 변경(잠재적으로 네트워크 혼잡을 바이패싱)된다.
인터넷 상에서 네트워크 혼잡의 문제를 해결하기 위한 많은 여러 가지 접근 방법들이 있지만 이러한 접근 방법은 크게 두 가지 별개 유형의 오버레이 네트워크 아키텍처들로 분류될 수 있다.
1. 엣지-기반 오버레이 네트워크
그러한 하나의 아키텍처는 본 출원에서 "엣지-기반(edge-based)" 오버레이 네트워크들로 지칭되는 것을 포함하며, 이는 어플리케이션 콘텐트를 생성하고 소비하는 사용자 노드들과는 구별되는 추가적인 전용 하드웨어(본 출원에서 상호 교환적으로 사용된 - 엣지 라우터들 또는 엣지 서버들로 알려져 있음)의 사용을 수반한다. 다시 말해, 사용자(소스 및 목적지) 노드들은 엣지-기반 오버레이 네트워크의 일부로 간주되지 않는다. 대신에, 오버레이 노드들은 (종종 "콘텐트 전송 네트워크(content delivery network)" 또는 CDN으로 불리는 그룹으로서의) 엣지 서버 자체이다.
어플리케이션들은 해당 링크를 따라 하위 레벨 중간 라우팅 노드들에서 네트워크 혼잡을 해결하기 위한 목적으로 (소스 사용자 노드에서 목적지 사용자 노드로의) 임의의 정해진 링크를 따르는 대안적인 "CDN 경로들"을 제공하기 위해 CDN의 엣지 서버들을 사용한다. 그러나, 아래에서 분명히 알 수 있는 것처럼, 이러한 대안적인 CDN 경로들은 CDN을 통과하는 링크들에 대해서만 네트워크 혼잡을 해결한다.
어플리케이션의 사용자 노드들이 인터넷 상에 광범위하게 분산되어 있고, 네트워크 혼잡이 사실상 모든 곳에서 발생할 수 있다는 점을 고려할 때, CDN의 엣지 서버들은 일반적으로 인터넷을 통해 AS 네트워크들의 "엣지들"에 전략적으로 위치되며, 이로써 CDN에 의해 제공된 엣지 서버들 중 하나 이상(의 네트워크 근접에 있는)에 "근접"해 있는 사용자 노드들에 대한 대안적인 CDN 경로들을 용이하게 한다. 더욱이, CDN은 오버랩되는 CDN 경로들을 따라 필요한 링크들의 수를 줄이기 위해 해당 엣지 서버들에서 콘텐트를 빈번하게 "캐싱(caches)"한다.
예를 들어, 도 1b의 그래프(100b)는 엣지-기반 오버레이 네트워크의 구조도(architectural view)를 예시하는 것으로 - 개별 AS 네트워크들(110b-1, 110b-2 및 110b-3)을 포함하여, 인터넷의 기본 아키텍처 상에서 실행되는 것이 도시된다. 단순화하기 위해, 각 AS 네트워크(110b) 내의 AS 간 및 AS 내 중간 라우터 노드들은 그래프(100b)에 도시되어 있지 않다.
(AS 네트워크(110b-1)의) 노드(120b)는 콘텐트 아이템이 발생되고 인터넷을 통해 다양한 사용자 노드들(130b)로 (CDN 인프라스트럭처를 거쳐) 분배되는 "소스(source)"노드를 나타낸다. (일반적으로 공유된) CDN 인프라스트럭처를 이용하는 특정 어플리케이션의 맥락에서, 어플리케이션은 콘텐트 아이템이 소스 노드(120b)로부터 각 사용자 노드(130b)로 이동될 CDN 경로들을 결정하기 위해 CDN 내의 기능에 의존한다.
콘텐트 아이템은 (CDN 인프라스트럭처를 통해) 소스 노드(120b)로부터 다양한 사용자 노드(130b)로 분배되기 전에 "세그먼트들" (즉, 컴포넌트 부분들)로 분할될 수 있음에 유의해야 한다. 일부 시나리오에서, 복수의 소스 노드들은 각기 다른 콘텐트 아이템들, 또는 개별 콘텐트 아이템의 세그먼트들을 분배하기 위해 사용된다. 위에 언급된 바와 같이, 심지어 콘텐트 아이템의 개별 세그먼트도 다양한 중간 라우팅 노드들을 통해 각기 다른 하위 레벨 경로들을 따라 라우팅되는 IP 패킷들로 더 분할될 수 있다.
어떤 경우든, 소스 노드(120b)가 각각 별개의 사용자 노드(130b)로 콘텐트를 직접 분배하는 것은 비효율적이기 때문에, 이러한 오버레이 노드들(125b)을 통해 소스 노드(120b)로부터 사용자 노드들(130b)로 콘텐트를 중계하기 위해 엣지-기반 오버레이 네트워크의 CDN 인프라스트럭처 내의 기능(즉, CDN 엣지-서버 오버레이 노드들(125b))이 사용된다. 다시 말해, (목적지 사용자 노드 (130b-EST)와 같은) 각 목적지 사용자 노드(130b)에 대해, CDN은 개별 CDN 엣지-서버 오버레이 노드 쌍들(125b)(A 내지 I로 라벨링됨) 사이에서 상위-하위 "CDN 링크" 세트로 구성되는 해당 목적지 사용자 노드(130b-DEST)에 대한 CDN 경로를 결정한다.
예를 들어, 그래프(100b)에서 점선 화살표는 소스 노드(120b)로부터 하나의 특정 목적지 사용자 노드(130b)로의 현재 CDN 경로 - 즉, 노드(130b-DEST)를 예시한다. 이 CDN 경로는 다음의 5 개의 상위-하위 CDN 링크들(소스 노드(120b) 및 목적지 사용자 노드(130b)를 포함함)로 구성된다: 120b →A, A→B, B→F, F→H 및 마지막으로 H→130b-DEST.
CDN이 현재 CDN 경로를 따라 (예를 들어, 해당 링크에 따른 하위 레벨 중간 라우팅 노드들을 포함하는, B→F CDN 링크에 따른 혼잡으로 인한) 혼잡을 검출하면, CDN은 그 검출된 혼잡을 바이패싱하기 위한 대안적인 CDN 경로를 생성할 수 있다.
예를 들어, (실선 화살표로 예시된) 대안적인 CDN 경로는 다음의 8개의 상위-하위 CDN 링크들(또한 소스 노드(120b) 및 목적지 사용자 노드(130b)를 포함함)로 구성된다: 120b→A, A→B, B→C, C→D, D→E, E→G , G→H 및 마지막으로 H→130b-DEST. 이러한 대안적인 8-링크 CDN 경로는 (예를 들어, 문제가 있는 B→F CDN 링크를 바이패싱하기 때문에) 현재 5-링크 CDN 경로보다 소스 노드(120b)로부터 목적지 노드(130b-DEST)로의 더 빠른 처리량을 산출할 수 있다.
CDN은 다양한 대안적인 CDN 경로들의 전체 처리량을 검출할 수 있지만, CDN은 결과적인 네트워크 혼잡의 정확한 원인을 검출하지 못할 수 있다는 점에 유의해야 한다. 예를 들어, 현재 CDN 경로에서의 네트워크 혼잡은 개별 B 또는 F 오버레이 노드들(125b) 자체에 의해 또는 문제가 있는 B→F CDN 링크에 따른 (B→F 링크에 따라 하위 레벨 분산형 라우팅 알고리즘들에 의해 선택된) 특정 중간 라우팅 노드에 의해 발생될 수 있다.
어떤 경우든, 대안적인 CDN 경로는 - CDN 기능은 B→F 링크를 따르는 특정 오버레이 노드(125b) 또는 중간 라우팅 노드가 이 네트워크 혼잡을 담당한다는 사실을 "알지 못함(unaware)"에도 불구하고 - 문제가 있는 B→F CDN 링크를 포함하지 않기 때문에 (그리고 이에 따라 바이패싱하기 때문에) 더 큰 처리량을 달성할 수 있다.
위의 예에서, 대안적인 CDN 경로의 전체 처리량은 이러한 CND 경로들의 성능의 한 척도이다. 그러나, 복수의 CDN 경로들 간 성능을 비교하는 맥락에서, 이는 또한 네트워크 혼잡이 이러한 성능에 미치는 영향을 간접적으로 나타내는 지표로도 기능한다. 이 예에서, 전체 처리량은 CDN이 현재 5-링크 CDN 경로보다 더 우수한 성능을 제공하는 대안적인 8-링크 CDN 경로를 선택할 수 있도록 하기에 충분할 수 있다. 다른 시나리오들에서, 대안적인 CDN 경로들의 이러한 비교를 용이하게 하기 위해 네트워크 혼잡의 성능 영향에 대한 추가적인 간접 지표(즉, 다른 메트릭들)가 사용될 수 있다.
더욱이, 다양한 개별 에지 서버에서 콘텐트를 캐싱함으로써, CDN은 이러한 캐시 된 콘텐트를 활용함으로써, 예를 들어, 콘텐트는 CDN 에지 서버 오버레이 노드들 (125b) 중 하나에 캐싱되므로, 소스 노드 (120b)에서 발생하는 CDN 링크 세트를 필요로 하지 않는다.
요컨대, 엣지-기반 오버레이 네트워크들은 CDN 라우팅 기능이 (그래프(100b)에서 각각의 점선 및 실선 화살표 세트로 예시된 대안적인 CDN 경로들과 같은) 그 오버레이 노드(125b) 쌍들 사이의 대안적인 CDN 링크 세트를 정의함으로써 (목적지 사용자 노드 (130b)에 대한) 대안적인 엣지-기반 CDN 경로들을 정의할 수 있게 하는 오버레이 노드 세트(엣지-서버(125b))를 포함한다. 그러나 공유 엣지-기반 오버레이 네트워크 상의 어플리케이션들에 의한 의존성은 여러 가지 단점들을 초래한다.
예를 들어, 추가적인 물리적 인프라스트럭처(CDN 엣지-서버 오버레이 노드들(125b))를 구매 또는 임대하는 비용은 엄청날 수 있다. 엣지 서버들은 일반적으로 (예를 들어, 인터넷을 통해 다수의 사용자 노드들(130b)을 수용하기 위해) 다양한 AS 네트워크(110b)의 "엣지들"에서의 다수의 전략적 위치들에 배치된 고-대역폭 연결을 갖는 고가의 컴퓨터 서버들이다.
엣지-기반 오버레이 네트워크들을 보다 비용 효율적으로 만들기 위해, 엣지 서버들은 종종 여러 엔티티들에 의해 제공된 다양한 어플리케이션들 사이에 공유된다. 그 결과, 이러한 어플리케이션들은 다양한 목적지 사용자 노드(130b)에 대한 오버랩되는 CDN 경로들을 수용하기 위해 (서로 그리고 개별 어플리케이션의 사용자 노드들(130b) 사이에서) 엣지 서버(125b)를 공유해야 한다. 그 결과, 엣지-기반 오버레이 네트워크들은 실제로 네트워크 혼잡을 유발하고 그들이 해결되도록 설계된 바로 그 문제를 악화시킬 수 있습니다.
게다가, 엣지-기반 오버레이 네트워크들은 사용자 노드들(130b)을 오버레이 노드들로서 이용하지 않기 때문에, 그 대안적인 CDN 경로들은 (목적지 사용자 노드들(130b)이 그러하듯이) 콘텐트를 소비하지 않는 CDN 엣지-서버 오버레이 노드들(125b)에 의존한다. 예를 들어, 임의의 사용자 노드(130b)를 목적지로 하는 콘텐트는 CDN의 기능을 활용하기 위해 CDN (및 그 엣지-서버 오버레이 노드들(125b))을 거쳐야 한다.
다시 말해, CDN에 의해 제공된 추가 인프라스트럭처(엣지 서버들)는 본질적으로 인터넷의 기본 아키텍처의 일부인 하위 레벨 중간 라우팅 노드들과 더 유사하게 콘텐트를 (소비하지 않고) "라우팅" 하기 위해 존재한다. 그 결과, 엣지-기반 오버레이 네트워크들은 사용자 노드들(130b) 사이에 콘텐트를 분배하기 위해 추가적인 컴퓨팅 리소스들을 필요로 하며, 이는 자체적으로 지연 및 다른 비효율성을 야기할 수 있다.
본질적으로, 엣지-기반 오버레이 네트워크들은 "피어-기반" 오버레이 네트워크들(아래에 논의됨)보다 네트워크 혼잡을 해결하는 직접적인 방법을 제공하지 않으며, 콘텐트의 소비에 직접 관련되지 않은 인터넷 생태계에 공유 리소스들을 추가함으로써 실제로 네트워크 혼잡에 기여한다.
2. 피어-기반 오버레이 네트워크
본 출원에서 "피어-기반" 오버레이 네트워크들로 지칭되는 것을 포함한 대안적인 아키텍처는 엣지-기반 아키텍처와 상당히 다른 접근방법을 사용한다. 피어-기반 접근 방식은 콘텐트를 목적지 사용자 노드들로 분배하기 위해 추가 인프라스트럭처(엣지 서버들)에 의존하는 대신 그들 사이에 콘텐트를 중계하기 위해 (콘텐트를 수신하고 소비하는) 기존 목적지 사용자 노드들의 리소스들을 활용한다. 다시 말해, 피어-기반 오버레이 네트워크에서, 목적지 사용자 노드들은 오버레이 노드들이다.
따라서 "피어-투-피어"(P2P) 접근 방법은 콘텐트를 수신하고 소비할 뿐만 아니라 해당 콘텐트를 다른 목적지 사용자 노드들로 중계하기 위해 선택된 목적지 사용자 노드들(기존 "용량")의 리소스들을 활용한다. 본 출원에서 이러한 유형의 오버레이 노드들은 그들이 이러한 다른 피어 노드들로 콘텐트를 중계할 수 있기 때문에 (피어-기반 오버레이 네트워크의) "피어 노드들"로 칭한다. 위에 언급된 바와 같이, 이러한 노드들은 또한 그들이 특정 어플리케이션 (또는 개별 콘텐트 아이템)과 관련하여 콘텐트를 소비하기 때문에 때때로 "어플리케이션 노드들"로도 칭한다
피어 기반 오버레이 네트워크는 다양한 유형의 물리적 및 논리적 네트워크 토폴로지 (별, 링, 트리, 메시 및 거의 모든 유형의 그래프 포함)로 구현할 수 있습니다. 기존 피어-기반 오버레이 네트워크들은 파일 전송, "VOD(video-on-demand)", 오디오 및 비디오 스트리밍, 라이브 비디오 방송 및 다양한 기타 콘텐트 분배 어플리케이션들과 같은 많은 여러 유형들의 어플리케이션들에 사용되었다.
예를 들어, 도 1c의 그래프(100c)는, (개별적으로 110c-1 내지110c-3으로 예시된 - AS 네트워크들(110c)을 포함하여, 인터넷을 통해 위치된) 모든 사용자 노드들(130c)이 궁극적으로 콘텐트를 수신하여 소비하도록, 소스 노드(120c)로부터의 콘텐트가 하나의 피어 노드(사용자 노드(130c))로부터 다른 피어 노드로의 방향으로 분배되는, 트리-기반 토폴로지를 예시한다. 도 1b에 예시된 엣지-기반 오버레이 네트워크와 달리, 그래프(100c)의 오버레이 노드들은 사용자 노드들(130c) 자체 - 즉, 콘텐트를 수신하고 소비하는 노드들이다.
더욱이, 이러한 사용자 노드들(130c) 중 다수는 (콘텐트를 수신하고 소비만하는 "리프 노드들(leaf nodes)"과 구별되는) 다른 사용자 노드들(130c)로 콘텐트를 중계한다. 도 1c의 다양한 상위-하위 링크들은, 엣지 서버 쌍들 사이의 CND 링크들 또는 어플리케이션 자체의 일부가 아닌 다른 추가 인프라스트럭처인 도 1b의 링크들과는 달리, 사용자 노드 쌍 (130c) 사이의 링크들이다. 피어-기반 네트워크는, 콘텐트를 중계하기 위해 사용자 노드들(130c) 자체(피어-기반 오버레이 노드들)의 리소스들을 활용함으로써 - 추가적인 외부 대역폭 또는 엣지-기반 오버레이 네트워크(CDN)의 공유 엣지 서버들에 의해 제공된 것과 같은 기타 리소스들을 필요로 하지 않고 - 해당 콘텐트를 소비하는 목적지 사용자 노드들(130c) 사이에 해당 콘텐트의 분배를 용이하게 한다.
예를 들어, (점선 화살표로 표시된) 소스 노드(120c)로부터 사용자 노드(130c-DEST)로의 피어-기반 오버레이 경로는 다음의 세 개의 상위-하위 링크들을 포함한다: 120c→A, A→B, 및 마지막으로 B→30c-DEST. 이 동일한 피어-기반 오버레이 경로(예를 들어, A→B로의 단일 링크)의 서브셋은 또한 소스 노드(120c)로부터의 대안적인 오버레이 경로 또는 사용자 노드들(130c) 자체의 인프라스트럭처 이외의 임의의 추가 인프라스트럭처를 요구하지 않고 다른 사용자 노드들(130c)(예컨대, 노드(B))에 의한 소비를 위해 콘텐트를 분배하는데 사용될 수 있다.
나머지 사용자 노드들(130c)은 다른 피어-기반 오버레이 경로들 및 그 서브셋 링크들(실선 화살표로 예시됨)에 의해 서비스되며, 나머지 사용자 노드들에서 "피어-투-피어" 중계가, 예를 들어, 콘텐트를 일시적으로 캐싱하고 그 콘텐트를 대안적인 피어-기반 오버레이 경로들의 일부로서 다른 피어 노드들로 중계하기 위해, 개별 피어 사용자 노드들(130c)의 달리 사용되지 않는 리소스들을 활용하도록 사용된다. 그 결과, 피어-기반 오버레이 네트워크들은 그 분산 특성이 - 예를 들어, 이러한 혼잡을 바이패싱하기 위해 다른 피어 노드들을 통해 콘텐트를 분배함으로써 - 개별 혼잡 지점들(장치 또는 케이블 장애 포함)에서 복구를 용이하게 한다는 점에서 엣지-기반 오버레이 네트워크들보다 더 복원력이 좋고 확장 가능한 경향이 있다.
(예를 들어, 사용자 노드들이 추가 및 제거되고, 각기 다른 유형들의 콘텐트 아이템들이 다양한 어플리케이션들에 의해 배치됨에 따라) 추가 물리적 인프라스트럭처(엣지 서버들)가 변화하는 대역폭 디맨드들을 수용하기 위해 "로드 밸런싱"되어야 하는 엣지-기반 네트워크들과 달리, 피어-기반 네트워크들의 안정성과 성능은 실제로 더 많은 노드가 추가되고 더 많은 대안적인 오버레이 경로들을 사용할 수 있게 된다.
피어-기반 오버레이 네트워크들은 엣지-기반 아키텍처 고유의 고가의 추가 인프라스트럭처에 대한 필요성을 벗어나지만, 기존 피어-기반 솔루션들은 아직 기본 네트워크 혼잡을 효과적으로 바이패싱하지 못했다. 이 문제는 많은 수의 피어 노드들이 동일한 시간 기간 동안 인기 있는 콘텐트 아이템 (또는 심지어 다양한 각기 다른 콘텐트 아이템들)에 액세스하려고 할 때 특히 성행하고 있다.
기존 피어-기반 오버레이 네트워크들은 일반적으로 노드들의 추가 또는 제거를 해결하는 데 필요한 정도로만 - 즉, "현재" 피어 노드 세트를 수용하기 위해 재구성된다. 시스템에 새로운 노드들을 추가할 뿐만 아니라 시스템을 떠나는 노드들로 인한 "손상된" 링크들을 처리하기 위해 새로운 링크들이 생성된다. 이탈 노드(departing node)가 리프 노드인 경우, 해당 노드에 대한 링크가 제거된다. 그러나, 그 이탈 노드가 이전에 콘텐트를 하위 노드로 중계한 상위 노드인 경우, 해당 하위 노드는 새로운 상위 노드를 필요로 하는 "오펀(orphan)" 하위 노드가 되어 새로운 링크를 생성을 요구한다.
그러나, 피어 노드들이 추가 또는 제거될 때뿐만 아니라 네트워크 혼잡이 개별 노드들 및 링크들을 포함한 피어-기반 오버레이 네트워크 토폴로지의 성능에 부정적인 영향을 미칠 때 (이상적으로는 그 이전에) (부분 수정을 수행하든 또는 새로운 토폴로지를 효과적으로 결정하든) 토폴로지를 재구성하는 것이 바람직하다. 다시 말해, 네트워크 혼잡이 성능에 미치는 영향을 제한하기 위해서는, 어플리케이션의 성능 기준을 충족하면서 검출(뿐만 아니라 예상)된 네트워크 혼잡을 효과적으로 바이패싱하도록 피어-기반 오버레이 네트워크 토폴로지를 재구성하는 것이 바람직하다.
D. 예상 오버레이 네트워크 아키텍처에 대한 필요성
그러나, (정의된 어플리케이션 별 성능 기준을 충족시키기 위해) 어느 사용자 노드들이 어느 다른 사용자 노드들로 콘텐트를 중계해야 하는지를 결정하는 작업(task)은, 특히 순열 수가 오버레이 네트워크에 추가된 사용자 노드들의 수에 따라 기하급수적으로 증가하므로, 어려운(daunting) 작업이다. 이 작업의 어려움을 이해하기 위해, 위에 언급된 바와 같이, 시간이 지남에 따라 수집된 메트릭들은 오버레이 네트워크 토폴로지의 성능에 대한 네트워크 혼잡의 영향을 간접적으로 나타내는 지표들로만 기능한다는 것을 인식하는 것이 중요하다.
다시 말해, 메트릭들은 네트워크 혼잡에 대한 직접적인 측정치가 아니다. 대신에, 메트릭들은 네트워크 트래픽의 흐름에 미치는 네트워크 혼잡의 영향을 반영한다. 네트워크 혼잡은 오버레이 네트워크 토폴로지 (및 그 컴포넌트 노드들 및 링크들)의 성능에 영향을 주지만, 이는 오버레이 네트워크 토폴로지가 정의된 성능 기준을 충족하는지를 결정하는 이러한 성능에 대한 네트워크 혼잡의 영향이다. 이력 메트릭들은 해당 영향이 그로부터 측정되고 예측될 수 있는 데이터를 제공한다. 기존 오버레이 네트워크 아키텍처들은 메트릭들과 대안적인 오버레이 네트워크 토폴로지의 성능을 상관시키는 방식으로 아직 네트워크 혼잡을 해결하지 못했다.
네트워크 혼잡은 오버레이 네트워크 토폴로지의 잠재적 성능을 평가하는 데 있어 하나의 장애물일 뿐이라는 점에 유의해야 한다. 또 다른 (종종 간과된) 장애물은 오버레이 네트워크 토폴로지의 노드들 및 링크들 사이에 "상호 의존성"이 존재한다는 것이다. 이러한 상호 종속성은 자주 변경되는 네트워크 혼잡의 영향과는 별개로 이 문제를 악화시킬 수 있다.
정적(static) 네트워크 혼잡을 가정하더라도, 특정 오버레이 네트워크 토폴로지의 개별 노드들 및 링크들의 예상 성능은 "업스트림" 노드들 및 링크들의 성능에 달려 있다. 특히, 상위 노드로부터 하위 노드로의 링크 성능은 해당 상위 노드로의 링크의 업스트림 성능에 달려 있다. 예를 들어, 노드가 특정 속도 (예컨대, 500kbps)로 그 상위 노드로부터 콘텐트를 수신하면, 해당 콘텐트를 더 높은 속도(예컨대, 1mbps)로 그 하위 노드로 중계할 수 없다. 그러나, 아래에 더 상세히 논의되는 바와 같이, 콘텐트를 복수의 하위 노드들로 (각각 이러한 하위 노드에 대해 최대 500 kbps의 속도로) 동시에 복제 및 중계하기 위한 "용량"을 가질 수 있다.
현재 피어-기반 접근 방법들(뿐만 아니라 엣지-기반 접근 방법들)은 아직 콘텐트 아이템들이 분배되고 소비되는 오버레이 네트워크 토폴로지의 개별 노드들 및 링크들 간의 이러한 상호 의존성을 해결하지 못했다. 그들은 또한 오버레이 네트워크 토폴로지들의 재구성을 용이하게 하는 방식 - 즉, 대안적인 오버레이 네트워크 토폴로지들이 콘텐트 아이템들의 분배 및 소비에 대한 어플리케이션들에 의해 부과된 성능 기준 제약들을 충족하는지 여부의 결정 - 으로 기본 네트워크 혼잡 문제를 효과적으로 해결하지 못했다.
(GPS 네비게이션 시스템과 같은) 기존의 피어-기반 오버레이 네트워크들은 피어 중계 노드들을 선택하고, 검출된 네트워크 혼접에 응답하여 "사후(after the fact)" 트래픽만 "리라우팅"하기 위해 지리적 근접성에 의존하는 경향이 있다. 엣지-기반 오버레이 네트워크들은 (고속의 대안적인 경로들을 제공하기 위해 프리웨이의 네트워크 구축과 유사한) 인터넷과 같은 기본 네트워크의 공유 인프라스트럭처 상에서 실행되는 다양한 어플리케이션들에 의해 정의된 성능 기준을 충족하는 방식으로 자주 변경되는 네트워크 혼잡의 문제 또한 적절하게 해결하지 못하는 고가의 외부 물리적 인프라스트럭처에 의존한다.
따라서, 네트워크 혼잡이 사후적으로(reactively) 평가되든 전향적으로(prospectively) 평가되든 - 어플리케이션의 성능 기준에 비추어 대안적인 오버레이 네트워크 토폴로지를 평가할 때 이러한 종속성을 고려할 필요가 있다.
요컨대, 개별 노드들 및 링크들의 예상 성능이 업스트림 노드들 및 링크들의 성능에 의존하고, 노드가 추가 및 제거될 때뿐만 아니라 네트워크 혼잡이 목적지 사용자 노드들에 의해 겪는 성능에 부정적인 영향을 미칠 때 정의된 어플리케이션 별 성능 기준을 충족할 오버레이 네트워크 토폴로지를 결정한다는 사실을 반영하는 방식으로 자주 변경되는 네트워크 혼잡을 해결하는 예상 오버레이 네트워크 아키텍처가 필요하다.
II. 개요
위에 언급된 바와 같이, 인터넷을 통한 기본 네트워크 혼잡은 오버레이 네트워크들을 통해 디지털 콘텐트를 분배하는 어플리케이션들의 성능에 영향을 준다는 것이 잘 확립되어 있다. 본 발명은 임의의 정해진 시간 기간 동안, 오버레이 네트워크 토폴로지(및 그 개별 노드들 및 링크들)의 성능이 기본 네트워크 혼잡뿐만 아니라 (해당 오버레이 네트워크 토폴로지의 노드들 및 링크들 간에 업스트림 및 다운 스트림 종속성 생성하는) 그 시간 동안 사용된 특정 오버레이 네트워크 토폴로지의 구성에 의존한다는 사실을 해결함으로써 기존 접근 방법들의 결함들을 극복하는 예상 오버레이 네트워크 아키텍처를 제공한다. 본 발명은 네트워크에 추가되고 네트워크로부터 제거된 노드들을 수용할 뿐만 아니라 정의된 성능 기준을 충족하면서 성능을 향상시키기 위해 시간이 지남에 따라 현재 오버레이 네트워크 토폴로지를 재구성한다.
일 실시예에서, 본 발명은 오버레이 네트워크 토폴로지의 개별 노드들 및 링크들의 성능에 대한 네트워크 혼잡의 영향을 부분적으로 측정함으로써 자주 변경되는 네트워크 혼잡을 해결한다. 콘텐트를 중계하기 위한 예상 오버레이 네트워크 토폴로지의 지정된 노드들 및 링크들의 용량을 예측하기 위해 이러한 측정치들을 사용한다. 특히, 예상 상위 노드의 "노드-중계 용량(node-relaying capacity)"은 하나 이상의 하위 노드들로부터의 디맨드를 동시에 충족시킬 수 있는 노드들의 능력을 반영하는 반면, 지정된 링크의 "링크-중계 용량(link-relaying capacity)"은 해당 링크의 지정된 하위 노드로부터의 디맨드를 충족시키는 링크의 능력을 반영한다.
예를 들어, 상위 노드(A)가 하위 노드(B)로 콘텐트를 중계하는 링크(A→B)의 성능은, 상위 노드(A)에서 하위 노드(B)로의 링크를 따라 중간 라우팅 노드들에 의해 발생된 것과 같이, 기본 네트워크 혼잡에 의해 영향을 받을 수 있다. 하위 노드(B)에 의한 디맨드가 5mbps이라고 가정하면, 상위 노드(A)가 해당 디맨드를 충족시키는 경우(즉, 5mbps로 하위 노드(B)에 콘텐트를 전달함으로써), A→B 링크는 5mbps 링크-중계 성능(링크-중계 용량의 지표)을 나타냈다고 말할 수 있다. 대안적으로, 상위 노드(A)가 (예를 들어, 3mbps로 하위 노드(B)로 콘텐트를 전달함으로써) 해당 디맨드를 충족시키지 못하면, A→B 링크는 3mbps 링크-중계 성능을 나타냈다고 말할 수 있다.
후자의 경우에, 상위 노드(A)가 특정 하위 노드(하위 노드(B))의 디맨드를 충족시키지 못하는 것은 다양한 요인들에 의해 단독으로 또는 조합하여 발생할 수 있음에 유의해야 한다. 예를 들어, 이러한 실패는 A→B 링크에 따른 네트워크 혼잡과 같은 다운 스트림 종속성에 기인할 수 있다. 또한, 상위 노드(A) 자체 내의 요인들(예컨대, 대역폭-집약적 게임을 재생하는 것과 같은 기타 활동들에 대한 노드(A)의 성능)에 기인할 수 있다. 또한, 이러한 실패는 업스트림 의존성(예를 들어, 3 mbps로 노드(A)로 콘텐트를 전달하는 노드(A)의 상위 노드)에 기인할 수 있다.
예상 오버레이 네트워크 토폴로지의 노드들 및 링크들 간의 이러한 상호 의존성의 평가를 용이하게 하기 위해, 본 발명은 또한 예상 상위 노드의 노드-중계 용량을 고려한다. 예를 들어, 일 실시예에서, 상위 노드(A)가 현재 동시에 (A→B, A→C 및 A→D 링크들을 따라) 세 개의 하위 노드들로 콘텐트를 중계하는 경우, 상위 노드(A)는 노드-릴레이 성능을 나타낸다고 말할 수 있다. 이러한 세 개의 링크들의 링크-중계 성능의 합과 같은 노드-중계 성능을 나타내는 것으로 말할 수 있다. 아래에 더 상세히 논의되는 바와 같이, 상위 노드(A)의 실제 링크-중계 용량은 심지어 더 높을 수도 있다.
위에 언급된 바와 같이, 노드들은 동시에 복수의 하위 노드들로 콘텐트를 복제하고 중계할 수 있기 때문에, 5mbps로 콘텐트를 수신하는 노드는 복수의 하위 노드들로 (각각 5mbps로) 동시에 콘텐트를 중계하기 위한 용량을 가질 수 있다. 그러나, 다양한 요인들이 노드의 노드-중계 용량을 제한할 수 있다. 예를 들어, 노드의 업링크 속도는 10mbps일 수 있으며, 노드가 콘텐트를 (각각 5mbps로) 두 개 이상의 하위 노드들로 동시에 중계하지 못하게 한다.
그러나 10mbps 노드-중계 용량을 가진 노드는 두 개의 하위 노드들로 동시에 (각각 5mbps로) 콘텐트를 중계할 수 없다는 점에 유의해야 한다. 예를 들어, 노드(A)가 10mbps 노드-중계 용량이 있지만, A→B 링크가 3mbps 링크-중계 용량이 있는 경우, 노드(A)는 (예를 들어, A → B 링크에 따른 다운 스트림 종속성으로 인해) 여전히 하위 노드(B)로만 콘텐트를 3mbps로 중계할 수 있다.
아래에 더 상세히 논의되는 바와 같이, 본 발명은 (각각의 목적지 노드로부터의 5mbps 디맨드와 같은) 정의된 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 식별하기 위해 오버레이 네트워크 토폴로지의 노드들 및 링크들의 노드-중계 용량 및 링크-중계 용량 둘 다에 의존한다. 그렇게 함으로써, 본 발명은 임의의 예상 오버레이 네트워크 토폴로지의 노드들 및 링크들 사이의 상호 의존성뿐만 아니라 자주 변경되는 네트워크 혼잡을 해결한다.
이러한 점에서, 본 발명은 콘텐트 아이템들이 전파되는 오버레이 네트워크 토폴로지의 노드들 및 링크들의 성능을 반영하는 실시간 메트릭들의 모니터링 및 처리를 활용한다. 위에 언급된 바와 같이, 임의의 정해진 시간 기간 동안, 현재 실시간 메트릭들은 현재 오버레이 네트워크 토폴로지의 개별 노드들 및 링크들의 성능에 대한 네트워크 혼잡의 영향의 간접적인 지표로서 기능한다. 이러한 메트릭들은 또한 현재 오버레이 네트워크 토폴로지의 구성에 의해 생성된 업스트림 및 다운 스트림 종속성의 결과(뿐만 아니라 노드들 및 링크들 자체의 고유 속성들)를 간접적으로 반영한다.
일 실시예에서, "메트릭 프로세서"는 오버레이 네트워크 토폴로지의 예상 노드들 및 링크들과 관련된 원시 메트릭들을 처리하고, 이러한 처리된 메트릭들을 (이러한 원시 메트릭들이 관찰되고 수집되는 동안의 시간 기간을 반역하는 메트릭 "타임스탬프"와 함께) "예측 엔진"에 제공한다. 예측 엔진은 지정된 예상 상위 노드들의 노드-중계 용량을 예측하는 "노드-중계 분류기" 및 예상 링크들의 링크-중계 용량을 예측하는 "링크-중계 분류기"를 포함한다.
메트릭 프로세서는 노드-중계 분류기에 대한 입력으로서, 예상 상위 노드들의 노드-중계 속성들을 나타내는 하나 이상의 "노드 메트릭들" - 즉, 하나 이상의 하위 노드들로 콘텐트를 중계하는 노드 능력의 지표들 - 을 생성한다. 일 실시예에서, 노드 메트릭은 CPU 로드, 메모리 사용량, 운영 체제, 연결 유형, 업링크 및 다운링크 속도, IP 주소, ISP, ASN 및 예상 상위 노드의 다양한 기타 노드-중계 속성들을 포함한다. 다른 실시예들에서, 노드 메트릭들은 그들이 예상 상위 노드의 노드-중계 성능을 (심지어 간접적으로) 반영하는 범위 내에서 다양한 추가적인 QoS 및 QoE 메트릭들(예를 들어, 그들 상에서 프레임 손실 및 리버퍼링 이벤트)을 포함한다. 더 적거나 추가적인 메트릭들이 본 발명의 사상을 벗어나지 않고 이용될 수 있다는 것이 당업자에게 명백 할 것이다.
노드-중계 분류기의 트레이닝과 관련하여, 메트릭 프로세서는 또한 해당 사위 노드의 현재 관찰된 노드-중계 성능을 (예를 들어, 각각의 샘플 기간 동안) 반영하는 예상 상위 노드에 대한 대응하는 출력들을 생성한다. 예를 들어, 상위 노드(노드(A))가 특정 기간 동안 하위 노드(B)에 5mbps를, 하위 노드(C)에 3mbps를 동시에 전달한 경우, 상위 노드(A)에 대한 "트레이닝 샘플"은 (노드-중계 분류기에 대한 입력들로서) 노드(A)와 연관된 노드 메트릭들 (이러한 노드 메트릭들이 획득되는 시간 기간을 반영한 타임스탬프와 함께) 및 (노드-중계 분류기에 대한 출력들로서)노드(A)의 관찰된 노드-중계 성능의 합(예컨대, 8mbps)을 포함한다. 다른 실시예에서, 복수의 출력들은 각각의 입력 세트(노드 메트릭들)에 제공되고, (일 실시예에서) 상위 노드의 현재 노드-중계 성능을 나타내는 단일 값을 계산하기 위해 미리 정의된 기능이 사용된다. 다른 실시예에서(아래에 더 상세히 설명됨), 관찰된 트레이닝 샘플들의 특정 서브셋만이 노드-중계 분류기에 제공된다.
아래에 설명된 바와 같이, 노드-중계 분류기는 선택된 각각의 트레이닝 샘플의 관찰된 출력들을 노드-중계 분류기에 의해 생성된 예측된 노드-중계 용량과 비교함으로써 트레이닝된다. 이러한 예측된 값과 관찰된 값 사이의 "오류"는 점차 보다 정확한 측정들을 하도록 하기 위해 시간이 지남에 따른 가중치 파라미터들을 조정하는 데 사용된다. 이러한 방식으로, 노드-중계 분류기는 해당 상위 노드가 현재 하위 노드를 갖지 않았거나 어떠한 하위 노드들도 결코 가진 적이 없었더라도 지정된 예상 상위 노드의 노드-중계 용량을 예측할 수 있다.
마찬가지로, 메트릭 프로세서는 링크-중계 분류기에 대한 입력으로서, 예상 링크들의 링크-중계 속성들을 나타내는 하나 이상의 "링크 메트릭들" - 즉, 해당 링크의 하위 노드로 콘텐트를 전달하기 위한 링크 능력의 지표들을 생성한다. 일 실시예에서, 링크 메트릭들은 링크에 따른 왕복 "핑"시간, 다양한 QoE 및 QoS 메트릭들(레이턴시, 지터 등)뿐만 아니라 링크의 기타 링크-중계 속성들을 포함한다. 다른 실시예에서, 링크 메트릭들은 링크의 상위 및 하위에 관한 상대적 노드 메트릭들, 예컨대 그들의 상대 연결 유형, 업링크 및 다운링크 속도, IP 주소, ISP 및 ASN을 포함한다.
링크-중계 분류기의 트레이닝과 관련하여, 메트릭 프로세서는 또한 주어진 링크(예를 들어, 각각의 샘플 기간 동안)에 대해 해당 링크의 현재 관찰된 링크-중계 성능을 반영하는 대응되는 출력들을 생성한다. 상위 노드(노드(A))가 하위 노드(B)에 5 mbps를, 하위 노드(C)에 3 mbps를 동시에 전달한 위에 언급된 예에서, A→C 링크와 관련된 트레이닝 샘플 출력은 - 해당 링크의 현재 링크-중계 성능을 반영하여 - 3 mbps일 것이다. 대응되는 링크 메트릭 입력 세트는 해당 A→C 링크와 연관된 링크 메트릭들을 포함한다. 이 예에서, 추가 트레이닝 샘플들은 A→B 링크의 현재 링크-중계 성능(이 예에서는 5mbps)과 관련된 대응되는 출력들과 함께 A→B 링크와 관련된 링크 메트릭 입력들을 포함할 것이다. 일 실시예에서 (아래에 더 상세히 설명됨), 관찰된 트레이닝 샘플의 특정 서브셋만이 링크-중계 분류기에 제공된다.
예측 엔진의 링크-중계 분류기는, 링크-중계 분류기에 의해 생성된 예측된 링크-중계 용량이 각 트레이닝 샘플의 관찰된 출력들과 비교(점차 보다 정확한 예측들을 용이하게 하기 위해 시간이 지남에 따라 가중치 파라미터들을 조정하는 데 사용된 둘 사이의 오류)된다는 점에서, 노드-중계 분류기의 방식과 유사한 방식으로 트레이닝된다. 여기에서도, 링크-중계 분류기는 해당 링크의 지정된 상위 노드가 현재 해당 링크의 지정된 하위 노드로 콘텐트를 중계하지 않는 (또는 콘텐트를 결코 중계한 적이 없는) 경우에도 지정된 예상 링크의 링크-중계 용량을 예측할 수 있다.
예측 엔진은, 시간이 지남에 따라 노드 및 링크 메트릭들이 시간이 지남에 따른 이러한 노드들 및 링크들의 "중계 성능" 간 관계를 학습함으로써, 하나 이상의 하위 노드들로 콘텐트를 중계하기 위한 예상 상위 노드의 능력뿐만 아니라 - 현재의 네트워크 혼잡이든 향후 네트워크 혼잡이든 - 해당 링크의 하위 노드로 콘텐트를 전달하기 위한 예상 링크의 능력을 점차 정확하게 예측한다.
그러나, 위에 언급된 바와 같이, 개별 노드들 및 링크들의 실제 성능은 특정 오버레이 네트워크 토폴로지의 구성 내의 "배치(placement)"에 달려 있다. 본 발명은 지정된 노드들 및 링크들의 "로컬" 노드-중계 용량 및 링크-중계 용량을 입력으로 취하여 정의된 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 출력으로 생성하는 "토폴로지 선택기"를 제공함으로써 대안적인 오버레이 네트워크 토폴로지의 노드들 및 링크들 간의 이러한 성능 상호 의존성을 고려한다.
일 실시예에서, 토폴로지 선택기는 정의된 성능 기준 및 (그들이 네트워크에 조인 및 이탈함에 따라 노드들을 모니터링하는 것으로부터 획득된) 현재 오버레이 네트워크와 같은 알려진 요소들로부터 목적지 노드들에 의해 부과된 디맨드를 추출한다. 다른 실시예들에서, 이러한 디맨드는 예측 엔진에 의해 예측된다.
이러한 예상 노드들 및 링크들에 대한 용량 및 디맨드 값들을 얻으려면, 토폴로지 선택기는 기존 및 예상 상위 노드들의 "여분 용량"(즉, 여분 중계 용량)을 계산하고, 충족되지 않은 디맨드를 충족시키기 위해 - 정의된 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 생성함으로써 - 이러한 여분 용량을 "전세계"적으로 재분배한다. 아래에 더 상세히 논의되는 바와 같이, 토폴로지 선택기는 (일 실시 예에서) 새로운 상위 또는 더 나은 상위를 필요로 하는 하위 노드에 여분 용량을 효과적으로 재분배하는 범위에 기초하여 오버레이 네트워크 토포로지들을 평가한다 - 즉, 성능 기준을 충족시키기 위해 네트워크 트래픽을 이동시킨다.
일 실시예에서, 토폴로지 선택기는 네트워크 트래픽의 이동 및 여분 용량의 재분배를 달성하기 위해 다양한 변환들을 수행한다. 예를 들어, 고용량 노드들은 오버레이 네트워크 토폴로지의 상위 레벨들로 이동하는 반면, 저용량 노드들을 하위 레벨로 이동된다. 여분 용량을 갖는 고용량 노드들은 하위 노드들을 추가하며, 일부 경우에는 하위 노드들의 디맨드를 충족시키지 못하는 상위 노드들을 교체한다. 아래에 더 상세히 논의되는 바와 같이, 동일한 목표를 달성하기 위해 - 즉, 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 식별하기 위해 개별적으로, 조합하여 그리고 많은 다양한 시퀀스들로 다양한 변환들이 적용된다.
일 실시예에서, 토폴로지 선택기는 성능 기준을 충족하는 임의의 오버레이 네트워크 토폴로지를 선택한다. 다른 실시예에서, 토폴로지 선택기는 "최적의" 토폴로지 - 즉, 성능 기준을 "가장 잘" 충족하는 (또는 다른 실시 예에서 충족에 "가장 근접한") 토폴로지를 결정한다. 아래에 더 상세히 논의되는 바와 같이, 다양한 선형, 비선형 및 다차원 최적화 기술들이 본 발명의 사상을 벗어나지 않고 사용될 수 있다.
또 다른 실시예에서, 토폴로지 선택기는 예상 오버레이 네트워크 토폴로지들을 평가하고 및/또는 특정 선택된 오버레이 네트워크 토폴로지를 구현 시 의도하지 않은 "시스템-레벨" 결과를 고려한다. 다시 말해, 토폴로지 선택기는 바람직한 오버레이 네트워크 토폴로지를 식별할 수 있지만, 이 작업을 수행하는 데 있어 다양한 리소스들을 사용하는 것 자체가 부정적인 결과를 가질 수 있다.
예를 들어, 일 실시예에서, 현재 오버레이 네트워크 토폴로지로부터 많은 링크들을 동시에 변경하는 오버 헤드는 오버레이 네트워크 토폴로지의 선택에 영향을 미치는 요소이다. 다른 실시예들에서, 현재 오버레이 네트워크 토폴로지가 재구성되는 빈도는 (재구성을 구현하는 시간 자체가 네트워크 성능에 영향을 미칠 수 있기 때문에) 또 다른 요인이다. 또 다른 실시예들에서, "충분한" 또는 "더 나은"토폴로지를 식별하더라도, 토폴로지 선택기는 시간, 성능, 메모리 및 기타 리소스들의 다양한 트레이드 오프의 결과로서 현재 오버레이 네트워크 토폴로지를 교체하지 않을 것이다. 당업자에게 명백한 바와 같이, 다양한 다른 트레이드 오프, 최적화 및 다른 기술들이 본 발명의 사상을 벗어나지 않고 사용될 수 있다.
또한, 토폴로지 선택기가 예상 오버레이 네트워크 토폴로지의 평가를 수행하는 빈도 또한 특정 어플리케이션 (또는 심지어 콘텐트 아이템 또는 콘텐트 아이템의 유형)에 따라 달라질 수 있다. 일부 실시예에서, 토폴로지 선택기가 예상 오버레이 네트워크 토폴로지들을 평가하게 하는 "트리거"는 시간 기반이며, 메트릭들이 수집되는 동안의 시간 기간과 관련이 있다. 예를 들어, 각 1 초마다 메트릭들이 수집되고 토폴로지 선택기가 현재 오버레이 네트워크 토폴로지를 교체할 오버레이 네트워크 토폴로지 (있는 경우)를 결정한다. 다른 실시예에서, 시간 기간들은 메트릭들이 수집되는 시간 기간들보다 덜 빈번하다.
또 다른 실시예에서, 트리거는 이벤트 기반이다. 예를 들어, 토폴로지 선택기는, 현재 오버레이 네트워크 토폴로지에서 더 이상 충족되지 않는 지점에 가까운 성능 기준과 같은, 특정 지정된 임계치들이 충족될 때에만 오버레이 네트워크 토폴로지들을 평가한다.
위에 논의된 바와 같이, 예측 엔진에 의해 생성된 노드-중계 용량 및 링크-중계 용량 예측들은 "현재"또는 "향후" 네트워크 혼잡의 성능 영향을 반영한다. 일 실시예에서, 예측 엔진은 향후의 복수의 시간대들로 노드-중계 용량 및 링크-중계 용량을 예측한다. 예를 들어, 매 초마다 메트릭들이 수집되면, 노드-중계 용량 및 링크-중계 용량은 향후 10 초로 예측됩니다. 다른 실시예들에서, 이러한 예측은 "현재" 네트워크 혼잡에 기초하며, 노드-중계 용량 및 링크-중계 용량은 향후 "0"초로 예측된다.
토폴로지 선택기가 현재 오버레이 네트워크 토폴로지를 다른 오버레이 네트워크 토폴로지로 교체하기로 선택한 경우, 현재 콘텐트 아이템의 후속 세그먼트들은 "새로운 현재" 오버레이가 교체되는 시간까지 새로 선택된 오버레이 네트워크 토폴로지에 따라 분배된다.
설계 및 엔지니어링 구현 트레이드 오프로부터 생긴 - 예를 들어, 비용, 성능, 시간 및 기타 리소스들과 같은 요인들에 대한 더 나은 또는 최적의 솔루션들을 밸런싱하는 - 실시예들을 포함하여, 본 발명의 다양한 대안적인 실시 예들이 아래에 더 상세히 설명된다. 일 실시예에서, 토폴로지 선택기는 (임계 성능 '최저(floor)"에 기초하여) 새로운 상위를 필요로 하는 개별 하위 목적지 노드들를 식별한 다음, 이러한 노드들에 대한 새로운 상위들을 선택하여, "완전한" 교체 오버레이 네트워크 토폴로지를 결정하는 다신, 현재 오버레이 네트워크 토폴로지의 일부를 효과적으로 재구성한다.
요약하면, 본 발명은 다음을 제공한다:
1. 오버레이 네트워크를 따라 콘텐트 아이템의 하나 이상의 세그먼트들의 분배에 대해 하나 이상의 어플리케이션 별 성능 기준 세트를 충족하는 상기 오버레이 네트워크를 결정하기 위한 방법으로서, 상기 오버레이 네트워크 토폴로지는 상기 오버레이 네트워크의 복수의 노드들 및 복수의 링크들을 포함하며, 각 링크는 해당 링크를 따라 노드 쌍 사이에 상기 하나 이상의 세그먼트들의 상기 분배를 용이하게 하기 위해 상기 복수의 노드 쌍을 논리적으로 상호 연결하는, 상기 방법에 있어서,
(a) 연속적인 시간 기간 동안 복수의 메트릭들을 주기적으로 측정 및 처리하는 단계로서, 각 메트릭은 각 시간 기간에 대해, 해당 시간 기간 동안 사용된 현재 오버레이 네트워크 토폴로지의 노드들 또는 링크들과 연관된 속성들을 반영하고, 상기 처리된 메트릭들은 상기 현재 오버레이 네트워크 토폴로지의 노드-중계 속성들 및 링크-중계 속성들에 반영하는, 상기 측정 및 처리하는 단계;
(b) 예상 오버레이 네트워크 토폴로지의 노드들 및 링크들과 연관된 상기 처리된 메트릭들에 기초하여 상기 노드들 및 링크들의 상기 노드-중계 용량 및 링크-중계 용량을 예측하는 단계; 및
(c) 상기 노드들 및 링크들의 상기 예측된 노드-중계 용량 및 링크-중계 용량에 적어도 부분적으로 기초하여, 상기 예상 오버레이 네트워크 토폴로지가 상기 성능 기준을 충족하는지를 결정하는 단계를 포함하는, 방법.
2. 콘텐트 아이템들이 분배되는 오버레이 네트워크 토폴로지들을 재구성하기 위한 방법으로서, 각 오버레이 네트워크 토폴로지는 복수의 네트워크 노드들 및 상기 복수의 네트워크 노드들과 상호 연결하는 복수의 링크들을 포함하는, 상기 방법에 있어서, 상기 방법에 있어서,
(a) 현재 오버레이 네트워크 토폴로지에 대한 복수의 메트릭들을 생성하는 단계;
(b) 상기 복수의 메트릭들에 기초하여, 지정된 노드들 및 링크들의 세트에 대한 복수의 예측들을 생성하는 단계; 및
(c) 상기 복수의 예측들에 기초하여 예상 오버레이 네트워크 토폴로지를 식별하는 단계를 포함하는, 방법.
3. 제2항에 있어서, 상기 예상 오버레이 네트워크 토폴로지는 상기 지정된 노드들 및 링크들의 성능에 대한 하나 이상의 제약들을 나타내는 성능 기준을 충족하는, 방법.
4. 제2항에 있어서, 각 오버레이 네트워크 토폴로지는 피어-기반 오버레이 네트워크 토폴로지인, 방법.
5. 제2항에 있어서, 각 네트워크 노드는 상기 예상 오버레이 네트워크 토폴로지의 일부가 될 것인지를 나타내는 뷰어 지표(viewer indicator) 예측들을 생성하는 단계를 더 포함하는, 방법.
6. 제5항에 있어서, 상기 예상 오버레이 네트워크 토폴로지의 일부가 될 상기 네트워크 노드들이 상기 예상 오버레이 네트워크 토폴로지의 일부로 유지되는 동안의 지속시간을 나타내는 세션 지속시간 예측들을 생성하는 단계를 더 포함하는, 방법.
7. 제2항에 있어서, 상기 복수의 예측들은 상기 지정된 노드들의 상기 노드-중계 용량 및 상기 지정된 링크들의 상기 링크-중계 용량을 포함하는, 방법.
8. 제2항에 있어서, 상기 복수의 메트릭들은 노드 메트릭들, 링크 메트릭들 및 상기 노드 메트릭과 링크 메트릭들이 획득되는 동안의 타임스탬프를 포함하는, 방법.
9. 콘텐트 아이템들이 분배되는 오버레이 네트워크 토폴로지들을 재구성하기 위한 적응형 토폴로지 서버로서, 각 오버레이 네트워크 토폴로지는 복수의 네트워크 노드들 및 상기 복수의 네트워크 노드들과 상호 연결하는 복수의 링크들을 포함하는, 상기 적응형 토폴로지 서버에 있어서,
(a) 현재 오버레이 네트워크 토폴로지에 대한 복수의 메트릭들을 생성하는 메트릭 프로세서;
(b) 상기 복수의 메트릭들에 기초하여, 지정된 노드들 및 링크들의 세트에 대한 복수의 예측들을 생성하는 예측 엔진; 및
(c) 상기 예측 엔진으로부터 지정된 노드들 및 링크들의 세트에 대한 복수의 예측들을 획득하고, 상기 복수의 예측들에 기초하여 예상 오버레이 네트워크 토폴로지를 식별하는 토폴로지 선택기를 포함하는, 적응형 토폴로지 서버.
10. 제9항에 있어서, 상기 토폴로지 선택기는 하나 이상의 제약들을 나타내는 성능 기준을 충족하는 예상 오버레이 네트워크 토폴로지를 식별하는, 적응형 토폴로지 서버.
11. 제9항에 있어서, 각 오버레이 네트워크 토폴로지는 피어-기반 오버레이 네트워크 토폴로지인, 적응형 토폴로지 서버.
12. 제9항에 있어서, 상기 예측 엔진은 각 네트워크 노드가 상기 예상 오버레이 네트워크 토폴로지의 일부가 될 것인지를 나타내는 뷰어 지표 예측들을 생성하는, 적응형 토폴로지 서버.
13. 제12항에 있어서, 상기 예측 엔진은 상기 예상 오버레이 네트워크 토폴로지의 일부가 될 상기 네트워크 노드들이 상기 예상 오버레이 네트워크 토폴로지의 일부로 유지되는 동안의 지속시간을 나타내는 세션 지속시간 예측들을 생성하는, 적응형 토폴로지 서버.
14. 제9항에 있어서, 상기 예측 엔진은 상기 지정된 노드들의 상기 노드-중계 용량 및 상기 지정된 링크들의 상기 링크-중계 용량을 생성하는, 적응형 토폴로지 서버.
15. 제9항에 있어서, 상기 메트릭 프로세서에 의해 생성된 상기 복수의 메트릭들은 노드 메트릭들, 링크 메트릭들 및 상기 노드 메트릭들과 링크 메트릭들이 획득되는 동안의 타임스탬프를 포함하는, 적응형 토폴로지 서버.
16. 예상 오버레이 네트워크 토폴로지들을 따라 복수의 콘텐트 아이템들을 동시에 분배하기 위한 방법으로서, 각 오버레이 네트워크 토폴로지는 복수의 네트워크 노드들 및 상기 복수의 네트워크 노드들과 상호 연결되는 복수의 링크들을 포함하는, 상기 방법에 있어서,
(a) 제1 오버레이 네트워크 토폴로지를 다라 제1 콘텐트 아이템을 분배하는 단계;
(b) 제2 오버레이 네트워크 토폴로지를 따라 제2 콘텐트 아이템을 분배하는 단계로서, 상기 제1 콘텐트 아이템 및 제2 콘텐트 아이템은 그들 각각의 오버레이 네트워크 토폴로지들을 따라 동시에 분배되는, 상기 제2 콘텐트 아이템을 분배하는 단계;
(c) 상기 제1 오버레이 네트워크 토폴로지를 따라 네트워크 노드로 상기 제1 콘텐트 아이템을 분배하는 단계로서, 상기 네트워크 노드는 상기 제1 오버레이 네트워크 토폴로지 및 상기 제2 오버레이 네트워크 토폴로지 둘 다에 포함되며, 상기 네트워크 노드는 상기 제1 콘텐트 아이템을 소비하는, 상기 제1 콘텐트 아이템을 분배하는 단계; 및
(d) 상기 제2 오버레이 네트워크 토폴로지를 따라 상기 네트워크 노드로 상기 제2 콘텐트 아이템을 분배하는 단계로서, 상기 네트워크 노드는 상기 제2 오버레이 네트워크 토폴로지의 또 다른 네트워크 노드로 상기 제2 콘텐트 아이템을 중계하는, 상기 제2 콘텐트를 분배하는 단계를 포함하는, 방법.
III. 도면의 간단한 설명
도 1a는 특정 네트워크 어플리케이션에 참여하는 사용자 노드 세트를 포함하여, 본 발명의 기본 네트워크(즉, 인터넷)의 네트워크 아키텍처의 일 실시예를 예시하는 그래프이다;
도 1b는 도 1a의 기본 네트워크 위에 구축된 엣지-기반 오버레이 네트워크(콘텐트 전달 네트워크 또는 CDN")의 네트워크 아키텍처의 일 실시예를 예시하는 그래프로서, 이는 엣지-기반 오버레이 네트워크의 오버레이 노드들(엣지 서버들) 사이에 CDN을 따라 목적지 사용자 노드들로 콘텐트가 분배된다;
도 1c는 도 1a의 기본 네트워크 위에 구축된 피어-기반 오버레이 네트워크의 네트워크 아키텍처의 일 실시예를 예시하는 그래프로서, 이는 피어-기반 오버레이 네트워크의 오버레이 노드들("피어" 목적지 사용자 노드들) 사이에 오버레이 경로들을 따라 목적지 사용자 노드들로 콘텐트가 분배된다;
도 2a는 "하위" 목적지 노드들만 있는 피어 노드들과, 다른 피어 노드들로 콘텐트를 중계하는 "상위" 노드들 또한 있는 피어 노드들을 포함하여, 본 발명의 피어-기반 오버레이 네트워크의 오버레이 네트워크 토폴로지의 일 실시예를 예시하는 그래프이다;
도 2b는 해당 제1 오버레이 네트워크의 다른 피어 노드들로 제1 오버레이 네트워크의 콘텐트를 중계하지만 이러한 콘텐트를 소비하지는 않는 적어도 하나의 피어 노드를 포함하여, 본 발명의 복수의 상호 연결된 피어-기반 오버레이 네트워크 토폴로지들의 일 실시예를 예시하는 그래프이다;
도 2c는 본 발명의 피어-기반 오버레이 네트워크 토폴로지의 서브셋의 일 실시예의 "스냅샷 전후"를 예시하는 그래프로서, 이는 현재 오버레이 토폴로지가 모니터링된 메트릭들에 부분적으로 기반하여 구성된다;
도 3a는 본 발명의 핵심 클라이언트-서버의 일 실시예를 예시하는 시스템 블록도이다;
도 3b는 본 발명의 사용자 노드 장치의 핵심 클라이언트측 컴포넌트들의 일 실시예를 예시하는 블록도이다;
도 3c는 본 발명의 적응형 토폴로지 서버의 핵심 서버측 컴포넌트들의 일 실시예를 예시하는 블록도이다;
도 4a는 도 3c에 예시된 "오버레이 네트워크 토폴로지 매니저"의 "예측 엔지" 및 "토폴로지 선택기" 컴포넌트들의 하이-레벨 실시예를 예시하는 도면이다;
도 4b는 도 3c에 예시된 "오버레이 네트워크 토폴로지 매니저"의 "메트릭 프로세서", "예측 엔지" 및 "토폴로지 선택기" 컴포넌트들 사이의 동적 상호작용의 하이-레벨 실시예를 예시하는 흐름도이다;
도 5는 현재 오버레이 네트워크 토폴로지의 노드들 및 링크들의 상호 의존성뿐만 아니라, 기본 네트워크 혼잡의 영향의 메트릭 지표들을 변화에 응답하여 어플리케이션 특정 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 결정하는 본 발명의 핵심 프로세서의 일 실시예의 시스템-레벨 흐름도이다;
도 6a는 하나 이상의 하위 노드들로 콘텐트를 중계하기 위해 지정딘 상위 노드의 노드-중계 용량을 예측하는 본 발명의 노드-중계 분류기의 신경 네트워크 구현예의 입력 및 출력 노드들의 일 실시예의 도면이다;
도 6b는 해당 링크의 상위 노드에서 해당 링크의 지정된 하위 노드로 콘텐트를 중계하기 위해 지정된 링크의 링크-중계 용량을 예측하는 본 발명의 링크-중계 분류기의 신경 네트워크 구현예의 입력 및 출력 노드들의 일 실시예의 도면이다;
도 7a는 도 3c에 예시된 오버레이 네트워크 토폴로지 매니저의 토폴로지 선택기 컴포넌트에 의해 초기 구성을 따르는 오버레이 네트워크 토폴로지의 상태의 일 실시예를 예시하는 그래프이다;
도 7b는 도 3c에 예시된 오버레이 네트워크 토폴로지 매니저의 토폴로지 선택기 컴포넌트에 의해 "저성능" 변환을 따르는 오버레이 네트워크 토폴로지의 상태의 일 실시예를 예시하는 그래프이다;
도 7c는 도 3c에 예시된 오버레이 네트워크 토폴로지 매니저의 토폴로지 선택기 컴포넌트에 의해 "레벨 이동" 변환을 따르는 오버레이 네트워크 토폴로지의 상태의 일 실시예를 예시하는 그래프이다;
도 7d는 도 3c에 예시된 오버레이 네트워크 토폴로지 매니저의 토폴로지 선택기 컴포넌트에 의해 "여분 용량의 재분배" 변환을 따르는 오버레이 네트워크 토폴로지의 상태의 일 실시예를 예시하는 그래프이다;
도 7e는 도 3c에 예시된 오버레이 네트워크 토폴로지 매니저의 토폴로지 선택기 컴포넌트에 의해 수행된 초기 구성 및 재구성 변환의 일 실시예를 예시하는 흐름도이다;
도 7f는, 현재 오버레이 네트워크 토폴로지의 "로컬" 재구성을 용이하게 하기 위해 새로운 상위들을 필요로 할 때 신규, 오펀 및 저성능 노드들이 식별되는, 도 3c에 예시된 오버레이 네트워크 토폴로지 매니저의 토폴로지 선택기 컴포넌트의 핵심 단계들의 대안적인 실시예를 예시하는 흐름도이다.
IV. 상세한 설명
A. 서문
아래에 더 상세히 논의된 바와 같이, 본 발명은 인터넷과 같은 기본 네트워크의 노드들 사이에 콘텐트 아이템들의 분배에 대한 것이다. 본 발명의 예상 오버레이 네트워크 아키텍처의 실시예들은 인터넷 위에 구축된 피어-기반(peer-based) 오버레이 네트워크들의 맥락에서 본 출원에 설명되지만, 본 발명은 피어-기반 오버레이 네트워크들에 또는 심지어 인터넷에 제한되지 않는다는 점이 강조되어야 한다. 명백해지는 바와 같이, 본 발명은 중간 라우팅 노드들 및 다른 공유 리소스들에서 네트워크 혼잡을 경험하는 사실상 임의의 기본 네트워크 위에 구축된 엣지-기반(edge-based) 및 다른 오버레이 아키텍처들에 통합될 수 있다.
위에 언급된 바와 같이, (기본 네트워크의 중간 라우팅 노드들로부터 구별되는) 어플리케이션의 콘텐트를 소비하는 사용자 노드 세트는 어플리케이션의 콘텐트 아이템들이 분배되는 오버레이 네트워크를 함께 정의하는 오버레이 노드들을 나타낸다. 임의의 주어진 콘텐트 아이템(또는 그의 세그먼트)에 대해, 본 발명은 해당 콘텐트 아이템을 소비하는 오버레이 노드 세트(오버레이 네트워크), 및 (본 발명과 같은 시간이 오버레이 네트워크 토폴로지를 구성할 때까지) 콘텐트 아이템의 세그먼트들이 이를 따라 전파될 링크 세트(오버레이 노드 쌍들)를 포함하는 해당 오버레이 네트워크 토폴로지를 정의한다.
일 실시예에서, 아래에 더 자세히 논의된 바와 같이, 하나 이상의 사용자 노드들은 복수의 오버레이 네트워크들의 일부이며, 따라서 특정 콘텐트 아이템을, 소비하지는 않지만, 중계할 수 있다. 그러나, 이 실시예에서, 이러한 사용자 노드들은 그들이 일부인 오버랩되는 오버레이 네트워크 토폴로지들을 통해 다른 콘텐트 아이템들을 소비한다. 본 발명의 범위는 하나 이상의 어플리케이션들과 관련된 (각각 해당 오버레이 네트워크 토폴로지들을 갖는)복수의 콘텐트 아이템들의 동시 분배를 포함한다.
아래에 설명된 본 발명의 예상 오버레이 네트워크 아키텍처의 실시예들은 어플리케이션 별 성능 기준 세트를 충족하는 오버레이 네트워크 토폴로지를 식별한다. 각 어플리케이션(및 잠재적으로 각 콘텐트 또는 그의 세그먼트)은 자체적으로 연관된 오버레이 네트워크 토폴로지를 가질 수 있기 때문에, 본 발명은 개별(및 잠재적으로 오버랩되는) 오버레이 네트워크 토폴로지들을 정의하며, 그 각각은 자체적으로 정의된 성능 기준을 가지는 특정 어플리케이션(또는 콘텐트 아이템 또는 그의 세그먼트)와 연관된다. 예를 들어, 비디오 콘텐트 아이템의 각기 다른 해상도들은 본 발명의 목적을 위해 별개의 콘텐트 아이템들로 간주될 수 있다.
그러나, 단순화하기 위해, 본 출원에 설명된 대부분의 실시예들은 단일 콘텐트 아이템의 단일 어플리케이션 분배 세그먼트들과 관련된 단일 오버레이 네트워크 토폴로지를 결정한다. 그럼에도 불구하고, 임의의 주어진 오버레이 네트워크 토폴로지는 동시에 복수의 콘텐트 아이템들을 분배하는 복수의 어플리케이션을 수용할 수 있으며, 그 별개의 오버레이 토폴로지들은 각 어플리케이션(또는 콘텐트 아이템 또는 그의 세그먼트)에 대해 본 발명의 사상을 벗어나지 않고 정의될 수 있다는 것이 당업자에게 명백할 것이다.
본 출원에 제공된 많은 예들은 인터넷을 통해 많은 동시 사용자에게 스트리밍 비디오를 전달하는 맥락에서 설명되었지만, 본 발명의 원리는 모든 유형의 디지털 콘텐트를 분배하는 사실상 모든 유형의 어플리케이션에 동일하게 적용된다. 어플리케이션들의 예로는 방송 비디오, VOD, VoIP 및 다른 유형의 화상회의, 오디오 및 비디오 스트리밍, 가상 현실("VR"), 싱글 플레이어 및 멀티 플레이어 게임, 대용량 파일 전송 및 다양한 다른 콘텐트 분배(및 종종 비교적 대역폭 집약적인) 어플리케이션들을 포함한다. 디지털 콘텐트 아이템들의 예들로는, 텍스트, 이미지, 오디오 및/또는 비디오 파일, 3D 모델, VR 게임플레이, 미디어 데이터 및 사실상 임의의 다른 형태의 디지털 콘텐트를 포함한다.
또한 본 발명은 예정된 시간(a scheduled time)에 분배되는 콘텐트 아이템들로 제한되지 않는다는 점에 유의해야 한다. 예를 들어, 비디오 콘텐트는 사건이 발생함에 따라 실시간으로 스트리밍되거나(실시간 스트리밍이든, 일정 지연 기간이든) 사전 녹화되어 나중에 스트리밍될 수 있다. 이벤트 자체는 미리 예약되거나 예약되지 않을 수 있습니다. 더욱이, 어플리케이션 및 그와 관련된 성능 기준은 목적지 노드가 콘텐트 아이템을 "동시에" (즉, 미리 정의된 임계 시간 기간 내에) 수신해야 하는지 또는 각기 다른 시간에 동일한 콘텐트를 수신할 수 있는지를 결정할 것이다.
아래에 명백해지는 바와 같이, 본 발명은 어플리케이션의 성능 기준에 따라 콘텐트를 분배하기 위해 인터넷의 네트워크 혼잡 문제, 또는 오버레이 네트워크의 노드들 및 링크들의 제한된 용량을 "해결(cure)"하지 않는다. 대신에, 이는 모두 정의된 성능 기준을 충족하면서 동시에 - 제한된 용량을 효율적으로 사용하고, 시간이 지남에 따라 기본 네트워크 혼잡으로 인해 이러한 오버레이 네트워크 토폴로지의 성능에 미치는 부정적인 영향을 줄이는(라우팅"하여 인터넷의 사용량이 많거나 혼잡한 지역에 걸쳐 트래픽을 덜 분산시켜 네트워크 혼잡을 효과적으로 줄임) 오버레이 네트워크 토폴로지를 정의한다.
본 발명의 하나의 주요 이점은 대역폭 비용의 감소 및 삽입 지점(point-of-insertion; "POI") - 즉, 콘텐트가 발생되는 네트워크 노드 (또는 외부 네트워크)에 미치는 영향에 있다. 예를 들어, 콘텐트 아이템을 그들 사이에 전달하기 위해 목적지 피어 노드를 활용함으로써, 본 발명은 콘텐트 아이템의 분배를 위해 고가의 엣지-기반 라우터들 및 서버들의 필요성을 벗어난다. 관련 이점은 POI의 직접 도달 범위를 훨씬 초과하는 사용자 노드(예를 들어, POI에 근접한 네트워크 또는 상대적으로 높은 대역폭의 사용자 노드에 있지 않음)의 경우라도 서비스 범위 및 성능 품질 향상을 포함한다. 다른 이점들은 본 발명의 다양한 실시예들에 대한 아래의 설명과 관련하여 명백해질 것이다.
마지막으로, 다음의 실시예들은 다양한 설계 및 엔지니어링 트레이드 오프(시간, 성능, 메모리 및 기타 요인 포함)의 결과인 하드웨어 및 소프트웨어 컴포넌트들 사이의 기능 할당을 나타낸다는 것을 강조해야 한다. 이 기능은 하드웨어와 소프트웨어, 클라이언트측 모듈, 서버측 모듈 사이에 재할당할 수 있으며, 단일 컴포넌트로 결합하거나 복수의 컴포넌트들로 분할할 수 있으며, 본 발명의 사상과 범위에서 벗어나지 않고 표준 네트워크 프로토콜과 맞춤형 네트워크 프로토콜의 조합으로 구현할 수 있다.
B. 피어-기반 오버레이 네트워크 토폴로지
도 2a로 돌아가면, 그래프(200a)는 본 발명의 피어-기반 오버레이 네트워크 토폴로지의 일 실시예를 예시한다. 소스 노드(220a)는 콘텐트 아이템이 발생되어 오버레이 네트워크로 삽입되는 POI 또는 지점을 나타낸다. 다른 실시예들에서, 콘텐트는 오버레이 네트워크 자체에서 내부로든 또는 외부로든 복수의 상이한 노드들로부터 발생될 수 있다. 외부 "소스" 네트워크 또는 노드(즉, 오버레이 네트워크의 일부가 아니며 콘텐트 아이템들을 소비하지 않는 노드)는 또한 오버레이 네트워크의 하나 이상의 피어 사용자 노드들로 콘텐트 아이템들을 분배할 수 있다.
도 2a에 예시된 실시예에서, 소스 노드(220a)는 초기에 (현재 오버레이 네트워크 토폴로지(200a)의 정의에 따라) 복수의 피어 노드들(230a)로 직접 콘텐트의 세그먼트들을 분배하는 외부 노드를 나타낸다. 피어 노드(230a)는 (콘텐트를 소비하지만 해당 콘텐트를 다른 피어 노드로 중계하지 않는, "리프(leaf)"노드(230a-2)와 같은) 단지 하위 노드들인 피어 노드들뿐만 아니라, (콘텐트를 소비할 뿐만 아니라 그 콘텐트를 다른 피어 노드로 중계하는, "중계" 노드(230a-1)와 같은) 상위 노드들인 피어 노드들을 포함한다.
도 2b로 돌아가서, 그래프(200b)는 본 발명의 복수의 오버랩되는 또는 상호 연결된 피어-기반 오버레이 네트워크 토폴로지들의 일 실시예를 예시한다. 이 실시예에서, 제1 콘텐트 아이템은 소스 노드(220b-1)로부터 제1 콘텐트 아이템의 세그먼트들을 소비하는 제1 오버레이 네트워크의 복수의 피어 노드들(230b-1) 사이에 분배된다. 마찬가지로, 제2 콘텐트 아이템은 소스 노드(220b-2)로부터 제2 콘텐트 아이템의 세그먼트들을 소비하는 제2 오버레이 네트워크의 복수의 피어 노드들(230b-2) 사이에 분배된다.
그러나, 이 실시예에서, 제2 오버레이 네트워크의 노드들(피어 노드(240b-2))은 제2 콘텐트 아이템의 세그먼트들을 소비하고 이러한 세그먼트들을 제2 오버레이 네트워크의 다른 피어 노드들(230b-2)로 중계할 뿐만 아니라, 제1 콘텐트 아이템의 세그먼트들을 제1 오버레이 네트워크의 다른 피어 노드들(230b-1)로 중계한다. 즉, 이 실시예에서, 피어 노드(240b-2)는 다양한 측면에서 (다른 피어 노드들(230b- 1 및 230b-2)과 대조되는)이상 노드(unusual node)이다.
복수(두 개)의 상위 노드들이 있으며, (제2 콘텐트 아이템의 세그먼트들만 소비하므로) 소비하지 않는 콘텐트 아이템(제1 콘텐트 아이템)을 중계한다. 따라서, 이 시나리오에서, 피어 노드(240b-2)는 복수의 개별 피어-기반 오버레이 네트워크들의 일부이다.
이 실시예의 한 가지 목적은 보다 효율적인 오버레이 네트워크 토폴로지를 "생성"하기 위해 - 본 발명이 분배되는 콘텐트를 소비하지 않는 피어 노드들의 사용되지 않거나 여분의 "중계 용량"을 활용하는 방법을 설명하는 것이다. 그러나, 엣지 서버 노드와 달리, 피어 노드(240b-2)는 추가적인 물리적 인프라스트럭처의 구매 또는 임대를 요구하지 않는다는 점에 유의해야한다. 대신에, 피어 노드 (240b-2)는 (제 2 오버레이 네트워크의) 콘텐트 아이템들을 소비하기 위해 이미 배치된 사용자 노드이다.
아래에 보다 상세히 설명된 바와 같이, 본 발명은 시간이 지남에 따라 (잠재적으로 복수의 오버레이 네트워크 토폴로지들에 걸쳐) 사용자 노드들 사이에 콘텐트의 분배를 포함하는 다양한 메트릭들을 모니터링하고, 이에 따라 제 1 오버레이 네트워크의 피어 노드들 사이에 분배된 콘텐트 아이템들의 세그먼트들에 대한 오버레이 네트워크 토폴로지에 노드 240b-2)를 포함시켜 여분 중계 용량을 검출(또는 예측)하고 활용할 수 있다. 오버랩되는 오버레이 네트워크 토폴로지들(CDN 및 다른 엣지-기반 오버레이 네트워크들을 통합하는 하이브리드 네트워크 아키텍처들을 포함)의 이러한 개념의 변형은 당업자에게 명백할 것이다.
마지막으로, 도 2a 및 도 2b에 예시된 오버레이 네트워크 토폴로지들이 주어진 시점에서 본 발명에 의해 정의된 오버레이 네트워크 토폴로지를 나타낸다는 점에 유의해야 한다. 다시 말해, 시간이 지남에 따라 메트릭들이 변경될 때, 본 발명은 현재 오버레이 네트워크 토폴로지를 교체하기 위해 새로운 또는 수정된 오버레이 네트워크 토폴로지를 결정할 수 있다.
도 2c를 참조하면, 그래프(200c)는 본 발명의 피어-기반 오버레이 네트워크 토폴로지의 서브셋의 일 실시 예의 "스냅샷 전후"를 도시하는 것으로, 현재 오버레이 네트워크 토폴로지(210c)는 모니터링된 메트릭들에 기초하여 (부분적으로 또는 완전히) 재구성되어, 향후에 콘텐트 아이템의 세그먼트가 이를 따라 전파될 새로운 "교체" 오버레이 네트워크 토폴로지(220c)를 야기한다. 아래에 더 상세히 논의된 바와 같이, 재구성은 다양한 이유들로 발생할 수 있다.
예를 들어, 메트릭들은 시간이 지남에 따라 변활 수 있어, 특정 노드 또는 링크의 성능이 저하됨(또는 저하될 것임)을 나타낸다. 그러나, 위에서 언급된 바와 같이, 단지 "부적절하게 수행하는" 상위 노드 또는 링크를 교체하는 것만으로도 업스트림 노드들 및 링크들의 상호 의존성의 영향을 고려하지 않으면서 원하는 결과(즉, 정의된 성능 기준을 충족)를 달성하지 못할 수 있다.
본 발명이 이러한 문제를 해결하는 방식 (현재 또는 향후 기본 네트워크 혼잡의 영향뿐만 아니라 이들의 상호 의존성을 해결하는 방식)을 잠시 제쳐 두고, 도 2c는 재구성 프로세스(적어도 노드들 및 링크들의 서브셋)의 "전후" 효과를 도시한다. 이러한 효과는 재구성된 오버레이 네트워크 토폴로지(220c)에서의 "후(after)" 링크(225c) 세트와 대조하여 현재 오버레이 네트워크 토폴로지(210c)에서의 "전(before)" 링크(215c) 세트로 예시된다.
도 2c에 예시된 예에서, 피어 노드(X)는 일부 시점에서 어플리케이션에 조인하고 특정 콘텐트 아이템을 수신하기 위한 요청을 개시한다. 그 때, 노드(X)는 요청된 콘텐트 아이템을 수신하기 위해 상위 피어 노드를 할당 받을 것이다 (그러나, 아래에 설명된 일부 실시예에서, 노드(X)는 상위 피어 노드가 할당될 때까지 (220c)의 POI-SRC 노드로부터 즉시 콘텐트를 수신하기 시작한다).
아래에 더 상세히 설명되는 바와 같이, 본 발명은 노드(X)에 무작위로 또는 심지어 상대적인 지리적 위치에만 기초하여 새로운 상위를 할당할 필요가 없다. 대신에, 노드(X)에 대한 상위 선택 시 다양한 메트릭들을 고려하여 결과적인 오버레이 네트워크 토폴로지의 성능 전체(또는 일부 실시예에서는 노드(X)에 대한 링크의 성능)가 정의된 어플리케이션 별 성능 기준을 충족하도록 한다. 어느 경우든, 이 프로세스의 결과로서, 새로운 노드(X)는 (225c)에 도시된 A→X 링크 및 재구성된 오버레이 네트워크 토폴로지(220c)에 의해 예시된 바와 같이, 상위 노드(A)에 할당된다.
어플리케이션에 조인하는 새로운 노드들 외에, 본 발명은 어플리케이션을 떠나는 노드들(특히, "오펀(orphaned)" 하위 노드들 뒤의 상위 노드)를 수용해야 한다. 이 예에서, 노드(F)는 어플리케이션을을 떠나고, 오펀 노드들(N 및 O)를 뒤에 남겨둔다. 여기에서도, 아래에 더 상세히 설명되는 바와 같이, 본 발명은 이러한 오펀 노드들에 대한 새로운 상위들을 선택함에 있어서 다양한 메트릭들을 고려한다. 따라서, (215c)에 도시된 링크들(F→N 및 F →O)(및 현재 오버레이 네트워크 토폴로지 (210c))는 (225c)에 도시된 링크들(G→N 및 G→O) 및 재구성된 오버레이 네트워크 토폴로지(220c)로 효과적으로 교체된다. 그 결과, 상위 노드(G)는 이제 세 개의 하위 노드들 - 오펀 노드들(N 및 O) 뿐만 아니라 하위 노드(P)를 갖는다.
신규 및 오펀 노드들에 대한 상위 노드들을 선택하는 맥락에서도, 본 발명은 현재 오버레이 네트워크 토폴로지를 재구성할지 여부 및 방법을 결정하기 위해 메트릭들을 변경하는 것을 고려한다는 점을 강조하는 것이 중요하다. 다시 말해, (아래에 더 상세히 설명되는 바와 같이), 본 발명은 오버레이 네트워크 토폴로지의 노드들 및 링크들 사이의 상호 의존성뿐만 아니라 빈번하게 변경되는 기본 네트워크 혼잡의 결과를 해결한다.
따라서, 신규 및 오펀 노드들을 수용하는 것 외에, 본 발명은 또한 정의된 성능 기준을 충족하면서 현재 오버레이 네트워크 토폴로지를 재구성함으로써 (관찰된 및/또는 예상되는) "저성능" 노드들 및 링크들을 해결한다. 도 2c에 예시된 예에서, (215c)(및 현재 오버레이 네트워크 토폴로지(210c))의 H→R 및 K-V 링크들은 "저성능" - 예를 들어, 미리 정의된 임계치 미만 또는 정의된 성능 기준 미만의 레벨 - 을 나타내고 있다 (또는 나타낼 것으로 예측된다).
위에 언급된 바와 같이, 이러한 낮은 성능의 원인은 노드들(노드(R) 또는 노드(V)) 자체의 내부 문제나 혼잡, 또는 해당 노드들에 대한 링크들(H → R 또는 K → V)를 따라 중간 라우팅 노드에서의 업스트림 네트워크 혼잡일 수 있다. 아래에 보다 상세히 설명되는 바와 같이, 문제의 정확한 원인을 알지 못하더라도 본 발명은 성능 기준을 충족시키는 오버레이 네트워크 토폴로지를 식별하여 효과적으로 "라우팅"하고 기본 네트워크 혼잡을 감소시킨다.
따라서, 이 예에서, "저성능" 문제의 원인이, (215c)(및 현재 오버레이 네트워크 토폴로지(210c))에 도시된 바와 같이, 기존 노드들(R 및/또는 V)(또는 기존 링크들(H → R 및/또는 K → V))인지 여부에 따라, 본 발명은 (225c)에도 도시된 바와 같이, 새로운 오버레이 네트워크 토폴로지(220c)를 식별함으로써 현재 오버레이 네트워크 토폴로지(210c)를 재구성하여, 하위 노드(R)에 대한 새로운 상위 노드(I) 및 하위 노드(V)에 대한 새로운 상위 노드(M)을 제공하는 것으로 이어진다.
일부 실시예들(아래에 논의됨)에서, 본 발명은 먼저 "저성능" 노드들을 (새로운 상위를 필요로 할 때) 명시적으로 식별하지만, 다른 실시예들에서 새로운 상위들의 할당은 (특정 "저성능" 노드들을 명시적으로 식별하지 않고) 성능 기준을 충족하는 오버레이 네트워크 토폴로지의 식별의 결과이다.
C. 클라이언트-서버 아키텍처 및 주요 기능적 컴포넌트들
본 발명의 예상 오버레이 네트워크 아키텍처의 일 실시예에서, 도 3a의 시스템 도면(300a)에 예시된 바와 같이, 클라이언트-서버 아키텍처가 사용된다. 실시 예에서, 적응형 토폴로지 서버(310a)는 본 발명의 기능의 대부분을 집중시키는 기본 네트워크(325a)(인터넷) 상의 노드(또는 다른 실시 예에서는 다수의 노드들)이다.
예를 들어, 적응형 토폴로지 서버 (310a)는 사용자 노드 장치들(320a) 사이에 정보가 교환되는 오버레이 네트워크 토폴로지뿐만 아니라, 동시에 실행되는 하나 이상의 어플리케이션들을 관리하는 역할을 한다. 각각의 사용자 노드 장치들(320a)은 인터넷(325a)의 기본 노드로서 연결된다.
각 어플리케이션은 논리적으로 상호 연결된 오버레이 네트워크 토폴로지(320a-1)로서 집합적으로 예시된 사용자 노드 장치들(320a)의 서브셋의 참여를 포함한다. (320a-1)에 표시된 "SRC" 노드는 기술적으로 오버레이 네트워크 토폴로지의 일부가 아닙니다. 이는 각 콘텐트 아이템의 POI 또는 소스를 나타낸다. 도 3a에 달리 도시되지 않았지만, 하나 이상의 POI들(복수의 어플리케이션 및 콘텐트 아이템들에 걸쳐)은 일 실시예에서 기본 네트워크(인터넷 (325a)) 상의 외부 노드들로서 배치되며, 적응형 토폴로지 서버(310a)뿐만 아니라 사용자 노드 장치들(320a)과 통신하도록 적응된다. 이 실시 예에서, 적응형 토폴로지 서버(310a)는 POI로부터 각 오버레이 네트워크 토폴로지(320a-1)의 "루트(root)" 노드로의 각 콘텐트 아이템의 세그먼트의 분배를 관리한다 (이 시점에서 이러한 세그먼트들은 아래에 더 상세히 설명된 바와 같이 오버레이 네트워크 토폴로지(320a)를 따라 다른 사용자 노드 장치들(320a)로 추가로 분배된다).
일 실시예에서, 오버레이 네트워크 토폴로지(320a-1)는 복의 어플리케이션에 대해 콘텐트를 분배하는데 사용되며, 이들 각각은 하나 이상의 콘텐트 아이템들의 동시 분배를 포함한다. 다른 실시예들에서, 각 개별 콘텐트 아이템의 각 세그먼트는 별개의 오버레이 네트워크 토폴로지를 따라 분배될 수 있다.
개별 세그먼트, 콘텐트 아이템 및 어플리케이션과 오버레이 네트워크 토폴로지(320a-1)의 이러한 상관 관계의 세분화(granularity)는 본 발명을 구현하는 과정에서 이루어진 설계 및 엔지니어링 트레이드 오프의 결과이다. 단순화하기 위해, 오버레이 네트워크 토폴로지(320a-1)는 특정 어플리케이션에 대한 콘텐트 아이템의 세그먼트의 분배와 관련된 사용자 노드 디바이스들(320a)의 서브셋을 참조하여 낮은 레벨의 세분화에서의 맥락에서 설명된다.
이 실시예에서, 사용자 노드 장치들(320a)은 시간이 지남에 따라 메트릭들을 수집하고, 이들을 인터넷(325a)을 통해 적응형 토폴로지 서버(310)로 지속적으로 전달하며, 이는 임의의 특정 오버레이 네트워크 토폴로지(320a-1)를 재구성할 것인지에 대한 결정을 (적어도 이러한 메트릭들에 기초하여) 결정한다. 적응형 토폴로지 서버(310a)는 특정 오버레이 네트워크 토폴로지(320a-1)를 재구성할 때마다, (해당 토폴로지(320a-1)에서) 각 상위 사용자 노드 장치들(320a)에 현재 콘텐트 아이템의 후속 세그먼트를 "푸시"할 하위 사용자 노드 장치들(320a)의 식별을 전달한다.
각각의 하위 사용자 노드 장치(320a)는 콘텐트 아이템의 세그먼트들을 수신 및 소비하는 기능 - 예를 들어 스트리밍된 비디오 콘텐트의 세그먼트들을 수신 및 시청하고, 이미지 파일을 수신 및 처리하고, 대화식 게임플레이 데이터를 수신 및 처리하는 등의 기능을 포함한다. 사용자 노드 디바이스(320a)가 또한 상위 노드인 경우, 콘텐트 아이템의 세그먼트들을 수신 및 소비할 뿐만 아니라, 이러한 세그먼트들을 적응형 토폴로지 서버(310a)에 의해 지정된 특정 사용자 노드 장치들(320a)로 중계한다. 다시 말해, 사용자 노드 장치들(320a)은 적응형 토폴로지 서버(310a)에 의해 결정되고 시간이 지남에 따라 재구성되는 오버레이 네트워크 토폴로지(320a-1)를 통한 콘텐트의 분배를 구현한다.
사용자 노드 장치(300b)의 기능적 컴포넌트들에 대한 보다 상세한 설명이 도 3b에 예시된다. 일 실시예에서, 각 사용자 장치(300b)는 독립형 및 네트워크 어플리케이션의 기능을 구현하기 위해 네트워크 어댑터(316b)뿐만 아니라 CPU(312b), 메모리(314b) 및 운영 체제(315b)를 포함하는 표준 하드웨어 및 소프트웨어 컴포넌트(310b)를 포함한다. 다른 실시예들에서, 이 기능은 하드웨어로, 또는 범용 CPU(312b) 및 운영 체제(315b) 보다는 하나 이상의 전용 마이크로 컨트롤러를 사용하거나 다중 (단일 또는 다중 코어) CPU(312b)를 사용하여 완전히 구현될 수 있다. 일부 실시예들에서, 특정 사용자 노드 장치들(300b)은 또한 디스플레이, 키보드, 카메라 등과 같은 I/O 장치들(318b)를 포함한다.
이러한 표준 하드웨어 및 소프트웨어 컴포넌트(310b)의 기능은 본 발명의 예측 오버레이 네트워크 아키텍처에 의해 활용되는 한편, 사용자 노드 장치(300b) 자체에 의한 범용 용도로도 이용된다. 예를 들어, 메모리(314b)는 또한 일부 실시예에서, 메트릭 수집과, 콘텐트 아이템들의 세그먼트들의 수신, 소비 및 중계와 관련된 적응형 토폴로지 서버(310a)와의 통신과 같은 본 발명의 특정 클라이언트 측 기능을 구현하는 커스텀 소프트웨어(예를 들어, 적응형 토폴로지 서버(310a)로부터 수신된 자바 스크립트 코드)를 저장하기 위해 사용된다. 다른 실시예에서, 사용자 노드 장치들(300b)은 이 기능을 용이하게 하기 위해 데이터 및 소프트웨어를 저장하기 위한 별개의 저장 컴포넌트들을 포함한다.
어떠한 경우든, 본 발명의 클라이언트 측 기능은 하드웨어로 구현되지 않는 한 (메모리(314b) 또는 다른 형태의 데이터 저장 장치와 같은) 비일시적 컴퓨터 액세스 가능 저장 매체로 구현되고, (CPU(312b)와 같은) 처리 장치 처리에 의해 실행된다. 다른 실시예들에서, 이 클라이언트 측 기능은 데스크탑 어플리케이션 및 사용자 노드 장치들(300b)로 다운로드된 모바일 앱으로 구현된다.
이 커스텀 클라이언트측 기능은 (일부 실시예에서) 표준 라이브러리 모듈(320b)에 의해 촉진되며, 이 표준 라이브러리 모듈은 적응형 토폴로지 서버(310a)와 통신하고, 콘텐트 아이템들의 세그먼트를 수신, 소비 및 중계하기 위한 표준 프로토콜 및 라이브러리를 포함한다. 이러한 프로토콜 및 라이브러리의 예로는 HTTP, WebSocket, STUN, WebRTC 및 MPEG-DASH 등이 있다. 표준 라이브러리 모듈(320b)에서의 특정 표준 프로토콜 및 라이브러리(비표준 프로토콜 및 라이브러리)의 선택은 본 발명의 범위 내에서 다양한 설계 및 엔지니어링 트레이드 오프의 결과이다.
위에 언급된 바와 같이, 사용자 노드 장치(300b)는 일부 실시예에서 다른 사용자 노드 장치들(300b)에 분배되는 특정 콘텐트 아이템의 소스일 수있다. 이 시나리오에서, 업로더(380b)는 콘텐트 아이템의 각 세그먼트를 적응형 토폴로지 서버(310a)에 의해 지정된 클라이언트 사용자 노드 장치들(300b)에 스트리밍하거나 다른 방식으로 분배하는 기능을 구현한다. 일 실시예에서, 노드 장치(300b)는 콘텐트 아이템의 소스 외에, (수신기(350b) 및 중계기(360b)를 이용하여) 다른 콘텐트 아이템들의 세그먼트들을 소비하고 중계한다.
이러한 맥락에서, (이러한 콘텐트 아이템의 임의의 세그먼트가 그에 따라 분배되는) 결과적인 오버레이 네트워크 토폴로지는 콘텐트 아이템의 POI 또는 소스이므로, 해당 "소스" 사용자 노드 장치(300b)를 포함하지 않는다. 그러나, 위에서 언급된 바와 같이, 동일한 사용자 노드 장치(300b)는 다른 콘텐트 아이템이 (예를 들어, 위에 논의된 도 2b의 사용자 노드(240b-2)에 의해 예시된 바와 같이) 분배되는 별개의 (및 아마도 오버랩되는) 오버레이 네트워크 토폴로지의 일부일 수 있다.
적응형 토폴로지 서버(310a)와의 통신은 통신 모듈(330b)에 의해 구현된다. 예를 들어, 커뮤니케이터(330b)는 오버레이 네트워크 토폴로지를 결정하는데 사용하기 위해 메트릭 모니터(340b)에 의해 수집된 메트릭들을 적응형 토폴로지 서버(310a)로 전송한다. 또한, 커뮤니케이터(330b)는 사용자 노드 디바이스(300b)가 콘텐트 아이템의 후속 세그먼트들을 중계할 하위 노드들이 있을 경우, 적응형 토폴로지 서버(310a)로부터 (예를 들어, 적응형 토폴로지 서버(310a)가 오버레이 네트워크 토폴로지를 재구성할 때) 해당 하위 노드들의 사양을 수신한다. 또한, 커뮤니케이터(330b)는 다른 통신 관련 기능들 중에서도 특정 어플리케이션을 가입시키거나 떠나기 위해 사용자 노드 장치(300b)에 의한 요청을 처리한다.
일 실시예에서, 메트릭 모니터(340b)는 다양한 메트릭들의 분산된 수집기로 구현된다. 예를 들어, 임의의 주어진 기간 동안(예를 들어, 매 초마다), 각각의 사용자 노드 디바이스(300b)는 예를 들어 노드 메트릭들 및 링크 메트릭들을 포함하는 원시 메트릭들을 수집한 다음, 이 메트릭들을 적응형 토폴로지 서버(310a)에 전달한다. 아래에 더 상세히 논의되는 바와 같이, 적응형 토폴로지 서버(310a)는 모든 사용자 노드 장치(300b)로부터 수신한 메트릭들을 구성 및 처리하고, 이러한 메트릭들을 사용하여 (세그먼트, 콘텐트 아이템 및 어플리케이션에 걸쳐) 오버레이 네트워크 토폴로지의 결정을 용이하게 한다.
대안적인 실시 예에서, 사용자 노드 장치(300b)는 그러한 메트릭들을 적응형 토폴로지 서버(310a)에 보고하는 것보다 더 빈번하게 메트릭들을 수집한다. 다른 실시예에서, 특정 메트릭들은 덜 빈번하게 수집되거나 변경될 때만 적응형 토폴로지 서버 (310a)에 제공된다. 또 다른 실시예에서, 상위 노드는 (이러한 링크 메트릭들을 수집하기 위해 하위 노드에 의존하는 대신에 또는 이에 더하여) 링크 메트릭들을 수집한다. 또 다른 실시예들에서, 추가 메트릭들은 알려진 URL들에 대한 주기적인 핑과, 네트워크 혼잡 및 다른 변경 상황과 같은, 노드 메트릭들 및 링크 메트릭들(또는 심지어 콘텐트 아이템들의 세그먼트들의 전송과 직접 관련된 것들)을 넘어서 수집(및 적응형 토폴로지 서버(310a)에 보고)된다.
위에 언급된 바와 같이, 일 실시예에서, 노드 메트릭들은 접속 유형(LAN, WiFi, LTE, 4G 등), IP 주소/프리픽스(prefix), ISP, ASN, 장치 유형, CPU 및 메모리로드, 운영 체제, 지리적 위치, 게이트웨이에 대한 업 링크 및 다운 링크 속도 등)과 같은 사용자 노드 장치(300b)에 고유한 노드-중계 속성들을 포함한다. 링크 메트릭들에는 링크에 따른 왕복 핑 시간, 레이턴시, 지터 및 기타 네트워크 중심 메트릭들과 같은 특정 링크와 관련된 링크 릴레이 속성 및 링크의 상위 및 하위에 대한 상대 노드 메트릭들(예컨대, IP 주소/프리픽스, ISP 및 ASN)이 포함된다.
다른 실시예들에서, 어플리케이션 성능의 품질에 대한 사용자 중심 또는 어플리케이션 레벨 뷰를 반영하는 QoE 메트릭들(예를 들어, 드롭된 프레임, 리버퍼링 이벤트 등)도 메트릭들로서 포함된다. 이러한 QoE 메트릭은, 물론, 어플리케이션 별로 다르며, 일 실시예에서 (다른 메트릭과 함께) 적응형 토폴로지 서버 (310a)에 의해 어플리케이션 별 성능 기준을 정의하는데 사용된다. 다양한 상이한 또는 기타 노드 메트릭들, 링크 메트릭들 및 기다 메트릭들이 본 발명의 사상을 벗어나지 않고 사용될 수 있다.
각각의 사용자 노드 내의 수신기(350b)는 자신의 상위 노드로부터 콘텐트 아이템의 세그먼트들을 수신하는 프로토콜을 관리한다. 일 실시예에서, 표준 WebRTC API 및 프로토콜은 상위 노드에서 각각의 하위 노드로 콘텐트 아이템의 하나 이상의 세그먼트들의 피어 투 피어 전송을 용이하게 하기 위해 사용된다. 다른 실시예들에서, 다른 표준 또는 커스텀 프로토콜들이 사용된다. 또 다른 실시예들에서, 특정 사용자 노드 장치들(300b)는 복수의 상이한 프로토콜들을 지원한다. 프로토콜 선택은 어플리케이션 마다 다를 수 있는 설계 및 엔지니어링 트레이드 오프의 결과이다.
마찬가지로, 사용자 노드 장치(300b)가 상위 노드인 경우, 중계기(360b)는 콘텐트 아이템의 수신된 세그먼트의 지정된 하위 노드로의 중계를 관리한다. 중계기(360b)는 사용자 노드 장치(300b)가 현재 지정된 하위 노드를 가진 경우에만 사용된다. 예를 들어, 적응형 토폴로지 서버(310a)에 의해 오버레이 네트워크 토폴로지를 재구성한 후에, 사용자 노드 장치(300b)는 더 이상 지정된 하위 노드를 갖지 않는다는 통지를 받을 수 있지만, 추후에 (후속 재구성에 따라) 콘텐트 아이템의 후속 세그먼트를 분배하기 위한 더 많은 지정된 하위 노드가 있다고 통지될 수 있다.
콘텐트 어레이 매니저(370b)는 콘텐트츠 아이템의 세그먼트의 수신 및 중계를 모두 관리한다. 예를 들어, 세그먼트가 수신될 때, 콘텐트 어레이 매니저(370b)는 세그먼트와 함께 어플리케이션에 따라 콘텐트 플레이어(325b)에 의한 이러한 세그먼트들(예를 들어, 방송 비디오의 시청)의 소비에 사용하기 위해 수신 어레이(372b)에서 이러한 세그먼트들을 버퍼링한다.
콘텐트 플레이어(325b)는 예를 들어 사용자 노드 장치(300b)의 사용자에 의해 시청하기 위해 비디오 콘텐트 아이템의 수신된 세그먼트를 재생하는 스트리밍 HTML5 비디오 플레이어일 수 있다. 어플리케이션이 콘텐트 플레이어(325b)에 의해 30fps 재생을 제공하는 경우, 콘텐트 어레이 매니저(370b)는 적절한 속도로 비디오 프레임(예를 들어, 복수의 비디오 세그먼트들)을 콘텐트 플레이어(325b)로 전달하는 것을 용이하게 하는 (수신 어레이 (372b)에서) 수신된 세그먼트의 버퍼를 유지한다. 일부 실시예들에서, 콘텐트 플레이어(325b)는 비디오 콘텐트 아이템의 원활한 재생을 용이하게 하기 위해 별개의 프레임 버퍼를 포함할 수 있다.
일 실시예에서, 콘텐트 플레이어(325b)는 사용자 노드 장치(300b)에 내장된 (또는 일반적으로 설치되는) 웹 브라우저의 표준 컴포넌트, 예를 들어 표준 사파리, 크롬 또는 인터넷 익스플로러 웹 브라우저로 구현된다. 표준 기능을 이용함으로써, 본 발명은 각각의 사용자 노드 장치(300b) 상에 추가의 커스텀 소프트웨어를 설치할 필요가 없으며, 이에 따라 사용자 노드에 걸쳐 더 큰 호환성을 보장한다. 다른 실시 예들에서, 콘텐트 플레이어(325b)는 커스텀 웹 브라우저 또는 독립형 플레이어로 구현된다.
사용자 노드 장치(300b)가 상위 노드인 경우, 콘텐트 어레이 매니저(370b)는 또한 수신된 세그먼트의 중계 어레이(374b)를 유지하여, 적응형 토폴로지 서버(310a)에 의해 지정된 각각의 하위 사용자 노드 장치(300b)로 중계기(360b)에 의해 전송하기 위한 세그먼트의 버퍼링을 용이하게 한다. 즉, 콘텐트 어레이 매니저(370b)는 각각의 하위 사용자 노드 장치들(300b)의 수신기(350b)로 외부 전송을 위한 별개의 세그먼트 버퍼를 유지한다. 이 버퍼는 다른 실시예에서 한 세트의 하위 사용자 노드 장치들(300b)이 동일한 세그먼트들이지만 상이한 시간에 수신하는 VOD 어플리케이션을 용이하게 하기 위해 사용된다.
하나의 사용자 노드 장치(300b) 내의 중계기(360b)는 (일 실시예에서) 다른 사용자 노드 장치(300b)의 수신기(350b)와 직접 통신하기 때문에, 호환 가능한 프로토콜(예를 들어, WebRTC API 및 전술한 프로토콜)을 구현해야 한다. 상이한 사용자 노드 장치(300b)는 본 발명의 사상을 벗어나지 않으면서 상이한 (그러나 호환 가능한) 표준 또는 커스텀 프로토콜 (또는 동일한 사용자 노드 장치(300b)의 수신기(350b) 및 중계기(360b) 내의 상이한 프로토콜)을 사용할 수 있다.
본 발명은 (일 실시 예에서) 사용자 노드 장치(300b)(예를 들어, 표준 라이브러리(320b), 콘텐트 플레이어(325b), 및 수신기(350b) 및 중계기(360b)에 의해 구현된 프로토콜)에서 특정 표준 기능을 이용하지만, 이는 또한 (위에 설명된 바와 같이) 사용자 노드 장치(300b) 상에 존재하는 커스텀 기능에 의존한다. 예를 들어, 커뮤니케이터(330b)는 적응형 토폴로지 서버(310a)와의 통신을 관리하기 위해 사용된다. 메트릭 모니터(340b)는 시간이 지남에 따라 특정 메트릭들을 모니터링하고 이를 적응형 토폴로지 서버(310a)에 제공하기 위해 사용된다. 그리고 수신기(350b) 및 중계기(360b)는 (오버레이 네트워크 토폴로지가 재구성될 때 변경될 수 있는) 지정된 상위 노드로부터 콘텐트 아이템들의 세그먼트들을 수신하는 프로세스를 관리하기 위해 사용된다. 마지막으로, 업로더(380b)는 본 발명의 오버레이 네트워크 토폴로지를 따라 분배된 콘텐트 아이템(예를 들어, 카메라로부터의 스트리밍되는 라이브 또는 녹화된 비디오뿐만 아니라, 내부적으로 생성되거나 외부 소스로부터 획득된 다른 콘텐트 아이템)의 소스가 될 수 있도록 사용자 노드 장치(300b)가 채택된다.
일 실시예에서, 이 커스텀 기능은 어플리케이션(예를 들어, 스트리밍 비디오를 보거나 큰 파일을 교환하기 위해)에 조인하기 위한 적응형 토폴로지 서버(310a)에 대한 요청을 처음 시작할 때 적응형 토폴로지 서버(310a)에 의해 사용자 노드 장치(300b)로 다운로드 된다. 다른 어플리케이션에 조인하거나 다른 콘텐트 아이템을 수신하기 위한 후속 요청은 이 기능을 다시 다운로드 받을 필요가 없다.
적응형 토폴로지 서버(310a)는 또한 (일 실시 예에서) 관련 POI와 통신하여, 요청된 콘텐트 아이템의 초기 세그먼트를 후속 노드를 직접 전달하기 위해 상위 노드와 같은 시간이 선택될 때까지 요청된 콘텐트 아이템의 초기 세그먼트를 "새로 조인된"사용자 노드 장치(300b)에 제공하도록 지시한다. POI는 또한 위에 논의된 바와 같이 콘텐트 아이템의 모든 세그먼트를 각각의 오버레이 네트워크 토폴로지(320a-1)의 루트 노드에 전달할 것이다. 사용자 노드 장치(300b)가 콘텐트 아이템의 소스인 다른 실시예에서, 적응형 토폴로지 서버(310a)는 업로더(380b)에게 이런 점(새로 조인된 노드들로 초기 세그먼트 전송하는 것과 지정된 루트 노드들로 모든 세그먼트들을 전송하는 것 둘 다)에서 POI로서 동작하도록 지시한다.
본 발명의 예상 오버레이 네트워크 아키텍처의 많은 기능을 구현하는 서버측 컴포넌트로 돌아가서, 도 3c는 적응형 토폴로지 서버(300c)의 주요 컴포넌트들의 일 실시예를 예시한다. 위에 언급된 바와 같이, 적응형 토폴로지 서버(300c)의 기능은 하나 이상의 물리적 서버에서 구현될 수 있으며, 이러한 기능의 일부는 전체적으로 하드웨어 또는 하드웨어와 소프트웨어 둘 다에서 구현될 수 있으며, (다양한 설계 및 엔지니어링 트레이드 오프에 의해 지시된 바와 같이) 단일 개념 소프트웨어 모듈로 결합되거나 복수의 모듈들로 조합될 수 있다.
도 3c에 예시된 실시 예에서, 적응형 토폴로지 서버(300c)는 네트워크 어댑터(316c)뿐만 아니라 CPU(312c), 메모리(314c) 및 운영 체제(315c)와 같은 표준 하드웨어 및 소프트웨어 컴포넌트(310c)를 포함하는 단일의 물리적 서버로 도시되어 있다. 사용자 노드 장치(300b)에서와 같이, 이 표준 서버측 하드웨어 및 소프트웨어 기능은 범용 CPU(312c) 및 운영 체제(315c) 대신 하나 이상의 전용 마이크로 컨트롤러뿐만 아니라 복수의 (단일의 또는 멀티-코어) CPU(312c를 사용하여 구현될 수 있다. 일부 실시예에서, 적응형 토폴로지 서버(300c)는 또한 디스플레이, 키보드, 카메라 등과 같은 I/O 장치들(318c)을 포함한다. 적응형 토폴로지 서버(300c) 내의 별개의 데이터베이스가 도 3c에 예시되어 있지만, 메모리(314c)가 또한 일부 실시예들에서 커스텀 데이터 및 기능을 저장하기 위해 사용된다.
표준 라이브러리(320c)는 또한 일 실시예에서 사용자 노드 장치(300b) (및 콘텐트 아이템들의 다양한 POI소스)와의 통신을 용이하게 하기 위해 사용된다. 여기에서도 설계 및 엔지니어링 트레이드오프는 어느 표준 API와 프로토콜이 활용되는지, 그리고 독점 소프트웨어가 구축되는 정도를 지시한다. 사용자 노드 장치(300b)의 경우에서와 같이, (하드웨어로 구현되지 않는 한) 본 발명의 서버측 기능은 (메모리(314c) 또는 이하에서 논의되는 데이터베이스(375c 및 385c)와 같은 다른 형태의 데이터 저장소와 같은)비일시적 컴퓨터 액세스 가능 저장 매체로 구현되며, (CPU (312c)와 같은) 처리 장치에 의해 실행된다.
시그널링 서버(330c)는 - 예를 들어, 메트릭을 수신하고 상위 사용자 노드 장치(300b)에게 (시그널링 서버(330c)와의 추가 상호 작용없이) 콘텐트 아이템의 후속 세그먼트를 지정된 하위 노드로 "푸시"하도록 지시하기 위해 - 사용자 노드 장치(300b)와의 통신을 처리한다 일 실시예에서, 시그널링 서버(330c)는 또한 사용자 노드 장치(300b) 쌍 사이의 초기 "피어 연결"의 생성을 용이하게 한다.
다른 실시예에서, 시그널링 서버(330c)는 또한 사용자 노드 장치(300b)와의 다른 통신을 담당한다. 예를 들어, 시그널링 서버(330c)는 사용자 노드 장치들(300b)로부터 어플리케이션 (및 또는 개별 콘텐트 아이템)에 대한 요청을 수신한다. 또한, 이는 사용자 노드 장치(300b)의 네트워크 연결이 끊겼는지 또는 하나 이상의 콘텐트 아이템 보기를 중지했는지 여부를 나타내는 "하트 비트" 및 사용자 노드 장치들(300b)의 다른 신호를 모니터링하며, 이 경우 현재 오버레이 네트워크 토폴로지에서 제거된다. 또한, 시그널링 서버(330c)는 적응형 토폴로지 서버(300c)에 의해 식별된 오버레이 네트워크 토폴로지로 콘텐트 아이템의 스트리밍 또는 다른 분배를 용이하게 하기 위해 POI 노드 또는 다른 콘텐트 소스와의 통신을 처리한다.
일 실시예에서, 콘텐트 관리자(360c)는 다양한 어플리케이션에 대해 복수의 콘텐트 제공자에 의해 제공되는 콘텐트 아이템을 관리한다. 콘텐트 매니저(360c)는 각 콘텐트 아이템이 현재 오버레이 네트워크 토폴로지의 루트 노드로 스트리밍되거나 분배되도록 보장한다. 다시 말해, 현재 오버레이 네트워크 토폴로지의 재구성 (주어진 콘텐트 아이템과 관련됨)이 루트 노드를 변경하는 한, 콘텐트 매니저(360c)는 POI가 이러한 업데이트된 루트 노드들에 콘텐트 아이템의 후속 세그먼트들을 전달하도록 보장하기 위해 (시그널링 서버(330c)를 통해) 관련 POI와 통신한다.
콘텐트 매니저(360c)는 또한 각 어플리케이션의 콘텐트 아이템(또는 다른 실시 예에서는 개별 콘텐트 아이템)과 관련된 어플리케이션 별 성능 기준을 획득하거나 생성한다. 콘텐트 매니저(360c)는 성능 기준을 메모리(314c)에 저장하고, 또는 다른 실시 예에서는 그 자신의 별개의 데이터베이스에 저장한다. 위에 언급된 바와 같이, 임의의 특정 어플리케이션 또는 콘텐트 아이템에 대해, 현재 오버레이 네트워크 토폴로지 (및 그의 개별 노드들 및 링크들)의 성능은 다양한 메트릭스들의 함수로 정의되며 - 성능 기준은 임계 세트 또는 해당 성능에 부과된 다른 제약들로 정의된다. 일 실시예에서, 이러한 성능 기준은 각 콘텐트 아이템에 대해 미리 정의된다. 다른 실시예들에서, 성능 기준은 시간이 지남에 따라 동적으로 생성 및 수정된다.
오버레이 네트워크 토폴로지 매니저(350c)는 본 발명의 예상 오버레이 네트워크 아키텍처의 주요 컴포넌트들을 제공한다. 아래의 많은 논의는 특정 콘텐트 아이템의 분배 및 시간이 지남에 따라 해당 콘텐트 아이템의 후속 세그먼트들이 (각 재구성에 따라) 분배될 오버레이 네트워크 토폴로지의 재구성에 초점을 맞추고 있다. 그러나, 위에 언급된 바와 같이, 본 발명의 예상 오버레이 네트워크 아키텍처는 복수의 어플리케이션에 걸쳐 복수의 콘텐트 아이템의 동시 분배를 지원한다.
각 정의된 시간 기간 동안, 메트릭 프로세서(352c)는 시간이 지남에 따라 인터넷 트래픽을 직접 모니터링하여 획득하든 또는 인터넷 트래픽을 모니터링하는 제3자로부터 간접적으로 획득하든 사용자 노드 장치들(300b)로부터뿐만 아니라 (일 실시예에서는) 외부 소스들로부터 주로 메트릭들을 수신하며, 간헐적으로 시간이 지남에 따라 특정 트래픽 패턴을 나타내는 로컬 또는 글로벌 "트래픽 맵"을 구축한다. 아래에 더 상세히 설명되는 바와 같이, 메트릭 프로세서(352c)는 이 원시 메트릭 데이터를 예측 엔진(355c) 및 토폴로지 선택기(358c)에 의해 이용될 수 있는 형태로 변환하여 어플리케이션 별 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 식별한다.
일 실시예에서, 메트릭 프로세서(353)는 각각의 연속 시간 동안 이들 원시 메트릭을 예측 엔진(355c)에 의한 노드-중계 용량 및 링크-중계 용량 예측들을 용이하게 하는 "트레이닝 샘플들"로 구성한다. 예를 들어, 메트릭 프로세서(353)는 원시 메트릭을 정량화하고 (일 실시예에서) 노드-중계 및 링크-중계 분류기에 트레이닝 샘플 입력 및 출력을 생성하기 위해 이들을 스케일링하고 가중치를 부여한다.
더욱이, 아래에 더 상세히 설명되는 바와 같이, 메트릭 프로세서(353)는 노드-중계 분류기에 대한 트레이닝-샘플 출력을 생성하기 위해 특정 메트릭을 통합(예를 들어, 단일 상위 노드로부터의 복수의 링크들의 성능에 관한 관찰된 메트릭들을 결합)한다. 원시 메트릭들의 다른 변형은 당업자에게 명백할 것이다.
(적응형 토폴로지 서버(300c)에 의해 획득된 다른 메트릭들 외에) 각각의 연속적인 시간 기간 동안 메트릭 프로세서(352c)에 의해 처리된 메트릭은, 일 실시예에서, 이력 성능 데이터베이스(385c)에 저장된다. 일 실시예에서, (원시 및 처리된 형태 둘 다에서의) 이러한 이력 메트릭들은 예측 엔진(355c)에 의해 이용된다.
오버레이 네트워크 데이터베이스(375c)는 별개의 오버레이 네트워크 토폴로지를 정의하는 노드 및 링크 세트들의 식별자들을 저장하기 위해 사용된다. 게다가, 다른 실시예에서, 이는 이러한 오버레이 네트워크 토폴로지 및/또는 연관된 이력 메트릭들을 반영하는 다른 데이터의 노드들 및 링크들 사이의 상호 의존성을 저장하는 데 사용된다.
아래에 더 상세히 설명되는 바와 같이, 토폴로지 선택기(358c)는 일 실시예에서, 예측 엔진(355c)에 의해 생성된 지정된 노드-중계 용량 및 링크-중계 용량 예측들(및 일 실시예에서, 디맨드 예측 - 즉, 그들의 지속시간에 따라 네트워크에 존재하는 노드들의 예측들)에 기초하여, 현재 콘텐트 아이템에 적용 가능한 정의된 어플리케이션 별 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 식별하는 비선형 다차원 최적화 및/또는 휴리스틱 알고리즘들을 사용한다. 토폴로지 선택기(358c)는 이러한 알고리즘을 사용하여 새로운 또는 더 나은 상위가 필요한 노드에 초과 용량을 재분배하는 정도 - 즉, 성능 기준을 충족하는 네트워크 트래픽 이동-에 기초하여 오버레이 네트워크 토폴로지들의 평가를 용이하게 한다.
더욱이, 이러한 알고리즘들은 오버레이 네트워크 토폴로지의 글로벌적 맥락에서 노드들과 링크들 사이의 상호 의존성을 고려한다. 위에 언급된 바와 같이, 임의의 특정 오버레이 네트워크 토폴로지와 관련하여, 각 노드 및 링크의 성능은 업스트림 노드 및 링크의 성능에 의존한다.
일 실시 예에서, 토폴로지 선택기(358c)는 새로 발견된 노드들을 추가하고 더 이상 현재 콘텐트 아이템을 수신하지 않는 노드들을 제거함으로써 현재 오버레이 네트워크의 노드들을 업데이트한다. 더 중요한 것은, 토폴로지 선택기(358c)는 또한 예측 엔진(455a)을 이용하여 지정된 노드들 및 링크들에 대한 노드-중계 용량 및 링크-중계 용량 예측들을 생성한 다음, 이러한 노드들 및 링크들을 포함하면서 - 동시에 이러한 노드들 및 링크들 사이의 상호 의존성을 고려하여- 예상 오버레이 네트워크 토폴로지들을 분석한다. 다른 실시 예에서, 이러한 노드들이 (도 2b의 노드들(240b-2)에 의해 예시된 바와 같이) 현재 콘텐트 아이템을 소비하지 않더라도, 추가 노드가 포함된다.
다른 실시예에서, 토폴로지 선택기(358c)는 성능 기준을 충족하는 오버레이 네트워크 토폴로지 (및 일부 실시예에서는 최적의 오버레이 네트워크 토폴로지)를 식별하는데 필요한 시간 (뿐만 아니라 다른 네트워크 자원)의 양을 감소시키는 알고리즘을 사용한다. 예를 들어 토폴로지 선택기(358c)는 (1) 예측 엔진(455a)을 사용하여 생성하는 노드-중계 용량 및 링크-중계 용량 예측들의 수, 및/또는 (2) 성능 기준과 관련하여 평가하는 예상 오버레이 네트워크 토폴로지들의 수를 줄이기 위한 알고리즘을 사용한다.
일 실시예에서 (도 7f와 관련하여 아래에 더 상세히 논의됨), 토폴로지 선택기(358c)는 (신규 및 오펀 노드들 외에) 새로운 상위를 필요로 하는 "저성능" 노드들의 임계 개수를 식별한다. 이는 새로운 노드가 필요한 노드들에 대한 링크들만을 고려하면 되기 때문에 노드-중계 용량 및 링크-중계용량 예측들의 수를 크게 감소시킨다. 다른 링크들은 임의의 새로 구성된 오버레이 네트워크 토폴로지에서 그대로(intact) 유지된다.
다른 실시예에서, 토폴로지 선택기(358c)는 링크 변경들이 가장 큰 영향을 미치는 오버레이 네트워크 토폴로지의 영역들(예를 들어, 루트에 근접하거나 특정 "분기지점들(branches)" 또는 트리의 레벨들에 근접함)을 식별함으로써 지정된 노드-중계 용량 및 링크-중계 용량 예측들의 수의 추가 감소를 달성한다. 또 다른 실시예에서, 토폴로지 선택기(358c)는 이러한 예측들에 기초하여 예상 오버레이 네트워크 토폴로지들의 다수의 순열의 서브셋들을 선택적으로 고려하여 유사한 감소를 달성한다. 예를 들어, 이러한 일 실시예에서, 토폴로지 선택기(358c)는 트리의 더 높은 "분기지점들"에서 상위 노드로서 이용하는 "고성능" 노드들을 식별한다. 다양한 다른 알고리즘들, 변환들 및 설계 및 엔지니어링 트레이드 오프가 당업자에게 명백할 것이다.
사용된 특정 알고리즘에 관계없이, 토폴로지 선택기(358c)는 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 출력으로서 생성한다. 위에 언급된 바와 같이, 식별된 오버레이 네트워크 토폴로지가 최적의 것이 아닌 경우에도, (솔루션을 생성하는데 필요한 시간과 같은) 다른 요인들이 우선순위화 될 수 있으므로, 본 발명의 사상을 벗어나지 않고 많은 다른 알고리즘이 사용될 수 있다.
도 4a로 돌아가서, 도면(400a)는 적응형 토폴로지 서버(300c)의 예측 엔진(455a) 컴포넌트와 토폴로지 선택기(458a) 컴포넌트 사이의 관계의 하이 레벨 실시예를 예시한다. 위에 언급된 바와 같이, 예측 엔진(455a)은 각각의 연속 시간 기간(453a) 동안 (일 실시예에서, 이력 성능 DB(485a)로부터 이전에 획득되거나 관찰된 이력 메트릭들에 외에) 다양한 처리된 메트릭들(445a)을 입력으로서 수신한다. 이러한 입력들에 기초하여, 예측 엔진(455a)은 노드-중계 용량(456a) 및 링크-중계 용량(457a) 예측(그리고, 일 실시예에서, 디맨드 예측)을 생성하며, 이는 아래에 더 상세하게 논의된 바와 같이, 보다 다양한 트레이닝 샘플들로 트레이닝됨에 따라 시간이 지남에 따라 개선된다.
일 실시예에서, 토폴로지 선택기(458a)는 (예측 엔지(455a)에) 특정 노드-중계 용량(456a) 및 링크-중계 용량(457a) 예측을 요청한다. 아래에 더 상세히 논의된 바와 같이, 이러한 예측들은 성능 기준을 충족하는 오버레이 네트워크 토폴로지(460b)를 식별하는데 사용된다.
도 4b의 흐름도(400b)는 도 4a의 컴포넌트들의 하이 레벨 동적 예시를 제공한다. (토폴로지 선택기(458b)와 메트릭 프로세서(452b) 사이의 반복 루프로 예시된) 각 연속 시간 기간에 대해, 메트릭 프로세서(452b)는 개별 노드들 및 링크들과 관련된 원시 메트릭 데이터(451b)를 수신하고 처리한다. 메트릭스 프로세서(452b)는 (노드-중계 용량 예측을 생성하기 위해) 입력 노드-중계 속성들이 출력 노드-중계 성능 값들과 어떻게 관련되는지 그리고 (링크-중계 용량 예측을 생성하기 위해) 입력 링크-중계 속성들이 출력 링크-중계 성능 값들과 어떻게 관련되는지에 대해 예측 엔진(455b)을 트레이닝시키기 위해 설계된 타임스탬핑된 샘플(453b)을 생성하도록 해당 원시 데이터를 처리한다.
일 실시예에서, 예측 엔진(455b)(한 번 충분히 트레이닝됨)은 성능 기준을 충족하는 오버레이 네트워크 토폴로지(460b)의 토폴로지 선택기(458b)에 의한 식별을 용이하게 하는 지정된 노드-중계 용량 및 링크-중계 용량 예측들(456b) (및 다른 실시 예에서는 디맨드 예측들)을 제공하기 위해 토폴로지 선택기(458b)에 의해 사용된다. "트레이닝 임계"는 예측 엔진(455b)이 토폴로지 선택기(458b)에 의존할 만큼 충분히 트레이닝되는 시기를 결정하기 위해 사용된다. 다른 실시예에서, 예측 엔진(455b)은 시간이 지남에 따라 점진적으로 개선되는 (토폴로지 선택기 (458b)에 의해 사용하기 위한) 노드-중계 용량 및 링크-중계 용량 예측들(456b)을 지속적으로 생성한다.
D. 오버레이 네트워크 토폴로지들의 재구성
도 5의 흐름도(500)는 이 "오버레이 네트워크 토폴로지 재구성 프로세스"의 약간 더 상세한 시스템 레벨 뷰의 일 실시예를 제공한다. 이 프로세스는 (아래의 도 6a 및 6b의) 예측 엔진(455b)의 주요 컴포넌트들 및 (아래의 도 7a-7e의) 토폴로지 선택기(458b)의 주요 컴포넌트들의 특정 실시예와 관련하여 아래에서 더 상세히 논의된다.
단계(505)에서, 콘텐트 매니저(360c)는 시스템에 의해 지원되는 각각의 어플리케이션 (또는 다른 실시예에서, 각각의 콘텐트 아이템)에 대한 어플리케이션 별 성능 기준을 정의한다. 현재 오버레이 네트워크 토폴로지를 통해 분배되는 현재 콘텐트 아이템에 대해, 성능 기준은 해당 현재 오버레이 네트워크 토폴로지 (및 개별 노드들 및 링크들)의 성능에 부과되는 제약들을 나타낸다. 일 실시예에서, 이러한 성능은 (임의의 지정된 시간 기간 동안) 메트릭 프로세서 (452b)에 이용 가능한 메트릭들의 함수로서 정의되며 - 이는 성능 기준이 충족되는지의 여부를 토폴로지 선택기(458b)에 의해 결정하는 것을 용이하게 한다.
메트릭스 프로세서(452b)는 예측 엔진(455b)을 지속적으로 트레이닝시키는데 사용된 타임스탬핑된 샘플들을 생성하는 단계(507)에서 원시 메트릭스를 처리한다. 위에 언급된 바와 같이, 필요한 시간과 리소스들이 주어지면, 메트릭스가 수집 및 처리(단계 507) 되는 매 시간 기간 동안 포톨로지 선택기(458b)가 현재 오버레이 네트워크 토폴로지의 상태를 재평가하는 것이 실행 가능하지 않을 수 있다.
따라서, 오버레이 네트워크 토폴로지 매니저(350c)는 이 재평가를 트리거할지 여부를 결정하기 위한 단계(510)를 수행한다. 일부 실시예들에서, 이 트리거는 시간-기반이며, 메트릭스 수집 프로세스 이하의 빈도로 수행된다. 다른 실시예들에서, 트리거는 이벤트-기반이다. 예를 들어, 일 실시예에서, 현재 오버레이 네트워크 토폴로지(및 그의 개별 노드들 및 링크들)의 성능에 대한 임계 성능 레벨이 수립된다. 이러한 성능이 성능 기준을 충족하지 못하는 미리 정의된 임계 퍼센티지 내에 있으면, 단계(510)는 단계(515)로 시작되는 현재 오버레이 네트워크 토폴로지의 재평가를 트리거한다.
일단 (시간-기반을 통해서든, 이벤트-기반을 통해서든 또는 다른 트리거를 통해서든) 트리거되면, 토폴로지 선택기(458b)는 특정 노드-중계 용량 및 링크-중계 용량 예측들을 생성하기 위해 단계(515)에서 예측 엔진(455b)를 이용한다. 일 실시예에서, 이러한 예측들은 토폴로지 선택기(458b)에 의해 고려된 임의의 오버레이 네트워크 토폴로지에 포함될 각 상위 노드에 대해 생성된다. 다른 실시예들에서, 고려되는 예상 오버레이 네트워크 토폴로지들의 수와, 이에 따라 필요한 노드-중계 용량 및 링크-중계 용량 예측들의 수를 줄이기 위해 비선형 및 다차원 최적화 및/또는 휴리스틱(heuristic) 알고리즘들이 사용된다.
토폴로지 선택기(458b)는 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 결정하기 위해 단계(520)에서 이러한 예측들을 사용한다. 위에 언급된 바와 같이, 다른 실시예들에서, 토폴로지 선택기(458b)는 "최적의(optimal)" 오버레이 네트워크 토폴로지 - 즉, 성능 기준을 가장 잘 충족하는 (또는 충족에 가장 근접한) 하나를 결정한다.
일단 토폴로지 선택기(458b)가 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 결정하면, 오버레이 네트워크 토폴로지 매니저(350c)는, 단계(525)에서, 현재 오버레이 네트워크 토폴로지를 토포로지 선택기(458b)에 의해 결정된 토폴로지를 교체할지 여부를 결정한다. 위에 언급된 바와 같이, 더 나은(또는 최적의) 오버레이 네트워크 토폴로지가 존재하더라도, 너무 빈번한 토폴로지들의 변경(예컨대, 한 번에 너무 많은 링크들의 변경)의 오버헤드가 그 이점을 능가할 수 있다. 일 실시예에서, 변경된 링크들의 수의 예측된 임계치는 이 오버헤드를 줄이는데 사용된다. 다른 실시예들에서, (예컨대, 일정 시간 기간 동안 현재 오버레이 네트워크 토폴로지가 변경되는 횟수를 제하는) 시간-기반 임계치가 사용된다. 다양한 다른 최적화 및 기술들이 본 발명의 사상으로부터 벗어나지 않고 사용될 수 있다.
예측 엔진(455b) 및 토폴로지 선택기(458b)의 상세한 실시예로 돌아가기 전에, 위에 언급된 바와 같이, 네트워크 혼잡은 본질적으로 디맨드가 공급을 초과한 결과라는 것을 인식하는 것이 도움이 된다. 현재 오버레이 네트워크 토폴로지의 성능에 미치는 네트워크 혼잡 영향을 줄이기 위해, 예측 엔진(455b) 및 토폴로지 선택기(458b)가 협력하여 어플리케이션 별 성능 기준을 충족하는 방식으로 오버레이 네트워크 토폴로지를 재구성하고, 이에 따라 (현재 또는 예상 네트워크 혼잡에 비추어) 디맨드가 공급을 초과하게 되는 정도를 감소시킨다.
예측 엔진(455b)은 노드 중계 용량 및 링크 중계 용량을 예측하기 위해 로컬(노드 및 링크) 레벨에서 네트워크 혼잡 및 기타 성능 제한 요인들을 해결하는 반면, 토폴로지 선택기(458b)는 새롭거나 더 나은 상위(parent)가 필요한 노드들에 여분 용량을 효과적으로 재분배하는 오버레이 네트워크 토폴로지를 식별하기 위해 글로벌 (토폴로지) 레벨에서의 개별 노드들 및 링크들 사이의 상호 의존성을 해결한다 - 즉, 성능 기준을 충족시키기 위해 네트워크 트래픽을 이동시킨다.
1. 예측 엔진
a. 노드-중계 및 링크-중계 분류기
도 6a 및 6b는 두 신경 네트워크 분류기들 - 노드-중계 분류기(600a) 및 링크-중계 분류기(600b) - 이 (로컬 노드 및 링크 레벨에서) 각 노드-중계 용량 및 링크-중계 용량 예측들을 생성하기 위해 사용되는 예측 엔진(455b)의 일 실시예를 예시한다. 도 6a의 노드-중계 분류기(600a)는 노드-중계 용량 예측들을 생성하는 반면, 도 6b의 링크-중계 분류기(600b)는 링크-중계 용량 예측들을 생성한다. 다른 실시예들에서, 예측 엔진(455b)은, 둘 다가 아니라, 노드-중계 용량 예측들만 또는 링크-중계 용량 예측들만 생성한다. 또 다른 실시예들(아래에 논의됨)에서, 예측 엔진(455b)은 "디맨드 예측들(demand predictions)"을 생성한다.
도 6a 및 6b에 예시된 실시예에서, 두 신경 네트워크 분류기들(600a 및 600b)은 지도 기계 학습(supervised machine learning)의 형태를 구현한다. 다른 실시예들에서, 비지도 기계 학습(unsupervised machine learning)(예컨대, 다양한 속성들의 유사성에 기초한 노드들의 클러스터링)은 또한 이 프로세스에 추가 입력들을 제공하기 위해 사용된다. 예를 들어, 오버레이 네트워크 토폴로지 매니저(350c)는 복수의 "수치들(dimensions)"(즉, 아래에 더 상세히 논의된 시간 메트릭을 포함한 복수의 메트릭스)에 기반하여 오버레이 네트워크의 노드들을 복수의 클러스터들로 분류하기 위해 클러스터링 알고리즘을 이용한다. 네트워크 분류기들(600a 및 600b)로의 추가 입력에 따라 노드가 분류되는 클러스터의 ID를 포함함으로써, 이 클러스터 ID는 입력들과 출력들의(특히, 아래에 설명된 바와 같이, 장기 시간 종속 반복 패턴(longer- term time-dependent recurring patterns)에 대한) 관련성을 용이하게 한다.
본 발명의 신경 네트워크들은 특히 오버레이 네트워크의 노드들 및 링크들의 속성들을 이러한 노드들 및 링크들의 관찰된 성능과 관련시키기 위해 사용된다. 일 실시예에서, 이러한 신경 네트워크들은 각 노드-중계 용량 및 링크-중계 용량 예측들을 용이하게 하기 위해 (연속적인 시간 기간에 걸쳐) 노드-중계 및 링크-중계 속성들(예컨대, 입력 노드 메트릭스 및 링크 메트릭스)을 각 노드-중계 및 링크-중계 성능 값들(하위 목적지 노드들이 겪은 결과적인 성능을 반영)과 관련시킨다.
특히, 노드-중계 분류기는 하나 이상의 하위 노드들로 콘텐트를 중계하기 위한 예상 상위 노드의 "용량"을 예측하기 위해 노드-중계 속성들(노드 메트릭스)을 관찰된 노드-중계 성능 값들과 관련시킨다. 예를 들어, 각 하위 노드로부터의 디맨드를 5mbps로 가정하면, 예측된 13mbps의 노드-중계 용량은 예상 상위 노드가 두 하위 노드들로 콘텐트를 동시에 중계할 수 있는 것으로 예측됨을 나타낸다. 5mbps 미만의 예측된 노드-중계 용량은 지정된 상위 노드가 심지어 단일 하위 노드에서도 디맨드를 충족할 수 있을 것으로 예측되지 않으며, 따라서 "리프(a "leaf)" 노드이여야 함을 나타낸다.
링크-중계 분류기는 예상 링크의 용량 - 즉, 해당 링크의 하위 노드로 콘텐트를 전달하기 위한 링크의 능력 -을 예측하기 위해 링크-중계 속성들(링크 메트릭들)을 관찰된 링크-중계 성능 값들과 상관시킨다. 예를 들어, 다시 각 하위 노드로부터의 디맨드를 5mbps로 가정하면, 예측된 5mbps 링크-중계 용량은 지정된 링크가 해당 링크의 지정된 하위 노드로 콘텐트를 전달(하고 해당 하위 노드로부터 디맨드를 충족)할 수 있을 것으로 예측됨을 나타낸다. 5mbps 미만의 예측된 링크-중계 용량은 이 링크가 지정된 하위 노드의 디맨드를 충족할 수 없을 것으로 예측되며, 따라서 오버레이 네트워크 토폴로지의 링크가 아니어야 함을 나타냅니다.
이러한 상관 관계 및 "릴레이 용량" 예측들은 정의된 성능 기준을 충족하는 오버레이 네트워크 토폴로지의 식별을 용이하게 하기 위해 (오버레이 네트워크 토폴로지들의 예상 노드들 및 링크들 사이에서) 상호 의존성을 해결하고 (새로운 또는 더 나은 상위를 필요로 하는 노드들로) 여분 중계 용량을 재분배하는 더 큰 프로세스(토폴로지 선택기(458b)와 관련하여 아래에 설명됨)의 일부입니다.
아래에 더 상세히 논의되는 바와 같이, 토폴로지 선택기(458b)는 노드(A)의 노드 ID를 제공하는 것이 아니라, 노드-중계 분류기(600a)가 예상 상위-중계 노드(A)에 대한 예측된 노드-중계 용량값(예컨대, 13mbps)를 생성하고, 이를 다시 토폴로지 선택기(458b)로 전달하는, 노드(A)와 연관된 현재 노드-중계 속성들(노드 메트릭들)을 제공함으로써 노드-중계 분류기(600a)에 예상 상위 노드(예컨대, 노드(A))를 지정한다.
마찬가지로, 토폴로지 선택기(458b)는 A→B 링크의 링크 ID를 제공하는 것이 아니라, 링크-중계 분류기(600)가 예상 A→B 링크에 대한 예측된 A→B 링크-중계 용량값(예컨대, 5mbps)을 생성하고, 이를 다시 토폴로지 선택기(458b)로 전달하는, A→B 링크와 연관된 현재 링크-중계 속성들(링크 메트릭들)을 제공함으로써 링크-중계 분류기(600b)에 예상 링크(예컨대, A→B)를 지정한다.
b. 노드-중계 및 링크-중계 분류기의 트레이닝
신경 네트워크 분류기는 분류기가 결코 관찰하지 못한 입력으로부터의 출력을 예측하기 위해 관찰된 입력을 관찰된 출력과 상관시키도록 트레이닝된다는 것을 인식하는 것이 중요하다. 다시 말해, 분류기들은 관찰된 특정 데이터를 일반화한다.
예를 들어, 노드(A)가 상위 노드였던 적이 없는 경우, 노드-중계 분류기(600a)는 노드(A)로부터의 링크를 따라 전송된 콘텐트와 관련된 메트릭들을 결코 관찰하지 못했을 것이다. 그럼에도 불구하고, 토폴로지 선택기(458b)가 노드(A)에 대한 노드-중계 용량 예측들을 요청하면, 노드-중계 분류기(600a)는 여전히 이러한 예측을 생성할 것이다. 트레이닝 과정의 세부사항에 대해 아래에 설명된 바와 같이, 그 예측의 정확성은 본질적으로 노드(A)와 관련된 현재 입력 메트릭들이 시간이 지남에 따라 노드-중계 분류기(600a)에 제공된 다른 노드(아마도 노드(A)를 포함함)와 관련된 것(즉, 실제 상위 노드들로부터 관찰된 메트릭들)과 얼마나 유사한지에 달려 있다.
다시 말해, 시간이 지남에 따라 속성들이 관찰된 실제 상위 노드들은 유사한 속성들을 가지는 예상 상위 노드에 대한 "프록시" 역할을 한다. 둘 다, 노드-중계 분류기(600a)가 해당 클래스의 상위 노드들의 하위 노드들에 의해 경험되는 노드-중계 성능값들과 상관시키기 위해 학습했던, 동일한 "클래스"의 상위 노드의 일부로 간주될 수 있다. 복수의 입력 속성을 복수의 출력 속성과 연관시키는 것은 물론 비교적 복잡한 작업이지만, 신경 네트워크 기술분야의 당업자에게 명백한 바와 같이, 이중 하나는 지도 기계 학습에 적합하다.
마찬가지로, A → K 링크가 오버레이 네트워크 토폴로지의 링크가 되지 않았다면, 링크-중계 분류기(600b)는 결코 A → K 링크를 따라 전송된 콘텐트와 관련된 메트릭들을 관찰하지 못했을 것이다. 그럼에도 불구하고, 토폴로지 선택기(458b)가 A → K 링크에 대한 링크-중계 용량 예측들을 요청하면, 링크-중계 분류기(600b)는 여전히 이러한 예측을 생성할 것이다.
여기서도 그 예측의 정확성은 본질적으로 A → K 링크와 관련된 현재 입력 링크 메트릭들이 시간이 지남에 따라 링크-중계 분류기(600b)에 제공되는 다른 링크(아마도 A → K 링크 포함함)와 연관된 것(즉, 실제 상위-하위 링크들로부터 관찰된 메트릭들)과 얼마나 유사한 지에 달려 있다. 노드-릴레이 분류기(600a)에 대한 경우에서와 같이, 시간이 지남에 따라 속성들이 링크-중계 분류기(600b)에 의해 관찰된 실제 링크들은 유사한 속성을 가지는 예상 링크에 대한 프록시로서 효과적으로 기능한다.
따라서, 일 실시예에서, 노드-중계 분류기(600a) 및 링크-중계 분류기(600b)는 관찰된 상위 및 하위 노드들의 특정 아이덴티티에 관계없이 노드 및 링크 속성들을 각각의 노드-중계 및 링크-중계 성능값들과 상관시킴으로써 트레이닝된다.
예를 들어, 도 6a를 참조하면, (현재 하위 노드들(B 및 C)에 동시에 콘텐트를 중계하는) 상위 노드(A)에 대해 노드-중계 분류기(600a)에 제공되는 트레이닝 샘플을 고려한다. 이 예에서, 링크들(A → B 및 A → C)은 현재 오버레이 네트워크 토폴로지의 일부이며, 각 목적지 노드로부터의 디맨드는 5mbps 인 것으로 가정된다.
입력들(610a)은 노드(A)의 연결 유형, 업 링크 및 다운 링크 속도 등과 같은 노드(A)에 특정된 노드 메트릭들(612a)을 포함한다. 입력들(610a)은 또한 이 트레이닝 샘플에 대한 메트릭들이 수집(아래에서 더 상세히 설명됨)되는 동안 시간기간을 나타내는 메트릭 타임스탬프(614a)를 포함한다.
이 트레이닝 샘플의 출력들(630a)은 각각의 A→B 및 A→C 링크들의 하위 노드들(B 및 C) 둘 다와 관련된다. 이 예에서, A → B 및 A → C 링크들을 따라 실제 관찰된 성능(예를 들어, A→B 링크를 따라 5mbps 및 A → C 링크를 따라 3mbps로 구성된 총 8mbps)이 예측된 노드-중계 용량 (632a)과 비교된다. 일 실시예에서, 노드-중계 분류기(600a)는 (실제 관찰된 성능 외에) 예측된 노드-중계 용량(632a)을 하나 이상의 메트릭들의 함수로서 계산하여 단일 값을 산출한다. 다른 실시예에서, 이는 복수의 출력 값들을 생성한다.
일 실시예에서, 실제 관측된 성능이 (디맨드가 용량을 초과하는 경우의) "용량 제한(capacity-limited)" 관찰을 반영하든, 또는 (용량이 디맨드와 같거나 초과하는 경우의) "디맨드 제한(demand-limited)" 관찰을 반영하든, 노드-중계 분류기(600a)에 대한 모든 트레이닝 샘플들이 포함된다. 다른 실시예들에서, 중계 용량을 보다 정확하게 예측하기 위해, 노드-중계 분류기(600a)로의 트레이닝 샘플들은 디맨드 제한 관찰들을 배제하기 위해 필터링된다. 즉, 이는 하위 노드들의 총 디맨드에 의해 관찰이 제한되었으므로, 상위 노드의 실제 노드-중계 용량을 정확하게 반영하지 않을 수 있기 때문에 제외된다.
예를 들어, 상위 노드가 하나 이상의 하위 노드의 총 디맨드를 충족시키는 경우(예컨대, 하나의 하위 노드의 경우 5mbps, 2 개의 하위 노드의 경우 10mbps 등), 해당 디맨드 제한 트레이닝 샘플이 제외된다. 반대로, 상위 노드가 그의 하위 노드들 중 어느 하나의 디맨드도 충족시키지 못한 경우(노드(A)가 8mbps의 노드-중계 용량을 가졌지만, A→C 링크를 따라 3mbps만 전달하는 위의 실시예에서와 같이), 해당 용량 제한된 트레이닝 샘플이 포함된다.
다른 실시예에서, 분명히 제한된 용량이 업스트림 의존성의 결과인 경우(예컨대, 노드(A)의 상위가 단지 3mbps만 노드(A)에 전달하는 경우) 또는 (A→C 링크를 따라 혼잡된 중간 라우팅 노드와 같은) 링크 자체를 따라 부과된 제한인 경우, 특정 용량 제한 트레이닝 샘플들이 또한 배제된다. 일 실시예에서, 이러한 조건들 둘 다 관련 링크에 관한 링크-중계 용량 예측을 획득함으로써 결정된다.
특정 트레이닝 샘플들의 포함 또는 배제에 관계없이, 노드-중계 분류기(600a)는 노드-중계 용량 예측들을 지속적으로 생성한다. 다시 말해, 이 실시예에서는 (토폴로지 선택기가 "충분하게" 트레이닝된 것으로 간주될 때까지 노드-중계 분류기(600a)로부터 노드-중계 용량 예측들을 요청하지 않더라도) 지속적으로 트레이닝된다. 예측된 노드-중계 용량(632a) 출력값들과 실제 관찰된 출력값들(도시되지 않음) 사이의 차이는 (아래에 논의된 바와 같이) 시간이 지남에 따라 노드-중계 분류기(600a)를 트레이닝시키는데 사용되는 "오류들(errors)"을 나타낸다.
노드(A)에 대한 이 트레이닝 샘플은 각 시간 기간 동안 노드-중계 분류기(600a)에 제공되는 많은 트레이닝 샘플들 중 하나일 뿐이다. 다른 트레이닝 샘플들은 물론 다른 노드들 및 링크들뿐만 아니라, 연속 시간 기간 동안의 동일한 노드들 및 링크들(동일한 트레이닝 데이터 세트의 반복 제출 포함함)에 관한 것이다.
위에 언급된 바와 같이, 노드-중계 분류기(600a)는 시간이 지남에 따라 노드-중계 속성들 및 노드-중계 성능값들 사이의 상관 관계를 학습한다. 예를 들어, 노드(A)가 인터넷에 대한 3G 셀룰러 연결을 가지고 콘텐트를 상대적으로 느리게 하위 노드에 전달하는 경우, 노드-중계 분류기(600a)는 노드(A)가 "불량(bad)" 상위라는 것을 구체적으로 학습하지 않고 대신에 보다 일반적으로 3G 셀룰러 연결들을 갖는 예상 상위 노드들이 불량 상위들이라는 것을 학습한다. 이 프로세스는 물론 더 많은 속성들(메트릭들)이 고려되고 시간이 지남에 따라 그 값들이 빈번하게 자주 변경되므로 더 복잡하다.
노드-중계 분류기(600a)가 예상 상위 노드의 노드-중계 용량(632a)을 예측하기 위해 토폴로지 선택기(458b)에 의해 사용될 때, 지정된 예상 상위 노드와 관련된 입력들(610a)(현재 노드 메트릭들(612a) 및 현재 타임스탬프 (614a))이 공급된다 - 이는 아마도 상위 노드였던 적이 없는 입력일 것이다. 이러한 입력들(610a)에 기초하여, 노드-중계 분류기(600a)는 지정된 예상 상위 노드의 노드-중계 용량(632a)의 예측을 생성하며, 이는 콘텐트를 하나 이상의 (지정되지 않은) 하위 노드들로 중계하는 능력을 반영한다.
일 실시예에서, 하나 이상의 히든 레이어들(620a)은 복수의 입력들(610a)과 출력들(630a) 사이의 보다 복잡한 상관 관계를 용이하게 하는데 사용된다. 이 실시예에서, 개별 히든 뉴런들(individual hidden neurons)(621a)은 "중간 상태(intermediate state)" 값들(가중치 합 또는 이러한 뉴런들(621a)에 대한 입력들의 다른 보다 복잡한 기능에 따라 계산됨)을 나타낸다. 트레이닝 동안 "정방향 전파(forward propagation)" 프로세스를 이용하여, 입력들(610a)의 값들은 예측된 출력값들을 생성하기 위해 이러한 중간 상태들을 통해 변환되며, 이는 각 트레이닝 샘플에 제공된 실제 출력값과 비교된다.
위에 언급된 바와 같이, 이러한 생성된 출력값과 실제 관찰된 출력값 사이의 차이는 노드-중계 분류기(600a)에 의해 생성된 예측들의 "오류들"을 나타낸다. 이러한 오류들은 그 중간 상태 값들을 계산하기 위해 히든 뉴런들(621a)에 의해 사용된 가중치를 조정하는 "역 전파(back propagation)" 프로세스(즉, 통계적 회귀의 형태)에서 노드-중계 분류기(600a)를 트레이닝시키는데 이용된다. 시간이 지남에 따라, 보다 대표적인 트레이닝 샘플들이 제공되므로, 노드-중계 분류기(600a)는 이러한 오류들을 점진적으로 감소시켜 예측 능력을 향상시킨다. 신경 네트워크 및 지도 기계 학습 분야의 당업자에게 명백한 바와 같이, 다양한 상이한 알고리즘들(단일 히든 레이어 또는 복수의 "딥 러닝" 히든 레이어들뿐만 아니라, 다양한 비지도 기계 학습 알고리즘들을 포함함)이 본 발명의 사상을 벗어나지 않고 사용될 수 있다.
위에서 참조된 바와 같이, 메트릭 타임스탬프(614a)는 또한 지정된 상위 노드에 속하는 노드 메트릭들(612a) 외에 입력들(610a)에 포함된다. 노드-중계 분류기(600a)의 트레이닝 동안, 타임스탬프 (614a)는 각 트레이닝 샘플에 대한 메트릭들이 수집되는 동안의 시간 기간을 나타낸다. (지정된 예상 상위 노드에 대한 노드-중계 용량 (632a) 예측을 생성하기 위해 토폴로지 선택기 (458b)에 의해) 노드-중계 분류기(600a)를 사용하는 동안, 타임스탬프(614a)는 지정된 예상 상위 노드와 관련된 노드 메트릭들(612a)이 획득되는 동안의 시간 기간을 나타낸다.
그러나, 보다 현저하게, 타임스탬프(614a)는 "시간" 메트릭과 관련하여 - 즉, 반복적인 시간-종속 패턴들 의존적 패턴과 관련하여 - 노드 메트릭들과 노드-중계 성능 값들과의 상관 관계를 용이하게 한다. 예를 들어, 다른 메트릭들이 시간이 지남에 따라 아침보다 주말에, 주중보다 주말에, 또는 악천후 동안에 나라의 특정 지역에서 더 큰 교통 지연과 같은) 반복되는 패턴을 반영하는 범위까지, 타임스탬프(614a)는 노드-중계 분류기(600a)가 임의의 특정 기간 동안 노드-중계 용량(632a)을 예측하는데 사용될 때 시간 메트릭의 상대적 영향을 반영할 수 있게 하는 유용한 정보를 제공한다. 일 실시예에서, 타임스탬프(614a)는, 하나의 정확한 날짜/시간 값 대신 또는 외에, 공휴일, 특별 이벤트 및 다양한 다른 값뿐만 아니라 (GMT 또는 현지 시간대와 같은 글로벌 기준 시간에 기초하여) 요일 및 시간을 구별하기 위한 복수의 값을 포함한다.
타임스탬프(614a)가 "시간(time)"의 차원을 다양한 노드 메트릭들에 추가하는 것처럼, 다른 실시예들에서는 현재 오버레이 네트워크 토폴로지의 특정 노드들 및 링크들 "외부"에 있는 간접 요인들(indirect factors)을 반영하기 위해 추가 메트릭들이 사용된다. 예를 들어, 위에 언급된 바와 같이, 기본 네트워크 상의 다른 어플리케이션들 및 이벤트들로 인한 이러한 노드들 및 링크들에 미치는 영향에 대한 외부 지표들이 또한 예측 엔진(455b)에 대한 입력으로 포함된다.
이러한 외부 지표들은 더 슈퍼볼(the Super Bowl) 및 인기 TV 시리즈의 시즌 종료 에피소드와 같은 정기적인 인기 이벤트 또는 기타 대역폭-집약적인(bandwidth-intensive) 이벤트를 포함한다. 이러한 이벤트들은 종종 현재 오버레이 네트워크 토폴로지의 노드들 및 링크들을 포함하여, 인터넷의 상당 부분들에 영향을 미치는 증가된 트래픽 및 지연을 초래한다. 또한 다른 실시예에서는 예측 엔진(455b)에 대한 입력으로서 (악천후로 인한 것이든 또는 다른 요인들으로 인한 것이든) 연장된 네트워크 정지(outages) 및 장비 고장이 포함된다. 위에 언급된 바와 같이, 이러한 정보는 시간이 지남에 따른 네트워크 트래픽을 모니터링함으로써 직접 획득되거나, 또는 인터넷 트래픽을 모니터링하고 때때로 시간이 지남에 따른 특정 트래픽 패턴을 나타내는 로컬 또는 글로벌 인터넷 "트래픽 맵"을 구축하는 제 3 자로부터 간접적으로 획득될 수 있다.
도 6b로 돌아가서, 링크-중계 분류기(600b)는 예측들을 생성하는데 토폴로지 선택기(458b)의 사용뿐만 아니라 그의 트레이닝에 대해 - 노드-중계 분류기(600a)의 방식과 매우 유사한 방식으로 수행된다. 그러나, 위에 언급된 바와 같이, 링크-중계 분류기(600b)는 콘텐트 세그먼트들을 지정된 하위 노드로 전달하는 링크의 능력에 관한 예측들을 생성하는 반면, 노드-중계 분류기(600a)는 콘텐트 세그먼트들을 하나 이상의 지정되지 않은 하위 노드들로 중계하는 지정된 상위 노드의 능력에 관한 예측들을 생성한다. 이러한 구별은 미묘한 것으로 보일 수 있지만, 도 7a-7e를 참조하여 아래에 더 상세히 논의된 바와 같이, 정의된 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 식별하는 토폴로지 선택기(458b)의 맥락에서 상당히 중요하다. 7A-7E.
상위 노드(A)는 현재 하위 노드들(B 및 C)에 동시에 콘텐트를 중계하고 있고, 따라서 링크들(A→B 및 A→C)은 현재 오버레이 네트워크 토폴로지의 일부인, 도 6a를 참조하여 위에 논의된 예를 고려하기로 한다. 노드-중계 분류기(600a)에 대해 생성된 단일 트레이닝 샘플과는 달리, 링크-중계 분류기(600b)에 대한 두 개의 트레이닝 샘플들이 이 예의 맥락에서 생성될 것이다 - 하나는 A→B 링크에 관한 것이고, 다른 하나는 A→C 링크에 관한 것이다.
트레이닝 샘플과 연관된 링크와 관련하여, 링크-중계 분류기(600b)에 대한 입력들(610b)은 링크에 따른 왕복 핑 시간, 링크의 상위 및 하위에 대한 상대적 노드 메트릭들, 특정 QoS 및 QoE 메트릭들 및 기타 링크-중계 속성들과 같은 링크 메트릭들(612b)을 포함한다. 입력들(610b)은 또한, (노드-중계 분류기(600a) 및 노드 메트릭들(612a)과 관련하여 위에 논의된 바와 같이) 링크 메트릭들(612b)이 수집되는 동안의 시간 기간을 나타내는, 메트릭 타임스탬프(614b)를 포함한다.
링크-중계 분류기(600b)의 출력들(630b)은 (복수의 링크들의 성능을 동시에 잠재적으로 반영하는 노드-중계 분류기(600a)의 출력들(630a)과는 대조적으로) 단일 링크의 관찰된 성능 또는 예측된 용량을 나타낸다. 상기 예에서 A→B 링크에 대한 트레이닝 샘플 출력들(630b)은 5mbps와 동일하고, A→C 링크에 대한 트레이닝 샘플 출력들은 3mbps와 동일하다. (노드-중계 분류기(600a)에서와 같이) 일 실시예에서, 링크-중계 분류기(600b)는 하나 이상의 메트릭들의 함수로서 예측된 링크-중계 용량(632b) (및 실제 관측된 성능)을 생성하여, 단일 값을 산출한다. 다른 실시예에서, 이는 복수의 출력 값들을 생성한다.
노드-중계 분류기(600a)의 경우와 같이, 실제 관찰된 성능이 (디맨드가 용량을 초과하는 경우의) 용량 제한 관찰을 반영하든, 또는 (용량이 디맨드와 동일하거나 디맨드를 초과하는 경우의) 디맨드 제한 관찰을 반영하든, 링크-중계 분류기(600b)에 대한 모든 트레이닝 샘플들이 포함된다. 다른 실시예들에서, 중계 용량을 더 잘 예측하기 위해, 링크-중계 분류기(600b)에 대한 트레이닝 샘플들은 이들이 용량 제한인지 또는 디맨드 제한인지에 기초하여 구별된다. 그 결과 (이 구별이 복수의 분류기들에서 구현되는지 단일 분류기의 개별 컴포넌트들에서 구현되는지에 관계없이), 예상 링크와 관련하여 링크-중계 용량 예측이 요청될 때, 링크-중계 분류기(600b)는 우선 예측된 요량이 하위 노드의 디맨드를 충족하는지를 결정한다. 일 실시예에서, 링크-중계 분류기(600b)는 바이너리("예" 또는 "아니오") 결과만을 생성한다. 다른 실시예에서, 이러한 디맨드가 충족되지 않은 경우, 링크-중계 분류기(600b)는 예측된 용량(예를 들어, 4 mbps, 3 mbps 등)을 추가로 생성한다. 성능 기준 및 기타 요인들에 따라, (예를 들어, 더 나은 링크를 사용할 수 없거나, 성능 기준이 평균적으로 5mbps의 디맨드를 부과하지만 모든 개별 하위 노드에 대해 그렇지 않은 경우) 이러한 링크는 토폴로지 선택기(458b)에 의해 여전히 사용될 수 있습니다.
노드-중계 분류기(600a)와 마찬가지로, 링크-중계 분류기(600b)는 예측을 연속적으로 생성하는데, 이 경우 링크-중계 용량(632b)의 예측은 실제 관찰된 출력 값과 비교하여 시간에 따른 에러를 점차 감소시킨다. 또한 각 기간 동안의 실제 관찰된 링크와 관련된 트레이닝 샘플과 동일한 기간의 트레이닝 데이터(반복된 동일한 트레이닝 데이터 제출을 포함함)에 걸쳐 특정 노드 및 링크의 속성들을 기억할 필요가 없는 트레이닝 샘플에 의존합니다.
링크-중계 분류기(600b)가 예상 링크의 링크-중계 용량(632b)을 예측하기 위해 토폴로지 선택기(458b)에 의해 사용될 때, 이는 - 아마도 실제 관찰된 오버레이 네트워크 토폴로지의 일부였던 적이 없더라도 - 지정된 예상 링크에 관한 입력들(610b)(현재 샘플링된 링크 메트릭들(612b) 및 타임스탬프(614b))이 제공될 것이다. 이러한 입력들(610b)에 기초하여, 링크-중계 분류기(600b)는 해당 링크의 지정된 하위 노드로 콘텐트를 전달하기 위한 링크의 능력을 반영하는, 해당 지정된 링크의 링크-중계 용량(632b)의 예측을 생성한다.
노드-중계 분류기(600a)의 경우와 같이, 링크-중계 분류기(600b)의 복수의 입력들(610b) 및 출력들(630b) 사이에서 보다 더 복잡한 상관 관계를 용이하게 하기 위해 하나 이상의 히든 레이어들(hidden layers)(620b)이 사용된다. 여기에서도, 개별 히든 뉴런들(neurons)(621b)은 "중간 상태" 값들(가중치 합 또는 이러한 뉴런들(621b)에 대한 입력들의 다른 보다 복잡한 기능에 따라 계산됨)을 나타낸다. 이 실시예에서, 각각의 트레이닝 샘플에 제공된 실제 출력 값들과 비교되는 예측된 링크-중계 용량(632b) 값들을 생성하기 위해 이러한 중간 상태를 통해 입력들(610b)의 값들을 변환하는 순방향 전파 프로세스가 트레이닝 동안 사용된다. 역 전파 프로세스는 그들의 중간 상태 값을 계산하기 위해 히든 뉴런들(621b)에 의해 사용된 가중치들을 조정하는 데 사용된다.
여기서도, 타임스탬프(614b)는 지정된 예상 링크에 대한 링크-중계 용량(632b) 예측을 생성하기 위해 토폴로지 선택기(458b)에 의해 링크-중계 분류기(600b)를 사용하는 동안 각각의 트레이닝 샘플에 대한 메트들릭이 (현재 시간을 포함하여) 수집된 시간 기간을 나타낸다. 또한, 노드-중계 분류기(600a)에서와 같이, 타임스탬프(614b)는 위에 설명된 바와 같이 시간 메트릭에 대한, 그리고 이에 따른 반복되는 시간-의존 패턴(추가적인 외부 지표들의 사용을 포함함)에 대한 링크-중계 성능에 대한 링크 메트릭들의 상관 관계를 용이하게 한다.
일 실시예에서, 예상 상이 노드의 노드-중계 용량(632a) 및 예상 링크의 링크-중계 용량(632b)은 하나 이상의 메트릭들(예를 들어, 사용자의 경험을 가장 잘 나타내는 QoE 메트릭들)의 어플리케이션 별 기능들로 정의된다. 간단한 기능은 mbps로 측정된 단일 처리량 메트릭만 포함할 수 있다.
다른 실시예에서, 노드-중계 용량(632a) 및 링크-중계 용량(632b)은 - 적응형 토폴로지 서버(300c)에 의해 수집되거나 획득된 임의의 또는 모든 메트릭들을 잠재적으로 포함하는 - 복수의 메트릭들의 보다 복잡한 기능으로 정의된다. 특정 어플리케이션 (또는 콘텐트 아이템)과 관련하여 사용된 특정 기능은 (현재 도는 향후) 기본 네트워크 혼잡의 측면에서 특정 노드들 및 링크들의 상대적인 성능을 구별하기 위한 설계 및 엔지니어링 트레이드 오프의 결과임이 당업자에게 명백할 것이다.
그러나, 위에 언급된 바와 같이, 계산 및 정량화된 노드-중계 용량(632a)은 콘텐트 세그먼트들을 하나 이상의 지정되지 않은 하위 노드들로 중계하기 위한 예상 상위 노드의 능력을 나타내는 반면, 링크-중계 용량(632b)은 콘텐트 세그먼트들을 해당 링크의 지정된 하위 노드로 전달하기 위한 예상 링크의 능력을 나타낸다.
일 실시예에서, 대표적인 트레이닝 샘플 세트는 미리 결정된 "이력 지속시간(historical duration)"(일반적으로 비교적 장기의 월 또는 년)에 걸쳐 생성된다. 각각의 트레이닝 샘플 세트는 노드-중계 분류기(600a) 및 링크-중계 분류기(600b)를 트레이닝하기 위해 반복적으로 사용된다. 예를 들어, 일 실시예에서, 메트릭들이 수집되는 동안의 각 시간 기간의 지속시간은 1초인 반면, 이력 지속시간은 2 년이다. 다른 실시예들에서, 제한되지 않는 이력 지속시간이 사용된다.
메트릭들이 각 1 초 시간 기간 동안 트레이닝 샘플로서 수집 및 처리되며, 이력 지속시간 동안 획득된 메트릭 세트 또한 (복수의 "에포크(epochs)" 또는 이전에 제출된 트레이닝 샘플들의 반복에 걸쳐 반복적으로 제출된다. 이러한 방식으로, 노드-중계 분류기(600a) 및 링크-중계 분류기(600b)는 상대적으로 더욱 최근의 메트릭들로 지속적으로 "리트레이닝(re-trained)" 된다. 일 실시예에서, 임의의 이력 지속시간 동안 충분히 다양한 트레이닝 샘플 세트를 수신 시, 노드-중계 분류기(600a) 및 링크-중계 분류기(600b)는 토폴로지 선택기(458b)에 요청한 각각의 노드-중계 용량(632a) 및 링크-중계 용량(632b) 예측들을 생성하기 위해 "충분히 트레이닝"된 것으로 간주된다.
위에 언급된 바와 같이, 노드-중계 분류기(600a) 및 링크-중계 분류기(600b)는 현재뿐만 아니라 향후 네트워크 혼잡에 대한 각각의 노드-중계 용량(632a) 및 링크-중계 용량(632b) 예측들을 생성한다. 일 실시예에서, 이러한 예측은 대응되는 트레이닝 샘플 입력들에 대해 시간적으로 지연된 트레이닝 샘플 출력들을 사용하는 노드-중계 분류기(600a) 및 링크-중계 분류기(600b)의 결과로서 향후 네트워크 혼잡을 반영한다.
예를 들어, 입력 메트릭들이 "시간(n)"에서 수집되는 경우, 분류기들에 제출된 실제 관찰된 출력 메트릭들은 나중에(예를 들어, "시간(n + 5)" 또는 5 초 후에) 수집된 것들이다. 지연된 출력 메트릭으로 분류기를 트레이닝시킴으로써, 후속 노드-중계 용량(632a) 및 링크-중계 용량(632b) 예측들은 향후 네트워크 혼잡이 이러한 예측들에 미치는 영향을 반영한다. 다른 실시예에서, 이러한 예측들에 대한 현재 네트워크 혼잡의 영향을 반영한 출력 메트릭들은 지연되지 않는다 (즉, 0 초 동안 지연된다). 시간이 지남에 따라 네트워크 혼잡의 상당한 변화들의 빈도를 적절히 반영하기 위해 사용된 지연의 양은 어플리케이션 별에 따라 다르며, 잘 알려져 있고 독점적인 다양한 통계 기술들을 통해 결정된다는 것이 당업자에게 명백할 것이다.
c. 트래픽 디맨드 예측
일 실시예에서, 목적지 노드의 디맨드는 어플리케이션에 의해 정의된다 (예를 들어, 각각의 하위 노드로부터의 5mbps 디맨드). 오버레이 네트워크 상의 이러한 목적지 노드의 존재는 이러한 목적지 노드가 오버레이 네트워크에 조인하거나 이탈할 때를 모니터링하는적응형 토폴로지 서버(300c)에 알려져 있다.
더욱이, 각기 다른 목적지 노드들은 (측정된 것이든 예측된 것이든) 각기 다른 트래픽 디맨드들을 가질 수 있다. 예를 들어, 방송 비디오 시나리오에서, 특정 시청 노드들은 HD 비디오를 스트리밍 할 수 있는 반면, 다른 시청 노드들은 SD 비디오로 제한될 수 있다. 이러한 상이한 디맨드에 대한 지식은 (정의된 성능 기준에 따라) 이러한 상이한 디맨드를 충족시키기 위해 여분 용량을 재분배하는 오버레이 네트워크 토폴로지를 결정하는 데 있어서 토폴로지 선택기(458b)의 작업을 용이하게 한다.
다른 실시예들에서, 예측 엔진(455b)은 뷰어(예를 들어, 바이너리 "뷰어 지표" 의존 변수로 표현됨)로서 특정 목적지 노드의 존재를 예측하는 데 사용된다. 다시 말해, 예측 엔진(455b)은 예를 들어, 다양한 메트릭들에 의해 반영된 바와 같이, 이러한 뷰잉 노드들의 이전 행동(behavior)에 기초하여 - 어느 뷰잉 노드들이 오버레이 네트워크 토폴로지의 일부가 될지를 예측하는데 사용된다.
게다가, 예측 엔진(455b)은 또한 이러한 뷰잉 노드의 "세션 지속시간"을 (이전 행동으로부터) 예측하기 위해 사용된다. 예를 들어, 일 실시예에서, 세션 지속시간이 더 긴 뷰잉 노드는 (오버레이 네트워크 토폴로지의 높은 레벨에서의 변화가 더 큰 영향을 미치고 상대적으로 더 많은 링크 변화들을 생성하므로) 토폴로지의 안정성을 높이기 위해 더 높은 레벨의 오버레이 네트워크 토폴로지에 배치된다.
시간이 지남에 따라 목적지 노드는 네트워크에 조인하고 네트워크를 이탈한다. 예측 엔진(455b)을 사용하여 이러한 결정을 관찰된 메트릭들(목적지 노드가 콘텐트 아이템들을 소비하기 위해 네트워크에 참여하는 시간을 포함함)과 상관시킴으로써, 특정 노드가 임의의 정해진 시간에 네트워크의 일부가 될지 여부를 예측(뿐만 아니라 임의의 정해진 시간에 오버레이 네트워크의 총 노드들의 수를 예측하는 누적 정보를 제공)할 수 있다.
네트워크로부터 자주 단절되는 노드들과 네트워크에 남아있을 가능성이 있는 노드들을 구별하는 것은 상당한 이점을 제공한다. 예를 들어, (뷰어의 의도로 인한 것이든 또는 장치 문제들로 인한 것이든) 네트워크로부터 자주 단정되는 노드들은 특히 그들이 상대적으로 높은 레벨의 오버레이 네트워크 토폴로지로 구성된 경우 심각한 중단(interruptions)을 유발한다. 이러한 노드들이 네트워크에서 사라질 때마다, 오버레이 네트워크 토폴로지는 최소한 부분적으로 재구성되어야 하며, 이로써 이러한 노드들의 다운 스트림에 "리플" 효과가 발생한다. 이러한 노드들을 오버레이 네트워크 토폴로지의 하위 레벨에 배치하면 이러한 효과가 감소된다. 반대로, 오버레이 네트워크 토폴로지의 더 높은 레벨에 더 높은 세션 지속시간을 가진 노드들을 배치하면 재구성 빈도와 그로 인한 중단을 최소화함으로써 안정성이 더 향상된다.
이러한 낮은 지속시간 또는 높은 지속시간 노드들이 네트워크에 참여할 가능성이 있는지(예를 들어, 뷰어 지표 예측들을 통해) 미리 알면, 사전 플래닝을 가능하게 하여 오버레이 네트워크 토폴로지의 재구성을 구현하는 데 필요한 시간을 최소화 할 수 있다. 또한, 일 실시예에서, 누적 뷰어의 수는 뷰어 지표 및 세션 지속기간 예측들에 기초하여 결정되며, 이는 토폴로지 선택기(458b)가 예측된 누적 뷰어의 수에 최적화된 오버레이 네트워크 토폴로지를 구성할 수 있게 한다. 누적 뷰어 수에 기초한 오버레이 네트워크 토폴로지(휴리스틱 알고리즘들의 사용을 포함함)의 다양한 최적화뿐만 아니라 이들의 개별 또는 평균 세션 지속기간은 당업자에게 명백할 것이다.
2. 토폴로지 선택기
하위 레벨에서, 토폴로지 선택기(458b)는 정의된 어플리케이션 별 성능 기준을 만족시키는 오버레이 네트워크 토폴로지를 결정한다. 토폴로지 선택기(458b)는 이 작업을 용이하게 하기 위해 특정 핵심 리소스들을 사용한다. 일 실시예에서, 이는 지정된 예상 노드들 및 링크들에 대한 중계 용량 예측들을 생성하기 위해 예측 엔진(455b)을 사용하고, 어플리케이션에 의해 정의된 공지된 디맨드와 네트워크에 조인 및 이탈하는 노드들의 모니터링에 의존한다. 다른 실시예들에서, 예측 엔진(455b)은 성능 기준을 충족하는 오버레이 네트워크의 토폴로지 선택기(458b)에 의한 결정을 용이하게 하기 위해 뷰어 지표 및 세션 지속기간 예측들을 생성한다.
일 실시예에서, 토폴로지 선택기(458b)는 이러한 여분 용량을 재분배하기 위해 트래픽을 이동시키기 위한 목적으로 (예를 들어, 이러한 상위 노드들의 하위 노드들로서 추가 노드들을 연결함으로써) 기존 및 예상 상위 노드들의 여분 용량(있는 경우)을 결정한다. 이러한 여분 용량을 계산하기 위해, 토폴로지 선택기(458b)는 공지되거나 예측된 중계 용량 정보와 함께 공지되거나 예측된 트래픽 디맨드를 이용한다.
일 실시예에서, 토폴로지 선택기(458b)는 상대적 중계 용량에 기초하여 노드들을 분류한다. 로컬 노드-중계 용량 (632a) 및 링크-중계 용량 (632b) 예측들은 로컬 노드 및 링크 레벨에서만 이러한 중계 용량 정보를 제공한다.
예를 들어, A→B 및 A→C 링크에 대한 예측된 링크-중계 용량(632b) 값들은 노드(A)가 노드(B) 또는 노드(C)의 적합한 상위임을 나타내기에 충분하지만, 노드(A)가 노드(B)와 노드(C) 둘 다에 동시에 콘텐트를 중계하기 위한 충분한 여분 중계 용량을 가지고 있는지를 결정하기에는 불충분하다 . 토폴로지 선택기(458b)는 예측 엔진(455b)에 노드(A)에 대한 노드-중계 용량(632a) 값을 요청함으로써 이러한 정보를 얻을 수 있다.
그러나, 토폴로지 선택기(458b)는 또한 예상 오버레이 네트워크 토폴로지의 노드들 및 링크들 사이의 상호 의존성을 고려한다. 예를 들어, 노드(A)로의 링크가 노드(A)로부터의 디맨드(예를 들어, 5mbps)를 충족시키기에 충분하지 않으면 충분한 중계 용량 예측들에도 불구하고, 노드(A)는 노드(B) 또는 노드(C)의 디맨드들을 충족시킬 수 없다. 따라서, 토폴로지 선택기(458b)는 예측 엔진(455b)에 의해 생성된 로컬 노드-중계 용량(632a) 및 링크-중계 용량 (632b) 예측들을 사용하지만, 또한 임의의 예상 오버레이 네트워크 토폴로지가 정의된 성능 기준을 충족시키는지에 대한 글로벌 평가를 수행한다.
위에 언급된 바와 같이, 노드(A)에 현재 하위 노드들이 없는 경우에도, 콘텐트를 하나 이상의 하위 노드들로 중계하는 여분 용량을 가질 수 있다. 예를 들어, 노드(A)(또는 유사한 속성들을 갖는 "프록시(proxy)" 노드)가 이력상 복수의 하위 노드들로 동시에 콘텐트를 중계한 경우, 예측 엔진(455b)은 노드(A)의 하위 노드들(있는 경우)의 현재 총 디맨드를 초과하는 노드-중계 용량을 생성할 수 있다.
(첫 번째 하위 노드를 추가하든 추가 하위 노드들을 추가하든) 예상 상위 노드는 (예를 들어, 다른 하위 노드들에 대한 링크들에 따른 혼잡으로 인해) 특정 하위 노드들에 대해서만 여분 용량을 가질 수 있다. 토폴로지 선택기(458b)는 이와 관련하여 적합한 하위 노드들을 식별하기 위해 링크-중계 용량(632b) 예측들을 이용한다.
아래에 더 상세히 논의되는 바와 같이, 토폴로지 선택기(458b)는 (전역 토폴로지 레벨, 뿐만 아니라 로컬 노드 및 링크 레벨에서의) 네트워크 혼잡의 영향 외에, 임의의 주어진 오버레이 네트워크 토폴로지 및 그 컴포넌트 노드들 및 링크들의 예상 성능에 대한 오버레이 네트워크 토폴로지의 맥락 내에서 업스트림 노드들 및 링크들의 상호 의존성을 고려한다.
본질적으로, 토폴로지 선택기(458b)는 새로운 또는 더 나은 상위를 필요로 하는 노드에 여분 용량을 재분배하는 정도에 기초하여 예상 오버레이 네트워크 토폴로지들을 평가 - 즉, 성능 기준을 충족시키기 위한 네트워크 트래픽을 이동시킴으로써 - 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 식별하는 작업을 수행한다. 토폴로지 선택기(458b)가 정의된 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 식별하기 위해 이 기능을 구현하는 방식은 (글로벌 토폴로지-레벨 분석을 수행하는) 도 7a-7e 및 (로컬 또는 부분 토폴로지-레벨 분석을 수행하는) 도 7f를 참조하여 아래에 더 상세히 설명된다.
일 실시예에서, 토폴로지 선택기(458b)는 성능 기준을 충족하는 최적의 오버레이 네트워크 토폴로지를 생성하기 위해 비선형 및 다차원 최적화 기술을 사용한다. 다른 실시예들에서(아래에 논의됨), 다양한 휴리스틱 및 기타 변환들이 사용된다. 이러한 변형들의 임의의 서브셋이 본 발명의 범위 내에서 다양한 상이한 시퀀스들로 사용될 수 있음은 당업자에게 명백할 것이다.
토폴로지 선택기(458b)는 또한 (일 실시예에서) 예상 오버레이 네트워크 토폴로지의 평가를 용이하게 하기 위해 예측 엔진(455b)에 디맨드 예측들(뷰어 지표 및 세션 지속시간 예측들을 포함함)을 요청한다. 예를 들어, 토폴로지 선택기(458b)는 예상 상위 노드로서 선택할 뿐만 아니라 오버레이 네트워크 토폴로지의 비교적 상위 레벨에 배치함으로써 특정 "슈퍼 노드들(supernodes)"에 우선 순위를 부여한다. 이러한 슈퍼 노드들은 사용자가 프리미엄 서비스를 지불한 "구독자" 노드들뿐만 아니라, 비교적 높은 노드-중계 용량및 비교적 긴 예측 세션 지속기간을 갖는 노드들(예컨대, 상시 셋톱 박스)을 포함한다.
a. 글로벌 토폴로지-레벨 분석
도 7a로 돌아가서, 그래프(700a)는 토폴로지 선택기(458b)에 의해 초기 구성을 따르는 오버레이 네트워크 토폴로지의 상태의 일 실시예를 예시한다. POI 또는 소스 노드(710a)로 시작하여, 시간이 지남에 따른 토폴로지 선택기(458b)는 (예를 들어, “조인(join)” 요청에 응답하여) 오버레이 네트워크에 노드들을 추가하고 (예를 들어, 그들이 네트워크를 떠나거나 그렇지 않으면 응답하지 않을 때) 오버레이 네트워크로부터 노드들을 제거하며, 이는 (아래에 더 상세히 논의된 성능 문제를 해결하고 성능 기준을 충족하는 오버레이 네트워크 토폴로지의 재구성 외에도) 기존 링크들 추가하고, 제거하고, 그렇지 않으면 수정함으로써 어느 정도의 오버레이 네트워크 토폴로지의 재구성을 필요로 한다.
그래프(700a)는 소수의 노드들(A-V)이 추가된 후의 초기 구성을 예시한다. 위에 언급된 바와 같이, 피어-기반 오버레이 네트워크 토폴로지의 사용은 토폴로지 선택기(458b)가 피어 노드들 자체의 여분 용량을 활용하도록 하고, 이러한 여분 용량을 다른 용량 제한 링크들에 재분배함으로써 트래픽을 이동하도록 한다.
초기에, 토폴로지 선택기(458b)는 네트워크에 조인하는 초기 노드들을 상호 연결하는 방법을 결정하기 위해 이용 가능한 성능 데이터가 거의 없거나 전혀 없다. 일 실시예에서, 토폴로지 선택기(458b)는 초기 오버레이 네트워크 토폴로지들을 수립하기 위해 로컬 중계 용량 예측들에 의존한다. 예를 들어, 제1 노드(A)는 소스 노드(710a)에 연결된다. 그러나, 제2 노드(B)는 또한 소스 노드(710a)에 연결될 수 있거나, 노드(A)의 하위 노드로 연결될 수 있다.
이러한 초기 결정은 (노드의 업링크 속도와 같은) 예측 엔진(455b)에 공급된 초기 노드들의 공지된 속성들뿐만 아니라, (위에 논의된 바와 같이) "프록시" 노드들 및 링크들의 유사한 속성들에 기초하기 때문에, 상대적으로 적은 성능 데이터 정보에도 불구하고 임의적인 것은 아니다. 시간이 지남에 따라, 토폴로지 선택기(458b)는 그래프(700a)에 예시된 바와 같이, 하나 이상의 하위 노드들로 콘텐트를 중계하기 위한 여분 용량을 갖는 노드들을 식별하기 위해 (예측 엔진(455b)으로부터의 중계 용량 예측들에 기초하여) 점차 더 정확한 중계 용량 정보를 획득한다.
예시된 카테고리(720a)는 낮은(low), 중간(medium) 및 높은(high) 중계 용량들을 포함하지만, 이러한 세 카테고리들은 그래프(700a)의 설명을 단순화하기 위해 제공된다. 다른 실시예들에서는, 더 적거나 많은 카테고리들이 사용된다. 또 다른 실시예에서, 토폴로지 선택기(458b)는 오버레이 네트워크에서의 모든 노드의 노드-중계 용량(632a)을 사용한다.
그래프(700a)는 - "최고(highest)" 레벨(730a)에서의(소스 노드(710a)에 가장 가까운) 노드들(A-E)에 이어서, 다음 레벨(740a)에서의 노드들(F-N), 제3 레벨(750a)에서의 노드들(O-U) 그리고 마지막으로 제4 및 "최저(lowest)" 레벨(760a)에서의 노드(V)와 - 오버레이 네트워크에 조인된 초기 노드 세트로 구성된 4-레벨 오버레이 토폴로지를 예시한다.
개선사항들(765a)은 이 초기 구성 프로세스의 핵심 결과들을 요약한다. 예를 들어, 상위 노드(E)는 "낮은(low)" 중계 용량을 가지지만, 예측 엔진(455b)로부터의 노드-중계 용량(632a) 값은, 이 시나리오에서, 노드(N)으로부터의 트래픽 디맨드를 충족시키기에 충분하다.
게다가, 노드(N)("중간" 중계 용량을 가짐)는 또한 하위 노드들(T 및 U)로부터의 트래픽 디맨드를 동시에 충족시키고 있다. 마찬가지로, 노드(B)("높은" 중계 용량을 가짐)는 하위 노드들(G, H, I, J 및 K)로부터의 트래픽 디맨드를 동시에 충족시키고 있다. 아래에 더 상세히 논의된 바와 같이, 토폴로지 선택기(458b)는 (예컨대, 로컬 노드-중계 용량(632a) 예측들을 분석함으로써) 상위 노드들(B 및 N)이 복수의 하위 노드들로 동시에 콘텐트를 중계하기에 충분한 여분의 중계 용량을 갖는지 뿐만 아니라, 이러한 하위 노드들의 수와 특정 적합한 하위 노드들의 식별을 결정한다.예를 들어, 위에 언급된 바와 같이, 노드(N)과 같은 상위 노드는 2개의 (노드들(T 및 U)와 같은) 하위 노드들로 동시에 콘텐트를 중계하기에 충분한 여분의 용량을 가질 수 있지만 - (예컨대, 더 낮거나 불충분한 링크-중계 용량(632b) 예측들에 의해 입증되는 바와 같이, 이러한 노드들에 대한 링크들에 따른 혼잡으로 인해) 두 개의 상이한 하위 노드들로 콘텐트를 중계할 수는 없다.
그래프(700a)에 예시된 이 초기 오버레이 네트워크 토폴로지를 생성하는데 있어서 토폴로지 선택기(458b)에 의해 지금까지 수행된 작업에도 불구하고, 남아 있는 문제들(775a)에 예시된 바와 같이, 다양한 문제들이 남아있다. 일 실시예에서, 토폴로지 선택기(458b)는 현재 오버레이 네트워크 토폴로지를 재구성할지를 결정하기 전에 성능 기준이 이 프로세스의 각 단계에서 충족되는지 여부(예컨대, 오버레이 네트워크 토폴로지를 개선하거나 최적화하기 위해, 오버레이 네트워크 토폴로지가 현재 성능 기준을 충족하는지 충족하지 않는지)를 결정한다는 점에 유의해야 한다.
토폴로지 선택기(458b)가 이 시나리오에서 남아 있는 문제들(775a)을 해결한다고 가정하면, 노드(G)는 네 개의 하위 노드들(O, P, Q 및 R)로부터의 누적 트래픽 디맨드들을 현재 충족시키지 않는 것으로 판단한다. 예를 들어, 이들 4개의 링크들에 대한 링크-중계 용량(632b) 예측들 중 하나 이상은 해당 특정 링크 또는 링크들에 대한 트래픽 디맨드가 충족되지 않음을 나타낼 수 있다. P-V 링크에 대한 유사한 예측들도 해당 링크에 대한 트래픽 디맨드가 충족되지 않음을 나타낸다. 이러한 문제들에 대한 토폴로지 선택기(458b)의 응답은 도 7b를 참조하여 아래에 논의된다.
다른 많은 일반적인 문제들은 상대적으로 낮은 중계 용량 노드들(예컨대, 노드들(A, C 및 E))이 오버레이 네트워크 토폴로지의 더 높은 레벨들에 존재한다는 사실을 포함한다. 상대적으로 낮은 중계 용량 노드들에 대한 업스트림 의존성은 오버레이 네트워크 토폴로지의 레벨들을 "리플 다운(ripple down)"하는 성능 기준을 충족시키기 못할 수 있다.
게다가, 이 시나리오에서, 많은 노드들로부터의 트래픽 디맨드가 그들의 상위 노드들에 의해 충족되는 반면, 이러한 상위 노드들의 여분 용량은 현재 오버레이 네트워크 토폴로지의 용량 제한 링크들에 걸쳐 분배되지 않는다. 그 결과, 용량 제한 문제들이 향후 발생할 가능성이 많다. 이상적인 시나리오에서는, 트래픽은 용량 제한 링크들의 디맨드를 충족하기 위해 여분 용량을 재분배하도록 이동되면서, 동시에 향후 유사한 문제를 해결하기 위해 이용할 수 있는 추가 여분 용량이 남아 있다.
이러한 보다 일반적인 문제들에 대한 토폴로지 선택기(458b)의 응답은 도 7c 및 7d를 참조하여 아래에 논의된다. 도 7b-7e에 설명된 솔루션들은, 일 실시예에서, 단일 재구성 프로세스의 일부로 병렬로 수행된다는 점에 유의해야 한다. 다른 실시예들에서, 이러한 프로세스들의 서브셋은 특정 순서로 수행되며, 토폴로지 선택기(458b)가 성능 기준을 충족하는 대체 오버레이 네트워크 토폴로지를 식별하는 어느 시점에서든 종료될 수 있다. 그럼에도 불구하고, 각각의 이러한 프로세스들은, 최적의 오버레이 네트워크 토폴로지를 식별하는 프로세스의 일부로서든 또는 단지 성능 기준을 충족하는 프로세서의 일부로서든, 토폴로지 선택기(458b)가 현재 오버레이 네트워크 토폴로지를 개선하는 방법을 설명하기 위해 아래에 개별적으로 설명된다.
도 7b로 돌아가면, 그래프(700b)는 토폴로지 선택기(458b)가 특정 "저성능" 변환을 수행한 후 (소스 노드(710a)로부터 공급된) 도 7a에 예시된 오버레이 네트워크 토폴로지의 수정된 상태를 예시한다. 위에 언급된 바와 같이, 토폴로지 선택기(458b)는 (예를 들어, 성능 기준이 이미 충족된 경우) 이러한 변환들을 수행하지 않기로 선택할 수 있거나, 도 7a-7e에 예시된 임의의 변환들(또는 도 7f에 예시된 바가 같이 로컬 부분 토폴로지 분석)을 임의의 순서로 수행하기로 선택할 수 있다. 이러한 설계 및 엔지니터링 트레이드오프는 본 발명의 사상을 벗어나지 않고 구현될 수 있음이 당업자에게 명백할 것이다.
개선사항들(765b)에 도시된 바와 같이, 토폴로지 선택기(458b)는 다른 상위(노드(I))에 노드(V)를 할당하고 이에 따라 l→V 링크를 생성함으로써 P→V 링크의 저성능을 해결한다. 일 실시예에서, 노드(I)는 상위 노드(I)에 대한 노드-중게 용량(632a) 예측 및 l→V 링크에 대한 링크-중계 용량(632b) 예측에 부분적으로 기초하여 선택된다. 예를 들어, 노드(I) 및 노드(M)는 둘 다 하위 노드들이 없는 "중간" 용량 노드(범례(720b) 마다)이므로 - 따라서 잠재적으로 더 큰 여분 용량을 갖는다. 이 시나리오에서, I→V 링크에 대한 링크-중계 용량(632b) 예측은 M→V 링크의 예측을 초과했다.
다른 실시예들에서, 상위 노드(I)는 예컨대, 홉 수를 줄임으로써) 레이턴시를 감소시키기 위한 노력으로 그 레벨(740b)(이전 상위 노드(p)의 레벨(750b)보다 높은 한 레벨)에 기반하여 선택된다. 이 실시예에서, 이러한 변화의 효과는 더 많은 오버레이 네트워크 토폴로지를 "리플 다운"시켜 이에 따라 더 많은(잠재적으로 파괴적인) 다운스트림에 영향을 줄 수 있을 것이므로, 훨씬 더 높은 레벨(예컨대, 730b)로부터 상위를 선택하는 것은 너무 파괴적인 것으로 간주된다. 이 레벨의 파괴를 최소화하기 위한 결정은 토폴로지 선택기(458b)의 기능의 구현으로 이루어지는 설계 및 엔지니어링 트레이트 오프의 한 예일뿐이다.
마찬가지로, 토폴로지 선택기(458b)는 "과부하된(overloaded)" 상위 노드(G)로부터 노드(R)을 단절시키고, J→R 링크를 형성하기 위해 새로운 상위 노드(J)를 선택한다. 이 시나리오에서, 하위 노드(R)는 (상위 노드(G)의 다른 하위 노드들(O, P 및 Q)의 것과 비교하여) 상대적으로 더 낮은 링크-중계 용량(632b) 예측들에 기초하여 단절되었다.). 게다가, 토폴로지 선택기(458b)는상위 노드(J)가 (다른 요인들 중에서) 상위 노드(J)의 노드-중계 용량(632a) 및 J→R 및 J→S 링크들의 링크-중계 용량(632b)에 기초하여 노드(R) 및 노드(S) 둘 다로 동시에 콘텐트를 중계하기에 충분한 여분 용량을 가졌다고 판단했다.
노드(M)(또는 "중간" 중계 용량을 가짐)은 현재 하위 노드들이 없지만 (따라서 잠재적으로 여분 용량을 가짐), 이 시나리오에서, (노드(M)에 대한) 노드-중계 용량(632a) 예측 및 (M→R 링크에 대한) 링크-중계 용량(632b) 예측은 (노드(J)가 이미 기존 하위 노드(s)를 가지고 있었다는 사실에도 불구하고)잠재적인 상위 노드(J)를 "아웃스코어(outscore)"하기에 충분히 높지 않았다. 여기에서도, (단절된 노드(R)에 충분하거나 최적의 상위 노드를 선택하기 위해 만들어진) 다양한 설계 및 엔지니어링 트레이드오프는 본 발명의 사상을 벗어나지 않고 당업자에게 명백할 것이다.
"저성능(low performance)" 링크들에 대한 이러한 개선사항들(765b)에도 불구하고, 남아 있는 문제들(775b)이 아직 해결되지 않았다. 일 실시예에서, 성능 기준이 충족되면, 토폴로지 선택기(458b)는 현재 오버레이 네트워크 토폴로지에 대한 가능한 대체물(potential replacement)로서 그래프(700b)에 예시된 재구성된 오버레이 네트워크 토폴로지를 선택한다. 다른 실시예들에서, 토폴로지 선택기(458b)는 오버레이 네트워크 토폴로지를 더 개선(또는 일 실시예에서는 최적화)하도록 추구한다.
예를 들어, 비교적 낮은 중계 용량들을 갖는 (노드들(A, C 및 E)과 같은) 노드들이 오버레이 네트워크 토폴로지의 높은 레벨(730b)에 여전히 존재한다. 위에 언급된 바와 같이, 이러한 노드들에 의존하는 다운스트림 효과들은 오버레이 네트워크 토폴로지의 더 낮은 레벨에서 트래픽 디맨드를 충족시키지 못하는 다양한 실패를 초래할 수 있으며, 이는 결국 성능 기준을 충족시키지 못하는 실패로 이어진다. 게다가, 이 시나리오에서는, 추가적인 용량-제한 링크들은 노드(M) 등과 같은 노드들로부터 여분의 용량을 재분배함으로써 해결되어야 하는 것으로 남아 있다. 토폴로지 선택기(458b)가 이러한 남아 있는 문제들(775b)를 해결하는 방식은 도 7c를 참조하여 아래에 논의된다.
도 7c의 그래프(700c)는 토폴로지 선택기(458b)가 특정 "레벨 이동(level shifting)" 변환을 수행한 이후 도 7b에 예시된 오버레이 네트워크 토폴로지의 수정된 상태를 예시한다. 위에 언급된 바와 같이, 도 7a-7e를 참조하여 예시된 (휴리스틱 기술들 외에 또는 대신에 비선형 및 다차원 최적화를 사용할지에 대한 결정을 포함한) 변환의 순서 및 범위는 본 발명의 범위 내의 설계 및 엔지니어링 트레이트오프의 결과이다.
개선사항들(765c)에 도시된 바와 같이, 토폴로지 선택기(458b)는 노드들(A, C 및 E)을 레벨(730c)에서 레벨(740c)로 아래로 이동시키는 반면, 노드들(G, J 및 N)을 레벨(740c)에서 레벨(730c)로 위로 올림으로써 오버레이 네트워크 토폴로지의 상대적으로 높은 레벨에 존재하는 상대적으로 낮은 중계 용량의 노드들(범례(720c) 마다)에 대한 문제를 해결한다. 노드(B)(고 중계 요량을 가짐)는 여전히 5 개의 하위 노드들로 콘텐트를 중계하고 있다. 그러나, 노드(B)는 노드(G 및 J)가 레벨(730c)로 상승됨에 따라 이제 (노드들(H, I 및 K) 외에) 노드들(A 및 C)로 콘텐트를 중계하고 있다. 이러한 "레벨 이동" 변환의 결과, 오버레이 네트워크 토폴로지의 더 높은 레벨들에서 용량 제한 링크들이 더 적게 존재할 가능성이 있다.
게다가, (G, J 및 N과 같은) 상대적으로 높은 중계 용량 노드들은 이제 더 높은 레벨에서 하위 노드들로 콘텐트를 중계하며, 궁극적으로 레이턴시(latency)를 낮춘다. 예를 들어, (현재 레벨(730c)에서의) 노드(G)는 여전히 콘텐트를 (현재 레벨(740c)에서의) 하위 노드들(O, P 및 Q)로 중계하는 동안, 이러한 노드들은 소스 노드(710 c) 근처의 네트워크에 더 가까이 있어서, 오버레이 네트워크 토폴로지의 최하위 레벨(750c)에 더 적은 노드들이 남게 된다 (이에 따라 전체 홉 수도 감소된다). 위에 언급된 바와 같이, 소스 노드(710c)로부터의 홉 수는 (결정적인 것은 아니지만) 전체 성능에 있어서의 관련 요인이다.
마지막으로, 노드(K)는 이제 (그 이전 낮은 중계 용량이 아닌) 중간 중계 용량을 갖는 것으로 분류된다는 점에 유의해야 한다. 이는 노드들의 중계 용량이 그 예상 하위 노드들에 대해 변할 뿐만 아니라, 성능 메트릭들의 변화들에 기초하여 시간이 지남에 따라 변한다는 것을 보여준다. 위에 언급된 바와 같이, 이러한 변경은 다양한 요인들의 결과일 수 있다. 예를 들어, 노드(K)의 업링크 속도는 일정 시간 기간에 걸쳐 증가될 수 있다. 또는 노드(K)로부터 그 기존 하위 노드들로의 링크들은 해당 시간 기간에 걸쳐 덜 혼잡할 수 있다. 이러한 변화들에 대한 이유에 상관없이, 토폴로지 선택기(458b)는 도 7d를 참조하여 아래에 논의된 바와 같이, 이러한 변경들에 적응된다. 7D.
일 실시예에서, 토폴로지 선택기(458b)는 오버레이 네트워크 토폴로지의 상대적으로 더 높거나 더 낮은 레벨들에서의 노드들의 배치를 용이하게 하기 위해 세션 지속시간 예측들을 사용한다 - 즉, 세션 지속시간과 용량을 트레이드 오프시킨다. 예를 들어, 오버레이 네트워크 토폴로지의 높은 레벨에서 낮은 예측된 세션 지속시간을 갖는 고용량 노드는 해당 노드가 네트워크를 떠날 때마다 오버레이 네트워크 토폴로지의 추가 시간 소비 재구성을 포함하여 빈번하고 심각한 중단이 발생할 수 있으며, 이는 결국 시간이 지남에 따라 성능 기준을 지속적으로 충족시키기 위한 적응형 토폴로지 서버(300c)의 능력에 부정적인 영향을 미칠 것이다.
이러한 “레벨 이동” 변환으로 인한 개선사항들(756c)에도 불구하고, 아직 처리되어야 하는 남아 있는 문제들(775c)이 여전히 존재한다. 여기서도, 성능 기준이 충족되면, 토폴로지 선택기(458b)는 (일 실시예에서) 현재 오버레이 네트워크 토폴로지에 대한 가능한 대체물로서 그래프(700c)에 예시된 재구성된 오버레이 네트워크 토폴로지를 선택한다. 7D. 다른 실시예들에서, 토폴로지 선택기(458b)는, 도 7d를 참조하여 아래에 예시된 바와 같이, 오버레이 네트워크 토폴로지를 더 개선(또는 일 실시예에서는 최적화)하도록 추구한다.
남아 있는 문제들(775c)은 오버레이 네트워크 토폴로지의 다른 곳에서 여분의 용량을 재분배함으로써 아직 해결하지 못한 용량 제한 링크들의 존재를 포함한다. 예를 들어, 이 시나리오에서, 링크들(B→A, A→F, G→Q 및 C→L)은 예측 엔진(455b)로부터 획득된 그들 각각의 링크-중계 용량(632b) 예측들에 의해 나타낸 바와 같이 여전히 용량 제한된다. 토폴로지 선택기(458b)가 이러한 남아 있는 문제들(775c)을 해결하는 방식이 도 7d를 참조하여 아래에 논의된다.
도 7d의 그래프(700d)는 토폴로지 선택기(458b)가 “여분의 용량의 재분배(redistribution of excess capacity)” 변환을 수행한 이후 도 7c에 예시된 오버레이 네트워크 토폴로지의 수정된 상태를 예시한다. 위에 언급된 바와 같이, 도 7a-7e를 참조하여 예시된 (휴리스틱 기술들 외에 또는 대신에 비선형 및 다차원 최적화를 사용할지에 대한 결정을 포함한) 변환의 순서 및 범위는 본 발명의 범위 내의 설계 및 엔지니어링 트레이트오프의 결과이다.
개선사항들(765d)에 도시된 바와 같이, 토폴로지 선택기(458b)는 이러한 링크들의 하위 노드들을 여분의 용량을 갖는(그리고 또한, 일 실시예에서, 충분히 높은 세션 지속시간 예측들을 갖는) 상위 노드들로 재할당하기 위해 다양한 링크 변경들을 줌으로써 용량 제한 링크들(→A, A→F, G→Q 및 C→L)의 문제들을 해결한다.
예를 들어, 토폴로지 선택기(458b)는 노드(B)로부터 노드(A)를 단절시키고 노드(G)로부터 노드(Q)를 단절시킴으로써 최상위 레벨(730d)(가장 가까운 소스 노드(710d))에서 (향후를 위해) 여분의 용량을 확보했다. 또한, 용량 제한(A→F) 링크로부터 노드(F)가 단절되고, 용량 제한(C→L) 링크로부터 노드(L)가 단절된다.
이전에 노드(N)를 (그 여분 용량의 평가에 기초하여) 레벨(730d)로 올렸을 때, 토폴로지 선택기(458b)는 단절된 노드(F)를 (하위 노드(E)를 조인하는) 노드(N)에 대한 두 번째 하위 노드로 할당했다. 노드(N)는 복수의 하위 노드들(T 및 U)로 콘텐트를 중계하기에 충분한 용량을 입증했다는 점에 유의한다. 그러나, 위에 언급된 바와 같이, 그 사실만으로는 N→F 링크를 따라 여분 용량을 입증하기에 충분하지 않다. 그러나, 이 시나리오에서, (노드(N)에 대한) 노드-중계 용량(632a) 예측 및 (N→F 링크에 대한) 링크-중계 용량(632b) 예측은 이러한 여분 용량의 충분한 증거를 제공했다.
게다가, 토폴로지(458b)는 단절된 노드(Q)를, 하위 노드(V)를 조인하는, (중 중계 용량을 가지는) 상위 노드(I)에 대한 두 번째 하위 노드로 할당했다. 또한 단절된 노드들(A 및 L)가 (최근 중 중계 용량으로 상승된) 상위 노드(K)로 할당된다 이러한 상위 할당들(레벨(740d)에서 레벨(750d)로)은 이전에 용량 제한된 링크들의 다양한 하위 노드들로 여분 용량을 효과적으로 재분배한다.
그 결과, 중요한 남아 있는 문제들(775c)은 존재하지 않으며, 토폴로지 선택기(458b)는 (적어도 현재까지는) 성능 기준이 충족됨을 확인했다. 오버레이 네트워크 토폴로지의 (소스 노드(710d)로부터의 홉(hop)이 더 적은) 더 높은 레벨에서 여분 용량을 확보함으로써, 토폴로지 선택기(458b)는 상대적으로 높은 레벨들에서 향후 용량 제한 문제들을 해결하기 위한 옵션들을 제공한다.
도 7e로 돌아가면, 흐름도(700e)는 토폴로지 선택기(458b)에 의해 수행된 다양한 초기 구성 및 재구성 변환의 일 실시예를 예시한다. 위에 언급된 바와 같이, 다른 실시예들에서, 토폴로지 선택기(458b)는 최적의 오버레이 네트워크 토폴로지를 식별하거나 성능 기준이 충족될 때까지 상이한 순서로 이러한 변환들의 서브셋을 수행한다. 이 기능은 본 발명의 사상을 벗어나지 않으면서 성능 기준을 충족시키기 위해 여러가지 다른 방법들로 조합될 수 있다는 것이 당업자에게 명백할 것이다.
단계(710e)로 시작하여, 토폴로지 선택기(458b)는 새로운 노드 및 오펀(orphaned) 노드들을 식별한다. 위에 언급된 바와 같이, 일 실시예에서, 새로운 노드들은 적응형 토폴로지 서버(300c)에 대한 요청들을 초기화하는 반면, 오펀 노드들은 그들의 상위들이 분명하게 네트워크를 떠나거나 미리 정의된 임계 시간 기간 동안 응답에 실패할 때 오버레이 네트워크 토폴로지 매니저(350c)에 의해 식별된다. 다른 실시예들에서, 예측 엔진(455b)은 토폴로지 선택기(458b)에 의해 이 결정을 용이하게 하는 뷰어 지표 및 세션 지속시간 예측들을 생성한다. 토폴로지 선택기(458b)는, 성능-기반 재구성과는 완전히 별도로, 이러한 노드들이 새로운 상위들을 필요로 하기 때문에 새로운 노드 및 오펀 노드를 식별한다.
이러한 신규 및 오펀 노드들 외에, 토폴로지 선택기(458b)는 또한, 일 실시예에서, “저성능” 노드들(즉, 성능 제한 링크들의 하위 노드들)을 식별하고, (도 7b를 참조하여 위에 논의된 바와 같이) 그들의 현재 상위 노드들로부터 그들을 단절시킨다. 이 실시예에서, 이러한 신규, 오펀 및 단절된 노드들은 새로운 상위들이 할당되기 위한 우선순위가 된다.
단계(720e)에서, 토폴로지 선택기(458b)는 (도 7a를 참조하여 위에 논의된 바와 같이) 현재 및 예상 상위 노드들을 결정하고 이에 따라 이러한 노드들을 순위를 정한다. 위에 언급된 바와 같이, 이러한 노드들은 일 실시예에서는 카테고리로 순위가 정해지는 반면, 다른 실시예에서는 이러한 노드들이 그들 개별 노드-중계 용량들(632a)에 따라 순위가 정해진다.
단계(730e)에서, 토폴로지 선택기(458b)는 (도 7b를 참조하여 위에 논의되고 도 7f를 참조하여 아래에 논의된 바와 같이) 저성능 변환을 수행한다. 단계(740e)에서, 토폴로지 선택기(458b)는 상대적으로 높은 중계 용량들을 갖는 노드들을 오버레이 네트워크 토폴로지의 더 높은 레벨들로 올리기 위해 (그리고 상대적으로 낮은 중계 용량들을 갖는 노드들을 오버레이 네트워크 토폴로지의 더 낮은 레벨들로 강등시키기 위해) (도 7c를 참조하여 위에 논의된 바와 같이) 레벨 이동 변환을 수행한다. 다른 실시예에서, 토폴로지 선택기(458b)는 또한 임의의 목적지 노드에 대한 홉 수에 미리 정의된 제한을 가한다. 위에 논의된 바와 같이, 이러한 결정은 노드 및 링크 노드-중계 용량(632a) 및 링크-중계 용량(632b) 예측들뿐만 아니라 노드 및 링크 상호 의존성을 고려한다.
단계(750e)에서, 토폴로지 선택기(458b)는 (도 7d를 참조하여 위에 논의된 바와 같이) 여분 용량 재분배 변환을 수행한다. 위에 논의된 바와 같이, 일부 여분 용량은 필요한 경우 트래픽을 이동시킴으로써 재분배되는 반면, 남아 있는 여분 용량은 제한된 용량의 향후 문제들을 해결하기 위해 (특히 오버레이 네트워크 토폴로지의 더 높은 레벨들에서) 확보된다. 위의 단계(740e)에서와 같이, 이러한 결정은 노드-중계 용량(632a) 및 링크-중계 용량(632b) 예측들뿐만 아니라, 노드 및 링크 상호 의존성을 고려한다.
일 실시예에서, 토폴로지 선택기(458b)는 단계들(730e, 740e 및 750e)을 반복적으로 수행한다. 각각의 이러한 단계들은 결고적인 오버레이 네트워크 토폴로지가 단계(775e) 마다 성능 기준을 충족할 때까지 (또는 다른 실시예에서는 최적의 오버레에 네트워크 토폴로지가 생성될 때까지) 연속적으로 또는 다른 실시예에서는 동시에 - 예를 들어, 비선형 및 다차원 최적화) 수행된다. 단계(780e)에서, (성능 기준을 충족하거나 충족에 가장 근접한) 결과적인 오버레이 네트워크 토폴로지는 현재 오버레이 네트워크 토폴로지의 잠재적인 재구성을 위해 선택된다.
도 7a-7d는 상대적으로 적은 수의 노드들을 갖는 오버레이 네트워크 토폴로지를 예시하지만, 이러한 컨셉은 임의의 수의 노드들을 사실상 포함하고 기본적으로 임의의 유형의 그래프에서 링크들을 상호 연결하는 상당히 큰 오버레이 네트워크 토폴로지에 동일하게 적용 가능하다. 일 실시예에서, 토폴로지 선택기(458b)는 노드-중계 용량(632a) 및 링크-중계 용량(632a) 예측들을 획득하기 위해 예측 엔진(455b)을 사용하는 반면, 디맨드는 정의된 성능 기준 및 뷰잉 노드들의 모니터링 활동에 기초하여 알려져 있다. 다른 실시예에서, 예측 엔진(455b)은 위에 설명된 바와 같이 (뷰어 지표 및 세션 지속시간 예측들에 기초하여) 디맨드를 예측한다. 다른 실시예들에서, 이러한 용량-관련 및 디맨드-관련 값들의 일부 또는 전부가 예측되기 보다는 측정된다.
일 실시예에서, 일단 토폴로지 선택기(458b)가 성능 기준을 충족하는 예상 오버레이 네트워크 토폴로지를 식별하면, 토폴로지 선택기는 위에 설명된 바와 같이 프로세싱을 중단하고 현재 오버레이 네트워크 토폴로지의 잠재적인 교체를 위해 해당 오버레이 네트워크 토폴로지를 전달한다. 다른 실시예들에서, 토포로지 선택기(458b)는 모든 예상 오버레이 네트워크 토폴로지를 평가하고 "최적의" 하나를 선택한다. 다른 실시예에서, 최적의 토폴로지는 성능 기준을 "가장 잘 충족"시키는 (또는 충족에 가장 근접하는) 토폴로지이다.
다른 실시예들에서, 토폴로지 선택기(458b)는 토포로지 선택기가 예측 엔진(455b)에 링크-중계 용량(632b) 예측들을 요청하는 예상 링크들의 수를 제한함으로써 - 즉, 자격이 있는 상위 노드들일 가능성이 적은 노드들을 줄이거나 필터링함으로써 예상 오버레이 네트워크 토폴로지들의 수를 제한한다. 예를 들어, 일 실시예에서, 토폴로지 선택기(458b)는 "최저 성능" 노드들을 선택하고 이러한 노드들을 고려사항에서 제외시킨다.
또 다른 실시예에서, 토폴로지 선택기(458b)는 먼저 예측 엔진(455b)로부터 노드-중계 용량(632a) 예측들을 획득하고, 가장 높은 예측된 용량을 갖는 그러한 노드들만을 잠재적인 상위들로 간주한다. 예를 들어, 잠재적인 상위 노드들의 80%는 노드-중계 용량(632a) 예측들의 상위 20% 내의 그러한 노드들만을 선택함으로써 제거된다. 그 결과, 상위 20% 내의 그러한 노드들만이 특정 예상 링크의 상위들이므로 예상 링크-중계 용량(632b) 예측들의 수는 실질적으로 감소된다. 배제된 노드들 및/또는 링크들의 적절한 수 또는 퍼센티지의 결정은 다양한 어플리케이션 별 설계 및 엔지니어링 트레이드오프의 결과라는 것이 당업자에게 명백할 것이다.
노드들 (및 그에 따른 링크들)이 토폴로지 선택기(458b)에 의한 고려사항에서 배제되는 이러한 실시예들에서, 배제된 노드들 및 링크들은 여전히 식별된(재구성된) 오버레이 네트워크 토폴로지의 일부로 콘텐트를 수신해야 하므로, 배제된 노드들 및 링크들은 여전히 고려되어야 한다. 이러한 노드들이 현재 상위 노드들이 아닌 경우, (리프 노드로서) 그 포함에는 다운스트림 효과가 없다. 그러나, 이러한 노드들이 현재 상위 노드들인 경우, 토폴로지 선택기(458b)는 위에 설명된 프로세스의 완료 시 (일 실시예에서는) 추가 단계를 수행한다. 이 추가 단계에서는, 이러한 배제된 상위 노드들이 "신규(new)" 노드들로 재할당되며, 그 하위 노드들은 "오펀" 노드들로 재할당된다. 토폴로지 선택기(458b)는 도 7f를 참조하여 아래에 설명된 접근방법을 사용하여, 이러한 신규 및 오펀 노드들을 통합하기 위해 그 선택된 오버레이 네트워크 토폴로지를 효과적으로 재구성한다.
b. 로컬 (노드 및 링크 레벨) 분석
예상 오버레이 네트워크 토폴로지들 및 컴포넌트 링크들과 노드들의 순열이 감소된 위에 설명된 글로벌 "토폴로지-레벨" 접근방법들 외에, 토폴로지 선택기(458b)는 또한, 일 실시예에서, 로컬 최적화를 포함한, 로컬 (노드 및 링크 레벨) 접근방법들을 사용한다. 일 실시예에서, 토폴로지 선택기(458b)는 위의 도 7a-7e에 대해 설명된 분석을 수행하는 현재 오버레이 네트워크 토폴로지의 서브셋을 선택한다. 예를 들어, 위에 설명된 업스트림 의존성의 특성을 고려하면, 트리-기반 토폴로지의 하위 레벨들에서의 변경들은 다운스트림에 큰 영향을 줄 가능성이 적다.
일 실시예에서, 토폴로지 선택기(458b)는 성능 기준을 충족하는 완전히 독립적인 "새로운" 오버레이 네트워크 토폴로지를 식별하기 보다는, "상향식(bottom up)" 접근방법으로 현재 오버레이 네트워크 토폴로지의 "하위" 부분을 분석한다. 즉, 토폴로지 선택기(458b)는 최하위 레벨들(가장 가까운 "리프" 노드들)로 시작하여 트리 구조의 각 "레벨"을 분석한다. 토폴로지 선택기(458b)는 재구성 프로세스가 종료되는 지점에서 미리 결정된 "퍼센티지 개선"이 달성(되고 성능 기준이 충족)될 때까지 각각 연속적으로 트리의 더 높은 레벨을 분석한다.
다른 실시예들에서, 토폴로지 선택기(458b)는 현재 오버레이 네트워크 토폴로지의 다양한 컴포넌트 영역들의 주기적 성능 평가를 수행함으로써 식별된 "문제 영역들"에 기초하여, 현재 오버레이 네트워크 토폴로지의 선택된 레벨들의 로컬 최적화를 수행한다. 즉, "성능 저하(declining performance)"를 나타내는 토폴로지의 부분들은 재구성되지만, (위에 논의된 글로벌 접근방법들에 의해 고려되는) 이러한 재구성의 다운스트림 효과들에 대해서는 명시적으로 고려되지 않는다.
도 7f의 흐름도(700f)에 예시된 일 실시예에서, 토폴로지 선택기(458b)는 ("상위-중심(parent-centric)" 대신) 대안적인 "하위-중심(child-centric)" 접근방법을 사용한다. 분석될 상위 노드들(과 이에 따른 링크들)의 수를 제한하는 대신, 토폴로지 선택기(458b)는 - 성능 기준을 충족하는 오버레이 네트워크 토폴로지를 전체론적으로 식별하는 것과는 대조적으로 - 새로운 상위를 "필요로 하는" 하위 노드들을 식별한 다음, 이러한 노드들에 대한 "충분한" 또는 "최적의" 상위를 식별한다.
즉, 노드들의 해당 노드들의 서브셋에 대한 링크들만 수정된다. 일단 이러한 노드들에 새로운 상위 노드들이 할당되면, 현재 오버레이 네트워크 토폴로지의 나머지 링크들은 (재구성된 오버레이 네트워크 토폴로지가 재평가될 때까지) 방해받지 않는다.
예를 들어, 단계(710f)에서, 오버레이 네트워크 토폴로지 매니저(350c)는 새로운 상위 노드를 필요로 하는 세 그룹의 피어 노드들을 식별한다. 제1 그룹은 토폴로지 선택기(458b)가 마지막으로 현재 오버레이 네트워크 토폴로지를 재평가한 이후 콘텐트 아이템의 뷰잉(소비)을 요청한 새로운 노드들을 포함한다. 제2 그룹은 상위 노드들이 네트워크를 떠나거나 콘텐트 아이템을 보거나 소비하는 것을 중단한 오펀 노드들(orphaned nodes)을 포함한다.
위에 언급한 바와 같이, 일 실시예에서, 이러한 신규 및 오펀 노드들은 또한 위의 도 7a-7e에 대해 설명된 글로벌 접근방법 동안 고려사항으로부터 배제되었던 노드들을 포함한다. 이 실시예에서, 위에 설명된 배제 또는 필터링 프로세스들은 흐름도(700f)에 대해 설명된 이 프로세스에 선행한다.
제3 그룹은 "저성능" 노드들 - 즉, 그 성능이 정의된 성능 기준을 충족하지 못하거나 성능의 임계 레벨 미만으로 떨어져서, 가까운 미래에 성능 기준을 충족하지 못할 위험에 처할 수 있는 노드들을 포함한다. 일 실시예에서, 임계 성능 레벨은 예상 "저성능" 노드의 상위 노드에 대해 획득된 노드-중계 용량(632a) 예측들에 기초하여 결정된다. 예를 들어, 상위 노드가 임계 성능 레벨 미만의 예측 값을 갖는 이러한 노드들이 "저성능" 노드들로 간주된다.
일 실시예에서, 저성능 노드들의 최대 수(또는 상한(ceiling))는 각 시간 기간 동안 식별된다. 다른 실시예에서, 임계 성능 레벨은 저성능 노드들의 하한(floor)(뿐만 아니라 하한)에 기초하여 가변적이다.
일단 이러한 "타겟" 신규, 오펀 및 저성능 노드들이 새로운 상위 노드를 필요로 하는 것으로 식별되면, 토폴로지 선택기(458b)는, 단계(720f)에서, 예측 엔진(455b)에 노드-중계 용량(632a) 예측들을 요청한다. 노드-중계 용량(632a) 예측들은 상위 노드와 관련된 노드 메트릭들의 규격(specification)만을 필요로 하기 때문에, 단계(720f)는 이 동알한 노드-중계 용량(632) 예측이 모든 타겟 하위 노드들에 적용되므로 각 예상 상위 노드에 대해 한번만(이 실시예에서는) 실행된다.
일 실시예에서, 모든 이러한 노드들이 임의의 주어진 타겟 노드의 예상 상위들이므로 콘텐트 아이템을 소비하는 모든 노드들에 대한 노드-중계 용량(632a) 예측들이 요청된다. 다른 실시예들에서, 노드-중계 용량(632a) 예측들은 (예를 들어, 위에 설명된 바와 같이 이력의 "불량 상위(bad parent)" 메트릭들에 기초하여) 예상 상위 노드들의 서브셋에 대해서만 요청된다.
모든 관련 노드-중계 용량(632a) 예측들을 획득하면, 단계(730f)는 타겟 노드에 "적합한" 상위를 식별하는 (각 타겟 노드에 반복된) 프로세스를 개시한다. 토폴로지 선택기(458b)는, 단계(740f)에서, 처리되고 있는 현재 타겟 노드에 대한 각 예상 링크에 대한 링크-중계 용량(635b) 예측들(과, 다른 실시예에서는, 뷰어 지표 및 세션 지속시간 예측들)을 예측 엔진(455b)에 요청한다. 즉, (위의 단계(720f)에서 결정된) 고려중인 각 예상 상위 노드에 대해, 해당 상위 노드로부터 처리중인 현재 타겟 노드로의 링크에 대한 링크-중계 용량(632b) 예측이 요청된다. 일 실시예에서, 특정 링크들은 위의 단계(720f)에 대해 설명된 동일한 고려사항들에 기초하여, (타겟 하위 노드의) 예상 상위 노드를 "불량 상위"로서 배제한 것에 기초하여 배제된다.
토폴로지 선택기(458b)는, 그런 다음, 단계(750f)에서, 위의 단계(720f)로부터의 노드-중계 용량(632a) 예측들 및 위의 단계(740f)로부터의 링크-중계 용량(632b) 예측들에 기초하여 - 해당 현재 타겟에 대한 상위를 결정한다. 일 실시예에서, 각 주어진 타겟 노드에 대해, 최적의 상위 노드는 성능 기준 - 즉, 성능 기준을 "가장 잘 충족"하는 (또는 충족에 가장 근접한) 상위 노드에 기초하여 선택된다. 다른 실시예들에서, 이 프로세스는 일단 임의의 "적합한" 상위 노드 - 즉 성능 기준을 충족하는 상위 노드가 식별되면 완료된다.
다른 실시예에서, 복수의 상위 노드들이 타겟 하위 노드에 대한 충분한 링크-중계 용량(632b) (및 기존 하위 노드들에 타겟 하위 노드를 추가하기에 충분한 여분 용량이 있는 경우)를 가지는 경우, 가장 높은 여분 용량을 갖는 상위 노드가 선택된다. 다른 실시예에서, (충분하지만) 가장 낮은 여분 용량을 갖는 상위 노드가 선택된다. 타겟 노드에 적합한 상위를 선택하기 위한 다양한 기타 알고리즘들은 당업자에게 명백할 것이다.
타겟 노드들이 남아 있는 경우(단계(775f) 마다), (위에 언급된 바와 같이) 노드-중계 용량(632a) 예측들이 이미 (임의의 예상 타겟 하위 노드의) 모든 예상 상위 노드들에 대해 획득되었기 때문에 단계(730f)로부터 프로세스가 반복된다. 일단 적합한 (또는 최적의) 상위 노드가 모든 타겟 노드들에 대해 선택되면, 프로세스는 단계(790f)에서 종료된다.
3. 부가적인 실시예들
도 2b를 참조하여 위에 설명된 바와 같이, 노드는 (예를 들어, 노드가 다른 콘텐트 아이템의 세그먼트들을 소비하기 때문에) 노드가 소비하지 않는 콘텐트 아이템의 세그먼트들 중계하기 위해 사용될 수 있다. 이러한 사나리오의 목적은 현재 오버레이 네트워크의 다른 부분이 아닌 피어 노드의 사용되지 않거나 여분의 중계 용량을 활용하기 위한 것이다.
이러한 "외부" 노드들이 사용되는 하나의 이러한 시나리오의 예로는 복수의 해상도들(예컨대, 비디오 콘텐트 아이템의 480p 및 1080p 버전들)이 분배에 이용 가능한 라이브 비디오 이벤트(live video event)가 있다. 본질적으로, 비디오의 480p 버전은 제1 오버레이 네트워크 토폴로지를 통해 전달된 하나의 콘텐트 아이템인 반면, 비디오의 1080p 버전은 제2 오버레이 네트워크 토폴로지를 통해 "동시에" 전달된 제2 개별 콘텐트 아이템이다.
현재 480p 또는 1080p 콘텐트를 소비하고 있는 뷰어는 여분 중계 용량을 갖는 것으로 식별될 수 있다. 이러한 뷰어들은 그런 다음 다른 오버레이 네트워크 토폴로지(소비가 아닌 중계 용도로)에 추가되며, 이에 따라 두 개별 (오버랩을 통해) 오버레이 네트워크 토폴로지들의 일부이다.
이 시나리오에서, 1080p 콘텐트를 소비 및/또는 중계할 수 없는 노드들로 480p 콘텐트를 전달하는 것이 목적이다. 이러한 노드들은 480p 오버레이 네트워크 토폴로지를 형성한다. 그러나, 여분 중계 용량을 갖는 것으로 식별되는 1080p 콘텐트를 중계하는 노드들은 480p 오버레이 네트워크의 성능을 개선하기 위해 (즉, 해당 여분 중계 용량을 활용함으로써) 중요한 소스로서 기능한다.
이러한 "외부" 노드들이 사용되는 또 다른 시나리오는 다른 아이들(idle) 상태인 장치들을 포함한다. 예를 들어, 일 실시예에서, (도 3b에 예시된) 클라이언트 소프트웨어는 - 일반적으로 임의의 콘텐트 아이템을 소비하지 않지만 - 인터넷에 지속적으로 연결된 "상시(always on)" 셋-톱 박스에 설치된다. 이 시나리오에서, 이러한 장치들은 주로 아이들 상태이므로 종종 여분 중계 용량을 갖는다. 따라서, 이들은 추가 중계 노드들이 필요한 오버레이 네트워크 토폴로지의 목적지 노드들로 콘텐트 아이템의 세그먼트들을 중계하기 위한 우수한 후보들이다.
현재 오버레이 네트워크 토폴로지가 이러한 아이들 노드들로부터의 이점을 얻을 수 있다고 판단되면, 오버레이 네트워크 토폴로지 매니저(350c)는 이러한 노드들의 아텐티티(identity)를 토폴로지 선택기(358c)에 통지한다. 토폴로지 선택기(358c)는 그런 다음 위에 설명된 바와 같이 이러한 노드들(즉, "신규 노드들")을 해당 기존 오버레이 네트워크에 추가한다. 이 시나리오에서, 오버레이 네트워크 토폴로지 매니저(350c)는 - 콘텐트 아이템을 보기 시작하거나 보기 중단하는 것을 결정하는 사용자의 기분(whims)보다는 - 하나 이상의 현재 오버레이 네트워크 토폴로지들의 상태에 기초하여 이러한 노드들을 추가하고 제거한다.
다른 실시예들에서, 노드들이 복수의 상위 노드들로부터 동시에 콘텐트 세그먼트들을 수신할 수 있게 하는 비-트리-기반 토폴로지가 사용된다. 이 시나리오에서, 예를 들어, 스포츠 이벤트의 뷰어들은 (예컨대, 로컬 선호도를 포함한 여러 실황 중계 방송(play-by-play) 아나운서들 사이에서 전환하기 위해) 복수의 상이한 방송들 사이에서 수신 및 전환된다. 이 시나리오의 다른 실시예들에서, 임의의 개별 소스의 업링크 제한과 같은 처리량 제한을 극복하기 위해 복수의 상이한 소스들로부터 대량의 의료 또는 다른 데이터 파일들이 수신된다.
다른 실시예에서, 오버레이 네트워크 토폴로지 매니저(350c)는 복수의 하위 노드들(또는 다른 구현에서는 복수의 상위 노드들)을 해당 노드로의 할당을 용이하게 하기 위해 노드들에 "슬롯들(slots)"을 할당한다. 예를 들어, 오버레이 네트워크 토폴로지 매니저(350c)는 초기 메트릭들(예컨대, 접속 유형, 업링크 및 다운링크 속도 등)에 기초하여 노드에 기본 고정 개수의 중계 슬롯들을 할당한다. 그런 다음, 시간이 경과됨에 따라 식별된 여분 용량에 기초하여, 노드들의 현재 중계 슬롯들의 개수를 증가시킬지 또는 감소시킬지 여부를 결정한다. 이 방식에서, 큰 여분 용량을 갖는 노드들에 더 많은 하위 노드들이 할당된다. 노드가 복수의 상위 노드들을 갖도록 허용하는 다른 실시예들에서, "들어오는" 슬롯들에 대해 동일한 컨셉이 사용된다.
위에 언급된 바와 같이, 본 발명은 복수의 사용자 노드들 사이에 디지털 콘텐트의 분배를 포함하는 사실상 임의의 유형의 어플리케이션에 대해 사용될 수 있다. 예를 들어, VOD 시나리오에서, 방송 비디오 시나리오와 달리, 노드들은 다른 시간에 콘텐트 아이템의 세그먼트들을 수신한다. 이러한 시나리오에서, 위에 논의된 바와 같이, 각 사용자 노드 장치(300b)의 콘텐트 어레이 매니저(370b)는 연장된 시간 기간 동안(예컨대, 방송 비디오의 경우 일반적으로 30초와는 대조적으로 5-10 분) 세그먼트들의 저장을 용이하게 하기 위해 버퍼를 사용한다. 버퍼의 크기가 증가함에 따라, 소비하지 않는 콘텐트를 브로드캐스트 하는데 현재 더 많은 노드들이 이용 가능해진다.
사용자가 콘텐트 아이템을 요청하는 매 다른 시간 기간 동안 별개의 오버레이 네트워크 토폴로지들을 유지하는 대신, 오버레이 네트워크 토폴로지 매니저(350c)는 이러한 별개의 시간 기간들을 추적하고 다양한 상위 노드들에 할당된 버퍼의 크기를 동적으로 조정한다. 예를 들어, 100명의 사용자가 100개의 약간의 오프셋된 시간 기간에 콘텐트 아이템의 뷰잉을 요청한 경우, 오버레이 네트워크 토폴로지 매니저(350c)는 각 오버레이 네트워크가 단일 노드(또는 적어도 매우 작은 수의 노드들)을 가질 것이므로 100개의 상이한 오버레이 네트워크 토폴로지들을 유지하지 않는다.
대신에, 콘텐트 아이템에 전용된 버퍼의 크기를 증가시킴으로써, 각각 다른 시간에 다른 사용자들에게 세그먼트들을 제공하기 위해 면밀하게 동기화된 버퍼 크기들을 갖는 (모든 오버레이 네트워크 토폴로지 매니저(350c)에 의해 관리되는) 노드들은 훨씬 적은 수의 별개의 (그러나 오버랩되는) 오버레이 네트워크 토폴로지들을 따라 콘텐트를 효과적으로 분배한다. 예를 들어, 일 실시예에서, 10-분 버퍼는 12개의 오버랩되는 오버레이 네트워크 토폴로지를 통해 두 시간짜리 비디오의 분배를 가능하게 하기 위해 사용된다. 다른 실시예들에서, 추가적인 특징들(일시정지, 되감기 등)은 서로 다른 오버레이 네트워크 토폴로지들 사이에서 노드들을 효과적으로 이동시킴으로써 구현된다.
본 발명은 첨부 도면들에 예시된 바와 같은 특정 실시예들을 참조하여 본 출원에서 설명되었다. 본 개시에 비추어, 본 출원에 개시된 컨셉들의 부가적인 실시예들은 본 발명의 범위 내에서 구상되고 구현될 수 있음을 당업자들은 이해해야 한다.

Claims (16)

  1. 오버레이 네트워크를 따라 콘텐트 아이템의 하나 이상의 세그먼트들의 분배에 대해 하나 이상의 어플리케이션 별 성능 기준 세트를 충족하는 상기 오버레이 네트워크를 결정하기 위한 방법으로서, 상기 오버레이 네트워크 토폴로지는 상기 오버레이 네트워크의 복수의 노드들 및 복수의 링크들을 포함하며, 각 링크는 해당 링크를 따라 노드 쌍 사이에 상기 하나 이상의 세그먼트들의 상기 분배를 용이하게 하기 위해 상기 복수의 노드 쌍을 논리적으로 상호 연결하는, 상기 방법에 있어서,
    (a) 연속적인 시간 기간 동안 복수의 메트릭들을 주기적으로 측정 및 처리하는 단계로서, 각 메트릭은 각 시간 기간에 대해, 해당 시간 기간 동안 사용된 현재 오버레이 네트워크 토폴로지의 노드들 또는 링크들과 연관된 속성들을 반영하고, 상기 처리된 메트릭들은 상기 현재 오버레이 네트워크 토폴로지의 노드-중계 속성들 및 링크-중계 속성들에 반영하는, 상기 측정 및 처리하는 단계;
    (b) 예상 오버레이 네트워크 토폴로지의 노드들 및 링크들과 연관된 상기 처리된 메트릭들에 기초하여 상기 노드들 및 링크들의 상기 노드-중계 용량 및 링크-중계 용량을 예측하는 단계; 및
    (c) 상기 노드들 및 링크들의 상기 예측된 노드-중계 용량 및 링크-중계 용량에 적어도 부분적으로 기초하여, 상기 예상 오버레이 네트워크 토폴로지가 상기 성능 기준을 충족하는지를 결정하는 단계를 포함하는, 방법.
  2. 콘텐트 아이템들이 분배되는 오버레이 네트워크 토폴로지들을 재구성하기 위한 방법으로서, 각 오버레이 네트워크 토폴로지는 복수의 네트워크 노드들 및 상기 복수의 네트워크 노드들과 상호 연결하는 복수의 링크들을 포함하는, 상기 방법에 있어서, 상기 방법은,
    (a) 현재 오버레이 네트워크 토폴로지에 대한 복수의 메트릭들을 생성하는 단계;
    (b) 상기 복수의 메트릭들에 기초하여, 지정된 노드들 및 링크들의 세트에 대한 복수의 예측들을 생성하는 단계; 및
    (c) 상기 복수의 예측들에 기초하여 예상 오버레이 네트워크 토폴로지를 식별하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 상기 예상 오버레이 네트워크 토폴로지는 상기 지정된 노드들 및 링크들의 성능에 대한 하나 이상의 제약들을 나타내는 성능 기준을 충족하는, 방법.
  4. 제2항에 있어서, 각 오버레이 네트워크 토폴로지는 피어-기반 오버레이 네트워크 토폴로지인, 방법.
  5. 제2항에 있어서, 각 네트워크 노드는 상기 예상 오버레이 네트워크 토폴로지의 일부가 될 것인지를 나타내는 뷰어 지표 예측들을 생성하는 단계를 더 포함하는, 방법.
  6. 제5항에 있어서, 상기 예상 오버레이 네트워크 토폴로지의 일부가 될 상기 네트워크 노드들이 상기 예상 오버레이 네트워크 토폴로지의 일부로 유지되는 동안의 지속시간을 나타내는 세션 지속시간 예측들을 생성하는 단계를 더 포함하는, 방법.
  7. 제2항에 있어서, 상기 복수의 예측들은 상기 지정된 노드들의 상기 노드-중계 용량 및 상기 지정된 링크들의 상기 링크-중계 용량을 포함하는, 방법.
  8. 제2항에 있어서, 상기 복수의 메트릭들은 노드 메트릭들, 링크 메트릭들 및 상기 노드 메트릭과 링크 메트릭들이 획득되는 동안의 타임스탬프를 포함하는, 방법.
  9. 콘텐트 아이템들이 분배되는 오버레이 네트워크 토폴로지들을 재구성하기 위한 적응형 토폴로지 서버로서, 각 오버레이 네트워크 토폴로지는 복수의 네트워크 노드들 및 상기 복수의 네트워크 노드들과 상호 연결하는 복수의 링크들을 포함하는, 상기 적응형 토폴로지 서버에 있어서,
    (a) 현재 오버레이 네트워크 토폴로지에 대한 복수의 메트릭들을 생성하는 메트릭 프로세서;
    (b) 상기 복수의 메트릭들에 기초하여, 지정된 노드들 및 링크들의 세트에 대한 복수의 예측들을 생성하는 예측 엔진; 및
    (c) 상기 예측 엔진으로부터 지정된 노드들 및 링크들의 세트에 대한 복수의 예측들을 획득하고, 상기 복수의 예측들에 기초하여 예상 오버레이 네트워크 토폴로지를 식별하는 토폴로지 선택기를 포함하는, 적응형 토폴로지 서버.
  10. 제9항에 있어서, 상기 토폴로지 선택기는 하나 이상의 제약들을 나타내는 성능 기준을 충족하는 예상 오버레이 네트워크 토폴로지를 식별하는, 적응형 토폴로지 서버.
  11. 제9항에 있어서, 각 오버레이 네트워크 토폴로지는 피어-기반 오버레이 네트워크 토폴로지인, 적응형 토폴로지 서버.
  12. 제9항에 있어서, 상기 예측 엔진은 각 네트워크 노드가 상기 예상 오버레이 네트워크 토폴로지의 일부가 될 것인지를 나타내는 뷰어 지표 예측들을 생성하는, 적응형 토폴로지 서버.
  13. 제12항에 있어서, 상기 예측 엔진은 상기 예상 오버레이 네트워크 토폴로지의 일부가 될 상기 네트워크 노드들이 상기 예상 오버레이 네트워크 토폴로지의 일부로 유지되는 동안의 지속시간을 나타내는 세션 지속시간 예측들을 생성하는, 적응형 토폴로지 서버.
  14. 제9항에 있어서, 상기 예측 엔진은 상기 지정된 노드들의 상기 노드-중계 용량 및 상기 지정된 링크들의 상기 링크-중계 용량을 생성하는, 적응형 토폴로지 서버.
  15. 제9항에 있어서, 상기 메트릭 프로세서에 의해 생성된 상기 복수의 메트릭들은 노드 메트릭들, 링크 메트릭들 및 상기 노드 메트릭들과 링크 메트릭들이 획득되는 동안의 타임스탬프를 포함하는, 적응형 토폴로지 서버.
  16. 예상 오버레이 네트워크 토폴로지들을 따라 복수의 콘텐트 아이템들을 동시에 분배하기 위한 방법으로서, 각 오버레이 네트워크 토폴로지는 복수의 네트워크 노드들 및 상기 복수의 네트워크 노드들과 상호 연결되는 복수의 링크들을 포함하는, 상기 방법에 있어서,
    (a) 제1 오버레이 네트워크 토폴로지를 다라 제1 콘텐트 아이템을 분배하는 단계;
    (b) 제2 오버레이 네트워크 토폴로지를 따라 제2 콘텐트 아이템을 분배하는 단계로서, 상기 제1 콘텐트 아이템 및 제2 콘텐트 아이템은 그들 각각의 오버레이 네트워크 토폴로지들을 따라 동시에 분배되는, 상기 제2 콘텐트 아이템을 분배하는 단계;
    (c) 상기 제1 오버레이 네트워크 토폴로지를 따라 네트워크 노드로 상기 제1 콘텐트 아이템을 분배하는 단계로서, 상기 네트워크 노드는 상기 제1 오버레이 네트워크 토폴로지 및 상기 제2 오버레이 네트워크 토폴로지 둘 다에 포함되며, 상기 네트워크 노드는 상기 제1 콘텐트 아이템을 소비하는, 상기 제1 콘텐트 아이템을 분배하는 단계; 및
    (d) 상기 제2 오버레이 네트워크 토폴로지를 따라 상기 네트워크 노드로 상기 제2 콘텐트 아이템을 분배하는 단계로서, 상기 네트워크 노드는 상기 제2 오버레이 네트워크 토폴로지의 또 다른 네트워크 노드로 상기 제2 콘텐트 아이템을 중계하는, 상기 제2 콘텐트를 분배하는 단계를 포함하는, 방법.
KR1020197034402A 2017-04-21 2018-04-20 예상 오버레이 네트워크 아키텍처 KR102569433B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237027968A KR20230124112A (ko) 2017-04-21 2018-04-20 예상 오버레이 네트워크 아키텍처

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762488502P 2017-04-21 2017-04-21
US62/488,502 2017-04-21
US201862655703P 2018-04-10 2018-04-10
US62/655,703 2018-04-10
PCT/EP2018/060169 WO2018193082A1 (en) 2017-04-21 2018-04-20 Predictive overlay network architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237027968A Division KR20230124112A (ko) 2017-04-21 2018-04-20 예상 오버레이 네트워크 아키텍처

Publications (2)

Publication Number Publication Date
KR20200015492A true KR20200015492A (ko) 2020-02-12
KR102569433B1 KR102569433B1 (ko) 2023-08-23

Family

ID=62116829

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197034402A KR102569433B1 (ko) 2017-04-21 2018-04-20 예상 오버레이 네트워크 아키텍처
KR1020237027968A KR20230124112A (ko) 2017-04-21 2018-04-20 예상 오버레이 네트워크 아키텍처

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237027968A KR20230124112A (ko) 2017-04-21 2018-04-20 예상 오버레이 네트워크 아키텍처

Country Status (8)

Country Link
US (4) US10735268B2 (ko)
EP (1) EP3613177A1 (ko)
JP (1) JP7229936B2 (ko)
KR (2) KR102569433B1 (ko)
CN (2) CN116827850A (ko)
BR (1) BR112019022012A2 (ko)
MX (2) MX2019012502A (ko)
WO (1) WO2018193082A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102606904B1 (ko) * 2022-06-30 2023-11-29 씨제이올리브네트웍스 주식회사 실시간 영상통화 서비스 지원 방법 및 이를 위한 영상통화 지원 장치

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9769536B2 (en) 2014-12-26 2017-09-19 System73, Inc. Method and system for adaptive virtual broadcasting of digital content
TWI602064B (zh) * 2016-11-23 2017-10-11 財團法人工業技術研究院 資料傳輸系統,以及其所使用的拓樸架構建立方法與拓樸架構修復方法
US10735268B2 (en) 2017-04-21 2020-08-04 System73 Ltd. Predictive overlay network architecture
US11018949B2 (en) * 2017-07-14 2021-05-25 Accenture Global Solutions Limited System for generating an architecture diagram
JP6831527B2 (ja) * 2017-08-04 2021-02-17 日本電信電話株式会社 経路制御方法及び経路設定装置
US11294789B2 (en) 2017-08-18 2022-04-05 Vmware, Inc. Data collection of event data and relationship data in a computing environment
US20190312810A1 (en) * 2018-04-10 2019-10-10 System73 Ltd Adaptive overlay network architecture
US11488044B2 (en) 2018-04-27 2022-11-01 P44, Llc Classification and transformation of sequential event data
US10892959B2 (en) * 2018-07-11 2021-01-12 International Business Machines Corporation Prioritization of information technology infrastructure incidents
US20200036639A1 (en) * 2018-07-26 2020-01-30 Cable Television Laboratories, Inc. Methods for predicting future network traffic
US11196797B2 (en) * 2018-08-21 2021-12-07 International Business Machines Corporation Transferring files between computer nodes on different networks
US20200134421A1 (en) * 2018-10-27 2020-04-30 Cisco Technology, Inc. Assurance of policy based alerting
US11265235B2 (en) * 2019-03-29 2022-03-01 Intel Corporation Technologies for capturing processing resource metrics as a function of time
US11899786B2 (en) * 2019-04-15 2024-02-13 Crowdstrike, Inc. Detecting security-violation-associated event data
US11675563B2 (en) * 2019-06-01 2023-06-13 Apple Inc. User interfaces for content applications
US11032150B2 (en) * 2019-06-17 2021-06-08 International Business Machines Corporation Automatic prediction of behavior and topology of a network using limited information
CN114553779A (zh) * 2019-09-16 2022-05-27 华为技术有限公司 网络拥塞控制方法、节点、系统及存储介质
US11677768B2 (en) * 2019-10-22 2023-06-13 Honeywell International Inc. Apparatuses, methods, and computer program products for automatic improved network architecture generation
US11863428B2 (en) * 2019-11-22 2024-01-02 Vmware, Inc. Dynamic route configuration and load balancing for edge gateways
US11368525B2 (en) 2019-12-02 2022-06-21 Red Hat, Inc. Relaying network management tasks using a multi-service receptor network
US11238041B2 (en) * 2020-03-25 2022-02-01 Ocient Holdings LLC Facilitating query executions via dynamic data block routing
US11212202B2 (en) 2020-04-08 2021-12-28 Subspace Inc. Network performance enhancement system
US11700671B2 (en) * 2020-06-30 2023-07-11 Arris Enterprises Llc Client-specific mesh paths to root access points in a mesh network
US11895035B2 (en) * 2020-08-10 2024-02-06 T-Mobile Usa, Inc. Quality of experience (QoE) optimization of device and network configuration
US11895004B2 (en) * 2020-08-20 2024-02-06 Jpmorgan Chase Bank, N.A. Systems and methods for heuristics-based link prediction in multiplex networks
US11323312B1 (en) * 2020-11-25 2022-05-03 Juniper Networks, Inc. Software-defined network monitoring and fault localization
CN112491712B (zh) * 2020-11-30 2021-08-17 复旦大学 一种基于多智能体深度强化学习的数据包路由算法
US11632588B2 (en) * 2020-12-04 2023-04-18 Kollective Technology, Inc. Measuring the performance of a peer-managed content distribution network
US20210117807A1 (en) * 2020-12-23 2021-04-22 Intel Corporation Methods and appartus to construct program-derived semantic graphs
CN113014544B (zh) * 2021-01-25 2023-02-10 阳光凯讯(北京)科技有限公司 基于webRtc无中心媒体链路建立方法及装置
CN117597682A (zh) 2021-01-29 2024-02-23 苹果公司 用于共享内容项部分的用户界面和相关联系统及方法
US11632327B2 (en) * 2021-05-27 2023-04-18 Cisco Technology, Inc. Estimating the efficacy of predictive routing for prospective deployments
US11632305B2 (en) * 2021-06-02 2023-04-18 Jpmorgan Chase Bank, N.A. Method and system for link prediction in large multiplex networks
US11252036B1 (en) 2021-06-10 2022-02-15 Bank Of America Corporation System for evaluating and tuning resources for anticipated demands
WO2023014722A1 (en) * 2021-08-05 2023-02-09 Arista Networks, Inc. Systems and methods for constructing application-aware virtual topologies in wide area networks
US12003401B2 (en) 2021-08-05 2024-06-04 Arista Networks, Inc. Systems and methods for constructing application-aware virtual topologies in wide area networks
CN113747473A (zh) * 2021-09-01 2021-12-03 苏州佩林软件技术有限公司 一种自组网的方法和自组网系统
CN113904974B (zh) * 2021-10-09 2023-08-15 咪咕文化科技有限公司 智能路由方法、装置及设备
US20230133057A1 (en) * 2021-10-29 2023-05-04 Keysight Technologies, Inc. System and method for configuring network elements in a design network topology
US11916791B2 (en) 2021-12-22 2024-02-27 Cloudbrink Inc. Modifying data packet transmission strategy based on transmission control protocol stage
US11943144B1 (en) * 2022-03-16 2024-03-26 Amazon Technologies, Inc. Dynamic traffic management of microservices
US20240080257A1 (en) * 2022-09-01 2024-03-07 Cloudbrink Inc. Overlay network modification

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060218301A1 (en) * 2000-01-25 2006-09-28 Cisco Technology, Inc. Methods and apparatus for maintaining a map of node relationships for a network
US20130297731A1 (en) * 2012-05-04 2013-11-07 The Hong Kong University Of Science And Technology Content distribution over a network
EP3038323A1 (en) * 2014-12-26 2016-06-29 Mattias Bergstorm Method and system for adaptive virtual broadcasting of digital content

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7086077B2 (en) 1999-04-01 2006-08-01 Sedna Patent Services, Llc Service rate change method and apparatus
US6275470B1 (en) 1999-06-18 2001-08-14 Digital Island, Inc. On-demand overlay routing for computer-based communication networks
US7240124B2 (en) 2001-06-20 2007-07-03 Silver Beech Networks, Inc. System and method for transferring data on a network using a single route optimizer to define an explicit route and transfer the information related to the explicit route to a plurality of routers and a plurality of optimized routers on the network
US7613796B2 (en) 2002-09-11 2009-11-03 Microsoft Corporation System and method for creating improved overlay network with an efficient distributed data structure
US7123917B2 (en) * 2002-12-17 2006-10-17 Kyocera Wireless Corp. System and method for determining when to exit an existing wireless communications coverage network
US20050015511A1 (en) * 2003-07-02 2005-01-20 Nec Laboratories America, Inc. Accelerated large data distribution in overlay networks
US7388841B2 (en) * 2003-10-20 2008-06-17 Mitsubishi Electric Research Laboratories, Inc. Selecting multiple paths in overlay networks for streaming data
US9325805B2 (en) 2004-08-02 2016-04-26 Steve J Shattil Content delivery in wireless wide area networks
JP4606333B2 (ja) 2005-09-20 2011-01-05 富士通株式会社 ルーティング制御方法
US20070150498A1 (en) 2005-12-23 2007-06-28 Xerox Corporation Social network for distributed content management
US8509098B2 (en) 2006-04-28 2013-08-13 Alcatel Lucent Method and apparatus for identifying network connectivity changes in dynamic networks
US20080059631A1 (en) 2006-07-07 2008-03-06 Voddler, Inc. Push-Pull Based Content Delivery System
US8000239B2 (en) 2006-12-14 2011-08-16 Oracle America, Inc. Method and system for bandwidth allocation using router feedback
US9026628B2 (en) * 2007-01-22 2015-05-05 Xerox Corporation Two-level structured overlay design for cluster management in a peer-to-peer network
US20080263130A1 (en) 2007-04-23 2008-10-23 Nir Michalowitz Apparatus, system and method of digital content distribution
KR100748187B1 (ko) 2007-06-01 2007-08-10 인하대학교 산학협력단 노드 가용도 예측 기반의 그리드 네트워크 혼잡 제어 장치및 방법
WO2009004701A1 (ja) 2007-06-29 2009-01-08 Fujitsu Limited ネットワーク障害検知システム、計測エージェント、監視サーバ、ネットワーク障害検知方法およびネットワーク障害検知プログラム
EP2215770B1 (en) * 2007-10-18 2013-03-20 Telefonaktiebolaget L M Ericsson (publ) Merging of overlay networks in distributed data structures
US8565218B2 (en) 2008-06-05 2013-10-22 Hewlett-Packard Development Company, L.P. Flow path discovery in network to guarantee multiple metric QoS constraints
US20100027442A1 (en) 2008-07-31 2010-02-04 International Business Machines Corporation Constructing scalable overlays for pub-sub with many topics: the greedy join-leave algorithm
US8504504B2 (en) * 2008-09-26 2013-08-06 Oracle America, Inc. System and method for distributed denial of service identification and prevention
US8848513B2 (en) 2009-09-02 2014-09-30 Qualcomm Incorporated Seamless overlay connectivity using multi-homed overlay neighborhoods
US8170016B2 (en) 2009-11-30 2012-05-01 At&T Intellectual Property I, Lp Packet flow offload to remote destination with routing bypass
CN102413021A (zh) * 2011-12-27 2012-04-11 北京邮电大学 一种基于探针预测的覆盖网络性能监测方法
US10158554B1 (en) 2012-02-29 2018-12-18 The Boeing Company Heuristic topology management system for directional wireless networks
AU2014257769B2 (en) 2013-04-25 2017-05-11 Hive Streaming Ab Method and device for centralized peer arrangement in P2P overlay networks
US8972992B2 (en) 2013-04-30 2015-03-03 Splunk Inc. Proactive monitoring tree with state distribution ring
US9537719B2 (en) 2014-06-19 2017-01-03 Palo Alto Research Center Incorporated Method and apparatus for deploying a minimal-cost CCN topology
US10374900B2 (en) 2014-12-03 2019-08-06 Hewlett Packard Enterprise Development Lp Updating a virtual network topology based on monitored application data
US10735268B2 (en) 2017-04-21 2020-08-04 System73 Ltd. Predictive overlay network architecture
US10705881B2 (en) 2017-05-12 2020-07-07 Red Hat, Inc. Reducing overlay network overhead across container hosts
US20190312810A1 (en) 2018-04-10 2019-10-10 System73 Ltd Adaptive overlay network architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060218301A1 (en) * 2000-01-25 2006-09-28 Cisco Technology, Inc. Methods and apparatus for maintaining a map of node relationships for a network
US20130297731A1 (en) * 2012-05-04 2013-11-07 The Hong Kong University Of Science And Technology Content distribution over a network
EP3038323A1 (en) * 2014-12-26 2016-06-29 Mattias Bergstorm Method and system for adaptive virtual broadcasting of digital content

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102606904B1 (ko) * 2022-06-30 2023-11-29 씨제이올리브네트웍스 주식회사 실시간 영상통화 서비스 지원 방법 및 이를 위한 영상통화 지원 장치

Also Published As

Publication number Publication date
CN110915168B (zh) 2023-07-18
WO2018193082A1 (en) 2018-10-25
MX2023012783A (es) 2023-11-08
EP3613177A1 (en) 2020-02-26
US20200328946A1 (en) 2020-10-15
US11700184B2 (en) 2023-07-11
KR20230124112A (ko) 2023-08-24
CN116827850A (zh) 2023-09-29
BR112019022012A2 (pt) 2020-05-12
MX2019012502A (es) 2020-07-14
US11212184B2 (en) 2021-12-28
US11418404B2 (en) 2022-08-16
US10735268B2 (en) 2020-08-04
JP7229936B2 (ja) 2023-02-28
CN110915168A (zh) 2020-03-24
US20200374200A1 (en) 2020-11-26
KR102569433B1 (ko) 2023-08-23
JP2020518179A (ja) 2020-06-18
US20180309636A1 (en) 2018-10-25
US20220393947A1 (en) 2022-12-08

Similar Documents

Publication Publication Date Title
KR102569433B1 (ko) 예상 오버레이 네트워크 아키텍처
US20210273884A1 (en) Adaptive overlay network architecture
US10992998B2 (en) Method and system for adaptive virtual broadcasting of digital content
Alzoubi et al. A practical architecture for an anycast CDN
Li et al. Video delivery performance of a large-scale VoD system and the implications on content delivery
Roverso et al. Smoothcache 2.0: Cdn-quality adaptive http live streaming on peer-to-peer overlays
Budhkar et al. An overlay management strategy to improve QoS in CDN-P2P live streaming systems
Selimi et al. Integration of an assisted p2p live streaming service in community network clouds
Paramasivam et al. Quality of service aware routing in software defined video streaming: a survey
Burger et al. Trade-off between QoE and operational cost in edge resource supported video streaming
Rio et al. Deliverable D6. 2
Munoz-Gea et al. Resource Assignment in Box-Based P2P Video-on-Demand Systems

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
A107 Divisional application of patent