Wireless Network에서 PDA용실시간 음성통신 시스템 설계 및 구현호 용 환irdeal@naver.comA Design and Implementation of Real-time Voice Communication System for PDA on Wiress NetworkHo, Yong-Hwan요약개인휴대단말기(PDA)에 대한 뜨거운 열기에도 불구하고 PDA폰 가입자는 크게 증가하지 않았다. PDA폰 대중화를 위해 PDA폰 가격인하와 데이터 통신료 인하 등의 대책 마련이 필요하다는 지적이 일고 있다. 현재 PDA에서 많은 이용률을 보이는 윈도우 CE 기반의 PDA를 이용하였다. 윈도우 CE에서 기본적으로 제공하는 G.711 코덱을 사용하여 가용성을 높였다. 또한 SIP(Session Initiation Protocol) 와 RTP를 사용하여 향후 VoIP망에도 적응을 할 수 있도록 하였다. 무선랜을 이용하여 PDA용 실시간 음성통신 솔루션을 구현함으로써 현재 CDMA망을 이용한 PDA의 음성통신보다 통화료가 적게 들 수 있는 방안을 제안하였다.1. 서 론개인휴대단말기(PDA)에 대한 뜨거운 열기에도 불구하도 PDA폰 가입자는 크게 증가하지 않았다. PDA폰 대중화를 위해 PDA폰 가격인하와 데이터 통신료 인하 등의 대책 마련이 필요하다는 지적이 일고 있다.본 연구의 목표는 무선 랜 표준인 802.11b를 이용하여 PDA용 음성통신 솔루션을 구현하는 것이다. 현재 PDA용 음성 솔루션은 CDMA망을 이용하여 서비스를 제공하므로 통화에 따른 이용요금이 클 수밖에 없다. 본 솔루션은 무선랜 접속지점 (AP : Access Point) 에서 PDA를 이용해음성통신을 이용하는 서비스로 사용지역의 한계에도 불구하고 이동전화에 비해 통화료가 싸고 다양한 부가서비스와 고속 데이터 전송이 가능한 장점을 가지고 있다.본 연구에서는 음성 코덱 으로는 H.323 표준중 하나인 G.711 오디오 코덱[1]을 사용하도록 하겠고 시그널링 프로토콜로는 SIP (Session Initiation Protocal)[2]을 사용하였다. 또한 전송 프로토콜로 RTP[3]를 사용함으로써 향후 VoIP망에도 적응 할 수 있도록 구현하였다.2장에서는 본 연구에서 사용된 음성 코덱 과 SIP, RTP에 대하여 논하고 3장에서는 PDA에서의 실시간 음성처리 모듈을 설명한다. 4장에서는 본 논문에서 설계하고 구현한 시스템을 설명한다. 5장에서는 결론 과 향후 연구 방향을 밝힌다.2. 음성 코덱 과 SIP, RTP2.1 음성코덱음성압축은 네트워크의 대역폭 때문에 필요하다. 기존의 전화망은 약 64 kbps의 대역폭을 가진다. 사람이 가진 가청 주파수는 20~20,000Hz이며, 이 가청 주파수 안의 모든 신호를 보내주기 위해서는 약 1.5 Mbps의 대역폭이 필요하다. 만약 이 대역폭이 전부 필요하다면 대역폭을 확보하는데 상당수의 돈이 필요할 것이다.본 연구에서는 G.711 표준을 사용하였다. G.711 표준은 음성을 보통 초당 8000번 샘플링 한 뒤 양자화를 한다. 일반적으로 음성은 샘플당 8bit의 비선형 양자화를 이용하면 64 kbps의 비트율을 얻을 수 있다. 북미에서는 u-law가 표준이며 유럽에서는 A-law가 표준이다. 구현이 단순하고 용이하며, 음질이 좋고 지연이 적다는 특성 때문에 아직도 많이 사용되고 있다.[1]2.2 SIP(Session Initiation Protocol)SIP 는 1999년도에 IETF의 공식 표준으로 채택되면서 현재 여러 분야의 인터넷 응용서비스를 위한 콜 시그널링 프로토콜로 널리 사용되고 있다. SIP는 HTTP와 유사하다. 메시지는 헤더와 바디로 구성되며 텍스트 문자로 작성된다. 헤더는 SIP제어 정보를 포함하며, 바디는 호 설정 시에는 오디오 및 비디오 코덱과 같은 양측의 능력을 협상하기 위한 정보를 포함하는데 SDP(session Description Protocol)형식으로 기술한다.SIP는 현재 RFC3261로 등록되어 있는 상태이다. RFC3261에 정의된 SIP는 INVITE, CANCEL, ACK, OPTIONS, BYE, REGISTER의 6개의 기본적인 요청 메소드들과 status code로 표현된 6개의 클래스의 응답 메시지들로 구성되어 진다.또한 SIP 네트워크는 크게 UA(User Agent)와 SIP서버 두개의 구성요소로 되어 있다.[4]2.3 RTP(Real-Time Transport Protocol)RTP는 RFC1889로 IETF에 등록 되어 있으며, RTP는 오디오, 비디오 같은 실시간 응용에 대한 데이터 송수신을 위한 프로토콜로써 멀티캐스트 및 유니 캐스트로도 사용가능하다. 그러나 RTP 자체로는 Qos를 지원하지는 않으며, RTCP를 사용하여 데이터의 전달을 감시할 수도 있으나 RTP와 RTCP는 각기 독립적으로 설계된 것이며 독립적으로 동작할 수도 있다.RTP는 전송계층인 TCP ,UDP의 상위 계층 프로토콜이다. RTP는 이름과는 달리 실시간 전송을 보장해주지는 못한다. 다만 타임스탬프와 순서번호를 이용하여 패킷의 순서와 미디어간의 동기화를 지원해주게 된다. RTP는 UDP를 사용하기 때문에 패킷들의 분실이 발생할 수 있는데 RTP 내에서는 이러한 오류에 대한 복구 기능을 지원하지 않는다.[3]3. PDA에서의 음성처리 모듈 설계본 논문을 통해 제안하는 음성통화 시스템은 윈도우 CE 시스템 기반에서 MCI(Media Control Interface)프로그래밍 기법으로 작성하였으며, 음성 코덱은 기존의 윈도우 운영체제에서 제공하는 ACM(Audio Compression Manager)드라이버를 이용하여 구현하였다. 단-대-단 통신을 위해서는 윈속을 이용하여 UDP 프로토콜 소켓 프로그래밍을 하였다. 코덱은 G.711ALaw을 사용하였다.음성 입력EncodeBUFFERUDP Socket음성 출력DecodeBUFFERUDP Socket송신 측에서는 음성데이터가 입력되면 버퍼에 입력되고 버퍼가 꽉 차면 전송을 개시하는 방법으로 구현을 하였다. 또한 수신 측에서는 버퍼로 전송되는 음성데이터가 꽉 차면 재생한다.G.711 표준은 음성을 샘플 당 8bit의 비선형 양자화를 이용하여 64kbps의 비트률을 얻는데 버퍼가 꽉 찼을 때 전송을 하는 방식을 택하고 있기 때문에 버퍼의 사이즈를 8000byte 이상으로 설정을 하면 인코딩 하는데 1 초 이상의 시간이 지연되므로 버퍼의 크기를 적절히 설정을 해주어야 한다. 본 연구에서는 50ms 정도의 지연이 생기도록 400byte로 버퍼의 크기를 설정 하였다. 송신 측에서는 작은 패킷 크기로 인해 IP계층에서 전송을 할 때 패킷 단편화가 일어날 가능성 또한 줄여주었다.[5]또한 연속적인 녹음 및 재생을 위해 버퍼의 개수를 10개로 설정을 하였고 원형 큐로 설정 관리 한다. 한 개의 버퍼가 꽉 차면 다음 버퍼에 계속해서 음성을 저장 하게 되고 그 동안 꽉 찬 버퍼의 내용이 UDP 소켓을 통해 전송이 된다. 전송이 끝난 버퍼는 다시 음성을 저장 할 수 있는 상태로 변하게 되어 음성의 연속적인 녹음 및 버퍼의 재사용을 가능 하게 하였다. 수신 측에서는 UDP 소켓을 통해 수신버퍼에 음성이 저장 되고 버퍼가 꽉 차면 다음 버퍼에 계속해서 음성을 저장 하게 된다. 그 동안 꽉 찬 버퍼는 재생이 되고 다시 사용할 수 있는 상태로 되돌아가게 된다. 음성의 송신 및 재생에 사용된 총 버퍼의 사이즈는 8000 * 50/1000 * 10 * 2 = 8000byte로 적은 PDA의 프로세싱 파워에도 전혀 문제가 없을 정도로 구현이 되었다.4. 실시간 음성통신 시스템 설계 및 구현본 논문에서 구현된 시스템은 메인 서버, 로컬 서버, PDA로 구성된다. 서버는 전체 회원의 상태와 연결 중재를 담당하고 로컬 서버는 SIP 와 RTP를 이용한 통신을 하게 된다. PDA는 논리적으로는 상대 PDA와 직접 연결이 되어있지만 실제로는 로컬 서버에게 음성 데이터를 넘겨주고 로컬 서버로부터 음성 데이터를 넘겨받게 된다.PDAPDAPDAPDAPDAPDALocalServerLocalServerMainServerA.P.A.P.SIP/RTP인 터 넷4.1 메인서버메인서버는 SIP 리다이렉트 서버[4]의 역할을 한다. 서버는 로컬 서버가 특정 PDA의 연결 요청을 하면 상대방 PDA와 연결되기 위한 상대방의 로컬 서버의 주소를 알려준다. 메인서버는 사용자의 요청에 대한 응답 기능만을 수행 할 뿐 스스로 요청 메시지를 생성하지 않는다.이러한 동작으로 인해 메인 서버는 최소한의 기능만을 수행하여 서버의 부담을 최소화 할 수 있다는 장점을 가진다.4.2 로컬 서버로컬 서버는 SIP의 stateful 프록시 서버[4]의 역할을 한다. 로컬 서버는 자신에 접속된 PDA의 정보를 기억하고 있다. 이것으로 호를 생성하고 처리한다.로컬 서버는 그림 3과 같은 모듈로 구성된다. LOCAL SERVER는 PDA로부터 연결 요청 및 해지 요구를 받으면 SIP 시그널링을 통한 호설정 및 해지를 요구하게 되며, 송신시에는 UDP 소켓으로부터 넘어온 음성 데이터를 읽어들여 RTP 소켓을 생성하고 전송한다. 수신시에는 이와 반대로 동작을 하게 된다.