sexta-feira, 26 de março de 2010

Conectividade de redes mesh

Ricardo Andrade Dalla Bernardina



Redes mesh podem ser estudadas pela teoria dos grafos [1]. Para seu correto funcionamento é necessário que qualquer AP (Acess Point) tenha comunicação com qualquer outro. Por isso, é natural a relação entre a conectividade entre um AP e todos outros de uma rede mesh, e o fato do grafo associado a eles ser conexo ou não [2]. Com esta finalidade criou-se o programa connect.g [3] para avaliar se o grafo de uma rede mesh é conexo, utilizando a linguagem gvpr [4]. o programa é mostrado a seguir:
BEGIN {
graph_t comp;
}
N {
comp = compOf ($G, $);
printf ("%s\n", $G.name);
if (comp.n_nodes < $G.n_nodes) {
printf("'%s' is not a connected graph.\n", $G.name);
}
else{
printf("'%s' is a connected graph.\n", $G.name);
}
exit(0);
}

No passo BEGIN é declarado o grafo comp. Este grafo é usado no passo N para receber o valor da chamada de compOf() do grafo de que se deseja verificar a conectividade. A função compOf() verifica, dado um grafo g e um nó n deste grafo, quais nós de g estão conectados com o nó n. A resposta de uma chamada a compOf() é um subgrafo com os nós que estão em ligados a n, sem as arestas em g.

No programa é feita a chamada compOf ($G, $), onde $G significa o grafo sendo atualmente processado, e $ o nó atual no passo N. Como em um grafo conexo, qualquer nó deve estar ligado com todos os outros nós, o número de nós do resultado do compOf() deve ser igual ao número de nós do grafo original. Por isso, comparação
if (comp.n_nodes < $G.n_nodes)


Nela é avaliado se o número de nós do resultado de compOf() é menor que o número de nós do grafo original. Se a resposta for positiva, o grafo não é conexo. Então, é exibida na tela a mensagem de não conexão do grafo. Caso a resposta seja negativa, o número de nós do resultado do compOf() é igual ao número de nós do grafo original, pois não há possibilidade de haver maior número de nós no grafo do compOf() em comparação com o grafo original. Desse modo, a tela exibirá mensagem informando que o grafo é conexo.

É feita logo a seguir, uma chamada exit(0), para que o programa não exiba a mesma resposta até serem analisados todos os nós -- pois se o grafo não for conexo, a chamada a compOf() para qualquer um dos nós gerará um componente conexo com menos vértices do que o grafo original.

Assim, basta testar um único nó -- portanto, este é um método bastante eficiente.

Referências



[1] Redes mesh e grafos
http://tecnologiassemfio.wordpress.com/2010/01/22/redes-mesh-e-grafos/
Acessado em 25/03/2010

[2] Teoria dos grafos
https://secure.wikimedia.org/wikipedia/pt/wiki/Teoria_dos_grafos
Acessado em 25/03/2010

[3] connect.g
http://sites.google.com/site/hgfernan/arquivos/connect.g?attredirects=0
Acessado em 25/03/2010

[4] Apresentação do gvpr
http://tecnologiassemfio.wordpress.com/2010/02/05/apresentacao-do-gvpr/
Acessado em 25/03/2010

sexta-feira, 19 de março de 2010

Yet Another Asterisk Tutorial

Daniel Caraça



Atualmente, a telefonia é um meio de comunicação indispensável. Apesar de existirem muitos outros meios de comunicação, é ainda vencedora a simplicidade e eficácia da telefonia na transmissão de informações. Infelizmente, seu custo pode ser alto, principalmente levando em consideração ligações de longa distância. Uma solução que tem sido a cada dia mais usada é a de unir a telefonia com a internet, criando o VoIP [1], ou "Voz por IP", que pode fazer ligações de longa distância a preços de ligações locais. Utilizando Softwares Livres [2], a implementação do VoIP se torna muito barata e ainda conta com a vantagem de fácil instalação e manutenção.

Uma conexão de baixa qualidade com a Internet pode trazer problemas para uma ligação VoIP. Quando se faz uma ligação normal, tem-se a sensação de estar falando com uma pessoa logo ao lado, pois a transmissão da voz é instantânea. Mas quando por algum motivo ocorre algum atraso, o usuário sente um certo desconforto e fica falando "Alô, alô?" até que a outra pessoa responda, ou seja, até que o sinal da resposta chegue. Assim para se ter uma comunicação eficaz por VoIP, deve-se dar muita importância a parâmetros como latência (ou a demora em responder) [3] e jitter (ou a irregularidade desse tempo) [4], importantes para se garantir a qualidade de serviço da ligação [5].

Em cidades digitais implementadas com redes mesh [6] há a possibilidade dos dados passarem por mais de um nó antes de chegar ao destino final -- cada nó intermediário é chamado de hop. Se o número de hops for muito grande, isto aumentará a latência da comunicação.

A latência da comunicação faz uma comunicação VoIP ser um ótimo teste para uma rede. Pois apesar de números obtidos por benchmarks [7] darem bastante informação, nada melhor do que sentir "na pele", intuitivamente, a qualidade da rede.

