PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002.

34
PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002

Transcript of PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002.

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