Alessio Bianchi

25
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

description

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. - PowerPoint PPT Presentation

Transcript of Alessio Bianchi

Page 1: Alessio  Bianchi

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

Page 2: Alessio  Bianchi

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

Page 3: Alessio  Bianchi

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

Page 4: Alessio  Bianchi

NAT1

NAT2

Mobile Host (MH)

Correspondent Host (CH)

LAN1

LAN2

InternetR1

Default GW

IF1

IF2

I problemi della mobilità su IP

R2

Page 5: Alessio  Bianchi

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

Page 6: Alessio  Bianchi

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)

Page 7: Alessio  Bianchi

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>

Page 8: Alessio  Bianchi

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

Page 9: Alessio  Bianchi

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

Page 10: Alessio  Bianchi

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

Page 11: Alessio  Bianchi

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

Page 12: Alessio  Bianchi

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

Page 13: Alessio  Bianchi

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

Page 14: Alessio  Bianchi

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

Page 15: Alessio  Bianchi

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

Page 16: Alessio  Bianchi

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

Page 17: Alessio  Bianchi

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

Page 18: Alessio  Bianchi

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

Page 19: Alessio  Bianchi

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

Page 20: Alessio  Bianchi

to kang (verb): to take and make better

Wifi e 3G connessi contemporaneamente!

Kernel custom UPMT

ROM custom

Page 21: Alessio  Bianchi

Performance a livello di sistemaUtilizzo CPU sull’Anchor Node

Pacchetti generati [pacchetti/s]

Utiliz

zazio

ne C

PU [%

]

Utilizzo CPU sul Mobile Host

Page 22: Alessio  Bianchi

Performance a livello di utente (1)

Page 23: Alessio  Bianchi

Performance a livello di utente (2)

Page 24: Alessio  Bianchi

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

Page 25: Alessio  Bianchi

:wq

Grazie per l’attenzione

Alessio Bianchi