Fundamentos de Software de
Comunicaciones
Tema 1
Introducción
Características del software de
comunicaciones
Los sistemas de comunicaciones son totalmente dependientes
del software
o Centrales de conmutación
o Nodos de conmutación en redes de datos (routers de Internet)
o Estaciones base de redes móviles y equipos de certificación
o Teléfonos móviles, puntos de acceso WIFI, etc.
3
Características del software de
comunicaciones
El comportamiento
El comportamiento de de los
los protocolos
protocolos siempre
siempre ha
ha sido
sido
complejo yy difícil
complejo difícil de
de implementar
implementar para
para conseguir
conseguir los
los
requisitos deseados
requisitos deseados
Algunas características
Algunas características que
que lo
lo hacen
hacen complicado
complicado
Empotrado en
Empotrado en hardware
hardware específico
específico (complica
(complica el
el test)
test)
Comportamiento reactivo
Comportamiento reactivo (no
(no termina)
termina)
Con información
Con información dede estado
estado (sesiones)
(sesiones)
Sistema de
Sistema de tiempo
tiempo real
real (cumplimiento
(cumplimiento de de tiempos)
tiempos)
Sistema distribuido
Sistema distribuido (múltiples
(múltiples nodos
nodos heterogéneos)
heterogéneos)
4
Requisitos del software de
comunicaciones
5 requisitos del software y/o metodología de desarrollo
o Disponibilidad
o Fiabilidad
o Escalabilidad
o Capacidad
o Productividad
5
Requisitos del software de
comunicaciones (II)
Disponibilidad
o Medida del tiempo en servicio (-> tiempo no disponible)
• 99% -> 87 horas y 36 minutos año
• 99,9% -> 8 horas y 46 minutos año
• 99,99% -> 52 minutos y 32 segundos año
• 99,999% -> 5 minutos y 15 segundos año (6 seg.
semana)
• 99,9999% -> 32 segundos año ( < 1 segundo semana)
o Diferentes exigencias según el tipo de servicio
• Servidores de información o reserva
• Central telefónica
• ADSL doméstico
• Router de punto neutro
6
Requisitos del software de
comunicaciones (III)
Fiabilidad
o Funcionamiento correcto, libre de errores de ejecución
o Su efecto depende del servicio
• Fallo en una llamada telefónica
• Error en transferencia de mensajes a nivel IP
• Fallo en transacción financiera
o Tema central de muchas herramientas y métodos de desarrollo
7
Requisitos del software de
comunicaciones (IV)
Escalabilidad
o Facilidad para incrementar el número de usuarios
o Ejemplo:
• Gestionar un sistema de 100000 usuarios es menos costoso que
gestionar 10 sistemas de 10000 usuarios
o Es necesario que se pueda incrementar el sistema cambiando
configuraciones o incrementando el número de elementos
Capacidad
o El incremento en las prestaciones puede suponer nuevas
necesidades de procesamiento u otros recursos
o Problemas cuando las actualizaciones requieren más recursos
hardware
Productividad
o La metodología empleada debe permitir el trabajo de generación del
software en un corto plazo, paralelizando su desarrollo
o Conceptos de marcos de trabajo, división en capas, componentes,
etc.
o Definición clara de interfaces
8
Estrategias para abordar la complejidad
Organización en capas
Normas de protocolos e interfaces
Técnicas, herramientas y metodologías de desarrollo
9
Organización en capas
Organización en capas:
La organización en capas permite separar funciones de
manipulación de datos y de control
10
Organización en capas
Organización en capas (TCP/IP izqda., norma OSI drcha.)
11
Normas de protocolos
Normas de protocolos
Documentos en lenguaje natural, no formales
Diferentes organismos y tipo de normas
Internet – RFCs
Redes públicas fijas – CCITT, ITU-T
Rede móviles – 3GPP, ETSI
Ejemplos de normas
RFC SMTP- Protocolo para correo electrónico
Protocolos de señalización en redes de telefonía móvil
12
Estrategias para abordar la complejidad
Técnicas y herramientas y de soporte para el desarrollo
o Diseño del protocolo a partir de la definición de su objetivo o función
o Descripción o modelado previo a la programación (informal o con lenguaje
normalizado)
o Programación o generación automática de código
o Testing, depuración, validación
o Análisis de prestaciones/rendimiento
o La selección de técnicas y herramientas da lugar a un enfoque de
desarrollo diferenciado (metodología), que suele ajustarse a un
dominio de aplicación concreto (servicios para la web, protocolos en
el núcleo del S.O., ..)
13
Técnicas y herramientas de desarrollo
Diseño del protocolo a partir de la definición de su objetivo o
función
o La solución debe ser simple, evitando sobre especificación o falta de funcionalidad
o Hay que asegurar que cumple su función correctamente (evitar bloqueos y otros
errores)
14
Técnicas y herramientas de desarrollo
Descripción o modelado previo a la programación (informal o con
lenguaje normalizado)
o Las normas de los organismos de estandarización pueden
considerarse no formales
o Los lenguajes normalizados cambian mucho respecto a su
aceptación y herramientas que los soportan (máquinas de
estado, UML, SDL, ..)
Esquema de TCP con máquina de
estados
15
Protocolo descrito en SDL
16
Protocolo descrito en SDL
17
Protocolo descrito en SDL
18
Protocolo descrito en SDL
block OSI_Stack 1(1)
NetworkLayer2
C4 ToNetworkLayer2
C1
ToNetworkLayer1
C3
FromNetworkLayer1 FromNetworkLayer2
DataLayer1 DataLayer2
FromPhysicalLayer1 FromPhysicalLayer2
C1 C2
ToPhysicalLayer2
ToPhysicalLayer1
C5
C2 PhysicalLayer
LoseNextFrame
20
Protocolo descrito en SDL
process DataLayer1
DCL
Idle next, expected Integer,
s, r Frame,
buffer Packet;
FromPhysicalLayer1 timer T1;
T1
(r)
r!seq=expected
false
true
ToNetworkLayer1
(r!info)
expec ted:=1-expected;
r!ack=next
true
next:=0,
Wait
expec ted:=0
FromNetworkLayer1
Init T1
(buffer)
FromNetworkLayer1
Wait next:=1-next
(buffer)
s!info:=buffer, false
s!seq:=next,
s!ac k:=1-expected
ToPhysicalLayer1
(s)
SET
(NOW+1, T1)
Idle
21
Técnicas y herramientas de desarrollo
Programación o generación automática de código
o Elección de modelos de programación (lenguaje estructurado
tipo C++ y APIs de sistema operativo, eventos, ..
o Técnicas específicas para estructuración en capas,
implementación de interfaces, manipulación
o Marcos de trabajo específicos para programar protocolos sobre
ellos
o Herramientas de generación automática de código desde
modelos
24
Programas (aplicaciones de Internet)
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include "socks5.h"
main() {
int sockfd,n,result;
struct sockaddr_in serv_addr;
char buf[1024],serv_host_addr[30],username[255], passwd[255];
printf("Direccion IP del servidor: ");
gets(serv_host_addr);
if ((sockfd=socket(PF_INET,SOCK_STREAM,0))<0) {
perror("cliente no puede abrir stream socket\n");
return -1;
}
/*inicializacion de la variable serv_addr*/
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr(serv_host_addr);
serv_addr.sin_port=htons(SERV_PROX_PORT);
bzero(buf,sizeof(buf));
/*conexion activa desde el cliente */
if (connect(sockfd,(struct sockaddr*) &serv_addr,sizeof(serv_addr))!=0) {
perror("cliente no puede conectar con servidor\n");
return-1;
}
Técnicas y herramientas de desarrollo
Testing, depuración, validación
o Hay que evitar problemas de uso de memoria, bloqueos, ciclos y otros
errores,
o Para lenguajes de programación
• Básico: depuradores
• tipo gdb,
• herramientas tipo netstat, ping ,
• análizadores de protocolos tipo wireshark
• Avanzado: herramientas automáticas de chequeo del código como Valgrind,
o Para lenguajes de modelado tipo SDL o UML
• Básico: simulación visual
• Avanzado: validación automática (exhaustiva), testing
Captura con Wireshark
Simulación (ejemplo en SDL)
Validación (ejemplo en SDL)
Técnicas y herramientas de desarrollo
Análisis de prestaciones/rendimiento
o Hay que asegurar
• Que se cumplen los tiempos de respuesta
• Que se puede atender el número de peticiones o de tráfico
• Que se mantiene el límite de uso de recursos (memoria, CPU, energía,..)
o Algunas posibilidades
• Simuladores de red tipo ns-2, ns-3, OPNET (en diseño)
• Pruebas de carga (varios clientes contra un servidor)
• Herramientas de “profiling” sobre el código
• Monitorización de tráfico y post-procesado (Wireshark)
Bibliografía
Robert Love. “Linux System Programming”, O’Reilly, 2007
Richard Stevens et al. “Unix Network Programming Volume 1: The Sockets
Networking API (3rd Edition)”, Addison Wesley, 2003
BEHROUZ A. FOROUZAN , TRANSMISION DE DATOS Y REDES DE
COMUNICACIONES (4ª ED.), McGraw-Hill, 2007
36