KR20140093720A - 클라우드 내의 메시징을 위한 방법 및 장치 - Google Patents

클라우드 내의 메시징을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20140093720A
KR20140093720A KR1020147016733A KR20147016733A KR20140093720A KR 20140093720 A KR20140093720 A KR 20140093720A KR 1020147016733 A KR1020147016733 A KR 1020147016733A KR 20147016733 A KR20147016733 A KR 20147016733A KR 20140093720 A KR20140093720 A KR 20140093720A
Authority
KR
South Korea
Prior art keywords
session
state
message
context
message handling
Prior art date
Application number
KR1020147016733A
Other languages
English (en)
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 알까뗄 루슨트
Publication of KR20140093720A publication Critical patent/KR20140093720A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • 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
    • 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
    • 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/1083In-session procedures
    • H04L65/1086In-session procedures session scope modification
    • 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/40Support for services or applications
    • H04L65/401Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/148Migration or transfer of sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

메시지 핸들링 시스템의 복수의 세션 컨텍스트를 나타내기 위하여 세션 상태를 사용하여 분산 메시지 핸들링 시스템이 생성된다. 세션 상태는 세션을 완전하게 설명하는 세션 컨텍스트의 평이한 표현이다. 시스템 메시지 요청을 핸들링하기 위해 세션 상태를 이용하는 것은 메시지 핸들링 시스템이 복수의 상태 머신으로 메시지 요청의 핸들링을 분배하는 것을 허용한다. 유리하게도, 분배된 메시징 시스템은, 메시지 핸들링 시스템이 수요에 기초하여 애플리케이션 인스턴스로 메시지 핸들링 리소스를 동적으로 할당하는 것을 허용한다. 이러한 동적 할당은, 공급자가 애플리케이션 실행 수요를 충족시키면서 수요에 충족시키기 위해 리소스를 효율적으로 할당하는 것을 허용한다.

Description

