Bluetooth Seconda lezione: Baseband e LM STMicroelectronics Corso Bluetooth 14-4-2003, 3 ore Bluetooth Phy e Baseband 5-5-2003, 3 ore Baseband LMP 3 ore HCI +L2CAP 3 ore RFCOM, SDP e profili (corso di Rossi) Layer Fisico Banda ISM (2.4Ghz) Modulazione GFSK ad 1Mbps Fast frequency hopping – – 79 canali da 1 Mhz da 2.402 a 2.480 GHz 1600 hop/s => slot time= 625us 3 classi di potenza: – – – Classe 1: 20dbm -> 100 m Classe 2: 4dbm Classe 3: 0 dbm -> 10 m Topologia Master: unita’ che gestisce la rete e stabilisce la sequenza di hopping Slave: fino a 7 unita’ connesse col master Piconet: rete formata da un master e uno o piu’ slaves Comunicazioni possibili solo tra master e slave Pacchetti Hanno tutti un access code che identifica la piconet e attiva il ricevitore FHS packet porta le informazioni di sincronizzazione Pacchetti dati da 1/3/5 slot con o senza FEC:DM1,DH1,DM3,DH3,DM5,DH5 Pacchetti voce sincroni SCO Connessione Inquiry: restituisce informazioni sulle unita’ presenti nel range di trasmissione Page: stabilisce un link con un’unita’ specifica identificata dal BD_address. Entrambe le procedure richiedono che le unita’ target siano in scan mode Tempi di risposta variabili a causa della probabilita’ statistica di incrociare le frequenzeTx eRX Scatternet slave 3 slave 1 master B master A slave 4 slave 5 slave 2 Broadcast Pacchetti trasmessi dal master a tutti gli slaves attivi I pacchetti broadcast si distinguono per avere AM_Address=000 Non prevedono acknowledge ne pacchetti di risposta Per aumentare la robustezza si puo’ decidere di ripeterli sistematicamente N volte Protocol stack Applications TCP/IP HID RFCOMM Data Audio L2CAP Link Manager Link Controller BT device Baseband Radio Software layers HW Digitale HW Digitale/Analogico HW Analogico/RF Link controller Macchina a stati (spesso HW) per gestire: – – – – – – Il meccanismo ARQ La procedura di inquiry La procedura di page La creazione/ decodifica del FHS packet Scheduling realtime dei pacchetti Tutte le procedure con requisiti di tempo stringenti Link Manager Strato software realtime,che gira sul Bluetooth device (host controller) Alloca e assegna gli AM_address Stabilisce I link ACL ed SCO Configura I link Gestisce gli stati low power Comunica con il corrispettivo LM del dispositivo remoto LMP Protocollo che consente al Link manager di comunicare col suo pari LMP channel 2 bit nel Payload header vengono riservati per il codice L_CH I pacchetti LMP sono inviati esclusivamente usando pacchetti DM1 (I piu’ robusti) Formato pacchetti LMP access code packet header payload DM1 Payload header (1 byte) 2 L_CH=11 1 Flow(NU) Payload Body (1:17 bytes) 5 Length T_id (transaction identifier): 1 se e’ iniziata dal master, 0 se e’ iniziata dallo slave 1 T_id CRC (2 bytes) 7 OP Code 8 Par 1 Par 2 Par 3 Par 14 Par 15 Par 16 Connessione LMP Master Slave ID Link controller Paging ID FHS ID Link Manager LMP connection setup LMP_Host connection_req LMP_Accepted Altre transazioni opzionali LMP_ Supported features LM initiating LM LMP_features _req LMP_features _res Un dispositivo richiede all’ altro quali features opzionali supporta LMP_Name request Ogni unita’ Bluetooth puo’ avere un nickname assegnato dall’ utente, per aiutarne l’identificazione (max 248 caratteri) LM iniziatore LMP_name_req (offset=0) LMP_Name_res (offset=0 Length=xx fragment=‘aaaa’) LMP_name_req (offset=xx) LMP_Name_res (offset=xx Length=yy fragment=‘bbbb’) LM Controllo di potenza E’ possibile controllare il livello di potenza emessa: – – Diminuire la potenza in eccesso per risparmiare batterie e limitare il disturbo verso altri dispositivi Aumentare la potenza per migliorare la qualita’ in link disturbati La potenza emessa e’ relativa ad ogli link (un master tiene una tabella di valori per ogni slave) Controllo di potenza /2 Al ricevitore viene misurata la potenza ricevuta in antenna e resa disponibile al LM in un parametro RSSI (Received Signal Strength Index) Ogni ricevitore conosce il proprio ‘Golden range’ di potenza, in cui le performances sono ottimali. Il ricevitore controlla in remoto la potenza del trasmettitore per ricevere nel ‘golden range’ Controllo di potenza /3 Messaggi LMP: – – – – LMP_incr_power_req richiede un aumento di potenza LMP_decr_power_req richiede una diminuzione di potenza LMP_max_power Comunica che e’ stato raggiunto il massimo livello possibile di potenza LMP_min_power Comunica che e’ stato raggiunto il minimo livello possibile di potenza LM initiating LM LM initiating LM LMP_incr_power _req LMP_decr_power _req LMP_incr_power _req LMP_decr_power _req LMP_max_power LMP_min_power Sicurezza Il frequency hopping fornisce un primo (tenue) livello di sicurezza Bluetooth definisce procedure di autenticazione e di encription a livello LM Si basa su una chiave privata di 128 bit Il temine di paragone per il livello di sicurezza e’ “il cavo” Applicazioni ‘sensibili’ devono prevedere livelli superiori di sicurezza Disabilitabile in applicazioni che richiedono accesso pubblico Link keys Tutte le chiavi sono a 128 bit Combination key KAB, e’ valida esclusivamente per un link tra 2 unita’ specifiche Unit key KA, e’ valida per tutti i link con una particolare unita’ Temporary key Kmaster, sostituisce temporaneamente le altre chiavi (uso sconsigliato) Initialization key Kinit, chiave di inizializzazione a durata limitata Scambio delle chiavi Due unita’ che hanno in comune una link key si definiscono ‘paired’ Il ‘pairing’ puo’ avvenire per via diretta (es. tramite cavo) o piu’ comunemente tramite radio. Il ‘pairing’ solitamente viene fatto solo al primo utilizzo del dispositivo. La link key serve per l’autenticazione e l’encription Autenticazione Verifier(A) Link Key Claimant (B) Link Key RAND BD_ADDR_B BD_ADDR_B LMP_au_rand E1 SRES_S SRES_M =? E1 LMP_sres Encryption key Kc Viene generata a partire dalla link key L’ algoritmo utilizza anche i BD_address dei dispositivi ed un numero Rand Ad ogni riconnessione si genera una nuova Kc La lunghezza di Kc puo’ variare da 8 a 128 bit ed e’ negoziabile Encryption Kc Addres s clock RAND Payload key generator PIN RAND Plain Data Key stream generator Z(t) Encrypted Data Kc Addres s clock Payload key Payload key generator PIN Payload key Encrypted Data Key stream generator Z(t) Plain Data Generazione delle chiavi Modo 1, dipende dal BD_addr Modo 2 dipende da un pin number inserito dall’ utente Pairing A to B Viene inserito dall’ utente un PIN number in un’ unita’ A Viene generato da A un numero random R A invia R a B L’utente inserisce lo stesso pin in B A e B generano Kinit, usando R e PIN con E22 Da K viene derivata Kc per l’encription A genera KAB A invia KAB a B su un link protetto da Kc Kinit viene cancellata Pairing PIN First time connections PIN E22 RAND E22 LINK KEY LINK KEY Authentication E3 ENCRYPTION KEY EN_RAND E3 ENCRYPTION KEY Encryption Stati low power (per gli slave) Active – Active: Il dispositivo è sempre in attesa di un possibile pacchetto dal master – Hold: Il dispositivo è in stand-by per un tempo definito, dopo di che torna active – Sniff: Il dispositivo và periodicamente in stand-by e vi rimane per un tempo definito Parked: – Il dispositivo è sincronizzato ma disattivato (no AM_Address), periodicamente ascolta il master per controllare se deve riattivarsi Unconnected – Page scan: Il dispositivo periodicamente ascolta pacchetti di page Inquiry scan: Il dispositivo periodicamente ascolta pacchetti di inquiry Modo Hold Uno slave puo’ astenersi per un certo periodo dall’ ascoltare il master Spesso viene usato per risparmiare potenza quando non ci sono dati da inviare Lo stato di hold puo’ essere imposto dal master o richiesto dallo slave Durante l’hold lo slave puo’ anche fare altro, ad es. partecipare ad un’ altra piconet o inquiry/page scan LMP transaction LMP_hold_req negozia i parametri di hold LMP_hold forza lo stato di hold Parametri: – – Hold instant: il valore del Btclock(del master) in cui lo slave inizia lo stato di hold Hold time: il tempo misurato in slot time di durata dell’ hold Modo Sniff Come per l’hold, lo slave si astiene dalla piconet per un certo periodo A differenza dell’ hold, lo sniff viene ripetuto periodicamente senza ulteriore negoziazione Viene utilizzato in dispositivi a bassa potenza e basso bit-rate (es. Mouse tastiera) LMP transaction LMP_sniff_req negozia i parametri di sniff LMP_unsniff_req termina lo stato di sniff Parametri: – – – – Tsniff :Periodo di ripetizione Dsniff :Istante di inizio del primo sniff Sniff attempt: Numero di slot di ascolto Sniff timeout: Massimo numero di slot attivi Modo Park Uno slave che per molto tempo tempo non deve comunicare col master puo’ essere messo in park mode. In modo park lo slave cede l’AM_address e riceve un PM_address di 8 bit. Lo slave in park mantiene il sincronismo con il master (non e’ richiesto un page per riattivarsi) Gli slaves in park si risvegliano periodicamente negli slot di ‘Beacon’ per risincronizzarsi e comunicare col master LMP transaction (simp.) LMP_Park req – PM_address, parametri di Beacon LMP_modify_beacon (Broadcast) – Parametri di beacon LMP_unpark_PM_ADD_req (Broadcast) – PM_address, nuovo AM_address, QoS Bluetooth 1.1 ha un supporto minimo di QoS, solo con le specifiche 2.0 ci sara’ un supporto completo. E’ possibile per uno slave richiedere al master la frequenza con cui viene interpellato.(polling) E’ possibile in questo modo influenzare la banda e la latenza nella direzione slave-> master QoS LMP LMP_quality_of_service – m->s Poll interval, NBC (numero di ripetizioni broadcast) LMP_quality_of_service_req – Poll interval, NBC Master Slave LMP_quality_of_service_req LMP_quality_of_service s->m Role switch E’ possibile che il master e uno slave si invertano i ruoli dopo che la piconet e’ stata creata Es. PC che si connette ad un accesso di rete. Master Slave LMP_slot_offset (offset,BD_Add) LMP_switch_req (switch instant) LMP_accepted Controllo pacchetti Un dispositivo puo’ voler limitare l’uso di pacchetti multislot (DH3, DH5) da parte dell’ altro dispositivo Ad es. un master con un SCO attivo non vuole che lo slave occupi gli slot riservati. LM init LMP_Max_slot (max slot) LM LM init LM LMP_Max_slot_req (max slot) LMP_accepted Link supervision Se un dispositivo esce dal range Bluetooth e’ indispensabile chiudere il link per evitare di occupare risorse. E’ definito un Supervision time out, trascorso il quale se non vi e’ stata alcuna comunicazione corretta il link viene automaticamente chiuso. Master Slave LMP_Supervision_timeout(TO)