Home Technical Articles Otimizar a CDN para transmissão ao vivo
Applications

Otimizar a CDN para transmissão ao vivo

About The Author

Outline

A multidão Flash e o seu Live Stream

À medida que os serviços de streaming lutam por um número limitado de espetadores e por uma diminuição da atenção, os eventos ao vivo, que são um motor comprovado de envolvimento do público, tornaram-se um fator importante na estratégia de conteúdo de uma editora. No entanto, por mais que a transmissão ao vivo possa entregar audiências de forma confiável, transmitir eventos ao vivo de forma confiável em escala vem com um conjunto de desafios. As redes de distribuição de conteúdo (CDNs) podem ajudar a fornecer escalabilidade sob demanda; no entanto, até os CDNs devem ser otimizados para transmissão ao vivo. Talvez o desafio mais óbvio de transmissão ao vivo seja a “multidão flash” – este fenómeno ocorre quando muitos espetadores entram numa transmissão ao vivo de uma só vez – com fome para apanhar o pontapé inicial ou a ação extra. Seguindo o comportamento típico do público que observamos ao transmitir mais de 100 000 eventos desportivos, durante o jogo final da NBA 6, a audiência cresceu rapidamente de quase nada no tipoff para um pico de 2,04 milhões de espetadores no 3º trimestre. A audiência saltou de menos de 10 000 sessões para mais de 1 milhões na primeira hora e mais 1,5 milhões após o intervalo, às vezes somando mais de 100 000 novos espetadores por minuto. Este tipo de escala rápida exerce pressão sobre qualquer CDN. Mas entregar vídeo ao vivo é ainda mais desafiador. Qualquer interrupção pode levar a uma interrupção na reprodução.

Como este exemplo de um recente evento ao vivo na nossa rede ilustra, o fenómeno “flash crowd” torna a transmissão de vídeo através de uma CDN mais difícil do que a transmissão de bytes de conteúdo normal.

neste artigo, nós olhamos para multidões e outros desafios e, em seguida, exploramos como a Verizon Media aproveita os seus muitos anos de experiência no espaço CDN para resolver alguns dos pontos problemáticos comuns para os nossos clientes, tornando-a a escolha certa para a entrega de eventos ao vivo de alta qualidade – não importa se são desportos, concertos, política… ou talvez o primeiro aterrar em Marte.

Por que o Live Stream Caching é diferente

A entrega de eventos ao vivo pela internet envolve o uso de um ou mais formatos de streaming ABR (Adaptive Bitrate), como MPEG-DASH, Apple HLS, Adobe HDS e Microsoft Smooth Streaming. Normalmente, depende de servidores web padrão de HTTP como origens e CDNs para distribuir o conteúdo em escala.

Nossa grande CDN global na Verizon Media, agora Edgio, tem muitos pops e mais de 250 Tbps de capacidade, para que possamos facilmente escalar para lidar com grandes picos de tráfego e multidões de flash. No entanto, a capacidade e a escala são apenas parte da equação. O que é especialmente importante na transmissão ao vivo é o quão bem a CDN pode interagir com o servidor de origem e os clientes enquanto escala para grandes audiências de visualização que vêm todas de uma só vez.

O perfil de tráfego ao vivo é único e distintamente diferente de qualquer outra coisa, mesmo do VOD, porque durante eventos ao vivo, o codificador está continuamente publicando novos segmentos de mídia (duração típica é de 2 a 10 segundos) para o servidor de origem, e a CDN está sempre buscando esse conteúdo recém-lançado e propagando-o pela rede. Este processo demora um período de tempo não zero; portanto, não é possível evitar uma certa latência. No entanto, é crucial que a CDN seja extremamente eficiente e inteligente em preencher o cache e lidar com as solicitações dos clientes durante e, ainda mais importante, antes de iniciar o processo de preenchimento do cache. Idealmente, a CDN deve ser capaz de manter a carga no servidor de origem a um mínimo absoluto, evitando adicionar demasiada latência extra a todo o canal de mídia. Isto garante que os utilizadores finais do lado do cliente desfrutem de uma reprodução suave e contínua.

A nossa CDN tem uma vasta gama de funcionalidades que nos permitem maximizar o descarregamento de origem e melhorar a experiência do utilizador final antes, durante e depois de um processo de preenchimento de cache estar concluído.

Otimizações do Live Stream Cache

Como mostrado no gráfico abaixo, a nossa Plataforma de Mídia emprega uma série de otimizações sintonizáveis para alcançar uma entrega rápida e confiável para transmissão ao vivo. Nas secções seguintes, explicaremos porque são importantes e como funcionam.

