KR20220151224A - Method and system for adaptive virtual broadcasting of digital content - Google Patents

Method and system for adaptive virtual broadcasting of digital content Download PDF

Info

Publication number
KR20220151224A
KR20220151224A KR1020227037918A KR20227037918A KR20220151224A KR 20220151224 A KR20220151224 A KR 20220151224A KR 1020227037918 A KR1020227037918 A KR 1020227037918A KR 20227037918 A KR20227037918 A KR 20227037918A KR 20220151224 A KR20220151224 A KR 20220151224A
Authority
KR
South Korea
Prior art keywords
nodes
video
asn
client
node
Prior art date
Application number
KR1020227037918A
Other languages
Korean (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, 인크.
Publication of KR20220151224A publication Critical patent/KR20220151224A/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64723Monitoring of network processes or resources, e.g. monitoring of network load
    • H04N21/64738Monitoring network characteristics, e.g. bandwidth, congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • H04L12/1877Measures taken prior to transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1886Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with traffic restrictions for efficiency improvement, e.g. involving subnets or subdomains
    • 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
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • 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
    • 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
    • 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/0894Packet rate
    • 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
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/121Shortest path evaluation by minimising delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/123Evaluation of link metrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/125Shortest path evaluation based on throughput or bandwidth
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • H04L45/3065Route determination based on the nature of the carried application for real time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/127Avoiding congestion; Recovering from congestion by using congestion prediction
    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/823Prediction of resource usage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/251Learning process for intelligent management, e.g. learning user preferences for recommending movies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/70Routing based on monitoring results

Abstract

본 발명의 가상 방송 시스템은 기반이 되는 네트워크 내의 컴포넌트 상호연결들의 자주 변하는 혼잡 레벨들의 예측들에 기초하여 동적으로 재구성되는 오버레이 네트워크들을 따라 노드들 사이의 디지털 콘텐츠의 라우팅을 최적화한다. 스트리밍 비디오를 인터넷을 통해 많은 수의 동시 사용자들에게 전달하는 것과 관련하여, 본 발명은 혼잡한 ASN 피어링 포인트들의 제한된 용량을, 그 ASN 피어링 포인트들을 거치는 혼잡 레벨들을 예측하고, 그 예측들에 기초하여, 동적으로 재구성된 오버레이 네트워크들을 따라 비디오 콘텐츠의 라우팅을 최적화하기 위해 딥 러닝 기법들을 이용하는 것에 의해, 효율적으로 사용한다. 가상 방송 시스템은 예정되지 않은 이벤트들은 물론 예정된 이벤트들을 핸들링하고, 실황 이벤트들은 물론 녹화된 이벤트들을 스트리밍하며, 많은 수의 동시 시청자들 간에 일관성있는 QoE를 유지하는 확장성 높은 방식으로 그 이벤트들을 최소한의 지연으로 실시간으로 스트리밍한다.The virtual broadcasting system of the present invention optimizes the routing of digital content between nodes along overlay networks that are dynamically reconfigured based on predictions of frequently changing congestion levels of component interconnections within the underlying network. Concerning the delivery of streaming video to a large number of concurrent users over the Internet, the present invention predicts the limited capacity of congested ASN peering points, congestion levels across those ASN peering points, and based on the predictions , by using deep learning techniques to optimize the routing of video content along dynamically reconstructed overlay networks. The virtual broadcasting system handles scheduled as well as unscheduled events, streams live as well as recorded events, and streams those events in a highly scalable manner that maintains consistent QoE across large numbers of concurrent viewers with minimal delay. stream in real time.

Figure P1020227037918
Figure P1020227037918

Description

디지털 콘텐츠의 적응적 가상 방송을 위한 방법 및 시스템{METHOD AND SYSTEM FOR ADAPTIVE VIRTUAL BROADCASTING OF DIGITAL CONTENT}METHOD AND SYSTEM FOR ADAPTIVE VIRTUAL BROADCASTING OF DIGITAL CONTENT

관련 출원의 상호 참조CROSS REFERENCES OF RELATED APPLICATIONS

본 출원은 2014년 12월 26일에 출원된 미국 가특허 출원 제62/096,938호 - 그의 개시내용은 이로써 그 전체가 본원에 기재된 것처럼 참고로 포함됨 - 를 우선권 주장한다.This application claims priority to US Provisional Patent Application Serial No. 62/096,938, filed on December 26, 2014, the disclosure of which is hereby incorporated by reference as if set forth herein in its entirety.

본 발명은 일반적으로 기반이 되는 네트워크의 노드들 간에 디지털 콘텐츠를 전달하기 위한 오버레이 네트워크 아키텍처에 관한 것으로서, 보다 상세하게는 기반이 되는 네트워크 내의 컴포넌트 상호연결부들에서의 빈번히 변하는 혼잡 레벨들의 예보들에 기초하여 동적으로 재구성되는 오버레이 네트워크들을 따라 있는 노드들 간의 디지털 콘텐츠의 라우팅을 최적화하는 가상 방송 시스템에 관한 것이다.The present invention relates generally to an overlay network architecture for conveying digital content between nodes of an underlying network, and more particularly, based on forecasts of frequently changing congestion levels at component interconnects within the underlying network. A virtual broadcasting system that optimizes the routing of digital content between nodes along dynamically reconfigured overlay networks.

네트워크 혼잡network congestion

유선 및 무선 네트워크 트래픽이 계속하여 기하급수적으로 늘어날 때, 네트워크 내의 컴포넌트들 사이의 공유 링크들 또는 상호연결부들의 유한한 용량이 점점 더 중요하고 골치아픈 문제로 되고 있다. 더욱이, 네트워크 트래픽이 변할 때 이 공유 링크들에서의 혼잡 레벨이 동적이고 큰 변동성을 겪기 때문에, 이러한 혼잡은 임의의 주어진 때에 측정하기가 어렵고 단기적으로도 예측하기가 특히 어렵다.As wired and wireless network traffic continues to grow exponentially, the finite capacity of shared links or interconnections between components within a network is becoming an increasingly important and vexing problem. Moreover, because the level of congestion on these shared links is dynamic and subject to great variability as network traffic changes, such congestion is difficult to measure at any given time and particularly difficult to predict, even in the short term.

이 문제는 점점 인구가 늘고 있는 지역들에 있는 공유 도로들 및 고속도로들의 교차로들에서의 교통 혼잡의 문제와 얼마간 유사하다. 기존의 GPS 내비게이션 및 교통 통제 시스템들이 이 교차로들에서의 현재 혼잡을 측정하고, 개개의 운전자들을 이러한 혼잡을 우회하게 경로 재설정하기 위해 최적의 경로들을 계산하는 반면, 임의의 특정의 운전자에 대한 최적의 경로를 미리 예측할 수 있는 그들의 능력이 교통 혼잡의 변동적인 성질에 의해 방해를 받는다.This problem is somewhat similar to that of traffic congestion at intersections of shared roads and highways in increasingly populated areas. Whereas existing GPS navigation and traffic control systems measure the current congestion at these intersections and calculate optimal routes to reroute individual drivers around this congestion, the optimal route for any particular driver Their ability to predict routes in advance is hampered by the fluctuating nature of traffic congestion.

Netflix와 같은 단일의 회사가 피크 인터넷 트래픽의 1/3 초과를 차지할 때, 인터넷을 통해 동시에 디지털 정보(특히 대량의 선형 데이터)를 전달하는 회사들은 인터넷 혼잡의 점점 더 변동적인 성질을 얼마간 해결해야만 한다. 이와 유사하게, 모바일 음성 및 데이터 사용량이 급증함에 따라, 규제된 RF 스펙트럼의 제한된 이용가능성은 고 대역폭 모바일 애플리케이션들을 개발하는 회사들에 특히 중요하다.When a single company like Netflix accounts for more than a third of peak Internet traffic, companies that simultaneously deliver digital information (especially large amounts of linear data) over the Internet have to deal with some of the increasingly fluctuating nature of Internet congestion. . Similarly, as mobile voice and data usage proliferates, the limited availability of regulated RF spectrum is particularly important for companies developing high-bandwidth mobile applications.

본 발명의 특정의 적용분야가 인터넷을 통해 스트리밍 비디오를 많은 수의 동시 사용자들에게 전달하는 것과 관련하여 본원에 기술되어 있지만, 본 발명의 원리들이 네트워크 컴포넌트들 사이의 공유 링크들의 제한된 용량이 디지털 포맷으로 변환될 수 있는 임의의 유형의 정보(예컨대, 오디오, 영상, 3D 모델 등)의 라우팅을 제약하는 다수의 다른 상황들에서 똑같이 적용된다. 본 발명의 다른 잠재적인 적용분야들은 (임의의 주어진 시점에서 기반이 되는 네트워크 내의 공유 링크들의 혼잡 레벨과 관련한), 예를 들어, VoIP, 회사 화상회의, 가상 현실, 멀티플레이어 게임, 및 각종의 다른 대역폭 집약적 적용분야들을 포함한다.Although a specific application of the present invention is described herein in connection with the delivery of streaming video over the Internet to a large number of concurrent users, the principles of the present invention are not limited to the limited capacity of shared links between network components in a digital format. The same applies in many other situations that constrain the routing of any type of information (eg audio, video, 3D model, etc.) that can be converted to . Other potential applications of the present invention (with respect to the congestion level of the shared links within the underlying network at any given point in time) include, for example, VoIP, corporate videoconferencing, virtual reality, multiplayer gaming, and a variety of other Includes bandwidth intensive applications.

이하에서 보다 상세히 논의될 것인 바와 같이, 본 발명은 인터넷과 같은 기반이 되는 네트워크 내의 컴포넌트 링크들에서의 제한된 용량 또는 "네트워크 혼잡"의 문제를 "해결"하지는 않지만, 그 대신에 그 링크들에서의 혼잡 레벨들의 예측들에 기초하여 동적으로 재구성되는 오버레이 네트워크들의 노드들 간의 디지털 콘텐츠의 라우팅을 최적화하기 위해 그 링크들에 걸쳐 네트워크 트래픽을 모니터링하고 분석함으로써 그 제한된 용량을 효율적으로 사용한다.As will be discussed in more detail below, the present invention does not “solve” the problem of limited capacity or “network congestion” at component links within an underlying network, such as the Internet, but instead at those links. It uses its limited capacity efficiently by monitoring and analyzing network traffic across its links to optimize the routing of digital content between nodes in overlay networks that are dynamically reconfigured based on predictions of congestion levels in the network.

비디오 스트리밍 이벤트video streaming event

인터넷 및 IP 기반 라우팅의 등장 이후로, 인터넷을 통해 비디오를 스트리밍하는 많은 접근법들이 나왔다. 그들의 상대적 장점들 및 단점들을 논의하기 전에, 해결될 문제를 한 걸음 물러나서 살펴보는 것이 도움이 된다. 비디오 콘텐츠를 인터넷을 통해 배포하기 위해, 비디오 콘텐츠가 먼저 포착되고 디지털화되어야만 한다. 비디오 콘텐츠를 "실황으로(live)" 포착되고(또는 디지털적으로 발생되고) 인터넷을 통해 배포되는 "이벤트"라고 생각할 수 있다. 본원에서 비디오 이벤트라고 하는 것은 비디오와 오디오 둘 다는 물론, 임의의 연관된 메타데이터의 포착 또는 발생을 포함한다.Since the advent of the Internet and IP-based routing, many approaches to streaming video over the Internet have emerged. Before discussing their relative strengths and weaknesses, it is helpful to take a step back and look at the problem to be solved. In order to distribute video content over the Internet, the video content must first be captured and digitized. You can think of video content as an "event" that is captured "live" (or digitally generated) and distributed over the Internet. Reference herein to a video event includes the capture or generation of both video and audio, as well as any associated metadata.

비디오 이벤트들이 예정된 것이거나 예정되지 않은 것일 수 있다. 예를 들어, "수퍼 볼"은 그의 발생 시각이 미리 알려져 있다는 점에서 예정된 이벤트인 반면, 다른 이벤트들(예컨대, 자연 재해, 유아의 첫 걸음, 또는 심지어 VOD(video on demand))은 그들이 사전 경고가 거의 또는 전혀 없이 발생할 수 있다는 점에서 예정되지 않은 것이다.Video events can be scheduled or unscheduled. For example, the "Super Bowl" is a scheduled event in that the time of its occurrence is known in advance, while other events (eg, natural disasters, toddler's first steps, or even video on demand (VOD)) have been forewarned. is unscheduled in that it may occur with little or no

비디오 콘텐츠가 디지털화된 비디오 파일을 발생시키기 위해 전체로서 포착될 수 있고, 이어서 임의의 다른 유형의 파일이 (예컨대, FTP(file transfer protocol)를 통해) 전송될 때 디지털화된 비디오 파일이 인터넷을 통해 배포된다. 그렇지만, 이러한 "파일 전송" 접근법은 수신자가 비디오 콘텐츠를 시청(재생)하는 것에 지연을 부과한다 - 즉, 수신자는 비디오 콘텐츠를 시청하기 전에 파일 전체가 전송될 때까지 기다려야만 한다 -. 디지털화된 비디오의 파일 크기들이 비교적 큰 경우에, 이 지연은 상당할 수 있다.Video content can be captured as a whole to generate a digitized video file, which is then distributed over the Internet when any other type of file is transferred (e.g., via file transfer protocol (FTP)). do. However, this "file transfer" approach imposes a delay on the receiver viewing (playing) the video content - that is, the receiver must wait until the entire file is transferred before viewing the video content. If the file sizes of the digitized video are relatively large, this delay can be significant.

비디오 콘텐츠가 따라서, 콘텐츠가 여전히 송신되고 있는 동안 사용자들이 콘텐츠를 계속하여 수신하고 시청할 수 있도록, 종종 사용자들에게 "스트리밍"된다. 본질적으로, 비디오 콘텐츠는 사용자들에게 전달되는 작은 파일들 또는 "비디오 세그먼트들"(예컨대, 길이가 1 내지 10초임) - 수신될 때 사용자들이 시청하기 시작할 수 있음 - 의 순서화된 선형 스트림(ordered linear stream)으로 분할된다. 연속적인 비디오 콘텐츠 스트림을 지연 또는 지터 없이 시청하기 위해, 각각의 비디오 세그먼트가 일정한 간격을 두고 - 예컨대, 30 fps(frames per second)로 - 재생되어야만 한다. 그렇지만, 이전 세그먼트의 재생이 끝나기 전에 각각의 세그먼트가 수신된다면, 비디오 세그먼트들이 일정한 간격을 두고 수신될 필요가 없다는 것에 유의해야 한다.Video content is thus often “streamed” to users so that they can continue to receive and view the content while it is still being transmitted. Essentially, video content is an ordered linear stream of small files or “video segments” (eg, 1 to 10 seconds in length) that are delivered to users, which users can begin viewing when received. divided into streams). In order to view a continuous stream of video content without delay or jitter, each video segment must be played at regular intervals - eg, at 30 frames per second (fps). However, it should be noted that the video segments need not be received at regular intervals if each segment is received before playback of the previous segment ends.

이벤트가 예정된 것이든 예정되지 않은 것이든 간에, 이벤트가 "실황으로"(즉, 이벤트가 발생할 때) 스트리밍되거나 이벤트의 발생 이후 언제라도 스트리밍하기 위해 "녹화"될 수 있다. 예를 들어, 수퍼 볼이 포착되고 이벤트가 발생할 때 실황으로 스트리밍되거나, 나중에 스트리밍하기 위해 녹화될 수 있을 것이다. Whether an event is scheduled or unscheduled, the event may be streamed "live" (ie, when the event occurs) or may be "recorded" for streaming at any time after the event has occurred. For example, the Super Bowl could be caught and streamed live as the event occurs, or recorded for later streaming.

마지막으로, 이벤트가 예정된 것이든 예정되지 않은 것이든 간에, 그리고 이벤트가 녹화되거나 이벤트가 발생할 때 실황으로 스트리밍되든 간에, 이벤트가 "실시간"으로(즉, 송신기로부터 수신기로 대체로 지각가능하지 않은 지연을 갖고) 스트리밍되거나 수초 또는 심지어 수분 동안 전송이 지연될 수 있다. 예를 들어, 인터넷을 통하지만 실시간으로 스트리밍되지 않는 텔레비전 프로그램(예컨대, 야구 경기)의 시청자들은 서로 상이한 때에, 또는 케이블 또는 위성을 통해 방송된 동일한 프로그램을 보고 있는 시청자들과 상이한 때에 스트리밍된 이벤트를 경험할 수 있다. 이러한 지연들(특히 몇 초 초과인 경우)은, 네트워크 중심 메트릭들(예컨대, 라우터들 또는 다른 네트워크 자원들에 의해 야기되는 패킷 지연, 패킷 손실, 또는 지터)에 기초한 성능 척도인 "QoS(quality of service)"와 달리, 사용자의 "QoE(quality of experience)" - 즉, 사용자 중심 또는 애플리케이션 레벨 품질 관점 - 를 떨어뜨릴 수 있다.Finally, whether the event is scheduled or unscheduled, and whether the event is recorded or streamed live as it occurs, the event is "real time" (i.e., from the transmitter to the receiver with largely imperceptible delay). may be streamed) or delayed in transmission for seconds or even minutes. For example, viewers of a television program that is over the Internet but not streamed in real time (e.g., a baseball game) will experience the streamed event at a different time than viewers watching the same program broadcast over cable or satellite. can These delays (especially if greater than a few seconds) are called "quality of QoS", a measure of performance based on network-centric metrics (e.g., packet delay, packet loss, or jitter caused by routers or other network resources). service", it can degrade the user's "quality of experience" (ie, a user-centric or application-level quality perspective).

예를 들어, (지터 또는 다른 비디오 아티팩트들 이외에도) 시청자들이 동일한 이벤트를 상이한 때에 경험한다는 사실로 인해 시청자들 사이의 사회적 상호작용이 제약될 수 있다. 이것은 오늘날 아주 많은 (예정된 또는 예정되지 않은) 이벤트들이 아주 많은 상이한 방식들로 - 휴대폰들과 데스크톱 및 랩톱 컴퓨터들을 통해서는 물론, 끊임없이 발전하는 영역의 소비자 전자 디바이스들을 통해 액세스가능한 방송 라디오 또는 텔레비전으로부터 소셜 미디어 및 다른 인터넷 서비스들에 이르기까지 - 실시간으로 전달될 때 특히 문제가 된다.For example, social interaction between viewers may be constrained by the fact that they experience the same event at different times (in addition to jitter or other video artifacts). This means that today so many (scheduled and unscheduled) events are accessible in so many different ways - from broadcast radio or television accessible via mobile phones and desktop and laptop computers, as well as an ever-evolving field of consumer electronics devices to social media. Even to media and other Internet services - especially when delivered in real time.

따라서 비디오 스트리밍 시스템이 예정되지 않은 이벤트들은 물론 예정된 이벤트들을 핸들링하는 것, 실황 이벤트들은 물론 녹화된 이벤트들을 스트리밍하는 것, 그리고 시청자들에게 일관성있는 QoE를 제공하기 위해 그 이벤트들을 최소 지연으로 스트리밍하는 것이 바람직하다. 더욱이, 스트리밍 비디오 이벤트의 동시 시청자들의 수가 증가함에 따라, 일관성있는 QoE를 유지하는 것이 엄청난 문제가 된다. 그 때문에, 확장성이 임의의 이러한 시스템의 핵심 설계 목표이다.Therefore, it is desirable for a video streaming system to handle scheduled as well as unscheduled events, stream live as well as recorded events, and stream those events with minimal latency to provide consistent QoE to viewers. do. Moreover, as the number of concurrent viewers of a streaming video event increases, maintaining a consistent QoE becomes a formidable problem. As such, scalability is a key design goal of any such system.

최근의 비디오 스트리밍 기술의 발전에도 불구하고, 인터넷의 인프라스트럭처의 역사적인 "특별한(ad hoc)" 발전은 여전히 인터넷 기반 비디오 스트리밍에 상당한 장애물들 - 그 중 중요한 것은, 예측하기 어려운 가끔씩의 그리고 인터넷에 걸쳐 있는 위치들에서의 네트워크 혼잡을 초래하는 일관성없는 QoS임 - 을 제공한다. 본 발명의 주요 목적이 스트리밍 비디오 이벤트들의 시청자들에 대한 일관성있는 QoE를 유지하는 것이지만, 이 목적이 궁극적으로 제거될 수 없는 인터넷에 걸친 네트워크 혼잡에 의해 제약된다.Despite recent advances in video streaming technology, historic "ad hoc" advances in the Internet's infrastructure still pose significant obstacles to Internet-based video streaming - chief among them, unpredictable occasional and across the Internet. Inconsistent QoS leading to network congestion in locations where there is Although a primary objective of the present invention is to maintain a consistent QoE for viewers of streaming video events, this objective is ultimately limited by network congestion across the Internet that cannot be eliminated.

기반이 되는 인터넷 아키텍처Underlying Internet Architecture

ARPANET(인터넷 프로토콜 스위트(Internet protocol suite) 또는 TCP/IP를 구현하는 최초의 패킷 교환 네트워크) 및 나중의 NSFNET으로 시작하여, 인터넷 "백본(backbone)"은 통제를 분산시키고 정보가 그의 원하는 목적지에 도달하기 위한 대안의 통신(라우팅) 경로들을 제공함으로써 신뢰성 또는 "탄력성(resiliency)"을 제공하는 중복적인 "네트워크들의 네트워크 "(즉, 인터넷)이도록 설계되었다. 그러나, 라우터들 및 다른 공유 네트워크 자원들 간의 상이한 경로들을 따라가는 패킷들에 대해, 인터넷을 통해 일관성있는 QoS 또는 QoE를 유지하는 것은 극히 어려운 문제로 남아 있다.Beginning with ARPANET (the first packet-switched network implementing the Internet protocol suite, or TCP/IP) and later NSFNET, the Internet "backbone" distributed control and allowed information to reach its desired destination. It is designed to be a redundant "network of networks" (ie, the Internet) that provides reliability or "resiliency" by providing alternative communication (routing) paths for However, maintaining consistent QoS or QoE over the Internet for packets following different paths between routers and other shared network resources remains an extremely difficult problem.

인터넷 백본이 진화하고 민영화됨에 따라, 전통적인 백본 네트워크들과 장거리 전화 통신사업자들이 소유하고 있는 백본 네트워크들 사이에 중복 및 중첩이 나타났다. 본 명세서의 목적상, 우리는 고객들에게 직접 또는 다른 소규모 "ISP(internet service provider) 네트워크들을 통해 데이터를 전송하는 대규모 "공공(public)" 네트워크들과 데이터를 그 자체들 사이에서만 전달하거나, 대규모 ISP들 사이의 통로로서 역할하지만 데이터를 고객들에게 직접 제공하지 않는 대규모 "사설(private)" 백본 네트워크들을 구분한다. 어느 경우든지, 이러한 대규모 공공 및 사설 네트워크들은 전형적으로 광섬유 트렁크 라인(fiber-optic trunk line)들(예컨대, 네트워크 용량을 증가시키기 위해 함께 번들링된 다수의 광섬유 케이블들)을 통해 상호연결된 "광섬유 링(fiber ring)"으로서 구현된다.As the Internet backbone evolved and privatized, overlap and overlap emerged between traditional backbone networks and backbone networks owned by long-distance carriers. For purposes of this specification, we refer to large "public" networks that transmit data directly to customers or over other small "internet service provider (ISP) networks, and data only between themselves, or large ISPs." In either case, these large public and private networks are typically fiber-optic trunk line ) (e.g., multiple fiber optic cables bundled together to increase network capacity).

라우팅을 위해, 최다 네트워크 트래픽을 전달하는 최대 네트워크 제공자들(예컨대, 대규모 ISP들 및 사설 백본 네트워크들)은 "AS(autonomous system)" - 그 각각은 "ASN(autonomous system number)"을 할당받음 - 라고 알려진 IP 라우팅 프리픽스(IP routing prefix)들의 블록들을 할당받는다. 우리는 이 회사들이 소유하고 있는 대규모 광섬유 링들 각각을 ASN이라고 지칭한다. ASN들의 수가 근래에, 15년 전의 대략 5000개의 ASN들로부터 오늘날 전세계에 걸쳐 50,000개 초과의 ASN들로, 급격히 증가했다. 앞서 언급된 바와 같이, 많은 대규모 네트워크 제공자들은 또한 고객들에게 서비스하지 않지만 그 자신의 "공공 ASN들" 또는 다른 제공자들이 소유하고 있는 공공 ASN들에 연결될 수 있는 백본 광섬유 링 네트워크들(즉, 사설 ASN들)을 소유하고 있다.For routing purposes, the largest network providers carrying the most network traffic (e.g., large ISPs and private backbone networks) are called "autonomous systems" - each assigned an "autonomous system number" (ASN). blocks of IP routing prefixes, known as We refer to each of the large fiber optic rings owned by these companies as an ASN. The number of ASNs has increased dramatically in recent years, from approximately 5000 ASNs 15 years ago to over 50,000 ASNs worldwide today. As mentioned earlier, many large network providers also have backbone fiber optic ring networks (i.e., private ASNs) that do not service customers but can be connected to their own "public ASNs" or to public ASNs owned by other providers. ) owns.

상이한 회사들이 ASN들을 소유하고 있기 때문에, 그들은 ASN들에 걸쳐 그리고 전세계 인터넷 전체에 걸쳐 인터넷 트래픽의 라우팅을 용이하게 하기 위해 서로 계약을 체결한다. 각각의 ASN은, "BGP(border gateway protocol)"라고 알려진 라우팅 프로토콜을 이용하여, 다른 ASN에의 액세스를 제어하기 위해 종종 "피어링 포인트(peering point)"라고 지칭되는 라우터들의 뱅크를 이용한다. 임의의 주어진 ASN은 다수의 상이한 ASN들에 연결하기 위해 다수의 피어링 포인트들을 이용할 수 있다. 상호연결된 ASN들은 지리적으로 인접해 있을 수 있거나, 멀리 떨어져 있을 수 있으며, 큰 거리에 걸쳐 있는(예컨대, 국가들 또는 심지어 대양들에 걸쳐 있는) 긴 광섬유 트렁크들을 통해 연결될 수 있다. 공공 ASN들은 또한 "사설 ASN들" 또는 백본 네트워크들을 통해 상호연결될 수 있다.Because different companies own ASNs, they contract with each other to facilitate routing of Internet traffic across ASNs and throughout the worldwide Internet. Each ASN uses a bank of routers, often referred to as “peering points,” to control access to other ASNs, using a routing protocol known as “border gateway protocol (BGP).” Any given ASN may use multiple peering points to connect to multiple different ASNs. Interconnected ASNs may be geographically contiguous, or may be remote, and may be connected via long fiber optic trunks that span great distances (eg, spanning countries or even oceans). Public ASNs may also be interconnected via “private ASNs” or backbone networks.

ASN들 내에서 그리고 ASN들에 걸쳐 QoS를 모니터링하는 것은 극히 어렵다. 대규모 네트워크 제공자들은 그들의 ASN들 내에서의 라우팅 및 성능 정보(동적 혼잡 메트릭들을 포함함)의 상당 부분을 독점적인 것으로서 유지한다. BGP 라우터에의 TCP/IP 연결이 구축될 때 (현재 BPG 버전 4의) "오픈 메시지 포맷(Open Message Format)"이 특정 정보의 "데이터 덤프(data dump)"를 제공하지만, 이 메커니즘은 현실적인 문제로서 그다지 유용하지 않다. 많은 BGP 라우터들이 오픈 메시지 포맷을 지원하지 않는 반면, 다른 것들은 그것을 그냥 턴오프시킨다. 더욱이, 정보는 전형적으로 5분 늦은 것인데, 이는 인터넷에 걸쳐 혼잡 레벨들이 얼마나 자주 변하는지를 고려하면 비교적 긴 시간이다.It is extremely difficult to monitor QoS within and across ASNs. Large network providers keep a large portion of the routing and performance information (including dynamic congestion metrics) within their ASNs as proprietary. Although the "Open Message Format" (currently in BPG version 4) provides a "data dump" of certain information when a TCP/IP connection to a BGP router is established, this mechanism is a practical problem. not very useful as Many BGP routers do not support the open message format, while others just turn it off. Moreover, the information is typically 5 minutes late, which is a relatively long time considering how often congestion levels change across the Internet.

이러한 많은 양의 인터넷 트래픽이 ASN들을 상호연결시키는 비교적 고 대역폭의 피어링 포인트들을 거쳐 흐르기 때문에, 이 피어링 포인트들은 종종, ASN들 내의 "라스트 마일(last mile)" 문제(즉, 최종 사용자들과 그들의 "게이트웨이" ISP들 사이의 비교적 보다 낮은 대역폭의 유선 및 무선 연결에 걸친 혼잡) 이외에, 임의의 주어진 때에 인터넷에 걸친 혼잡의 상당 부분의 주요 "병목지점들" 또는 원인들이다.Because this large amount of Internet traffic flows through the relatively high-bandwidth peering points that interconnect ASNs, these peering points often address "last mile" issues within ASNs (i.e., end-users and their " Other than gateways (congestion across the relatively lower bandwidth wired and wireless connections between ISPs), they are the major "bottlenecks" or sources of a significant portion of congestion across the Internet at any given time.

예를 들어, ASN 피어링 포인트에 걸친 트래픽 부하가 증가할 때 피어링 포인트의 각각의 측면에 있는 ASN들에 있는 라우터들이 혼잡해진다. 환언하면, 이 라우터들은 RAM, CPU 및 다른 제한된 용량의 공유 자원들의 높은 이용율을 경험한다. 이 자원들에 대한 증가된 수요는 이 피어링 포인트들에 걸친 성능(예컨대, 비트 레이트)을 떨어뜨리고, 궁극적으로 손실된 데이터 패킷들을 초래할 수 있다. 인터넷에 걸친 네트워크 트래픽이 중앙에서 제어되지 않기 때문에, 임의의 주어진 때에 인터넷에 걸쳐 자주 변하는 "피어링 포인트 혼잡" 레벨들을 예측하기가 어렵다.For example, when the traffic load across an ASN peering point increases, the routers at the ASNs on each side of the peering point become congested. In other words, these routers experience high utilization of RAM, CPU and other limited capacity shared resources. Increased demand for these resources can degrade performance (eg, bit rate) across these peering points and ultimately result in lost data packets. Because network traffic across the Internet is not centrally controlled, it is difficult to predict the frequently changing "peering point congestion" levels across the Internet at any given time.

ASN들 내에서 그리고 ASN들에 걸쳐 일관성있는 QoS를 보장할 수 없는 경우, 스트리밍 비디오 이벤트들의 시청자들에 대해 일관성있는 QoE를 유지하는 것이 아주 어렵게 된다. 인터넷을 통해 비디오를 스트리밍하는 임의의 시스템은, 특히 아주 많은 인터넷 트래픽이 흐르는 ASN 피어링 포인트들에서, 공유 라우터들의 끊임없이 변하는 혼잡 레벨들 및 신뢰할 수 없음을 겪는다. 비디오를 인터넷을 거쳐 그리고 특히 이 ASN 피어링 포인트들을 거쳐 많은 수의 동시 시청자들에 스트리밍할 때 이 문제가 악화된다.If consistent QoS cannot be guaranteed within and across ASNs, it becomes very difficult to maintain consistent QoE for viewers of streaming video events. Any system streaming video over the Internet suffers from ever-changing congestion levels and unreliability of shared routers, especially at ASN peering points where a lot of Internet traffic flows. This problem is exacerbated when streaming video over the Internet and especially over these ASN peering points to a large number of concurrent viewers.

기존의 비디오 스트리밍 접근법Traditional video streaming approaches

인터넷을 통해 비디오를 스트리밍하는 다양한 접근법들이 지난 수십년에 걸쳐 발전하였으며, (인터넷 위에) 오버레이 네트워크 토폴로지들을 발생시키고 이 오버레이 네트워크들을 따라 있는 네트워크 노드들 사이에서 비디오 콘텐츠를 전달하는 상이한 기법들을 특징지우고 구별하기 위해 광범위한 용어가 이용된다. 상이한 접근법들을 비교할 때, GPS 내비게이션 비유로 잠시 돌아가서, 임의의 2개의 지점들 또는 노드들 사이에서 이동하는 데 필요한 시간에 영향을 미치는 인자들 - 즉, 거리, 속력 및 혼잡(전형적으로 상이한 경로를 따라 경로 재설정하는 것에 의해 해결됨) - 을 살펴보는 것이 도움이 된다.Various approaches to streaming video over the Internet have evolved over the past decades, characterizing and distinguishing different techniques for generating overlay network topologies (on the Internet) and delivering video content between network nodes along these overlay networks. A broad term is used to When comparing different approaches, returning briefly to the GPS navigation analogy, the factors that affect the time required to travel between any two points or nodes - namely distance, speed and congestion (typically along different routes) resolved by rerouting) - it is helpful to look at

인터넷 상에서 패킷들을 라우팅하는 것과 관련하여, 거리(또는 지리적 근접성)는 직접적인 관련성이 없는데, 그 이유는 패킷들이 거의 광속으로 이동하기 때문이다. 그렇지만, 속력은 경로를 따라 마주치게 되는 정류소들 또는 장애물들의 수, 또는 이와 관련하여 2개의 노드들 사이의 중간 라우터들에서 마주치게 되는 "홉들"의 수에 의해 영향을 받는다. 이와 같이, 2개의 노드들은, 그들의 지리적 근접성에 관계없이, 비교적 적은 홉들만큼만 떨어져 있는 경우 서로 "근방에"("네트워크 근접성" 내에) 있다고 말해질 수 있다. 2개의 노드들 사이의 경로를 따라 있는 중간 노드들에서의 혼잡은 전체적인 이동 시간에 영향을 미치고, 트래픽을 동적으로 재라우팅하는 것 - 즉, 2개의 노드들 사이의 경로를 결정하는 오버레이 네트워크들을 동적으로 재구성하는 것 - 에 의해 해결될 수 있다. 이하에서 논의될 것인 바와 같이, 이 인자들은 인터넷을 통해 비디오를 스트리밍하는 상이한 접근법들 간의 주요 차이점들을 설명하는 역할을 한다.When it comes to routing packets on the Internet, distance (or geographic proximity) has no direct relevance, since packets travel at nearly the speed of light. However, speed is affected by the number of stops or obstacles encountered along the route, or in this regard the number of "hops" encountered in intermediate routers between two nodes. As such, two nodes, regardless of their geographic proximity, may be said to be "nearby" (within "network proximity") to each other if they are only relatively few hops apart. Congestion at intermediate nodes along the path between two nodes affects the overall travel time, and dynamically reroutes traffic - i.e. overlay networks that determine the path between two nodes. Reconstructing with - can be solved by As will be discussed below, these factors serve to account for key differences between different approaches to streaming video over the Internet.

