pica library carlos miguel tavares calafate redes multimedia 2002

34
PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Upload: jose-angel-araya-rio

Post on 23-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

PICA Library

Carlos Miguel Tavares Calafate

Redes Multimedia 2002

Page 2: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Origen del grupo MANET

• Objetivo original: mejorar las comunicaciones del ejercito en zonas de combate:– Movilidad– Falta de infraestructura de soporte– Por encima de 100Mhz la comunicación es

difícil si emisor y receptor no están en LOS (Line Of Sight)

Page 3: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Objetivos del grupo MANET

• Desarrollo de protocolos que permitan conectividad entre nudos móviles:

– Cada nudo funciona como un router en la red– Cada nudo tiene activo el demonio del

protocolo deseado– Cada protocolo puede ser implementado a nivel

2,5 o 3.

Page 4: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Aspectos más importantes a tener en cuenta:

• Tamaño de la red (escalabilidad)

• Conectividad

• Topología de la red

• Tráfico de los utilizadores

• Ambiente de operación– Tipo de terreno– Posibilidad de ataques e interferencias

Page 5: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Protocolos propuestos

• AODV – Ad-hoc On Demand Distance Vector

• OLSR – Optimized Link State Routing

• DSR – Dynamic Source Routing

• ZRP – Zone Routing Protocol

• LRR – Link Reversal Routing

• Otros

Page 6: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

El problema

• Normalmente son desarrollados en Linux• Normalmente son desarrollados en C• Utilizan llamadas específicas del Sistema

Operativo• La conversión a otros sistemas operativos

requiere una reestructuración grande– Estudio del Sistema Operativo– Pérdida de tiempo

Page 7: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

El problema

• Los desarrolladores no suelen tener conocimientos de las especificidades de cada sistema operativo (y tampoco lo desean).

Resultado:

• Los utilizadores de Windows 2000 y Windows CE tienen que esperar bastante para utilizar estas tecnologías

Page 8: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Características de los protocolos para Redes Ad-Hoc

• Conocimiento de las tarjetas de red disponibles, así como de los parámetros asociados (MAC, IP)

• Envío y recepción de paquetes a nivel 2, por veces de modo promiscuo.

• Gestión de colas de paquetes en memoria• Manipulación de la tabla de routing• Activación / desactivación del forwarding del

kernel

Page 9: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La solución

Una librería (PICA) que:– Sea escrita en el lenguaje C– Haga disponible las funciones que estos

protocolos necesitan– Esté disponible para Linux + Windows 2000 +

Windows CE– No introduzca retrasos considerables– Tenga una API auto-explicativa

Page 10: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

¿Que se consigue?

• Código C que utiliza la librería y funciones estándares C puede ser compilada directamente (o casi) en las demás plataformas.

• Reducción del tiempo de conversión de los protocolos existentes a otros SO

• Reducción del tiempo de creación de nuevos protocolos, estando disponibles para los 3 SO en un corto período de tiempo

Page 11: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Gestión de paquetes

Forwarding

Threads, mutexes, semáforos

Logging

Privilégios

Timers

SincronizaciónSockets

PICA

Page 12: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Linux Windows NT Windows CE

PICA

Source code

Page 13: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

1-Device1-Device

• int PICAgetAvailableDevices(DEVLIST * devs);• int PICAgetDeviceAttrs(char * dev, DevAttrs * attrs);

Page 14: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

2-Route2-Route

• PICAaddRoute(UINT32 dest, UINT32 mask, UINT32 gateway, int metric, char * device);

• PICAdelRoute(UINT32 dest, UINT32 mask, UINT32 gateway, char * device);

• PICAgetRoutingTable(RTInfo * rti);

Page 15: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

3-IP Forwarding3-IP Forwarding

• int PICAisForwarding(int * true_false);• int PICAsetForwarding(int on_off);• int PICAdefaultTTL(int set_get, int * ttl);

Page 16: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

4-Packet4-Packet

• int PICAopenDevice(char * device, PICA_IO_DEVICE * iodev);

• int PICAframe(int mode, PICA_IO_DEVICE * iodev, void * packet, int packetsize, int * read);

• int PICAcloseDevice(PICA_IO_DEVICE iodev);

Page 17: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

5- Socket5- Socket

• int PICAcreateSocket(PICAsocket * sd, int domain, int type, int protocol);

• int PICAcloseSocket(PICAsocket sd);

Page 18: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

6-Threads and Synchronization6-Threads and Synchronization6.1-Thread Management6.1-Thread Management

• int PICAstartThread(THRID * thr, void * func, void * args);

