[[PageOutline]] = IEEE 802.11 - Gestione dei sottolivelli = I due livelli (data link e fisico) su cui lo standard e' definito possiedono un insieme di operazioni primitive proprie, ma le loro definizioni sono lungi dal poter essere considerate vere e proprie interfacce: si tratta delle "''MAC layer management entities''" (MLME) e delle "''PHY layer management entities''" (PLME).[[BR]] E' assai importante notare, specialmente ai fini dello studio in oggetto, che lo strato MAC non oscura il sottostante PHY, ma permette alla "''station management entity''" (SME) di interagire direttamente con esso. Le varie entita' hanno la possibilita' di comunicare fra loro secondo le specifiche dello standard, attraverso i SAP (''service access point''). Tale concetto intende aggregare l'insieme di chiamate che una determinata entita' espone alle altre per realizzare forme di comunicazione o invocazione. {{{ __|MAC SAP|______________________________________ | ' ' | | | | | ------------ | | [MAC] | [MLME] SME-MLME SAP | | | ------------ | | . . | . . | | |--|PLCP SAP|--|--|MLME-PLME SAP|--| | | ' ' | ' ' | [SME] | | [PLCP] | | | | . . | [PLME] | | |--|PMD SAP|---| ------------ | | ' ' | SME-PLME SAP | | [PMD] | ------------ | |______________|___________________|______________| }}} In generale il livello MAC, come ovvio, deve essere il piu' possibile indipendente da quello fisico anche se a volte e' necessario che il livello MAC gestisca stati opportuni del livello fisico. Il livello PHY e' pertanto strutturato nella seguente maniera: * PLCP (''Physical Layer Convergence Procedure''): funzioni di convergenza del livello fisico, che realizzano una traduzione per far si` che dispositivi fisici anche piuttosto differenti possano offrire un'interfaccia PHY comune; * PMD (''Physical Medium Dependent''): insieme di funzioni fortemente dipendenti dallo specifico dispositivo wireless (ad esempio richieste di trasmissione o ricezione di dati). Anche in questo caso le relazioni fra sottolivelli sono gestite da appositi moduli SAP: uno specifico per la porzione PLCP (PLCP-SAP) e un altro relativo al sottostrato PMD (PMD-SAP). == Primitive di gestione generica == Le informazioni specifiche per la gestione di ogni strato sono incapsulate all'interno di cio' che viene definita la ''Management Information Base'' (MIB) di quel livello. Quindi ogni ''Management Entity'' possiede specifiche primitive di `GET` e `SET` in grado di operare sugli attributi della relativa MIB. Informazioni dettagliate sugli attributi dei vari MIB sono presenti nel relativo [http://www.xt3.it/reti0506/MIB-D6.2.txt documento ufficiale] == Interfaccia di MAC: MLME SAP == * `POWERMGT`: richieste al modulo che gestisce il risparmio energetico * `SCAN`: scansione della rete alla ricerca di BSS disponibili * `JOIN`: sincronizzazione con un BSS * `AUTHENTICATE`: autenticazione con un BSS * `DEAUTHENTICATE`: deautenticazione con un BSS * `ASSOCIATE`: associazione fra una STA e un AP * `REASSOCIATE`: associazione fra una STA e un altro AP * `DEASSOCIATE`: dissociazione fra una STA e un AP * `RESET`: azzeramento * `START`: creazione di un nuovo BSS (diventa AP) o IBSS (prima STA di una rete ''ad-hoc'') == Interfaccia di PHY: PLME SAP == In generale si hanno a disposizione tutti i `getter` e i `setter` necessari per manipolare ogni attributo del MIB (normati nell'aggiunta `Annex D`). Inoltre, si hanno a disposizione le seguenti primitive: * `RESET.request`: forza il reset del livello PHY, reinizializzandolo allo stato di ascolto sul mezzo trasmissivo; * `CHARACTERISTICS.request`: richiede le caratteristiche operative della entita' PHY; * `CHARACTERISTICS.confirm`: viene sollevata dall'entita' PHY successivamente ad una CHARACTERISTICS.request (fornisce le caratteristiche operative dell'entita' PHY); * `DSSSTESTMODE.request`: utile per entrare in modalita' test in una entita' PHY di tipo DSSS; * `DSSSTESTOUTPUT.request`: opzionale, testa i segnali di output di una entita' PHY di tipo DSSS. == Interfaccia di PHY: PHY SAP == Come gia' accennato in precedenza, le funzioni proprie dello strato PHY sono separate nei due livelli distinti PMD e PLCP; quest'ultimo intende fornire un meccanismo indipendente dalla entita' PHY per trasferire MPDU fra le STA. Anche in questa sezione, i servizi vengono definiti in maniera puramente astratta, in modo da non forzare a particolari implementazioni delle interfacce. Le primitive tra MAC e PHY si possono dividere in due categorie: * primitive per il supporto d'interazioni punto-punto a livello MAC (cioe' trasferimento di MPDU) * primitive con significato locale per agevolare l'interazione tra sottolivelli (cfr. SAP). L'unica primitiva per il supporto dell'interazione punto-punto fra entita' paritetiche di livello MAC e' PHY-DATA, utilizzata sia per la trasmissione (`request`+`confirm`), che per la ricezione (`indication`). * `PHY-DATA.request(DATA)`: richiede il trasferimento di un ottetto di dati alla ''PHY entity'' (solo se in modalita' di trasmissione, dopo una PHY-TXSTART.confirm) * `PHY-DATA.confirm`: sollevata dalla entita' PHY per confermare l'avvenuta ricezione dei dati dalla ''MAC entity'' (risposta alla PHY-DATA.request) * `PHY-DATA.indication`: notifica l'avventuto trasferimento di un ottetto di dati dal livello fisico al livello MAC Le primitive del livello PHY sono: * `PHY-TXSTART.request(TXVECTOR)`: permette al sottolivello MAC di richiedere all'entita' fisica di cominciare la trasmissione di una MPDU, spostandosi, come e' ovvio, in modalita' trasmettitore. Prende in input un vettore contenente parametri sia del sottolivello PLCP che di PHY. * `PHY-TXSTART.confirm`: viene sollevata dal sottolivello PHY per confermare alla ''MAC entity'' l'avvenuto inizio di trasmissione (i.e. le intestazioni PLCP). In questo modo, l'entita' fisica, si dichiara disponibile a ricevere dati attraverso PHY-DATA.request(DATA). * `PHY-TXEND.request`: e' invocata dalla entita' MAC per forzare il completamento della trasmissione della MPDU corrente. Viene generata conseguentemente all'ultima chiamata PHY-DATA.confirm per l'MPDU corrente. * `PHY-TXEND.confirm`: utilizzata dal sottolivello fisico per notificare all'entita' MAC il completamento della trasmissione. (La ricezione di questa conferma da parte della ''MAC entity'' costituisce il riferimento temporale necessario per il [wiki:CollegamentoMancante ''backoff''].) * `PHY-CCARESET.request`: viene richiesta dalla ''MAC entity'' per ottenere un azzeramento dell'automa a stati finiti utilizzato per il ''Clear Channel Assessment''(valutazione del canale libero). E' generata dalla ''MAC entity'' allo scadere del ''NAV timer''. * `PHY-CCARESET.confirm`: sollevata dall'entita' fisica per confermare l'azzeramento dell'automa di cui al punto precedente. * `PHY-CCARESET.indication`: questa primitiva ritorna all'entita' MAC lo stato del canale (''idle'' oppure ''busy''). Viene generata ogni qualvolta si ha una transizione del canale da libero a occupato oppure il viceversa. * `PHY-RXSTART.indication`: sollevata dal livello fisico per informare il livello MAC che e' stato ricevuto un SFD e un'intestazione PLCP valida (e che quindi avra' inizio la ricezione di un ''frame''). * `PHY-RXEND.indication`: grazie a questa primitiva l'entita' fisica comunica all'entita' MAC la fine della ricezione di una MPDU, indicando eventuali errori.