클라우드 내의 메시징을 위한 방법 및 장치{METHOD AND APPARATUS FOR MESSAGING IN THE CLOUD}
본 발명은 일반적으로 네트워크 내의 메시지를 서비스하기 위한 방법 및 장치에 관한 것이다.
본 섹션은 본 발명의 보다 나은 이해를 촉진하는 데 도움이 될 수 있는 양태들을 도입한다. 따라서, 본 섹션의 문장들은 이러한 관점에서 읽혀져야 하며, 종래 기술인 것 또는 종래 기술이 아닌 것에 대한 승인으로서 이해되어서는 안 된다.
몇몇 알려진 시스템에서, 네트워크 공급자는 서비스 제공 애플리케이션에 대한 전용 장비를 채용한다. 이 경우에, 공급자가 새로운 서비스를 제공하기를 원한다면, 장래의 최대 수요를 추정하고 추정된 수요를 충족시키는, 특수화된 전용의 박스의 정확한 양을 구입할 필요가 있다. 그 후에, 수요가 더 많은 박스를 구입해야할 오퍼레이터 수요를 증가시키는 경우에, 수요 추정이 너무 높다면 박스는 휴지 상태에 있다. 이러한 모든 프로세스들은 분(minute)이 아니라 월(month) 단위로 다소 느리다. 이러한 셋업에서 네트워크 공급자는 투자를 하기 꺼린다.
다른 알려진 시스템에서, 컨텐츠 공급자는 그 애플리케이션에 전용인 리소스를 동적으로 조정하기 위하여 통상적인 클라우드 네트워크에 그 애플리케이션을 올려둔다. 하지만, 통상적인 클라우드 네트워크는 네트워크 공급자 애플리케이션의 실행 수요를 충족시키지 못할 수 있다.
다양한 실시예들은 분산된 메시지 핸들링 시스템을 생성하는 방법 및 장치를 제공한다. 분산된 메시지 핸들링 시스템은 메시지 핸들링 시스템 내의 복수의 세션 컨텍스트를 나타내는 세션 상태(state)를 사용함으로써 생성된다. 세션 상태는 세션을 완전하게 설명하는 세션 컨텍스트의 평이한 표현이다. 시스템 메시지 요청을 핸들링하기 위해 세션 상태를 이용하는 것은 메시지 핸들링 시스템이 메시지 요청의 핸들링을 복수의 상태 머신에 분배하는 것을 허용한다. 유리하게도, 분배된 메시징 시스템은 메시지 핸들링 시스템이 수요에 기초하여 메시지 핸들링 리소스를 애플리케이션 인스턴스로 동적으로 할당하는 것을 허용한다. 이러한 동적 할당은 공급자가 애플리케이션 실행 수요를 충족시키면서 수요를 충족시키기 위해 리소스를 효율적으로 할당하는 것을 허용한다.
일 실시예에서, 분배된 메시징 시스템에서 메시지를 핸들링하기 위해 분산 메시지 핸들링 장치가 제공된다. 분산 메시지 핸들링 장치는 데이터 스토리지, 및 상기 데이터 스토리지와 통신가능하게 연결된 프로세서를 포함한다. 상기 프로세서는, 수신된 메시지의 세션 id에 기초하여 세션 상태를 검색하고, 상기 세션 상태에 기초하여 세션 컨텍스트를 생성하고, 상태 머신을 사용하여 상기 세션 컨텍스트를 실행하도록 프로그램된다.
일부 실시예에서, 상기 세션 상태는 세션 id, 복수의 세션 파라미터 및 현재 노드 식별자를 포함한다.
일부 실시예에서, 세션 파라미터의 적어도 일부는 이름-값 쌍으로 포맷화된다.
일부 실시예에서, 또한 상기 프로세서는, 수신된 메시지의 제 2 세션 id에 기초하여 제 2 세션 상태를 검색하고 상기 제 2 세션 상태 및 흐름 정의(flow definition)에 기초하여 상기 제 2 세션 id에 대한 메시지의 시퀀스를 재생성하도록 프로그램된다.
일부 실시예에서, 세션 컨텍스트의 실행은, 프로세서가 실행된 세션 컨텍스트에 기초하여 갱신된 세션 상태를 생성하도록 프로그램하는 것을 포함한다.
일부 실시예에서, 데이터 스토리지는, 상태 머신과 연관된 갱신된 세션 상태와 제 2 분산 메시지 핸들링 장치의 제 2 상태 머신과 연관된 제 2 세션 상태를 포함한다.
일부 실시예에서, 또한 프로세서는 갱신된 세션 상태를 제 2 분산 메시지 핸들링 장치로 송신하고 제 2 분산 메시지 핸들링 장치로부터 제 2 세션 상태를 수신하도록 프로그램된다.
제 2 실시예에서, 분산 메시지 핸들링 장치가 분배된 메시징 시스템에서 메시지를 핸들링하기 위해 제공된다. 분산 메시지 핸들링 장치는 데이터 스토리지 및 데이터 스토리지에 연결된 프로세서를 포함한다. 데이터 스토리지는 세션 데이터 저장소를 포함한다. 프로세서는, 복수의 메시지를 수신하고, 메시지의 적어도 제 1 메시지를 분산 메시지 핸들링 시스템의 제 2 분산 메시지 핸들링 장치로 전달하고, 메시지의 적어도 제 2 메시지를 프로세싱하도록 프로그램된다. 프로세스는, 프로세서가 제 2 메시지에 기초하여 세션 데이터 저장소로부터 세션 상태를 검색하고, 세션 상태에 기초하여 세션 컨텍스트를 생성하고, 상태 머신을 사용하여 세션 컨텍스트를 실행하고, 실행된 세션 컨텍스트에 기초하여 갱신된 세션 상태를 생성하고, 갱신된 세션 상태를 데이터 저장소에 저장하도록 프로그램하는 것을 포함한다.
일부 실시예에서, 세션 상태는 세션 id, 복수의 세션 파라미터 및 현재 노드 식별자를 포함한다.
일부 실시예에서, 세션 컨텍스트의 생성은, 프로세서가 수신된 메시지로부터 적어도 하나의 이벤트 파라미터를 추출하도록 프로그램하는 것과 추출된 이벤트 파라미터(들) 상의 세션 컨텍스트에 기초하는 것을 포함한다.
일부 실시예에서, 적어도 제 1 메시지 및 제 2 메시지는 세션 id를 포함한다.
일부 실시예에서, 또한 프로세서는, 세션 데이터 저장소가 메시지에 대한 세션 상태 정보를 포함하는지에 대한 결정에 기초한 메시지를 전달 또는 프로세싱할지의 결정에 기초하고 세션 id에 기초하여 세션 데이터 저장소가 메시지에 대한 세션 상태 정보를 포함하는지에 대해 결정하도록 프로그램된다.
일부 실시예에서, 또한 프로세서는, 제 2 메시지를 프로세싱하도록 결정하는 것에 응답하여 상태 머신을 개시하도록 프로그램된다.
일부 실시예에서, 또한 프로세서는, 분산 메시지 핸들링 시스템에서 제 3 분산 메시지 핸들링 장치로부터 이전된 세션 상태를 수신하고, 이전된 세션 상태에 기초하여 세션 데이터 저장소를 갱신하도록 프로그램된다.
일부 실시예에서, 상태 머신은 흐름 정의를 포함한다.
제 3 실시예에서, 분산 메시지 핸들링 시스템에서 수신된 메시지를 핸들링하는 방법에 제공된다. 본 방법은 수신된 메시지의 세션 id에 기초하여 세션 상태를 검색하는 단계와, 세션 상태에 기초하여 세션 컨텍스트를 생성하는 단계와, 상태 머신을 사용하여 세션 컨텍스트를 실행하는 단계를 포함한다.
일부 실시예에서, 세션 컨텍스트의 트랜슬레이션 생성은, 상태 머신에 의해 생성된 갱신된 세션 컨텍스트를 사용하여 갱신된 세션 상태를 트랜슬레이팅하는 단계와 갱신된 세션 상태를 세션 데이터 저장소로 송신하는 단계를 포함한다.
일부 실시예에서, 세션 상태는 세션 id, 복수의 세션 파라미터 및 현재 노드 식별자를 포함한다.
일부 실시예에서, 세션 컨텍스트를 생성하는 단계는 수신된 메시지로부터 적어도 하나의 이벤트 파라미터를 추출하는 단계와 추출된 이벤트 파라미터(들) 상의 세션 컨텍스트에 기초하는 단계를 포함한다.
다양한 실시예들은 첨부 도면에서 나타내어진다.
도 1은 분산 메시지 핸들링 시스템(100) 내의 저장된 세션 데이터의 계층을 도시한다.
도 2는 도 1의 분산 메시지 핸들링 시스템(100)의 실시예를 나타내는 분산 메시지 핸들링 시스템(200)의 기능 블록도를 도시한다.
도 3은 도 2의 기능 블록도를 참조하여 수신된 메시지를 핸들링하기 위한 방법의 실시예를 나타내는 흐름도를 도시한다.
도 4는 기본 H.248 콜 셋업과 연관된 메시지의 예시적 교환을 나타낸다.
도 5는 메시지를 도 2의 기능 블록에 나타내어진 세션 상태로 트랜슬레이팅하기 위한 실시예를 나타내는 흐름도를 도시한다.
도 6은 도 4의 메시지 410-1의 일 실시예를 나타낸다.
도 7은 도 4의 메시지 410-2의 일 실시예를 나타낸다.
도 8은 도 3의 스텝 320 및 도 5의 스텝 530에서 검색된 세션 상태의 일 실시예를 나타낸다.
도 9는 분산 메시지 핸들링 시스템(100)의 제 1 실시예를 개략적으로 나타내는 블록도를 도시한다.
도 10은 분산 메시지 핸들링 시스템(100)의 제 2 실시예를 개략적으로 나타내는 블록도를 도시한다.
도 11은 도 1 내지 10의 다양한 디바이스의 일 실시예의 블록을 개략적으로 나타낸다.
이해를 촉진하기 위해, 동일한 참조 부호는 실질적으로 동일하거나 유사한 구조 및/또는 실질적으로 동일하거나 유사한 기능을 갖는 요소를 지시하는 데 사용되었다.
분산 메시지 핸들링 시스템은 메시지 핸들링 시스템 내의 복수의 세션 컨텍스트를 나타내는 세션 상태를 사용함으로써 생성된다. 세션 상태는 세션을 완전하게 설명하는 세션 컨텍스트의 평이한 표현이다. 시스템 메시지 요청을 핸들링하기 위해 세션 상태를 이용하는 것은, 메시지 핸들링 시스템이 메시지 요청의 핸들링을 복수의 상태 머신으로 분배하는 것을 허용한다. 유리하게도, 분배된 메시징 시스템은, 메시지 핸들링 시스템이 수요에 기초하여 메시지 핸들링 리소스를 애플리케이션 인스턴스로 동적으로 할당하는 것을 허용한다. 이러한 동적 할당은, 공급자가 제품 하드웨어를 사용하는 수요를 충족시키기 위해 복수의 리소스에 걸쳐 메시지 핸들링 서비스를 효율적으로 할당하는 것을 허용한다.
유리하게도, 분산 메시지 핸들링 시스템은 애플리케이션 전체의 기능 및 이용가능성에 영향을 주지 않고 리소스의 일부가 실패하는 것을 허용하는 강인한 장애극복 메커니즘을 허용할 수 있다. 추가적으로, 분산 메시지 핸들링 시스템은 증가하거나 축소될 수 있으며, 즉 유저의 증가에 따라 더 많은 리소스에 대해 자신을 확장시키거나 리소스를 릴리싱할 수 있다. 마지막으로 분산 메시지 핸들링 시스템은 우선 할당 스킴(scheme)을 통해 애플리케이션의 타이밍 요건을 매칭할 수 있다.
도 1은 분산 메시지 핸들링 시스템(100) 내의 저장된 세션 데이터의 계층을 도시한다. 분산 메시지 핸들링 시스템(100)은 하나 이상의 애플리케이션(110-1 내지 110-n)(총괄적으로 애플리케이션(110))을 핸들링할 수 있다. 각각의 애플리케이션(110)은 하나 이상의 인스턴스(120-1 내지 120-n)(총괄적으로 인스턴스(120))를 가질 수 있다. 각각의 인스턴스(120)는 하나 이상의 세션(130-1(1) 내지 130-1(n))(총괄적으로 세션(130))으로부터의 메시지를 서비스할 수 있다. 메시지를 서비스하기 위해, 세션은 특정 유저 및 세션에 관련된 세션 컨텍스트 데이터(140)를 필요로 한다.
도 2는 도 1의 분산 메시지 핸들링 시스템(100)의 실시예를 나타내는 분산 메시지 핸들링 시스템(200)의 기능 블록도를 도시한다. 세션 라우터(210)는 앵커 포인트(anchor point)(미도시)로부터 수신된 메시지(250)를 세션 관리자(220)로 라우팅한다. 세션 관리자(220)는 세션 데이터 저장소(240)로부터 세션 상태를 검색하기 위해 메시지(250) 내의 식별자를 이용한다. 그 후에, 세션 관리자는 세션 상태에 기초하여 세션 컨텍스트를 생성하고 메시지 요청을 핸들링하기 위해 상태 머신(230)을 선택한다. 상태 머신(230)은 메시지 요청을 핸들링하고 메시지 응답(250-6)을 실행할 수 있다.
도 1 내지 3을 참조하면, 세션 라우터(210)는 수신된 메시지(250-1)로부터 세션 id를 추출하고 메시지(250-2)를 세션 id와 연관된 세션 관리자로 라우팅한다(예를 들어, 방법(300)의 스텝 310). 특히, 각각의 메시지(250-1)는 메시지를 세션 컨텍스트에 매핑하는 세션 식별자를 포함한다. 세션 컨텍스트는 액티브 세션(예를 들어, 도 1의 130-1)을 설명하는 영속적인 데이터이다. 여기에서 사용되는 "세션 컨텍스트"라는 용어는 유저 컨텍스트 또는 수신된 메시지(250)를 핸들링하는 분산 메시지 핸들링 시스템(200)에 의해 요구되는 임의의 다른 영속적인 데이터도 포함하는 것으로 넓게 이해되어야 한다.
수신된 메시지로부터 추출된 세션 id는 메시지가 속하는 세션을 식별하는 메시지의 임의의 부분일 수 있다는 것이 이해되어야 한다. 또한, 추출된 세션 id는 분산 메시지 핸들링 시스템(100)의 임의의 적절한 컴포넌트에 의해 임의의 다른 표시자로 매핑될 수 있다는 것이 이해되어야 한다. 이와 같이, 여기에서 사용되는 "세션 id"라는 용어는 추출된 세션 id와 추출된 세션 id를 나타내기 위해 분산 메시지 핸들링 시스템(100)에 의해 이용되는 임의의 매핑된 식별자 모두를 포함하는 것으로 넓게 이해되어야 한다.
세션 라우터(210)는 이러한 세션 컨텍스트와 연관된 메시지를 핸들링하는 것을 담당하는 적어도 하나의 세션 관리자(220)로 세션 컨텍스트를 추가적으로 매핑한다. 예를 들어, 세션 라우터(210)는 해싱(hashing) 알고리즘을 이용하거나, 라우팅 테이블을 이용하거나, 및/또는 넥스트 호프(next hop) 또는 최근접 이웃(nearest neighbor) 스킴을 이용하여 세션 id를 세션 관리자(220)에 매핑할 수 있다.
세션 관리자(220)는 세션 데이터 저장소(240)로부터 세션 상태를 검색하기 위해 세션 id를 이용한다. 특히, 세션 라우터(220)는 데이터 검색 조회(250-3)에 대한 키(key)로서 세션 id를 사용한다(예를 들어, 방법(300)의 스텝 320). 데이터 검색 조회(250-3)는 세션 데이터 저장소(240)에 대한 데이터 조회이다. 세션 데이터 저장소(240)는 데이터 검색 조회(250-3)에 대한 응답으로 세션 id와 연관된 세션 상태(250-4)를 반환한다.
여기에서 사용되는 "세션 상태"라는 용어는 세션 컨텍스트의 평이한 표현이다. 세션 상태는 세션 컨텍스트를 간결한 양식으로 완전하게 설명하며 전체 세션 컨텍스트를 검색하는 데 필요한 정보를 포함한다. 유리하게도, 분산 메시지 핸들링 시스템(200) 내의 각 세션에 대하여 세션 컨텍스트 정보 대신 세션 상태 정보(예를 들어, 도 1의 140)를 유지하는 것은 더 작은 스토리지를 필요로 하고 분배된 시스템 내의 타이밍 요건을 충족시키는 것을 편리하게 한다.
세션 관리자(220)는 세션 상태를 메시지와 연관된 세션을 설명하는 세션 컨텍스트로 트랜슬레이팅하고(예를 들어, 방법(300)의 스텝 330), 트랜슬레이팅된 세션 컨텍스트(250-5)를 상태 머신(230)으로 전달한다. 세션 관리자는 메시지를 동시발생에 대한 어카운트로 시퀀싱할 수 있다.
상태 머신(230)은 메시지를 실행하는 프로그램을 실행하는 로직을 포함한다(예를 들어, 방법(300)의 스텝 340). 실행된 프로그램의 출력은 메시지 또는 시스템 커맨드(250-6) 또는 임의의 다른 적절한 응답을 출력하고 있을 수 있다. 세션 컨텍스트가 상태 머신에 의해 변경되면, 갱신된 세션 컨텍스트가 갱신된 세션 상태(250-7)로 트랜슬레이팅되고(예를 들어, 방법(300)의 스텝 350), 세션 상태 데이터(240)로 전송된다(예를 들어, 방법(300)의 스텝 360).
세션 컨텍스트는 실행 환경에서의 상태 머신(230)에 의해 사용될 수 있는 양식으로의 세션 상태의 임의의 적절한 트랜슬레이션일 수 있다는 것이 이해되어야 한다. 또한, 일부 실시예에서, 상태 머신(230)은 세션 상태와 동일한 포맷으로 세션 컨텍스트를 수용할 수 있다. 이러한 실시예에서, 변경되지 않은 세션 상태의 상태 머신(230)으로의 전달은 세션 상태의 세션 컨텍스트로의 트랜슬레이션이다.
세션 상태 데이터(240)는 분산 메시지 핸들링 시스템(200)에 의해 요구되는 영속적인 저장소의 데이터이다. 특히, 세션 상태는 세션 상태 데이터(240)에 저장된다. 세션 상태는 데이터 검색을 편리하게 하기 위해 세션 id에 의해 인덱싱될 수 있다. 예를 들어 세션 상태 데이터인, 세션을 특징짓는 정보를 세션 상태 데이터(240)에 저장함으로써, 동일양의 리소스가 더 많은 세션을 핸들링할 수 있다는 것이 이해되어야 한다. 예를 들어, 세션을 재구축하고 이러한 세션에 대해 들어오는 메시지를 프로세싱하기 위해 임의의 상태 머신(230)이 임의의 세션 상태를 픽업할 수 있으므로, 시스템은 각각의 액티브 세션 및 복원을 위해 복사된 그 백업을 유지하기 위해 필요한 상당량의 메모리를 보유할 필요가 없다. 세션은 리소스 사용, 리소스 장애, 서비스 계약의 품질 및/또는 세션 휴지 시간과 같은 시스템 고려사항에 기초하여 리소스를 절약하는 스탠드바이로 될 수 있거나 다른 리소스로 이전될 수 있다. 유리하게도, 세션 분배된 핸들링 시스템(200)은 수억의 동시 발생하는 유저 세션을 지원할 수 있다.
일부 실시예에서, 다양한 기능 블록(210, 220, 230 및 240)이 하나의 장치에 함께 위치될 수 있다.
일부 실시예에서, 하나 이상의 기능 블록(210, 220, 230 및 240)이 복수의 기능 요소를 포함할 수 있다. 예를 들어, 세션 데이터 저장소(240)는 복수의 데이터 저장 디바이스로 구성될 수 있다. 이러한 실시예에서, 다양한 기능 블록(210, 220, 230 및 240)은 복수의 장치에 걸쳐 분배될 수 있다.
일부 실시예에서, 세션 상태 데이터는, 이름이 세션 상태 변수를 식별하고 값이 그 세션 상태 변수의 값을 나타내는 이름-값 쌍으로 포맷화된다.
일부 실시예에서, 세션 상태 데이터는 세션 파라미터(들)와 세션 흐름을 나타내는 상태 다이어그램 내의 세션의 현재 노드를 나타내는 적어도 하나의 식별자를 포함한다. 이러한 실시예에서, 상태 다이어그램은 상태 다이어그램과 세션 상태의 노드들 사이의 상태 천이의 관점에서 정의된다.
일부 실시예에서, 상태 머신(230)은 번호가 매겨진 정점을 갖는 그래프를 사용하여 상태를 식별한다. 이러한 실시예에서, 세션 상태는 현재 세션의 정점의 번호와 상태 머신(230)에 의해 요구되는 저장된 변수이다.
일부 실시예에서, 세션 데이터 저장소(240)는 상태 머신(230) 내의 다수의 상태 머신에 걸쳐 분배될 수 있다.
일부 실시예에서, 세션 데이터 저장소(240)에 저장된 세션 상태는 주요한 데이터 저장 디바이스 및 하나 이상의 스탠드바이 데이터 저장 디바이스에 저장될 수 있다. 특히, 갱신된 세션 상태(250-7)의 수신시에, 세션 데이터 저장소(240)는 하나 이상의 데이터 저장 디바이스를 갱신할 수 있다.
일부 실시예에서, 세션 데이터 저장소(240)는 세션 데이터 저장소의 무결성을 유지하는 체크 포인트 및/또는 통상적인 로그 파일을 사용할 수 있다.
일부 실시예에서, 적어도 하나의 애플리케이션(도 1의 110)은 LTE 원격통신 애플리케이션일 수 있다. 이러한 실시예에서, 메시지 중 하나는 MME 기능일 수 있다. MME는, 각각의 세션이 그 자신의 데이터와 공유된 데이터 구조에 대한 액세스를 갖는(예를 들어, 트랙킹 영역(Tracking Area)) 세션 지향 애플리케이션이다. MME 기능은 LTE 무선 원격통신 네트워크의 대부분의 '지능'을 구현한다. MME 기능은 시스템에 액세스하는 UE(user equipment)를 인증하고, 유저가 휴지 상태일 동안 UE 상태를 관리하고, 상이한 베이스 스테이션 컨트롤러(eNB) 사이의 핸드오버를 감독하고, 모바일 컨텍스트에서 Internet(PDN) 접속을 위해 필요한 베어러(bearer)를 확립하고, 과금 정보를 생성하고, 합법적인 인터셉션 정책뿐만 아니라 많은 추가적인 기능을 구현한다. 다른 실시예에서, 메시지 중 하나는 매우 많이 이용가능하고 실시간 보장을 갖는 PBX, AAA, HLR, SGSN 및 다른 시그널링 기능일 수 있다.
도 4 내지 7을 참조하여, 기본 H.248 콜 셋업을 구현하는, 도 2의 분산 메시지 핸들링 시스템(200)의 일 실시예를 설명한다.
도 4는 기본 H.248 콜 셋업과 연관된 유저 A 및 유저 B 사이의 메시지(410)의 예시적인 교환을 나타낸다. 본 실시예에서, MGC(Media Gateway Controller)는 도 2의 메시지 핸들링 시스템(200)의 기능을 포함할 수 있다. 예를 들어, 메시지(410-1)는 유저 A 및 호출된 당사자인 유저 B 사이의 접속을 개시하는 이벤트 데이터를 포함할 수 있다. 마찬가지로, 메시지(410-2)는 사용될 통신 파라미터를 특정하는, 유저 B에 대한 이벤트 데이터를 포함할 수 있다.
도 5는 도 2의 기능 블록도에서 나타내어진 세션 상태로 메시지를 트랜슬레이팅하기 위한 방법(500)의 흐름도를 도시한다. 방법(500)은 메시지를 수신하고(스텝 510), 세션 id를 추출하기 위해 메시지를 파싱하고(스텝 520), 세션 데이터 저장소로부터 세션 상태를 검색하고(스텝 530), 연관된 이벤트를 결정하기 위해 메시지를 파싱하고(스텝 540), 이벤트 파라미터(들)를 추출하기 위해 메시지를 파싱하고(스텝 550), 세션 상태, 연관된 이벤트 및 이벤트 데이터에 기초하여 갱신된 세션 상태를 생성하는(스텝 560) 것을 포함한다.
방법(500)에서, 스텝 510은 메시지를 수신하는 것을 포함한다. 일부 실시예에서, 메시지는 H.248 메시지일 수 있다. 예를 들어, 도 4의 메시지(410-1)의 일 실시예는 도 6의 라인 (1) - (20)에 의해 나타내어질 수 있다. 마찬가지로, 메시지(410-2)의 일 실시예는 도 7의 라인 (21) - (40)으로 나타내어질 수 있다.
방법(500)에서, 스텝 520은 세션 id에 대한 메시지를 파싱하는 것을 포함한다. 예를 들어, 도 6을 참조하면, 세션 id는 메시지(410-1)로부터 파싱될 수 있다. 특히, 라인 1의 IP 어드레스/포트 번호 튜플(tuple) 및/또는 라인 2의 트랜잭션 식별자는 세션 id를 결정하기 위해 메시지로부터 추출될 수 있다.
방법(500)에서, 스텝 530은 도 1 내지 3에서 상술한 바와 같이 세션 데이터 저장소로부터 세션 상태를 수신하는 것을 포함한다. 일부 실시예에서, 세션 상태는, 세션 상태를 정의하는 데이터의 예시적인 세그먼트를 나타내는 도 8에서와 같은 세션 컨텍스트를 정의하는 관련 데이터를 나타내는 이름-값 쌍의 집합에 의해 나타내어질 수 있다.
방법(500)에서, 스텝 540은 연관 이벤트를 결정하기 위해 메시지를 파싱하는 것을 포함한다. 예를 들어, 도 6의 라인 3 - 17을 참조하면, 제 1 이벤트는 새로운 컨텍스트를 생성하고 그 안에 물리적인 터미네이션 TermA를 부가할 수 있다. 제2 이벤트는 단기 터미네이션을 생성하고 이전 이벤트에 의해 생성된 동일 컨텍스트에 생성된 터미네이션을 부가할 수 있다.
방법(500)에서, 스텝 550은 이벤트 파라미터(들)를 결정하기 위해 메시지를 파싱하는 것을 포함한다. 예를 들어, 메시지(410-1 및 410-2)의 일 실시예를 각각 나타내는 도 6 및 7의 예를 참조하면, 접속 필드 IP 어드레스와 미디어 필드 포트 번호는 도 6의 메시지에서 특정되지 않는다. 도 7에서의 응답을 파싱함으로써 IP 어드레스 및 포트 번호가 결정될 수 있다. 특히 라인 32 및 33은 본 예에서 사용되는 할당된 IP 어드레스(즉, 209.110.59.33) 및 포트 번호(즉, 30000)를 식별한다.
방법(500)에서, 스텝 560은 세션 상태, 연관 이벤트 및 이벤트 데이터에 기초하여 갱신된 세션 상태를 생성하는 것을 포함한다. 특히, 이벤트 데이터로부터 추출된 파라미터 및/또는 연관 이벤트와 연관된 파라미터는 현재 세션 상태 및/또는 수신된 세션 상태의 세션 파라미터를 수정하는 데 사용될 수 있다. 세션 파라미터는 파라미터를 부가하고/하거나 수신된 세션 상태에 이미 존재하는 세션 파라미터를 새로운 값으로 갱신함으로써 수정될 수 있다. 임의의 연관 이벤트 및/또는 이벤트 데이터가 추출되었는지 및/또는 적절한지 여부에 기초하여, 갱신된 세션 상태가 검색된 세션 상태와 동일할 수 있거나, 갱신된 세션 상태가 연관 이벤트 및/또는 이벤트 데이터에 의해 수정된 검색된 세션 상태일 수 있다는 것이 이해되어야 한다.
일부 실시예에서, 스텝 520, 540 및/또는 550에서의 메시지의 파싱은 컨텍스트 민감 룰을 사용할 수 있다. 룰은 토큰의 위치의 컨텍스트에 민감할 수 있다. 예를 들어, 도 6의 라인 1에 나타낸 바와 같이, ip 어드레스/포트 튜플이 "MEGACO" 메시지 프로토콜 식별자에 후속하는 첫번째 라인에 위치될 수 있다.
일부 실시예에서, 방법(300 및/또는 500)은 흐름 정의를 사용하여 수신된 메시지를 실행하는 것도 포함할 수 있다. 흐름 정의 또는 유한 상태 오토매터(automata)는 연관 상태 다이어그램의 노드, 에지 및 로직을 설명한다. 검색된 세션 상태, 연관 이벤트 및 이벤트 데이터는 흐름 정의로의 입력으로 사용될 수 있다. 흐름 정의 출력은 트랜잭션을 생성할 수 있다. 예를 들어, 트랜잭션은 도 4에 나타낸 바와 같이 링잉(ringing), 링백(ringback) 또는 RTP 통신 스트림을 개시하는 메시지일 수 있다. 마찬가지로, 흐름 정의 출력은 세션 컨텍스트를 갱신할 수 있다. 예를 들어, ip 어드레스 및 포트는 "CALLED PARTY IPADDRESS", "209.110.59.33"과 같은 이름-값 쌍에서 호출 또는 피호출 당사자와 연관될 수 있다. 여기에서 사용되는 "상태 다이어그램"이라는 용어는 "흐름 다이어그램", 흐름 다이어그램 로직을 재현하는 프로그램된 서브루틴 또는 상태 시스템에서 수신된 메시지를 프로세싱하는 임의의 다른 프로그래밍 기술도 포함하도록 넓게 이해되어야 한다.
일부 실시예에서, 방법(300 및/또는 500)은 연관 이벤트, 연관 이벤트에 응답하여 취해지는 액션 및/또는 검색된 이벤트 데이터를 반영하도록 검색된 세션 상태를 갱신하는 것을 추가로 포함할 수 있다. 예를 들어, 이름-값 쌍은 검색된 연관 이벤트, 연관 이벤트에 응답하여 취해지는 액션 및/또는 검색된 이벤트 데이터를 반영하도록 생성될 수 있다. 그 후, 검색된 세션 상태는 생성된 이름-값 쌍을 반영하도록 갱신될 수 있으며 세션 데이터 저장소에 저장될 수 있다. 통상적인 데이터베이스 기술이 세션 데이터 저장소를 갱신하는 데 사용될 수 있다는 것이 이해되어야 한다. 또한, 전체의 갱신된 세션 상태가 세션 데이터 저장소에 업로드될 필요가 없다는 것이 이해되어야 한다. 예를 들어, 일부 실시예에서, 조회(들)가 새로운 이름-값 쌍을 생성하고/하거나 갱신된 세션 상태를 반영하기 위해 수정된 이름-값 쌍을 갱신하기 위해 형성될 수 있다.
일부 실시예에서 방법(300 및/또는 500)은 실행 엔티티 간에 세션 상태를 이전시키는 것을 추가로 포함할 수 있다. 유리하게도, 전형적으로 세션 상태를 이전시키는 것은 전체 VM을 이동시키는 것보다 적은 메모리를 필요로 하므로 신속하게 수행될 수 있다. 또한, 상태의 양식이 머신의 아키텍처와 독립적이므로, 세션 상태는, 서버로부터 스마트폰으로 또는 셋탑으로부터 서버로와 같이 별개의 하드웨어 사이에 이전될 수 있다.
일부 실시예에서, 방법(300 및/또는 500)은 검색된 세션 상태 및 흐름 정의에 기초하여 수신된 메시지의 시퀀스를 재생성하는 것을 추가로 포함할 수 있다. 특히, 상태 다이어그램의 현재 노드는 세션 상태 내의 저장된 데이터(예를 들어, 이름-값 쌍)로부터 결정될 수 있다. 그 후, 현재 노드는 흐름 정의 내의 개시 포인트로서 사용될 수 있어 현재 노드로부터 초기 노드로 흐름을 횡단한다. 시퀀스 내의 각각의 연속 노드는 타겟 노드로 향하는 가능한 경로를 결정하고 세션 상태 데이터에 기초하여 가능한 경로로부터의 횡단된 경로를 선택함으로써 결정될 수 있다. 일단 연속 노드가 결정되면, 연속 노드로부터 타겟 노드로의 메시지는 흐름 정의에 저장된 알려진 메시지 포맷 및 메시지 포맷에 포함된 이벤트 데이터에 대응하는 세션 데이터를 사용하여 재생성될 수 있다.
도 8을 다시 참조하면, 도 8은 도 3의 스텝 320 및 도 5의 스텝 530에서 검색된 세션 상태의 일 실시예를 나타낸다. 세션 상태는 세션 id, 세션의 현재 상태의 표시자 및 세션 파라미터를 포함한다.
라인 (1)에서, "│"은 새로운 세션 id 또는 세션 컨텍스트의 개시를 나타내는 파일 경계 기호이고; 표시자 "C4" 및 "Cxt:4" 모두는 세션 데이터가 세션 id 4에 대한 것(예를 들어, 컨텍스트 4)이라는 것을 나타내는 세션 식별자이고; 표시자 "NTFY(1)"은 세션의 현재 상태를 나타낸다(예를 들어, NOTIFY 1). 그 후에, NVL(name value list)이 명료성을 위해 전체 리스트로부터 편집된 라인 (2) - (26)에 열거된다. NVL은 이전 메시지로부터 추출되고/되거나 이전 상태 머신에 의해 인스턴스화된 세션 파라미터를 포함한다. 예를 들어, 라인 (8)은 이전 메시지로부터 추출된 다이얼링된 숫자의 저장된 스트링을 나타낸다.
일부 실시예에서, 세션 상태는 현재 상태에 대해 필요하지 않은 세션 파라미터의 이력을 포함할 것이다. 저장된 이력은 상술한 바와 같이 수신된 메시지의 시퀀스를 재생성하는 데 사용될 수 있다. 예를 들어, 라인 (14) - (21)은 하나의 클라이언트에 의해 제안된 SDP(session description protocol)를 나타내고 라인 (22) - (29)는 다른 클라이언트에 의해 동의된 SDP를 나타낸다. 동의된 SDP만이 통신에서 액티브이지만, 제안된 SDP가 원래 제안 메시지를 재생성하는 데 사용될 수 있다.
도 8은 저장된 세션 상태의 "장황한" 리스팅의 일부이고, 전체 세션 상태의 검색은 필요하지 않다는 것이 이해되어야 한다. 일부 실시예에서, 적절한 세션 상태 데이터만이 검색된다. 특히, 세션 파라미터의 서브셋(예를 들어, 이름-값 쌍)만이 검색된다. 검색된 서브셋은 세션의 현재 상태에 대해 상태 머신에 의해 요구되는 이러한 세션 파라미터만을 포함할 수 있다.
특정 시퀀스에서 주로 묘사되거나 설명되었지만, 방법(300 및 500)에서 나타내어진 스텝은 임의의 적절한 시퀀스에서 수행될 수 있다는 것이 이해되어야 한다. 또한, 하나의 박스에 의해 식별된 스텝 또한 시퀀스 내의 하나 이상의 위치에서 수행될 수 있다.
상술한 다양한 방법의 스텝이 프로그램된 컴퓨터에 의해 수행될 수 있다는 것이 이해되어야 한다. 여기에서, 또한 일부 실시예들은, 머신 또는 컴퓨터 판독가능하고 명령의 머신-실행가능 또는 컴퓨터-실행가능 프로그램을 인코딩하는 예를 들어 데이터 저장 매체인 프로그램 저장 디바이스를 포함하려는 것이며, 상기 명령은 상기 상술한 방법의 스텝의 일부 또는 전부를 수행한다. 프로그램 저장 디바이스는, 자기 디스크 및 자기 테이프, 하드 드라이브 또는 광 판독가능 데이터 저장 매체와 같은 디지털 메모리, 자기 저장 매체일 수 있다. 또한, 실시예들은 상술한 방법의 상기 스텝을 수행하도록 프로그램된 컴퓨터를 포함하려는 것이다.
도 9는 분산 메시지 핸들링 시스템(100)의 제 1 실시예를 개략적으로 나타내는 블록도를 도시한다. 분산 메시지 핸들링 시스템(100)은 수신된 메시지를 하나 이상의 상태 머신(930-1 내지 930-n)(총괄적으로 상태 머신(930))으로 전달하는 하나 이상의 앵커 포인트(910-1 내지 910-n)(총괄적으로 앵커 포인트(910))를 포함한다. 분산 메시지 핸들링 시스템(100)은 또한 하나 이상의 세션 데이터 저장소(940-1 내지 940-n)(총괄적으로 세션 데이터 저장소(940))를 포함한다.
앵커 포인트(910)는 들어오는 메시지를 상태 머신(930-1 내지 930-n)으로 라우팅한다. 특히, 앵커 포인트는 네트워크로부터 메시지를 수신하고 도 2의 세션 라우터(210)의 기능을 수행한다. 본 실시예에서, 들어오는 메시지는 언제나 동일한 상태 머신(930-1 내지 930-n)으로 발송되며, 즉 유저 세션이 붙어 있다. UE(user endpoint)로부터 메시지를 수신하는 앵커 포인트는 UE와 타겟 상태 머신(930-1 내지 930-n)을 연관시킨다.
상태 머신(930)은 도 2의 세션 관리자(220)뿐만 아니라 도 2의 상태 머신(230)의 기능도 수행한다. 특히, 상태 머신(예를 들어, 930-1)은 세션(예를 들어, 도 1의 120-1)에 할당된다. 할당된 상태 머신은 그 인스턴스에 의해 지원되는 현재까지의 세션 컨텍스트에 대해 알고 있는 유일한 머신이다. 상태 머신(930)은 앵커 포인트(910)를 횡단하지 않고 엔드 유저에 직접 응답할 수 있다는 것이 이해되어야 한다.
세션 데이터 저장소(940)는 도 2의 세션 데이터 저장소(240)의 기능을 수행한다. 특히, 세션 데이터 저장소(940-1 내지 940-n) 중 하나 이상은 별개의 데이터 저장 디바이스 상에 상주할 수 있다.
일부 실시예에서, 앵커 포인트(910)는 UE(user endpoint)와 타겟 상태 머신 간의 할당 테이블을 보유한다.
일부 실시예에서, 앵커 포인트(910)는 연관 상태 머신과 요청을 매칭하기 위하여 요청을 해싱한다.
일부 실시예에서, 앵커 포인트(910)는 액티브-액티브 및/또는 핫-스탠드바이(hot-standby)와 같은 통상적인 복사 기술을 사용하여 복사된다.
일부 실시예에서, 상태 머신(930) 내의 상태 머신(예를 들어, 930-1)이 복사된다. 추가적인 실시예에서, 복사된 상태 머신은, 통상적인 액티브-액티브 복사 기술을 사용하여 복사되며, 예를 들어 복사된 상태 머신은 적어도 하나의 파트너 머신 상에서 복사된다.
예를 들어, 각각의 세션(예를 들어, 도 1의 120-1)에 대하여 하나의 1차 상태 머신(예를 들어, 930-1)이 있을 수 있다. 그 후, 주요 상태 머신은 하나 이상의 2차 상태 머신(예를 들어, 930-2)과 연관될 수 있다. 1차 및 2차 상태 머신은 앵커 포인트(910), 예를 들어 연관 앵커 포인트(예를 들어, 910-1)를 갱신하는 한, 연관 세션 상태를 스와핑(swapping) 및 푸싱(pushing)할 수 있다. 예를 들어, 도 2 및 5를 참조하면, 상태 머신(930-1)은 갱신된 세션 컨텍스트를 생성하는 트랜슬레이팅된 세션 컨텍스트(250-5)를 실행할 수 있고, 갱신된 세션 컨텍스트를 갱신된 세션 상태(250-7)로 트랜슬레이팅할 수 있고, 갱신된 세션 상태(250-7)를 스탠드바이 상태 머신 상에 복사할 수 있다.
이하의 표 1에서, 인스턴스, 주요 세션 및 스탠드바이 세션이 도 1과 관련되어 나타내어진다. 인스턴스(120-2)에 대한 세션은 130-2(1) 내지 130-2(n)(도 1 에 미도시)이다.
Figure pct00001
일부 실시예에서, 세션 데이터 저장소(940)는 높은 신뢰도를 제공하기 위하여 통상적인 데이터 백업 기술을 사용하여 세션 상태를 저장한다. 유리하게도, 세션 데이터 저장소(940)는 세션에 대한 세션 컨텍스트를 재구축할 수 있는 세션 상태를 저장하고 있으므로, 앵커 포인트(910) 및/또는 상태 머신(930)은 신뢰도가 높을 필요가 없고 제품 컴포넌트일 수 있다.
일부 실시예에서, 분산 메시지 핸들링 시스템(100)은 세션 데이터 저장소(940)에 세션 상태 체크포인트를 저장한다. 이러한 세션 데이터 저장소는, 본 명세서에 참조로서 통합된 G. DeCandia, D. Hastorum, M. Jampani, G. Kakulapati, A. Lakshman, A. Pilchin, S. Sivasubramanian, P. Vosshall 및 W. Vogels의 "Dynamo: Amazon's Highly Available key-value Store" Proc. 21st ACM Symp. Operating Systems Principles(SOSP '07), pp 205-220, 2007년 10월에 설명된 바와 같은 통상적인 1-호프(hop) DHT로서 설계될 수 있다. 추가적인 실시예에서, 세션 데이터 저장소는 키-값 저장소일 수 있으며, 키는 세션 식별자이고 값은 세션 상태가다. 유리하게도, 네트워크가 분할되거나 전체 데이터센터가 오프라인이 되는 경우에, 이러한 실시예들은 이용가능성을 추가적으로 증가시킨다. 일부 실시예에서, 상태 머신을 실행시키는 리소스가 이러한 세션 데이터 저장소에 참여할 수 있거나, 다른 클라우드 리소스가 그에 기인될 수 있다.
도 10은 분산 메시지 핸들링 시스템(100)의 제 2 실시예를 개략적으로 나타내는 블록도를 도시한다. 분산 메시지 핸들링 시스템(100)은 수신된 메시지를 하나 이상의 작업자 인스턴스(1020-1 내지 1020-n)(총괄적으로 작업자 인스턴스(1020))로 전달하는 하나 이상의 앵커 포인트(1010-1 내지 1010-n)(총괄적으로 앵커 포인트(1010))를 포함한다. 작업자 인스턴스는 상태 머신(1030)을 개방하여 수신된 메시지를 실행한다.
앵커 포인트(1010)는 들어오는 메시지를 작업자 인스턴스(1020-1 내지 1020-n)로 랜덤하게 라우팅한다. 본 실시예에서, 세션 라우터 기능이 앵커 포인트(1010)에 포함되지 않아, 매핑 로직을 필요로 하지 않는 덜 복잡한 앵커 포인트(1010)를 생성한다. 특히, 앵커 포인트(1010)는 실행되는 작업자 인스턴스(1020)를 트랙킹하고 들어오는 메시지를 랜덤하게 발송한다. 유리하게도, 앵커 포인트가 이용불가하게 되면, 분산 메시지 핸들링 시스템(100)은 작업자 인스턴스로의 라우팅을 위해 메시지를 다른 알려진 앵커 포인트로 단지 전송한다. 또한, 앵커 포인트(1010)가 상태를 보유하고 있지 않으므로, 복사될 필요가 없다.
작업자 인스턴스(1020)는 도 2의 세션 라우터(210), 도 2의 세션 관리자(220), 도 2의 상태 머신(230) 및 도 2의 세션 데이터 저장소(240)의 기능을 수행한다. 특히, 작업 인스턴스, 예를 들어 1020-1은 상태 머신이고 세션 데이터 저장소의 단편을 포함한다.
일부 실시예에서, 앵커 포인트(1010)는 S1, S6, S10, S11과 같은 LTE 프로토콜을 라우팅한다.
일부 실시예에서, 작업자 인스턴스, 예를 들어 1020-1은 앵커 포인트(1010)로부터 메시지를 수신하고, 메시지에 대한 세션 상태 정보를 가지는지 여부를 결정한다. 작업자 인스턴스(1020-1)가 세션 상태 정보를 가진다면, 작업자 인스턴스(1020-1)는 상태 머신(1030)을 개시하고 여기에 설명한 메시지를 실행한다. 작업자 인스턴스가 메시지에 대한 세션 상태 정보를 포함하지 않는다면, 작업자 인스턴스는 메시지를 세션 상태를 갖는 다른 작업자 인스턴스로 전달한다. 작업자 인스턴스는 세션 라우터(210)에 대하여 상술한 작업자 인스턴스에 세션 id를 매핑할 수 있다. 예를 들어, 작업자 인스턴스는 세션 id를 매핑할 수 있거나 랜덤 전달(random forwarding) 또는 넥스트 호프 기술을 사용할 수 있다.
일부 실시예에서, 작업자 인스턴스(1020)는 복사된다. 본 실시예에서, 1차 작업자 인스턴스(1020-1 내지 1020-n) 내의 세션 데이터 저장소의 단편의 적어도 일부는 2차 작업자 인스턴스(1020-1 내지 1020-n) 상에 복사된다. 추가적인 실시예에서, 작업자 인스턴스(1020)는 네트워킹되고 이웃들은 2차 저장소이다. 본 실시예에서, 1차 작업자 인스턴스가 고장났을 때, 2차 작업자 인스턴스가 들어오는 메시지를 서비스할 수 있다.
일부 실시예에서, 작업자 인스턴스(1020)는 메시지가 수신될 때 상태 머신(1030)을 개시할 수 있고 메시지가 서비스된 후에 생성된 상태 머신을 삭제할 수 있다.
일부 실시예에서, 도 1의 애플리케이션(110) 중 적어도 하나는 LTE 원격통신 애플리케이션일 수 있다. 본 실시예에서, 메시지 중 하나는 MME 기능일 수 있다. 본 실시예에서, 작업자 인스턴스(1020)는 세션 컨텍스트를 구축하는 데 필요한 모든 정보를 결합하여 포함하는 MME 상태 머신 로직 및 복사된 데이터-저장소(예를 들어, 1-호프 DHT)를 포함한다. 본 실시예에서, 작업자 인스턴스는, 메시지가 전송되는 UE로부터 식별하는 세션 id를 포함하는 메시지를 수신하고, 그 복사된 데이터-저장소로부터 세션 상태를 검색하고, 상태 머신이 메시지를 프로세싱하는 것을 개시하고, 그 복사된 데이터-저장소에 갱신된 세션 상태를 저장하고, 필요하다면 메시지를 UE 또는 LTE 네트워크 내의 다른 컴포넌트로 메시지를 다시 전송한다.
도 11은 도 2의 세션 라우터(210), 세션 관리자(220), 상태 머신(230) 및 또는 세션 데이터 저장소(240); 도 9의 앵커 포인트(910), 상태 머신(930) 및/또는 세션 데이터 저장소(940); 및/또는 도 10의 앵커 포인트(1010) 및/또는 작업자 인스턴스(1020)와 같은 다양한 디바이스(1100)의 일 실시예를 개략적으로 나타낸다. 이러한 다양한 디바이스(1100)는 예를 들어 방법(300 및/또는 500)을 사용하여 여기에 설명된 기능을 수행할 수 있다. 다양한 디바이스(1100)는 프로세서(1110) 및 데이터 스토리지(1111)를 포함한다.
프로세서(1110)는 다양한 디바이스(1100)의 동작을 제어한다. 프로세서(1110)는 데이터 스토리지(1111)와 함께 동작한다.
데이터 스토리지(1111)는 세션 데이터(예를 들어, 도 2의 세션 데이터 저장소(240); 도 9의 세션 데이터 저장소(940) 및 도 10의 작업자 인스턴스(1020))와 상태 머신 로직(예를 들어, 도 2의 상태 머신(230); 도 9의 상태 머신(930) 및 도 10의 작업자 인스턴스(1020))을 저장할 수 있다. 데이터 스토리지(1111)는 또한 프로세서(1110)에 의해 실행가능한 프로그램(1120)을 저장한다.
프로세서-실행가능 프로그램(1120)은 세션 라우터 프로그램(1110), 세션 관리자 프로그램(1123), 상태 머신 프로그램(1125) 및/또는 세션 데이터 저장 프로그램(1127)을 포함할 수 있다. 프로세서(1110)는 프로세서-실행가능 프로그램(1120)과 함께 동작하여 도 1 내지 10에 설명된 기능을 구현하고/하거나 방법(300 및/또는 500)의 스텝들을 수행한다. 예시적인 프로세서-실행가능 프로그램(1121, 1123, 1125 및 1127)은 디바이스의 기능에 따라 선택적일 수 있다(예를 들어, 데이터 세션 저장 프로그램(1127)은 도 2의 세션 라우터(210)를 구현하는 데 필요하지 않다).
프로세서-실행가능 프로그램(1120)이 프로세서(1110) 상에서 구현될 때, 프로그램 코드 세그먼트는 프로세서와 결합하여 특정 로직 회로와 유사하게 동작하는 고유한 디바이스를 제공한다.
예를 들어, 프로그램 및 로직이 데이터 스토리지 내에 저장되고 메모리가 프로세서에 통신가능하게 접속되는 실시예에 대하여 여기에서 묘사 및 설명되었지만, 이러한 정보는 임의의 다른 적절한 방식으로 저장될 수 있으며(예를 들어, 임의의 적절한 수의 메모리, 스토리지 또는 데이터베이스를 이용함); 디바이스의 임의의 적절한 배치에 통신가능하게 연결된 메모리, 스토리지 또는 데이터베이스의 임의의 적절한 배치를 사용하고; 메모리(들), 스토리지(들) 및/또는 내부 또는 외부 데이터베이스(들)의 임의의 적절한 조합에 정보를 저장하고; 또는 액세스가능한 임의의 적절한 수의 외부 메모리, 스토리지 또는 데이터베이스를 사용하여 저장될 수 있다. 이와 같이, 여기에 칭해지는 데이터 스토리지라는 용어는 메모리(들), 스토리지(들) 및 데이터베이스(들)의 모든 적절한 조합을 포함하도록 의도된 것이다.
설명 및 도면은 단지 본 발명의 원리를 예시한다. 따라서, 본 기술분야의 당업자는, 여기에 명확하게 설명되거나 나타내어지지는 않았지만, 그 사상 및 범주 내에 포함되고 본 발명의 원리를 구현하는 다양한 구성을 고안할 수 있을 것이라는 것이 이해될 것이다. 또한, 여기에 기재된 모든 예들은 본 발명의 원리 및 기술을 발전시키는 발명자(들)에 의한 개념들을 독자가 이해하는 것을 돕기 위하여 단지 교육적인 목적으로 명확하게 되도록 주로 의도되었다. 그리고 그런 특정 언급된 예외 조건에 제한없이 이해되어져야 한다. 또한, 그 구체적인 예들뿐만 아니라 본 발명의 원리, 양태 및 실시예를 나타내는 여기에서의 모든 문장들은 그 동등물을 포함하도록 의도된 것이다.
"프로세서"로 표기된 임의의 기능 블록을 포함하여 도면들에 도시된 다양한 요소의 기능은 전용 하드웨어뿐만 아니라 적절한 소프트웨어와 연관되어 소프트웨어를 실행할 수 있는 하드웨어의 사용을 통해 제공될 수 있다. 프로세서에 의해 제공되는 경우, 기능은 단일 전용 프로세서, 단일 공유형 프로세서 또는 복수의 개별 프로세서에 의해 제공될 수 있으며 이들 중 일부가 공유될 수 있다. 또한, "프로세서" 또는 "컨트롤러"라는 용어의 명확한 사용이 소프트웨어를 실행할 수 있는 하드웨어를 배타적으로 칭하는 것으로 해석되어서는 안 되며, 제한 없이 DSP(digital signal processor) 하드웨어, 네트워크 프로세서, ASIC(application specific integrated circuit), FPGA(field programmable gate array), 소프트웨어를 저장하기 위한 ROM(read only memory), RAM(random access memory) 및 비휘발성 스토리지를 잠재적으로 포함할 수 있다. 다른 하드웨어, 종래 및/또는 통상적인 것들도 포함될 수 있다. 마찬가지로, 도면에 도시된 임의의 스위치는 단지 개념적인 것이다. 그 기능은 프로그램 로직의 동작을 통해, 전용 로직을 통해, 프로그램 제어 및 전용 로직의 상호작용을 통해, 또는 심지어 수동으로 수행될 수 있으며, 특정의 기술은 문맥으로부터 더욱 구체적으로 이해되는 구현자에 의해 선택가능한 것이다.
여기에서의 임의의 블록도는 본 발명의 원리를 구현하는 예시적인 회로의 개념적인 뷰(view)를 나타낸다는 것이 이해되어야 한다. 마찬가지로, 임의의 흐름도, 흐름 다이어그램, 상태 천이 다이어그램, 의사 코드 등은 컴퓨터 판독가능 매체에서 실질적으로 표현될 수 있고 이러한 컴퓨터 또는 프로세서가 명확하게 나타내어지든지 간에 컴퓨터 또는 프로세서에 의해 실행될 수 있는 다양한 프로세스를 나타낸다는 것이 이해되어야 한다.

Claims (10)

  1. 분산 메시지 핸들링 장치(a distributed message handling apparatus)로서,
    데이터 스토리지와,
    상기 데이터 스토리지와 통신가능하게 연결된 프로세서를 포함하되,
    상기 프로세서는,
    수신된 메시지의 세션 id에 기초하여 세션 상태를 검색(retrieve)하고,
    상기 세션 상태에 기초하여 세션 컨텍스트를 생성하고,
    상태 머신을 사용하여 상기 세션 컨텍스트를 실행하도록 구성되는
    분산 메시지 핸들링 장치.
  2. 제 1 항에 있어서,
    상기 세션 상태는 세션 id, 복수의 세션 파라미터 및 현재 노드 식별자를 포함하는
    분산 메시지 핸들링 장치.
  3. 제 2 항에 있어서,
    상기 프로세서는,
    수신된 메시지의 제 2 세션 id에 기초하여 제 2 세션 상태를 검색하고,
    상기 제 2 세션 상태 및 흐름 정의(flow definition)에 기초하여 상기 제 2 세션 id에 대한 메시지의 시퀀스를 재생성하도록 더 구성되는
    분산 메시지 핸들링 장치.
  4. 제 2 항에 있어서,
    상기 세션 컨텍스트를 생성하는 것은 상기 프로세서로 하여금
    상기 수신된 메시지로부터 적어도 하나의 이벤트 파라미터를 추출하게 하도록 더 구성하는 것을 포함하고,
    상기 세션 컨텍스트는 상기 적어도 하나의 이벤트 파라미터에 더 기초하는
    분산 메시지 핸들링 장치.
  5. 제 1 항에 있어서,
    상기 세션 컨텍스트를 실행하는 것은 상기 프로세서로 하여금
    실행된 세션 컨텍스트에 기초하여 갱신된 세션 상태를 생성하게 하도록 더 구성하는 것을 포함하는
    분산 메시지 핸들링 장치.
  6. 제 5 항에 있어서,
    상기 프로세서는,
    상기 갱신된 세션 상태를 제 2 분산 메시지 핸들링 장치로 송신하고,
    제 2 분산 메시지 핸들링 장치로부터 제 2 세션 상태를 수신하도록 더 구성되고,
    상기 데이터 스토리지는 상기 상태 머신과 연관된 갱신된 세션 상태와 상기 제 2 분산 메시지 핸들링 장치의 제 2 상태 머신과 연관된 제 2 세션 상태를 포함하는
    분산 메시지 핸들링 장치.
  7. 분산 메시지 핸들링 시스템에서 수신된 메시지를 핸들링하는 방법으로서,
    데이터 스토리지에 통신가능하게 연결된 프로세서에서, 수신된 메시지의 세션 id에 기초하여 세션 상태를 검색하는 단계와,
    상기 데이터 스토리지와 함께 동작하는 상기 프로세서에 의해, 상기 세션 상태에 기초하여 세션 컨텍스트를 생성하는 단계와,
    상기 데이터 스토리지와 함께 동작하는 상기 프로세서에 의해, 상태 머신을 사용하여 상기 세션 컨텍스트를 실행하는 단계를 포함하는
    메시지 핸들링 방법.
  8. 제 7 항에 있어서,
    상기 세션 컨텍스트를 생성하는 단계는,
    상기 데이터 스토리지와 함께 동작하는 상기 프로세서에 의해, 상기 상태 머신에 의해 생성된 갱신된 세션 컨텍스트를 사용하여 갱신된 세션 상태를 트랜슬레이팅(translating)하는 단계와,
    상기 데이터 스토리지와 함께 동작하는 상기 프로세서에 의해, 상기 갱신된 세션 상태를 세션 데이터 저장소로 송신하는 단계를 포함하는
    메시지 핸들링 방법.
  9. 제 7 항에 있어서,
    상기 세션 상태는 세션 id, 복수의 세션 파라미터 및 현재 노드 식별자를 포함하는
    메시지 핸들링 방법.
  10. 제 9 항에 있어서,
    상기 세션 컨텍스트를 생성하는 단계는,
    제 2 메시지로부터 적어도 하나의 이벤트 파라미터를 추출하는 단계를 포함하고,
    상기 세션 컨텍스트는 상기 적어도 하나의 이벤트 파라미터에 더 기초하는
    메시지 핸들링 방법.
KR1020147016733A 2011-12-19 2012-10-25 클라우드 내의 메시징을 위한 방법 및 장치 KR20140093720A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/329,357 US9432321B2 (en) 2011-12-19 2011-12-19 Method and apparatus for messaging in the cloud
US13/329,357 2011-12-19
PCT/US2012/061796 WO2013095770A1 (en) 2011-12-19 2012-10-25 Method and apparatus for messaging in the cloud

Publications (1)

Publication Number Publication Date
KR20140093720A true KR20140093720A (ko) 2014-07-28

Family

ID=47633536

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016733A KR20140093720A (ko) 2011-12-19 2012-10-25 클라우드 내의 메시징을 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US9432321B2 (ko)
EP (1) EP2795849B1 (ko)
JP (1) JP2015509232A (ko)
KR (1) KR20140093720A (ko)
CN (1) CN103999413A (ko)
WO (1) WO2013095770A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11528328B2 (en) * 2017-12-15 2022-12-13 Nokia Technologies Oy Stateless network function support in the core network

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9432321B2 (en) 2011-12-19 2016-08-30 Alcatel Lucent Method and apparatus for messaging in the cloud
US9948726B2 (en) * 2013-07-01 2018-04-17 Avaya Inc. Reconstruction of states on controller failover
US10182105B2 (en) * 2014-12-31 2019-01-15 Juniper Networks, Inc. Policy based framework for application management in a network device having multiple packet-processing nodes
US10193958B2 (en) 2014-12-31 2019-01-29 Juniper Networks, Inc. Policy based framework for application management in distributed systems
EP3099027B1 (en) * 2015-05-26 2017-09-13 Urban Software Institute GmbH Computer system and method for message routing with content and reference passing
US10110683B2 (en) * 2015-08-11 2018-10-23 Unisys Corporation Systems and methods for maintaining ownership of and avoiding orphaning of communication sessions
US10163460B1 (en) 2017-07-31 2018-12-25 Oracle International Corporation Reservation-based management of movable components
US10140068B1 (en) * 2017-07-31 2018-11-27 Oracle International Corporation Asynchronous management of movable components
CN111414242B (zh) * 2020-03-13 2023-07-11 天津美腾科技股份有限公司 状态机的运行方法、装置、服务器、***和存储介质
US11196817B1 (en) * 2020-06-03 2021-12-07 Dell Products L.P. Intelligently managing resource utilization in desktop virtualization environments

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09223095A (ja) 1996-02-16 1997-08-26 Fuji Xerox Co Ltd サーバ装置
US7437305B1 (en) * 1999-05-11 2008-10-14 Christopher Angel Kantarjiev Scheduling delivery of products via the internet
JP2001060155A (ja) 1999-08-20 2001-03-06 Fujitsu Ltd メッセージ処理装置
US6772333B1 (en) * 1999-09-01 2004-08-03 Dickens Coal Llc Atomic session-start operation combining clear-text and encrypted sessions to provide id visibility to middleware such as load-balancers
GB0103999D0 (en) 2001-02-19 2001-04-04 Sensible Group Ltd Enhanced text-based messaging system
US7111162B1 (en) * 2001-09-10 2006-09-19 Cisco Technology, Inc. Load balancing approach for scaling secure sockets layer performance
JP3880451B2 (ja) 2002-05-20 2007-02-14 富士通株式会社 Rsvpを用いた移動通信システム
US8005966B2 (en) 2002-06-11 2011-08-23 Pandya Ashish A Data processing system using internet protocols
US7636917B2 (en) * 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7613822B2 (en) * 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US7590736B2 (en) * 2003-06-30 2009-09-15 Microsoft Corporation Flexible network load balancing
US7882251B2 (en) * 2003-08-13 2011-02-01 Microsoft Corporation Routing hints
US7464141B2 (en) 2004-06-30 2008-12-09 Scencera Technologies, Llc Method and system for associating related messages of different types
US20060187838A1 (en) * 2005-02-24 2006-08-24 Utstarcom, Inc. Method and system for load balancing in a network platform
EP1705562A1 (en) 2005-03-18 2006-09-27 Orange SA Applications server and method of providing services
US7693050B2 (en) * 2005-04-14 2010-04-06 Microsoft Corporation Stateless, affinity-preserving load balancing
US20060277596A1 (en) * 2005-06-06 2006-12-07 Calvert Peter S Method and system for multi-instance session support in a load-balanced environment
US9497600B2 (en) * 2005-10-28 2016-11-15 Hewlett Packard Enterprise Development Lp Service chaining
US8707323B2 (en) * 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
US7580974B2 (en) * 2006-02-16 2009-08-25 Fortinet, Inc. Systems and methods for content type classification
US8365189B2 (en) 2007-02-28 2013-01-29 International Business Machines Corporation Method and apparatus for a service control layer
CN101163141B (zh) * 2007-11-12 2012-01-11 中兴通讯股份有限公司 一种基于无线会话协议实现数据快速处理的方法
US9456007B2 (en) * 2008-11-15 2016-09-27 Adobe Systems Incorporated Session aware notifications
FR2942931B1 (fr) * 2009-03-05 2014-05-16 Opencode Systmes Ood Centre reseau multiservices generique de creation et d'orchestration d'applications et de services reseaux
US8751281B2 (en) * 2009-03-20 2014-06-10 Sap Ag Method for acquiring by a session manager a list of active sessions
CN101882089B (zh) * 2009-05-07 2013-05-08 中兴通讯股份有限公司 一种采用多线程处理业务会话应用的方法及装置
US8549038B2 (en) * 2009-06-15 2013-10-01 Oracle International Corporation Pluggable session context
WO2010147605A1 (en) * 2009-06-19 2010-12-23 Zte (Usa) Inc. Internetworking techniques for transferring packets between source and target serving gateways
GB2486126B (en) * 2009-09-21 2014-01-08 Ericsson Telefon Ab L M Caching in mobile networks
CN102907055B (zh) * 2010-03-26 2015-06-17 思杰***有限公司 用于在多核装置上进行链路负载平衡的***和方法
CN102208988B (zh) * 2010-03-29 2013-09-11 华为技术有限公司 消息处理方法、***及设备
US9361604B2 (en) * 2010-09-23 2016-06-07 Avaya Inc. System and method for a context-based rich communication log
EP3193523A1 (en) * 2011-04-01 2017-07-19 Telefonaktiebolaget LM Ericsson (publ) Methods and apparatuses for avoiding damage in network attacks
US8458210B2 (en) * 2011-05-06 2013-06-04 Verizon Patent And Licensing Inc. Database load balancing through dynamic database routing
US8477621B2 (en) * 2011-05-24 2013-07-02 Tektronic, Inc. Multiple protocol correlation and topology detection in eHRPD networks
US8949938B2 (en) * 2011-10-27 2015-02-03 Cisco Technology, Inc. Mechanisms to use network session identifiers for software-as-a-service authentication
US9432321B2 (en) 2011-12-19 2016-08-30 Alcatel Lucent Method and apparatus for messaging in the cloud

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11528328B2 (en) * 2017-12-15 2022-12-13 Nokia Technologies Oy Stateless network function support in the core network

Also Published As

Publication number Publication date
US20130159374A1 (en) 2013-06-20
EP2795849B1 (en) 2019-11-27
JP2015509232A (ja) 2015-03-26
EP2795849A1 (en) 2014-10-29
CN103999413A (zh) 2014-08-20
WO2013095770A1 (en) 2013-06-27
US9432321B2 (en) 2016-08-30

Similar Documents

Publication Publication Date Title
EP2795849B1 (en) Method and apparatus for messaging in the cloud
US10630779B2 (en) System and method for using VoIP session continuity information using logical scalable units
US10523545B2 (en) System and method for managing VoIP session continuity information using logical scalable units
US11477670B2 (en) Network resource function supporting multi-region querying
US20210176310A1 (en) Data synchronization method and system
CN114145054A (zh) 用于支持流量导向通过服务功能链的***和方法
US10313452B2 (en) Migrating a chat message service provided by a chat server to a new chat server
US11361027B2 (en) Historical state management in databases
RU2464722C2 (ru) Способ, устройство и система для распределения сообщений
EP3148125A1 (en) Setting method, server device and service chain system
US20160227029A1 (en) Automatic Failover for Phone Recordings
US10659427B1 (en) Call processing continuity within a cloud network
US20210368006A1 (en) Request response method, device, and system applied to bit torrent system
CN113556359A (zh) 一种通讯协议转换方法、设备、***及网关设备
US20160226963A1 (en) Load balancing using predictable state partitioning
EP3570169B1 (en) Method and system for processing device failure
EP3065379A1 (en) System and method for volte session continuation using logical scalable units
JP2021519041A (ja) Icnメッセージの転送方法
CN113259476A (zh) 消息推送方法及***
WO2018032499A1 (zh) 一种负载均衡的方法及相关装置
JP6533502B2 (ja) 通信サービス提供システムおよび通信サービス提供方法
US10148766B2 (en) Methods, systems, and computer readable media for subscriber binding repository reconfiguration
CN114124890A (zh) 一种确定方法、虚拟路由器、控制设备及域名解析***
Chandrasekaran et al. CASE: A context-aware storage placement and retrieval ecosystem
US10320715B1 (en) Automated scaling of computing message architecture

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application