• int PICAsuspendThread(THRID thr);• int PICAresumeThread(THRID thr);• int PICAkillThread(THRID thr);

Page 19: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

6.2-Mutexes and Semaphores6.2-Mutexes and Semaphores

• int PICAcreateMutex(PICAmutex * mut);• int PICAmutexAction(int action, PICAmutex * mut);• int PICAdestroyMutex(PICAmutex * mut);• int PICAcreateSemaphore(PICAsemaphore * p_sem,

int initial_count, int max_count);• int PICAsemaphoreAction(int action, PICAsemaphore

* p_sem, int count);• int PICAdestroySemaphore(PICAsemaphore * p_sem);

Page 20: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

6.3- Multi-platform select6.3- Multi-platform select

• int PICAaddDesc(PICAdescList ** dl, int type, int mode, void * desc);

• int PICAselect(int time, PICAdescList * dl, PICAselResult * res);

Page 21: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

7-Memory Management7-Memory Management7.1-Buffer Management7.1-Buffer Management

• int PICAinitBuffer(PICAbuffer ** ibuf, int num_queues);• int PICAaddToBuffer(PICAbuffer * buf, int queue_id,

void * data, int datasize);• int PICAgetFromBuffer(PICAbuffer * buf, int queue_id,

int num_packets, PICApacket ** packets, int * avail_packets);

• int PICAkillBuffer(PICAbuffer * buf);

Page 22: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

7.2-Pipes7.2-Pipes

• int PICAmakePipe(PICApipe * in, PICApipe * out);

• int PICAsendToPipe(PICApipe out, void * data, int size, int * written);

• int PICAgetFromPipe(PICApipe in, void * buf, int bufsize, int * datasize);

• int PICAclosePipe(PICApipe pipe);

Page 23: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

8-Timer8-Timer

• UINT64 PICAgetCurrTime(void);

• int PICAtimer(int action, UINT64 * time, void * function, void * data);

Page 24: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

9-Log9-Log

• int PICAopenFile(FDesc * fd, char * name, int read_write, int flags);

• int PICAreadFile(void * buf, int num_bytes);

• int PICAwriteToFile(FDesc file, void * data, int datasize);

• int PICAcloseFile(FDesc file);

Page 25: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

La API de PICA

10-User Info10-User Info

• int PICAisAdministrator(int * user_type);

11-Library Specific

• int PICAstartup(int flags);• int PICAcleanup(void);• void PICAgetLastError(char * message, int * code);

Page 26: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Problemas

• Threads en Linux no tienen capacidades de suspend/resume

• Semáforos sin máximo en Linux

• Un timer por aplicación en Linux

• El funcionamiento de los timers es distinto en Linux/Windows

• No existen timers simples en Windows CE

Page 27: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Problemas

• La función select() de Linux sólo existe en Windows2k/CE para los Sockets

• Los descriptores del sistm. op. (HANDLES) utilizan WaitFor...

• No existen pipes en Windows CE• La interface de bajo nivel en

Windows2k/CE es compleja, especialmente en el acceso directo a la red (NDIS)

Page 28: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Soluciones encontradas

• Utilización de las librerías Packet.dll desarrolladas para Windows2k/CE

• Priority Queues para los timers

• Select con 2 threads en Windows

• Pipes con sockets

• etc.

Page 29: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Desarrollos futuros

Page 30: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

APIs específicas para 802.11

• Extensiones 802.11 para Windows disponibles sólo a partir de NDIS 5.1

• Para Linux, existen hace bastante tiempo las “Wireless Extensions”, que permiten configurar:– ESSID– frecuencia/canal– limite de sensibilidad (dBm)– modo (Ad-hoc, Managed, etc.)

Page 31: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

APIs específicas para 802.11

– Bit rate (1M, 2M, 5.5M, 11M, auto)– Threshold RTS (Request To Send)– key (encryption)– power (tempo de sleep / wake up, etc.)– Potencia de transmisión (W, mW, dBm, auto)– retry (retransmisiones a nivel de MAC)

Page 32: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

APIs para implementación de protocolos Ad-hoc a nivel 2,5

• Windows2k/CE ?????

• Linux Dispositivos TUN / TAP que permiten simular conexiones punto a punto o Ethernet.– TUN: Virtual Point-to-Point Network Device– TAP: Virtual Ethernet Network Device

Page 33: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Dispositivo TUN / TAP

Implementación de un protocolo a

nivel 2

Dispositivo inalámbrico

real

Utilizador

Forwarding de paquetes

Funcionamiento de un nudo MANETLaptop, PDA, etc.

Page 34: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

FIN