Este tutorial, aparentemente, mais um de tantos outros, tem como objetivo mostrar como pode ser simples fazer uma conexão VoIP entre dois computadores, o que é base até mesmo de sistemas VoIP de grande tamanho, conectando muitos computadores. A abordagem aqui têm ênfase na simplicidade, e apenas o mínimo necessário será explicado. Uma outra diferença importante deste texto é que aqui se ensina como a associar nomes aos ramais, o que não é o tipo de coisa mostrada em qualquer tutorial.

São usados 3 computadores, sendo 1 deles o servidor e os outros 2 os clientes. Nos clientes será usado um softphone; ou seja: um software que simula um telefone. Neste tutorial está sendo usado o Ekiga [8], que já vem instalado no Ubuntu [9], hoje a distribuição Linux mais popular [10]. Contudo, em qualquer outra distribuição o Ekiga funcionará da mesma forma. No servidor será usado o asterisk [11], um servidor VoIP que é Software Livre [2]. Para instalá-lo nas distribuições Debian [12], Ubuntu [9] e outras que possuam apt-get [13], basta digitar o seguinte comando:
# sudo apt-get install asterisk

Caso a distribuição em uso não possua o comando apt-get, há vários tutoriais na internet sobre como instalar o asterisk em outras distribuições através dos comandos correspondentes a elas, como por exemplo, o comando yum [14] do Fedora [15] e o yaST [16] do openSUSE [17]

O asterisk funciona da seguinte forma: quando um usuário se loga no servidor com um programa cliente, o asterisk cria uma rota para se comunicar com o computador dele. Isso significa que o asterisk saberá para onde deve redirecionar a ligação caso alguém ligue para o ramal do usuário. Isso quer dizer também que, caso o usuário não se logue, o asterisk não saberá como chegar a seu computador. As configurações dele são feitas através de arquivos de configuração, onde se adicionam ramais, estabelecem-se as ações para as chamadas etc. Dois arquivos muito usados são o sip.conf e o extensions.conf, os quais serão modificados a seguir:

sip.conf:
- Nesse arquivo estão informações sobre os ramal que utilizarão o protocolo SIP [18] para se comunicar.

1) Há uma linha no arquivo que inicia-se com:
bindaddr=0.0.0.0

Caso se use 0.0.0.0, o asterisk escutará em todas as interfaces, mas parece aconselhável colocar apenas o IP da interface principal do servidor, pois assim não serão bloqueadas portas para VoIP de outras interfaces, como pode ver visto na descrição da chamada de sistema bind [19]

2) Adicione as seguintes linhas no final do arquivo:
[2000]
type=friend
secret=1234
host=dynamic
context=teste

[2001]
type=friend
secret=4321
host=dynamic
context=teste

3)Explicando:
- [] o nome entre as chaves será seu login e o seu ramal para o protocolo SIP

- type é o tipo de usuário. Existem 3 tipos: friend, peer e user. Respectivamente eles podem receber e fazer ligações, apenas receber ligações e apenas fazer ligações

- secret é a senha se logar no servidor

- host é o IP do computador do cliente, ou dynamic caso o IP seja dinâmico

- context é o contexto, ou grupo, que o usuário estará no arquivo extensions.conf. Caso ele pertença a um contexto, não poderá ligar para outro ramal pertencente a outro contexto, pelo menos sem redirecionamento de chamada.

Isto cria dois usuários SIP com o mínimo de informações possível.

extensions.conf
-- Aqui estarão descritas as ações para os números discados

1) As seguintes linhas devem ser adicionada ao final do arquivo:
[ntsf]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,Hangup
exten => joao,1,Dial(SIP/2000,20)
exten => joao,2,Hangup

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,Hangup
exten => maria,1,Dial(SIP/2001,20)
exten => maria,2,Hangup

2) Explicando:
- [] o nome entre as chaves será o nome do contexto, ou grupo, que pertencem essas extensões.

- exten => 2000,x,..... significa que quando ligarem para o ramal 2000, serão executados os comandos iniciados por 2000, começando pela prioridade 1, depois 2 e assim por diante...

- ....,Dial(SIP/2000,20) significa que o asterisk irá chamar durante 20 segundos o computador que se logou como 2000 (ramal definido no arquivo sip.conf).

- Hangup significa que irá finalizar a ligação, caso não completada.

- os nomes joao e maria não foram definidos em nenhum outro lugar, mas podemos utilizá-los. Esse é o interessante do arquivo extensions: ele diz ao asterisk o que fazer quando alguém liga para algum ramal. Assim ligar para um numero não significa que só se poderá falar com uma pessoa que usa ramal, pois é possível criar ramais de redirecionamento, ramais de secretária eletrônica, ramais de atendimento etc. Fazendo dois ramais diferentes executarem a mesma ação, é um método fácil de dar aos usuários a escolha entre utilizar números ou nomes.

Com isso já se tem o suficiente para fazer uma ligação utilizando o asterisk. A última coisa que é necessário fazer é carregar esses arquivos no asterisk. Para isso, basta digitar:
# sudo asterisk -r

Assim a CLI [20] do asterisk será aberta. Deve-se agora digitar os dois comandos seguintes:
# sip reload
# dialplan reload


