Estudio e Implementación de una Herramienta para Transmitir Voz

Anuncio
Artículos científicos – Ciencias de la Computación
Estudio e Implementación de una Herramienta
para Transmitir Voz en una Red Ethernet
Nelson Darío Fox Escobar
Facultad Politécnica - UNE
Ciudad del Este, Paraguay
[email protected]
y
David Crisóstomo Villalba Peralta
Facultad Politécnica – UNE
Minga Guazú, Paraguay
[email protected]
Resumen
El objetivo principal de este trabajo es integrar dos tecnologías, VoIP y Ethernet, en
implementación de una herramienta para la transmisión de voz a través de una red Ethernet.
el desarrollo e
Se entiende por VoIP (Voice Over Internet Protocol – Voz sobre Protocolo de Internet) a la tecnología que
permite la transmisión de la voz a través de redes IP en forma de paquetes de datos.
Por otra parte, la red Ethernet, es la tecnología imperante en materia de conectividad. Es la tecnología de red de
área local más extendida en la actualidad debido fundamentalmente a su alto ancho de banda y su bajo precio. Se
presentan algunos aspectos referentes a este medio; así mismo, se expone una breve reseña histórica, sus
características técnicas más importantes y su mecanismo de detección de colisiones, para el usuario del protocolo
CSMA/CD.
El programa desarrollado en este trabajo permite enviar y recibir datos de voz a través de la red. Finalmente, se
presentan los resultados obtenidos en las pruebas experimentales realizadas con la herramienta y sus
conclusiones.
Palabras clave: VoIP, Ethernet, CSMA/CD.
1. Voz sobre IP
La Voz sobre IP (VoIP, Voice over Internet
Protocol) es una tecnología que permite la
transmisión de la voz a través de redes IP en forma
de paquetes de datos [1]. La Telefonía IP es una
aplicación inmediata de esta tecnología, de forma
que permite la realización de llamadas telefónicas
ordinarias sobre redes IP u otras redes de paquetes
utilizando un PC, gateways y teléfonos estándares.
En general, servicios de comunicación - voz, fax,
aplicaciones de mensajes de voz - que son
transportados vía redes IP, en lugar de redes
telefónicas convencionales.
Los pasos básicos que tienen lugar en una llamada
a través de Internet son [1]: conversión de la señal
de voz analógica a formato digital y compresión de
la señal a protocolo de Internet (IP) para su
transmisión. En recepción se realiza el proceso
inverso, a fin de recuperar la señal de voz
analógica.
22
Artículos científicos – Ciencias de la Computación
Cuando se realiza una llamada telefónica por IP, la
voz se digitaliza, se comprime y se envía en
paquetes de datos IP. Estos paquetes se envían a
través de Internet entre las personas que están
hablando. Cuando alcanzan su destino, son
ensamblados de nuevo, descomprimidos y
convertidos en la señal de voz original.
Fundamentalmente, una de las más importantes
ventajas comparativas, que impulsa el crecimiento
de la tecnología de VoIP, es la reducción de costos
que
trae
aparejada,
especialmente
para
corporaciones con grandes redes de datos. La
posibilidad de realizar comunicaciones de voz
empleando la nube de Internet, sin un costo
adicional al que se paga por la conexión a la Red,
permite una reducción muy importante en las
llamadas interurbanas e internacionales, sobre todo
cuando se realizan sin interconexión de telefonía
fija. Además del ahorro en el costo de las llamadas
ya mencionado, llevar el tráfico de voz sobre la red
de datos, en un edificio o un conjunto de edificios
corporativos, permite la integración de las
aplicaciones de voz y datos, con el consiguiente
beneficio en la utilización de aplicaciones tales
como e-mail y voice mail integrados,
videoconferencia, y distribución inteligente y
automática de llamadas, entre otras [2].
2. Red Ethernet
Se enfoca a las redes Ethernet por ser la tecnología
imperante en materia de conectividad. Es la
tecnología de red de área local más extendida en la
actualidad debido fundamentalmente a su alto
ancho de banda y su bajo precio [3].Fue diseñado
originalmente por Digital, Intel y Xerox, por lo
cual, la especificación original se conoce como
Ethernet DIX. Posteriormente en 1.983, fue
formalizada por el IEEE1 como el estándar
Ethernet 802.3 [4].
El término “Ethernet“ proviene de la antigua
creencia, hoy día abandonada, de que no existe el
vacío en el mundo, sino que él estaba lleno de una
sustancia llamado Éter (“ether” en inglés), que era
la sustancia que permite conectar entre sí las cosas.
Por este motivo, la red que una a computadores,
por analogía, se bautizó como “Ethernet “ [3].
1 IEEE: Acrónimo de Institute of Electrical and
Electronics Engineers [Instituto de ingenieros
electricistas y electrónicos] Instituto de
ingenieros
norteamericanos
que
dicta
recomendaciones y normalizaciones con ámbito
internacional.
Toda red Ethernet es una red del tipo Banda Base
que ocupa código de línea Manchester2 (nivel
físico) y por ello sólo un canal puede trasmitir a la
vez usando todo el ancho de banda del medio.
Cuando dos o más estaciones transmiten al mismo
tiempo, ocurre una superposición de señales que
interfieren todas las comunicaciones causando
errores de transmisión a todas las estaciones [3].
Por esta razón, existe un protocolo (o algoritmo)
que permite coordinar todas las estaciones para
que ocupen el canal de forma eficiente. Este
protocolo se llama CSMA/CD, cuya sigla significa
lo siguiente [5]:
1. “Carrier Sense” (CS) significa “escuchar
antes de transmitir”, lo cual implica que una
estación debe detectar que el canal
(ethernet) está en silencio antes de empezar
a trasmitir (no necesariamente al mismo
tiempo).
2. “Multiple Access” (MA) significa que
puede
haber
múltiples
estaciones
conectadas a este canal, por lo que ellas
“compiten“para ocuparlo.
3. “Collision Detection” (CD) significa que en
caso de que ocurra una colisión, cada
estación la detecta. Una colisión ocurre
cuando 2 estaciones detectan silencio y
ambas empiezan a trasmitir.
El protocolo CSMA/CD, en sus diferentes
versiones, transmite paquetes de voz con cierta
calidad.
3. La herramienta
Se trata de un software pequeño, perfectamente
integrado con su entorno, que consume muy pocos
recursos y que no requiere un sistema
especialmente completo para su utilización.
Además, presenta al usuario una interfaz directa,
sencilla, amigable y minimalista, diseñada con el
objetivo de su uso eficiente y continuo.
En este apartado se exponen los detalles técnicos
referentes a su desarrollo.
Desarrollo de la herramienta.
En el presente trabajo se propone el desarrollo y la
2 Manchester: Codificación que resuelve el
problema de la sincronización, generando
transiciones con independencia de la corriente
de bits emitida.
23
Artículos científicos – Ciencias de la Computación
implementación de una herramienta, enfocado
hacia la realización de llamadas (PC a PC) de voz
sobre IP (VoIP). Para llevar a cabo este cometido,
se plantea desarrollar una interfaz gráfica basada
en componentes existentes para la transmisión de
paquetes de voz, lo que produce como resultado un
paquete de software totalmente integrado en el
escritorio tanto a nivel estético, como funcional
(modo de operación, compilado y distribución).
Siendo estos los requerimientos básicos exigidos
para la elaboración, se debe plantear en primer
lugar la plataforma elegida para el desarrollo de la
solución. A este respecto se ha resuelto escoger el
sistema Windows, por varios motivos: en primer
lugar, por ser el sistema operativo más difundido y
de fácil manejo; en segundo lugar, por la enorme
cantidad de herramientas de desarrollo o
componentes disponibles; y por último, por ser
considerado este sistema operativo como el
entorno natural de los programadores de este
trabajo.
Asimismo, mención aparte merece la seguridad,
que es uno de los factores fundamentales de este
lenguaje, pues aporta un gran valor añadido; por
sobre todas las cosas, se reduce considerablemente
el tiempo necesario para el desarrollo de
aplicaciones, y existe gran cantidad de códigos o
componentes disponibles en Internet.
Como se ha dicho anteriormente, para desarrollar
el software, se ha escogido el lenguaje de
programación Delphi (versión 6), para el cual
existe el componente “Remko VoIP” (software
libre) desarrollado por Remko Weingarten
Remko_VoIP@prinsen_gracht.org), que cuenta
con la capacidad de realizar la transmisión de voz a
través de una red, reduciendo ampliamente la
complejidad del desarrollo de la herramienta; por
lo tanto, el desarrollo se centrará en el diseño de la
interfaz.
La librería visual de componentes (VCL).
Plataforma de desarrollo.
Se refiere a la plataforma de desarrollo, es decir,
qué lenguaje de programación y que compilador se
ha utilizado y los motivos de la elección. En este
caso, la primera decisión que se ha tomado ha sido
la de usar un lenguaje de programación orientado a
objetos
(POO):
características
como
el
encapsulamiento de las funcionalidades en objetos
o la herencia simplifican el código y lo hacen más
ordenado, sobre todo si se trata de un proyecto
mediano. Por lo tanto, se ha decidido usar POO,
aunque tal vez se pudiese argumentar una teórica
falta de rendimiento; aunque ello pierde sustento
al evaluar las ganancias conseguidas en la
estructuración del código [4].
Creado por Borland, el lenguaje de programación
Delphi se está convirtiendo, gracias a la
popularidad que ha adquirido Internet, en uno de
los grandes lenguajes, no solo del presente sino
también del futuro, para la programación de
aplicaciones de red. Se trata de un lenguaje
orientado
a
objetos,
presenta
ciertas
simplificaciones con respecto a este tipo de
lenguajes. Basado en Pascal (lenguaje nativo),
elimina las características menos utilizadas y
complejas, sin perder potencia.
Es un lenguaje compilado que se ejecuta sobre
cualquier máquina con el SO Windows. Gracias a
esta característica el código es portable y no
requiere ningún tipo de modificación en el paso de
una máquina a otra.
¿Qué son componentes? Los componentes son las
piedras angulares de la programación en Delphi.
Aunque la mayoría de los componentes representan
partes visibles de la interfaz de usuario, existen
también componentes no visuales, como por
ejemplo los objetos Timer y Database [6].Los
componentes hacen fácil la programación en
Delphi. En vez de tener que operar a nivel de
unidades, el usuario de un componente
simplemente tiene que pulsarlo con clic y situarlo
en la posición deseada de su formulario. Eso es
todo: Delphi se encarga de lo demás.
Todos los componentes forman parte de la
jerarquía de objetos denominada Visual
Component Library (VCL). Cuando se crea un
nuevo componente, éste se deriva a partir de un
componente existente (bien sea TComponent o
algún otro más especializado) y se añade a la VCL.
Anatomía de un
métodos y eventos.
componente.
Propiedades,
Como ya se ha mencionado, un componente es un
objeto, y como tal, consta de código y datos. Pero
al hacer referencia a estos no serán utilizados estos
términos, sino que se hablará de propiedades y
métodos, así como de eventos [6].
Propiedades
Las propiedades proporcionan al usuario del
24
Artículos científicos – Ciencias de la Computación
componente un fácil acceso al mismo. Al mismo
tiempo, permite al programador del componente
"esconder" la estructura de datos subyacente.
Entre las ventajas de utilizar propiedades para
acceder al componente se pueden citar:
Las propiedades están disponibles en tiempo de
diseño. De este modo el usuario del componente
puede inicializar los valores de las propiedades sin
necesidad de escribir una sola línea de código.
Las propiedades permiten la validación de los
datos al mismo tiempo de ser introducidas. Así se
pueden prevenir errores causados por valores
inválidos.
Aseguran que desde el primer momento las
propiedades tendrán un valor válido, y evitan el
error común de hacer referencia a una variable que
no ha sido convenientemente inicializada.
Figura 1: El componente instalado en la paleta de
Delphi.
Al crear una nueva aplicación, Delphi crea un
formulario (objeto Tform), que es el programa
principal donde se deben insertar los componentes
y los objetos que se emplearán en la aplicación.
Para que el formulario tenga la capacidad de
realizar una conexión VoIP, se insertan en el
formulario los componentes Traycomp y Telefoon
desde la paleta de componentes Remko, véase la
Figura 2.
Eventos
Los eventos son las conexiones existentes entre un
determinado suceso y el código escrito. Así, por
ejemplo, ante el suceso clic del ratón se podría
mostrar un mensaje en pantalla. Al código que se
ejecuta cuando se produce un determinado evento
se le denomina manejador de eventos (event
handler) y normalmente es el propio usuario del
componente quien lo escribe. Los eventos más
comunes ya forman parte de los propios
componentes de Delphi (acciones del ratón,
pulsaciones de teclado...), pero es también posible
definir nuevos eventos.
Figura 2: Los componentes Traycomp y Telefoon
en el formulario.
Así, el formulario está capacitado para realizar una
conexión VoIP. Ahora se debe crear el acceso para
las variables externas (dir. IP, etc.) que es la vía de
acceso de los usuarios al sistema, para lo cual, se
crea un visor de llamadas, véase la Figura 3.
Métodos
Los métodos son los procedimientos y/o funciones
que forman parte del componente. El usuario del
componente los utiliza para realizar una
determinada acción o para obtener un valor
determinado al que no se puede acceder por medio
de una propiedad. Puesto que requieren ejecución
de código, los métodos sólo están disponibles en
tiempo de ejecución.
Interfaz Gráfica
Figura 3: Visor para las llamadas entrantes
El primer paso consiste en la instalación del
componente que se encarga de realizar la
transmisión de la voz entre PC´s, que luego de
estar instalado aparece en la paleta de componentes
de Delphi, tal como se ilustra en la Figura 1.
El visor consiste en una figura inserta en el objeto
TImage disponible en la paleta Additional.
Está organizado, básicamente, en tres sectores. El
primero, situado en la parte superior, donde se
insertan dos objetos TLabel en los que se muestran
25
Artículos científicos – Ciencias de la Computación
la fecha y la hora del sistema. El segundo, ubicado
en el centro del visor, donde se desplegan los datos
de los contactos que intervienen en la
comunicación y que consiste en un objeto TEdit.
El tercero, situado hacia abajo, para el cual se
desarrolló un procedimiento que posibilita usar una
libreta de direcciones para almacenar las
direcciones de las personas con las que más se
contacta. Para eso se inserta un objeto TListview
asociado a un archivo llamado “contactos.txt”, que
se crea la primera vez que se ejecuta la aplicación,
que es un archivo txt que guardará el nombre del
contacto, su dirección IP y un número asociado.
Para la carga del TListview que muestra la libreta
de direcciones se crea una caja de diálogo que será
llamada desde un botón (agregar). Este consiste en
un objeto TPanel, en el que está inserto 3 Tlabels,
3 TEdits que son usados para la carga de los datos
(dir.IP, nombre, nro) y dos TButtons para la
confirmación de las cargas y el cierre del mismo.
Este procedimiento es llamado desde un TButon
insertado en el formulario, véase la Figura 4.
Figura 5: Objetos TButons insertos en el
formulario.
Otro de los objetos utilizados en la interfaz gráfica
son los temporizadores (objetos timer, Figura 6).
El primero de ellos es utilizado para la muestra de
la hora del sistema en el visor. Para ello, la
propiedad Interval de este objeto es configurada a
1000ms, que es el intervalo en que será capturada
la hora del sistema con la función TimeToStr
(Time) disparado en el evento Timer y que será
mostrado en la propiedad text del Edit3.
Los demás son utilizados para el control de la
ejecución de los sonidos de avisos de llamadas
entrantes que se explican en apartados siguientes.
Figura 4: TPanel para la carga de datos.
Se insertan unos botones (TButons) que son usados
como una alternativa para el ingreso de los
números para la realización de las llamadas. Como
se puede observar en la Figura 5, además, se
insertan los botones con los procedimientos para
aceptar, rechazar o terminar una llamada, los
cuales se explican en el siguiente apartado.
Otro de los objetos utilizados en la interfaz gráfica
son los temporizadores (objetos timer, Figura 6).
El primero de ellos es utilizado para la muestra de
la hora del sistema en el visor. Para ello, la
propiedad Interval de este objeto es configurada a
1000ms, que es el intervalo en que será capturada
la hora del sistema con la función TimeToStr
(Time) disparado en el evento Timer y que será
mostrado en la propiedad text del Edit3.
Figura 6: Los objetos Timer utilizados en el
formulario.
Una vez configuradas todas las propiedades (en
tiempo de diseño) de los objetos utilizados en el
formulario, tales como los colores de las fuentes,
los fondos, si son visibles o no, éstas quedan como
se aprecia en la figura 7.
26
Artículos científicos – Ciencias de la Computación
usuario cuando existe una llamada realizada desde
un equipo remoto, es disparado en el evento
OnCalled del componente Telefoon. Para realizar
el aviso de llamadas entrantes fueron creados dos
métodos o procedimientos: (1) ejecuta un sonido
en el parlante del kit multimedia y (2) ejecuta unos
pitidos en el parlante de la placa madre. En el
primer método, para reproducir un sonido WAV,
se puede usar un objeto TMediaPlayer, aunque se
obtiene mayor rapidez, y con más facilidad,
llamando a la función API sndPlaySound
(declarada en la unidad mmsystem). Por ejemplo:
Figura 7: Interfaz de la herramienta en etapa de
desarrollo.
Una vez terminada la interfaz en tiempo de
ejecución se la puede apreciar como en la Figura 8.
Figura 8: Interfaz de software terminado en
tiempo de ejecución.
Establecimiento de Llamada
Este procedimiento debe realizar una llamada de
audio. Mediante esta opción se puede iniciar una
sesión, que es identificada por su dirección IP. Al
llamar a este método en la interfaz gráfica, ésta
realizará los procedimientos oportunos para
desplegar los datos de los contactos que
intervienen en la llamada.
Para la realización de una llamada fueron creados
dos métodos: (1) introduciendo el número asociado
a la dirección IP del contacto y (2) pulsando doble
clic en el nombre del contacto.
En ambos casos realiza la búsqueda en el archivo
contactos.txt para asociar el número del contacto
con su dirección IP. Luego realiza la conexión
cambiando la propiedad telefoon1.placecall( ) con
la dirección IP remota a que se dirige la llamada.
Aviso de llamadas entrantes.
uses MMSystem;
procedure TForm1.Button1Click(Sender:
TObject);
begin
sndPlaySound('C:\Windows\ring.wav',
SND_NODEFAULT Or SND_ASYNC Or
SND_LOOP);
end;
procedure TForm1.Button2Click(Sender:
TObject);
begin
sndPlaySound(nil, 0); // Detiene el
sonido
end;
Pero en este situación el archivo wave (en este
caso ring.wave) debe estar indefectiblemente en el
path c:\windows……Entonces, para evitar ese
inconveniente, se inserta un archivo de onda
(wave) ( en la cantidad deseada ) en el ejecutable
y se reproducen desde allí.
Primero se necesita crear un archivo de recursos
(.RES). Para hacerlo, se crea un archivo .RC,
llamado sonidos.rc:
wave c:\windows\ring.wav
Luego es compilado con el compilador de recursos
(BRCC32.EXE en el directorio Delphi\Bin) y así
obtuvo un archivo llamado sonidos.res que se
puede cargar en el proyecto con la directiva $R.
Para reproducir el sonido directamente se llama
PlaySound (en vez de sndPlaySound) con el
indicador SND_RESOURCE:
uses MMSystem;
{$R sonidos.res}
Playsound('tada',hInstance,SND_resource
SND_ASYNC);
OR
$R es una "directiva del compilador". Una
directiva es un comando para el compilador.
Cuando el compilador encuentra la directiva {$R
*.RES} un archivo de "recursos" con el mismo
nombre del programa (pero con extensión RES) es
encadenado junto con el programa.
Este procedimiento, cuyo cometido es alertar al
27
Artículos científicos – Ciencias de la Computación
Para el segundo método, se ejecutan directamente
unos pitidos en el parlante de la placa madre, como
un sonido de alerta, utilizando la función
Windows.Beep() cuya sintaxis es como sigue:
Windows.Beep( Frecuencia, Duración ), siendo
frecuencia una variable numérica expresada en ms
con que sonará el pitido y la duración una variable
numérica indicando la duración en ms de cada
pitido.
Aceptar una llamada.
(RemkoVoIP) a configurar y los principales
métodos y eventos del mismo.
Propiedades:
● Remote_IP:string:
●
●
●
La interfaz esperará las órdenes del usuario, y en
función de su respuesta, la sesión continuará ó será
rechazada. Para aceptar una llamada entrante fue
creado un procedimiento disparado por un botón.
En el que lo primero que realiza es detener el
temporizador
encargado
de
llamar
al
procedimiento que ejecuta los sonidos, tanto en el
parlante del kit multimedia como en la placa
madre. Luego, busca la dirección IP del equipo
remoto (que esta realizando la llamada) en el
archivo denominado “contactos.txt” para desplegar
en el visor los datos del contacto en el caso que
existiese en el archivo.
Finalmente, habilita para realizar la comunicación.
Terminar una llamada.
Finalizar una llamada de audio: mediante este
procedimiento se cancela una llamada, tanto desde
donde se ha realizado la llamada o en el extremo
remoto. Para terminar o rechazar una llamada, el
procedimiento es bien simple. Primero, detiene el
temporizador
encargado
de
llamar
al
procedimiento que ejecuta los sonidos, tanto en el
parlante del kit multimedia como en la placa
madre; luego, rechaza o termina la comunicación
cambiando la propiedad calling del componente en
false.
●
●
●
●
●
●
●
●
●
●
Detalles técnicos.
La herramienta, de forma predeterminada, utiliza el
puerto TCP/IP 8001 que puede ser totalmente
configurable. La transmisión se realiza sobre
paquetes UDP. Aplica la técnica de supresión de
silencios. Está predeterminado para utilizar el
codec GSM610, pero trabaja con casi todos los
codecs instalados, por lo tanto, se puede elegir
cualquier codec para utilizar. A continuación se
presentan las propiedades del componente
●
●
La dirección IP
Remoto cuando se realiza una llamada.
Remote_Port:integer: El puerto del IP del
equipo remoto.
Local_Port:integer: el puerto local, se
puede cambiarlo antes de la conexión
Connection:Tverbinding: Codec utilizado
para la conexión.
User_Chosen_Codec:Bolean: se puede
escoger su propio codec.
Calling:bolean: El programa lee esta
propiedad para realizar una llamada. Se
ingresa la dir. IP remota y se configura
como true(verdadero), o se puede usar la
propiedad Placecall. Para terminar la
llamada solo se setea como false (falso).
Adopt_Settings_Off_Caller:boolean:
Setear como true. La estación que es
llamada lleva el codec de la estación que
realiza la llamada.
Auto_Answer:boolean: Para responder
cuando
se
recibe
la
llamada
automáticamente.
Local_IP:string IP local: Se deja espacio
en blanco, a menos que se tenga más de uno
o cuando está detrás de un proxy o firewall.
En este caso se usa la dir IP externa (del
firewall) y asegurarse que el puerto usado
este encaminado a la estación.
Local_Ping_Port:integer: Puerto local
para la función del ping
Remote_Ping_port:integer: Puerto remoto
para la función ping.
Ping_Auto_Respond:bolean: Cuando el
que recibe el ping contesta con ping.
Mute:boolean: Para lectura muda, se puede
escuchar a la otra estación, pero la otra
estación no escucha.
Auto_synchronise:bolean: Siempre se
deja verdadero. La calidad del sonido es un
poco baja (pero aún así, satisfactoria), de
otra forma, puede existir un retardo.
Volume:integer: Se puede cambiar el
volumen. Solo en una llamada con
conexión.
WaitForconnectionTime:integer: Tiempo
de espera en segundos antes del
componente dejar de intentar. (Cuando
realiza una llamada).
28
Artículos científicos – Ciencias de la Computación
Los métodos o procedimientos
● Ping(ip:string ): Envía el ping a una dir. IP
para ver si está en línea. (en ese caso, se
recibe una respuesta de ping y se puede ver
en el evento del onpinged)
● Answerincomming: Si la propiedad
auto_answer está falso, contesta una
llamada con este método.
● Rejectincomming:
Si la propiedad
auto_answer está falso, rechaza una llamada
con este método.
Eventos
● OnCalled: Cuando se recibe una llamada
●
●
●
●
●
(Responde si la propiedad auto_answer no
está seteada como true).
OnConnectionEnded:
Cuando
ha
finalizado una conexión.
OnTextMessage: Otra estación envía un
mensaje del texto
OnCallAccepted: Otro sitio acepta la
llamada (se puede hablar)
OnPinged: Se envia un ping o el ping
enviado es respondido. De todas formas la
dir. IP está en linea.
OnCallRejected: Otra estación no acepta
la llamada.
Requerimientos:
En cuanto al hardware:
● Red de área local.
● Tarjeta de sonido, altavoces y micrófono.
● Acceso directo a Internet (para realizar
llamadas utilizando este medio).
En cuanto al software:
● Sistema operativo Windows.
Prestaciones
Una de las principales bondades que ofrece esta
herramienta constituye su fácil instalación, ya que
no necesita de ningún tipo de servidor o sistemas
gerenciadores de base de datos, lo cual reduce
ampliamente
su
coste
y
favorece
su
implementación.
La interfaz obedece a tres premisas que no se han
considerado en software existente en la actualidad.
Por una parte, posee una interfaz fácilmente
manejable, para permitir a los usuarios novatos
comenzar a adentrarse en el mundo de VoIP desde
el primer momento.
Por otra parte, responde a un diseño sencillo, para
favorecer lo dicho anteriormente y porque se
buscaba el desarrollo de una aplicación de uso
diario, que no debe interferir con las otras tareas
que se desempeñan en esa máquina en la que corre.
Y por último, se trata de una interfaz integrada en
su entorno, que sea hasta cierto punto mimética,
tanto en su forma y colores como en su instalación
y comportamiento. Con esta herramienta se puede
poner en marcha una serie de aplicaciones que son
de gran demanda en la actualidad y que produce un
ahorro de costes muy significativo.
Redes privadas Virtuales de Voz
Esta aplicación consiste en la interconexión a
través de la red IP corporativa, de manera que se
pueda realizar la llamada de una extensión de la
oficina A a otra extensión de la oficina B, de
forma gratuita, ya que se aprovecha la
infraestructura de datos ya existentes, un ejemplo
claro de este servicio serían los Bancos y sus red
de oficinas.
Centros de llamadas vía Web.
Si una compañía tiene su información disponible
en una Web en Internet, los usuarios que visiten
esta Web podrían, no solo visualizar la
información que esta compañía les ofrece, sino que
podría establecer una comunicación con una
persona del departamento de ventas sin necesidad
de cortar la conexión. De esta manera, cuando el
operador de ventas atienda la llamada, tendrá en su
pantalla la misma información que está viendo el
usuario.
Esta aplicación ofrece la siguiente ventaja:
● Hacer la llamada a través de Internet para el
usuario no tiene coste adicional, aprovecha
la llamada telefónica que tenía establecida
para la comunicación de datos, para
mantener también la comunicación de voz,
esto permite a la empresa tener un servicio
similar al de la línea 0900.
● El usuario puede mantenerse on-line
mientras habla con el operador de ventas.
29
Artículos científicos – Ciencias de la Computación
● El cliente trata con operadores humanos,
que le podrán asesorar, esta característica
mejorará, sin duda alguna, el resultado del
comercio electrónico.
● El operador puede cerrar la venta de manera
más fácil, ya que tendrá más argumentos
comerciales para convencer al usuario sobre
la idoneidad de su compra.
Intercomunicador Local.
Esta aplicación podría ser la de utilizar como
intercomunicador local, el que permitiría a los
usuarios tener comunicación telefónica permanente
en una red LAN sin la necesidad de tener acceso a
Internet y descartando la utilización de centralitas.
Figura 9: Ambiente experimental.
A continuación se presenta una breve descripción
de los equipos que forman parte de cada uno de los
escenarios del test.
4. Metodología experimental
El estudio experimental consistió en un ambiente
de test para evaluar el rendimiento de la
herramienta transmitiendo voz sobre una red IP. En
la Figura 9 se presenta la topología del ambiente
experimental, que está formado básicamente de
dos dominios de redes locales Ethernet (un
dominio local y otro remoto), ambos estructurados
a partir de un hub conectado a la puerta de un
ruteador. Estos dominios están interconectados con
dos ruteadores, vía un enlace de módems con una
tasa de transmisión fija de 33,6Kbit/s.
En este ambiente fueron definidos dos escenarios
experimentales: (1) un escenario formado por un
único dominio de red local Ethernet, que contiene
al origen y al destino del servicio de voz en este
dominio, y (2) un ambiente de red formado por dos
dominios de red local, un local que contiene al
origen del servicio de voz y un dominio Ethernet
remoto que contiene el destino del servicio de voz.
La interconexión de los dos dominios se da a
través de un enlace de 33,6 Kbit/s que contiene dos
ruteadores en las puntas.
Descripción de los equipos del ambiente de
test.
Los equipos que forman parte de los dominios
Ethernet del ambiente experimental de la figura 9
son: hubs, microcomputadores, ruteadores y
módems.
Los dominios Ethernet consisten de dos hubs
Ethernet de 10/Mbit/s, cinco microcomputadores,
dos ruteadores Cisco 4000, con modems
configurados para transmitir a 33.600 bit/s.
Fue definida una estación que puede capturar los
paquetes que están en el tráfico, tanto en el
dominio local como en el remoto. Además están
definidas en cada dominio tres estaciones más para
generar tráfico, tanto dentro de un dominio como
entre los dominios de red.
Con este ambiente experimental es posible
observar la calidad de la voz de una conexión, que
puede ser tanto remota como local, en condiciones
de carga de la red que permiten perfectamente que
sea controlada. Fueron realizados análisis de
calidad del servicio de voz tanto en condiciones de
carga baja como en condiciones de carga pesada.
En el ambiente experimental las estaciones usan
como sistema operativo el Windows 95, y están
equipadas con Kit multimedia (auriculares y
micrófonos). En los tests realizados fue utilizado el
codec GSM610 de ITU-T, vale decir que el
codificador genera flujo de bits continuo a una tasa
de 8 kbit/s. En la figura 10 se presentan dos
configuraciones de la herramienta (local y remota)
30
Artículos científicos – Ciencias de la Computación
utilizadas en el estudio experimental.
Figura 10: Configuración local y remota de una
llamada con la herramienta.
Después de establecer la conexión con la
herramienta, es posible realizar una conversación
utilizando el micrófono del kit multimedia como si
fuese un teléfono normal. La herramienta, además
de la compresión de voz, implementa otros
recursos para optimizar el uso del ancho de banda;
por ejemplo, supresión de silencios. Es objetivo de
este estudio verificar si existen retardos, ecos y
pérdidas grandes de paquetes que dificultarían la
comunicación entre las estaciones que utilicen este
medio.
Descripción de la Herramienta de Captura y
Análisis.
Para observar y analizar el comportamiento de los
protocolos de red es preciso disponer de una
herramienta capaz de monitorear el tráfico en la
red y mostrarlo de una forma legible. Las
herramientas que capturan y muestran el tráfico
existente en una interfaz de red se denominan
analizadores de protocolos de red, analizadores de
paquetes, o "packet sniffers" o simplemente
"sniffers" (del inglés sniff, olfatear). Para
visualizar el tráfico los analizadores de protocolo
colocan la tarjeta de red en modo promiscuo, una
modalidad en la cual es capturado todo el tráfico
visible para la tarjeta de red. En una red Ethernet
una interfaz de red en modo promiscuo puede ver
todo el tráfico generado por la totalidad de los
equipos que comparten el mismo conjunto de
cables y concentradores (hubs).
En este ambiente experimental se ha utilizado el
programa Ethereal que es un analizador de
protocolos con interfaz gráfica capaz de reconocer
numerosos protocolos distintos. Permite tanto
revisar los paquetes de datos en una red activa
como desde un archivo de captura previamente
generado; es capaz de comprender diversos
formatos de archivo propios de otros programas de
captura.
Figura 11: Ventana principal de Ethereal luego de
una captura.
Para iniciar la captura de datos, se debe elegir las
opciones de menú Capture: Start (Capturar,
Comienzo). En la ventana de opciones de captura
(ver figura 11), debe fijarse al menos la interfaz
sobre la que se quiere realizar la captura. Los
nombres varían según los sistemas operativos; la
interfaz (loopback) permite enviar y recibir
paquetes en la propia máquina.
Para capturar en un archivo debe indicarse su
nombre en el cuadro "Capture file(s)" de la ventana
de Opciones de Captura (Capture: Start abre esta
ventana). Estos archivos pueden ser examinados
luego con el propio Ethereal mediante la opción de
menú File: Open. El tráfico ya capturado puede
grabarse en un archivo eligiendo File: Print
(Archivo: Imprimir); esta opción graba en formato
legible (texto).La ventana de estado muestra en
tiempo real la cantidad de paquetes capturados, en
total y de algunos tipos corrientes. La situación de
captura se mantiene hasta que se presiona el botón
Stop. Luego de unos instantes aparecen los
paquetes capturados, tal cual se ve en la figura 11
de la ventana principal. Si se activó la opción de
actualizar lista de paquetes en tiempo real
("Update list of packets in real time") éstos se
visualizan a medida que son capturados.
El programa captura todos los paquetes IP que
están en tráfico por la red, asignando a cada
paquete una etiqueta con el instante (en
microsegundos) en que fue capturado.
31
Artículos científicos – Ciencias de la Computación
Uno de los objetivos principales del experimento
es calcular el retardo correspondiente a un
determinado paquete al ser transportado desde el
origen hasta su destino. Este cálculo es realizado a
través de la diferencia entre el instante en que el
paquete es generado y el instante en que es
capturado en el destino. El archivo guardado de la
captura realizada contiene los paquetes duplicados
y la identificación de cada pareja de paquetes a
través del campo de identificación de los paquetes
IP. Con esta técnica de duplicación de paquetes es
posible calcular, además, el tiempo de transporte
entre los dos dominios de colisión, también la tasa
de pérdida de paquetes debido a problemas de
congestión. En caso de que un paquete capturado
no esté duplicado, significa que el mismo se ha
perdido y, de esta manera, se puede identificar si el
problema de baja calidad de servicio de voz es
debido al retardo de paquetes o a la pérdida de
ellos.
2do Escenario experimental:
● Primer Test- Solamente tráfico de voz.
● Segundo Test- Tráfico de datos en forma
local y entre los dominios.
En términos de generación de tráfico, se optó por
los procesos de escritura y lectura en la red.
A partir de las pruebas realizadas, se observa que
la herramienta VoIP en una red Ethernet de 10
Mbit/s genera un tráfico relativamente bajoalrededor de 30 kbit/s, como puede apreciarse en la
Figura 12, que corresponde a 0.5% de la capacidad
total de la red.
Se observa también que, aún con diferentes
variaciones de carga, el tráfico de voz se mantuvo
prácticamente inalterado, y presentó una buena
calidad de voz. Esto se debe a dos factores: (1) la
pérdida de paquetes fue prácticamente nula y (2) la
variación de retardo (jitter) se mantuvo baja.
Resultados experimentales obtenidos.
En esta sección se presentan los resultados
experimentales obtenidos en las llamadas
realizadas con la herramienta. Fueron considerados
dos escenarios experimentales: (1) tráfico de voz
en un dominio de red local y, (2) tráfico de voz
entre dos dominios, pasando por un enlace con
ruteadores. En cada escenario experimental fueron
realizados diversos tests, con diferentes perfiles de
tráfico de datos en las subredes, además del tráfico
de voz.
1er Escenario experimental:
● Primer Test- Solamente tráfico de voz.
● Segundo Test- Tráfico de voz en momentos
en que se observa, mediante Ethereal,
ráfagas de datos aleatorios en la red.
● Tercer Test- Tráfico de voz en momentos
en que se observa tráfico de datos
uniformes y continuos.
● Cuarto Test- Tráfico de voz en momentos
en que se observa tráfico de datos con carga
pesada3
3 Carga pesada en este caso corresponde a un
factor de carga en la red próximo al 30% de la
capacidad máxima que es considerado el límite
en redes Ethernet, para que no existan
problemas de congestionamiento(alto retardo)
Figura 12: Tráfico generado en la red.
A partir del análisis de los Tests realizados en el
primer escenario experimental, se puede concluir
que la herramienta VoIP, utilizada en el nivel de
enlace de una red Ethernet de 10 Mbit/s, es
perfectamente viable. Aun con las aplicaciones de
datos que generen una carga pesada en la red, la
transmisión de voz se mantuvo con calidad
aceptable.
El segundo escenario experimental está
caracterizado por la emisión de voz en un dominio
y su recepción en otro remoto. La interconexión
entre los dos dominios se realiza a través de un
enlace de 33.600 bit/s, con dos ruteadores en las
puntas, como se ilustra en la Figura 9. Los
paquetes serán ruteados (encaminados), por lo
tanto, dos veces antes de llegar al destino.
En el primer test, se consideró un tráfico de fondo
(broadcast) bajo y ninguna otra aplicación
corriendo en los dominios además de la
herramienta VoIP. En el segundo Test, además de
la herramienta VoIP, fue considerado en momentos
que se observaba un tráfico moderado interno en
32
Artículos científicos – Ciencias de la Computación
los dominios, un tráfico medio entre los dominios.
Referencias Bibliográficas
Se pudo observar que el retardo del primer test del
escenario dos, aumentó sensiblemente comparado
con lo observado en el primer test del primer
escenario experimental. No obstante, todos los
paquetes llegaron dentro del intervalo de tiempo
máximo soportado por las aplicaciones VoIP, que
es en torno de 150ms [7]. En el segundo test del
escenario dos, tráfico de voz con diversas
aplicaciones de datos, el retardo aumentó, pero los
paquetes llegaron dentro del tiempo mínimo. Por
lo tanto, se pudo realizar la comunicación con una
calidad aceptable para el oído humano.
Publicaciones en Internet:
5. Conclusiones.
La herramienta VoIP desarrollada supone una
forma fiable de intercomunicar a personas a través
de una red, independientemente de su localización,
con calidad de audio muy aceptable y con
requerimientos de ancho de banda mínimos.
De las pruebas realizadas en el primer escenario
experimental, se puede concluir que la transmisión
de voz con esta herramienta en un dominio de red
local es perfectamente viable, con satisfactoria
calidad de voz.
Teniendo en cuenta que el ancho de banda
necesario para una conexión de voz sobre IP se
sitúa alrededor de 25-35 kbit/s [8], se cree que en
ambientes de redes locales que presenten
segmentación de los dominios a través de switch y,
por lo tanto, una buena reserva de ancho de banda,
el servicio de voz local se verá considerablemente
mejorado y será perfectamente posible. Picos de
carga esporádicos y de poca duración afectan la
calidad de la voz, pero no al punto de comprometer
el servicio; no obstante, fueron los resultados
obtenidos en el escenario experimental dos, los que
revelaron la fragilidad del TCP/IP en relación con
las exigencias de QoS del servicio de voz. En este
escenario, se realizó una transmisión de voz entre
dos dominios de redes locales, interconectados a
través de un enlace de 33,6 kbit/s, pasando por dos
ruteadores.
[1] Unitronics Comunicaciones, El telecontrol en el
Ahorro Energético, Videoconferencia, una
herramienta para aumentar la productividad de
la empresa de hoy: ¿H.323 o H.320?
Disponible en:
http://www.comunicaciones.unitronics.es/tecnol
ogia/H.323.html, Acceso en: 04 ago. 2003.
[2] Unitronics Comunicaciones, VoIP, El estándar
VoIP – Voz sobre IP., Disponible en:
http://www.comunicaciones.unitronics.es/tecnol
ogia/voip.htm., Acceso en: 04 ago. 2003.
[3] Guía Didáctica de Ethernet, Lantronix,
Principios Básicos de Redes. , Disponible en:
http://www.consulintel.es/Html/Tutoriales/Lant
ronix/guia_et_p1.html, Acceso en: 20 oct.
2003.
[4] Lenguaje de programación Delphi, Disponible
en http://es.wikipedia.org/wiki/Delphi, Acceso
en: 24 oct. 2003.
[5] CSMA/CD, Wikipedia, La enciclopedia libre.
Disponible en:
http://es.wikipedia.org/wiki/CSMA/CD, Acceso
en: 30 oct. 2003.
[6] Tema: ¿Cómo se crea un componente?
Disponible en:
http://personales.mundivia.es/oscar/compo.htm,
Acceso en: 10 oct. 2003.
[7] VoIP, VI Escuela Latinoamericana de Redes,
WALC03 Mérida, Venezuela, Octubre 20 al 24
2003. Disponible en:
http://www.eslared.org.ve/voip.ppt, Acceso en:
01 nov. 2003.
[8] Tema: Redes de Telecomunicación: VoIP
Disponible en:
http://www.tecnun.es/Asignaturas/redesteleco/T
ransparencias/VoIP.ppt, Acceso en: 21 oct.
2003.
Se pudo constatar que la mejor calidad de voz era
obtenida cuando la red estaba disponible
íntegramente para este servicio; sin embargo, otros
contextos permiten realizar la comunicación con
una calidad aceptable para el oído humano.
33
Descargar