ko ko ko ko ko en ko ko en ko ko ko ko ko en en ko ko ko ko ko la ko en ko ko en ko ko ko ko en en ko ko ko ko ko ko en ko en ko en ko ko en ko ko ko ko ko de en en en en fr la ko en ko fr en en ko en fa ko ko en ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko en en en en en en en en en en en ko ko ko ko ko ko ko ko ko ko ko ko en ko ko ko ko ko en
전체 제목 저자 소장기관 ISSN OA 학술지(XML)
OAK XML 학술지 OAK 통합검색
전체 제목 저자 키워드 초록 기관
전체 논문 학위논문 단행본 데이터셋 특허 보고서 멀티미디어 기타 프리젠테이션
Journal of the Korea Institute of Information and Communication Engineering
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 , 다중 서버
Expand all  Collapse all
프레즌스 서비스 시스템에서 서버는 사용자들이 프레즌스 자원들에 대한 등록을 위해 보내온 등록 요청 메시지를 처리해야 하고, 등록된 프레즌스 자원들에서 프레즌스 정보의 상태 변화가 있을 때 발생하는 프레즌스 이벤트 통지도 처리해야 한다. 현재 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]. 프레즌스 정보 데이터의 최상위 요소는 이고 각 프레즌스 정보를 구분하기 위한 하위 요소인 복수개의 이 있다. 각 은 하위 요소로 각 사용자의 현재 프레즌스 정보를 나타내는 를 가진다. 프레즌스 정보 데이터는 이외에도 여러 개의 추가적인 정보를 나타내는 하위 요소 및 속성을 가질 수 있다. 이와 같은 프레즌스 정보 데이터의 예를 그림 1에 보였다.
[그림 1.] 프레즌스 정보 데이터 예
프레즌스 서버는 이와 같은 프레즌스 정보 데이터를 사용자에게 제공하며 사용자는 프레즌스 서버에게 등록할 프레즌스 자원의 SIP 주소를 담은 SUBSCRIBE 메시지를 사용하여 필요한 프레즌스 서비스 등록을 한다. 프레즌스 정보의 변화가 발생하면 SIP PUBLISH 메시지를 사용해 프레즌스 서버에게 알리고 프레즌스 서버는 SIP NOTIFY 메시지를 사용해 해당 사용자에게 이를 통지한다.
이때 프레즌스 서비스 사용자 수의 증가에 따라 프레즌스 리소스에 대한 처리와 프레즌스 정보 데이터의 통지 및 리프레시 양도 크게 증가하여 프레즌스 서버의 부하를 높이게 된다. XMPP는 XML 요소를 스트림화 하기위한 프로토콜이며 메시지나 프레즌스 정보를 실시간에 가까운 속도로 교환하기 위한 목적으로 사용된다[6,7]. XML 스트림 내에서 전송되는 XML 요소들인 XMPP 스탠자는 세 가지 종류가 있으며 이들은 각각 메시지 스탠자(), 프레즌스 스탠자() 및 IQ 스탠자()이다. 이들 XML 스탠자를 담고 있는 컨테이너인 XML 스트림은 태그로 시작하며 그림 2에 XML 스탠자들이 XML 스트림 내에 위치하는 형태를 보였다.
[그림 2.] XML 스트림 예
현재까지 프레즌스 서버의 부하를 줄이기 위한 연구로는 프레즌스 정보 문서의 크기를 줄이기 위한 부분 통지(partial notification) 방식이나 프레즌스 리소스를 등록하는데 걸리는 시간을 줄이는 방식이 제안되고 있다[8-10]. 또는 자주 사용되는 문서 태그 부분을 압축하는 방식과 XML 스트림 내에서 교환되는 XMPP 메시지 양을 줄여 서버의 부하와 네트워크 트래픽을 감소시키는 방안도 제시되고 있다[11]. 그러나 이와 같은 프레즌스 서비스 시스템은 XMPP를 지원하지 않거나 XMPP를 지원하는 시스템의 경우 단일 프레즌스 서버를 사용한다는 제약이 있으며 따라서 XMPP와 SIP 프레즌스 서비스를 모두 지원하는 대용량 프레즌스 서비스 시스템으로의 확장이 어렵다는 문제점이 있다. 본 연구에서 는 사용자 수의 증가에 따라 동적으로 XMPP/SIP 프레즌스 서버가 추가되고 각 프레즌스 서버의 부하를 효율적으로 제어 할 수 있는 다중 XMPP/SIP 프레즌스 서버 구조를 제안하여 대용량 XMPP/SIP 프레즌스 서비스 시스템의 구성이 가능하도록 하였다.
Ⅲ. 시스템 설계 및 구현
3.1 다중 서버 구조 설계
본 논문에서 설계한 다중 서버 구조의 XMPP/SIP 프레즌스 서비스 시스템을 그림 3에 보였다. 여기서 각각의 프레즌스 서버는 부하제어 모듈, XMPP/SIP 변환모듈, XMPP/SIP 프레즌스 정보 데이터베이스, XMPP 프레즌스 처리모듈, XMPP 스트림 처리 모듈, SIP 프레즌스 처리모듈 및 SIP 메시지 처리모듈로 구성된다.
[그림 3.] 다중 서버 구조의 XMPP/SIP 프렌즌스 서비스 시스템
부하제어 모듈은 각 서버의 부하 레벨을 측정하고 동작 중인 서버들과 부하 상태에 관한 정보를 실시간으로 교환하며 사용자의 할당 등 전체 시스템의 부하를 분산 처리하는 가능을 제공한다. 여기서 XMPP/SIP 프레즌스 정보 데이터베이스는 본 논문에서 설계한 부하 제어 기능이 추가된 새로운 프레즌스 정보 데이터 구조를 사용하여 설계되었다. 새로운 사용자가 주 프레즌스 서버에게 프레즌스 정보 등록 요청을 하면 3.2절에 나오는 현재 동작 중인 각 서버들의 부하 레벨을 나타내는 프레즌스 정보 요소인 의 값을 조사하여 가장 부하 레벨이 낮은 서버를 선택한다.
새로운 사용자가 XMPP 프레즌스 정보를 사용하는 경우 XMPP IQ 스탠자 의 하위요소 에 이 선택된 서버의 URI를 넣어 보내고, SIP 프레즌스 정보를 사용하는 경우 상태 코드 번호가 302인 SIP 메시지에 선택된 서버의 URI를 넣어 보내어 이후 사용자가 이 선택된 서버와 프레즌스 메시지를 교환하도록 한다.
모든 서버의 부하 레벨이 정해진 기준치에 이르러 새로운 프레즌스 서버를 추가해야 할 경우 주 프레즌스 서버는 3.2절에 나오는 선택 가능한 새로운 프레즌스 서버들의 목록을 가지고 있는 프레즌스 정보 요소인 에서 새로운 프레즌스 서버를 선택한다. 다음 사용자의 프레즌스 정보 형태에 따라 이 서버의 URI를 담은 XMPP IQ 스탠자나 SIP 302 메시지를 해당 사용자에 보내어 이후 사용자가 이 선택된 서버와 프레즌스 메시지를 교환하도록 한다. 다음 기존 서버들의 부하를 이 새로운 프레즌스 서버에게 분산시키기 위하여 부하 레벨이 가장 높은 서버 순으로 해당 서버가 처리하는 사용자를 새로운 프레즌스 서버에게 할당한다. 그림 4에 설계된 다중 서버 구조의 프레즌스 시스템의 동작 과정 흐름을 보였다. 이 그림에서는 사용자가 주 프레즌스 서버에게 SIP SUBSCRIBE 메시지나 XMPP 스탠자를 보내어 프레즌스 정보등록 요청을 한 경우 전체 시스쳄 부하 상태에 따라 가장 부하 레벨이 낮은 서버를 선택하거나 새로운 서버를 추가하는 과정이 제시되어 있다.
[그림 4.] 다중 서버 구조 프레즌스 시스템 동작과정 흐름
XMPP 프레즌스 처리모듈은 각 사용자들의 프레즌스 리소스 목록을 XMPP/SIP 프레즌스 정보 데이터베이스에 생성, 수정 및 관리하고 XMPP 스트림 내의 프레즌스 및 IQ 스탠자를 처리하여 프레즌스 정보의 등록과 통지기능을 제어한다. XMPP 스트림 처리 모듈은 스트림 헤더를 처리하고 스트림 인증 및 리소스 바인딩을 하며 XMPP 사용자와 프레즌스 서버사이의 스트림 생성 및 유지를 담당한다. SIP 프레즌스 처리모듈은 SIP 프레즌스 정보의 등록과 등록된 SIP 프레즌스 정보의 변화가 발생했을 경우 SIP 통지기능을 담당한다. SIP 메시지 처리모듈은 SIP 프로토콜 스택을 가지며 SIP 기반의 프레즌스 서비스 사용자와 프레즌스 서버 사이의 메시지 교환 및 연결 제어를 담당한다.
3.2. 프레즌스 정보 데이터 구조 설계
본 논문에서는 다중 서버 구조의 프레즌스 시스템을 구현하기 위하여 다음과 같은 필요 요소들이 추가된 프레즌스 정보 데이터 구조가 설계되었다. 먼저 서버의 부하 제어를 위하여 최상위 요소 의 하위 요소로 가 새롭게 추가되었다. 의 하위 요소로는 각 서버의 부하 레벨과 최대 부하 허용값을 가지고 있는 를 두었다. 부하 레벨은 각 서버에서 프레즌스 서비스 처리를 위한 부하 지수를 나타내며 각 서버가 담당하는 현재 사용자 수와 등록된 프레즌스 리소스의 합을 기준으로 산출한다. 요소는 속성으로 각 서버를 구분하기위한 ‘svr-id'를 가지며 하위 요소로 현재 부하 레벨인 과 최대 부하 허용값을 나타내는 이 설계되었다.
다음으로 새롭게 프레즌스 시스템에 추가 될 수 있는 서버들을 나타내기위한 요소인 가 설계되었다. 이 요소는 하위 요소로 를 가지며 실제 서버들의 URI를 요소 컨텐츠로 가진다. 현재 동작중인 전체 프레즌스 서버의 개수를 나타내기 위한 요소인 도 추가되었다.
다음 각 서버가 현재 담당하고 있는 사용자 리스트인 요소와 이의 속성으로 각 프레즌스 서버를 구분하기위한 'server-id'를 설계하였다. 이 요소는 하위요소로 해당 프레즌스 서버가 현재 처리하고 있는 사용자수를 표시하는 와 각 사용자에 대한 정보를 나타내는 를 가진다. 요소는 속성으로 각 사용자를 구분하기 위한 ‘user-id'를 가지며 하위요소로 XMPP와 SIP를 구분 하기위한 과 등록된 프레즌스 리소스 수를 나타내는 및 각 사용자에 대한 프레즌스 정보를 가지고 있는 를 가지도록 설계 되었다. 또 전체 프레즌스 서비스 사용자 수를 나타내는 요소인 도 추가되었다. 그림 5에 이와 같이 설계된 프레즌스 정보 데이터 구조를 사용한 XMPP/SIP 프레즌스 시스템에서의 메시지 교환 절차를 보였다.
[그림 5.] XMPP/SIP 프레즌스 시스템에서의 메시지 교환 절차
이 그림에서는 각 프레즌스 서버들이 SIP SUBSCRIBE 메시지와 NOTIFY 메시지를 사용하여 본 논문에서 설계한 구조를 갖는 프레즌스 정보 데이터를 교환한다. 새로운 SIP 프레즌스 서비스 사용자가 프레즌스 서비스의 대표 주소를 가지고 있는 주 프레즌스 서버에 SUBSCRIBE 메시지를 사용하여 프레즌스 리소스 등록을 시도하면 주 프레즌스 서버는 프레즌스 정보 데이터베이스를 통하여 현재 동작 중인 각 서버의 부하 레벨을 조사한다. 새로운 프레즌스 서버를 추가해야 할 경우 요소에서 서버를 선택 후 이 서버에게 INVITE 메시지를 보내어 프레즌스 시스템에 참가 시킨다. 이 새로운 서버는 SUBSCRIBE와 NOTIFY 메시지를 사용해 주 프레즌스 서버로부터 현재의 프레즌스 정보 데이터를 얻는다. 다음 프레즌스 리소스 등록을 요청했던 사용자에게 Redirection SIP 메시지를 보내어 새로운 프레즌스 서버와 서비스 연결을 맺도록 한다. 새로운 XMPP 프레즌스 서비스 사용자가 스탠자를 사용해 프레즌스 리소스 등록을 요청하는 경우 주 프렌즌스 서버는 요소를 가진 스탠자를 사용해 새로운 프레즌스 서버와 연결을 맺도록 하며 이후 이 서버는 NOTIFY 메시지를 사용하여 프레즌스 정보 데이터의 변화를 통지한다.
본 논문에서 제안한 다중 서버 구조의 XMPP/SIP 프레즌스 서비스 시스템의 성능을 시뮬레이션으로 분석하였다. 이를 위하여 사용자 수를 증가시켜가며 본 연구에서 제안한 다중 서버 구조의 경우와 기존 단일 서버 구조의 경우에서의 프레즌스 서버에서의 프레즌스 등록 처리 시간을 비교 측정하였다. 이때 다중 서버 구조의 경우 프레즌스 시스템 정책으로 최대 부하 허용값을 나타내는 프레즌스 정보 데이터 요소인 값을 100으로 하여 처음에 하나의 프레즌스 서버로 동작하다가 사용자가 증가하여 동작 중 최대 부하 허용값이 이를 초과하면 새로운 프레즌스 서버가 추가되도록 하였다. 전체 사용자 중 XMPP와 SIP 비율은 각각 50% 씩으로 하였고 각 사용자는 20개의 프레즌스 리소스를 가지며 1초에 1회의 프레즌스 등록 요청을 하는 것으로 설정하였다. 그림 6에 이의 결과를 보였다.
[그림 6.] 평균 프레즌스 등록 처리시간
여기서 제안된 다중 서버 방식을 사용하는 경우 사용자 수가 100명에서는 하나의 서버만을 사용하므로 기존 방식과 동일한 성능을 보인다. 100명을 초과하는 경우 서버가 추가되어 다중 서버 방식의 경우 처리 시간의 증가가 거의 없음을 보여준다. 기존 방식과 비교해 200명인 경우 평균 처리 시간이 45.6% 감소하고, 300명 일 때는 63.3% , 500명 일 때는 72.9%가 감소하여 사용자가 수가 증가할수록 본 논문에서 제안한 방식의 개선 효과가 커짐을 알 수 있다.
다음 최대 부하 허용값 값을 200으로 하여 사용자 수를 증가시켜가며 프레즌스 서버에서 의 평균 등록 처리 시간을 비교 측정하였다. 다른 조건은 그림 6의 경우와 동일하다. 그림 7에 이의 결과를 보였다.
[그림 7.] 평균 프레즌스 등록 처리 시간(최대 부하 허용값=200)
여기서는 최대 부하 허용값의 증가로 그림 6 경우와는 달리 사용자 수가 200명 일 때까지는 1개의 서버만을 사용하다가 이를 초과하면 프레즌스 서버가 새롭게 추가되고 400명을 초과하면 다시 서버가 추가되는 식으로 동작한다. 측정 결과 300명에서 48.8%, 400명에서 44.0%, 500명에서 65.7% 만큼 감소하여 역시 처리 시간이 기존 방식과 비교해 크게 감소함을 보여준다. 이와 같이 본 연구에서는 프레즌스 정책으로 최대 부하 허용값을 상황에 따라 다르게 설정하여 각 서버가 담당하는 사용자 수를 제어 할 수 있다.
다음 그림 8은 프레즌스 서버에서 통지 메시지를 처리하는데 걸리는 시간을 기존 방식과 서로 비교한 결과이다. 이때 프레즌스 통지 메시지의 크기는 50Kbyte로 하였고 각 사용자 당 20개씩의 프레즌스 리소스에서 초당 1회의 프레즌스 정보가 생성되도록 하였다. 최대 부하 허용값 는 100으로 하였다. 여기서는 다중 서버 방식의 경우 사용자 수가 100명을 초과하면 프레즌스 서버가 추가되어 처리 시간의 증가가 거의 없는 반면 기존 방식은 크게 증가하는 것을 보여준다. 기존 방식과 비교하여 제안된 방식에서는 사용자 수 200명에서 43.1%, 사용자 수 300명에서 58.6%, 사용자 수 500명에서 69.4% 까지 단축시킬 수 있음을 보여준다.
[그림 8.] 평균 프레즌스 통지 처리 시간
본 논문에서는 XMPP/SIP 프레즌스 서비스 시스템에서 서버의 부하 레벨이 증가하면 동적으로 서버가 추가되고 각 서버의 부하를 효율적으로 제어할 수 있는 다중 서버 구조를 새롭게 제시하였다. 이 구조에서 특정 서버의 부하 레벨이 지정된 값을 초과하면 주 서버는 동작 중인 서버 중 가장 부하가 적은 서버를 선택하여 이 서버가 XMPP/SIP 프레즌스 서비스를 분산 처리하도록 하고 만일 동작 중인 모든 서버들의 부하 레벨이 지정된 값까지 상승하면 동적으로 새로운 서버를 생성하여 부하를 분산 처리한다. 이를 위하여 본 연구에서는 시스템 부하의 분산 처리에 필요한 요소들이 추가된 새로운 프레즌스 정보 데이터 구조와 XMPP IQ 스탠자 구조를 설계하였고 서버 사이의 메시지 교환 절차가 제시되었다. 제안된 시스템의 성능 측정 결과 본 연구에서 제안한 다중 서버 구조를 적용한 경우 서버에서의 평균 프레즌스 등록 처리 시간이 44.0%에서 72.9%까지 감소하였고 평균 프레즌스 통지 처리 시간은 43.1%에서 69.4%까지 감소하여 사용자 수가 증가할수록 제안한 방식의 개선 효과가 커짐을 보여 주었다. 향후 과제로는 모바일 환경에서 사용 대역폭을 최소화 할 수 있는 XMPP/SIP 프레즌스 서비스 시스템을 연구 할 필요가 있다.
1. Klauck Ronny, Kirsche Michael 2013 "Combining Mobile XMPP Entities and Cloud Services for Collaborative Post-Disaster Management in Hybrid Network Environments," [Mobile Networks and Applications] Vol.18 P.253-270
2. Flores Huber, Srirama Satish June 2013 "Mobile cloud messaging supported by XMPP primitives," [MCS '13: Proceeding of the fourth ACM workshop on Mobile cloud computing and services]
3. Acharya Arup August 2011 "Pressentials: a flexible middleware for presence-enabled applications," [Proceedings of the 5th International Conference on Principles, Systems and Applications of IP Telecommunications]
4. Acker Robin November 2010 "Ubiquitous home control based on SIP and presence service," [Proceedings of the 12th International Conference on Information Integration and Web-based Applications & Services]
5. Sugano H., Klyne G. 2004 “Presence Information Data Format (PIDF),”
6. Saint-Andre P. 2011 "Extensible Messaging and Presence Protocol (XMPP):Instant Messaging and Presence,"
7. Saint-Andre P. 2011 "Extensible Messaging and Presence Protocol (XMPP): Core,"
8. Lonnfors M., Leppanen E., Khartabil H., Urpalainen J. 2011 “SIP Extension for Partial Notification of Presence Information"
9. Niemi A., Lonnfors M., Leppanen E. 2008 "Publication of Partial Presence Information"
10. Camarillo G., Roach A.B., Levin O. 2009 "Subscriptions to Request-Contained Resource Lists in the Session Initiation Protocol (SIP),"
11. Jang C. 2014 "XMPP/SIP Presence Service System using Efficient Message Control Method," [Journal of Korea Inst. of. Information and Communication Eng.] Vol.13 P.2678-2683
[ 그림 1. ]  프레즌스 정보 데이터 예
[ 그림 2. ]  XML 스트림 예
[ 그림 3. ]  다중 서버 구조의 XMPP/SIP 프렌즌스 서비스 시스템
[ 그림 4. ]  다중 서버 구조 프레즌스 시스템 동작과정 흐름
[ 그림 5. ]  XMPP/SIP 프레즌스 시스템에서의 메시지 교환 절차
[ 그림 6. ]  평균 프레즌스 등록 처리시간
[ 그림 7. ]  평균 프레즌스 등록 처리 시간(최대 부하 허용값=200)
[ 그림 8. ]  평균 프레즌스 통지 처리 시간
(우)06579 서울시 서초구 반포대로 201(반포동)
Tel. 02-537-6389 | Fax. 02-590-0571 | 문의 : oak2014@korea.kr
Copyright(c) National Library of Korea. All rights reserved.
국립중앙도서관 학술지저작권안내시스템 한국과학기술정보연구원 한국과학기술단체총연합회 한국연구재단 C.O.D.E - Commons Openness Diversity Engagement
SHERPA/RoMEO OpenDOAR ROAR Open Access Week Berlin Conference COAR - Confederation of Open Access Repositories RDA - Research Data Alliance JISC - Joint Information Systems Committee NII - National Institute of Informatics JST - Japan Science and Technology Agency ROAD - Directory of Open Access Scholarly Resources