Home Artigos técnicos Otimizando o CDN para Live Streaming
Applications

Otimizando o CDN para Live Streaming

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 atenção cada vez menor, os eventos ao vivo, que são um driver comprovado de engajamento do público, tornaram-se um fator importante na estratégia de conteúdo de um editor. No entanto, tanto quanto a transmissão ao vivo pode entregar de forma confiável o público, a transmissão confiável de eventos ao vivo 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é mesmo os CDNs devem ser otimizados para streaming ao vivo.

Talvez o desafio mais óbvio de transmissão ao vivo seja a “multidão flash” – esse fenômeno ocorre quando muitos espetadores entram em uma transmissão ao vivo de uma só vez – com fome para pegar o pontapé inicial ou ação de horas extras. Seguindo o comportamento típico do público que observamos ao transmitir mais de 100 000 eventos esportivos, 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. Esse tipo de escala rápida coloca 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 evento ao vivo recente em nossa rede ilustra, o fenômeno “flash crowd” torna a exibição de vídeo através de uma CDN mais difícil do que a exibição de bytes de conteúdo regulares.

neste artigo, vamos dar uma olhada em multidões de flash e outros desafios e, em seguida, explorar como a Verizon Media aproveita seus muitos anos de experiência no espaço CDN para resolver alguns dos pontos problemáticos comuns para nossos clientes, incluindo a tecnologia de comunicação e a tecnologia de comunicação. tornando-a a escolha certa para oferecer eventos ao vivo de alta qualidade – não importa se são esportes, concertos, política… ou talvez o primeiro pouso 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, ele depende de servidores web HTTP padrão 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 escalar facilmente para lidar com grandes picos de tráfego e multidões de flash. No entanto, capacidade e 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 públicos de visualização que vêm todos 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á publicando continuamente 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. Esse processo leva um tempo não zero; portanto, alguma latência não pode ser evitada. 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, o 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 pipeline de mídia. Isso garante que os usuários finais do lado do cliente desfrutem de uma reprodução suave e contínua.

Nossa CDN tem uma ampla gama de recursos que nos permitem maximizar o descarregamento de origem e melhorar a experiência do usuário final antes, durante e depois que um processo de preenchimento de cache é concluído.

Otimizações de Cache de Transmissão em Direto

Como mostrado no gráfico abaixo, nossa Plataforma de Mídia emprega uma série de otimizações ajustáveis para alcançar uma entrega rápida e confiável para streaming ao vivo. Nas seções a seguir, explicaremos por que elas são importantes e como funcionam.

Escudo de origem

Em primeiro lugar, o Origin Shield é uma camada de cache extra entre os servidores de borda CDN e a origem. Criamos uma origem virtual em um dos pops que, por sua vez, gerencia todas as solicitações 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 nos ajuda 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 de streaming ao vivo.

Partilha parcial de cache

Em 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 pelas quais uma CDN pode lidar com essas solicitações. Primeiro, ele pode enviar várias solicitações simultâneas de preenchimento de cache para a origem (uma por cada solicitação de novo cliente), o que ajuda a minimizar a latência e otimizar a experiência do usuário final. Uma segunda opção é enviar uma única solicitação de preenchimento de cache que atende ao primeiro cliente sem demora, mas mantém os outros esperando até que o arquivo completo seja carregado no cache (esse método visa minimizar a carga na origem).

Infelizmente, nenhuma dessas opções representa uma solução particularmente grande.

Em vez disso, nossa abordagem estabelece um equilíbrio entre essas duas opções, permitindo que um único preenchimento de cache já em voo seja compartilhado entre vários clientes solicitando o mesmo conteúdo já parcialmente no cache. O Compartilhamento de Cache Parcial 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 ele começar a carregar no cache. O resultado: Tempos de inicialização mais rápidos, menor latência e menor carga de origem.

Tempo de espera de preenchimento de cache

Há um intervalo entre quando o cliente solicita 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 streaming ao vivo faz com que seja um desafio muito significativo, porque poderia ser composto de centenas ou até milhares de solicitações. Neste caso, o recurso Compartilhamento Parcial de Cache descrito acima não teria sido iniciado ainda. Normalmente, isso é considerado um caso de canto, mas é mais provável ocorrer com streaming ao vivo devido a multidões de flash. Nesse momento crítico, a CDN poderia sobrecarregar a origem, passando muitas solicitações 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 preenchimento 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 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 pool em espera. O “tempo de espera” (milissegundos) real é altamente configurável e pode ser ajustado com base em capacidades específicas de origem e necessidades do cliente.

Subsolicitação de Despawn para Miss

Quando vários usuários solicitam o mesmo conteúdo não armazenado em cache, como discutido acima, há o risco de que o primeiro cliente esteja em um dispositivo lento, como um smartphone em uma conexão 3G. Isso prejudica todos os outros clientes porque um cache normalmente preenche a taxa em que o cliente pode absorver o conteúdo. Para evitar esse cenário, podemos desacoplar nosso preenchimento de cache do primeiro cliente potencialmente lento/falhado e preencher da origem mais rapidamente (em nossa velocidade máxima). Esse recurso também é mais confiável porque agora o preenchimento de cache continua mesmo se o cliente inicial se desconetar ou se algo fizer com que a conexão seja suspensa. Nós descrevemos esse comportamento como sub-solicitação de spawn para Miss. Esse recurso também aciona um preenchimento de cache para todo o conteúdo, satisfazendo diferentes solicitações de intervalo de bytes com apenas uma viagem para o servidor de origem. O tempo de espera de preenchimento de falta e cache se complementam em seu uso, trabalhando juntos para acelerar o streaming ao vivo e melhorar métricas, como tempo de início e recolocação em buffer.

Outras otimizações de CDN de transmissão ao vivo

Filagem a quente
À medida que a visualização de um fluxo ao vivo se expande rapidamente, os servidores de cache que anteriormente lidaram facilmente com a carga em 500K visualizadores são 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 esportivo ou político popular. Para muitas transmissões de esportes ao vivo ou campeonatos, a concentração de espetadores é provavelmente significativamente maior nos mercados em torno das equipes 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 fluxo 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 nossa velocidade de replicação de 5 segundos para cerca de 1–2 segundos. Além de transmissões ao vivo, também podemos fazer outros conteúdos quentes, como anúncios, dentro de uma transmissão ao vivo.

Capacidade e largura de banda
Capacidade e largura de banda referem-se à capacidade extra na torneira para atender às demandas imprevisíveis de transmissões ao vivo. Assim como não há substituto para centímetros cúbicos para carros musculares, não há substituto para largura de banda com CDNs. Colocar essas e outras estratégias de otimização de cache em jogo requer que a rede tenha capacidade e largura de banda para lidar com streaming ao vivo em grande escala, enquanto equilibra a carga que outros usuários colocam sobre ela.

Atualmente, mais de 80% do conteúdo em nossa rede é vídeo, com uma boa parte desse tráfego dedicado a transmissões ao vivo. Nós entregamos mais de 125 000 eventos ao vivo gerenciados em nossa rede. E à medida que a qualidade do conteúdo continua a melhorar, juntamente com a crescente popularidade de transmissões ao vivo, estamos no caminho certo para atingir 100 Tbps de capacidade de rede até o final de 2019. Nossa rede possui mais de 140 POPs globais e 5 000 interconexões ou conexões de última milha.

Tudo trabalhando juntos

As demandas pesadas da transmissão ao vivo vão levar sua tecnologia ao limite. Entregar um fluxo suave para milhares ou até milhões requer configurações especiais de cache. A combinação de Origin Shield, Partial Cache Sharing, Cache Fill Wait Time, Spawn Sub Request for Miss e Hot Filing são recursos poderosos que podem ser adaptados à sua infraestrutura e demandas exclusivas de streaming ao vivo. Eles capacitam 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 o pedido acontece ser realmente o primeiro pedido do cliente para um conteúdo único.

A CDN é um componente essencial na infraestrutura de vídeo ao vivo. Seu sistema de servidor distribuído entrega conteúdo para seus usuários, pois considera tanto localizações geográficas quanto de rede e a própria origem para entregar conteúdo da maneira mais rápida e confiável possível. No entanto, as técnicas para otimizar a CDN para entrega ao vivo diferem consideravelmente de outros aplicativos que também se beneficiam de uma CDN, incluindo vídeo sob demanda (VOD). Com as otimizações de cache certas e muito espaço de cabeça, a CDN está mais do que a lidar com as flutuações e variabilidade inerentes ao streaming ao vivo.

Nossa CDN oferece recursos de distribuição de conteúdo maduros e bem comprovados e otimizações que minimizam a carga no servidor de origem enquanto entrega transmissões ao vivo para os espetadores em escala. Nossas otimizações de cache de vídeo ao vivo, muitas das quais são ajustáveis para clientes individuais, trabalham juntas para proteger as demandas dos espetadores contra sobrecarregar sua infraestrutura de vídeo.