Estrutura Interna - Classes

Slides:



Advertisements
Apresentações semelhantes
The Block I/O Layer Rafael Lopes Bezerra.
Advertisements

Interações cliente/servidor usando o UDP
Introdução Datagrama IP.
Missão da camada de enlace Serviços oferecidos TCP UDP
Administração e Projeto de Redes
Família tcp/ip Prof: Diovani Milhorim
Comunicação entre processos distribuídos
Redes de Computadores A Camada de Rede.
Disciplina: Gerência de Redes Profa. Ana Cristina Benso da Silva
QoS Ethernet e VLANs Redes de Computadores.
Serviços Integrados RSVP
RSVP MPLS. Estratégias para Implantação de QoS Atualmente, duas estratégias de QoS sobre redes IP estão em desenvolvimento: –Serviços Integrados Baseado.
QoS Ethernet e VLANs Redes de Computadores.
Qualidade de Serviço em Redes IP Mecanismos de QoS
Exercícios de Revisão Redes de Computadores Edgard Jamhour
Redes de Computadores Aula Prática 4
O conceito de socket Uma comunicação entre dois processos via TCP (ou UDP) é identificada unívocamente por dois pares de valores, que denotam os dois pontos.
Introdução Redes LAN - abrangência: edifícios e campos.
Endereçamento de hardware e identificação de quadros
Conceitos de Sockets Universidade Federal do Rio Grande do Sul (UFRGS)
Modificadores de tipos e Arquivos
1 COS 773- SISTEMAS OPERACIONAIS Prof: Vitor BLOCK I/O Cristiane Magalhães.
Prof. Marcelo Diniz Fonte:
FEUPDEECRedes de Computadores, 4º Ano de EEC, ramo de ACI Sockets Abril, 98Isidro Vila Verde 1 Formato das estruturas de dados Estrutura.
Listas Encadeadas.
Modelo de referência OSI
Network Simulator (ns) Carlos Alberto Kamienski Djamel Sadok Joseane Farias Fidalgo Cin-UFPE.
Inicio. Mesmo que um novo projeto do protocolo IP não fosse iniciado a Internet continuaria funcionando, porém, ela teria muita dificuldade de crescer,
Tópicos Avançados em Redes de Computadores Recife, 13 de Novembro de 2009.
Redes de computadores Prof. António dos Anjos
O Network Simulator 2 (NS2)
Serviços Diferenciados no NS2
Exercícios de Revisão Redes de Computadores Edgard Jamhour
Memória e debugação Ricardo Rabelo 25/08/2003. Roteiro Debugação de Código Debugação de Memória Economia de Memória.
Redes Aula 7 Professor: Marcelo Maia.
Frame Relay Disciplina de Redes de Computadores II
Endereçamento de Rede IPv4
Grupo: Gabriel, Wagner, Vicente e Filipe
Roteadores Roteadores são pontes que operam na camada de Rede do modelo OSI. Tomando como base o protocolo mais usado hoje em dia, o TCP/IP, o protocolo.
REDES DE COMPUTADORES II
Serviço Nacional de Aprendizagem Comercial do Rio Grande do Sul Informação e Comunicação Habilitação Técnica de Nível Médio Técnico em Informática Prof.
NetBIOS Acadêmicos: Rubens Hiroshi Suzuqui Valmir Ferreira Marques
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
UNEMAT-FACIEX MODELOS DE REFERÊNCIA Dr. José Raúl Vento 2005.
Prof. Carlos Roberto da Silva Filho, M. Eng.
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
DHCP Dynamic Host Configuration Protocol
MODELO DE REFERÊNCIA TCP/IP
Desenvolvimento de Aplicações TCP/IP com Sockets Márcio de Sousa Dias
Modelo OSI Apresentação Sessão Transporte Rede Enlace Física Aplicação
Modelo OSI Disciplina: Comunicação de Dados Ricardo Bento 12ºL nº11.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
INTERNET PROTOCOL versão 6 (IPv6)
Camada de Inter-Redes do modelo TCP-IP Endereço IP e DHCP
Modelagem e Avaliação de Desempenho Pós Graduação em Engenharia Elétrica - PPGEE Prof. Carlos Marcelo Pedroso 2013.
Controle de Tráfego no Linux por Felipe Massia Pereira Carlos Augusto Froldi out/2005 Instituto de Computação – UNICAMP.
Introdução à camada de rede
Programação Distribuída em Java Aula Na aula passada vimos Domain Name Server –Funcionamento básico O pacote java.net –Sua finalidade A classe InetAddress.
TCP/IP.
Arquitetura TCP/IP Aplicação Transporte Rede Enlace Física.
Rede de Computadores MAT164 – Redes de Computadores I Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação.
Mecanismos de QoS em Linux tc – Traffic Control
Modelo de referência TCP/IP Redes de comunicação de dados Professor Cristiano José Cecanho.
Escola de Ciência e Tecnologia Arquitetura TCP/IP Arquitetura TCP/IP Interface entre o Nível Lógico e Físico Protocolo IP Etienne César R. de Oliveira.
Redes de Computadores Endereçamento IP Básico Prof. Sales Filho.
Centro Federal de Educação Tecnológica do RN Redes de Computadores Curso Superior em Redes de Computadores Camada de Rede Prof. Sales Filho.
Escola de Ciência e Tecnologia Arquitetura TCP/IP Arquitetura TCP/IP Interface entre o Nível Lógico e Físico Protocolo IP Etienne César R. de Oliveira.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
NS – Conceitos Gerais Roteiro  Nodos  Links  Agentes  Aplicações  Exemplo.
Transcrição da apresentação:

