离线和在线计费程序都可以分为两种截然不同的类型:即基于事件的计费(Event-based Charging)和基于会话的计费(Session-based Charging)。
- 基于会话的计费——需要在整个服务中维持会话的情况下使用这种方式。通常,账单系统中至少有两个请求:
发起请求(Initial Request)——用于发起计费活动。该请求包含与用户使用的会话相关的数据。
中间请求(Intermediary Request)——用于更新当前会话(比如说,在某个语音呼叫中添加一个视
频)。 当然,这个请求是可选的。
最终请求(Final Request)——用于关闭一个会话。
- 基于事件的计费——用于在某个特定的事件(比如,充当Redirect Server的SIP AS事件)之后发起一次性账单活动。
在离线计费的例子中,请求是通过Rf协议传输的。而在线计费系统使用的是Ro协议。这两种协议都基于Diameter。这两者之间存在一些差异,其中之一是对与计费会话相关的会话状态的维护。在事件模型中,由于只需处理单个应用程序的事件,因此没有必要维护会话。RFC3588中对会话的定义是“一系列致力于某个特定活动的相关事件”。