스마트폰이 등장한 이후로 한때 M2M이나 유비쿼터스(Ubiquitous)로 불리던 것들이 IoT(사물인터넷)란 이름으로 재조명 받고 있습니다. 정부나 기업들도 앞다퉈 IoT란 이름을 붙여서 새로운 사업이나 제품을 출시하고 있는 상황이죠. 

현재 가장 주목받고 있는 기술 중 하나가 블루투스 비콘(Bluetooth Beacon)일 겁니다. 이미 상품화 된 것도 많죠.  실질적으로 사용자들이 쉽게 체감 할 수 있고 별도로 장치를 구입하지 않아도 기존의 스마트폰에서 쉽게 사용이 가능 하기 때문일 겁니다. 


서론은 이쯤에서 접고.. 비콘기술에 사용되는 BLE(Bluetooth Low Energy)에 대해 알아봅시다. 


BLE란?

2010년 6월에 발표한 블루투스 버전 4.0에 Low Energy기술이 탑재되었습니다. Bluetooth Smart라고도 불리며 일반적으로 Bluetooth Low Energy를 줄여 BLE로 불립니다. 

요즘 출시되는 대부분의 스마트폰에 적용되어 있으며 Andorid는 4.3 이후 버전 부터, 아이폰은 iOS5(iPhone 4S) 이후 버전에서 사용 가능합니다. 



  • 기존 버전 대비 다른 점은 아래와 같습니다. 

  1. 저 가격 생산

  2. 저 전력 동작

  3. 디바이스 연결 절차를 간소화

  4.  패킷 사이즈 감소

  5. 채널 수 감소

  6. 음성지원 안됨

  7. 스타-버스 토폴로지 지원


한마디로 힘이 덜드는 일을 오랫동안 지속 가능하도록 했다는 겁니다.  


  • 전원 사용의 효율성을 높히기 위해 다음과 같은 특징을 가집니다.

  1. 동작 사이클을 줄여서 더 오랜시간 슬립(Sleep)하고 덜 자주 깨어납니다. 

  2. GATT profile을 사용해서 더 작은 데이터 패킷을 더 짧은 시간동안 전송합니다. 

  3. 통신을 하지 않는 동안 링크를 유지하지 않습니다. 다음 번 통신 시점에 빠르게 다시 연결을 맺습니다. 


이런 특징들 덕분에 기존 버전의 블루투스에서 주로 사용되던 헤드셋, 키보드와 같은 장치 보다는 헬스케어와 같은 애플리케이션에서 사용하기 적합합니다. 

그리고 비콘 처럼 별도의 전력을 연결하지 않고 작은 배터리로 동작하는 장치에 적용하려면 저전력에서 동작해야 하는데 그걸 BLE가 충족시킬 수 있어서 블루투스 비콘이 이처럼 빠르게 확산되고 있는 거라고 생각됩니다. 




프로토콜 구조

BLE의 프로토콜 스택은 크게 컨트롤러, 호스트 그리고 어플리케이션 영역으로 구분 할 수 있고, 컨트롤러와 호스트 영역 간의 통신을 위해 HCI가 사용됩니다. 


Bluetooth Protocol StackBluetooth Protocol Stack



이 그림은 기존 블루투스와 BLE의 프로토콜 스택을 그림으로 표현한 것입니다. 

