KR100453822B1 - 세션 초기화 프로토콜(SIP:SessionInitiation Protocol)을 이용하여분기가 있는 호 요청을 처리하는 방법 및 그 호처리기 - Google Patents

세션 초기화 프로토콜(SIP:SessionInitiation Protocol)을 이용하여분기가 있는 호 요청을 처리하는 방법 및 그 호처리기 Download PDF

Info

Publication number
KR100453822B1
KR100453822B1 KR10-2002-0062250A KR20020062250A KR100453822B1 KR 100453822 B1 KR100453822 B1 KR 100453822B1 KR 20020062250 A KR20020062250 A KR 20020062250A KR 100453822 B1 KR100453822 B1 KR 100453822B1
Authority
KR
South Korea
Prior art keywords
branch
response message
user agent
message
response
Prior art date
Application number
KR10-2002-0062250A
Other languages
English (en)
Other versions
KR20040035903A (ko
Inventor
강현주
박미룡
석주명
최길영
이규호
이유경
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2002-0062250A priority Critical patent/KR100453822B1/ko
Publication of KR20040035903A publication Critical patent/KR20040035903A/ko
Application granted granted Critical
Publication of KR100453822B1 publication Critical patent/KR100453822B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W80/00Wireless network protocols or protocol adaptations to wireless operation
    • H04W80/08Upper layer protocols
    • H04W80/10Upper layer protocols adapted for application session management, e.g. SIP [Session Initiation Protocol]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Telephonic Communication Services (AREA)

Abstract

본 발명에 따라 세션 초기화 프로토콜(SIP:Session Initiation protocol)을 이용하여 분기가 있는 호 요청을 처리하는 방법, SIP 환경에서 분기상태를 가지는 유저에이전트 클라이언트 관리 방법 및 그 호처리기가 개시된다. 본 발명에 따른 분기가 있는 호요청을 처리하는 방법은, 분기 상태를 관리하는 유저에이전트 클라이언트를 분기 개수만큼 제공하고, 각 유저에이전트 클라이언트마다 인바이트 메시지를 출력하는 단계와, 상기 인바이트 메시지에 대한 응답으로 OK 응답 메시지를 받지 못한 유저에이전트 클라이언트의 응답 메시지를 분기저장소에 저장하는 단계와, 상기 분기저장소에 저장된 응답 메시지를 이용하여 분기를 처리하는 단계를 포함한다. 이와 같은 본 발명에 의하면, 세션 초기화 프로토콜을 이용한 호 처리기에서 분기에 대한 상태를 관리하므로 신뢰성 있는 호 상태 관리를 수행할 수 있고, 호 요청에 대한 신속한 응답 처리를 실행할 수 있다.

Description

세션 초기화 프로토콜(SIP:Session Initiation Protocol)을 이용하여 분기가 있는 호 요청을 처리하는 방법 및 그 호처리기{A method for processing call request having forking using SIP and the call processor therefor}
본 발명은 구내 망 호 처리기에서 호 상태를 관리하면서 분기를 구현하는 것으로, 좀더 구체적으로는 세션 초기화 프로토콜(SIP:Session Initiation protocol)을 이용하여 분기가 있는 호 요청을 처리하는 방법, SIP 환경에서 분기상태를 가지는 유저에이전트 클라이언트 관리 방법 및 그 호처리기에 관한 것이다.
인터넷을 통해 영상, 음성 및 팩스 메시지를 전달하는 서비스인 VoIP(Voice over Internet Protocol)는 인터넷을 이용하고자 하는 사용자가 PC에서 인터넷에 접속하거나, 인터넷 프로토콜이 적용된 독립적인 디바이스를 이용하여 접속하거나, 기존의 PSTN 단말기에서 게이트웨이로 전화를 걸어 접속할 때와 같이 여러 경우에 음성과 비디오와 같은 실시간 미디어를 전송한다. VoIP서비스를 할 때에는 통신하고자 하는 상대방을 찾아 시그널링하는 수단이 필요하며 이러한 VoIP 시그널링 종류의 하나로 IETF (Internet Engineering Task Force)의 세션 초기화 프로토콜(SIP:Session Initiation Protocol)이 있다.
인터넷 프로토콜 기반 네트워크에서 하나 이상의 단말 간에 멀티미디어 세션이나 콜을 생성, 변경, 종료할 때 쓰이는 SIP는 응용계층 제어 프로토콜로서 이러한 세션에는 멀티미디어 컨퍼런스, 인터넷 텔레폰 콜, 원격 교육 등이 포함된다. SIP는 SMTP(simple mail transfer protocol), e-mail, HTTP(hypertext transfer protocol), 웹에 기반을 두고 모델링되었으며, 이러한 SIP는 클라이언트가요구(request)를 보내면 서버가 응답(response)을 보내는 클라이언트-서버 프로토콜이라고 할 수 있다.
SIP 메시지는 클라이언트에서 서버로 보내는 요구(request) 메시지와 서버에서 클라이언트로 보내는 응답(response) 메시지가 있다. SIP request는 INVITE, ACK, BYE, CANCEL, REGISTER, OPTION의 6가지 메쏘드로 구성된다.
인바이트(INVITE)는 클라이언트와 서버간에 콜을 개시하는 가장 기본이 되는 메쏘드로 사용자와 서비스가 세션에 참가하도록 하며, 발신자와 수신자의 주소, 콜의 주제, 콜의 priority, 콜 라우팅 request, 바람직한 response 특성을 포함한다. SIP 서버로 location 정보를 전달하는 REGISTER는 SIP 서버가 incoming address를 outgoing address로 어떻게 매핑하는 지를 사용자에게 알려준다. BYE는 컨퍼런스에 참가한 사람들 간의 연결을 종료하고, OPTIONS은 착신자의 capability에 대한 정보를 가지고 있으며, ACK는 메시지 교환을 확인하고, CANCEL은 전송되지 않은 request를 종료한다.
수신자는 request 메시지를 받고 나면 SIP response 메시지로 응답을 한다. Response 상태 코드는 1xx, 2xx, 3xx, 4xx, 5xx, 6xx 형태로 표현되는데, 1xx(Informational)는 request를 받고 그 request에 대한 처리를 계속하고 있음을 나타내고, 2xx(Success)는 action이 성공적으로 받아들여져 이해되었음을 의미한다. 3xx(Redirection)는 request를 완료하기 위해서는 또 다른 action이 필요하며, 4xx (Client Error)는 request가 bad syntax를 포함하거나 이 서버에서 수행될 수 없다는 것을 나타내고, 5xx(Server Error)은 서버가 명백히 유효한 request를처리하지 못했음을, 6xx(Global Error)는 request가 어떤 서버에서도 수행되지 못했음을 나타낸다.
SIP 네트워크는 사용자 에이전트(User Agent), 네트워크 서버(Network Server), 등록기(Registrar)로 구성되는데, UA(User Agent)는 INVITE request를 보내서 콜을 개시하는 UAC(User Agent Client)와 SIP request를 받았을 때 사용자를 contact하는 어플리케이션인 UAS(User Agent Server)로 구성된다.
네트워크 서버는 프록시(proxy) 서버와 리다이렉트(redirect) 서버로 구성되는데 프록시 서버는 다른 클라이언트를 대신해서 요구를 하기 위해 클라이언트와 서버처럼 행동하는 매개 프로그램이다. 프록시 서버는 요구를 해석하고, 필요하다면 요구 메시지를 포워딩하기 전에 재기록한다.
SIP 오퍼레이션의 프록시 모드에서 SIP 서버는 들어오는 요구 메시지를 처리하는 방법에 있어서 프록시 서버는 인바이트 요구를 받아서 그 요구의 어드레스를 보고 로케이션 서버를 컨택하여 수신자의 정확한 로케이션 정보를 얻는다. 그리고 프록시 서버는 로케이션 서버에서 받은 어드레스로 SIP 요구를 보내고, 요구를 받은 UAS는 수신자에게 인바이트 메시지가 왔음을 알리고 프록시 서버에게 메시지를 잘 받았다는 응답을 보낸다. 그러면 프록시 서버는 UAC에게 OK 응답을 보내고, UAC는 프록시 서버에게 ACK 메시지를 보내며 프록시 서버는 UAS에게 ACK를 포워딩함으로써 메시지 전송이 성공적으로 이루어졌음을 확인한다. 여기서 ACK는 프록시 서버를 거치지 않고 수신자에게 직접 보내질 수도 있다.
이와 같은 SIP 오퍼레이션에서 일반적인 분기 방법은 분기한 호에 대해서는상태를 관리하지 않도록 되어 있어, 프록시의 코어(Proxy Core)에서 호의 요청에 대하여 여러 개의 종착지로부터 오는 응답 메시지를 저장하고, 세션 초기화 프로토콜에서 권장하는 최하 상태 코드를 이용해 응답 메시지를 만들어 호를 요청한 방향으로 보내주는 방법이 사용되고 있다.
그러나, 이러한 종래의 분기를 구현한 프록시의 경우는 최하상태 코드를 이용해 응답 메시지를 만들어 호 요청 방향으로 보내줄 뿐이기 때문에 분기에 대한 상태를 관리하고 있지 않기 때문에, 신뢰성이 부족할 뿐만 아니라, 최적의 응답을 찾기 위해 분기를 한 숫자만큼의 응답을 기다려야 하므로, 응답이 없을 경우에는 실질적으로 계속해서 기다리는 형태가 될 수밖에 없고, 따라서 자원 이용의 효율성을 떨어뜨리며, 리얼타임을 요하는 호 처리에서는 적합하지가 않다.
본 발명은 이와 같은 문제점을 해결하여 세션 초기화 프로토콜(SIP: Session Initiation Protocol)을 이용하여 구내 망 호 처리기를 구현함에 있어서 상태가 관리되는 분기가 있는 호 요청을 처리하는 방법, SIP 환경에서 분기상태를 가지는 유저에이전트 클라이언트 관리 방법 및 그 호처리기를 제공하는 것을 목적으로 한다.
도 1은 본 발명이 적용되는 세션 초기화 프로토콜을 기반으로 한 호 처리기의 일실시예 구성도,
도 2는 본 발명이 적용된 유저에이전트서버 상태 변환의 흐름도,
도 3은 본 발명이 적용된 유저클라이언트 상태 변환의 흐름도,
도 4는 본 발명에 따른 세션 초기화 프로토콜을 이용한 구내 망 호 처리기의 분기 수행을 위한 세션 상태 관리 동작의 흐름도,
도 5는 호 요청에 대한 응답 메시지가 발생했을 때, 최소의 시간으로 최적의 응답 메시지를 추출하는 과정의 흐름도,
도 6 은 타이머 이벤트 입력 처리 과정의 흐름도,
도 7은 어느 하나의 유저에이전트 클라이언트에서 200 상태 코드를 수신한 경우의 분기 처리 방법의 일 예를 설명하기 위한 도면,
도 8은 모든 유저에이전트 클라이언트에서 200 상태코드를 수신하지 못한 경우의 분기 처리 방법의 일 예를 설명하기 위한 도면.
이상과 같은 과제를 해결하기 위한 본 발명의 하나의 특징은, 세션 초기화 프로토콜(SIP:Session Initiation protocol)을 이용하여 분기가 있는 호 요청을 처리하는 방법에 있어서, 분기 상태를 관리하는 유저에이전트 클라이언트를 분기 개수만큼 제공하고, 각 유저에이전트 클라이언트마다 인바이트 메시지를 출력하는 단계와, 상기 인바이트 메시지에 대한 응답으로 OK 응답 메시지를 받지 못한 유저에이전트 클라이언트의 응답 메시지를 분기저장소에 저장하는 단계와, 상기 분기저장소에 저장된 응답 메시지를 이용하여 분기를 처리하는 단계를 포함하는 것이다.
본 발명의 다른 특징은, SIP 환경에서 분기상태를 가지는 유저에이전트 클라이언트 관리 방법에 있어서, 호시도 상태에서 호요청에 대한 OK 응답 메시지를 수신한 경우에 호연결상태로 천이시키는 단계와, 호시도 상태에서 분기이면서 호요청에 대한 OK 응답메시지가 아닌 응답 메시지를 수신한 경우에 상기 응답 메시지를 분기저장소에 저장하고 분기상태로 천이시키는 단계와, 분기상태에서 소정의 시간이 경과하기까지 분기상태를 유지하는 단계를 포함하는 것이다.
본 발명의 또다른 특징은, 세션 초기화 프로토콜(SIP:Session Initiation protocol)을 이용하여 분기가 있는 호 요청을 처리하는 호 처리기에 있어서, 분기 상태를 관리하는 유저에이전트 클라이언트를 분기 개수만큼 제공하고, 상기 각 유저에이전트 클라이언트마다 인바이트 메시지를 출력하는 제어기와, 상기 인바이트 메시지에 대한 응답으로 OK 응답이 아닌 응답 메시지를 받은 경우에 상기 응답 메시지를 분기저장소에 저장하는 유저에이전트 클라이언트와, 상기 OK 응답이 아닌 응답 메시지가 저장된 분기저장소를 포함하며, 상기 제어기는 상기 분기저장소에 저장된 응답 메시지를 이용하여 분기 처리를 수행하는 것이다.
여기서 상술된 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이다. 이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명한다.
도 1은 본 발명에 따른 세션 초기화 프로토콜을 기반으로 한 호 처리기(100) 구성의 일 실시예이다.
도 1에 도시된 구내망 호 처리기(100)는 세션 관리 모듈(110)과, 입출력을 위한 쓰레드들(130,150)의 기능으로부터 발생하는 여러 가지 버퍼들 즉, 입력버퍼(140), 이벤트 버퍼(160), 출력버퍼(120)를 포함한다.
상기 세션관리모듈(110)은 분기프록시 핵심 엔진(111)과 분기저장소(112)를 포함한다. 분기프록시 핵심 엔진(111)은 유저에이전트서버 상태변환(113)과 유저에이전트 클라이언트 상태변환(114,115)을 이용해서 트랜잭션 상태뿐만 아니라 호 상태를 관리하며, 특히 분기에 대한 호 상태 정보를 관리한다.
상기 분기 프록시 핵심 엔진(111)은 이벤트 버퍼(160)를 감시하고 있다가, 이벤트가 들어오면, 저장되어 있지 않은 요청 메시지의 경우 유저에이전트 서버(113)를 만들고, 인증과 라우팅 과정을 거쳐 분기 유무를 판단한다. 들어온 메시지가 이미 저장되어 있던 요청 메시지인 경우 방향성을 따져 유저에이전트 서버나 유저에이전트 클라이언트 상태에 따른 메시지 처리를 발생시킨다. 또한, 상기 분기프록시 핵심 엔진(111)은 들어온 메시지가 호 요청에 대한 응답 메시지의 경우, 분기된 메시지에 대한 응답 메시지의 상태코드에 따라, 분기 저장소(112)를 이용하여 저장하기도하고, 저장 없이 처리하기도 한다.
상기 세션 관리 모듈(110)은 분기가 발생하지 않을 시에, 하나의 유저에이전트 서버와 하나의 유저에이전트 클라이언트를 구성하며, 분기가 발생한 경우에는 분기 프록시 핵심 엔진(111)을 제어기로 이용하여 분기에 대한 정보를 이용하여 유저에이전트 클라이언트를 여러 개 생성한다. 또한, 상기 세션 관리 모듈(110)은 분기가 발생한 경우에 소정의 타이머 설정 시간동안에 분기 동작을 완료시키기 위해 타이머 이벤트를 만들어 내어 운용하는데, 이러한 소정의 타이머 설정 시간은 세션 초기화 프로토콜에 명시된 최대 재전송 시간으로 표준 세션 초기화 프로토콜에서 정의되어진 64*T1을 일 예로 사용할 수 있다. 상기 T1은 하나의 메시지가 시작 지점으로부터 끝 지점까지 갔다가 응답으로 돌아오는 시간을 의미하는 라운드 타임 딜레이(Round Time Delay)이다.
또한, 상기 세션 관리 모듈(110)은 분기 프록시 핵심 엔진(111)이 관리하는 분기 저장소(112)를 검색하여, 어떠한 유저에이전트 클라이언트를 끝까지 운용할 것인지에 대한 정보를 읽어 온다.
분기저장소(112)는 응답 메시지를 저장하며, 메모리 형태가 될 수도 있고 데이터베이스 형태가 될 수도 있다.
도 2는 도1의 유저에이전트 서버 상태 변환(113)의 세부 상태 흐름도 이다.
도 2의 유저에이전트서버 상태 변환(113)은 아무런 일도 하지 않는 상태인 유휴상태(201)와 호 요청을 호 진행 방향으로 보낸 호 시도 상태(202), 호 요청을 받은 측에서부터 응답 메시지가 온 호 응답 상태(203), 호 요청을 받은 측으로부터 호 요청을 수락하는 신호를 받은 호 연결 상태(204), 상기 호 시도 상태(202)에서부터 에러메시지를 보내거나, 호 응답 상태(203)에서 200보다 큰 값의 상태코드를 보내게 될 때 천이 되는 상태인 에러상태(205), 상기 호 연결 상태(204)에서 호 요청 측이나, 호 응답 측 쪽에서 종료했을 때인 종료상태(206)를 포함한다.
상기 호 응답상태(203)에서 판단할 때, 분기 프록시로 동작 중일 때에는 1xx의 상태 코드를 받았을 때는 계속해서 상기 호 응답 상태(203)에 머무르면서, 분기를 처리한다.
도 3은 도 1에 도시된 유저에이전트 클라이언트 상태 변환(114)으로 본 발명이 적용된 세부 상태 흐름도 이다.
도 3의 유저에이전트 클라이언트 상태 변환(114)은 처음 시작하는 상태인 유휴상태(301)와, 들어온 호 요청을 라우팅 결과에 따라 호 응답 측으로 호 요청을 보내고 천이되는 호 시도 상태(302), 상기 호 시도상태(302)에서 분기이면서 200보다 큰 상태 코드를 받게 되었을 때 천이 되는 분기 상태(303), 상기 호 시도 상태(302)에서 200 상태코드를 입력받게 되었을 때 천이되는 호 연결 상태(304)가 있다. 그 밖에 에러 상태(305)와 종료 상태(306)는 에러, 종료 각각의 상태로 천이 되는 상태이다.
상기 유휴상태(301)에서 유저에이전트 클라이언트가 세션 초기화 프로토콜의 INVITE 메시지를 호 응답 측으로 보내면, 유저에이전트 클라이언트는 호 시도 상태(302)에 머물게 된다. 상기 호 시도 상태(302)는 분기 과정을 처리하는 핵심이 되는데, 분기이고 200보다 큰 상태코드가 입력되면 분기상태로 천이되고, 200 상태 코드가 입력되면 호 연결 상태로 천이된다. 분기상태에서는 200보다 큰 상태코드가 입력되면 계속 분기상태를 유지하고, 타임아웃되면 에러상태로 천이된다.
도 4는 본 발명에 따른 세션 초기화 프로토콜을 이용한 구내 망 호 처리기의 분기 수행을 위한 세션 상태 관리 동작 흐름의 일 예이다.
먼저, 세션 초기화 프로토콜의 INVITE 메시지가 입력되면(단계 401), 호를 요청한 측의 사용자가 등록된 사용자인지를 확인해서 인증된 사람인 경우에는 호 요청을 받아 처리하는 인증 관리를 수행한다(단계 402).
다음 인증관리를 통해 인증된 메시지에 대해서, 유저에이전트 서버를 만든다(단계 403). 즉, 유저에이전트 서버 만들기 과정에서는 들어온 호 요청 메시지를 맵 형태로 저장하고 호 진행 상태를 관리한다. 다시말하면, 유저에이전트 서버에 들어가는 내용은 입력된 메시지와 도 2에 도시된 바와 같은 상태 흐름을 위한 프로세스 집합이다.
그리고 나서, 호 요청을 받게될 사용자의 위치를 찾기 위해 라우팅 정보를 읽고(단계 404), 라우팅 정보를 읽은 결과, 호 요청에 대해 응답할 사용자가 현재 등록되어 있는지 여부와, 그 응답할 사용자의 위치를 가져온다.
다음, 분기 여부를 판단하게 되는데(단계 405) 즉, 라우팅 정보를 읽은 결과 여러개의 등록 사용자가 있을 경우 분기를 하게 된다.
분기 판단 결과 분기가 아닌 경우에는 타이머를 끄고(단계 412), 유저에이전트 클라이언트 응답 처리(단계 411)로 진행하는데, 단계(412)는 분기가 발생하지 않음을 판단하는 기준이 된다.
분기 판단 결과 분기일 경우에는 카운터를 초기화하고(단계 406), 타이머에 64*T1을 저장한 다음(단계 407), 유저에이전트 클라이언트를 만든다(단계 408). 유저에이전트 서버와 마찬가지로 유저에이전트 클라이언트에 들어가는 내용은 입력되는 메시지와 도 3에 도시된 바와 같은 상태 흐름에 대한 프로세스 집합이다.
그러면, 유저에이전트 클라이언트는 INVITE 메시지를 출력한다(단계 409). 즉, 단계(401)에서 들어온 메시지를 단계(404)를 통해 얻어진 종착지로 보낸다.
다음, 카운터값이 분기 개수 이상인지를 판단하는데(단계 410), 분기 개수란 단계(404)에서 얻어진 분기의 수를 말한다.
단계(410)의 판단결과, 카운터 값이 분기 개수를 넘지 않았으면, 카운터를 1 증가시키고(단계413) 단계(408)로 진행한다. 단계408, 단계409, 단계410, 단계413은 카운터 값이 분기 개수를 초과할 때까지 루프를 형성한다. 이와 같은 루프에 의해 분기 개수만큼 유저에이전트 클라이언트를 만들고 분기 개수만큼 인바이트 메시지를 출력한다.
단계(410)의 판단결과, 카운터 값이 분기 개수를 초과하면, 유저에이전트 클라이언트 응답처리(단계 411)를 수행하며, 유저에이전트 클라이언트 응답처리를 수행하기 위해 A로 진행한다. 유저에이전트 클라이언트 응답처리 과정은 분기시킨 값에 대한 결과의 반환으로 상태 코드를 가진 메시지들이 들어오는데, 이중에서 최적의 응답을 판단한다.
상기 루프에 의해 만들어진 유저 에이전트 클라이언트 각각에서 유저에이전트 클라이언트 응답처리가 수행되는데, 개략적으로는, 호시도 상태에서 200 상태 코드를 수신한 유저 에이전트 클라이언트는 호연결상태로 천이되고 타이머 아웃세팅되며, 200 상태코드를 수신하지 못한 유저에이전트 클라이언트는 분기상태로 천이되어 분기저장소에 메시지를 추가한다. 200상태코드를 수신하지 못한 유저에이전트 클라이언트가 분기저장소에 메시지를 추가하는 이유중의 하나는 어느 유저에이전트 클라이언트도 200 상태코드를 수신하지 못하였을 경우에 그중에서 최적의 유저에이전트 클라이언트를 선택하기 위함이다.
도 5에 유저에이전트 클라이언트 응답처리(단계 411)의 세부적인 과정을 도시하는데, 호 요청에 대한 응답 메시지가 발생했을 때, 최소의 시간으로 최적의 응답 메시지를 축출한다.
먼저, 분기된 메시지에 대한 응답 메시지가 세션 초기화 프로토콜을 통해 입력되면(단계 501), 입력된 메시지의 상태 코드 정보가 200 상태 코드인지를 판단한다(단계 502). 여기서, 200 상태 코드라는 것은 일반적으로 메시지를 제대로 수신하였다는 OK 응답을 나타내는 상태 코드를 말하며, 특히 호시도 상태에서는 시도된 호를 받았다는 것을 나타낸다.
단계(502)의 결과, 입력된 메시지가 200 상태 코드로 판단된 경우에는 유저에이전트 클라이언트 호 시도 상태에서 상기 단계(501)가 이루어졌는지를 판단한다(단계 503).
상기 단계(503)의 판단 결과, 유저에이전트 클라이언트 호 시도 상태에 있지 않으면, 들어온 메시지에 대해서 세션 초기화 프로토콜에 정의된 CANCEL 메시지를 반환한다(509).
상기 단계(503)의 판단 결과, 입력된 메시지가 200 상태 코드보다 큰 메시지가 들어왔을 때는 유저에이전트 클라이언트 상태가 호 시도 상태인지를 판단한다(501).
상기 단계(510)의 판단 결과, 호 시도 상태이면, 유저에이전트 클라이언트분기 상태로 변환하는 작업을 수행하고(단계512), 분기 저장소에 입력된 메시지를 추가한다(511).
상기 단계(510)의 판단 결과, 호 시도 상태가 아니면, 들어온 메시지를 분기 저장소에 추가한다(511).
즉, 상기 단계(510)는 유저에이전트 클라이언트 상태가 호 시도 상태인지, 분기 상태인지를 판단하는 것으로, 유저에이전트 클라이언트 분기 상태이면, 상태 변환 없이 상기 단계(511)만 수행하는 것이다.
상기 단계(503)의 판단 결과, 유저에이전트 클라이언트 호 시도 상태에서 상기 단계(501)가 발생하면, 상기 단계(501)에서 받은 메시지를 호 요청 방향으로 포워딩한다(단계 504).
그리고나서, 유저에이전트 클라이언트 호 연결 상태로 유저에이전트 클라이언트 상태를 변경시킨다(단계 505).
다음, "200received" 플래그에 true 값을 저장하는데, 즉 응답메시지로 200 상태 코드를 받았다는 것을 나타내며, 이러한 처리를 통해 가장 먼저 들어온 200 상태 코드만 단계(504)를 수행하는 것이다. 이러한 "200received" 플래그 값은 후에 분기된 종착지중 어느 하나의 종착지로부터 200 상태 코드를 받은 것이 있는지를 판단할 때 이용된다.
다음, 타이머를 중지시킨다(단계 507). 이것은 이후에 발생한 상태코드를 가지고 상기 응답메시지가 다시 입력되는 것을 방지한다.
그리고 나서, 타이머 이벤트 처리(단계 508)가 수행되며, B로 진행한다.
도 6에 타이머 이벤트 처리 동작이 도시되어 있다.
먼저, 타이머 이벤트가 입력된다(단계 601). 사실, 단계(601)는 도 5의 단계(507)에서 타이머 아웃 세팅시 발생하는 경우와, 실재 타이머 동작이 끝나서 알리는 경우의 두가지 경우 모두에 발생할 수 있다. 다시말하면, 분기들중에서 어느 하나의 분기가 200 상태코드를 받은 경우에는 타이머가 정상적으로 타임 아웃되기까지 기다릴 필요없이 그때까지의 응답 메시지들에 대해서만 타이머 이벤트 처리를 하고, 어느 하나의 분기도 200 상태 코드를 받지 못하는 경우에는 타이머에 의해 설정된 소정의 시간이 타임 아웃될 때까지 기다린 다음 타이머 이벤트 처리를 한다.
단계(601)의 결과로, 응답 메시지의 최적 선택 과정은 단계(602)로부터 시작한다.
다음, 이전에 200 상태 코드를 받은 적이 있는지를 판단한다(단계 602). 위에서도 설명한 바와 같이 200 상태 코드를 받은 적이 있는가 하는 것은 "200received" 플래그의 내용을 확인하여 "true"값으로 설정되어 있으면 이전에 200 상태 코드를 받은 적이 있다는 것이고, "true"값이 설정되어 있지 않다면 이전에 200 상태코드를 받은 적이 없다는 것을 나타낸다. 또한, 200 상태 코드를 이미 받았는지를 판단하는 것은 분기 저장소내의 모든 자료를 검색해야하는지, 또는 분기 저장소 내의 상태 코드 정보를 무시해도 되는지를 판단하는 근거가 된다.
단계(602)에서 이전에 200상태 코드를 받은 적이 있는 것으로 판단되면, 상기 단계(601)의 발생 원인이 200 상태코드를 받아서 이벤트를 임의로 발생시킨 형태를 말하므로, 분기 저장소내의 모든 곳으로 세션 초기화 프로토콜의 CANCEL 메시지를 반환한다(단계 606). 즉, 이미 어느 하나의 분기가 200 상태코드를 받아서 호연결상태에 있으면 다른 분기들은 더 이상 호 처리를 할 필요가 없으므로 분기저장소에 있는 모든 분기들로 캔슬 메시지를 반환하는 것이다.
상기 단계(602)의 판단 결과, 200 상태코드를 받은 적이 없는 경우에는, 일단 어느 분기에서도 호 연결 상태가 되지 않았으므로 분기들중에서 최적의 어느 하나를 선택하여 응답 메시지로 처리하기 위해, 분기 저장소에 저장되어 있는 메시지 중 상태 코드가 최하인 메시지에 대한 정보를 꺼내어, 호 요청 사용자 쪽으로 메시지를 보낸다(단계 603).
상기 단계(603)의 결과, 상태 코드가 최하인 메시지 정보가 삭제된 상태에서, 분기 저장소에 남아있는 메시지들에 대해, 그 메시지를 보낸 쪽으로 그대로, 세션 초기화 프로토콜의 CANCEL 메시지를 반환한다(단계 604).
그리고나서, 200상태 코드를 갖는 메시지가 들어오지 않았으므로, 유저 에이전트 클라이언트 상태를 에러 상태로 갱신한다(단계 605).
이제 도 7을 참조하여, 어느 하나의 유저에이전트 클라이언트에서 200 상태 코드를 수신한 경우의 분기 처리 방법의 일 예를 설명한다.
유저에이전트 클라이언트 1(720)이 200 상태 코드를 수신하여 "200received" 플래그에 true를 설정하고, 유저에이전트 클라이언트 2(730)는 수신한 300 상태코드를 분기저장소(750)에 저장하고, 유저에이전트 클라이언트 3(740)은 수신한 400 상태코드를 분기저장소(745)에 저장한다. 그러면, 분기프록시 핵심 엔진(710)은클라이언트 1이 200 상태 코드를 수신하고 난 시점에서 분기저장소(750)에 저장된 클라이언트 종착지들로 삭제 메시지를 반환함으로써 호시도를 취소한다. 이는 이미 호연결 상태가 한번 이루어지면 다른 분기들에 대해서는 타이머가 타임아웃될 때까지 기다릴 필요가 없기 때문이다.
도 8에는 모든 유저에이전트 클라이언트에서 200 상태코드를 수신하지 못한 경우의 분기 처리 방법의 일 예가 도시되어 있다.
유저에이전트 클라이언트 1(820)은 분기저장소(850)에 210 상태코드를 저장하고, 유저에이전트 클라이언트 2(830)는 분기저장소(850)에 300 상태코드를 저장하고, 유저에이전트 클라이언트 3(840)는 분기저장소(850)에 400 상태코드를 저장한다. 200 상태 코드가 한번도 일어나지 않았기 때문에 분기 프록시 핵심 엔진은 소정의 타이머 설정 시간이 타임아웃되면 분기저장소에 저장된 상태 코드중에서 가장 낮은 값을 가지는 상태코드를 가지는 클라이언트 1(820)의 호 요청 방향으로 메시지를 보내고, 나머지 클라이언트 2와 클라이언트 3에 대해서는 삭제 메시지를 보낸다.
이상에서 설명한 본 발명은 진술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
상기와 같은 본 발명은, 세션 초기화 프로토콜을 이용한 호 처리기에서 분기에 대한 상태를 관리하므로 신뢰성 있는 호 상태 관리를 수행할 수 있고, 어느 하나의 분기에서 OK 응답 메시지를 받은 경우에 나머지 분기에 대한 메시지를 기다리지 않고 분기 처리 동작을 완료하므로 호 요청에 대한 신속한 응답 처리를 실행할 수 있다.

Claims (11)

  1. 세션 초기화 프로토콜(SIP:Session Initiation protocol)을 이용하여 분기가 있는 호 요청을 처리하는 방법에 있어서,
    분기 상태를 관리하는 유저에이전트 클라이언트를 분기 개수만큼 제공하고, 각 유저에이전트 클라이언트마다 인바이트 메시지를 출력하는 단계와,
    상기 인바이트 메시지에 대한 응답으로 OK 응답 메시지를 받지 못한 유저에이전트 클라이언트의 응답 메시지를 분기저장소에 저장하는 단계와,
    상기 분기저장소에 저장된 응답 메시지를 이용하여 분기를 처리하는 단계를 포함하는 것을 특징으로 하는 분기가 있는 호 요청 처리방법.
  2. 제1항에 있어서,
    상기 분기 처리 단계는,
    OK 응답 메시지를 받은 유저에이전트 클라이언트가 있으면 상기 분기저장소에 저장된 응답 메시지를 보낸 착신지로 캔슬 메시지를 반환하는 단계와,
    OK 응답 메시지를 받은 유저에이전트 클라이언트가 없으면 상기 분기저장소에 저장된 응답 메시지중 최적의 응답메시지를 처리하는 단계를 포함하는 것을 특징으로 하는 분기가 있는 호 요청 처리방법.
  3. 제2항에 있어서,
    상기 최적의 응답메시지 처리단계는,
    상기 분기저장소에 저장된 최하 상태코드를 가진 응답메시지를 발신지로 포워딩하고, 분기저장소에 저장된 응답 메시지중 상기 최하 상태코드를 가진 응답메시지를 제외한 나머지 응답메시지를 보낸 착신지로 캔슬 메시지를 반환하는 단계를 포함하는 것을 특징으로 하는 분기가 있는 호 요청 처리방법.
  4. 제1항에 있어서,
    타이머를 설정하는 단계를 더 포함하고,
    어느 하나의 유저에이전트 클라이언트가 OK 응답 메시지를 수신하면 타이머를 강제로 타임 아웃시키고 상기 분기처리 단계를 수행하고, 모든 유저에이전트 클라이언트가 OK 응답 메시지를 수신하지 못한 경우에는 상기 타이머가 타임아웃될 때까지 기다린 다음 상기 분기처리 단계를 수행하는 것을 특징으로 하는 분기가 있는 호 요청 처리방법.
  5. SIP 환경에서 분기상태를 가지는 유저에이전트 클라이언트 관리 방법에 있어서,
    호시도 상태에서 호요청에 대한 OK 응답 메시지를 수신한 경우에 호연결상태로 천이시키는 단계와,
    호시도 상태에서 분기이면서 호요청에 대한 OK 응답메시지가 아닌 응답 메시지를 수신한 경우에 상기 응답 메시지를 분기저장소에 저장하고 분기상태로 천이시키는 단계와,
    분기상태에서 소정의 시간이 경과하기까지 분기상태를 유지하는 단계를 포함하는 것을 특징으로 하는 유저에이전트 관리 방법.
  6. 제5항에 있어서,
    상기 소정의 시간은 64*T1인 것을 특징으로 하는 유저에이전트 클라이언트 관리 방법.
  7. 세션 초기화 프로토콜(SIP:Session Initiation protocol)을 이용하여 분기가 있는 호 요청을 처리하는 호 처리기에 있어서,
    분기 상태를 관리하는 유저에이전트 클라이언트를 분기 개수만큼 제공하고, 상기 각 유저에이전트 클라이언트마다 인바이트 메시지를 출력하는 제어기와,
    상기 인바이트 메시지에 대한 응답으로 OK 응답이 아닌 응답 메시지를 받은 경우에 상기 응답 메시지를 분기저장소에 저장하는 유저에이전트 클라이언트와,
    상기 OK 응답이 아닌 응답 메시지가 저장된 분기저장소를 포함하며,
    상기 제어기는 상기 분기저장소에 저장된 응답 메시지를 이용하여 분기 처리를 수행하는 것을 특징으로 하는 호처리기.
  8. 제7항에 있어서,
    상기 제어기는,
    OK 응답 메시지를 받은 유저에이전트 클라이언트가 있으면 상기 분기저장소에 저장된 응답 메시지를 보낸 착신지로 캔슬 메시지를 반환하고,
    OK 응답 메시지를 받은 유저에이전트 클라이언트가 없으면 상기 분기저장소에 저장된 응답 메시지중 최적의 응답메시지를 처리하는 것을 특징으로 하는 호처리기.
  9. 제8항에 있어서,
    상기 최적의 응답메시지 처리는,
    상기 분기저장소에 저장된 최하 상태코드를 가진 응답메시지를 발신지로 포워딩하고, 분기저장소에 저장된 응답 메시지중 상기 최하 상태코드를 가진 응답메시지를 제외한 나머지 응답메시지를 보낸 착신지로 캔슬 메시지를 반환하는 것을 특징으로 하는 호처리기.
  10. 제7항에 있어서,
    상기 제어기는 타이머를 더 설정하고,
    유저에이전트 클라이언트가 OK 응답 메시지를 수신하면 상기 타이머를 강제로 타임 아웃시키고, 상기 제어기는 분기처리동작을 수행하는 것을 특징으로 하는 호처리기.
  11. 제10항에 있어서,
    상기 어느 유저에이전트 클라이언트도 OK 응답 메시지를 수신하지 못한 경우에는 상기 타이머가 타임아웃될 때까지 기다린 다음 상기 제어기는 상기 분기처리 동작을 수행하는 것을 특징으로 하는 호처리기.
KR10-2002-0062250A 2002-10-12 2002-10-12 세션 초기화 프로토콜(SIP:SessionInitiation Protocol)을 이용하여분기가 있는 호 요청을 처리하는 방법 및 그 호처리기 KR100453822B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0062250A KR100453822B1 (ko) 2002-10-12 2002-10-12 세션 초기화 프로토콜(SIP:SessionInitiation Protocol)을 이용하여분기가 있는 호 요청을 처리하는 방법 및 그 호처리기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0062250A KR100453822B1 (ko) 2002-10-12 2002-10-12 세션 초기화 프로토콜(SIP:SessionInitiation Protocol)을 이용하여분기가 있는 호 요청을 처리하는 방법 및 그 호처리기

Publications (2)

Publication Number Publication Date
KR20040035903A KR20040035903A (ko) 2004-04-30
KR100453822B1 true KR100453822B1 (ko) 2004-10-20

Family

ID=37334532

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0062250A KR100453822B1 (ko) 2002-10-12 2002-10-12 세션 초기화 프로토콜(SIP:SessionInitiation Protocol)을 이용하여분기가 있는 호 요청을 처리하는 방법 및 그 호처리기

Country Status (1)

Country Link
KR (1) KR100453822B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100487124B1 (ko) * 2002-11-12 2005-05-03 삼성전자주식회사 세션 이니세이션 프로토콜 시스템의 세션 정보 처리 방법및 그 기록매체

Also Published As

Publication number Publication date
KR20040035903A (ko) 2004-04-30

Similar Documents

Publication Publication Date Title
US8509393B2 (en) Internet protocol telephony voice/video message deposit and retrieval
US7860089B2 (en) Method and system for network based call-pickup
US7412529B2 (en) Method for processing session information of session initiation protocol system and recorded medium thereof
US6937597B1 (en) Signaling method for internet telephony
US10044767B2 (en) Method and system to enhance performance of a session initiation protocol network and its elements
KR20080044830A (ko) Sip와 같은 컴퓨터 프로토콜에 기초하여 전화 호출을다이얼로그와 연관시키는 방법
EP1139631A1 (en) Method of initiating a data transfer from a server to a client
JP4608371B2 (ja) Sipサービス変換装置、およびその方法
US8472600B2 (en) System and method for providing signaling in a network environment
US7620167B2 (en) Apparatus to override the redirect or reject feature at an SIP end point
KR100453822B1 (ko) 세션 초기화 프로토콜(SIP:SessionInitiation Protocol)을 이용하여분기가 있는 호 요청을 처리하는 방법 및 그 호처리기
US7688763B2 (en) Method for establishing a communication connection in a direct communication network
US8249238B2 (en) Dynamic key exchange for call forking scenarios
Cisco DTMF Events Through SIP Signaling
Cisco SIP INFO Method for DTMF Tone Generation
US20080137647A1 (en) VoIP terminal and method for providing multi-call service
KR100369809B1 (ko) 브이오아이피를 이용한 이중톤다중주파수 신호 전송방법
KR100929113B1 (ko) 자원 예약 프로토콜을 이용한 양방향 자원 예약 방법
WO2008080334A1 (fr) Agent d'utilisateur dos à dos et procédé de transmission d'informations associé
KR100636279B1 (ko) 브이오아이피 시스템의 자원정보를 이용한 호제어 시스템및 그 방법
Perea Session Initiation Protocol (SIP)
Camarillo et al. Network Working Group J. Rosenberg Request for Comments: 3261 dynamicsoft Obsoletes: 2543 H. Schulzrinne Category: Standards Track Columbia U.

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20091001

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee