globocom/Globo-Live-Cache

Name: Globo-Live-Cache

Owner: Globo.com

Description: Configuração de caching de vídeos ao vivo da Globo.com

Created: 2014-08-18 16:48:30.0

Updated: 2017-11-07 15:50:03.0

Pushed: 2017-11-06 16:28:51.0

Homepage: null

Size: 91

Language: Shell

GitHub Committers

UserMost Recent Commit# Commits
Roberto Soares2014-10-23 17:07:59.01
Leandro Moreira2014-10-23 17:24:22.08
Igor Macaubas2017-11-06 16:28:46.03
Juarez Bochi2014-08-19 13:42:44.01

Other Committers

UserEmailMost Recent Commit# Commits
Igor Macaubasmacaubas@maca-retina.local2017-11-06 16:25:02.01

README

ÇÃO: Esta documentação está deprecated, desde que adotamos SSL na entrega de vídeos. Estamos 
endo-a no ar somente por razões históricas. NÃO FUNCIONA. Está em nosso roadmap a criação
m novo projeto focado em oferecer cache em provedores, stay tunned :-)

Project logo

Introdução

A documentação a seguir descreve o que fazer para cachear vídeos ao vivo da Globo.com.

A entrega de vídeo ao vivo da Globo.com usa o protocolo HLS de acordo com a RFC-2616 do HTTP 1.1: seções 13 e 14. Portanto, basta que seu servidor de proxy seja compatível com o padrão para que o cache seja efetivo.

Cache é o mecanismo para armazenamento temporário de objetos, neste caso, pedaços de vídeos. Uma definição mais formal e completa sobre web-caching pode ser encontrada na wikipedia.

Web cache é um armazenamento temporário no disco rígido de páginas web, imagens e outros documentos utilizando técnicas de cache para reduzir o uso largura de banda disponível, aumentar a velocidade do acesso, entre outras vantagens.

Motivações para uso

A correta utilização de um cache resulta em:

Funcionamento

Basicamente, quando um usuário atrás de um proxy configurado acessa um vídeo, ele realiza várias requisições http, possibilitando ao proxy armazenar respostas para requisições idênticas, evitando o tráfego de saída para um arquivo anteriormente requisitado.

Um possível fluxo para exemplificar o funcionamento (USR1 e USR2 são dois usuários distintos na rede, PROXY um servidor proxy):

SR1 solicita vídeo 23.ts ao PROXY
ROXY ainda não tem cache para objeto 23.ts
ROXY solicita vídeo 23.ts a GLOBO.COM
ROXY armazena resposta da globo e atende USR1
SR2 solicita pedaço de vídeo 23.ts ao PROXY
ROXY responde diretamente ao USR2

Implementação

Para implementar um proxy você pode instalar o Squid. Instruções de instalação podem ser encontradas em seu site oficial.

Na instalação padrão, o Squid2 já faz caching baseado no cabeçalho das respostas, o que já atende aos vídeos ao vivo da Globo.com. Um exemplo de resposta pode ser visto abaixo:

TP/1.0 200 OK
rver: nginx
te: Fri, 15 Aug 2014 19:06:01 GMT
ntent-Type: video/mp2t
ntent-Length: 122200
pires: Fri, 15 Aug 2014 22:06:01 GMT
che-Control: public, max-age=10800
a: 1.0 localhost (squid/3.1.19)
nnection: keep-alive

Neste caso, o Squid vai seguir as regras do cabeçalho Cache-Control:public, max-age=10800 que informa que este recurso pode ser cacheado e por quanto tempo.

observação importante é que nem todos os vídeos ao vivo da Globo.com são cacheáveis.
Considerações
O que deve ser cacheado?

As respostas do domínio *.glbvid.com e com extensão ts, mas sempre respeitando os cabeçalhos.

O que não deve ser cacheado?

Os arquivos terminados com a extensão m3u8 e bin. Fazer caching desses arquivos pode degradar a experiência do usuário.

Caso de Uso: Squid

Requisitos

Execute os seguintes comandos:

t clone https://github.com/globocom/Globo-Live-Cache
 Globo-Live-Cache
grant up

O comando vagrant up vai provisionar uma máquina virtual devidamente configurada com Squid3.

a configuracão, todos os usuários tem acesso irrestrito.

Depois, configure seu browser para apontar para o proxy 192.168.33.10:3128. Caso queira verificar seu funcionamento:

grant ssh
ant@precise32: $ sudo tail -f /var/log/squid3/*log

Vale ressaltar que é possível exportar a máquina virtual do Vagrant para provedores cloud, como por exemplo: Amazon EC2 e Digital Ocean.

Conclusão

Em testes realizados, percebemos que quando 10 usuários utilizam o proxy para acessar vídeos ao vivo da Globo.com, o ganho é de aproximadamente 90% de banda sobre vídeos. Aumentando o número de usuários para 1000, o ganho chega a 99,9%. Assim, se considerarmos um arquivo de vídeo no bitrate mais alto, o ganho pode ser em torno de 1Gb por pedaço de vídeo.

Os números acima são estimativas feitas a partir de testes com ab simulando usuários simultâneos com conexões para o maior bitrate.

Notas


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.