Assim os arquivos sip.conf e extensions.conf serão carregados e o asterisk está pronto para gerenciar as ligações.

Nos clientes, abre-se o Ekiga, clica-se na aba Edit e depois em Accounts. Na tela aberta, clica-se em Accounts e depois em Add a Sip account. Na outra tela que se abrirá, informa-se no registrar o IP da maquina onde esta o asterisk, no user e authentication user coloque o ramal, como por exemplo 2000, e como password a respectiva senha. Como nome, coloque qualquer um, pois é um parâmetro para o Ekiga, e no timeout algum valor de tempo em segundos, como por exemplo 60. Agora pressione Ok e de close na outra tela. Faça isso para o outro computador e com isso as configurações estão terminadas.

Para fazer a ligação digite, em algum dos clientes, ramal@ip.do.servidor no local onde está sip:. Aperte enter ou clique no botão verde e a ligação será feita.

Essas configurações apenas possibilitam fazer ligações entre 2 computadores, mas o asterisk tem um potencial muito maior, permitindo secretária eletrônica, sons, espera, salas de conferencias, etc. Caso se interesse por mais informação, há muitos tutoriais na internet que se aprofundam mais, como o VoIP Wiki [21]

Referências



[1] VoIP
https://secure.wikimedia.org/wikipedia/pt/wiki/VoIP
Visitado em 23/03/2010

[2] Software Livre
https://secure.wikimedia.org/wikipedia/pt/wiki/Software_livre
Visitado em 23/03/2010

[3] Latência
https://secure.wikimedia.org/wikipedia/en/wiki/Latency_(engineering)
Visitado em 23/03/2010

[4] Jitter
https://secure.wikimedia.org/wikipedia/pt/wiki/Jitter
Visitado em 23/03/2010

[5] O que é Traffic shaping, afinal?
http://tecnologiassemfio.wordpress.com/2010/02/26/o-que-e-traffic-shaping-afinal/
Visitado em 23/03/2010

[6] Redes mesh e grafos
http://tecnologiassemfio.wordpress.com/2010/01/22/redes-mesh-e-grafos/
Visitado em 23/03/2010

[7] Benchmark
http://tecnologiassemfio.wordpress.com/2010/01/29/benchmark-distribuidos-para-redes-mesh/
Visitado em 23/03/2010

[8] Ekiga
https://secure.wikimedia.org/wikipedia/pt/wiki/Ekiga
Visitado em 23/03/2010

[9] Ubuntu
https://secure.wikimedia.org/wikipedia/pt/wiki/Ubuntu
Visitado em 23/03/2010

[10] DistroWatch.com
http://distrowatch.com/index.php
Visitado em 23/03/2010

[11] asterisk
https://secure.wikimedia.org/wikipedia/pt/wiki/Asterisk
Visitado em 23/03/2010

[12] Debian
https://secure.wikimedia.org/wikipedia/pt/wiki/Debian
Visitado em 23/03/2010

[13] Advanced Packaging Tool
https://secure.wikimedia.org/wikipedia/pt/wiki/Advanced_Packaging_Tool
Visitado em 23/03/2010

[14] Yum
http://fedoraproject.org/wiki/Tools/yum
Visitado em 23/03/2010

[15] Fedora
http://en.wikipedia.org/wiki/Fedora_(operating_system)
Visitado em 23/03/2010

[16] YaST
http://en.opensuse.org/YaST
Visitado em 23/03/2010

[17] openSUSE
http://en.wikipedia.org/wiki/OpenSUSE
Visitado em 23/03/2010

[18] Session Initiation Protocol
http://en.wikipedia.org/wiki/Session_Initiation_Protocol
Visitado em 23/03/2010

[19] Bind
http://publib.boulder.ibm.com/infocenter/tpfhelp/current/index.jsp?topic=/com.ibm.ztpf-ztpfdf.doc_put.cur/gtpc2/cpp_bind.html
Visitado em 23/03/2010

[20] Command Line Interface
http://en.wikipedia.org/wiki/Command-line_interface
Visitado em 23/03/2010

[21] VoIP Wiki
http://www.voip-info.org/wiki/view/Asterisk
Visitado em 23/03/2010

sexta-feira, 12 de março de 2010

PNBL, lá e cá (parte 1 de 4)

Hilton Garcia Fernandes



O debate sobre o Plano Nacional de Banda Larga, ou PNBL, está se aquecendo. Mas já se mostram posições excessivamente ideológicas, o que compromete o debate. Por exemplo, atribuindo a idéia do PNBL a um viés estatista ou até esquerdista do atual e, possivelmente, do próximo governo federal.

Assim, o propósito deste conjunto de textos é contribuir para que a discussão da iniciativa importante do PNBL passe a ocorrer sobre terreno firme. Afinal, além do tema atrair a polêmica entre privatistas e estatistas, este é um ano de eleições -- e há mesmo vozes muito equilibradas que afirmam que a atual formulação do PNBL é principalmente eleitoreira [1].

Um ponto importante é admitir que, de fato, ele pode ter impacto nas eleições. E que a atual equipe dirigente, inegavelmente hábil, pode realmente o estar usando com interesses eleitorais.

