图5.离线计费:基于事件的模型(单击图片查看大图)
在线计费:Ro接口
在线计费的目的是将计费信息提供给OCS,从而能够在许可使用网络资源之前执行存款控制。为此,预付费的订阅者必须存在于OCS中,资源使用要根据这情 况记入账单。因此,所有的活动(包括访问被请求的资源使用、确定货币数额或其他单位的数额,以及将这些数额从订阅者的账户中扣除)必须发生在使用资源之 前,或至少是在使用资源的过程——即使用资源时必须处于在线状态。根据情况的不同,资源使用结束时必须执行最终评估。因此:必须区分以下两种情况:
直接付款(Direct Debiting)——在这种情况下,交易单位会在单个事务中直接从用户账户中扣除。
? 单位保留(Unit Reservation)——在这种情况下,OCS会将交易单位保留在用户账户中,这主要是因为OCS不知道所提供的服务需要多少单位。服务终止之后,已用存款金额会从用户账户中扣除,并用最后任何保留和未使用的单位会释放并添加到用户账户中去。
?
根据以上分类,OCS会识别以下三种场景:
即时事件计费(Immediate Event Charging,IEC)(基于事件的计费) ? 具有单位保留的事件计费(Event Charging with Unit Reservation,ECUR)(基于事件的计费)
? 具有单位保留的会话计费(Session Charging with Unit Reservation,SCUR)(基于会话的计费)
?
基于事件的计费的发生可以保留或不保留订阅者的账户,并且可以将其识别为具有单位保留的事件计费(ECUR)或即时事件计费(IEC)。CC-Request-Type将具有一个EVENT REQUEST值。图6显示了相关的IEC呼叫流。
图6.在线计费:事件模型(IEC)(单击图片查看大图) 图7显示了与ECUR相关的呼叫流。
图7.事件计费模型(ECUR)(单击图片查看大图)
对于具有单位保留的会话计费(SCRU),需要大量的询问,而且直接付款(Direct Debiting)情况下的WebLogic SIP Server(或者SIP-AS之类的普通网络元素)的行为如下所示:提供服务之前,必须向OCS发送一个请求。接收到准许的肯定应答之后, WebLogic SIP Server能够最后支持这个服务。作为任何其他的Diameter请求,存款控制请求被Command-Code字段识别;在本例中,
代码设置为 272。CC-Request-Type AVP用于识别请求的类型,并且必须出现在所有的CCR消息中。根据RFC4006,CC-Request-Type具有以下这些值: INITIAL_REQUEST——用于启动一个会话,触发SIP方法有INVITE (SCUR)、NOTIFY (ECUR)、MESSAGE (ECUR)、REGISTER (ECUR)、SUBSCRIBE (ECUR)、REFER (ECUR)和PUBLISH (ECUR)。
? UPDATE REQUEST——用于为已有会话更新信息。通常,当SIP 200 OK消息对SIP INVITE、RE-INVITE或UPDATE确认时,或者当保留配额到期时,有效时间触发或其他事件触发时使用。
? TERMINATION REQUEST——用于终止一个会话,当我们接收到SIP最终应答(4xx,5xx,6xx),异常中止SIP会话和SIP BYE时使用。 ? EVENT REQUEST——无需维护会话时使用。
?
如图8所示。
图8.基于会话的模型(SCUR)(单击图片查看大图)
示例IMS场景
图9和图10所显示的IMS网络就是一个在线计费场景的示例。当用户A发起呼叫时,用户的电话会向P- CSCF发送一个SIP INVITE请求。P-CSCF是运营商网络的入口点。它将INVITE消息转发到分配给用户的S-CSCF。网络假定P-CSCF知道S-CSCF的地 址,因为该信息在用户注册(图中未显示出来)时就从HSS中检索出来了。然后,S-CSCF检测到这个呼叫要求在线计费并将INVITE转发给IMS- GWF(IMS网关函数)。
图9. IMS示例场景:呼叫设置(单击图片查看大图)
可以将IMS-GWF看作一种特殊的SIP应用服务器,其作用是提供与OCS的通信。接收到INVITE消息后,IMS-GWF会向OCS发送一个类型 INITIAL的CCR,从而为呼叫保留一些存款。OCS使用CCA作为应答,其中含有结果代码
DIAMETER_SUCCESS,指示呼叫是允许的。 CCA还含有关于准许“服务单位”数量的信息。比如,这些单位可以是呼叫持续时间的秒数。
接收到CCA后,IMS-GWF将之前接收到的INVITE消息转发回给CSCF,然后CSCF再将其传递给网络的被叫方(I-CSCF,S-CSCF,P-CSCF,用户B的电话)。IMS-GWF还通过设置计时器来监控准许单位的使用情况。
然后,用户B的电话开始响铃并使用180 Ringing消息应答INVITE。考虑到简单性,这个图中并未包含这个应答,以及任何100 Trying应答消息。当被叫方应答电话时,将会发送200 OK消息。这个OK消息通过各种不同的网络元素到达用户A的电话,如下图所示。然后,A话机将ACK转发到B端。这样一个呼叫就建立起来了。
图10. IMS示例场景:呼叫终止(单击图片查看大图)
当所有准许单位都被使用后(也就是IMS-GWF中的计时器到期),将发送一个CCR保留这些单位的另一部分。这次的请求类型是UPDATE。OCS发 送含有结果代码DIAMETER_SUCCESS的CCA,以许可呼叫继续。如果准许单位是用户账户上最后可用的存款,则OCS应答会含有Final- Unit-Indication AVP。这表示使用完当前准许的单位之后,呼叫会断开连接(或者采用另一种特殊的动作)。但是,在本例中没有出现这个AVP。
在这之 后,用户A决定关闭呼叫并发送BYE。BYE将通过P-和S-CSCF转发给网络的呼叫方和IMS-GWF,IMS-GWF会发送类型 TERMINATION的CCR给计费系统。这个CCR中包含与使用过的“服务单位”有关的信息(在本例中为呼叫持续时间)。OCS使用CCA作为应答并 释放与该会话相关的内部资源(比如说内存、计时器)。用户B的电话使用200 OK消息应答BYE,该消息将传回呼叫方。最后呼叫关闭。
如何在WebLogic SIP Server中实现这些功能
BEA WebLogic SIP Server含有一个简单的支持Diameter协议的API,包括Diameter Base Accounting和Diameter Credit-Control应用程序。本节介绍如何配置和使用Diameter功能。
配置
要使用Diameter功能,需要对WebLogic域进行适当的配置。配置过程由以下几个步骤组成:
?
启用Diameter自定义资源。