Bluetooth mesh


3 분 소요

참고: Mesh 네트워크는 Wi-Fi와 Zigbee에서도 구축 가능)

Bluetooth Mesh Stack

Bluetooth classic(BR/EDR)과 BLE가 별개의 통신 프로토콜이듯, Bluetooth Mesh 또한 위 두 통신과 별개의 프로토콜.

Mesh architecture

Mesh stack

Mesh 네트워크는 N by N 통신 프로토콜이며 BLE 기반으로 동작. 네트워크 상 디바이스를 노드라고 명명함.

Model Layer

User application 동작 및 시나리오를 표준화한 mesh stack의 최상위 계층. model은 BLE의 GATT Service와 대응됨.

Foundation Model Layer

model을 포함해서, 네트워크의 구성 및 제어에 사용되는 statemessage를 정의하는 계층.

Access Layer

Model Layer에서의 명령을 Transport Layer에서 정보를 송수신할 수 있도록 변환.
대상 node, 암호화를 위한 application key, TTL 정보 등을 추가.

Transport Layer

Upper Layer에서는 Access Layer에서 주어진 정보를 토대로 송수신 패킷을 암/복호화.

Lower Layer에서는 큰 메시지에 대해서 fragmentation 등을 수행.

Network Layer

Transport Layer에서 생성된 패킷을 송신할 수 있도록 Bearer Layer의 형식에 맞게 변환.
SEQn(Sequence number) + 헤더 정보 추가, network key로 추가 암호화.
메시지를 다른 노드로 전달할지(relay) 혹은 Transport로 전달할 지 결정.

Network layer to access layer

Bearer Layer

Mesh 네트워크에 포함된 노드 사이에 메시지 교환 방식 정의. avertising bearer 혹은 GATT bearer를 통해 송수신.

  • advertising bearer: mesh 프로토콜을 지원하는 기기에서 메시지 교환에 사용
  • GATT bearer: mesh 프로토콜을 지원하지 않는 기기를 네트워크에 포함 시키기 위해 사용

Bluetooth Mesh Operation

Mesh 네트워크의 역할

  • N by N comm.
  • Relay를 통한 통신 거리 확장
  • app and network key 암호화
  • GATT bearer를 통한 현 시장에 존재하는 기기를 이용해 네트워크 구축
  • 네트워크의 일부 기기가 제거되어도 Sustainability

Managed flood

  1. Network message cache 기법: 이전에 수신한 메시지를 보관하여 중복 메시지를 수신 및 전달하지 않도록 함
  2. Time to live 기법: 송신 메시지에 TTL(Time-To-Live)을 첨부하여 해당 패킷의 Relay 횟수를 제한

Devices and nodes

  • Node: Mesh 네트워크에 포함된 디바이스
  • Unprovisioned device: Mesh 네트워크에 포함되지 않은 디바이스

Unprovisioned device는 Provisioner로부터 node로 전환될 수 있음. Configuration Client에 의해 다른 node와 메시지 교환 방식 결정.

NOTICE: 일반적으로 Configuration Client는 Provisioner가 담당

Network and subnets

Mesh 네트워크에 포함된 node들이 공유하는 정보

  • network address
  • network key
  • application key
  • IV index

  • Subnet: 하나의 네트워크 내에서 network key를 이용하여 구분하는 그룹 단위
  • Primary subnet: 해당 subnet의 노드는 IV Update procedure 과정에 참여 (추후 언급)

Low power support

Node들은 네트워크 유지를 위해 relay를 하므로 배터리 소모가 큼. 이를 Friendship 기법으로 해결.

Friendship

배터리 등으로 동작하는 LPN(Low power Node)이 받을 데이터를 stable 전원으로 동작하는 FN(Friend Node)에 임시 저장.
LPN은 느린 주기로 활성화되어 FN으로 부터 정보를 받고, 장시간 대기모드로 진입. → 배터리 소모 감소.

그러나 LPN으로 mesh 네트워크를 구성하는 것은 광범위 네트워크를 구성하기 위한 목적에 맞지 않음.

Bluetooth Mesh Concepts

Elements

element: 네트워크에 포함된 node가 가진 개체. (조명기구, 스위치, 센서)
state: element의 상태나 조건을 표현하는 요소.
bound state(binding): 연관된 state를 grouping한 state.

Messages & Addresses

model에서는 message를 이용해 publish/subscribe 구조로 정보를 교환 및 element 제어. element는 주소를 가짐.

  • unicast address: 각 element의 고유 16 bits 주소
  • group address: multicast adress
  • virtual address: label UUID 검증을 줄이기 위함. attribute의 경우 GATT services 는 16 bits로 표현이 가능하지만 기본적으로 label UUID(128 bits)임. virtual address는 label UUID의 hash값(16 bits)로, UUID 검증을 by-pass 할 수 있는 것으로 보여짐.

Address

Features and Topology

Topology

Feature

  • Relay: advertising bearer를 통해 message를 다시 주변으로 전달
  • Proxy: GATT bearer와 advertising bearer 사이의 message 교환
  • Low Power/Friend: Friendship에 관여

Advertising Bearer Format

Bearers

  • Advertising bearer: mesh 프로토콜 지원 node끼리 connection-less 통신하는 방식
  • GATT bearer: GATT 연결을 맺는 BLE 방식

Bearer

Mesh 프로토콜을 지원하지 않는 BLE 디바이스는 Proxy 기능을 지원하는 mesh node와 GATT 연결을 하여 네트워크에 접근할 수 있음.

Advertising bearer

Mesh 프로토콜에서 데이터 전달에 사용.

Bluetooth Mesh Key

Network Keys: Network keys is generated and distributed by the provisioner, the main network key is shared by all nodes in the network and the config client and server uses this subnetwork to communicate.
The netkey_index is used for avoiding sending the whole network key every time a model should use a subnetwork. Instead the network key is sent once and when the key is to be used again later, it is just referenced by its index.

Application Key: The application key is used the same way as the network. It is just used by another layer in the bluetooth mesh stack.

Device Keys: The device key is a specific key for each device. It is used by the config_client for configuring a device.

Server Handles: The server handles is maybe no given the best name in the example as they reefer to the element in which the light server models exist. I have renamed them to element_handle in my own project for clarity.

Group Handle: The group handle reefers to the group address for all the light servers in the example.

For being able to use a group address, the config_client should first tell the model to listen for messages to this group address, also known as adding the model to a group.

source: https://devzone.nordicsemi.com/f/nordic-q-a/28505/bluetooth-mesh-key-generetion-and-handling

관련 내용에 대한 질문이나 태클을 환영합니다. 댓글 남겨주세요.



태그:

카테고리: , ,

작성:

업데이트:

댓글남기기