Tópicos Avançados em Redes de Computadores Recife, 13 de Novembro de 2009 O objetivo deste trabalho é apresentar o resultado de uma pesquisa sobre a ferramenta de simulação de redes chamada NETWORK SIMULATOR 2 (NS2). A defesa deste trabalho terá um caráter demonstrativo/ilustrativo É um simulador de redes dirigido a eventos discretos, direcionados para pesquisas em redes de computadores, que simula vários tipos de redes. O NS simula vários tipos de redes utilizando diversos tipos de protocolos, tanto os protocolos orientados a conexão como o TCP, quanto os protocolos não orientados a conexão como o UDP, multicast e redes com ou sem fio. O projeto NS tem como objetivo construir um simulador de rede que permita o estudo de protocolos de rede atuais e futuros. Simular o comportamento global da Internet representa um enorme desafio devido à sua grande heterogeneidade e constante mudança Devido à complexidade inerente das redes e respectivos protocolos. Papeis da simulação: vital na tentativa de caracterizar tanto o comportamento atual da Internet, como os possíveis efeitos das modificações propostas no seu funcionamento. Vantagens: As simulações não necessitam de muito equipamento já que é necessária apenas uma máquina. Os simuladores permitem examinar um vasto conjunto de cenários num período de tempo relativamente pequeno. A simulação oferece também meios para testar os vários protocolos ao longo de redes. Os simuladores não estão presos à velocidade física de uma dada rede. Um sistema é um agrupamento de partes que operam juntas, visando um objetivo em comum. Um modelo pode ser definido como uma representação das relações dos componentes de um sistema, sendo considerada como uma abstração, no sentido em que tende a se aproximar do verdadeiro comportamento do sistema. Simulação não Computacional – Ex. Protótipo em túnel de vento – Simulação de Acontecimentos Simulação Computacional – Simulação de Sistemas Contínuos – Simulação de Eventos Discretos NS2 Modelos de filas M/M/1 M/G/1 M/D/1 A/B/c A representa o processo de chegadas. B representa o processo de atendimento c representa o número de servidores A e B denotam-se principalmente como: • M para distribuições exponencial • D para valores determinísticos • G para caracterizar distribuições em geral. Discreto como na matemática discreta (sem continuidade, conjuntos contáveis); Atividades físicas são transformadas em eventos. Modela uma rede do mundo real com eventos numa linha de tempo discreta; Simulador mantêm uma lista encadeada com eventos; Cada evento acontece num instante de tempo (virtual!); Tempo de processamento não conta no tempo virtual. Os atributos dos estados só mudam no tempo discreto. Eventos Os eventos podem ser agendados para um determinado instante no tempo existindo uma lista dos próximos eventos a ocorrerem, ordenados por tempo de ocorrência. A ocorrência de um evento afeta o estado da simulação. Também são atualizados os contadores de estatísticas que permitem a geração dos relatórios da simulação. Estado do sistema Coleção de variáveis de estado necessárias para descrever o sistema em um determinado momento no tempo. O estado do sistema pode ser visto como resultante do estado de seus componentes. Mecanismo de temporização O avanço de tempo, nos simuladores de tempo simulado, pode ser definido por: intervalos fixos de tempo e após o incremento é verificado se existe um evento agendado para este momento. Próximo evento: o tempo é incrementado pela ocorrência de um evento. É mais eficiente que o anterior em termos de atualização de tempos. Redes com ou sem fio (satélite, WiMAX, etc.); Protocolos de roteamento (unicast, multicast, broadcast!); Protocolos de transporte (e.g., TCP, UDP); Protocolos de aplicação (e.g., FTP, TFTP, HTTP, DNS); Geração aleatória ou programada de erros em nos e links; Geração de traces para análise; Você pode fazer sua propria implementação em qualquer camada! No NS, as configurações de entrada para a execução de uma simulação são feitas. Pela definição de cenários de simulação. Alguns dos componentes desses cenários são: A topologia de rede: inclui as interconexões físicas entre os nós e as Características Estatísticas de enlace e nós. Os modelos de geração de tráfego: definem os padrões de uso da rede e a localização dos geradores. A dinâmica da rede: inclui simulação de defeitos em enlaces. O NS fornece uma grande variedade de modelos de geração de tráfego que podem ser usados juntamente com protocolos de transporte. A partir de um projeto da Cornell University; Já recebeu apoio de vários centros de pesquisas; Uma lista de discussão é mantida pelos desenvolvedores; Network Simulator 3 já está em fases de testes; Escrito em C++ com um interpretador Otcl (Objectoriented Tool Command Language) Por que 2 Linguagens? - Para essas tarefas a velocidade (tempo de execução) é o mais importante. (C++) - Mudar ou re-executar o modelo (OTCL) Exemplo da nossa Simulação Anatomia de um script do ns 1. Criar instância do simulador 2. Fazer configurações iniciais a) Ajustar opções gerais do ns e do nam b) Configurar arquivo de trace do nam c) Criar função de finalização 3. Criar topologia a) Criar nós b) Criar e configurar enlaces Anatomia de um script do ns 4. Criar agentes e aplicações a) Criar agentes de transporte TCP e UDP b) Criar aplicações geradoras de tráfego c) Anexar agentes a nós e aplicações a agente d) Conectar agentes nos sistemas finais 5. Escalonar eventos a) Iniciar transmissão de dados das aplicações b) Finalizar transmissão de dados das aplicações 6. Executar simulação 7. Visualizar a animação com o nam 8. Analisar arquivos de trace Exemplo do TCL # Cria um Objeto Simulador set ns [new Simulator] # Define cores para os fluxos de dados $ns color 1 Blue; $ns color 2 Red # Abrir o arquivo de rastreamento nam set nf [open out.nam w] $ns namtrace-all $nf Exemplo do TCL # Define o Procedimento “finish” proc finish {} { global ns nf $ns flush-trace #feche o NAM close $nf #Execute o NAM exec nam out.nam & exit 0 } Exemplo do TCL # Cria quatro nós set n0 [$ns node]; set n1 [$ns node]; set n2 [$ns node]; set n3 [$ns node]; # Cria links entre os Nós $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1,7Mb 20ms DropTail Exemplo do TCL # Configuração de uma conexão CBR sobre os nós set cbr0 [new Application/Traffic/CBR] set cbr1 [new Application/Traffic/CBR] set udp0 [new Agent/UDP] set udp1 [new Agent/UDP] set null0 [new Agent/Null] set null1 [new Agent/Null] Exemplo do TCL # Escalona eventos para os agents CBR $ns at 0.1 "$cbr0 start“; $ns at 0.5 "$cbr1 start" $ns at 1.0 "$cbr1 stop" ; $ns at 1.5 "$cbr0 stop" $ns at 2.0 "finish" # Inicia a simulação $ns run Modelo de Simulação no NAN Modelo de Simulação no NAN