shkolakz.ru 1 2 ... 14 15


ESCUELA SUPERIOR DE INGENIEROS DE BILBAO

Proyecto

DE


Diseño e Implementación de un agente de usuario SIP



Documento nº 2 – Diseño

Alumno
Gotxi García, Ibon

Fecha Marzo 2002

Firma



Profesor Cátedra

Profesor Ponente

Curso Académico







2001/2002



ESCUELA SUPERIOR DE INGENIEROS DE BILBAO

Proyecto

DE


Diseño e Implementación de un agente de usuario SIP



Parte nº 1 – Diseño de Alto Nivel


Alumno
Gotxi García, Ibon

Fecha Marzo 2002

Firma



Profesor Cátedra

Profesor Ponente

Curso Académico







2001/2002



Indice


1. Introducción 9

2. Diseño de la interfaz de usuario 11

2.1. Configuración del soft-phone 12

2.1.1. Configuración a través de un fichero de configuración 12

2.1.1.1. Sección SIP 15

2.1.1.2. Sección de Dispositivos de audio 16

2.1.1.3. Sección de Registro 18

2.1.2. Configuración a través de un sistema de ventanas 20

2.2. Iniciación 21

2.2.1. Argumentos por la línea de comandos 21

2.2.2. Inicialización básica del agente 24

2.3. Depuración 30

2.3.1. Desarrollo futuro 33

2.4. Acciones disponibles 35

2.4.1. Realizar una llamada de audio y preguntar por capacidades. 38

2.4.1.1. Llamada de audio. 41

2.4.1.2. Preguntar por las capacidades remotas. 43

2.4.2. Recibir una llamada de audio. 47

2.4.3. Finalizar una llamada de audio. 49

2.4.4. Probar los flujos RTP y los códecs de audio. 51

2.4.5. Otras acciones posibles. 53

2.4.5.1. Consultar la configuración del agente. 53

2.4.5.2. Visualizar u ocultar la ventana de depuración. 53

2.4.5.3. Mostrar la ventana "Acerca de KSua" 54

2.4.5.4. Salir del agente 54

3. Diseño de la pila SIP ampliada 56

3.1. Hilo generador de hilos 58

3.1.1. Introducción a la programación con hilos 58

3.1.2. Los hilos ‘SUA_Thread’ 59

3.1.3. La lista de hilos ‘th_list’ 60

3.1.4. Acceso a la red 61

3.1.4.1. Envío de información 64

3.1.4.2. Modelo basado en transacciones 66

3.1.5. Gestión de los hilos SIP de apoyo 68

3.1.5.1. Creación de hilos como cliente por medio de eventos 68

3.1.5.2. Creación de hilos como servidor leyendo de la red 70


3.1.5.3. Gestión de hilos (eventos ‘SUA_ThMan_Event’) 71

3.2. Hilos SIP de apoyo 72

3.2.1. Creación de sesiones como cliente (‘SUA_Thread_Client’) 73

3.2.2. Sesiones como servidor (‘SUA_Thread_Server’) 79

3.2.3. Registro con un servidor (‘SUA_Thread_CReg’) 83

3.2.4. Pregunta de capacidades como cliente (‘SUA_Thread_COpt’) 86

3.2.5. Pregunta de capacidades como servidor (‘SUA_Thread_SOpt’) 88

3.3. Párser SIP/SDP 88

3.3.1. Párser SIP/SDP a medida (custom) 89

3.3.1.1. Comprobación de la corrección de los mensajes 90

3.3.1.2. Extracción de información de las cabeceras SIP/SDP 90

3.3.1.3. Generación de mensajes SIP 90

3.3.2. Herramientas para la generación de pársers 92

3.4. Arquitectura multimedia 92

3.4.1. Búfferes de audio 94

3.4.2. Hilos de audio: lectura/escritura de un driver OSS 100

3.4.3. Pila RTP y codificación/decodificación 101

3.4.3.1. Hilo RTP 102

3.4.3.2. Párser RTP 107

3.4.4. Gestión del volumen 108

3.5. Búsquedas DNS en SIP 108

4. Diseño de la Metaseñalización 111

4.1. Eventos de texto 111

4.2. Eventos de gestión de hilos 111

4.3. Eventos de control de llamada 112

4.3.1. Eventos de llamada en sentido de la GUI hacia la pila 113

4.3.2. Eventos de llamada en sentido de la pila hacia la GUI 113

4.3.2.1. Eventos relacionados con una llamada entrante 113

4.3.2.2. Eventos relacionados con una llamada saliente 113

4.3.2.3. Eventos de registro 114

4.4. Eventos de volumen 114




Indice de figuras


Figura 1: Diseño modular del agente de usuario SIP 10


Figura 2: Propuesta para ventana de configuración 21

Figura 3: Ventana de inicio y presentación 25

Figura 4: Ventana de selección de dirección IP 27

Figura 5: Resumen del proceso de inicalización 30

Figura 6: Ventana de depuración 31

Figura 7: KSua en la bandeja del sistema (System Tray) 36

Figura 8: Ventana de inicio de llamada 39

Figura 9: Libreta de direcciones SIP 40

Figura 10: Progreso del inicio de sesión 42

Figura 11: Ventana de control de llamada 43

Figura 12: Cuadro resumen de inicio de sesión 44

Figura 13: Ventana de pregunta de capacidades remotas 46

Figura 14: Cuadro resumen de pregunta de capacidades 47

Figura 15: Cuadro resumen de recepción de llamadas 49

Figura 16: Ejecución del agente con la opciíon -rtp_test 52

Figura 17: Visualización de la ventana de depuración 54

Figura 18: Ventana "Acerca de KSua" 54

Figura 19: Sistema de acceso a la red para leer 63

Figura 20: Módulo de reenvío de mensajes 65

Figura 21: Inicio de sesión como clientes (SUA_Thread_Client) 74

Figura 22: Fin de sesión como clientes 77

Figura 23: Fin de sesión como servidores 78

Figura 24: Inicio de sesión como servidores (SUA_Thread_Server) 80

Figura 25: Rechazo de llamada como servidores 82

Figura 26: Resumen del proceso de registro 84

Figura 27: Pregunta de capacidades como cliente 87

Figura 28: Diseño del párser SIP/SDP 89


Figura 29: Arquitectura general del sistema multimedia 94

Figura 30: Funcionamiento de los búfferes de audio 97

Figura 31: Búfferes de audio como búfferes circulares 98

Figura 32: Situación de congestión en los búfferes de audio 99

Figura 33: Esquema funcional del hilo RTP 103

Figura 34: Búffer de recepción de paquetes RTP adelantados: detección de secuencia 106

Figura 35: Búffer de recepción de paquetes RTP adelantados: vaciado por congestión 106




Indice de tablas



Tabla 1: Fichero de configuración de ejemplo 12

Tabla 2: Opciones de la línea de comandos 21

Tabla 3: Configuración de las librerías Qt 22

Tabla 4: Configuración de las librerías KDE 23

Tabla 5: Información acerca del autor del proyecto 23

Tabla 6: Información sobre las versiones de las librerías Qt/KDE enlazadas 23

Tabla 7: Ejemplo de mensaje de error en XML 34

Tabla 8: Ejemplo de información recibida al preguntar por capacidades 46

Tabla 9: Consulta de la configuración del agente 53

Tabla 10: Cabeceras SIP soportadas por el párser 91

Tabla 11: Cabeceras SDP soportadas por el párser 91

Tabla 12: Descripción ABNF de una SIP-URI 108




следующая страница >>