250 likes | 414 Views
Gestione della mobilit à verticale su base applicazione : progetto e realizzazione per la piattaforma Android. Alessio Bianchi. Relatore : Prof. Francesco Lo Presti Co-relatori : Prof. Stefano Salsano , Ing . Marco Bonola. La mobilità verticale. UMTS.
E N D
Gestionedellamobilitàverticalesu base applicazione:progettoe realizzazioneper la piattaforma Android Alessio Bianchi Relatore: Prof. Francesco Lo Presti Co-relatori: Prof. Stefano Salsano, Ing. Marco Bonola
La mobilità verticale UMTS • Nodo mobile che si sposta tra reti di accesso eterogenee(basate su IP) • Virtualmente nessuna interruzione delle comunicazioniin corso • Handover verticale 802.11
Mobilità su base applicazione • Decisioni di handover differenziate per ciascuna applicazione • Scenario tipico: • Notebook connesso via WLAN e 3G • Videoconferenza + download aggiornamenti SO • In caso di disconnessione della WLAN • handover della videoconferenza su rete 3G • interruzione download aggiornamenti
I problemidellamobilitàsu IP NAT1 Internet Default GW R1 LAN1 NAT2 IF1 CorrespondentHost (CH) R2 IF2 LAN2 Mobile Host (MH)
La soluzione UPMT (1) Universal Per-application Mobility management using Tunnels
La soluzione UPMT (2) AnchorNode (AN) “Secondlevel” NAT NAT1 Internet R1 LAN1 IF1 NAT2 IF2 VirtualIF CorrespondentHost (CH) R2 Mobile Host (MH) LAN2
Incapsulamentoe instradamento • Incapsulamento UDP/IP: • Instradamento pacchetti nei tunnel tramite PAFT: Per-Application Forwarding Table • application flow tunnel id UDP IP UDP or TCP IP Application payload Tunnel header IP src: realifaceaddress IP dst: AN address Original header IP src: virtualifaceaddress IP dst: CH address Application flow: <protocol, src IP, dst IP, src port, dst port>
Obiettivi del lavoro di tesi • Implementare la gestione delle applicazioni in UPMT • Rilevare i flow di un’applicazione e instradarne i pacchetti sul tunnel corretto • Permetterel’handoversu base applicazione e per singolo flow • Supportare la definizione di politiche di handover su base applicazione • Porting deicomponentirealizzatisu Android
Interface Architettura del Mobile Host Functioncall UPMT module UCE GUI Signaling Agent external module local socket UCE - UPMT Control Entity upmt-appmon Application Monitor DBUS Network Manager JNI NETLINK socket upmtconf User-space Kernel Exception filter NETLINK socket Modulo xt_UPMT Modulo upmt PAFT
Il modulo xt_UPMT (1) • Rileval’apertura di flussi di rete da parte delleapplicazioni • Estensione di Netfilter e iptables con un target apposito: • Aggiungevocinella PAFT per instradarecorrettamente i pacchetti dei flussi di rete • Applica politiche di gestionedellamobilità per applicazione • Uso di specifici tunnel per un’applicazione • Applicazioni non gestitetramite UPMT • Impedisce al traffico locale, multicast e broadcast di essereinviato sui tunnel iptables -AOUTPUT -oupmt0 -mconntrack --ctstateNEW -j UPMT
Il modulo xt_UPMT (2) xt_UPMTmantienele liste: Tunnel da usare per una data applicazione Inizializzata all’avvio della Control Entity con i tunnel specificati dalle politiche di ciascuna applicazione Le applicazioni non presenti in questa lista usano un tunnel di default Applicazioni che non devono essere gestite tramite UPMT Inizializzata all’avvio della Control Entity secondo le politiche utente
Associazionetraflow e applicazioni Netfilter, e quindi il target UPMT, non può risalire al processo che ha generato un pacchetto Problema: Patch al kernel: aggiunta del campo tgid al socket buffer contenente il PID (tgid) del processo Soluzione: • In Linux desktop, tipicamente vale l’assunzione: • nome applicazione == nome file eseguibile su disco pid structmm_struct* structtask_struct* struct file* structdentry* exe_file: f_path: d_name: mm: dentry firefox-bin
Gestione nuovi flow netlink flow per app politiche udp UCE - UPMT Control Entity upmt-appmon Application Monitor JNI flow, app paft new flow upmtconf User-space Kernel apps flow, app Modulo xt_UPMT Modulo upmt PAFT flow, tid
Handover flow per app netlink politiche udp UCE - UPMT Control Entity upmt-appmon Application Monitor JNI app, tid app, tid paft flow, tid upmtconf flow, tid User-space Kernel apps Modulo xt_UPMT Modulo upmt PAFT
Eccezioni per applicazione e per traffico locale • Scrittura di un hook Netfilterper intercettare tutti i pacchetti in uscita • Rerouting effettuato dall’hook per inoltrare i pacchetti verso l’interfaccia di uscita corretta Applicazioni da non gestire Per ogni interfaccia fisica: rotta per l’instradamento diretto sulla sottorete corrispondente Traffico sulla rete locale Traffico broadcast / multicast
Porting su piattaforma Android • Kernel Linux (con qualche modifica) • Applicazioni scritte in Java, eseguite dalla Dalvik VM • Numerosi dispositivi e modelli Grande diffusione • Open-source: GPLv2 per il kernel, Apache per la piattaforma
Problemi affrontati nel porting (1) • Architettura ARM cross-compilazione • bionic come libreria C (invece di glibc) • leggera, licenza Apache, no compatibilità binaria con glibc • No iproute2 • iptables compilato staticamente, non estendibile con target personalizzati • A livello kernel • No tabelle di routing multiple • No packet mangling
Problemi affrontati nel porting (2) Applicazioni scritte in Java il nome file eseguibile è quello della Dalvik VM! • I processi Android hanno il package name dell’applicazione nella cmdline (descrittore di memoria) • Lettura del primo argomento della cmdlinepackage name nome applicazione Una sola interfaccia di rete attiva e connessa alla volta • Interfaccia 3G attiva solo se l’interfaccia wifi è spenta o non associata • Modifica del codice sorgente di Android per evitarlo ROM custom!
Porting di UPMT su Android Componenti realizzati: compatibili con Android by design • Kernel custom: • Patch per il TGID nel socket buffer • Supporto a tabelle di routing multiple • Packet mangling in Netfilter • ROM custom: • Patch per più interfacce connesse contemporaneamente • iptables con target UPMT • iproute2
to kang (verb): to take and make better Wifi e 3G connessi contemporaneamente! Kernel custom UPMT ROM custom
Performance a livello di sistema Utilizzo CPU sull’Anchor Node Utilizzazione CPU [%] Utilizzo CPU sul Mobile Host Pacchetti generati [pacchetti/s]
Sviluppi futuri • Porting su Android della Control Entity e, in particolare, della GUI • Miglioramenti sul Decision Maker: • Basato su misure di performance delle interfacce • Location-based mobility (per-ESSID, per-APN…) • Ottimizzazioni • Caching della corrispondenza TGID / nome app
:wq Grazie per l’attenzione Alessio Bianchi