인터넷 외에 비디오를 전달하는 가장 흔한 방법은 - 예컨대, 전용 케이블 또는 위성 인프라스트럭처를 통해 - 비디오 스트림(예컨대, 텔레비전 프로그램)을 "발신 지점(point of origin)"으로부터 모든 목적지 시청자들로 동시에 "브로드캐스팅"하는 것이다. LAN에서 정보를 모든 네트워크 노드들로 브로드캐스팅하기 위해 네트워크 허브들이 이용될 수 있지만, 인터넷을 통해 스위치들 및 라우터들을 거쳐 비디오 세그먼트들의 패킷들을 브로드캐스팅하는 것은 아주 비실용적이고 비효율적이다. 대부분의 네트워크 사용자들은 임의의 주어진 비디오 콘텐츠의 "채널"을 시청하는 것에 관심이 없을 것이고, 비디오 세그먼트들을 다른 라우터들로 브로드캐스팅하는 라우터들이 쉽게 압도될 것이기 때문에 발신 지점 근방에서 상당한 혼잡이 발생할 것이다. 브로드캐스트 해결책은 인터넷을 통해 단일의 발신 지점으로부터 언제라도 채널에 합류할 수 있는 많은 수의 동시 시청자들에게 비디오 콘텐츠 채널을 전달하는 데 전혀 실현가능하지 않다.The most common method of delivering video other than the Internet is “broadcasting” a video stream (eg, a television program) from a “point of origin” to all destination viewers simultaneously—eg, over a dedicated cable or satellite infrastructure. is to do Although network hubs can be used to broadcast information to all network nodes in a LAN, broadcasting packets of video segments across switches and routers across the Internet is very impractical and inefficient. Most network users will not be interested in watching any given "channel" of video content, and significant congestion will occur near the point of origin as routers broadcasting video segments to other routers will easily be overwhelmed. Broadcast solutions are not feasible at all to deliver a channel of video content over the Internet from a single point of origin to a large number of concurrent viewers who may join the channel at any time.

대안의 "멀티캐스트" 접근법은 각각의 비디오 세그먼트를 인터넷을 거쳐 발신 지점으로부터 미리 정의된 노드들의 그룹들로 동시에 스트리밍하는 것을 포함한다. 이 접근법도 마찬가지로 인터넷을 통한 대규모 비디오 배포에는 비실용적이다. 더욱이, 멀티캐스팅 기능을 갖는 전용 라우터들과 같은, 특수 인프라스트럭처가 필요하며, 이것도 또한 비실용적이고 대규모 상업적 사용을 위해 엄청나게 비용이 많이 든다.An alternative "multicast" approach involves simultaneously streaming each video segment from a point of origin over the Internet to predefined groups of nodes. This approach is also impractical for large-scale video distribution over the Internet. Moreover, special infrastructure is required, such as dedicated routers with multicasting capability, which is also impractical and prohibitively expensive for large-scale commercial use.

브로드캐스트 및 멀티캐스트 기법들과 달리, 비디오 스트리밍에 대한 "유니캐스트" 기법은 (예컨대, 정의된 목적지 노드 IP 주소와 TCP/IP 연결을 구축하는 것에 의해) 발신 지점으로부터 단일의 목적지 노드로 비디오 세그먼트들을 송신하는 것을 포함한다. 그러나, 많은 수의 유니캐스트 패킷들을 각각의 시청측 노드(viewing node)에 전달하는 것이 또한 발신 지점에 또는 그 근방에 있는 라우터들을 재빨리 압도할 것이고, 이러한 많은 수의 동시 전송들을 핸들링하기에 충분한 대역폭을 제공하는 것의 엄청난 비용은 말할 것도 없이, 앞서 살펴본 이유들 중 다수로 인해 일관성있는 QoS를 달성하지 못할 것이다.Unlike broadcast and multicast techniques, a "unicast" technique for video streaming is a video segment from an originating point to a single destination node (eg, by establishing a TCP/IP connection with a defined destination node IP address). including sending them. However, delivering a large number of unicast packets to each viewing node will also quickly overwhelm the routers at or near the point of origin, with sufficient bandwidth to handle such a large number of simultaneous transmissions. You will not achieve consistent QoS for many of the reasons discussed above, not to mention the prohibitive cost of providing QoS.

(Netflix와 YouTube와 같은) 일부 VOD 회사들은 일반적으로 고가의 "에지 서버(edge-server)" 인프라스트럭처에 의존하는 유니캐스트 접근법의 변형들을 이용하고 있다. 이 접근법(때때로 CDN(content delivery network)이라고 지칭됨)은 인터넷에 걸쳐 많은 물리적 서버들을 설치하는 것 및 각각의 비디오 콘텐츠 채널의 사본들을 각각의 서버에 배포하는 것을 포함한다. 그 결과, 시청측 노드들은 원하는 비디오 콘텐츠를 (네트워크 근접성 내에 있는 - 시청측 노드로부터 단지 비교적 적은 홉들만큼 떨어져 있는 -) 근방의 서버로부터 수신할 수 있다.Some VOD companies (such as Netflix and YouTube) are using variations of the unicast approach that typically rely on expensive "edge-server" infrastructure. This approach (sometimes referred to as a content delivery network (CDN)) involves setting up many physical servers across the Internet and distributing copies of each video content channel to each server. As a result, viewing nodes can receive the desired video content from a nearby server (within network proximity - only relatively few hops away from the viewing node).

각각의 에지 서버는 전형적으로 상당한 대역폭과 계산 능력을 가지며, 본질적으로 개별적인 비디오 콘텐츠 소스 - 근방의 시청측 노드들은 이로부터 임의의 시점에서("주문 시에") 임의의 비디오 콘텐츠 채널을 획득할 수 있음 - 를 구성한다. 물리적 인프라스트럭처를 추가하는 이 접근법은 보다 많은 사람들이 인기있는 목적지들에 보다 신속하게(보다 적은 방향전환들 및 보다 느린 도로들에서 보다 적은 시간이 소비되는 것에 의해) 도달할 수 있게 하기 위해 부가의 고속도로들 및 진출로들을 건설하는 것과 얼마간 유사하다.Each edge server typically has significant bandwidth and computational power, and is essentially a separate video content source - from which nearby viewing-side nodes can obtain any channel of video content at any point in time ("on-demand"). Has - constitutes This approach of adding physical infrastructure adds additional value to allow more people to reach popular destinations more quickly (by fewer turns and less time spent on slower roads). It is somewhat similar to building highways and off-roads.

상이한 사용자들이 전형적으로 임의의 주어진 때에 상이한 비디오 채널들을 보고자 하지만, VOD 시스템들은 특정의 비디오 이벤트가 많은 수의 동시 시청자들로 스트리밍되어야만 하는 "피크" 수요 기간들(예컨대, 인기있는 텔레비전 시리즈의 마지막 회)에 가끔 직면하고, 이는 최대 스트리밍 비디오 회사의 인프라스트럭처조차도 압도할 수 있다 - 또는 적어도 그로 인해, (즉, 보다 흔한 비피크 수요의 기간들 동안) 빈번히 과소 사용되는 고가의 인프라스트럭처의 비효율적인 "최악의(worst-case)" 배치를 초래함 -. 대안의 VOD 해결책들은 (예를 들어, 미국 특허 공개 제2008/0059631호에서 논의된 바와 같이) 비디오 콘텐츠를 복제하여 네트워크 노드들 자체 간에 배포하는 것에 의해 고가의 에지 서버 인프라스트럭처를 필요없게 하려고 시도하였다.Although different users typically want to view different video channels at any given time, VOD systems use “peak” periods of demand (e.g., the final episode of a popular television series) when a particular video event must be streamed to a large number of concurrent viewers. , which can sometimes overwhelm even the largest streaming video company's infrastructure - or at least, the inefficient "worst case" of expensive infrastructure that is frequently underutilized (i.e., during more common periods of non-peak demand). results in a "worst-case" placement of -. Alternative VOD solutions have attempted to obviate the need for expensive edge server infrastructure by replicating and distributing video content among network nodes themselves (as discussed, for example, in US Patent Publication No. 2008/0059631). .

고가의 에지 서버 인프라스트럭처가 있는 경우 또는 없는 경우, 이 VOD 해결책들 중 어느 것도 예정되지 않은 비디오 이벤트들에 대한 QoS 문제를 해결하지 않는데, 그 이유는 그들 모두가 - 근방의 비디오 콘텐츠 소스를 보장하기 위해 - 미리 알려져 있는 콘텐츠를 갖는 인터넷 전체에 걸쳐 있는 "프리-시딩(pre-seeding)" 에지 서버들 또는 시청측 노드들에 의존하기 때문이다. 실황의 예정되지 않은 이벤트를 스트리밍하는 것은, 이 VOD 시스템들 중 어느 것에 의해서도 해결되지 않는 문제인, 이 에지 서버들 또는 시청측 노드들 모두에게로의 비디오 콘텐츠의 실시간 동시 전달을 필요로 할 것이다.With or without an expensive edge server infrastructure, none of these VOD solutions solve the QoS problem for unscheduled video events, because they all - to ensure a nearby video content source. For - because it relies on "pre-seeding" edge servers or viewing nodes all over the internet with known content. Streaming a live, unscheduled event will require real-time simultaneous delivery of video content to all of these edge servers or viewing nodes, a problem not addressed by either of these VOD systems.

보다 최근에, 몇몇 유니캐스트 기반 비디오 스트리밍 표준들(예컨대, "WebRTC")이 어떤 플러그인들도 필요로 함이 없이 데스크톱과 모바일 웹 브라우저들 간의 비디오의 "점대점" 스트리밍을 용이하게 하도록 발전하였다. 많은 기존의 스마트폰들은 물론, 데스크톱과 랩톱 컴퓨터들은 브라우저간 비디오 스트리밍을 지원하는 WebRTC 라이브러리들은 물론, 시청측 노드가 그의 대역폭 및 CPU 능력을 실시간으로 검출하고 그 메트릭들의 변화들에 적응하기 위해 보다 낮은 또는 보다 높은 "비트 레이트"를 자동으로 요청할 수 있게 하는 "적응적 스트리밍" 라이브러리들을 포함한다.More recently, several unicast-based video streaming standards (eg, "WebRTC") have evolved to facilitate "point-to-point" streaming of video between desktop and mobile web browsers without requiring any plug-ins. Many existing smartphones, as well as desktop and laptop computers, have WebRTC libraries that support browser-to-browser video streaming, as well as a lower level for the viewing node to detect its bandwidth and CPU power in real time and adapt to changes in those metrics. Or "adaptive streaming" libraries that allow you to automatically request a higher "bit rate".

적응적 스트리밍 구현들은, 그 중에서도 특히, Apple의 "HLS(HTTP Live Streaming)", Microsoft의 "Smooth Streaming" 그리고 "MPEG-Dash" ISO 표준을 포함한다. 전형적인 점대점 비디오 스트리밍 시나리오에서, 수신측 노드는, 다가오는(예컨대, 다음의 8개의) 비디오 세그먼트들의 각각의 이용가능한 비트 레이트 버전의 위치들을 포함하는, "매니페스트 파일(manifest file)들"을 HTTP 서버에 주기적으로 요청한다. 예를 들어, 각각의 비디오 세그먼트가, 그의 해상도에 관계없이, 본질적으로 동일한 양의 시간 내에 전달되도록 하기 위해, 각각의 비디오 세그먼트는, 상이한 스트리밍 비트 레이트들(대역폭)을 필요로 하는 상이한 "비디오 해상도들"을 반영하는, 1080p, 720p 및 480p 버전들로 이용가능할 수 있다.Adaptive streaming implementations include, among others, Apple's "HTTP Live Streaming" (HLS), Microsoft's "Smooth Streaming" and the "MPEG-Dash" ISO standard. In a typical point-to-point video streaming scenario, the receiving node sends "manifest files" to the HTTP server, containing the locations of the available bit rate version of each of the upcoming (e.g., next 8) video segments. periodically request For example, each video segment has a different "video resolution" requiring different streaming bit rates (bandwidth) so that each video segment is delivered in essentially the same amount of time, regardless of its resolution. may be available in 1080p, 720p and 480p versions, reflecting the

(WebRTC를 지원하는 웹 브라우저들에 있는) 표준의 HTML5 비디오 플레이어들은, 비디오 콘텐츠를 재생하기 시작하기 전에, 전형적으로 3개의 비디오 세그먼트들을 버퍼링한다. 그들은 각각의 비디오 세그먼트에 대해 HTTP 요청을 HTTP 서버로 송신하기 위해 현재 매니페스트 파일을 사용한다. 송신측 노드는 이어서 수신측 노드의 웹 브라우저에서의 재생을 위해 WebRTC 표준들에 따라 (작은 "청크들"로 된) 각각의 비디오 세그먼트를 수신측 노드로 "푸시"한다. 수신측 노드가 적응적 스트리밍 구현들을 지원하고, 최근의 비디오 세그먼트들을 수신하는 데 필요한 시간이 상당히 증가하거나 감소하고 있다고 결정하는 경우, 수신측 노드는 매니페스트 파일에서의 선택 항목들 중에서 보다 낮은 또는 보다 높은 비트 레이트의 비디오 세그먼트들을 요청하는 것을 자동으로 시작한다. 환언하면, 수신측 노드는 그가 요청하는 비디오 세그먼트들의 해상도를 변화시키는 것에 의해 시간의 경과에 따라 그의 실제 대역폭에 "적응"한다.Standard HTML5 video players (in web browsers that support WebRTC) typically buffer three video segments before starting to play the video content. They use the current manifest file to send an HTTP request to the HTTP server for each video segment. The sending node then “pushes” each video segment (in small “chunks”) to the receiving node according to WebRTC standards for playback in the receiving node's web browser. If the receiving node supports adaptive streaming implementations and determines that the time required to receive recent video segments is increasing or decreasing significantly, then the receiving node may select a lower or higher value from among the selections in the manifest file. Automatically start requesting video segments of the bit rate. In other words, the receiving node “adapts” to its actual bandwidth over time by changing the resolution of the video segments it requests.

