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