alessio bianchi
Post on 22-Feb-2016
82 Views
Preview:
DESCRIPTION
TRANSCRIPT
Gestione della mobilità verticale su base applicazione:
progetto e realizzazioneper la piattaforma Android
Alessio Bianchi
Relatore: Prof. Francesco Lo PrestiCo-relatori: Prof. Stefano Salsano, Ing. Marco Bonola
La mobilità verticale
• Nodo mobile che si sposta tra reti di accesso eterogenee(basate su IP)
• Virtualmente nessuna interruzione delle comunicazioniin corso
• Handover verticale
UMTS
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
NAT1
NAT2
Mobile Host (MH)
Correspondent Host (CH)
LAN1
LAN2
InternetR1
Default GW
IF1
IF2
I problemi della mobilità su IP
R2
La soluzione UPMT (1)Universal Per-application Mobility management using Tunnels
Nessuna modifica alle applicazioni
Nessuna modifica alle infrastrutture di rete
Nessuna modifica ai Correspondent Host
NAT Traversal
Gestione della mobilità per-applicazione
NAT1
NAT2
Mobile Host (MH)
InternetR1
R2
“Second level”
NAT
Virtual IF
IF1
IF2
LAN1
LAN2
La soluzione UPMT (2)Anchor Node
(AN)
Correspondent Host (CH)
Incapsulamento e instradamento• Incapsulamento UDP/IP:
• Instradamento pacchetti nei tunnel tramite PAFT: Per-Application Forwarding Table– application flow tunnel id
Tunnel headerIP src: real iface addressIP dst: AN address
Original headerIP src: virtual iface addressIP dst: CH address
IP UDP or TCP Application payloadIP UDP
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– Permettere l’handover su base applicazione
e per singolo flow– Supportare la definizione di politiche di
handover su base applicazione• Porting dei componenti realizzati su
Android
Architettura del Mobile Host
upmtconf
NetworkManager
Exceptionfilter
Signaling
AgentUCE GUI
JNI
DBUS
NETLINK socket
NETLINK socket
local socket
User-spaceKernel
InterfaceFunction call
UPMT module
externalmodule
upmt-appmon
Application
Monitor
UCE -UPMT Control
Entity
Modulo xt_UPMT Modulo
upmtPAFT
Il modulo xt_UPMT (1)• Rileva l’apertura di flussi di rete da parte delle
applicazioni– Estensione di Netfilter e iptables con un target apposito:
– Aggiunge voci nella PAFT per instradare correttamente i pacchetti dei flussi di rete
• Applica politiche di gestione della mobilità per applicazione– Uso di specifici tunnel per un’applicazione– Applicazioni non gestite tramite UPMT
• Impedisce al traffico locale, multicast e broadcast di essere inviato sui tunnel
iptables -A OUTPUT -o upmt0 -m conntrack --ctstate NEW -j UPMT
Il modulo xt_UPMT (2)xt_UPMT mantiene le liste:
apps: Nome applicazione Tunnel ID
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
no_upmt: Nome applicazione
Applicazioni che non devono essere gestite tramite UPMTInizializzata all’avvio della Control Entity secondo le politiche utente
Associazione tra flow e applicazioniNetfilter, e quindi il target UPMT, non può risalire al processo che ha generato un pacchetto
exe_file:
struct mm_struct*
f_path:dentry
struct file*
d_name:
struct dentry*
firefox-binmm:
struct task_struct*
pid
Patch al kernel: aggiunta del campo tgid al socket buffer contenente il PID (tgid) del processo
Problema:
Soluzione:
In Linux desktop, tipicamente vale l’assunzione:nome applicazione == nome file eseguibile su disco
Modulo xt_UPMT
apps
Gestione nuovi flow
upmtconf
upmt-appmon
Application
Monitor
UCE -UPMT Control
Entity
Modulo upmt
PAFT
flow, app
netlink
udp
JNI
flow,
app
paftflo
w, ti
d
flow per app politiche
User-spaceKernel
new flow
Modulo xt_UPMT
apps
Handover
upmtconf
upmt-appmon
Application
Monitor
UCE -UPMT Control
Entity
Modulo upmt
PAFT
app, tid
netlink
udp
JNI
app,
tid
paft flow, tid
flow, tid
flow per app
politiche
User-spaceKernel
Eccezioni per applicazione e per traffico locale
Applicazioni da non gestire
Traffico broadcast / multicast
• Scrittura di un hook Netfilter per intercettare tutti i pacchetti in uscita
• Rerouting effettuato dall’hook per inoltrare i pacchetti verso l’interfaccia di uscita corretta
Traffico sulla rete locale
Per ogni interfaccia fisica:rotta per l’instradamento direttosulla sottorete corrispondente
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)
• I processi Android hanno il package name dell’applicazione nella cmdline (descrittore di memoria)
• Lettura del primo argomento della cmdline package name nome applicazione
• Interfaccia 3G attiva solo se l’interfaccia wifi è spenta o non associata
• Modifica del codice sorgente di Android per evitarlo ROM custom!
Applicazioni scritte in Java il nome file eseguibile è quello della Dalvik VM!
Una sola interfaccia di rete attiva e connessa alla volta
Porting di UPMT su Android
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
Componenti realizzati:compatibili con Android by design
to kang (verb): to take and make better
Wifi e 3G connessi contemporaneamente!
Kernel custom UPMT
ROM custom
Performance a livello di sistemaUtilizzo CPU sull’Anchor Node
Pacchetti generati [pacchetti/s]
Utiliz
zazio
ne C
PU [%
]
Utilizzo CPU sul Mobile Host
Performance a livello di utente (1)
Performance a livello di utente (2)
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
top related