Archive for março \26\UTC 2010

Conectividade de redes mesh

26 de março de 2010

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 os 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 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, a 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
https://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
https://tecnologiassemfio.wordpress.com/2010/02/05/apresentacao-do-gvpr/
Acessado em 25/03/2010

Licença Creative Commons
Esta obra foi licenciada com uma Licença Creative Commons – Atribuição – Partilha nos Mesmos Termos 3.0 Não Adaptada.

Yet Another Asterisk Tutorial

19 de março de 2010

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:

# 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 ramais 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) As linhas seguintes devem ser adicionadas ao 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:

# 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 name, coloque qualquer um, pois é um parâmetro apenass para o Ekiga, e no timeout algum valor de tempo em segundos, como por exemplo 60. Agora pressione Ok e pressione 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:. Pressione a tecla 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 conferências etc. Caso haja interesse por 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?
https://tecnologiassemfio.wordpress.com/2010/02/26/o-que-e-traffic-shaping-afinal/
Visitado em 23/03/2010

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

[7] Benchmark
https://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

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

11 de março de 2010

Hilton Garcia Fernandes

O debate sobre o Plano Nacional de Banda Larga, ou PNBL [1], 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 [2].

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 [1]. 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].

Nas próximas postagens desta série serão discutidos os planos nacionais dos EUA. Malásia e África do Sul.

Referências

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

[2] 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

[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

Licença Creative Commons
Esta obra foi licenciada com uma Licença Creative Commons – Atribuição – Partilha nos Mesmos Termos 3.0 Não Adaptada.