비디오 프레임의 "해상도"는 그의 폭 x 높이(예컨대, 1920 x 1080 또는 1080p)의 척도 또는 프레임 내의 픽셀들의 수인 반면, 그의 "비트 레이트"는 송신기로부터 수신기로 전송되는 초당 비트 수(bps)를 지칭한다. 예를 들어, 매초마다 30개의 1080p-해상도 비디오 프레임이 전달되고(30 fps(frames per second)) 각각의 컬러 픽셀이 24 비트를 포함하는(24 bpp(bits per pixel)) 경우, 비트 레이트는 거의 1.5 Tbps(1,492,992,000 bps - 즉, 1,492,992,000 = (1920 x 1080 ppf(pixels per frame)) x (24 bpp) x (30 fps) - 일 것이다.The "resolution" of a video frame is a measure of its width x height (e.g., 1920 x 1080 or 1080p) or the number of pixels in the frame, while its "bit rate" refers to the number of bits per second (bps) transmitted from the transmitter to the receiver do. For example, if 30 1080p-resolution video frames are delivered every second (30 frames per second (fps)) and each color pixel contains 24 bits (24 bits per pixel (bpp)), the bit rate is approximately 1.5 Tbps (1,492,992,000 bps - i.e. 1,492,992,000 = (1920 x 1080 ppf (pixels per frame)) x (24 bpp) x (30 fps) - would be

표준의 비디오 코덱들은 보다 낮은 유효 비트 레이트들(예컨대, 3 Mbps)을 생성하기 위해 압축(예컨대, MPEG2 압축) 및 다른 비디오 인코딩 기법들을 이용한다. 이상의 내용을 고려하여, "비트 레이트"와 "해상도"는 보다 높은 또는 보다 낮은 해상도의 비디오 프레임들을 제공하는 것에 의해 유효 비트 레이트를 증가시키거나 감소시킬 수 있다는 점에서 높은 상관관계가 있다. 따라서, 이 용어들이 이와 관련하여 본원에서 얼마간 서로 바꾸어 사용될 수 있다.Standard video codecs use compression (eg, MPEG2 compression) and other video encoding techniques to produce lower effective bit rates (eg, 3 Mbps). In view of the foregoing, "bit rate" and "resolution" are highly correlated in that the effective bit rate can be increased or decreased by providing video frames of higher or lower resolution. Accordingly, these terms may be used somewhat interchangeably herein in this regard.

WebRTC 및 적응적 스트리밍 표준들은 거의 모든 스마트폰 사용자가 실황 비디오 이벤트들을 포착하고 스트리밍할 수 있게 하고 또한 - 다른 개개의 스마트폰 사용자들로부터 다수의 비디오 콘텐츠를 호스팅하는 대규모 회사들까지에 이르는 - 이러한 사용자들이 다른 발신 지점으로부터 인터넷에 거쳐 발신되는 스트리밍 비디오 채널에 합류하게 할 수 있다. 그렇지만, 이 표준들은 점대점 비디오 스트리밍을 위해 설계되어 있고, 인터넷을 거쳐 많은 수의 동시 시청자들로 비디오 채널을 스트리밍하는 "비디오 전달" 문제를 해결하지 못한다.WebRTC and adaptive streaming standards enable virtually any smartphone user to capture and stream live video events, and also allow such users - from other individual smartphone users to large companies hosting large numbers of video content. to join a streaming video channel originating over the Internet from another originating point. However, these standards are designed for point-to-point video streaming and do not solve the "video delivery" problem of streaming a video channel over the Internet to a large number of simultaneous viewers.

이 문제를 해결하기 위해, 일부 비디오 스트리밍 회사들(예컨대, StreamRoot)은 전형적으로 비디오 콘텐츠가 하나의 시청측 노드로부터 다른 시청측 노드로 중계되는 "P2P(peer-to-peer)" 또는 메시 네트워크 토폴로지(때때로 "피어캐스팅(peercasting)"이라고 지칭됨)를 포함하는 접근법을 채택하였다. 비디오 스트리밍과 관련하여, 이 용어들은 시청측 노드들이 스트리밍 비디오 콘텐츠를 분산 방식으로 서로에게 중계할 수 있게 하는 인터넷 위에 구성된 오버레이 네트워크들을 지칭하기 위해 서로 바꾸어 사용될 수 있다. 그렇지만, 스트리밍 비디오를 많은 수의 동시 시청자들에 전달하는 것이, 예컨대, 파일 전송 또는 파일 공유 응용분야들에 대한, P2P 또는 메시 네트워크 토폴로지의 비스트리밍 사용들과 구별되어야만 한다.To address this problem, some video streaming companies (e.g., StreamRoot) typically use a "peer-to-peer" or mesh network topology in which video content is relayed from one viewing node to another. (sometimes referred to as “peercasting”). In the context of video streaming, these terms can be used interchangeably to refer to overlay networks constructed over the Internet that enable viewing-side nodes to relay streaming video content to each other in a distributed manner. However, delivery of streaming video to a large number of concurrent viewers should be distinguished from non-streaming uses of a peer-to-peer or mesh network topology, such as for file transfer or file sharing applications.

P2P 비디오 스트리밍 시스템들은 비디오 콘텐츠 채널을 인터넷을 통해 단일의 발신 지점으로부터 많은 수의 동시 사용자들에 전달한다. 이러한 시스템들은, 그들의 분산된 특성이 (예컨대, 콘텐츠를 다른 노드들을 통해 재라우팅하는 것에 의해) 개개의 장애 지점들로부터의 복원을 용이하게 하고, 보다 많은 노드들이 네트워크에 추가되기 때문에(즉, 보다 많은 그리고 보다 나은 라우팅 "중계" 옵션들이 이용가능하게 되기 때문에) 그들의 신뢰성 및 성능이 실제로 개선된다는 점에서, 탄력성이 있기도 하고 확장성이 있기도 하는 경향이 있다.Peer-to-peer video streaming systems deliver channels of video content from a single point of origin over the Internet to a large number of concurrent users. These systems work because their distributed nature facilitates recovery from individual points of failure (eg, by rerouting content through other nodes), and as more nodes are added to the network (ie, more They tend to be both flexible and scalable, in that their reliability and performance actually improve (as more and better routing "relay" options become available).

새로운 노드들이 비디오 채널에 합류하거나 기존의 노드들이 채널을 떠날(시청하는 것을 중단함) 때, P2P 비디오 스트리밍 시스템들은 오버레이 네트워크의 토폴로지를, 어느 정도, 동적으로 재구성해야만 한다 - 즉, 새로운 노드들을 수용하기 위해 네트워크 노드들 간의 라우팅 경로들 중 적어도 일부를 수정해야만 한다 -. 예를 들어, 새로운 노드가 추가될 때, 새로운 노드가 비디오 콘텐츠를 수신할(그리고 중계할) 근방의 기존 노드들을 선택하기 위해 그의 지리적 위치가 고려될 수 있다. When new nodes join a video channel or existing nodes leave (stop watching) the channel, peer-to-peer video streaming systems must, to some extent, dynamically reconfigure the topology of the overlay network - that is, accommodate the new nodes. To do this, at least some of the routing paths between network nodes must be modified -. For example, when a new node is added, its geographic location may be taken into account to select existing nodes in the vicinity from which the new node will receive (and relay) video content.

그러나, "피어"노드들이 그들의 지리적 근접성에만 기초하여 선택되는 경우, 그들은 - 예컨대, 상이한 ASN들에 존재하는 경우 - 여전히 서로 비교적 "멀리 떨어져" 있을 수 있다(그리고 네트워크 근접성 내에 있지 않을 수 있음). 그 결과, 그들 사이의 트래픽은 하나 이상의 어쩌면 혼잡한 피어링 포인트들을 지나갈 수 있다. 예를 들어, 가까운 지리적 근접성 내에 있는 2개의 노드들 간의 실제 지연시간이 그 노드들 각각과 지리적으로 멀리 떨어진 노드 사이의 지연시간들의 합을 초과할지도 모른다. 이 현상은 때때로 "TIV(triangle inequality violation)"라고 지칭되며, 이는 디지털 콘텐츠를 ASN 피어링 포인트들을 거쳐 오버레이 네트워크의 노드들 사이에서 전달하기 위해 BGP 라우팅에 의존하는 것의 단점들을 나타낸다.However, if "peer" nodes are selected based solely on their geographic proximity, they may still be relatively "distant" from each other (and not within network proximity) - eg, if they are in different ASNs. As a result, traffic between them may pass through one or more possibly congested peering points. For example, the actual latency between two nodes within close geographic proximity may exceed the sum of the latency between each of those nodes and a node that is geographically distant. This phenomenon is sometimes referred to as "triangle inequality violation" (TIV), and represents the drawbacks of relying on BGP routing to carry digital content between nodes in an overlay network over ASN peering points.

기존의 P2P 비디오 스트리밍 시스템들에서의 이 문제에 대한 하나의 이유는 그들이 인터넷의 기반이 되는 아키텍처와 "호환가능"하도록 구성되어 있지 않다는 것이다. 인터넷 위에 구축된 임의의 오버레이 네트워크 토폴로지는, 앞서 살펴본 무수히 많은 QoS 문제들과 같은, (새로운 노드들 또는 사라지는 노드들 이외의) 많은 차단 또는 장애 지점들의 영향을 여전히 받는다. 특히 ASN 피어링 포인트들에서, 인터넷의 기본적인 QoS 변동성을 해결하지 못하는 것에 의해, 이러한 시스템들은 그들의 사용자들에게 일관성있는 QoE를 제공함에 있어서 커다란 장애물들에 직면한다.One reason for this problem in existing peer-to-peer video streaming systems is that they are not configured to be "compatible" with the underlying architecture of the Internet. Any overlay network topology built on top of the Internet is still subject to many blocking or points of failure (other than new or fading nodes), such as the myriad QoS issues discussed above. By failing to address the fundamental QoS variability of the Internet, especially at ASN peering points, these systems face significant obstacles in providing consistent QoE to their users.

이와 같이, (GPS 네비게이션 시스템들과 같은) 기존의 P2P 비디오 스트리밍 시스템들은 피어 중계 노드(peer relay node)들을 선택하기 위해 (네트워크 근접성보다는) 지리적 근접성에 의존하고, 혼잡이 발생하면 "사후"에만 트래픽을 재라우팅한다. 더욱이, 동시 사용자들에게로의 선형 데이터의 실시간 스트리밍은 GPS 네비게이션 시스템들에서는 없는 부가의 제약조건 - 콘텐츠가 각각의 노드에 "동시에"도착해야만 함 - 을 부과한다. (보다 높은 속도의 경로들을 제공하기 위해 고속도로들 및 진출로들을 건설하는 것과 유사한) 에지 서버 및 다른 물리적 인프라스트럭처 접근법들은 비용이 많이 들고 또한 예정되지 않은 이벤트들 및 임의의 특정 이벤트의 높은 동시 사용률의 문제들을 적절하게 해결하지 못한다.As such, existing peer-to-peer video streaming systems (such as GPS navigation systems) rely on geographic proximity (rather than network proximity) to select peer relay nodes, and traffic only “after the fact” when congestion occurs. reroute the Moreover, real-time streaming of linear data to concurrent users imposes an additional constraint that is not present in GPS navigation systems - the content must arrive at each node "at the same time." Edge servers and other physical infrastructure approaches (similar to building highways and ramps to provide higher speed routes) are costly and also suffer from unscheduled events and high concurrency rates of any particular event. Doesn't solve problems properly.

따라서, 앞서 논의된 단점들을 해결하고, 클라이언트 노드들에 일관성있는 QoE를 제공하기 위해, 오버레이 네트워크들을 생성하고 동적으로 재구성함에 있어서 (특히, 아주 많은 인터넷 트래픽이 흐르는 ASN 피어링 포인트들에서의) 인터넷의 기반이 되는 아키텍처를 고려하는 디지털 콘텐츠 전달 시스템이 필요하다.Thus, in order to address the disadvantages discussed above, and to provide consistent QoE to client nodes, creating and dynamically reconfiguring overlay networks (especially at ASN peering points through which a great deal of Internet traffic flows) is of the importance of the Internet. A digital content delivery system that considers the underlying architecture is needed.

본 발명에 따르면, 신규의 방법들 및 아키텍처들의 다양한 실시예들이, (1) 기반이 되는 네트워크의 컴포넌트들(예컨대, ASN들 및 그들을 상호연결시키는 피어링 포인트들)을 상호연결시키는 공유 링크들의 맵 - 컴포넌트들 중 하나의 컴포넌트 내의(예컨대, ASN 내의) 각각의 노드의 위치를 포함함 - 을 유지하는 것; (2) 기반이 되는 네트워크(인터넷) 위에 구축된 하나 이상의 오버레이 네트워크들을 따라 그 공유 링크들(ASN 피어링 포인트들)을 지나가는 노드들 사이의 네트워크 트래픽을 모니터링함으로써 메트릭들을 발생시키는 것; (3) 시간의 경과에 따라 변하는 공유 링크들(ASN 피어링 포인트들)의 용량을 반영하는 혼잡 레벨들을 예측하기 위해 시간의 경과에 따라 메트릭들 및 맵을 분석하는 것; 및 (4) 오버레이 네트워크들을 따라 클라이언트 노드들 사이의 디지털 콘텐츠의 최적의 경로들을 발생시키기 위해, 예측된 혼잡 레벨들에 기초하여, 오버레이 네트워크들의 토폴로지를 동적으로 재구성하는 것에 의해, 기반이 되는 네트워크(예컨대, 인터넷) 상의 노드들의 사용자들에게 일관성있는 QoE를 제공하는 디지털 콘텐츠 전달 시스템에 대해 개시되어 있다.In accordance with the present invention, various embodiments of novel methods and architectures provide (1) a map of shared links interconnecting components of an underlying network (e.g., ASNs and peering points interconnecting them) - maintaining - including the location of each node within one of the components (eg, within an ASN); (2) generating metrics by monitoring network traffic between nodes traversing their shared links (ASN peering points) along one or more overlay networks built on top of the underlying network (Internet); (3) analyzing metrics and maps over time to predict congestion levels that reflect the capacity of shared links (ASN peering points) that change over time; and (4) the underlying network by dynamically reconfiguring the topology of the overlay networks, based on predicted congestion levels, to generate optimal paths of digital content between client nodes along the overlay networks ( A digital content delivery system that provides consistent QoE to users of nodes on, eg, the Internet, is disclosed.

본 발명의 "가상 방송"시스템의 특정의 실시예들이 (에지 서버들 또는 다른 고가의 물리적 인프라스트럭처를 필요로 하지 않으면서) 하나 이상의 비디오 콘텐츠 채널들 - 각각의 비디오 콘텐츠 채널은 단일의 발신 지점으로부터 상이한 때에 채널에 합류할 수 있는 어쩌면 많은 수의 동시 시청자들로 실시간으로 스트리밍됨 - 의 시청자들에게 일관성있는 QoE를 제공하는 것과 관련하여 본원에 기술된다. 이하에서 보다 상세히 설명될 것인 바와 같이, 우리는 동시 사용자들에게로의 선형 콘텐츠의 유니캐스트 스트리밍과 관련하여 "가상 방송"이라는 용어를 사용한다. 사용자들의 관점에서 볼 때, 콘텐츠를 라우팅하기 위해 유니캐스트 스트리밍이 이용되지만, 사용자들이 콘텐츠를 "동시에" 수신한다는 점에서, 콘텐츠가 사용자들에게 "브로드캐스팅"된다. 본 발명의 다른 실시예들이, 네트워크 컴포넌트들 사이의 공유 링크들의 제한된 용량이 디지털 포맷으로 변환될 수 있는 임의의 유형의 정보의 라우팅을 제약하는 다수의 다른 상황들에서, 본 기술분야의 통상의 기술자에게 명백할 것이다.Certain embodiments of the "virtual broadcasting" system of the present invention (without requiring edge servers or other costly physical infrastructure) can provide one or more channels of video content - each video content channel from a single point of origin. It is described herein with respect to providing consistent QoE to viewers - streamed in real time, possibly to a large number of concurrent viewers who may join the channel at different times. As will be explained in more detail below, we use the term "virtual broadcasting" in connection with unicast streaming of linear content to concurrent users. From the users' point of view, unicast streaming is used to route the content, but the content is "broadcast" to the users in that they receive the content "simultaneously". Other embodiments of the present invention may be useful in many other situations where the limited capacity of shared links between network components constrains the routing of any type of information that can be converted to digital format, for those skilled in the art. will be clear to

본 명세서의 목적상, 다수의 상이한 채널들을 동시에 수신하는 단일의 노드는, 각각이 단일의 채널에 의해 정의되는, 개별적인 오버레이 네트워크들 상의 별개의 노드로 간주될 수 있다. VOD와 관련하여, 특정의 프로그램의 각각의 개별적인 "방영(showing)"은 그 자체의 시청측 노드들의 네트워크를 갖는 개별적인 채널로 간주될 수 있다.For purposes of this specification, a single node receiving multiple different channels simultaneously may be considered a separate node on separate overlay networks, each defined by a single channel. In the context of VOD, each individual "showing" of a particular program can be considered a separate channel with its own network of viewing-side nodes.

본 발명의 시스템은 예정되지 않은 이벤트들은 물론 예정된 이벤트들을 핸들링하는 것, 실황 이벤트들은 물론 녹화된 이벤트들을 스트리밍하는 것, 그리고 - 인터넷의 QoS 변동성에 영향을 받는 인터넷 위에 구축된 오버레이 네트워크들에서 구현되고 있음에도 불구하고 - 많은 수의 동시 사용자들 간에 일관성있는 QoE를 유지하는 확장성이 높은 방식으로 그 이벤트들을 최소의 지연으로 실시간으로 스트리밍하는 것을 할 수 있다. (특히 임의의 주어진 ASN 내의) 동시 사용자들의 수가 증가함에 따라 시스템의 성능과 사용자들의 QoE가 실제로 개선된다.The system of the present invention handles scheduled as well as unscheduled events, streams live events as well as recorded events, and is implemented in overlay networks built over the Internet that are subject to the QoS variability of the Internet. Despite this - it is possible to stream those events in real time with minimal latency in a highly scalable manner that maintains consistent QoE across large numbers of concurrent users. As the number of concurrent users (especially within any given ASN) increases, the performance of the system and the QoE of the users actually improves.

클라이언트-서버 아키텍처는 서버측 라우팅 결정을 중앙집중화하는 데 이용된다. 비디오 콘텐츠의 분산 스트리밍 전달은 비디오 콘텐츠가 각각의 비디오 채널의 시청측 노드들 간에 중계(즉, 시청측 노드들로 "푸시")될 수 있게 하는 동적으로 재구성가능한 P2P 오버레이 네트워크들을 통해 이루어진다. 클라이언트 노드들은 비디오를 시청하거나 재생하기 위해 표준의 HTML5 비디오 플레이어들(대부분의 데스크톱 및 모바일 웹 브라우저들에 내장되어 있음)를 이용할 수 있고, 비디오 세그먼트들의 수신을 관리하는 것과 그 비디오 세그먼트들을 다른 노드들로 중계하는 것은 물론, 다양한 성능 메트릭들을 모니터링하는 것과 같은, 부가의 기능을 구현하기 위해 (Javascript와 같은) 커스텀 임베디드 코드에 의존한다. 다른 실시예들에서, 이러한 기능 중 일부 또는 전부가 커스텀 애플리케이션 또는 모바일 앱에 통합될 수 있다.A client-server architecture is used to centralize server-side routing decisions. Distributed streaming delivery of video content is achieved through dynamically reconfigurable peer-to-peer overlay networks that allow video content to be relayed (ie, “pushed” to) viewing nodes of each video channel. Client nodes can use standard HTML5 video players (built into most desktop and mobile web browsers) to watch or play video, manage the receipt of video segments and send them to other nodes. It relies on custom embedded code (such as Javascript) to implement additional functionality, such as monitoring various performance metrics, as well as relaying to . In other embodiments, some or all of these functions may be incorporated into a custom application or mobile app.

본 발명의 시스템은 데스크톱 및 모바일 웹 브라우저들 간의 "점대점" 비디오 스트리밍을 용이하게 하고, 보다 낮은 또는 보다 높은 비트 레이트의 비디오 세그먼트들을 자동으로 요청하는 것에 의해 노드 대역폭의 변화들에 적응한다. 일 실시예에서, 가상 방송 시스템은 웹 브라우저 플러그인들을 필요로 함이 없이 비디오 스트리밍을 용이하게 하기 위해 그리고 노드들이, 대역폭 및 CPU 용량과 같은, 그들의 수행 능력을 검출할 수 있게 하기 위해, WebRTC 및 적응적 스트리밍 표준들(HLS, MPEG-Dash 또는 Smooth Streaming 등)을 비롯한, 유니캐스트 표준들을 이용한다.The system of the present invention facilitates "point-to-point" video streaming between desktop and mobile web browsers and adapts to changes in node bandwidth by automatically requesting lower or higher bit rate video segments. In one embodiment, the virtual broadcasting system uses WebRTC and adaptation to facilitate video streaming without requiring web browser plug-ins and to enable nodes to detect their performance capabilities, such as bandwidth and CPU capacity. It uses unicast standards, including traditional streaming standards (such as HLS, MPEG-Dash or Smooth Streaming).

각각의 이벤트가, 다수의 동적으로 재구성가능한 오버레이 네트워크들을 통한 동시 사용자들에게로의 각각의 채널의 "발신 지점" 전달("point-of-origin" delivery)을 위해, 중앙 "가상 방송 서버"에 제공된다. 이벤트들은, 가상 방송 서버로 완전한 파일들로서 전송되든 실황으로 스트리밍되든 간에, 거의 모든 소스(CDN 포함)로부터 획득될 수 있다. WebRTC를 이용하는 실시예들에서, WebRTC를 구현하는 스마트폰을 갖는 임의의 사용자는, 오버레이 네트워크들을 통해 사용자들에 차후에 전달하기 위해, 녹화된 비디오 이벤트들을 업로드하거나 이벤트들을 실황으로 포착하여 가상 방송 서버에 업로드할 수 있다(또한 가상 방송 서버로부터 스트리밍되는 다른 채널들을 시청할 수 있음).Each event is presented to a central "virtual broadcast server" for "point-of-origin" delivery of each channel to concurrent users across multiple dynamically reconfigurable overlay networks. do. Events can be acquired from almost any source (including CDNs), whether sent as complete files to a virtual broadcast server or streamed live. In embodiments using WebRTC, any user with a smartphone implementing WebRTC can upload recorded video events or capture events live to a virtual broadcast server for later delivery to users over overlay networks. You can upload (and watch other channels streamed from the virtual broadcast server).

가상 방송 서버는, 일 실시예에서, 각각의 채널에 대한 발신 지점 - 이로부터 비디오 세그먼트들이 인터넷 위에 구축된 동적으로 재구성가능한 오버레이 네트워크들을 통해 전달됨 - 으로서 역할하는 "POI 콘텐츠 서버"를 포함한다. 비디오 세그먼트들은 전형적으로, 비디오 이벤트의 발신측 게시자(originating publisher)에 의해 결정되는 바와 같이, 크기가 고정되어 있다(예컨대, 1 내지 10초). 비디오 세그먼트들은 클라이언트 노드들에 의해 시청되고, 오버레이 네트워크들에 의해 정의된 경로들을 따라 노드에서 노드로 "푸시"(즉, WebRTC 표준에 따라 개별 고정 크기 "청크들"로서 중계)된다. 일 실시예에서, 각각의 비디오 세그먼트는 MPEG2 전송 프로토콜을 통해 스트리밍될 때 최대 효율을 위해 UDP 데이터그램 "패킷"의 크기와 일치하도록 64KB 청크들로 분할된다.The virtual broadcast server, in one embodiment, includes a "POI content server" that serves as the point of origin for each channel, from which video segments are delivered via dynamically reconfigurable overlay networks built over the Internet. Video segments are typically of a fixed size (eg, 1 to 10 seconds), as determined by the originating publisher of the video event. Video segments are viewed by client nodes and "pushed" from node to node along paths defined by overlay networks (ie, relayed as individual fixed-size "chunks" according to the WebRTC standard). In one embodiment, each video segment is divided into 64 KB chunks to match the size of a UDP datagram "packet" for maximum efficiency when streamed over the MPEG2 transport protocol.

대부분의 경우에 비디오 세그먼트들이 각각의 클라이언트 노드로 효과적으로 푸시되지만, 일 실시예에서, 클라이언트 노드는 비디오 세그먼트의 청크들 모두가 제 시간에 도착하지 않았다는 것을 검출할 수 있고, (즉, "폴백" 피딩 위치("fallback" feeding location)인) POI 콘텐츠 서버에 비디오 세그먼트를 요청하기 위해 현재 매니페스트 파일을 이용할 수 있다.In most cases video segments are effectively pushed to each client node, but in one embodiment, a client node can detect that not all of the chunks of a video segment have arrived in time (i.e., "fallback" feeding You can use the current manifest file to request video segments from the POI content server (which is the "fallback" feeding location).

각각의 노드가 POI 콘텐츠 서버에 의해 이용가능하게 되는 채널에 합류하려고 할 때, 노드는 (다른 실시예에서, 가상 방송 서버의 도움을 받아) 그 노드가 존재하는 특정의 ASN을 결정한다. 가상 방송 서버는, 이 ASN 피어링 포인트들에서의 혼잡 레벨들의 예측들에 기초하여 동적으로 재구성되는 오버레이 네트워크들 간의 채널 콘텐츠의 라우팅을 최적화하기 위해, 인터넷(ASN들 및 다양한 피어링 포인트 상호연결부들을 포함함)의 동적 "ASN 상호연결 맵" 및 다양한 모니터링된 성능 메트릭들과 함께, 이 "ASN 위치" 정보를 이용한다. 다른 실시예에서, 가상 방송 서버는 또한 이 프로세스를 돕기 위해, 각각의 노드의 ASN 위치에 부가하여, 각각의 노드의 지리적 위치를 이용한다.As each node attempts to join a channel made available by the POI content server, the node (in another embodiment, with the help of the virtual broadcast server) determines the particular ASN on which that node resides. A virtual broadcast server, including the Internet (including ASNs and various peering point interconnections), to optimize routing of channel content between overlay networks that are dynamically reconfigured based on predictions of congestion levels at these ASN peering points. ), along with a dynamic "ASN interconnection map" and various monitored performance metrics, using this "ASN location" information. In another embodiment, the virtual broadcast server also uses each node's geographic location, in addition to each node's ASN location, to assist in this process.

일 실시예에서, 오버레이 네트워크들의 토폴로지들은 시청측 노드들 간의 비디오 세그먼트들의 라우팅 경로들을 정의하고, 채널의 각각의 비디오 세그먼트에 대해 (전체적으로 또는 부분적으로) 동적으로 재구성된다. 다른 실시예에서, 그들은 비디오 세그먼트의 각각의 청크에 대해 (전체적으로 또는 부분적으로) 동적으로 재구성된다. 이러한 방식으로, 비디오 채널의 각각의 비디오 세그먼트에 대한 최적의 라우팅 경로들을 결정함에 있어서 인터넷의 아키텍처(또한 ASN 피어링 포인트들에서의 예측된 혼잡 레벨들)가 고려된다. 다른 실시예에서, 오버레이 네트워크들을 따라 있는 경로들 중 일부 또는 전부가 (이러한 경로들이 최적이 아닐지라도) 비디오 세그먼트들을 제시간에 전달할 수 있는 경우, 이러한 경로들은, 미리 정의된 혼잡 문턱값이 충족되거나 다른 충분히 중대한 문제가 식별될 때까지, 재구성되지 않는다.In one embodiment, the topologies of overlay networks define routing paths of video segments between viewing-side nodes, and are dynamically reconstructed (in whole or in part) for each video segment of a channel. In another embodiment, they are dynamically reconstructed (in whole or in part) for each chunk of a video segment. In this way, the architecture of the Internet (as well as predicted congestion levels at ASN peering points) is taken into account in determining optimal routing paths for each video segment of a video channel. In another embodiment, if some or all of the paths along the overlay networks can deliver video segments in time (even if these paths are not optimal), then these paths meet a predefined congestion threshold or It is not reconstructed until other sufficiently significant problems are identified.

일 실시예에서, 클라이언트 노드들은, 예를 들어, 인터넷에 걸친 라스트 마일 문제들 및 QoS 문제들(ASN 피어링 포인트들에서의 혼잡을 포함함)은 물론, 가상 방송 시스템 자체의 하나 이상의 채널들의 동시 시청자들의 수로 인한 혼잡과 관련된 성능 문제들을 모니터링한다. 그들은 인터넷을 거쳐 그리고 ASN들을 거쳐 지정된 사이트들과 접촉하는 데 필요한 시간은 물론, 비디오 세그먼트들을 다른 노드들로 중계하는 데 필요한 시간을 모니터링한다. 클라이언트에 의해 모니터링된 메트릭들은 동적 라우팅 결정을 내리는 데 사용하기 위해 가상 방송 서버로 전달된다. 일 실시예에서, 가상 방송 서버는 표준의 WebSocket 프로토콜들을 통해 클라이언트 노드들과 통신하기 위해 "시그널링 서버(Signaling Server)"를 포함한다.In one embodiment, the client nodes are capable of handling, for example, last mile issues and QoS issues (including congestion at ASN peering points) across the Internet as well as concurrent viewers of one or more channels of the virtual broadcasting system itself. Monitor performance issues related to congestion due to the number of They monitor the time required to relay video segments to other nodes, as well as the time required to contact designated sites across the Internet and across ASNs. Metrics monitored by the client are forwarded to the virtual broadcast server for use in making dynamic routing decisions. In one embodiment, the Virtual Broadcast Server includes a "Signaling Server" to communicate with client nodes via standard WebSocket protocols.

클라이언트 노드들은 임의로, 사용자들이 비디오 이벤트를 포착하여 가상 방송 서버에 실시간으로 업로드할 수 있게 하는, "업로더(Uploader)"를 포함한다. 임의의 클라이언트 노드로부터 가상 방송 서버로의 경로가 다수의 ASN들을 지나갈 수 있기 때문에, 비디오 이벤트의 스트리밍을 용이하게 하고 패킷들이 중간 라우터들에서 지연되거나 차단되는 것을 방지하기 위해 커스텀 "샤워링(showering)" 프로토콜이 사용된다. 일 실시예에서, 클라이언트 노드들은 또한 가상 방송 서버 상의 "스플래시 추출기(Splash Extractor)" 검색 엔진을 통해 "동향(trending)"이벤트들(본원에서 "스플래시(splash)들"이라고 지칭됨)를 검색하고 볼 수 있으며, 스플래시 추출기 검색 엔진은 스플래시들을 식별하고, 사용자 검색들에 기초하여, 사용자들이 그렇지 않았으면 POI 콘텐츠 서버를 통해 이용가능하게 되지 않을 동향 이벤트들을 인터넷을 통해 스트리밍하고 볼 수 있게 한다.The client nodes optionally include an "Uploader", which allows users to capture video events and upload them to a virtual broadcast server in real time. Since the path from any client node to the virtual broadcast server may cross multiple ASNs, custom "showering" is used to facilitate streaming of video events and prevent packets from being delayed or blocked at intermediate routers. "The protocol is used. In one embodiment, the client nodes also search for "trending" events (referred to herein as "splashes") via the "Splash Extractor" search engine on the Virtual Broadcast Server and The splash extractor search engine identifies splashes and, based on user searches, allows users to stream and view trending events over the Internet that would otherwise not be available through the POI content server.

채널에 합류하라고 요청할 때, 노드들이 그들의 중계 능력 - 즉, 그들의 연결 유형(예컨대, 3G 또는 4G 셀룰러, WiFi, LAN 등)은 물론 그들의 CPU, 운영 체제 및 메모리 구성들과, 시간의 경과에 따라 모니터링되는 다른 고정된 그리고 가변적인 성능 메트릭들을 비롯한, 다양한 인자들로부터 추론되는, 그들의 신뢰할 수 있는 "업스트림" 대역폭 - 에 기초하여 가상 방송 서버에 의해 분류된다. 일 실시예에서, 노드들은 그들의 상대 중계 능력에 기초하여 3개의 레벨들로 분류된다. 최저 레벨 노드들("C" 노드들)은 비디오 세그먼트들을 시청할 수는 있지만 다른 노드들로 중계할 수는 없다. 중간 레벨 노드들("B" 노드들)은 비디오 세그먼트들을 시청할 수도 있고 ASN 내에서 중계할 수도 있다. 최고 레벨 노드들("A" 노드들)은 비디오 세그먼트들을 시청할 수 있고 ASN들 내의 다른 A 노드들로는 물론 ASN들을 거쳐 다른 A 노드들로 중계할 수 있다.When requesting to join a channel, nodes monitor their relay capabilities - i.e., their connection type (e.g., 3G or 4G cellular, WiFi, LAN, etc.) as well as their CPU, operating system and memory configurations, and over time are classified by the virtual broadcast server based on their trusted "upstream" bandwidth - inferred from a variety of factors, including other fixed and variable performance metrics. In one embodiment, nodes are classified into three levels based on their relative relay capabilities. The lowest level nodes (“C” nodes) can watch video segments but cannot relay them to other nodes. Mid-level nodes ("B" nodes) may watch the video segments and may relay them within the ASN. Top level nodes (“A” nodes) can view video segments and relay them to other A nodes within the ASNs as well as across ASNs.

다른 실시예에서, 노드 분류들이, 예를 들어, 모니터링된 성능 메트릭들 및 주어진 분류의 보다 많은 또는 보다 적은 중계 노드들에 대한 시스템의 현재 요구사항들에 기초하여, 동적으로 변경될 수 있다. 그에 부가하여, 비디오 세그먼트들을 중계하기에 충분한 A 노드들이 ASN 내에 존재하는 경우, A 노드는, B 노드로 취급될 것이지만, 필요한 경우(예컨대, 기존의 A 노드들이 채널을 떠나는 경우) A 노드로 격상될 수 있다는 것을 나타내는, "B:A"노드로 지정될 수 있다. 일 실시예에서, 개별 노드가 (좋든 나쁘든 간에) 성능의 현저한 변화를 나타내는 경우, 노드가 (예컨대, B 노드로부터 C 노드로, 또는 그 반대로) 재분류될 수 있고, 문제가 해결될 때, 그의 초기 분류로 복원될 수 있다.In another embodiment, node classifications may be dynamically changed, eg, based on monitored performance metrics and the system's current requirements for more or fewer relay nodes of a given classification. In addition, if there are enough A nodes within the ASN to relay the video segments, the A node will be treated as a B node, but promoted to an A node if necessary (e.g., when existing A nodes leave the channel). It can be specified as a "B:A" node, indicating that it can be. In one embodiment, if an individual node exhibits a significant change in performance (for better or for worse), the node may be reclassified (e.g., from a B node to a C node, or vice versa), and when the problem is resolved, It can be restored to its initial classification.

다른 실시예에서, 클라이언트 노드들이 비디오 세그먼트의 청크들을 다수의 다른 노드들로 중계하고 그들로부터 수신할 수 있게 하기 위해 클라이언트 노드들은 (예컨대, 그들의 능력 및 클라이언트 성능 메트릭들에 기초하여) 다수의 "슬롯들"을 할당받는다. 이 실시예에서, 클라이언트 노드들은 단지 하나의 "피딩"노드로부터 비디오 세그먼트를 수신하지만, 그 비디오 세그먼트를 다수의 다른 클라이언트 노드들에 "피드"하거나 중계할 수 있다. A 노드들은 최대 8개의 중계 슬롯들 - 4개는 동일한 ASN 내의 A 노드들로 중계하기 위한 것이고, 4개는 다른 ASN들에 있는 A 노드들로 -즉, ASN 피어링 포인트를 거쳐 - 중계하기 위한 것임 - 을 할당받는다. B:A 및 B 노드들은 그들의 ASN 내의 다른 클라이언트 노드들(즉, 다른 B:A, B 및 C 노드들)로 중계하기 위한 최대 8개의 슬롯들을 할당받는다. 다른 실시예에서, 클라이언트 노드는 다수의 다른 클라이언트 노드들에 의해 (예컨대, 다수의 착신 슬롯들에 청크들을 번갈아 나오게 하는 것에 의해) 피드될 수 있다. 이 기법은 보다 높은 성능이 요구되는 높은 비트 레이트(예컨대, 4K)의 비디오 스트림들에 대해 이용될 수 있다.In another embodiment, client nodes may (e.g., based on their capabilities and client performance metrics) multiple "slots" to enable client nodes to relay and receive chunks of a video segment to and from multiple other nodes. are assigned ". In this embodiment, client nodes receive video segments from only one "feeding" node, but may "feed" or relay the video segments to multiple other client nodes. A nodes have up to 8 relay slots - 4 for relaying to A nodes in the same ASN and 4 for relaying to A nodes in different ASNs - i.e. via the ASN peering point - is assigned B:A and B nodes are assigned up to 8 slots for relaying to other client nodes in their ASN (ie other B:A, B and C nodes). In another embodiment, a client node may be fed by multiple other client nodes (eg, by alternating chunks in multiple destination slots). This technique can be used for high bit rate (eg, 4K) video streams where higher performance is required.

다른 실시예에서, 특정 노드들은 (예를 들어, 그들의 능력 및 클라이언트 성능 메트릭들에 기초하여) 단일의 피더 노드(feeder node)로부터 비디오 세그먼트의 다수의 해상도들을 수신할 수 있다(또는, 대안의 실시예에서, 상이한 피더 노드들로부터 상이한 해상도들을 수신할 수 있다). 이 노드들의 업스트림 대역폭이 충분한 경우, 그들은 "폴리캐스팅(polycasting)"노드들로 간주될 수 있고, 필요한 정도까지, 비디오 세그먼트의 그 다수의 해상도들을 하나 이상의 지정된 노드들에 중계하거나 피드할 수 있다.In another embodiment, certain nodes may receive multiple resolutions of a video segment from a single feeder node (eg, based on their capabilities and client performance metrics) (or, alternative implementations In an example, different resolutions may be received from different feeder nodes). If the upstream bandwidth of these nodes is sufficient, they can be considered "polycasting" nodes and, to the extent necessary, relay or feed those multiple resolutions of a video segment to one or more designated nodes.

오버레이 네트워크들의 동적 재구성을 용이하게 하기 위해, 가상 방송 서버는 ASN 피어링 포인트들에 걸쳐 혼잡 레벨을 예측하기 위해 - 즉, 짧은 시간(예컨대, 1분) 후의 ASN 피어링 포인트의 혼잡 레벨을 예측하기 위해 - 성능 메트릭들을 계속하여 분석하는 "딥 매퍼(Deep Mapper)" 딥 러닝 엔진(deep learning engine)을 이용한다. 일 실시예에서, A 노드들 사이의 - 예컨대, ASN 내의 하나의 A 노드로부터 다른 ASN 내의 A 노드로의 - 각각의 잠재적인 ASN간 경로(inter-ASN path)에 대해 예측된 "혼잡 값(congestion value)"이 발생된다. 다른 실시예에서, 혼잡 값은 각각의 A 노드들의 쌍 사이의 최적의 경로에 대한 예측된 혼잡 레벨을 반영한다.To facilitate dynamic reconfiguration of overlay networks, the virtual broadcast server is used to predict the congestion level across the ASN peering points - that is, to predict the congestion level of the ASN peering point after a short period of time (eg, 1 minute). It uses a "Deep Mapper" deep learning engine that continuously analyzes performance metrics. In one embodiment, for each potential inter-ASN path between A nodes - e.g., from one A node in an ASN to an A node in another ASN - the predicted "congestion value" value)" is generated. In another embodiment, the congestion value reflects the predicted congestion level for the optimal path between each pair of A nodes.

일 실시예에서, 가상 방송 서버는 ASN간(inter-ASN) 및 ASN내(intra-ASN) 오버레이 네트워크들 둘 다를 발생시키고 (전체적으로 또는 부분적으로) 동적으로 재구성하기 위해 - 예컨대, ASN들 내에서뿐만 아니라 ASN들에 걸쳐 하나의 노드로부터 다른 노드로 푸시될 비디오 세그먼트들에 대한 최적의 경로를 결정하기 위해 - "오버레이 네트워크 생성기(Overlay Network Creator)"를 이용한다. 이 실시예에서, 오버레이 네트워크 생성기는 각각의 노드가 이용할 수 있는 이용가능한 슬롯들의 수는 물론, 각각의 노드가 수신하거나 중계할 수 있는 해상도들의 수를 고려한다.In one embodiment, the virtual broadcast server is configured to generate and (in whole or in part) dynamically reconfigure both inter-ASN and intra-ASN overlay networks - e.g. within ASNs as well as To determine the best path for video segments to be pushed from one node to another across ASNs - use the "Overlay Network Creator". In this embodiment, the overlay network generator takes into account the number of available slots each node can use, as well as the number of resolutions each node can receive or relay to.

오버레이 네트워크 생성기는, A 노드들의 토폴로지를 나타내는, ASN간 "가상 데이터 트렁크(Virtual Data Trunk)" 오버레이 네트워크를 (딥 매퍼의 도움을 받아) 발생시키고 동적으로 재구성한다. 환언하면, 오버레이 네트워크 생성기는 A 노드들 및 비디오 세그먼트가 ASN들 내의 그리고 (특히) ASN들에 걸쳐 있는 그 A 노드들 사이에서 - 즉, 어쩌면 혼잡한 ASN 피어링 포인트들을 통해 - 따라갈 링크들 또는 라우팅 경로들을 나타낸다.The overlay network generator generates (with the help of a deep mapper) and dynamically reconstructs an inter-ASN “Virtual Data Trunk” overlay network representing the topology of the A-nodes. In other words, the overlay network generator is the links or routing path that A nodes and video segments will follow between those A nodes within and (specifically) spanning ASNs—ie, possibly via congested ASN peering points. represent them

가상 데이터 트렁크는 (ASN들 내에 있는 것은 물론 ASN들에 걸쳐 있는) (예컨대, 현재 매니페스트 파일을 사용하여) 근방의 POI 콘텐츠 서버에 각각의 비디오 세그먼트를 요청하라고 지시받을 A 노드들의 세트는 물론, 그들 각각이 비디오 세그먼트를 푸시할 A 노드들의 세트 등을 식별한다. 그 결과, 그 비디오 세그먼트는 시청측 노드를 포함하는 모든 ASN에 걸쳐 확산될 것이다. 각각의 시청측 노드에 도달하기 위해, 세그먼트는 또한 시청측 노드들을 갖지 않는 중간 사설 백본 ASN들을 거쳐 이동할 수 있다.A virtual data trunk is a set of A nodes (that span ASNs as well as within ASNs) that will be instructed to request each video segment from a nearby POI content server (e.g., using the current manifest file), as well as their Each identifies a set of A nodes to push a video segment to, etc. As a result, the video segment will spread across all ASNs including the viewing node. To reach each viewing node, the segment may also travel over intermediate private backbone ASNs that do not have viewing nodes.

오버레이 네트워크 생성기는 또한, ASN 내의 A 노드들로부터 그 ASN 내의 B:A, B 및 C 노드들로 비디오 세그먼트를 중계하기 위해, 하나 이상의 ASN내 "스웜(Swarm)" 오버레이 네트워크들을 발생시킨다. 이 스웜 오버레이 네트워크들은 각각의 비디오 세그먼트에 대해(또는, 대안의 실시예에서, 비디오 세그먼트의 각각의 청크에 대해) (전체적으로 또는 부분적으로) 동적으로 재구성될 수 있다. 일 실시예에서, ASN 내의 각각의 스웜 오버레이 네트워크는 비디오 세그먼트를 수신하고, 시청하며 그 스웜 계층구조 내의 노드들 사이에서 중계(C 노드들은 제외)하는 B:A, B 및 C 노드들의 (ASN 내의 A 노드에 대한) 계층적 토폴로지를 나타낸다.The overlay network generator also generates one or more "swarm" overlay networks within the ASN to relay video segments from A nodes within the ASN to B:A, B and C nodes within the ASN. These swarm overlay networks may be dynamically reconstructed (in whole or in part) for each video segment (or, in an alternative embodiment, for each chunk of a video segment). In one embodiment, each swarm overlay network within the ASN has nodes B:A, B, and C (within the ASN A) hierarchical topology.

따라서, 본 발명의 가상 방송 시스템 및 방법은, 이러한 주요 혼잡 지점들에서의 혼잡 레벨들의 예측들에 기초하여 동적으로 재구성되는 가상 데이터 트렁크 및 스웜 오버레이 네트워크들의 노드들 사이에서의 디지털 콘텐츠의 라우팅을 최적화하기 위해 네트워크 트래픽을 모니터링하고 분석하는 것에 의해 ASN 피어링 포인트들 및 다른 주요 혼잡 지점들에서의 제한된 용량을 효율적으로 사용하고, 그로써 시스템 사용자들 간에 일관성있는 QoE를 유지한다.Thus, the virtual broadcasting system and method of the present invention optimizes the routing of digital content between nodes in swarm overlay networks and a virtual data trunk that is dynamically reconfigured based on predictions of congestion levels at these key congestion points. efficiently use the limited capacity at ASN peering points and other major congestion points by monitoring and analyzing network traffic in order to maintain consistent QoE among system users.

도 1은 인터넷 위에 동적으로 구성된 본 발명의 오버레이 네트워크들의 일 실시예를 나타내는 그래프;
도 2는 본 발명의 클라이언트 스트리밍 비디오 디바이스의 주요 클라이언트측 컴포넌트들의 일 실시예를 나타낸 블록도.
도 3은 본 발명의 가상 방송 서버의 주요 서버측 컴포넌트들의 일 실시예를 나타낸 블록도.
도 4는 본 발명의 동적 비디오 스트리밍 프로세스의 일 실시예를 나타낸 플로차트.
1 is a graph representing one embodiment of the dynamically configured overlay networks of the present invention over the Internet;
2 is a block diagram illustrating one embodiment of the main client-side components of the client streaming video device of the present invention;
3 is a block diagram illustrating one embodiment of the main server-side components of the virtual broadcasting server of the present invention;
4 is a flowchart illustrating one embodiment of the dynamic video streaming process of the present invention.

본 발명의 시스템들 및 방법들의 상세한 실시예들이 첨부 도면들에 예시되고 이하에서 기술된다. 먼저 본 발명이 도면들을 참조하여 이하에서 논의되는 특정의 실시예들로 제한되지 않는다는 것에 유의해야 한다.Detailed embodiments of the systems and methods of the present invention are illustrated in the accompanying drawings and described below. It should be noted first that the present invention is not limited to the specific embodiments discussed below with reference to the drawings.

앞서 살펴본 바와 같이, 본 발명의 특정의 적용분야가 인터넷을 통해 스트리밍 비디오를 많은 수의 동시 사용자들에 전달하는 것과 관련하여 본원에 기술되어 있지만, 본 발명의 원리들이 네트워크 컴포넌트들 사이의 공유 링크들의 제한된 용량이 임의의 유형의 디지털 콘텐츠의 라우팅을 제약하는 다수의 다른 상황들에서 똑같이 적용된다.As noted above, although a specific application of the present invention is described herein in connection with the delivery of streaming video over the Internet to a large number of concurrent users, the principles of the present invention can be applied to shared links between network components. Limited capacity applies equally in many other situations that constrain the routing of any type of digital content.

인터넷을 통해 스트리밍 비디오를 전달하는 것과 관련해서도, 본원에 기술되는 클라이언트 노드들과 서버 컴포넌트들 사이의 기능의 할당은 설계 절충안들의 결과이며, 이 기능의 상당 부분은 본 발명의 사상을 벗어남이 없이 클라이언트측 컴포넌트들과 서버측 컴포넌트들 간에 재할당될 수 있다. 이와 유사하게, 클라이언트측 기능이 단일의 모듈식 컴포넌트에 할당되거나 다수의 상이한 컴포넌트들에 걸쳐 분산될 수 있고, 하나 이상의 독립형 애플리케이션들 또는 모바일 앱들로서, 또는 독립형 애플리케이션들 또는 앱들과 Javascript 또는 다른 스크립팅 또는 프로그래밍 언어들의 조합으로서 구현될 수 있다. 더욱이, 서버측 컴포넌트들은 단일의 하드웨어 서버 상에, 또는 다수의 상이한 서버들에 걸쳐 구현될 수 있다. 이러한 기능은 또한 단일의 소프트웨어 모듈에 통합되거나 하나 이상의 하드웨어 서버들에 걸쳐 분산된 상이한소프트웨어 모듈들 간에 할당될 수 있다.Even in the context of delivering streaming video over the Internet, the allocation of functionality between client nodes and server components described herein is the result of design compromises, much of which is without departing from the spirit of the present invention. It can be reallocated between client-side components and server-side components. Similarly, client-side functionality can be assigned to a single modular component or distributed across multiple different components, as one or more standalone applications or mobile apps, or with standalone applications or apps and Javascript or other scripting or It can be implemented as a combination of programming languages. Moreover, server-side components may be implemented on a single hardware server or across multiple different servers. Such functionality may also be integrated into a single software module or allocated between different software modules distributed across one or more hardware servers.

마지막으로, 표준의 프로토콜들 및 라이브러리들(예컨대, HTTP, WebSocket, WebRTC, STUN 및 다양한 적응적 스트리밍 표준들)이 이용되는 그 실시예들에서, 이러한 표준의 프로토콜들 및 라이브러리들 중 일부 또는 전부에 의해 제공되는 기능이, 본 발명의 사상을 벗어나지 않으면서, 다른 표준의 또는 독점적 구현들로 대체될 수 있다.Finally, in those embodiments where standard protocols and libraries (e.g., HTTP, WebSocket, WebRTC, STUN, and various adaptive streaming standards) are used, some or all of these standard protocols and libraries The functionality provided by may be replaced with other standard or proprietary implementations without departing from the spirit of the present invention.

오버레이 네트워크overlay network

도 1은 인터넷 위에 매핑된 본 발명의 오버레이 네트워크들(100)의 일 실시예를 나타내는 그래프이다. 인터넷 자체가 무수히 많은 상이한 방식들로 예시될 수 있지만, 도 1은 인터넷을, 피어링 포인트들(120)을 통해 상호연결된, ASN(110) 광섬유 링들의 세트로서 예시하고 있다. 임의의 시점에서 특정의 비디오 채널을 시청하는 개개의 클라이언트 노드들이 각각의 ASN(110) 내부에 예시되어 있다. 비록 도 1에 도시되어 있지는 않지만, 다수의 채널들, 그리고 따라서 다수의 오버레이 네트워크들(100)의 세트들이 (일 실시예에서) 동시에 활성일 수 있다.1 is a graph illustrating one embodiment of overlay networks 100 of the present invention mapped over the Internet. Although the Internet itself can be illustrated in a myriad of different ways, FIG. 1 illustrates the Internet as a set of ASN 110 fiber optic rings interconnected through peering points 120 . Individual client nodes viewing a particular video channel at any point in time are illustrated within each ASN 110 . Although not shown in FIG. 1 , multiple channels, and thus multiple sets of overlay networks 100 , may be active simultaneously (in one embodiment).

앞서 살펴본 바와 같이, 가상 데이터 트렁크 오버레이 네트워크는, ASN(110)(직접 연결됨) 내에 있는 것은 물론 (즉, 피어링 포인트들(120)을 통해) ASN들(110)을 거치는, A 노드들(130) 사이의 상호연결들(175)을 나타낸다. 백본 커넥터(195)는, 어떤 상업적 노드들도 포함하지 않고 2개의 공공 ASN들(110)을 상호연결시키기만 하는 사설 ASN(도시되지 않음)을 통한, 2개의 ASN들(110) 사이의 A 노드들의 상호연결부를 나타낸다. 예를 들어, 백본 커넥터(195)는 ASN(110-f) 내의 A 노드(130)를 ASN(110-e)의 A 노드(130)와 연결시키는 것으로 도시되어 있다. 이 시나리오에서, 이 2개의 A 노드들(130) 사이의 트래픽은 다수의 "사설" 피어링 포인트들(120)(또는 사설 ASN들과의 다른 독점적 연결들)를 통해 이동할 수 있다.As noted above, the virtual data trunk overlay network is composed of A nodes 130 that are within ASN 110 (directly connected) as well as across ASNs 110 (i.e., via peering points 120). interconnections 175 between them. Backbone connector 195 is an A node between two ASNs 110, over a private ASN (not shown) that does not involve any commercial nodes and only interconnects the two public ASNs 110. represents the interconnection of them. For example, backbone connector 195 is shown connecting A node 130 in ASN 110-f with A node 130 in ASN 110-e. In this scenario, traffic between these two A-nodes 130 may travel over multiple “private” peering points 120 (or other proprietary connections with private ASNs).

앞서 언급된 바와 같이, 일 실시예에서, 2개의 상이한 공공 ASN들(110) 내의 A 노드들(130) 사이의 (즉, 피어링 포인트(120)를 통한) 연결들(175)의 경우와 같이, 이러한 연결들의 성능이 종단점들(즉, 2개의 A 노드들(130))에서만 모니터링될 수 있다. 동일한 ASN(110) 내의 2개의 A 노드들(130) 사이의 연결(175)을 따라가는 트래픽은, 어쩌면 혼잡한 피어링 포인트(120)를 통과하지 않기 때문에, ASN들(110)을 거치는 트래픽보다 비교적 더 빠를 가능성이 있을 것이다. A 노드들(130)로의/로부터의 백그라운드 커넥터(195) 및 연결들(175)이 단방향 화살표들로 예시되어 있지만, 이들은, 도 1에 예시된 모든 클라이언트 노드들 사이에서 양방향 연결이 지원된다는 사실에도 불구하고, 현재 단방향 라우팅 경로들만을 반영한다.As mentioned above, in one embodiment, such as in the case of connections 175 between A nodes 130 in two different public ASNs 110 (i.e., via peering point 120), The performance of these connections can be monitored only at the endpoints (ie the two A nodes 130). Traffic along a connection 175 between two A-nodes 130 within the same ASN 110 is relatively larger than traffic over ASNs 110, possibly because it does not traverse a congested peering point 120. It will likely be faster. Background connector 195 and connections 175 to/from A nodes 130 are illustrated with one-way arrows, despite the fact that bi-directional connections are supported between all client nodes illustrated in FIG. However, it reflects only the current one-way routing paths.

본 발명의 임의의 2개의 클라이언트 노드들 사이의 모든 트래픽이 공공 인터넷을 거쳐 가고, 따라서 QoS에 영향을 미치는 다양한 중간 라우터들(도시되지 않음)을 통과한다는 것에 유의해야 한다. 시스템은 ASN(110) 내에서는 물론 ASN들(110)(그리고 따라서 하나 이상의 피어링 포인트들(120))에 걸친 QoS 효과들을 모니터링한다. 일 실시예에서, 이러한 ASN내 및 ASN간 트래픽은 (가상 방송 서버의 지시에 따라) 각각의 클라이언트 노드에 의해 모니터링되고, (A 노드들(130) 사이의 가상 데이터 트렁크 오버레이 네트워크 및 ASN(110) 내의 각각의 A 노드(130)로부터 그 ASN(110) 내의 B(및 B:A) 노드들(140) 및 C 노드들(150)로의 스웜 오버레이 네트워크들을 비롯한) 오버레이 네트워크들(100)이 나타내는 노드들 및 라우팅 경로들의 동적 재구성을 위해 가상 방송 서버로 전달된다.It should be noted that all traffic between any two client nodes of the present invention goes over the public Internet and thus passes through various intermediate routers (not shown) which affect QoS. The system monitors QoS effects within ASN 110 as well as across ASNs 110 (and thus one or more peering points 120). In one embodiment, this intra-ASN and inter-ASN traffic is monitored by each client node (according to the direction of the virtual broadcast server), and (virtual data trunk overlay network between A nodes 130 and ASN 110). A node represented by overlay networks 100 (including swarm overlay networks from each A node 130 in the ASN 110 to B (and B:A) nodes 140 and C nodes 150 in that ASN 110 It is passed to the virtual broadcast server for dynamic reconfiguration of fields and routing paths.

도 1은, 이 오버레이 네트워크들(100)의 "현재 상태"가 주어진 경우, 클라이언트 노드들 사이에서 비디오 세그먼트가 따라가는 다양한 라우팅 경로들을 나타낸다. 환언하면, 도 1은, 일 실시예에서, 각각의 비디오 세그먼트에 대해(그리고, 대안의 실시예에서, 비디오 세그먼트의 각각의 청크에 대해) 동적으로 재구성될 수 있는 이 오버레이 네트워크들(100)의 현재 토폴로지를 예시한다. 임의의 특정 비디오 세그먼트에 대해, 오버레이 네트워크들(100)이 (전체적으로 또는 부분적으로) 재구성될 수 있거나 그렇지 않을 수 있는데, 그 이유는 이 결정이 시간의 경과에 따라 수집된 성능 메트릭들에 적어도 부분적으로 의존할 것이기 때문이라는 것에 유의해야 한다.1 shows the various routing paths that a video segment follows between client nodes, given the “current state” of these overlay networks 100 . In other words, Figure 1 shows a diagram of these overlay networks 100 that can be dynamically reconfigured, in one embodiment, for each video segment (and, in an alternative embodiment, for each chunk of a video segment). Illustrates the current topology. For any particular video segment, the overlay networks 100 may or may not be reconstructed (either in whole or in part), as this determination depends at least in part on performance metrics collected over time. It should be noted that it is because it will depend.

ASN(110-c)은, POI 콘텐츠 서버(도시되지 않음)가 ASN(110-c)에 또는 근방에(예컨대, 하나 또는 2개의 다른 ASN들(110)을 거쳐) 존재하고, 오버레이 네트워크들(100)을 따라 한 채널을 통해 비디오 세그먼트들의 스트리밍을 개시하기 위해 현재 비디오 세그먼트를 A 노드(130-a)로 전달하라는 HTTP 요청에 응답하는 시나리오를 나타낸다. 이하에서 보다 상세히 논의될 것인 바와 같이, POI 콘텐츠 서버는 전형적으로 각각의 비디오 세그먼트를 동일한 또는 근방의 ASN(110) 내의 다수의 요청측 A 노드들(130)에 전달할 것이고, 이 A 노드들(130)은 차례로 비디오 세그먼트를 오버레이 네트워크들(100)을 따라 다수의 다른 노드들로 푸시할 것이며, 그 결과 임의의 주어진 시점에서 클라이언트 노드들에 전달되고 그들로부터 중계되는 비디오 세그먼트들의 청크들의 다수의 동시 사본들의 "재배포"가 있게 된다.ASN 110-c is such that a POI content server (not shown) resides at or near ASN 110-c (e.g., via one or two other ASNs 110), and overlay networks ( 100) to respond to an HTTP request to forward the current video segment to the A node 130-a to initiate streaming of the video segments over a channel. As will be discussed in more detail below, a POI content server will typically deliver each video segment to multiple requesting A nodes 130 within the same or nearby ASN 110, which A nodes ( 130) will in turn push the video segment to a number of different nodes along the overlay networks 100, resulting in multiple concurrent chunks of video segments delivered to and relayed from client nodes at any given point in time. There will be "redistribution" of copies.

이 시나리오에서, A 노드(130-a)는 비디오 세그먼트를 2개의 다른 A 노드들(130) - 하나는 ASN(110-c) 내에 있고 다른 하나는 피어링 포인트(120)를 거쳐 ASN(110-a) 쪽에 있음 - 로 중계한다. 앞서 살펴본 바와 같이, 가상 데이터 트렁크 오버레이 네트워크는 비디오 세그먼트가 ASN들(110) 내에서 그리고 ASN들(110)을 거쳐 A 노드들(130) 간에 중계될 때 따라가는 라우팅 경로들을 나타낸다. 이와 같이, 이 시나리오에서, 비디오 세그먼트는 ASN(110-c) 내의 다수의 A 노드들(130) 사이에서뿐만 아니라, ASN(110-a)으로부터 다양한 피어링 포인트들(120)을 거쳐 다수의 직접 상호연결된 ASN들(즉, 110-a, 110-d, 110-f 및 110-g)로 중계되고, 이들로부터 비디오 세그먼트는 가상 데이터 트렁크 오버레이 네트워크의 다수의 홉(hop)들을 거쳐 다른 ASN들(110)로 추가로 중계된다.In this scenario, A node 130-a sends a video segment to two other A nodes 130 - one within ASN 110-c and the other via peering point 120 to ASN 110-a. ) on the side - relays to . As noted above, the virtual data trunk overlay network represents the routing paths that a video segment follows as it is relayed within and across ASNs 110 between A nodes 130 . Thus, in this scenario, a video segment is distributed between multiple A nodes 130 within ASN 110-c, as well as multiple directly interconnected networks from ASN 110-a over various peering points 120. are relayed to ASNs (i.e., 110-a, 110-d, 110-f, and 110-g), from which the video segment is transmitted over multiple hops of the virtual data trunk overlay network to other ASNs 110. additionally relayed to

이하에서 보다 상세히 설명될 것인 바와 같이, ASN(110) 내에서 요구되는 A 노드들(130)의 수는, 그 ASN(110) 내의 다른 클라이언트 시청측 노드들의 수는 물론 (그들의 분류, 열린 슬롯(open slot)들의 수 및 시간의 경과에 따라 모니터링된 성능 메트릭들에 의해 결정되는 바와 같은) 그들의 상대 능력과 같은, 다양한 인자들에 의존할 것이다. 예를 들어, ASN들(110-b, 110-f, 110-i 및 110-j) 각각이 단일의 A 노드(130)만으로 예시되어 있지만, 그들은 피드할 상이한 수의 다른 클라이언트 노드들을 갖는다(ASN(110-f) 내의 단일의 다른 노드와 ASN(110-i) 내의 다수의 다른 노드들을 비교).As will be explained in more detail below, the number of A nodes 130 required within an ASN 110 depends on the number of other client-viewing nodes within that ASN 110 (their class, open slots, etc.) number of open slots and their relative capabilities (as determined by performance metrics monitored over time). For example, although each of ASNs 110-b, 110-f, 110-i and 110-j are illustrated with only a single A node 130, they have a different number of other client nodes to feed (ASNs). Compare a single other node in (110-f) with multiple other nodes in ASN (110-i).

노드의 모니터링된 업스트림 대역폭이 몇 개의 노드들에 직접 피드할 것인지(즉, 몇 개의 발신 슬롯(outgoing slot)들이 사용될 것인지)를 결정함에 있어서의 주요 인자이지만, 이 중계들이 얼마나 신속하게 수행되는지(전형적으로 1ms 미만)가 주어지면 (비디오 세그먼트를 하나의 노드로부터 다음 노드로, 이하 마찬가지로 중계하는) ASN(110) 내의 노드들의 "체인(chain)"의 길이가 크게 관련이 없다는 것을 인식하는 것이 중요하다. 예를 들어, 외부 ASN들(110)(ASN(110-g) 및 ASN(110-j)) 내의 2개의 A 노드들은 물론 ASN(110-1) 내의 2개의 B 노드들(130)에 직접 피드하는, ASN(110-i) 내의 단일의 A 노드는 4개의 발신 슬롯들을 사용한다(이 실시예에서, 비교적 높은 모니터링된 업스트림 대역폭을 반영함). 그러나, ASN(110-i) 내의 단일의 A 노드로부터 간접적으로 피드되는 B 노드들(140)과 C 노드들(150)의 긴 체인은 그의 업스트림 대역폭의 반영이 아니다.While a node's monitored upstream bandwidth is a major factor in determining how many nodes it will directly feed (i.e., how many outgoing slots will be used), how quickly these relays can be performed (typically It is important to note that the length of the "chain" of nodes within the ASN 110 (which relays a video segment from one node to the next, and so on) is largely irrelevant given . For example, two A nodes in external ASNs 110 (ASN 110-g and ASN 110-j) feed directly to two B nodes 130 in ASN 110-1 as well as , a single A node in ASN 110-i uses four outgoing slots (in this example, reflecting the relatively high monitored upstream bandwidth). However, the long chain of B nodes 140 and C nodes 150 that are indirectly fed from a single A node within ASN 110-i is not a reflection of its upstream bandwidth.

각각의 ASN(110) 내에, 비디오 세그먼트를 그 ASN (110) 내에서 각각의 A 노드(즉, 스웜 오버레이 네트워크의 "루트"노드)로부터 그 스웜 오버레이 네트워크 내의 다양한 B(및 B:A) 노드들(140) 및 C 노드들(150)로 중계하기 위해 하나 이상의 스웜 오버레이 네트워크들이 발생된다(이 실시예에서, 각각의 비디오 세그먼트에 대해 동적으로 재구성됨). (ASN(110-h)에 예시된 2개의 스웜 오버레이 네트워크들과 비교하여) 단지 하나의 스웜 오버레이 네트워크가 ASN(110-c)에 예시되어 있지만, 각각의 ASN(110) 내에 발생된 스웜 오버레이 네트워크들의 수(그리고 각각의 스웜 오버레이 네트워크의 내부 토폴로지)는 그 ASN(110) 내의 클라이언트 시청측 노드들의 수는 물론 현재 및 과거의 성능 메트릭들, 열린 슬롯들의 수 등과 같은, 다양한 인자들에 의존할 것이다.Within each ASN 110, video segments are routed from each A node within that ASN 110 (i.e., the "root" node of the swarm overlay network) to the various B (and B:A) nodes within that swarm overlay network. One or more swarm overlay networks are generated (in this embodiment, dynamically reconfigured for each video segment) to relay to 140 and C nodes 150. Although only one swarm overlay network is illustrated in ASN 110-c (compared to the two swarm overlay networks illustrated in ASN 110-h), a swarm overlay network generated within each ASN 110 The number of swarm overlay networks (and the internal topology of each swarm overlay network) will depend on various factors, such as the number of client viewing nodes within that ASN 110 as well as current and past performance metrics, number of open slots, etc. .

앞서 살펴본 바와 같이, ASN(110-b) 내의 A 노드(130-b)와 같은, 클라이언트 노드는 다수의 다른 클라이언트 노드들로부터(이 경우에, 상이한 ASN들(110-a 및 110-d) 내의 2개의 다른 A 노드들(130)로부터) 비디오 세그먼트를 수신할 수 있다. 일 실시예에서, 이 2개의 다른 피딩 노드들은 성능 이유로 비디오 세그먼트의 청크들을 A 노드(130-b)로 송신하는 것을 교대로 행한다 - 예컨대, 그 이유는 이 청크들이, 보다 상세히 설명될 것인 바와 같이, 혼잡 레벨들이 연속적으로 모니터링되는 피어링 포인트들(120)을 거치기 때문이다 -. 다른 실시예들에서, 이것이 중복성을 위해 행해질 수 있다 - 예컨대, 그 이유는 (피어링 포인트들(120)의 혼잡과는 별도로 또는 그에 부가하여) 과거의 성과 메트릭들에 기초하여 피딩 노드들의 신뢰성이 의심스러울 수 있기 때문이다 -.As noted above, a client node, such as A node 130-b in ASN 110-b, may receive requests from multiple other client nodes (in this case, in different ASNs 110-a and 110-d). may receive a video segment from two different A nodes 130). In one embodiment, these two different feeding nodes take turns sending chunks of a video segment to node A 130-b for performance reasons - e.g., because these chunks, as will be described in more detail, As such, congestion levels are continuously monitored through peering points 120 -. In other embodiments, this may be done for redundancy - e.g., because the reliability of the feeding nodes is questionable based on past performance metrics (apart from or in addition to congestion of the peering points 120). Because it can be embarrassing -.

성능 메트릭들이 모니터링되고, 비디오 세그먼트들이 중계되며, 오버레이 네트워크들(100)이 동적으로 재구성되는 방법들은, 이 방법들을 구현하는 주요 클라이언트측(도 2) 및 서버측(도 3) 기능 컴포넌트들의 논의 이후에, 도 4와 관련하여 이하에서 보다 상세히 탐구된다.The methods by which performance metrics are monitored, video segments are relayed, and overlay networks 100 are dynamically reconfigured are discussed after discussion of the main client-side (FIG. 2) and server-side (FIG. 3) functional components that implement these methods. , which is explored in more detail below with respect to FIG. 4 .

클라이언트 스트리밍 비디오 디바이스Client Streaming Video Device

도 2를 참조하면, 클라이언트 디바이스(200)는 본 발명의 클라이언트 스트리밍 디바이스의 주요 컴포넌트들의 일 실시예를 나타낸다. 클라이언트 디바이스(200)는 데스크톱 또는 랩톱 컴퓨터는 물론, 스마트폰 또는 다른 모바일 디바이스, 또는, 스트리밍 비디오와 같은, 스트리밍 콘텐츠를 핸들링할 수 있는 거의 모든 다른 소비자 전자 디바이스로서 구현될 수 있다. 클라이언트 디바이스(200)는, 본 기술분야에 널리 공지되어 있는, CPU(212), 메모리(214), 운영 체제(216), 네트워크 어댑터(217), 디스플레이(218) 및 카메라(219)를 비롯한, 어떤 표준의 하드웨어 및 소프트웨어 컴퓨팅 컴포넌트들 및 관련 주변기기들(210)을 포함한다. 클라이언트 디바이스(200)는 네트워크 노드가 되기 위해 그리고 스트리밍 비디오 콘텐츠를 수신하고, 디스플레이하며 본 발명의 가상 방송 시스템의 다른 네트워크 노드들 사이에서 중계하기 위해, 어떤 표준의 라이브러리들(220)과 함께, 이 컴포넌트들 및 주변기기들(210)을 이용한다.Referring to Figure 2, a client device 200 represents one embodiment of the main components of the client streaming device of the present invention. Client device 200 may be implemented as a desktop or laptop computer, as well as a smartphone or other mobile device, or almost any other consumer electronic device capable of handling streaming content, such as streaming video. Client device 200 includes CPU 212, memory 214, operating system 216, network adapter 217, display 218 and camera 219, as are well known in the art. It includes any standard hardware and software computing components and associated peripherals 210 . The client device 200, together with certain standard libraries 220, to become a network node and to receive, display and relay streaming video content among other network nodes in the virtual broadcasting system of the present invention, this Components and peripherals 210 are used.

본 발명은 디바이스들 사이에서 비디오 콘텐츠를 스트리밍하는 것을 용이하게 하기 위해 이용될 수 있는 네트워크 프로토콜들 및 다른 기능을 구현하는 어떤 표준의 라이브러리들(220)(대부분의 스마트폰들은 물론 많은 다른 컴퓨팅 디바이스들에도 있음)을 이용한다. 예를 들어, 어떤 플러그인들도 필요로 함이 없이 비디오 콘텐츠가 2명의 스마트폰 사용자들 사이에서 스트리밍되고 그들의 모바일 웹 브라우저들 상에 디스플레이될 수 있다. 표준의 라이브러리들(220)은 (비디오 콘텐츠를 스트리밍하기 위한 브라우저간 통신을 용이하게 하는) WebRTC(222) API들, (클라이언트 대역폭 및 CPU 용량의 변화들의 실시간 검출에 "적응"하기 위해 스트리밍 비트 레이트들의 자동 조정을 가능하게 하는), 그 중에서도 특히, HLS, MPEG-Dash, 및 Smooth Streaming과 같은, 다양한 적응적 스트리밍(224) 구현들, (단일의 TCP/IP 연결을 통한 고속 양방향 클라이언트-서버 통신을 용이하게 하는) WebSocket(226) 프로토콜, 및 (웹 서버들과 클라이언트 웹 브라우저들 사이의 덜 빈번한 표준의 통신을 위한) HTTP(228)를 포함한다.The present invention provides some standard libraries 220 (most smartphones as well as many other computing devices) that implement network protocols and other functionality that can be used to facilitate streaming video content between devices. also) are used. For example, video content can be streamed between two smartphone users and displayed on their mobile web browsers without requiring any plug-ins. Libraries 220 of the standard include the WebRTC 222 APIs (which facilitate inter-browser communication for streaming video content), the streaming bit rate (to “adapt” to real-time detection of changes in client bandwidth and CPU capacity), various adaptive streaming 224 implementations, such as HLS, MPEG-Dash, and Smooth Streaming, among others (high-speed bi-directional client-server communication over a single TCP/IP connection) WebSocket (226) protocol (which facilitates web browsers), and HTTP (228) (for a less frequent standard of communication between web servers and client web browsers).

클라이언트 디바이스(200)는 또한 스트리밍 디지털 콘텐츠를 시청하거나 재생하기 위해 표준의 플레이어(232)(일 실시예에서, 표준의 HTML5 웹 브라우저(230)에 통합된 표준의 비디오 플레이어)를 포함한다. 다른 실시예들에서, 표준의 플레이어(232)는 독립형 데스크톱 애플리케이션 또는 스마트폰 앱에 통합되어 있다. 표준의 HTML5 웹 브라우저(230)를 이용하는 것의 하나의 장점은 표준의 라이브러리들(220) 중 다수가 웹 브라우저들에서 작동하도록 설계되어 있고 따라서 독립형 데스크톱 애플리케이션 또는 스마트폰 앱을 필요로 할 어떤 플러그인들 또는 다른 커스텀 기능을 필요로 하지 않는다는 것이다.The client device 200 also includes a standard player 232 (in one embodiment, a standard video player integrated into a standard HTML5 web browser 230) for viewing or playing streaming digital content. In other embodiments, the standard player 232 is integrated into a standalone desktop application or smartphone app. One advantage of using a standard HTML5 web browser 230 is that many of the standard libraries 220 are designed to work in web browsers and therefore do not require any plugins or plugins that would require a standalone desktop application or smartphone app. It does not require any other custom features.

더욱이, 웹 브라우저들은 또한 (어떤 클라이언트 브라우저 플러그인들도 필요로 함이 없이, 예를 들어, 웹페이지의 일부로서 표준의 웹 서버로부터 전달되는) 표준의 웹 브라우저 기능을 보완하기 위해 자주 사용되는, Javascript와 같은, 클라이언트측 스크립팅 언어들을 지원한다. 일 실시예에서, 클라이언트 디바이스(200)의 비표준의 주요 컴포넌트들(통신기(Communicator)(270), 성능 모니터(240), 수신기(250), 중계기(Relayer)(260) 및 업로더(Uploader)(280)를 포함함)은 Javascript로 구현되고, 콘텐츠 어레이들(255)은 그 Javascript 코드에 의해 발생되고 유지된다. 그렇지만, 이 컴포넌트들 중 일부 또는 전부가 본 발명의 사상을 벗어남이 없이 다른 프로그래밍 언어들로 그리고 독립형 데스크톱 애플리케이션들 또는 스마트폰 앱들로 구현될 수 있다는 것에 유의해야 한다.Moreover, web browsers also support Javascript, which is often used to supplement standard web browser functionality (delivered from a standard web server as part of a web page, eg, without the need for any client browser plug-ins). Supports client-side scripting languages, such as In one embodiment, the non-standard main components of the client device 200 (Communicator 270, Performance Monitor 240, Receiver 250, Relayer 260 and Uploader ( 280) is implemented in JavaScript, and the content arrays 255 are generated and maintained by the JavaScript code. However, it should be noted that some or all of these components may be implemented in other programming languages and as standalone desktop applications or smartphone apps without departing from the spirit of the present invention.

표준의 라이브러리들(220)은, 비디오 콘텐츠를 비롯한, 콘텐츠의 일반 점대점(유니캐스트) 스트리밍을 용이하게 한다. 클라이언트 디바이스(200)의 비표준의 주요 컴포넌트들은 본 발명의 가상 방송 시스템에 의해 구현되는 디지털 콘텐츠 전달 아키텍처의 클라이언트측 측면들을 해결한다. 일 실시예에서, 스트리밍 프로토콜은 콘텐츠의 라우팅이 클라이언트-서버 아키텍처를 통해 중앙집중화되는 WebRTC(222) 위에 구축되고, 콘텐츠 자체는 동적으로 재구성가능한 P2P 오버레이 네트워크들을 통해 분산 방식으로 스트리밍(노드로부터 노드로 푸시)된다.Standard libraries 220 facilitate general point-to-point (unicast) streaming of content, including video content. The non-standard key components of client device 200 address the client-side aspects of the digital content delivery architecture implemented by the virtual broadcasting system of the present invention. In one embodiment, the streaming protocol is built on top of WebRTC 222, where the routing of content is centralized via a client-server architecture, and the content itself is streamed in a distributed fashion (node to node) over dynamically reconfigurable peer-to-peer overlay networks. push).

클라이언트 디바이스(200)의 사용자는 먼저 각종의 상이한 방식들로 - 예컨대, 이메일에서의 또는 웹페이지 상의 링크들을 통해, 또는 심지어 독립형 데스크톱 애플리케이션 또는 스마트폰 앱 내로부터 - 하나 이상의 콘텐츠 채널들을 만날 수 있다. 일 실시예에서, 가상 방송 서버(300)(도 3과 관련하여 이하 보다 상세히 논의됨)는 채널들의 모음을 갖는 표준의 HTML5 웹페이지를 HTML5 웹 브라우저(230)에 전달한다. 이 "채널 웹페이지"는, (예컨대, WebRTC(222) 및 적응적 스트리밍(224) 라이브러리들을 사용하여) 시그널링 서버(330)와는 물론 다른 클라이언트 노드들과 통신하는 것은 물론, 비디오 세그먼트들의 청크들을 이러한 노드들로부터 수신하고, 처리하며 이러한 노드들로 중계하는 것을 포함하는, 클라이언트 디바이스(200)의 비표준의 컴포넌트들의 기능을 구현하기 위해 HTML5 웹 브라우저(230)에 의해 해석되는 독점적 Javascript 코드를 포함한다.A user of client device 200 may first encounter one or more channels of content in a variety of different ways - eg, in an email or via links on a webpage, or even from within a standalone desktop application or smartphone app. In one embodiment, virtual broadcast server 300 (discussed in more detail below with respect to FIG. 3) delivers to HTML5 web browser 230 a standard HTML5 webpage with a collection of channels. This “channel webpage” communicates (e.g., using WebRTC 222 and adaptive streaming 224 libraries) with Signaling Server 330 as well as other client nodes, as well as sending chunks of video segments to these Contains proprietary Javascript code interpreted by HTML5 web browser 230 to implement functionality of non-standard components of client device 200, including receiving from nodes, processing and relaying to these nodes.

채널 웹페이지 내의 채널 링크를 클릭할 때, 사용자는 현재 스트리밍되고 있는 특정의 비디오 콘텐츠 채널에 합류하라는 요청을 발생시키거나, 다른 실시예에서, 나중의 미리 정의된 시점("합류 요청")에서 스트리밍하기 시작할 것이다. 가상 방송 서버(300)의 시그널링 서버(330)는 합류 요청에 대해 통신기(270)를 통해 클라이언트 디바이스(200)와 WebSocket(226) 연결을 구축하려고 시도하는 것으로 응답한다. 도 3과 관련하여 이하에서 보다 상세히 논의될 것인 바와 같이, 가상 방송 서버(300)는, 클라이언트 디바이스(200)가 비디오 콘텐츠를 수신하고 중계하기 위해 가상 방송 서버(300)와 WebSocket(226) 연결을 그리고 다른 클라이언트 디바이스들(200)과 WebRTC(222) 연결들을 구축할 수 있도록, (예컨대, NAT 방화벽 안쪽에 있는) 클라이언트 디바이스(200)의 공공 IP 주소를 발견하기 위해 "STUN"(322) 프로토콜을 이용한다.When clicking on a channel link within the channel webpage, the user issues a request to join the particular video content channel that is currently being streamed or, in another embodiment, streamed at a later, predefined point in time ("request to join"). will start doing The signaling server 330 of the virtual broadcasting server 300 responds to the join request by attempting to establish a WebSocket 226 connection with the client device 200 through the communicator 270 . As will be discussed in more detail below with respect to FIG. 3 , virtual broadcast server 300 establishes a WebSocket 226 connection with virtual broadcast server 300 for client devices 200 to receive and relay video content. and "STUN" 322 protocol to discover the public IP address of the client device 200 (e.g., inside a NAT firewall) so that it can establish WebRTC 222 connections with other client devices 200. Use

본원에서 논의되는 실시예들에서, 클라이언트 디바이스(200)는 임의의 주어진 때에 단지 하나의 비디오 채널에 합류한다. 다른 실시예들에서, 클라이언트 디바이스(200)는 본 발명의 사상을 벗어남이 없이 다수의 채널들에 동시에 합류할 수 있다.In the embodiments discussed herein, the client device 200 joins only one video channel at any given time. In other embodiments, the client device 200 can simultaneously join multiple channels without departing from the spirit of the present invention.

클라이언트 디바이스(200)는 단일의 TCP/IP 연결을 열린 채로 유지하면서 메시지들의 신속한 교환을 용이하게 하기 위해 시그널링 서버(330)와의 양방향 통신을 위한 통신기(270)를 이용한다. 이하에서 보다 상세히 논의될 것인 바와 같이, 이러한 통신은, (i) 클라이언트 디바이스(200) 능력(예컨대, OS, 웹 브라우저 및 연결 유형 - 3G, 4G, WiFi, LAN 등)에 관한 초기 정보를 가상 방송 서버(300)에 제공하는 것, (ii) 가상 방송 서버(300)가 오버레이 네트워크들(100)을 통한 비디오 세그먼트들의 후속하는 WebRTC(222) 노드간 스트리밍을 위한 클라이언트 노드 연결을 검증할 수 있게 하는 것, 및 (iii) 가상 방송 서버(300)와 실시간 동적 모니터링 정보(이하에서 논의되는 바와 같이, 성능 모니터(240)를 통해 획득됨)를 교환하는 것을 비롯한, 다양한 목적들을 위해 이용된다.Client device 200 uses communicator 270 for two-way communication with signaling server 330 to facilitate rapid exchange of messages while maintaining a single TCP/IP connection open. As will be discussed in more detail below, this communication may involve (i) initial information about the client device 200 capabilities (e.g., OS, web browser, and connection type - 3G, 4G, WiFi, LAN, etc.) To provide to broadcast server 300, (ii) virtual broadcast server 300 to verify client node connectivity for subsequent WebRTC 222 node-to-node streaming of video segments over overlay networks 100; and (iii) exchanging real-time dynamic monitoring information (obtained via performance monitor 240, as discussed below) with virtual broadcast server 300.

일 실시예에서, 채널 웹페이지에 포함된 이 Javascript 코드는 또한 클라이언트 디바이스(200)가 (비디오 세그먼트들을 수신하지만, 그들을 다른 클라이언트 노드들로 중계하지 않는) C 노드인지를 결정하기 위해 클라이언트 디바이스(200)의 능력을 분석하고, 이 정보를 시그널링 서버(330)에 제공한다. 다른 실시예들에서, 클라이언트 디바이스(200)의 어떤 능력이, 클라이언트 디바이스(200)가 C 노드인지를 결정하는, 가상 방송 서버(300)로 송신된다.In one embodiment, this Javascript code included in the channel webpage also includes client device 200 to determine if client device 200 is a C node (receiving video segments, but not relaying them to other client nodes). ) and provides this information to the signaling server 330. In other embodiments, certain capabilities of the client device 200 are transmitted to the virtual broadcast server 300, which determines whether the client device 200 is a C node.

