pica library carlos miguel tavares calafate redes multimedia 2002
TRANSCRIPT
![Page 1: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/1.jpg)
PICA Library
Carlos Miguel Tavares Calafate
Redes Multimedia 2002
![Page 2: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/10.jpg)
¿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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/12.jpg)
Linux Windows NT Windows CE
PICA
Source code
![Page 13: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/29.jpg)
Desarrollos futuros
![Page 30: PICA Library Carlos Miguel Tavares Calafate Redes Multimedia 2002](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081603/5665b47d1a28abb57c91e91a/html5/thumbnails/34.jpg)
FIN