• Nenhum resultado encontrado

Trabalho do Curso de Redes de Computadores COS765/MAB /1

N/A
N/A
Protected

Academic year: 2021

Share "Trabalho do Curso de Redes de Computadores COS765/MAB /1"

Copied!
5
0
0

Texto

(1)

Trabalho do Curso de Redes de Computadores

COS765/MAB731 – 2015/1

Universidade Federal do Rio de Janeiro Rosa M.M. Le˜ao e Daniel Sadoc Menasch´e

Primeiro Per´ıodo de 2015

1

Introdu¸

ao

O objetivo deste trabalho ´e fazer um programa que implemente algumas das fun¸c˜oes de um programa de transmiss˜ao de dados multim´ıdia. Mais especificamente, vocˆe vai implementar um protocolo simples de transferˆencia de ´audio. Usaremos o protocolo UDP para estabelecer uma conex˜ao de um processo a outro.

Todos os usu´arios de alguma plataforma de transmiss˜ao de dados multim´ıdia (e.g., Youtube) em algum momento j´a se depararam com a mensagem Aguarde, carregando buffer. O buffer no receptor ´e uma estrat´egia bastante utilizada por aplica¸c˜oes multim´ıdia para compensar o jitter introduzido pela rede. Um dos objetivos deste trabalho ´e entender o motivo de haver buffers de recep¸c˜ao nos softwares de transmiss˜ao multim´ıdia.

Aplica¸c˜oes multim´ıdia s˜ao principalmente baseadas na arquitetura cliente servidor ou na arquite-tura P2P. Na arquitearquite-tura cliente servidor, os blocos s˜ao em geral transmitidos de forma sequencial. J´a na arquitetura P2P, os blocos podem ser transmitidos de forma aleat´oria ou sequencial. Um outro objetivo do projeto ´e avaliar os tradeoffs envolvidos na decis˜ao entre a transmiss˜ao sequencial de blocos e a transmiss˜ao aleat´oria de blocos.

´

E aconselh´avel a leitura do cap´ıtulo sobre multim´ıdia do livro texto (Kurose e Ross) antes de implementar este trabalho.

2

Disponibilidade de Blocos No Emissor

Pretendemos emular um sistema P2P. Entretanto, para simplificar a implementa¸c˜ao, vamos assumir que temos apenas dois peers: um emissor e um receptor.

Para capturar o fato de que blocos em um sistema P2P podem estar indispon´ıveis para transmiss˜ao sequencial, vamos assumir que, a cada tentativa de transmiss˜ao sequencial de um bloco, este bloco est´a dispon´ıvel no emissor com probabilidade r e indispon´ıvel com probabiliade 1 − r. Suponha que o emissor precise transmitir um bloco que esteja indispon´ıvel, ele ent˜ao aguarda 20 ms e faz novo sorteio para calcular o novo status do bloco: dispon´ıvel ou indispon´ıvel. Esse procedimento ´e repetido at´e que o bloco esteja dispon´ıvel para ser transmitido.

(2)

Caso a pol´ıtica adotada seja a de transmiss˜ao aleat´oria, o emissor dever´a guardar todos os blocos que ele j´a transmitiu. A cada 20 ms, ele escolhe um novo bloco aleatoriamente dentre aqueles que ainda n˜ao transmitiu e o transmite.

Note que vocˆe pode implementar uma nova pol´ıtica de transmiss˜ao de blocos mais eficiente do que as duas propostas neste projeto, como por exemplo uma combina¸c˜ao das pol´ıticas sequencial e ale´atoria. Comece implementando as pol´ıticas propostas acima (estritamente aleat´orio e estritamente sequencial), e depois considere outras pol´ıticas. A hip´otese a ser mantida ´e sempre a seguinte:

1. ao escolher aleatoriamente um bloco dentre aqueles ainda n˜ao transmitidos, assume-se que este bloco est´a sempre dispon´ıvel.

2. se o ´ultimo bloco transmitido for o bloco k, ao escolher transmitir intencionalmente (e n˜ao por acaso) o bloco k + 1, o bloco k + 1 estar´a dispon´ıvel com probabilidade r. Caso esteja dispon´ıvel, ele pode ser transmitido. Caso contr´ario, deve-se esperar 20 ms para tentar nova transmiss˜ao de k + 1.

3

Funcionamento do Programa

Vocˆe deve fazer um aplicativo para transferir um arquivo de ´audio a 64 Kbps. Cada pacote deve ter tamanho de 160 bytes (1280 bits), e um pacote deve ser transmitido a cada 20 milisegundos (50 pacotes por segundo).

