0% encontró este documento útil (0 votos)
3 vistas27 páginas

Fundamentos del Software de Comunicaciones

Cargado por

casaporcuna
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas27 páginas

Fundamentos del Software de Comunicaciones

Cargado por

casaporcuna
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte