Distribuição de Mídia Contínua Transmissão Jussara M. Almeida Março 2004 Transmissão de Mídia Contínua • Transmissão de Fluxos Independentes – Unicast Servidor Origem Transmissão de Mídia Contínua • Transmissão de Fluxos Independentes – Unicast – Crescimento linear na demanda por largura de banda do servidor e da rede – Baixa escalabilidade • Ex: 1 arquivo MPEG de 1 hora: 1.5 Mbps 1500 fluxos simultâneos : 2.25 Gbps Transmissão de Mídia Contínua • Transmissão com Compartilhamento de Fluxos – Multicast : um único fluxo enviado para múltiplos clientes • A nível de protocolo de rede IP ou a nível de aplicação Fluxo multicast Servidor Origem roteador Transmissão de Mídia Contínua • Transmissão com Compartilhamento de Fluxos – Multicast : um único fluxo enviado para múltiplos clientes • A nível de protocolo de rede IP ou a nível de aplicação Fluxo unicast Servidor Origem roteador Transmissão de Mídia Contínua • Transmissão com Compartilhamento de Fluxos – Redução significativa na demanda por largura de banda – Melhora QoS (qualidade observada pelos clientes) – Classificação • Cliente recebe apenas 1 fluxo vs. múltiplos fluxos simultâneos – Demanda por largura de banda do cliente • Difusão vs. técnicas orientadas às requisições dos clientes – Distribuição sob demanda verdadeira – Escalabilidade e desempenho sob cargas variadas Dados recebidos pelos clientes Batching Fluxo multicast com objeto requisitado por r0-r3 r0 r1 r2 r3 Janela batching Tempo Batching • Cliente recebe apenas um fluxo • Método genérico utilizado em conjunto com outras técnicas – Transmissão orientada pelas requisiçoes dos clientes – Às vezes em conjunto com técnicas baseadas em difusão • Introdução de atrasos de partida adicionais • Nao provê distribuição sob demanda verdadeira Piggybacking • Mudança dinâmica da taxa de transmissão e exibição para permitir que um fluxo possa alcançar e se juntar a outro fluxo • Baseado em stream merge Piggybacking Dados recebidos pelos clientes Servidor retarda s0 Stream merge s0 s1 Servidor acelera s1 Tempo r0 r1 Piggybacking • Provê vídeo sob demanda verdadeiro • Cliente escuta/recebe apenas um fluxo • Não introduz atrasos adicionais na partida • Requer hardware especialiado para suportar mudanças dinâmicas na velocidade do canal • Eficiência limitada pela mudança máxima tolerada por um usuário (± 5%) Periodic Broadcast • Vídeos são transmitidos periodicamente – novo fluxo a cada minutos • Batching de clientes – = batching interval – Latência observada pelo cliente: (Pior caso) • Não provê video sob demanda verdadeiro • Largura de banda fixa, independente da carga – Eficiente para taxa de chegada de requisições alta • Diversas otimizacões do protocolo base – Pyramid Broadcast, Permutation-Based Pyramid Broadcast – Skyscraper Broadcast Periodic Broadcast • Batching de clientes T 0 ... ... ... ... ... • reserva K canais para cada “hot” “popular” – novo fluxo multicast do arquivo a cada T/K unid. de tempo E.x., K=25: maxima latência 0.04T – Demanda por largura de banda do servidor é independente da demanda pelo arquivo (carga) • Outros arquivos: batching sob demanda (FCFS) Pyramid Broadcast • Divide cada video em K segmentos de tamanhos crescentes – D1, D1, 2D1, 3D1 …, > 1 (crescimento geométrico) • Largura de banda total B dividida em K canais lógicos • Canal i transmite ith segmento de cada video, em round robin a uma taxa B/K (>> taxa de visualização, b) • Cliente contacta servidor e recebe uma programação de quando deve se conectar em cada canal – O download do segmento i pode começar assim que cliente começa a visualizar segmento i-1 – Cliente recebe em no máximo 2 canais simultâneos • Visualiza os dados recebidos em 1 canal • Armazena dados recebidos no outro canal no disco Pyramid Broadcast • Latência do cliente diminui com B (bom!!) – Se B alto suficiente, pode ter a video sob demanda verdadeiro • Alta demanda por largura de banda no cliente – b + 2B/K • Alta demanda por espaço no cliente – Precisa armazenar ate 84% do video Permutation-Based Pyramid Broadcast • Mesmo princípio do Pyramid Broadcast • Mas: – cada canal lógico e dividido em P subcanais para cada video – Cada segmento i de um video é transmitido nos subcanais de i a cada Di/P minutos à taxa B/KPM • M = # videos • Redução na demanda por largura de banda e disco – Redução limitada na demanda por espaço • progressão geométrica • Método mais complexo e com latência mais alta Skyscraper Broadcast • Divisão da largura de banda total B em B/b canais • Atribuição de K canais para cada video – K = B/bM, onde M = # videos • Cada video é dividido em K segmentos com tamanhos crescentes seguindo a progressão: – 1, 2, 2, 5, 5, 12 ,12 ,25, 25, 52, 52, … • Parâmetro W : restrição no tamanho máximo de um segmento – Quanto maior W maior a demanda por espaço no cliente – Quanto menor W, maior D1, maior latência Skyscraper Broadcast • Clientes recebem segmentos em transmission groups – Cada grupo: segmentos consecutivos com mesmo tamanho • Tres rotinas : – Carregador de grupos pares (Even Loader) – Carregador de grupos impares (Odd Loader) – Visualizador • Cada carregador recebe os segmentos dentro de um grupo em sequência • Carregador par e impar podem receber simultaneamente, armazenando dados em buffer local – Pergunta óbvia: qual o tamanho máximo deste buffer? • Recebimento de dados sem jitter Skyscraper Broadcast Channel 0 1 2 3 4 5 6 7 ... ... ... ... ... ... ... ... • Clientes são agrupados hierarquicamente durante transmissão (compartilhamento) – K = 8, tamanhos dos segmentos: 1,2,2,6,6,12,12,12 – W = 12 Latência máxima D1 = T/53 0.02T Skyscraper Broadcast • Alocação estática de canais para cada video • Se popularidade alta: ótimo!! – Grande economia na largura de banda • Mas e se popularidade varia com o tempo? Dynamic Skyscraper Dynamic Skyscraper Broadcast • Transmissão “sob demanda” Channel 0 1 2 3 4 5 6 7 ... ... ... ... ... ... ... ... • skyscraper transmission clusters - sequências que compartilham o mesmo segmento no canal K - largura = W (em cada canal) - cada cluster pode transmitir um arquivo diferente (sob demanda) Dynamic Skyscraper Broadcast • Largura de banda do servidor: – Total de C canais e N objetos – Divisão de C canais em N grupos, de K canais cada – Cada grupo de K canais, uma progressão de tamanhos de segmentos limitada por W (igual a static skyscraper) • Diferencial: Alocacão dinâmica dos canais para diferentes videos – Cada transmission cluster alocado para um objeto diferente em resposta às requisições dos clientes – Todas as sequências no mesmo cluster transmitem segmentos do mesmo arquivo Dynamic Skyscraper Broadcast • Transmission cluster: (exemplo no paper) – Contém todos os segmentos nos canais 1..k-1 que compartilham cada segmento transmitido no canal k • Um novo cluster no canal 1 a cada W slots – Não usa nenhum período no canal 1..k-1 que faça parte da primeira sequência de segmentos do próximo cluster • Alguns segmentos nao pertencem a nenhum transmission cluster – Ex: Segmento com tracejado em diagonal no canal 0 • Depende da progressão de tamanhos de segmentos – Diferentes progressões podem levar a desempenho melhor: evita desperdício de banda Dynamic Skyscraper Broadcast • N grupos de K canais • Cada grupo, sequência de transmission groups • Transmission groups em diferentes grupos são persistently staggered – Novo transmission group a cada = W x T1 / N (latência) – Escalonamento de transmission group : FCFS (FIFO) ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Dynamic Skyscraper Broadcast • Otimização: temporary channel stealing – Requisição para objeto Oi na fila a espera de um segmento livre no primeiro canal do transmission group alocado para Oi – Um segmento livre no canal 1 transmission group alocado para Oj pode ser temporariamente alocado pra transmitir Oi (atender requisição pendente) Dynamic Skyscraper Broadcast • Nova progressão de tamanhos: – 1, 2, 2, 4, 4, 8, 8, 16, 16 …. – Provê transmissão do arquivo inteiro sem jitter – Clientes recebem no máximo 2 canais simultaneamente • Clientes que só têm banda suficiente pra receber 1 canal também são atendidos (1a sequência de segmentos) – Nao acarreta desperdício de banda • Todos segmentos são utilizados para transmissão • Todos os transmission groups têm largura W – Demanda por espaço no cliente: O(W) • 1o cliente recebe segmentos sem necessidade de buffer • Clientes que recebem o último broadcast do 1o segmento, recebem este segmento W-1 unidades de tempo depois do 1o cliente e compartilham transmissão do último segmento (canal K) Dynamic Skyscraper Broadcast • Progressões alternativas: – 1, 2, 2, 6, 6, 12, 12, 24, 24 …. – 1, 2, 2, 6, 6, 12, 12, 36, 36 …. – Crescimento mais rápido : melhor desempenho (menor latência) – Cliente tem que receber no máximo 3 canais simultaneamente Compartilhamento de Fluxos: Técnicas Orientadas às Requisições dos Clientes • Patching e Hierarchical Stream Merging • Princípio comum: – Cliente escuta a mais de um fluxo simultaneamente – Dados recebidos em um fluxo são visualizados imediatamente – Dados recebidos no outro fluxo são armazenados para visualização futura • Requer buffer no cliente • Provê video sob demanda verdadeiro – Superior a Periodic Broadcast e metodos Skyscraper Patching • Motivação: – Prover video sob demanda verdadeiro • Latência do cliente tem que ser bem pequena (ou nula) – Reduzir demanda por largura de banda do servidor • Resolver o problema de gargalo na rede (network-I/O bottleneck) • Cada fluxo multicast tem que servir um grande número de usuários Patching • Um fluxo multicast transmite: – Arquivo inteiro: fluxo regular – Prefixo: fluxo patch Dados recebidos pelos clientes Cliente c1 recebe fluxo patch ao mesmo tempo que escuta fluxo regular. Depois de t1-t0, os dois clientes receberam os mesmos dados. Fluxo patch e finalizado t0 r0 t1 r1 Tempo Patching • Projeto do cliente e do servidor (paper) • Questão chave: – Quando iniciar novo fluxo regular? • Variações – Greedy Patching: • Somente quando não houver nenhum ativo (Agressivo) – Grace Patching: • Quando prefixo perdido pelo cliente maior que buffer local • Comparação (paper) Early Merging/ Hierarchical Multicast Stream Merging • Objetivo: criar merge trees eficientes (minimiza demanda por largura de banda) – Cliente escuta, simultaneamente, um fluxo com o prefixo do arquivo e um fluxo anterior (fluxo alvo) – Pergunta: Como escolher o fluxo alvo para cada novo cliente? (multiplos merges possiveis) • Stream Merging Otimo – Solucao offline: Programacao dinamica – Solucao online: computa arvore de custo minimo para os fluxos ativos a cada chegada de uma nova requisicao • Complexidade de tempo: cubica no # de requisicoes • Complexidade de espaco: quadratica Early Merging • Intuicao: realizar, primeiramente, os merges que puderem ser feitos primeiro • Principios – Decisao do fluxo alvo para um cliente (ou grupo de clientes) deve ser feita quando o cliente chega ou quando ele faz um merge com um outro fluxo. – Cliente deve escutar o fluxo alvo ate que o merge seja realizado com sucesso ou ate que ele seja preemptado por um (grupo de) cliente que chegou depois dele – Se preemptado, o cliente tem que jogar for a (ignorar) todos os dados recebidos no seu fluxo alvo corrente, escolher um novo fluxo alvo e recomecar a armazenar dados no buffer local, recebidos no novo fluxo alvo. • Early Merging = Hierarhical Multicast Stream Merging Variantes do Hierarchical Multicast Stream Merging • Early Reachable Merge Target (ERMT): – Fluxo alvo de um cliente: fluxo mais proximo com o qual ele pode realizar o merge se nao for preemptado, no futuro. – Precisa “simular” evolucao do sistema • Simple Reachable Merge Target (SRMT): – Fluxo alvo de um cliente: fluxo mais proximo alcancavel se cada fluxo correntemente ativo terminar no seu merge point corrente. – Ignora novos fluxos criados apos um merge Variantes do Hierarchical Multicast Stream Merging • Closest Target (CT) – Fluxo alvo: fluxo mais proximo ainda ativo no sistema. – Politica mais simples – Surpreendentemente, desempenho muito proximo de ERMT e otimo Escalabilidade dos Protocolos • Limite Inferior para servico imediato – Processo de chegada Poisson, largura de banda do cliente infinita – Demanda por largura de banda do servidor : ln (N+1) • Optimized Grace Patching – Janela de patching otima – Demanda por largura de bandado servidor: B 2N 1 1 – One N = # de chegadas de clientes por playback • Dynamic Skyscraper – Partitioned Dynamic Skyscraper – Demanda por largura de banda do servidor: O(k ln(N)), 2 k 3 Escalabilidade dos Protocolos • HMSM – Calculado via simulacao – Demanda por largura de banda do servidor: B = 1.62 ln(N/1.62 + 1) – Muito proximo do otimo Comentarios Finais • Bandwidth Skimming: – HMSM para clientes com largura de banda limitada • Cliente pode escutar a 1.2 fluxos • Interatividade: – Muito pouco explorada – Skyscraper: aplicacao dificil – Patching e HMSM: • Aplicacao direta • Mas alguns resultados de simulacao com cargas reais mostram que escalabilidade de HMSM e Patching cai muito – Novas propostas para Patching e HMSM a caminho