O seu aplicativo deve implementar fun¸c˜oes de transferˆencia de informa¸c˜ao, usando o protocolo UDP para simples estabelecimento de conex˜ao, conforme mostra a figura abaixo.

rede real ou computador único com comunicaçao entre processos camada de simulação de perdas e atrasos (parte de transmissão) camada de simulação de perdas e atrasos (parte de recepção) geração de dados de

áudio (1 pacote a cada 20 ms) recepção de dados de áudio (idealmente, 1 pacote a cada 20 ms) buffer de recepção TCP ou UDP

(3)

Ao iniciar, o programa de transferˆencia de ´audio deve receber informa¸c˜oes sobre a fonte de dados que gerar´a as amostras a serem transferidas. Vocˆe pode transferir um arquivo de ´audio pr´e-gravado (e nesse caso o nome do arquivo a ser transferido deve ser informado) ou at´e mesmo transmitir dados aleat´orios armazenados em um arquivo apenas para simular o que seria um arquivo de ´audio.

O programa de transmiss˜ao simplesmente envia um pacote, aguarda 20 milisegundos, envia o pr´oximo pacote, aguarda 20 milisegundos, e assim por diante.

O programa de recep¸c˜ao de dados implementa rotinas para (a) armazenar os pacotes em um buffer, (b) transmitir os pacotes para a aplica¸c˜ao que ir´a toc´a-los ou simplesmente registrar em um log o seu recebimento.

Vocˆe tamb´em dever´a implementar um m´odulo de perdas/atrasos que implementa as fun¸c˜oes de-scritas abaixo:

• Cada segmento deve conter um header. No header, vocˆe deve colocar o n´umero de sequˆencia do pacote e quaisquer outras informa¸c˜oes que julgar necess´ario. Vocˆe n˜ao precisa implementar a rotina para fazer o checksum.