이 Javascript 코드는 또한 표준의 플레이어(232)에 의한 재생을 위해 수신기(250)에 의한 비디오 세그먼트들의 수신을 관리하기 위해 POI 콘텐츠 서버(380)와의 통신을 용이하게 한다. 이 프로세스는, 사실상, 표준의 WebRTC(222) 및 적응적 스트리밍(224) 기능을 이용하는, 표준의 점대점 비디오 스트리밍 시나리오의 확장이다.This JavaScript code also facilitates communication with POI content server 380 to manage the receipt of video segments by receiver 250 for playback by standard player 232 . This process is, in effect, an extension of the standard point-to-point video streaming scenario, using the standard WebRTC 222 and adaptive streaming 224 capabilities.

일 실시예에서, 표준의 웹 브라우저(230)는 앞서 기술된 바와 같이 주기적으로 매니페스트 파일들을 요청하기 위해 채널 웹페이지로부터의 독점적 Javascript 코드를 해석한다. 이러한 표준의 HTTP 요청들은, 매니페스트 파일들을 제공하는, POI 콘텐츠 서버(380)로 보내진다. 표준의 웹 브라우저(230)는 또한, 앞서 논의된 바와 같이(예컨대, 대역폭의 변화가 검출될 때) 이 비디오 세그먼트들의 보다 높은 또는 보다 낮은 비트 레이트의 버전들을 비롯한, 비디오 세그먼트들 자체를 매니페스트 파일에 명시된 위치들에 요청하기 위해 표준의 적응적 스트리밍(224) 라이브러리들을 이용한다.In one embodiment, the standard web browser 230 interprets proprietary Javascript code from the channel webpage to periodically request manifest files as described above. These standard HTTP requests are sent to the POI content server 380, which serves the manifest files. The standard web browser 230 also adds the video segments themselves to the manifest file, including higher or lower bit rate versions of these video segments, as discussed above (e.g., when a change in bandwidth is detected). Uses standard adaptive streaming 224 libraries to request specified locations.

비디오 세그먼트들에 대한 이 요청들은 채널 웹페이지로부터의 독점적 Javascript 코드에 의해 가로채기된다 - 즉, 그 이유는 각각의 비디오 세그먼트가 오버레이 네트워크들(100)의 다른 (피더(feeder)) 노드로부터 클라이언트 디바이스(200)로 푸시되기 때문이다(클라이언트 디바이스(200)가 HTTP "풀(pull)" 요청을 개시할 필요가 없게 함). (이하에서 보다 상세히 논의되는) 일 실시예에서, 가상 방송 서버(300)는, 클라이언트 디바이스(200)가 가능한 한 빨리 비디오 콘텐츠를 재생하기 시작할 수 있게 하기 위해 하나 이상의 초기 비디오 세그먼트들이 클라이언트 디바이스(200)에 푸시되도록, 합류 요청이 수신된 직후에 클라이언트 디바이스(200)를 오버레이 네트워크들(100)에 (그리고 따라서 채널에) 추가한다.These requests for video segments are intercepted by proprietary Javascript code from the channel webpage - that is, because each video segment is sent from a different (feeder) node of the overlay networks 100 to a client device. Because it is pushed to 200 (so that the client device 200 does not have to initiate an HTTP "pull" request). In one embodiment (discussed in more detail below), the virtual broadcast server 300 directs one or more initial video segments to the client device 200 so that the client device 200 can begin playing the video content as quickly as possible. ), adds the client device 200 to the overlay networks 100 (and thus to the channel) immediately after the join request is received.

수신기(250)가 각각의 비디오 세그먼트의 청크들을 수신할 때, 수신기(250)는 비디오 세그먼트들의 수신 및 재생은 물론, 비디오 세그먼트들을 (클라이언트 디바이스(200)가 C 노드로 지정되지 않은 경우) 다른 클라이언트 노드들로 중계하는 것을 용이하게 하기 위해 콘텐츠 어레이들(255)을 발생시킨다. 수신기(250)는 청크들을, 표준의 플레이어(232)에 의해 유지되는 3-세그먼트 버퍼에 제공되는, 완전한 비디오 세그먼트로 편집하기 위해 수신 어레이(256)를 발생시킨다. 비디오 세그먼트에 대한 HTTP 요청을 가로채기할 때, 수신기(250)가 완전한 비디오 세그먼트가 수신 어레이(256)에 아직 없다고 결정하면, 비디오 세그먼트가 매니페스트 파일에 명시된 대체(또는 "폴백") 위치(즉, POI 콘텐츠 서버(380))에 요청될 것이다. 표준의 플레이어(232)의 관점에서 볼 때, 표준의 플레이어(232)는 표준의 HTTP 요청들에 응답하여 비디오 세그먼트들을 수신하고, 비디오 세그먼트들이 실제로는 오버레이 네트워크들(100)을 통해 클라이언트 디바이스(200)에 푸시되고 있다는 것을 알지 못한다.As receiver 250 receives the chunks of each video segment, receiver 250 receives and plays back the video segments, as well as (if client device 200 is not designated a C node) other clients. Generate content arrays 255 to facilitate relaying to nodes. Receiver 250 generates receive array 256 to compile the chunks into complete video segments, which are provided to a 3-segment buffer maintained by standard player 232. When intercepting an HTTP request for a video segment, if receiver 250 determines that a complete video segment is not yet in receive array 256, the video segment is sent to an alternate (or "fallback") location specified in the manifest file (i.e., POI content server 380). From the point of view of the standard player 232, the standard player 232 receives video segments in response to standard HTTP requests, and the video segments are actually sent to the client device 200 via the overlay networks 100. ) is being pushed to.

