oneM2M 개요
oneM2M은 여러 국가의 표준화 기관들이 글로벌 사물인터넷 표준 개발을 위해 2012년
8월에 결성된 표준 협의체이다. 한국의 TTA를 비롯하여 유럽의 ETSI, 미국의 TIA와 ATIS, 일
본의 TTC와 ARIB, 중국의 CCSA까지 총 7개의 표준 제정 기관들이 주도하는 가운데 다양한 기
업들이 참여하고 있다.
oneM2M은 스마트 홈, 스마트 헬스케어 등 다양한 분야에서 사물인터넷 서비스를 제공할
수 있는 공통 서비스 플랫폼을 정의하고 필요한 기능들을 개발하는 것이 주된 역할이다. 또한
oneM2M의 표준화 대상은 서버, 게이트웨이, 디바이스에서 공통기능들이 위치하는 미들웨어 스
택이며, 표준화를 통하여 서버, 디바이스, 게이트웨이 모든 영역에서 사물인터넷 서비스에 필요
한 공통 기능을 표준에 맞추어 제공하고자 하는 목적을 가지고 있다.
oneM2M은 활용 가능 서비스 도메인으로 에너지, 헬스케어, 공공서비스, 주거형 서비스 등 총
7개의 산업분야에서 33개의 유스케이스에 대한 분석을 통해 공통 기능들을 도출하였다.
사물인터넷 표준을 개발하기 위한 여러 단체들 : oneM2M, AllSeen Alliance, OCF(Open Connectivity
Foundation) 등
oneM2M 공통 서비스 기능 (Common Service Functions)
- 등록: 다양한 사물인터넷 환경이 존재하더라도 모든 사물인터넷 디바이스들이 인터넷을 통
해 접속되기 위해서는 서버에 등록되어야 하기 때문에 이를 위한 등록 절차를 기술한다. - 발견 및 검색: 등록된 사물인터넷 장치들은 인터넷을 통해 검색이 가능해야 한다. 검색의 조
건으로 주제나 이름을 주고 검색 등이 가능하다. - 보안
- 위치
- 데이터 관리 및 저장
- 등록 및 공지: 특정 사물인터넷 디바이스의 변화가 있을 때만 변화된 값들을 수신하고자 한
다면, 등록 및 공지 기능을 활용할 수 있다. 관심 자원(리소스: resource)에 등록하면 해당
자원의 상태 변경이 있을 때 변경된 내용에 대한 공지가 이루어진다. - 디바이스 관리
- 그룹 관리: 집안에 위치하고 있는 여러 개의 사물들, 예를 들어 모든 전등들을 한번에 제어
하고자 한다면 그룹 관리 기능을 활용할 수 있다. 원하는 기기들을 하나의 그룹으로 설정한
후 해당 그룹에 제어 명령을 보내면 그룹에 소속된 기기들이 한번에 처리된다. - 커뮤니케이션 관리
- 네트워크 서비스 노출
- APP 및 서비스 관리
- 서비스 요금 및 정산
유스케이스 구조
oneM2M에서는 사물인터넷 도메인에서 일반적으로 활용되는 구조를 다음과 같이 크게 4개의
논리적인 노드를 사용해서 정의하였다.
인프라스트럭처 노드, Infrastructure Node (IN): IoT/M2M의 서비스 인프라스트럭처를 의
미하는 논리적인 노드로 일반적으로 서버를 의미한다.미들 노드, Middle Node (MN): 수많은 필드에 설치되어 동작하는 IoT/M2M 디바이스들을
연결하고 제어할 수 있는 논리적인 노드로서 일반적으로 게이트웨이를 의미한다.어플리케이션 노드, Application Dedicated Node (ADN): 필드에서 동작하는 디바이스들
중, oneM2M의 공통 기능에 대한 구현 없이 단순하게 값들을 센싱하여 게이트웨이 또는 서
버로 전달하는 제한적인 기능을 가진 논리적인 노드를 의미한다.어플리케이션 서비스 노드, Application Service Node (ASN): 필드에서 동작하는 디바이스들
중 oneM2M 의 공통기능을 포함하고 있는 논리적인 노드들을 의미한다. 즉, 게이트웨이의 도움
없이도 서버에 oneM2M의 공통 기능 중 하나인 등록 등을 수행할 수 있는 논리적인 노드이다.
──────────────────────── Home Domain ───────────────────────── ──── oneM2M Service Platform ────
ADN-AE-1 (Light#1) ─┬─── mca ──── MN-AE, MN-CSE (Home Gateway) ────── mcc ────── IN-CSE
ADN-AE-2 (Light#2) ─┘
────── mca ────── IN-AE (Smartphone embedding with applications as a remote light controller)
neM2M에서 정의한 각 노드에는 두 개의 개체 (Entity)가 존재하는데 각 개체의 역할 및 종류는 다음과 같다.
어플리케이션 개체, Application Entity (AE): IoT/M2M 서비스를 제공하기 위한 애플리케
이션 기능 로직을 의미하며, AE에 대한 예는 관제시스템, 스마트그리드 시스템, 헬스케어
시스템을 위한 애플리케이션 등을 예로 들 수 있다.공통 서비스 개체, Common Service Entity (CSE): oneM2M 공통 서비스 플랫폼의 공통 서비
스기능을 제공하는 부분으로 컴퓨터 시스템으로서는 미들웨어 플랫폼 소프트웨어에 해당한다.예를 들어 조명과 같은 디바이스에 대한 애플리케이션은 조명을 제어하기 위한 로직을 포함하고 있고, oneM2M 공통기능이 포함되기에는 메모리, CPU 등의 제약사항이 많기 때문에, 보통 ADN-AE로 구현될 수 있다. oneM2M 서비스 플랫폼은 각종 디바이스들이 리소스로 등록되어 다른 서비스 등을 가능하게 하므로 IN-CSE의 역할을, 여러 조명 기기들이 연결되어 서비스 플랫폼에 등록된 데이터에 대한 전달 등을 담당하는 홈 게이트웨이의 애플리케이션은 MN-AE의 역할을 수행한다.
oneM2M 아키텍처에서 정의된 두 개의 참조 포인트인 Mca와 Mcc는 본 유스케이스에서 각 각
AE와 CSE사이 (Mca), 두 개의 CSE사이에서 (Mcc) 사용된다. 조명 애플리케이션 (ADN-AE-1 또는 ADN-AE-2)과 홈 게이트웨이 MN-CSE 사이에서 사용되는 참조 포인트는 Mca로 참조될 수 있다.
요약하면, oneM2M 원격 조명 제어 유스케이스 아키텍처에 사용되는 구조 및 개체는 다음과같다.
ADN-AE1: 조명 Light#1에 내장된 애플리케이션으로서 조명#1을 제어하고 Mca 참조 포인트를 통하여 홈 게이트웨이 MN-CSE와 상호작용하는 기능을 가지고 있다.
ADN-AE2: 조명 Light#2에 내장된 애플리케이션으로서 조명#2을 제어하고 Mca 참조 포인트를 통하여 홈 게이트웨이 MN-CSE와 상호작용하는 기능을 가지고 있다.
IN-AE: 스마트폰 디바이스에 내장된 어플리케이션으로서 Mca 참조 포인트를 통해서oneM2M 서 비스 플랫폼인 IN-CSE와 직접 상호작용하여 조명 Light#1과 Light#2를 원격으로 제어하는 기능을 가지고 있다.
MN-AE : 홈 게이트웨이 MN-CSE에 내장되어 있으며 Mca 참조 포인트를 통해서 MNCSE와상호 작용하는 게이트웨이 어플리케이션이다.
사물인터넷 기능들
oneM2M에서는 모든 사물들이 서버에 위치하고 있는 리소스로 표현되며, 이러한 리소스를 표
현하고 제어하기 위한 다양한 리소스 제어방법들이 존재한다. 본 절에서는 그 중에서 본 유스케
이스에서 사용된 구독(Subscription), 그룹 관리(Group Management) 및 검색(Discovery) 기
능 에 대해 설명한다.
구독(Subscription)
구독(Subscription)은 애플리케이션 사이의 데이터 교환에 유용하게 쓰이는 기능이다. CSE 내
부에는 많은 데이터 및 서비스가 리소스의 형태로 저장되어 있고, oneM2M 애플리케이션은 이
러한 리소스를 통하여 원하는 데이터를 읽고 쓸 수 있다. 애플리케이션이 특정 리소스에 관심이
있어 해당 리소스가 상태가 변경될 경우 자동으로 변경된 리소스에 대한 정보 알림을 받고자 할
경우 CSE가 제공하는 구독 기능을 이용할 수 있다.
이 때 구독할 수 있는 정보는 구독 대상 리소스에 대한 다른 엔티티의 접근 내역, 리소스의 속성
변경 및 자식 리소스의 변경을 포함한다. 검색 기능과 비슷하게 특정 조건을 만족하는 변경사항만
알림 받기 위해 알림 이벤트 조건(notification-EventCriteria)을 설정할 수도 있다. 즉, 이러한
구독 기능을 통하여 지속적으로 상태의 변화를 확인하려 할 경우 발생되는 불필요한 네트워크상
의 트래픽을 감소시키고, 대상 사물의 변화가 있을 때에만 변경 값들을 확인할 수 있게 해준다.
그룹 관리(Group Management)
그룹 기능은 그룹을 구성하고 있는 하나 이상의 리소스에 대해 간편하고 일률적인 접근을 할
수 있는 기능을 제공한다. 예를 들어 100개의 리소스에 대해서 그룹기능이 없을 경우에는 100번
의 획득 요청을 개개의 리소스들에 대해서 보내야 하나 그룹기능을 통할 경우 해당 그룹 리소스
에 대한 단일 획득 요청을 보냄으로써 100개 리소스의 정보를 한번의 트랜젝션을 통해 획득할 수
있다. 이러한 그룹 멤버 단일 접근 기능을 이용하기 위해서는 우선 관련 있는 멤버 리소스들을
정의할 수 있는 그룹 리소스를 생성하고, 그룹으로 제어하고자 하는 리소스들을 해당 그룹 리소
스에 등록해야 한다.
검색(Discovery)
검색(Discovery) 기능 (혹은 발견 기능)은 특정 CSE에 등록된 리소스들에 대한 검색을 수행하
는 기능이다. 여기서, 검색의 대상은 엔티티가 아닌 리소스라는 특징을 가진다. oneM2M은 리소
스 기반의 아키텍처를 채용하고 있고, 서비스를 리소스를 통해 제공하므로, 다양한 방식으로 리
소스들을 검색하는 기능을 제공하고 있다. 요청자는 특정 리소스를 검색하기 위한 조건을 명시
하여 요청 메시지를 CSE로 전송하고, 수신 CSE는 조건에 맞는 리소스를 자신이 가진 리소스들
중에 검사하여 조건에 맞는 리소스 찾고 이 목록을 반환한다.
다른 기능과는 다르게 검색 기능을 위한 별도의 리소스 타입은 존재하지 않는다. 즉 요청자는
리소스 발견을 위한 요청을 “검색” 리소스에 전송하지 않고 임의의 리소스에 전송할 수 있다. 이
리소스의 위치는 리소스 검색의 시작점이라고 할 수 있다. 앞서 살펴본 것과 같이 CSE는 리소스
를 트리 (Tree) 형식으로 저장하고 있다. 따라서 여기서 말하는 검색 시작점은 리소스 트리상의
특정 리소스를 의미하고 리소스 검색의 범위는 시작점이 가리키는 리소스 및 해당 리소스에 대한
모든 하위 리소스를 포함한다.
검색 기능은 획득 동작 (RETRIEVE Operation)을 사용한다. 검색 기능에는 특정 조건을 만족하는 자원을 검색할 수 있도록 필터링
기능을 제공하는데 이는 요청 파라미터 중 fc (Filter Criteria)를 통해서 사용할 수 있다. fc는 다
양한 필터 조건으로 구성되어 있다. 예시처럼 특정 자원 타입을 검색할 수도 있고 특정 시간 이
후에 생성된 자원 만을 검색할 수도 있다. 그리고 검색 결과를 제한할 수도 있다.
필터 조건은 여러 개를 동시에 사용할 수 있도록 되어 있어, 어플리케이션이 원하는 모든 조건
들을 필터를 통해 전달할 수 있다. 동일한 조건을 여러 개 사용하는 경우는 AND 또는 OR 논리
연산을 적용하여 결과를 반환한다.
제어 절차 및 구현
본 절에서는 앞에서 설명된 개념들을 토대로 원격 조명 제어가 가능한 IoT 플랫폼을 구현하기
위해 필요한 절차와 구현에 대해 설명한다.
앞서 정의한 원격 조명 제어 유스케이스의 경우 설치 대상이 일반 가정이며, 단순 유스케이스
를 다루고 있으므로, 많은 CSE및 AE 없이, 3개의 엔티티 (IN-AE, IN-CSE 그리고 ADN-AE)로 시스템을 구성할 수 있다. 특히, 별도의 게이트웨이 (MN) 노드 없
이 필드 도메인을 어플리케이션 로직을 포함한 엔티티 (ADN-AE)로만으로 구성하고, 직접 서
버의 역할을 하는 인프라 엔티티 (IN-CSE)로 접속하여 해당 리소스들을 생성할 수 있게 함으로
써, 시스템을 좀 더 가볍고 쉽게 구성할 수 있다.
Subscription ──── Container ──── ADN-AE ──────── IN-CSE ──────── IN-AE
시스템 구성을 위해 가장 먼저 진행되어야 하는 것은 조명 리소스에 대한 등록이 oneM2M 플
랫폼 서버 역할을 수행하는 IN-CSE에 이루어져야 한다. 최초 서버에는 리소스 관리를 위해 루
트 리소스인 IN-CSE리소스가 생성되고, 다른 리소스들의 등록을 기다리게 된다. 본 유스케이스
에서는 IoT 홈에 설치되어있는 조명들에 대한 제어를 다루기 때문에, 등록 및 리소스 생성과 관
련하여 IoT 홈에서 동작하는 여러 센서들을 관리하기 위해 IoT Home에 해당하는 ADN–AE를 생성하게 된다. 이후, 조명에 각종 정보들을 관리하기 위해 각각의 조명
에 대한 Container들을 생성한다 (Light#1 container와 Light#2 container). 또한, 두개의 컨테
이너에서 발생되는 변경들을 모니터링 하고 관리하기 위해 구독을 두 개의 컨테이너에 생성하게
된다. 이러한 설정이 이루어지고 난 뒤, 서버 단에서 생성된 리소스는 <그림 6>과 같은 구조를
가지게 된다. 즉, 서버의 이름인 “Mobius-yt” 리소스가 생성된 후, 제어하고자
1 | "cnt": [ |
컨테이너는 oneM2M 표준에서 리소스의 다양한 정보들
을 저장하기 위한 리소스로 각각의 컨테이너가 필요한 정보에는 부모 리소스의 path 그리고 컨
테이너에 대한 이름 등이 있다.