• Nenhum resultado encontrado

Na sua versão original, apesar das vantagens sobre outros sistemas, o simulador apresen- tava alguns problemas e não oferecia todas as funcionalidades necessárias aos cenários que pretendíamos testar. Foi então necessário introduzir alguns melhoramentos para adaptá-lo às necessidades do trabalho. Estes melhoramentos e alterações são apresentados e justificados de seguida:

• Redes heterogéneas: Originalmente o simulador parametrizava toda a rede com os mes- mos valores de largura de banda (excepto os nós de trânsito). Como se pretendeu poder estudar redes com uma distribuição heterogénea das larguras de banda, foram criadas

funções para alterar as larguras de banda de alguns nós da rede segundo alguns parâme- tros a fornecer pelo utilizador. Essas funções actuam aquando da criação da rede física e alteram os valores de alguns canais segundo uma probabilidade definida nos referidos parâmetros, criando assim redes com uma percentagem de nós com uma largura de banda diferente.

• Simulações de grandes dimensões: Nos testes iniciais não era possível realizar simu- lações com redes de muitos nós, nem com ficheiros muito grandes pois esgotavam-se rapidamente os limites físicos do hardware. Após investigação observou-se que era pos- sível realizar uma optimização numa estrutura sem perder as suas funcionalidades. Esta estrutura encontrava-se no objecto do tipo documento e guardava informação sobre quais os participantes que já detinham determinado ficheiro, sendo usada apenas para o cálculo dos blocos mais raros. À medida que os participantes completavam a sua transferência esta estrutura guardava mais e mais referências para participantes, crescendo exponen- cialmente. A solução foi substituir a lista de nós detentores de cada bloco por um inteiro, incrementado sempre que um participante anunciava a recepção de um bloco. Esta altera- ção mantém as funcionalidades iniciais, continuando a potenciar um cálculo correcto dos blocos mais raros. Não havia necessidade de guardar nesta estrutura informação referente a que participantes detêm os blocos pois esta estrutura apenas é usada para determinar quais os blocos mais raros, os pedidos são efectuados sobre aqueles que os participantes com quem se mantêm ligações oferecem. Esta nova estrutura levanta um novo risco, o de contabilizar um participante mais que uma vez por cada bloco, no entanto esse proble- ma não se coloca pois neste ambiente controlado sabe-se que nenhum participante envia mensagens falsas e não há perda de mensagens.

• Comportamento após a transferência: Na versão original do simulador todos os par- ticipantes permaneciam ligados como sementes após terminarem a transferência até ao final da simulação ou até receberem eventos de controlo para abandonarem a sessão. O anterior mecanismo não se adequava ao pretendido pois os referidos eventos de controlo eram executados num momento definido antes da simulação, e dado a imprevisibilidade do tempo de conclusão de uma transferência era impossível ter participantes a abandonar a rede assim que concluída a transferência. Uma vez que se pretendiam efectuar testes em ambientes de escassez de recursos foi adicionada uma verificação para quando terminada a transferência permanecer em estado de semente ou terminar de imediato a sessão.

• Estatísticas: Apesar de já vir presente no código alguma recolha e tratamento de es- tatísticas, estas revelaram-se insuficientes para o trabalho e como tal foram acrescentados métodos para recolher vários outros dados importantes nos mais diversos locais. São recolhidos dados relativos aos blocos trocados entre os diversos intervenientes na rede de partilha, com divisão explícita dos diferentes papéis tomados (sementes, utilizadores e outros abordados no âmbito de protocolos muito específicos). Há ainda um tratamento dos resultados finais, capaz de registar os tempos de transferência médios, mais rápidos e mais lentos, mais uma vez, para cada classe de participantes na rede de partilha. A contagem de blocos é feita através de contadores específicos sempre que um bloco é en- viado ou recebido. O tratamento dos tempos de transferência é realizado por uma classe específica que actua sobre o ficheiro contendo o trace resultante da simulação.

• Entidade central: Um dos pressupostos deste trabalho é a existência de uma entidade central segura e conhecida por todos os participantes, capaz de ser contactada para re- colher estatísticas e oferecer uma serie de informações, conforme requisitado por cada protocolo. Esta entidade foi criada e é instanciada no arranque de cada simulação. • Gestão de novos parâmetros: Algumas destas alterações introduziram novos parâmetros

alteráveis. Estes estão presentes numa única classe como variáveis estáticas de forma a ser possível alterá-los facilmente e sem necessidade de percorrer o código. Não estão ainda presentes na interface gráfica, ficando esse passo para melhoramentos futuros. • Redes assimétricas: O simulador original apenas permite efectuar testes com linhas

simétricas, o que distancia de alguma forma os resultados obtidos dos reais em que a taxa de upload e download têm sempre diferenças consideráveis, e limitam mesmo a ve- locidade do sistema. Isto deve-se ao facto de existir uma falha na definição a nível lógico das conexões. Quando A estabelece uma conexão para B esta é feita sobre determina- dos canais. Se B precisar de estabelecer uma ligação para A ao invés de abrir uma nova conexão reaproveita a já existente, sem validar os canais que esta atravessa. A correcção deste problema envolve alterar a definição de conexão, bem como todos os métodos para a sua criação, registo e acesso. Esta alteração apesar de importante não foi efectuada devido à complexidade das intervenções a efectuar.

Estas alterações foram introduzidas à medida que se revelaram necessárias e representam um esforço significativo pois requereram o estudo detalhado de partes significativas do código

do simulador, tal como será a seguir descrito brevemente.

Documentos relacionados