BLE (9) - 블루투스 메시: Overview of Mesh stack
Updated:
9. 블루투스 메시: Overview of Mesh stack
블루투스 클래식(Bluetooth Classic; BR/EDR
)과 저전력 블루투스(Bluetooth Low Energy, BLE
)가 별개의 통신 프로토콜이듯이, 블루투스 메시(Bluetooth Mesh
) 또한 앞에 언급한 두 종류의 블루투스 통신과는 별개의 프로토콜이다. 이번 포스트에서는 블루투스 공식 홈페이지에 게재되어있는 메시 표준 문서 (Mesh Profile Specification) 및 기타 참고자료들을 보면서 공부한 내용을 정리하려고 한다.
- Mesh system architecture
블루투스 관련 자료마다 정의하는 메시 스택 (Bluetooth Mesh stack
)의 구조 혹은 명칭이 조금씩 차이가 있을 수는 있지만, 기본적으로 표준 문서에서는 메시 스택의 구조를 아래 그림과 같이 정의한다.
메시 네트워크는 기본적으로 N by N
통신을 지원하는 통신 프로토콜이며, BLE 프로토콜을 기반으로 동작한다. 또한, 메시 프로토콜을 기반으로 네트워크 상에 포함된 기기 (device
)는 노드 (node
)라고 부른다.
NOTICE: 본 포스트 및 관련 포스트에서 “블루투스 메시”, “블루투스 메시 네트워크”, “메시 프로토콜”, “메시 네트워크” 등은 모두 동일한 프로토콜 규격을 가리킨다.
9.1 Model and Foundation Model layer
Model layer
는 메시 프로토콜에서 구현하는 사용자 application 의 동작이나 시나리오 등을 표준화한 계층으로 메시 스택의 최상위 계층이다. 해당 계층에서 정의하는 model
은 BLE 프로토콜의 GATT Service
와 대응된다고 할 수 있다. 심장 박동을 측정하고 관련된 기능을 사용하고 싶을 때 BLE 프로토콜의 HRS (Heart Rate Service)
를 이용하는 것처럼, 여러 개의 조명 기구 (e.g. LED)와 센서를 메시 프로토콜로 제어하고 싶을 때는 관련 model
을 이용한다.
Foundation Model layer
는 메시 프로토콜에서 정의하는model
을 포함해서, 네트워크를 구성하고 제어하는데 사용되는state
,message
등을 정의하는 계층이다.state
와message
에 대해서는 차차 알아보도록 하자.
9.2 Access layer
최상위 계층 (Model layer
)에서 “조명을 켜라 (ligth ON)
” 라는 명령을 메시 네트워크로 보내기로 했다고 가정해보자. Access layer
에서는 하위 계층 (Upper/Lower Transport layer
)에서 해당 정보를 송수신할 수 있도록 변환해주는 (징검다리) 역할을 수행한다.
구체적으로 어떤 노드로 명령을 보낼지 (destination address
), 어떻게 명령어를 암호화 할 것인지 (application key
), 메시 네트워크에서 몇 번이나 해당 메시지가 전달되게 할 것인지 (TTL: time-to-live
) 등의 정보를 추가한다. TTL
값에 대해서는 추후에 소개할 예정이다.
NOTICE: 위에서 “메시지” 라고 표기한 단어는 Model layer
에서의 message
가 아닌, 하나의 노드에서 다른 노드로 보내는 정보를 총칭한다.
9.3 Upper / Lower Transport and Network layer
Upper layer
에서는 Access layer
에서 주어진 정보를 토대로 송신할 패킷을 암호화하고 (수신하는 경우는 암호해독; decryption
), Lower layer
에서는 Upper layer
에서 생성된 (일반적으로 한 번에 송수신하기 어려운) 명령어를 여러 개로 분할한 뒤 여러 패킷으로 메시지를 재조립한다.
Network layer
에서는 Transport layer
에서 생성된 패킷을 송신할 수 있도록 Bearer layer
에서 요구하는 형식에 맞게 변환한다. SEQn
(sequence number)
값과 함께 요구되는 헤더 (header) 정보를 추가하고, network key
를 이용해 한 번 더 패킷을 암호화한다.
Network layer
에서는network key
를 이용해 수신된 메시지를 해독하고, 해당 메시지를 다른 노드로 전달할지 (relay) 혹은 상위 계층인Transport layer
로 전달할지 결정한다.
위 그림은 application key
가 들어있는 Access PDU
가 Transport layer
를 거쳐 Network layer
의 Network PDU
로 재구성되는 과정의 예시를 보여준다.
9.4 Bearer layer
Bearer layer
에서는 메시 네트워크에 포함된 노드 사이의 메시지를 주고 받는 방식을 정의한다. 앞서 소개한 일련의 과정으로 생성된 메시지는 advertising bearer
혹은 GATT bearer
를 통해 송수신된다.
advertising bearer
는 메시 프로토콜을 지원하는 모든 기기에서 메시지를 주고 받기 위해 사용되며, GATT bearer
의 경우 기본적으로 메시 프로토콜을 지원하지 않는 기기를 네트워크에 포함시켜 사용하고자 할 때 사용한다.
Reference
https://www.bluetooth.com/specifications/specs/
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.meshsdk.v5.0.0%2Fmd_doc_user_guide_mesh_basic_architecture.html
Comments