• Vocˆe dever´a testar tanto o cliente quanto o servidor rodando-os numa mesma m´aquina ou em uma rede local. Nestes dois cen´arios, n˜ao existem perdas ou atrasos. Dessa forma, vocˆe dever´a implementar um m´odulo (ver figura) que emular´a atrasos e perdas de pacotes aleat´orios. Este m´odulo, recebe um segmento da camada UDP e o atrasa de um valor aleat´orio igual a RT T /2+X, sendo RT T fixo e X uma vari´avel aleat´oria com distribui¸c˜ao exponencial e m´edia E[X] (procure saber como vocˆe implementa uma distribui¸c˜ao exponencial a partir da fun¸c˜ao de randomiza¸c˜ao de C). O m´odulo tamb´em escolhe se entrega ou n˜ao um pacote `a camada acima. Isto ´e, um pacote ´e perdido com probabilidade F (procure tamb´em saber como vocˆe implementa essa probabilidade). Para implementar os atraso aleat´orios, vocˆe deve criar uma lista de segmentos da forma descrita abaixo. Quando um segmento ´e recebido, o tempo atual t ´e lido. A este tempo somamos RT T /2 + X, onde X ´e aleat´orio. O novo tempo tn= t + RTT/2 + X ´e colocado numa lista de

tempos com um indicador do segmento a que o tempo est´a associado. A lista ´e organizada por ordem de tempo. Os pacotes s˜ao entregues ao m´odulo superior quando o tempo atual for igual a tn.

Vocˆe pode saber quando entregar os segmentos de duas formas: (1) Criando um loop infinito no seu programa que verfica a cada t unidades de tempo se o tempo atual ´e igual a tn e se

for, entrega o segmento. (2) Disparando um timer com o valor de tn cada vez que houver uma

inclus˜ao de um elemento na primeira posi¸c˜ao da lista. Quando o timer expirar, o segmento deve ser entregue ao m´odulo superior. A solu¸c˜ao (1) ´e mais simples mas ´e computacionalmente mais custosa.

Desta forma, a camada de recep¸c˜ao de ´audio receber´a segmentos com atrasos aleat´orios e tamb´em, segmentos podem ser perdidos.

• O programa de emula¸c˜ao de perdas deve ler de um arquivo o valor de F , o valor de RT T e o valor de E[X].

• O seu programa deve ter como sa´ıda Os instantes em que (a) cada pacote foi enviado; (b) cada pacote foi recebido; (c) cada pacote foi tocado. O objetivo ´e reproduzir gr´aficos como os mostrados na Figura 2, para ambos os casos: transmiss˜ao sequencial e aleat´oria.

O tradeoff envolvido a ser ilustrado numericamente ´e o seguinte: a transmiss˜ao sequencial ir´a favorecer uma diminui¸c˜ao do tempo at´e que se possa iniciar a exibi¸c˜ao do ´audio. Entretanto, a

(4)

tempo pacote 5 4 3 2 1

transmitidos recebidos tocados

Figure 2: Tempo de transmiss˜ao, recep¸c˜ao e exibi¸c˜ao dos pacotes. Note que nessa figura estamos assumindo que os pacotes s˜ao transmitidos, recebidos e tocados em ordem. Neste trabalho, entretanto, consideramos a possibilidade de os pacotes serem transmitidos e recebidos fora de ordem. Faz parte do seu trabalho inventar uma forma de adaptar este gr´afico, ou inventar um novo gr´afico, para levar em conta essas possibilidades. Para simplificar, comece implementando o algoritmo sequencial, e assuma que n˜ao ocorrem reordem de pacotes na rede.

transmiss˜ao sequencial ir´a gerar mais falhas ao longo da recep¸c˜ao. J´a a transmiss˜ao aleat´oria ir´a gerar menos falhas, mas o tempo para que se comece a tocar o ´audio pode ser maior. Assuma que o receptor possui um buffer tal que, quando contiver os B primeiros pacotes de ´

audio cont´ıguos, o ´audio come¸ca a tocar.

Considere, em particular, a compara¸c˜ao das solu¸c˜oes sequencial e aleat´oria nas duas seguintes situa¸c˜oes:

1. B ´e o arquivo completo (nesse caso, espera-se que a solu¸c˜ao aleat´oria seja melhor)

2. B ´e igual a 1 bloco (nesse caso, dependendo da m´etrica de interesse e da probabilidade de perda de pacotes na rede, e da disponibilidade dos blocos, a solu¸c˜ao aleat´oria pode ser melhor ou pior que a sequencial)

O arquivo de teste deve ser longo para que possamos ter uma id´eia do comportamento do protocolo. O seu relat´orio deve ter conclus˜oes sobre o trabalho, baseadas nas medidas acima. Para isso voce deve variar F e RT T . Faz parte do projeto a escolha coerente destes parˆametros de forma a se conseguir fazer um estudo do comportamento do tamanho do buffer.

Comportamento do Buffer

Assuma que o receptor possui um buffer grande o suficiente de tal forma que perdas de pacotes por buffer overflow nunca ocorrem. Toda vez que o buffer contiver os pr´oximos B pacotes a serem tocados, vocˆe deve ler, remover e tocar os B pacotes a uma taxa de 1 pacote a cada 20 ms.

(5)

4

Relat´

orio

O relat´orio dever´a ser composto por: • Introdu¸c˜ao

Nesta se¸c˜ao vocˆe deve descrever em linhas gerais o objetivo do seu trabalho. • O Programa:

Aqui vocˆe deve descrever em linhas gerais como funciona o seu programa. • Resultados:

Neste item vocˆe deve fazer um estudo do protocolo de transmiss˜ao de ´audio variando a pol´ıtica de transmiss˜ao (sequencial versus aleat´oria), r, RT T e F , e plotar gr´aficos conforme indicado acima.

• Conclus˜ao:

Nesta se¸c˜ao vocˆe deve expor suas conclus˜oes sobre o trabalho. • C´odigo Fonte:

Incluir a listagem do c´odigo fonte.

Referências

Documentos relacionados

A solução, inicialmente vermelha tornou-se gradativamente marrom, e o sólido marrom escuro obtido foi filtrado, lavado várias vezes com etanol, éter etílico anidro e

O objetivo deste trabalho foi avaliar épocas de colheita na produção de biomassa e no rendimento de óleo essencial de Piper aduncum L.. em Manaus

Segundo o mesmo autor, a animação sociocultural, na faixa etária dos adultos, apresenta linhas de intervenção que não se esgotam no tempo livre, devendo-se estender,

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

1 — As empresas que oferecem redes de comunica- ções públicas ou serviços de comunicações eletrónicas acessíveis ao público são obrigadas a disponibilizar ao público, bem

Assim, este estudo buscou identificar a adesão terapêutica medicamentosa em pacientes hipertensos na Unidade Básica de Saúde, bem como os fatores diretamente relacionados

Contudo, não é possível imaginar que essas formas de pensar e agir, tanto a orientada à Sustentabilidade quanto a tradicional cartesiana, se fomentariam nos indivíduos