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)
Scarica

Bluetooth: Baseband e LM