Escudo de origem

Em primeiro lugar, o Origin Shield é uma camada de armazenamento em cache extra entre os servidores de borda da CDN e a origem. Criamos uma origem virtual num dos pops que, por sua vez, gere todos os pedidos de todos os outros locais pop. Quando um servidor de borda CDN recebe uma solicitação de um usuário e não consegue satisfazer a solicitação do cache, o servidor de borda obtém o objeto do pop-up em vez de puxar diretamente da origem do cliente. Como CDN global, oferecemos aos clientes a opção de atribuir um único pop como escudo ou um escudo pop por região (EUA, UE, Ásia, etc.).

O Origin Shield ajuda-nos a proteger o servidor Origin em caso de grandes picos de tráfego e multidões de flash. No entanto, pode não ser suficiente para lidar com o perfil de tráfego exclusivo da transmissão ao vivo.

Partilha parcial de cache

No streaming ao vivo, um padrão típico é que vários clientes solicitem um segmento do fluxo que ainda não está no cache. Há algumas maneiras de uma CDN lidar com essas solicitações. Primeiro, ele pode enviar várias solicitações de preenchimento simultâneo de cache para a origem (uma por cada solicitação de novo cliente), o que ajuda a minimizar a latência e a otimizar a experiência do usuário final. Uma segunda opção é enviar uma única solicitação de preenchimento de cache que serve o primeiro cliente sem demora, mas mantém os outros à espera até que o arquivo completo seja carregado no cache (este método visa minimizar a carga na origem).

Infelizmente, nenhuma destas opções representa uma solução particularmente ótima.

Em vez disso, a nossa abordagem estabelece um equilíbrio entre estas duas opções permitindo que um único preenchimento de cache já em voo seja partilhado entre vários clientes que solicitem o mesmo conteúdo já parcialmente no cache. O Partial Cache Sharing permite que outros clientes recuem de um preenchimento de cache pré-existente, para que o conteúdo de vídeo possa ser entregue a vários clientes simultaneamente assim que começar a ser carregado no cache. O resultado: Tempos de arranque mais rápidos, menor latência e menor carga de origem.

Tempo de espera do preenchimento da cache

Há um intervalo entre quando o cliente pede o arquivo de vídeo e quando ele começa a ser carregado no pop CDN. Este ponto no tempo é muito pequeno (pode acontecer em apenas alguns milissegundos), mas a multidão de flash em transmissão ao vivo torna-o um desafio muito significativo porque pode ser composto por centenas ou até milhares de pedidos. Neste caso, a funcionalidade Partial Cache Sharing descrita acima ainda não teria começado. Normalmente, isso é considerado um caso de canto, mas é mais provável ocorrer com transmissão ao vivo devido a multidões de flash. Neste momento crítico, a CDN poderia sobrecarregar a origem ao passar demasiados pedidos de uma só vez.

Várias solicitações para o mesmo arquivo são agrupadas para evitar esse problema, e apenas uma única solicitação é feita para a origem. O Tempo de Espera de Enchimento de Cache é uma sala de espera virtual para melhorar o descarregamento de origem e lidar com multidões de flash. Quando os cabeçalhos de resposta de HTTP para a única solicitação chegam e essa solicitação começa a receber o arquivo da origem, o cache pode ser compartilhado com todos os usuários em grupo em espera. O tempo de espera real (milissegundos) é altamente configurável e pode ser ajustado com base em capacidades específicas de origem e necessidades do cliente.

Pedido de Despawn para Miss

Quando vários utilizadores pedem o mesmo conteúdo não armazenado em cache, como discutido acima, existe o risco de o primeiro cliente estar num dispositivo lento, como um smartphone numa ligação 3G. Isso prejudica todos os outros clientes porque um cache normalmente preenche à taxa em que o cliente pode absorver o conteúdo. Para evitar este cenário, podemos dissociar o nosso preenchimento de cache do primeiro cliente potencialmente lento/falhado e preenchê-lo da origem mais rapidamente (à nossa velocidade máxima). Essa capacidade também é mais confiável porque agora o preenchimento de cache continua mesmo se o cliente inicial se desconeta ou se algo faz com que a conexão caia. Nós descrevemos este comportamento como Sub-pedido de geração para Miss. Esta funcionalidade também desencadeia um preenchimento de cache para todo o conteúdo, satisfazendo diferentes pedidos de intervalo de bytes com apenas uma viagem para o servidor de origem. O Subpedido de Despawn para o Tempo de Espera de Preenchimento de Cache e Permitem-se complementam no seu uso, trabalhando em conjunto para acelerar a transmissão ao vivo e melhorar as métricas, como o tempo de início do vídeo e o buffer.