Contudo, ainda assim, é iniciativa que tem muito mérito e, com certeza, necessidade em um país no qual a banda larga é das mais caras do mundo [2]. Sendo assim, não se deve permitir que o tema tão importante se esgote em discussões que são de saída infrutíferas.

Uma das formas de se atingir uma visão menos parcial -- afinal, todos temos uma -- é comparar o incipiente PNBL nacional com outras iniciativas em todo mundo. Isto nos vai permitir observar se, de fato, são esquerdistas que promovem PNBL. E, eventualmente, vai nos ajudar a lidar com o complexo que Nelson Rodrigues atribuía a toda nação brasileira [3].

Há vários países que estão planejando nacionalmente suas redes: muitos têm mesmo uma tradição de planejamento: são desde países socialistas, como China, até países que, mesmo sendo inegavelmente capitalistas, têm políticas de planejamento estruturante. Por menos que os mercadistas admitam, entre eles estão os EUA. Sem falar em Alemanha e outros países, que alguns consideram social-democracias e, por isso, menos capitalistas.

Mas também há entre os países que planejam nacionalmente sua oferta de banda larga aqueles que estão entre os países em desenvolvimento e consideram importante estruturar sua oferta de banda larga, estimulando setores sem o desenvolvimento esperado e reativando a concorrência, no melhor sentido da palavra.

Por último, além da necessidade em si de políticas nacionais, há a necessidade premente de se ativar a oferta de banda-larga: ela é causada pelos celulares modernos que devem consumir crescentes quantidades de banda da Internet [4], devido ao 3G [5] que usam, e também ao Wi-Fi [6]. Sem falar, é claro, no esgotamento de endereços IP [7].

Seguem alguns exemplos de políticas públicas sendo propostas para diversos países.

Austrália



A Australia [8], uma democracia liberal, dificilmente poderia ser chamada de um país socialista. Apesar disso, a forma com que decidiu abordar o problema de sua rede nacional de banda larga [9] poderia ser chamado de esquerdista por algumas pessoas ideologicamente mais pró-mercado. A Australia abriu uma licitação (ou bidding) e, apesar de várias companhias terem se inscrito, considerou-se que nenhuma proposta atendia os requisitos do edital (ou RFP) [10].

Por isso, foi constituída uma companhia estatal, a NBN [11], para implantar a rede nacional.

Apesar de ser muito tentador comparar o caso brasileiro com o estatal -- a Telebras é estatal, a NBN também --, os termos da comparação são equivocados:

  • lá se fala em FTTH [12], com velocidades de 20 Mbps para 90 % da população, 12 Mbps para o restante [9], aqui falamos em menos de 1 Mbps para cerca de 70% da população, segundo o Ministério das Comunicações [13];

  • lá se procurou o modelo estatal devido à crise financeira mundial [11], aqui a razão para se considerar isso foi a falta de investimento da indústria -- não importa a razão que levou a isso: falha do modelo das telecomunicações, excesso de impostos etc.


Um ponto interessante é que os valores aventados para projetos tão diferentes são relativamente próximos: no caso da Australia, cerca de A$ 43 bilhões para cobrir o país [9], ou US$ 39 bilhões [14], com FTTH [12]; no caso do Brasil, fala-se em R$ 75 bilhões [13], ou US$ 42 bilhões [14].

Porém, esta é uma comparação inadequada, de vez que, apesar da área territorial dos países serem semelhantes, a população da Australia (um décimo da brasileira) é principalmente concentrada no litoral. Na verdade, fontes mais afinadas com a equipe que está discutindo o PNBL (infelizmente o Min. das Comunicações não é parte integrante dela), estimam em cerca de R$ 20 bilhões [15], ou US$ 11 bilhões [14], o custo de PNBL brasileira.

Fontes à esquerda criticaram fortemente todas as propostas do Min. das Comunicações [17], como puro lobby das teles que atualmente dominam o mercado. Contudo, o PNBL brasileiro está ainda sob discussão [18].

Na próxima postagem desta série, serão discutidos os planos nacionais dos EUA. Malásia e África do Sul.

Referências



[1] Telebrás, Eletronet e PNBL (170) - Ainda a "Reunião do PNBL" + O "Anãozinho" + Resumo sobre o FUST + A Lei do FUST (íntegra)
http://www.wirelessbrasil.org/bloco/2010/fevereiro/fev_39.html
Visitado em 11/03/2010

[2] Plano Nacional de Banda Larga: primeiras ideias
http://tecnologiassemfio.wordpress.com/2010/02/19/plano-nacional-de-banda-larga-primeiras-ideias/
Visitado em 06/03/2010

[3] Complexo de vira-lata
https://secure.wikimedia.org/wikipedia/pt/wiki/Complexo_de_vira-lata
Visitado em 06/03/2010

[4] BROADCASTING AND THE BROADBAND FUTURE: A PROPOSED FRAMEWORK FOR DISCUSSION

http://www.nab.org/documents/newsRoom/pdfs/122209_SpectrumFramework.pdf
Visitado em 11/03/2010

[5] 3G
https://secure.wikimedia.org/wikipedia/en/wiki/3G
Visitado em 06/03/2010

[6] Wi-Fi
https://secure.wikimedia.org/wikipedia/pt/wiki/Wi-fi
Visitado em 06/03/2010

