전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명에 의한 IMS 시스템의 과금 기능 구성도이다.
모든 IMS 기능 개체(CSCF, AS, MRFC, BGCF, MGCF 등)들은 과금 트리거 기능(CTF: Charging Trigger Function)을 통해 IMS 과금 기능을 수행한다. CTF는 어카운팅(Accounting) 정보의 생성을 트리거(trigger)하도록 사전에 정의된 SIP(Session Initiation Protocol) 또는 ISUP(Integrated Services Digital Network User Part) 메시지의 발생과 관련된 시그널링 메시지를 감시한다.
CTF는 과금 관련 자원 또는 서비스 요소 등이 통합된 개체이다. CTF는 과금이 요구되는 사건이 발생할 때 과금 정보를 생성한다. IMS 노드들은 실제 미디어 흐름에 관여하지 않기 때문에, CTF는 미디어 사용량에 대한 정보를 생성하지 않고, 과금 대상인 사건의 특성을 기록하는 일련의 과금 정보가 포함된 데이터 레코드를 생성한다. 이러한 일련의 과금 정보는 DIAMETER BASE 프로토콜의 어카운팅 응용, 즉 RF 인터페이스를 통해 과금 데이터 기능(CDF: Charging Data Function)으로 전 달된다.
과금 정보는 AVP(Attribute-Value Pair) 형태로 DIAMETER 메시지를 통해 전달된다. IMS의 오프라인 과금(110)을 위한 DIAMETER 메시지는 ACR(Accounting Request)과 ACA(Accounting Answer)이다. IMS 세션과 관련하여 Start, Interim, Stop 등의 ACR이 있다. 성공적인 세션에 대한 응답 메시지로 ACA가 사용되고, 실패한 SIP 세션에 대한 응답 및 세션과 무관한 과금 관련 메시지는 이벤트 타입의 ACR 메시지가 사용된다. ACR을 전송하도록 하는 시그널링 메시지(IMS에서는 SIP)에 대한 정의는 사업자의 네트워크 구성 및 비지니스 모델에 따라 달라질 수 있다. 일반적으로는 SIP INVITE에 대한 SIP 200 OK 메시지의 경우 ACR[START]를, SIP INVITE, UPDATE, RE-INVITE 등에 대한 SIP 200 OK 메시지의 경우 ACR[INTERIM]을, SIP BYE에 대한 SIP 200 OK 메시지의 경우 ACR[STOP]을 전송한다.
표 1 내지 표 3은 본 발명이 적용되는 IMS 기반의 과금 구조에서 CTF와 CDF 간에 정의된, 과금 메시지 내의 정보 전달을 위한 주요 인자들이다.
AVP
명
|
설명
|
Session-Id |
어카운팅 세션을 구분을 위한 식별자 |
Origin-Host |
ACR 메시지를 생성한 Service-Node의 호스트 명 |
Origin-Realm |
Service-Node의 도메인(Realm) |
Destination-Realm |
ACR메시지가 라우팅되는 도메인(Realm) |
Accounting-Record-Type |
메시지의 과금 종류를 의미(Start, Interim, Stop, Event) |
Accounting-Record-Number |
동일 세션 내에서 발생한 과금 데이터 순번 표시 |
Acct-Application-Id |
Diameter 응용별 과금 구분자 |
User-Name |
ISIM의 private user identity, IMS서비스 접속 ID, (AS의 경우: AS서버명 또는 제공서비스명) |
Acct-Interim-Interval |
Interim-Interval 값 |
Origin-State-Id |
하나씩 증가하는 값으로 언제든지 Diameter entity의 과거 상태, 예를 들어reboot 될 때처럼 loss로 재 시작될 때 증가 |
Event-Timestamp |
보고된 이벤트가 발생한 시각 |
Service
-
Information
|
3GPP 서비스 Information Elements |
AVP
Name
|
Sub
AVP
Name
|
Description
|
Service
-
Information
|
|
|
|
Subscription-ID |
End User 가입자 ID |
|
IMS-Information |
추가적인 IMS Service Specific Information Element를 전송하는 AVP |
AVP
Name
|
Sub
AVP
Name
|
Description
|
Subscription-ID |
|
End User 가입자 ID |
Event-Type |
|
과금 메시지를 생성을 유발한 SIP 메시지 정보 |
SIP-Method |
SIP Method (e.g. INVITE, SUBSCRIBE, 등) |
Event |
SIP Event 헤더필드의 내용 |
Expires |
SIP Expires 헤더필드의 내용 |
Role-Of-Node |
|
발, 착신, Proxy, B2BUA 등 |
Node-Functionality |
|
Node의 기능적인 구분자(AS, CSCF등 구분) |
User-Session-Id |
|
세션 구분자, SIP Session인 경우에는 SIP Call ID |
*Calling-Party-Address |
|
발신 단말의 Public User (or Service) ID (SIP URI or Tel URI) |
Called-Party-Address |
|
착신 단말의 Public User (or Service) ID (SIP URI or Tel URI) |
*Called-Asserted-Identity |
|
최종적인 asserted called party의 address (public user-ID: SIP-URI or TEL-URI) |
Alternate-Charged-Party-Address(64) |
|
3자 과금 대상 ID (from AS) CSCF를 통한 SIP Session 설정 시, Address가 CSCF-AS간 가상의 ID인 경우, AS의 실제 이용자에 대한 Identity |
Time-Stamps |
|
최초의 SIP Request와 Request에 대한 Response 시간 정보 |
SIP-Request-TimeStamp |
최초의 SIP Request 시간 서비스가 요청된 시각 |
SIP-Response-TimeStamp |
최초의 SIP Request에 대한 Response시간 서비스 요청에 대한 응답 제공 시각 |
*Application-Server-Information |
|
ISC Interface를 통해 경유한 AS의 정보 |
Application-Server |
세션이 유지되는 동안 지정된 AS의 SIP URL (or 서비스명) |
Application-Provided-Called-Party-Address |
AS에 의하여 결정된 Called Party Number (SIP URI, E164) |
*Inter-Operator-Identifier |
|
발, 착신 네트워크 식별 정보 |
Origination-IOI |
발신 측 네트워크 에 대한 IOI (SIP가 처음 생성된 네트워크 도메인) |
Terminating-IOI |
착신 측 네트워크 대한 IOI (SIP가 메시지가 최종적으로 도착한 네트워크 도메인) |
IMS-Charging-Identifier |
|
IMS Charging ID (ICID) |
*SDP-Session-Description |
|
SDP 내용 중 세션을 설명하는 라인 (e.g. o=- 1073055600 1073055600 IN IP6 1080::8:800:200C:417A) v, o, k, c, b, t 등등의 line 요소 중 o-line (Origin) 은 필수 |
*SDP-Media-Component |
|
SDP 세션 중 미디어에 사용된 정보 |
SDP-Media-Name |
SDP 내용 중 "m=" 라인 m=<media> <port> <proto> <fmt> ... <media>: 미디어타입 audio, video, text, application, message <port> : port or port/<number of ports> <proto> 프로토콜 udp, RTP/AVP, RTP/SAVP (e.g. m=audio 49170/2 RTP/AVP 31 ) |
Media-Initiator-Flag |
SIP 메시지를 통해 media stream을 생성한 곳(0:착신측, 1:발신측, 2:모름) |
Authorized-QoS |
이 Media-Component에 포함되는, P-CSCF에 의해 권한검증된 IP Flow(s)의 모든 정보 (Maximum Bandwidth, QoS Class, ...) * P-CSCF 만이 생성 |
3GPP-Charging-Id |
접속제어노드에서 생성하는 접속세션 ID |
|
Access-Network-Charging-Identifier-Value (20) |
|
Served-Party-IP-Address |
|
노드가 담당하는 단말의 IP Address |
*Service-Specific-Info |
|
AS가 특정 서비스 내용에 대해 알려주기 위해 이용 |
Service-Specific-Data |
해당 type 에 대한 서비스 내용 |
Service-Specific-Type |
Service-Specific-Data의 type |
Cause-Code |
|
종료 사유 코드 (0:정상적인 세션종료, 1:Unknown Error, ~) |
Access-Network-Information |
|
P-Access-Network-Information |
QoS-timeout |
|
P-CSCF에만 사용하는 KT vender-specific-AVP (vender-ID=14008) QM이 선 설정한 QoS플로우의 setup 실패를 감지한 후, P-CSCF로 전송되는 RAR 메시지에서 P-CSCF가 추출 |
CDF는 수신된 과금 정보를 이용하여, 표준화된 내용과 형식을 갖는 과금 데이터(Charging Data Record)를 생성하는 논리적 기능 개체이다. 본 발명에 의한 과금 장치는 과금 컬렉션 기능(CCF: Charging Collection Function)(100)이 구현된 것으로서, CCF(100)는 CDF와 과금 게이트웨이 기능(CGF: Charging Gateway Function)을 통합한 기능이다.
도 2는 본 발명에 의한 IMS 시스템의 단순화된 네트워크 구성도이다.
도시된 바와 같이, IMS 시스템의 서비스 이용과 관련된 가장 기본적인 과금 노드인 호 세션 제어 기능(CSCF: Call Session Control Function)(220, 230, 250, 260)과 응용 서버(AS: Application Server)(240)를 통해 호 설정이 이루어진다. 순수하게 IMS 도메인 내에서 제공되는 대부분의 서비스는 P-CSCF(Proxy-CSCF)(220, 260)와 S-CSCF(Serving-CSCF)(230, 250)만을 통해 세션 설정이 이루어진다. 한편, 부가 서비스 또는 기타 부가 기능이 추가적으로 적용되어야 하는 서비스는 AS(240)를 통해 세션 설정이 이루어진다.
단말A(210)로부터 전달되는 SIP 메시지(SIP INVITE, RE-INVITE, BYE, 200 OK 등)를 수신할 때, 각각의 과금 노드는 관련된 과금 이벤트가 트리거 되어야 하는 것으로 판단되면 해당 이벤트에 따른 과금 정보를 생성한다. 이러한 SIP 메시지는 호 설정과 관련된 연결 설정 경로 상의 모든 노드를 거치게 되므로, 경로 상의 모든 노드가 해당 메시지에 대한 과금 정보를 생성한다. 따라서, P-CSCF(220, 260), S-CSCF(230, 250), AS(240), I-CSCF(Interrogating-CSCF) 등에서 동일한 SIP 메시지에 대한 동일한 속성의 과금 정보를 생성한다. 이렇게 생성된 과금 정보는 각 노드의 역할(Role)과 기능(Functionality)에 대한 정보 등의 추가적인 정보와 함께 CCF(200)로 전달된다.
이 구조에서 CCF(200)는 특정 IMS 서비스에 있어서, 발신측 P-CSCF(220), 발신측 S-CSCF(230)를 제외한 다른 어떤 노드에서 과금 정보가 생성되는지 또는 생성되어야 하는지를 예측하거나 판단할 수 없다. 따라서, CCF(200)가 수신하는 과금 정보는 서비스의 종류 또는 전달 경로에 따라 달라지기 때문에, 과금 정보의 중복 방지 또는 누락 방지를 위한 별도의 처리가 필요하다.
도 3은 본 발명에 의한 IMS 시스템에서의 과금 창치(300)의 구성도이다. 도 3에 도시된 바와 같이, 과금 장치(300)는 메시지 수신부(310), 과금 처리용 데이터 생성부(330), 과금 데이터 산출부(340), IP 과금 데이터 생성부(350)를 구비한다. 본 발명에 의한 과금 장치(300)는 3GPP 표준에 정의된 CCF를 포함한다.
메시지 수신부(310)는 과금 노드로부터 과금 요청 메시지를 수신한다. 과금 요청 메시지는 미디어 사용량에 대한 정보를 포함하지 않고, 과금 대상인 사건의 특성에 대한 정보가 포함된다. 메시지 수신부(310)는 과금 처리용 데이터 생성부(330)로 과금 요청 메시지를 송신한다. 여기서, 과금 노드는 AS, CSCF 등의 CTF일 수 있고, 과금 요청 메시지는 DIAMETER BASE 프로토콜에 의한 ACR 메시지일 수 있다.
과금 처리용 데이터 생성부(330)는 수신된 과금 요청 메시지로부터 과금 처리용 데이터를 생성한다. 과금 처리용 데이터 생성부(330)는 중복 과금을 방지하기 위한 필터링부(320)를 포함할 수 있다. 다수의 과금 노드로부터 동일한 속성의 과금 정보에 대한 다수의 과금 요청 메시지가 수신될 수 있기 때문에, 필터링부(320)가 중복되는 메시지를 걸러낸다. 필터링부(320)는 과금 노드의 기능과 역할에 기초하여 과금 요청 메시지를 필터링한다. 과금 노드의 기능과 역할에 대한 정보는 그 과금 노드가 보낸 과금 요청 메시지에 포함될 수 있다.
과금 처리용 데이터 생성부(330)는 수신된 과금 요청 메시지의 SDP(Session Description Protocol) 미디어 정보를 이용하여 과금 처리용 데이터를 생성한다. 과금 처리용 데이터 생성부(330)는 미디어 타입 검출부(332) 또는 미디어 포트 검출부(334)를 포함할 수 있다. SDP 미디어 정보는 SDP 세션 중 미디어에 사용된 정보로서, 미디어 타입, 포트, 프로토콜 등에 대한 정보를 포함한다. 미디어 타입 검출부(332)는 SDP 미디어 정보로부터 미디어 타입에 대한 정보를 검출하고, 미디어 포트 검출부(334)는 SDP 미디어 정보로부터 미디어 포트에 대한 정보를 검출한다. 과금 처리용 데이터 생성부(330)는 미디어 타입 및 미디어 포트에 대한 정보를 이용하여 미디어별 세션 정보 또는 미디어별 어카운팅 정보를 생성한다. 과금 처리용 데이터는 미디어별 세션 정보 또는 미디어별 어카운팅 정보 중 하나 이상을 포함한다. 과금 처리용 데이터 생성부(330)는 이렇게 생성된 과금 처리용 데이터를 과금 데이터 산출부(340)로 송신한다.
과금 데이터 산출부(340)는 수신된 과금 처리용 데이터를 이용하여 과금 데이터를 산출한다. 과금 데이터는 과금에 직접적으로 활용될 수 있는 데이터로서, 실제 사용자가 이용한 미디어에 대한 사용량 정보이다. 과금 데이터 산출부(340)는 과금 데이터를 산출하기 위해, 세션이 종료된 미디어를 검색하는 미디어 검색부(342)를 포함할 수 있다. 과금 데이터 산출부(340)는 산출된 과금 데이터를 IP 과금 데이터 생성부(350)로 송신할 수 있다.
IP 과금 데이터 생성부(350)는 수신된 과금 데이터를 이용하여 IP 과금 데이터를 생성한다. IP 과금 데이터는 빌링 시스템에서 사용자에게 요금을 청구하기 위한 기초로 활용된다.
도 4는 본 발명에 의한 IMS 시스템에서의 과금 방법의 흐름도이다. 도 3을 함께 참조하여 본 발명에 의한 과금 방법을 설명한다.
우선, 과금 장치(300)의 메시지 수신부(310)가 과금 노드로부터 과금 요청 메시지를 수신(410)한다. 과금 요청 메시지에 포함된 과금 정보는 미디어의 사용량에 대한 정보가 아니기 때문에 직접 과금에 사용하기 어렵다. 필터링부(320)는 수신된 과금 요청 메시지를 필터링(420)한다. 동일한 과금 정보에 대해 중복되는 과금 요청 메시지와 오류가 있는 과금 요청 메시지는 필터링 단계(420)에서 제외되기 때문에, 중복 과금 또는 누락 과금이 발생하지 않는다.
과금 장치(300)는 제외되지 않은 과금 요청 메시지의 SDP 미디어 정보를 이용하여 과금 처리용 데이터를 생성(430)한다. 과금 장치(300)는 생성된 과금 처리용 데이터를 이용하여 미디어에 대한 사용량 정보인 과금 데이터를 산출(440)한다. 과금 장치(300)는 산출된 과금 데이터를 이용하여 IP 과금 데이터를 생성(450)할 수 있다. IP 과금 데이터는 빌링 시스템에서 사용자에게 요금을 청구하기 위한 기초로 활용된다.
도 5는 도 4에 도시된 과금 처리용 데이터 생성 단계(430)의 세부 흐름도이다.
과금 처리용 데이터 생성부(330)는 수신된 과금 요청 메시지의 SDP 미디어 정보로부터 미디어 타입 정보 및 미디어 포트 정보를 검출(510, 520)하고, 이를 이용하여 과금 처리용 데이터를 생성(530)한다.
수신된 SDP 미디어 정보는 미디어의 타입 및 포트 정보를 포함한다. 과금 처리용 데이터 생성부(330)는 미디어 타입 정보로부터 어떤 미디어가 사용되는지를 알 수 있고, 미디어 포트 정보로부터 세션의 시작과 종료를 알 수 있다. 따라서, 이를 통해 과금 처리용 데이터 생성부(330)는 미디어별 세션 정보를 구성할 수 있다. 한편, 수신된 과금 요청 메시지는 과금 요청 메시지의 어카운팅 정보를 포함하기 때문에, 과금 처리용 데이터 생성부(330)는 과금 요청 메시지의 어카운팅 정보, 미디어 타입 정보, 미디어 포트 정보로부터 미디어별 어카운팅 정보를 구성할 수 있다. 이와 같이 과금 처리용 데이터 생성부(330)는 과금 처리용 데이터를 생성(530)한다. 과금 처리용 데이터는 미디어별 세션 정보 또는 미디어별 어카운팅 정보 중 하나 이상을 포함하도록 구성된다.
도 6은 도 4에 도시된 과금 데이터를 산출하는 단계(440)의 세부 흐름도이다.
우선, 과금 데이터 산출부(340)는 과금 처리용 데이터 생성부(330)에 의해 생성된 과금 처리용 데이터를 이용하여 세션이 종료된 미디어를 검색(610)한다. 세션이 종료된 미디어가 검색(610)되면, 과금 데이터 산출부(340)는 과금 처리용 데이터로부터 해당하는 미디어 세션에 대한 정보를 모두 모아서 과금 데이터를 산출(620)한다. 과금 데이터 산출부(340)는 과금 처리용 데이터의 미디어별 세션 정보 또는 미디어별 어카운팅 정보를 참조할 수 있다. 과금 데이터 산출부(340)는 미디어별 세션 정보로부터 각 미디어의 사용 시작, 종료 시점을 검출할 수 있고, 미디어별 어카운팅 정보로부터 각 미디어 세션의 시작, 변경, 종료 시점을 검출할 수 있다. 과금 데이터 산출부(340)는 위와 같은 미디어 사용 및 세션 정보를 이용하여 과금 데이터를 산출(440)한다.
도 7은 본 발명의 일 실시예에 의한 과금 요청 메시지를 필터링하는 단계(420)를 설명하는 절차도이다. 도 2 및 도 3을 함께 참조하여 본 발명의 일 실시예에 의한 과금 요청 메시지 필터링 단계(420)를 설명한다.
전술한 중복 과금의 문제를 해결하기 위해, 본 발명의 일 실시예에 의한 과금 요청 메시지 필터링 단계(420)는 서비스별로 필터링 규칙을 적용하여 어떤 과금 노드로부터 발생한 과금 정보를 이용하여 과금 처리용 데이터를 생성할 것인지를 결정한다. CSCF(220, 230, 250, 260)는 트리거된 호에 대하여 과금 정보를 생성하고, AS(240)는 이 호를 실제로 처리하고 이에 대한 과금 정보를 생성한다. 필터링 단계(420)는 CSCF(220, 230, 250, 260)와 AS(240) 중 어떤 과금 노드의 과금 정보를 이용할 것인지를 결정한다.
이 실시예에서 과금 요청 메시지인 ACR 메시지에 대한 처리 절차는 다음과 같다.
우선, CCF(300)는 수신된 ACR 메시지를 파싱(710)한다. 파싱에 실패한 경우 CCF(300)는 오류 원인에 따라 ACR 메시지를 별도 처리 없이 폐기(730)하거나, ACA 메시지의 ResultCode AVP에 오류 원인 값을 설정(778, 779)하여 ACA 메시지를 PEER로 전송(780)한다. 그리고, CCF(300)는 필터링 조건을 검사(740)하여 필터링 조건에 해당하는 ACR 메시지를 메시지 처리에서 배제한다. CCF(300)는 필터링 조건에 해당하지 않아서 과금 처리 대상인 ACR 메시지로부터 SDP 미디어 정보를 추출하여 데이터베이스에 저장(760)한다. 이러한 과금 처리 대상인 ACR 메시지는 과금 처리용 데이터를 생성하는 데에 이용된다.
필터링 조건은 다음과 같다. 첫째, 발신 S-CSCF(230)과 AS(240)으로부터 송신된 데이터 외에 모든 데이터는 처리 대상에서 제외하기 위한 조건으로서, Role-Of-Node가 '0(=발신)'이고 Node-Functionality가 '0(=S-CSCF)' 또는 '6(=AS)'이 아닌 경우이다. 둘째, AS 과금 정보를 과금에 사용하기 위하여 S-CSCF의 과금 정보를 사용하지 하지 않도록 하는 조건으로서, Node-Functionality가 ‘0(=S-CSCF)’이고 Application-Server 정보가 있으며 해당 Application-Server 값이 필터링 조건으로 등록된 경우이다. 셋째, 과금 요청 메시지 중 어카운팅 정보가 단순한 리프레시(Refresh) 용의 INTERIM과 STOP인 경우를 제외하기 위한 조건으로서, Node-Functionality가 ‘0(=S-CSCF)’이고, SDP 미디어 정보(SDP-Media-Component)가 없는 경우이다. 넷째, User-Name을 포함하지 않는 경우이다.
IMS는 SIP의 SDP를 통해 서비스 이용과 관련된 미디어 정보를 교환한다. SDP의 미디어 정보는 SIP 메시지와 관련된 과금 이벤트가 발생할 때, CTF에 의해 SDP-Media Component 인자에 실려 CCF로 전달된다. 이때 전달되는 미디어 정보는 사용량 정보가 아닌 미디어 관련 포트 정보이기 때문에, CCF는 미디어 포트 정보의 변화에 대한 기록을 통해 과금을 위한 미디어 사용량을 추출해야 한다.
본 발명에 의한 일 실시예에서, CCF는 각 미디어의 사용량을 추출하기 위해 수신된 미디어 정보를 미디어 별로 분리하여 과금 처리용 데이터를 생성한다. 과금 처리용 데이터는 미디어별 세션 정보 또는 미디어별 어카운팅 정보를 포함할 수 있다.
이를 위한 데이터 구조로서, 3개의 데이터베이스 테이블(T_Service, T_Service_Sub, T_Service_Data)이 구성될 수 있다. T_Service 테이블은 수신된 ACR 메시지를 저장하기 위한 테이블로서, Accounting Start, Interim, Stop 등 ACR 메시지의 어카운팅 정보를 저장한다. T_Service_Sub 테이블은 각 미디어별 세션 정보를 저장하기 위한 테이블로서, 각 미디어 타입에 대한 세션 상태를 저장한다. T_Service_Data 테이블은 각 미디어별 어카운팅 정보를 저장하기 위한 테이블로서, ACR 메시지에 대한 어카운팅 정보보다 세분화된 각 미디어 타입에 대한 어카운팅 정보를 저장한다.
표 4는 본 발명의 일 실시예에 의한 T_Service 테이블의 구조이다.
순번
|
필드명
|
타입
|
크기
|
설명
|
1 |
icid |
VARCHAR |
64 |
IMS-Charging-Identifier AVP |
2 |
session_id |
VARCHAR |
64 |
Session-Id AVP |
3 |
login_id |
VARCHAR |
64 |
User-Name AVP |
4 |
acct_record_number |
NUMERIC |
10 |
Accounting-Record-Number AVP |
5 |
origin_host |
VARCHAR |
64 |
Origin-Host AVP |
6 |
session_seq |
NUMERIC |
10 |
1 |
7 |
acct_record_type |
NUMERIC |
4 |
Accounting-Record-Type AVP |
8 |
event_timestamp |
NUMERIC |
10 |
Event-Timestamp AVP |
9 |
conv_timestamp |
CHAR |
14 |
Event-Timestamp AVP |
10 |
role_of_node |
NUMERIC |
5 |
Role-Of-Node AVP |
11 |
user_session_id |
VARCHAR |
60 |
User-Session-Id AVP |
12 |
calling_party_addr_0 |
VARCHAR |
64 |
Calling-Party-Address AVP |
13 |
calling_party_addr_1 |
VARCHAR |
64 |
Calling-Party-Address AVP |
14 |
called_party_addr |
VARCHAR |
64 |
Called-Party_Address AVP |
15 |
alter_charged_party_addr |
VARCHAR |
64 |
Alternate-Charged-Party-Address AVP |
16 |
request_timestamp |
NUMERIC |
10 |
SIP-Request-TimeStamp AVP |
17 |
conv_request_timestamp |
CHAR |
14 |
SIP-Request-TimeStamp AVP |
18 |
response_timestamp |
NUMERIC |
10 |
SIP-Response-TimeStamp AVP |
19 |
conv_response_timestamp |
CHAR |
14 |
SIP-Response-TimeStamp AVP |
20 |
application_server |
VARCHAR |
60 |
Application-Server AVP |
21 |
application_addr |
VARCHAR |
64 |
Application-Provided-Called-Party-Address AVP |
22 |
origination_ioi |
VARCHAR |
60 |
Origination-IOI AVP |
23 |
terminating_ioi |
VARCHAR |
60 |
Terminating-IOI AVP |
24 |
ip_address |
CHAR |
15 |
SDP-Session-Description AVP |
25 |
sdp_sess_id |
NUMERIC |
20 |
SDP-Session-Description AVP |
26 |
ggsn_addr |
CHAR |
15 |
GGSN-Address AVP |
27 |
served_party_ip_addr |
CHAR |
15 |
Served-Party-IP-Address AVP |
28 |
incoming_id |
VARCHAR |
60 |
Incoming-Trunk-Group-ID AVP |
29 |
outgoing_id |
VARCHAR |
60 |
Outgoing-Trunk-Group-ID AVP |
30 |
bearer_service |
VARCHAR |
60 |
Bearer-Service AVP |
31 |
service_id |
VARCHAR |
60 |
Service-Id AVP |
32 |
service_specific_data_1 |
VARCHAR |
20 |
Service-Specific-Data AVP |
33 |
service_specific_data_2 |
VARCHAR |
4 |
Service-Specific-Data AVP |
34 |
service_specific_data_3 |
VARCHAR |
4 |
Service-Specific-Data AVP |
35 |
service_specific_data_4 |
VARCHAR |
4 |
Service-Specific-Data AVP |
36 |
service_specific_data_5 |
VARCHAR |
4 |
Service-Specific-Data AVP |
37 |
service_specific_data_10 |
VARCHAR |
4 |
Service-Specific-Data AVP |
38 |
service_specific_data_11 |
VARCHAR |
4 |
Service-Specific-Data AVP |
39 |
service_specific_data_12 |
VARCHAR |
4 |
Service-Specific-Data AVP |
40 |
service_specific_data_13 |
VARCHAR |
4 |
Service-Specific-Data AVP |
41 |
service_specific_data_14 |
VARCHAR |
4 |
Service-Specific-Data AVP |
42 |
service_specific_data_15 |
VARCHAR |
4 |
Service-Specific-Data AVP |
43 |
service_specific_data_20 |
VARCHAR |
60 |
Service-Specific-Data AVP |
44 |
service_specific_data_21 |
VARCHAR |
60 |
Service-Specific-Data AVP |
45 |
service_specific_data_22 |
VARCHAR |
60 |
Service-Specific-Data AVP |
46 |
service_specific_data_23 |
VARCHAR |
60 |
Service-Specific-Data AVP |
47 |
cause_code |
NUMERIC |
5 |
Cause-Code AVP |
48 |
create_date |
CHAR |
14 |
Record 생성시간 |
표 5는 본 발명의 일 실시예에 의한 T_Service_Sub 테이블의 구조이다.
순번
|
필드명
|
타입
|
크기
|
설명
|
1 |
icid |
VARCHAR |
64 |
IMS-Charging-Identifier AVP |
2 |
session_id |
VARCHAR |
64 |
Session-Id AVP |
3 |
login_id |
VARCHAR |
64 |
User-Name AVP |
4 |
acct_sub_session_id |
NUMERIC |
20 |
SDP-Session-Description AVP |
5 |
session_seq |
NUMERIC |
10 |
|
6 |
node_functionality |
NUMERIC |
2 |
Node-Functionality AVP |
7 |
response_timestamp |
NUMERIC |
10 |
SIP-Response-TimeStamp AVP |
8 |
conv_response_timestamp |
CHAR |
14 |
|
9 |
status |
CHAR |
2 |
세션 수집 상태(AS, AE, PS 등) |
10 |
create_date |
CHAR |
14 |
생성 시간 |
11 |
update_date |
CHAR |
14 |
최종 변경 시간 |
12 |
data_count |
NUMERIC |
10 |
해당 서브 세션이 포함하고 있는 데이터 개수 |
13 |
expire_time |
NUMERIC |
10 |
해상 서브 세션이 만료되는 시간 |
14 |
term_code |
CHAR |
1 |
0: 정상종료, 1: Timeout |
15 |
host_id |
CHAR |
4 |
IMSIF 프로세스가 수행되는 있는 host의 host id |
16 |
acct_group |
NUMERIC |
10 |
0: ICID의 전체 미디어가 Unknown 1: ICID의 일부 미디어가 Unknown 2: ICID에서 Unknown 미디어 없음 |
19 |
process_date |
CHAR |
14 |
최종 처리 시간 |
표 6은 본 발명의 일 실시예에 의한 T_Service_Data 테이블의 구조이다.
순번
|
필드명
|
타입
|
길이
|
설명
|
1 |
icid |
VARCHAR |
64 |
IMS-Charging-Identifier AVP |
2 |
session_id |
VARCHAR |
64 |
Session-Id AVP |
3 |
login_id |
VARCHAR |
64 |
User-Name AVP |
4 |
acct_sub_session_id |
NUMERIC |
20 |
SDP-Session-Description AVP |
5 |
session_seq |
NUMERIC |
10 |
|
6 |
acct_record_number |
NUMERIC |
10 |
Accounting-Record-Number AVP |
7 |
acct_record_type |
NUMERIC |
4 |
Accounting-Record-Type AVP |
8 |
real_record_type |
NUMERIC |
4 |
|
9 |
media_type |
NUMERIC |
2 |
SDP-Media-Name AVP |
10 |
media_initiator_flag |
NUMERIC |
1 |
Media-Initiator-Flag AVP |
11 |
authorized_qos |
VARCHAR |
20 |
Authorized-QoS AVP |
12 |
bandwidth |
NUMERIC |
10 |
Authorized-QoS AVP |
13 |
create_date |
CHAR |
14 |
해당 레코드 생성 시간 |
도 8은 본 발명의 일 실시예에 의한 과금 처리용 데이터를 생성하는 단계를 설명하는 절차도이다.
우선, T_SERVICE, T_SERVICE_SUB, T_SERVICE_DATA 테이블에 값을 저장하기 전에, 수신된 ACR 메시지의 AVP를 이용하여 각 테이블에 할당된 버퍼에 값을 저장(810)한다. 다음으로, ACR 메시지의 AVP 중 ACR 메시지의 어카운팅 정보를 의미하는 Acct-Record-Type을 판단(820)한다.
첫째로, Acct-Record-Type이 START인 경우, 세션이 새롭게 시작되는 경우이므로 T_SERVICE_DATA, T_SERVICE_SUB, T_SERVICE에 해당 정보를 삽입(830, 840, 850)한다. 둘째로, Acct-Record-Type이 INTERIM인 경우, 포함된 여러 미디어 세션 중 변경이 있는 미디어 세션이 있는 경우이다. 따라서 T_SERVICE를 참조하여 동일한 세션 ID(sessId)를 갖는 데이터가 있는지 판단(822)한다. sessId가 동일하지 않아 변경된 경우에는 미디어를 종료 처리(880)한 후에, sessId가 동일한 경우에는 바로 각 테이블에 값을 저장(830, 840, 850)한다. 셋째로, Acct-Record-Type이 STOP인 경우, 모든 미디어 세션이 종료되는 경우이므로, 미디어를 종료 처리(890)한 후에 T_SERVICE 테이블에 값을 저장(850)한다.
도 9는 본 발명의 일 실시예에 의한 과금 처리용 데이터를 설명하기 위한 데이터베이스 구성도이다. 도 9는 도 8과 함께 설명된 과금 처리용 데이터를 저장하기 위해 도입된 데이터베이스 테이블에 실제로 저장된 데이터를 도시한다.
각 테이블에서 RecType은 어카운팅 정보를 나타내는 것으로서, 2가 ACR START, 3이 ACR INTERIM, 4가 ACR STOP을 의미한다. 각 테이블에서 미디어 종류는 미디어 타입을 나타내는 것으로서, A는 오디오, V는 비디오, D는 데이터를 의미한다. 각 테이블에서 세션 상태는 미디어 세션의 시작/종료 상태를 나타내는 것으로서, AS는 세션이 시작된 상태를, AE는 세션이 종료된 상태를 의미한다.
특정 ICID(IMS Charging ID)에 대한 ACR START 메시지가 수신(901, 902)되면, T_SERVICE에 ACR과 관련된 해당 정보를 삽입하고, SDP-Media-Component에 포함된 포트 정보를 기반으로 미디어별 세션 정보를 생성(901, 902)한다. 이때, 각 미디어 세션은 모두 새롭게 시작되었으므로, T_SERVICE_SUB 테이블의 미디어별 세션 상태는 모두 시작(AS) 상태가 된다. 그리고, 각 미디어별 어카운팅 정보를 생성하여 T_SERVICE_DATA 테이블에 삽입한다. 모든 미디어가 새롭게 시작되었으므로, 각 미디어에 대한 어카운팅 정보를 나타내는 T_SERVICE_DATA 테이블의 RecType은 2로 생성(901, 902)된다.
특정 ICID에 대한 첫 번째 ACR INTERIM 메시지가 수신(903, 904, 905)되면, T_SERVICE 테이블에 ACR과 관련된 해당 정보를 삽입하고, SDP-Media-Component에 포함된 포트 정보를 기반으로 미디어별 세션 정보를 수정 또는 생성한다. ACR INTERIM 메시지는 세션의 변경이 있는 경우에 수신되는 것이므로, 변경으로 인해 종료된 미디어 세션은 종료 처리하고, 유지된 미디어 세션은 데이터를 수정하고, 새로운 미디어 세션은 데이터를 생성한다. 도 9에 도시된 바와 같이, ACR 메시지의 오디오(A) 미디어의 포트는 0이 수신되었으므로 해당 포트가 종료된 것으로 해석하여, T_SERVICE_SUB 테이블에서 해당 미디어 세션의 상태를 종료(AE)로 변경(903)한다. 그대로 유지된 비디오(V) 미디어 포트와 새롭게 생긴 데이터(D) 미디어 포트에 대한 세션 상태는 시작(AS)로 유지(904, 905)된다. 그리고, 각 미디어 별로 어카운팅 정보를 생성하여 T_SERVICE_DATA의 RecType에 저장한다. 미디어 세션이 종료로 변경된 오디오(A)에는 어카운팅 STOP(RecType 4) 데이터를(903), 기존 세션에 대한 변경 또는 유지인 비디오(V)에는 어카운팅 INTERIM(RecType 3) 데이터를(904), 새롭게 생성된 데이터(D)에는 어카운팅 START(RecType 2) 데이터를(905) 생성하여 삽입한다.
SDP 미디어 정보에 비디오(V) 포트만 포함된 또 다른 ACR INTERIM 메시지가 수신(906, 907, 908, 909)되면, 이전에 존재하던 세션 ID(sessId)와 동일한 세션이 있는지 판단한다. 도 9에 도시된 바와 같이, sessId가 123에서 124로 변경되었으므로 sessID 123에 대항하는 미디어 세션을 종료 처리(906, 907, 908)하여, 세션 상태를 종료(AE)로 변경(907, 908)한다. 이때, T_SERVICE_DATA 테이블에는, 이전 메시지에 존재하던 미디어 포트 정보가 사라진 비디오(A)와 데이터(D)에는 어카운팅 STOP(RecType 4) 데이터를 삽입(907, 908)하고, 포트 정보가 유지된 비디오(V)의 경우에는 어카운팅 INTERIM(RecType 3) 데이터를 삽입(909)한다.
특정 ICID에 대하여 ACR STOP 메시지가 수신(910, 911, 912, 913)되면, 해당하는 ICID에 속하는 모든 진행 중인 미디어 세션을 종료 처리한다. 도 9에 도시된 바와 같이, 세션 진행 중인 포트가 비디오(V) 포트뿐이므로 비디오(V) 포트의 세션 상태를 종료(AE)로 변경(913)하고, 해당 미디어 세션에 대한 어카운팅 STOP(RecType 4) 데이터를 생성하여 T_SERVICE_DATA 테이블에 삽입(913)한다.
위와 같은 방법으로 본 발명의 일 실시예는 SIP 메시지의 SDP-Media-Component에 포함된 포트 정보로 전달되는 포트의 열림/닫힘(on/off) 상황을 이용하여, 미디어별 세션 정보 및 미디어별 어카운팅 정보를 생성한다.
도 10은 본 발명의 일 실시예에 의한 과금 장치의 구성도이다.
도 10에 도시된 구조의 과금 장치는 3GPP 표준의 CDF와 CGF를 통합한 CCF(1000) 기능을 구현한다. CCF(1000)는 5개의 메인 프로세스와 5개의 시스템 감시/제어 프로세스, 및 1개의 운용관리 프로세스로 구성된다.
DNIF(DIAMETER NETWORK Interface)(1031)는 DIAMETER BASE 엔진 기능을 수행한다. DNIF(1030)는 CTF인 CSCF(1010) 및 AS(1020)와의 DIAMETER PEER 설정을 위한 능력 협상 처리를 한다. DNIF(1030)는 능력 협상 성공 시에 해당 PEER에 대한 연결을 설정하고, 연결 설정이 완료되면 DIAMETER BASE 메시지를 CTF와 송수신한다. DNIF(1030)는 과금 처리를 위해 수신 메시지 중 ACR 메시지를 IMSIF(IMS Interface)(1032)로 전달하고, IMSIF(1032)로부터 ACA를 수신하여 CTF로 전달한다. 또한, DNIF(1030)는 PEER 정보가 저장된 공유 메모리를 주기적으로 확인하여, PEER에 대한 상태 정보를 유지한다.
IMSIF(1032)는 DIAMETER ACR 메시지를 처리하여 과금 처리용 데이터를 생성한다. IMSIF(1032)는 DNIF(1031)로부터 ACR 메시지를 수신하여 필수 AVP의 누락 여부를 확인하고, 적절한 ACA 메시지를 반한한다. IMSIF(1032)는 과금 데이터 산출을 위해 ACR 메시지 내의 SDP 미디어 정보를 분석하여 과금 처리용 데이터를 생성하고 관리한다.
IPCDR(IMS Process Charging Data Record)(1033)은 과금 가공 프로세스로서, 종료된 미디어 세션을 검색하여 과금 데이터를 산출한다. IRCDR(IMS Recovery Charging Data Record)(1034)은 과금 복구 프로세스로서, 과금 데이터 처리 중에 프로세스 또는 데이터베이스 장애 등으로 인해 완료되지 않은 중간 생성 데이터를 복구하거나 예외로 처리하는 프로세스이다. IMEDIF(IP Mediation Interface)(1035)는 IPCDR(1033)이 산출한 과금 데이터를 검색하여 IP 과금 데이터(IPDR: IP Detail Record)를 생성하는 프로세스이다.
SVCM(1036)은 서비스 관리용 프로세스로서, 시스템 내부의 타이머에 대한 관리와 운용 관리기능에서 제공하는 시스템 명령어를 처리한다. SAMD(System Administration Monitoring Daemon)(1037)는 시스템 감시 프로세스로서, 응용 프로세스에 대한 시스템 상태, 중앙 처리 장치(CPU) 부하, 메모리/하드디스크 점유율 등의 시스템 자원 상태를 수집한다. ERCD(Execute Report Collect Daemon)(1038)는 CCF(1000)의 과금 처리 통계, 인터페이스 상태 정보, 데이터베이스 상태 정보 등을 수집하고, 수집한 정보를 OMP(Operation and Maintenance Processor) 운용자 인터페이스(1050)[3-11]로 전달한다. IXPC(1039)는 CCF(1000) 내부에서 동작하는 각 프로세스 간의 통신을 담당하고, 프로세스 간에 메시지를 분배한다. GUICOMM(1040)은 과금 데이터베이스 접속을 위한 인터페이스를 제공한다. OMP 운용자 인터페이스(1050)는 운용 관리 기능으로서, CCF(1000)의 전체적인 운용 관리 및 통계 기능을 제공하기 위한 세부 기능을 수행하고, 운용자와 시스템 간의 인터페이스를 제공한다.
도 11은 도 10에 도시된 본 발명의 일 실시예에 의한 과금 데이터 산출부(1033)의 세부 구성도이다. 도 3 및 도 10을 함께 참조하여 본 발명의 일 실시예에 의한 과금 데이터 산출부(340)의 동작을 설명한다.
이 실시예에서 과금 데이터 산출부(340)인 IPCDR(1033)은 T_SERVICE_SUB(1111) 테이블을 조회하여, 종료된 세션(세션 상태가 AE인 세션)이 존재하는지 지속적으로 검색한다. T_SERVICE_SUB(1111)내에 종료된 세션이 검색된 경우, IPCDR(1033)은 해당 정보의 ICID 와 동일한 T_SERVICE(1113), T_SEVICE_DATA(1112), T_SERVICE_SUB(1111) 테이블 내의 정보를 가공처리하여 과금 데이터를 산출한다.
IPCDR(1033)은 가공처리 전에 동일 ICID를 가진 양쪽 HOST 중에 생성시간 및 노드의 기능(Node Functionality)을 고려하여, 양쪽 HOST의 해당 정보들에 대한 HOST_ID를 한쪽(SO01 or SO02)으로 갱신(UPDATE)(1120)한다. 이는 PEER 노드 전체에서 양쪽 HOST에 동일 세션의 정보가 존재함으로 인해 발생 가능한 데이터베이스 충돌을 방지하기 위함이다.
하나의 ICID내에 2개 이상의 세션이 존재하면, IPCDR(1033)은 하나의 세션 정보만을 가공처리한다. IPCDR(1033)은 가공처리한 결과를 T_SERVICE_RSLT(1114)에 삽입(INSERT)하고, 가공처리에 이용한 과금 정보를 T_SERVICE(1113), T_SEVICE_DATA(1112), T_SERVICE_SUB(1111) 테이블 내에서 삭제(DELETE)(1130)한다. 데이터베이스 쿼리(Query) 수행 시 실패가 발생하면 IRCDR(1034)에서의 복구를 위해 IPCDR(1033)은 해당 정보를 특정 디렉토리에 저장한다.
도 12는 도 10에 도시된 본 발명의 일 실시예에 의한 IP 과금데이터 생성부(350)의 세부 구성도이다. 도 3 및 도 10을 함께 참조하여 본 발명의 일 실시예에 의한 IP 과금 데이터 생성부(350)의 동작을 설명한다.
이 실시예에서 IP 과금 데이터 생성부(350)인 IMEDIF(1035)는, 빌링 시스템이 사용자에게 요금을 청구하기 위한 기초 자료로 활용될 수 있는 IPDR을 생성하기 위한 과금 전송 프로세스이다. IMEDIF(1035)는 과금 가공 프로세스에 의해 생성된 IPDR 데이터를 데이터베이스에서 검색하여, IPDR을 생성한다. 또한, IMEDIF(1035)는 IPDR 데이터마다 일련번호를 부여하여 전송 누락을 판단할 수 있도록 하고, 프로세스 재가동에 대비하여 부여한 일련번호 및 파일 정보 등 필요한 정보를 MMAP 파일에 저장한다. IMEDIF(1035)는 다중화 처리를 위해 프로세스마다 독립된 파일을 사용하고, 파일 형태로 IMS 과금 처리 IPDR을 생성한다.
본 명세서에서 '전송', '송신 및 수신', '전달' 등 데이터를 보내고 받는 동작을 설명하기 위해 사용된 용어의 의미는, 송신자와 수신자 사이에서 직접 데이터를 보내고 받는 동작에 한정되지 않는다. 데이터베이스 등 저장 장치를 통해 데이터가 보내지는 동작도 위와 같은 용어에 포함된다. 예를 들어, '송신자 A가 수신자 B에게 데이터X를 송신한다'의 의미는 '송신자 A와 수신자 B 사이의 직접적인 연결을 통해 데이터X가 전송되는 동작'과 '송신자 A가 데이터베이스에 데이터 X를 저장하고, 수신자 B가 데이터베이스로부터 데이터 X를 참조하는 동작'을 모두 포함한다.
전술한 장치 및 시스템은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 하드웨어 구현에 있어서, IMS 시스템의 과금을 위하여 사용된 모듈은 하나 이상의 주문형 집적회로(ASIC), 디지털 신호 프로세서(DSP), 디지털 신호 처리 장치(DSPD), 프로그램 가능 논리 장치(PLD), 필드 프로그램 가능 게이트 어레이(FPGA), 프로세서, 제어기, 마이크로-제어기, 마이크로프로세서, 여기에 기술한 기능들을 수행하도록 설계된 다른 전자 유닛 또는 이들의 조합으로 구현될 수 있다. 소프트웨어는 여기에 기술된 기능들을 수행하는 모듈을 통해 구현될 수 있다. 소프트웨어 코드는 메모리 유닛들에 저장되고 프로세서에 의해 실행될 수 있다. 메모리 유닛은 프로세서 내부 또는 외부에서 구현될 수 있으며, 이 경우에 메모리는 공지된 다양한 수단을 통해 프로세서와 연결될 수 있다.
한편, 전술한 바와 같은 본 발명의 방법은 컴퓨터 프로그램으로 작성이 가능하다. 그리고 상기 프로그램을 구성하는 코드 및 코드 세그먼트는 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 또한, 상기 작성된 프로그램은 컴퓨터가 읽을 수 있는 기록매체(정보저장매체)에 저장되고, 컴퓨터에 의하여 판독되고 실행됨으로써 본 발명의 방법을 구현한다. 그리고 상기 기록매체는 컴퓨터가 판독할 수 있는 모든 형태의 기록매체(CD, DVD와 같은 유형적 매체뿐만 아니라 반송파와 같은 무형적 매체)를 포함한다.
전술한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로, 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.