더욱이, 일 실시예에서, 수신기(250)는 또한 (표준의 플레이어(232)가 매니페스트 파일을 통해 통상의 방식으로 이러한 요청을 하는지에 관계없이) 클라이언트 디바이스(200)가 핸들링할 수 있는 비트 레이트를 (통신기(270)를 통해) 시그널링 서버(330)에 전달하기 위해 적응적 스트리밍(224) 라이브러리들을 이용한다. 예를 들어, 클라이언트 디바이스(200)가 자신의 대역폭의 일시적인 상당한 저하를 경험하면(그 결과 비디오 세그먼트가, 필요하게 되기 전에, 수신 어레이(256)로 도착하지 않음), 클라이언트 디바이스(200)는 하나의 (폴백) 비디오 세그먼트를 POI 콘텐츠 서버(380)에 요청하고, 이어서 오버레이 네트워크들(100)을 통해 후속하는 보다 낮은 해상도의 비디오 세그먼트들을 푸시받을 수 있다. 그의 비트 레이트가 정상으로 돌아오면, 클라이언트 디바이스(200)는 문제가 발생하기 전과 마찬가지로 보다 높은 해상도의 비디오 세그먼트들을 푸시받을 수 있다.Moreover, in one embodiment, receiver 250 also determines the bit rate that client device 200 can handle (regardless of whether standard player 232 makes such a request in the usual way via a manifest file). Use the adaptive streaming 224 libraries to communicate to the signaling server 330 (via communicator 270). For example, if client device 200 experiences a temporary significant drop in its bandwidth (so that video segments do not arrive at receive array 256 before they are needed), client device 200 may of a (fallback) video segment may be requested from the POI content server 380 , and subsequent lower resolution video segments may then be pushed through the overlay networks 100 . When its bit rate returns to normal, the client device 200 can be pushed higher resolution video segments just like before the problem occurred.

앞서 살펴본 바와 같이, 일 실시예에서, 가상 방송 서버(300)는, (ASN들 내에서 그리고 ASN들을 거쳐 A 노드들 사이의) 가상 데이터 트렁크 오버레이 네트워크들 및 (ASN 내의 각각의 A 노드로부터 그 ASN 내의 다른 노드들로의)스웜 오버레이 네트워크들을 비롯한, 각각의 비디오 세그먼트에 대한 오버레이 네트워크들(100)을 동적으로 재구성한다. 클라이언트 디바이스(200)가 (비디오 세그먼트들을 수신하지만 그들을 다른 클라이언트 노드들로 중계하지 않는) C 노드로 분류되지 않는 한, 중계기(260)는 자신이 그 비디오 세그먼트를 중계할 노드 또는 노드들에 관해 (그가 합류한 비디오 채널의 각각의 비디오 세그먼트에 관련한) 지시들을 가상 방송 서버(300)로부터 수신할 것이다. 도 1을 참조하여 앞서 논의된 바와 같이, 클라이언트 디바이스(200)가 A, B:A 또는 B 노드인지에 관계없이, 클라이언트 디바이스(200)는 비디오 세그먼트를 다수의 다른 클라이언트 노드들로 중계하도록 요구받을 수 있다.As noted above, in one embodiment, the virtual broadcast server 300 connects virtual data trunk overlay networks (between A nodes within and across ASNs) and from each A node within the ASN to its ASN. Dynamically reconfigure overlay networks 100 for each video segment, including swarm overlay networks (to other nodes in the video segment). Unless client device 200 is classified as a C node (which receives video segments but does not relay them to other client nodes), repeater 260 has information about the node or nodes to which it will relay the video segments ( will receive instructions from the virtual broadcast server 300) relating to each video segment of the video channel it has joined. As discussed above with reference to FIG. 1 , regardless of whether client device 200 is A, B:A or B node, client device 200 may be required to relay video segments to a number of other client nodes. can

비디오 세그먼트들의 길이(예컨대, 1 내지 10초)는 적응적 스트리밍(224) 표준들에 따라 비디오 콘텐츠의 생성자에 의해 정의된다. 중계기(260)는 (시그널링 프로토콜을 요구하지 않는) WebRTC(222) 표준의 "RTCDataChannel" 컴포넌트에 따라 청크들을 푸시함으로써 비디오 세그먼트를 각각의 지정된 목적지 클라이언트 노드로 중계할 것이다.The length of the video segments (eg, 1 to 10 seconds) is defined by the creator of the video content according to the adaptive streaming 224 standards. Relay 260 will relay the video segment to each designated destination client node by pushing chunks according to the "RTCDataChannel" component of the WebRTC 222 standard (which does not require a signaling protocol).

일 실시예에서, 각각의 비디오 세그먼트는 MPEG2 전송 프로토콜을 통해 스트리밍될 때 최대 효율을 위해 UDP 데이터그램("패킷")의 크기와 일치하도록 64KB 청크들로 분할된다. 클라이언트 디바이스(200)는 UDP "패킷들"을 한 번에 하나의 청크씩 송신하고 수신한다(WebRTC(222) 표준에 따라 필요할 때 TCP로 폴백함). 예를 들어, 1초의 비디오 세그먼트는 약 625개의 청크들을 포함한다(약 5000 Kbps를 생성하는 1080p H.264 인코더를 가정함).In one embodiment, each video segment is divided into 64 KB chunks to match the size of a UDP datagram ("packet") for maximum efficiency when streamed over the MPEG2 transport protocol. The client device 200 sends and receives UDP “packets” one chunk at a time (falling back to TCP when necessary per the WebRTC 222 standard). For example, a 1 second video segment contains about 625 chunks (assuming a 1080p H.264 encoder producing about 5000 Kbps).

수신기(250)가 각각의 비디오 세그먼트의 청크들을 수신할 때, 수신기(250)는, 그 청크들을 편집하여 완전한 비디오 세그먼트들을 구성하기 위해, 수신 어레이(256)를 발생시킨다. 중계기(260)는 그 청크들을 지정된 목적지 클라이언트 노드들로 송신(중계)할 목적으로 그 청크들을 편집하기 위해 중계 어레이(257)를 발생시킨다. 이러한 방식으로, 중계 어레이(257)는 비디오 세그먼트의 착신 및 발신 청크들을 위한 버퍼로서 기능한다. 이하에서 논의될 것인 바와 같이, 성능 모니터(240)는 비디오 세그먼트 전체를 각각의 지정된 목적지 클라이언트 노드로 스트리밍하는 데 필요한 시간을 추적하고, (오버레이 네트워크들(100)을 동적으로 재구성함에 있어서의 차후의 사용을 위해) 그 메트릭을 다시 가상 방송 서버(300)에 보고한다.As receiver 250 receives the chunks of each video segment, receiver 250 generates receive array 256 to edit the chunks to construct complete video segments. Relay 260 generates relay array 257 to edit the chunks for the purpose of transmitting (relaying) the chunks to designated destination client nodes. In this way, relay array 257 acts as a buffer for incoming and outgoing chunks of a video segment. As will be discussed below, performance monitor 240 tracks the time required to stream an entire video segment to each designated destination client node, and (at a later stage in dynamically reconfiguring overlay networks 100) for use) and reports the metric back to the virtual broadcasting server 300.

일 실시예에서, 수신측 클라이언트 노드는, 클라이언트 디바이스(200)와 같은, 단일의 피딩 노드로부터 비디오 세그먼트를 수신한다. 다른 실시예에서, 다수의 잠재적인 피딩 노드들이 가상 방송 서버(300)에 의해 선택되고, (예컨대, 현재 대역폭 또는 다른 모니터링된 성능 메트릭들에 기초하여) "상위 2개의"후보들을 협상하기 위해 그 자신들 간에 통신하며, 이어서 청크들을 지정된 수신측 클라이언트 노드로 송신하는 것을 교대로 행한다.In one embodiment, a receiving client node receives video segments from a single feeding node, such as client device 200 . In another embodiment, a number of potential feeding nodes are selected by virtual broadcast server 300, and those to negotiate the "top two" candidates (eg, based on current bandwidth or other monitored performance metrics). They take turns communicating among themselves and then sending chunks to designated receiving client nodes.

다른 실시예에서, 각각의 비디오 세그먼트의 다수의 상이한 해상도들(예컨대, 1080p, 720p 및 480p)이 A 노드들 간에 푸시되고, 가상 방송 서버(300)는 (예컨대, 이하에서 상세히 논의되는 바와 같이, 그 다른 노드들의 능력에 기초하여) 그 해상도들 중 어느 것을 그 스웜 오버레이 네트워크 내의 다른 노드들로 푸시해야 하는지를 각각의 스웜 오버레이 네트워크의 루트에 있는 A 노드에 지시한다.In another embodiment, multiple different resolutions (e.g., 1080p, 720p, and 480p) of each video segment are pushed between the A nodes, and virtual broadcast server 300 (e.g., as discussed in detail below) Instructs the A node at the root of each swarm overlay network which of its resolutions to push to other nodes in the swarm overlay network (based on the capabilities of those other nodes).

수신기(250)가 재생을 위한 비디오 세그먼트의 청크들을 수신하고 있으며 중계기(260)가 그 청크들을 다른 지정된 클라이언트 노드들로 스트리밍하고 있는 동안, 성능 모니터(240)는 가상 방송 서버(300)에 의해 지시된 바와 같이 다양한 정적 및 실시간 동적 성능 메트릭들을 수집하고, 이러한 메트릭들을 시그널링 서버(330)를 통해 다시 가상 방송 서버(300)에 연속적으로 제공한다.While receiver 250 is receiving chunks of a video segment for playback and repeater 260 is streaming the chunks to other designated client nodes, performance monitor 240 is directed by virtual broadcast server 300. As described above, various static and real-time dynamic performance metrics are collected, and these metrics are continuously provided to the virtual broadcasting server 300 through the signaling server 330.

앞서 살펴본 바와 같이, 이러한 메트릭들은 다음 비디오 세그먼트의 라우팅을 최적화하도록 오버레이 네트워크들(100)을 동적으로 재구성하기 위해 가상 방송 서버(300)에 의해 사용된다. 상세하게는, 성능 메트릭들은 클라이언트 노드들을 분류 및 재분류하는 데, 비디오 세그먼트들을 다른 클라이언트 노드들로 중계하기 위한 슬롯들을 할당 및 할당 해제하는 데, 비디오 세그먼트들의 어느 해상도들이 수신되어 다른 클라이언트 노드들로 중계될 수 있는지를 결정하는 데, 그리고 궁극적으로 오버레이 네트워크들(100)이 동적으로 재구성될 때 클라이언트 노드들 사이의 라우팅 경로들의 서브셋을 수정하는 데 사용된다. 이 성능 메트릭들이 가상 방송 서버(300)에 의해 이용되는 정확한 방식은 도 3과 관련하여 이하에서 보다 상세히 논의될 것이다.As noted above, these metrics are used by virtual broadcast server 300 to dynamically reconfigure overlay networks 100 to optimize routing of the next video segment. Specifically, performance metrics are used to classify and reclassify client nodes, allocate and de-allocate slots for relaying video segments to other client nodes, and which resolutions of video segments are received and transferred to other client nodes. It is used to determine if a relay can be relayed, and ultimately to modify a subset of routing paths between client nodes when the overlay networks 100 are dynamically reconfigured. The exact manner in which these performance metrics are used by virtual broadcast server 300 will be discussed in more detail below with respect to FIG. 3 .

운영 체제, 브라우저 및 연결의 유형(예컨대, 3G 또는 4G 셀룰러, WiFi, LAN 등)과 같은, 정적 성능 메트릭들은 자주 변경될 가능성이 없으며 전형적으로 클라이언트 디바이스(200)에 의한 초기 합류 요청 시에만 시그널링 서버(330)에 보고된다(그렇지만, 변화 - 예컨대, 3G로부터 4G로의 셀룰러 연결의 변화 - 가 있는 경우에 그들이 보고될 것이다). Static performance metrics, such as operating system, browser, and type of connection (e.g., 3G or 4G cellular, WiFi, LAN, etc.) are unlikely to change frequently and typically only signal server upon initial join request by client device 200. 330 (however, they will be reported if there is a change - e.g., change in cellular connection from 3G to 4G).

동적 정보가 연속적으로(즉, 수집될 때) 모아져 보고될 수 있지만, 일 실시예에서 "오버헤드"(이 동적 메트릭들을 모니터링하여 시그널링 서버(330)에 보고하는 빈도)가 비디오 자체의 전달(즉, 청크들을 클라이언트 디바이스(200)로 그리고 그로부터 스트리밍하는 것)의 "페이로드" 또는 성능에 영향을 미치지 않도록 보장하기 위해 다양한 트레이드오프들이 고려된다. 일 실시예에서, 이러한 메트릭들이 다음 비디오 세그먼트에 대해서만 사용되는 반면, 다른 실시예들에서는, 현재 비디오 세그먼트의 전달 동안 다음 청크(또는 다수의 청크들)에 대한 변경들이 수행될 수 있다.While the dynamic information may be aggregated and reported on a continuous basis (i.e., as it is collected), in one embodiment the “overhead” (how often these dynamic metrics are monitored and reported to signaling server 330) is the delivery of the video itself (i.e. , streaming chunks to and from the client device 200), various trade-offs are considered to ensure that performance is not impacted or the “payload”. In one embodiment, these metrics are used only for the next video segment, while in other embodiments, changes to the next chunk (or multiple chunks) may be made during delivery of the current video segment.

일 실시예에서, 두 가지 유형의 동적 성능 모니터링이 수행된다. 첫 번째 유형의 동적 성능 모니터링은, 클라이언트 디바이스(200)가 존재하는 ASN 내에서는 물론 ASN을 거쳐, 인터넷 상의 기지의 사이트들까지의(예컨대, 야후 웹 서버, 가상 방송 서버 등까지의) "핑(ping)"시간들(또는 다른 유사한 측정들)을 포함한다. 개별적으로, 이러한 메트릭들은 클라이언트 디바이스(200)의 성능에 대한 통찰력을 제공하는 동시에, 클라이언트 디바이스(200)가 존재하는 ASN 내에서는 물론 특정의 피어링 포인트들을 통해 ASN들을 거치는 QoS에 대한 부가의 통찰력을 제공한다. (A 노드들 사이의) 가상 데이터 트렁크 오버레이 네트워크가 (피어링 포인트들에서의 혼잡으로 인해) 비교적 더 큰 관심사이지만, ASN 내에서의 혼잡도 관련성이 있다(그 이유는 ASN 내에서의 혼잡이, 예를 들어, ASN 내의 스웜 오버레이 네트워크들 중 하나 이상의 스웜 오버레이 네트워크들의 적어도 일부의 동적 재구성을 필요로 할 수 있기 때문이다).In one embodiment, two types of dynamic performance monitoring are performed. The first type of dynamic performance monitoring involves "pinging (e.g., to a Yahoo web server, a virtual broadcast server, etc.) ping)" times (or other similar measurements). Individually, these metrics provide insight into the performance of the client device 200, while providing additional insight into QoS within the ASN in which the client device 200 resides, as well as across ASNs over specific peering points. do. While virtual data trunk overlay networks (between A nodes) are of comparatively greater interest (due to congestion at peering points), congestion within an ASN is also of relevance (because congestion within an ASN, e.g. For example, it may require dynamic reconfiguration of at least a portion of one or more of the swarm overlay networks in the ASN).

다른 유형의 동적 성능 모니터링은 비디오 세그먼트를 하나의 클라이언트 노드로부터 다른 클라이언트 노드로 중계하는 데 필요한 총 시간을 포함한다. 일 실시예에서, 각각의 노드(C 노드는 제외)는 그가 비디오 세그먼트의 첫 번째 청크를 지정된 목적지 클라이언트 노드로 송신한 "시작" 시각은 물론, 그 비디오 세그먼트의 마지막 청크가 수신된 후의 "종료" 시각을 기록한다(예컨대, 그 이유는 WebRTC(222) 표준이 각각의 패킷의 검증을 제공하기 때문이다). 성능 모니터(240)는 (노드가 송신하는 각각의 비디오 세그먼트에 대한) 이 총 시간을 시그널링 서버(330)로 송신한다. 이 메트릭은 또한 클라이언트 디바이스(200)의 개별 성능뿐만 아니라 (예컨대, 클라이언트 디바이스(200)가 ASN 피어링 포인트를 거쳐 다른 A 노드에 피드하는 A 노드인 경우에) 그의 ASN 내에서는 물론 ASN들을 거치는 혼잡 레벨에 관한 통찰을 제공할 수 있다.Another type of dynamic performance monitoring involves the total time required to relay a video segment from one client node to another. In one embodiment, each node (except node C) has a "start" time when it transmits the first chunk of a video segment to a designated destination client node, as well as an "end" time after the last chunk of that video segment has been received. Record the time (eg, because the WebRTC 222 standard provides for verification of each packet). Performance monitor 240 sends this total time (for each video segment that the node transmits) to signaling server 330 . This metric also depends on the individual performance of the client device 200 as well as the congestion level across ASNs as well as within its ASN (e.g., if client device 200 is an A-node that feeds other A-nodes via ASN peering points). can provide insights on

일 실시예에서, 클라이언트 디바이스(200)의 사용자가 또한 비디오 콘텐츠의 생성자일 수 있다. 대부분의 경우에, 이 시나리오의 결과, 사용자들이 "언제 어디서나" 비디오 이벤트들을 포착할 수 있게 하는, 스마트폰 카메라들(카메라(219) 등)의 품질이 지속적으로 높아지게 된다. 그러나, 데스크톱 또는 랩톱 컴퓨터들은 물론 스마트폰들의 사용자들이 녹화된 비디오 이벤트를 다른 소스들로부터 획득하는 것이 또한 가능하다.In one embodiment, a user of client device 200 may also be a creator of video content. In most cases, this scenario results in continuously increasing quality of smartphone cameras (such as camera 219), enabling users to capture video events “anytime, anywhere”. However, it is also possible for users of desktop or laptop computers as well as smartphones to obtain the recorded video event from other sources.

문제는 클라이언트 디바이스(200)가 그의 비디오 콘텐츠를 인터넷을 통해, 다수의 ASN들을 거쳐 많은 홉들만큼 떨어져 있을 수 있는, 가상 방송 서버(300)로 어떻게든 스트리밍해야만 한다는 것이다. 업로더(280)는 UDP 패킷들이 중간 라우터들에서 지연되거나 차단되는 것을 방지하도록 설계된 독점적 "샤워링" 프로토콜을 통해 이 문제를 해결한다. 일 실시예에서, 업로더(280)는, 보다 제한된 클라이언트측 Javascript 기능에 의존하는 것이 아니라, 클라이언트 디바이스(200) 상의 전용 스마트폰 앱을 통해 구현된다.The problem is that the client device 200 must somehow stream its video content over the Internet, over multiple ASNs, to the virtual broadcast server 300, which can be many hops away. Uploader 280 solves this problem through a proprietary "showering" protocol designed to prevent UDP packets from being delayed or blocked at intermediate routers. In one embodiment, uploader 280 is implemented via a dedicated smartphone app on client device 200, rather than relying on more limited client-side Javascript functionality.

이 샤워링 프로토콜을 구현하기 위해, 업로더(280)는 가상 방송 서버(300)와 TCP/IP 연결을 구축하고, 이용가능한 최대 IP 패킷 크기들("MTU(maximum transmission unit)")을 전달하기 위해 UDP "버스트(burst)들"을 이용한다. 그러나, 연속적인 UDP 스트림들은 (단일의 라우터 포트를 통해 송신되든 다수의 라우터 포트들을 거쳐 배포되든 관계없이) 종종 중간 라우터들에 의해 "DOS(denial of service) 공격으로서 탐지되고, 따라서 차단된다. 더욱이, 이러한 UDP 스트림들은 라우터의 할당된 메모리(예컨대, FIFO 큐)를 오버플로(overflow)시킬 수 있는데, 그 이유는 라우터들이 전형적으로 (보다 통상적인 TCP 패킷들과 달리) UDP 패킷들이 수신되고 있는 동안에만 UDP 패킷들을 위한 메모리를 할당하기 때문이다.To implement this showering protocol, the uploader 280 establishes a TCP/IP connection with the virtual broadcasting server 300, and forwards the maximum available IP packet sizes (“maximum transmission unit” (“MTU”)). UDP "bursts" are used for However, continuous UDP streams (whether sent through a single router port or distributed across multiple router ports) are often detected by intermediate routers as a "denial of service" attack and are therefore blocked. , these UDP streams can overflow a router's allocated memory (e.g., a FIFO queue), because routers typically (unlike the more typical TCP packets) This is because it allocates memory only for UDP packets.

이 장애물들을 해결하기 위해, 업로더(280)는 UDP 패킷들을 다수의 포트들(예컨대, 일 실시예에서 6개의 포트들) 간에 분산시킬 뿐만 아니라, DOS 공격으로서 탐지되는 것을 방지하기 위해 임의의 개별 포트를 통해 송신되는 패킷들을 지연시킨다. 일 실시예에서, 각각의 포트에서의 지연은 DOS 공격으로서 탐지되는 것을 방지할 정도로 길고, 라우터들이 충분한 메모리를 할당할 수 있게 할 정도로 길지만, 비디오 세그먼트를 다수의 ASN들을 거쳐 전달하기에 충분한 대역폭을 제공할 정도로 짧으며 UDP 스트림의 끝으로서 인지되는 것을 방지할 정도로 짧다(이는 라우터가 UDP 패킷들을 위한 메모리를 할당하는 것을 중단시키고 본질적으로 "UDP 패킷들을 버리게" 할 것이다).To address these hurdles, uploader 280 not only distributes UDP packets among multiple ports (e.g., 6 ports in one embodiment), but also distributes any individual packets to prevent detection as a DOS attack. Delay packets sent through the port. In one embodiment, the delay at each port is long enough to prevent detection as a DOS attack, long enough to allow routers to allocate enough memory, but sufficient bandwidth to pass a video segment across multiple ASNs. short enough to provide, and short enough to prevent it from being recognized as the end of the UDP stream (this would stop the router from allocating memory for UDP packets and essentially "drop the UDP packets").

업로더(280)는 이러한 방식으로 각각의 비디오 세그먼트를 가상 방송 서버(300)에 전달하기 때문에, 가상 방송 서버(300)는, 마치 이 비디오 콘텐츠가 보다 전통적인 CDN으로부터 수신된 것처럼, 이 비디오 콘텐츠를 오버레이 네트워크들(100)을 따라 재배포하기 위한 채널을 발생시킨다. 다른 실시예에서, 가상 방송 서버(300)가 클라이언트 노드 - 이 클라이언트 노드의 현재 비디오 세그먼트가 오버레이 네트워크들(100)을 따라 제시간에 도착하지 않음 - 에 대한 비디오 세그먼트의 폴백(fallback) 발신 지점 소스인 비교적 드문 시나리오에서, 가상 방송 서버(300)는 이 독점적 샤워링 프로토콜을 이용한다.Because the uploader 280 delivers each video segment to the virtual broadcast server 300 in this way, the virtual broadcast server 300 can present the video content as if it were received from a more traditional CDN. Generates a channel for redistribution along overlay networks (100). In another embodiment, the virtual broadcast server 300 provides a fallback originating point source for a video segment to a client node whose current video segment did not arrive in time along the overlay networks 100. In the relatively rare scenario of , virtual broadcast server 300 uses this proprietary showering protocol.

가상 방송 서버virtual broadcasting server

도 3은 본 발명의 가상 방송 서버(300)의 주요 서버측 컴포넌트들의 일 실시예를 나타낸다. 앞서 살펴본 바와 같이, 가상 방송 서버(300)의 컴포넌트들이 단일의 물리적 하드웨어 서버에 예시되어 있지만, 이 컴포넌트들의 기능이 본 발명의 사상을 벗어나지 않으면서 다수의 상이한 물리적 하드웨어 디바이스들 및 상이한 소프트웨어 모듈들 간에 재할당될 수 있다.Figure 3 shows one embodiment of the main server-side components of the virtual broadcasting server 300 of the present invention. As noted above, although the components of the virtual broadcasting server 300 are illustrated on a single physical hardware server, the functionality of these components may be interlinked between a number of different physical hardware devices and different software modules without departing from the spirit of the present invention. may be reallocated.

가상 방송 서버(300)는, 대부분의 하드웨어 서버들에서 발견되는 표준의 하드웨어/소프트웨어(310) - 예컨대, CPU(312), 메모리(314), 운영 체제(316), 네트워크 어댑터(317) 및 디스플레이(318) - 와 같은, 어떤 표준의 기능을 포함한다. 특정 실시예들에서, 가상 방송 서버(300)는 또한, 예를 들어, (i) 클라이언트 노드들이 비디오를 다른 클라이언트 노드들로 송신하고 그들로부터 수신하는 것은 물론, 가상 방송 서버(300)와 연결들을 구축할 수 있도록, NAT 방화벽 안쪽에 있는 클라이언트 디바이스들(200)의 공공 IP 주소들을 발견하는 것을 용이하게 하는, STUN(322) 프로토콜("Session Traversal Utilities for NAT"); (ii) 단일의 TCP/IP 연결을 통한 고속 양방향 클라이언트-서버 통신을 용이하게 하는, WebSocket(326) 프로토콜; 및 (iii) 표준의 HTML5 웹 브라우저(230)와 같은, 클라이언트 웹 브라우저들과의 덜 빈번한 표준의 통신을 위해 이용되는, HTTP(328)를 포함할 수 있는, 표준의 라이브러리들(320)을 이용한다.The virtual broadcast server 300 includes standard hardware/software 310 found on most hardware servers - e.g., CPU 312, memory 314, operating system 316, network adapter 317 and display. (318) - includes functions of certain standards, such as In certain embodiments, the virtual broadcast server 300 may also, for example, (i) allow client nodes to transmit and receive video to and from other client nodes, as well as establish connections with the virtual broadcast server 300. STUN 322 protocol ("Session Traversal Utilities for NAT"), which facilitates discovering the public IP addresses of client devices 200 inside a NAT firewall, so that it can be established; (ii) the WebSocket 326 protocol, which facilitates high-speed bi-directional client-server communication over a single TCP/IP connection; and (iii) standard libraries 320, which may include HTTP 328, which is used for less frequent standard communication with client web browsers, such as a standard HTML5 web browser 230. .

가상 방송 서버(300)는, 클라이언트 노드들로부터 획득된 성능 메트릭들을 연속적으로 분석하고, 오버레이 네트워크들(100)을 따라 있는 그 클라이언트 노드들 간에 배포되는 비디오 콘텐츠 채널들에 대한 라우팅 경로들을 동적으로 재구성할지라도, WebRTC(222) 및 적응적 스트리밍(224) 표준들을 지원할 필요가 없는데, 그 이유는 가상 방송 서버(300)가 오버레이 네트워크들(100) 상의 클라이언트 노드가 아니기 때문이다.Virtual broadcast server 300 continuously analyzes performance metrics obtained from client nodes and dynamically reconfigures routing paths for video content channels distributed between those client nodes along overlay networks 100. Even so, there is no need to support the WebRTC 222 and adaptive streaming 224 standards, since the Virtual Broadcast Server 300 is not a client node on the overlay networks 100.

가상 방송 서버(300)는 오버레이 네트워크들(100)에 대한, 상세하게는 가상 데이터 트렁크 오버레이 네트워크에 대한 "채널 생성자(channel originator)" 발신 지점으로서 역할한다. 일 실시예에서, POI 콘텐츠 서버(380)는 비디오 세그먼트들에 대한 HTTP 요청들을 발행하기 위해 하나 이상의 근방의 A 노드들(가능한 경우, 바람직하게는 그의 ASN에 있음)을 지정한다. 이 A 노드들은 사실상 가상 데이터 트렁크 오버레이 네트워크의 루트로서 역할하며, 각각의 비디오 세그먼트를 ASN들 내에 있는 다른 A 노드들로 그리고 ASN들을 거쳐 다른 A 노드들로 그리고 궁극적으로 각각의 ASN 내의 스웜 오버레이 네트워크들을 통해 다른 노드들로 푸시한다.The virtual broadcast server 300 serves as a "channel originator" origination point for the overlay networks 100, specifically the virtual data trunk overlay network. In one embodiment, POI content server 380 designates one or more nearby A nodes (if possible, preferably in its ASN) to issue HTTP requests for video segments. These A-nodes effectively act as the root of a virtual data trunk overlay network, directing each video segment to other A-nodes within ASNs and via ASNs to other A-nodes and ultimately swarm overlay networks within each ASN. Push to other nodes via

POI 콘텐츠 서버(380)를 참조하여 이하에서 보다 상세히 기술될 것인 바와 같이, 이러한 "채널 생성(channel origination)" 기능은 브라우저간 비디오 스트리밍을 목표로 하는 표준의 WebRTC(222) 및 적응적 스트리밍(224) 라이브러리들의 사용을 필요로 하지 않는다. 앞서 살펴본 바와 같이, POI 콘텐츠 서버(380)는 또한 오버레이 네트워크들(100)을 따라 현재 비디오 세그먼트를 제시간에 수신하지 않는 클라이언트 노드들에 대한 비디오 세그먼트들의 가끔의 대체(폴백) 소스로서 역할한다. 이러한 클라이언트 노드들은 POI 콘텐츠 서버(380)가 요청된 비디오 세그먼트를 그들로 송신하는 것으로 응답하는 HTTP 요청들을 발행한다.As will be described in more detail below with reference to the POI content server 380, this "channel origination" function is a standard WebRTC 222 targeting cross-browser video streaming and adaptive streaming ( 224) does not require the use of libraries. As noted above, POI content server 380 also serves as an occasional fallback source of video segments for client nodes along overlay networks 100 that do not receive a current video segment in time. These client nodes issue HTTP requests to which the POI content server 380 responds by sending them the requested video segment.

또한 앞서 살펴본 바와 같이, POI 콘텐츠 서버(380)는, 비디오 콘텐츠가 업로더(280)를 통해 클라이언트 디바이스(200)로부터 또는 보다 전통적인 CDN으로부터 획득되는지에 관계없이(그리고 비디오 콘텐츠가 가상 방송 서버(300)로 실시간으로 스트리밍되는지 나중에 스트리밍하기 위해 미리 제공되는지에 관계없이), (일 실시예에서) 모든 비디오 채널들에 대한 발신 지점으로서 역할한다.Also, as noted above, the POI content server 380 determines whether the video content is obtained from the client device 200 via the uploader 280 or from a more traditional CDN (and the video content is transferred to the virtual broadcast server 300). ), whether streamed in real time or pre-provided for later streaming), serves (in one embodiment) as the originating point for all video channels.

채널 관리자(Channel Admin)(385)는 각각의 채널을 설정하고 유지하는 일을 맡고 있는 반면, POI 콘텐츠 서버(380)는 클라이언트 노드들로 채널로서 스트리밍하기 위한 비디오 콘텐츠 자체를 준비한다. 일 실시예에서, 채널 관리자(385)는 인터넷을 통해 POI 콘텐츠 서버(380)에 의해 전달하기 위한 그리고 특정의 채널에 합류하고자 하는 클라이언트 디바이스들(200)로부터의 합류 요청들에 응답할 때 시그널링 서버(330)에 의해 사용하기 위한 채널 웹페이지를 발생시키고 유지한다.Channel Admin 385 is responsible for setting up and maintaining each channel, while POI Content Server 380 prepares the video content itself for streaming as a channel to client nodes. In one embodiment, channel manager 385 is a signaling server when responding to join requests from client devices 200 wishing to join a particular channel and for delivery by POI content server 380 over the Internet. Generates and maintains a channel webpage for use by (330).

지원을 위해, (예컨대, 특정의 지역에서 지원 요청들이 있을 때) 채널 특정 및 지역 특정 문제들이 해결될 수 있도록 클라이언트 디바이스들(200)이 문제들을 겪고 있는 개별 시청자들은 물론 모든 비디오 채널들의 실황 모니터링을 위한 "플레이아웃 센터(playout center)"를 지원하기 위해 "시청자 지원 콘솔(viewer support console)"이 채널 관리자(385)에 의해 구축되고 유지된다. 이 지원 기능들에는 물론 (예컨대, CDN에 있는) 비디오 콘텐츠의 발신자들에 유용한 데이터를 제공하기 위해 "채널 분석"의 실시간 모니터링이 또한 채널 관리자(385)에 의해 유지된다. 예를 들어, 분석은 각각의 비디오 채널 및 오버레이 네트워크들(100)을 따라 있는 네트워크 노드들의 현재 상태는 물론, 비디오 비트 레이트들, 혼잡 지점들, 노드 지연시간 등에 관련된 라스트 마일 및 다른 문제들에 관한 실시간 메트릭들을 포함한다.For support purposes, client devices 200 provide live monitoring of all video channels as well as individual viewers experiencing problems so that channel-specific and region-specific issues can be resolved (eg, when there are support requests in a particular region). A “viewer support console” is built and maintained by the channel manager 385 to support a “playout center” for In addition to these support functions, real-time monitoring of “channel analytics” is also maintained by the channel manager 385 to provide useful data to senders of video content (eg, at a CDN). For example, analysis can be performed on each video channel and current state of network nodes along overlay networks 100, as well as last mile and other issues related to video bit rates, congestion points, node latency, etc. Contains real-time metrics.

