ISSN 2383-6318(Print) / ISSN 2383-6326(Online) KIISE Transactions on Computing Practices, Vol. 21, No. 5, pp. 359-364, 2015. 5 http://dx.doi.org/10.5626/ktcp.2015.21.5.359 Remote Binder: 안드로이드디바이스간원격프로시저호출 (Remote Binder: Remote Procedure Call between Android Devices) 정기현 강희은 이권용 박성용 (Kihyun Jeong) (HeeEun Kang) (Kwonyong Lee) (Sungyong Park) 요약최근사물인터넷의성장으로안드로이드가탑재된임베디드디바이스가증가함에따라, 다수의디바이스들이서로연결되고협력하여동작할수있는환경에대한필요성이증대되고있다. 이러한환경에서는네트워크를통하여다른디바이스에대한정보를얻거나, 원격제어를위해다른디바이스내정의된프로시저를호출할수있는기능등이필요하다. 본논문에서는안드로이드플랫폼에서구동되는디바이스들이원격으로다른디바이스내프로시저를호출하는방법인 Remote Binder 를제안한다. Remote Binder 에서는기존의안드로이드플랫폼에서디바이스내바인더노드를참조하여서비스호출하는개념을활용하여다른디바이스내의바인더노드를참조하여해당디바이스의서비스를호출한다. 키워드 : 안드로이드, 원격프로시저호출, 사물인터넷, 프로세스간통신 Abstract As Internet of Things(IoT) has become one of the most rapidly growing market in the world, the number of embedded Android devices has increased. Therefore, it is necessary to set up an environment that connects and cooperates between the devices via network. The environment requires an ability not only to obtain information about other devices through a network but to control remote devices by invoking remote procedures. This paper suggests the Remote Binder, which is a method for remote procedure call between devices operating on Android platform. It invokes procedures of other Android devices without any revisions via network by extending the binder structure which is used for inter-process communication in Android. Keywords: android, remote procedure call, internet of things, inter-process communication 이논문은 2014년도정부 ( 미래창조과학부 ) 의재원으로한국연구재단 -차세대정보 논문접수 : 2014년 11월 14일 컴퓨팅기술개발사업의지원을받아수행된연구임 (No.2012M3C4A7033348) (Received 14 November 2014) 비회원 : 서강대학교컴퓨터공학과 논문수정 : 2015년 1월 27일 ki586@hanmail.net (Revised 27 January 2015) 심사완료 : 2015년 3월 3일 heun831@gmail.com (Accepted 3 May 2015) kwonyong82@gmail.com 종신회원 : 서강대학교컴퓨터공학과교수 (Sogang Univ.) parksy@sogang.ac.kr (Corresponding author 임 ) CopyrightC2015 한국정보과학회ː 개인목적이나교육목적인경우, 이저작물의전체또는일부에대한복사본혹은디지털사본의제작을허가합니다. 이때, 사본은상업적수단으로사용할수없으며첫페이지에본문구와출처를반드시 명시해야합니다. 이외의목적으로복제, 배포, 출판, 전송등모든유형의사용행위 를하는경우에대하여는사전에허가를얻고비용을지불해야합니다. 정보과학회컴퓨팅의실제논문지제21권제5호 (2015. 5)
360 정보과학회컴퓨팅의실제논문지제 21 권제 5 호 (2015. 5) 1. 서론사물인터넷이란인터넷을기반으로모든사물을연결하여사람과사물, 사물과사물간의정보를상호소통하는지능형기술및서비스를말한다 [1]. 2014년 10대전략기술중하나로사물인터넷을꼽은가트너에따르면전세계적으로 500억개의기기가연결될것으로전망되고있다 [2]. 또한 2020년세계사물인터넷시장규모는 2013년대한민국의 GDP인약 1조 2000억달러보다더큰 1조 9000억달러 ( 약 2,033조원 ) 로성장할예정이다 [2]. 이러한추세를반영하듯, 최근임베디드디바이스들이일상화되고그종류또한다양해지고있다. 스마트폰이나태블릿이외에도스마트시계, 스마트안경등의웨어러블디바이스가등장했고, 가전및차량등도소프트웨어를탑재한임베디드디바이스로변화하고있다. 2014년기준으로임베디드디바이스를대표할수있는스마트폰의플랫폼들중가장보편적인것은시장점유율 84.7% 를보유한안드로이드이며향후다양한종류의임베디드디바이스를구동하는플랫폼으로각광받고있다 [3]. 실제로안드로이드는스마트폰, 태블릿뿐만아니라스마트안경의어플리케이션을개발할수있는 SDK를공개하면서웨어러블디바이스까지그영역을확장하였다. 사물인터넷의성장으로안드로이드가탑재된임베디드디바이스가증가함에따라, 다수의디바이스들이서로연결되고협력하여동작할수있는환경에대한필요성이증대되고있다. 이러한환경에서는네트워크를통해다른디바이스의정보를얻거나, 원격제어를위해다른디바이스내프로시저를호출할수있는기능등이제공되어야한다. 현재의안드로이드플랫폼은커널레벨의바인더드라이버를통해단일디바이스내의프로세스간프로시저호출 ( 프로세스간의 RPC) 을제공하고있다. 안드로이드내의서비스들은각각바인더노드를가지고있으며, 해당서비스를호출하고자하는클라이언트는바인더노드를참조하여서비스를호출한다. 시스템서비스외에도응용프로그램에서정의한서비스와같이바인더를사용하는모든서비스들은바인더노드를가지고있기때문에이바인더노드를참조하여대부분의서비스를접근할수있다. 그러나서로다른디바이스간에프로시저를원격호출할수있는방법 ( 디바이스간의 RPC) 은제공되지않고있다. 최근안드로이드플랫폼상에서디바이스간의원격서비스호출에대한연구들이진행되고있다. Nakao et al. 은 [4] 에서안드로이드디바이스사이의통신에초점을맞추었고, Nagahara et al. 은 [5] 에서안드로이드디 바이스와다른플랫폼이탑재된임베디드디바이스사이의통신이가능한구조를제안하였다. 이들은안드로이드내에서사용되는메시지인 intent를디바이스간에서도사용할수있도록확장하는방향으로진행되었다. 하지만이러한연구들은전달하는데이터형식이 intent 로제한되는한계가있다. 본논문에서는안드로이드플랫폼에서구동되는디바이스들이원격으로다른디바이스내프로시저를호출하는기능을제공하는방법을제안한다. 기존의안드로이드플랫폼에서디바이스내바인더노드를참조하여서비스호출하는개념을활용하여다른디바이스내의바인더노드를참조하여해당디바이스의서비스를호출한다. 2. 관련연구안드로이드플랫폼상에서디바이스간원격서비스를호출하기위한기존연구들은안드로이드내사용되는메시지인 intent를디바이스간에도사용할수있도록확장하는방향으로진행되었다. 반면 [4] 는안드로이드디바이스사이의통신에초점을맞추었고, [5] 은안드로이드디바이스와다른플랫폼에서동작하는비안드로이드디바이스사이에서의통신을가능하게해준다는점에서차이점이있다. Nakao et al. 은 [4] 에서안드로이드플랫폼을사용하는디바이스들이서로협력해서동작할수있도록상대편디바이스의서비스를호출하는세가지의프로토타입을제안했다. 첫째는네트워크로 intent를전송하여타디바이스의액티비티를실행하는프로토타입이다. intent id와 data로구성된 int array를소켓으로타디바이스로전송해구현했다. 두번째프로토타입은 VNC 미들웨어를사용해안드로이드디바이스화면을원격으로티디바이스의화면과공유한다. 마지막으로네트워크를통해타디바이스에서다운로드한이미지리소스를공유하는프로토타입을제시했다. Nagahara et al. 은 [5] 에서안드로이드디바이스가안드로이드외의다른플랫폼을사용하는비안드로이드디바이스와협력할수있도록안드로이드시스템내의 intent 개념을확장한방법을제안하였다. 안드로이드디바이스는서비스발견프로토콜인 SSDP나 mdns를통하여디바이스들에대한정보를얻어프로시저정보, IP주소, 제품명등의정보를데이터베이스에저장한다. 안드로이드어플리케이션이방법으로 intent를보내면 intent를전달할디바이스를데이터베이스로부터검색하며, 여러개의디바이스가검색된경우사용자가선택한다. 디바이스선택후, intent를 JSON 형식으로 serialization하고 HTTP 프로토콜로전송한다. 전송대상이비
Remote Binder: 안드로이드디바이스간원격프로시저호출 361 안드로이드디바이스인경우 JSON으로부터 intent를분석하고그에해당하는프로시저를실행한다. 반면, 안드로이드디바이스인경우수신한 JSON으로부터 intent 를얻고이를실행할수있는어플리케이션목록을 JSON 을보낸디바이스로재전송한다. 디바이스의사용자가전달된어플리케이션목록중하나를선택하면, 이어플리케이션이다시 JSON으로변환되어대상안드로이드기기에전송되고, 해당어플리케이션에서 intent에해당하는프로시저를실행한다. 기존의연구들은안드로이드에서사용되는비동기식메시지 intent를외부의디바이스로전달하여해당디바이스에서원하는서비스를호출할수있도록하는방법을제안했으나, 전달하는데이터형식이 intent로제한되는한계점이있었다. intent를사용하면안드로이드의액티비티나서비스를실행시키거나, 다른프로세스에브로드캐스트를보내는것만가능하다. 전달할수있는데이터형식이 intent로제한되므로안드로이드 IPC에서사용할수있는다양한데이터를전송할수없다. 따라서와이파이정보와같은시스템정보나기능을제공해주는서비스들을 intent를통해호출할수없다. 이들서비스는다양한데이터형식을필요로하는함수들로구성되어있기때문이다. 또한서비스를실행할수있지만, 서비스내에있는프로시저를호출하지못한다. 즉, 기존의연구는상대편디바이스에있는서비스를호출할수는있지만, 시스템서비스나서비스내프로시저를호출하는것에한계가있다. 본논문에서는이와같은기존연구들의한계점을개선하여기존안드로이드어플리케이션들을수정하지않고, 다른디바이스의시스템서비스및서비스내프로시저를호출할수있는디바이스간 RPC 방법을제안한다. 3. Remote Binder(Android RPC) 구조 Remote Binder는이식성을고려하여그림 1과같이응용프로그램으로설계하였다. 리눅스커널내부의바인더 IPC 드라이버를수정하는방법은기존의안드로이드디바이스들에새로운안드로이드플랫폼을설치가필요하기때문에배제하였다. 따라서디바이스에서 Remote Binder를설치하여도기존의플랫폼및어플리케이션의수정없이원격호출을할수있다. Remote Binder는안드로이드 IPC 메커니즘인바인더를디바이스간의통신에서사용할수있도록확장하였다. 그림 1을보면 Remote Binder 내한디바이스의클라이언트가다른디바이스의서비스를원격으로호출하는과정을알수있다. 그림 1 Remote Binder 세부구조 Fig. 1 Detailed Architecture of Remote Binder 3.1 서비스등록및검색외부디바이스에서상대편디바이스의서비스에접근하기위해서는서비스등록및검색이필요하다. Remote Binder는디바이스내모든서비스를외부디바이스에서접근할수있도록안드로이드시스템또는 Remote Binder 서비스매니저를통한서비스검색방법을제공한다. 검색이완료된서비스들은외부디바이스에서참조할수있도록서비스의참조정보를생성한다. 서비스의참조정보는서비스가존재하는디바이스의 IP와포트번호, 그리고서비스의식별자 ID에대한정보등세가지로구성된다. 3.1.1 안드로이드시스템을통한서비스검색안드로이드내모든서비스는안드로이드시스템에등록이되어있기때문에대부분의서비스는따로등록할필요없이그림 2의과정을통해안드로이드시스템으로부터검색할수있다. Remote Binder가안드로이드시스템에접근하기위해서안드로이드프로시저관리자 (Android Procedure Manager) 가 Remote Binder와안드로이드시스템사이의인터페이스를제공하는역할을한다. 그러나이렇게검색된서비스는다른디바이스로전달할수없는형태이므로서비스의식별자 ID를서비스에대응되는바인더참조노드의정보를사용해생성하여이를외부디바이스로전달한다. 바인더참조노드를얻기위하여바인더추출기 (Binder Extractor) 를사용한다.
362 정보과학회컴퓨팅의실제논문지제 21 권제 5 호 (2015. 5) 그림 2 안드로이드시스템을통한서비스검색 Fig. 2 Service Search via Android System 3.1.2 Remote Binder 서비스매니저를통한서비스등록및검색안드로이드시스템에등록된서비스들중디바이스내부에서만사용할수있는객체를필요로하는경우에는안드로이드시스템을통한검색이불가능하다. 따라서그림 3의과정을따라사용하려하는서비스들을 Remote Binder 내의서비스매니저에사전등록하고서비스의식별자 ID를생성하여검색하는방법을제공한다. 이경우서비스가필요로하는객체를방법의객체로대체할수있기때문에외부디바이스에서해당서비스를호출할수있게된다. 그림 3 Remote Binder 서비스매니저를통한서비스등록및검색 Fig. 3 Service Registration and Search via emote Binder Service Manager 3.2 바인더안드로이드어플리케이션들은각각분리된프로세스에서동작을한다. 따라서다른프로세스에게데이터를전달하거나프로시저를호출하기위해서안드로이드에서제공하는 IPC 메커니즘인바인더를사용한다 [6-8]. 바인더는커널레벨의바인더드라이버를통해서프로세스사이의동기화된 IPC통신을이루어주며그림 4 처럼안드로이드내의서비스들은각각바인더노드를가지고있으며, 해당서비스를호출하고자하는클라이 그림 4 안드로이드바인더구조 Fig. 4 Android Binder Architecture 언트는바인더노드를참조하여서비스를호출한다. 그러나기존안드로이드플랫폼은디바이스내 RPC 만제공할뿐, 서로다른디바이스간에프로시저를원격호출할수있는방법 ( 디바이스간의 RPC) 은제공되지않고있다. 따라서본논문에서는다른디바이스간 RPC를가능하게하기위해, 현존의바인더메커니즘을확장해디바이스내의바인더노드를바인더추출기를통해추출해다른디바이스에전송함으로써, 디바이스간 RPC를가능하게한다. 3.3 바인더추출기 Remote Binder 내바인더추출기는바인더드라이버내부의바인더참조노드에접근해정보를추출한다. 안드로이드시스템을통해검색한서비스는실제로는서비스를참조하는클라이언트프록시이며, 이는타디바이스로전달할수없는객체이기때문에전달할수있는형태로의변환이필요하다. 이때사용되는형태가각서비스마다가지고있는바인더참조노드의정보이다. 바인더추출기가디바이스내서비스의바인더참조노드정보를추출하여외부디바이스로전달해서비스에접근할수있도록한다. 서비스를호출하는클라이언트는 BinderProxy 클래스로표현되며, 바인더드라이버내부의 BpBinder 클래스의참조를가지고있다. BpBinder에는클라이언트가서비스를제공하는서버에접근하기위해사용되는정수형값인 handle이존재한다. 이 handle 값이바인더참조노드의 ID 값이되고, 이를서비스식별자 ID로사용한다. 바인더추출기는 handle 값을추출하여 Remote Binder에알려주고, Remote Binder는이를서비스식별자 ID로사용해외부디바이스의서비스를호출할수있는환경을제공한다. 3.4 Remote 프록시 (Proxy)/ 스텁 (Stub) 안드로이드는단일디바이스내의프로세스간프로시저호출을위해필요한인터페이스를 AIDL(Android Interface Description Language) 로기술한다. AIDL 도구를사용하여프로세스들간 RPC에필요한프록시와스텁을생성한다. 프록시와스텁은데이터를바인더 (IPC) 에서전달될수있는메시지형태인 Parcel로변
Remote Binder: 안드로이드디바이스간원격프로시저호출 363 환하고이를전송하는코드로구성되어있다. Remote Binder에서는이 AIDL을확장하여디바이스간 RPC 를위해사용되는새로운인터페이스를제공한다. 4. 성능평가 본장에서는기존의연구들과비교하여개선된 Remote Binder를세가지측면에서보인다. 우선, 기존의연구들은 intent를네트워크를통해전달하여사용하는방법이어서불편함이있었으나, Remote Binder는내부디바이스에서 intent를사용하는것처럼간단하게사용이가능하다. 두번째로, 기존의연구들은 intent를확장해사용하는것이기에여러가지데이터형식을파라미터로하는시스템서비스나서비스내프로시저를호출하는것에한계가있었다. 그러나 Remote Binder는전달하는데이터형식이 parcel이기때문에제한이없어진정한의미의안드로이드원격호출을구현했다고볼수있다. 마지막으로, IPC내데이터전송형식인 parcel을사용했기때문에 marshall, unmarshall의과정없이전송받은데이터를 IPC내에서바로사용가능해서비스호출속도가빠르다. 성능평가에서는이세가지개선점에중점을두고진행된다. 실험을위해 Remote Binder 프로토타입을구현하였고, 두대의안드로이드디바이스를사용하였다. 안드로이드디바이스는 Nexus 4( 안드로이드 4.2.1) 와 LG Optimus G pro( 안드로이드 4.4.2) 를사용했다. 4.1 Intent 를이용한서비스호출기존의연구들은 intent를네트워크로전달하여다른디바이스의서비스를호출한다. Nakao et al. 의경우, intent id와 data로구성된 int array를소켓으로상대편디바이스로전송해구현한다. 반면, Remote Binder 에서는디바이스가자신의액티비티를호출할때와다른디바이스의액티비티를호출할때의코드인그림 5 처럼거의동일한방법으로자신과다른디바이스의서비스를호출한다. 그림 5 서비스호출코드 Fig. 5 Service Call Code 4.2 시스템서비스호출안드로이드에서는시스템의정보나기능을제공해주 그림 6 시스템서비스호출 Fig. 6 System Service Call 는와이파이정보제공기능, 알람기능등의여러시스템서비스가존재한다. 이시스템서비스들은다양한데이터형식을필요로하는함수들로구성되어있으므로 intent를통해호출할수없다. 따라서기존의연구들에서제시한확장된 intent를통한원격서비스호출방법은시스템서비스를호출할수없는한계점이있었다. Remote Binder는 3.1장의서비스등록및검색방법을통해얻은서비스리스트를가지고대상디바이스에서실행시키고싶은서비스에필요한다양한형식의데이터들을 parcel 형식으로대상디바이스에보낸다. 대상디바이스는그데이터들을 IPC를통해시스템서비스에전달한다. 시스템서비스들은모두다른프로세스에존재하기때문에 IPC를사용해야하기때문이다. 그림 6은특정 IP를가진디바이스의와이파이정보를얻고제어하는화면이다. 4.3 데이터크기에따른전송시간 [5] 에서비안드로이드디바이스와의연동을위해 JSON이라는데이터형식을사용했다. 그러나안드로이드가시장점유율이 84.7%(2014년기준 )[3] 인메인플랫폼인것을고려할때, 비안드로이드디바이스와의연동을위해 marshall, unmarshall 과정이추가적으로필요한 JSON 데이터형식을사용하는것이과연효율적인가에대한의문이들었다. 따라서본논문에서는안드로이드디바이스간데이터전송속도가빨라질수있도록이에적합한데이터형식인 parcel을사용했다. 그림 7은 [5] 와 Remote Binder의데이터크기에따른전송시간을보여준다. [5] 는 HTTP 프로토콜을사용하여 JSON 형태로변환하여네트워크로데이터를전송하고, 수신할때마다 HTTP 오버헤드가발생하고 JSON으로 marshall과 unmarshall을할때데이터크기에따라많은시간이소요된다. Remote Binder는소켓을사용하여 Remote Parcel 형태로데이터를전송하여높은성능을보인다. [5] 의경우, 데이터의크기가증
364 정보과학회컴퓨팅의실제논문지제 21 권제 5 호 (2015. 5) "Distributed Intent: Android Framework for Networked Devices Operation," IEEE 16th International Conference on CSE, pp. 651-658, Dec. 2013. [6] Google. Andoid developer guide. [Online]. Available: http://developer.android.com/index.html [7] PalmSource,Inc. Binder IPC Mechanism. [Online]. Available: http://www.angryredplanet.com/~hackbo d/openbinder/docs/html/binderipcmechanism.html [8] Aleksanda Gargenta. Deep Dive into Android IPC/ Binder Framework at Android Builders Summit 2013. [Online]. Available: http://events.lin uxfoundation.org/images/stories/slides/abs2013_gargentas.pdf 그림 7 데이터크기에따른전송시간 Fig. 7 Transfer Time by Data Size 가할수록 JSON으로변환된데이터의크기도증가하며 marshall과 unmarshall의시간도크게증가하기때문에전체전송시간이크게증가하는것을볼수있다. 반면에 Remote Binder는데이터의크기에따라고르게시간이소요되었고, [5] 보다 4KB에서약 1.48배의성능향상이있었으며 100KB 전송시에는 4.32배까지성능이증가하였다. 5. 결론 본논문에서는안드로이드디바이스간원격프로시저호출을지원하는 Remote Binder를제안하였다. 제안된방법은기존응용프로그램을수정함이없이도원격호출이가능한장점을가지고있다. 또한기존연구에서는 intent를사용해액티비티와서비스를실행하였지만, 본논문에서는 intent 대신에확장된 Parcel과바인더노드를참조하여 intent로는호출할수없는안드로이드시스템서비스및서비스내프로시저를호출할수있는방법을제공하였다. References [1] L. Atzori, A. lera, and G. Morabito, "The Internet of Things: A survey," Computer Networks, Vol. 54, No. 15, pp. 2787-2805, Oct. 2010. [2] P. Middleton, P. Kjeldsen, and J. Tully, "Forecast: The Internet of Things, Worldwide, 2013," Gartner, Nov. 2013. [3] IDC. (2014, Aug 14). Worldwide Smartphone Shipments Edge Past 300 Million Units in the Second Quarter; Android and ios Devices Account for 96% of the Global Market. [Online]. Available: http://www. idc.com/getdoc.jsp?containe rid=prus25037214 [4] K. Nakao and Y. Nakamoto, "Toward Remote Service Invocation in Android," 9th International Conference on UIC/ATC, pp. 612-617, Sept. 2012. [5] Y. Nagahara, H. Oyama, T. Azumi, and N. Nishio, 이터분석 정기현 2009년한림대학교컴퓨터공학과 ( 공학사 ) 2014년서강대학교컴퓨터공학과 ( 공학석사 ). 관심분야는클라우드, 임베디드시스템 강희은 2012 년서강대학교경영학과. 2014 년 ~ 현재서강대학교컴퓨터공학과석사과정관심분야는 Automatic Computing, Internet of Things, Embedded System 이권용 2007년서강대학교컴퓨터공학과 ( 공학사 ) 2009년서강대학교컴퓨터공학과 ( 공학석사 ). 2009년~현재서강대학교컴퓨터공학과박사과정. 관심분야는소프트웨어정의인프라및데이터센터, 클라우드, 가상화, SDN, 가상클러스터기반빅데 박성용 1987년서강대학교컴퓨터학과 ( 공학사 ) 1994년미국 Syracuse University( 공학석사 ). 1998년미국 Syracuse University( 공학박사 ). 1998년~1999년미국 Bell Communication Research 연구원. 1999 년~2008년서강대학교컴퓨터공학과부교수. 2008년~현재서강대학교컴퓨터공학과정교수. 관심분야는 Automatic Computing, Peer to Peer Computing, High Performance Cluster Computing and System