Journal of the Korea Institute of Information and Communication Engineering 이기수 장춘서 * A New XMPP/SIP Presence Service System by Multiple Servers Architecture Ky-Soo Lee Choonseo Jang * Department of Computer Engineering, Kumoh Institute of Technology, Gumi 730-701, Korea 요약 프레즌스 (Presence) 정보는사용자의온라인상태, 현재위치, 네트워크접속방식및접속주소등사용자에관한다양한내용을제공하며 XMPP(Extensible Massaging and Presence Protocol) 기반프레즌스정보와 SIP(Session Initiation Protocol) 기반프레즌스정보의두종류가사용된다, 본논문에서는이두종류의프레즌스정보를모두처리할수있는 XMPP/SIP 프레즌스서비스시스템에서서버부하증가에따른확장성의제한을해결하기위하여사용자수의증가에따라동적으로서버가추가되고각서버의부하를효율적으로제어할수있는새로운다중서버구조방식을제안하였다. 이방식에서는부하제어를위한새로운 XMPP 스탠자구조와 SIP 프레즌스정보데이터구조가설계되었고, 동적서버제어를위한각서버와사용자사이의메시지교환절차가제시되었다. 제안된시스템의성능은시뮬레이션실험을통하여분석하였다. ABSTRACT Presence information provides various informations about users such as on-line status, current location, network connection method and connection address, and there are two kinds of presence information, SIP(Session Initiation Protocol) based presence information and XMPP(Extensible Massaging and Presence Protocol) based presence information. In this paper, a multiple server architecture that can handle these two kinds of presence information has been proposed. In this architecture, severs are added dynamically according to number of users to provide system scalability, and load of each server can be effectively controlled. In this system, a new XMPP stanza architecture and presence information data format are designed for load control. Furthermore message exchanging procedures between servers and users for dynamic server control has been also suggested. The performance of the proposed system has been analysed by simulation. 키워드 : 프레즌스서비스, XMPP, SIP, 다중서버 Key word : Presence Service, XMPP, SIP, Multiple Servers Received 18 March 2015, Revised 06 April 2015, Accepted 21 April 2015 * Corresponding Author Choonseo Jang(E-mail:csjang@kumoh.ac.kr, Tel:+82-54-478-7521) Department of Computer Engineering, Kumoh Inst. of Tech., Gumi 730-701, Korea Open Access http://dx.doi.org/10.6109/jkiice.2015.19.5.1144 print ISSN: 2234-4772 online ISSN: 2288-4165 This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License(http://creativecommons.org/li-censes/ by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited. Copyright C The Korea Institute of Information and Communication Engineering.
Ⅰ. 서론프레즌스서비스시스템에서서버는사용자들이프레즌스자원들에대한등록을위해보내온등록요청메시지를처리해야하고, 등록된프레즌스자원들에서프레즌스정보의상태변화가있을때발생하는프레즌스이벤트통지도처리해야한다. 현재 XML 요소를스트림화하기위한프로토콜인 XMPP 기반의프레즌스서비스 [1,2] 와기존 SIP 기반의프레즌스서비스 [3,4] 가모두사용되고있고모바일환경에서각사용자들이요구하는프레즌스자원의수는크게증가하고있다. 따라서사용자수가증가할수록프레즌스서버의부하는급격히커지게되어시스템확장성을제한하는요소로작용하며서버의부하를효율적으로분산처리할수있는구조가필요하다. 이를위하여본논문에서는 XMPP/SIP 프레즌스정보처리에따른서버의부하레벨이증가하면동적으로서버가추가되고각서버의부하를효율적으로제어할수있는다중서버구조에의한프레즌스서비스시스템을새롭게제시하였다. 이구조에서각서버들은현재부하레벨을실시간으로교환하며특정서버의부하레벨이지정된값을초과하게되면주서버는동작중인서버중가장부하가적은서버를선택하여이서버가 XMPP/SIP 프레즌스서비스를분산처리하도록한다. 만일동작중인모든서버들의부하레벨이지정된값에이르러추가로부하를처리할상황이아닌경우에는동적으로새로운서버를생성하여부하를분산처리한다. 이와같은동작을위하여본연구에서는시스템부하의분산처리에필요한요소들이추가된새로운프레즌스정보데이터구조와 XMPP IQ 스탠자구조를설계하였고서버사이의메시지교환절차가제시되었다. 이와같이제안된방식에의하여전체시스템의부하를적절히제어할수있으며시스템의확장성도높일수있게된다. 본논문의구성은다음과같다. Ⅱ장에서는관련연구로서 SIP 프레즌스정보데이터구조및 XMPP와관련된기존연구에대해설명하고 Ⅲ장에서는본논문에서새롭게제안하는다중서버구조의 XMPP/SIP 프레즌스서비스시스템의설계및동작을설명하고이어서시스템부하의분산처리에필요한요소들이추가된새로운프레즌스정보데이터구조와서버사이 의메시지교환절차에대해설명한다. 다음 Ⅳ장에서는구현된시스템의성능분석을한후 Ⅴ장에서결론을맺는다. Ⅱ. 관련연구 프레즌스정보데이터의기본구조는 PIDF(Presence Information Data Format) 이고 MIME 형태는 application/pidf+xml 이며 XML 기반의문서이다 [5]. 프레즌스정보데이터의최상위요소는 <presence> 이고각프레즌스정보를구분하기위한하위요소인복수개의 <tuple> 이있다. 각 <tuple> 은하위요소로각사용자의현재프레즌스정보를나타내는 <status> 를가진다. 프레즌스정보데이터는이외에도여러개의추가적인정보를나타내는하위요소및속성을가질수있다. 이와같은프레즌스정보데이터의예를그림 1에보였다. 그림 1. 프레즌스정보데이터예 Fig. 1 An Example of Presence Information Data 프레즌스서버는이와같은프레즌스정보데이터를사용자에게제공하며사용자는프레즌스서버에게등록할프레즌스자원의 SIP 주소를담은 SUBSCRIBE 메시지를사용하여필요한프레즌스서비스등록을한다. 프레즌스정보의변화가발생하면 SIP PUBLISH 메시지를사용해프레즌스서버에게알리고프레즌스서버는 SIP NOTIFY 메시지를사용해해당사용자에게이를통지한다. 이때프레즌스서비스사용자수의증가에따라프레 1145
즌스리소스에대한처리와프레즌스정보데이터의통지및리프레시양도크게증가하여프레즌스서버의부하를높이게된다. XMPP는 XML 요소를스트림화하기위한프로토콜이며메시지나프레즌스정보를실시간에가까운속도로교환하기위한목적으로사용된다 [6,7]. XML 스트림내에서전송되는 XML 요소들인 XMPP 스탠자는세가지종류가있으며이들은각각메시지스탠자 (<message>), 프레즌스스탠자 (<presence>) 및 IQ 스탠자 (<iq>) 이다. 이들 XML 스탠자를담고있는컨테이너인 XML 스트림은 <stream> 태그로시작하며그림 2에 XML 스탠자들이 XML 스트림내에위치하는형태를보였다. 즌스서버가추가되고각프레즌스서버의부하를효율적으로제어할수있는다중 XMPP/SIP 프레즌스서버구조를제안하여대용량 XMPP/SIP 프레즌스서비스시스템의구성이가능하도록하였다. Ⅲ. 시스템설계및구현 3.1 다중서버구조설계본논문에서설계한다중서버구조의 XMPP/SIP 프레즌스서비스시스템을그림 3에보였다. 여기서각각의프레즌스서버는부하제어모듈, XMPP/SIP 변환모듈, XMPP/SIP 프레즌스정보데이터베이스, XMPP 프레즌스처리모듈, XMPP 스트림처리모듈, SIP 프레즌스처리모듈및 SIP 메시지처리모듈로구성된다. 그림 2. XML 스트림예 Fig. 2 An Example of XML Stream 현재까지프레즌스서버의부하를줄이기위한연구로는프레즌스정보문서의크기를줄이기위한부분통지 (partial notification) 방식이나프레즌스리소스를등록하는데걸리는시간을줄이는방식이제안되고있다 [8-10]. 또는자주사용되는문서태그부분을압축하는방식과 XML 스트림내에서교환되는 XMPP 메시지양을줄여서버의부하와네트워크트래픽을감소시키는방안도제시되고있다 [11]. 그러나이와같은프레즌스서비스시스템은 XMPP를지원하지않거나 XMPP 를지원하는시스템의경우단일프레즌스서버를사용한다는제약이있으며따라서 XMPP와 SIP 프레즌스서비스를모두지원하는대용량프레즌스서비스시스템으로의확장이어렵다는문제점이있다. 본연구에서는사용자수의증가에따라동적으로 XMPP/SIP 프레 그림 3. 다중서버구조의 XMPP/SIP 프렌즌스서비스시스템 Fig. 3 XMPP/SIP Presence Service System with Multiple Servers Architecture 부하제어모듈은각서버의부하레벨을측정하고동작중인서버들과부하상태에관한정보를실시간으로교환하며사용자의할당등전체시스템의부하를분산처리하는가능을제공한다. 여기서 XMPP/SIP 프레즌스정보데이터베이스는본논문에서설계한부하제어기능이추가된새로운프레즌스정보데이터구조를사용하여설계되었다. 새로운사용자가주프레즌스서버에게프레즌스정보등록요청을하면 3.2절에나오는현재동작중인각서버들의부하레벨을나타내는프레즌스정보요소인 <svr-loadlevel-list> 의값을조사하여가장부하레벨이낮은서버를선택한다. 1146
그림 4. 다중서버구조프레즌스시스템동작과정흐름 Fig. 4 Operation Procedure Flow of Presence System with Multiple Server Architecture 새로운사용자가 XMPP 프레즌스정보를사용하는경우 XMPP IQ 스탠자 <iq> 의하위요소 <redirection> 에이선택된서버의 URI를넣어보내고, SIP 프레즌스정보를사용하는경우상태코드번호가 302인 SIP 메시지에선택된서버의 URI를넣어보내어이후사용자가이선택된서버와프레즌스메시지를교환하도록한다. 모든서버의부하레벨이정해진기준치에이르러새로운프레즌스서버를추가해야할경우주프레즌스서버는 3.2절에나오는선택가능한새로운프레즌스서버들의목록을가지고있는프레즌스정보요소인 <candidate-svr-list> 에서새로운프레즌스서버를선택한다. 다음사용자의프레즌스정보형태에따라이서버의 URI를담은 XMPP IQ 스탠자나 SIP 302 메시지를해당사용자에보내어이후사용자가이선택된서버와프레즌스메시지를교환하도록한다. 다음기존서버들의부하를이새로운프레즌스서버에게분산시키기위하여부하레벨이가장높은서버순으로해당서버가처리하는사용자를새로운프레즌스서버에게할당한다. 그림 4에설계된다중서버구조의프레즌스시스템의동작과정흐름을보였다. 이그림에서는사용자가주프레즌스서버에게 SIP SUBSCRIBE 메시지나 XMPP <presence> 스탠자를보내어프레즌스정보 등록요청을한경우전체시스쳄부하상태에따라가장부하레벨이낮은서버를선택하거나새로운서버를추가하는과정이제시되어있다. XMPP 프레즌스처리모듈은각사용자들의프레즌스리소스목록을 XMPP/SIP 프레즌스정보데이터베이스에생성, 수정및관리하고 XMPP 스트림내의프레즌스및 IQ 스탠자를처리하여프레즌스정보의등록과통지기능을제어한다. XMPP 스트림처리모듈은스트림헤더를처리하고스트림인증및리소스바인딩을하며 XMPP 사용자와프레즌스서버사이의스트림생성및유지를담당한다. SIP 프레즌스처리모듈은 SIP 프레즌스정보의등록과등록된 SIP 프레즌스정보의변화가발생했을경우 SIP 통지기능을담당한다. SIP 메시지처리모듈은 SIP 프로토콜스택을가지며 SIP 기반의프레즌스서비스사용자와프레즌스서버사이의메시지교환및연결제어를담당한다. 3.2. 프레즌스정보데이터구조설계본논문에서는다중서버구조의프레즌스시스템을구현하기위하여다음과같은필요요소들이추가된프레즌스정보데이터구조가설계되었다. 먼저서버의부하제어를위하여최상위요소 <presence> 의하위요소로 <svr-loadlevel-list> 가새롭게추가되었다. <svrloadlevel-list> 의하위요소로는각서버의부하레벨과최대부하허용값을가지고있는 <svr-load> 를두었다. 부하레벨은각서버에서프레즌스서비스처리를위한부하지수를나타내며각서버가담당하는현재사용자수와등록된프레즌스리소스의합을기준으로산출한다. <svr-load> 요소는속성으로각서버를구분하기위한 svr-id' 를가지며하위요소로현재부하레벨인 <current-loadlevel> 과최대부하허용값을나타내는 <max-loadlevel> 이설계되었다. 다음으로새롭게프레즌스시스템에추가될수있는서버들을나타내기위한요소인 <candidate-svr-list> 가설계되었다. 이요소는하위요소로 <svr-uri> 를가지며실제서버들의 URI를요소컨텐츠로가진다. 현재동작중인전체프레즌스서버의개수를나타내기위한요소인 <active-svr-number> 도추가되었다. 다음각서버가현재담당하고있는사용자리스트인 <current-users-list> 요소와이의속성으로각프레즌스서버를구분하기위한 'server-id' 를설계하였다. 이요소 1147
는하위요소로해당프레즌스서버가현재처리하고있는사용자수를표시하는 <current-users-number> 와각사용자에대한정보를나타내는 <info-users> 를가진다. <info-users> 요소는속성으로각사용자를구분하기위한 user-id' 를가지며하위요소로 XMPP와 SIP를구분하기위한 <pres-type> 과등록된프레즌스리소스수를나타내는 <resource-number> 및각사용자에대한프레즌스정보를가지고있는 <pres-info> 를가지도록설계되었다. 또전체프레즌스서비스사용자수를나타내는요소인 <total-users-number> 도추가되었다. 그림 5 에이와같이설계된프레즌스정보데이터구조를사용한 XMPP/SIP 프레즌스시스템에서의메시지교환절차를보였다. 터베이스를통하여현재동작중인각서버의부하레벨을조사한다. 새로운프레즌스서버를추가해야할경우 <candidate-svr-list> 요소에서서버를선택후이서버에게 INVITE 메시지를보내어프레즌스시스템에참가시킨다. 이새로운서버는 SUBSCRIBE와 NOTIFY 메시지를사용해주프레즌스서버로부터현재의프레즌스정보데이터를얻는다. 다음프레즌스리소스등록을요청했던사용자에게 Redirection SIP 메시지를보내어새로운프레즌스서버와서비스연결을맺도록한다. 새로운 XMPP 프레즌스서비스사용자가 <presence type=subscribe> 스탠자를사용해프레즌스리소스등록을요청하는경우주프렌즌스서버는 <redirect> 요소를가진 <iq> 스탠자를사용해새로운프레즌스서버와연결을맺도록하며이후이서버는 NOTIFY 메시지를사용하여프레즌스정보데이터의변화를통지한다. Ⅳ. 성능분석 그림 5. XMPP/SIP 프레즌스시스템에서의메시지교환절차 Fig. 5 Message Exchange Procedure of XMPP/SIP Presence System 이그림에서는각프레즌스서버들이 SIP SUBSCRIBE 메시지와 NOTIFY 메시지를사용하여본논문에서설계한구조를갖는프레즌스정보데이터를교환한다. 새로운 SIP 프레즌스서비스사용자가프레즌스서비스의대표주소를가지고있는주프레즌스서버에 SUBSCRIBE 메시지를사용하여프레즌스리소스등록을시도하면주프레즌스서버는프레즌스정보데이 본논문에서제안한다중서버구조의 XMPP/SIP 프레즌스서비스시스템의성능을시뮬레이션으로분석하였다. 이를위하여사용자수를증가시켜가며본연구에서제안한다중서버구조의경우와기존단일서버구조의경우에서의프레즌스서버에서의프레즌스등록처리시간을비교측정하였다. 이때다중서버구조의경우프레즌스시스템정책으로최대부하허용값을나타내는프레즌스정보데이터요소인 <max-loadlevel> 값을 100으로하여처음에하나의프레즌스서버로동작하다가사용자가증가하여동작중최대부하허용값이이를초과하면새로운프레즌스서버가추가되도록하였다. 전체사용자중 XMPP와 SIP 비율은각각 50% 씩으로하였고각사용자는 20개의프레즌스리소스를가지며 1 초에 1회의프레즌스등록요청을하는것으로설정하였다. 그림 6에이의결과를보였다. 여기서제안된다중서버방식을사용하는경우사용자수가 100명에서는하나의서버만을사용하므로기존방식과동일한성능을보인다. 100명을초과하는경우서버가추가되어다중서버방식의경우처리시간의증가가거의없음을보여준다. 기존방식과비교해 200명인경우평균처리시간이 45.6% 감소하고, 300명일때는 63.3%, 500명일때는 72.9% 가감소하 1148
여사용자가수가증가할수록본논문에서제안한방식의개선효과가커짐을알수있다. 그림 6. 평균프레즌스등록처리시간 Fig. 6 Average Presence Subscribe Processing Time 다음최대부하허용값 <max-loadlevel> 값을 200으로하여사용자수를증가시켜가며프레즌스서버에서의평균등록처리시간을비교측정하였다. 다른조건은그림 6의경우와동일하다. 그림 7에이의결과를보였다. 간이기존방식과비교해크게감소함을보여준다. 이와같이본연구에서는프레즌스정책으로최대부하허용값을상황에따라다르게설정하여각서버가담당하는사용자수를제어할수있다. 다음그림 8은프레즌스서버에서통지메시지를처리하는데걸리는시간을기존방식과서로비교한결과이다. 이때프레즌스통지메시지의크기는 50Kbyte로하였고각사용자당 20개씩의프레즌스리소스에서초당 1회의프레즌스정보가생성되도록하였다. 최대부하허용값 <max-loadlevel> 는 100으로하였다. 여기서는다중서버방식의경우사용자수가 100명을초과하면프레즌스서버가추가되어처리시간의증가가거의없는반면기존방식은크게증가하는것을보여준다. 기존방식과비교하여제안된방식에서는사용자수 200명에서 43.1%, 사용자수 300명에서 58.6%, 사용자수 500 명에서 69.4% 까지단축시킬수있음을보여준다. 그림 8. 평균프레즌스통지처리시간 Fig. 8 Average Presence Notification Processing Time Ⅴ. 결론 그림 7. 평균프레즌스등록처리시간 ( 최대부하허용값 =200) Fig. 7 Average Presence Subscribe Processing Time(Max. Load Level=200) 여기서는최대부하허용값의증가로그림 6 경우와는달리사용자수가 200명일때까지는 1개의서버만을사용하다가이를초과하면프레즌스서버가새롭게추가되고 400명을초과하면다시서버가추가되는식으로동작한다. 측정결과 300명에서 48.8%, 400명에서 44.0%, 500명에서 65.7% 만큼감소하여역시처리시 본논문에서는 XMPP/SIP 프레즌스서비스시스템에서서버의부하레벨이증가하면동적으로서버가추가되고각서버의부하를효율적으로제어할수있는다중서버구조를새롭게제시하였다. 이구조에서특정서버의부하레벨이지정된값을초과하면주서버는동작중인서버중가장부하가적은서버를선택하여이서버가 XMPP/SIP 프레즌스서비스를분산처리하도록하고만일동작중인모든서버들의부하레벨이지정된값까지상승하면동적으로새로운서버를생성하여부하를분 1149
산처리한다. 이를위하여본연구에서는시스템부하의분산처리에필요한요소들이추가된새로운프레즌스정보데이터구조와 XMPP IQ 스탠자구조를설계하였고서버사이의메시지교환절차가제시되었다. 제안된시스템의성능측정결과본연구에서제안한다중서버구조를적용한경우서버에서의평균프레즌스등록처리시간이 44.0% 에서 72.9% 까지감소하였고평균프레즌스통지처리시간은 43.1% 에서 69.4% 까지감소하여사용자수가증가할수록제안한방식의개선효과가커짐을보여주었다. 향후과제로는모바일환경에서사용대역폭을최소화할수있는 XMPP/SIP 프레즌스서비스시스템을연구할필요가있다. 감사의글본연구는금오공과대학교학술연구비에의하여연구된논문입니다. REFERENCES [ 1 ] Ronny Klauck and Michael Kirsche, "Combining Mobile XMPP Entities and Cloud Services for Collaborative Post-Disaster Management in Hybrid Network Environments," Mobile Networks and Applications, Volume 18 Issue 2, pp. 253-270, April 2013. [ 2 ] Huber Flores and Satish Srirama, "Mobile cloud messaging supported by XMPP primitives," MCS '13: Proceeding of the fourth ACM workshop on Mobile cloud computing and services, June 2013. [ 3 ] Arup Acharya et al, "Pressentials: a flexible middleware for presence-enabled applications," Proceedings of the 5th International Conference on Principles, Systems and Applications of IP Telecommunications, August 2011. [ 4 ] Robin Acker et a1, "Ubiquitous home control based on SIP and presence service," Proceedings of the 12th International Conference on Information Integration and Web-based Applications & Services, November 2010. [ 5 ] H. Sugano and G. Klyne, Presence Information Data Format (PIDF), RFC 3863, August 2004. [ 6 ] P. Saint-Andre, "Extensible Messaging and Presence Protocol (XMPP):Instant Messaging and Presence," RFC 6121, March 2011. [ 7 ] P. Saint-Andre, "Extensible Messaging and Presence Protocol (XMPP): Core,"RFC 6120, March 2011. [ 8 ] M. Lonnfors, E. Leppanen, H. Khartabil and J. Urpalainen, SIP Extension for Partial Notification of Presence Information", RFC 6261, September 2011. [ 9 ] A. Niemi, M. Lonnfors and E. Leppanen, "Publication of Partial Presence Information", RFC 5264, September 2008. [10] G. Camarillo, A.B. Roach and O. Levin, "Subscriptions to Request-Contained Resource Lists in the Session Initiation Protocol (SIP)," RFC 5367, October 2009. [11] C. Jang, "XMPP/SIP Presence Service System using Efficient Message Control Method," Journal of Korea Inst. of. Information and Communication Eng., vol. 13, no. 11, pp. 2678-2683, November 2014. 이기수 (Ky-Soo Lee) 1982 년 2 월 : 서울대학교공학석사현재 : 금오공과대학교컴퓨터공학과교수 관심분야 : SIP, 데이터베이스 장춘서 (Choonseo Jang) 1993 년 8 월 : 한국과학기술원공학박사현재 : 금오공과대학교컴퓨터공학과교수 관심분야 : SIP, 임베디드시스템, 인터넷텔레포니 1150