stmicroelectronics bluetooth seconda lezione: baseband e lm
TRANSCRIPT
STMicroelectronics
Bluetooth
Seconda lezione: Baseband e LM
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 1MbpsFast 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 trasmissionePage: stabilisce un link con un’unita’ specifica identificata dal BD_address.Entrambe le procedure richiedono che le unita’ target siano in scan modeTempi di risposta variabili a causa della probabilita’ statistica di incrociare le frequenzeTx eRX
Scatternet
slave 1
slave 2
slave 3
master B
slave 4
slave 5
master A
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
RadioBaseband
HW Analogico/RF
HW Digitale
Software layers
Link Controller
AudioLink Manager
L2CAP
TCP/IP HID RFCOMM
Applications
Data
Con
trol
HW Digitale/Analogico
BT device
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
Payload header (1 byte) Payload Body (1:17 bytes) CRC (2 bytes)
DM1
L_CH=11 Flow(NU) Length2 1 5
T_id OP Code
Par 2
1 7 8Par 1
Par 3
Par 14 Par 15
Par 16
T_id (transaction identifier): 1 se e’ iniziata dal master,0 se e’ iniziata dallo slave
Connessione LMP
ID
SlaveMaster
LMP_Host connection_req
ID
ID
FHS
Link controllerPaging
Link ManagerLMP connection setup LMP_Accepted
Altre transazioni opzionali
LMP_ Supported features
Un dispositivo richiede all’ altro quali features opzionali supporta
LMP_features _req
LMLM initiating
LMP_features _res
LMP_Name request
Ogni unita’ Bluetooth puo’ avere un nickname assegnato dall’ utente, per aiutarne l’identificazione (max 248 caratteri)
LMLM iniziatore
LMP_Name_res (offset=0Length=xx fragment=‘aaaa’)
LMP_name_req (offset=0)
LMP_Name_res (offset=xxLength=yy fragment=‘bbbb’)
LMP_name_req (offset=xx)
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
LMP_incr_power _req
LMLM initiating
LMP_max_power
LMP_incr_power _req
LMP_decr_power _req
LMLM initiating
LMP_min_power
LMP_decr_power _req
SicurezzaIl frequency hopping fornisce un primo (tenue) livello di sicurezzaBluetooth definisce procedure di autenticazione e di encription a livello LMSi basa su una chiave privata di 128 bitIl temine di paragone per il livello di sicurezza e’ “il cavo”Applicazioni ‘sensibili’ devono prevedere livelli superiori di sicurezzaDisabilitabile 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
E1
= ?
BD_ADDR_B
Link KeyLink Key
BD_ADDR_B
SRES_M SRES_S
RAND
Verifier(A) Claimant (B)
LMP_au_rand
LMP_sres
E1
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
PIN
Kc
Addressclock
RAND
Payload key
generator
Plain DataPayload key
Z(t)Key stream generator
Encrypted Data
PIN
Kc
Addressclock
RAND
Payload key
generator
Plain Data
Payload key
Z(t)Key stream generator
Encrypted 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 BA e B generano Kinit, usando R e PIN con E22
Da K viene derivata Kc per l’encriptionA genera KAB
A invia KAB a B su un link protetto da Kc
Kinit viene cancellata
Pairing
Encryption
E22
PIN
LINK KEY
ENCRYPTION KEY
E3
E22
PIN
LINK KEY
ENCRYPTION KEY
E3
Authentication
RAND
EN_RAND
First time connections
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 masterSpesso viene usato per risparmiare potenza quando non ci sono dati da inviareLo stato di hold puo’ essere imposto dal master o richiesto dallo slaveDurante 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 s->m– Poll interval, NBC
LMP_quality_of_service_req
SlaveMaster
LMP_quality_of_service
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.
LMP_slot_offset (offset,BD_Add)
SlaveMaster
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 dispositivoAd es. un master con un SCO attivo non vuole che lo slave occupi gli slot riservati.
LMP_Max_slot (max slot)
LMLM init
LMP_Max_slot_req (max slot)
LMLM init
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.
LMP_Supervision_timeout(TO)
SlaveMaster