Post on 14-Apr-2015
Page 1Martínez Navarro, Germán Fco.
Page 2
Índice
• Introducción
• Paquetes
• Cuerpo del mensaje
• Circuitos
• Sistema de mensajes
• Arquitectura del cliente
• Arquitectura del servidor
Page 3
Índice
• Introducción
• Paquetes
• Cuerpo del mensaje
• Circuitos
• Sistema de mensajes
• Arquitectura del cliente
• Arquitectura del servidor
Page 4
Introducción (1/2)
• Second Life (SL) es un metaverso lanzado el 23 de junio de 2003, desarrollado por Linden Lab, y es accesible gratuitamente en Internet.
• Sus usuarios, conocidos como "residentes", pueden acceder a SL mediante el uso de uno de los múltiples programas de interfaz llamados viewers (visores), lo cual les permite interactuar entre ellos mediante un avatar.
• Los residentes pueden así explorar el mundo virtual, interactuar con otros residentes, establecer relaciones sociales, participar en diversas actividades tanto individuales como en grupo y crear y comerciar propiedad virtual y servicios entre ellos.
Page 5
Introducción (2/2)
• SL usa como protocolo de transporte UDP (RFC 768) para intercambiarse información entre los visores y el simulador.
• UDP no solicita reenvío de paquetes perdidos, lo que hace que sea ideal para servicios como video streaming. En nuestro caso esto supone una ventaja a la hora de enviar información sobre los escenarios.
Page 6
Índice
• Introducción
• Paquetes
• Cuerpo del mensaje
• Circuitos
• Sistema de mensajes
• Arquitectura del cliente
• Arquitectura del servidor
Page 7
Paquetes (1/4)
• Cabecera:
Byte 0 1 4 5 6 N
Page 8
Paquetes (2/4)
• Cabecera– Byte 0:
• ZER: Los 0s en el cuerpo del paquete van codificados.
• REL: El paquete fue enviado de forma segura.
• RES: Este paquete es un reenvío de la fuente.
• ACK: Este paquete contiene ACKs adjuntos (en la cola).
• 4 bits menos significantes: Reservados.
+ -
Page 9
Paquetes (3/4)
– Byte 1-4:• Número de secuencia del mensaje (con ordenación big-endian).
– Byte 5:• Cantidad de bits adicionales extras en la cabecera.
Page 10
Paquetes (4/4)
• Cuerpo:– (Byte 6+extra) hasta (6+extra+long. datos)
• Cola:– La cola del paquete contendrá una serie de
ACKs– (6+extra+longitud de los datos) hasta (final-1)– El último byte es una cuenta de cuantos
ACKs contiene
Page 11
Índice
• Introducción
• Paquetes
• Cuerpo del mensaje
• Circuitos
• Sistema de mensajes
• Arquitectura del cliente
• Arquitectura del servidor
Page 12
Cuerpo del mensaje (1/3)
• Se usan para enviar información serializada entre los clientes y el servidor, a través de conexiones conocidas como circuitos.
• En todos los mensajes se debe realizar un comprobación del CRC entre ambos hosts, si no la comunicación no tendrá éxito.
• Existe una gran cantidad de mensajes. Una lista de ellos puede verser en:
http://wiki.secondlife.com/wiki/Category:Messages
Page 13
Cuerpo del mensaje (2/3)
• Formato:
Preámbulo
Bloque
VariableTipo de dato
Page 14
Cuerpo del mensaje (3/3)
• Ejemplo:mplo:
Page 15
Índice
• Introducción
• Paquetes
• Cuerpo del mensaje
• Circuitos
• Sistema de mensajes
• Arquitectura del cliente
• Arquitectura del servidor
Page 16
Circuitos (1/2)
• Un circuito es una conexión UDP entre dos nodos:– Visor-Simulador– Simulador-Simulador– Simulador-Servidor
• Tipos:– Trusted– Untrusted
Page 17
Circuitos (2/2)
• Untrusted:– Todo circuito empieza siendo untrusted.– Las conexiones Visor-Simulador son de este tipo.– Cualquier mensaje seguro sobre un circuito de este
tipo será descartado por el receptor.
• Trusted:– Las conexiones Simulador-Simulador y Simulador-
Servidor son de este tipo.– Estos circuitos se establecen en respuesta a los
mensajes DenyTrustedCircuit haciendo uso de los mensajes CreateTrustedCircuit y un protocolo de confianza.
Page 18
Índice
• Introducción
• Paquetes
• Cuerpo del mensaje
• Circuitos
• Sistema de mensajes
• Arquitectura del cliente
• Arquitectura del servidor
Page 19
Sistema de mensajes (1/2)
• Número de secuencia– El número de secuencia es creado en la conexión al circuito. – A partir de entonces los paquetes irán incrementando su
número de secuencia.
• Eliminación de duplicados– Dado que no hay garantía en la entrega de los paquetes, el
propio circuito es quien debe encargarse de eliminar repetidos.– El circuito tiene una lista de todos los paquetes que recibió
recientemente, a través de un valor de tiempo determinado. Si un paquete que ya está en esta lista se recibe una vez más, el circuito responde con otro ACK adjuntado al paquete siguiente.
Page 20
Sistema de mensajes (2/2)
• Confirmación de paquete– La fiabilidad no va implícita en el mensaje, si no que es
especificada por el emisor en el momento de enviarlo.– Cuando A envía el mensaje, activa el flag de REL y se guarda
en un nodo de información el número de ese paquete. – Cuando B lo recibe, envía este número al final del paquete que
envíe a A, activando también el flag de ACK.– Cuando A recibe ese paquete, remueve el número de ese
paquete de su nodo de información.– Si en un tiempo máximo (determinado por el retardo de realizar
un ping por el circuito) A no recibe confirmación, el paquete es reenviado.
– Si después de 3 intentos, sigue sin recibir confirmación, el paquete es descartado.
Page 21
Índice
• Introducción
• Paquetes
• Cuerpo del mensaje
• Circuitos
• Sistema de mensajes
• Arquitectura del cliente
• Arquitectura del servidor
Page 22
Arquitectura del cliente (1/2)
• El cliente de SL (también conocido como visor) permite visualizar el entorno virtual y los objetos que lo conforman.
• El visor es un único proceso con varios hilos
Main
VFS LFS Image WorkedWorked
Page 24
Índice
• Introducción
• Paquetes
• Cuerpo del mensaje
• Circuitos
• Sistema de mensajes
• Arquitectura del cliente
• Arquitectura del servidor
Page 25
Arquitectura del servidor (1/1)
• La parte del servidor ya no es open source.• Login:
– El encargado de comprobar el logueo es un script CGI. Hace uso del protocolo XML-RPC sobre HTTP, y se envía al puerto 12036 del servidor.
• Simulador:– Es el proceso principal del servidor.– Cada simulador es capaz de procesar una región de 256x256
metros.– Se encarga de calcular qué objetos son visibles en todo
momento.– Envía las imágenes de forma priorizada.– Mensajes de chat también son procesados por él.– Los simuladores se comunican entre ellos mediante circuitos
UDP.
Page 26
Bibliografía
• http://wiki.secondlife.com/wiki/Protocol
Page 27