마지막으로, 시그널링 서버(330)가 (예컨대, 채널에 합류하는 것, 클라이언트에 의해 모니터링된 성능 메트릭들을 제공하는 것, 중계 타겟(relay target)들에 대한 라우팅 및 해상도 또는 비트 레이트 변화들을 획득하는 것 등에 관한) 그와 클라이언트 디바이스들(200) 간의 통신을 용이하게 하는 데 필요한 현재 정보를 갖도록, 비디오 채널들을 관리하고 시그널링 서버(330)와 인터페이싱하기 위해 "채널 관리"기능이 제공된다.Finally, the signaling server 330 (e.g., joining the channel, providing performance metrics monitored by the client, routing to relay targets and obtaining resolution or bit rate changes A “channel management” function is provided to manage the video channels and interface with the signaling server 330 so that it has the current information needed to facilitate communication between it and the client devices 200 (regarding etc.).

스플래시 추출기(390)를 제외한, 도 3에 예시된 나머지 서버측 기능이, 간단함을 위해, 단일의 비디오 콘텐츠 채널과 관련하여 기술될 것이다. 그렇지만, 이 기능이, 일 실시예에서, 임의의 주어진 때에 다수의 채널들에 대해 그리고 다양한 디지털 콘텐츠에 대해, 동시에 수행된다는 것에 유의해야 한다.Except for splash extractor 390, the remaining server-side functionality illustrated in FIG. 3 will, for simplicity, be described in terms of a single video content channel. However, it should be noted that this function is performed simultaneously, in one embodiment, for multiple channels and for various digital content at any given time.

클라이언트 노드들이 비디오 채널에 액세스하기 전에, 비디오 콘텐츠는 다수의 보다 낮은 해상도의 비디오 세그먼트들의 스트림들을 생성하도록 트랜스코딩된다. 일 실시예에서, POI 콘텐츠 서버(380)는 클라이언트 디바이스들(200) 내의 표준의 HTML5 웹 브라우저들(230)과 통신할 수 있는 HTTP(228) 서버로서 구현된다. 빈번한 양방향 통신(예컨대, 라우팅 변화들, 성능 데이터 등의 교환)을 위해 클라이언트 디바이스들(200)과 WebSocket(225) 연결들을 구축하는 시그널링 서버(330)와 달리, POI 콘텐트 서버(380)는 매니페스트 파일들, 오버레이 네트워크들(100)을 통해 제시간에 도착하지 않은 가끔의 비디오 세그먼트들 등에 대한 표준의 HTML5 웹 브라우저들(230)로부터의 비교적 드문 클라이언트 HTTP(228) 요청들에 응답한다. Before client nodes access a video channel, the video content is transcoded to create multiple streams of lower resolution video segments. In one embodiment, POI content server 380 is implemented as an HTTP 228 server capable of communicating with standard HTML5 web browsers 230 in client devices 200 . Unlike signaling server 330, which establishes WebSocket 225 connections with client devices 200 for frequent two-way communication (eg, exchange of routing changes, performance data, etc.), POI content server 380 maintains a manifest file Responds to relatively infrequent client HTTP 228 requests from standard HTML5 web browsers 230 for fields, occasional video segments that do not arrive on time over overlay networks 100, and the like.

앞서 살펴본 바와 같이, POI 콘텐츠 서버(380)는 또한 - 즉, 근방의 A 노드들(가상 데이터 트렁크 오버레이 네트워크의 루트에, 전형적으로 POI 콘텐츠 서버(380)와 동일한 ASN에, 또는 하나 또는 2개의 홉들 내에 있음)로부터의 비디오 세그먼트들에 대한 HTTP 요청들에 응답하는 것에 의해 - 그의 보다 높은 대역폭의 채널 생성 기능을 구현하기 위해 HTTP(228) 프로토콜에 의존한다. 다른 실시예들에서, 이 비디오 세그먼트들은 WebRTC(222) 및 적응적 스트리밍(224) 표준들에 따라, 또는 다른 비디오 스트리밍 기법들(앞서 논의된 바와 같은 업로더(280)에 의해 사용되는 샤워링 프로토콜을 포함함)을 통해 그 A 노드들로 푸시된다.As noted above, the POI content server 380 also - i.e., nearby A nodes (at the root of the virtual data trunk overlay network, typically at the same ASN as the POI content server 380, or one or two hops away). It relies on the HTTP 228 protocol to implement its higher bandwidth channel creation functionality - by responding to HTTP requests for video segments from In other embodiments, these video segments are streamed according to WebRTC 222 and adaptive streaming 224 standards, or other video streaming techniques (showering protocol used by uploader 280 as discussed above). is pushed to the A nodes through (including ).

일 실시예에서, POI 콘텐츠 서버(380)는 비디오 콘텐츠를 3개의 상이한 해상도들(1080p, 720p 및 480p)로 트랜스코딩하는 반면, 다른 실시예들에서, 모든 비디오 콘텐츠에 대한 단일의 고정 해상도를 비롯하여, 다양한 다른 보다 높은 그리고 보다 낮은 해상도들(예컨대, 4K, 360VR, 180VR, 240p 등)이 지원된다. 원래의 소스 비디오가 보다 낮은 해상도(예컨대, 720p)로 제공되는 경우, 그 비디오 채널에 대해 720p 및 480p 해상도들만이 지원될 수 있다. 이 기능은, 클라이언트 성능 메트릭들의 분석에 기초하여 (앞서 논의된 바와 같이) 클라이언트 노드들에 의해 또는 가상 방송 서버(300)에 의해 개시되는지에 관계없이, 적응적 비트 레이트 스트리밍을 용이하게 한다.In one embodiment, POI content server 380 transcodes video content into three different resolutions (1080p, 720p, and 480p), while in other embodiments, a single fixed resolution for all video content, including , various other higher and lower resolutions (eg 4K, 360VR, 180VR, 240p, etc.) are supported. If the original source video is presented in a lower resolution (eg, 720p), only 720p and 480p resolutions may be supported for that video channel. This functionality facilitates adaptive bit rate streaming, whether initiated by the virtual broadcast server 300 or by client nodes (as discussed above) based on analysis of client performance metrics.

일 실시예에서, POI 콘텐츠 서버(380)는 HTTP 요청에 응답하여 각각의 비디오 세그먼트의 모든 이용가능한 버전들(예컨대, 3개의 상이한 해상도들)을 하나 이상의 근방의 노드들(전형적으로 A 노드들)에 제공함으로써 채널을 개시하고, 이는 오버레이 네트워크들(100)을 따라 각각의 비디오 세그먼트를 푸시하는 것을 개시한다. 다른 실시예에서, 이 노드들은, 모든 클라이언트 노드가 적응적 스트리밍(224) 능력을 이용할 수 있도록, 모든 버전들을 B 노드들(그리고 B:A 노드들)로 그리고 궁극적으로 C 노드들로 중계한다. 이하에서 보다 상세히 설명되는 바와 같이, 다수의 해상도들을 다른 노드들로 중계하는 노드들은 비디오 세그먼트의 이 다수의 버전들을 오버레이 네트워크들(100)을 통해 다른 클라이언트 노드들로 "폴리캐스팅"한다.In one embodiment, POI content server 380 sends all available versions (e.g., three different resolutions) of each video segment to one or more nearby nodes (typically A nodes) in response to an HTTP request. initiates a channel by providing a , which initiates pushing each video segment along the overlay networks 100 . In another embodiment, these nodes relay all versions to B nodes (and B:A nodes) and ultimately to C nodes, so that all client nodes can use the adaptive streaming 224 capability. As described in more detail below, nodes relaying multiple resolutions to other nodes “polycast” these multiple versions of a video segment via overlay networks 100 to other client nodes.

POI 콘텐츠 서버(380)가 (HTTP 요청들에 응답하여) 비디오 세그먼트들을 하나 이상의 근방의 노드들에 제공하는 것에 의해 채널을 개시하지만, 모든 클라이언트 시청측 노드들은 사실상 각각의 비디오 세그먼트를 동시에 수신하고 시청한다 - 즉, 이전 비디오 세그먼트의 재생이 종료되기 전에 각각의 비디오 세그먼트가 오버레이 네트워크들(100)을 지나간다면, 클라이언트 시청측 노드들 모두는 동기되어 있다 -. 이 실시예에서 클라이언트 디바이스들(200)이 적어도 3개의 비디오 세그먼트들을 버퍼링하기 때문에, 비디오 세그먼트가 가끔 지연되는 경우에 이 버퍼는 얼마간의 "허용 오차(margin for error)"를 제공한다. 더욱이, 다른 실시예에서, POI 콘텐츠 서버(380)가 채널을 처음으로 "방송"하기 시작할 때, 부가의 버퍼링을 제공하기 위해 채널의 개시가 지연될 수 있다. (예컨대, 비디오 세그먼트가 오버레이 네트워크들(100)을 통해 제시간에 도착하지 않았기 때문에) 클라이언트 디바이스(200)가 폴백 POI 콘텐츠 서버(380)에 대해 직접 비디오 세그먼트에 대한 요청을 발행할 때, 예를 들어, 그 비디오 세그먼트가 하나 이상의 ASN들을 거쳐가는 경우, 이 버퍼가 필요할 수 있다.Although POI content server 380 initiates a channel by providing video segments (in response to HTTP requests) to one or more nearby nodes, all client viewing nodes effectively receive and view each video segment simultaneously. ie, if each video segment passes through the overlay networks 100 before playback of the previous video segment ends, then all of the client viewing-side nodes are synchronized. Because client devices 200 buffer at least three video segments in this embodiment, this buffer provides some "margin for error" in case a video segment is occasionally delayed. Moreover, in another embodiment, when the POI content server 380 first starts “broadcasting” a channel, the start of the channel may be delayed to provide additional buffering. When client device 200 issues a request for a video segment directly to fallback POI content server 380 (eg, because the video segment did not arrive in time over overlay networks 100), for example For example, this buffer may be needed if the video segment traverses one or more ASNs.

앞서 살펴본 바와 같이, POI 콘텐츠 서버(380)는 또한 클라이언트 디바이스(200)로부터의 요청들에 응답하여 주기적인 매니페스트 파일들을 제공한다. 이 매니페스트 파일들이 표준의 HTTP(328) 프로토콜들을 통해 전달되지만, 매니페스트 파일들은 비디오 세그먼트들보다 비교적 작고 훨씬 덜 시간에 민감(time critical)하다. 일 실시예에서, 각각의 매니페스트 파일은 다양한 이용가능 비트 레이트들의 다음 8개의 비디오 세그먼트들의 위치를 식별해준다. 이 실시예에서, 위치들은 POI 콘텐츠 서버(380) 상의 폴백 위치들인데, 그 이유는 비디오 세그먼트들이 오버레이 네트워크들(100)을 통해 각각의 클라이언트 디바이스(200)로 푸시되기 때문이다.As noted above, POI content server 380 also provides periodic manifest files in response to requests from client device 200 . Although these manifest files are delivered via standard HTTP 328 protocols, manifest files are relatively small and much less time critical than video segments. In one embodiment, each manifest file identifies the location of the next 8 video segments of various available bit rates. In this embodiment, the locations are fallback locations on the POI content server 380 as video segments are pushed to each client device 200 via the overlay networks 100 .

비디오 콘텐츠 채널이 (POI 콘텐츠 서버(380)에서 시작하는) 스트리밍을 위한 준비가 되면, 시그널링 서버(330)는 클라이언트 디바이스들(200)로부터의 합류 요청들을 기다린다. 클라이언트 디바이스(200)로부터 그 채널에 대한 합류 요청을 수신할 때, 시그널링 서버(330)는, 그 클라이언트 디바이스(200) 상에 존재할 수 있는 임의의 NAT 방화벽을 통해 WebSocket(326) 연결을 구축할 수 있도록 위해, STUN(322) 프로토콜에 의존한다. 더욱이, 그 클라이언트 디바이스(200)의 공공 IP 주소를 식별하는 것에 의해, 시그널링 서버(330)는 (예컨대, 비디오 세그먼트를 그 클라이언트 디바이스(200)로 중계하기 위해) 그 공공 IP 주소를 다른 클라이언트 노드들에 제공할 수 있다.When a video content channel is ready for streaming (starting at POI content server 380 ), signaling server 330 awaits join requests from client devices 200 . Upon receiving a request to join the channel from the client device 200, the signaling server 330 may establish a WebSocket 326 connection through any NAT firewall that may exist on the client device 200. In order to do so, it relies on the STUN 322 protocol. Moreover, by identifying the public IP address of the client device 200, the signaling server 330 can pass that public IP address to other client nodes (eg, to relay a video segment to the client device 200). can be provided to

WebSocket(326) 연결이 구축되면, 클라이언트 디바이스(200)는, 일 실시예에서, 클라이언트 디바이스(200)가 C 노드인지(예컨대, 이 실시예에서 셀룰러 연결들에 대해 가정됨)를 비롯한, 그의 능력(예컨대, OS, 웹 브라우저 및 연결 유형 - 3G, 4G, WiFi, LAN 등 -)에 관한 정보를 시그널링 서버(330)에 제공한다. 클라이언트 디바이스(200)는 또한 그의 ASN 위치를 시그널링 서버(330)에 제공하고, 이는 클라이언트 디바이스(200)를 오버레이 네트워크들(100)에 추가하기 위해 나중에 사용될 것이다.Once the WebSocket 326 connection is established, the client device 200 determines its capabilities, including, in one embodiment, whether the client device 200 is a C node (e.g., assumed for cellular connections in this embodiment). (eg, OS, web browser, and connection type - 3G, 4G, WiFi, LAN, etc.) is provided to the signaling server 330 . The client device 200 also provides its ASN location to the signaling server 330, which will be used later to add the client device 200 to the overlay networks 100.

일 실시예에서, 시그널링 서버(330)는, 클라이언트 디바이스(200)가 가능한 한 빨리 채널의 비디오 콘텐츠를 재생하기 시작할 수 있도록, (오버레이 네트워크들(100)을 통한) 클라이언트 디바이스(200)에의 하나 이상의 초기 비디오 세그먼트들의 전달에 우선순위를 부여한다. 이 프로세스를 개시하기 위해, 시그널링 서버(330)는 오버레이 네트워크 생성기(350)로 제어를 넘기고, 오버레이 네트워크 생성기(350)는 클라이언트 디바이스(200)를 그의 ASN 내의 스웜 오버레이 네트워크에 추가한다(예컨대, 그 ASN 내의 B 노드에게 비디오 세그먼트들을 클라이언트 디바이스(200)로 중계하라고 지시하는 것에 의함). 클라이언트 디바이스(200)가 여전히 분류되지 않았으며, 아직 어떤 비디오 세그먼트들도 다른 클라이언트 노드들로 중계하지 않을 것임에 유의해야 한다. 그러나, 오버레이 네트워크들(100)의 일부인 것에 의해, 클라이언트 디바이스(200)는 비디오 세그먼트들을 수신하는 것 및 채널의 비디오 콘텐츠를 재생하는 것을 시작할 수 있는 것은 물론, 클라이언트 성능 메트릭들을 수집할 수 있으며, 이는 그의 분류를 용이하게 할 수 있다.In one embodiment, signaling server 330 directs one or more messages to client device 200 (via overlay networks 100) so that client device 200 can begin playing the video content of a channel as soon as possible. Give priority to delivery of early video segments. To initiate this process, signaling server 330 passes control to overlay network generator 350, which adds client device 200 to the swarm overlay network within its ASN (e.g., its by instructing the B node in the ASN to relay the video segments to the client device 200). It should be noted that the client device 200 has not yet been classified and will not relay any video segments to other client nodes yet. However, by being part of the overlay networks 100, the client device 200 can begin receiving video segments and playing the video content of a channel, as well as collect client performance metrics, which Its classification can be facilitated.

시그널링 서버(330)는 이어서 (그의 WebSocket(326) 연결을 통해) 클라이언트 디바이스(200)의 업스트림 및 다운스트림 대역폭을 획득한다. (시그널링 서버(330)가 클라이언트 디바이스(200)의 ASN 위치를 알고 있을지라도) 연결이 다수의 ASN들을 거칠 수 있기 때문에, 이 메트릭이 그다지 유용하지 않다는 것에 유의해야 한다. 보다 관련성있는 메트릭은 클라이언트 디바이스(200)와 그 자신의 ASN 내의 다른 클라이언트 노드들 간의 통신에 관련될 것이다.The signaling server 330 then obtains the upstream and downstream bandwidth of the client device 200 (via its WebSocket 326 connection). It should be noted that this metric is not very useful since a connection may cross multiple ASNs (even though signaling server 330 knows the ASN location of client device 200). A more relevant metric would relate to communication between the client device 200 and other client nodes within its own ASN.

클라이언트 디바이스(200)로부터(그리고 다른 클라이언트 노드들로부터)(클라이언트 디바이스(200) 상의 성능 모니터(240)에 의해 수집된) 클라이언트 성능 정보를 수신할 때, 시그널링 서버(330)는, 초기 분석 및, 이하에서 설명되는 바와 같이, 클라이언트 노드들을 동적으로 재분류하고 다음 비디오 세그먼트에 대해 오버레이 네트워크들(100)을 재구성함에 있어서 오버레이 네트워크 생성기(350) 및 딥 매퍼(360)에 의한 차후의 사용을 위해, 그 정보를 성능 추적기(340)로 포워딩한다. 성능 추적기(340)는 각각의 클라이언트 노드의 성능을 모니터링하고 클라이언트 노드가 여전히 "얼라이브(alive)"인지를 결정한다. 예를 들어, 클라이언트 디바이스(200)가 연결을 닫고 채널을 떠났거나, 문턱 양의 시간 내에 "핑"에 응답하지 않으면, 클라이언트 디바이스(200)는 (의도적이든, 또는 하드웨어 또는 소프트웨어 장애의 결과로서든 간에) 채널을 떠난 것으로 간주될 것이다. 성능 추적기(340)는 또한 클라이언트 성능 메트릭들을 과거 성능 DB(Historical Performance DB)(345)에 저장하기에 그리고 오버레이 네트워크 생성기(350) 및 딥 매퍼(360)에 의해 사용하기에 적절한 포맷으로 변환한다.Upon receiving client performance information (collected by the performance monitor 240 on the client device 200) from the client device 200 (and from other client nodes), the signaling server 330 performs an initial analysis and, For subsequent use by overlay network generator 350 and deep mapper 360 in dynamically reclassifying client nodes and reconstructing overlay networks 100 for the next video segment, as described below: It forwards that information to the performance tracker 340. Performance tracker 340 monitors the performance of each client node and determines if the client node is still “alive”. For example, if client device 200 closes the connection and leaves the channel, or does not respond to the “ping” within a threshold amount of time, then client device 200 (either intentionally or as a result of a hardware or software failure) ) will be considered as having left the channel. Performance tracker 340 also converts the client performance metrics into a format suitable for storage in Historical Performance DB 345 and for use by Overlay Network Generator 350 and Deep Mapper 360 .

일 실시예에서, 오버레이 네트워크 생성기(350)는 또한, 딥 매퍼(360)의 도움을 받아, 현재 및 과거의 클라이언트 성능 메트릭들(과거 성능 DB(345)에 유지됨)을 평가하고, 각각의 비디오 세그먼트에 대해, 동적으로 (i) 클라이언트 노드들을 재분류하고 (ii) (비디오 세그먼트를 A 노드들 사이에서, ASN들 내부에서 그리고 ASN들을 거쳐 중계하기 위한) 가상 데이터 트렁크 오버레이 네트워크 및 (비디오 세그먼트를 ASN 내의 각각의 A 노드로부터 그 ASN 내의 어떤 다른 B:A, B 및 C 노드들로 중계하기 위한) 스웜 오버레이 네트워크를 비롯한, 오버레이 네트워크들(100)을 발생시키고 재구성하는 것에 의해 라우팅 경로들을 최적화하는 연속적인 프로세스를 맡고 있다. 오버레이 네트워크들(100)의 토폴로지는, 오버레이 네트워크 생성기(350) 및 딥 매퍼(360)에 의해 사용하기 위해, 오버레이 네트워크 DB(375)에 유지된다.In one embodiment, overlay network generator 350 also evaluates current and historical client performance metrics (maintained in historical performance DB 345), with the help of deep mapper 360, and for each video segment , dynamically (i) reclassify client nodes and (ii) a virtual data trunk overlay network (to relay video segments between A nodes, within and across ASNs) and (video segments to ASNs). A continuation of optimizing routing paths by generating and reconfiguring overlay networks 100, including a swarm overlay network (to relay from each A node in the ASN to any other B:A, B, and C nodes in that ASN) is in charge of the process. The topology of overlay networks 100 is maintained in overlay network DB 375 for use by overlay network generator 350 and deep mapper 360 .

새로 추가된 클라이언트 디바이스(200)로부터 수신된 성능 메트릭들에 대해, 오버레이 네트워크 생성기(350)는 클라이언트 디바이스(200)를 처음으로 분류하기 위해 그 메트릭들을 이용한다. 일 실시예에서, 이 프로세스는 또한 (클라이언트 노드들이 채널에 합류할 때뿐만 아니라) 모든 비디오 세그먼트에 대해 클라이언트 노드들을 잠재적으로 재분류하는 데 사용된다. 클라이언트 노드들이 전형적으로 그다지 자주 재분류되지 않지만, 클라이언트는 (예컨대, 가정용 전자레인지 또는 다른 간섭으로 인해) 일시적인 대역폭 저하를 경험할 수 있다. 또한, (예컨대, 중복성을 위해, 또는 채널을 떠나는 클라이언트 노드들로 인해) 보다 많은 A 노드들이 필요할 때, B:A 노드들이 A 노드들로 업그레이드될 수 있다. ASN 내에서 또는 ASN들에 걸쳐 검출되는 다른 문제들은 또한 어떤 노드들이 재분류되어야 하는 것을 필요로 할 수 있다.For the performance metrics received from the newly added client device 200, the overlay network generator 350 uses the metrics to first classify the client device 200. In one embodiment, this process is also used to potentially reclassify client nodes for every video segment (not just when client nodes join a channel). Although client nodes typically do not reclassify very often, a client may experience temporary bandwidth degradation (eg, due to a household microwave or other interference). Also, when more A nodes are needed (eg, for redundancy or due to client nodes leaving the channel), the B:A nodes can be upgraded to A nodes. Other problems detected within or across ASNs may also require certain nodes to be reclassified.

오버레이 네트워크 생성기(350)는, 다른 클라이언트 노드들로부터 푸시된 비디오 세그먼트들의 청크들을 (착신 슬롯들을 통해) 수신할 수 있고 그 비디오 세그먼트들의 청크들을 (발신 슬롯들을 통해) 다른 클라이언트 노드들로 중계할 수 있도록, 착신 및 발신 슬롯들(즉, 네트워크 포트들)을 클라이언트 디바이스(200)에 할당한다. WebRTC(224) 표준은 256개의 착신 및 발신 포트들(슬롯들)을 지원하지만, 일 실시예에서 (클라이언트 디바이스(200) 상에서 재생될 수 있는 비디오 콘텐츠의 품질을 최대화하기 위해) 단일의 착신 슬롯만이 할당되고 (오버레이 네트워크들(100)을 통한 처리율을 최대화하고 광범위한 클라이언트 디바이스들(200) 및 제한된 대역폭 연결들을 지원하기 위해) 최대 8개의 발신 슬롯들이 할당된다. 앞서 살펴본 바와 같이, A 노드들은 비디오 세그먼트들을 ASN 피어링 포인트들을 거쳐 다른 A 노드들로 중계하기 위한 4개의 발신 슬롯들과, 비디오 세그먼트들을 그의 ASN 내의 다른 A 노드들로 중계하기 위한 4개의 발신 슬롯들을 할당받는다. 이하에서 설명될 것인 바와 같이, 할당된 슬롯들 모두가 임의의 주어진 시점에서 꼭 사용되는 것은 아니다.Overlay network generator 350 may receive chunks of video segments pushed from other client nodes (via incoming slots) and may relay the chunks of video segments to other client nodes (via outgoing slots). Incoming and outgoing slots (i.e., network ports) are assigned to the client device 200. The WebRTC 224 standard supports 256 incoming and outgoing ports (slots), but in one embodiment only a single incoming slot (to maximize the quality of the video content that can be played on the client device 200). is allocated (to maximize throughput over overlay networks 100 and to support a wide range of client devices 200 and limited bandwidth connections) and up to eight outgoing slots are allocated. As seen above, A nodes have four outgoing slots for relaying video segments to other A nodes over ASN peering points, and four outgoing slots for relaying video segments to other A nodes within their ASN. be assigned As will be explained below, not all of the assigned slots are necessarily in use at any given point in time.

오버레이 네트워크 생성기(350)는 분류 프로세스를 용이하게 하기 위해 클라이언트 디바이스(200)의 다운스트림 및 업스트림 대역폭을 분석한다. 앞서 살펴본 바와 같이, 클라이언트 디바이스(200)가 셀룰러 연결(3G, 4G 또는 심지어 LTE)을 통해 합류하면, 클라이언트 디바이스(200)는 비디오 세그먼트들을 중계하기에는 너무 신뢰할 수 없는 것으로 자동으로 간주되고, 따라서 C 노드로서 분류된다. 다른 실시예들에서, 이러한 자동 분류는 어떤 셀룰러 연결들(예컨대, 3G)로 제한되거나, 완전히 제거될 수 있다.Overlay network generator 350 analyzes the downstream and upstream bandwidth of client device 200 to facilitate the classification process. As noted above, when client device 200 joins via a cellular connection (3G, 4G or even LTE), client device 200 is automatically deemed too unreliable to relay video segments, and thus C node classified as In other embodiments, this automatic classification may be limited to certain cellular connections (eg, 3G), or eliminated entirely.

일 실시예에서, 오버레이 네트워크 생성기(350)는 추가적인 분류를 용이하게 하기 위해, (1) LAN 연결들(예컨대, 100/100), (2) 광섬유 연결들(100/50), (3) ADSL 연결들(100/20), 케이블 연결들 (100/10) 및 WiFi 연결들(크게 다를 수 있음)을 비롯한, 전형적인 다운스트림/업스트림 대역폭 카테고리들(단위: Mbps)을 이용한다. 이 실시예에서, 클라이언트 디바이스(200)가 아직 C 노드로 간주되지 않고 적어도 50 Mbps의 업스트림 대역폭을 가지면, 클라이언트 디바이스(200)는 처음에 A 노드로서(또는 딥 매퍼(360)가 그의 ASN에 어떤 부가의 A 노드들도 필요하지 않다고 나타내는 경우, B:A 노드로서) 분류된다. 그렇지 않으면, 클라이언트 디바이스(200)가 B 노드로서 분류될 것이다.In one embodiment, overlay network generator 350 may be configured to facilitate further classification, (1) LAN connections (eg, 100/100), (2) fiber optic connections (100/50), (3) ADSL. It uses typical downstream/upstream bandwidth categories (in Mbps), including connections (100/20), cable connections (100/10) and WiFi connections (which can vary greatly). In this embodiment, if client device 200 is not yet considered a C node and has an upstream bandwidth of at least 50 Mbps, then client device 200 initially acts as an A node (or whatever deep mapper 360 has to its ASN). If it indicates that no additional A nodes are needed, it is classified as a B:A node). Otherwise, the client device 200 would be classified as a B node.

이하에서 논의될 것인 바와 같이, 오버레이 네트워크 생성기(350)는, (존재하는 경우) 오버레이 네트워크들(100)을 동적으로 재구성해야만 하는 정도를 결정하기 전에 사용할 수 있는 이용가능한 발신 슬롯들의 수를 계산하기 위해, (일 실시예에서) 클라이언트 디바이스(200)의 업스트림 대역폭을 추가로 분석한다. 오버레이 네트워크 생성기(350)는 또한 클라이언트 디바이스(200)가 다수의 해상도들을 수신 및/또는 폴리캐스팅할 수 있는 정도를 결정한다.As will be discussed below, the overlay network generator 350 calculates the number of available outgoing slots it can use before determining the extent to which it must dynamically reconfigure the overlay networks 100 (if any). To do so, further analyze (in one embodiment) the upstream bandwidth of the client device 200 . Overlay network generator 350 also determines the extent to which client device 200 can receive and/or polycast multiple resolutions.

일 실시예에서, 클라이언트 노드의 다운스트림 대역폭 전체가 그의 단일의 착신 슬롯을 위해 이용되는 반면, 그의 업스트림 대역폭의 1/3만이 그의 발신 슬롯들 사이에서 비디오 세그먼트들을 중계하기 위해 이용된다. 그의 업스트림 대역폭 전체가 이용되지 않는데, 그 이유는 비디오 세그먼트들을 중계하는 것이 클라이언트 디바이스(200)가 다른 애플리케이션들을 위해 사용하고 있는 TCP/IP 및 다른 연결들을 방해할 수 있기 때문이다.In one embodiment, all of a client node's downstream bandwidth is used for its single incoming slot, while only one-third of its upstream bandwidth is used to relay video segments between its outgoing slots. All of its upstream bandwidth is not used because relaying the video segments may disrupt TCP/IP and other connections that the client device 200 is using for other applications.

오버레이 네트워크 생성기(350)는, 클라이언트 디바이스(200)가 그의 단일의 착신 슬롯을 통해 지원할 수 있는 해상도들의 수를 결정하기 위해, 클라이언트 디바이스(200)(C 노드로서 분류되더라도)의 다운 스트림 대역폭을 분석한다. 예를 들어, 1080p가 3Mbps의 비트 레이트를 필요로 하고, 720p가 1.5Mbps의 비트 레이트를 필요로 하며, 480p가 500Kbps의 비트 레이트를 필요로 하면, 클라이언트 디바이스(200)는 3개의 해상도들 전부를 지원하기 위해서는 적어도 5 Mbps, 1080p와 720p를 지원하기 위해서는 적어도 4.5Mbps, 1080p만을 지원하기 위해서는 적어도 3Mbps, 720p와 480p를 지원하기 위해서는 적어도 2Mbps, 720p만을 지원하기 위해서는 적어도 1.5Mbps, 그리고 480p만을 지원하기 위해서는 적어도 500Kbps의 다운스트림 대역폭을 필요로 할 것이다. 일 실시예에서, 500Kbps 미만의 비트 레이트들은 지원되지 않을 것이다. 다른 실시예들에서, 보다 낮은 해상도들이 지원될 수 있고, 대역폭 요구사항들을 줄이기 위해 다른 기법들(예컨대, 보다 큰 압축, 상이한 비디오 포맷들 등)이 이용될 수 있다.Overlay network generator 350 analyzes the downstream bandwidth of client device 200 (even if classified as a C node) to determine the number of resolutions that client device 200 can support through its single ingress slot. do. For example, if 1080p requires a bit rate of 3 Mbps, 720p requires a bit rate of 1.5 Mbps, and 480p requires a bit rate of 500 Kbps, the client device 200 can use all three resolutions At least 5 Mbps to support, at least 4.5 Mbps to support 1080p and 720p, at least 3 Mbps to support only 1080p, at least 2 Mbps to support 720p and 480p, at least 1.5 Mbps to support only 720p, and to support only 480p This will require a downstream bandwidth of at least 500 Kbps. In one embodiment, bit rates below 500 Kbps will not be supported. In other embodiments, lower resolutions may be supported, and other techniques may be used to reduce bandwidth requirements (eg, greater compression, different video formats, etc.).

앞서 살펴본 바와 같이, 일 실시예에서, A, B:A 및 B 노드들은 또한 다수의 해상도들을 그의 발신 슬롯들 중 하나 이상을 통해 다른 노드들로 중계할 수 있는 폴리캐스팅 노드들로 간주될 수 있다. 이와 관련하여, 오버레이 네트워크 생성기(350)는 클라이언트 디바이스(200)가 다른 클라이언트 노드들로 중계할 수 있는 해상도들의 수를 결정하기 위해 클라이언트 디바이스(200)의 업스트림 대역폭을 분석한다.As noted above, in one embodiment, A, B: A and B nodes can also be considered polycasting nodes that can relay multiple resolutions to other nodes via one or more of their outgoing slots. . In this regard, overlay network generator 350 analyzes the upstream bandwidth of client device 200 to determine the number of resolutions that client device 200 can relay to other client nodes.

클라이언트 노드가 이 실시예에서 그의 업스트림 대역폭의 1/3만을 이용할 수 있기 때문에, 클라이언트 디바이스(200)는 3개의 해상도들 전부를 폴리캐스팅하기 위해서는 (발신 슬롯당) 적어도 15 Mbps, 1080p and 720p를 폴리캐스팅하기 위해서는 (발신 슬롯당) 적어도 13.5 Mbps, 1080p만을 폴리캐스팅하기 위해서는 (발신 슬롯당) 적어도 9 Mbps, 720p와 480p를 폴리캐스팅하기 위해서는 (발신 슬롯당) 적어도 6Mbps, 720p만을 중계하기 위해서는 (발신 슬롯당) 적어도 4.5Mbps, 그리고 480p만을 중계하기 위해서는 (발신 슬롯당) 적어도 1.5Mbps의 업스트림 대역폭을 필요로 할 것이다.Since the client node can only use 1/3 of its upstream bandwidth in this embodiment, the client device 200 must polycast at least 15 Mbps, 1080p and 720p (per outgoing slot) to polycast all three resolutions. At least 13.5 Mbps (per outgoing slot) to cast, at least 9 Mbps (per outgoing slot) to polycast only 1080p, at least 6 Mbps (per outgoing slot) to polycast 720p and 480p, to relay only 720p (outgoing At least 4.5Mbps per slot), and at least 1.5Mbps upstream bandwidth (per outgoing slot) to relay only 480p.

클라이언트 디바이스(200)는 그가 수신하지 않은 해상도를 중계할 수 없다. 더욱이, 클라이언트 디바이스(200)의 폴리캐스팅 능력은, 이하에서 설명되는 바와 같이, 다른 클라이언트 노드들이 다수의 해상도들을 수신할 수 있는 것과 관련하여 고려된다. 그러나, 앞서 살펴본 바와 같이, 클라이언트 디바이스(200)는, 그의 대역폭의 상당한 변화들을 경험할 때 비디오 세그먼트들의 보다 낮은 또는 보다 높은 해상도 버전들을 요청하기 위해, 적응적 스트리밍(224) 구현들을 이용한다. 클라이언트 디바이스(200)는, 비디오 세그먼트의 다수의 상이한 해상도들을 수신하면, 단순히 수신한 최고 해상도를 재생할 것이다.A client device 200 cannot relay resolutions it has not received. Moreover, the polycasting capability of the client device 200 is taken into account in terms of which other client nodes can receive multiple resolutions, as described below. However, as noted above, client device 200 uses adaptive streaming 224 implementations to request lower or higher resolution versions of video segments when experiencing significant changes in its bandwidth. When the client device 200 receives multiple different resolutions of a video segment, it will simply play back the highest resolution it received.

클라이언트 디바이스(200)가 C 노드가 아니라고 가정하면, 오버레이 네트워크 생성기(350)는, 클라이언트 디바이스(200)의 업스트림 대역폭을 분석하는 것은 물론, 클라이언트 디바이스(200)가 다수의 해상도들을 폴리캐스팅할 수 있는 정도를 고려하는 것에 의해, 클라이언트 디바이스(200)가 사용할 수 있는 이용가능한 발신 슬롯들의 수를 계산한다. 예를 들어, 클라이언트 디바이스(200)가 100 Mbps의 업스트림 대역폭을 가지는 LAN 연결을 갖는 A 노드로 분류되는 경우, 클라이언트 디바이스(200)는 그의 ASN 내에서는 물론 ASN들을 거쳐 비디오 세그먼트들을 폴리캐스팅하기 위해 단지 약 6개의 발신 슬롯들을 이용할 수 있다. 이 실시예에서, 오버레이 네트워크 생성기(350)는 ASN들을 거쳐 다른 A 노드들로 폴리캐스팅하기 위해 4개의 슬롯들을 할당할 것이고(이 ASN간 슬롯들에 우선순위를 부여함), 그의 ASN 내의 다른 A 노드들로 폴리캐스팅을 위해 나머지 2개의 슬롯들을 남겨둔다. 다른 실시예들에서, 본 발명의 사상을 벗어남이 없이 이 할당들이 물론 달라질 수 있다.Assuming that the client device 200 is not a C node, the overlay network generator 350 analyzes the upstream bandwidth of the client device 200 as well as the ability of the client device 200 to polycast multiple resolutions. By considering the degree, the number of available outgoing slots that the client device 200 can use is calculated. For example, if client device 200 is classified as a node A with a LAN connection with an upstream bandwidth of 100 Mbps, client device 200 can only use the ASN to polycast video segments within and across ASNs. About 6 outgoing slots are available. In this embodiment, overlay network generator 350 will allocate 4 slots for polycasting across ASNs to other A nodes (giving priority to these inter-ASN slots), and another A in its ASN. Leave the remaining 2 slots for polycasting to nodes. In other embodiments, these assignments may of course vary without departing from the spirit of the present invention.