[7] Agotamiento de las direcciones IPv4
https://secure.wikimedia.org/wikipedia/es/wiki/Agotamiento_de_las_direcciones_IPv4
Visitado em 06/03/2010

[8] Australia
https://secure.wikimedia.org/wikipedia/en/wiki/Australia
Visitado em 11/03/2010

[9] National Broadband Network
https://secure.wikimedia.org/wikipedia/en/wiki/National_Broadband_Network

Visitado em 11/03/2010

[10] EXTRACT FROM THE EVALUATION REPORT FOR THE REQUEST FOR PROPOSALS TO ROLL-OUT AND OPERATE A NATIONAL BROADBAND NETWORK FOR AUSTRALIA
http://www.dbcde.gov.au/__data/assets/pdf_file/0007/110014/Summary_observations_for_website.pdf
Visitado em 10/03/2010

[11] National Broadband Network: 21st century broadband
http://www.dbcde.gov.au/all_funding_programs_and_support/national_broadband_network
Visitado em 10/03/2010

[12] Fiber to the x
https://secure.wikimedia.org/wikipedia/en/wiki/Fiber_to_the_x
Visitado em 11/03/2010

[13] UM PLANO NACIONAL PARA BANDA LARGA: O BRASIL EM ALTA VELOCIDADE
http://www.mc.gov.br/wp-content/uploads/2009/11/o-brasil-em-alta-velocidade1.pdf
Visitado em 11/03/2010

[14] Xe.com: AUD to USD rate: 1.0 AUD = 0.915068 USD
http://www.xe.com/ucc/convert.cgi?Amount=1&From=AUD&To=USD&image.x=52&image.y=9&image=SubmitVisitado em 11/03/2010

[15] Xe.com: BRL to USD rate: 1.0 BRL = 0.564724 USD
http://www.xe.com/ucc/convert.cgi?Amount=1&From=BRL&To=USD&image.x=49&image.y=15&image=Submit
Visitado em 11/03/2010

[16] Telebrás, Eletronet e PNBL (180) - Análise de Clóvis Marques sobre a reativação da Telebrás
http://www.wirelessbrasil.org/bloco/2010/fevereiro/fev_51.html
Visitado em 11/03/2010

[17] "Telebrás no PNBL é a garantia da universalização da banda larga"
http://www.vermelho.org.br/noticia.php?id_secao=6&id_noticia=118549
Visitado em 11/03/2010

[18] "Telebrás, Eletronet e PNBL (211) -"Plano de banda larga pode não sair do papel este ano e Telebrás despenca no pregão" + "Você é acionista e não sabe?" + Msg de Clóvis Marques sobre a audiência pública no Senado"
http://www.wirelessbrasil.org/bloco/2010/marco/mar_33.html
Visitado em 11/03/2010

terça-feira, 2 de março de 2010

O que é Traffic shaping, afinal?

Rodrigo Filipe Silva Carramate


Traffic shaping [1], ao contrário do que muitos pensam, não é apenas uma forma de os provedores comerciais limitarem taxas de transferência dos chamados heavy users, que transferem muita informação pela Internet. É bem verdade que há inúmeros relatos de usuários que dizem ter sido afetados pelo traffic shaping, sobretudo daqueles adeptos do peer-to-peer (como eMule e BitTorrent) [2], mas esta prática questionável por parte dos provedores está longe de ser a única utilidade do shaping, que, quando bem utilizado, pode tornar as redes muito mais produtivas.

Do inglês shaping (em português, formatar ou modelar), o nome já elucida bastante a finalidade do procedimento, que nada mais é do que modelar a banda da rede, ou ainda atribuir um perfil de controle de banda à rede.

O leitor pode, então, se perguntar porque deveria querer introduzir limites em sua rede, quando, na verdade, quer maximizar sua capacidade. Para responder a esta pergunta devemos nos lembrar que os diferentes tipos de tráfego na rede também têm diferentes prioridades: ninguém ficaria incomodado de enviar um e-mail e este chegar um ou dois segundos mais tarde ao seu destinatário. Por outro lado, se esta pessoa estiver em uma videoconferência com o seu chefe em Miami e tiver que esperar os mesmos dois segundos entre cada palavra que ele diz, a situação tende a ficar bastante desagradável. Os dois casos citados explicam um dos benefícios do uso do traffic shaping: a priorização de tráfego, que tem por objetivo atrasar a transmissão de pacotes menos urgentes a fim de entregar mais rapidamente outros mais prioritários, esta característica do traffic shaping constitui um dos mecanismos de QoS [3], ou a tentativa de garantir diferentes níveis de serviço da rede para diferentes aplicações dela.

Uma outra vantagem do uso do traffic shaping é a quantização de banda por tipo de tráfego. Para explicar a necessidade desta utilização vamos supor que esteja em seu escritório, a poucas horas da entrega daquele relatório essencial para a conclusão do projeto, quando misteriosamente a rede, tão necessária para o término do relatório, demora minutos para carregar uma simples página da Internet. Por outro lado, no computador ao lado seu colega faz download de músicas através de torrents a alta taxa de transferência. Há grandes chances de as conexões criadas pelo seu colega estarem utilizando toda a banda disponível para a Internet na rede do escritório. Obviamente nesta situação exagerada, poderíamos simplesmente bloquear a utilização de torrents na empresa, mas suponhamos que, por alguma razão, seu uso seja necessário.