두가지 버전을 모두 지원하는 것을 듀얼 모드(Dual-mode)라고 하며 Bluetooth Smart Ready라고도 불립니다. 



  • 각 스택별 역할 

  1. LM(Link Manager): 두 장치간의 무선 링크를 설정하고 컨트롤 하는데 사용됩니다. 

  2. HCI(Hardware Controller Interface): 컨트롤러와 호스트간 통신을 위해 사용됩니다. (bluez패키지에 포함되어 있는 hciconfig, hcitool 명령어를 사용하면 됩니다.)

  3. L2CAP(Logical Link Control and Adaptation layer Protocol): 상위 레벨로 데이터 서비스를 제공하고, 컨트롤러로 보낼 패킷을 쪼개주거나 받은 패킷을 재조합 하는 역할을 합니다. 

  4. SDP (Service Discovery Protocol): 자신이나 다른 장치에서 제공하는 서비스를 탐색하는데 사용됩니다. (bluez 패키지에 포함되어 있는 sdptool 명령어를 사용하면 됩니다. )

  5. RFCOMM (Radio Frequency Communications): 가상 시리얼 데이터 스트림을 생성해서 케이블을 대신 할 수 있도록 해주는 프로토콜입니다. 다시 말해 시리얼 포트 에뮬레이션을 제공합니다. ( bluez패키지에 포함되어 있는 rfcomm 명령어를 사용하면 됩니다.)

  6. GAP (Generic Access Profile): 장치간 페어링과 링크를 위해 사용됩니다. 어플리케이션 레이어에서 다른 블루투스 모드를 구현하기 위한 인터페이스로 사용됩니다.

  7. SM (Security Manager): 암호화화 사용자 인증을 위해 사용됩니다. AES-128bit 암호화 엔진을 사용합니다.

  8. GATT(Generic Attribute Profile): ATT(Attribute Protocol)을 이용하여 서비스 검색, 특성 값 파악, 읽기, 쓰기 등의 기능을 수행합니다. 



디바이스간 통신


BLE는 2.4GHz ISM, 40개의 채널을 사용합니다. 3개의 채널(38~40번째)을 사용해서 광고(advertise)를 하고, 남은 37개의 채널을 통해 데이터를 주고 받습니다.



  • 역할 

BLE에서는 주변장치(Peripheral device) 와 중앙 장치(central device)로 역할을 나눌 수 있습니다. 보통 central은 scan을 하는 스마트폰이 되고, Peripheral 은 비콘과 같은 센서 장치가 됩니다. 

peripheral은 동시에 하나의 central 장치와만 연결을 맺을 수 있습니다. 물론, 하나의 central은 여러 개의 peripheral과 연결을 맺을 수 있습니다. 두 장치 간의 연결이 이루어진 이후에는 peripheral의 advertising이 중단되서 다른 장치에서 peripheral의 advertising을 스캔할 수 없게 됩니다. 



  •  페어링(pairing)과 본딩(bonding)

페어링 절차는 본딩을 생성하기 위해 시작되거나, 서비스에 접속할 때 장치의 ID가 필요한 경우 시작됩니다. 페어링 과정에서 링크 키(link key or shared secret)를 생성하게 되고, 링크 키 생성 후에는 두 장치간 통신은 암호화 됩니다. 

페어링 매커니즘은 v2.1이전과 이후로 나뉘는데 2.0까지는 두 장치가 모두 동일한 PIN코드를 입력해야 페어링이 이루어 졌습니다. v2.1부터는 SSP(Secure Simple Pairing) 매커니즘이 적용 되었는데, 이는 공개키 암호화 형식을 사용해서 MITM공격으로 부터 보호할 수 있는 기능도 제공합니다.

페어링을 성공하고 난 후 두 장치간 본딩을 하도록 하면 다음 번 두 장치간 연결시에는 페어링를 필요로 하지 않게 됩니다.



개발 툴 설치 

BLE 동글(dongle)을 구입해서 다양한 설정을 직접 해보고 싶다면  bluez패키지를 설치 하시면 됩니다. 

해당 패키지 안에는 아래와 같은 유용한 툴들이 포함되어 있습니다. 


  1. hciconfig : 블루투스 장치의 기본적인 설정이 가능합니다. scan을 켜고 끄거나, advertising을 시작/중지 시킬 수 있습니다.

  2. hcitool: 블루투스 장치를 사용 하는데 필요한 기본적인 명령이 가능합니다. scan을 시작하거나 연결을 맺거나 끊을 수 있습니다.

  3. sdptool: 서비스와 관련된 명령이 가능합니다. 자신이나 통신이 가능한 다른 장치의 서비스 정보를 조회하거나 새로운 서비스를 추가/삭제 하는것도 가능합니다.

  4. rfcomm: rfcomm 관련 설정 및 조회가 가능합니다.

  5. bluez-* : 블루투스 장치와 관련된 다양한 설정 및 정보 조회가 가능합니다.

예) bluez-test-discovery: 스캔 가능한 블루투스 장치들의 정보를 보여준다. Pairing, bonding 여부를 확인 할 수 있습니다.


Posted by KT한
,