Estrutura Interna - Classes Kalina Ramos Porto 08/08/2003

Roteiro Nodos Endereçamento Formato de Pacotes Filas e escalonamento de pacotes Agentes Aplicações e Geradores de Tráfego

Nodo n0 n1 Multicast Node Unicast Node Addr Classifier Port Classifier classifier_ dmux_ entry_ Node entry Multicast Classifier classifier_ dmux_ entry_ Node entry Multicast Node multiclassifier_ Unicast Node set ns_ [new Simulator –multicast on] set n1 [ns_ node] set n0 [ns_ node]

Classificadores Classificadores são responsáveis por encaminhar pacotes para outros objetos de simulação de acordo com um critério lógico. Cada classificador contém uma tabela de objetos de simulação indexados por números de slot. Os classificadores determinam o número de slot (de acordo com um critério lógico) associado com o pacote recebido e o encaminham para o objeto indexado pelo número de slot específico.

Endereçamento Dois estilos básicos de endereçamento disponíveis: flat e hierárquico Endereço flat padrão: 32 bits para o id do nodo e 32 bits para o id da porta Endereço hierárquico padrão: 3 níveis de hierarquia 10 11 11 ou 1 9 11 11 se multicast é especificado 32 bits para o id da porta

Endereçamento (Cont.) O seguinte comando é utilizado para especificar endereçamento hierárquico: O comando anterior permite configurar diferentes números de níveis hierárquicos com seus respectivos números de bits: Exemplo: $ns set-address-format hierarchical $ns set-address-format hierarchical <# níveis hierárquicos> <# bits para nível 1> ... <# bits para o nível n> $ns set-address-format hierarchical 2 8 15

Nodo Hierárquico n2 Address classifier To Port demux Node entry Level 3 Level 2 Level 1

Utilizando Endereçamento Hierárquico Habilita-se o modo hierárquico: Definem-se o número de domínios, o número de clusters em cada domínio e o número de nodos em cada cluster: Criam-se os nodos com os endereços hierárquicos: $ns set-address-format hierarchical AddrParams set domain_num_ 2 lappend cluster_num 2 2 AddrParams set cluster_num_ $cluster_num lappend eilastlevel 2 3 2 3 AddrParams set nodes_num_ $eilastlevel $ns node 0.0.1

Formato De Pacotes Objetos da classe Packet são a unidade fundamental de troca entre objetos na simulação. A classe Packet: Provê informações para ligar um pacote a uma lista (PacketQueue, por exemplo); Faz referência a uma área de armazenamento contendo os cabeçalhos do pacote (por protocolo); Faz referência a uma área de armazenamento contendo dados do pacote. A classe Packet contém um campo denominado next_ que se aponta para o próximo pacote em uma lista.

Formato De Pacotes (Cont.) ts_ ptype_ uid_ size_ iface_ ip header tcp header rtp header trace header cmn header ... header data

Cabeçalhos A estrutura hdr_cmn é o cabeçalho “comum” a todos os pacotes. Principais campos: ts_ -> instante em que o pacote foi criado. ptype_ -> identifica o tipo do pacote. uid_ -> identificador único de cada pacote. size_ -> tamanho simulado do pacote em bytes. iface_ -> identifica em qual link o pacote foi recebido.

Cabeçalhos (Cont.) É comum que cada protocolo implemente o seu próprio cabeçalho. Exemplo: Arquivo .h struct hdr_rtp { u_int32_t srcid_; int seqno_; u_int32_t& srcid() { return (srcid_); } int& seqno() { return (seqno_); } /* Packet header access functions */ static int offset_; inline static int& offset() { return offset_; } inline static hdr_rtp* access(const Packet* p) { return (hdr_rtp*) p->access(offset_);} }