Desta forma seria necessário limitar a taxa de transferência concedida a esse tipo de tráfego, o que se trata de uma outra utilidade do traffic shaping. Com as taxas para o download e upload de torrents limitadas, a navegação na Web certamente ficaria mais rápida.

Outra face do traffic shaping é o agendamento de perfis, no qual o gerente da rede, por meio de ferramentas adequadas ao seu sistema operacional, implementa o disparo automático de configurações pré-programadas, desta forma podendo adequar as quantidades de banda às necessidades específicas dos vários horários.

No caso de cidades digitais [4] temos uma grande variedade de usos, devido à complexidade das redes. Podemos, por exemplo, imaginar uma cidade em que tenha sido projetada uma rede para atender tanto a repartições da prefeitura quanto à população em geral. Uma regra de traffic shaping apropriada a essa estrutura seria reservar uma quantidade razoável de banda às repartições durante os seus respectivos horários de funcionamento. Esta medida preveniria o uso de todos os recursos pela população, evitando limitações na conectividade da prefeitura. Do mesmo modo, após o horário de funcionamento poderia se estabelecer uma regra onde essa banda fosse novamente disponibilizada à população, promovendo melhora na conexão a ela oferecida.

Podemos, então, entender o traffic shaping como um conjunto de regras planejado a fim de otimizar a rede e moldá-la a necessidades específicas. Infelizmente há quem o utilize para lesar consumidores. Por exemplo, proibindo tráfegos como Peer-to-Peer, ou a telefonia pela Internet, chamada VoIP [5].

Referências

[1] Traffic shaping
Visitado em 26/02/2010

[2] Quality of Service
Visitado em 26/02/2010

[3] Peer_to_peer
Visitado em 26/02/2010

[4] O que é Cidade Digital?
Visitado em 26/02/2010

[5] VoIP

Visitado em 26/02/2010

Saiba Mais

Controle de tráfego

QoS

segunda-feira, 22 de fevereiro de 2010

Plano Nacional de Banda Larga: primeiras ideias

Hilton Garcia Fernandes



No Brasil, o serviço de acesso à Internet com banda larga não é dos melhores do mundo. Comparado com países similares em desenvolvimento econômico, a banda larga brasileira é mais cara, mais sujeita a falhas e até mesmo tem menor capacidade média do que aquela destes países [1]. Comparações com países europeus ou asiáticos são ainda mais desfavoráveis [2].

A inferioridade brasileira se torna assombrosa à medida que aumenta a distância do eixo Rio-São Paulo [3].

Hoje é fato bem conhecido que a Internet é fator de desenvolvimento econômico e pessoal [4]. Ao ponto de que alguns pesquisadores associam muito fortemente a exclusão digital (dificuldade de usar computadores e Internet) com a exclusão social, a dificuldade de ter acesso ao mercado de trabalho e consumo [5].

Por isso, o Plano Nacional de Banda Larga, ou PNBL [6], é tão importante. Ele é uma iniciativa ampla para reduzir tanto nossa inferioridade (comparada à de outros países), como para reduzir disparidades regionais. Além de sua importância por si, o PNBL interfere em vários pontos do atual modelo de banda larga, o que gera um número infindável de polêmicas [7], sobre o modelo de negócios a ser adotado.

Diante das polêmicas e da importância para o futuro do país, o PNBL merece toda a atenção. Por esta razão, iniciamos com este uma série de entradas, ou posts, no blog Tecnologias sem Fio, para cobrir aspectos relevantes do PNBL.

Como a proposta do PNBL está sendo esperada para o início de março [6], vale aguardar sua formalização e iniciar a sequência pelo lado técnico, o que vai permitir a uniformização dos termos, uma vez que vários dos termos adotados na atual discussão têm significado pouco padronizado, havendo quem os interprete de forma diferente daquela que tem sido usada nas discussões sobre o PNBL.

Em primeiro lugar, vale a pena definir os termos backbone, backhaul e last-mile, pois são chave no desenho das propostas em discussão. Uma forma intuitiva é fazer analogia entre a distribuição de Internet e a distribuição de água tratada. Há grandes adutoras que levam a água de represas, como a Billings a pontos distantes delas. Essas adutoras são tão grandes que sua instalação tende a ser anunciada na imprensa [8].

Para distribuir água até a casa das pessoas, é feita a derivação de adutoras menores. Quem quer que tenha observado escavações nas ruas, terá visto que há adutoras de tamanhos inferiores, que levam a água a prédios. Por sua vez, nos prédios, os canos sofrem outro estreitamento, então chegam à casa das pessoas.

Em termos de terminologia de distribuição de Internet, as grandes adutoras poderiam ser chamadas de core network (ou rede principal), ou backbone [9]. As tubulações que passam pela rua são chamadas de edge network [10], ou "rede periférica". O movimento de informações que é feito nela é chamado de backhaul [10]. E, por último, os canos mais finos que levam a água até a casa das pessoas são chamados de last mile [11].