Outras otimizações do Live Streaming CDN

Filagem a quente
À medida que a audiência de um fluxo ao vivo se expande rapidamente, os servidores de cache que anteriormente lidavam facilmente com a carga a 500 mil espetadores ficam subitamente sobrecarregados quando a audiência triplica ou quadruplica em poucos minutos. Além disso, os espetadores podem estar concentrados em torno de uma área geográfica específica, normalmente para um evento desportivo ou político popular. Para muitas transmissões de desporto ao vivo ou campeonatos, é provável que a concentração dos espetadores seja significativamente maior nos mercados que rodeiam as equipas participantes.

Quando isso acontece, os segmentos de transmissão ao vivo precisam ser replicados rapidamente para outros servidores dentro dos POPs afetados para ajudar a espalhar a carga.

O Hot Filing é o processo de detetar e replicar automaticamente conteúdo extremamente popular, como segmentos de transmissão ao vivo, para vários servidores de cache em um pop para lidar com grande demanda. Esta é uma prática comum entre as redes de distribuição de conteúdo, mas a velocidade com que essas propagações podem acontecer é importante. Esta é uma área de foco contínuo para Edgio. Recentemente, reduzimos a nossa velocidade de replicação de 5 segundos para cerca de 1–2 segundos. Além das transmissões ao vivo, também podemos tornar outros conteúdos quentes, como anúncios, dentro de uma transmissão ao vivo.

Capacidade e largura de banda
A capacidade e a largura de banda referem-se à capacidade extra na torneira para satisfazer as exigências imprevisíveis dos fluxos ao vivo. Assim como não há substituto para centímetros cúbicos para carros musculares, não há substituto para a largura de banda com CDNs. Colocar estas e outras estratégias de otimização de cache em jogo requer que a rede tenha a capacidade e a largura de banda para lidar com a transmissão em tempo real em grande escala enquanto equilibra a carga que outros utilizadores colocam nela.

Atualmente, mais de 80% do conteúdo da nossa rede é vídeo, com uma boa parte desse tráfego dedicado a transmissões ao vivo. Já entregamos mais de 125 000 eventos ao vivo geridos na nossa rede. E à medida que a qualidade do conteúdo continua a melhorar, juntamente com a crescente popularidade das transmissões ao vivo, estamos a caminho de atingir 100 Tbps de capacidade de rede até ao final de 2019. A nossa rede inclui mais de 140 POPs globais e 5 000 interligações ou ligações de última milha.

Tudo a trabalhar em conjunto

As pesadas exigências da transmissão ao vivo vão levar a sua tecnologia ao limite. Entregar um fluxo suave para milhares ou até milhões requer configurações especiais de armazenamento em cache. A combinação de Origin Shield, Partial Cache Sharing, Tempo de Espera de Preenchimento de Cache, Sub-Request de Despawn para Miss e Hot Filing são recursos poderosos que podem ser adaptados à sua infraestrutura e exigências únicas de streaming ao vivo. Eles capacitam a nossa CDN para oferecer o melhor desempenho possível para eventos de streaming ao vivo, independentemente de o objeto já estar no cache, ou apenas parcialmente no cache, ou o preenchimento do cache ainda não ter iniciado e ainda estar pendente – e mesmo na situação em que a solicitação acontece ser realmente a primeira solicitação do cliente para um conteúdo único.

A CDN é um componente essencial na infraestrutura de vídeo ao vivo. O seu sistema de servidor distribuído entrega conteúdo aos seus utilizadores, uma vez que considera localizações geográficas e de rede e a própria origem para fornecer conteúdo da forma mais rápida e fiável possível. No entanto, as técnicas para otimizar a CDN para entrega ao vivo diferem consideravelmente de outras aplicações que também beneficiam de uma CDN, incluindo vídeo sob demanda (VOD). Com as otimizações de cache certas e muito espaço, a CDN está mais do que a lidar com as flutuações e variabilidade inerentes ao streaming ao vivo.

A nossa CDN oferece capacidades de distribuição de conteúdo maduras e bem comprovadas e otimizações que minimizam a carga no servidor de origem enquanto entrega transmissões ao vivo aos espetadores em grande escala. As nossas otimizações de armazenamento em cache de vídeo ao vivo, muitas das quais podem ser sintonizadas para clientes individuais, trabalham em conjunto para proteger as exigências dos espetadores de sobrecarregar a sua infraestrutura de vídeo.