Cabeçalhos (Cont.) Arquivo .cc static class RTPHeaderClass : public PacketHeaderClass { public: RTPHeaderClass() : PacketHeaderClass("PacketHeader/RTP", sizeof(hdr_rtp)) { bind_offset(&hdr_rtp::offset_); } } class_rtphdr; A estrutura hdr_rtp define o layout do cabeçalho. Usada pelo compilador apenas para definir o tamanho em bytes do cabeçalho (offset). A variável offset_ é usada para encontrar a posição do cabeçalho rtp na área de memória em que o pacote é armazenado.

Como Criar Um Novo Cabeçalho Criar a estrutura do cabeçalho Permitir tracing do novo cabeçalho (packet.h) enum packet_t { PT_TCP, …, PT_MESSAGE, PT_NTYPE // This MUST be the LAST one }; class p_info { …… name_[PT_MESSAGE] = “message”; name_[PT_NTYPE]= "undefined";

Como Criar Um Novo Cabeçalho (Cont.) Criar classe estática para OTcl linkage Registrar o novo cabeçalho em OTcl (tcl/lib/ns-packet.tcl) Estes passos não se aplicam quando adicionamos um novo campo a um cabeçalho existente! foreach prot { { Common off_cmn_ } … { Message off_msg_ } } add-packet-header $prot

Como Funciona O Cabeçalho Packet PacketHeader/Common PacketHeader/IP PacketHeader/TCP next_ hdrlen_ bits_ size determined at compile time hdr_cmn size determined at simulator startup time (PacketHeaderManager) size determined at compile time hdr_ip size determined at compile time hdr_tcp ……

Gerenciamento De Filas Filas são locais de armazenamento onde pacotes são contidos (ou descartados). No ns, filas fazem parte dos enlaces entre nodos. enqT_ queue_ deqT_ drophead_ drpT_ link_ ttl_ Node entry head_ tracing simplex link Uso: ns_ duplex-link $n0 $n1 5Mb 2ms DropTail

Gerenciamento De Filas (Cont.) A classe Queue implementa as funcionalidades básicas de uma fila. Principais métodos: void enque(Packet*) Packet* deque() void block() void unblock() Os métodos block() e unblock() são utilizados para bloquear e desbloquear a fila. Este mecanismo é utilizado para simular atraso de transmissão. Implementados pelas classes herdeiras.

Gerenciamento De Filas (Cont.) O ns disponibiliza diferentes tipos de fila: DropTail; Fair Queueing (FQ), Stochastic Fair Queueing (SFQ) e Deficit Round Robin (DRR); Gerenciamento de buffer RED; Class-Based Queueing (CBQ) e CBQ/WRR (Weighted Round-Robin).

Gerenciamento De Filas (Cont.) Objetos QueueMonitor são usados para monitorar um conjunto de informações como chegada e partida de pacotes e contadores de descartes em filas, além de gerar estatísticas como tamanho médio de fila. Uso: O ns permite criar um trace específico de uma fila pertencente a um enlace através do comando: $ns monitor-queue $n0 $n1 <trace> <intervalo> $ns trace-queue $n0 $n1 <trace>

Agentes Agentes são endpoints onde pacotes são construídos e consumidos. São usados na implementação de protocolos em várias camadas: Protocolos da camada de transporte, por exemplo UDP e variações do TCP. Protocolos de roteamento, por exemplo Distance-Vector.

Agentes (Cont.) Vários agentes são disponibilizados pelo ns. Os mais conhecidos são: TCP e suas variações (Vega, Reno, Newreno...); TCPSink, um receptor TCP Reno ou Tahoe; UDP LossMonitor, um receptor de pacotes que produz estatísticas de perda de pacotes; Null, um agente que descarta pacotes; rtProto/DV, que simula o protocolo de roteamento distance-vector.

Agentes (Cont.) Agentes são modelados pela classe Agent, implementada em C++ e OTcl (~ns/agent{.h,.cc} e ~ns/tcl/lib/ns-agent.tcl}). Apresenta algumas variáveis utilizadas para inicializar campos dos pacotes criados: addr_ -> endereço do nodo ao qual o agente está conectado; dst_ -> endereço do nodo destino; size_ -> tamanho do pacote gerado em bytes; type_ -> tipo do pacote gerado.

Agentes (Cont.) A classe Agent provê métodos para geração e recebimento de pacotes: Packet* allocpkt() -> aloca um novo pacote e inicializa seus campos. Packet* allocpkt(int n) -> aloca um novo pacote com um tamanho n de dados. void recv(Packet*, Handler*) -> primeiro método invocado quando um pacote é recebido.