Estes são termos muito mais práticos do que teóricos e sua definição não é unânime. Por exemplo, Há quem os defina igualando backhaul à movimentação de dados no backbone [12].

Tanto o backbone quanto as edge networks costumavam ser de uma única companhia. Estes são pontos que o PNBL está tentando mudar, em prol de uma maior concorrência na distribuição de Internet, o que, espera-se, deve diminuir os custos e aumentar a qualidade da Internet brasileira.

No próximo post, ou entrada, do blog Tecnologias sem Fio, será feito um maior detalhamento dos modelos de negócios que a discussão do PNBL está fazendo surgir. E, pari passu [13], será mais detalhado o modelo conceitual, ou a arquitetura, da rede mundial de computadores, a Internet.

Referências




[1] Banda Larga: Brasil perde vez na América Latina

Visitado em 19/02/2009


[2] Banda larga no Brasil é 35ª em ranking com 45 países

Visitado em 19/02/2009


[3] O custo da banda larga

Visitado em 19/02/2009


[4] Federal Communications Commission FCC 09-93 Before the Federal Communications Commission Washington, D.C. 20554 In the Matter of Preserving the Open Internet Broadband Industry Practices

Visitado em 19/02/2009


[5] SILVEIRA, Sérgio Amadeu da. Inclusão digital, software livre e globalização contra-hegemônica.

Visitado em 19/02/2009


[6] Telebrás, Eletronet e PNBL (162) - "Reunião do PNBL": Análise de Clóvis Marques

Visitado em 19/02/2009


[7] Telebrás, Eletronet e PNBL (170) - Ainda a "Reunião do PNBL" + O "Anãozinho" + Resumo sobre o FUST + A Lei do FUST (íntegra)

Visitado em 19/02/2009


[8] ADUTORAS

Visitado em 19/02/2009


[9] Internet backbone

Visitado em 19/02/2009


[10] Backhaul (telecommunications)

Visitado em 19/02/2009


[11] Last mile

Visitado em 19/02/2009


[12] Appendix 7: Glossary | Report on Commerce Commission's Local Loop and Fixed PDN Unbundling Investigation

Visitado em 19/02/2009


[13] Pari passu

Visitado em 19/02/2009

quarta-feira, 17 de fevereiro de 2010

Trânsito e redes mesh

Fábio Damião Barbosa Ricci

Em São Paulo, uma pesquisa do Instituto Datafolha [1] revelou que o paulistano perde, em média, 109 minutos por dia no trânsito. Ao todo, 23% dos paulistanos perdem mais de duas horas por dia no trânsito.

Muitos fatores podem contribuir para os congestionamentos, que ocorrem principalmente quando o número de automóveis ultrapassa a capacidade de uma via. O principal fator de origem deste problema é o tempo ocioso que um veículo permanece nas ruas, quando encontra um semáforo sinalizando parada enquanto não há veículos trafegando na via em que se deseja atravessar. Através do controle adaptativo de tempo de sinalização semafórica, é possível otimizar o fluxo de trânsito sem a necessidade de acompanhamento do ritmo de mudanças de condições de tráfego nas vias, promovendo um menor acúmulo de carros com a evolução do tempo.

O projeto SAWIM, desenvolvido pelo autor durante trabalho de conclusão de curso [2] é uma tentativa de resolver esses problemas através de comunicação através por redes sem fio em malha [3], ou Wi-Mesh.

Semáforos têm vantagens enormes como torres para comunicação sem fio: são da prefeitura, o que minimiza custos de aluguel e têm acesso livre uns aos outros. Afinal, os motoristas têm que poder ver os semáforos que, por isso são altos e têm visão desimpedida por obstáculos ao longo das pistas.

Por esta razão, semáforos tem sido usados em cidades digitais como torres para instalação de APs [4] para a rede mesh.

Em poucas palavras, o hardware desenvolvido para o projeto para controlar um semáforo pode ser descrito como:

  • um AP que vai fazer comunicação com outros APs da rede mesh, além de conter software específico para sincronização de APs. O software original do AP (seu firmware) é trocado por um Software Livre que o controla, chamado Freifunk [5]. Sobre este sistema, uma variação do GNU/Linux é que são desenvolvidos softwares específicos para controle de APs;
  • um módulo para controlar o semáforo, ligado ao AP através de de TCP/IP, o que lhe permite passar ao semáforo comandos do AP. Também é capaz de interagir com o sensor de presença e repassar informações dele ao AP;
  • um módulo adicional de presença, que comunica ao módulo de controle o número de carros passando -- normalmente implementado através de sensores no solo. É possível que nem todos módulos do SAWIM possam contar com esse recurso. Neste caso, os módulos do sistema que contam com esse recurso o repassam aos outros.

Tanto AP quanto o módulo de controle estão protegidos das intempéries por uma caixa hermética.

Um ponto importante no projeto é que a tolerância a falhas das redes mesh [3] favorece o projeto, uma vez que semáforos são aplicação de missão crítica.

