Estrutura Interna - Classes - PowerPoint PPT Presentation

About This Presentation
Title:

Estrutura Interna - Classes

Description:

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 ... – PowerPoint PPT presentation

Number of Views:60
Avg rating:3.0/5.0
Slides: 40
Provided by: kali81
Category:

less

Transcript and Presenter's Notes

Title: Estrutura Interna - Classes


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

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

3
Nodo
Unicast Node
set ns_ new Simulator multicast on set n1 ns_
node
set n0 ns_ node
4
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.

5
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

6
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 lt níveis
hierárquicosgt lt bits para nível 1gt ... lt bits
para o nível ngt
ns set-address-format hierarchical 2 8 15
7
Nodo Hierárquico
n2
Address classifier
To Port demux
Node entry
Level 3
Level 2
Level 1
8
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
9
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.

10
Formato De Pacotes (Cont.)
header
data
11
Cabeçalhos
  • A estrutura hdr_cmn é o cabeçalho comum a todos
    os pacotes.
  • Principais campos
  • ts_ -gt instante em que o pacote foi criado.
  • ptype_ -gt identifica o tipo do pacote.
  • uid_ -gt identificador único de cada pacote.
  • size_ -gt tamanho simulado do pacote em bytes.
  • iface_ -gt identifica em qual link o pacote foi
    recebido.

12
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-gtaccess(offset_)
13
Cabeçalhos (Cont.)
Arquivo .cc
static class RTPHeaderClass public
PacketHeaderClass public RTPHeaderClass()
PacketHeaderClass("PacketHeader/RTP", sizeof(hdr
_rtp)) bind_offset(hdr_rtpoffset_)
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.

14
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_NTYP
E // This MUST be the LAST one class p_info
name_PT_MESSAGE message name_PT_
NTYPE "undefined"
15
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

16
Como Funciona O Cabeçalho
Packet
size determined at compile time
hdr_cmn
size determined at compile time
size determined at simulator startup
time (PacketHeaderManager)
hdr_ip
size determined at compile time
hdr_tcp

17
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.

Uso ns_ duplex-link n0 n1 5Mb 2ms DropTail
18
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.

19
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).

20
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 lttracegt ltintervalogt
ns trace-queue n0 n1 lttracegt
21
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.

22
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.

23
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_ -gt endereço do nodo ao qual o agente está
    conectado
  • dst_ -gt endereço do nodo destino
  • size_ -gt tamanho do pacote gerado em bytes
  • type_ -gt tipo do pacote gerado.

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

25
Agentes (Cont.)
n0
n1
Port Classifier
Port Classifier
Addr Classifier
Addr Classifier
0
0
dmux_
dmux_
Link n0-n1
entry_
entry_
classifier_
classifier_
Link n1-n0
26
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
27
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 charconst argv) void recv(Packet,
Handler)
28
Criando Um Novo Agente (Cont.)
Arquivo .cc
MeuAgenteMeuAgente() Agent(PT_MEUAGENTE)
bind("packetSize_", size_) int
MeuAgentecommand(int argc, const charconst
argv) ... void MeuAgenterecv(Packet
pkt, Handler) ...
29
Criando Um Novo Agente (Cont.)
  • Cria-se classe estática para OTcl linkage

Arquivo .cc
static class MeuAgenteClass public TclClass
public MeuAgenteClass() TclClass("Agent/MeuA
gente") TclObject create(int, const
charconst) return (new MeuAgente())
class_meuagente
30
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
31
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()

32
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()

33
Aplicações (Cont.)
n0
n1
Port Classifier
Port Classifier
Agent/TCPSink
Addr Classifier
Agent/TCP
Addr Classifier
0
0
agents_
agents_
0
1
dmux_
dmux_
entry_
entry_
classifier_
classifier_
34
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 -gt geram tráfego de acordo com uma
    distribuição Exponencial On/Off
  • Pareto -gt geram tráfego de acordo com uma
    distribuição Pareto On/Off
  • CBR (Constant Bit Rate) -gt geram tráfego a uma
    taxa constante

35
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
36
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 ltfilegt
  • set src new Application/Traffic/Trace
  • src attach-tracefile tfile
  • ltfilegt
  • - Formato binário
  • - inter-packet time (msec) e packet size (byte)

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

38
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
39
Encaminhando Pacotes
n0
n1
Application/FTP
Port Classifier
Port Classifier
Agent/TCPSink
Addr Classifier
Agent/TCP
Addr Classifier
0
0
Link n0-n1
entry_
entry_
Link n1-n0
Write a Comment
User Comments (0)
About PowerShow.com