Agentes (Cont.) n0 n1 1 1 Port Classifier Port Classifier dst_=1.0 Addr Classifier Agent/TCP agents_ Addr Classifier Agent/TCPSink agents_ 1 1 dmux_ dmux_ Link n0-n1 entry_ entry_ classifier_ classifier_ Link n1-n0

Utilizando Agentes Cria-se agente emissor e o conecta ao nodo fonte: Cria-se agente receptor e o conecta ao nodo sorvedouro: Conectam-se os agentes emissor e receptor: set tcpSource [new Agent/TCP] $ns attach-agent $n0 $tcpSource set tcpSink [new Agent/TCPSink] $ns attach-agent $n1 $tcpSink $ns connect $tcpSource $tcpSink

Criando Um Novo Agente Cria-se o cabeçalho do novo protocolo (conforme instruções anteriores). Cria-se uma classe em C++ que estende a classe Agent. Arquivo .h class MeuAgente : public Agent { public: MeuAgente(); int command(int argc, const char*const* argv); void recv(Packet*, Handler*); };

Criando Um Novo Agente (Cont.) Arquivo .cc MeuAgente::MeuAgente() : Agent(PT_MEUAGENTE) { bind("packetSize_", &size_); } int MeuAgente::command(int argc, const char*const* argv) { ... void MeuAgente::recv(Packet* pkt, Handler*) {

Criando Um Novo Agente (Cont.) Cria-se classe estática para OTcl linkage Arquivo .cc static class MeuAgenteClass : public TclClass { public: MeuAgenteClass() : TclClass("Agent/MeuAgente") {} TclObject* create(int, const char*const*) { return (new MeuAgente()); } } class_meuagente;

Criando Um Novo Agente (Cont.) Inserir valores default para as variáveis do agente. Adicionar o arquivo .o gerado na lista de arquivos objeto do ns no arquivo Makefile.in e executar ./configure. Arquivo ~ns/tcl/lib/ns-default.tcl Agente/MeuAgente set packetSize_ 64 sessionhelper.o delaymodel.o srm-ssm.o \ srm-topo.o \ ping.o \ $(LIB_DIR)int.Vec.o $(LIB_DIR)int.RVec.o

Aplicações Aplicações são construídas no topo dos protocolos de transporte. Modeladas através da classe Application. Principais métodos: void send(int nbytes) void recv(int nbytes) void start() void stop() Implementados pelas classes herdeiras.

Aplicações (Cont.) Utilizam os serviços dos protocolos de transporte através de chamadas para os seguintes métodos: send(int nbytes) sendmsg(int nbytes, const char* flags = 0) close() listen()

Aplicações (Cont.) n0 n1 1 Port Classifier Application/FTP dst_=1.0 dst_=0.0 Addr Classifier Agent/TCP Addr Classifier Agent/TCPSink agents_ agents_ 1 dmux_ dmux_ entry_ entry_ classifier_ classifier_

Geradores De Tráfego Tráfego é gerado em intervalos, que podem seguir uma determinada distribuição ou não. Geradores de tráfego disponíveis: Exponencial -> geram tráfego de acordo com uma distribuição Exponencial On/Off Pareto -> geram tráfego de acordo com uma distribuição Pareto On/Off CBR (Constant Bit Rate) -> geram tráfego a uma taxa constante

Geradores De Tráfego (Cont.) Uso: set src [new Agent/UDP] set sink [new Agent/UDP] $ns_ attach-agent $n0 $src $ns_ attach-agent $n1 $sink $ns_ connect $src $sink set e [new Application/Traffic/Exponential] $e attach-agent $src $e set packetSize_ 210 $e set burst_time_ 500ms $e set idle_time_ 500ms $e set rate_ 100k

Geradores De Tráfego: Trace Driven ns permite geração de tráfego a partir de arquivos de trace. Uso: set tfile [new Tracefile] $tfile filename <file> set src [new Application/Traffic/Trace] $src attach-tracefile $tfile <file>: - Formato binário - inter-packet time (msec) e packet size (byte)

Aplicações Simuladas ns permite a simulação de dois tipos de aplicações: Application/FTP Application/Telnet

Aplicações Simuladas (Cont.) Uso set tcp1 [new Agent/TCP] $ns_ attach-agent $n0 $tcp1 set sink1 [new Agent/TCPSink] $ns_ attach-agent $n1 $sink1 $ns_ connect $tcp1 $sink1 set ftp1 [new Application/FTP] $ftp1 attach-agent $agent

Encaminhando Pacotes n0 n1 1 1 Port Classifier Application/FTP dst_=1.0 dst_=0.0 Addr Classifier Agent/TCP Addr Classifier Agent/TCPSink 1 1 Link n0-n1 entry_ entry_ Link n1-n0