이와 유사하게, 클라이언트 디바이스(200)가 10 Mbps의 업스트림 대역폭을 가지는 케이블 연결을 갖는 B:A 또는 B 노드로서 분류되는 경우, 클라이언트 디바이스(200)는 720p와 480p 해상도들을 폴리캐스팅하기 위해 또는 1080p만을 송신하기 위해 단지 하나의 발신 슬롯을 이용할 수 있다. 일 실시예에서, (노드들이 그 해상도를 수신할 수 있는 정도로) 보다 높은 품질의 해상도들에 우선순위가 부여되고, 따라서 1080p만을 위해 하나의 슬롯이 할당될 것이다. 여기에서도 역시, 본 발명의 사상을 벗어남이 없이 이 할당들이 달라질 수 있다.Similarly, if the client device 200 is classified as a B:A or B node with a cable connection with an upstream bandwidth of 10 Mbps, the client device 200 can only polycast 720p and 480p resolutions or only 1080p. Only one outgoing slot can be used to transmit. In one embodiment, higher quality resolutions are given priority (to the extent that nodes can receive that resolution), so one slot will be allocated for 1080p only. Here too, these assignments may vary without departing from the spirit of the invention.

클라이언트 디바이스(200)를 분류하고 (다수의 해상도들을 폴리캐스팅하는 것을 포함하여) 이용될 수 있는 슬롯들의 수를 결정하였으면, 오버레이 네트워크 생성기(350)는 라우팅 경로들을 최적화하기 위해 오버레이 네트워크들(100)을 동적으로 재구성할 정도를 결정하고, 클라이언트 디바이스(200)가 A 노드이면, 오버레이 네트워크 생성기(350)는 먼저 A 노드들 사이의 각각의 ASN간 경로에 대한 혼잡 레벨들을 딥 매퍼(360)로부터 획득할 것이고(이하에서 보다 상세히 논의됨), 이어서 클라이언트 디바이스(200)를 포함하도록 가상 데이터 트렁크 오버레이 네트워크의 적어도 일부를 동적으로 재구성할 것이다.Having classified the client device 200 and determined the number of slots available (including polycasting multiple resolutions), the overlay network generator 350 uses the overlay networks 100 to optimize routing paths. Determines the degree to dynamically reconfigure , and if the client device 200 is node A, the overlay network generator 350 first obtains congestion levels for each inter-ASN path between A nodes from the deep mapper 360. (discussed in more detail below), and then dynamically reconfigure at least a portion of the virtual data trunk overlay network to include the client device 200 .

예를 들어, 가중 경로들의 세트(각각의 경로는 "혼잡 레벨"가중치를 가짐)가 주어지면, 오버레이 네트워크 생성기(350)는 (예를 들어, GPS 네비게이션 경로 설정과 유사하게) 비디오 세그먼트를 A 노드들 간에 배포하는 최적의 경로를 결정하기 위해 표준의 경로 탐색 기법들을 이용한다. 그렇지만, 이 프로세스가 다수의 중계 슬롯들 - 예컨대, ASN 내의 A 노드들로 중계하는 A 노드들에 대한 4개의 발신 슬롯들, 그리고 ASN 피어링 포인트를 거쳐 A 노드들로 중계하는 A 노드들에 대한 4개의 발신 슬롯들)의 사용에 의해 약간 복잡하다는 것에 유의해야 한다. 그러나, 이것은 A 노드가 단지 하나의 발신 슬롯을 가지는 가장 간단한 경우의 약간의 변형에 불과하다. 환언하면, 오버레이 네트워크 생성기(350)는 가상 데이터 트렁크 오버레이 네트워크의 발생 또는 재구성 동안 열린(사용되지 않은) 슬롯들의 수를 추적하고, 어떤 사용되지 않은 열린 슬롯들도 더 이상 갖지 않으면, 특정의 A 노드를 중계 소스로서 할당하는 것을 중단한다.For example, given a set of weighted routes (each route having a “congestion level” weight), overlay network generator 350 (e.g., similar to GPS navigation route establishment) can divide a video segment into node A It uses standard path finding techniques to determine the optimal path to distribute between them. However, this process requires multiple relaying slots - e.g., 4 outgoing slots for A nodes relaying to A nodes within the ASN, and 4 outgoing slots for A nodes relaying to A nodes via the ASN peering point. It should be noted that it is slightly complicated by the use of outgoing slots). However, this is just a slight variation on the simplest case where node A has only one outgoing slot. In other words, the overlay network generator 350 keeps track of the number of open (unused) slots during creation or reconfiguration of the virtual data trunk overlay network, and if it no longer has any unused open slots, a particular A node Stop assigning as a relay source.

클라이언트 디바이스(200)가 B:A 또는 B 노드이면, 오버레이 네트워크 생성기(350)는 클라이언트 디바이스(200)가 존재하는 ASN에 있는 ASN간 스웜 오버레이 네트워크들 중 일부 또는 전부를 동적으로 재구성한다. 그 ASN 내에 다수의 A 노드들이 있는 경우, 그들의 서로 간의 경로들은 가상 데이터 트렁크 오버레이 네트워크의 일부로서 결정될 것임에 유의해야 한다. 일 실시예에서, (충분한 슬롯들이 이용가능한 경우) 스웜 오버레이 네트워크를 생성하기 위해 하나의 A 노드만이 이용될 것인 반면, 다른 실시예들에서는, 다른 노드들이 다수의 A 노드들 간에 똑같이 할당되거나 상대 업스트림 대역폭 또는 다른 메트릭들에 기초하여 분산될 수 있다.If the client device 200 is a B:A or B node, the overlay network generator 350 dynamically reconfigures some or all of the inter-ASN swarm overlay networks in the ASN in which the client device 200 resides. It should be noted that if there are multiple A nodes within that ASN, their routes to each other will be determined as part of the virtual data trunk overlay network. In one embodiment, (if enough slots are available) While only one A node may be used to create a swarm overlay network, in other embodiments other nodes may be allocated equally among multiple A nodes or distributed based on relative upstream bandwidth or other metrics. have.

임의의 특정 A 노드들 및 ASN 내의 나머지 B, B:A 및 C 노드들과 관련하여, 이 노드들은 먼저 그들의 분류에 기초하여(즉, B:A, 이어서 B, 이어서 C) 그리고 이어서 그들의 상대 대역폭(즉, 앞서 기술된 바와 같이, 사용될 수 있는 이용가능한 슬롯들의 수)에 기초하여 순위가 매겨진다. 각각의 노드가 단일의 피더 노드만을 가지면, 스웜 오버레이 네트워크가 이 실시예에서 계층구조인 것에 유의한다. 다른 실시예들에서 비계층적 "메시"스웜들에 대해 유사한 기법들이 이용될 수 있다.Regarding any particular A nodes and the rest of the B, B:A and C nodes in the ASN, these nodes are first based on their classification (i.e., B:A, then B, then C) and then their relative bandwidth. (ie, the number of available slots that can be used, as described above). Note that the swarm overlay network is hierarchical in this embodiment, as each node has only a single feeder node. Similar techniques may be used for non-hierarchical “mesh” swarms in other embodiments.

이 계층적 스웜 실시예에서, 프로세스는, 이용될 수 있는 특정 수의 발신 슬롯들(예컨대, 2개의 발신 슬롯들)을 가질, 루트 A 노드에서 시작한다. 그 슬롯들은 계층구조의 다음 레벨 - 예컨대, 사용될 수 있는 가장 많은 수의 이용가능한 슬롯들을 갖는 2개의 B:A 노드들 - 로 라우팅될 것이다. 이 경로들이 결정되면, 그 노드들의 이용가능한 발신 슬롯들은 가장 많은 수의 이용가능한 슬롯들을 갖는 나머지 B:A 노드들로 라우팅될 것이다. 이 프로세스는 모든 경로들이 결정될 때까지 계층구조를 따라(B 노드들 그리고 마지막으로 C 노드들을 통해) 계속된다.In this hierarchical swarm embodiment, the process starts with a root A node, which will have a certain number of outgoing slots available (eg, two outgoing slots). Those slots will be routed to the next level in the hierarchy - eg the two B:A nodes with the highest number of available slots that can be used. Once these routes are determined, the available outgoing slots of those nodes will be routed to the remaining B:A nodes with the largest number of available slots. This process continues down the hierarchy (via B nodes and finally C nodes) until all paths have been determined.

ASN 내의 노드들 사이의 중계의 비교적 높은 속도(1 ms 미만)를 고려할 때 임의의 클라이언트 노드 아래에 있는 체인의 길이(예컨대, 각각이 단일의 발신 슬롯을 갖는, 100개의 클라이언트 노드들)가 비교적 거의 중요하지 않다는 것에 유의한다. 1초의 비디오 세그먼트가 주어지면, 수백 개의 노드들로 된 체인이 (ASN 내의 많은 노드들이 다수의 발신 슬롯들을 지원할 가능성이 있기 때문에 드물지만) 여전히 수용될 수 있다. 노드들 모두가 스웜에 포함될 수는 없는 경우(예컨대, 0개의 이용가능한 슬롯을 갖는 C 노드들과 B 노드들이 고려되지 않은 경우), 이용가능하게 될 때 할당될, 그 ASN에서의 열린 슬롯들을 갖는 부가의 노드들이 필요할 것이다. 그 사이에, 이러한 노드들은 비디오 세그먼트들을 POI 콘텐츠 서버(380)에 요청하도록 지시받을 것이다.Given the relatively high speed (less than 1 ms) of relaying between nodes in an ASN, the length of the chain under any client node (e.g., 100 client nodes, each with a single outgoing slot) is relatively small. Note that it doesn't matter. Given a one-second video segment, a chain of hundreds of nodes can still be accommodated (which is rare since many nodes in an ASN are likely to support multiple outgoing slots). If not all of the nodes can be included in a swarm (e.g. C nodes and B nodes with 0 available slots are not considered), they have open slots in that ASN to be allocated when they become available. Additional nodes will be required. In the meantime, these nodes will be instructed to request video segments from POI content server 380 .

(예컨대, 다음 1분에 대한) ASN 피어링 포인트들을 거치는 혼잡 레벨들을 예측하고 정량화하는, 딥 매퍼(360)로 돌아가기 전에, ASN 피어링 포인트 혼잡의 유의성(significance)을 이해하기 위해 BGP 라우팅 프로토콜들의 한계들을 이해하는 것이 도움이 된다. BGP 라우터들은 "라우팅 시에" 혼잡을 결정하고 예측 능력을 갖지 않는다. BGP 라우터들은 그 자신의 라우터들만을 인식하고, 지연시간은 ASN 피어링 포인트를 거쳐 "1홉 떨어져 있음"이다. BGP 라우터들은, 다수의 ASN 피어링 포인트들을 거쳐 다수의 홉들만큼 떨어져 있을 수 있는, 임의의 최종 목적지에 대한 홉 수 또는 지연시간을 알지 못한다. 다수의 ASN 피어링 포인트들의 선택 항목이 주어지면, BGP 라우터들은 본질적으로 현재 최대 이용가능 대역폭을 갖는 것(즉, 열린 슬롯 및 1홉 떨어져 있는 최저 지연시간을 갖는 것)을 선택한다.Limitations of BGP routing protocols to understand the significance of ASN peering point congestion before turning to Deep Mapper 360, which predicts and quantifies congestion levels across ASN peering points (eg, for the next minute). It is helpful to understand them. BGP routers do not have the ability to determine and predict congestion “at routing”. BGP routers are only aware of their own routers, and the latency is "one hop away" through the ASN peering point. BGP routers do not know the hop number or latency to any final destination, which may be many hops away over multiple ASN peering points. Given a choice of multiple ASN peering points, the BGP routers essentially choose the one with the current maximum available bandwidth (i.e. open slot and lowest latency one hop away).

이와 달리, 딥 매퍼(360)는 인터넷의 기반이 되는 아키텍처에 대한 그의 지식을 이용한다. 일 실시예에서, 딥 매퍼(360)는, 도 1에 개략적으로 예시된 바와 같이, 인터넷의 ASN 상호연결 맵(ASN들 및 그들의 다양한 피어링 포인트 상호연결들을 포함함)을 유지한다. 이 맵은 자주 변하지는 않지만, 일 실시예에서, 이러한 드문 변화들을 포착하기 위해 매 5분마다 모니터링된다.In contrast, deep mapper 360 uses its knowledge of the Internet's underlying architecture. In one embodiment, deep mapper 360 maintains an ASN interconnection map (including ASNs and their various peering point interconnections) of the Internet, as schematically illustrated in FIG. 1 . This map does not change often, but in one embodiment is monitored every 5 minutes to catch these infrequent changes.

그렇지만, 이 ASN들 위에 구축되는 오버레이 네트워크들(100)은 가상 방송 서버(300)에 의해 (예컨대, 앞서 논의된 바와 같이 클라이언트측 모니터링을 통해) 빈번하게 분석되고 어쩌면 매 비디오 세그먼트마다(예컨대, 일 실시예에서 매 초마다)를 재구성된다. 그렇지만, 실제적으로, 오버레이 네트워크들(100)은 실제로는 보장될 때에만 - 예컨대, 새로운 노드들이 채널에 합류하거나 채널을 떠날 때뿐만 아니라 (과거 성능 DB(345)에 유지되는 현재 및 과거의 정보에 기초하여) 충분한 문제들이 검출될 때에도 - 수정된다.However, the overlay networks 100 built on top of these ASNs are frequently analyzed by the virtual broadcast server 300 (e.g., via client-side monitoring as discussed above) and possibly every video segment (e.g., one in the embodiment every second). However, in practice, the overlay networks 100 only operate when it is actually warranted - eg, not only when new nodes join or leave the channel (with current and historical information maintained in the historical performance DB 345). based) - even when enough problems are detected - to be corrected.

예를 들어, 일 실시예에서 다수의 내부 "혼잡 문턱값들"이 이용된다. ASN 내에서 또는 특정의 클라이언트 디바이스(200)에 특유한 비교적 낮은 혼잡 문턱값의 초기 검출 시에, 오버레이 네트워크 생성기(350)는 클라이언트 디바이스(200) 또는 ASN에 "표시"할 뿐이고, (예컨대, 다음 비디오 세그먼트에서) 문제가 반복되는지를 알아보기 위해 기다린다. 그러한 경우, 오버레이 네트워크 생성기(350)는 그 클라이언트 노드(또는 그 "문제가 되는" ASN 내의 모든 클라이언트 노드들)로 중계되는 다음 비디오 세그먼트의 해상도(그리고 따라서 비트 레이트)를 낮출 수 있다. 궁극적으로, 문제가 악화되면(예컨대, 보다 높은 혼잡 문턱값을 초과하면), 오버레이 네트워크들(100)의 일부분(예컨대, ASN 내의 서브셋 IP 범위)이 동적으로 재구성될 수 있다. 마지막으로, ASN 전체, 또는 아마도 가상 데이터 트렁크 오버레이 네트워크 자체가 동적 재구성을 필요로 할 수 있다.For example, in one embodiment multiple internal "congestion thresholds" are used. Upon initial detection of a relatively low congestion threshold within an ASN or specific to a particular client device 200, the overlay network generator 350 merely "indicates" to the client device 200 or ASN (e.g., the next video segment) to see if the problem repeats. In such a case, the overlay network generator 350 may lower the resolution (and thus bit rate) of the next video segment relayed to that client node (or all client nodes in the "offending" ASN). Ultimately, if the problem gets worse (eg, a higher congestion threshold is exceeded), a portion of the overlay networks 100 (eg, a subset IP range within an ASN) may be dynamically reconfigured. Finally, the entire ASN, or perhaps the virtual data trunk overlay network itself, may require dynamic reconfiguration.

어느 경우든지, 이 혼잡 문턱값들의 목표는, 비디오 세그먼트들이 손실되게 하는 또는 심지어 클라이언트 노드들이 POI 콘텐츠 서버(380)의 폴백 위치로부터 비디오 세그먼트를 획득하는 것에 의존하게 하는 보다 중대한 문제들로 악화되기 전에, 문제들을 사전 대응적으로 식별하고 교정하는 것이다.In either case, the goal of these congestion thresholds is to prioritize deteriorating to more serious problems that cause video segments to be lost or even cause client nodes to rely on obtaining video segments from the POI content server 380's fallback location. , to proactively identify and correct problems.

인터넷의 ASN 상호연결 맵 및 오버레이 네트워크들(100) 상의 노드들의 ASN 위치에 대한 인식을 유지하고 이 노드들의 현재 및 과거의 성능을 실시간으로 모니터링하는 것에 의해, 딥 매퍼(360)는 임의의 클라이언트 노드가 비디오 세그먼트를 멀리 떨어진 클라이언트 노드(예컨대, 다수의 ASN 피어링 포인트들을 거쳐 많은 홉들만큼 떨어져 있음)로 불필요하게 중계할 가능성을 최소화한다. 예를 들어, 일 실시예에서 초기의 문제로서, 가상 데이터 트렁크 오버레이 네트워크는 하나의 A 노드로부터 동일한 ASN 내의 또는 단일의 ASN 피어링 포인트를 거쳐 근방의 ASN 내의 다른 A 노드로 비디오 세그먼트들을 (가능할 때마다) 라우팅하는 경향이 있다.By maintaining an awareness of the ASN interconnection map of the Internet and the ASN location of nodes on overlay networks 100 and monitoring the current and historical performance of these nodes in real time, the Deep Mapper 360 is able to use any client node minimizes the possibility of unnecessarily relaying a video segment to a distant client node (eg, many hops away over multiple ASN peering points). For example, as an initial matter in one embodiment, the virtual data trunk overlay network can transfer video segments from one A-node to another A-node within the same ASN or via a single ASN peering point to another A-node within a nearby ASN (whenever possible). ) tend to route.

그렇지만, 단일의 홉들 모두가 똑같이 생성되는 것은 아니다. 예를 들어, 딥 매퍼(360)는 시간의 경과에 따라(과거 성능 DB(345)에 유지되는 클라이언트 성능 메트릭들에 기초하여) "ASN 1"과 "ASN 2" 사이의 피어링 포인트가 혼잡해지고 있다는 것을 "알" 수 있고, "ASN 1"로부터 "ASN 3"을 거쳐 "ASN 2"로의 2-홉 경로가 실제로는 현재의 1-홉 경로보다 더 빠르다고(또는 최근 및 과거의 동향들에 기초하여 아주 가까운 장래에 보다 빨라질 것이라고) "예측"할 수 있다. 피어링 포인트들을 거치는 A 노드들의 실제의 현재 및 과거의 성능에 기초하여 피어링 포인트 혼잡을 정량화하는 것에 의해, 딥 매퍼(360)는 - 어쩌면 매 비디오 세그먼트마다 또는 적어도 피어링 포인트 혼잡이 (내부 문턱값에 기초하여) 이러한 변화들을 필요로 할 때 - 가상 데이터 트렁크 오버레이 네트워크의 토폴로지의 동적 재구성을 용이하게 할 수 있다.However, not all single hops are created equal. For example, deep mapper 360 may detect that the peering point between “ASN 1” and “ASN 2” is becoming congested over time (based on client performance metrics maintained in historical performance DB 345). can "know" that the 2-hop route from "ASN 1" via "ASN 3" to "ASN 2" is actually faster than the current 1-hop route (or based on recent and past trends). It can be "predicted" that it will be faster in the very near future. By quantifying peering point congestion based on the actual current and past performance of the A nodes across the peering points, deep mapper 360 - maybe every video segment or at least peering point congestion (based on an internal threshold) to facilitate dynamic reconfiguration of the topology of the virtual data trunk overlay network - when such changes are required.

일 실시예에서, 딥 매퍼(360)는 1 내지 10의 척도 - 1은 예측된 단기 혼잡의 최저 레벨이고 10은 최고 레벨임 - 를 이용하여 각각의 A 노드들의 쌍(동일한 ASN에 또는 상이한 ASN들에 존재하는지에 관계없음)에 대한 혼잡을 정량화한다. 앞서 살펴본 바와 같이, 오버레이 네트워크 생성기(350)는, A 노드들 사이의 상이한 잠재적 경로들을 비교하고 가장 효율적인 경로(즉, 최저 "가중 홉" 경로)를 결정하기 위해, 이 혼잡 레벨 "점수(score)"를 이용한다. 그 결과, POI 콘텐츠 서버(380)로부터 (가중 홉들로 측정된) 가장 "멀리 있는" A 노드들은 비디오 세그먼트가 POI 콘텐츠 서버(380)로부터 이러한 A 노드들까지 가상 데이터 트렁크 오버레이 네트워크를 지나가는 데 필요한 시간의 양을 최소화할 것이다.In one embodiment, deep mapper 360 uses a scale of 1 to 10, where 1 is the lowest level of predicted short-term congestion and 10 is the highest, using each pair of A nodes (to the same ASN or to different ASNs). ) quantifies congestion for As noted above, the overlay network generator 350 uses this congestion level "score" to compare the different potential routes between A nodes and determine the most efficient route (i.e., the lowest "weighted hop" route). " use As a result, the most "furthest" A-nodes (measured in weighted hops) from the POI content server 380 are the time required for a video segment to traverse the virtual data trunk overlay network from the POI content server 380 to these A-nodes. will minimize the amount of

일 실시예에서, 각각의 A 노드들의 쌍에 대해, 딥 매퍼(360)는 하나의 A 노드로부터 다른 A 노드로의 각각의 경로에 대한 예측된 혼잡 레벨 점수를 발생시키고, 이어서 그 A 노드들의 쌍에 적용될 최저 혼잡 레벨 점수를 선택하며, 이를 오버레이 네트워크(350)로 반환한다. 다른 실시예들에서, 딥 매퍼(360)는 (하나의 A 노드에서 다른 A 노드로의 각각의 경로에 대해, 평균, 메디안 등과 같은) 그 예측된 혼잡 레벨 점수들의 상이한 함수를 발생시킨다.In one embodiment, for each pair of A nodes, deep mapper 360 generates a predicted congestion level score for each path from one A node to another A node, followed by that pair of A nodes. Selects the lowest congestion level score to be applied to, and returns it to the overlay network 350. In other embodiments, deep mapper 360 generates a different function of the predicted congestion level scores (such as mean, median, etc., for each path from one A node to another A node).

딥 매퍼(360)는, 일 실시예에서, 과거 성능 DB(345)에서 유지되는 성능 메트릭들을 연속적으로 분석하고, (예컨대, 앞으로 1분 후의) ASN 피어링 포인트들을 거치는 혼잡 레벨을 예측하는 딥 러닝 엔진이다. 임의의 딥 러닝 엔진과 마찬가지로, 딥 매퍼(360)가, 그 피어링 포인트들을 거치는 A 노드들 간의 트래픽과 관련하여, ASN 피어링 포인트들의 거동을 모델링하기 위해 다수의 비선형 변환들 이용한다는 것에 유의해야 한다.Deep mapper 360, in one embodiment, is a deep learning engine that continuously analyzes performance metrics maintained in historical performance DB 345 and predicts congestion levels across ASN peering points (e.g., 1 minute in the future). to be. It should be noted that, like any deep learning engine, deep mapper 360 uses a number of non-linear transformations to model the behavior of ASN peering points with respect to traffic between A nodes across those peering points.

앞서 살펴본 바와 같이, 딥 매퍼(360)는 사실상 그 피어링 포인트들을 거치는 인터넷 트래픽의 대부분을 모니터링할 수는 없고, 시간의 경과에 따라 이러한 트래픽이 그 피어링 포인트들을 거쳐 A 노드들 사이의 ASN간 홉들에서 가지는 효과만을 모니터링한다. 보다 많은 성능 메트릭들이 획득됨에 따라, 딥 매퍼(360)는 (예컨대, 그렇지만 이 실시예에서 역시 모니터링되는, 전형적으로 훨씬 덜 혼잡한 ASN내 홉들과 비교하여) 이러한 ASN간 홉들에 필요한 시간 - 이는 이어서 상대 혼잡 레벨로서 정량화됨 - 을 더 잘 예측할 수 있다. As discussed above, the deep mapper 360 cannot monitor most of the Internet traffic that actually passes through the peering points, and over time, this traffic passes through the peering points at inter-ASN hops between A nodes. Only the effect of the branch is monitored. As more performance metrics are obtained, deep mapper 360 calculates the time required for these inter-ASN hops (e.g., compared to typically much less congested intra-ASN hops, which are also monitored in this embodiment, however) - which is then Quantified as the relative congestion level - can better predict

피어링 포인트들의 혼잡 레벨이 아주 동적이기 때문에, 이러한 예측들은 짧은 기간 동안만 정확할 수 있다. 그러나, 이 분석이 연속적으로 수행되고 다음 1초의 비디오 세그먼트에 대해 변할 수 있으면, 예측이 오랜 기간 동안 정확해야한다는 것은 중요하지 않다.Because the congestion level of peering points is highly dynamic, these predictions may only be accurate for a short period of time. However, if this analysis is performed continuously and can change for the next one-second video segment, it is not critical that the prediction be accurate over a long period of time.

일 실시예에서, 딥 매퍼(360)는 처음에(즉, 많은 클라이언트 성능 메트릭들이 획득되기 전에) 아주 조악한 정보에 기초하여 ASN 피어링 포인트들을 정량화한다. 예를 들어, ASN이 1000개의 피어링 포인트들을 가지면, 그 ASN은 6개의 피어링 포인트들을 갖는 다른 ASN보다 훨씬 더 빠를 가능성이 있는 백본이라고 가정될 수 있다. 보다 많은 클라이언트 성능 메트릭들이 획득됨에 따라, 이 ASN 피어링 포인트 혼잡 레벨들이 보다 정확하게 될 것이다. 다른 실시예에서, 새로운 채널을 "신속히 시작(jump start)"하기 위해 다수의 "러닝 노드(learning node)들"이 배치된다. 이 러닝 노드들은 비디오를 시청하지 못하는 송신 전용 노드이고, 딥 매퍼(360)가 그렇게 하지 않은 것보다 더 빨리 보다 정확한 예측을 시작할 수 있도록, 클라이언트 성능 정보를 신속하게 제공하기 위해서만 배치된다.In one embodiment, deep mapper 360 initially quantifies ASN peering points based on very coarse information (ie, before many client performance metrics have been obtained). For example, if an ASN has 1000 peering points, it can be assumed that that ASN is a backbone that is likely to be much faster than another ASN with 6 peering points. As more client performance metrics are obtained, these ASN peering point congestion levels will become more accurate. In another embodiment, multiple “learning nodes” are deployed to “jump start” a new channel. These running nodes are transmit-only nodes that do not watch the video, and are only deployed to quickly provide client performance information so that deep mapper 360 can start making more accurate predictions sooner than it would otherwise.

더욱이, 일 실시예에서, 딥 매퍼(360)는 또한 ASN내 혼잡을 고려하는데, 그 이유는 이것이 예를 들어, ASN 내의 부가의 A 노드들 그리고 따라서 부가의 스웜 오버레이 네트워크들의 생성에 대한 필요성을 암시할 수 있기 때문이다. 예를 들어, ASN 내의 많은 클라이언트 노드들이 시간이 지남에 따라 비디오 세그먼트들을 획득하는 데 점차적으로 더 오랜 시간이 걸리는 경우, 딥 매퍼(360)는 부가의 A 노드들이 필요하다는 것을 나타내기 위해 ASN에 표시하고, 오버레이 네트워크 생성기(350)는 하나 이상의 B:A 노드들을 A 노드들로 "격상"시킬 수 있으며, 그 결과 가상 데이터 트렁크 오버레이 네트워크의 부분 재구성이 이루어지고, 궁극적으로 ASN 내에 새로운 스웜 오버레이 네트워크들을 필요로 한다. 다른 실시예에서, 딥 매퍼(360)는 각각의 ASN 내에서 딥 러닝 기법들을 적용하고, 오버레이 네트워크 생성기(350)가 ASN내 스웜 오버레이 네트워크들을 발생시키는 것을 돕는다.Moreover, in one embodiment, deep mapper 360 also takes into account congestion within the ASN, since this implies the need for creation of, for example, additional A nodes within the ASN and thus additional swarm overlay networks. Because you can. For example, if many client nodes in the ASN are taking progressively longer time to acquire video segments over time, deep mapper 360 may indicate to the ASN to indicate that additional A nodes are needed. and overlay network generator 350 may “promote” one or more B:A nodes to A nodes, resulting in partial reconfiguration of the virtual data trunk overlay network, and ultimately new swarm overlay networks within the ASN. in need. In another embodiment, deep mapper 360 applies deep learning techniques within each ASN and helps overlay network generator 350 generate swarm overlay networks within the ASN.

따라서, 오버레이 네트워크 생성기(350)와 딥 매퍼(360)는, 불필요하게 멀리 떨어진 경로들을 거치는(즉, 다수의 ASN 피어링 포인트들을 거치는) 비디오 세그먼트들의 중계들을 최소화하기 위해, 인터넷의 기반이 되는 아키텍처(ASN 상호연결 맵) 및 그 아키텍처 위에 오버레이된 클라이언트 노드들의 ASN 위치에 기초하는 (오버레이 네트워크들(100)을 통한) 클라이언트 노드들 간의 경로들을 구축하기 위해 서로 협력한다. 더욱이, 오버레이 네트워크 생성기(350) 및 딥 매퍼(360)는 또한, 클라이언트 디바이스들(200)에 의해 획득된 실시간 클라이언트 성능 메트릭들을 연속적으로 분석하기 위해 그리고 이러한 메트릭들이 (종종 ASN 피어링 포인트들에서의 혼잡으로 인한) 중대한 문제들을 나타내는 경우에 오버레이 네트워크들(100)을 동적으로 재구성하기 위해, 서로 협력한다. 그 결과, 인터넷의 QoS 변동성이 모니터링될 수 있고, "발생하기 전에"(딥 매퍼(360)에 의해 발생되는 예측된 혼잡 레벨들에 기초하여) 이러한 문제들을 우회하게 동적으로 재라우팅함으로써 (특히 ASN 피어링 포인트들에서의) 혼잡의 클라이언트 노드들에 대한 영향이 최소화될 수 있다.Thus, the overlay network generator 350 and the deep mapper 360, in order to minimize relaying of video segments over unnecessarily distant paths (i.e., across multiple ASN peering points), the Internet's underlying architecture ( ASN interconnection map) and the ASN location of the client nodes overlaid on the architecture. Moreover, overlay network generator 350 and deep mapper 360 also continuously analyze real-time client performance metrics obtained by client devices 200 and these metrics (often congestion at ASN peering points). to dynamically reconfigure the overlay networks 100 in the case of presenting significant problems (due to . As a result, the QoS variability of the Internet can be monitored, and "before it happens" (based on predicted congestion levels generated by the deep mapper 360) by dynamically rerouting around these problems (in particular ASN The impact on client nodes of congestion (at peering points) can be minimized.

일 실시예에서, 가상 방송 서버(300)는 동향 비디오 이벤트들("스플래시들")을 식별하는 것 및 사용자들이 이러한 이벤트들의 도메인을 검색하여 원하는 스플래시 결과를 POI 콘텐츠 서버(380)로부터 비디오 채널로서 즉각 스트리밍할 수 있게 하는 것(여기서 이러한 채널은 그렇지 않았으면 가상 방송 서버(300)로부터 이용가능하지 않았음)을 위한 스플래시 추출기(390) 검색 엔진을 포함한다.In one embodiment, virtual broadcast server 300 identifies trending video events (“splashes”) and allows users to search the domain of these events to obtain desired splash results from POI content server 380 as a video channel. includes a splash extractor 390 search engine for immediate streaming (where these channels would otherwise not be available from the virtual broadcast server 300).

일 실시예에서, 스플래시 추출기(390)는 - 예컨대, Twitter, RSS Feeds, Reddit 및 수만개의 온라인 잡지들에 대한 API들을 통해 - 다수의 뉴스 소스들로부터 연속적으로 데이터를 수집한다. 평균적으로, 수천개의 독특한 "현재 이벤트들"이 매 시간마다 이러한 소스들에서 나타난다. 스플래시 추출기(390)는, 이러한 동향 이벤트들(스플래시들)을 식별하고 POI 콘텐츠 서버(380)를 통해 획득되고 스트리밍될 수 있는 관련 비디오들을 찾아내어 추출하기 위해, 신규의 자동화된 방법을 이용한다.In one embodiment, splash extractor 390 continuously collects data from multiple news sources—eg, via APIs for Twitter, RSS Feeds, Reddit, and tens of thousands of online magazines. On average, thousands of unique "current events" appear from these sources every hour. Splash extractor 390 uses a novel automated method to identify these trending events (splashes) and find and extract related videos that can be acquired and streamed through POI content server 380 .

스플래시 추출기(390)는 스플래시들을 검출하기 위해 "노름으로부터의 편차(deviation from the norm)"를 식별한다. 예를 들어, 뉴스 소스들의 도메인에서, 예를 들어, 표준의 Levenshtein 비교 알고리즘을 이용하여 (정규화된 데이터를 필요로 함이 없이) 기준선이 만들어진다. 평균적으로, 특정의 주제가 실제로 동향을 나타내지 않는 한, 몇 개 이하의 소스들이 단기간 내에 동일한 "주제"(즉, 키워드들의 모음)을 논의할 것이다. 그 시점에서(예컨대, 15개 이상의 소스들이 짧은 기간 내에 동일한 주제를 논의할 때), 그 주제는 편차 그리고 따라서 스플래시로서 식별된다.Splash extractor 390 identifies “deviations from the norm” to detect splashes. For example, in the domain of news sources, a baseline is created (without the need for normalized data) using, for example, the standard Levenshtein comparison algorithm. On average, no more than a few sources will discuss the same "topic" (i.e., collection of keywords) in a short period of time, unless a particular topic actually represents a trend. At that point (eg, when 15 or more sources discuss the same topic within a short period of time), the topic is identified as a deviation and thus a splash.

