Dissertao de Mestrado apresentada ao Programa de Ps-graduao em Engenharia de Sistemas e Computao, COPPE, da Universidade Federal do Rio de Janeiro, como parte dos requisitos
DISSERTAO ALBERTO
SUBMETIDA COIMBRA DA
AO DE
CORPO
DOCENTE E
DO
INSTITUTO DE DE A
LUIZ
PS-GRADUAO
ENGENHARIA JANEIRO
(COPPE) PARTE
UNIVERSIDADE REQUISITOS
FEDERAL
COMO
DOS
NECESSRIOS
Aprovada por:
Peixoto, Jorge Luiz Silva Estudo do Tempo de Acesso ao Meio em Redes em Malha sem Fio/Jorge Luiz Silva Peixoto. Rio de Janeiro: UFRJ/COPPE, 2009. XV, 86 p.: il.;
29, 7cm.
Orientadores: Lus Felipe Magalhes de Moraes Marcial Porto Fernandez Dissertao (mestrado) UFRJ/COPPE/Programa de Engenharia de Sistemas e Computao, 2009. Referncias Bibliogrcas: p. 63 72. 1. 3. Redes em Malha sem Fio. 2. IEEE 802.11e.
Magalhes de
et al..
iii
Aos meus pais, Edmar e Marli; a minha namorada, Marianna; a minha amiga, Juliana e; ao meu irmo mais velho, Henrique.
iv
Agradecimentos
A Deus por ter me dado sade e fora para concluir este trabalho. Ao professor Lus Felipe pelos seus ensinamentos, orientao acadmica e conana. Ao professor Marcial Fernandez por sua dedicao, disponibilidade, presteza e orientao acadmica. Ao meu orientador de graduao, professor Marcos Negreiros, que me incentivou a fazer mestrado na COPPE. Aos colegas e amigos do Laboratrio de Redes de Alta Velocidade (RAVEL) pelos momentos de companheirismo, estudo e alegria. Em especial ao Beto, Paulo, Bruno, Rafael Bezerra, Rafael Fernandes, Tiago e Jlio. Aos colegas e amigos da UECE que participaram indiretamente da elaborao desta dissertao. Em especial a Juliana, Marcos, Aclio, Jeandro e Lisse. Armina por suas palavras de incentivo e motivao. Ao SERPRO pela liberao de tempo parcial para o desenvolvimento deste trabalho de ps-graduao. Aos meus colegas de trabalho do SERPRO: Cadu, pela parceria nos trabalhos de simulao; e minha ex-chefe, Socorro Alves, pelo seu apoio e compreenso.
Resumo da Dissertao apresentada COPPE/UFRJ como parte dos requisitos necessrios para a obteno do grau de Mestre em Cincias (M.Sc.)
Setembro/2009 Orientadores: Lus Felipe Magalhes de Moraes Marcial Porto Fernandez Programa: Engenharia de Sistemas e Computao
As Redes Locais sem Fio baseadas no padro IEEE 802.11 podem operar em dois modos: infraestruturado e ad hoc. No modo infraestruturado, as estaes No modo
ad hoc,
as
estaes sem o se comunicam diretamente ou por mltiplos saltos, dependendo da distncia entre elas. As Redes em Malha sem Fio, exploradas nesta dissertao, so basicamente uma mistura entre os modos infraestruturado e ad hoc. So compostas por ns sem o do tipo cliente e roteador. Os roteadores so dispostos em locais xos conectados rede eltrica formando uma malha ou tronco sem o e cumprem o papel fundamental de rotear pacotes. Os ns do tipo cliente usam essa malha para estabelecerem comunicao entre si e, principalmente, com a rede cabeada (para isso, pelo menos um roteador sem o deve estar conectado rede cabeada). Em
particular, essas redes sem o multissaltos baseadas no padro IEEE 802.11 resultam em baixo desempenho e, em alguns casos, inanio de recursos para ns clientes que esto a alguns saltos de distncia da rede cabeada. O mecanismo proposto nesta dissertao visa minimizar esse problema causado pela exausto do recurso
tempo
de acesso ao meio,
os ns roteadores.
provendo uma utilizao justa do recurso compartilhado entre Ao nal, atravs de experimentos de simulaes, verica-se a
eccia do mecanismo.
vi
Abstract of Dissertation presented to COPPE/UFRJ as a partial fulllment of the requirements for the degree of Master of Science (M.Sc.)
September/2009
Advisors: Lus Felipe Magalhes de Moraes Marcial Porto Fernandez Department: Systems Engineering and Computer Science
Wireless Local Area Network based on IEEE 802.11 standard operates in two modes: infrastructured and ad hoc. On infrastructure mode, wireless stations communicate themselves through Access Point. On ad hoc mode, wireless stations
communicate themselves either straightly or by multiple hops, depending on the distance among them. Wireless Mesh Networks, covered in this dissertation, are
essentially a mix between infrastructured and ad hoc modes. These networks are composed by client and router nodes. Wireless routers are located in steady position connected to electricity network forming a mesh or wireless backhaul and play a fundamental role for the maintenance of connectivity of the network: routing packets. The client nodes use this mesh to establish communication themselves and, mainly, to wired network (at least one wireless router should be connect to wired network). In particular, these multihop wireless networks based on IEEE 802.11 standard results in poor performance and, in some cases, starvation of resources to the clients that are some hops from wired network. The objective of proposed mechanism is to minimize this problem caused by starvation of the access medium time resource and to provide a fair application of the shared resource among routers. At the end, through simulation experiments, we verify the eciency of the mechanism.
vii
Sumrio
Lista de Figuras Lista de Tabelas Lista de Abreviaturas 1 Introduo
1.1 1.2 1.3 1.4 Motivao e Problema . . . . . . . . . . . . . . . . . . . . . . . . . . Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Contribuies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
x xii xiii 1
2 4 4 5
Organizao do texto . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Fundamentao terica
2.1 Padro IEEE 802.11 2.1.1 2.1.2 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . Topologias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controle de Acesso ao Meio, Camada MAC . . . . . . . . . .
6
6 8 10 16
. . . . . . . . . . . . . . . . . . Acesso
17
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
viii
3 Mecanismo de priorizao
3.1 3.2 3.3 3.4 Viso Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suposies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Soluo tima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mecanismo de Priorizao . . . . . . . . . . . . . . . . . . . . . . . .
30
30 31 32 33
35
35 36 38 41 42 47
Suporte EDCA para NS-2.28 . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Implementao do EDCA para NS-2.28 por TKN . . . . . . .
4.5
. . . . . . . . . . . . . . . . . . . . . . .
5 Resultados de simulao
5.1 5.2 5.3 5.4 Materiais Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
48 49 51 56 56 58
6 Concluso
6.1 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
61
63 73
ix
Lista de Figuras
1.1 Desproporo do nmero de uxo encaminhado por n roteador. . . . 3
. . . . . . . . . . . . . . . . . . . . . .
7 7
ad hoc :
IBSS 1 e IBSS 2. Em
Service Set ). .
2.4 2.5 2.6
Um BSS infraestruturado.
Problema do terminal escondido. C transmiste para B. A, que est escondido (em relao a C), transmite para B causando uma coliso em B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C transmite para D. B, que est 11
2.7
exposto (em relao a C), tentar transmitir para A, mas sente o canal ocupado, adiando a transmisso. . . . . . . . . . . . . . . . . . . . . . 2.8 2.9 RTS/CTS em funcionamento. . . . . . . . . . . . . . . . . . . . . . . 12 13
Exemplo do funcionamento do IEEE 802.11 DCF com RTS/CTS habilitado. Dois quadro
Data
livre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10 Relao de espaamento entre quadro do IEEE 802.11e. . . . . . . . . 2.11 A estao ganha acesso ao meio uma vez e envia dados enquanto o TXOPLimit no expirar. . . . . . . . . . . . . . . . . . . . . . . . . . 2.12 A gura mostra as quatro instncias da funo de coordenao EDCA de uma estao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.13 Topologia de rede WAN composta por quatro roteadores. . . . . . . .
17
18 19
2.14 Classicao das redes sem o multissaltos. . . . . . . . . . . . . . . . 2.15 RMSF de arquitetura hierrquica, onde os ns A, B, C, D e E so do tipo roteador e 1, 2, 3, 4, 5 e 6, do tipo cliente. A e B fazem interface com RSMF e a Internet. . . . . . . . . . . . . . . . . . . . . . . . . .
20
22
2.16 A gura mostra uma RMSF de arquitetura plana. Os ns A, B e C agem ora como cliente, ora como roteador, enquanto 1, 2 e 3 agem apenas como cliente. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.17 A gura mostra uma RMSF de arquitetura hbrida formada pela combinao de uma RMSF de arquitetura hierrquica, uma rede WiMAX, Wi-Fi e uma rede de celular GSM. . . . . . . . . . . . . . . . . . . . 24
3.1
Soluo tima.
Ns clientes estariam
virtualmente
a um salto de 32 34
. . . . . . . . . . . . . . . . . . . . .
37 38 39
49 52 53 55 55 56 57 57
Cada n cliente (5, 4, 3, 2 e 1) gera um uxo destinado ao n A. . . . Vazo em Mbps por uxo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Relao entre as mtricas Oportunidades de transmisso (sem asterisco) e Vazo (com asterisco). . . . . . . . . . . . . . . . . . . . . . . 58
Os ns 1, 2, 3, 4, 5, 6, 7 e 8 geram uxos 59 59 59
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xi
Lista de Tabelas
1.1 Exemplos de padres de rede sem o. . . . . . . . . . . . . . . . . . . 2
4.1
43
5.1 5.2
50 51
xii
Lista de Abreviaturas
AIFS Arbitration Inter-Frame Space, p. 18
BSS
CA
Categoria de Acesso, p. 17
CBR
CFB
CP
Contention Period, p. 15
CSMA/CA
CTS
Clear-to-Send, p. 12
DAB
DCF
DIFS
DSSS
EDCA
ESS
FHSS
GNU
GPS
GSM
xiii
HCCA
HCF
HC
Hybrid Coordinator
Coordenador Hbrido, p. 19
HWMP
IEEE
JC
Janela de Conteno, p. 13
LLC
MAC
MAP
MPP
Mesh Portal, p. 24
MP
Mesh Point, p. 23
MSDU
NAV
NS-2
Network Simulator 2, p. 36
OSI
PA
Ponto de Acesso, p. 1
PCF
PC
Point Coordinator, p. 15
PDA
PIFS
RM-AODV
RMSF
RTS
Request-to-Send, p. 12
xiv
SIFS
SSID
STP
TCP
TG
Task Group, p. 6
TXOP
Transmission Opportunity, p. 16
UDP
WECA
WLAN
WMAN
WMN
WPAN
WWAN
xv
Captulo 1 Introduo
As redes sem o oferecem muitas vantagens em relao as redes cabeadas. A principal delas a exibilidade, permitindo que dispositivos mveis (computador porttil, PDA
onde os os muitas vezes no podem chegar. O advento dessas redes abriu precedentes jamais imaginveis pelo homem. Os carros j oferecem vrios sistemas de comunicao sem o. Msicas, notcias, previso do tempo e outras informaes transmitidas por rdio-difuso so recebidas por DAB (
pessoal, um sistema de comunicao global para dispositivos mveis pode estar disponvel (GSM
Comunicao Mvel).
via satlite pode ser usada, enquanto a posio atual do carro determinada via o sistema de posicionamento global (GPS Posicionamento Global).
Sistema de
desenvolvimento de diferentes padres de tecnologia de rede sem o. A Tabela 1.1 exemplica padres de rede sem o classicados por rea de cobertura. As Redes Locais sem Fio (
WLAN) baseadas no
ad hoc.
No modo infraestruturado (Seo 2.1.1), as estaes sem o se comunicam por intermdio de um dispositivo, geralmente, disposto num ponto central da WLAN, chamado Ponto de Acesso (PA), que, por sua vez, conectado outras redes (In-
ad hoc
se comunicam diretamente ou por mltiplos saltos, dependendo da distncia entre elas. Entretanto, nesse tipo de comunicao no h garantia de conectividade, j que os ns so mveis e dependem da colaborao [2] de outras estaes sem o para entregar os pacotes de dados corretamente.
Tabela 1.1: Exemplos de padres de rede sem o. Classicao WWAN WMAN WLAN WPAN Raio de cobertura Centenas/milhares de quilmetros Dezenas de quilmetros Centenas de metros At 10 metros GPS 3G, GSM, WiMAX Wi-Fi, HiperLAN Bluetooth, ZigBee Protocolos
(Seo 2.3), exploradas nesta dissertao, so basicamente uma mistura entre os modos infraestruturado e
ad hoc
cliente e roteador. Os roteadores sem o so dispostos em locais xos conectados rede eltrica formando uma malha ou tronco sem o e executam um papel fundamental para manuteno da conectividade da rede: o roteamento de pacotes. Os ns do tipo cliente usam essa malha para estabelecerem comunicao entre si e, principalmente, com a rede cabeada (para isso, pelo menos um roteador sem o deve estar conectado rede cabeada).
clientes que esto a alguns saltos de distncia da rede cabeada. caractersticas presentes em tais redes, entre elas, podemos citar:
Isso deve-se a
DCF (Seo 2.1.2) prov oportunidades aproximadamente iguais de acesso ao meio compartilhado entre as estaes em conteno;
Fluxos de dados originados em estaes distantes (em nmero de saltos) da rede cabeada disputam acesso ao canal um maior nmero de vezes e isso eleva a probabilidade de perdas ou colises, acarretando uma menor vazo do uxo.
A Figura 1.1 ilustra o problema citado no segundo pargrafo dessa seo. Suponha que A, B e C so roteadores sem o que formam um tronco sem o. Todos esto conectados energia eltrica. Apenas A est diretamente conectado Internet. Os roteadores A, B e C esto congurados com rotas estticas [10] e no geram trfego, apenas encaminham os dados gerados pelos ns clientes 1, 2, 3, 4 e 5. Agora, suponha que 1, 2, 3, 4 e 5 iniciaram (cada um) um uxo de dados com a Internet. O uxo iniciado por 4, antes de chegar a A, deve passar por C e depois B. O uxo do n 2, antes de chegar a A, passa por B. O n 1 comunica-se diretamente com A e, esse, por sua vez, com a Internet.
Atravs de experimentos de simulao, observamos que ao incrementarmos gradativamente a velocidade/frequncia que os ns clientes (1, 2, 3, 4 e 5) inserem quadros na rede, a vazo do uxo gerado por 1 continua a crescer em detrimento da vazo dos uxos dos outros ns clientes 2, 3, 4 e 5. Isso se deve as caractersticas listadas a partir do terceiro pargrafo desta seo. Alm dessas, um outro fator
preponderante a desproporo do nmero de uxos encaminhados pelos ns. No exemplo da Figura 1.1, enquanto o ns clientes encaminham apenas um uxo cada, A encaminha cinco uxos (oriundos de 1, 2, 3, 4 e 5), B encaminha quatro uxos (oriundos de 2, 3, 4 e 5) e C encaminha trs uxos (oriundos de 3, 4 e 5).
1.2 Objetivo
Compartilhar, de forma justa, o recurso
do tronco sem o. O compartilhamento do recurso deve ser proporcional ao nmero de ns clientes
maximizar o uso do recurso disponibilizado para cada roteador, de modo que o recurso disponibilizado no seja desperdiado.
1.3 Contribuies
As contribuies deste trabalho embasam-se em dois pontos:
Apontar as causas do problema de desbalanceamento do recurso tempo de acesso ao meio que ocorre em redes sem o multissaltos baseadas no IEEE 802.11, em particular nas RMSF;
Mitigar o problema por meio da proposio, implementao e avaliao de um mecanismo voltado a minimizar o problema de desbalanceamento de recurso entre os ns da rede. Este mecanismo foi viabilizado por meio de modicaes feitas ao cdigo-fonte da plataforma de simulao de redes de computadores adotada neste trabalho.
A ca-
mada fsica dene as tcnicas de transmisso empregadas. Trs foram inicialmente denidas: uma usa infravermelho e emprega a tcnica de Modulao por Posio de Pulso (
Pulse Position Modulation ); as outras duas usam ondas curtas de rdio e Frequency Hopping Spread Spectrum ) e
A camada de enlace dividida em duas:
uma parte comum entre vrios tipos de rede, a camada LLC; e outra especca das redes sem o, a camada MAC (Figura 2.1). A primeira camada fsica nunca foi implementada comercialmente e todas elas possuam uma baixa taxa de transmisso (at 2 Mbps). Antes mesmo do padro ser nalizado, percebeu-se que as taxas de transmisso eram muito baixas para a tecnologia obter sucesso no mercado, assim os grupos de trabalho (TG
Task Group )
A e B foram criados para explorar alternativas de transmisso a taxas maiores. O TG A conseguiu alcanar taxas de 54 Mbps explorando a banda de frequncia 5 GHz, porm o custo de produo dos dispositivos e as limitaes do uso dessa banda em alguns pases barraram a implantao em larga escala do padro. O TG B desenvolveu uma camada fsica explorando tcnicas mais sosticadas de espalhamento espectral em 2,4 GHz, alcanando taxas de at 11 Mbps. Ambos os adendos , 802.11a e 802.11b, foram publicados em Outubro de 1999. Um outro adendo, 802.11g, nalizada em 2003 suporta a mesma taxa de transmisso do 802.11a, mas trabalha em 2,4 GHz.
O termo Wi-Fi comumente usado para descrever a tecnologia de redes sem os baseada no padro IEEE 802.11. Esse termo vem do programa de certicao mantido pela
Wi-Fi Alliance.
dutos que implementam o padro IEEE 802.11. Seu propsito padronizar, testar e certicar os produtos compatveis. Os produtos aprovados nos testes recebem a marca Wi-Fi (Figura 2.2).
2.1.1
Topologias
Estaes que implementam o padro IEEE 802.11 so dispositivos computacionais equipados com interface de rede sem o. Podem ser mveis ou estacionrias. Essas estaes formam uma rede atravs de clulas chamadas
(BSS). As
estaes podem se comunicar, uma vez que estejam numa mesma BSS. Dois tipos de BSSs so suportados pela camada MAC do IEEE 802.11, permitindo a criao tanto de redes
ad hoc
Redes Independentes ou
ad hoc
A rede
Nesse tipo de rede, os ns se comunicam diretamente, assim devem estar a um distncia que possibilite a comunicao direta entre eles (Figura 2.3).
ad
hoc
prvio. So bastante exveis, ideais para formaes temporrias, como uma reunio e utilizadas para ns especcos, como transferncia de arquivos.
ad hoc : IBSS 1 e IBSS 2. Em redes ad hoc, ns formam clulas chamadas IBSS (Independent Basic Service Set ).
Figura 2.3: Um grupo de ns formando duas redes
Infraestruturada
Nas redes sem o IEEE 802.11, a topologia mais comumente utilizada a infraestruturada (Figura 2.4). Esse tipo de topologia possibilita a interconexo entre a
rede sem o e a rede cabeada. Uma clula de BSS infraestruturada sempre possui pelo menos um identicador, chamado SSID (
Acesso (PA). Esse dispositivo um ponto estacionrio central de trfego que opera num canal xo. Suas principais funes so (1) servir de ponte entre os ns sem o e
a rede cabeada e (2) encaminhar quadros entre os ns sem o da BSS. Dessa forma, os ns associados se comunicam apenas atravs do PA. Num BSS infraestruturado, as estaes sem o devem se associar antes de obter acesso rede. Associao o processo no qual os ns mveis se ligam logicamente a rede 802.11. estar associado apenas a um PA por vez. Um n pode
Infraestruturada Estendida
BSSs podem ser congurados de modo a prover acesso a uma pequena rea, como um escritrio ou residncia, mas no para uma rea maior, como um andar de um prdio. Pensando nisso, o 802.11 criou o ESS (
consistindo
de um conjunto de BSSs conectados atravs de um tronco de rede nvel 2. Como ilustrado na Figura 2.5, usurios de BSSs diferentes se comunicam atravs dos PAs e esses, por sua vez, atravs da conexo cabeada. Os PAs que compem um ESS compartilham SSIDs idnticos, dessa forma, o usurio se abstrai da existncia de vrios BSSs. Idealmente, cada PA deve trabalhar em um canal diferente, de modo a evitar interferncias. Se for necessrio o reuso de algum canal, esses devem ser atribudos aos PAs mais distantes entre si. Um ESS permite que redes locais sem o se estendam o bastante para prover conectividade em uma grande rea, como o
campus
de uma
universidade. PAs devem estar dispostos de maneira que seus BSSs se sobreponham,
Quando um usurio se desloca entre clulas ou BSSs, o dispositivo mvel cuidar de encontrar o PA com o melhor sinal. Dessa maneira um n pode se mover sem perder sua conexo. Esse procedimento de transio do n entre clulas chamado de
hando.
O padro IEEE 802.11 uma tecnologia de rede e, por conseguinte, prove vrios Entre eles destacam-se:
servios de redes.
varredura, autenticao
associao.
A varredura permite que o n mvel descubra os BSSs existentes ao seu alcance. Para que isso ocorra, os PAs transmitem quadros em intervalos regulares que so utilizados pelas estaes mveis para detectar a existncia de um BSS. Antes de ingressar em um BSS, o n precisa estar autenticado. Somente se o resultado for positivo, o n se associa ao BSS. Um n pode estar autenticado em vrios PAs, mas somente pode estar associado a um por vez. Uma estao em
roaming
inicia o
hando
2.1.2
lhantes.
Access
10
802.11 utiliza a Preveno de Coliso (CSMA/CA). Essa diferenciao motivada pela diculdade da deteco de coliso em canais de comunicao sem o. Uma
estao transmissora no consegue detectar colises de forma convel devido ao sinal transmitido ser consideravelmente mais forte que o sinal recebido. As redes sem o esto sujeitas a dois problemas: terminal escondido e terminal exposto. O problema de terminal escondido exemplicado na Figura 2.6. Observe que C est transmitindo para B. Se A vericar o canal, erroneamente concluir que poder transmitir, pois em seu raio de alcance ningum est transmitindo. Dessa forma, ao iniciar a transmisso, causar uma coliso em B.
Figura 2.6:
O problema de terminal exposto ocorre quando C transmite para D e B quer transmitir para A (Figura 2.7). B no consegue transmitir, pois percebe a transmisso de C para D. Porm, a transmisso de B para A poderia ocorrer sem problema de coliso, j que A est fora de alcance de D. A camada MAC do IEEE 802.11 foi projetada para tratar essas questes e prover um meio de comunicao sem o robusto e seguro. Com o intudo de promover uma comunicao mais convel, o padro IEEE 802.11 permite o uso de
positive acknowledgments.
erro para transmisso de dados no qual o receptor envia uma mensagem de conrmao para o transmissor a cada mensagem recebida. Caso haja falha no envio da mensagem ou no recebimento da conrmao, a mensagem original retransmitida. Algum sobrecarga (
11
Figura 2.7: Problema do terminal exposto. C transmite para D. B, que est exposto (em relao a C), tentar transmitir para A, mas sente o canal ocupado, adiando a transmisso.
rncia ou coliso, por exemplo). A m de prevenir colises, o 802.11 prever o uso do mecanismo RTS/CTS (
Request-To-Send/Clear-To-Send
Solicitao-de-Envio/Aprovao-de-Envio), que
aumenta a robustez do protocolo minimizando os problemas de terminal escondido e terminal exposto. Antes de enviar uma mensagem ao destino, o n deve enviar um RTS. Estando habilitado a receber o pacote, o n de destino deve responder com um CTS. Ao receber o CTS, o n de origem pode ento seguir com a transmisso da mensagem (Figura 2.8). Os quadros RTS e CTS possuem informaes relevantes sobre o tamanho do MSDU e do ACK que sero trocados. Outras estaes da rede utilizam essas informaes para congurar um contador interno chamado
Network
Allocation Vector
ses at que esse contador expire. Mesmo que um n escondido no possa perceber um RTS enviado, ele receber o CTS de resposta e poder atualizar seu contador. O mecanismo RTS/CTS minimiza a interferncia de um n escondido durante a transmisso entre duas estaes, assim como de um n exposto. O IEEE 802.11 dene dois mtodos de acesso ao canal: o DCF (
12
Baseado no CSMA/CA, o DCF de implementao obrigatria e atualmente o mtodo de acesso ao meio mais utilizado. usado para transmisso de trfego
lizando mecanismos virtuais. No primeiro caso, quando um transmissor est pronto para transmitir, ele checa se o meio est ocupado, caso esteja, ele espera at o m da transmisso em andamento. Essa parte faz do DCF um protocolo CSMA. Quando o canal torna-se disponvel, em vez de transmitir imediatamente, o transmissor espera um intervalo de tempo DIFS (DCF
Interframe Space
do DCF) mais um intervalo de tempo escolhido aleatoriamente do intervalo [0, JC), onde JC (Janela de Conteno) incrementado exponencialmente a cada tentativa de retransmisso do quadro. Esse comportamento faz do DCF um protocolo de Preveno de Coliso (CA
Collision Avoidance ).
O mecanismo virtual utiliza o contador NAV, mencionado no penltimo pargrafo da Seo 2.1.2. Esse contador armazena o tempo (em microsegundos) que
13
o meio estar reservado para transmisso. Cada estao mantm atualizado o seu NAV atravs de informaes contidas nos cabealhos dos quadros RTS/CTS. Isso preveni que as outras estaes acessem o meio, enquanto a transmisso corrente no se completa. O NAV pode ser interpretado como um pedido de reserva de transmisso. Assim, somente quando o NAV estiver zerado, a estao iniciar o processo de transmisso. O intervalo SIFS menor que o DIFS, permitindo que o quadro ACK tenha maior prioridade de acesso ao meio. Isso garante que nenhuma estao ir transmitir, enquanto um ACK estiver sendo aguardado. Se o transmissor no receber o ACK durante um intervalo de tempo SIFS, assume-se que ocorreu uma coliso. O transmissor deve ento realizar uma nova tentativa de transmisso. Para reduzir a probabilidade de coliso (de acordo o algoritmo de Recuo Exponencial Binrio), a janela de conteno JC dobrada a cada tentativa de retransmisso at que atinja um valor mximo sucesso, JC reiniciado com o valor
JCmax .
JCmin .
at que se alcance o nmero mximo de retransmisses, caso isso ocorra, o quadro descartado. Devido as altas taxas de erro causadas por interferncias no meio de comunicao sem o, quadros menores tem maiores chances de serem transmitidos com sucesso que quadros maiores. Isso motivou a especicao de um mecanismo de fragmentao na camada MAC do 802.11. Quadro grandes so fragmentados quando ul-
trapassam um determinado limiar. A cada fragmento transmitido com sucesso, um quadro de conrmao (ACK) enviado. Aps uma estao ganhar acesso ao meio, a sequncia de quadros
evita que outras estaes tentem acesso ao meio antes que a transmisso da de quadros
Figura 2.9: Exemplo do funcionamento do IEEE 802.11 DCF com RTS/CTS habilitado. Dois quadro
Data
14
mensagens do transmissor esto localizados na parte superior da gura, enquanto as mensagens do receptor na parte inferior. O transmissor, antes de enviar, escuta o meio ocupado, assim atrasa sua transmisso at o meio car livre. Quando isso ocorre, espera o tempo DIFS. Encerrando DIFS, inicia-se a disputa ao meio, ganha acesso aps expirar o tempo de
backo
de mensagens iniciada seguindo o mtodo RTS/CTS. As estaes prximas ao escutarem o envio do RTS ou CTS atualizam seu contadores NAV.
Coordination Function
polling
(interrogao) provendo um
realizar o
pendentes. Foi projetado para servios/aplicaes sensvel ao retardo. No IEEE 802.11, o tempo pode ser segmentado em
superframes
(superquadros),
beacon.
Conteno (
Contention
Period
beacon,
inicia-se o Perodo Livre de Conteno (nesse perodo o PCF usado). Aps o CFP, inicia-se o perodo de conteno, no qual utilizado o DCF. Durante o CFP, o PC responsvel por enviar mensagens s estaes, que podem ser do tipo CF-Poll ( (transmisso de dados e
polling ). Data
o tempo mximo de durao indicado no quadro de acesso transmite uma mensagem do tipo CF-END.
beacon
ou quando o ponto de
Durante o CFP no h disputa de acesso ao meio entre as estaes. Um CFP inicia quando o PA obtem acesso ao meio aps esperar um intervalo de tempo PIFS (PCF de
Interframe Space
beacon.
O PIFS menor que o DIFS que, por sua vez, maior que o SIFS.
15
Dessa maneira o PCF tem maior prioridade sobre o DCF, mas no interrompe uma transmisso DCF em andamento. Uma vez que o PCF obtem acesso ao meio, o
combina as funcionalidades do DCF e PCF com mecanismos especcos de provimento QoS [17] [18] [19]. O HCF possui duas funes de coordenao ou modos de operao: o EDCA (
Enhanced Distribution Coordinate Access Acesso Aprimorado Con Acesso de Canal Controlado do HCF), que uma melhoria
do PCF. As funes de coordenao EDCA e HCCA operam concorrentemente. Assim como no PCF, o HCF divido em perodos com e sem conteno, nos quais o EDCA e o HCCA so usados, respectivamente. O 802.11e possibilita o HCCA ser usado durante o perodo com conteno. O HCF aloca as estaes o direito de transmitir atravs de TXOP (
Transmission
Opportunity
concebido durante uma disputa (perodo com conteno), sendo chamado de EDCA TXOP; ou pode ser obtida quando uma estao recebe um quadro QoS CF-Poll do PA, sendo chamado de HCCA-TXOP. O TXOP dene o intervalo de tempo no
16
Uma estao
ao ganhar acesso ao meio poder transmitir enquanto o tempo denido pelo TXOP no tiver expirado. O PA determina o limite do TXOP (TXOPLimit).
Figura 2.11: A estao ganha acesso ao meio uma vez e envia dados enquanto o TXOPLimit no expirar.
A TXOP possibilita que uma estao, durante o perodo denido pelo TXOPLimit, envie vrios quadros em srie sem precisar entrar em conteno a cada quadro transmitido (Figura 2.11). A estao continua a transmitir aps passado o tempo de SIFS se for possvel enviar o prximo quadro durante intervalo de TXOPLimit restante. O envio de quadros em srie pode melhorar signicativamente o desempenho, visto que no necessrio esperar o tempo de DIFS + enviado.
backo
a cada quadro
2.2.1
EDCA (Enhanced
Pacotes
vindos das camadas superiores devem ser mapeados para a sua respectiva CA de acordo com as marcaes de prioridade feitas pelo usurio. Cada CA se comporta como uma entidade de conteno independente (Figura 2.12), possuindo parmetros diferentes de priorizao que so anunciados periodicamente atravs de quadros de
beacon enviados pelo PA. Os quatro parmetros chave usados para diferenciao [22]
2 Padro de ponte (
atualizao em 2004, incorporando entre outras extenses o 802.1w (
bridge ) para camada de controle de acesso (MAC) de LANs/MANs. ltima Rapid Spanning Tree Protocol )
17
so:
Figura 2.12: A gura mostra as quatro instncias da funo de coordenao EDCA de uma estao.
Tamanho Mnimo de Janela de Conteno (JCmin ): tamanho mnimo que a JC pode assumir. Quanto menor esse valor, maior a prioridade;
Tamanho Mximo de Janela de Conteno (JCmax ): tamanho mximo que a JC pode assumir. Quanto menor esse valor, maior a prioridade;
Limite TXOP: especica a tempo mximo que uma estao pode monopolizar o acesso ao canal para transmitir um ou mais quadros;
es-
pecica o intervalo de tempo entre o momento em que o meio ca livre e o incio de uma disputa de acesso ao meio. Uma vez que uma CA escuta o canal livre por um perodo de tempo AIFS[ onde
CA],
CA
regressiva determinada pela funo de recuo (similar ao DCF). Se ocorrer uma coliso entre ACs numa determinada estao, a CA de maior prioridade ganha o acesso. J as outras, se comportam como se tivesse ocorrido uma coliso externa. Similar ao DCF, uma falha de transmisso leva a um incremento da com o algoritmo de Recuo Exponencial Binrio.
JCmax
da CA de acordo
18
2.2.2
HCF
(HCCA Acesso de
parametrizado refere-se a capacidade de prover QoS a uxos de dados com parmetros de QoS especcos, como taxa de transmisso, latncia, tamanho do pacote e intervalo de servio. O HCCA baseado no PCF estendendo suas funcionalidades. Assim como o PCF, o HCCA prov acesso ao meio baseado em chave entre o HCCA e o PCF que o HCCA pode fazer
polling.
As diferenas
polling
da estaes durante
Na prtica, as RMSF so compostas por ns sem o do tipo roteador e cliente. Os ns roteadores tipicamente so dispostos em locais xos, no sofrem limitao de energia, formam um tronco ou malha sem o parcialmente ligada e, o mais importante, cumprem o papel fundamental de roteamento de pacotes. Os ns do
tipo cliente so mveis e usam essa malha para estabelecerem comunicao entre si e, principalmente, com a rede cabeada (para isso, pelo menos um roteador sem
19
Devido a
presena de uma topologia em malha sem o parcialmente ligada, as RMSF utilizam o encaminhamento multissalto de maneira similar s redes
ad hoc.
Elas compartilham a
ad hoc,
Redes
ad hoc
altamente dinmica. Redes de sensores sem o so formadas por pequenos ns equipados com sensores capazes de medir parmetros fsicos do ambiente no qual esto inseridos e transmiti-los para um n central de monitoramento, para isso, podem usar comunicao de nico-salto ou multissalto. Redes hbridas usam comunicao de nico salto ou multissalto simultaneamente dentro de uma rede tradicional de nico salto como rede de celular ou WLAN. Embora as redes jetados para as redes
ad hoc
s RMSF. Isso deve-se a diferenas em requisitos chave de projeto, como restries de recursos e posicionamento dos ns. As redes
cao multissalto e alta mobilidade dos ns, por outro lado as RMSF so projetadas para ns de mobilidade limitada ou xos. protocolo desenvolvido para redes Assim, a probabilidade alta que um tenha um desempenho insatisfatrio em
ad hoc
RMSF. Alm disso, as RMSF so menos limitadas em termos de recursos (energia e processamento) quando comparados as redes
ad hoc.
Em determinadas solues
20
2.3.1), dessa forma, protocolos e algoritmos podem ser projetados para explorar tal congurao. As RMSF vm emergindo como um conceito promissor de rede sem o da prxima gerao. Por causa de suas vantagens sobre outras redes sem o, dentre elas, baixo custo, fcil manuteno, robustez, cobertura convel de servios, etc., as RMSF esto sofrendo uma rpida evoluo e inspirando numerosas aplicaes, como, redes domsticas de banda larga, redes comunitrias, automao predial, redes metropolitanas de alta velocidade e redes corporativas. Entretanto, para que as RMSF possam render o seu mximo potencial, considerveis esforos de pesquisa ainda so necessrios [24]. Por exemplo, os protocolos MAC e de roteamento disponveis no so escalveis [25]. A vazo decai signiDessa forma, os Os pesquisadores
cativamente com o aumento do nmero de ns ou de saltos [8]. protocolos existentes precisam ser melhorados ou reinventados.
tm comeado a reanalisar os modelos de protocolos das redes sem o existentes, especialmente das redes IEEE 802.11 [26] [9], redes
ad hoc
o com uma perspectiva para as RMSF. Grupos de padronizao da indstria, como IEEE 802.11, IEEE 802.15, IEEE 802.16 e IEEE 802.20 [27] esto trabalhando ativamente numa nova especicao para as RMSF (Seo 2.3.2).
2.3.1
Arquitetura de rede
Baseado na topologia de rede, as RMSF podem ser classicadas em trs diferentes arquiteturas: plana, hierrquica e hbrida.
Hierrquica
Na arquitetura hierrquica, a rede possui vrios nveis nos quais os ns clientes ocupam o nvel mais baixo. Os ns roteadores sem o formam um tronco ou malha de ligao-parcial sem o com o objetivo de prover uma infraestrutura de comunicao para os ns clientes (Figura 2.15). Usualmente, os ns que formam o tronco sem o so dedicados e no originam, nem terminal trfego de dados como os ns clientes. A funcionalidade de auto-organizao e manuteno do tronco desempenhada pelos roteadores. Alguns dos ns roteadores que compem o tronco podem interfacear
21
Figura 2.15: RMSF de arquitetura hierrquica, onde os ns A, B, C, D e E so do tipo roteador e 1, 2, 3, 4, 5 e 6, do tipo cliente. A e B fazem interface com RSMF e a Internet.
Plana
Nas RMSF de arquitetura plana, a rede formada por ns que agem ora como cliente, ora como roteador. Assim, cada n est no mesmo nvel do seus vizinhos. Os ns sem o se auto-coordenam, provem roteamento, congurao da rede e provisionamento de servios ou aplicaes. Essa arquitetura a mais prxima de uma rede
ad hoc
Sua
uma RMSF de arquitetura plana so o esquema de endereamento, roteamento e a descoberta de servios. Em uma rede plana, o endereamento pode ser um gargalo para a escalabilidade. Nessa arquitetura os ns so equipados com o mesmo tipo de radiotransmissor.
Hbrida
Esse o caso especial de rede RMSF que combina caractersticas das arquiteturas Hierrquica e Plana com outras redes sem o, como, por exemplo, GSM, Wi-Fi ou
22
Figura 2.16: A gura mostra uma RMSF de arquitetura plana. Os ns A, B e C agem ora como cliente, ora como roteador, enquanto 1, 2 e 3 agem apenas como cliente.
WiMAX (Figura 2.17). Devido ao fato que o crescimento das RMSF est fortemente ligado a capacidade de interoperar com solues de redes existentes, essa arquitetura torna-se bastante importante para o desenvolvimento das RMSF. Ns clientes equipados com interfaces de rede de mesma tecnologia de radiotransmisso que os ns roteadores podem usar a malha sem o hierrquica para se comunicar entre si e com outras redes conectadas a essa malha. Ns clientes no equipados com interface de rede sem o podem se conectar aos ns roteadores atravs de cabos, desde que esse esteja equipado com uma interface compatvel. Assim, as RMSF iro ajudar enormemente usurios a estarem sempre conectados.
2.3.2
Padronizao
O advento das RMSF permitiu que reas maiores fossem cobertas alm dos limites impostos pela tradicional tecnologia de WLAN. Solues proprietrias j esto disponveis h alguns anos, mas o padro IEEE 802.11s, atualmente em desenvolvimento, permitir a implantao de solues multi-fornecedor. Terminologia denida pelo 802.11s:
N Cliente: um usurio da rede, no encaminha quadros, no participa da descoberta de rotas. No suporta o padro IEEE 802.11s;
Mesh Point
23
Figura 2.17: A gura mostra uma RMSF de arquitetura hbrida formada pela combinao de uma RMSF de arquitetura hierrquica, uma rede WiMAX, Wi-Fi e uma rede de celular GSM.
(sem suporte a 802.11s) acessarem a RMSF, ou seja, o n tipo MAP atua como um PA para ns cliente;
Mesh Portal
Uma rede 802.11s pode operar usando qualquer um dos padres: 802.11b, 802.11g e 802.11n.
802.11a,
modelados a m de prevenir interferncias entre as redes 802.11s e as tradicionais 802.11. Todas as funcionalidades denidas pelo 802.11s operam nas subcamadas
MAC ou LLC. Nenhuma das camadas superiores da pilha de protocolos TCP/IP foi modicada. O TG S est prevendo a denio de novas funcionalidades ao padro em variadas reas, dentre elas, as principais so:
24
Descoberta de topologia;
Segurana [30];
Gerenciamento de trfego;
Gerenciamento de rede.
Spanning Tree Protocol ), comumente usado em redes Hybrid Wireless Mesh Protocol
Protocolo de
Rede em Malha sem Fio Hbrido). De forma similar ao STP, que objetiva eliminar possveis laos innitos na rede atravs da criao de um estrutura baseada em rvore, o HWMP cria tabelas usando tcnicas de roteamento proativo e sobdemanda. A especicao do padro prev que fornecedores possam adotar outros protocolos de seleo de melhor caminho. A tcnica de roteamento proativo prov um mtodo eciente de roteamento baseado no fato que na maioria das RMSF existe pelo menos um
Mesh Portal
e que
a maioria do trfego encaminhado a ele. J a tcnica de roteamento sobdemanda usada para encontrar o n destino, caso no exista rota denida pelo roteamento proativo. O protocolo de roteamento RM-AODV (
verso modicada do AODV. No RM-AODV, inclu-se uma mtrica que se baseia na taxa de transmisso observada, quantidade de trfego e interferncias ao longo de um caminho na rede. Diferentemente das WLAN convencionais, nas RMSF, os ns podem manter caminhos para vrios ns vizinhos, no apenas para o PA, isso acarreta uma complexidade extra ao processo de estabelecimento de um canal de comunicao seguro. O 802.11s usa os padres de segurana 802.11i e 802.1X. Em janeiro de 2006, dois grupos de padronizao, SEEMesh (formado por Intel, Nokia, Motorola e outros) e Wi-Mesh Alliance (formado por Nortel, Philips, Thomson, entre outros), combinaram suas propostas de padronizao do IEEE 802.11s num nico documento. A nova proposta foi usada como ponto de partida para o pa-
25
dro 802.11s. Segundo informaes publicadas no stio eletrnico Internet do IEEE 802.11 TG S, datado em Maio de 2009, o 802.11s est na verso
Draft D3.0.
estaes transmitem uxos de trfegos gerados por aplicaes diferentes, com taxas de gerao e o tamanho de pacotes diferentes, a expectativa de alocao equitativa de banda precisa ser revisada, especialmente num cenrio de sobrecarga de uxos de dados. Com isso, o padro de trfego de diferentes uxos tm um profundo impacto na alocao de banda entre as estaes [33] [34]. Fluxos de dados gerados
por aplicativos VoIP, caracterizados por pequenos quadros e frequentes requisies de acesso tendem a dominar o uso do meio compartilhado quando comparado a uxos caracterizados pela transmisso de quadros grandes e com menor frequncia. Raciocnio anlogo vlido para uma situao onde existem mltiplos uxos de aplicaes distintas (por exemplo, VoIP e FTP) numa mesma estao. Numa situao de sobrecarga, o
buer
26
Com
a liberao de espao (depois de envio ou descarte) a tendncia ser a ocupao dos espaos liberados por quadros de tamanho menores. Como resultado, quadros pequenos e com maior freqncia predominaro no Em [35] e [36], um novo algoritmo de
buer.
backo
tuio ao Recuo Exponencial Binrio convencional do DCF. De um forma resumida, cada estao continuamente estima sua vazo e das outras estaes com o qual ela disputa o acesso ao meio e calcula um ndice de equidade usado para o ajuste da janela de conteno. As simulaes mostram que o algoritmo alcana um equidade bem melhor que o algoritmo original usado pelo padro IEEE 802.11. Xu et al. algumas redes [8] mostra que embora o protocolo MAC do IEEE 802.11 suporte
ad-hoc,
ele no foi projetado para o uso em redes dessa natureza, So apresentados diversos
problemas (injustia de acesso ao meio e instabilidade em TCP), suas respectivas causas e algumas solues. Ao nal, conclui-se que o protocolo MAC do padro
IEEE 802.11 no funciona bem em redes multissalto. Na proposta em [37], so apresentados mecanismos de garantia a atraso m-am de aplicaes em redes locais multissaltos sem o. Devido a mobilidade dos ns e o acesso ao meio distribudo, essas redes sofrem variaes de atrasos substanciais (
jitter ).
framework
responsvel pelo provimento de informaes de atraso nas classes de servios, outra, pela seleo adaptativa entre as classes de servios disponveis e a ltima responsvel pela monitorao do atraso mdio de cada n da rede e seleo de uma prioridade MAC. Em redes em malha sem o, onde o destino preferencial do trfego o roteador de borda, a diviso da vazo se torna injusta devido ao aumento no nmero de acessos ao meio com o aumento da proposto o mecanismo RLF ( distncia ao roteador de borda. Em [38],
a pacotes na camada MAC. Pacotes que percorrem um nmero grande de saltos, chamados pacotes de vida longa, recebem uma maior prioridade no acesso ao meio.
27
As informaes de roteamento necessrias so obtidas na camada MAC usando tcnicas de otimizao entre camadas. Mltiplas las so usadas para separar os
pacotes de acordo com o comprimento das rotas. Comparado ao IEEE 802.11g, o RLF promove melhor distribuio de vazo pelos ns da rede. Em redes sem o multissaltos, alocao de banda de forma justa entre os diferentes ns um problema crtico que afeta a usabilidade de todo o sistema. Nesse contexto, Jun et al. [39] estuda vrios esquemas de la para redes sem o multissaltos e examina a equidade e o desempenho de vazo de cada esquema. Cada esquema oferece um grau de equidade. mostrado que a m de alcanar uma tima utilizao de banda, o protocolo MAC deve suportar diferentes prioridades. So mostrados os prs e os contras de cada esquema de las. Hsieh et al. [40] estuda o impacto da camada de acesso ao meio e roteamento no desempenho de redes sem o multissaltos. Discute-se os motivos que levam ao IEEE802.11 no ser adequando a redes onde os uxos passam por mltiplos saltos. proposto um novo protocolo MAC que suporta priorizao por n que melhora signicativamente o desempenho em termos de vazo e equidade. Na camada de
roteamento, mostrado que roteamento com balanceamento de carga melhora o desempenho no importando o protocolo usado na camada MAC. Duy et al. [41] introduz um modelo analtico tratvel de desempenho de vazo para redes IEEE802.11 multissalto. O modelo usado para explorar o problema No contexto de aplicaes de voz,
demonstrado que a injustia causada pelo IEEE802.11 impe mais limitao na capacidade da rede do que a falta de banda. proposto e analisado um esquema que usa o adendo 802.11e (especicamente, TXOP e janela de conteno) para restaurar a equidade. Existem muitos conitos entre equidade e vazo que surgem em muitos cenrios de rede. Muitos pesquisadores tem estudado esse problema no contexto das redes sem o de nico salto (WLAN). Dong et al. [42] separa o objetivo de garantir a
equidade de vazo em dois subproblemas. Primeiro, foi desenvolvido um algoritmo que organiza os clientes em uma estrutura multissalto, no qual a alocao de banda de forma equitativa leva a uma melhor vazo. Depois, proposto um algoritmo que executa a alocao de banda dentro da determinada estrutura multissalto.
28
anomalia de desem-
penho
sempenho considervel ocorre quando numa rede WLAN infraestrutura, alguns ns esto muito longe do ponto de acesso e, dessa forma, a qualidade da sua transmisso baixa. Nesse caso, os dispositivos baseados no protocolo IEEE 802.11b degradam a taxa de transmisso nominal de 11 Mb/s para 5,5, 2 ou 1 Mb/s, quando o n detecta repetidas tentativas de transmisses sem sucesso. Se existe pelo menos um n com uma taxa baixa, a BSS apresenta a anomalia de desempenho: a vazo de todos os ns transmitindo a taxas altas degradada ao nvel do n transmitindo a taxa baixa. Tal comportamento penaliza os ns que transmitem a taxa altas e privilegia os ns transmitindo a taxas baixas. A razo para essa anomalia o mtodo de acesso ao canal, CSMA/CA, que garante que num longo perodo de tempo a probabilidade de acesso ao meio igual para todos os ns. Quando um n captura o canal por um longo perodo de tempo devido a sua baixa taxa, ele penaliza os outros ns que usam o canal com uma taxa alta. Gambiroza et al. [44] propem o IFA (
gorithm )
calcula por enlace a quantidade de tempo que pode usar para efetuar suas transmisses, aumentando a justia. O clculo requer troca de informaes de controle sobre a carga oferecida e a capacidade de cada enlace. Os ns enviam aos seus vizinhos a quantidade de recursos da rede que eles precisam para encaminhar o trfego recebido. Aps a troca de informaes de controle, cada n executa um algoritmo para calcular a mxima vazo permitida.
29
Seo 3.1 aborda de uma forma geral o funcionamento do mecanismo. A Seo 3.2 caracteriza a rede em malha sem o alvo e descreve as suposies que serviram de base para o desenvolvimento do esquema proposto. A Seo 3.3 apresentada uma soluo tima hipottica. Em seguida na Seo 3.4, esquematiza-se o mecanismo de atribuio de prioridades ao ns que compem o tronco da RMSF.
do mecanismo designar uma certa quantidade limitada do recurso compartilhado supracitado a cada n roteador sem o que forma o tronco da RMSF. Para isso, preciso saber o nmero de ns clientes
Assim, a par-
tir dessa informao, o mecanismo calcula a quantidade de recurso disponibilizado para cada roteador.
1 O termo n
Tv
descendente
ancestral de
x.
v.
Se
pertence subrvore de
Tv ,
descendente de
v, e v,
30
3.2 Suposies
O desenvolvimento do mecanismo proposto neste trabalho foi realizado com base em um conjunto de suposies relacionadas as caractersticas das RMSF. As RMSF, tratadas neste trabalho, caracterizam-se por possurem seus ns dispostos em rvore. Os ns folha
no-folha (ou internos) so do tipo roteador. Os ns clientes cumprem o papel de gerar uxos destinados a outros clientes ou rede externa, de modo oposto, a rede externa tambm pode gerar uxos destinados aos clientes. J os roteadores tem o papel bvio de rotear pacotes. O n raiz interno, portanto do tipo roteador e responsvel por fazer o interfaceamento entre os ns da RMSF e a rede externa. As seguintes premissas foram assumidas no desenvolvimento do mecanismo:
Os roteadores so congurados com rota esttica [10]: os roteadores so congurados com rota padro de sada para a rede cabeada e rotas entre as redes dos ns clientes;
O trfego ui, preferencialmente, entre a rede externa e os clientes: os ns clientes so caracterizados por acessarem informaes presentes na rede externa;
A topologia da RMSF em rvore: o n raiz o roteador de borda que faz interface com a rede externa;
Todos os ns esto equipados com o mesmo rdio, sintonizados na mesma frequncia: os ns compartilham um nico canal;
As antenas so capazes de detectar portadora em qualquer ponto da RMSF: visa minimizar o problema de terminal escondido e terminal exposto;
A antena dos ns clientes so capazes de transmitir apenas para o n roteador mais prximo: os ns foram dispostos de forma a maximizar a rea de cobertura da RMSF;
31
Lanamos mo do TXOPLimit para alocar o recurso tempo de acesso ao meio entre os roteadores do tronco da RMSF: o TXOPLimit parte integrante do adendo 802.11e.
clientes estariam virtualmente a uma mesma distncia do roteador de borda. Para exemplicar, a RMSF da Figura 1.1 tornaria-se a RMSF ilustrada em 3.1, onde R1 o n roteador de borda e N1, N2, N3, N4 e N5 so os ns clientes. Certamente, essa soluo impraticvel para algumas mtricas de desempenho de rede, como, por exemplo, atraso. Mas em contra partida, possvel a elaborao de mecanismos que maximizem a equidade do compartilhamento da banda de acesso a rede externa. Esse o propsito do esquema apresentado na seo seguinte.
virtualmente
a um salto de dis-
32
starvation 3 ).
seo visa minimizar esse problema que est associado as propriedades das RMSF (Seo 1.1). Um outro fator importante est associado a topologia da RMSF. Devido a esse fator, podemos inferir que existe apenas um
Como os uxos
de dados uem preferencialmente entre a rede externa e os ns clientes, quanto mais prximo um n roteador estiver do roteador raiz, mais uxos so encaminhados por esse n. Isso resulta numa desproporo do nmero de uxos encaminhados pelos ns roteadores (Figura 1.1). E para minimizar essa desproporo, mais do recurso
tronco da RMSF atravs de um artifcio que limita a um valor mximo o tempo de transmisso de cada acesso ao meio feito por um n. Esse conceito denido como Oportunidade de Transmisso ( 802.11e. O clculo de alocao de recursos dar-se seguinte forma: cada n cliente receber uma quantidade xa do recurso. Os ns roteadores recebero um quantidade que varia de acordo com o nmero de clientes descendentes do roteador em questo. A Figura 3.2 mostra um exemplo de como funciona a alocao de recursos. A RMSF do Captulo 1 tomanda como referncia. Suponhamos que para cada n cliente (1, 2, 3, 4 e 5) seja congurado um TXOP no valor de 1. No roteador C congurado um TXOP igual a 3, pois C possui trs ns clientes descendentes (5, 4 e 3). B recebe um TXOP igual a 4, pois possui quatro ns clientes descendente (5,
Transmission Opportunity
Caminho a denominao dada a uma sequncia de ns distintos v1 , v2 , ..., vk , tal que existe
v2 , v2
e
v3 ,
...
v k 1
vk )
33
4, 3 e 2). Por m, A recebe um TXOP igual a cinco, pois possui cinco ns clientes descendente (5, 4, 3, 2 e 1). Durante a avaliao do mecanismo, percebeu-se que os ns roteadores estavam subutilizando os recursos alocados. Isso acontecia porque todos os pacotes da la do roteador eram transmitidos antes de acabar o recurso alocado, dessa forma, a cada oportunidade de transmisso uma quantidade considervel de recurso era desperdiada. Para minimizar esse desperdcio, adicionamos ao mecanismo a inteligncia de dinamicamente alterar o AIFS dos quadros 802.11e transmitidos pelos ns roteadores em funo do comprimento da la. Quando est prxima de zero, o AIFS aumentado e consequentemente:
3. Maximiza-se a utilizao do recurso, pois o recurso alocado esgota-se antes do comprimento da la chegar a zero.
34
eventos, so de cdigo-fonte aberto, rodam no sistema operacional GNU/Linux e so capazes de simular redes cabeadas e sem o. O NCTUns [47] um simulador de redes desenvolvidos no departamento de Cincias da Computao da Universidade Nacional de Chiao Tung (NCTU) localizado em Hsinchi, Taiwan. Esse simulador apresenta algumas vantagens que so nicas com relao aos simuladores tradicionais de redes (NS-2, GloMoSim
e OPNET )
o desenvolvido no Laboratrio de Computao Paralela da Universidade da Califrnia em Los Angeles (UCLA) composto por uma coleo de mdulos de biblioteca implementados em PARSEC (
2 Simulador de redes de interface grca intuitiva que possibilita uma fcil congurao de
cenrios e visualizao de resultados. cdigo-fonte proprietrio. Devido ao seu alto custo, mais utilizado por grandes empresas.
35
kernel
pilha de protocolos TCP/IP do Linux para gerao de resultados de alta delidade, assim como o uso de ferramentas de redes presentes em sistemas UNIX tradicionais:
4.2 NS-2
Concebido em 1989 a partir de uma variao do projeto da Universidade de Cornell, EUA, o NS (
um
desde ento, sempre com suporte e apoio de vrias organizaes. Atualmente, o desenvolvimento do NS suportado pelo DARPA (
Agency,
pesquisadores de diversas partes do mundo podem trocar idias e experincias, e tambm propor correes para o cdigo do simulador que aps avaliadas podem ser incorporadas. O NS-2 um simulador de eventos discreto. A idia abstrata de passagem do tempo deve-se a manuteno do agendamento de eventos mantidos numa lista pelo escalonador. Um evento um objeto que possui: identicador nico, horrio para
36
ser escalonado e ponteiro para o objeto que trata esse evento. O escalonador matem uma lista encadeada com todos os eventos escalonados para execuo e executa cada um deles invocando o objeto tratador respectivo a cada evento. O ncleo do simulador escrito em C++ [56], conferindo velocidade, enquanto a interface de usurio em linha de comando e escrita em OTcl (linguagem interpretada baseada em Tcl [57]), conferindo manutenabilidade, agilidade e exibilidade. A linguagem OTcl, por ser interpretada, consideravelmente mais lenta, porm pode ser facilmente alterada. Os objetos compilados em C++ so disponibilizados para o interpretador OTcl por ligao (
para cada objeto C++ que pode ser manipulado atravs das facilidades do OTcl. Segundo os desenvolvedores, a diviso em duas linguagens (OTcl e C++) objetiva dar ao simulador tanto velocidade quanto exibilidade.
A Figura 4.1 mostra a arquitetura do NS-2. O usurio interage com NS-2 escrevendo
scripts
so implementados em C++ e disponibilizados ao interpretador atravs de uma replicao feita pela camada TclCl, que recria os objetos C++ em objetos OTcl. Todo o conjunto constitui o NS-2, que um interpretador de OTcl com bibliotecas de simulao para redes de computadores. Para montar e simular uma rede, o usurio deve primeiro escrever um
script
em OTcl que inicializa o escalonador de eventos, congura e interliga os objetos de rede que compem o cenrio e informa quando os objetos comeam e terminam de transmitir. O processo de simulao em NS-2 (Figura 4.2) pode ser assim resumido:
1. Codicar
script
Tcl/OTcl;
37
2. Executar
script.
3. Ao concluir a simulao:
tracing
awk
[58],
grep, sed
[58]);
Network Animator ).
Para isso,
tracing
gerados durante a simulao. Existe tambm a possibilidade do usurio instanciar objetos especiais chamados monitores. O animador NAM pode ser usado para analisar visualmente a simulao e obter algumas estatsticas, mas ele no apropriado para anlises mais profundas. Para instalao do NS-2, existem vrios tutorial na Internet, consultar [49] [50] [51] [53].
Queue
Mac)
e nalmente chega a camada fsica (objetos A Figura 4.3 ilustra as camadas de rede no
38
A camada LLC entrega os pacotes a camada MAC atravs de uma la de prioridades que emprega a tcnica de descarte
drop-tail.
Ao chegar um pacote de
roteamento, este encaminhado para a cabea da la. Das funes de coordenao especicadas na camada MAC do IEEE 802.11, apenas o DCF implementado no NS-2. Existem
o PCF, mas nenhum foi incorporado ao NS-2 (verso 2.28 [59]). O modelo de simulao do DCF implementado no NS-2 suporta:
Espao entre quadros SIFS, PIFS, DIFS e EIFS. O EIFS usado depois que detecta-se uma tentativa de transmisso no sucedida.
beacon e os super-
quadros no so implementados. Para suprir essa carncia, mecanismo semelhante utilizado por meio do envio de mensagens de atualizao de rotas transmitidos em intervalos.
39
timers
(cronmetros):
defer timer :
SIFS;
backo timer :
backo ;
interface timer :
nav timer :
rx timer :
timer
necessrio porque para o simulador o quadro est disponvel assim que o primeiro bit recebido, mas na prtica a subcamada MAC no deve acessar o pacote at que ele tenha sido completamente recebido. coliso, o No caso de uma
timer
congurado para expirar aps o ltimo quadro que colidiu. chamado indiretamente por
Ao expirar,
recv_timer()
recvHandler();
tx timer :
Tx timer (mhSend_)
transmit(),
no h espectativa de resposta para esse tipo de quadro (alguns quadros geram uma expectativa de resposta ao serem enviados, por exemplo, ao enviar um RTS espera-se receber um CTS).
Tx timer
Quando
tx timer
expira,
sender_-
timer()
Todos os
sendHandler().
Os mais importante so
handle
timer
40
draft
balho explorou trs desses modelos. O grupo Mosquito da Universidade de Stanford foi o primeiro a implementar um modelo que considerasse o EDCF Qiang [60] implementou os modelos EDCF [61] (
e o HCF. Ni
do 802.11e, no qual apresenta uma melhoria no algoritmo de recuo exponencial binrio e que foi aprovada como verso nal. Neste trabalho, foram testadas trs implementaes do adendo 802.11e para NS2:
TKN
Mathieu Lacage
Ni Qiang
Todas implementam o EDCA. A primeira e a terceira implementam tambm o HCCA. Uma clara vantagem das implementaes do TKN e de Mathieu Lacage em relao ao do Ni Qiang, que as duas primeiras so compilveis, enquanto a ltima, nem passou no primeiro teste (compilao). Acho que isso se deve a verso antiga do NS, no qual o modelo do Ni Qiang baseada: 2.1b7-snapshot-20000808. Com relao a verso do TKN e de Mathieu Lacage, a primeira apresenta dois diferenciais relevantes:
A implementaao do 802.11 foi baseada na implementao de CMU/Monarch [64] bastante difundido e reconhecido pela comunidade, enquanto o segundo foi baseado num modelo novo;
3 Equivalente ao EDCA. Termo usado antes da nalizao do adendo 802.11e pelo IEEE.
41
trace
trace, apesar de
Dos modelos apresentados e testados, foi escolhida a implementao provida pelo TKN. As principais razes foram:
Boa documentao: na pgina do grupo existem artigos tcnicos explicando o modelo [63];
Implementa a verso nal do adendo 802.11e aprovada mais tarde pelo IEEE;
Experincia que o grupo j havia adquirido ao implementar o EDCF verso 2 para o NS-2.26 [66].
draft
4.4.1
partes:
1. Escalonador virtual: faz o escalonamento de eventos entre as las da subcamada MAC do 802.11e (Figuras 2.12 e 4.3);
2. CFB (
de quadros em rajadas separados pelo intervalo SIFS durante um perodo livre de conteno, denido por TXOPLimit (Figura 2.11).
Ao modelo WLAN 802.11 do NS-2 foram introduzidas quatro las na subcamada MAC. Dependendo da prioridade, os pacotes so armazenados em uma dessas las. O campo
prio
dade zero a maior e trs, a menor. Assim como no DCF, as las so de prioridade e empregam a tcnica de descarte
drop-tail.
42
Os parmetros das las so congurados no procedimento Tcl gundo os dados da tabela 4.1 denidos pelo IEEE 802.11e. chamado por
priority{}
se-
Esse procedimento
ns-mobilenode_802_11e.tcl
ns so criadas.
JCmin
JCmax
AIFS
31 31 15 7
1023 1023 31 15
7 3 2 2
0 0 6,016 3,264
Em vez de implementar uma instncia EDCA por la, o que requereria uma entidade de resoluo de coliso para cada, foi usado um vetor que armazena informaes como estados de transmisso,
timers
conteno. Essa uma abordagem mais simples, pois evita instncias EDCA paralelas, ao mesmo tempo que permite fazer uma resoluo de conteno entre as las [66]. Assim, no caso de coliso entre duas ou mais las (coliso virtual), apenas aquela de maior prioridade escalonada e as informaes das outras las armazenadas no vetor so atualizadas. Descreverei mais detalhadamente a segunda parte da implementao do TKN, pois nesse trecho de cdigo-fonte, foi implementado parte do mecanismo proposto descrito no captulo 3. Em alto nvel, a implementao do CFB pode ser assim resumida:
1. Ao receber uma ACK, vericar se esse foi o primeiro recebido durante o perodo de CFB, caso verdade:
43
4. Recuar.
Mac802_11e
sofreu
if/else
(linha 36 a 49)
2. Criao do mtodo
recvACK()
chamado por
recvHandler(),
recvACK()
MAC_SEND),
tivas. Se o RTS foi usado, reinicia o contador de tentativa de pacotes longos; se no, reinicia o contador de tentativa de pacotes curtos. Em seguida, se o CFB estiver habilitado, vai para o bloco de cdigo 28.
Se o ACK recebido foi o primeiro durante o perodo de CFB, o tempo gasto Depois, libera
requerido para transmisso do pacote atribudo a varivel o pacote (linhas 43, 45 e 46), chama de transmisso para
rx_resume(),
estiver habilitado (equivale a desabilitar o EDCA), ento libera o pacote, reinicializa a JC, muda o estado de transmisso para e inicia
backo timer.
recvACK()
void Mac802_11e :: recvACK ( Packet * p ) { int pri = LEVEL ( p ) ; struct hdr_cmn * ch = HDR_CMN ( p ) ; if ( tx_state_ [ pri ] != MAC_SEND ) { discard (p , DROP_MAC_INVALID_STATE ) ; return ; }
44
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
mhSend_ . stop () ; /* * ACK recebido com sucesso implica que o quadro de DADOS foi * transmitido com sucesso . Ento , zerar " Short / Long Retry * Count " do DCF e Janela de Conteno . */ if (( u_int32_t ) ch - > size () <= macmib_ . RTSThreshold ) ssrc_ [ pri ] = 0; else slrc_ [ pri ] = 0; sending = 0; check_backoff_timer () ; /* * Testa se CFB est habilitado , se no executa o primeiro * bloco do if que idntico ao cdigo original do NS . */ if (! cfb_ || ch - > size () > macmib_ . RTSThreshold ) { assert ( mhBackoff_ . backoff ( pri ) == 0) ; rst_cw ( pri ) ; mhBackoff_ . start ( pri , getCW ( pri ) , is_idle () ) ; assert ( pktTx_ [ pri ]) ; Packet :: free ( pktTx_ [ pri ]) ; pktTx_ [ pri ] = 0; tx_resume () ; } else { // Verificar se esse foi o primeiro quadro de dados enviado // durante o perodo de CFB . Caso verdade , contabilizar // durao da transmisso e chamar cfb () . if ( cfb_dur == 0) { cfb_dur = txtime ( pktTx_ [ pri ]) + sifs_ + txtime ( phymib_ . getACKlen () , basicRate_ ) ; } pktRx_ = 0; rx_resume () ; assert ( pktTx_ [ pri ]) ; Packet :: free ( pktTx_ [ pri ]) ; pktTx_ [ pri ] = 0; cfb ( pri ) ; } mac_log ( p ) ;
cfb(). cfb()
retira o prximo
pacote da la e calcula sua durao. Mas antes de calcul-la, testa se o pacote do tipo
unicast
ou
multicast.
Pacotes de
multicast
consequentemente o tempo de transmisso menor. Depois, o pacote retirado da la deve ser enviado (na verdade, agendando para envio) se o TXOPLimit no tiver sido ultrapassado (cfb_dur
<= txop_limit_[pri]).
45
cfb().
void Mac802_11e :: cfb ( int pri ) { double timeout ; struct hdr_mac802_11e * mh ; // Prximo pacote da fila retirada . // Calcula - se o tempo de durao de transmisso do pacote . // Pode parece bvio , mas o mtodo sendDATA () no // envia o pacote . Dentre outras coisas , ele monta a estrutura // do quadro ( cabealho , define tipo , calcula durao do // quadro , etc ) deixando o pacote pronto para transmitir . if ( queue_ - > pri_ [ pri ]. getLen () > 0) { Packet * p = queue_ - > pri_ [ pri ]. deque () ; sendDATA ( pri , p ) ; hdr_cmn * ch = HDR_CMN ( pktTx_ [ pri ]) ; mh = HDR_MAC802_11E ( pktTx_ [ pri ]) ; if (( u_int32_t ) ETHER_ADDR ( mh - > dh_da ) != MAC_BROADCAST ) { cfb_dur += sifs_ + txtime ( pktTx_ [ pri ]) + sifs_ + txtime ( phymib_ . getACKlen () , basicRate_ ) ; cfb_broadcast = 0; } else { cfb_dur += sifs_ + txtime ( pktTx_ [ pri ]) ; cfb_broadcast = 1; } } else cfb_dur = txop_limit_ [ pri ] + 1; // Pacote transmitido caso ainda reste tempo de TXOP , caso // contrrio recuar . if ( cfb_dur <= txop_limit_ [ pri ]) { // Envia pacote . Na verdade , aqui agendado o horrio // esperado para rececbimento de uma confirmao ( quadro // ACK ) . if (( u_int32_t ) ETHER_ADDR ( mh - > dh_da ) != MAC_BROADCAST ) timeout = txtime ( pktTx_ [ pri ]) + DSSS_EDCA_MaxPropagationDelay + sifs_ + txtime ( phymib_ . getACKlen () , basicRate_ ) + DSSS_EDCA_MaxPropagationDelay ; else timeout = txtime ( pktTx_ [ pri ]) ; cfb_active = 1; mhSifs_ . start ( pri , sifs_ ) ; } else { cfb_dur = 0; cfb_broadcast = 0; assert ( mhBackoff_ . backoff ( pri ) == 0) ; rst_cw ( pri ) ; mhBackoff_ . start ( pri , getCW ( pri ) , is_idle () ) ; tx_resume () ; }
34 35 36 37 38 39 40 41 42 43 44 45 46
46
if/else
cfb()
Esse cdigo responsvel por alterar o AIFS dos quadros enviados em funo do comprimento da la. mtodos Essa alterao somente realizada nos ns roteadores. Os
getLen()
getMinLength()
da la e um liminar congurvel pelo usurio. Se o comprimento da la inferior a esse limiar, o AIFS aumentado para 4, caso contrrio mantem-se em 1. O mtodo
getMinLength()
Dtail
para alterao do limiar pelo usurio. Por esse mesmo motivo, a classe foi alterada.
PriQ tambm
if/else
adicionada ao mtodo
cfb()
res-
if (( ETHER_ADDR ( mh - > dh_sa ) == 5 || ETHER_ADDR ( mh - > dh_sa ) == 6) && LEVEL ( p ) == 2) { int aifs_antes = queue_ - > pri_ [2]. getAIFS () ; if ( queue_ - > pri_ [ pri ]. getLen () < queue_ - > pri_ [ pri ]. getMinLength () ) { AIFSset = false ; queue_ - > pri_ [2]. setAIFS (4) ; } else { AIFSset = false ; queue_ - > pri_ [2]. setAIFS (1) ; } }
47
5.1 Materiais
Ferramentas usadas no laboratrio de simulao:
Compiler
Linguagem de
shell script :
Para reproduo deste ambiente, atentar para a verso das ferramentas. O uso de outras verses no invalida os resultados, mas pode dicultar a montagem do laboratrio por causa, por exemplo, de incompatibilidade entre ferramentas.
48
5.2 Cenrio
A Figura 5.1 ilustra a RMSF simulada. Os ns 1, 2, 3, 4 e 5 geram trfego a uma taxa constante (CBR) sobre o protocolo de transporte UDP. Esses uxos gerados so compostos por pacotes de dados de 500 bytes destinado ao n A. O TCP no foi utilizado porque seu controle de congestionamento afetaria a avaliao do mecanismo de priorizao proposto [68] [69] [70] [71] [72]. Os ns A, B e C so roteadores
congurados com rotas estticas [67] que formam o tronco sem o. O n A est a 100 metros de B e B a 100 metros de C. Os ns 5, 4 e 3 esto a 100 metros de C, a mesma distncia, 2 est de B, e 1 de A.
a primeira com o
mecanismo desabilitado e a segunda, habilitado. Cada etapa composta por vrias baterias e cada bateria composta por 10 rotadas de 240 segundos cada. A rodada consiste em executar o programa simulador de rede. A cada rodada utilizada uma semente de gerao de nmeros aleatrios diferente. De cada bateria calculado um ponto no grco com intervalo de conana de 95%. O que varia de uma etapa para outras o mecanismo est habilitado ou no, j entre as baterias, o que varia a velocidade que os ns clientes insere quadros na rede, enquanto para as rodadas, o que varia a semente.
49
Na primeira etapa foi utilizado o IEEE 802.11b [73] DCF a 11 Mbps para dados (dataRate_) e 1 Mbps para RTS/CTS/ACK (basicRate_), enquanto na segunda etapa foi utilizado o IEEE 802.11b EDCA com as mesmas taxas da primeira. Os ns possuem antenas omnidirecionais com a mesma potncia de transmisso, raio de transmisso de 100,1 metros e raio de deteco de portadora de 500 metros. Para calcular o raio de deteco e de transmisso, usou-se o comando localizado na pasta
threshold
indep-utils/propagation
JCmin
JCmax
igual 31 e 1023,
respectivamente. Na segunda etapa, atribuiu-se o valor 1 para o AIFS. A quantidade de recurso reservado (TXOPLimit) para os ns C e B 3 onde
e 4 , respectivamente,
e receber um quadro de conrmao (ACK). Esse valor de 0,915 ms. O limiar de comprimento mnimo da la dos ns C e B de 2 vezes o nmero de ns descendentes. Para o n C, o limiar vale 6 e para o n B, 8.
Tabela 5.1: Principais parmetros de simulao. Parmetro Modelo de propagao Antena Raio de deteco de port. Raio de transmisso MAC (etapa 1) MAC (etapa 2) TwoRayGround Omnidirecional 500 m 100 m DCF 11 Mbps (dataRate_) / 1 Mbps (basicRate_) EDCA 11 Mbps (dataRate_) / 1 Mbps (basicRate_) 31 1023 50 pacotes CBR UDP Valor
JCmin JCmax
Comprimento da la (LL) Aplicao Transporte
50
500 bytes 240 s 10 De 0 a 100 (pacotes por segundo), incremento de 10. A partir da, incremento de 25.
Baterias
Intervalo de conana
95%
Tabela 5.2: Parmetros de simulao estendidos. Parmetro Recurso reservado (n C) Recurso reservado (n B) Limiar de comprimento mnimo da la (n C) Limiar de comprimento mnimo da la (n B) AIFS (quando maior que limiar) AIFS (quando menor que limiar) Valor 2,745 ms 3,66 ms 6 8 1 4
5.3 Resultados
Para avaliao do mecanismo de priorizao foram utilizadas mtricas de desempenho separadas em dois grupos: um formado por uxos, o outro por ns. Para o grupo dos uxos:
Vazo em Mbps: mede o nmero de bytes recebido pela camada de aplicao do n destinatrio do uxo a cada segundo;
Descarte de pacotes: afere o nmero de pacotes enviados pelo n origem do uxo menos o nmero de pacotes recebidos no n destinatrio do uxo a cada segundo.
51
Nmero de oportunidades de transmisso (TXOP): o nmero de oportunidades de transmisso obtidos por segundo;
Descarte de pacotes devido a la cheia: o nmero de pacotes descartados devido a la cheia por segundo;
Descarte de pacotes devido a coliso: o nmero de pacotes descartados devido a coliso por segundo.
Plotou-se dois grcos para cada mtrica: um com o mecanismo de priorizao desabilitado (posicionado no lado esquerdo) e outro habilitado (posicionado no lado direito). Em todos os grcos, o eixo x representa a carga oferecida (trfego), denida pela quantidade de bytes (ou pacotes) gerados por segundo pelo agente na camada de aplicao.
2.5
Vazo (Mbps)
1.5
0.5
0.4 0.2
0 0 50 100 150 200 250 300 Carga oferecida (pct/s) 350 400 450
O grco esquerdo da Figura 5.2 demostra o que foi escrito no ltimo pargrafo da Seo 1.1 no que concerne ao incremento da velocidade do uxo 1 em detrimento aos demais uxos. A vazo dos uxos atingem a vazo mxima a partir de 400 A partir dessa taxa, a rede est
52
completamente saturada e todos os ns mantm sua vazo mesmo com o incremento da carga oferecida. O sistema comea a demostrar sinais de saturao em 70 pct/s, quando os uxos oriundos dos ns mais distantes comeam a diminuir a vazo. O uxo 2 que possui um salto a menos de distncia em relao aos uxos 3, 4 e 5 comea a diminuir a vazo em 125 pct/s. O grco direito da Figura 5.2 mostra o comportamento da mtrica vazo com o mecanismo habilitado. Percebe-se uma maior equidade da vazo dos uxos. Quando o sistema est saturado, o uxo 1 no mais monopoliza o acesso. Mas mesmo com o mecanismo habilitado, h uma pequena diferena entre os uxos de nmero de saltos distintos: 1 cou um pouco melhor que 2 e esse, um pouco melhor que os uxos 3, 4 e 5. Em contrapartida, o mecanismo trouxe uma queda considervel da vazo total dos uxos.
200 Oportunidades de transmisso por segundo N 5 N 4 N 3 N 2 N 1 N C N B 180 160 140 120 100 80 60 40
50
100
150
200
250
300
350
400
450
Nos grcos da Figura 5.3, o eixo y representa o nmero de oportunidades de transmisso por segundo do n. Os ns clientes somente podem enviar um quadro a cada oportunidade, assim para ns desse tipo, o eixo y tambm representa o nmero de quadros enviados por segundo (vazo em pct/s). J os roteadores podem enviar vrios quadros a cada oportunidade de transmisso. A quantidade mxima de quadros que podem ser enviados por n roteador est denido na tabela 5.2. Por exemplo, no caso especco do cenrio de simulao de Figura 5.1, ao n C, foi atribudo o valor 2,745 ms. Isso signica que a cada oportunidade de transmisso
53
Vazo (pct/s)
N 5 N 4 N 3 N 2 N 1 N C N B N C* N B*
ganha por C, o canal estar reservado para C por uma tempo mximo de 2,745 ms (tempo necessrio para o encaminhamento de at 3 quadros de 500 bytes). Com o mecanismo desabilitado, todos os ns enviam um quadro a cada oportunidade de transmisso. As ltimas duas linhas (N C* e N B*) do grco da direito da Figura 5.3 representam a vazo (pct/s) dos ns roteadores C e B. O grco esquerdo da Figura 5.3 tambm demostra que o sistema d sinais de saturao a partir de 70 pct/s. At esse pontos os ns B e C demandam uma
vazo num ritmo mais acelerado que os outros ns, isso porque eles so os ns que desempenham o papel de roteamento (C encaminha 3 uxos e B, 4 uxos). A partir de 70 pct/s, o grco mostra o incio da monopolizao de acesso por 1. No grco direito da Figura 5.3 podemos observar o rendimento de utilizao dos recursos disponibilizados para os roteadores. Rendimento a razo do nmero de quadro pelo nmero de oportunidades de transmisso. Quando o sistema est sob baixa demanda (at 70 pct/s), o rendimento baixo, pois no h pacotes em la sucientes para preencher por completo o recurso disponibilizado. Quando o
sistema d sinais de saturao (a partir de 70 pct/s), o rendimento aumenta. Veja que quando a vazo oferecida est em 70 pct/s, o rendimento do n C de aproximadamente 220 / 180 = 1,22 (41%), enquanto que a 90 pct/s, o rendimento de 250 / 90 = 2,77 (93%). O rendimento mximo para o roteador C aconteceria quando ele sempre transmitisse 3 quadros a cada oportunidade de transmisso. Vemos tambm que entre 70 e 90 pct/s de carga oferecida as oportunidades de transmisso de B e C diminuem, mas ao mesmo tempo a taxa de transmisso de pacotes aumenta, indicando uma melhora no rendimento de utilizao dos recursos. Aps anlise dos resultados, percebemos que as razes que motivam o descarte de pacotes so: la cheia (Figura 5.4) e coliso (Figura 5.5). Os clientes quase no descartam pacotes devido a coliso, predomina o descarte devido a la cheia. Isso ocorre porque os clientes so geradores de pacote. E como a taxa de gerao de
pacote maior que a taxa de insero de pacotes no sistema na camada de acesso ao meio, h um grande descarte de pacotes devido a la cheia a partir da taxa de 80
54
450 400 Descarte por fila cheia (pct/s) 350 300 250 200 150 100 50 0 0
N 5 N 4 N 3 N 2 N 1 N C N B
N 5 N 4 N 3 N 2 N 1 N C N B
50
100
150
200
250
300
350
400
450
20
40
60
80
100
120
140
160
180
200
25
20
15
N 5 N 4 N 3 N 2 N 1 N C N B N A
40 35 30 25 20 15 10 5
N 5 N 4 N 3 N 2 N 1 N C N B N A
10
0 0 50 100 150 200 250 300 350 400 450 Carga oferecida (pct/s)
pct/s. Os roteadores descartam mais pacotes devido a coliso. J que os roteadores no so geradores de pacotes, apenas encaminhadores, h uma menor utilizao de la e consequentemente melhor descarte por la cheia. O que explica uma elevada taxa de descarte por coliso comparado-se aos clientes o fato que os roteadores compartilham o seu raio de transmisso com um maior nmero de ns. Enquanto o cliente 1 compartilha sua rea de transmisso com apenas com o n A, o n roteador C compartilha com os ns B, 3, 4 e 5. Somado a isso, est o fato dos clientes no recebem quadros de dados. A probabilidade de haver coliso sempre maior para o quadro de dados, pois seu comprimento (tempo de transmisso) maior. Alm disso, para o NS-2 quando quadros colidem, a contabilizao dessa estatstica feita nos ns destinatrios dos quadros que participaram da coliso. Assim, como os ns
55
roteadores passam mais tempo recebendo que os ns clientes, pois os ns clientes s recebem quadros curtos (ACK), enquanto os ns roteadores recebem tanto quadros curtos, quanto longo (de dados), mais predominantemente o ltimo, ento haver um nmero consideravelmente maior de colises no lado dos roteadores. O roteador A no foi includo nos grcos da Figura 5.4 porque A no envia quadros de dados. Quando, por exemplo, 1 tenta enviar um quadro para A e esse colide, tal contabilizao feita em A, pois esse motivo, foi includo o n A nos grcos da Figura 5.5.
5.4.1
Em linha
A Figura 5.6 ilustra uma RMSF com 5 ns clientes e 5 ns roteadores. A congurao do cenrio semelhante ao da seo 5.2. Os ns 1, 2, 3, 4 e 5 geram trfego CBR sobre o protocolo UDP. Os pacotes so de 500 bytes destinado ao n A. Os
56
ns A, B, C, D e E so roteadores congurados com rotas estticas que formam o tronco sem o. A distncia entre os ns nos eixos x ou y de 100 metros.
2.5
Vazo (Mbps)
1.5
0.5 0.2 0 0 50 100 150 200 250 300 350 400 450 Carga oferecida (pct/s) 0 0 25 50 75 100 125 150 175 200 Carga oferecida (pct/s)
70 60 50 40 30 20 10 200
50
100
350
400
450
Na Figura 5.7(a), a vazo mxima da rede ocorre em 375 pct/s de carga oferecida. J em 50 pct/s de carga oferecida h uma queda de vazo do uxo 5. A Figura 5.7(b) mostra que com o mecanismo habilitado houve uma melhora na equidade de vazo entre os uxos. Na Figura 5.8(a) foi plotada a vazo por n. No eixo y do grco ler-se Vazo (pct/s), mas pode ler-se Oportunidades de transmisso por segundo, pois somente um pacote enviado a cada oportunidade de transmisso. Quando o mecanismo est habilitado (Figuras 5.8(b)), percebemos uma equalizao das oportunidades de transmisso entre os grupos de ns clientes e roteadores.
57
Vazo (pct/s)
N 5 N 4 N 3 N 2 N 1 N E N D N C N B
110 100 90 80
N 5 N 4 N 3 N 2 N 1 N E N D N C N B
110 100 90 80
N D N C N B N D* N C* N B*
300
250
150
100
50
20
40
160
180
0 200
Figura 5.9: Relao entre as mtricas Oportunidades de transmisso (sem asterisco) e Vazo (com asterisco).
Isso ocorre porque os roteadores so priorizados em detrimento dos clientes. Sem essa priorizao o n cliente mais prximo monopoliza as oportunidades de transmisso (5.8(a)). Os roteadores B, C e D passam a enviar um nmero de pacotes maior que um a cada oportunidade de transmisso. A Figura 5.9 mostra a relao entre as mtricas Oportunidades de transmisso (sem asterisco) e Vazo (com asterisco), ou seja, mostra a relao entre o nmero de quadros enviados por oportunidade de transmisso. Quando a carga oferecida 100 pct/s, o nmero de oportunidades de transmisso de D aproximadamente 79 e a vazo de 130 pct/s.
5.4.2
Estrela
A Figura 5.10 ilustra uma RMSF com 8 ns clientes e 1 n roteador. Os ns 1, 2, 3, 4, 5, 6, 7 e 8 geram trfego CBR sobre o protocolo UDP. Os pacotes so de 500 bytes destinado ao n A. A distncia entre os ns clientes e o n A de 100 metros. Neste cenrio, o mecanismo de priorizao proposto no inuencia os resultados quando o mecanismo est habilitado. Isso porque todos os ns clientes esto a um salto de distncia do roteador de borda (n A).
58
Figura 5.10:
Topologia em estrela.
Os ns 1, 2, 3, 4, 5, 6, 7 e 8 geram uxos
destinados a A.
Vazo (Mbps)
Fluxo 1 Fluxo 2 Fluxo 3 Fluxo 4 Fluxo 5 Fluxo 6 Fluxo 7 Fluxo 8 Fluxos agregados
Fluxo 1 Fluxo 2 Fluxo 3 Fluxo 4 Fluxo 5 Fluxo 6 Fluxo 7 Fluxo 8 Fluxos agregados
50
100
350
400
450
20
40
60
160
180
200
N 1 N 2 N 3 N 4 N 5 N 6 N 7 N 8
N 1 N 2 N 3 N 4 N 5 N 6 N 7 N 8
50
100
350
400
450
20
40
60
160
180
200
59
Captulo 6 Concluso
As redes locais sem o baseadas no padro IEEE 802.11 esto crescentemente sendo utilizadas para o provimento de acesso Internet em lugares pblicos. Com o
objetivo de estender a rea de cobertura de tais redes de maneira economicamente vivel, arquitetos de rede vem estudando as Redes em Malha sem Fio, caracterizadas pelo baixo custo de equipamentos (rdio e plataforma), facilidade de congurao, instalao e manuteno. Essas redes so basicamente formadas por ns sem o do tipo cliente e roteador. Os roteadores so dispostos em locais xos conectados rede eltrica formando uma malha ou tronco sem o e executam um papel fundamental para manuteno da conectividade da rede: o roteamento de pacotes. Os ns clientes usam essa malha para estabelecerem comunicao entre si e, principalmente, com uma rede cabeada externa. Quando incrementarmos gradativamente a velocidade de transmisso dos ns clientes, a velocidade de transmisso daqueles prximos ao roteador de borda continua a crescer em detrimento da velocidade de transmisso daqueles mais distantes. Quando a rede chega ao nvel mximo de saturao, observamos, por intermdio de experimentos de simulao, que os ns clientes mais distantes do roteador de borda da Rede em Malha sem Fio sofrem de inanio (causado pelo esgotamento do recurso
Este trabalho apresentou um mecanismo de priorizao dos ns (roteadores) que formam o tronco da Rede em Malha sem Fio. Seu objetivo compartilhar, de forma
60
justa, o recurso
do recurso disponibilizado pelo mecanismo de priorizao. O funcionamento bsico desse dar-se pela designao de uma certa quantidade do recurso supracitado a cada n roteador sem o que forma o tronco da Rede em Malha sem Fio baseado no nmero de ns clientes descendentes por roteador. Os experimentos de simulao mostraram que o mecanismo ecaz, visto que ele alocou o recurso proporcionalmente ao nmero de uxos encaminhados por n roteador, minimizando o problema de desbalanceamento de recurso entre os ns da Rede em Malha sem Fio. A ecincia foi avaliada atravs de comparaes entre o desempenho da Rede em Malha sem Fio de referncia com o mecanismo de priorizao desabilitado e habilitado.
priorizao alocar uma quantia de recurso em funo do nmero de ns clientes descendentes. Se o nmero de ns clientes variar dinamicamente, necessrio a alocao de recurso seja dinmica.
Protocolo de troca de informaes entre ns roteadores: tal protocolo seria necessrio, visto que a alterao dinmica na quantidade de recurso reservado por um dado roteador implica na necessidade de atualizao dessa informao nos roteados antecedentes.
Mltiplas las e poltica de escalonamento [74] por n roteador: quando um roteador ganha uma disputa de acesso ao meio, ele envia pacotes em srie at seu recurso acabar. Uma poltica de escalonamento de pacotes implementado no roteador objetivaria maximizar a equidade de alocao de pacotes
61
Dependendo do padro
de trfego de uxos, pode haver um profundo impacto na alocao de banda entre os ns clientes. Por exemplo, uxos de dados gerados por aplicativos
de voz, caracterizados por pequenos pacotes e frequentes requisies de acesso tendem a dominar o uso do meio compartilhado quando comparado a uxos de dados gerados por aplicativos de compartilhamento de arquivos.
62
Referncias Bibliogrcas
[1] TODOR COOKLEV,
[2] MARCOS ORTIZ, ACLIO SOUSA, DIOGO LIMA, MARCIAL FERNANDEZ, JOS NEUMAN DE SOUZA, Anlise, Implementao e Teste de uma Estratgia Autnoma de Incentivo Cooperao em Redes Ad-Hoc. In:
[3] IAN F. AKYILDIZ, XUDONG WANG, WEILIN WANG, Wireless mesh networks: a survey, 487, 2004.
[4] IVAN
F.
AKYILDIZ,
XUDONG
WANG,
A
Survey
on
Wireless
Mesh
Networks, 2005.
tectures, Protocols and Standards . Wireless Networks and Mobile Communications Series , 2007.
[6] SEONGKWAN KIM, SUNG-JU LEE, SUNGHYUN CHOI, The Impact of IEEE 802.11 MAC Strategies on Multi-Hop Wireless Mesh Networks,
WiMesh 2006. 2nd IEEE Workshop on Wireless Mesh Networks , pp. 38
47, 2006.
63
[7] VADUVUR BHARGHAVAN, ALAN DEMERS, SCOTT SHENKER, LIXIA ZHANG, MACAW: A Media Access Protocol for Wireless LAN's. In:
Proceedings of the Conference on Communications Architectures, Protocols and Applications , pp. 212225, 1994.
[8] SHUGONG XU, TAREK SAADAWI, Does IEEE 802.11 MAC Protocol Work Well in Multi-hop Wireless Ad Hoc Networks?
IEEE Communications
Proceedings
v. 2, pp. 748752,
[10] KAROL KOWALIK, MARK DAVIS, Why Are There So Many Routing Protocols for Wireless Mesh Networks? 2006.
O'Reilly, 2005.
Computer Networks .
Fourth ed.
Prentice Hall ,
Qualidade
64
[15] HUA ZHU, MING LI, IMRICH CHLAMTAC, B. PRABHAKARAN, A Survey of Quality of Service in IEEE 802.11 Networks,
Wirel.
[18] DAQING GU, JINYUN ZHANG , QoS Enhancement in IEEE 802.11 Wireless Local Area Networks, pp. 120124, 2003.
[19] NAOMI RAMOS, DEBASHIS PANIGRAHI, SUJIT DEY, Quality of Service Provisioning in 802.11e Networks: Challenges, Approaches, and Future Directions,
[20] ADLEN KSENTINI, ABDELHAK GUROUI, MOHAMED NAIMI, Adaptive Transmission Opportunity with Admission Control for IEEE 802.11e Networks. In:
[21] LAMIA ROMDHANI, QIANG NI, THIERRY TURLETTI, Adaptive EDCF: Enhanced Networks. Service In: Dierentiation for IEEE 802.11 Wireless Ad-Hoc v. 2,
[22] IMAD AAD, CLAUDE CASTELLUCCIA, Dierentiation mechanisms for IEEE 802.11,
65
v. 1, pp. 209218,
[23] XUDONG WANG, SUNGHYUN CHOI, JEAN-PIERRE HUBAUX, Wireless Mesh Networking Theories, Protocols and Systems,
[26] TZU-JANE TSAI AND JU-WEI CHEN, IEEE 802.11 MAC protocol over wireless mesh networks: 2005. problems and perspectives. v. 2, pp. 6063,
[27] GUSTAVO G. DA
FERNANDES TRINDADE,
BARBOSA, IEEE
MARCELA 802.20
[28] WEI ZHOU, DONGBO ZHANG, DAJI QIAO, Comparative study of routing metrics for multi-radio multi-channel wireless networks. In:
Wireless
[29] RICHARD DRAVES, JITENDRA PADHYEA, BRIAN ZILL, Comparison of routing metrics for static multi-hop wireless networks. In:
SIGCOMM
pp. 133144,
'04: Proceedings of the 2004 conference on Applications, technologies, architectures, and protocols for computer communications ,
New York, NY, USA, ACM, 2004.
[30] NAOUEL BEN SALEM, JEAN-PIERRE HUBAUX, Securing Wireless Mesh Networks,
[31] ASHISH RANIWALA, TZI-CKER CHIUEH, Architecture and Algorithms for an IEEE 802.11-Based Multi-Channel Wireless Mesh Network,
INFO-
COM 2005. 24th Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings IEEE., v. 3, pp. 22232234, March
2005.
[32] ILENIA TINNIRELLO, SUNGHYUN CHOI, Temporal Fairness Provisioning in Multi-Rate Contention-Based 802.11e WLANs. pp. 220230, 2005.
[33] LI ZHENG, ARKADIUSZ (AREK) DADEJ, STEVEN GORDON, Fairness of IEEE 802.11 Distributed Coordination Function for multimedia applications. 2003.
[34] DAJIANG HE, CHARLES Q. SHEN, Simulation Study of IEEE 802.11e EDCF,
[35] BRAHIM BENSAOU, YU WANG, CHI CHUNG KO, Fair Medium Access in 802.11 based Wireless Ad-Hoc Networks,
Glo-
[38] MIGUEL ELIAS M. CAMPISTA, LUS HENRIQUE M. K. COSTA, OTTO CARLOS M. B. DUARTE, Um Mecanismo para Privilegiar Pacotes de Vida Longa em Redes Sem Fio de Mltiplos Saltos,
67
[39] JANGEUN JUN, MIHAIL L. SICHITIU, Fairness and QoS in Multihop Wireless Networks. In:
[41] K. DUFFY, D.J. LEITH, T. LI AND D. MALONE, Improving Fairness in Multi-Hop Mesh Networks Using 802.11e,
[42] QUNFENG DONG, SUMAN BANERJEE, BENYUAN LIU, Throughput Optimization and Fair Bandwidth Allocation in Multi-Hop Wireless LANs. In:
[44] VIOLETA GAMBIROZA, BAHAREH SADEGHI, EDWARD W. KNIGHTLY, End-to-end performance and fairness in multihop wireless backhaul networks. In:
Estrutura de Dados
e seus Algoritmos .
LTC , 1994.
[46] DR. JUERGEN ROCHOL, LARA D. SOUZA, LEONARDO SEWALD, RICARDO HERNANDES FERNANDES, Plataformas de Simulao de
68
Software Livre para Redes Fixas e Mveis: Caractersticas, Suporte, Instalao e Validao, 2001.
[47] WANG,
NCTUns
5.0
Network
Simulator 2009,
and
Emulator, em Ja-
ltimo
acesso
Mrida,
[51] JAE
CHUNG,
MARK
CLAYPOOL,
NS
by
Example,
[52] JOSHUA
ROBINSON,
802.11
MAC
code
in
NS-2
(version
2.28),
[53] MARC
GREIS,
Tutorial
for
the
Network ltimo
Simulator acesso em
ns , Janeiro
http://www.isi.edu/nsnam/ns/tutorial/, de 2009.
KE, DCF-based
Examples and
for
CBR
trac wireless
transmission networks,
EDCF-based
69
2006,
First ed.
Practical Program-
[59] NS-2.28
all-in-one
download,
http://www.isi.edu/nsnam/dist/ns-allinone-
[60] NI QIANG, NS-2 implementation codes for IEEE 802.11e QoS-enahnced wireless LAN. http://www-sop.inria.fr/planete/qni/Research.html, ltimo acesso em Fevereiro de 2008.
[61] QIANG NI, NS-802.11e EDCF for IEEE 802.11e Wireless LAN, ftp://ftpsop.inria.fr/rodeo/qni/ns-edcf.tar.gz, 2000, ltimo acesso em Janeiro de 2008.
[62] MATHIEU
LACAGE,
NS-2
802.11e
support,
http://yans.inria.fr/ns-2-
[63] SVEN
WIETHLTER, CFB
CHRISTIAN Model
HOENE, for
IEEE
802.11e
EDCA
and
Simulation
NS-2,
http://www.tkn.tu-
berlin.de/research/802.11e_ns2/, 2007, On this web page, we present an open-source, veried simulation model of IEEE 802.11e's EDCF / EDCA mode for the network simulator (ns-2.26 / ns-2.28). ltimo acesso em Dezembro de 2007.
[64] The
Rice
Monarch
Project:
Mobile
Networking
Architectures,
http://www.monarch.cs.rice.edu/.
70
[65] SVEN
WIETHOELTER,
MARC
EMMELMANN,
CHRISTIAN
HOENE,
ADAM WOLISZ,
IEEE 802.11e EDCF Simulation Model in ns-2.26 , Technical Report, Telecommunication Networks Group, Technical University Berlin, 2003.
[68] KEN TANG, MARIO GERLA, Fair Sharing of MAC under TCP in Wireless Ad Hoc Networks,
of the 2005 ACM SIGCOMM workshop on Experimental approaches to wireless network design and analysis , p. 41, New York, NY, USA, ACM,
1999.
[70] SAAR PILOSOF, RAN RAMJEE, YUVAL SHAVITT, PRASUN SINHA, Understanding TCP fairness over wireless LAN. In: 863872, 2003.
[71] ANTHONY C. H. NG, DAVID MALONE, DOUGLAS J. LEITH, Experimental evaluation of TCP performance and fairness in an 802.11e test-bed. In:
[72] D. J. LEITH, P. CLIFFORD, Using the 802.11e EDCF to Achieve TCP Upload Fairness over WLAN Links. In:
Hoc, and Wireless Networks , pp. 109118, Washington, DC, USA, IEEE
Computer Society, 2005.
[73] JOSHUA
ROBINSON,
Making
NS-2
simulate
an
802.11b 2005,
link, ltimo
[74] DAVIDE ASTUTI, Packet Handling, Seminar on Transport of Multimedia Streams in Wireless Internet at University of Helsinki Helsinki, Finland, 2001.
72
# =========================================================== # Definio de constantes # =========================================================== # Exemplo : # 0 ,0 10 # 0 ,1 20 # N 0 , x =10 e y =20 array set nodePosition { 0 ,0 100 0 ,1 200 1 ,0 0 1 ,1 100 2 ,0 100 2 ,1 0 3 ,0 200 3 ,1 0 4 ,0 300 4 ,1 0 5 ,0 100 5 ,1 100 6 ,0 200 6 ,1 100 7 ,0 300 7 ,1 100 8 ,0 0 8 ,1 0 9 ,0 200 9 ,1 200 10 ,0 300 10 ,1 200 } set numberOfNodes [ expr [ array size nodePosition ] / 2] set greatestX 0 set greatestY 0 for { set i 0} { $i < $numberOfNodes } { incr i } {
73
Script
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
if { $nodePosition ( $i ,0) > $greatestX } { set greatestX $nodePosition ( $i ,0) } if { $nodePosition ( $i ,1) > $greatestY } { set greatestY $nodePosition ( $i ,1) }
# Definio de fluxo # Uso : ndice [ udp | tcp ] n_origem n_destino [ prioridade ] array set flowDefinition { 0 { udp 0 7 2} 1 { udp 1 7 2} 2 { udp 2 7 2} 3 { udp 3 7 2} 4 { udp 4 7 2} 5 { udp 4 7 2} } set numberOfFlows [ array size flowDefinition ] set numberOfFlows 5 # Ns monitorados set monitoredNodes {0 1 2 3 4 5 6} # Tratamentos de argumentos passados por linha de comando # Uso : - time [ TEMPO ( s ) ] # - prate [ TAXA EM PACOTES ] # - brate [ TAXA EM bps ] # - psize [ TAMANHO DO PACOTE ( bytes ) ] # - seed [ SEMENTE ] lappend optlist time prate brate psize seed for { set i 0} { $i < $argc } { incr i } { set arg [ lindex $argv $i ] if {[ string range $arg 0 0] != " -" } continue set name [ string range $arg 1 end ] set opt ( $name ) [ lindex $argv [ expr $i +1]]
# Parmetros passados ao NS set opt ( mac ) Mac /802 _11 set opt ( rp ) Manual roteamento set opt ( ll ) LL set opt ( ifqlen ) 50 fila set opt ( ant ) Antenna / OmniAntenna set opt ( prop ) Propagation / TwoRayGround propagation model set opt ( netif ) Phy / WirelessPhy interface type set opt ( chan ) Channel / WirelessChannel set opt ( rxthr ) 1.42111 e -08 transmisso (= 100 m ) set opt ( csthr ) 2.28289 e -11 de portadora (= 500 m )
; # MAC type ; # Protocolo de ; # link layer type ; # Tamanho mx . da ; # antenna model ; # radio ; # network ; # channel type ; # raio de ; # raio de deteco
74
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
set opt ( rtsthr ) 6000 mecanismo de RTS / CTS if {![ info exists opt ( time ) ]} { set opt ( time ) 20.0 simulao } if {![ info exists opt ( psize ) ]} { set opt ( psize ) 500 pacote } if {![ info exists opt ( prate ) ]} { set opt ( prate ) 1 segundo } if {![ info exists opt ( seed ) ]} { set opt ( seed ) 0 zero para semente aleatria } if { $opt ( mac ) == " Mac /802 _11e " } { set opt ( ifq ) Queue / DTail / PriQ for 802.11 e } else { set opt ( ifq ) Queue / DropTail / PriQueue type }
; # limiar do ; # tempo de
; # Tamanho do
; # pacotes por
; # semente . Use
# Nome deste aquivo / script set thisScript [ exec echo $argv0 | sed -r s /\. tcl$ // ] set set set set set set set set set throughputTraceFileName " $thisScript vazao . tr " throughputTraceId [ open $throughputTraceFileName w ] meanThroughputTraceFileName " $thisScript vazao media . tr " meanThroughputTraceId [ open $meanThroughputTraceFileName w ] dropRateTraceFileName " $thisScript descarte por fluxo . tr " dropRateTraceId [ open $dropRateTraceFileName w ] dropRateIfqTraceFileName " $thisScript descarte IFQ . tr " dropRateIfqTraceId [ open $dropRateIfqTraceFileName w ] dropRateCollisionTraceFileName " $thisScript descarte colisao . tr
" set dropRateCollisionTraceId [ open $dropRateCollisionTraceFileName w] set txopTraceFileName " $thisScript txop . tr " set txopTraceFileNameId [ open $txopTraceFileName w ]
# =========================================================== # Procedimentos # =========================================================== proc createTcp { from to { prio 3}} { global node flow numberOfFlows opt set ns [ Simulator instance ] set flowId [ expr [ array size flow ] / 4] set flow ( $flowId , src ) [ new Agent / TCP / Newreno ] set flow ( $flowId , sink ) [ new Agent / TCPSink / Sack1 ] $flow ( $flowId , src ) set fid_ [ expr $flowId + 1]
75
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
$flow ( $flowId , src ) set prio_ $prio $ns attach - agent $node ( $from ) $flow ( $flowId , src ) $ns attach - agent $node ( $to ) $flow ( $flowId , sink ) $ns connect $flow ( $flowId , src ) $flow ( $flowId , sink ) set flow ( $flowId , app ) [ new Application / FTP ] $flow ( $flowId , app ) set packetSize_ $opt ( psize ) $flow ( $flowId , app ) attach - agent $flow ( $flowId , src ) } set flow ( $flowId , totalSinkBytes ) 0
proc createUdp { from to { prio 3}} { global node flow numberOfFlows opt set ns [ Simulator instance ] set flowId [ expr [ array size flow ] / 4] puts " Tamanho de flow [ array size flow ] " puts " flowId : $flowId , from : $from , to : $to " set flow ( $flowId , src ) [ new Agent / UDP ] set flow ( $flowId , sink ) [ new Agent / LossMonitor ] $flow ( $flowId , src ) set fid_ [ expr $flowId + 1] $flow ( $flowId , src ) set prio_ $prio $ns attach - agent $node ( $from ) $flow ( $flowId , src ) $ns attach - agent $node ( $to ) $flow ( $flowId , sink ) $ns connect $flow ( $flowId , src ) $flow ( $flowId , sink ) set flow ( $flowId , app ) [ new Application / Traffic / CBR ] $flow ( $flowId , app ) set packetSize_ $opt ( psize ) if {![ info exists opt ( brate ) ]} { $flow ( $flowId , app ) set interval_ [ expr 1.0 / $opt ( prate ) ] } else { $flow ( $flowId , app ) set rate_ $opt ( brate ) } $flow ( $flowId , app ) set maxpkts_ 10 $flow ( $flowId , app ) attach - agent $flow ( $flowId , src ) set flow ( $flowId , totalSinkBytes ) 0
proc scheduleFlows {} { global numberOfFlows flow ns opt for { set i 0} { $i < $numberOfFlows } { incr i } { $ns at [ expr $i * 0.002] " $flow ( $i , app ) start " $ns at [ expr $opt ( time ) + 0.1 - ( $numberOfFlows - 1 - $i ) * 0.002] " $flow ( $i , app ) stop " } }
76
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
# Calcula vazo ( em Mbit / s ) e escreve num arquivo proc recordThroughput {} { global flow throughputTraceId numberOfFlows node set set set set set for ns [ Simulator instance ] tick 1.0 now [ $ns now ] line $now aggregateBytes 0 { set i 0} { $i < $numberOfFlows } { incr i } { set bytes ( $i ) [ $flow ( $i , sink ) set bytes_ ] set line " $line [ expr $bytes ( $i ) *8/ $tick /1000000] " set aggregateBytes [ expr $aggregateBytes + [ $flow ( $i , sink ) set bytes_ ]] set flow ( $i , totalSinkBytes ) [ expr $flow ( $i , totalSinkBytes ) + [ $flow ( $i , sink ) set bytes_ ]] $flow ( $i , sink ) set bytes_ 0
} set line " $line [ expr ( $aggregateBytes * 8) / ( $tick * 1000000) ]" puts $throughputTraceId $line # Chamada recursiva aps $tick segundos $ns at [ expr $now + $tick ] " recordThroughput "
# Plota grfico de vazo dos fluxos proc plotThroughput {} { global numberOfFlows throughputTraceFileName set plotCode " set encoding iso_8859_15 \ n \ set terminal postscript color \ n \ set output \ " [ string trimright $throughputTraceFileName " . tr " ]. eps \ " \ n \ set style data linesp \ n \ set grid y \ n \ set xlabel \ " Tempo ( segundos ) \ " \ n \ set ylabel \ " Vaz \\343 o ( Mbps ) \ " \ n \ plot " for { set i 0} { $i < $numberOfFlows } { incr i } { set plotCode " $plotCode \ " $throughputTraceFileName \ " using 1:[ expr $i + 2] title \ " Fluxo [ expr $i + 1]\ " ," } set plotCode " $plotCode \ " $throughputTraceFileName \ " using 1:[ expr $i + 2] title \ " Fluxos agregados \ " " exec echo $plotCode > [ string trimright $throughputTraceFileName " . tr " ]. plot exec echo -e $plotCode | nice gnuplot - persist & } # Calcula vazo mdia dos fluxos proc recordMeanThroughput {} { global meanThroughputTraceId numberOfFlows flow opt set line " " for { set i 0} { $i < $numberOfFlows } { incr i } { set line " $line [ expr $i + 1] [ expr $flow ( $i , totalSinkBytes ) * 8.0 / ( $opt ( time ) * 1000000) ] " }
77
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265
266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294
proc plotMeanThroughput {} { global meanThroughputTraceFileName numberOfFlows set plotCode " set encoding iso_8859_15 \ n \ set terminal postscript color \ n \ set output \ " [ string trimright $meanThroughputTraceFileName " . tr " ]. eps \ " \ n \ set style data boxes \ n \ set xtics 1\ n \ # set ytics 0.2\ n \ set xrange \[0.5: $numberOfFlows .5\]\ n \ set yrange \[0:\]\ n \ set boxwidth 0.5\ n \ set xlabel \ " Fluxo \ " \ n \ set ylabel \ " Vaz \\343 o M \\351 dia ( Mbps ) \ " \ n \ set style fill solid \ n \ plot " for { set i 0} { $i < $numberOfFlows } { incr i } { set plotCode " $plotCode \ " $meanThroughputTraceFileName \ " using [ expr $i * 2 + 1]:[ expr $i * 2 + 2] title \ " Fluxo [ expr $i + 1]\ " ," } set plotCode [ string trimright $plotCode " , " ] exec echo -e $plotCode | nice gnuplot - persist & } # Calcula taxa de descarte de pacotes por fluxo proc recordDropRate { } { global numberOfFlows traceFileName dropRateTraceFileName thisScript flowDefinition set awkCode " BEGIN \{\ n \ \ ttick = 2.0\ n \ \ tnextStop = 0\ n \ \}\ n \ \ $1 == \ " s \ " \&\& ( " for { set i 0} { $i < $numberOfFlows } { incr i } { set awkCode " $awkCode \ $5 == \ " [ lindex $flowDefinition ( $i ) 1]\ " \|\| " } set awkCode [ string trimright $awkCode " || " ] set awkCode " $awkCode ) \&\& \ $19 == \ " MAC \ " \&\& \ $30 != \ " \ " \{\ n " for { set i 0} { $i < $numberOfFlows } { incr i } { if { $i > 0 } { set awkCode " $awkCode else " } set awkCode " $awkCode if ( \ $39 == [ expr $i + 1] ) numberOfPacketsSent \[ $i \] +=1\ n " } set awkCode " $awkCode \}\ n \ $1 == \ " r \ " \&\& \ $19 == \ " AGT \ " \{\ n" for { set i 0} { $i < $numberOfFlows } { incr i } { if { $i > 0 } { set awkCode " $awkCode else " }
78
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345
} set awkCode " $awkCode \}\ n \ \{\ n \ if ( \ $3 >= nextStop ) \{\ n \ printf ( \ " %.1 f \ " , nextStop ) \ n \ for ( i = 0; i < $numberOfFlows ; i ++ ) \{\ n \ drop = numberOfPacketsSent \[ i \] numberOfPacketsReceived \[ i \]\ n \ printf ( \ " % d \ " , drop ) \ n \ numberOfPacketsSent \[ i \] = numberOfPacketsReceived \[ i \] = 0\ n \ \}\ n \ printf ( \ " \\ n \ " ) \ n \ nextStop += tick \ n \ \}\ n \ \}\ n " puts " Generating drop trace ... " exec echo $awkCode > [ string trimright $dropRateTraceFileName " . tr " ]. awk exec nice awk $awkCode $traceFileName > $dropRateTraceFileName
proc plotDropRate {} { global dropRateTraceFileName numberOfFlows set plotCode " set encoding iso_8859_15 \ n \ set terminal postscript color \ n \ set output \ " [ string trimright $dropRateTraceFileName " . tr " ]. eps \ " \ n \ set data style linesp \ n \ set grid y \ n \ set xlabel \ " Tempo ( segundos ) \ " \ n \ set ylabel \ " Taxa de descarte ( pacotes por segundos ) \ " \ n \ plot " for { set i 0} { $i < $numberOfFlows } { incr i } { set plotCode " $plotCode \ " $dropRateTraceFileName \ " using 1:[ expr $i + 2] title \ " Fluxo [ expr $i + 1]\ " ," } set plotCode [ string trimright $plotCode " , " ] exec echo -e $plotCode | nice gnuplot - persist & } # Calcula taxa de descarte de pacotes por n na fila proc recordDropRateIfq { nodes } { global numberOfFlows traceFileName dropRateIfqTraceFileName set awkCode " BEGIN \{\ n \ \ ttick = 1.0\ n \ \ tnextStop = 0\ n \ \}\ n \ \ $1 == \ " d \ " \&\& \ $19 == \ " IFQ \ " \{\ n " foreach i $nodes { if { [ lsearch $nodes $i ] > 0 } { set awkCode " $awkCode else " } set awkCode " $awkCode if ( \ $9 == $i ) drop \[[ lsearch $nodes $i ]\] +=1\ n " }
79
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395
set awkCode " $awkCode \}\ n \ \{\ n \ if ( \ $3 >= nextStop ) \{\ n \ printf ( \ " %.1 f \ " , nextStop ) \ n \ for ( i = 0; i < [ llength $nodes ]; i ++ ) \{\ n \ printf ( \ " % d \ " , drop \[ i \] ) \ n \ drop \[ i \] = 0\ n \ \}\ n \ printf ( \ " \\ n \ " ) \ n \ nextStop += tick \ n \ \}\ n \ \}\ n " puts " Generating drop ifq trace ... " exec echo $awkCode > [ string trimright $dropRateIfqTraceFileName " . tr " ]. awk exec nice awk $awkCode $traceFileName > $dropRateIfqTraceFileName
proc plotDropRateIfq { nodes } { global dropRateIfqTraceFileName numberOfFlows set plotCode " set encoding iso_8859_1 \ n \ set terminal postscript color \ n \ set output \ " [ string trimright $dropRateIfqTraceFileName " . tr " ]. eps \ " \ n \ set data style linesp \ n \ set grid y \ n \ set xlabel \ " Tempo ( segundos ) \ " \ n \ set ylabel \ " Taxa de descarte ( pacotes por segundos ) \ " \ n \ plot " foreach i $nodes { set plotCode " $plotCode \ " $dropRateIfqTraceFileName \ " using 1:[ expr [ lsearch $nodes $i ] + 2] title \ " N \\363 $i \ " ," } set plotCode [ string trimright $plotCode " , " ] exec echo $plotCode > [ string trimright $dropRateIfqTraceFileName " . tr " ]. plot exec echo -e $plotCode | nice gnuplot - persist & } # Calcula taxa de descarte devido a coliso de pacotes por n proc recordDropRateCollision { nodes } { global numberOfFlows traceFileName dropRateCollisionTraceFileName set awkCode " BEGIN \{\ n \ \ ttick = 1.0\ n \ \ tnextStop = 0\ n \ \}\ n \ \ $1 == \ " d \ " \&\& \ $19 == \ " MAC \ " \&\& \ $21 == \ " COL \ " \{\ n " foreach i $nodes { if { [ lsearch $nodes $i ] > 0 } { set awkCode " $awkCode else " } set awkCode " $awkCode if ( \ $9 == $i ) drop \[[ lsearch $nodes $i ]\] +=1\ n " } set awkCode " $awkCode \}\ n \
80
396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423
\{\ n \ if ( \ $3 >= nextStop ) \{\ n \ printf ( \ " %.1 f \ " , nextStop ) \ n \ for ( i = 0; i < [ llength $nodes ]; i ++ ) \{\ n \ printf ( \ " % d \ " , drop \[ i \] ) \ n \ drop \[ i \] = 0\ n \ \}\ n \ printf ( \ " \\ n \ " ) \ n \ nextStop += tick \ n \ \}\ n \ \}\ n " puts " Generating drop collision trace ... " exec echo $awkCode > [ string trimright $dropRateCollisionTraceFileName " . tr " ]. awk exec nice awk $awkCode $traceFileName > $dropRateCollisionTraceFileName
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445
proc plotDropRateCollision { nodes } { global dropRateCollisionTraceFileName numberOfFlows set plotCode " set encoding iso_8859_1 \ n \ set terminal postscript color \ n \ set output \ " [ string trimright $dropRateCollisionTraceFileName " . tr " ]. eps \ " \ n \ set data style linesp \ n \ set grid y \ n \ set xlabel \ " Tempo ( segundos ) \ " \ n \ set ylabel \ " Taxa de descarte ( pacotes por segundos ) \ " \ n \ plot " foreach i $nodes { set plotCode " $plotCode \ " $dropRateCollisionTraceFileName \ " using 1:[ expr [ lsearch $nodes $i ] + 2] title \ " N \\363 $i \ " ," } set plotCode [ string trimright $plotCode " , " ] exec echo $plotCode > [ string trimright $dropRateCollisionTraceFileName " . tr " ]. plot exec echo -e $plotCode | nice gnuplot - persist & } proc recordTxop { nodes } { global flowDefinition numberOfFlows traceFileName txopTraceFileName set awkCode " BEGIN \{\ n \ tick = 1.0\ n \ nextStop = 0\ n \ SIFS = 0.00001\ n " foreach i $nodes { set awkCode " $awkCode nFrame \[ $i \] = nTxop \[ $i \] = 0\ n " } set awkCode " $awkCode \}\ n \ \ $1 == \ " r \ " \&\& ( " foreach i $nodes { set awkCode " $awkCode \ $5 == \ " $i \ " \|\| " } set awkCode [ string trimright $awkCode " || " ] set awkCode " $awkCode ) \&\& \ $19 == \ " MAC \ " \&\& \ $30 == \ " \ " \{\ n \
81
446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491
start_time = \ $3 \ n \ \}\ n \ n \ \ $1 == \ " s \ " \&\& ( " foreach i $nodes { set awkCode " $awkCode \ $5 == \ " $i \ " \|\| " } set awkCode [ string trimright $awkCode " || " ] set awkCode " $awkCode ) \&\& \ $19 == \ " MAC \ " \&\& \ $23 == \ " 13 a \ " \{\ n \ interarrival = \ $3 - start_time \ n \ if ( interarrival >= ( SIFS * 1.1) ) \{\ n \ nTxop \[\ $5 \] += 1\ n \ \}\ n \ nFrame \[\ $5 \] += 1\ n \ \}\ n \ n \ \{\ n \ if ( \ $3 >= nextStop ) \{\ n \ printf ( \ " %.1 f \ " , nextStop ) \ n \ print " foreach i $nodes { set awkCode " $awkCode nTxop \[ $i \] \ " \ " nFrame \[ $i \] \ " \" " } set awkCode " $awkCode \ n " foreach i $nodes { set awkCode " $awkCode nTxop \[ $i \] = nFrame \[ $i \] = 0\ n " } set awkCode " $awkCode nextStop += tick \ n \ \}\ n \ \} " puts " Generating TXOP trace ... " exec echo $awkCode > [ string trimright $txopTraceFileName " . tr " ]. awk exec nice awk $awkCode $traceFileName > $txopTraceFileName
proc plotTxop { nodes } { global txopTraceFileName numberOfFlows set plotCode " set encoding iso_8859_1 \ n \ set terminal postscript color \ n \ set output \ " [ string trimright $txopTraceFileName " . tr " ]. eps \ " \ n \ set data style linesp \ n \ set grid y \ n \ set xlabel \ " Tempo ( segundos ) \ " \ n \ set ylabel \ " Pacotes por segundos \ " \ n \ plot " for { set i 0} { $i < [ llength $nodes ]} { incr i } { set plotCode " $plotCode \ " $txopTraceFileName \ " using 1:[ expr $i * 2 + 2] title \ " TXOP N \\363 [ lindex $nodes $i ]\ " ,\ \ " $txopTraceFileName \ " using 1:[ expr $i * 2 + 3] title \ " Quadros N \\363 [ lindex $nodes $i ]\ " ," } set plotCode [ string trimright $plotCode " , " ] exec echo $plotCode > [ string trimright $txopTraceFileName " . tr " ]. plot
82
502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549
# Define a ' finish ' procedure proc finish {} { global ns traceFileId namFileId namFileName throughputTraceId meanThroughputTraceId monitoredNodes dropRateIfqTraceId dropRateCollisionTraceId $ns flush - trace close $traceFileId close $namFileId close $throughputTraceId close $meanThroughputTraceId close $dropRateIfqTraceId close $dropRateCollisionTraceId # exec nam $namFileName & # plotThroughput # recordMeanThroughput # plotMeanThroughput recordDropRate # plotDropRate recordTxop $monitoredNodes # plotTxop $monitoredNodes recordDropRateIfq $monitoredNodes # plotDropRateIfq $monitoredNodes recordDropRateCollision [ lappend monitoredNodes 7] # plotDropRateCollision $monitoredNodes exit 0 } # ========================================================= # Simulao # ========================================================= # Create a simulator object set ns [ new Simulator ] # O nome dos arquivos de registro o mesmo * deste * script tcl com exceo da # extenso (. tr e . nam ) . # Habilita registro geral set traceFileName $thisScript . tr set traceFileId [ open $traceFileName w ] $ns trace - all $traceFileId $ns use - newtrace # Habilita registro NAM set namFileName $thisScript . nam set namFileId [ open $namFileName w ] $ns namtrace - all - wireless $namFileId $greatestX $greatestY # Os valores de dataRate_ e basicRate_ sobrepem o valor de bandwidth_ se um dos # dois estiver sido configurado eval $opt ( mac ) set dataRate_ 11 Mb eval $opt ( mac ) set basicRate_ 1 Mb # Mac set bandwidth_ 11 Mb
83
550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603
# O preambulo um padro de bits que possibilita ao receptor sincronizar - se antes # da recepo de um quadro # Long preamble = 144 ( NS default ) # Short preamble = 72 # eval $opt ( mac ) set PreambleLength_ 72 set topo [ new Topography ] $topo load_flatgrid $greatestX $greatestY set god [ create - god $numberOfNodes ] # Cria / reserva um canal ( faixa de freqncia ) para comunicao entre ns set channel [ new $opt ( chan ) ] # Limiar de potncia de recebimento de um quadro ( watt ) Phy / WirelessPhy set RXThresh_ $opt ( rxthr ) # Limiar de potncia de deteco de portadora ( watt ) Phy / WirelessPhy set CSThresh_ $opt ( csthr ) # Limiar de ativao do mecanismo de RTS / CTS ( byte ) eval $opt ( mac ) set RTSThreshold_ $opt ( rtsthr ) $ns node - config - adhocRouting - llType - macType - ifqType - ifqLen - antType - propType - phyType - channel # - channelType - topoInstance - agentTrace - routerTrace - macTrace - movementTrace $opt ( rp ) \ $opt ( ll ) \ $opt ( mac ) \ $opt ( ifq ) \ $opt ( ifqlen ) \ $opt ( ant ) \ $opt ( prop ) \ $opt ( netif ) \ $channel \ $opt ( chan ) \ $topo \ ON \ OFF \ ON \ OFF
# Instancia ns for { set i 0} { $i < $numberOfNodes } { incr i } { set node ( $i ) [ $ns node ] $node ( $i ) set X_ $nodePosition ( $i ,0) $node ( $i ) set Y_ $nodePosition ( $i ,1) $ns initial_node_pos $node ( $i ) 15 ; # Define o tamanho do n . Usado pelo NAM . } if { $opt ( mac ) == " Mac /802 _11e " } { # Ns clientes transmissores for { set i 0} { $i < $numberOfFlows } { incr i } { set queue [ $node ([ lindex $flowDefinition ( $i ) 1]) set ifq_ (0) ] $queue Prio 2 TXOPLimit 0 $queue Prio 2 AIFS 1 $queue Prio 2 CW_MIN 31
84
604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658
$queue Prio 2 CW_MAX 1023 } set queue [ $node (5) set ifq_ (0) ] $queue Prio 2 TXOPLimit [ expr 0.00183 * 1.5] $queue Prio 2 AIFS 1 $queue Prio 2 CW_MIN 31 $queue Prio 2 CW_MAX 1023 $queue Prio 2 MinLength 3 set queue [ $node (6) set ifq_ (0) ] $queue Prio 2 TXOPLimit [ expr 0.00183 * 2.0] $queue Prio 2 AIFS 1 $queue Prio 2 CW_MIN 31 $queue Prio 2 CW_MAX 1023 $queue Prio 2 MinLength 4 set queue [ $node (1) set ifq_ (0) ] $queue Prio 2 TXOPLimit [ expr 0.00183 * 0.5] $queue Prio 2 AIFS 1 $queue Prio 2 CW_MIN 31 $queue Prio 2 CW_MAX 1023 $queue Prio 2 MinLength 1
# Configurao de rotas source " $thisScript - routes . tcl " # Colore fluxos . Usado pelo NAM . $ns color 1 red $ns color 2 green $ns color 3 blue $ns color 4 pink $ns color 5 deepskyblue $ns color 6 gold $ns color 7 black $ns color 8 orange $ns color 9 gray # Cria fluxos for { set i 0} { $i < $numberOfFlows } { incr i } { if {[ lindex $flowDefinition ( $i ) 0] == " tcp " } { eval createTcp [ lrange $flowDefinition ( $i ) 1 [ llength $flowDefinition ( $i ) ]] } else { eval createUdp [ lrange $flowDefinition ( $i ) 1 [ llength $flowDefinition ( $i ) ]] } } # Eventos escalonados $ns at 0.0 " recordThroughput " scheduleFlows $ns at [ expr $opt ( time ) + 0.3] " finish " puts " ## DEBUG AREA ( incio ) ## " puts " MAC bandwidth [ Mac set bandwidth_ ] " puts " $opt ( mac ) basicRate [ eval $opt ( mac ) set basicRate_ ] " puts " $opt ( mac ) dataRate [ eval $opt ( mac ) set dataRate_ ] " puts " $opt ( mac ) PreambleLength_ [ eval $opt ( mac ) set PreambleLength_ ]"
85
659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675
puts " Prioridade fluxo 0 = [ $flow (0 , src ) set prio_ ] " puts " Tipo de fila = $opt ( ifq ) " puts " Mac /802 _11e slotTime_ = [ Mac /802 _11e set slotTime_ ] " puts " Mac /802 _11e SlotTime_ = [ Mac /802 _11e set SlotTime_ ] " puts " Mac /802 _11e ShortRetryLimit_ = [ Mac /802 _11e set ShortRetryLimit_ ] " puts " Mac /802 _11e difs_ = [ Mac /802 _11e set difs_ ] " puts " Mac /802 _11e sifs_ = [ Mac /802 _11e set sifs_ ] " puts " Mac /802 _11e SIFS_ = [ Mac /802 _11e set SIFS_ ] " puts " ## DEBUG AREA ( fim ) ## " # awk '{ if ( NR != 1) { resul = $5 / $4 ; print resul ; total += resul ; i += 1;}} END { print " mdia : " total / i } ' mesh \ txop . tr # Semeia o gerador de nmeros pseudo - aleatrio global defaultRNG $defaultRNG seed $opt ( seed ) # Run the simulation $ns run
86