BR112017013811B1 - DIGITAL CONTENT VIRTUAL BROADCAST METHOD AND SERVER - Google Patents

DIGITAL CONTENT VIRTUAL BROADCAST METHOD AND SERVER Download PDF

Info

Publication number
BR112017013811B1
BR112017013811B1 BR112017013811-5A BR112017013811A BR112017013811B1 BR 112017013811 B1 BR112017013811 B1 BR 112017013811B1 BR 112017013811 A BR112017013811 A BR 112017013811A BR 112017013811 B1 BR112017013811 B1 BR 112017013811B1
Authority
BR
Brazil
Prior art keywords
nodes
asn
video
network
node
Prior art date
Application number
BR112017013811-5A
Other languages
Portuguese (pt)
Other versions
BR112017013811A2 (en
Inventor
Mattias Bergstrom
Original Assignee
System73, Inc
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
Priority claimed from US14/848,268 external-priority patent/US9769536B2/en
Application filed by System73, Inc filed Critical System73, Inc
Publication of BR112017013811A2 publication Critical patent/BR112017013811A2/en
Publication of BR112017013811B1 publication Critical patent/BR112017013811B1/en

Links

Abstract

MÉTODO E SISTEMA DE BROADCAST VIRTUAL DE CONTEÚDO DIGITAL. O sistema de broadcast virtual ('sistema de radiodifusão virtual') de acordo com a presente invenção otimiza o roteamento de conteúdo digital entre nós ao longo de redes sobrepostas que são dinamicamente reconfiguradas com base em previsões dos níveis de congestionamento em frequente alteração de interconexões de componentes dentro de uma rede subjacente. No contexto do fornecimento de streaming de vídeo via Internet para grandes quantidades de usuários simultâneos, a presente invenção faz uso eficiente da capacidade limitada de pontos de peer de ASN congestionados, empregando métodos de aprendizado profundo para prever os níveis de congestionamento entre esses pontos de peer de ASN e, com base nessas previsões, otimizar o roteamento de conteúdo de vídeo ao longo de redes sobrepostas dinamicamente reconfiguradas. O sistema de transmissão virtual manipula eventos programados e não programados, streaming ao vivo e eventos pré-gravados e transmite esses eventos por streaming em tempo real com atraso mínimo, de forma altamente escalonável que mantém QoE consistente entre grandes quantidades de observadores simultâneos.METHOD AND SYSTEM OF VIRTUAL BROADCAST OF DIGITAL CONTENT. The virtual broadcast system ('virtual broadcast system') according to the present invention optimizes the routing of digital content between nodes over overlapping networks that are dynamically reconfigured based on predictions of frequently changing congestion levels of network interconnections. components within an underlying network. In the context of providing Internet video streaming to large numbers of simultaneous users, the present invention makes efficient use of the limited capacity of congested ASN peer points by employing deep learning methods to predict congestion levels between such peer points. of ASN and, based on these predictions, optimize the routing of video content over dynamically reconfigured overlay networks. The virtual broadcast system handles scheduled and unscheduled events, live streaming and pre-recorded events and streams these events in real time with minimal delay, in a highly scalable manner that maintains consistent QoE across large numbers of simultaneous observers.

Description

Campo da TécnicaField of Technique

[001] A presente invenção refere-se, de forma geral, a uma arquitetura de rede sobreposta para fornecer conteúdo digital entre nós de uma rede subjacente e, mais especificamente, a um sistema de broadcast virtual (“sistema de radiodifusão virtual”) que otimiza o roteamento de conteúdo digital entre os nós ao longo de redes sobrepostas que são dinamicamente reconfiguradas com base em previsões de níveis de congestionamento em frequente alteração em interconexões de componentes dentro da rede subjacente.[001] The present invention relates, generally, to an overlay network architecture for providing digital content between nodes of an underlying network and, more specifically, to a virtual broadcast system (“virtual broadcast system”) that optimizes the routing of digital content between nodes along overlay networks that are dynamically reconfigured based on predictions of frequently changing congestion levels at component interconnections within the underlying network.

Descrição do Campo da TécnicaDescription of the Technique Field

[002] Congestionamento de rede:[002] Network congestion:

[003] À medida que o tráfego de redes com e sem fio continua a expandir-se exponencialmente, a capacidade finita dos links compartilhados ou interconexões entre os componentes de uma rede está se tornando um problema cada vez mais relevante e perturbador. Além disso, como o nível de congestionamento nesses links compartilhados é dinâmico e sujeito a muita volatilidade, conforme o fluxo e refluxo do tráfego da rede, a medição desse congestionamento é difícil em qualquer dado momento e é particularmente difícil prevê-lo, mesmo a curto prazo.[003] As wired and wireless network traffic continues to expand exponentially, the finite capacity of shared links or interconnections between components of a network is becoming an increasingly relevant and disruptive problem. Furthermore, as the level of congestion on these shared links is dynamic and subject to much volatility as network traffic ebbs and flows, measuring this congestion is difficult at any given time and is particularly difficult to predict, even in the short term. term.

[004] Este problema é um tanto análogo ao do congestionamento de tráfego nas junções de intersecção de rodovias e autoestradas compartilhadas em áreas cada vez mais povoadas. Embora os sistemas existentes de controle de tráfego e navegação por GPS meçam o congestionamento atual nessas junções e calcule trajetos ideais para redirecionar motoristas individuais ao longo desse congestionamento, a sua capacidade de prever a via ideal antecipadamente para cada motorista específico é impedida pela natureza volátil do congestionamento de tráfego.[004] This problem is somewhat analogous to that of traffic congestion at shared highway and motorway intersection junctions in increasingly populated areas. Although existing GPS navigation and traffic control systems measure current congestion at these junctions and calculate optimal routes to reroute individual drivers around that congestion, their ability to predict the optimal route in advance for each specific driver is impeded by the volatile nature of the traffic congestion.

[005] Quando, isoladamente, uma companhia como a Netflix representa mais de um terço do pico de tráfego da Internet, as companhias que fornecem informações digitais simultaneamente via Internet (particularmente grandes quantidades de dados lineares) necessitam, de alguma forma, abordar a natureza cada vez mais volátil do congestionamento da Internet. De forma similar, à medida que o uso de dados e voz móveis dispara, a disponibilidade limitada do espectro de RF regulado é de preocupação específica para companhias que desenvolvem aplicativos móveis com alta amplitude de banda.[005] When, alone, a company like Netflix represents more than a third of peak Internet traffic, companies that simultaneously provide digital information via the Internet (particularly large amounts of linear data) need to somehow address the nature increasingly volatile Internet congestion. Similarly, as mobile voice and data usage soars, the limited availability of regulated RF spectrum is of particular concern to companies developing high-bandwidth mobile applications.

[006] Embora uma aplicação específica da presente invenção seja descrita no presente no contexto de fornecimento de streaming de vídeo via Internet para grandes quantidades de usuários simultâneos, os princípios da presente invenção aplicam-se igualmente a numerosos outros contextos, em que a capacidade limitada de links compartilhados entre componentes de rede restringe o roteamento de qualquer tipo de informação que possa ser convertida em formato digital (por exemplo, áudio, imagens, modelos 3D etc.). Outras aplicações potenciais da presente invenção incluem, por exemplo, VoIP, videoconferência corporativa, realidade virtual, jogos em multiplayer e uma série de outras aplicações com uso intensivo de amplitude de banda (com relação ao nível de congestionamento de links compartilhados em uma rede subjacente a qualquer momento).[006] Although a specific application of the present invention is described herein in the context of providing streaming video via the Internet to large numbers of simultaneous users, the principles of the present invention apply equally to numerous other contexts, in which limited capacity of shared links between network components restricts the routing of any type of information that can be converted into digital format (e.g. audio, images, 3D models, etc.). Other potential applications of the present invention include, for example, VoIP, corporate video conferencing, virtual reality, multiplayer gaming, and a number of other bandwidth-intensive applications (with respect to the level of congestion of shared links in a network underlying a anytime).

[007] Como se discutirá com mais detalhes abaixo, a presente invenção não “cura” o problema da capacidade limitada ou “congestionamento de rede” em links componentes em uma rede subjacente como a Internet, mas realiza uso eficiente daquela capacidade limitada, monitorando e analisando o tráfego de rede através desses links para otimizar o roteamento de conteúdo digital entre os nós de redes sobrepostas que são dinamicamente reconfiguradas com base em previsões dos níveis de congestionamento nesses links.[007] As will be discussed in more detail below, the present invention does not “cure” the problem of limited capacity or “network congestion” on component links in an underlying network such as the Internet, but rather makes efficient use of that limited capacity by monitoring and analyzing network traffic across these links to optimize the routing of digital content between nodes in overlay networks that are dynamically reconfigured based on predictions of congestion levels on these links.

[008] Eventos de streaming de vídeo:[008] Video streaming events:

[009] Desde o advento da Internet e do roteamento com base em IP, surgiram muitas abordagens de streaming de vídeo via Internet. Antes de discutir as suas vantagens e desvantagens relativas, é útil olhar para trás e considerar o problema sendo abordado. Para distribuir conteúdo de vídeo via Internet, ele precisa, em primeiro lugar, ser capturado e digitalizado. Pode-se caracterizar o conteúdo de vídeo como um “evento” que é capturado “ao vivo” (ou gerado digitalmente) e distribuído via Internet. Referências no presente a eventos de vídeo incluem a captura ou a geração de vídeo e áudio, bem como quaisquer metadados associados.[009] Since the advent of the Internet and IP-based routing, many approaches to streaming video via the Internet have emerged. Before discussing their relative advantages and disadvantages, it is useful to look back and consider the problem being addressed. To distribute video content via the Internet, it first needs to be captured and digitized. Video content can be characterized as an “event” that is captured “live” (or digitally generated) and distributed via the Internet. References herein to video events include the capture or generation of video and audio, as well as any associated metadata.

[0010] Eventos de vídeo podem ser programados ou não programados. O “Super Bowl”, por exemplo, é um evento programado, de forma que o momento da sua ocorrência é conhecido antecipadamente, enquanto outros eventos (por exemplo, desastres naturais, os primeiros passos de um bebê ou mesmo vídeo on demand - “VOD”) não são programados e podem ocorrer com pouco ou nenhum aviso prévio.[0010] Video events can be scheduled or unscheduled. The “Super Bowl”, for example, is a scheduled event, so that the moment of its occurrence is known in advance, while other events (for example, natural disasters, a baby's first steps or even video on demand - “VOD ”) are unscheduled and may occur with little or no notice.

[0011] O conteúdo de vídeo pode ser integralmente capturado para gerar um arquivo de vídeo digitalizado antes de ser distribuído via Internet como qualquer outro tipo de arquivo é transferido (por exemplo, via “FTP”, ou protocolo de transferência de arquivos). Essa abordagem de “transferência de arquivo”, entretanto, impõe atraso sobre a observação (execução) do conteúdo de vídeo pelo receptor - ou seja, o receptor necessita aguardar até que todo o arquivo tenha sido transferido antes de assistir ao conteúdo de vídeo. Considerando os tamanhos relativamente grandes de arquivos de vídeo digitalizado, esse atraso pode ser significativo.[0011] Video content can be fully captured to generate a digitized video file before being distributed via the Internet as any other type of file is transferred (for example, via “FTP”, or file transfer protocol). This “file transfer” approach, however, imposes a delay on the receiver watching (playing) the video content - that is, the receiver needs to wait until the entire file has been transferred before watching the video content. Considering the relatively large sizes of digitized video files, this delay can be significant.

[0012] Conteúdo de vídeo frequentemente é, portanto, transmitido por streaming para os usuários, de forma que eles possam receber e ver continuamente o conteúdo enquanto ele ainda está sendo enviado. Essencialmente, o conteúdo de vídeo é dividido em um fluxo linear ordenado de pequenos arquivos ou “segmentos de vídeo” (por exemplo, com um a dez segundos de comprimento), que são fornecidos para os usuários que podem começar a vê-los enquanto são recebidos. Para assistir a um fluxo contínuo de conteúdo de vídeo sem atrasos nem instabilidades, cada segmento de vídeo necessita ser executado em intervalos regulares - por exemplo, trinta quadros por segundo. Observe- se, entretanto, que os segmentos de vídeo não necessitam ser recebidos em intervalos regulares, desde que cada segmento seja recebido antes da conclusão da execução do segmento anterior.[0012] Video content is therefore often streamed to users so that they can continuously receive and view the content while it is still being sent. Essentially, video content is divided into an ordered linear stream of small files or “video segments” (e.g., one to ten seconds long), which are served to users who can begin watching them as they are being played. received. To watch a continuous stream of video content without lag or jitter, each video segment needs to play at regular intervals - for example, thirty frames per second. Note, however, that video segments do not need to be received at regular intervals, as long as each segment is received before the completion of execution of the previous segment.

[0013] Seja o evento programado ou não, ele pode ser transmitido por streaming “ao vivo” (ou seja, ao mesmo tempo em que o evento ocorre) ou “pré-gravado” para transmissão por streaming a qualquer momento após a ocorrência do evento. O Super Bowl, por exemplo, poderá ser capturado e transmitido ao vivo à medida que ocorre ou pré-gravado para transmissão posterior.[0013] Whether the event is scheduled or not, it can be streamed “live” (i.e., at the same time as the event occurs) or “pre-recorded” for streaming at any time after the event occurs. event. The Super Bowl, for example, could be captured and broadcast live as it happens or pre-recorded for later broadcast.

[0014] Por fim, seja o evento programado ou não programado e seja ele pré-gravado ou transmitido ao vivo enquanto ocorre, ele pode ser transmitido por streaming em “tempo real” (ou seja, com atraso muitas vezes imperceptível do remetente para o destinatário) ou “atrasado” com trânsito de segundos ou até minutos. Os espectadores, por exemplo, de um programa de televisão (por exemplo, um jogo de baseball) que é transmitido via Internet, mas não em tempo real, poderão assistir ao evento transmitido por streaming em horários diferentes entre si ou em horários diferentes de espectadores que assistem ao mesmo programa transmitido por cabo ou via satélite. Esses atrasos (particularmente se forem de mais de alguns segundos) podem reduzir a “qualidade da experiência” (QoE) do usuário - ou seja, a visão de qualidade em nível de aplicativo ou centralizada no usuário, em oposição à “qualidade do serviço” (QoS), que é medida do desempenho com base em medidas centralizadas na rede (por exemplo, atraso de pacotes, perda de pacotes ou instabilidade causada por roteadores ou outros recursos da rede).[0014] Finally, whether the event is scheduled or unscheduled and whether it is pre-recorded or broadcast live as it occurs, it can be streamed in “real time” (i.e., with a delay that is often imperceptible from the sender to the recipient) or “delayed” with a transit time of seconds or even minutes. Viewers, for example, of a television program (e.g. a baseball game) that is broadcast via the Internet but not in real time, may watch the streamed event at different times from each other or at different times from viewers who watch the same program broadcast on cable or satellite. These delays (particularly if they are more than a few seconds) can reduce the user's “quality of experience” (QoE) – that is, the application-level or user-centric view of quality, as opposed to “quality of service” (QoS), which is a measure of performance based on network-centric measures (e.g., packet delay, packet loss, or jitter caused by routers or other network resources).

[0015] A interação social entre os telespectadores, por exemplo, pode ser restrita (totalmente independente de instabilidade ou outros artefatos de vídeo) porque os espectadores assistem ao mesmo evento em horários diferentes. Isso é particularmente problemático atualmente, quando tantos eventos (programados ou não programados) são comunicados em tempo real de tantas formas diferentes - desde transmissão de rádio ou televisão até redes sociais e outros serviços da Internet, acessíveis por meio de telefones celulares e computadores desktop e laptops, bem como por uma série em constante evolução de dispositivos eletrônicos de consumo.[0015] Social interaction between viewers, for example, may be restricted (completely independent of jitter or other video artifacts) because viewers watch the same event at different times. This is particularly problematic today, when so many events (scheduled and unscheduled) are communicated in real time in so many different ways - from broadcast radio or television to social networking and other Internet services, accessible through cell phones and desktop computers and laptops, as well as an ever-evolving array of consumer electronic devices.

[0016] É, portanto, desejável que um sistema de streaming de vídeo manipule eventos programados e não programados, transmita eventos ao vivo e pré-gravados e transmita esses eventos por streaming em tempo real com atraso mínimo, a fim de fornecer QoE consistente aos espectadores. Além disso, à medida que aumenta a quantidade de espectadores simultâneos de um evento de streaming de vídeo, a manutenção de QoE consistente torna-se um problema formidável. Por este motivo, a ampliação em escala é um objetivo fundamental de projeto de qualquer sistema deste tipo.[0016] It is therefore desirable for a video streaming system to handle scheduled and unscheduled events, transmit live and pre-recorded events, and stream these events in real-time with minimal delay in order to provide consistent QoE to spectators. Furthermore, as the number of concurrent viewers of a streaming video event increases, maintaining consistent QoE becomes a formidable problem. For this reason, scaling is a fundamental design objective of any system of this type.

[0017] Apesar dos avanços recentes da tecnologia de streaming de vídeo, a evolução ad hoc histórica da infra-estrutura da Internet ainda apresenta obstáculos significativos para o streaming de vídeo com base na Internet e um deles é QoS inconsistente, que gera congestionamento de rede em momentos e locais ao longo da Internet que são difíceis de se prever. Embora um objetivo fundamental da presente invenção seja manter QoE consistente para os espectadores de eventos de streaming de vídeo, este objetivo é restringido pelo congestionamento da rede ao longo da Internet, que, por fim, não pode ser eliminado.[0017] Despite recent advances in video streaming technology, the historical ad hoc evolution of the Internet infrastructure still presents significant obstacles to Internet-based video streaming and one of them is inconsistent QoS, which generates network congestion at times and places across the Internet that are difficult to predict. Although a fundamental objective of the present invention is to maintain consistent QoE for viewers of video streaming events, this objective is constrained by network congestion throughout the Internet, which ultimately cannot be eliminated.

[0018] Arquitetura subjacente da Internet:[0018] Underlying Internet Architecture:

[0019] Desde a ARPANET (a primeira rede de comutação de pacotes a implementar a suíte de protocolo da Internet, ou TCP/IP) e, posteriormente, a NSFNET, a “estrutura” da Internet foi projetada como uma “rede de redes” redundante (ou seja, a Internet) que fornecesse confiabilidade ou “resiliência” ao descentralizar o controle e fornecer trajetos de comunicação alternativos (roteamento) para que a informação atinja o seu destino desejado. Ainda assim, com pacotes seguindo por diferentes trajetos entre os roteadores e outros recursos de rede compartilhados, a manutenção de QoS ou QoE consistente ao longo da Internet permanece sendo um problema extremamente difícil.[0019] Since ARPANET (the first packet-switching network to implement the Internet Protocol suite, or TCP/IP) and later NSFNET, the “structure” of the Internet has been designed as a “network of networks.” (i.e., the Internet) that provided reliability or “resilience” by decentralizing control and providing alternative communication paths (routing) for information to reach its desired destination. Still, with packets taking different paths between routers and other shared network resources, maintaining consistent QoS or QoE across the Internet remains an extremely difficult problem.

[0020] À medida que a estrutura da Internet evoluiu e foi privatizada, desenvolveu-se redundância e sobreposição entre as redes da estrutura tradicional e as de propriedade de provedores telefônicos de longa distância. Para os propósitos do presente relatório descritivo, diferenciam-se grandes redes “públicas”, que fornecem dados para os consumidores, diretamente ou por meio de outras redes menores de “provedores de serviços de Internet” (ISP), e grandes redes de estrutura “privadas” que conduzem dados apenas entre si ou servem de condutores entre grandes ISPs, mas não fornecem dados diretamente para os consumidores. Em qualquer dos casos, essas grandes redes públicas e privadas são tipicamente implementadas como “anéis de fibra” interconectados com linhas-tronco de fibra óptica - ou seja, diversos cabos de fibra óptica reunidos em feixes para aumentar a capacidade da rede.[0020] As the structure of the Internet evolved and was privatized, redundancy and overlap developed between the networks of the traditional structure and those owned by long-distance telephone providers. For the purposes of this descriptive report, a distinction is made between large “public” networks, which provide data to consumers, directly or through other smaller “Internet service providers” (ISP) networks, and large “internet service providers” (ISP) networks. private companies” that conduct data only between themselves or serve as conduits between large ISPs, but do not provide data directly to consumers. In either case, these large public and private networks are typically implemented as “fiber rings” interconnected with fiber optic trunk lines – that is, multiple fiber optic cables bundled together to increase network capacity.

[0021] Para fins de roteamento, os provedores de rede maiores que conduzem o tráfego mais pesado da rede (por exemplo, grandes ISPs e redes de estrutura privadas) recebem blocos de prefixos de roteamento por IP conhecidos como “sistemas autônomos” (AS), cada um dos quais recebe um “número de sistema autônomo” (ASN). Cada um dos grandes anéis de fibra dessas companhias é denominado ASN. O número de ASNs cresceu dramaticamente nos últimos anos, de cerca de 5000 ASNs quinze anos atrás para mais de 50.000 ASNs em todo o mundo atualmente. Conforme indicado acima, muitos provedores de redes grandes também possuem redes de anéis de fibra estruturais (ou seja, ASNs privados) que não atendem aos clientes, mas podem ser conectados aos seus próprios “ASNs públicos” ou aos de propriedade de terceiros.[0021] For routing purposes, the larger network providers that carry the heaviest network traffic (e.g., large ISPs and private backbone networks) are assigned blocks of IP routing prefixes known as “autonomous systems” (AS). , each of which is assigned an “autonomous system number” (ASN). Each of these companies' large fiber rings is called an ASN. The number of ASNs has grown dramatically in recent years, from around 5000 ASNs fifteen years ago to more than 50,000 ASNs worldwide today. As indicated above, many large network providers also have structural fiber ring networks (i.e., private ASNs) that do not serve customers, but can be connected to their own “public ASNs” or those owned by third parties.

[0022] Como diferentes companhias possuem ASNs, elas estabelecem acordos entre si para facilitar o roteamento de tráfego da Internet através dos ASNs e de toda a Internet global. Cada ASN utiliza um banco de roteadores frequentemente denominado “ponto de peer” para controlar o acesso a outro ASN, empregando um protocolo de roteamento conhecido como “protocolo de portal de fronteira”, ou BGP. Qualquer dado ASN pode empregar diversos pontos de peer para conectar-se a diversos ASNs diferentes. ASNs interconectados podem ser geograficamente adjacentes ou podem ser distantes, conectados por meio de longos troncos de fibras que cobrem grandes distâncias (por exemplo, através de países ou até oceanos). ASNs públicos podem também ser interconectados por meio de “ASNs privados” ou redes estruturais.[0022] As different companies have ASNs, they establish agreements with each other to facilitate the routing of Internet traffic through the ASNs and throughout the global Internet. Each ASN uses a bank of routers often called a “peer point” to control access to another ASN, employing a routing protocol known as a “border gateway protocol,” or BGP. Any given ASN can employ several peer points to connect to several different ASNs. Interconnected ASNs can be geographically adjacent or they can be distant, connected via long fiber trunks that span large distances (e.g., across countries or even oceans). Public ASNs can also be interconnected through “private ASNs” or structural networks.

[0023] O monitoramento de QoS em e através de ASNs é extremamente difícil. Grandes provedores de redes mantêm grande parte das informações de roteamento e desempenho dentro dos seus ASNs (incluindo as medidas de congestionamento dinâmico) como sigilosas. Embora o “Formato de Mensagem Aberta” (do BPG atual, versão 4) forneça um “depósito de dados” para certas informações quando é estabelecida uma conexão por TCP/IP a um roteador BGP, este mecanismo não é extremamente útil na prática. Muitos roteadores BGP não suportam o Formato de Mensagem Aberta, enquanto outros simplesmente o desligam. Além disso, as informações tipicamente estão cinco minutos atrasadas, o que é um tempo relativamente longo, considerando a frequência com que os níveis de congestionamento se alteram na Internet.[0023] Monitoring QoS in and across ASNs is extremely difficult. Large network providers keep much of the routing and performance information within their ASNs (including dynamic congestion measures) confidential. Although the “Open Message Format” (from current BPG, version 4) provides a “data store” for certain information when a TCP/IP connection is established to a BGP router, this mechanism is not extremely useful in practice. Many BGP routers do not support Open Message Format, while others simply turn it off. Additionally, information is typically five minutes late, which is a relatively long time considering how frequently congestion levels change on the Internet.

[0024] Como essa grande quantidade de tráfego da Internet flui através dos pontos de peer com amplitude de banda relativamente alta que interconectam os ASNs, esses pontos de peer frequentemente são “gargalos” chave ou fontes de grande parte do congestionamento na Internet a qualquer momento, além do problema do “último quilômetro” em um ASN (ou seja, congestionamento através das conexões com e sem fio com amplitude de banda relativamente mais baixa entre os usuários finais e os seus ISPs “portais”).[0024] Because this large amount of Internet traffic flows through relatively high-bandwidth peer points that interconnect ASNs, these peer points are often key “bottlenecks” or sources of much of the congestion on the Internet at any given time. , in addition to the “last mile” problem in an ASN (i.e., congestion across wired and wireless connections with relatively lower bandwidth between end users and their “gateway” ISPs).

[0025] À medida que aumenta a carga de tráfego através de um ponto de peer ASN, por exemplo, os roteadores nos ASNs em cada lado do ponto de peer ficam congestionados.Em outras palavras, esses roteadores experimentam altas taxas de uso de RAM, CPU e outros recursos compartilhados com capacidade limitada. O aumento da demanda sobre esses recursos reduz o desempenho (ou seja, as velocidades de bits) através desses pontos de peer e, eventualmente, podem gerar perda de pacotes de dados. Como o tráfego de rede através da Internet não possui controle central, é difícil prever os níveis em frequente alteração de “congestionamento de pontos de peer” através da Internet a qualquer momento.[0025] As the traffic load increases through an ASN peer point, for example, the routers in the ASNs on each side of the peer point become congested. In other words, these routers experience high rates of RAM usage, CPU and other shared resources with limited capacity. Increased demand on these resources reduces performance (i.e. bit speeds) across these peer points and can eventually lead to data packet loss. Because network traffic across the Internet has no central control, it is difficult to predict frequently changing levels of “peer congestion” across the Internet at any given time.

[0026] Caso não se possa garantir QoS consistente em ASNs e através deles, torna-se muito difícil manter QoE consistente para os espectadores de eventos de streaming de vídeo. Qualquer sistema que transmita vídeo pela Internet é sujeito à falta de confiabilidade e níveis de congestionamento em constante alteração de roteadores compartilhados, particularmente em pontos de peer de ASN através dos quais flui tanto tráfego da Internet. Este problema é exacerbado ao realizar-se streaming de vídeo para grandes quantidades de espectadores simultâneos na Internet, particularmente através desses pontos de peer de ASN.[0026] If consistent QoS cannot be guaranteed in and across ASNs, it becomes very difficult to maintain consistent QoE for viewers of video streaming events. Any system that transmits video over the Internet is subject to unreliability and constantly changing congestion levels from shared routers, particularly at ASN peer points through which so much Internet traffic flows. This problem is exacerbated when streaming video to large numbers of simultaneous viewers on the Internet, particularly through these ASN peer points.

[0027] Abordagens de streaming de vídeo existentes:[0027] Existing video streaming approaches:

[0028] Diversas abordagens de streaming de vídeo via Internet evoluíram ao longo das últimas décadas, com ampla variedade de terminologia sendo empregada para caracterizar e diferenciar diferentes métodos de geração de topologias de redes sobrepostas (sobre a Internet) e fornecer conteúdo de vídeo entre nós de rede ao longo dessas redes sobrepostas. Ao comparar-se diferentes abordagens, é útil retornar rapidamente à analogia de navegação por GPS e considerar os fatores que afetam o tempo necessário para viajar entre quaisquer dois pontos ou nós - ou seja, a distância, velocidade e congestionamento (tipicamente abordados pelo redirecionamento ao longo de um trajeto diferente).[0028] Various approaches to streaming video over the Internet have evolved over the past few decades, with a wide variety of terminology being employed to characterize and differentiate different methods of generating overlay network topologies (over the Internet) and delivering video content between nodes across these overlapping networks. When comparing different approaches, it is useful to quickly return to the GPS navigation analogy and consider the factors that affect the time required to travel between any two points or nodes - that is, distance, speed and congestion (typically addressed by redirection to the along a different route).

[0029] No contexto de direcionamento de pacotes via Internet, a distância (ou proximidade geográfica) não possui relevância direta, pois os pacotes viajam perto da velocidade da luz. A velocidade, entretanto, é afetada pela quantidade de paradas ou bloqueios encontrados ao longo de um trajeto ou, neste contexto, a quantidade de “saltos” encontrados em roteadores intermediários entre dois nós. Desta forma, pode-se afirmar que dois nós estão “próximos” entre si (em “proximidade de rede”) caso estejam apenas a relativamente poucos saltos de distância, independentemente da sua proximidade geográfica. O congestionamento em nós intermediários ao longo do trajeto entre dois nós afeta o tempo de trajeto geral e pode ser abordado pelo redirecionamento dinâmico do tráfego - ou seja, reconfiguração dinâmica das redes sobrepostas que determinam o trajeto entre dois nós. Como será discutido abaixo, esses fatores servem para ilustrar distinções chave entre diferentes abordagens de streaming de vídeo via Internet.[0029] In the context of routing packets via the Internet, distance (or geographic proximity) is not directly relevant, as packets travel close to the speed of light. Speed, however, is affected by the number of stops or blockages encountered along a route or, in this context, the number of “hops” found in intermediate routers between two nodes. In this way, it can be said that two nodes are “close” to each other (in “network proximity”) if they are only relatively few hops apart, regardless of their geographic proximity. Congestion at intermediate nodes along the path between two nodes affects overall travel time and can be addressed by dynamic redirection of traffic - that is, dynamic reconfiguration of the overlapping networks that determine the path between two nodes. As will be discussed below, these factors serve to illustrate key distinctions between different approaches to streaming video via the Internet.

[0030] O método mais comum de fornecimento de vídeo fora da Internet é “transmitir” um streaming de vídeo (por exemplo, um programa de televisão) de um “ponto de origem” para todos os espectadores de destino simultaneamente - por exemplo, por meio de infra- estrutura de cabo ou satélite dedicada. Embora centros de rede possam ser empregados em LAN para transmitir informações para todos os nós da rede, a transmissão por broadcasting de pacotes de segmentos de vídeo através de chaves e roteadores via Internet seria amplamente impraticável e ineficiente. A maior parte dos usuários de rede não estaria interessada em ver nenhum dado “canal” de conteúdo de vídeo e ocorreria congestionamento significativo perto do ponto de origem, de forma que os roteadores que transmitem segmentos de vídeo para outros roteadores seriam rapidamente congestionados. Solução de broadcasting simplesmente não é viável para fornecer um canal de conteúdo de vídeo via Internet de um único ponto de origem para uma grande quantidade de espectadores simultâneos que podem assistir ao canal a qualquer momento.[0030] The most common method of delivering video outside of the Internet is to “broadcast” a video stream (e.g., a television program) from a “point of origin” to all destination viewers simultaneously - e.g. through dedicated cable or satellite infrastructure. Although network centers can be employed in a LAN to transmit information to all nodes on the network, broadcasting packets of video segments through switches and routers via the Internet would be largely impractical and inefficient. Most network users would not be interested in seeing any data “channels” of video content, and significant congestion would occur near the point of origin, so routers transmitting video segments to other routers would quickly become congested. A broadcasting solution is simply not viable for delivering a channel of video content via the Internet from a single point of origin to a large number of simultaneous viewers who can watch the channel at any time.

[0031] Uma abordagem “multicast” alternativa envolve o streaming simultâneo de cada segmento de vídeo de um ponto de origem para grupos previamente definidos de nós através da Internet. De forma similar, esta abordagem é impraticável para distribuição de vídeo em larga escala via Internet. Além disso, ela exige infra-estrutura especializada, tal como roteadores dedicados com funcionalidade multicast, o que também é impraticável e proibitivamente caro para uso comercial em larga escala.[0031] An alternative “multicast” approach involves simultaneously streaming each video segment from a point of origin to previously defined groups of nodes across the Internet. Similarly, this approach is impractical for large-scale video distribution via the Internet. Furthermore, it requires specialized infrastructure, such as dedicated routers with multicast functionality, which is also impractical and prohibitively expensive for large-scale commercial use.

[0032] Ao contrário dos métodos de broadcast e multicast, uma abordagem “unicast” para streaming de vídeo envolve o envio de segmentos de vídeo de um ponto de origem para um único nó de destino (por exemplo, estabelecendo conexão TCP/IP com um endereço IP de nó de destino definido). O fornecimento de uma grande quantidade de pacotes unicast simultaneamente para cada nó receptor, entretanto, também congestionaria rapidamente os roteadores no ponto de origem ou perto dele e deixariam de atingir QoS consistente por muitas das razões indicadas acima, sem mencionar o enorme custo de fornecimento de amplitude de banda suficiente para manipular essa grande quantidade de transmissões simultâneas.[0032] Unlike broadcast and multicast methods, a “unicast” approach to video streaming involves sending video segments from a source point to a single destination node (e.g., establishing TCP/IP connection with a defined destination node IP address). Providing a large number of unicast packets simultaneously to each receiving node, however, would also quickly congest routers at or near the point of origin and fail to achieve consistent QoS for many of the reasons noted above, not to mention the enormous cost of providing sufficient bandwidth to handle this large number of simultaneous transmissions.

[0033] Algumas companhias VOD (tais como Netflix e YouTube) empregaram variações dessa abordagem unicast que geralmente dependem de infra-estrutura de “servidor terminal” cara. Essa abordagem (às vezes denominada “rede de fornecimento de conteúdo” ou CDN) envolve o desdobramento de muitos servidores físicos através da Internet e a distribuição de cópias de cada conteúdo de canal de vídeo para cada servidor. Como resultado, os nós de observação podem receber conteúdo de vídeo desejado de um servidor próximo (em proximidade de rede - a apenas relativamente poucos saltos de distância de um nó de observação).[0033] Some VOD companies (such as Netflix and YouTube) have employed variations of this unicast approach that generally rely on expensive “terminal server” infrastructure. This approach (sometimes called a “content delivery network” or CDN) involves deploying many physical servers across the Internet and distributing copies of each video channel's content to each server. As a result, observation nodes can receive desired video content from a nearby server (in network proximity - just relatively few hops away from an observation node).

[0034] Cada servidor terminal possui tipicamente capacidades de computação e amplitude de banda significativas e constitui essencialmente uma fonte de conteúdo de vídeo separada da qual os nós de observação próximos podem obter qualquer canal com conteúdo de vídeo a qualquer momento (“on demand”). Esta abordagem de adição de infra-estrutura física é um tanto similar à construção de auto-estradas e rampas de saída adicionais para permitir que uma quantidade maior de pessoas chegue a destinos populares com mais rapidez (com menos curvas e menos tempo gasto em rodovias mais lentas).[0034] Each terminal server typically has significant computing capabilities and bandwidth and essentially constitutes a separate video content source from which nearby observing nodes can obtain any channel with video content at any time (“on demand”). . This approach of adding physical infrastructure is somewhat similar to building additional freeways and exit ramps to allow more people to get to popular destinations more quickly (with fewer turns and less time spent on slower highways). slow).

[0035] Embora diferentes usuários tipicamente desejem assistir a canais de vídeo diferentes em qualquer dado momento, os sistemas VOD enfrentam ocasionalmente períodos de “pico” de demanda, durante os quais um evento de vídeo específico deve ser transmitido por streaming para uma grande quantidade de espectadores simultâneos (por exemplo, um episódio final de uma série de televisão popular), o que pode congestionar até a infra-estrutura da maior companhia de streaming de vídeo, ou pelo menos resultar em desdobramento ineficiente “de pior caso” de infra-estrutura cara que frequentemente é subutilizada (ou seja, durante períodos mais comuns de fora de pico de demanda). Foram testadas soluções de VOD alternativas para evitar a necessidade de infra-estrutura de servidor terminal caro por meio de reprodução e distribuição de conteúdo de vídeo entre os próprios nós de rede (conforme discutido, por exemplo, na Patente Norte-Americana publicada n° 2008/0059631).[0035] Although different users typically want to watch different video channels at any given time, VOD systems occasionally face periods of “peak” demand, during which a specific video event must be streamed to a large number of users. simultaneous viewers (e.g., a final episode of a popular television series), which can congest even the largest video streaming company's infrastructure, or at least result in inefficient “worst-case” deployment of infrastructure expensive that is often underutilized (i.e. during more common off-peak demand periods). Alternative VOD solutions have been tested to avoid the need for expensive terminal server infrastructure by playing and distributing video content between network nodes themselves (as discussed, for example, in published U.S. Patent No. 2008 /0059631).

[0036] Com ou sem infra-estrutura de servidor terminal cara, nenhuma dessas soluções de VOD aborda o problema de QoS para eventos de vídeo não programados, pois todos ele dependem de servidores terminais de “pré-semeadura” ou nós de observação em toda a Internet com conteúdo antecipadamente conhecido, para garantir fonte próxima de conteúdo de vídeo. Streaming de evento não programado ao vivo necessitaria de fornecimento simultâneo em tempo real de conteúdo de vídeo para todos esses servidores terminais ou nós de observação, um problema não abordado por nenhum desses sistemas VOD.[0036] With or without expensive terminal server infrastructure, none of these VOD solutions address the QoS problem for unscheduled video events, as they all rely on “pre-seeding” terminal servers or observation nodes throughout the Internet with content known in advance, to ensure a close source of video content. Live unscheduled event streaming would require simultaneous real-time delivery of video content to all of these terminal servers or observation nodes, an issue not addressed by any of these VOD systems.

[0037] Mais recentemente, certos padrões de streaming de vídeo com base em unicast (por exemplo, “WebRTC”) evoluíram para possibilitar streaming “ponto a ponto” de vídeo entre navegadores da Web móveis e desktop sem a necessidade de plugins. Muitos smartphones existentes, bem como computadores desktop e laptop, incluem bibliotecas WebRTC que sustentam streaming de vídeo entre navegadores, bem como bibliotecas de “streaming adaptativo” que permitem que um nó de observação detecte sua amplitude de banda e capacidade de CPU em tempo real e solicite automaticamente “velocidade de bits” mais alta ou mais baixa para adaptar-se a alterações dessas medidas.[0037] More recently, certain unicast-based video streaming standards (e.g., “WebRTC”) have evolved to enable “peer-to-peer” streaming of video between mobile and desktop Web browsers without the need for plugins. Many existing smartphones, as well as desktop and laptop computers, include WebRTC libraries that support cross-browser video streaming, as well as “adaptive streaming” libraries that allow a peering node to sense its bandwidth and CPU capacity in real time and automatically request higher or lower “bitrate” to adapt to changes in these measurements.

[0038] Implementações de streaming adaptativas incluem “HTTP Live Streaming” (HLS) da Apple, “Smooth Streaming” da Microsoft e o padrão ISO “MPEG-Dash”, entre outros. Em um cenário de streaming de vídeo ponto a ponto típico, um nó receptor solicita periodicamente a um servidor HTTP “arquivos de manifesto”, que incluem os locais de cada versão de velocidade de bits disponível de segmentos de vídeo seguintes (por exemplo, os próximos oito). Cada segmento de vídeo poderá, por exemplo, ser disponível em versões de 1080p, 720p e 480p, refletindo diferentes “resoluções de vídeo” que necessitam de velocidades de bits de streaming (amplitude de banda) diferentes para garantir que cada segmento de vídeo seja fornecido essencialmente no mesmo período de tempo, independentemente da sua resolução.[0038] Adaptive streaming implementations include Apple's “HTTP Live Streaming” (HLS), Microsoft's “Smooth Streaming”, and the “MPEG-Dash” ISO standard, among others. In a typical peer-to-peer video streaming scenario, a receiving node periodically requests an HTTP server for “manifest files,” which include the locations of each available bitrate version of subsequent video segments (e.g., the next eight). Each video segment may, for example, be available in 1080p, 720p and 480p versions, reflecting different “video resolutions” that require different streaming bit rates (bandwidth) to ensure that each video segment is delivered. in essentially the same period of time, regardless of its resolution.

[0039] Dispositivos de vídeo HTML5 padrão (em navegadores da Web que sustentam WebRTC) tipicamente realizam buffer de três segmentos de vídeo antes que comecem a executar conteúdo de vídeo. Eles utilizam o arquivo de manifesto atual para enviar solicitação de HTTP para um servidor de HTTP para cada segmento de vídeo. O nó de envio “empurra” em seguida cada segmento de vídeo (em “conjuntos” pequenos) para o nó receptor de acordo com padrões WebRTC para execução no navegador da Web do nó receptor. Caso o nó receptor sustente implementações de streaming adaptativas e determine que o tempo necessário para receber segmentos de vídeo recentes aumenta ou diminui significativamente, ele começa automaticamente a solicitar segmentos de vídeo em velocidade de bits mais baixa ou mais alta dentre as seleções do arquivo de manifesto. Em outras palavras, ele “se adapta” à sua amplitude de banda real ao longo do tempo variando a resolução dos segmentos de vídeo que solicita.[0039] Standard HTML5 video devices (in Web browsers that support WebRTC) typically buffer three video segments before they begin playing video content. They use the current manifest file to send HTTP request to an HTTP server for each video segment. The sending node then “pushes” each video segment (in small “sets”) to the receiving node according to WebRTC standards for execution 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 increases or decreases significantly, it automatically begins requesting lower or higher bitrate video segments from the selections in the manifest file . In other words, it “adapts” to your actual bandwidth over time by varying the resolution of the video segments it requests.

[0040] A “resolução” de um quadro de vídeo é a medida da sua largura x comprimento (por exemplo, 1920 x 1080 ou 1080p) ou número de pixels em um quadro, enquanto a sua “velocidade de bits” designa o número de “bits por segundo” (bps) que são transmitidos do emissor para o receptor. Caso 30 quadros de um vídeo com resolução de 1080p sejam fornecidos por segundo (30 “quadros por segundo”) e cada pixel de cor contenha 24 bits (24 “bits por pixel”), a velocidade de bits seria igual a quase 1,5 Tbps (1.492.992.000 bps, ou seja, 1.492.992.000 = (1920 x 1080 pixels por quadro) x (24 bits por pixel) x (30 quadros por segundo).[0040] The “resolution” of a video frame is the measurement of its width x length (e.g., 1920 x 1080 or 1080p) or number of pixels in a frame, while its “bit rate” designates the number of “bits per second” (bps) that are transmitted from the sender to the receiver. If 30 frames of a 1080p video are delivered per second (30 “frames per second”) and each color pixel contains 24 bits (24 “bits per pixel”), the bit rate would be equal to almost 1.5 Tbps (1,492,992,000 bps, i.e. 1,492,992,000 = (1920 x 1080 pixels per frame) x (24 bits per pixel) x (30 frames per second).

[0041] Codecs de vídeo padrão empregam compressão (por exemplo, compressão MPEG2) e outros métodos de codificação de vídeo para gerar velocidades de bits eficazes mais baixas (por exemplo, 3 Mbps). Em vista do acima, “velocidade de bits” e “resolução” são altamente correlacionadas, pois podem aumentar ou reduzir a velocidade de bits eficaz fornecendo quadros de vídeo com resolução mais alta ou mais baixa. Utilizamos, portanto, esses termos de forma um tanto intercambiável no presente.[0041] Standard video codecs employ compression (e.g., MPEG2 compression) and other video encoding methods to generate lower effective bit rates (e.g., 3 Mbps). In view of the above, “bitrate” and “resolution” are highly correlated as they can increase or reduce the effective bitrate by providing higher or lower resolution video frames. We therefore use these terms somewhat interchangeably at present.

[0042] Padrões WebRTC e de streaming adaptativo permitem a virtualmente qualquer usuário de smartphone capturar e transmitir eventos de vídeo ao vivo e também permitem que esses usuários liguem-se a um canal de streaming de vídeo originário de outro ponto de origem na Internet, que varia de outros usuários individuais de smartphones até grandes companhias que abrigam um conjunto de conteúdo de vídeo. Esses padrões são, entretanto, projetados para streaming de vídeo ponto a ponto e não abordam o problema de “fornecimento de vídeo” de streaming de um canal de vídeo para grandes quantidades de espectadores simultâneos via Internet.[0042] WebRTC and adaptive streaming standards allow virtually any smartphone user to capture and stream live video events and also allow those users to link to a video streaming channel originating from another point of origin on the Internet, which It ranges from other individual smartphone users to large companies that host a body of video content. These standards are, however, designed for peer-to-peer video streaming and do not address the “video delivery” problem of streaming a video channel to large numbers of simultaneous viewers via the Internet.

[0043] Para abordar este problema, algumas companhias de streaming de vídeo (por exemplo, StreamRoot) adotaram uma abordagem que envolve tipicamente topologia “peer to peer” (P2P) ou de rede entrelaçada, na qual conteúdo de vídeo é retransmitido de um nó de observação para outro (o que às vezes é denominado “peercasting”). Em um contexto de streaming de vídeo, esses termos podem ser utilizados de forma intercambiável para designar redes sobrepostas configuradas na Internet, que permitem que os nós de observação retransmitam conteúdo de streaming de vídeo entre si de forma distribuída. O fornecimento de streaming de vídeo para grandes quantidades de espectadores simultâneos deverá ser diferenciado, entretanto, de usos diferentes de streaming de topologia de rede entrelaçada ou P2P, por exemplo, para aplicações de transferência ou compartilhamento de arquivos.[0043] To address this problem, some video streaming companies (e.g., StreamRoot) have adopted an approach that typically involves “peer to peer” (P2P) or interlaced network topology, in which video content is relayed from one node observation to another (sometimes called “peercasting”). In a video streaming context, these terms can be used interchangeably to designate overlay networks configured on the Internet that allow observation nodes to relay streaming video content to each other in a distributed manner. The provision of video streaming to large numbers of simultaneous viewers should be distinguished, however, from uses other than P2P or interlaced network topology streaming, for example, for file transfer or file sharing applications.

[0044] Sistemas de streaming de vídeo P2P fornecem um canal de conteúdo de vídeo de um único ponto de origem para grandes quantidades de usuários simultâneos via Internet. Esses sistemas tendem a ser resilientes e escalonáveis, pois a sua natureza distribuída possibilita recuperação de pontos de falha individuais (por exemplo, redirecionando conteúdo por meio de outros nós) e sua confiabilidade e desempenho realmente melhoram enquanto mais nós são adicionados à rede (ou seja, à medida que mais e melhores opções de retransmissão de roteamento tornam-se disponíveis).[0044] P2P video streaming systems provide a channel of video content from a single point of origin to large numbers of simultaneous users via the Internet. These systems tend to be resilient and scalable, as their distributed nature makes it possible to recover from individual points of failure (e.g., by redirecting content through other nodes) and their reliability and performance actually improves as more nodes are added to the network (i.e. , as more and better routing relay options become available).

[0045] Quando novos nós ligam-se a um canal de vídeo ou nós existentes deixam (param de ver) o canal, os sistemas de streaming de vídeo P2P necessitam, até certo ponto, reconfigurar dinamicamente a topologia da rede sobreposta - ou seja, modificar ao menos alguns dos trajetos de roteamento entre nós de rede para acomodar os novos nós. Ao adicionar-se um novo nó, por exemplo, o seu local geográfico pode ser considerado em esforço para selecionar nós existentes próximos dos quais receberá (e para os quais retransmitirá) conteúdo de vídeo.[0045] When new nodes connect to a video channel or existing nodes leave (stop watching) the channel, P2P video streaming systems need, to some extent, to dynamically reconfigure the overlay network topology - i.e. modify at least some of the routing paths between network nodes to accommodate the new nodes. When adding a new node, for example, its geographic location may be considered in an effort to select existing nodes nearby to receive (and retransmit) video content.

[0046] Mas, se os nós “peer” forem selecionados meramente com base na sua proximidade geográfica, eles podem ainda ser relativamente “distantes” entre si (e não em proximidade de rede) - por exemplo, se estiverem em ASNs diferentes. Como resultado, o tráfego entre eles pode cruzar um ou mais pontos de peer potencialmente congestionados. A latência real entre dois nós em boa proximidade geográfica pode, por exemplo, exceder a soma das latências entre cada um desses nós e um nó geograficamente distante. Este fenômeno é às vezes denominado “violação da inequidade do triângulo” (TIV), que ilustra as desvantagens de depender de roteamento de BGP para fornecer conteúdo digital entre os nós de uma rede sobreposta por meio de pontos de peer de ASN.[0046] But, if “peer” nodes are selected merely based on their geographic proximity, they may still be relatively “distant” from each other (and not in network proximity) - for example, if they are on different ASNs. As a result, traffic between them may cross one or more potentially congested peer points. The actual latency between two nodes in good geographic proximity may, for example, exceed the sum of the latencies between each of these nodes and a geographically distant node. This phenomenon is sometimes called “triangle inequality violation” (TIV), which illustrates the disadvantages of relying on BGP routing to deliver digital content between nodes in an overlay network through ASN peer points.

[0047] Uma razão deste problema com os sistemas de streaming de vídeo P2P existentes é o fato deles não serem construídos para serem “compatíveis” com a arquitetura subjacente da Internet. Qualquer topologia de rede sobreposta construída sobre a Internet ainda é sujeita a muitos pontos de rompimento ou falha (além de nós novos ou que desaparecem), tais como a série de problemas de QoS indicada acima. Não abordando a volatilidade de QoS subjacente da Internet, particularmente em pontos de peer de ASN, esses sistemas enfrentam obstáculos significativos no fornecimento aos seus usuários de QoE consistente.[0047] One reason for this problem with existing P2P video streaming systems is the fact that they are not built 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 points of disruption or failure (in addition to new or disappearing nodes), such as the series of QoS problems noted above. By not addressing the underlying QoS volatility of the Internet, particularly at ASN peer points, these systems face significant obstacles in providing their users with consistent QoE.

[0048] Os sistemas de streaming de vídeo P2P existentes (como os sistemas de navegação GPS) dependem, portanto, da proximidade geográfica (e não da proximidade de rede) para selecionar nós de retransmissão de peers e redirecionar o tráfego somente “após o fato”, ao encontrar congestionamento. Além disso, streaming em tempo real de dados lineares para usuários simultâneos impõe restrição adicional não encontrada em sistemas de navegação GPS - o conteúdo necessita chegar “simultaneamente” em cada nó. Servidores terminais e outras abordagens de infra-estrutura física (semelhantes à construção de auto-estradas e rampas de saída para fornecer vias de velocidade mais alta) são caros e também deixam de abordar adequadamente os problemas de eventos não programados e uso em alta concorrência de qualquer evento específico.[0048] Existing P2P video streaming systems (such as GPS navigation systems) therefore rely on geographic proximity (rather than network proximity) to select peer relay nodes and redirect traffic only “after the fact ”, when encountering congestion. Furthermore, real-time streaming of linear data to simultaneous users imposes additional constraints not found in GPS navigation systems - content needs to arrive “simultaneously” at each node. Terminal servers and other physical infrastructure approaches (similar to building freeways and exit ramps to provide higher speed lanes) are expensive and also fail to adequately address the problems of unscheduled events and high-concurrency usage of any specific event.

[0049] Existe, portanto, a necessidade de um sistema de fornecimento de conteúdo digital que aborde as deficiências discutidas acima e leve em conta a arquitetura subjacente da Internet (particularmente em pontos de peer ASN por meio dos quais flui muito tráfego da Internet) para gerar e reconfigurar dinamicamente redes sobrepostas, de forma a fornecer aos nós de clientes QoE consistente.[0049] There is therefore a need for a digital content delivery system that addresses the deficiencies discussed above and takes into account the underlying architecture of the Internet (particularly at ASN peer points through which much Internet traffic flows) to Dynamically generate and reconfigure overlay networks to provide client nodes with consistent QoE.

Breve Descrição da InvençãoBrief Description of the Invention

[0050] Segundo a presente invenção, diversas realizações de arquiteturas e métodos inovadores são descritas com relação a um sistema de fornecimento de conteúdo digital que fornece aos usuários de nós em uma rede subjacente (por exemplo, a Internet) QoE consistente por meio de: (1) manutenção de mapa de links compartilhados que interconectam componentes da rede subjacente (por exemplo, ASNs e os pontos de peer que os interconectam), incluindo um local de cada nó em um dos componentes (por exemplo, dentro de um ASN); (2) geração de medidas por meio de monitoramento do tráfego de rede entre os nós que cruza esses links compartilhados (pontos de peer de ASN) ao longo de uma ou mais redes sobrepostas construídas sobre a rede subjacente (Internet); (3) análise das medidas e do mapa ao longo do tempo para prever os níveis de congestionamento que refletem a capacidade alterada dos links compartilhados (pontos de peer de ASN) ao longo do tempo; e (4) reconfiguração dinâmica da topologia das redes sobrepostas, com base nos níveis de congestionamento previstos, para gerar vias ideais do conteúdo digital entre os nós de cliente ao longo das redes sobrepostas.[0050] According to the present invention, various embodiments of innovative architectures and methods are described with respect to a digital content delivery system that provides users of nodes in an underlying network (e.g., the Internet) with consistent QoE through: (1) maintaining a map of shared links that interconnect components of the underlying network (e.g., ASNs and the peer points that interconnect them), including a location of each node in one of the components (e.g., within an ASN); (2) generating measurements by monitoring network traffic between nodes that cross these shared links (ASN peer points) along one or more overlay networks built on top of the underlying network (Internet); (3) analysis of measurements and map over time to predict congestion levels that reflect changing capacity of shared links (ASN peer points) over time; and (4) dynamically reconfiguring the topology of the overlay networks, based on predicted congestion levels, to generate optimal digital content pathways between client nodes across the overlay networks.

[0051] Realizações específicas do sistema de “broadcast virtual” de acordo com a presente invenção são descritas no presente no contexto de fornecimento de QoE consistente entre os espectadores de um ou mais canais de conteúdo de vídeo, cada um dos quais é transmitido por streaming em tempo real de um único ponto de origem para quantidades potencialmente grandes de observadores simultâneos que podem ter acesso ao canal em tempos diferentes (evitando, ao mesmo tempo, a necessidade de servidores terminais ou outra infra-estrutura física cara). Como será explicado com mais detalhes abaixo, utilizamos a expressão “broadcast virtual” no contexto de streaming unicast de conteúdo linear para usuários simultâneos. Do ponto de vista dos usuários, o conteúdo é transmitido para eles, de forma que eles recebam o conteúdo “simultaneamente”, muito embora se empregue streaming unicast para dirigir o conteúdo. Outras realizações da presente invenção serão evidentes para os técnicos no assunto em numerosos outros contextos em que a capacidade limitada de links compartilhados entre componentes de rede restringe o roteamento de qualquer tipo de informação que possa ser convertido em formato digital.[0051] Specific embodiments of the “virtual broadcast” system in accordance with the present invention are described herein in the context of providing consistent QoE among viewers of one or more channels of video content, each of which is streamed. in real time from a single point of origin to potentially large numbers of simultaneous observers who may access the channel at different times (while avoiding the need for terminal servers or other expensive physical infrastructure). As will be explained in more detail below, we use the term “virtual broadcast” in the context of unicast streaming of linear content to simultaneous users. From the users' point of view, content is transmitted to them so that they receive the content “simultaneously”, even though unicast streaming is used to direct the content. Other embodiments of the present invention will be apparent to those skilled in the art in numerous other contexts in which the limited capacity of shared links between network components restricts the routing of any type of information that can be converted into digital form.

[0052] Para os propósitos do presente relatório descritivo, um único nó que recebe diversos canais diferentes simultaneamente pode ser considerado um nó distinto sobre redes sobrepostas separadas, cada qual definido por um único canal. Em um contexto VOD, cada “exibição” separada de um programa específico pode ser considerada um canal separado que possui sua própria rede de nós de observação.[0052] For the purposes of this specification, a single node that receives several different channels simultaneously can be considered a distinct node on separate overlay networks, each defined by a single channel. In a VOD context, each separate “airing” of a specific program can be considered a separate channel that has its own network of watch nodes.

[0053] O sistema de acordo com a presente invenção é capaz de manipular eventos programados e não programados, streaming de eventos ao vivo e também pré-gravados e streaming desses eventos em tempo real com o mínimo de atraso de forma altamente escalonável que mantém QoE consistente entre grandes quantidades de usuários simultâneos - apesar de ser implementado em redes sobrepostas construídas sobre a Internet que são sujeitas à volatilidade de QoS da Internet. O desempenho do sistema e o QoE dos usuários realmente aumentam à medida que aumenta a quantidade de usuários simultâneos (particularmente em qualquer ASN dado).[0053] The system according to the present invention is capable of handling scheduled and unscheduled events, streaming live as well as pre-recorded events and streaming these events in real time with minimal delay in a highly scalable manner that maintains QoE consistent across large numbers of concurrent users - despite being implemented in overlay networks built on top of the Internet that are subject to Internet QoS volatility. System performance and user QoE actually increase as the number of concurrent users increases (particularly on any given ASN).

[0054] Arquitetura de cliente e servidor é empregada para centralizar decisões de roteamento do lado do servidor. Fornecimento de streaming distribuído de conteúdo de vídeo é realizado por meio de redes de sobreposição de P2P dinamicamente reconfiguráveis que permitem que conteúdo de vídeo seja retransmitido (ou seja, “empurrado”) entre os nós de observação de cada canal de vídeo. Nós de clientes podem empregar dispositivos de vídeo HTML5 padrão (construídos na maior parte dos navegadores da Web desktop e móveis) para observar ou executar o vídeo e dependem de código embutido específico (tal como Javascript) para implementar funcionalidade adicional, administrando, por exemplo, o recebimento de segmentos de vídeo e a retransmissão desses segmentos de vídeo para outros nós, bem como monitorando diversas medidas de desempenho. Em outras realizações, essa funcionalidade, no todo ou em parte, pode ser integrada a um aplicativo móvel ou específico.[0054] Client and server architecture is employed to centralize server-side routing decisions. Distributed streaming delivery of video content is accomplished through dynamically reconfigurable P2P overlay networks that allow video content to be relayed (i.e., “pushed”) between the watch nodes of each video channel. Client nodes may employ standard HTML5 video devices (built into most desktop and mobile web browsers) to watch or play the video and rely on specific embedded code (such as Javascript) to implement additional functionality, e.g. receiving video segments and retransmitting those video segments to other nodes, as well as monitoring various performance measures. In other embodiments, this functionality, in whole or in part, may be integrated into a specific mobile or application.

[0055] O sistema de acordo com a presente invenção possibilita streaming de vídeo “ponto a ponto” entre navegadores da Web móveis e desktop e adapta-se a alterações da amplitude de banda do nó solicitando automaticamente segmentos de vídeo em velocidade de bits mais baixa ou mais alta. Em uma realização, o sistema de broadcast virtual emprega padrões unicast, incluindo WebRTC e padrões de streaming adaptativos (tais como HLS, MPEG-Dash ou Streaming Suave) para possibilitar streaming de vídeo sem a necessidade de plugins de navegadores da Web e permitir que os nós detectem suas capacidades de desempenho, tais como capacidade de CPU e amplitude de banda.[0055] The system according to the present invention enables “peer-to-peer” video streaming between mobile and desktop web browsers and adapts to changes in node bandwidth by automatically requesting lower bitrate video segments or higher. In one embodiment, the virtual broadcast system employs unicast standards, including WebRTC and adaptive streaming standards (such as HLS, MPEG-Dash, or Smooth Streaming) to enable video streaming without the need for Web browser plugins and allow users to we detect your performance capabilities, such as CPU capacity and bandwidth.

[0056] Cada evento é fornecido para um “Servidor de Broadcast Virtual” para fornecimento de “ponto de origem” de cada canal a usuários simultâneos ao longo de diversas redes sobrepostas dinamicamente reconfiguráveis. Eventos podem ser obtidos virtualmente de qualquer fonte (incluindo CDN), sejam eles transferidos na forma de arquivos completos ou transmitidos ao vivo por streaming para o Servidor de Broadcast Virtual. Em realizações que utilizam WebRTC, qualquer usuário com smartphone que implemente WebRTC pode carregar eventos de vídeo pré-gravados ou capturar eventos ao vivo e carregá-los para o Servidor de Broadcast Virtual (bem como observar outros canais transmitidos por streaming pelo Servidor de Broadcast Virtual) para fornecimento subsequente para os usuários por meio das redes sobrepostas.[0056] Each event is provided to a “Virtual Broadcast Server” for providing the “point of origin” of each channel to simultaneous users over several dynamically reconfigurable overlay networks. Events can be obtained from virtually any source (including CDN), whether they are transferred as complete files or streamed live to the Virtual Broadcast Server. In deployments that utilize WebRTC, any user with a smartphone that implements WebRTC can load pre-recorded video events or capture live events and upload them to the Virtual Broadcast Server (as well as watch other channels streamed by the Virtual Broadcast Server ) for onward delivery to users via the overlay networks.

[0057] O Servidor de Broadcast Virtual inclui, em uma realização, um “Servidor de Conteúdo POI”, que serve de ponto de origem para cada canal do qual são fornecidos segmentos de vídeo por meio das redes sobrepostas reconfiguráveis dinamicamente construídas sobre a Internet. Segmentos de vídeo possuem tamanho tipicamente fixo (por exemplo, de um a dez segundos), conforme determinado pelo publicador original do evento de vídeo. Os segmentos de vídeo são observados por nós de clientes e “empurrados” (ou seja, retransmitidos na forma de “pedaços” individuais com tamanho fixo de acordo com o padrão WebRTC) de um nó para outro ao longo das vias definidas pelas redes sobrepostas. Em uma realização, cada segmento de vídeo é dividido em pedaços de 64 kB para coincidir com o tamanho de um “pacote” de datagrama UDP para eficiência máxima quando transmitido por meio do protocolo de transporte MPEG2.[0057] The Virtual Broadcast Server includes, in one embodiment, a "POI Content Server", which serves as the point of origin for each channel from which video segments are delivered through the dynamically reconfigurable overlay networks built over the Internet. Video segments are typically fixed in length (for example, one to ten seconds), as determined by the original publisher of the video event. Video segments are observed by client nodes and “pushed” (i.e., retransmitted in the form of individual “chunks” with a fixed size according to the WebRTC standard) from one node to another along paths defined by the overlay networks. 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 transmitted via the MPEG2 transport protocol.

[0058] Embora segmentos de vídeo sejam efetivamente empurrados para cada nó de cliente na maioria dos casos, um nó de cliente pode, em uma realização, detectar que todos os pedaços de um segmento de vídeo chegaram atrasados e pode utilizar o arquivo de manifesto atual para solicitar o segmento de vídeo do Servidor de Conteúdo POI (ou seja, como local de alimentação “de recuo”).[0058] Although video segments are effectively pushed to each client node in most cases, a client node may, in one embodiment, detect that all chunks of a video segment have arrived late and may utilize the current manifest file to request the video segment from the POI Content Server (i.e., as a “fallback” feed location).

[0059] Como cada nó busca ligar-se a um canal disponibilizado pelo Servidor de Conteúdo POI, o nó determina (com assistência do Servidor de Broadcast Virtual, em outra realização) o ASN específico no qual reside aquele nó. O Servidor de Broadcast Virtual utiliza essa informação de “local de ASN”, em conjunto com um “Mapa de Interconexão de ASN” da Internet (incluindo ASNs e suas diversas interconexões de pontos de peer) e diversas medidas de desempenho monitoradas para otimizar o roteamento do conteúdo de canal entre as redes sobrepostas que são reconfiguradas dinamicamente com base em previsões dos níveis de congestionamento nesses pontos de peer de ASN. Em outra realização, o Servidor de Broadcast Virtual também utiliza a localização geográfica de cada nó, além da sua localização ASN, para auxiliar nesse processo.[0059] As each node seeks to connect to a channel made available by the POI Content Server, the node determines (with assistance from the Virtual Broadcast Server, in another embodiment) the specific ASN in which that node resides. The Virtual Broadcast Server uses this “ASN location” information in conjunction with an “ASN Interconnection Map” of the Internet (including ASNs and their various peer interconnections) and various monitored performance measures to optimize routing of channel content between overlapping networks that are dynamically reconfigured based on predictions of congestion levels at these ASN peer points. In another embodiment, the Virtual Broadcast Server also uses the geographic location of each node, in addition to its ASN location, to assist in this process.

[0060] Em uma realização, a topologia das redes sobrepostas define os trajetos de roteamento de segmentos de vídeo entre os nós de observação e é reconfigurada dinamicamente (no todo ou em parte) para cada segmento de vídeo de um canal. Em outra realização, elas são reconfiguradas dinamicamente (no todo ou em parte) para cada pedaço de segmento de vídeo. Desta forma, a arquitetura da Internet (bem como os níveis de congestionamento previstos nos pontos de peer de ASN) é levada em consideração para determinar trajetos de roteamento ideais para cada segmento de vídeo de um canal de vídeo. Em outra realização, caso algumas ou todas as vias ao longo das redes sobrepostas sejam capazes de fornecer segmentos de vídeo em tempo (mesmo se essas vias não forem ideais), essas vias não são reconfiguradas até atingir-se um limite de congestionamento pré-definido ou até que outro problema suficientemente significativo seja identificado.[0060] In one embodiment, the topology of the overlay networks defines the routing paths of video segments between observation nodes and is dynamically reconfigured (in whole or in part) for each video segment of a channel. In another embodiment, they are dynamically reconfigured (in whole or in part) for each piece of video segment. In this way, the Internet architecture (as well as predicted congestion levels at ASN peer points) is taken into consideration to determine 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 are capable of delivering video segments in time (even if those paths are not ideal), those paths are not reconfigured until a predefined congestion threshold is reached. or until another sufficiently significant problem is identified.

[0061] Em uma realização, os nós de clientes monitoram questões de desempenho relativas, por exemplo, a problemas na chegada e problemas de QoS na Internet (incluindo congestionamento em pontos de peer de ASN), bem como congestionamento resultante da quantidade de espectadores simultâneos de um ou mais canais do próprio sistema de broadcast virtual. Eles monitoram o tempo necessário para entrar em contato com locais designados na Internet e em ASNs, bem como o tempo necessário para retransmitir segmentos de vídeo para outros nós. Medidas monitoradas pelos clientes são comunicadas para o Servidor de Broadcast Virtual para uso na tomada de decisões de roteamento dinâmico. Em uma realização, o Servidor de Broadcast Virtual inclui um “Servidor de Sinalização” para comunicar-se com nós de cliente por meio de protocolos WebSocket padrão.[0061] In one embodiment, the client nodes monitor performance issues relating to, for example, arrival issues and Internet QoS issues (including congestion at ASN peer points), as well as congestion resulting from the number of concurrent viewers of one or more channels of the virtual broadcast system itself. They monitor the time required to contact designated locations on the Internet and in ASNs, as well as the time required to relay video segments to other nodes. Measurements monitored by clients are communicated to the Virtual Broadcast Server for use in making dynamic routing decisions. In one embodiment, the Virtual Broadcast Server includes a “Signaling Server” for communicating with client nodes via standard WebSocket protocols.

[0062] Nós de clientes incluem opcionalmente um “Carregador” que permite aos usuários capturar um evento de vídeo e carregá-lo para o Servidor de Broadcast Virtual em tempo real. Como o trajeto de qualquer nó de cliente para o Servidor de Broadcast Virtual pode cruzar diversos ASNs, emprega-se um protocolo de “chuveiro” padrão para possibilitar o streaming do evento de vídeo e evitar o atraso ou bloqueio de pacotes em roteadores intermediários. Em uma realização, nós de clientes podem também pesquisar e observar eventos de “tendência” (denominados no presente “respingos”) por meio de um mecanismo de busca “Extrator de Respingos” no Servidor de Broadcast Virtual que identifica respingos e, com base em pesquisas de usuário, fornece aos usuários a capacidade de transmitir e observar eventos de tendência de toda a Internet que, de outra forma, não são disponibilizados por meio do Servidor de Conteúdo POI.[0062] Client nodes optionally include an “Uploader” that allows users to capture a video event and upload it to the Virtual Broadcast Server in real time. As the path from any client node to the Virtual Broadcast Server may cross several ASNs, a standard “shower” protocol is employed to enable streaming of the video event and avoid delay or blocking of packets at intermediate routers. In one embodiment, client nodes may also search and observe “trending” events (hereinafter referred to as “splashes”) through a “Splash Extractor” search engine on the Virtual Broadcast Server that identifies splashes and, based on user surveys, provides users with the ability to stream and observe trending events from across the Internet that are not otherwise available through the POI Content Server.

[0063] Mediante solicitação de ligação a um canal, os nós são classificados pelo Servidor de Broadcast Virtual com base nas suas capacidades de retransmissão (ou seja, sua amplitude de banda “acima no fluxo” confiável, que é deduzida de diversos fatores, incluindo o seu tipo de conexão (por exemplo, celular 3G ou 4G, WiFi, LAN etc.), bem como suas configurações de CPU, sistema operacional, navegador e memória, bem como outras medidas de desempenho fixas e variáveis monitoradas ao longo do tempo. Em uma realização, os nós são classificados em três níveis com base na sua capacidade de retransmissão correspondente. Os nós de nível mais baixo (nós “C”) podem observar segmentos de vídeo, mas não podem retransmiti-los para outros nós. Os nós de nível intermediário (nós “B”) podem observar e retransmitir segmentos de vídeo em um ASN. Os nós de nível mais alto (nós “A”) podem observar e retransmitir segmentos de vídeo para outros nós A, tanto dentro quanto através de ASNs.[0063] Upon request to join a channel, nodes are ranked by the Virtual Broadcast Server based on their retransmission capabilities (i.e., their reliable “upstream” bandwidth, which is deduced from several factors, including your connection type (e.g. 3G or 4G cellular, WiFi, LAN, etc.), as well as your CPU, operating system, browser and memory settings, as well as other fixed and variable performance measures monitored over time. In one embodiment, nodes are classified into three levels based on their corresponding relay capability. The lowest-level nodes (“C” nodes) can observe video segments, but cannot relay them to other nodes. Intermediate-level nodes (“B” nodes) can observe and relay video segments within an ASN. Higher-level nodes (“A” nodes) can observe and relay video segments to other A nodes, both within and across ASNs. .

[0064] Em outra realização, classificações de nós podem ser dinamicamente alteradas, por exemplo, com base em medidas de desempenho monitoradas e nas necessidades atuais do sistema para mais ou menos nós de retransmissão de uma dada classificação. Além disso, caso existam nós A suficientes em um ASN para retransmitir segmentos de vídeo, nó A pode ser denominado nó “B:A”, o que indica que ele será tratado como nó B, mas pode ser elevado para nó A, se necessário (por exemplo, se os nós A existentes deixarem o canal). Em uma realização, caso um nó individual exiba alteração significativa de desempenho (para mais ou para menos), o nó pode ser reclassificado (por exemplo, de nó B para nó C ou vice-versa) e, se e quando o problema for solucionado, ser restaurado para a sua classificação inicial.[0064] In another embodiment, node classifications may be dynamically changed, for example, based on monitored performance measures and current system needs for more or fewer relay nodes of a given classification. Additionally, if there are enough A nodes in an ASN to retransmit video segments, node A may be referred to as node “B:A”, which indicates that it will be treated as node B, but may be elevated to node A if necessary. (e.g. if existing A nodes leave the channel). In one embodiment, if an individual node exhibits a significant change in performance (up or down), the node may be reclassified (e.g., from node B to node C or vice versa), and if and when the problem is resolved , be restored to its initial rank.

[0065] Em outra realização, os nós de clientes recebem diversos “slots” (com base, por exemplo, nas suas capacidades e nas medidas de desempenho dos clientes) para permitir que eles recebam e retransmitam os pedaços de segmentos de vídeo de e para diversos outros nós. Nesta realização, os nós de clientes recebem um segmento de vídeo de apenas um nó de “alimentação”, mas podem “alimentar” ou retransmitir aquele segmento de vídeo para diversos outros nós de clientes. Os nós são alocados a até oito slots de retransmissão, quatro para retransmissão para nós A no mesmo ASN e quatro para retransmissão para nós A em outros ASNs - ou seja, através de um ponto de peer de ASN. Nós B:A e B são alocados a até oito slots para retransmissão para outros nós de clientes (ou seja, outros nós B:A, B e C) dentro do seu ASN. Em outra realização, um nó de cliente pode ser “alimentado” por diversos outros nós de clientes (por exemplo, por pedaços alternados ao longo de diversos slots de entrada). Esta técnica pode ser empregada para streamings de vídeo em alta velocidade de bits (por exemplo, 4K) nos quais é necessário desempenho superior.[0065] In another embodiment, client nodes are assigned various "slots" (based, for example, on their capabilities and client performance measures) to allow them to receive and retransmit chunks of video segments to and from several other nodes. In this embodiment, client nodes receive a video segment from only one “feed” node, but can “feed” or retransmit that video segment to several other client nodes. Nodes are allocated up to eight relay slots, four for relaying to nodes A in the same ASN and four for relaying to nodes A in other ASNs - that is, through an ASN peer. Nodes B:A and B are allocated up to eight slots for relaying to other customer nodes (i.e., other nodes B:A, B, and C) within their ASN. In another embodiment, a client node may be “powered” by several other client nodes (e.g., by alternating chunks across several input slots). This technique can be employed for high bitrate video streaming (e.g. 4K) where higher performance is required.

[0066] Em outra realização, certos nós (com base, por exemplo, nas suas capacidades e medidas de desempenho de clientes) podem receber diversas resoluções de um segmento de vídeo de um único nó de alimentação (ou, em uma realização alternativa, receber diferentes resoluções de diferentes nós de alimentação). Caso a amplitude de banda desses nós acima no fluxo seja suficiente, eles podem ser considerados nós de “policast” e podem, conforme o necessário, também retransmitir ou alimentar essas múltiplas resoluções de um segmento de vídeo para um ou mais nós designados.[0066] In another embodiment, certain nodes (based, for example, on their capabilities and client performance measures) may receive multiple resolutions of a video segment from a single feeder node (or, in an alternative embodiment, receive different resolutions from different power nodes). If the bandwidth of these nodes upstream is sufficient, they may be considered “polycast” nodes and may, as necessary, also retransmit or feed these multiple resolutions of a video segment to one or more designated nodes.

[0067] Para facilitar a reconfiguração dinâmica das redes de retransmissão, o Servidor de Broadcast Virtual emprega um mecanismo de aprendizado profundo “Mapeador Profundo” que analisa continuamente as medidas de desempenho para prever o nível de congestionamento ao longo dos pontos de peer de ASN - ou seja, prever o nível de congestionamento de um ponto de peer ASN em pouco tempo (por exemplo, um minuto) no futuro. Em uma realização, é gerado um “valor de congestionamento” previsto para cada trajeto entre ASNs potencial entre nós A - por exemplo, de um nó A em um ASN para um nó A em outro ASN. Em outra realização, o valor de congestionamento reflete o nível previsto de congestionamento para o trajeto ideal entre cada par de nós A.[0067] To facilitate dynamic reconfiguration of relay networks, the Virtual Broadcast Server employs a “Deep Mapper” deep learning engine that continuously analyzes performance measurements to predict the level of congestion along ASN peer points - that is, predicting the congestion level of an ASN peer point at a short time (e.g., one minute) in the future. In one embodiment, a predicted “congestion value” is generated for each potential inter-ASN path between nodes A - for example, from a node A in one ASN to a node A in another ASN. In another embodiment, the congestion value reflects the predicted level of congestion for the ideal route between each pair of nodes A.

[0068] Em uma realização, o Servidor de Broadcast Virtual emprega um “Criador de Redes Sobrepostas” para gerar e reconfigurar dinamicamente (no todo ou em parte) redes sobrepostas entre ASNs e intra-ASN - determinando, por exemplo, trajeto ideal para segmentos de vídeo a serem transmitidos de um nó para outro dentro e através de ASNs. Nesta realização, o Criador de Redes Sobrepostas considera o número de slots disponíveis que cada nó pode utilizar, bem como o número de resoluções que cada nó pode receber ou retransmitir.[0068] In one embodiment, the Virtual Broadcast Server employs an “Overlay Network Creator” to dynamically generate and reconfigure (in whole or in part) inter-ASN and intra-ASN overlay networks - determining, for example, optimal path for segments of video to be transmitted from one node to another within and across ASNs. In this realization, the Overlay Network Creator considers the number of available slots that each node can use, as well as the number of resolutions that each node can receive or retransmit.

[0069] O Criador de Redes Sobrepostas gera e reconfigura dinamicamente (com assistência do Mapeador Profundo) uma rede sobreposta “Tronco de Dados Virtual” entre ASNs, que representa a topologia dos nós A. Em outras palavras, ele representa os nós A e os links ou trajetos de roteamento que o segmento de vídeo seguirá entre os nós A em e (particularmente) através de ASNs - ou seja, através de pontos de peer de ASN potencialmente congestionados.[0069] The Overlay Network Builder dynamically generates and reconfigures (with assistance from the Deep Mapper) a “Virtual Data Trunk” overlay network between ASNs, which represents the topology of A nodes. In other words, it represents A nodes and links or routing paths that the video segment will follow between nodes A in and (particularly) through ASNs - that is, through potentially congested ASN peer points.

[0070] O Tronco de Dados Virtual identifica o conjunto de nós A que serão instruídos a solicitar cada segmento de vídeo do Servidor de Conteúdo de POI mais próximo (utilizando, por exemplo, o arquivo de manifesto atual), bem como o conjunto de nós A aos quais cada um deles transmitirá aquele segmento de vídeo e assim por diante (tanto dentro quanto através dos ASNs). Como resultado, aquele segmento de vídeo será espalhado através de cada ASN que contenha um nó de observação. Para atingir cada nó de observação, o segmento pode também trafegar através de ASNs estruturais privados sem nós de observação.[0070] The Virtual Data Trunk identifies the set of nodes A that will be instructed to request each video segment from the nearest POI Content Server (using, for example, the current manifest file), as well as the set of nodes A to which each of them will transmit that video segment and so on (both within and across the ASNs). As a result, that video segment will be spread across every ASN that contains an observation node. To reach each observation node, the segment can also travel through private structural ASNs without observation nodes.

[0071] O Criador de Redes Sobrepostas também gera uma ou mais redes sobrepostas “em multidão” intra-ASN para retransmitir um segmento de vídeo de nós A em um ASN para os nós B:A, B e C naquele ASN. Essas redes sobrepostas em multidão podem ser dinamicamente reconfiguradas (no todo ou em parte) para cada segmento de vídeo (ou para cada pedaço de segmento de vídeo em uma realização alternativa). Em uma realização, cada rede sobreposta em multidão em um ASN representa uma topologia hierárquica (com relação a um nó A dentro do ASN) dos nós B:A, B e C que recebem, observam e retransmitem (com exceção dos nós C) o segmento de vídeo entre os nós daquela hierarquia em multidão.[0071] The Overlay Network Creator also generates one or more intra-ASN “crowd” overlay networks to relay a video segment from nodes A in an ASN to nodes B:A, B, and C in that ASN. These crowd-overlay networks can be dynamically reconfigured (in whole or in part) for each video segment (or for each piece of video segment in an alternative embodiment). In one embodiment, each crowd overlay network in an ASN represents a hierarchical topology (with respect to a node A within the ASN) of nodes B:A, B, and C that receive, observe, and relay (with the exception of nodes C) the video segment between the nodes of that crowd hierarchy.

[0072] Os métodos e o sistema de broadcast virtual de acordo com a presente invenção fazem uso eficiente da capacidade limitada em pontos de peer de ASN e outros pontos importantes de congestionamento por meio de monitoramento e análise do tráfego de rede para otimizar o roteamento de conteúdo digital entre os nós das redes sobrepostas em multidão e Tronco de Dados Virtual que são reconfiguradas dinamicamente com base em previsões dos níveis de congestionamento nesses pontos de congestionamento principais, de forma a manter QoE consistente entre os usuários do sistema.[0072] The virtual broadcast methods and system in accordance with the present invention make efficient use of limited capacity at ASN peer points and other major points of congestion by monitoring and analyzing network traffic to optimize network routing. digital content between nodes of Crowd Overlay and Virtual Data Trunk networks that are dynamically reconfigured based on predictions of congestion levels at these key congestion points, in order to maintain consistent QoE between system users.

Breve Descrição das FigurasBrief Description of Figures

[0073] A Fig. 1 é um gráfico que ilustra uma realização de redes sobrepostas de acordo com a presente invenção configuradas dinamicamente sobre a Internet.[0073] Fig. 1 is a graph illustrating an embodiment of overlay networks in accordance with the present invention dynamically configured over the Internet.

[0074] A Fig. 2 é um diagrama de bloco que ilustra uma realização de componentes do lado do cliente importantes de um dispositivo de streaming de vídeo de cliente de acordo com a presente invenção.[0074] Fig. 2 is a block diagram illustrating an embodiment of important client-side components of a client video streaming device in accordance with the present invention.

[0075] A Fig. 3 é um diagrama de bloco que ilustra uma realização de componentes do lado do servidor importantes de um servidor de broadcast virtual de acordo com a presente invenção.[0075] Fig. 3 is a block diagram illustrating an embodiment of important server-side components of a virtual broadcast server in accordance with the present invention.

[0076] A Fig. 4 é um fluxograma que ilustra uma realização de processo de streaming de vídeo dinâmico de acordo com a presente invenção.[0076] Fig. 4 is a flowchart illustrating an embodiment of a dynamic video streaming process in accordance with the present invention.

Descrição Detalhada da InvençãoDetailed Description of the Invention

[0077] Realizações detalhadas dos sistemas e métodos de acordo com a presente invenção são ilustradas nas Figuras anexas e descritas abaixo. Dever-se-á observar de início que a presente invenção não se limita às realizações específicas discutidas abaixo com referência às Figuras.[0077] Detailed realizations of the systems and methods according to the present invention are illustrated in the attached Figures and described below. It should be noted at the outset that the present invention is not limited to the specific embodiments discussed below with reference to the Figures.

[0078] Conforme indicado acima, embora seja descrita uma aplicação específica da presente invenção no contexto de fornecimento de streaming de vídeo via Internet para grandes quantidades de usuários simultâneos, os princípios da presente invenção aplicam-se igualmente em numerosos outros contextos em que a capacidade limitada de links compartilhados entre componentes de rede restringe o roteamento de qualquer tipo de conteúdo digital.[0078] As indicated above, although a specific application of the present invention is described in the context of providing streaming video via the Internet to large numbers of simultaneous users, the principles of the present invention apply equally in numerous other contexts in which the ability Limited number of shared links between network components restricts the routing of any type of digital content.

[0079] Mesmo dentro do contexto de fornecimento de streaming de vídeo via Internet, a alocação de funcionalidade entre nós clientes e componentes servidores descritos no presente é o resultado de compensações de projeto e grande parte dessa funcionalidade poderá ser realocada entre componentes do lado do cliente e do lado do servidor sem abandonar o espírito da presente invenção. De forma similar, a funcionalidade do lado do cliente poderá ser alocada a um único componente modular ou espalhado entre diversos componentes diferentes e poderá ser implementado como uma ou mais aplicações ou aplicativos móveis isolados ou como combinação de aplicações ou aplicativos isolados e Javascript ou outras linguagens de programação ou de script. Além disso, componentes do lado do servidor poderão ser implementados em um único servidor de hardware ou em diversos servidores diferentes. Essa funcionalidade poderá ser também integrada a um único módulo de software ou alocada a diferentes módulos de software espalhados ao longo de um ou mais servidores de hardware.[0079] Even within the context of providing video streaming via the Internet, the allocation of functionality between client nodes and server components described herein is the result of design tradeoffs and much of this functionality may be reallocated between client-side components and server-side without abandoning the spirit of the present invention. Similarly, client-side functionality may be allocated to a single modular component or spread across several different components and may be implemented as one or more standalone applications or mobile applications or as a combination of standalone applications or applications and Javascript or other languages. programming or scripting. Furthermore, server-side components can be implemented on a single hardware server or on several different servers. This functionality may also be integrated into a single software module or allocated to different software modules spread across one or more hardware servers.

[0080] Por fim, nas realizações em que são utilizados protocolos e bibliotecas padrão (por exemplo, HTTP, WebSocket, WebRTC, STUN e diversos padrões de streaming adaptativos), a funcionalidade fornecida por alguns ou todos esses protocolos e bibliotecas padrão poderá ser substituída por outras realizações padrão ou particulares, sem abandonar o espírito da presente invenção.[0080] Finally, in embodiments where standard protocols and libraries are used (e.g., HTTP, WebSocket, WebRTC, STUN, and various adaptive streaming standards), the functionality provided by some or all of these standard protocols and libraries may be replaced by other standard or particular embodiments, without abandoning the spirit of the present invention.

[0081] Redes sobrepostas:[0081] Overlapping networks:

[0082] A Fig. 1 é um gráfico que ilustra uma realização de Redes Sobrepostas 100 de acordo com a presente invenção mapeada sobre a Internet. Embora a Internet possa, por si própria, ser ilustrada em uma série de formas diferentes, a Fig. 1 ilustra a Internet como um conjunto de anéis de fibras ASN 110, interconectadas por meio de Pontos de Peer 120. Os nós de clientes individuais que assistem a um canal de vídeo específico a qualquer momento são ilustrados dentro de cada ASN 110. Embora não observados na Fig. 1, diversos canais e, portanto, diversos conjuntos de Redes Sobrepostas 100 poderão (em uma realização) ser simultaneamente ativos.[0082] Fig. 1 is a graph illustrating an embodiment of Overlay Networks 100 in accordance with the present invention mapped over the Internet. Although the Internet itself can be illustrated in a number of different forms, Fig. 1 illustrates the Internet as a set of rings of ASN fibers 110, interconnected through Peer Points 120. The individual customer nodes that watching a specific video channel at any time are illustrated within each ASN 110. Although not noted in Fig. 1, several channels and therefore several sets of Overlay Networks 100 may (in one embodiment) be simultaneously active.

[0083] Conforme observado acima, uma rede sobreposta de Tronco de Dados Virtual representa as interconexões 175 entre os nós A 130, tanto em um ASN 110 (conectado diretamente) quanto ao longo de ASNs 110 (ou seja, por meio de Pontos de Peer 120). O conector de cadeia principal 195 ilustra a interconexão de nós A entre dois ASNs 110, por meio de um ASN privado (não exibido) que não inclui nenhum nó comercial, mas simplesmente interconecta dois ASNs públicos 110. O conector de cadeia principal 195 é exibido, por exemplo, conectando um nó A 130 em ASN 110-f com um nó A 130 em ASN 110-e. Neste cenário, o tráfego entre dois nós A 130 pode trafegar ao longo de diversos Pontos de Peer “privados” 120 (ou outras conexões patenteadas com ASNs privados).[0083] As noted above, a Virtual Data Trunk overlay network represents interconnections 175 between A nodes 130, both within an ASN 110 (directly connected) and across ASNs 110 (i.e., via Peer Points 120). The main chain connector 195 illustrates the interconnection of A nodes between two ASNs 110, through a private ASN (not shown) that does not include any commercial nodes, but simply interconnects two public ASNs 110. The main chain connector 195 is shown , for example, connecting a node A 130 in ASN 110-f with a node A 130 in ASN 110-e. In this scenario, traffic between two A nodes 130 may travel over several “private” Peer Points 120 (or other proprietary connections with private ASNs).

[0084] Conforme indicado acima, em uma realização, o desempenho dessas conexões pode ser monitorado apenas nos pontos finais (ou seja, os dois nós A 130), como é o caso com as conexões 175 entre os nós A 130 em dois ASNs públicos diferentes 110 (ou seja, por meio de Ponto de Peer 120). O tráfego ao longo de uma conexão 175 entre dois nós A 130 no mesmo ASN 110 provavelmente será relativamente mais rápido que o tráfego ao longo dos ASNs 110, pois ele não atravessa um Ponto de Peer 120 potencialmente congestionado. Embora o conector de fundo 195 e as conexões 175 de/para nós A 130 sejam ilustrados como setas de um sentido, eles refletem apenas trajetos de roteamento unidirecional atuais, apesar do fato de que a conectividade bidirecional é sustentada entre todos os nós de clientes ilustrados na Fig. 1.[0084] As indicated above, in one embodiment, the performance of these connections may be monitored only at the endpoints (i.e., the two A nodes 130), as is the case with connections 175 between the A nodes 130 in two public ASNs different 110 (i.e. through Peer Point 120). Traffic along a connection 175 between two A nodes 130 on the same ASN 110 will likely be relatively faster than traffic along ASNs 110 because it does not traverse a potentially congested Peer Point 120. Although the bottom connector 195 and connections 175 to/from nodes 130 are illustrated as one-way arrows, they only reflect current unidirectional routing paths, despite the fact that bidirectional connectivity is sustained between all illustrated client nodes. in Fig. 1.

[0085] Dever-se-á observar que todo o tráfego entre quaisquer dois nós de clientes de acordo com a presente invenção atravessa a Internet pública e, portanto, passa através de diversos roteadores intermediários (não exibidos) que afetam a QoS. O sistema monitora os efeitos de QoS em um ASN 110 e ao longo de ASNs 110 (e, portanto, um ou mais Pontos de Peer 120). Em uma realização, esse tráfego entre ASNs e intra-ASN é monitorado por cada nó de cliente (por orientação do Servidor de Broadcast Virtual) e fornecido para o Servidor de Broadcast Virtual para reconfiguração dinâmica dos nós e trajetos de roteamento representados por Redes Sobrepostas 100 (incluindo a rede sobreposta do Tronco de Dados Virtual entre os nós A 130 e as redes sobrepostas em multidão de cada nó A 130 em um ASN 110 para os nós B (e B:A) 140 e nós C 150 naquele ASN 110).[0085] It should be noted that all traffic between any two client nodes in accordance with the present invention traverses the public Internet and therefore passes through a number of intermediate routers (not shown) that affect QoS. The system monitors the effects of QoS in an ASN 110 and across ASNs 110 (and therefore one or more Peer Points 120). In one embodiment, this inter-ASN and intra-ASN traffic is monitored by each client node (at the direction of the Virtual Broadcast Server) and provided to the Virtual Broadcast Server for dynamic reconfiguration of the nodes and routing paths represented by Overlay Networks 100 (including the Virtual Data Trunk overlay network between the A nodes 130 and the crowd overlay networks from each A node 130 in an ASN 110 to the B (and B:A) nodes 140 and C nodes 150 in that ASN 110).

[0086] A Fig. 1 ilustra os diversos trajetos de roteamento seguidos por um segmento de vídeo entre os nós de clientes, considerando um “estado atual” dessas Redes Sobrepostas 100. Em outras palavras, ela ilustra uma topologia atual dessas Redes Sobrepostas 100 que, em uma realização, podem ser reconfiguradas dinamicamente para cada segmento de vídeo (e, em uma realização alternativa, para cada pedaço de um segmento de vídeo). Dever-se-á observar que, para qualquer segmento de vídeo específico, Redes Sobrepostas 100 podem ou não ser reconfiguradas (no todo ou em parte), pois essa decisão dependerá, ao menos em parte, das medidas de desempenho reunidas ao longo do tempo.[0086] Fig. 1 illustrates the various routing paths followed by a video segment between client nodes, considering a “current state” of these Overlay Networks 100. In other words, it illustrates a current topology of these Overlay Networks 100 that , in one embodiment, may be dynamically reconfigured for each video segment (and, in an alternative embodiment, for each chunk of a video segment). It should be noted that for any specific video segment, Overlay Networks 100 may or may not be reconfigured (in whole or in part), as this decision will depend, at least in part, on performance measures gathered over time. .

[0087] ASN 110-c ilustra um cenário no qual o Servidor de Conteúdo POI (não exibido) reside em um ASN 110-c ou perto dele (por exemplo, ao longo de um ou dois ASNs 110 diferentes) e responde a uma solicitação de HTTP para fornecer o segmento de vídeo atual para o nó A 130-a, a fim de iniciar o streaming de segmentos de vídeo em um canal ao longo das Redes Sobrepostas 100. Como se discutirá com mais detalhes abaixo, o Servidor de Conteúdo POI tipicamente fornecerá cada segmento de vídeo para diversos nós A solicitantes 130 no mesmo ASN 110 ou próximo e esses nós A 130, por sua vez, transmitirão o segmento de vídeo para diversos outros nós ao longo das Redes Sobrepostas 100, resultando em “redistribuição” de diversas cópias simultâneas de pedaços de segmentos de vídeo que são fornecidos para nós de clientes e deles retransmitidos a qualquer momento.[0087] ASN 110-c illustrates a scenario in which the POI Content Server (not shown) resides on or near an ASN 110-c (e.g., across one or two different ASNs 110) and responds to a request of HTTP to provide the current video segment to node A 130-a in order to begin streaming video segments on a channel over the Overlay Networks 100. As will be discussed in more detail below, the POI Content Server typically will provide each video segment to a number of requesting A nodes 130 on or near the same ASN 110 and these A nodes 130 will, in turn, transmit the video segment to a number of other nodes along the Overlay Networks 100, resulting in “redistribution” of multiple simultaneous copies of chunks of video segments that are provided to and retransmitted to us from clients at any time.

[0088] Neste cenário, o nó A 130-a retransmite o segmento de vídeo para dois outros nós A 130 - um em ASN 110-c e outro através de um Ponto de Peer 120 para o ASN 110-a. Conforme indicado acima, a rede sobreposta de Tronco de Dados Virtual representa os trajetos de roteamento que um segmento seguirá à medida que é retransmitido entre os nós A 130 em ASNs 110 e através deles. Neste cenário, portanto, o segmento de vídeo é retransmitido não apenas entre diversos nós A 130 no ASN 110-c, mas também do ASN 110-a ao longo de diversos Pontos de Peer 120 para diversos ASNs diretamente interconectados (ou seja, 110-a, 110-d, 110-f e 110-g), dos quais é adicionalmente retransmitido ao longo de diversos saltos da rede sobreposta de Tronco de dados virtual para outros ASNs 110.[0088] In this scenario, node A 130-a retransmits the video segment to two other nodes A 130 - one on ASN 110-c and the other via a Peer Point 120 to ASN 110-a. As indicated above, the Virtual Data Trunk overlay network represents the routing paths that a segment will follow as it is relayed between and across ASNs 110 between A nodes 130. In this scenario, therefore, the video segment is relayed not only between several A nodes 130 in ASN 110-c, but also from ASN 110-a over several Peer Points 120 to several directly interconnected ASNs (i.e., 110- a, 110-d, 110-f and 110-g), of which it is further relayed over several hops of the Virtual Data Trunk overlay network to other ASNs 110.

[0089] Como se explicará com mais detalhes abaixo, a quantidade de nós A 130 necessária em um ASN 110 dependerá de diversos fatores, tais como a quantidade de outros nós de observação de clientes naquele ASN 110, bem como suas capacidades relativas (conforme determinado pela sua classificação, número de slots abertos e medidas de desempenho monitorados ao longo do tempo). Os ASNs 110-b, 110-f, 110-i e 110-j, por exemplo, são ilustrados com apenas um nó A 130 cada um, muito embora eles possuam quantidades diferentes de outros nós de clientes para alimentar (compare o outro nó isolado em ASN 110-f com os diversos vários outros nós no ASN 110-i).[0089] As will be explained in more detail below, the number of A 130 nodes required in an ASN 110 will depend on several factors, such as the number of other customer observation nodes in that ASN 110, as well as their relative capabilities (as determined by its rating, number of open slots and performance measures monitored over time). ASNs 110-b, 110-f, 110-i, and 110-j, for example, are illustrated with just one node A 130 each, even though they have different numbers of other client nodes to feed (compare the other isolated node in ASN 110-f with the various other nodes in ASN 110-i).

[0090] Embora a amplitude de banda acima no fluxo monitorada de um nó seja um fator fundamental na determinação de quantos nós alimentará diretamente (ou seja, quantos slots de saída serão utilizados), é importante reconhecer que o comprimento da “cadeia” de nós em um ASN 110 (que retransmite um segmento de vídeo de um para o seguinte e assim por diante) é, em grande parte, irrelevante, considerando a rapidez com que essas retransmissões são realizadas (tipicamente, bem menos de 1 ms). O nó A isolado em ASN 110-i, por exemplo, que alimenta diretamente dois nós A em ASNs externos 110 (ASN 110-g e ASN 110-j), bem como dois nós B 130 no ASN 110-l, utiliza quatro slots de saída (que refletem amplitude de banda acima no fluxo monitorada relativamente alta nesta realização). Além disso, a cadeia longa de nós B 140 e nós C 150 que são alimentados indiretamente a partir do nó A isolado em ASN 110-i não é reflexo da sua amplitude de banda acima no fluxo.[0090] While the bandwidth upstream of a node's monitored flow is a key factor in determining how many nodes it will feed directly (i.e., how many output slots it will utilize), it is important to recognize that the length of the “chain” of nodes in an ASN 110 (which retransmits a video segment from one to the next, and so on) is largely irrelevant considering how quickly these retransmissions are performed (typically well under 1 ms). Isolated node A in ASN 110-i, for example, which directly feeds two A nodes in external ASNs 110 (ASN 110-g and ASN 110-j), as well as two B nodes 130 in ASN 110-l, uses four output (which reflect relatively high bandwidth amplitude above in the monitored flow in this embodiment). Furthermore, the long chain of nodes B 140 and nodes C 150 that are fed indirectly from the isolated node A in ASN 110-i is not reflective of its bandwidth upstream.

[0091] Em cada ASN 110, uma ou mais redes sobrepostas em multidão são geradas (dinamicamente reconfiguradas para cada segmento de vídeo nesta realização) para retransmitir o segmento de vídeo naquele ASN 110 de cada nó A (ou seja, o nó de “raiz” de uma rede sobreposta em multidão) para os vários nós B (e B:A) 140 e nós C 150 naquela rede sobreposta em multidão. Embora apenas uma rede sobreposta em multidão seja ilustrada no ASN 110-c (em comparação com duas redes sobrepostas em multidão ilustradas no ASN 110-h), a quantidade de redes sobrepostas em multidão geradas em cada ASN 110 (e topologia interna de cada rede sobreposta em multidão) dependerá de diversos fatores, tais como a quantidade de nós de observação de clientes naquele ASN 110, bem como medidas de desempenho históricas e atuais, número de slots abertos etc.[0091] In each ASN 110, one or more crowd overlay networks are generated (dynamically reconfigured for each video segment in this embodiment) to retransmit the video segment in that ASN 110 from each node A (i.e., the “root” node ” of a crowd overlap network) to the various B (and B:A) nodes 140 and C nodes 150 in that crowd overlap network. Although only one crowd overlap network is illustrated in ASN 110-c (compared to two crowd overlap networks illustrated in ASN 110-h), the number of crowd overlap networks generated in each ASN 110 (and internal topology of each network overlapping in crowd) will depend on several factors, such as the number of customer observation nodes on that ASN 110, as well as historical and current performance measures, number of open slots, etc.

[0092] Conforme indicado acima, um nó de cliente, tal como o nó A 130-b no ASN 110-b, pode receber um segmento de vídeo de diversos outros nós de clientes (neste caso, de dois outros nós A 130 em diferentes ASNs (110-a e 110-d)). Em uma realização, esses dois outros nós de alimentação alternados enviam pedaços do segmento de vídeo para o nó A 130-b por razões de desempenho - por exemplo, porque esses pedaços cruzam os Pontos de Peer 120, cujos níveis de congestionamento são monitorados continuamente, como será explicado com mais detalhes. Em outras realizações, isso pode ser realizado por motivo de redundância - por exemplo, porque a confiabilidade dos nós de alimentação pode ser questionável com base em medidas de desempenho históricas (independente ou adicionalmente ao congestionamento de Pontos de Peer 120.[0092] As indicated above, a client node, such as node A 130-b in ASN 110-b, may receive a video segment from several other client nodes (in this case, from two other nodes A 130 at different ASNs (110-a and 110-d)). In one embodiment, these two other alternate feeder nodes send chunks of the video segment to node A 130-b for performance reasons - for example, because these chunks intersect Peer Points 120, whose congestion levels are continuously monitored. as will be explained in more detail. In other embodiments, this may be accomplished for redundancy reasons - for example, because the reliability of power nodes may be questionable based on historical performance measures (independently of or in addition to Peer Point 120 congestion.

[0093] Os métodos por meio dos quais são monitoradas as medidas de desempenho, segmentos de vídeo são retransmitidos e as Redes Sobrepostas 100 são reconfiguradas dinamicamente são explorados com mais detalhes abaixo com relação à Fig. 4, após uma discussão de componentes importantes do lado do cliente (Fig. 2) e do lado do servidor (Fig. 3) que implementam esses métodos.[0093] The methods by which performance measures are monitored, video segments are retransmitted, and Overlay Networks 100 are dynamically reconfigured are explored in more detail below with respect to Fig. 4, following a discussion of important side components. client (Fig. 2) and server-side (Fig. 3) that implement these methods.

[0094] Dispositivo de streaming de vídeo de cliente:[0094] Client video streaming device:

[0095] Voltando à Fig. 2, o Dispositivo de Cliente 200 ilustra uma realização de componentes importantes de um dispositivo de streaming de vídeo de acordo com a presente invenção. O Dispositivo de Cliente 200 pode ser implementado na forma de computador desktop ou laptop, bem como smartphone ou outro dispositivo móvel, ou virtualmente qualquer outro dispositivo eletrônico de consumo capaz de manipular conteúdo de streaming, tal como streaming de vídeo. O Dispositivo de Cliente 200 inclui certos componentes de computação de hardware e software padrão e periféricos relacionados 210, incluindo uma CPU 212, memória 214, sistema operacional 216, adaptador de rede 217, visor 218 e câmera 219, que são bem conhecidos na técnica. O Dispositivo de Cliente 200 utiliza esses componentes e periféricos 210, em conjunto com certas Bibliotecas Padrão 220, para tornar-se um nó de rede e receber, exibir e retransmitir conteúdo de streaming de vídeo entre outros nós de rede do sistema de broadcast virtual de acordo com a presente invenção.[0095] Returning to Fig. 2, Client Device 200 illustrates an embodiment of important components of a video streaming device in accordance with the present invention. The Client Device 200 may be implemented in the form of a desktop or laptop computer, as well as a smartphone or other mobile device, or virtually any other consumer electronic device capable of handling streaming content, such as streaming video. Client Device 200 includes certain standard hardware and software computing components and related peripherals 210, including a CPU 212, memory 214, operating system 216, network adapter 217, display 218, and camera 219, which are well known in the art. Client Device 200 utilizes these components and peripherals 210, in conjunction with certain Standard Libraries 220, to become a network node and receive, display, and retransmit streaming video content between other network nodes of the virtual broadcast system. according to the present invention.

[0096] A presente invenção alavanca certas Bibliotecas Padrão 220 (também encontradas na maioria dos smartphones, bem como muitos outros dispositivos de computação) que implementam protocolos de rede e outras funcionalidades que podem ser empregadas para facilitar o streaming de conteúdo de vídeo entre os dispositivos. Conteúdo de vídeo pode, por exemplo, ser transmitido por streaming entre dois usuários de smartphones e exibido nos seus navegadores da Web móveis sem a necessidade de plugins. As bibliotecas padrão 220 incluem APIs WebRTC 222 (que possibilitam a comunicação entre browsers para transmissão de conteúdo de vídeo por streaming), diversas implementações de streaming adaptativo 224, tais como HLS, MPEG-Dash e Streaming Suave, entre outros (que permitem o ajuste automático de velocidades de bits de streaming para “adaptar-se” à detecção em tempo real de alterações da amplitude de banda de clientes e da capacidade de CPU), o protocolo WebSocket 226 (que possibilita comunicações entre cliente e servidor bidirecionais rápidas por meio de uma única conexão de TCP/IP) e HTTP 228 (para comunicações padrão menos frequentes entre servidores da Web e navegadores da Web de clientes).[0096] The present invention leverages certain Standard Libraries 220 (also found on most smartphones as well as many other computing devices) that implement network protocols and other functionality that can be employed to facilitate the streaming of video content between devices . Video content can, for example, be streamed between two smartphone users and displayed in their mobile web browsers without the need for plugins. The standard libraries 220 include WebRTC APIs 222 (which enable communication between browsers for streaming video content), various adaptive streaming implementations 224, such as HLS, MPEG-Dash and Smooth Streaming, among others (which allow tuning automatic streaming bitrates to “adapt” to real-time detection of changes in client bandwidth and CPU capacity), the WebSocket 226 protocol (which enables fast bidirectional client-server communications via a single TCP/IP connection) and HTTP 228 (for less frequent standard communications between web servers and client web browsers).

[0097] O dispositivo de cliente 200 também inclui um player padrão 232 (em uma realização, um player de vídeo padrão integrado a um navegador da Web HTML5 padrão 230) para observar ou executar conteúdo digital em streaming. Em outras realizações, o player padrão 232 é integrado a um aplicativo desktop ou aplicativo de smartphone independente. Uma vantagem de alavancar o navegador de Web HTML5 padrão 230 é o fato de que muitas das bibliotecas padrão 220 são projetadas para trabalhar com navegadores da Web e, portanto, não necessitam de plugins nem de outra funcionalidade específica que necessitaria de um aplicativo desktop ou aplicativo de smartphone independente.[0097] The client device 200 also includes a standard player 232 (in one embodiment, a standard video player integrated with 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 application. An advantage of leveraging the standard HTML5 Web browser 230 is the fact that many of the standard libraries 220 are designed to work with Web browsers and therefore do not require plugins or other specific functionality that a desktop application or application would require. of independent smartphone.

[0098] Além disso, os navegadores da Web também sustentam linguagens de script do lado do cliente, tais como Javascript, que é frequentemente utilizado para suplementar a funcionalidade de navegadores da Web padrão (fornecido, por exemplo, por um servidor Web padrão como parte de uma página da Web, sem necessitar de nenhum plugin de navegador de cliente). Em uma realização, os componentes importantes não padrão do dispositivo de cliente 200 (que incluem o comunicador 270, monitor de desempenho 240, receptor 250, retransmissor 260 e carregador 280) são implementados em Javascript e os conjuntos de conteúdo 255 são gerados e mantidos por aquele código em Javascript. Dever-se-á observar, entretanto, que alguns ou todos esses componentes podem ser implementados em outras linguagens de programação e em aplicações desktop ou aplicativos de smartphone independentes, sem abandonar o espírito da presente invenção.[0098] Additionally, Web browsers also support client-side scripting languages, such as Javascript, which is often used to supplement the functionality of standard Web browsers (provided, for example, by a standard Web server as part of of a web page, without requiring any client browser plugin). In one embodiment, the important non-standard components of the client device 200 (which include the communicator 270, performance monitor 240, receiver 250, relay 260, and loader 280) are implemented in Javascript and the content sets 255 are generated and maintained by that code in Javascript. It should be noted, however, that some or all of these components may be implemented in other programming languages and in standalone desktop applications or smartphone applications without departing from the spirit of the present invention.

[0099] As bibliotecas padrão 220 facilitam o streaming ponto a ponto (unicast) genérico de conteúdo, incluindo conteúdo de vídeo. Os componentes importantes não padrão do dispositivo de cliente 200 abordam os aspectos do lado do cliente da arquitetura de fornecimento de conteúdo digital implementada pelo sistema de broadcast virtual de acordo com a presente invenção. Em uma realização, um protocolo de streaming é construído sobre o WebRTC 222 em que o roteamento de conteúdo é centralizado por meio de arquitetura de servidor de cliente e o próprio conteúdo é transmitido por streaming de forma distribuída (empurrado de um nó para o outro) por meio de redes sobrepostas P2P dinamicamente reconfiguráveis.[0099] Standard libraries 220 facilitate generic point-to-point (unicast) streaming of content, including video content. The important non-standard components of the client device 200 address the client-side aspects of the digital content delivery architecture implemented by the virtual broadcast system in accordance with the present invention. In one embodiment, a streaming protocol is built on top of WebRTC 222 in which content routing is centralized via client-server architecture and the content itself is streamed in a distributed manner (pushed from one node to another). through dynamically reconfigurable P2P overlay networks.

[00100] Um usuário de dispositivo de cliente 200 pode encontrar em primeiro lugar um ou mais canais de conteúdo em diversas formas diferentes - por exemplo, por meio de links em um email ou página Web ou de uma aplicação desktop ou aplicativo de smartphone independente. Em uma realização, o servidor de broadcast virtual 300 (discutido com mais detalhes abaixo com relação à Fig. 3) fornece uma página Web HTML5 padrão com uma seleção de canais para o navegador da Web HTML5 230. Esta “página Web de canal” inclui código Javascript patenteado que é interpretado por um navegador da Web HTML5 230 para implementar a funcionalidade dos componentes não padrão do cliente de dispositivo 200, que inclui a comunicação com o servidor de sinalização 330, bem como com outros nós de clientes (utilizando, por exemplo, bibliotecas de WebRTC 222 e streaming adaptativo 224), bem como o recebimento, processamento e retransmissão de pedaços de segmentos de vídeo de e para esses nós.[00100] A user of client device 200 may first encounter one or more content channels in several different ways - for example, through links in an email or web page or from a standalone desktop application or smartphone application. In one embodiment, the virtual broadcast server 300 (discussed in more detail below with respect to Fig. 3) provides a standard HTML5 web page with a selection of channels to the HTML5 web browser 230. This “channel web page” includes patented Javascript code that is interpreted by an HTML5 web browser 230 to implement the functionality of the non-standard components of the device client 200, which includes communicating with the signaling server 330 as well as other client nodes (using e.g. , WebRTC libraries 222 and adaptive streaming 224 ), as well as receiving, processing, and retransmitting chunks of video segments to and from these nodes.

[00101] Ao clicar-se em um link de canal na página Web do canal, o usuário gera um pedido de ligação a um canal específico de conteúdo de vídeo que está sendo transmitido por streaming no momento ou, em outra realização, começará a transmitir por streaming em um momento posterior previamente definido (uma “solicitação de ligação”). O servidor de sinalização 330 do servidor de broadcast virtual 300 responde à solicitação de ligação tentando estabelecer conexão entre o WebSocket 226 e o dispositivo de cliente 200 por meio do comunicador 270. Como se discutirá com mais detalhes abaixo com relação à Fig. 3, o servidor de broadcast virtual 300 emprega o protocolo “STUN” 322 para descobrir o endereço de IP público do dispositivo de cliente 200 (por exemplo, atrás de um firewall NAT), de forma que o dispositivo de cliente 200 possa estabelecer uma conexão de WebSocket 226 com servidor de broadcast virtual 300 e conexões de WebRTC 222 a outros dispositivos de cliente 200 para receber e retransmitir conteúdo de vídeo.[00101] By clicking on a channel link on the channel's web page, the user generates a link request to a specific channel of video content that is currently streaming or, in another embodiment, will begin streaming via streaming at a previously defined later time (a “call request”). The signaling server 330 of the virtual broadcast server 300 responds to the connection request by attempting to establish connection between the WebSocket 226 and the client device 200 via the communicator 270. As will be discussed in more detail below with respect to Fig. 3, the virtual broadcast server 300 employs the “STUN” protocol 322 to discover the public IP address of client device 200 (e.g., behind a NAT firewall), so that client device 200 can establish a WebSocket connection 226 with virtual broadcast server 300 and WebRTC connections 222 to other client devices 200 to receive and retransmit video content.

[00102] Nas realizações discutidas no presente, o dispositivo de cliente 200 liga-se a apenas um canal de vídeo em qualquer dado momento. Em outras realizações, o dispositivo de cliente 200 pode ligar-se a diversos canais simultaneamente sem abandonar o espírito da presente invenção.[00102] In the embodiments discussed herein, the client device 200 connects to only one video channel at any given time. In other embodiments, client device 200 may connect to multiple channels simultaneously without departing from the spirit of the present invention.

[00103] O dispositivo de cliente 200 utiliza o comunicador 270 para comunicações bidirecionais com o servidor de sinalização 330 para facilitar rápidas trocas de mensagens, mantendo ao mesmo tempo uma única conexão de TCP/IP aberta. Como será discutido com mais detalhes abaixo, essas comunicações são empregadas para diversos propósitos, incluindo (i) fornecimento ao servidor de broadcast virtual 300 de informações iniciais relativas às capacidades do dispositivo de cliente 200 (por exemplo, sistema operacional, navegador da Web e tipo de conexão - 3G, 4G, WiFi, LAN etc.); (ii) ativação do servidor de broadcast virtual 300 para verificar a conectividade de nós de cliente para streaming entre nós de segmentos de vídeo por WebRTC 222 subsequente por meio de redes sobrepostas 100; e (iii) troca de informações de monitoramento dinâmico em tempo real (obtidas por meio do monitor de desempenho 240, conforme discutido abaixo) com o servidor de broadcast virtual 300.[00103] Client device 200 uses communicator 270 for bidirectional communications with signaling server 330 to facilitate rapid message exchanges while maintaining a single TCP/IP connection open. As will be discussed in more detail below, these communications are employed for a variety of purposes, including (i) providing the virtual broadcast server 300 with initial information regarding the capabilities of the client device 200 (e.g., operating system, web browser, and type connection - 3G, 4G, WiFi, LAN etc.); (ii) enabling virtual broadcast server 300 to verify connectivity of client nodes for inter-node streaming of subsequent WebRTC video segments 222 via overlay networks 100; and (iii) exchanging real-time dynamic monitoring information (obtained via performance monitor 240, as discussed below) with virtual broadcast server 300.

[00104] Em uma realização, esse código em Javascript contido na página Web do canal também analisa as capacidades do dispositivo de cliente 200 para determinar se é um nó C (que recebe segmentos de vídeo, mas não os retransmite para outros nós de clientes) e fornece essa informação para o servidor de sinalização 330. Em outras realizações, certas capacidades do dispositivo de cliente 200 são enviadas para o servidor de broadcast virtual 300, que determina se o dispositivo de cliente 200 é um nó C.[00104] In one embodiment, this Javascript code contained in the channel web page also analyzes the capabilities of the client device 200 to determine whether it is a C node (which receives video segments, but does not retransmit 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 sent to the virtual broadcast server 300, which determines whether the client device 200 is a C node.

[00105] Esse código Javascript também possibilita comunicações com o Servidor de Conteúdo POI 380 para administrar o recebimento de segmentos de vídeo pelo receptor 250 para execução pelo player padrão 232. Este processo é, de fato, uma extensão do cenário de streaming de vídeo ponto a ponto padrão, que alavanca a funcionalidade de streaming adaptativo 224 e WebRTC 222 padrão.[00105] This Javascript code also enables communications with the POI Content Server 380 to manage the receipt of video segments by the receiver 250 for execution by the standard player 232. This process is, in effect, an extension of the point video streaming scenario to standard point, which leverages standard adaptive streaming 224 and WebRTC 222 functionality.

[00106] Em uma realização, o navegador da Web padrão 230 interpreta o código Javascript particular da página Web do canal para solicitar arquivos de manifesto periodicamente, conforme descrito acima. Essas solicitações de HTTP padrão são dirigidas ao servidor de conteúdo POI 380, que fornece os arquivos de manifesto. O navegador da Web padrão 230 também alavanca as bibliotecas de streaming adaptativo 224 padrão para solicitar os próprios segmentos de vídeo dos locais especificados no arquivo de manifesto, incluindo versões com velocidade de bits mais alta ou mais baixa desses segmentos de vídeo, conforme discutido acima (por exemplo, ao detectar-se alteração da amplitude de banda).[00106] In one embodiment, the standard web browser 230 interprets the particular Javascript code of the channel web page to request manifest files periodically, as described above. These standard HTTP requests are directed to the POI 380 content server, which serves the manifest files. The standard web browser 230 also leverages the standard adaptive streaming libraries 224 to request its own video segments from the locations specified in the manifest file, including higher or lower bitrate versions of those video segments, as discussed above ( for example, when detecting a change in bandwidth).

[00107] Estas solicitações de segmentos de vídeo são interceptadas pelo código Javascript particular da página Web do canal, ou seja, porque cada segmento de vídeo é empurrado para o dispositivo de cliente 200 a partir de outro nó (alimentador) de redes sobrepostas 100 (eliminando a necessidade de que o dispositivo de cliente 200 inicie solicitação de “pull” de HTTP). Em uma realização (discutida com mais detalhes abaixo), o servidor de broadcast virtual 300 adiciona o dispositivo de cliente 200 às redes sobrepostas 100 (e, portanto, ao canal) pouco depois do recebimento da solicitação de ligação, de forma que um ou mais segmentos de vídeo iniciais sejam empurrados para o dispositivo de cliente 200, para permitir que ele inicie a execução do conteúdo de vídeo o mais breve possível.[00107] These requests for video segments are intercepted by the particular Javascript code of the channel's Web page, i.e., because each video segment is pushed to the client device 200 from another node (feeder) of overlay networks 100 ( eliminating the need for the client device 200 to initiate an HTTP pull request). In one embodiment (discussed in more detail below), the virtual broadcast server 300 adds the client device 200 to the overlay networks 100 (and thus the channel) shortly after receiving the connection request, such that one or more Initial video segments are pushed to the client device 200 to allow it to begin playing the video content as soon as possible.

[00108] À medida que o receptor 250 recebe pedaços de cada segmento de vídeo, ele gera conjuntos de conteúdo 255 para facilitar o recebimento e a execução dos segmentos de vídeo, bem como a retransmissão dos segmentos de vídeo (caso o dispositivo de cliente 200 não tenha um nó C designado) para outros nós de clientes. O receptor 250 gera um conjunto receptor 256 para compilar os pedaços em um segmento de vídeo completo, que é fornecido para o buffer de três segmentos mantido pelo player padrão 232. Se, mediante interceptação da solicitação HTTP de um segmento de vídeo, o receptor 250 determinar que o segmento de vídeo completo ainda não se encontra no conjunto receptor 256, o segmento de vídeo será solicitado de um local alternativo (ou “fallback”) especificado no arquivo de manifesto (ou seja, servidor de conteúdo POI 380). Do ponto de vista do player padrão 232, ele recebe segmentos de vídeo em resposta a solicitações HTTP padrão e desconhece que os segmentos de vídeo estão, na realidade, sendo empurrados para o dispositivo de cliente 200 por meio de redes sobrepostas 100.[00108] As the receiver 250 receives chunks of each video segment, it generates sets of content 255 to facilitate the receipt and execution of the video segments, as well as the retransmission of the video segments (if the client device 200 does not have a designated C node) to other client nodes. The receiver 250 generates a receiver set 256 to compile the chunks into a complete video segment, which is fed to the three-segment buffer maintained by the standard player 232. If, upon intercepting the HTTP request for a video segment, the receiver 250 determines that the complete video segment is not already in the receiver set 256, the video segment will be requested from an alternative location (or “fallback”) specified in the manifest file (i.e., POI content server 380). From the perspective of the standard player 232 , it receives video segments in response to standard HTTP requests and is unaware that the video segments are actually being pushed to the client device 200 via overlay networks 100 .

[00109] Além disso, em uma realização, o receptor 250 também alavanca bibliotecas de streaming adaptativo 224 para comunicar ao servidor de sinalização 330 (por meio do comunicador 270) a velocidade de bits que o dispositivo de cliente 200 pode manipular (independentemente se o player padrão 232 realiza essa solicitação de forma normal por meio do arquivo de manifesto). Caso o dispositivo de cliente 200 experimente queda significativa temporária da sua amplitude de banda (e, como resultado, um segmento de vídeo não chega ao conjunto receptor 256 antes de ser necessário), por exemplo, ele poderá solicitar um segmento de vídeo (fallback) ao servidor de conteúdo POI 380 e, em seguida, receber segmentos de vídeo subsequentes com resolução inferior por meio de redes sobrepostas 100. Quando a sua velocidade de bits retornar ao normal, ele poderá então receber segmentos de vídeo com resolução mais alta, como antes da ocorrência do problema.[00109] Additionally, in one embodiment, receiver 250 also leverages adaptive streaming libraries 224 to communicate to signaling server 330 (via communicator 270) the bit rate that client device 200 can handle (regardless of whether the default player 232 performs this request in the normal way via the manifest file). If the client device 200 experiences a significant temporary drop in its bandwidth (and as a result a video segment does not reach the receiver set 256 before it is needed), for example, it may request a video segment (fallback). to the POI content server 380 and then receive subsequent lower resolution video segments via overlay networks 100. When its bitrate returns to normal, it can then receive higher resolution video segments as before of the problem occurring.

[00110] Conforme indicado acima, em uma realização, o servidor de broadcast virtual 300 reconfigura dinamicamente as redes sobrepostas 100 para cada segmento de vídeo, incluindo redes sobrepostas de tronco de dados virtual (entre nós A em ASNs e através deles) e redes sobrepostas em multidão (de cada nó A em um ASN para outros nós naquele ASN). A menos que o dispositivo de cliente 200 seja classificado como nó C (que recebe segmentos de vídeo, mas não os retransmite para outros nós de clientes), o retransmissor 260 receberá instruções do servidor de broadcast virtual 300 (com relação a cada segmento de vídeo do canal de vídeo, se ligado) com relação ao(s) nó(s) ao(s) qual(is) retransmitirá aquele segmento de vídeo. Conforme discutido acima com referência à Fig. 1, caso o dispositivo de cliente 200 seja um nó A, B:A ou B, pode-se solicitar a ele a retransmissão do segmento de vídeo para diversos outros nós de clientes.[00110] As indicated above, in one embodiment, virtual broadcast server 300 dynamically reconfigures overlay networks 100 for each video segment, including virtual data trunk overlay networks (between nodes A in and across ASNs) and overlay networks in crowd (from each node A in an ASN to other nodes in that ASN). Unless the client device 200 is classified as a C node (which receives video segments but does not retransmit them to other client nodes), the relay 260 will receive instructions from the virtual broadcast server 300 (with respect to each video segment of the video channel, if connected) with respect to the node(s) to which it will retransmit that video segment. As discussed above with reference to Fig. 1, if the client device 200 is a node A, B:A or B, it may be requested to retransmit the video segment to several other client nodes.

[00111] O comprimento dos segmentos de vídeo (por exemplo, de um a dez segundos) é definido pelo fornecedor do conteúdo de vídeo de acordo com padrões de streaming adaptativo 224. O retransmissor 260 retransmitirá o segmento de vídeo para cada nó de cliente de destino designado empurrando pedaços de acordo com o componente “Canal RTCData” do padrão WebRTC 222 (que não define um protocolo de sinalização).[00111] The length of the video segments (e.g., one to ten seconds) is defined by the video content provider in accordance with adaptive streaming standards 224. Relay 260 will retransmit the video segment to each video client node. designated destination pushing chunks according to the “RTCData Channel” component of the WebRTC 222 standard (which does not define a signaling protocol).

[00112] Em uma realização, cada segmento de vídeo é dividido em pedaços de 64 kB para coincidir com o tamanho de um datagrama UDP (“pacote”) para eficiência máxima quando transmitido por meio do protocolo de transporte MPEG2. O dispositivo de cliente 200 envia e recebe “pacotes” de UDP, um pedaço de cada vez (retornando para TCP quando necessário, de acordo com o padrão WebRTC 222). Um segmento de vídeo de um segundo, por exemplo, conteria cerca de 625 pedaços (considerando um codificador H.264 de 1080p, que gera cerca de 5000 kbps).[00112] 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 transmitted via the MPEG2 transport protocol. The client device 200 sends and receives UDP “packets” one piece at a time (falling back to TCP when necessary, in accordance with the WebRTC standard 222). A one-second video segment, for example, would contain about 625 chunks (assuming a 1080p H.264 encoder, which outputs about 5000 kbps).

[00113] À medida que o receptor 250 recebe pedaços de cada segmento de vídeo, ele faz com que o conjunto receptor 256 compile esses pedaços e construa segmentos de vídeo completos. O retransmissor 260 gera o conjunto retransmissor 257 para compilar esses pedaços com o propósito de enviá-los (retransmiti-los) para nós de clientes de destino designados. Desta forma, o conjunto retransmissor 257 age como tampão para pedaços recebidos e enviados de um segmento de vídeo. Como será discutido abaixo, o monitor de desempenho 240 rastreia o tempo necessário para transmitir por streaming o segmento de vídeo completo para cada nó de cliente de destino designado e relata essa medida de volta para o servidor de broadcast virtual 300 (para uso subsequente na reconfiguração dinâmica de redes sobrepostas 100).[00113] As receiver 250 receives chunks of each video segment, it causes receiver assembly 256 to compile those chunks and construct complete video segments. Relay 260 generates relay assembly 257 to compile these chunks for the purpose of sending (relaying) them to designated target client nodes. In this way, the relay assembly 257 acts as a buffer for received and sent pieces of a video segment. As will be discussed below, performance monitor 240 tracks the time required to stream the complete video segment to each designated target client node and reports this measurement back to virtual broadcast server 300 (for subsequent use in reconfiguration). dynamics of overlapping networks 100).

[00114] Em uma realização, um nó de cliente receptor recebe um segmento de vídeo de um único nó de alimentação, tal como o dispositivo de cliente 200. Em outra realização, diversos nós de alimentação potenciais são selecionados pelo servidor de broadcast virtual 300 e comunicam-se entre si para negociar os “dois principais” candidatos (por exemplo, com base na amplitude de banda atual ou outras medidas de desempenho monitoradas) e, em seguida, enviar pedaços alternados para o nó de cliente receptor designado.[00114] In one embodiment, a receiving client node receives a video segment from a single feeder node, such as client device 200. In another embodiment, several potential feeder nodes are selected by the virtual broadcast server 300 and communicate with each other to negotiate the “top two” candidates (for example, based on current bandwidth or other monitored performance measures) and then send alternating chunks to the designated receiving client node.

[00115] Em outra realização, diversas resoluções diferentes (por exemplo, 1080p, 720p e 480p) de cada segmento de vídeo são empurradas entre nós A e o servidor de broadcast virtual 300 informa ao nó A na raiz de cada rede sobreposta em multidão qual dessas resoluções deve ser transmitida para os outros nós naquela rede sobreposta em multidão (por exemplo, com base nas capacidades desses outros nós, conforme discutido com mais detalhes abaixo).[00115] In another embodiment, several different resolutions (e.g., 1080p, 720p, and 480p) of each video segment are pushed between nodes A and the virtual broadcast server 300 informs node A at the root of each overlapping crowd network which of these resolutions must be transmitted to the other nodes in that overlay crowd network (e.g., based on the capabilities of those other nodes, as discussed in more detail below).

[00116] Durante o tempo em que o receptor 250 está recebendo os pedaços de um segmento de vídeo para execução e o retransmissor 260 está transmitindo por streaming esses pedaços para outros nós de clientes designados, o monitor de desempenho 240 reúne diversas medidas de desempenho dinâmico estáticas e em tempo real, conforme informado pelo servidor de broadcast virtual 300, e fornece continuamente essas medidas de volta para o servidor de broadcast virtual 300 por meio do servidor de sinalização 330.[00116] During the time that receiver 250 is receiving chunks of a video segment for execution and relay 260 is streaming those chunks to other designated client nodes, performance monitor 240 gathers various dynamic performance measurements static and real-time measurements as reported by virtual broadcast server 300, and continuously provides these measurements back to virtual broadcast server 300 via signaling server 330.

[00117] Conforme indicado acima, essas medidas são utilizadas pelo servidor de broadcast virtual 300 para reconfigurar dinamicamente as redes sobrepostas 100, a fim de otimizar o roteamento do segmento de vídeo seguinte. Particularmente, as medidas de desempenho são utilizadas para classificar e reclassificar nós de clientes, alocar e desalocar slots para retransmissão de segmentos de vídeo para outros nós de clientes, determinar quais resoluções de segmentos de vídeo podem ser recebidas e retransmitidas para outros nós de clientes e, por fim, modificar um subconjunto dos trajetos de roteamento entre os nós de clientes quando as redes sobrepostas 100 forem dinamicamente reconfiguradas. A forma precisa em que essas medidas de desempenho são utilizadas pelo servidor de broadcast virtual 300 será discutida com mais detalhes abaixo com relação à Fig. 3.[00117] As indicated above, these measurements are used by the virtual broadcast server 300 to dynamically reconfigure the overlay networks 100 in order to optimize the routing of the next video segment. In particular, performance measures are used to classify and reclassify client nodes, allocate and deallocate slots for retransmitting video segments to other client nodes, determine what resolutions of video segments can be received and retransmitted to other client nodes, and , finally, modify a subset of the routing paths between customer nodes when the overlay networks 100 are dynamically reconfigured. The precise way in which these performance measures are utilized by the virtual broadcast server 300 will be discussed in more detail below with respect to Fig. 3.

[00118] Medidas de desempenho estáticas, tais como o tipo de sistema operacional, navegador e conexão (por exemplo, celular 3G ou 4G, WiFi, LAN etc.) não são propensas a alterações frequentes e são tipicamente relatadas para o servidor de sinalização 330 somente mediante solicitação inicial de ligação pelo dispositivo de cliente 200 (embora elas sejam relatadas no caso de alteração - por exemplo, alteração da conexão de celular de 3G para 4G).[00118] Static performance measurements such as operating system type, browser, and connection (e.g., 3G or 4G cellular, WiFi, LAN, etc.) are not prone to frequent changes and are typically reported to signaling server 330 only upon initial connection request by the client device 200 (although they will be reported in the event of a change - for example, changing the cellular connection from 3G to 4G).

[00119] Embora informações dinâmicas possam ser coletadas e relatadas de forma contínua (ou seja, à medida que são reunidas), diversas compensações são levadas em conta em uma realização para garantir que o “cabeçalho” (frequência de monitoramento e relato dessas medidas dinâmicas para o servidor de sinalização 330) não afete o “payload” ou desempenho do fornecimento do próprio vídeo (ou seja, o streaming de pedaços de e para o dispositivo de cliente 200). Em uma realização, essas medidas são utilizadas unicamente para o segmento de vídeo seguinte, enquanto, em outras realizações, podem ser realizadas alterações para o pedaço seguinte (ou diversos pedaços) durante o fornecimento do segmento de vídeo atual.[00119] Although dynamic information can be collected and reported on an ongoing basis (i.e., as it is gathered), several trade-offs are taken into account in a realization to ensure that the “headline” (frequency of monitoring and reporting these dynamic measures to the signaling server 330) does not affect the payload or performance of the delivery of the video itself (i.e., the streaming of chunks to and from the client device 200). In one embodiment, these measurements are used solely for the next video segment, while in other embodiments, changes may be made for the next chunk (or multiple chunks) while delivering the current video segment.

[00120] Em uma realização, são realizados dois tipos de monitoramento de desempenho dinâmico. O primeiro envolve tempos de “ping” (ou outras medidas similares) para locais conhecidos na Internet (por exemplo, para um servidor Web da Yahoo, servidor de broadcast virtual etc.), tanto dentro quanto através do ASN no qual reside o dispositivo de cliente 200. Individualmente, essas medidas fornecem indicações do desempenho do dispositivo de cliente 200, enquanto coletivamente eles fornecem indicações adicionais de QoS, no ASN no qual reside o dispositivo de cliente 200 e ao longo dos ASNs por meio de pontos de peer específicos. Embora a rede sobreposta de tronco de dados virtual (entre os nós A) possui preocupação relativamente maior (devido ao congestionamento em pontos de peer), o congestionamento em ASN também é relevante (ele poderá, por exemplo, exigir reconfiguração dinâmica de pelo menos parte de uma ou mais das redes sobrepostas em multidão dentro do ASN).[00120] In one embodiment, two types of dynamic performance monitoring are performed. The first involves “ping” times (or other similar measurements) to known locations on the Internet (e.g., to a Yahoo Web server, virtual broadcast server, etc.), both within and across the ASN in which the device resides. client 200. Individually, these measurements provide indications of the performance of the client device 200, while collectively they provide additional indications of QoS, within the ASN in which the client device 200 resides and across the ASNs through specific peer points. Although the virtual data trunk overlay network (between nodes A) is of relatively greater concern (due to congestion at peer points), congestion in ASN is also relevant (it may, for example, require dynamic reconfiguration of at least part of one or more of the crowd overlapping networks within the ASN).

[00121] O outro tipo de monitoramento de desempenho dinâmico envolve o tempo total necessário para retransmitir um segmento de vídeo de um nó de cliente para outro. Em uma realização, cada nó (diferente de nós C) registra o tempo “inicial” quando enviou o primeiro pedaço de um segmento de vídeo para um nó de cliente de destino designado, bem como o tempo de “parada” após o recebimento do último pedaço daquele segmento de vídeo (por exemplo, porque o padrão WebRTC 222 fornece verificações de cada pacote). O monitor de desempenho 240 envia esse tempo total (para cada segmento de vídeo que envia) para o servidor de sinalização 330. Essa medida pode também fornecer indicações não apenas com relação ao desempenho individual do dispositivo de cliente 200, mas também o nível de congestionamento no seu ASN e através de ASNs (por exemplo, se o dispositivo de cliente 200 for um nó A que alimenta outro nó A através de um ponto de peer de ASN).[00121] The other type of dynamic performance monitoring involves the total time required to retransmit a video segment from one client node to another. In one embodiment, each node (other than C nodes) records the “start” time when it sent the first chunk of a video segment to a designated destination client node, as well as the “stop” time after receiving the last chunk of that video segment (for example, because the WebRTC 222 standard provides checks for each packet). Performance monitor 240 sends this total time (for each video segment it sends) to signaling server 330. This measurement can also provide indications regarding not only the individual performance of client device 200, but also the level of congestion in its ASN and across ASNs (e.g., if the client device 200 is a node A that feeds another node A through an ASN peer point).

[00122] Em uma realização, o usuário do dispositivo de cliente 200 pode também ser a origem do conteúdo de vídeo. Na maior parte dos casos, esse cenário resulta da qualidade sempre crescente de câmeras de smartphone (tais como a câmera 219), que permitem aos usuários capturar eventos de vídeo “em qualquer lugar, a qualquer momento”. Também é possível, entretanto, que os usuários de computadores desktop ou laptop, bem como de smartphones, também obtenham eventos de vídeo pré-gravados de outras fontes.[00122] In one embodiment, the user of client device 200 may also be the source of the video content. In most cases, this scenario results from the ever-increasing quality of smartphone cameras (such as camera 219), which allow users to capture video events “anywhere, anytime.” It is also possible, however, for users of desktop or laptop computers, as well as smartphones, to also obtain pre-recorded video events from other sources.

[00123] O problema é que o dispositivo de cliente 200 deve, de alguma forma, transmitir o seu conteúdo de vídeo por streaming via Internet para o servidor de broadcast virtual 300, que pode estar a muitos saltos de distância ao longo de diversos ASNs. O carregador 280 aborda este problema por meio de um protocolo de “chuveiro” particular projetado para evitar atraso ou bloqueio dos pacotes de UDP em roteadores intermediários. Em uma realização, o carregador 280 é implementado por meio de um aplicativo de smartphone dedicado no dispositivo de cliente 200, em vez de depender da funcionalidade Javascript do lado do cliente mais limitada.[00123] The problem is that the client device 200 must somehow stream its video content via the Internet to the virtual broadcast server 300, which may be many hops away over several ASNs. Loader 280 addresses this problem through a particular “shower” protocol designed to avoid delaying or blocking UDP packets at intermediate routers. In one embodiment, the loader 280 is implemented via a dedicated smartphone application on the client device 200, rather than relying on more limited client-side Javascript functionality.

[00124] Para implementar esse protocolo de chuveiro, o carregador 280 estabelece uma conexão de TCP/IP com servidor de broadcast virtual 300 e emprega “pulsos” de UDP para fornecer os maiores tamanhos de pacote de IP disponíveis (“unidade máxima de transmissão” ou MTU). Além disso, fluxos de UDP contínuos (sejam eles enviados por meio de uma porta de roteador isolada ou distribuídos ao longo de diversas portas roteadoras) serão frequentemente detectados por roteadores intermediários como ataque de “negação de serviço” (DOS) e, portanto, bloqueados. Além disso, esses fluxos de UDP podem superar a memória alocada do roteador (por exemplo, uma fila de FIFO), pois os roteadores tipicamente alocam memória para pacotes de UDP (ao contrário dos pacotes de TCP mais comuns) somente enquanto estiverem sendo recebidos.[00124] To implement this shower protocol, loader 280 establishes a TCP/IP connection with virtual broadcast server 300 and employs UDP “pulses” to provide the largest available IP packet sizes (“maximum transmission unit”). or MTU). Additionally, continuous UDP streams (whether sent through an isolated router port or distributed across multiple router ports) will often be detected by intermediate routers as a “denial of service” (DOS) attack and therefore blocked. . Additionally, these UDP streams can overwhelm the router's allocated memory (for example, a FIFO queue), because routers typically allocate memory for UDP packets (as opposed to the more common TCP packets) only while they are being received.

[00125] Para abordar esses obstáculos, o carregador 280 não apenas distribui pacotes de UDP entre diversas portas (por exemplo, seis portas em uma realização), mas também retarda os pacotes enviados em qualquer porta individual para evitar a detecção como ataque de DOS. Em uma realização, o atraso em cada porta é suficientemente longo para evitar a detecção como ataque de DOS e suficientemente longo para permitir que os roteadores aloquem memória suficiente, mas suficientemente curto para evitar que sejam percebidos como o final de um fluxo de UDP (o que faria com que o roteador suspendesse a alocação de memória para pacotes de UDP e, essencialmente, “jogaria fora”).[00125] To address these obstacles, loader 280 not only distributes UDP packets among multiple ports (e.g., six ports in one embodiment), but also slows down packets sent on any individual port to avoid detection as a DOS attack. In one embodiment, the delay on each port is long enough to avoid detection as a DOS attack and long enough to allow routers to allocate enough memory, but short enough to avoid being perceived as the end of a UDP stream (the which would cause the router to suspend memory allocation for UDP packets and essentially “throw them away”).

[00126] Como o carregador 280 fornece cada segmento de vídeo para o servidor de broadcast virtual 300 desta forma, o servidor de broadcast virtual 300 gera em seguida um canal para redistribuir esse conteúdo de vídeo ao longo de redes sobrepostas 100, como se houvesse sido recebido de um CDN mais tradicional. Em outra realização, o servidor de broadcast virtual 300 emprega esse protocolo de chuveiro particular nos cenários com relativamente pouca frequência, em que é a fonte de ponto de origem de fallback de um segmento de vídeo para um nó de cliente cujo segmento de vídeo atual não chegou em tempo ao longo das redes sobrepostas 100.[00126] As loader 280 delivers each video segment to virtual broadcast server 300 in this manner, virtual broadcast server 300 then generates a channel to redistribute this video content across overlapping networks 100, as if it had been received from a more traditional CDN. In another embodiment, the virtual broadcast server 300 employs this particular shower protocol in the relatively infrequently used scenarios where it is the fallback point source of a video segment to a client node whose current video segment is not arrived in time over 100 overlapping networks.

[00127] Servidor de broadcast virtual:[00127] Virtual broadcast server:

[00128] A Fig. 3 ilustra uma realização de componentes do lado do servidor chave de um servidor de broadcast virtual 300 de acordo com a presente invenção. Conforme indicado acima, embora os componentes do servidor de broadcast virtual 300 sejam ilustrados em um servidor de hardware físico isolado, a funcionalidade desses componentes pode ser realocada entre diversos dispositivos de hardware físicos diferentes e diferentes módulos de software sem abandonar o espírito da presente invenção.[00128] Fig. 3 illustrates an embodiment of key server-side components of a virtual broadcast server 300 in accordance with the present invention. As indicated above, although the components of the virtual broadcast server 300 are illustrated on an isolated physical hardware server, the functionality of these components can be reallocated among several different physical hardware devices and different software modules without departing from the spirit of the present invention.

[00129] O servidor de broadcast virtual 300 inclui certas funcionalidades padrão, tais como o HW/SW padrão 310, encontrado na maior parte dos servidores de hardware - por exemplo, CPU 312, memória 314, sistema operacional 316, adaptador de rede 317 e visor 318. Em certas realizações, o servidor de broadcast virtual 300 também alavanca bibliotecas padrão 320, que podem incluir, por exemplo, (i) o protocolo STUN 322 (Session Traversal Utilities for NAT), que possibilita a descoberta de endereços de IP públicos de dispositivos de clientes 200 atrás de um firewall NAT, de forma que os nós de clientes possam enviar e receber vídeo de e para outros nós de clientes, além de estabelecer conexões com o servidor de broadcast virtual 300; (ii) o protocolo WebSocket 326, que possibilita comunicações entre cliente e servidor bidirecionais rápidas por meio de uma única conexão TCP/IP; e (iii) HTTP 328, que é empregado para comunicações padrão menos frequentes com navegadores da Web clientes, tais como o navegador da Web HTML5 padrão 230.[00129] The virtual broadcast server 300 includes certain standard features, such as the standard HW/SW 310, found in most hardware servers - e.g., CPU 312, memory 314, operating system 316, network adapter 317 and display 318. In certain embodiments, the virtual broadcast server 300 also leverages standard libraries 320, which may include, for example, (i) the STUN 322 (Session Traversal Utilities for NAT) protocol, which enables discovery of public IP addresses of client devices 200 behind a NAT firewall, so that the client nodes can send and receive video to and from other client nodes, in addition to establishing connections to the virtual broadcast server 300; (ii) the WebSocket 326 protocol, which enables fast bidirectional client-server communications through a single TCP/IP connection; and (iii) HTTP 328, which is employed for less frequent standard communications with client web browsers, such as the standard HTML5 web browser 230.

[00130] O servidor de broadcast virtual 300 não necessita sustentar WebRTC 222 e padrões de streaming adaptativo 224, pois não é um nó de cliente nas redes sobrepostas 100, muito embora ele analise continuamente medidas de desempenho obtidas de nós de clientes e reconfigure dinamicamente os trajetos de roteamento para os canais de conteúdo de vídeo distribuído entre os nós de cliente ao longo das redes sobrepostas 100.[00130] The virtual broadcast server 300 does not need to support WebRTC 222 and adaptive streaming standards 224 as it is not a client node in the overlay networks 100, even though it continually analyzes performance measurements obtained from client nodes and dynamically reconfigures the routing paths for the video content channels distributed among client nodes over the overlay networks 100.

[00131] O servidor de broadcast virtual 300 serve de ponto de origem de canal para as redes sobrepostas 100, particularmente para a rede sobreposta de tronco de dados virtual. Em uma realização, o servidor de conteúdo POI 380 designa um ou mais nós A próximos (preferencialmente no seu ASN, se possível) para emitir solicitações de HTTP de segmentos de vídeo. Esses nós A servem efetivamente de raiz da rede sobreposta de tronco de dados virtual e empurram cada segmento de vídeo para outros nós A dentro e através de ASNs e, por fim, para outros nós por meio das redes sobrepostas em multidão em cada ASN.[00131] The virtual broadcast server 300 serves as the channel source point for the overlay networks 100, particularly the virtual data trunk overlay network. In one embodiment, the POI content server 380 designates one or more nearby A nodes (preferably in their ASN, if possible) to issue HTTP requests for video segments. These A nodes effectively serve as the root of the virtual data trunk overlay network and push each video segment to other A nodes within and across ASNs, and ultimately to other nodes across the crowd overlay networks within each ASN.

[00132] Como será descrito com mais detalhes abaixo com referência ao servidor de conteúdo POI 380, essa funcionalidade de “origem de canal” não necessita do uso das bibliotecas de streaming adaptativo 224 e WebRTC 222 padrão que são dirigidas em streaming de vídeo de navegador para navegador. Conforme indicado acima, o servidor de conteúdo POI 380 também serve de fonte alternativa ocasional (fallback) de segmentos de vídeo para nós de clientes que não recebem o segmento de vídeo atual no tempo ao longo das redes sobrepostas 100. Esses nós de clientes emitem solicitações de HTTP às quais o servidor de conteúdo POI 380 responde enviando o segmento de vídeo solicitado.[00132] As will be described in more detail below with reference to the POI 380 content server, this “channel source” functionality does not require the use of the standard adaptive streaming 224 and WebRTC 222 libraries that are targeted at browser video streaming. for browser. As indicated above, the POI content server 380 also serves as an occasional fallback source of video segments for client nodes that do not receive the current video segment in time over the overlay networks 100. These client nodes issue requests to which the POI 380 content server responds by sending the requested video segment.

[00133] Conforme também indicado acima, o servidor de conteúdo POI serve de ponto de origem para todos os canais de vídeo (em uma realização), seja o conteúdo de vídeo obtido de um dispositivo de cliente 200 por meio do carregador 280 ou de um CDN mais tradicional (seja ele transmitido por streaming para o servidor de broadcast virtual 300 em tempo real ou fornecido antecipadamente para streaming posterior).[00133] As also indicated above, the POI content server serves as the point of origin for all video channels (in one embodiment), whether the video content is obtained from a client device 200 via loader 280 or from a More traditional CDN (either streamed to virtual broadcast server 300 in real time or provided in advance for later streaming).

[00134] O administrador de canais 385 é responsável pela configuração e manutenção de cada canal, enquanto o servidor de conteúdo POI 380 prepara o próprio conteúdo para streaming como canal para os nós de clientes. Em uma realização, o administrador de canal 385 gera e mantém a página Web do canal para fornecimento pelo servidor de conteúdo POI 380 via Internet e uso pelo servidor de sinalização 330 ao responder a solicitações de ligação de dispositivos de clientes 200 buscando ligação a um canal específico.[00134] The channel administrator 385 is responsible for configuring and maintaining each channel, while the POI content server 380 prepares the content itself for streaming as a channel to client nodes. In one embodiment, the channel administrator 385 generates and maintains the channel Web page for delivery by the POI content server 380 via the Internet and use by the signaling server 330 when responding to connection requests from client devices 200 seeking connection to a channel. specific.

[00135] Para fins de suporte, “console de suporte de espectador” é estabelecido e mantido pelo administrador de canal 385 para sustentar observadores individuais cujos dispositivos de clientes 200 estão experimentando problemas, bem como um “centro de execução” para monitoramento ao vivo de todos os canais de vídeo, de forma que possam ser abordados problemas específicos de canais e específicos de região (por exemplo, à medida que se acumulam chamadas de suporte de uma região geográfica específica). O monitoramento em tempo real de “análise de canais” também é mantido pelo administrador de canal 385 para fornecer dados úteis para essas funções de suporte, bem como para os produtores de conteúdo de vídeo (por exemplo, em um CDN). As análises incluem, por exemplo, medições em tempo real relativas ao estado atual de cada canal de vídeo e nós de rede ao longo das redes sobrepostas 100, bem como problemas na chegada e outros relativos a velocidades de bits de vídeo, pontos de congestionamento, latência de nós etc.[00135] For support purposes, “viewer support console” is established and maintained by channel administrator 385 to support individual observers whose client devices 200 are experiencing issues, as well as an “execution center” for live monitoring of all video channels so that channel-specific and region-specific issues can be addressed (for example, as support calls from a specific geographic region accumulate). Real-time “channel analytics” monitoring is also maintained by channel administrator 385 to provide useful data to these support functions as well as to producers of video content (e.g., in a CDN). Analyzes include, for example, real-time measurements relating to the current state of each video channel and network nodes across the 100 overlay networks, as well as on-arrival and other issues relating to video bit rates, congestion points, node latency etc.

[00136] Por fim, é fornecida funcionalidade de “administração de canal” para administrar os canais de vídeo e servir de interface com o servidor de sinalização 330, de forma que ele possua informações atuais necessárias para facilitar suas comunicações com dispositivos de clientes 200 (por exemplo, com relação à ligação a um canal, fornecimento de medidas de desempenho monitoradas por clientes, obtenção de roteamento e alterações de resolução ou velocidade de bits para alvos de retransmissão etc.).[00136] Finally, “channel administration” functionality is provided to manage the video channels and interface with the signaling server 330 so that it has current information necessary to facilitate its communications with client devices 200 ( for example, with respect to binding to a channel, providing client-monitored performance measurements, obtaining routing and resolution or bitrate changes for retransmission targets, etc.).

[00137] A funcionalidade do lado do servidor restante ilustrada na Fig. 3, com exceção do extrator de splash 390, será descrita, por simplicidade, no contexto de um único canal de conteúdo de vídeo. Observe-se, entretanto, que esta funcionalidade é realizada simultaneamente, em uma realização, para diversos canais em qualquer dado momento e para uma série de conteúdos digitais.[00137] The remaining server-side functionality illustrated in Fig. 3, with the exception of splash extractor 390, will be described, for simplicity, in the context of a single channel of video content. Note, however, that this functionality is carried out simultaneously, in one implementation, for several channels at any given time and for a series of digital content.

[00138] Antes que os nós de cliente tenham acesso a um canal de vídeo, o conteúdo de vídeo é transcodificado para criar diversos fluxos com resolução mais baixa de segmentos de vídeo. Em uma realização, o servidor de conteúdo POI 380 é implementado como servidor HTTP 228 que pode comunicar-se com os navegadores da Web HTML5 padrão 230 nos dispositivos de cliente 200. Ao contrário do servidor de sinalização 330, que estabelece conexões de WebSocket com dispositivos de cliente 200 para comunicações bidirecionais frequentes (por exemplo, trocando alterações de roteamento, dados de desempenho etc.), o servidor de conteúdo POI 380 responde a solicitações de HTTP 228 de clientes com relativamente baixa frequência de navegadores da Web HTML5 padrão 230 por arquivos de manifesto, segmentos de vídeo ocasionais que não chegaram a tempo por meio de redes sobrepostas 100 etc.[00138] Before client nodes have access to a video channel, the video content is transcoded to create multiple lower resolution streams of video segments. In one embodiment, the POI content server 380 is implemented as an HTTP server 228 that can communicate with standard HTML5 web browsers 230 on client devices 200. Unlike signaling server 330, which establishes WebSocket connections with devices of client 200 for frequent bidirectional communications (e.g., exchanging routing changes, performance data, etc.), the POI content server 380 responds to HTTP requests 228 from clients with relatively low frequency of standard HTML5 web browsers 230 for files of manifesto, occasional video segments that didn't arrive in time via overlay networks 100, etc.

[00139] Conforme indicado acima, o servidor de conteúdo POI 380 também depende do protocolo HTTP 228 para implementar sua funcionalidade de origem de canal com amplitude de banda mais alta - ou seja, respondendo a solicitações de HTTP por segmentos de vídeo de nós A próximos (na raiz da rede sobreposta de tronco de dados virtual, tipicamente no mesmo ASN do servidor de conteúdo POI 380 ou em até um ou dois saltos). Em outras realizações, esses segmentos de vídeo são empurrados para esses nós A de acordo com os padrões de streaming adaptativo 224 e WebRTC 222 ou por meio de outros métodos de streaming de vídeo (incluindo o protocolo de chuveiro utilizado pelo carregador 280, conforme discutido acima).[00139] As indicated above, the POI content server 380 also relies on the HTTP protocol 228 to implement its higher bandwidth channel source functionality - i.e., responding to HTTP requests for video segments from nearby A nodes (at the root of the virtual data trunk overlay network, typically in the same ASN as the POI 380 content server or within one or two hops). In other embodiments, these video segments are pushed to these nodes A in accordance with adaptive streaming standards 224 and WebRTC 222 or through other video streaming methods (including the shower protocol utilized by loader 280, as discussed above ).

[00140] Em uma realização, o servidor de conteúdo POI 380 transcodifica conteúdo de vídeo em três resoluções diferentes (1080p, 720p e 480p), enquanto várias outras resoluções superiores e inferiores são sustentadas em outras realizações (por exemplo, 4K, 360VR, 180VR, 240p etc.), incluindo uma única resolução fixa para todo o conteúdo de vídeo. Caso o vídeo fonte original seja fornecido em resolução mais baixa (por exemplo, 720p), somente resoluções de 720p e 480p podem ser sustentadas para aquele canal de vídeo. Essa funcionalidade possibilita streaming com velocidade de bits adaptativa, seja ele iniciado pelos nós de clientes (conforme discutido acima) ou pelo servidor de broadcast virtual 300 com base em análise das medidas de desempenho de clientes.[00140] In one embodiment, the POI content server 380 transcodes video content into three different resolutions (1080p, 720p, and 480p), while various other higher and lower resolutions are supported in other embodiments (e.g., 4K, 360VR, 180VR , 240p, etc.), including a single fixed resolution for all video content. If the original source video is provided in a lower resolution (e.g. 720p), only 720p and 480p resolutions can be supported for that video channel. This functionality enables adaptive bitrate streaming, whether initiated by client nodes (as discussed above) or by virtual broadcast server 300 based on analysis of client performance measurements.

[00141] Em uma realização, o servidor de conteúdo POI 380 inicia um canal respondendo a uma solicitação de HTTP para fornecer todas as versões disponíveis (por exemplo, três resoluções diferentes) de cada segmento de vídeo para um ou mais nós próximos (tipicamente, nós A) que começam a empurrar cada segmento de vídeo ao longo das redes sobrepostas 100. Em outra realização, esses nós retransmitem todas as versões para os nós B (e nós B:A) e, por fim, para os nós C, de forma que cada nó de cliente possa alavancar as capacidades de streaming adaptativo 224. Os nós que retransmitem diversas resoluções para outros nós realizam “policast” dessas diversas versões de um segmento de vídeo para outros nós de clientes por meio das redes sobrepostas 100, conforme explicado com mais detalhes abaixo.[00141] In one embodiment, the POI content server 380 initiates a channel responding to an HTTP request to provide all available versions (e.g., three different resolutions) of each video segment to one or more nearby nodes (typically, nodes A) that begin pushing each video segment along the 100 overlapping networks. In another embodiment, these nodes relay all versions to nodes B (and nodes B:A) and ultimately to nodes C, from so that each client node can leverage adaptive streaming capabilities 224. Nodes that relay various resolutions to other nodes “polycast” these various versions of a video segment to other client nodes via the overlay networks 100, as explained with more details below.

[00142] Observe-se que, enquanto o servidor de conteúdo POI 380 inicia um canal fornecendo segmentos de vídeo para um ou mais nós próximos (em resposta a solicitações de HTTP), todos os nós de observação de clientes efetivamente recebem e observam cada segmento de vídeo simultaneamente - ou seja, eles estão todos sincronizados, desde que cada segmento de vídeo atravesse as redes sobrepostas 100 antes do término da execução do segmento de vídeo anterior. Como os dispositivos de cliente 200 colocam em buffer pelo menos três segmentos de vídeo nesta realização, esse buffer fornece alguma “margem de erro”, caso um segmento de vídeo ocasionalmente sofra algum atraso. Além disso, em outra realização, o início de um canal pode ser retardado para fornecer buffer adicional quando o servidor de conteúdo de POI 380 começar, em primeiro lugar, a transmitir o canal. Quando um dispositivo de cliente 200 emitir solicitação de segmento de vídeo diretamente do servidor de conteúdo POI de fallback 380 (por exemplo, porque o segmento de vídeo não chegou em tempo por meio das redes sobrepostas 100), esse tampão pode ser necessário, por exemplo, caso aquele segmento de vídeo cruze um ou mais ASNs.[00142] Note that while the POI content server 380 initiates a channel by providing video segments to one or more nearby nodes (in response to HTTP requests), all client observation nodes actually receive and observe each segment. simultaneously - that is, they are all synchronized as long as each video segment traverses the overlapping networks 100 before the previous video segment finishes playing. Because the client devices 200 buffer at least three video segments in this embodiment, this buffer provides some “margin of error” if a video segment occasionally experiences some delay. Furthermore, in another embodiment, the start of a channel may be delayed to provide additional buffering when the POI content server 380 first begins transmitting the channel. When a client device 200 issues a video segment request directly from the fallback POI content server 380 (e.g., because the video segment did not arrive in time via the overlay networks 100), this buffer may be necessary, e.g. , if that video segment crosses one or more ASNs.

[00143] Conforme indicado acima, o servidor de conteúdo POI 380 também fornece arquivos de manifesto periódicos em resposta a solicitações do dispositivo de cliente 200. Embora esses arquivos de manifesto sejam fornecidos por meio de protocolos de HTTP 328 padrão, eles são relativamente pequenos e muito menos críticos com relação ao tempo que segmentos de vídeo. Em uma realização, cada arquivo de manifesto identifica a localização dos oito segmentos de vídeo seguintes em diversas velocidades de bits disponíveis. Nessa realização, as localizações são os locais de fallback do servidor de conteúdo POI 380, pois os segmentos de vídeo são empurrados para cada dispositivo de cliente 200 por meio das redes sobrepostas 100.[00143] As indicated above, the POI content server 380 also provides periodic manifest files in response to requests from the client device 200. Although these manifest files are provided via standard HTTP 328 protocols, they are relatively small and much less time critical than video segments. In one embodiment, each manifest file identifies the location of the following eight video segments at various available bit rates. In this embodiment, the locations are the fallback locations of the POI content server 380 as the video segments are pushed to each client device 200 via the overlay networks 100.

[00144] Após a preparação de um canal de conteúdo de vídeo para streaming (que começa com o servidor de conteúdo POI 380), o servidor de sinalização 330 aguarda solicitações de ligação de dispositivos de cliente 200. Ao receber uma solicitação de ligação para aquele canal de um dispositivo de cliente 200, o servidor de sinalização 330 depende do protocolo STUN 322 para garantir que pode estabelecer conexão WebSocket 326 por meio de qualquer firewall NAT que poderá estar presente naquele dispositivo de cliente 200. Além disso, identificando o endereço de IP público daquele dispositivo de cliente 200, ele pode fornecer aquele endereço de IP público para outros nós de clientes (por exemplo, para retransmitir um segmento de vídeo para aquele dispositivo de cliente 200).[00144] After preparing a channel of video content for streaming (starting with POI content server 380), signaling server 330 waits for connection requests from client devices 200. Upon receiving a connection request for that channel of a client device 200, the signaling server 330 relies on the STUN protocol 322 to ensure that it can establish WebSocket connection 326 through any NAT firewall that may be present on that client device 200. Additionally, by identifying the IP address public IP address of that client device 200 , it may provide that public IP address to other client nodes (e.g., to relay a video segment to that client device 200 ).

[00145] Após o estabelecimento de uma conexão WebSocket 326, o dispositivo de cliente 200 fornece ao servidor de sinalização 330 informações relativas às suas capacidades (por exemplo, sistema operacional, navegador da Web e tipo de conexão - 3G, 4G, WiFi, LAN etc.), incluindo, em uma realização, se o dispositivo de cliente 200 é um nó C (considerado, por exemplo, para conexões celulares nesta realização. O dispositivo de cliente 200 também fornece a sua localização ASN para o servidor de sinalização 330, que será posteriormente utilizado para adicionar o dispositivo de cliente 200 para as redes sobrepostas 100.[00145] Upon establishment of a WebSocket connection 326, the client device 200 provides the signaling server 330 with information regarding its capabilities (e.g., operating system, web browser, and connection type - 3G, 4G, WiFi, LAN etc.), including, in one embodiment, whether the client device 200 is a C node (considered, for example, for cellular connections in this embodiment. The client device 200 also provides its ASN location to the signaling server 330, which will later be used to add the client device 200 to the overlay networks 100.

[00146] Em uma realização, o servidor de sinalização 330 prioriza o fornecimento de um ou mais segmentos de vídeo iniciais para o dispositivo de cliente 200 (por meio das redes sobrepostas 100), de forma a poder começar a executar o conteúdo de vídeo do canal o mais breve possível. Para iniciar esse processo, ele transfere o controle para o criador de redes sobrepostas 350, que adiciona o dispositivo de cliente 200 para uma rede sobreposta em multidão no seu ASN (direcionando, por exemplo, um nó B daquele ASN para que retransmita segmentos de vídeo para o dispositivo de cliente 200). Observe-se que o dispositivo de cliente 200 ainda não foi classificado e não retransmitirá nenhum segmento de vídeo para outros nós de clientes. Mas, por ser parte de redes sobrepostas 100, o dispositivo de cliente 200 pode começar a receber segmentos de vídeo e executar o conteúdo de vídeo do canal, bem como coletar medidas de desempenho de clientes, o que possibilitará a sua classificação.[00146] In one embodiment, signaling server 330 prioritizes providing one or more initial video segments to client device 200 (via overlay networks 100) so that it can begin playing video content from the channel as soon as possible. To begin this process, it transfers control to the overlay network builder 350, which adds the client device 200 to a crowd overlay network in its ASN (directing, for example, a node B of that ASN to retransmit video segments for client device 200). Note that client device 200 has not yet been classified and will not retransmit any video segments to other client nodes. But, by being part of overlay networks 100, the client device 200 can begin receiving video segments and playing the channel's video content, as well as collecting client performance measurements, which will enable its classification.

[00147] O servidor de sinalização 330 obtém, portanto (por meio da sua conexão WebSocket 326), a amplitude de banda acima e abaixo no fluxo do dispositivo de cliente 200. Observe-se que essa medida não é terrivelmente útil, pois a conexão pode cruzar diversos ASNs (muito embora o servidor de sinalização 330 conheça a localização de ASN do dispositivo de cliente 200). Uma medida mais relevante referir-se-á a comunicações entre o dispositivo de cliente 200 e outros nós de clientes no seu próprio ASN.[00147] The signaling server 330 therefore obtains (via its WebSocket connection 326) the bandwidth up and down the stream from the client device 200. Note that this measurement is not terribly useful, as the connection may cross multiple ASNs (even though the signaling server 330 knows the ASN location of the client device 200). A more relevant measure will concern communications between the client device 200 and other client nodes in its own ASN.

[00148] Mediante recebimento de informações de desempenho de clientes (coletadas pelo monitor de desempenho 240 no dispositivo de cliente 200) do dispositivo de cliente 200 (e de outros nós de clientes), o servidor de sinalização 330 encaminha essa informação para o rastreador de desempenho 340 para análise inicial e uso subsequente pelo criador de redes sobrepostas 350 e pelo mapeador profundo 360 na reclassificação dinâmica de nós de clientes e reconfiguração de redes sobrepostas 100 para o segmento de vídeo seguinte, conforme explicado abaixo. O rastreador de desempenho 340 monitora o desempenho de cada nó de cliente e determina se o nó de cliente ainda está “vivo”. Caso o dispositivo de cliente 200, por exemplo, tenha fechado a conexão e deixado o canal ou não responda a um “ping” em um período de tempo limite, considerar-se-á que ele deixou o canal (seja intencionalmente ou como resultado de falha de hardware ou software). O rastreador de desempenho 340 também converte as medidas de desempenho de clientes em formato apropriado para armazenagem em banco de dados de histórico de desempenho 345 e uso pelo criador de redes sobrepostas 350 e pelo mapeador profundo 360.[00148] Upon receipt of client performance information (collected by performance monitor 240 on client device 200) from client device 200 (and other client nodes), signaling server 330 forwards this information to the client device 200. performance 340 for initial analysis and subsequent use by the overlay network builder 350 and the deep mapper 360 in dynamically reclassifying client nodes and reconfiguring overlay networks 100 for the next video segment, as explained below. Performance tracker 340 monitors the performance of each client node and determines whether the client node is still “alive.” If the client device 200, for example, has closed the connection and left the channel or does not respond to a “ping” within a timeout period, it will be considered to have left the channel (either intentionally or as a result of hardware or software failure). Performance tracker 340 also converts customer performance measures into appropriate format for storage in performance history database 345 and use by overlay network builder 350 and deep mapper 360.

[00149] Em uma realização, o criador de redes sobrepostas 350 também é responsável, com a assistência do mapeador profundo 360, pelo processo contínuo de avaliação de medidas de desempenho de clientes atuais e históricas (mantidas no banco de dados de histórico de desempenho 345) e, dinamicamente, para cada segmento de vídeo (i) reclassificação dos nós de clientes e (ii) otimização de trajetos de roteamento, gerando e reconfigurando as redes sobrepostas 100, incluindo a rede sobreposta de tronco de dados virtual (para retransmitir o segmento de vídeo entre os nós A, dentro e através de ASNs) e as redes sobrepostas em multidão (para retransmitir o segmento de vídeo de cada nó A em um ASN para alguns outros nós B:A, B e C naquele ASN). A topologia das redes sobrepostas 100 é mantida no banco de dados de redes sobrepostas 375, para uso pelo criador de redes sobrepostas 350 e pelo mapeador profundo 360.[00149] In one embodiment, the overlay network builder 350 is also responsible, with assistance from the deep mapper 360, for the ongoing process of evaluating current and historical customer performance measures (maintained in the historical performance database 345 ) and, dynamically, for each video segment (i) reclassifying client nodes and (ii) optimizing routing paths, generating and reconfiguring the overlay networks 100, including the virtual data trunk overlay network (to retransmit the segment between nodes A, within and across ASNs) and crowd overlay networks (to relay the video segment from each node A in an ASN to some other nodes B:A, B and C in that ASN). The topology of the overlay networks 100 is maintained in the overlay network database 375 for use by the overlay network creator 350 and the deep mapper 360.

[00150] Com relação às medidas de desempenho recebidas do dispositivo de cliente 200 recém-adicionado, o criador de redes sobrepostas 350 utiliza essas medidas para classificar inicialmente o dispositivo de cliente 200. Em uma realização, este processo também é utilizado para reclassificar potencialmente os nós de clientes para cada segmento de vídeo (não simplesmente quando eles se ligam ao canal). Embora os nós de clientes não sejam tipicamente reclassificados com muita frequência, os clientes podem experimentar queda temporária da amplitude de banda (por exemplo, de um micro-ondas doméstico ou outra interferência). Além disso, quanto mais nós A forem necessários (por exemplo, por redundância ou devido a nós de clientes que deixam um canal), os nós B:A podem ser atualizados para nós A. Outros problemas detectados em um ASN ou em vários ASNs podem também necessitar da reclassificação de certos nós.[00150] With respect to performance measurements received from the newly added client device 200, the overlay network builder 350 uses these measurements to initially classify the client device 200. In one embodiment, this process is also used to potentially reclassify the client nodes for each video segment (not simply when they join the channel). Although client nodes are not typically reclassified very frequently, clients may experience temporary bandwidth drop (for example, from a household microwave or other interference). Additionally, as more A nodes are needed (for example, due to redundancy or due to client nodes leaving a channel), B:A nodes can be upgraded to A nodes. Other issues detected in an ASN or across multiple ASNs can may also require the reclassification of certain nodes.

[00151] O criador de redes sobrepostas 350 aloca ao dispositivo de cliente 200 slots de entrada e de saída (ou seja, portas de rede), de forma a poder receber pedaços de segmentos de vídeo (por meio de slots de entrada) empurrados por outros nós de clientes e poder retransmitir (empurrar) esses pedaços de segmentos de vídeo (por meio de slots de saída) para outros nós de clientes. Embora o padrão WebRTC 224 suporte 256 portas (slots) de entrada e de saída, apenas um slot de entrada isolado é alocado em uma realização (para maximizar a qualidade de conteúdo de vídeo que pode ser executada no dispositivo de cliente 200) e, no máximo, oito slots de saída são alocados (para maximizar o rendimento ao longo das redes sobrepostas 100) e suportar ampla variedade de dispositivos de cliente 200 e conexões de amplitude de banda limitada). Conforme indicado acima, aos nós A são alocados quatro slots de saída para retransmitir segmentos de vídeo para outros nós A através de pontos de peer de ASN e quatro slots de saída para retransmitir segmentos de vídeo para outros nós A dentro do seu ASN. Como será explicado abaixo, nem todos os slots alocados serão necessariamente empregados em qualquer momento dado.[00151] The overlay network builder 350 allocates to the client device 200 input and output slots (i.e., network ports) so that it can receive chunks of video segments (via input slots) pushed by other client nodes and be able to relay (push) these chunks of video segments (through output slots) to other client nodes. Although the WebRTC standard 224 supports 256 input and output ports (slots), only one isolated input slot is allocated in an embodiment (to maximize the quality of video content that can be played on the client device 200) and, in the maximum, eight output slots are allocated (to maximize throughput over overlapping networks 100) and support wide variety of client devices 200 and limited bandwidth connections). As indicated above, A nodes are allocated four output slots for relaying video segments to other A nodes through ASN peer points and four output slots for relaying video segments to other A nodes within their ASN. As will be explained below, not all allocated slots will necessarily be employed at any given time.

[00152] O criador de redes sobrepostas 350 analisa a amplitude de banda acima e abaixo no fluxo do dispositivo de cliente 200 para facilitar o processo de classificação. Conforme indicado acima, caso o dispositivo de cliente 200 ligue-se por meio de uma conexão de celular (3G, 4G ou até LTE), ele é automaticamente considerado inconfiável demais para retransmitir segmentos de vídeo e, portanto, é classificado como nó C. Em outras realizações, essa classificação automática pode ser limitada a certas conexões de celular (por exemplo, 3G) ou totalmente eliminada.[00152] The overlay network builder 350 analyzes the bandwidth above and below the stream from the client device 200 to facilitate the classification process. As indicated above, if the client device 200 connects via a cellular connection (3G, 4G, or even LTE), it is automatically considered too unreliable to retransmit video segments and is therefore classified as a C node. In other embodiments, this automatic classification may be limited to certain cellular connections (e.g., 3G) or eliminated entirely.

[00153] Em uma realização, o criador de redes sobrepostas 350 emprega categorias de amplitude de banda acima no fluxo/abaixo no fluxo típicas (em Mbps) para possibilitar classificação adicional, incluindo: (1) conexões LAN (por exemplo, 100/100), (2) conexões de fibra (100/50), (3) conexões ADSL (100/20), conexões via cabo (100/10) e conexões WiFi, que variam muito). Nesta realização, caso o dispositivo de cliente 200 já não seja considerado nó C e possua amplitude de banda acima no fluxo de pelo menos 50 Mbps, ele é inicialmente classificado como nó A (ou como nó B:A caso o mapeador profundo 360 indique que nenhum nó A adicional é necessário no seu ASN). Caso contrário, ele será classificado como nó B.[00153] In one embodiment, the overlay network builder 350 employs typical upstream/downstream bandwidth categories (in Mbps) to enable further classification, including: (1) LAN connections (e.g., 100/100 ), (2) fiber connections (100/50), (3) ADSL connections (100/20), cable connections (100/10) and WiFi connections, which vary greatly). In this embodiment, if client device 200 is no longer considered node C and has bandwidth upstream of at least 50 Mbps, it is initially classified as node A (or as node B:A if the 360 deep mapper indicates that no additional A nodes are required in your ASN). Otherwise, it will be classified as node B.

[00154] Como será discutido abaixo, o criador de redes sobrepostas 350 analisa adicionalmente a amplitude de banda acima no fluxo do dispositivo de cliente 200 (em uma realização) para calcular a quantidade de slots de saída disponíveis que pode utilizar antes de determinar a extensão à qual (se houver) deverá reconfigurar dinamicamente as redes sobrepostas 100. Ele também determina a extensão à qual o dispositivo de cliente 200 é capaz de receber e/ou realizar policast de diversas resoluções.[00154] As will be discussed below, the overlay network designer 350 further analyzes the bandwidth above the stream from the client device 200 (in one embodiment) to calculate the number of available output slots it can utilize before determining the bandwidth. which (if any) shall dynamically reconfigure the overlay networks 100. It also determines the extent to which the client device 200 is capable of receiving and/or polycasting various resolutions.

[00155] Em uma realização, a amplitude abaixo no fluxo total de um nó de cliente é utilizada para o seu slot de entrada isolado, enquanto apenas 1/3 da sua amplitude de banda acima no fluxo é utilizado para retransmitir segmentos de vídeo entre os seus slots de saída. A sua amplitude de banda acima no fluxo total não é utilizada, pois a retransmissão de segmentos de vídeo pode interferir com TCP/IP e outras conexões utilizadas pelo dispositivo de cliente 200 para outras aplicações.[00155] In one embodiment, the bandwidth below the total stream of a client node is used for its isolated input slot, while only 1/3 of its bandwidth above the stream is used to retransmit video segments between the your output slots. Its bandwidth above the full stream is not utilized, as retransmission of video segments may interfere with TCP/IP and other connections used by client device 200 for other applications.

[00156] O criador de redes sobrepostas 350 analisa a amplitude de banda abaixo no fluxo do dispositivo de cliente 200 (mesmo se classificado como nó C) para determinar a quantidade de resoluções que pode sustentar por meio do seu slot de entrada isolado. Caso 1080p necessite, por exemplo, de velocidade de bits de 3 Mbps e 720p necessite de velocidade de bits de 1,5 Mbps e 480p necessite de velocidade de bits de 500 kbps, o dispositivo de cliente 200 necessitaria de amplitude de banda abaixo no fluxo de pelo menos 5 Mbps para sustentar todas as três resoluções, pelo menos 4,5 Mbps para sustentar 1080p e 720p, pelo menos 3 Mbps para sustentar apenas 1080p, pelo menos 2 Mbps para sustentar 720p e 480p, pelo menos 1,5 Mbps para sustentar apenas 720p e pelo menos 500 kbps para sustentar apenas 480p. Em uma realização, velocidades de bits de menos de 500 kbps não serão sustentadas. Em outras realizações, resoluções inferiores podem ser sustentadas e outros métodos (tais como maior compressão, diferentes formatos de vídeo etc.) podem ser empregados para reduzir as necessidades de amplitude de banda.[00156] Overlay network builder 350 analyzes the bandwidth downstream of client device 200 (even if classified as node C) to determine the number of resolutions it can sustain through its isolated input slot. If 1080p requires, for example, a bit rate of 3 Mbps and 720p requires a bit rate of 1.5 Mbps and 480p requires a bit rate of 500 kbps, the client device 200 would require bandwidth below in the stream of at least 5 Mbps to sustain all three resolutions, at least 4.5 Mbps to sustain 1080p and 720p, at least 3 Mbps to sustain 1080p only, at least 2 Mbps to sustain 720p and 480p, at least 1.5 Mbps to sustain only 720p and at least 500 kbps to sustain only 480p. In one embodiment, bit speeds of less than 500 kbps will not be sustained. In other embodiments, lower resolutions may be sustained and other methods (such as greater compression, different video formats, etc.) may be employed to reduce bandwidth requirements.

[00157] Conforme indicado acima, em uma realização, nós A, B:A e B podem também ser considerados nós de policast que podem retransmitir diversas resoluções para outros nós por meio de um ou mais dos seus slots de saída. Neste particular, o criador de redes sobrepostas 350 analisa a amplitude de banda acima no fluxo do dispositivo de cliente 200 para determinar a quantidade de resoluções que pode retransmitir para outros nós de clientes.[00157] As indicated above, in one embodiment, nodes A, B:A and B can also be considered polycast nodes that can relay various resolutions to other nodes through one or more of their output slots. In this particular, the overlay network designer 350 analyzes the bandwidth above the stream from the client device 200 to determine the number of resolutions it can relay to other client nodes.

[00158] Como um nó de cliente pode utilizar apenas 1/3 da sua amplitude de banda acima no fluxo nesta realização, o dispositivo de cliente 200 necessitaria de amplitude de banda acima no fluxo de pelo menos 15 Mbps (por slot de saída) para realizar policast de todas as três resoluções, pelo menos 13,5 Mbps (por slot de saída) para realizar policast de 1080p e 720p, pelo menos 9 Mbps (por slot de saída) para enviar apenas 1080p, pelo menos 6 Mbps (por slot de saída) para realizar policast de 720p e 480p, pelo menos 4,5 Mbps (por slot de saída) para retransmitir apenas 720p e pelo menos 1,5 Mbps (por slot de saída) para retransmitir apenas 480p.[00158] Since a client node can utilize only 1/3 of its upstream bandwidth in this embodiment, client device 200 would require upstream bandwidth of at least 15 Mbps (per output slot) to polycast all three resolutions, at least 13.5 Mbps (per output slot) to polycast 1080p and 720p, at least 9 Mbps (per output slot) to send 1080p only, at least 6 Mbps (per slot output) to polycast 720p and 480p, at least 4.5 Mbps (per output slot) to retransmit only 720p, and at least 1.5 Mbps (per output slot) to retransmit only 480p.

[00159] O dispositivo de cliente 200 não pode retransmitir uma resolução que não recebe. Além disso, as capacidades de policast do dispositivo de cliente 200 são consideradas em conjunto com a capacidade de outros nós de clientes de receber diversas resoluções, conforme explicado abaixo. Mas, conforme indicado acima, o dispositivo de cliente 200 emprega implementações de streaming adaptativo 224 para solicitar versões em resolução inferior ou superior de segmentos de vídeo à medida que experimenta alterações significativas da sua amplitude de banda. Caso receba diversas resoluções diferentes de um segmento de vídeo, ele executará simplesmente a resolução mais alta recebida.[00159] Client device 200 cannot retransmit a resolution that it does not receive. Furthermore, the polycast capabilities of the client device 200 are considered in conjunction with the ability of other client nodes to receive various resolutions, as explained below. But, as indicated above, client device 200 employs adaptive streaming implementations 224 to request lower or higher resolution versions of video segments as it experiences significant changes in its bandwidth. If it receives several different resolutions of a video segment, it will simply play the highest resolution received.

[00160] Considerando que o dispositivo de cliente 200 não é um nó C, o criador de redes sobrepostas 350 calcula a quantidade de slots de saída disponíveis que pode utilizer analisando a sua amplitude de banda acima no fluxo e também considerando a extensão à qual pode realizar policast de diversas resoluções. Caso o dispositivo de cliente 200 seja classificado como nó A com conexão LAN que possui amplitude de banda acima no fluxo de 100 Mbps, por exemplo, ele pode utilizar apenas cerca de seis slots de saída para realizar policast de segmentos de vídeo, tanto no seu ASN quanto através de ASNs. Nesta realização, o criador de redes sobrepostas 350 alocaria quatro slots para realizar policast para outros nós A através de ASNs (dando prioridade a esses slots entre ASNs), deixando dois slots restantes para realizar policast para outros nós A dentro do seu ASN. Em outras realizações, essas alocações poderão naturalmente variar sem abandonar o espírito da presente invenção.[00160] Considering that the client device 200 is not a C node, the overlay network designer 350 calculates the number of available output slots that it can utilize by analyzing its bandwidth upstream and also considering the extent to which it can perform polycast of different resolutions. If the client device 200 is classified as node A with a LAN connection that has bandwidth above 100 Mbps stream, for example, it can use only about six output slots to polycast video segments, both on its ASN and through ASNs. In this embodiment, the overlay network creator 350 would allocate four slots to polycast to other A nodes across ASNs (giving priority to these slots across ASNs), leaving two remaining slots to polycast to other A nodes within its ASN. In other embodiments, these allocations may naturally vary without departing from the spirit of the present invention.

[00161] De forma similar, caso o dispositivo de cliente 200 seja classificado como nó B:A ou B com conexão de cabo que possui amplitude de banda acima no fluxo de 10 Mbps, ele poderá utilizar apenas um slot de saída para realizar policast de resoluções de 720p e 480p, ou enviar apenas 1080p. Em uma realização, dá-se prioridade a resoluções com qualidade mais alta (até o ponto em que os nós podem receber essa resolução) e, portanto, um slot seria alocado apenas para 1080p. Também aqui, essas alocações poderão variar sem abandonar o espírito da presente invenção.[00161] Similarly, if the client device 200 is classified as a B:A or B node with a cable connection that has bandwidth above 10 Mbps flow, it may use only one output slot to perform polycast of resolutions of 720p and 480p, or send only 1080p. In one embodiment, priority is given to higher quality resolutions (to the extent that nodes can receive that resolution) and therefore a slot would be allocated only for 1080p. Here too, these allocations may vary without abandoning the spirit of the present invention.

[00162] Após classificar o dispositivo de cliente 200 e determinar a quantidade de slots que podem ser utilizados (incluindo o policast de diversas resoluções), o criador de redes sobrepostas 350 determina a extensão à qual reconfigurará dinamicamente as redes sobrepostas 100 para otimizar os trajetos de roteamento. Caso o dispositivo de cliente 200 seja um nó A, o criador de redes sobrepostas 350 obterá, em primeiro lugar, do mapeador profundo 360 os níveis de congestionamento para cada trajeto entre ASNs entre nós A (conforme discutido com mais detalhes abaixo) e, em seguida, reconfigurará dinamicamente ao menos parte da rede sobreposta de tronco de dados virtual para incorporar o dispositivo de cliente 200.[00162] After classifying the client device 200 and determining the number of slots that can be used (including multi-resolution polycast), the overlay network builder 350 determines the extent to which it will dynamically reconfigure the overlay networks 100 to optimize paths of routing. If the client device 200 is a node A, the overlay network builder 350 will first obtain from the deep mapper 360 the congestion levels for each inter-ASN path between nodes A (as discussed in more detail below), and then It will then dynamically reconfigure at least part of the virtual data trunk overlay network to incorporate the client device 200.

[00163] Considerando um conjunto de trajetos ponderados (em que cada trajeto possui ponderação de “nível de congestionamento”), o criador de redes sobrepostas 350 emprega métodos de busca de trajetos padrão para determinar o trajeto ideal para distribuir um segmento de vídeo entre os nós A (análogo, por exemplo, ao roteamento de navegação por GPS). Observe-se, entretanto, que este processo é levemente complicado pelo uso de diversos slots de retransmissão - por exemplo, quatro slots de saída para nós A que retransmitem para nós A em um ASN e quatro slots de saída para nós A que retransmitem para nós A por meio de um ponto de peer de ASN. Ainda assim, esta é apenas uma leve variação do caso mais simples, em que o nó A possui apenas um slot de saída. Em outras palavras, o criador de redes sobrepostas 350 rastreia a quantidade de slots abertos (não utilizados) durante a geração ou reconfiguração da rede sobreposta de tronco de dados virtual e deixa de atribuir um nó A específico como fonte de retransmissão quando não possuir mais slots abertos não utilizados.[00163] Considering a set of weighted paths (where each path has “congestion level” weighting), the overlay network builder 350 employs standard path search methods to determine the optimal path to distribute a video segment among the A nodes (analogous to, for example, GPS navigation routing). Note, however, that this process is slightly complicated by the use of multiple relay slots - for example, four output slots for nodes A that relay to nodes A in an ASN and four output slots for nodes A that relay to nodes A through an ASN peer. Still, this is just a slight variation of the simplest case where node A has only one output slot. In other words, the overlay network creator 350 tracks the number of open (unused) slots during the generation or reconfiguration of the virtual data trunk overlay network and fails to assign a specific node A as a retransmission source when it has no more slots. open unused.

[00164] Caso o dispositivo de cliente 200 seja um nó B:A ou B, o criador de redes sobrepostas 350 reconfigura dinamicamente, no todo ou em parte, as redes sobrepostas em multidão intra-ASN no ASN no qual reside o dispositivo de cliente 200. Observe-se que, caso haja diversos nós A naquele ASN, as suas vias entre si serão determinadas como parte da rede sobreposta de tronco de dados virtual. Em uma realização, apenas um nó A será utilizado para criar uma rede sobreposta em multidão (caso sejam disponíveis slots suficientes), enquanto, em outras realizações, os outros nós podem ser alocados igualmente entre os diversos nós A ou distribuídos com base em amplitude acima no fluxo relativa ou outras medidas.[00164] If the client device 200 is a B:A or B node, the overlay network builder 350 dynamically reconfigures, in whole or in part, the intra-ASN crowd overlay networks in the ASN in which the client device resides. 200. Note that, if there are several A nodes in that ASN, their paths between them will be determined as part of the virtual data trunk overlay network. In one embodiment, only one node A will be used to create a crowd overlay network (if sufficient slots are available), while in other embodiments, the other nodes may be allocated equally among the various A nodes or distributed based on breadth above. in relative flow or other measurements.

[00165] Com relação a quaisquer nós A específicos e aos nós B, B:A e C restantes em um ASN, esses nós são avaliados em primeiro lugar com base na sua classificação (ou seja, B:A, depois B, depois C) e, em seguida, com base na sua amplitude de banda correspondente (ou seja, o número de slots disponíveis que podem ser utilizados, conforme descrito acima). Observe-se que a rede sobreposta em multidão é uma hierarquia nesta realização, considerando que cada nó possui apenas um único nó alimentador. Métodos similares podem ser empregados para multidões de “grade” não hierárquicas em outras realizações.[00165] With respect to any specific A nodes and the remaining B, B:A, and C nodes in an ASN, these nodes are evaluated first based on their classification (i.e., B:A, then B, then C ) and then based on its corresponding bandwidth (i.e. the number of available slots that can be used, as described above). Note that the crowd overlay network is a hierarchy in this realization, considering that each node has only a single feeder node. Similar methods can be employed for non-hierarchical “grid” crowds in other realizations.

[00166] Nesta realização de multidão hierárquica, o processo se inicia com o nó A de raiz, que possuirá certa quantidade de slots de saídas que podem ser utilizados (por exemplo, dois slots de saída). Esses slots serão dirigidos para o nível seguinte da hierarquia - por exemplo, os dois nós B:A com a quantidade mais alta de slots disponíveis que pode ser utilizada. Após a determinação desses trajetos, os slots de saída disponíveis desses nós serão dirigidos para os nós B:A restantes com a quantidade mais alta de slots disponíveis. Esse processo continua pela hierarquia (através dos nós B e, finalmente, dos nós C) até que todos os trajetos tenham sido determinados.[00166] In this hierarchical crowd realization, the process starts with the root node A, which will have a certain number of output slots that can be used (for example, two output slots). These slots will be directed to the next level of the hierarchy - for example, the two B:A nodes with the highest amount of available slots that can be used. After determining these paths, the available egress slots from these nodes will be routed to the remaining B:A nodes with the highest number of available slots. This process continues down the hierarchy (through B nodes and finally C nodes) until all paths have been determined.

[00167] Observe-se que o comprimento de cadeia abaixo de qualquer nó de cliente (por exemplo, cem nós de clientes, cada qual com um único slot de saída) possui relativamente pouca preocupação, considerando a velocidade relativamente alta (bem abaixo de 1 ms) de retransmissão entre os nós em um ASN. Considerando um segmento de vídeo de um segundo, cadeias de centenas de nós podem ainda ser acomodadas (embora eles fossem raros, considerando que muitos nós em um ASN provavelmente sustentariam diversos slots de saídas). Caso nem todos os nós pudessem ser incluídos em uma multidão (por exemplo, se nós C e nós B com zero slots disponíveis permanecessem não representados), haveria a necessidade de nós adicionais com slots abertos naquele ASN, que seriam alocados assim que se tornassem disponíveis. Enquanto isso, esses nós seriam dirigidos à solicitação de segmentos de vídeo do servidor de conteúdo POI 380.[00167] Note that the chain length below any one client node (e.g., one hundred client nodes, each with a single output slot) is of relatively little concern considering the relatively high speed (well below 1 ms) of relay between nodes in an ASN. Considering a one-second video segment, chains of hundreds of nodes could still be accommodated (although they would be rare, considering that many nodes in an ASN would likely support multiple output slots). If not all nodes could be included in a crowd (for example, if C nodes and B nodes with zero available slots remained unrepresented), there would be a need for additional nodes with open slots in that ASN, which would be allocated as they become available . Meanwhile, these nodes would be directed to requesting video segments from the POI 380 content server.

[00168] Antes de voltar para o mapeador profundo 360, que prevê e quantifica os níveis de congestionamento ao longo dos pontos de peer ASN (por exemplo, para o minuto seguinte), é útil compreender as limitações dos protocolos de roteamento de BGP para apreciar o significado do congestionamento de ponto de peer ASN. Roteadores de BGP determinam o congestionamento no “tempo de roteamento” e não possuem capacidades de previsão. Eles apenas conhecem os seus próprios roteadores e a latência “a um salto de distância” ao longo de um ponto de peer ASN. Eles desconhecem a quantidade de saltos ou latência para qualquer destino final, que podem estar a diversos saltos de distância ao longo de diversos pontos de peer ASN. Considerando uma seleção de diversos pontos de peer de ASN, eles selecionam essencialmente aquele com a maior amplitude de banda disponível no momento (ou seja, aquele com um slot aberto e a latência mais baixa a um salto de distância).[00168] Before turning to the 360 Deep Mapper, which predicts and quantifies congestion levels along ASN peer points (e.g., for the next minute), it is helpful to understand the limitations of BGP routing protocols to appreciate the meaning of ASN peer peer congestion. BGP routers determine congestion at “routing time” and do not have prediction capabilities. They only know their own routers and the latency “one hop away” along an ASN peer point. They do not know the number of hops or latency to any final destination, which may be several hops away across multiple ASN peer points. Given a selection of multiple ASN peer points, they essentially select the one with the highest bandwidth currently available (i.e., the one with an open slot and the lowest latency one hop away).

[00169] Por outro lado, o mapeador profundo 360 alavanca o seu conhecimento da arquitetura subjacente da Internet. Em uma realização, o mapeador profundo 360 mantém um mapa de interconexão de ASN da Internet (incluindo ASNs e suas diversas interconexões de pontos de peer), conforme ilustrado de forma geral na Fig. 1. Esse mapa não se altera com frequência, embora seja monitorado, em uma realização, a cada cinco minutos para capturar essas alterações irregulares.[00169] On the other hand, the 360 deep mapper leverages its knowledge of the underlying architecture of the Internet. In one embodiment, the 360 deep mapper maintains an ASN interconnection map of the Internet (including ASNs and their various peer interconnections), as generally illustrated in Fig. 1. This map does not change frequently, although it is monitored, in one realization, every five minutes to capture these irregular changes.

[00170] As redes sobrepostas 100 construídas sobre esses ASNs são, entretanto, analisadas com frequência (por exemplo, por meio de monitoramento do lado do cliente, conforme discutido acima) e potencialmente reconfiguradas a cada segmento de vídeo (por exemplo, a cada segundo em uma realização) pelo servidor de broadcast virtual 300. Na prática, entretanto, as redes sobrepostas 100 são realmente modificadas apenas quando garantidas - por exemplo, não apenas quando novos nós entram ou saem do canal, mas também quando são detectados problemas suficientes (com base em informações históricas e atuais mantidas no histórico de desempenho DB 345).[00170] The overlay networks 100 built on top of these ASNs are, however, analyzed frequently (e.g., through client-side monitoring, as discussed above) and potentially reconfigured every video segment (e.g., every second in one embodiment) by virtual broadcast server 300. In practice, however, overlay networks 100 are actually modified only when warranted - for example, not only when new nodes join or leave the channel, but also when sufficient problems are detected (with based on historical and current information maintained in the DB 345 performance history).

[00171] Diversos “limites de congestionamento” internos são empregados, por exemplo, em uma realização. Mediante detecção inicial de um limite relativamente baixo de congestionamento específico de um dispositivo de cliente específico 200 ou em um ASN, o criador de redes sobrepostas 350 simplesmente “marca” o dispositivo de cliente 200 ou ASN e aguarda para ver se o problema reaparece (por exemplo, no segmento de vídeo seguinte). Se isso ocorrer, ele pode diminuir a resolução (e, portanto, a velocidade de bits) do segmento de vídeo seguinte retransmitido para aquele nó de cliente (ou todos os nós de clientes naquele ASN “problema”). Eventualmente, se o problema ficar pior (por exemplo, excedendo um limite de congestionamento mais alto), uma parte das redes sobrepostas 100 (por exemplo, uma faixa de IP de subconjunto em um ASN) pode ser reconfigurada dinamicamente. Por fim, um ASN completo ou talvez a própria rede sobreposta de tronco de dados virtual pode necessitar de reconfiguração dinâmica.[00171] Various internal “congestion limits” are employed, for example, in one realization. Upon initial detection of a specific relatively low congestion threshold of a specific client device 200 or in an ASN, the overlay network builder 350 simply “marks” the client device 200 or ASN and waits to see if the problem reappears (e.g. example, in the following video segment). If this occurs, it can decrease the resolution (and therefore the bitrate) of the next video segment retransmitted to that client node (or all client nodes in that “problem” ASN). Eventually, if the problem becomes worse (e.g., exceeding a higher congestion threshold), a portion of the overlapping networks 100 (e.g., a subset IP range in an ASN) may be dynamically reconfigured. Finally, a complete ASN or perhaps the virtual data trunk overlay network itself may require dynamic reconfiguration.

[00172] Em qualquer eventualidade, o objetivo desses limites de congestionamento é identificar e corrigir os problemas de forma pró-ativa, antes que eles se degenerem em problemas mais significativos, causando a perda de segmentos de vídeo, ou mesmo fazendo com que os nós de clientes recorram à obtenção de segmentos de vídeo do local de fallback do servidor de conteúdo POI 380.[00172] In any eventuality, the purpose of these congestion limits is to proactively identify and correct problems before they degenerate into more significant problems, causing the loss of video segments, or even causing nodes to fail. of clients resort to obtaining video segments from the fallback location of the POI 380 content server.

[00173] Mantendo consciência do mapa de interconexão de ASN da Internet e do local de ASN dos nós nas redes sobrepostas 100 e monitorando em tempo real o desempenho histórico e atual desses nós, o mapeador profundo 360 minimiza a probabilidade de que qualquer nó de cliente retransmita desnecessariamente um segmento de vídeo para um nó de cliente distante (por exemplo, a muitos saltos de distância através de diversos pontos de peer de ASN). Como matéria inicial em uma realização, por exemplo, a rede sobreposta de tronco de dados virtual tenderá a dirigir segmentos de vídeo (sempre que possível) de um nó A para outro nó A no mesmo ASN ou em um ASN próximo, através de um único ponto de peer de ASN.[00173] By maintaining awareness of the Internet ASN interconnect map and the ASN location of nodes in the overlay networks 100 and monitoring in real-time the historical and current performance of these nodes, the 360 deep mapper minimizes the likelihood that any client node unnecessarily retransmit a video segment to a distant client node (for example, many hops away via multiple ASN peer points). As initial matter in one embodiment, for example, the virtual data trunk overlay network will tend to direct video segments (whenever possible) from one node A to another node A in the same or a nearby ASN, through a single ASN peer point.

[00174] Nem todos os saltos isolados são, entretanto, criados igualmente. O mapeador profundo 360, por exemplo, pode “aprender” ao longo do tempo (com base em medidas de desempenho mantidas no banco de dados de desempenho histórico 345) que um ponto de peer entre “ASN 1” e “ASN 2” está ficando congestionado e pode “prever” que uma via de dois saltos de “ASN 1” para “ASN 3” e para “ASN 2” é, na verdade, mais rápida que a via de um salto atual (ou será mais rápida no futuro muito próximo, com base em tendências recentes e históricas). Ao quantificar-se o congestionamento de pontos de peer com base no desempenho atual e histórico de nós A através de pontos de peer, o mapeador profundo 360 pode possibilitar a reconfiguração dinâmica da topologia da rede sobreposta de tronco de dados virtual - potencialmente para cada segmento de vídeo ou pelo menos quando o congestionamento de pontos de peer necessitar dessas alterações (com base em limites internos).[00174] Not all isolated jumps are, however, created equally. The deep mapper 360, for example, may “learn” over time (based on performance measures maintained in the historical performance database 345) that a peer point between “ASN 1” and “ASN 2” is getting worse. congested and can “predict” that a two-hop path from “ASN 1” to “ASN 3” to “ASN 2” is actually faster than the current one-hop path (or will be faster in the very future). next, based on recent and historical trends). By quantifying peer point congestion based on the current and historical performance of A nodes across peer points, the 360 Deep Mapper can enable dynamic reconfiguration of the virtual data trunk overlay network topology - potentially for each segment or at least when peer point congestion necessitates such changes (based on internal limits).

[00175] Em uma realização, o mapeador profundo 360 quantifica o congestionamento com relação a cada par de nós A (quer eles residam no mesmo ASN ou em ASNs diferentes), empregando uma escala de 1 a 10, em que 1 é o nível mais baixo de congestionamento a curto prazo previsto e 10 é o mais alto. Conforme indicado acima, o criador de redes sobrepostas 350 utiliza essa “avaliação” de nível de congestionamento para comparar vias potenciais diferentes entre nós A e determinar a via mais eficiente (ou seja, a via com o “salto ponderado” mais baixo). Como resultado, os nós A que estão mais “distantes” (em saltos ponderados) do servidor de conteúdo POI 380 minimizarão o período de tempo necessário para que um segmento de vídeo atravesse a rede sobreposta de tronco de dados virtual para esses nós A do servidor de conteúdo POI 380.[00175] In one embodiment, the 360 deep mapper quantifies congestion with respect to each pair of nodes A (whether they reside in the same ASN or different ASNs), employing a scale of 1 to 10, where 1 is the most low predicted short-term congestion and 10 is the highest. As indicated above, the overlay network designer 350 uses this congestion level “assessment” to compare different potential paths between nodes A and determine the most efficient path (i.e., the path with the lowest “weighted hop”). As a result, the A nodes that are furthest away (in weighted hops) from the POI 380 content server will minimize the amount of time required for a video segment to traverse the virtual data trunk overlay network to those server A nodes. of POI 380 content.

[00176] Em uma realização, para cada par de nós A, o mapeador profundo 360 gera uma avaliação do nível de congestionamento previsto para cada via de um nó A para o outro e, em seguida, seleciona a avaliação de nível de congestionamento mais baixa a ser aplicada àquele par de nós A, que devolve para a rede sobreposta 350. Em outras realizações, o mapeador profundo 360 gera uma função diferente daquelas avaliações de nível de congestionamento previstas (para cada via, de um nó A para o outro), tal como média, mediano etc.[00176] In one embodiment, for each pair of nodes A, the deep mapper 360 generates an assessment of the predicted congestion level for each lane from one node A to the other and then selects the lowest congestion level assessment to be applied to that pair of nodes A, which returns to the overlay network 350. In other embodiments, the deep mapper 360 generates a function different from those predicted congestion level assessments (for each lane, from one node A to the other), such as mean, median etc.

[00177] O mapeador profundo 360 é, em uma realização, um mecanismo de aprendizado profundo que analisa continuamente as medidas de desempenho mantidas no banco de dados de desempenho histórico 345 e prevê (por exemplo, em um minuto no futuro) o nível de congestionamento ao longo dos pontos de peer de ASN. Dever-se-á observar que, como qualquer mecanismo de aprendizado profundo, o mapeador profundo 360 emprega diversas transformações não lineares para modelar o comportamento dos pontos de peer de ASN, com relação ao tráfego entre os nós A ao longo desses pontos de peer.[00177] Deep mapper 360 is, in one embodiment, a deep learning engine that continuously analyzes performance measurements maintained in historical performance database 345 and predicts (e.g., one minute in the future) the level of congestion along the ASN peer points. It should be noted that, like any deep learning engine, the 360 deep mapper employs several nonlinear transformations to model the behavior of ASN peer points, with respect to traffic between A nodes along those peer points.

[00178] Conforme indicado acima, ele não pode monitorar o volume de tráfego da Internet que cruza esses pontos de peer, mas apenas o efeito ao longo do tempo que esse tráfego possui sobre os saltos entre ASNs entre os nós A através desses pontos de peer. Quanto mais medidas de desempenho forem obtidas, melhor será a sua previsão do tempo necessário para esses saltos entre ASNs, que é quantificado em seguida como nível de congestionamento relativo (por exemplo, em comparação com saltos intra-ASN que tipicamente são muito menos congestionados, embora também monitorados nesta realização).[00178] As indicated above, it cannot monitor the volume of Internet traffic crossing these peer points, but only the effect over time that this traffic has on inter-ASN hops between nodes A through these peer points . The more performance measurements you obtain, the better you can predict the time required for these inter-ASN hops, which is then quantified as the relative congestion level (e.g., compared to intra-ASN hops which are typically much less congested, although also monitored in this realization).

[00179] Como o nível de congestionamento de pontos de peer é muito dinâmico, essas previsões somente podem ser precisas por um curto período de tempo. Mas, considerando que essa análise é realizada continuamente e pode alterar-se para o próximo segmento de vídeo de um segundo, não é crítico que a previsão seja precisa por um longo período de tempo.[00179] As the congestion level of peer points is very dynamic, these predictions can only be accurate for a short period of time. But considering that this analysis is performed continuously and may change for the next one-second video segment, it is not critical that the prediction is accurate over a long period of time.

[00180] Em uma realização, o mapeador profundo 360 quantifica inicialmente os pontos de peer de ASN com base em informações muito gerais (ou seja, antes que sejam obtidas grandes quantidades de medidas de desempenho do cliente). Se um ASN possuir 1000 pontos de peer, por exemplo, pode-se considerar que ele seja uma cadeia principal provavelmente muito mais rápida que outro ASN com seis pontos de peer. Quanto mais medidas de desempenho de cliente forem obtidas, mais precisos se tornarão esses níveis de congestionamento de pontos de peer. Em outra realização, diversos “nós de aprendizado” são desdobrados para “pular e iniciar” um novo canal. Esses nós de aprendizado são nós apenas de envio que não assistem ao vídeo, mas são apenas desdobrados para fornecer informações sobre o desempenho de clientes rapidamente, de forma que o mapeador profundo 360 possa começar a fazer previsões mais precisas antes do que seria o caso de outra forma.[00180] In one embodiment, the 360 deep mapper initially quantifies ASN peer points based on very general information (i.e., before large amounts of client performance measurements are obtained). If an ASN has 1000 peer points, for example, it can be considered to be a main chain that is likely to be much faster than another ASN with six peer points. The more client performance measurements you obtain, the more accurate these peer congestion levels become. In another embodiment, several “learning nodes” are deployed to “jump and start” a new channel. These learning nodes are send-only nodes that do not watch the video, but are simply deployed to provide information about client performance quickly so that the 360 deep mapper can start making more accurate predictions sooner than would otherwise be the case. other way.

[00181] Além disso, em uma realização, o mapeador profundo 360 também considera congestionamento intra-ASN, pois isso pode sugerir a necessidade, por exemplo, de nós A adicionais em um ASN e, portanto, a criação de redes sobrepostas de multidões adicionais. Caso muitos nós de clientes em um ASN estejam gradualmente levando mais tempo para obter segmentos de vídeo ao longo do tempo, por exemplo, o mapeador profundo 360 marca o ASN para indicar que são necessários nós A adicionais e o criador de redes sobrepostas 350 pode “promover” um ou mais nós B:A para nós B, resultando em reconfiguração parcial da rede sobreposta de tronco de dados virtual e, por fim, necessitando de novas redes sobrepostas de multidões no ASN. Em outra realização, o mapeador profundo 360 aplica métodos de aprendizado profundo em cada ASN e auxilia o criador de redes sobrepostas 350 na geração de redes de sobreposição de multidões intra-ASN.[00181] Additionally, in one embodiment, the 360 deep mapper also considers intra-ASN congestion, as this may suggest the need for, for example, additional A nodes in an ASN and thus the creation of additional crowd overlay networks. . If many client nodes in an ASN are gradually taking longer to obtain video segments over time, for example, the deep mapper 360 marks the ASN to indicate that additional A nodes are needed and the overlay network builder 350 can “ promote” one or more B:A nodes to B nodes, resulting in partial reconfiguration of the virtual data trunk overlay network and ultimately necessitating new crowd overlay networks in the ASN. In another embodiment, the deep mapper 360 applies deep learning methods on each ASN and assists the overlay network builder 350 in generating intra-ASN crowd overlay networks.

[00182] O criador de redes sobrepostas 350 e o mapeador profundo 360 trabalham juntos para estabelecer vias entre nós de clientes (por meio das redes sobrepostas 100) que são baseadas na arquitetura subjacente da Internet (mapa de interconexão de ASN) e na localização de ASN de nós de clientes sobrepostos sobre aquela arquitetura, a fim de minimizar as retransmissões de segmentos de vídeo ao longo de vias desnecessariamente distantes (ou seja, através de diversos pontos de peer de ASN). Além disso, o criador de redes sobrepostas 350 e o mapeador profundo 360 também trabalham em conjunto para analisar continuamente medidas de desempenho de cliente em tempo real obtidas por dispositivos de cliente 200 e reconfigurar dinamicamente as redes sobrepostas 100 caso essas medidas revelem problemas significativos (frequentemente devido ao congestionamento em pontos de peer de ASN). Como resultado, a volatilidade de QoS da Internet pode ser monitorada e os efeitos sobre nós de clientes de congestionamento (particularmente em pontos de peer de ASN) podem ser minimizados por meio de redirecionamento dinâmico em volta desses problemas “antes que eles ocorram” (com base nos níveis de congestionamento previstos e gerados pelo mapeador profundo 360).[00182] The overlay network builder 350 and the deep mapper 360 work together to establish pathways between customer nodes (through the overlay networks 100) that are based on the underlying Internet architecture (ASN interconnection map) and the location of ASN of client nodes overlaid on top of that architecture in order to minimize retransmissions of video segments over unnecessarily distant paths (i.e., across multiple ASN peer points). Additionally, the overlay network builder 350 and the deep mapper 360 also work together to continuously analyze real-time client performance measurements obtained by client devices 200 and dynamically reconfigure the overlay networks 100 if these measurements reveal significant problems (often due to congestion at ASN peer points). As a result, Internet QoS volatility can be monitored and the effects on client nodes of congestion (particularly at ASN peer points) can be minimized through dynamic rerouting around these problems “before they occur” (with based on congestion levels predicted and generated by the deep mapper 360).

[00183] Em uma realização, o servidor de broadcast virtual 300 inclui um motor de busca de extrator de splash 390 com o propósito de identificar eventos de vídeo em tendência (“splashes”) e permitir aos usuários pesquisar entre o domínio desses eventos e transmitir imediatamente por streaming o resultado de splash desejado na forma de canal de vídeo do servidor de conteúdo POI 380 (em que esse canal não era disponível de outra forma no servidor de broadcast virtual 300).[00183] In one embodiment, the virtual broadcast server 300 includes a splash extractor search engine 390 for the purpose of identifying trending video events (“splashes”) and allowing users to search across the domain of these events and stream immediately streaming the desired splash result in the form of a video channel from the POI content server 380 (where such channel was not otherwise available on the virtual broadcast server 300).

[00184] Em uma realização, o extrator de splash 390 coleta dados continuamente de diversas fontes de notícias (por exemplo, por meio de APIs para o Twitter, feeds RSS, Reddit e dezenas de milhares de revistas online). Em média, milhares de “eventos atuais” distintos são revelados nessas fontes por hora. O extrator de splash 390 emprega métodos automáticos inovadores para identificar esses eventos de tendência (splashes) e localizar e extrair vídeos relacionados que podem ser obtidos e transmitidos por streaming por meio do servidor de conteúdo POI 380.[00184] In one embodiment, splash extractor 390 continuously collects data from multiple news sources (e.g., via APIs for Twitter, RSS feeds, Reddit, and tens of thousands of online magazines). On average, thousands of distinct “current events” are revealed in these sources per hour. The 390 Splash Extractor employs innovative automatic methods to identify these trending events (splashes) and locate and extract related videos that can be obtained and streamed via the POI 380 content server.

[00185] O extrator de splash 390 identifica “desvios da norma”, a fim de detectar splashes. É desenvolvida, por exemplo, uma linha base (sem a necessidade de dados normalizados) empregando, por exemplo, um algoritmo de comparação de Levenshtein padrão entre o domínio de fontes de notícias. Em média, não mais de algumas fontes discutirão o mesmo “tópico” (ou seja, um conjunto de palavras-chave) em curto período de tempo, a menos e até que um tópico específico seja, de fato, uma tendência. Nesse momento (por exemplo, quando quinze ou mais fontes discutirem o mesmo tópico em um curto espaço de tempo), esse tópico é identificado como desvio e, portanto, splash.[00185] The splash extractor 390 identifies “deviations from the norm” in order to detect splashes. For example, a baseline is developed (without the need for normalized data) employing, for example, a standard Levenshtein comparison algorithm across the domain of news sources. On average, no more than a few sources will discuss the same “topic” (i.e., a set of keywords) in any short period of time, unless and until a specific topic is, in fact, trending. At this time (for example, when fifteen or more sources discuss the same topic in a short space of time), that topic is identified as a diversion and therefore a splash.

[00186] O extrator de splash 390 extrai em seguida as palavras-chave “mais importantes” daquelas fontes (por exemplo, quarenta palavras-chave em uma realização) - em uma realização, empregando métodos de rede neural padrão para aprender e prever as palavras-chave distintas dos artigos “relativos a splash”. Essas palavras-chave são então classificadas (por exemplo, como notícias, esportes etc.) e avaliadas por frequência.[00186] Splash extractor 390 then extracts the “most important” keywords from those sources (e.g., forty keywords in one realization) - in one realization, employing standard neural network methods to learn and predict the words different keywords from “splash-related” articles. These keywords are then classified (e.g. like news, sports, etc.) and evaluated by frequency.

[00187] O extrator de splash 390 utiliza em seguida essas palavras-chave para pesquisar as redes sociais em busca de vídeos relativos a cada splash e realiza indexação do texto relacionado e associado a esses canais de vídeo de splash potenciais. Os usuários podem pesquisar por aquele índice ou simplesmente navegar pelas categorias de eventos de vídeo em splash. Ao selecionar um resultado (seja por meio de pesquisa ou de navegação), o usuário pode receber imediatamente por streaming o vídeo desejado. Em uma realização, o usuário é simplesmente ligado à fonte atual do vídeo, enquanto, em outra realização, o vídeo é obtido por meio do servidor de broadcast virtual 300 e transmitido por streaming pelo servidor de conteúdo POI 380 (útil, por exemplo, se grandes quantidades de usuários simultâneos solicitarem o mesmo canal de vídeo em splash).[00187] Splash extractor 390 then uses these keywords to search social media for videos relating to each splash and indexes the text related and associated with these potential splash video channels. Users can search through that index or simply browse the video event categories in Splash. When selecting a result (either through search or browsing), the user can immediately receive the desired video by streaming. In one embodiment, the user is simply linked to the current source of the video, while in another embodiment, the video is obtained via the virtual broadcast server 300 and streamed via the POI content server 380 (useful, for example, if large numbers of simultaneous users request the same video channel in splash).

[00188] Processo de streaming de vídeo dinâmico:[00188] Dynamic video streaming process:

[00189] Após discutir os componentes principais do lado do cliente e do lado do servidor do sistema de broadcast virtual de acordo com a presente invenção, o fluxograma 400 da Fig. 4 ilustra como esses componentes interagem dinamicamente. Em outras palavras, o fluxograma 400 ilustra uma realização de processo de streaming dinâmico de acordo com a presente invenção implementada por esses componentes. Dever-se-á observar que, como grande parte desse processo é dirigida por evento e não linear, o fluxograma 400 ilustra etapas do ponto de vista da interação entre funcionalidade do lado do cliente e do lado do servidor.[00189] After discussing the main client-side and server-side components of the virtual broadcast system in accordance with the present invention, flowchart 400 of Fig. 4 illustrates how these components interact dynamically. In other words, flowchart 400 illustrates a dynamic streaming process embodiment in accordance with the present invention implemented by these components. It should be noted that because much of this process is event-driven and non-linear, flowchart 400 illustrates steps from the standpoint of the interaction between client-side and server-side functionality.

[00190] A etapa 401 ilustra o processo realizado pelo carregador 280 (e descrito acima), em que um evento de vídeo é capturado por um nó de cliente (por exemplo, uma câmera de smartphone 219 no dispositivo de cliente 200), gerado digitalmente ou obtido de uma fonte externa. Em qualquer eventualidade, o cliente (por exemplo, o dispositivo de cliente 200) transmite por streaming segmentos de vídeo daquele evento de vídeo (seja capturado ao vivo ou pré-gravado) para o servidor de broadcast virtual 300.[00190] Step 401 illustrates the process performed by loader 280 (and described above), in which a video event is captured by a client node (e.g., a smartphone camera 219 on client device 200), digitally generated or obtained from an external source. In any eventuality, the client (e.g., client device 200) streams video segments of that video event (whether captured live or pre-recorded) to the virtual broadcast server 300.

[00191] Sejam os eventos de vídeo obtidos de clientes ou de CDN mais tradicional (e sejam eles pré-gravados ou transmitidos ao vivo), o servidor de broadcast virtual 300, na etapa 410, prepara cada canal de vídeo para streaming ao vivo do servidor de conteúdo POI 380, conforme discutido acima. Nesse ponto, em uma realização, é gerada uma página Web do canal, que é eventualmente encontrada por um nó de cliente potencial. Quando um usuário de um dispositivo de cliente 200 clica em um canal desejado, uma solicitação de ligação é enviada para o servidor de sinalização 330, junto com as capacidades do cliente (tais como o tipo de sistema operacional, navegador, conexão etc.). Alternativamente, o usuário do dispositivo de cliente 200 pode encontrar um evento de vídeo em splash em tendência (conforme discutido acima) e selecionar esse evento de vídeo (na etapa 410) para transmissão por streaming na forma de canal de vídeo do servidor de conteúdo POI 380.[00191] Whether the video events are obtained from clients or from the more traditional CDN (and whether they are pre-recorded or broadcast live), the virtual broadcast server 300, at step 410, prepares each video channel for live streaming of the POI 380 content server, as discussed above. At this point, in one realization, a channel web page is generated, which is eventually found by a lead node. When a user of a client device 200 clicks on a desired channel, a connection request is sent to the signaling server 330, along with the capabilities of the client (such as the type of operating system, browser, connection, etc.). Alternatively, the user of client device 200 may find a trending splash video event (as discussed above) and select that video event (at step 410) for streaming in the form of a POI content server video channel. 380.

[00192] Na etapa 412, o servidor de sinalização 330 verifica a conectividade do cliente ao canal (empregando, por exemplo, o protocolo STUN 322 para identificar o endereço de IP público do cliente) e, em seguida, estabelece uma conexão por WebSocket 326 por meio de qualquer firewall NAT que poderá estar presente no cliente e, posteriormente, fornece esse endereço de IP público para outros nós de clientes, a fim de retransmitir um segmento de vídeo para aquele cliente. O servidor de sinalização 330 entrega então o controle para o criador de redes sobrepostas 350, que adiciona o cliente (ainda não classificado) na forma de nó sobre as redes sobrepostas 100, das quais segmentos de vídeo iniciais serão empurrados para o cliente (na etapa 414), de forma que o usuário possa começar imediatamente a assistir ao canal de vídeo, na etapa 415.[00192] In step 412, signaling server 330 checks the client's connectivity to the channel (employing, for example, the STUN protocol 322 to identify the client's public IP address) and then establishes a connection via WebSocket 326 through any NAT firewall that may be present on the client, and subsequently provides that public IP address to other client nodes in order to relay a video segment to that client. The signaling server 330 then hands over control to the overlay creator 350, who adds the client (not yet classified) in node form onto the overlay networks 100, from which initial video segments will be pushed to the client (in step 414), so that the user can immediately start watching the video channel, in step 415.

[00193] Em seguida, o servidor de sinalização 330, na etapa 416, classifica o dispositivo de cliente 200 como nó A, B:A, B ou C e, na etapa 430, emprega o criador de redes sobrepostas 350 e o mapeador profundo 360 para reconfigurar dinamicamente as redes sobrepostas entre ASNs (tronco de dados virtual) e intra-ASN (multidão) 100 para incorporar o dispositivo de cliente 200 na topologia de rede. O servidor de sinalização 330 fornece em seguida as informações de roteamento relevantes para que outros nós de clientes comecem a retransmitir segmentos de vídeo para o dispositivo de cliente 200.[00193] Then, the signaling server 330, in step 416, classifies the client device 200 as node A, B:A, B, or C, and in step 430, employs the overlay network builder 350 and the deep mapper 360 to dynamically reconfigure inter-ASN (virtual data trunk) and intra-ASN (crowd) overlay networks 100 to incorporate client device 200 into the network topology. The signaling server 330 then provides the relevant routing information for other client nodes to begin relaying video segments to the client device 200.

[00194] O servidor de conteúdo POI 380, na etapa 435, responde em seguida a solicitações de HTTP de nós próximos (tipicamente, nós A) para transmitir por streaming segmentos de vídeo para esses nós como o ponto de origem do canal de vídeo ao longo das redes de sobreposição atuais (reconfiguradas) 100, em que cada segmento de vídeo é retransmitido de um nó para outro até ser retransmitido para o dispositivo de cliente 200 e observado por ele.[00194] The POI content server 380, in step 435, next responds to HTTP requests from nearby nodes (typically, nodes A) to stream video segments to those nodes as the origin point of the video channel to the over current (reconfigured) overlay networks 100, where each video segment is relayed from one node to another until it is relayed to and observed by the client device 200.

[00195] Enquanto o dispositivo de cliente 200 estiver recebendo pedaços e compilando- os, na etapa 450, para observar cada segmento de vídeo do canal (e, potencialmente, também retransmitir pedaços para outros nós de clientes designados, na etapa 440), ele está também monitorando o seu desempenho na etapa 425, conforme discutido acima com relação ao monitor de desempenho 240, e fornecendo medidas de desempenho de cliente para o servidor de sinalização 330. Além disso, à medida que cada segmento de vídeo é solicitado, essas solicitações são interceptadas na etapa 455 (por código Javascript de cliente no receptor 250, em uma realização), pois os segmentos de vídeo estão sendo empurrados para o dispositivo de cliente 200 ao longo das redes sobrepostas 100, conforme discutido acima. A seta da etapa 455 para a etapa 425 simplesmente indica que o processo de monitoramento da etapa 425 é contínuo, simultâneo com o recebimento, observação e retransmissão de pedaços de segmentos de vídeo.[00195] While client device 200 is receiving chunks and compiling them, at step 450, to watch each video segment of the channel (and potentially also retransmit chunks to other designated client nodes, at step 440), it is also monitoring its performance at step 425, as discussed above with respect to performance monitor 240, and providing client performance measurements to signaling server 330. Additionally, as each video segment is requested, these requests are intercepted at step 455 (by client Javascript code at receiver 250, in one embodiment), as the video segments are being pushed to the client device 200 along the overlay networks 100, as discussed above. The arrow from step 455 to step 425 simply indicates that the monitoring process of step 425 is continuous, simultaneous with receiving, observing, and retransmitting chunks of video segments.

[00196] Também conforme indicado acima, o dispositivo de cliente 200 inicia periodicamente solicitações de HTTP por arquivos de manifesto (por exemplo, que contêm os locais dos oito segmentos de vídeo seguintes) do servidor de conteúdo POI 380, muito embora segmentos de vídeo estejam sendo empurrados para o dispositivo de cliente 200 de outros nós de clientes. Ocasionalmente, caso um segmento de vídeo não chegue em tempo, o dispositivo de cliente 200 solicitará aquele segmento de vídeo diretamente ao servidor de conteúdo POI 380 como local de fallback. Além disso, ocasionalmente, de acordo com padrões de streaming adaptativo 224, o dispositivo de cliente 200 pode também entrar em contato com o servidor de conteúdo POI 380 para solicitar velocidade de bits modificada (por exemplo, mediante detecção de alteração dos seus níveis de desempenho) para segmentos de vídeo subsequentes. Conforme indicado acima, entretanto, o receptor 250 pode bem detectar essa necessidade mais cedo e entrar em contato com o servidor de broadcast visual 300 para efetuar essas alterações por meio das redes sobrepostas 100, orientando um nó de cliente de alimentação para empurrar segmentos de vídeo com resolução mais baixa ou mais alta para o dispositivo de cliente 200 automaticamente (ou seja, não em resposta à sua solicitação).[00196] Also as indicated above, client device 200 periodically initiates HTTP requests for manifest files (e.g., containing the locations of the following eight video segments) from POI content server 380, even though video segments are being pushed to the 200 client device from other client nodes. Occasionally, if a video segment does not arrive in time, the client device 200 will request that video segment directly from the POI content server 380 as a fallback location. Additionally, from time to time, in accordance with adaptive streaming standards 224, the client device 200 may also contact the POI content server 380 to request modified bitrate (e.g., upon detection of changes in its performance levels). ) for subsequent video segments. As indicated above, however, the receiver 250 may well detect this need earlier and contact the visual broadcast server 300 to effect these changes via the overlay networks 100, directing a feeder client node to push video segments with lower or higher resolution to the client device 200 automatically (i.e., not in response to your request).

[00197] Na etapa 452, o servidor de conteúdo POI 380 responde a essas solicitações de HTTP e fornece os arquivos de manifesto e segmentos de vídeo fallback solicitados para o dispositivo de cliente 200. Conforme indicado acima, alterações das velocidades de bits são abordadas por meio das redes sobrepostas 100 (e na etapa 430), o que resulta em segmentos de vídeo com resolução mais alta ou mais baixa que são empurrados para o dispositivo de cliente 200.[00197] In step 452, the POI content server 380 responds to these HTTP requests and provides the requested manifest files and fallback video segments to the client device 200. As indicated above, changes to bit rates are addressed by through the overlay networks 100 (and at step 430), which results in higher or lower resolution video segments being pushed to the client device 200.

[00198] A etapa 454 engloba o processo contínuo (realizado para cada segmento de vídeo, em uma realização, e descrito em detalhes acima) realizado pelo rastreador de desempenho 340, criador de redes sobrepostas 350 e mapeador profundo 360. Nesta etapa 454, as informações de desempenho de clientes são continuamente atualizadas e, se necessário, na etapa 430 (conforme indicado pela seta da etapa 454 para a etapa 430), as redes sobrepostas 100 são reconfiguradas dinamicamente e novas informações de roteamento são fornecidas para nós de retransmissão relevantes por meio do servidor de sinalização 330.[00198] Step 454 encompasses the continuous process (performed for each video segment, in one embodiment, and described in detail above) performed by the performance tracker 340, overlay network creator 350, and deep mapper 360. In this step 454, the Client performance information is continually updated and, if necessary, at step 430 (as indicated by the arrow from step 454 to step 430), the overlay networks 100 are dynamically reconfigured and new routing information is provided to relevant relay nodes by via the signaling server 330.

[00199] Por fim, na etapa 460, o extrator de splash 390 identifica continuamente eventos de vídeo de splash em tendência, que os usuários de dispositivos de clientes 200 podem pesquisar ou navegar e, em seguida, receber por streaming para assistir imediatamente, conforme discutido acima.[00199] Finally, in step 460, splash extractor 390 continually identifies trending splash video events, which users of client devices 200 can search or browse and then stream to watch immediately as per discussed above.

[00200] A presente invenção foi aqui descrita fazendo referência a realizações específicas, conforme ilustrado nos desenhos anexos. Dever-se-á compreender que, à luz da presente invenção, realizações adicionais dos conceitos descritos no presente podem ser idealizadas e implementadas dentro do escopo da presente invenção pelos técnicos no assunto.[00200] The present invention has been described here with reference to specific embodiments, as illustrated in the attached drawings. It should be understood that, in light of the present invention, additional embodiments of the concepts described herein may be devised and implemented within the scope of the present invention by those skilled in the art.

Claims (8)

1. Servidor de broadcast virtual (300) adaptado para determinar roteamento de cada um dentre uma pluralidade de segmentos de conteúdo digital para uma pluralidade de nós de cliente de destino (200) de uma rede subjacente (110), o servidor de broadcast virtual (300) caracterizado pelo fato de que compreende: (a) uma memória adaptada para armazenar um mapa de interconexão de Número de Sistema Autônomo (ASN) da rede subjacente (110) e dos pontos de peer que os interconectam e uma localização de ASN de cada nó de cliente de destino (200); (b) um banco de dados de redes sobrepostas (375) adaptado para armazenar uma topologia de rede sobreposta representando um estado atual de uma rede sobreposta (100) construída sobre a rede subjacente (110), em que a topologia de rede sobreposta inclui: (i) cada um dentre a pluralidade de nós de cliente de destino (200), cada nó de cliente de destino sendo tanto um nó da rede sobreposta (100) quanto da rede subjacente (110); e (ii) um conjunto de trajetos de roteamento que cada segmento atravessa à medida que é retransmitido entre a pluralidade de nós de cliente de destino (200) via links compartilhados que interconectam componentes da rede subjacente (110); (c) um rastreador de desempenho (340) adaptado para monitorar medidas do tráfego de rede entre a pluralidade de nós de cliente de destino (200) ao longo da rede sobreposta (100), em que as mencionadas medidas incluem o congestionamento nos pontos de peer de ASN; em que o servidor de broadcast virtual (300) compreende adicionalmente: (d) um motor de aprendizado profundo (360) adaptado para analisar as medidas e o mapa de interconexão de ASN da rede subjacente (110) ao longo do tempo para prever os níveis de congestionamento que refletem a alteração da capacidade dos pontos de peer de ASN ao longo do tempo; e (e) um criador de redes sobrepostas (350) adaptado para: (1) determinar se um ou mais dos níveis de congestionamento previstos atendem um limite de congestionamento predefinido e, caso sim, (ii) reconfigurar dinamicamente a topologia de rede sobreposta modificando um ou mais dos trajetos de roteamento.1. A virtual broadcast server (300) adapted to determine routing of each of a plurality of digital content segments to a plurality of destination client nodes (200) of an underlying network (110), the virtual broadcast server ( 300) characterized by the fact that it comprises: (a) a memory adapted to store an Autonomous System Number (ASN) interconnection map of the underlying network (110) and the peer points that interconnect them and an ASN location of each target client node (200); (b) an overlay network database (375) adapted to store an overlay network topology representing a current state of an overlay network (100) built on the underlying network (110), wherein the overlay network topology includes: (i) each of the plurality of target client nodes (200), each target client node being both a node of the overlay network (100) and the underlying network (110); and (ii) a set of routing paths that each segment traverses as it is relayed between the plurality of destination client nodes (200) via shared links that interconnect components of the underlying network (110); (c) a performance tracker (340) adapted to monitor measures of network traffic between the plurality of target customer nodes (200) along the overlay network (100), wherein said measures include congestion at points of ASN peer; wherein the virtual broadcast server (300) further comprises: (d) a deep learning engine (360) adapted to analyze the ASN interconnect measurements and map of the underlying network (110) over time to predict levels congestion indicators that reflect the changing capacity of ASN peer points over time; and (e) an overlay network builder (350) adapted to: (1) determine whether one or more of the predicted congestion levels meet a predefined congestion threshold and, if so, (ii) dynamically reconfigure the overlay network topology by modifying one or more of the routing paths. 2. Servidor de broadcast virtual (300), de acordo com a reivindicação 1, caracterizado pelo fato de que a rede subjacente (110) é a Internet e os segmentos de conteúdo digital são segmentos ordenados de conteúdo de vídeo transmitido por streaming para a pluralidade de nós de cliente de destino (200).2. The virtual broadcast server (300) of claim 1, wherein the underlying network (110) is the Internet and the digital content segments are ordered segments of video content streamed to the plurality of target client nodes (200). 3. Servidor de broadcast virtual (300), de acordo com a reivindicação 1, caracterizado pelo fato de que a reconfiguração da topologia de rede sobreposta (100) é com base, em parte, nas localizações de ASN de um ou mais dentre a pluralidade de nós de cliente de destino (200).3. The virtual broadcast server (300) of claim 1, wherein the reconfiguration of the overlay network topology (100) is based, in part, on the ASN locations of one or more of the plurality of target client nodes (200). 4. Servidor de broadcast virtual (300), de acordo com a reivindicação 1, caracterizado pelo fato de que a reconfiguração da topologia de rede sobreposta (100) é com base nas tendências atuais e históricas detectadas a partir das análises das medidas ao longo do tempo.4. Virtual broadcast server (300), according to claim 1, characterized by the fact that the reconfiguration of the overlay network topology (100) is based on current and historical trends detected from analysis of measurements throughout the time. 5. Método de broadcast virtual para roteamento de cada um dentre uma pluralidade de segmentos de conteúdo digital originário em um servidor ou nó para uma pluralidade de nós de cliente de destino (200) de uma rede subjacente (110), o método sendo desempenhado por um servidor de broadcast virtual (300) e caracterizado pelo fato de que compreende as seguintes etapas: (a) manter um mapa de interconexão de Número de Sistema Autônomo (ASN) da rede subjacente (110) e dos pontos de peer que os interconectam e uma localização de ASN de cada nó de cliente de destino (200); (b) gerar uma topologia de rede sobreposta e armazenar via um banco de dados de redes sobrepostas (375) uma topologia de rede sobreposta representando um estado atual de uma rede sobreposta (100) construída sobre a rede subjacente (110), em que a topologia de rede sobreposta inclui: (i) cada um dentre a pluralidade de nós de cliente de destino (200), cada nó de cliente de destino sendo tanto um nó da rede sobreposta (100) quanto da rede subjacente (110); e (ii) um conjunto de trajetos de roteamento que cada segmento atravessa à medida que é retransmitido entre a pluralidade de nós de cliente de destino (200) via links compartilhados que interconectam componentes da rede subjacente (110); (c) monitorar via um rastreador de desempenho (340) medidas do tráfego de rede entre a pluralidade de nós de cliente de destino (200) ao longo da rede sobreposta (100), em que as mencionadas medidas incluem o congestionamento nos pontos de peer de ASN; em que o método compreende adicionalmente as seguintes etapas: (d) analisar as medidas e o mapa de interconexão de ASN da rede subjacente (110) ao longo do tempo para prever via um motor de aprendizado profundo (360) os níveis de congestionamento que refletem a alteração da capacidade dos pontos de peer de ASN ao longo do tempo; (e) determinar via um criador de redes sobrepostas (350) se um ou mais dos níveis de congestionamento previstos atendem um limite de congestionamento predefinido e, caso sim, (f) reconfigurar dinamicamente via criador de redes sobrepostas (350) a topologia de rede sobreposta modificando um ou mais dos trajetos de roteamento.5. Virtual broadcast method for routing each of a plurality of digital content segments originating on a server or node to a plurality of destination client nodes (200) of an underlying network (110), the method being performed by a virtual broadcast server (300) and characterized by the fact that it comprises the following steps: (a) maintaining an Autonomous System Number (ASN) interconnection map of the underlying network (110) and the peer points that interconnect them and an ASN location of each target customer node (200); (b) generating an overlay network topology and storing via an overlay network database (375) an overlay network topology representing a current state of an overlay network (100) built on the underlying network (110), wherein the overlay network topology includes: (i) each of the plurality of target client nodes (200), each target client node being both a node of the overlay network (100) and the underlying network (110); and (ii) a set of routing paths that each segment traverses as it is relayed between the plurality of destination client nodes (200) via shared links that interconnect components of the underlying network (110); (c) monitoring via a performance tracker (340) measurements of network traffic between the plurality of target client nodes (200) along the overlay network (100), wherein said measurements include congestion at peer points from ASN; wherein the method further comprises the following steps: (d) analyzing the ASN interconnect measurements and map of the underlying network (110) over time to predict via a deep learning engine (360) the congestion levels that reflect the changing capacity of ASN peer points over time; (e) determine via an overlay builder (350) whether one or more of the predicted congestion levels meet a predefined congestion threshold and, if so, (f) dynamically reconfigure via the overlay builder (350) the network topology overridden by modifying one or more of the routing paths. 6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a rede subjacente (110) é a Internet e os segmentos de conteúdo digital são segmentos ordenados de conteúdo de vídeo transmitido por streaming para a pluralidade de nós de cliente de destino (200).6. The method of claim 5, wherein the underlying network (110) is the Internet and the digital content segments are ordered segments of video content streamed to the plurality of target client nodes (200). 7. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a reconfiguração da topologia de rede sobreposta (100) é com base, em parte, nas localizações de ASN de um ou mais dentre a pluralidade de nós de cliente de destino (200).7. The method of claim 5, wherein the reconfiguration of the overlay network topology (100) is based, in part, on the ASN locations of one or more of the plurality of target customer nodes (200). 8. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a reconfiguração da topologia de rede sobreposta (100) é com base nas tendências atuais e históricas detectadas a partir das análises das medidas ao longo do tempo.8. Method, according to claim 5, characterized by the fact that the reconfiguration of the overlay network topology (100) is based on current and historical trends detected from analysis of measurements over time.
BR112017013811-5A 2014-12-26 2015-12-23 DIGITAL CONTENT VIRTUAL BROADCAST METHOD AND SERVER BR112017013811B1 (en)

Applications Claiming Priority (5)

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

Publications (2)

Publication Number Publication Date
BR112017013811A2 BR112017013811A2 (en) 2018-02-27
BR112017013811B1 true BR112017013811B1 (en) 2024-03-26

Family

ID=

Similar Documents

Publication Publication Date Title
US10992998B2 (en) Method and system for adaptive virtual broadcasting of digital content
US11212184B2 (en) Predictive 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
US20190312810A1 (en) Adaptive overlay network architecture
Taha A novel CDN testbed for fast deploying HTTP adaptive video streaming
Silva et al. A holistic SDN-capable session-plane tailored for efficient IoMT smart surveillance applications
Ojo et al. A reliable peer-to-peer streaming protocol in low-capacity networks
BR112017013811B1 (en) DIGITAL CONTENT VIRTUAL BROADCAST METHOD AND SERVER
Korpeoglu et al. Dragonfly: cloud assisted peer-to-peer architecture for multipoint media streaming applications
Wang et al. SmartPeerCast: a Smart QoS driven P2P live streaming framework
Awiphan et al. Proxy-assisted rate adaptation for 4K video streaming on named data networking
US20140181261A1 (en) Method and apparatus for providing efficient transmission of streaming video through a complex ip network
Richerzhagen Supporting transitions in peer-to-peer video streaming
Mirkin Reliable real-time stream distribution using an Internet multicast overlay
Smith et al. Simulation and data analysis of peer-to-peer traffic for live video streaming
Seung et al. Randomized routing in multi-party internet video conferencing
Miers et al. An architecture for P2P locality in managed networks using hierarchical trackers
Kosonen Video content delivery over the Internet
da Silva Multiple Multicast Trees for media distribution
Rio et al. Deliverable D6. 2
Pourmir Pervasive router caching strategies for staggered video multicasts
Silva et al. 3D Media Distribution over the Internet with Hybrid Client-Server and P2P Approach