스플래시 추출기(390)는 이어서 - 일 실시예에서, "스플래시 관련"기사들로부터 독특한 키워드들을 학습하고 예측하기 위해 표준의 신경망 기법들을 이용하는 것에 의해 - 그 소스들로부터의 "가장 중요한"키워드들(예컨대, 일 실시예에서 40개의 키워드들)을 추출한다. 이 키워드들은 이어서 (예컨대, 뉴스, 스포츠 등으로) 분류되고 빈도수에 의해 순위가 매겨진다.Splash extractor 390 then - in one embodiment, by using standard neural network techniques to learn and predict unique keywords from "splash related" articles - selects the "most important" keywords from those sources (e.g. , 40 keywords in one embodiment). These keywords are then categorized (eg, news, sports, etc.) and ranked by frequency.

스플래시 추출기(390)는 이어서 각각의 스플래시에 관련된 비디오들이 있는지 소셜 미디어를 검색하기 위해 그 키워드들을 사용하고, 그 잠재적인 스플래시 비디오 채널들과 연관된 관련 텍스트를 인덱싱한다. 사용자들은 이어서 그 인덱스를 검색하거나, 스플래시 비디오 이벤트들의 카테고리들을 단순히 브라우징할 수 있다. (검색되었는지 브라우징되었는지에 관계없이) 결과를 선택할 때, 사용자는 원하는 비디오를 즉각 스트리밍할 수 있다. 일 실시예에서, 사용자가 비디오의 현재 소스에 단순히 링크되는 반면, 다른 실시예에서, 비디오가 가상 방송 서버(300)를 통해 획득되고, POI 콘텐츠 서버(380)로부터 스트리밍된다(예를 들어, 많은 수의 동시 사용자들이 동일한 스플래시 비디오 채널을 요청하는 경우 유용함).Splash extractor 390 then uses those keywords to search social media for videos related to each splash, and indexes the relevant text associated with the potential splash video channels. Users can then search that index, or simply browse the categories of splash video events. Upon selecting a result (whether searched or browsed), users can immediately stream the video they want. In one embodiment, the user is simply linked to the video's current source, while in another embodiment, the video is acquired through the virtual broadcast server 300 and streamed from the POI content server 380 (e.g., many useful when many concurrent users request the same splash video channel).

동적 비디오 스트리밍 프로세스Dynamic video streaming process

본 발명의 가상 방송 시스템의 주요 클라이언트측 및 서버측 컴포넌트들을 논의하였으며, 도 4의 플로차트(400)는 이 컴포넌트들이 어떻게 동적으로 상호작용하는지를 나타낸다. 환언하면, 플로차트(400)는 이러한 컴포넌트들에 의해 구현되는 본 발명의 동적 스트리밍 프로세스의 일 실시예를 나타낸다. 이 프로세스의 상당 부분이 이벤트 기반이고 선형이 아니기 때문에, 플로차트(400)가 클라이언트측 기능과 서버측 기능 간의 상호작용의 관점에서 단계들을 나타낸다는 것에 유의해야 한다.Having discussed the main client-side and server-side components of the virtual broadcasting system of the present invention, flowchart 400 of FIG. 4 shows how these components interact dynamically. In other words, flowchart 400 represents one embodiment of the dynamic streaming process of the present invention implemented by these components. It should be noted that flow chart 400 presents steps in terms of interactions between client-side and server-side functions, as much of this process is event-based and not linear.

단계(401)는, 비디오 이벤트가 클라이언트 노드(예컨대, 클라이언트 디바이스(200) 상의 스마트폰 카메라(219))에 의해 포착되거나 디지털적으로 발생되거나 외부 소스로부터 획득되는, 업로더(280)에 의해 수행되는(그리고 앞서 기술된) 프로세스를 나타낸다. 어느 경우든지, 클라이언트(예컨대, 클라이언트 디바이스(200))는 이어서 그 비디오 이벤트의 비디오 세그먼트들을 (실황으로 포착된 것이든 녹화된 것이든 간에) 가상 방송 서버(300)로 스트리밍한다.Step 401 is performed by uploader 280, where the video event is either captured by a client node (e.g., smartphone camera 219 on client device 200), generated digitally, or obtained from an external source. represents the process being (and previously described). In either case, the client (eg, client device 200) then streams the video segments (whether captured live or recorded) of that video event to the virtual broadcast server 300.

비디오 이벤트들이 클라이언트들로부터 또는 보다 전통적인 CDN으로부터 획득되든 간에(그리고 그들이 녹화되든 실황으로 스트리밍되든 간에), 가상 방송 서버(300)는, 단계(410)에서, 앞서 논의된 바와 같이, POI 콘텐츠 서버(380)로부터 실황으로 스트리밍하기 위한 각각의 비디오 채널을 준비한다. 이 시점에서, 일 실시예에서, 채널 웹페이지가 발생되고 궁극적으로 잠재적인 클라이언트 노드와 만난다. 클라이언트 디바이스(200)의 사용자가 원하는 채널을 클릭할 때, 합류 요청이, 클라이언트 능력(운영 체제, 브라우저, 연결 등의 유형 등)과 함께, 시그널링 서버(330)로 송신된다. 대안적으로, 클라이언트 디바이스(200)의 사용자는 (앞서 논의된 바와 같이) 동향 스플래시 비디오 이벤트를 만나고 (단계(410)에서) POI 콘텐츠 서버(380)로부터 비디오 채널로서 스트리밍하기 위한 그 비디오 이벤트를 선택한다.Whether the video events are obtained from clients or from a more traditional CDN (and whether they are recorded or streamed play-by-play), the virtual broadcast server 300, as discussed above, at step 410, is a POI content server ( 380) prepares each video channel for live streaming. At this point, in one embodiment, a channel webpage is generated and ultimately encounters a potential client node. When the user of the client device 200 clicks on the desired channel, a join request is sent to the signaling server 330 along with the client capabilities (operating system, browser, type of connection, etc.). Alternatively, the user of client device 200 encounters a trending splash video event (as discussed above) and selects that video event for streaming as a video channel from POI content server 380 (at step 410). do.

단계(412)에서, 시그널링 서버(330)는 (예컨대, 클라이언트의 공공 IP 주소를 식별하기 위해 STUN(322) 프로토콜을 이용하는 것에 의해) 채널에의 클라이언트 연결을 검증하고, 이어서 클라이언트 상에 존재할 수 있는 임의의 NAT 방화벽을 통해 WebSocket(326) 연결을 구축하며, 나중에 비디오 세그먼트를 그 클라이언트로 중계하기 위한 다른 클라이언트 노드들에 그 공공 IP 주소를 제공한다. 시그널링 서버(330)는 이어서, (아직 분류되지 않은) 클라이언트를 오버레이 네트워크들(100) 상의 노드로서 추가하는, 오버레이 네트워크 생성기(350)로 제어를 넘기고, 사용자가 단계(415)에서 비디오 채널을 즉각 시청하기 시작할 수 있도록 (단계(414)에서) 초기 비디오 세그먼트들이 오버레이 네트워크들(100) 상의 노드로부터 클라이언트로 푸시될 것이다 At step 412, the signaling server 330 verifies the client connection to the channel (eg, by using the STUN 322 protocol to identify the client's public IP address), and then It establishes a WebSocket 326 connection through an arbitrary NAT firewall and later provides its public IP address to other client nodes for relaying video segments to that client. The Signaling Server 330 then passes control to the Overlay Network Creator 350, which adds the (yet unclassified) client as a node on the Overlay Networks 100, and allows the user to immediately select the video channel in step 415. Initial video segments will be pushed from the node on the overlay networks 100 to the client so that they can start viewing (step 414).

시그널링 서버(330)는 이어서, 단계(416)에서, 클라이언트 디바이스(200)를 A, B:A, B 또는 C 노드로서 분류하고, 단계(430)에서, 클라이언트 디바이스(200)를 네트워크 토폴로지에 포함하도록 ASN간(가상 데이터 트렁크) 및 ASN내(스웜) 오버레이 네트워크들(100)을 동적으로 재구성하기 위해 오버레이 네트워크 생성기(350) 및 딥 매퍼(360) 둘 다를 이용한다. 시그널링 서버(330)는 이어서 비디오 세그먼트들을 클라이언트 디바이스(200)로 중계하기 시작하기 위해 관련 경로 정보를 다른 클라이언트 노드들에 제공한다.The signaling server 330 then classifies the client device 200 as an A, B:A, B or C node, at step 416, and at step 430 includes the client device 200 into the network topology. It uses both the overlay network generator 350 and the deep mapper 360 to dynamically reconfigure the inter-ASN (virtual data trunk) and intra-ASN (swarm) overlay networks 100 to Signaling server 330 then provides relevant route information to other client nodes to begin relaying the video segments to client device 200 .

POI 콘텐츠 서버(380)는, 단계(435)에서, 이어서 현재의 (재구성된) 오버레이 네트워크들(100)을 따라 비디오 채널의 발신 지점인 그 노드들로 비디오 세그먼트들을 스트리밍하기 위해 근방의 노드들(전형적으로 A 노드들)로부터의 HTTP 요청들에 응답하고, 각각의 비디오 세그먼트는, 클라이언트 디바이스(200)로 중계되어 그에 의해 시청될 때까지, 노드로부터 노드로 중계된다. The POI content server 380, in step 435, then sends the video segments along the current (reconfigured) overlay networks 100 to those nodes that are the originating points of the video channel to nearby nodes ( Typically in response to HTTP requests from A nodes), each video segment is relayed from node to node until relayed to and viewed by the client device 200 .

클라이언트 디바이스(200)가 채널의 각각의 비디오 세그먼트를 시청하기 위해 청크들을 수신하고, 단계(450)에서, 그들을 편집하는 동안(그리고 어쩌면 또한, 단계(440)에서, 청크들을 다른 지정된 클라이언트 노드들로 중계하는 동안), 클라이언트 디바이스(200)는 또한, 성능 모니터(240)와 관련하여 앞서 논의된 바와 같이, 단계(425)에서 그의 성능을 모니터링하고, 클라이언트 성능 메트릭들을 시그널링 서버(330)에 제공한다. 그에 부가하여, 각각의 비디오 세그먼트가 요청될 때, 이 요청들이 단계(455)에서 (일 실시예에서, 수신기(250)에서의 클라이언트 Javascript 코드에 의해) 가로채기되는데, 그 이유는, 앞서 논의된 바와 같이, 비디오 세그먼트들이 오버레이 네트워크들(100)을 따라 클라이언트 디바이스(200)로 푸시되기 때문이다. 단계(455)로부터 단계(425)로의 화살표는 단순히 단계(425)에서의 모니터링 프로세스가, 비디오 세그먼트들의 청크들의 수신, 시청 및 중계와 동시적인, 연속적인 프로세스라는 것을 나타낸다.While the client device 200 receives the chunks for viewing each video segment of the channel and, at step 450, edits them (and possibly also at step 440), the chunks are transferred to other designated client nodes. While relaying), the client device 200 also monitors its performance at step 425 and provides the client performance metrics to the signaling server 330, as discussed above with respect to the performance monitor 240. . Additionally, as each video segment is requested, these requests are intercepted (in one embodiment, by client Javascript code at receiver 250) at step 455, for reasons discussed above. As such, video segments are pushed along the overlay networks 100 to the client device 200 . The arrow from step 455 to step 425 simply indicates that the monitoring process in step 425 is a continuous process, simultaneous with the receiving, viewing and relaying of chunks of video segments.

또한 앞서 살펴본 바와 같이, 클라이언트 디바이스(200)는, 비디오 세그먼트들이 다른 클라이언트 노드들로부터 클라이언트 디바이스(200)로 푸시되더라도, POI 콘텐츠 서버(380)에 매니페스트 파일들(예컨대, 다음 8개의 비디오 세그먼트들의 위치들을 포함함)에 대한 HTTP 요청들을 주기적으로 개시한다. 때로는, 비디오 세그먼트가 제시간에 도착하지 않으면, 클라이언트 디바이스(200)는 폴백 위치인 POI 콘텐츠 서버(380)에 직접 그 비디오 세그먼트를 요청할 것이다. 더욱이, 때로는, 적응적 스트리밍(224) 표준들에 따라, 클라이언트 디바이스(200)는 또한, (예컨대, 그의 성능 레벨들의 변화를 검출할 때) 후속 비디오 세그먼트들에 대한 수정된 비트 레이트를 요청하기 위해, POI 콘텐츠 서버(380)에 접촉할 수 있다. 그렇지만, 앞서 살펴본 바와 같이, 수신기(250)는 이러한 요구를 보다 일찍 잘 검출하고, 오버레이 네트워크들(100)을 통해 이러한 변경들을 수행하기 위해 가상 방송 서버(300)에 접촉하여, 피딩 클라이언트 노드에게 보다 낮은 또는 보다 높은 해상도의 비디오 세그먼트들을 클라이언트 디바이스(200)로 (즉, 그의 요청에 응답해서가 아니라) 자동으로 푸시하라고 지시할 수 있다.Also, as noted above, the client device 200, even if video segments are pushed to the client device 200 from other client nodes, sends the POI content server 380 the manifest files (e.g., the location of the next 8 video segments). ) periodically initiates HTTP requests for Sometimes, if a video segment does not arrive in time, the client device 200 will request the video segment directly from the POI content server 380, which is a fallback location. Moreover, sometimes, in accordance with the adaptive streaming 224 standards, the client device 200 may also (eg, when detecting a change in its performance levels) to request a modified bit rate for subsequent video segments. , can contact the POI content server 380. However, as noted above, the receiver 250 may well detect this request earlier and contact the virtual broadcast server 300 to make these changes via the overlay networks 100, giving the feeding client node a more It may be instructed to automatically push lower or higher resolution video segments to the client device 200 (ie, not in response to its request).

단계(452)에서, POI 콘텐츠 서버(380)는 이러한 HTTP 요청들에 응답하고, 요청된 매니페스트 파일들 및 폴백 비디오 세그먼트들을 클라이언트 디바이스(200)에 전달한다. 앞서 살펴본 바와 같이, 비트 레이트들의 변화는 오버레이 네트워크들(100)을 통해 해결되고 (그리고 단계(430)에서), 그 결과 보다 낮은 또는 보다 높은 해상도의 비디오 세그먼트들이 클라이언트 디바이스(200)로 푸시된다.At step 452 , POI content server 380 responds to these HTTP requests and delivers the requested manifest files and fallback video segments to client device 200 . As noted above, the change in bit rates is addressed via the overlay networks 100 (and in step 430), resulting in lower or higher resolution video segments being pushed to the client device 200.

단계(454)는 성능 추적기(340), 오버레이 네트워크 생성기(350) 및 딥 매퍼(360)에 의해 수행되는 연속적인 프로세스(일 실시예에서, 각각의 비디오 세그먼트에 대해 수행되고 앞서 상세히 기술됨)를 포함한다. 이 단계(454)에서, 클라이언트 성능 정보가 연속적으로 업데이트되고, 필요한 경우, (단계(454)로부터 단계(430)로의 화살표에 의해 나타낸 바와 같이) 단계(430)에서, 오버레이 네트워크들(100)이 동적으로 재구성되고, 새로운 라우팅 정보가 시그널링 서버(330)를 통해 관련 중계 노드들에 제공된다.Step 454 follows the continuous process performed by performance tracker 340, overlay network generator 350, and deep mapper 360 (in one embodiment, performed for each video segment and described in detail above). include In this step 454, the client capability information is continuously updated and, if necessary, (as indicated by the arrow from step 454 to step 430), the overlay networks 100 in step 430. It is dynamically reconfigured, and new routing information is provided to relevant relay nodes through the signaling server 330.

마지막으로, 단계(460)에서, 스플래시 추출기(390)는 클라이언트 디바이스들(200)의 사용자들이 브라우징하거나 검색할 수 있는 동향 스플래시 비디오 이벤트들을 연속적으로 식별하고, 이어서 앞서 논의된 바와 같이 즉각적인 시청을 위해 스트리밍한다.Finally, at step 460, splash extractor 390 continuously identifies trending splash video events that users of client devices 200 can browse or search for, then for immediate viewing as discussed above. Stream.

본 발명이 본원에서 첨부 도면들에 예시된 바와 같은 특정 실시예들을 참조하여 기술되었다. 본 개시내용을 고려하여, 본원에 개시된 개념들의 부가 실시예들이 본 기술분야의 통상의 기술자에 의해 본 발명의 범주 내에서 안출되고 구현될 수 있다는 것을 잘 알 것이다.The invention has been described herein with reference to specific embodiments as illustrated in the accompanying drawings. In view of this disclosure, it will be appreciated that additional embodiments of the concepts disclosed herein may be devised and implemented within the scope of the invention by those skilled in the art.

Claims (1)

방법에 있어서.in the way.
KR1020227037918A 2014-12-26 2015-12-23 Method and system for adaptive virtual broadcasting of digital content KR20220151224A (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201462096938P 2014-12-26 2014-12-26
US62/096,938 2014-12-26
US14/848,268 2015-09-08
US14/848,268 US9769536B2 (en) 2014-12-26 2015-09-08 Method and system for adaptive virtual broadcasting of digital content
PCT/IB2015/002604 WO2016103051A1 (en) 2014-12-26 2015-12-23 Method and system for adaptive virtual broadcasting of digital content
KR1020177020882A KR102462384B1 (en) 2014-12-26 2015-12-23 Method and system for adaptive virtual broadcasting of digital content

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177020882A Division KR102462384B1 (en) 2014-12-26 2015-12-23 Method and system for adaptive virtual broadcasting of digital content

Publications (1)

Publication Number Publication Date
KR20220151224A true KR20220151224A (en) 2022-11-14

Family

ID=55066402

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177020882A KR102462384B1 (en) 2014-12-26 2015-12-23 Method and system for adaptive virtual broadcasting of digital content
KR1020227037918A KR20220151224A (en) 2014-12-26 2015-12-23 Method and system for adaptive virtual broadcasting of digital content

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177020882A KR102462384B1 (en) 2014-12-26 2015-12-23 Method and system for adaptive virtual broadcasting of digital content

Country Status (10)

Country Link
US (3) US9769536B2 (en)
EP (3) EP3264722B1 (en)
JP (2) JP6612355B2 (en)
KR (2) KR102462384B1 (en)
CN (1) CN107223325B (en)
ES (2) ES2670419T3 (en)
HK (1) HK1249973A1 (en)
MX (1) MX370809B (en)
PL (1) PL3038323T3 (en)
WO (1) WO2016103051A1 (en)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10931338B2 (en) 2001-04-26 2021-02-23 Genghiscomm Holdings, LLC Coordinated multipoint systems
US10644916B1 (en) 2002-05-14 2020-05-05 Genghiscomm Holdings, LLC Spreading and precoding in OFDM
US11381285B1 (en) 2004-08-02 2022-07-05 Genghiscomm Holdings, LLC Transmit pre-coding
US9826011B2 (en) 2014-07-31 2017-11-21 Istreamplanet Co. Method and system for coordinating stream processing at a video streaming platform
US9912707B2 (en) 2014-07-31 2018-03-06 Istreamplanet Co. Method and system for ensuring reliability of unicast video streaming at a video streaming platform
US9762934B2 (en) * 2014-11-04 2017-09-12 Electronics And Telecommunications Research Institute Apparatus and method for verifying broadcast content object identification based on web data
US9769536B2 (en) 2014-12-26 2017-09-19 System73, Inc. Method and system for adaptive virtual broadcasting of digital content
FR3034943B1 (en) * 2015-04-07 2017-04-14 Streamroot Inc METHOD FOR CONTINUOUS READING ON CUSTOMER EQUIPMENT OF DIFFUSE CONTENT WITHIN A PAIR AUDIO NETWORK
US9686576B2 (en) 2015-05-08 2017-06-20 Istreamplanet Co. Coordination of video stream timing in cloud-based video streaming system
US10164853B2 (en) * 2015-05-29 2018-12-25 Istreamplanet Co., Llc Real-time anomaly mitigation in a cloud-based video streaming system
FR3038180A1 (en) * 2015-06-26 2016-12-30 Orange ADAPTATION OF A TRANSMISSION PROFILE OF REAL TIME WEB COMMUNICATION
US10594746B1 (en) * 2015-09-30 2020-03-17 Amazon Technologies, Inc. Connection service with network routing
US10735476B1 (en) 2015-09-30 2020-08-04 Amazon Technologies, Inc. Connection service with network routing
WO2017117264A1 (en) 2015-12-29 2017-07-06 Echostar Technologies L.L.C Remote storage digital video recorder streaming and related methods
US10007591B2 (en) * 2016-01-29 2018-06-26 Sugarcrm Inc. Adaptive content balancing in a web application environment
US10122589B2 (en) * 2016-04-08 2018-11-06 Cisco Technology, Inc. Configuring the design of an industrial automation network
GB2549997B (en) * 2016-04-19 2019-07-03 Cisco Tech Inc Management of content delivery in an IP network
EP3456006B1 (en) * 2016-05-13 2019-10-02 Telefonaktiebolaget LM Ericsson (PUBL) Improved resource usage in a multipath network
US10046236B2 (en) * 2016-06-13 2018-08-14 Sony Interactive Entertainment America, LLC Browser-based cloud gaming
WO2017215733A1 (en) * 2016-06-14 2017-12-21 Netent Product Services Ltd. Live streaming of media for low-latency applications such as live casino gaming applications
US10826805B2 (en) * 2016-07-11 2020-11-03 Acronis International Gmbh System and method for dynamic online backup optimization
US10405023B2 (en) * 2016-08-16 2019-09-03 At&T Intellectual Property I, L.P. Method and apparatus for providing video content using collaborative end points
US20180062935A1 (en) 2016-08-25 2018-03-01 Futurewei Technologies, Inc. Hybrid approach with classification for name resolution and producer selection in icn
US10743004B1 (en) * 2016-09-01 2020-08-11 Amazon Technologies, Inc. Scalable video coding techniques
US10743003B1 (en) 2016-09-01 2020-08-11 Amazon Technologies, Inc. Scalable video coding techniques
US9641566B1 (en) * 2016-09-20 2017-05-02 Opentest, Inc. Methods and systems for instantaneous asynchronous media sharing
CN106548645B (en) * 2016-11-03 2019-07-12 济南博图信息技术有限公司 Vehicle route optimization method and system based on deep learning
US10812598B2 (en) * 2016-12-30 2020-10-20 Akamai Technologies, Inc. Unified, browser-based enterprise collaboration platform
US10375453B2 (en) 2017-02-28 2019-08-06 Digital Broadcasting and Communications Network, LLC Device for industry-specific content streaming
US20180255114A1 (en) * 2017-03-06 2018-09-06 Vyu Labs, Inc. Participant selection for multi-party social media sessions
JP6749281B2 (en) * 2017-03-23 2020-09-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 IoT device, signaling server, message bus management server, connection forming method, and program
US10735268B2 (en) 2017-04-21 2020-08-04 System73 Ltd. Predictive overlay network architecture
KR102307447B1 (en) * 2017-05-02 2021-09-30 삼성전자주식회사 Server, method, and client terminal for http adaptive streaming based on network environment mornitoring
US10243773B1 (en) 2017-06-30 2019-03-26 Genghiscomm Holdings, LLC Efficient peak-to-average-power reduction for OFDM and MIMO-OFDM
US10637705B1 (en) 2017-05-25 2020-04-28 Genghiscomm Holdings, LLC Peak-to-average-power reduction for OFDM multiple access
US10922606B2 (en) 2017-06-13 2021-02-16 International Business Machines Corporation Multi-directional reduction in large scale deep-learning
EP3643042A1 (en) * 2017-06-20 2020-04-29 Telefonaktiebolaget LM Ericsson (publ.) Methods and network nodes enabling a content delivery network to handle unexpected surges of traffic
US10673715B2 (en) * 2017-07-20 2020-06-02 Servicenow, Inc. Splitting network discovery payloads based on degree of relationships between nodes
WO2019037074A1 (en) * 2017-08-25 2019-02-28 深圳市瑞立视多媒体科技有限公司 Virtual reality interaction system and method, and computer storage medium
EP3682641A4 (en) * 2017-09-15 2021-01-20 Imagine Communications Corp. Systems and methods for playout of fragmented video content
CN109819285B (en) * 2017-11-21 2021-09-21 北京乐我无限科技有限责任公司 Live broadcast method and device, electronic equipment and storage medium
WO2019125445A1 (en) * 2017-12-20 2019-06-27 Visa International Service Association Automated fault detecting control system
US10523979B2 (en) * 2017-12-21 2019-12-31 Vyu Labs, Inc. Streaming live video
CN108365981B (en) * 2018-02-05 2020-12-01 柳州达迪通信技术股份有限公司 Method for realizing tracking of abnormal number or abnormal protocol of multiple signaling protocols
US10791047B2 (en) * 2018-02-19 2020-09-29 Disney Enterprise Inc. Automated network navigation
KR20190099930A (en) 2018-02-20 2019-08-28 삼성전자주식회사 Method and apparatus for controlling data input and output of fully connected network
WO2019164637A1 (en) 2018-02-23 2019-08-29 Futurewei Technologies, Inc. Advertising and programming preferred path routes using interior gateway protocols
US11381984B2 (en) * 2018-03-27 2022-07-05 Forescout Technologies, Inc. Device classification based on rank
WO2019190699A1 (en) 2018-03-28 2019-10-03 Futurewei Technologies, Inc. Method and apparatus for preferred path route information distribution and maintenance
JP2019138461A (en) * 2018-04-13 2019-08-22 バルチラジャパン株式会社 Lip seal, seal ring, seal ring device, and ship
US10979476B2 (en) 2018-04-16 2021-04-13 Infrared5, Inc. System and method for verifying and providing compensation for participation in real-time streaming of multimedia over a decentralized network
US10848553B2 (en) * 2018-04-16 2020-11-24 Infrared5, Inc. System and method for real-time secure multimedia streaming over a decentralized network
EP3785405A1 (en) * 2018-04-26 2021-03-03 Huawei Technologies Co., Ltd. Resource reservation and maintenance for preferred path routes in a network
WO2019212678A1 (en) 2018-05-04 2019-11-07 Futurewei Technologies, Inc. Explicit backups and fast re-route mechanisms for preferred path routes in a network
WO2019236221A1 (en) 2018-06-04 2019-12-12 Futurewei Technologies, Inc. Preferred path route graphs in a network
KR102080147B1 (en) * 2018-06-20 2020-02-24 네이버 주식회사 Method and system for adaptive bitrate publishing
TWI680661B (en) * 2018-07-20 2019-12-21 茂傑國際股份有限公司 Wireless routing server device and method for value-added remote display service
KR102129115B1 (en) * 2018-09-28 2020-07-02 한국과학기술원 Method and apparatus for transmitting adaptive video in real time using content-aware neural network
CN109543818A (en) * 2018-10-19 2019-03-29 中国科学院计算技术研究所 A kind of link evaluation method and system based on deep learning model
CN109951392B (en) * 2019-01-31 2021-07-02 武汉大学 Intelligent routing method for medium and large networks based on deep learning
FR3094597B1 (en) * 2019-03-27 2021-06-11 Streamroot Method of streaming content in a peer-to-peer network
US11295239B2 (en) 2019-04-17 2022-04-05 International Business Machines Corporation Peer assisted distributed architecture for training machine learning models
US10924786B2 (en) * 2019-05-08 2021-02-16 Nanning Fugui Precision Industrial Co., Ltd. Method for shaping video streams and set-up box using the method
WO2020242898A1 (en) 2019-05-26 2020-12-03 Genghiscomm Holdings, LLC Non-orthogonal multiple access
WO2020243533A1 (en) * 2019-05-31 2020-12-03 Apple Inc. Systems and methods for performance data streaming, performance data file reporting, and performance threshold monitoring
US11025987B2 (en) * 2019-08-15 2021-06-01 Hulu, LLC Prediction-based representation selection in video playback
CN112541147A (en) * 2019-09-23 2021-03-23 北京轻享科技有限公司 Content publishing management method and system
CN111010341B (en) * 2019-12-19 2020-10-27 南京大学 Overlay network routing decision method based on deep learning
CN111294618B (en) * 2020-03-12 2022-04-01 周光普 System and method for monitoring data security of broadcast television
CN112261421B (en) * 2020-10-12 2022-11-15 Oppo广东移动通信有限公司 Virtual reality display method and device, electronic equipment and storage medium
US11812081B2 (en) 2020-11-02 2023-11-07 Hulu, LLC Session based adaptive playback profile decision for video streaming
CN112821940B (en) * 2021-01-15 2022-08-30 重庆邮电大学 Satellite network dynamic routing method based on inter-satellite link attribute
US20230083701A1 (en) * 2021-09-15 2023-03-16 International Business Machines Corporation Automatically controlling resource partitions in advance of predicted bottlenecks for log streaming messages
CN113904974B (en) * 2021-10-09 2023-08-15 咪咕文化科技有限公司 Intelligent routing method, device and equipment
JP2023081226A (en) 2021-11-30 2023-06-09 株式会社リコー Communication management device, communication system, communication management method, and program
CN114710436B (en) * 2022-04-19 2023-02-07 电子科技大学 Topology reconstruction method of multi-domain unmanned system under topology attack
US20230396826A1 (en) * 2022-06-06 2023-12-07 Gathani APURVI Method of broadcasting real-time on-line competitions and apparatus therefor
US11606553B1 (en) * 2022-07-15 2023-03-14 RiversideFM, Inc. Hybrid media recording

Family Cites Families (33)

* 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
US7117273B1 (en) 2000-01-25 2006-10-03 Cisco Technology, Inc. Methods and apparatus for maintaining a map of node relationships for a network
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
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
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
US9015342B2 (en) 2007-01-22 2015-04-21 Xerox Corporation Two-level structured overlay design for cluster management in a peer-to-peer network
CN100553229C (en) * 2007-01-24 2009-10-21 中国科学院计算机网络信息中心 A kind of dynamic multicast routing method of half-covered self-organizing
US20080263130A1 (en) * 2007-04-23 2008-10-23 Nir Michalowitz Apparatus, system and method of digital content distribution
KR100748187B1 (en) 2007-06-01 2007-08-10 인하대학교 산학협력단 Node availability prediction-based grid network congestion control device and method therefor
WO2009004701A1 (en) 2007-06-29 2009-01-08 Fujitsu Limited Network failure detecting system, measurement agent, surveillance server, network failure detecting method, and network failure detecting program
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
CN101547347B (en) * 2009-04-30 2011-08-10 上海大学 Overlay network layered multicast resource optimum allocation method for scalable video stream
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
US10158554B1 (en) 2012-02-29 2018-12-18 The Boeing Company Heuristic topology management system for directional wireless networks
US9654329B2 (en) 2012-05-04 2017-05-16 The Hong Kong University Of Science And Technology Content distribution over a network
EP2815562B1 (en) * 2013-04-25 2015-04-08 Peerialism 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
WO2016089435A1 (en) 2014-12-03 2016-06-09 Hewlett Packard Enterprise Development Lp Updating a virtual network topology based on monitored application data
US9769536B2 (en) 2014-12-26 2017-09-19 System73, Inc. Method and system for adaptive virtual broadcasting of digital content
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

Also Published As

Publication number Publication date
EP3038323B1 (en) 2018-02-28
HK1249973A1 (en) 2018-11-16
EP4160993A1 (en) 2023-04-05
US20170347157A1 (en) 2017-11-30
JP2018507660A (en) 2018-03-15
JP6612355B2 (en) 2019-11-27
JP6839746B2 (en) 2021-03-10
MX370809B (en) 2020-01-08
CN107223325A (en) 2017-09-29
ES2930016T3 (en) 2022-12-05
EP3038323A1 (en) 2016-06-29
EP3264722A1 (en) 2018-01-03
US9769536B2 (en) 2017-09-19
JP2020039140A (en) 2020-03-12
US10992998B2 (en) 2021-04-27
ES2670419T3 (en) 2018-05-30
PL3038323T3 (en) 2018-08-31
MX2017008157A (en) 2018-02-13
EP3264722B1 (en) 2022-08-17
CN107223325B (en) 2021-03-26
US20160192029A1 (en) 2016-06-30
KR102462384B1 (en) 2022-11-03
US20190158930A1 (en) 2019-05-23
KR20170101287A (en) 2017-09-05
WO2016103051A1 (en) 2016-06-30
BR112017013811A2 (en) 2018-02-27
US10225619B2 (en) 2019-03-05

Similar Documents

Publication Publication Date Title
US10992998B2 (en) Method and system for adaptive virtual broadcasting of digital content
KR102569433B1 (en) Projected Overlay Network Architecture
Mukerjee et al. Practical, real-time centralized control for cdn-based live video delivery
US9838724B2 (en) Media distribution network for live streaming
Roverso et al. Smoothcache 2.0: Cdn-quality adaptive http live streaming on peer-to-peer overlays
CN113301096B (en) Method, system and node equipment for data transmission between nodes in content distribution network
Bouten et al. A multicast-enabled delivery framework for QoE assurance of over-the-top services in multimedia access networks
Roverso et al. Hive. js: Browser-based distributed caching for adaptive video streaming
Huang et al. Design of a P2P live multimedia streaming system with hybrid push and pull mechanisms
Chang et al. Live streaming with receiver-based peer-division multiplexing
Peltotalo et al. RTSP-based mobile peer-to-peer streaming system
Ramadha et al. Design and implementation named data networking-based video streaming system
US20140181261A1 (en) Method and apparatus for providing efficient transmission of streaming video through a complex ip network
Awiphan et al. Proxy-assisted rate adaptation for 4K video streaming on named data networking
Fouda et al. A novel P2P VoD streaming technique integrating localization and congestion awareness strategies
BR112017013811B1 (en) DIGITAL CONTENT VIRTUAL BROADCAST METHOD AND SERVER
Biskupski et al. Improving throughput and node proximity of p2p live video streaming through overlay adaptation
Kalan Enhancing Quality of Experience by Monitoring End-User Streaming Behavior
Episkopos Peer-to-Peer video content delivery optimization service in a distributed network
Seung et al. Randomized routing in multi-party internet video conferencing
Mann et al. cStream: Cloud based high performance video delivery network
Kariminasab A Simulation Study on Performance of Video-On-Demand Systems
Wang Peer-to-Peer multimedia streaming monitoring system

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application