OM2M Release 2 오픈소스설치가이드및예제 2018 년 5 월 경북대학교통신프로토콜연구실 김소용 (thdyd324@gmail.com) 요약 최근 4차산업혁명이이슈가되면서사물인터넷 (Internet of Things) 이그대표기술중하나로주목받고있다. 본문서는이사물인터넷에대하여알아보고이를구현하기위한표준의하나인 onem2m에대해설명한다. 또한 onem2m의표준규격들을살펴보면서각특징을알아보고이를오픈소스 OM2M을이용하여 Raspberry Pi에구현한다그리고 OM2M 에서제공하는 sample plugin 예제를통해 onem2m의동작구조를살펴본다. 1
목 차 1. 서론... 3 2. onem2m 의구조... 5 2.1 1 차표준규격... 7 2.2 2 차표준규격... 8 3 OM2M 설치및사용법... 9 3.1 OM2M... 9 3.2 OM2M 실행환경및설치법... 10 3.3 OM2M 다운로드및설치... 13 3.4 OM2M 예제테스트... 17 4. 결론... 23 참고문헌... 23 2
1. 서론 사물인터넷이란사람, 사물, 공간, 데이터등모든것이인터넷으로서로연결되어, 정보가생성, 수집, 공유, 활용되는초연결인터넷을의미한다. 사물인터넷은자율판단하는지능을보유하고수백억이상의사물을관리하는서비스규모를보이며의미기반의모니터링및자율제어기능을가지고있다. 이러한기능들은이미존재하거나향후등장할상호운용가능한정보통신기술과활용하여다양한실제및가상사물간의상호연결을통해서, 진보된서비스를제공할수있다. 이를위해많은기업과표준화기구에서표준화를위한노력을보이고있다. Figure 1. 사물인터넷구조 onem2m은에너지, 교통, 국방, 공공서비스등산업별로종속적이고폐쇄적으로운영되는, 파편화된서비스플랫폼개발구조를벗어나응용서비스인프라 ( 플랫폼 ) 환경을통합하고공유하기위한사물인터넷공동서비스플랫폼개발을위해발족된표준화단체이다. onem2m은 2015년 1월요구사항, 용어정의, 아키텍처등 10개의표준규격을포함하는 1차규격을발표하였고현재표준확산에주력하는사실상표준화단체로성장하였다. 현재많은기업에서 onem2m을이용하여서비스창출및제품개발을하고있으며그입지를다지고있다. 3
Figure 2. onem2m 표준을이용하는플랫폼들본문서에서는 onem2m의구조에대해알아보고 1차표준규격과 2차표준규격에서제시된특징들을살펴본다. 또한통합개발환경인이클립스 (Eclipse) 를이용하여오픈소스 OM2M을 Raspberry Pi에설치하고이를이용하여 onem2m 표준을구현한다. 4
2. onem2m 의구조 onem2m 은기능에따라애플리케이션전용노드 (ADN: Application Dedicated Node), 애 플리케이션서비스노드 (ASN: Application Service Node), 중간노드 (MN: Middle Node) 및 인프라노드 (IN: Infrastructure Node) 로구성되어있다. Figure 3. onem2m의노드구조애플리케이션서비스노드는 M2M Application 뿐만아니라공통의서비스기능을포함하는일반노드이고애플리케이션전용노드는 M2M Application을포함하는 M2M 디바이스로 M2M 서비스만을포함하는제한된기능을가지는디바이스이다. 중간노드는디바이스노드들과네트워크인프라노드를연결해주는게이트웨이역할을하는노드이고인프라노드는네트워크인프라에위치해 M2M 서비스를제공해주는노드이다. 5
Figure 4. onem2m 구조레퍼런스모델 이노드들을구성하는엔티티는세가지계층으로이루어져있으며, 각엔티티의기능은 다음과같다. Figure 5. onem2m 엔티티 6
2.1 1 차표준규격 앞서언급하였던 onem2m의구조는 1차표준규격에서처음으로정의되었다. 1차표준규격은네트워크아키텍처와아키텍처를구성하는엔티티및공통서비스기능 (CSF, Common Service Function) 과이를제공하기위한공통서비스계층에서의레퍼런스포인트를정의한다. 공통서비스기능은사물인터넷서비스애플리케이션에서자주사용되는기능을정의한것으로데이터저장 / 공유, 장치관리, 그룹관리, 구독 / 통지 (Subscription/Notification), 위치정보, 과금등의기능을포함하며, 보안기능은기본적인인증, 접근제어등의기능을제공한다. Figure 6. 공통서비스기능 (CSF, Common Service Function) 또한, onem2m 코어프로토콜메시지 (primitive) 는 CoAP, HTTP 및 MQTT 프로토콜메시지를통해전송된다. onem2m의코어프로토콜은향후추가프로토콜바인딩을지원할수있도록특정메시지프로토콜에종속성을가지지않도록개발되었다. 7
2.2 2 차표준규격 2 차표준규격은다양한산업사물인터넷플랫폼및네트워크연동을주목적으로하기 위해발표되었다. 사물인터넷연동으로는 AllJoyn, OCF(Open Connectivity Foundation) 및 Lightweight M2M 기술과의연동규격을제공한다. Figure 7. AllJoyn과 onem2m의상호연동구조네트워크연동으로는 3GPP Rel-13 네트워크와연동을위한트래픽패턴설정 (Traffic pattern Configuration) 기능을정의하고있으며 3차표준규격에모니터링등의연동기능을추가하기위한기술보고서작업을지속하고있다. 이전의 1차표준규격에서는가전제어및센싱정보를교환하기위해사전에애플리케이션간정의한데이터모델로 container 및 content Instance 자원타입을이용했다. 이에비해 2차표준규격에서는 onem2m 플랫폼을이용하는모든애플리케이션이표준에정의된가전디바이스데이터모델 (Appliances device data model) 을사용함으로써가전제품제조사및애플리케이션개발자간에별도의데이터모델을정의하는번거로움을없애고제품과애플리케이션간의호환성을보장한다. 8
3. OM2M 설치및사용법 3.1 OM2M OM2M은 ETSI-M2M(European Telecommunication Standards Institute Machine To Machine) 표준을기반으로한 M2M(Machine To Machine) 상호운용을지원하는오픈소스서비스플랫폼을제공하고, 개방형인터페이스인 RESTful 접근법을따르므로기본네트워크와독립적으로서비스및응용프로그램을개발할수있다. 또한 OM2M은 OSGi(Open Service Gateway initiative) 계층위에실행되는모듈방식구조를제안하여플러그인을통해확장성을높인다. OSGi란네트워크상에연결된디바이스들이다양한서비스를공유할수있도록하는자바언어기반의동적플랫폼을말한다. Figure 8. OM2M의구조 OM2M은 2017년 8월 1.1.0 버전을출시하면서 onem2m의 2차표준규격을지원하고동시에 MQTT 통신바인딩기능, NoSQL MongoDB 연동기능등이추가되면서다양한활용방식을제공한다. 9
3.2 OM2M 실행환경및설치법 본문서의실행환경으로는서버역할을하는 OM2M의 IN-CSE를 Raspberry Pi 2 Model B 에설치하고 sample plugin 예제를가지고있는 MN-CSE를같은 Raspberry Pi에설치하여. IN-CSE에연결하였다. 그리고 OM2M에서제공하는웹페이지를클라이언트로이용하였다. OM2M의설치법은두가지가있는데 OM2M의소스코드를받아컴파일하여설치하는방법과이미빌드된 OM2M의바이너리파일을받아설치하는방법이있다. 본문서에서는전자인소스코드를컴파일하여설치하는방법을설명한다. 먼저 Raspberry Pi에이클립스를설치하고 Git과 Maven plugin을설치하는과정을설명한다. 터미널에 sudo apt-get install eclipse 명령어를입력하여이클립스를설치한다. 이후이클립스를실행하여상단에위치한메뉴에서 Help -> Install New Software를클릭하게되면 Figure9와같은 plugin install창이생성된다. Figure 9. plugin install 창 install 창에서 Add 를클릭하면 Repository 를입력하는창이생성된다. location 부분에아 10
래의주소를입력하고 OK 를클릭하면 Git plugin 목록을 install 창에서확인할수있다. http://archive.eclipse.org/egit/updates-2.1 Figure 10. Git Repository 추가 Figure 11. 설치할 Git plugin 목록 Next 를클릭하여설치를진행하게되면 Figure12 와같은플러그인적용을위한메시지창 11
이생성된다. Yes 를눌러재시작을하면플러그인적용이완료된다. Figure12. 플러그인적용 같은방식으로 location 부분에아래의주소를입력하고 Maven plugin 을설치한다. http://download.eclipse.org/technology/m2e/releases/1.4 Figure 13. Maven Repository 추가 12
3.3 OM2M 다운로드및설치 이클립스상단메뉴에 Window -> Show View -> Other 을클릭하면 Figure14 처럼 Show View 창이생성되고 Git 을클릭하면 Git Repositories 를볼수있다. 이것을선택한채 OK 를클릭하면 Git Repository 를관리하는뷰어가이클립스에생성된다. Figure 14. Show View 와 Git Repositories Git Repositories 내부에 Clone a Git repository를클릭하거나상단에 Clone 아이콘을클릭하여 URI 박스에아래의주소를입력한다. https://git.eclipse.org/r/om2m/org.eclipse.om2m 13
Figure 15. Clone Git Repository Next를클릭하여 Local Destination설정구간으로오게되면 Figure16과같이 Projects탭에있는 Import all existing projects after clone finishes옵션을체크한다. 그리고 Finish를클릭하면해당주소에서 Git Repositories에 org.eclipse.om2m의이름을가진 Repository를추가하게된다. 14
Figure 16. Local Destination 설정및 org.eclipse.om2m 추가 Package Explorer창에 Figure16과같이 org.eclipse.om2m 항목이나타나지않을경우, org.eclipse.om2m을클릭하면 Figure17과같이 Working Directory를확인할수있는데, 이것을우클릭하여생성되는메뉴에서 Import Projects를클릭하면 org.eclipse.om2m 항목을 Package Explorer에생성할수있다. Figure 17. Working Directory 15
Figure 18. Repository 를통한 Project 생성 Package Explorer 에위치한 org.eclipse.om2m 디렉토리를우클릭한후 Run As > Maven Install 을클릭하면빌드가시작되고 Build Success 가콘솔창에표시되면서빌드가완료된다. Figure 19. maven install 명령실행 Figure 20. 빌드완료상태창 16
3.4 OM2M 예제테스트 빌드가완료되면 org.eclipse.om2m/org.eclipse.om2m.site.in-cse 폴더안에 target 폴더가 생성된다. 터미널을실행하여 target/products/in-cse/linux/gtk/arm 폴더로들어가 start.sh 파일을 bash start.sh 명령으로실행시켜주면 Figure21 처럼 IN-CSE 가실행된다. Figure 21. IN-CSE 실행화면이제웹브라우저를실행하여주소창에 127.0.0.1:8080/webpage를입력하면 OM2M 웹페이지를볼수있고 id와 password에 admin을입력한뒤로그인하면 OM2M의리소스트리를볼수있다. 17
Figure 22. OM2M 웹페이지 IN-CSE 리소스하단에 MN-CSE 리소스를등록하기위해터미널을하나더실행하여 org.eclipse.om2m.site.mn-cse/target/products/mn-cse/linux/gtk/arm폴더로 이동해 bash start.sh 명령을하여 MN-CSE를실행한다. Figure 23. MN-CSE 리소스추가 18
MN-CSE 를실행중인터미널에서 ss 명령을주면현재실행할수있는플러그인의목록 이출력된다. Figure 24. MN-CSE 의플러그인목록 플러그인목록에서 30 번에해당하는 org.eclipse.om2m.ipe.sample 을실행하면 Figure25 와같 이 sample plugin 이실행된다. Figure 25. LAMP sample plugin 19
웹브라우저에서 mn-cse 리소스를클릭하고 csi Attribute 의 value 값인 /mn-cse 를클릭하 면 mn-cse 의리소스트리를볼수있다. Figure 26. IN-CSE 의 MN-CSE 정보 20
Figure 27. MN-CSE의리소스트리 mn-name 트리하단에있는 LAMP_0를클릭하면 cin_ 임의의숫자 형태를가지는 LAMP_0의컨테이너객체를확인할수있다. 이컨테이너객체를클릭하면 Figure28과같이테이블목록에 switchon을확인할수있는데이것을클릭하면 Figure29와같이 sample plugin에서 LAMP_0에해당하는전구가켜지는것을확인할수있다. 21
Figure 28. LAMP_0 의컨테이너객체 Figure 29. sample plugin 의 LAMP_0 변화 22
4. 결론 지금까지본문서에서는사물인터넷과 onem2m 표준에대하여설명하였고 OM2M을이용하여 onem2m표준을직접구현해보았다. onem2m은시장적용확대를위해산업체, 차량등도메인에대한기술지원을강화하고, 제품개발확대를위한가이드, 제품프로파일, 시험인증규격개발을지속적으로하고있다. 또한 onem2m은블록체인, 지능형 IoT, 가상화등최신기술트렌드를지원하기위한논의가본격적으로진행하면서좋은전망을보이고있다. OM2M은홈페이지에자세한설명과함께쉬운사용법으로개발자라면누구나쉽게구현할수있도록되어있어접근성이아주좋아추후개발자들이 IoT 서비스를개발할때, 유용하게쓰일것으로기대된다. 참고문헌 [1] 위키백과 OneM2M, https://ko.wikipedia.org/wiki/onem2m [2] OM2M 오픈소스설치가이드, http://protocol.knu.ac.kr/tech/cpl-tr-14-03-om2m.pdf [3] 정승명, onem2m Release 3 표준, IoT 표준 / 기술동향 2017-9 호 [4] 백승범, IoT 오픈플랫폼기반제품서비스개발 [5] onem2m 개발자가이드, http://www.onem2m.org/application-developer-guide/welcome 23