Uma visita à Transpoquip [6] feira específica sobre trânsito, mostrou que os fabricantes se interessariam muito por uma solução similar àquela do SAWIM. Apesar de questionamentos sobre a maturidade do software para controle dos semáforos -- o SAWIM estaria sendo comparado com sistemas com dezenas de anos de desenvolvimento --, os técnicos das empresas se mostraram interessados na tolerância à falhas da rede mesh.

Uma das razões para isso foi observada recentemente: devido às chuvas, os semáforos da região de Pinheiros deixaram de funcionar. Aparentemente, a água entrou nos fios de comunicação e controle de semáforos.

Edição: Hilton Garcia Fernandes, a partir de texto em [2]

Referências

[1] Paulistanos apóiam transporte público, segundo o Datafolha
Visitado em 12/02/2010

[2] Fabio Damião Barbosa Ricci, Sistema integrado WiMesh para controle, automação semafórica e comunicação com Internet (Sigla: SAWIM) Trabalho de conclusão de curso apresentado na Escola Politécnica da Universidade São Paulo, em 9 de Outubro de 2009. São Paulo, SP, Brasil

[3] Redes mesh e grafos
Visitado em 12/02/2010

[4] Municipal Wireless Broadband and the Digital Community Report — City of Boulder, Colorado October 12, 2006
Visitado em 12/02/2010

[5] Freifunk
Visitado em 12/02/2010

[6] TranspoQuip Latin America 2009
Visitado em 12/02/2010

sexta-feira, 5 de fevereiro de 2010

Apresentação do gvpr

Ricardo Andrade Dalla Bernardina



DOT [1] é uma linguagem que permite definir grafos [2]. Ela foi usada inicialmente no programa de mesmo nome dot, hoje parte do pacote graphviz [3], que tem muitas ferramentas para visualização e manipulação de grafos.

Um exemplo de arquivo para construção de grafos é explicado aqui. A primeira coisa que deve ser feita é dar uma nome para o grafo, e depois de escolhido (supondo que seja g para o exemplo ) colocar:

graph g {}


Tudo que virá depois no arquivo estará dentro das chaves após graph g.

Após isso é necessário criar os nós e para isso escrevemos:
X [label="node"]; -- sendo X o identificador do nó e node o nome do nó.

Podem ser incluídos tantos nós quanto forem necessários.

Após isso, para se colocar as arestas deve-se escrever os identificadores dos nós que estão ligados pela aresta (não está sendo considerado grafo dirigido) e entre eles colocar "--"; isto é: dois hífens seguidos. Por ex.: X -- Y; é a aresta que conecta os nós X e Y.

Após isso é só salvar o arquivo, rodar um programa de visualização como o dot [4] e o grafo estará pronto -- por exemplo, na forma de uma imagem JPEG.

Abaixo encontra-se uma figura do código [5]:
41.jpg

No pacote graphviz encontra-se a ferramenta gvpr [6], muito poderosa, mas pouco conhecida, que permite manipular e -- de forma geral -- reescrever grafos.

Agora será mostrada uma pequena apresentação do programa descstat.g [7], que usa a ferramenta gvpr para calcular o maior grau e menor grau de um grafo qualquer, além de calcular a média, variância, desvio padrão e coeficiente de variação dos graus dos nós dos grafos.

Antes de tudo vale lembrar que o gvpr só interpreta grafos na linguagem DOT, sendo inútil para outras linguagens de definição de grafos. No ambiente gvpr, é definida uma linguagem de programação, que possui os seguintes elementos

  • BEGIN, que é realizado apenas uma vez no começo da programa;

  • END que é realizado apenas no final do programa e uma única vez também;

  • existe também o BEG_G, que é realizado para todos os grafos no começo de cada um;

  • e o END_G, que do mesmo modo é realizado para todos os grafos, só que no final deles;

  • por último tem o N que entra em todos os nós do grafo.



BEG_G e END_G devem estar entre BEGIN e END. Por sua vez, N deve estar entre BEG_G e END_G. A sintaxe de comandos e declarações é bastante similar, quando não igual, àquela do C [8].

Assim no programa descstat.g foram declaradas as variáveis no BEGIN, os valores delas foram inicializados no BEG_G, pois eles devem ser reinicializados no início de cada grafo. Dentro do N são totalizados os graus de todos os nós de cada grafo. O grau de um nó é obtido pela expressão $.degree, onde $ significa o nó atual e degree é o grau do nó. Por sua vez, $G significa o grafo atual. Esses graus são necessários para os cálculos que são o objetivo do programa. Todos eles são finalizados no END_G, que também apresenta os valores na tela. O trecho em N é apresentado a seguir:
N {
if ($.degree > maxd) {
maxd = $.degree;
}

if ($.degree < mind) {
mind = $.degree;
}

mean += $.degree;
var += $.degree * $.degree;
}


Referências



[1] The DOT Language
Acessado em 29/01/2010

[2] Teoria dos grafos
Acessado em 29/01/2010

[3] Graphviz - Graph Visualization Software
Acessado em 29/01/2010

[4] Drawing graphs with dot
Acessado em 02/02/2010

[5] 4.dot
Acessado em 29/01/2010

[6] gvpr(1) - Linux man page
Acessado em 29/01/2010

[7] descstat.g
Acessado em 02/02/201

[8] C (linguagem de programação)
Acessado em 02/02/2010