Buenas a todos, hoy quería hablaros un poco más sobre la capa de enlace de los dispositivos bluetooth, qué estados de transmisión tienen, cómo son sus paquetes y también con quién estamos hablando, es decir, que tipo de MAC está distribuyendo el dispositivo.
Así que... ¡empecemos!
¿Qué roles existen?
Principalmente existen dos modelos de comunicación entre los dispositivos BLE, el modelo unicast (Peer-Peer) y el modelo broadcast; en esta serie de posts cubriremos unicamente el modelo unicast entre dos dispositivos:
Inicialmente durante la comunicación disponemos de dos dispositivos, Host A y Host B, estos dispositivos realizan las funciones de Scanner y Advertiser, donde uno se encuentra en espera buscando dispositivos a los que conectarse y el otro respectivamente se encarga de darse a conocer al resto de dispositivos a su alrededor mediante sus mensajes ADV. Este proceso se conoce como la fase de descubrimiento o Discovery.
En algún punto, el Scanner tras recopilar y filtrar la información del medio se convierte en un Initiator cuando inicia la comunicación con un Advertiser en concreto. Esto se conoce como fase de conexión o Connecting y viene caracterizada por una trama CONNECT_REQ.
Finalmente, el Advertiser acepta la petición de conexión y se convierte en Slave mientras que el Initiator pasa ahora a ser Master, esto se conoce como fase de conexión exitosa o Connected.
Hemos de darnos cuenta que se han asignado roles GAP y GATT a cada uno de los dispositivos, de momento no nos centraremos en esto, y se cubrirá en el siguiente post ;)
¿Cómo son los paquetes BLE?
El protocolo de BLE solo utiliza un tipo de paquete, ya sea para los paquetes para anunciarse en su piconet o para transmitir información por los canales.
Existe un unico tipo de PDU para las tramas datos en una conexión BLE, y viene caracterizada por el siguiente esquema, debemos fijarnos que finalmente solo disponemos de 246 bytes efectivos como payload:
Data Channel PDU Field ID | Full Name |
---|---|
PDU He | Data PDU Header |
MIC | Message Integrity Check |
L2 He | L2CAP Header |
Op | ATT Operation Code |
Par/Pay | ATT Parameters & Payload |
De una forma distinta, existen diversos tipos de PDUs cuando un dispositivo quiere anunciarse en su entorno, pero como nos centraremos unicamente en los de Unicast, los paquetes ADV_DIRECT_IND
De esta forma damos pie al siguiente apartado...
¿Con quién estamos hablando?
Como podemos observar en el diagrama superior, la direccción de un dispositivo BLE se identificará como Public o Random y esto podrá verse en un bit adicional que se añade para notificarlo en todos los paquetes BLE. Todas las direcciones MAC indiferentemente de si son Public o Random disponen de 48 bits (6 bytes).
Las direcciones MAC publicas se componen de 24 bits que identifican a la compañia que ha fabricado el dispositivo, estos 24 bits los designa el IEEE; los otros 24 restantes los estable el fabricante para identificar el dispositivo.
Sin embargo, las direcciones MAC aleatorias se crearon para evitar que se monitorice el tráfico que esta realizando un dispositivo bluetooth. Por ello se crearon direcciones estáticas (reestablecida por cada ciclo de encendido-apagado) o privadas, que cambian periódicamente.
Espero que os haya gustado esta segunda entrega sobre BLE, en el siguiente post hablaremos sobre la capa de host y acabaremos con los conceptos básicos necesarios para poder entrar en materia práctica de BLE ;)
¡Un saludo!
Fuente de imagenes: Microchipdeveloper
No hay comentarios:
Publicar un comentario