• 개요

    • 네트워크 통신이 이뤄지려면 통신을 위한 규약인 Protocol을 정의해야 하며, 이러한 Protocol로 구성한 계층을 Protocol Stack이라 한다.
    • BLE 또한 네트워크와 마찬가지로 디바이스 간 BLE 통신을 지원하기 위해 전용 Protocol Stack을 필요로 한다.
      • 해당 스택은 Bluetooth Classic에서 사용 불가하니 BLE와 혼동하지 않도록
    • 이러한 Protocol Stack을 통해 각 계층에서 Bluetooth 패킷에 대한 생성 및 분석이 이뤄지는 것
  • 스택 구조

    • 크게 Application, Host, Controller로 나뉜다.

    • Host와 Controller 사이의 인터페이스 역할은 HCI가 수행한다.

    • HCI (Host Controller Interface)

      • 호스트(주로 애플리케이션 프로세서)와 컨트롤러(주로 Bluetooth 칩) 간의 통신을 위한 표준 인터페이스
      • HCI는 디바이스에서 호스트와 컨트롤러가 데이터를 교환하는 방법을 정의한다.
    • 프로토콜 스택은 다음과 같이 구성되어 있다.

      제목 없는 그림.png

    • Connection 과정에서 주목할 부분은 다음과 같다.
      • Physical Layer
      • Link Layer
      • Generic Access Profile (GAP)
      • Generic Attribute Profile (GATT)
  • Physical Layer

    • Physical Layer에는 실제 Bluetooth Analog Signal과 통신할 수 있는 회로가 구성되어 있어 Analog <-> Digital 변환을 가능케 한다.
    • 2.4 GHz 밴드를 총 40개의 Channel로 나누어 통신을 한다.
      • 40개 Channel 중 3개 Channel은 Advertising Channel 이며, 각종 Advertising Packet을 비롯하여 Connection을 맺기 위해 주고 받는 Packet들의 교환에 이용된다.

      • 나머지 37개의 Channel은 Data Channel 로써 Connection 이후의 Data Packet 교환에 이용된다.

        제목 없는 그림1.png

  • Link Layer

    • Physical Layer 위에 위치하여 하드웨어와 소프트웨어 파트의 조합으로 구성된다.
    • 무선 통신 시스템에서 데이터 전송을 위한 기본적인 역할을 담당한다.
      • 물리적 연결 설정
      • 데이터 오류 감지 및 수정
      • 디바이스 간 연결 관리
    • 하드웨어 파트
      • 높은 컴퓨팅 능력이 요구되는 다음의 작업들이 처리된다.
      • Preamble, Access Address, and Air Protocol framing, CRC generation and verification, Data whitening, Random number generation, AES encryption 등
      • (각 항목들에 대해서는 추가 스터디 필요)
    • 소프트웨어 파트
      • 디바이스의 연결 상태를 관리한다.
      • 통신 과정에서 디바이스의 Role을 정의하고 이에 따라 변경되는 State를 정의한다.
    • Role은 Connection 이전의 역할(Advertiser, Scanner)과 Connection 이후의 역할(Master, Slave)로 분류된다.
      • Advertiser
        • Advertising Packet 송신
      • Scanner
        • Advertising Packet Scanning
        • 2가지 Scanning 모드를 갖는다.
          • Passive Scanning 모드: Advertising Packet 수신 후, 따로 응답을 보내지 않으며, Advertiser는 Scanner의 Packet 수신 여부를 알지 못한다.
          • Active Scanning 모드: Advertising Packet 수신 후, Scanner가 Advertiser에게 추가 데이터를 요구하기 위해 Scan Request를 보낸다. (이를 수신한 Advertiser는 Scan Response로 응답한다.)
        • Scan Request 와 Scan Response
          • Advertising Packet type의 한 종류이다.
          • ("BLE - 통신 매커니즘" 파트에서) 31bytes 이하의 User data에 대해서는 Advertising Signal Packet에 넣어서 보낼 수 있다고 설명했다.
          • 31bytes보다는 크지만 Connection까지 맺어서 보내기에는 상대적으로 작은 데이터가 있다고 가정할 시, Scan Request, Scan Response를 이용하면 두 번에 걸쳐 데이터를 나눠 보낼 수 있게 된다.
          • Advertising Packet을 받은 Scanner는 추가적인 User Data(예를 들어, Peripheral 디바이스의 이름)를 얻기 위해 Scan Request를 보내게 된다.
          • Scan Request를 받은 Advertiser는 나머지 데이터를 Scan Response Signal에 담아서 보낸다.
      • Master
        • 연결 요청
        • 연결 후 connection 관리
      • Slave
        • Master의 연결 요청 수신
        • Master의 timing 규약을 따름
    • Link Layer는 5가지 State를 가지고 있으며, 각 디바이스는 서로 연결이 되는 과정에서 State가 변한다.
      • Standby State

        • Signal Packet을 보내지도, 받지도 않는 대기 상태
      • Advertising State

        • Advertising Packet을 송신하고, 해당 Packet에 대한 상대 디바이스의 Response를 받고 응답할 수 있는 상태
      • Scanning State

        • Advertising Channel에서 Scan 중인 상태
      • Initiating State

        • Advertiser의 Connectable Advertising Packet 수신한 후 Connetion Request를 보내는 상태
      • Connection State

        • Connection 이후의 상태
      • (아래 그림은 각 State를 Diagram으로 나타낸 것이다.)

        제목 없는 그림2.png

  • GAP (Generic Access Profile)

    • BLE 디바이스 간의 상호작용 방식을 정의하는 고수준 프로파일
    • 디바이스 간의 연결을 설정하고, 디바이스 역할(마스터, 슬레이브, 어드버타이저, 스캐너)을 정의한다.
    • 때문에 GAP는 최상위 Control Layer라고도 불린다. (참고로 GATT는 최상위 Data Layer라고 부른다)
    • BLE 통신에 필요한 Role, Mode, Procedure, Security, Additional GAP Data Format 등을 정의한다.
      • 이 문서에서는 BLE Connection을 중점적으로 스터디하기 위해 Role에 대해서만 정리할 예정
    • 다음의 Role을 정의한다.
      • Broadcaster
        • Link Layer에서 Advertiser 역할을 수행한다.
        • 주기적으로 Advertising Packet을 보낸다.
        • ex) 온도 센서가 온도 데이터를 자신과 연결된 디바이스에게 일정주기로 보내는 행위
      • Observer
      • Central
      • Peripheral
    • Central과 Peripheral 장치가 연결 상태에서 데이터를 주고받는 빈도인 Connection Interval을 조정한다.
  • GATT (Generic Attribute Profile)