Alessio Bianchi

Post on 22-Feb-2016

73 views 0 download

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

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