VoIP系統(tǒng)實時計費功能研究及實現(xiàn)
南京理工大學計算機科學與技術(shù)系 孫亞民
2004/12/14
一、計費系統(tǒng)框架結(jié)構(gòu)
VoIP計費系統(tǒng)的設(shè)計遵循Internet實時計費的設(shè)計原則,具有實時性、穩(wěn)定性、可靠性、可移植性、可擴展性等特性,功能的設(shè)計既考慮了Internet計費系統(tǒng)的基本功能,又考慮了用戶的需求及VoIP系統(tǒng)的業(yè)務(wù)特點。
系統(tǒng)的核心部分,包括中心數(shù)據(jù)庫、可互備份的實時計費服務(wù)器RTBS,以及向外部設(shè)備開放的實時計費代理(RTBA)。通過RTBA向外部設(shè)備開放實時計費的所有功能,RTBA提供了一套完整的功能接口API,外部設(shè)備只需簡單地調(diào)用這些函數(shù)就可以實現(xiàn)各種功能。從外部設(shè)備角度來看,計費系統(tǒng)的內(nèi)部細節(jié)是透明的,因此系統(tǒng)可以方便地移植和集成。RTBA的設(shè)計是本系統(tǒng)的一大特點。外部設(shè)備與RTBA之間是函數(shù)調(diào)用關(guān)系,RTBA與RTBS之間則是在標準TCP/IP上的相互通信,可以是在LAN上,也可以是在WAN上。為了保證整個計費系統(tǒng)的性能,RTBA與RTBS必須在有QoS保障的網(wǎng)絡(luò)上進行通信。
系統(tǒng)中可以采用多個RTBS,RTBS之間可以互相備份,通過RTBS的冗余可以明顯提高系統(tǒng)容量,還提高了系統(tǒng)的穩(wěn)定性和可靠性。后臺數(shù)據(jù)庫采用Oracle,在RTBS 與數(shù)據(jù)庫之間,仍然通過三層架構(gòu),中間層用Microsoft MTS以提高數(shù)據(jù)庫訪問的性能。
系統(tǒng)同時還提供Keep Alive機制,GK通過RTBA與RTBS保持Keep Alive通信,無論GK異常還是RTBS異常,對方都能在第一時間知道。
二、CDR格式
CDR就是呼叫詳細記錄(Call Detail Record),每個完整的呼叫都應(yīng)有一個完整信息的CDR。IP電話中的CDR信息一般以兩種形式存放,一種是文件形式,可以是文本文件、二進制文件或CSV格式文件;另一種是存放在數(shù)據(jù)庫中,這也是最常用的形式,IP電話系統(tǒng)后臺數(shù)據(jù)庫都有專門存放CDR的表。
CDR信息一般由GK收集。記錄CDR有兩個最主要的目的,一就是作為計費的依據(jù),二就是用于客戶查詢審計。CDR中應(yīng)該記錄哪些信息并沒有一個固定的要求,一般不同的IP電話系統(tǒng)根據(jù)業(yè)務(wù)的側(cè)重點不同會有不同的CDR格式,同時客戶最關(guān)心的一些信息一定要記錄到CDR中。CDR格式是根據(jù)系統(tǒng)的具體業(yè)務(wù)特點和具體的客戶需求制定的,除了一些必須有的信息字段外,還有一些特殊字段。表1是CDR中每個字段及其含義。
三、資費策略的制定
資費策略是對各種服務(wù)進行計費的一套完整方案,表明對于每種服務(wù)應(yīng)該向誰收費、怎樣收費,主要包括正常費率的設(shè)置、折扣費率的設(shè)置、固定服務(wù)費和罰款的設(shè)置。不同的供應(yīng)商根據(jù)所實現(xiàn)業(yè)務(wù)的不同會有一套符合自身特色的資費策略,但都必須遵守一個原則,即費率的統(tǒng)一,一個服務(wù)在該資費策略下只能計算出一個費用值,不能出現(xiàn)有歧義的計費方法。
最常見的計費方法有:
(1)按服務(wù)時長計費,這是使用最廣泛的一種計費方法;
(2)按服務(wù)次數(shù)計費;
(3)按數(shù)據(jù)流量計費,可能是上行流量、下行流量或總流量;
。4)按帶寬使用情況進行計費;
。5)按服務(wù)質(zhì)量(QoS)參數(shù)計費;
。6)混合計費,如結(jié)合帶寬和流量的計費。
目前許多ITSP主要提供PSTN+IP網(wǎng)關(guān)形式的IP電話業(yè)務(wù),這種情況下費用的計算一般分為兩部分,即PSTN通話費用和IP內(nèi)部服務(wù)費用。
數(shù)據(jù)在三段網(wǎng)絡(luò)中傳輸,第一段從用戶電話到IP接入網(wǎng)關(guān),接入網(wǎng)關(guān)有接入號,這段費用是PSTN的費用。第二段從接入網(wǎng)關(guān)到接出網(wǎng)關(guān),語音數(shù)據(jù)通過IP網(wǎng)絡(luò)傳輸,大IP電話運營商一般都通過專網(wǎng)或?qū)>傳輸,這是IP內(nèi)部服務(wù)的費用。第三段從接出網(wǎng)關(guān)到被叫電話,收取的也是PSTN通話費用。第一段費用一般由主叫支付,相當于市話費用。第二、三段的費用就是用戶支付的IP 電話費用,由運營商核算綜合成本后給出費率計算得到。這樣的系統(tǒng)絕大多數(shù)都是按通話時長來計費的。
IP電話資費策略中根據(jù)需要都會有折扣/優(yōu)惠策略,一般有時段優(yōu)惠、節(jié)假日優(yōu)惠和總量優(yōu)惠等方式。
資費策略管理在VoIP業(yè)務(wù)中是很關(guān)鍵的,靈活的資費策略管理不僅有利于服務(wù)供應(yīng)商的運營和業(yè)務(wù)的擴展,也極大地保護了客戶的利益。好的資費策略管理應(yīng)該支持費率的預定制和費率的回溯,支持實時費率,能夠提供多種費率的核算和比較。
VoIP除了基本的PC to PC、PC to Phone、Phone to PC、Phone to Phone四種業(yè)務(wù)模式外,還有收發(fā)Voice Mail、呼叫轉(zhuǎn)移等增值業(yè)務(wù),所以可以把所有業(yè)務(wù)分為兩大類,一類是與PSTN相通的,一類是沒有PSTN費用的內(nèi)部業(yè)務(wù)。
資費策略中除了上述對收費方法的規(guī)定外,還需要設(shè)置PSTN通話費率和優(yōu)惠策略。
四、計費系統(tǒng)主要業(yè)務(wù)實現(xiàn)
1. 時鐘同步
時鐘同步在分布式應(yīng)用中是很關(guān)鍵的,尤其是在VoIP系統(tǒng)中對時間的一致性更為重視,設(shè)備之間時鐘誤差不能超過1s。系統(tǒng)中所有設(shè)備都以中心數(shù)據(jù)庫所在的機器時鐘為基準時鐘,提供一個時鐘同步函數(shù),每隔一段時間系統(tǒng)中各設(shè)備調(diào)用該函數(shù),對本地時鐘進行校對。
2. 登錄/認證
在此以一個終端(Terminal)的登錄為例,介紹本計費系統(tǒng)的認證過程。
。1)終端向指定的頂級 GK發(fā)GRQ(Gatekeeper Request)。頂級 GK給終端回GCF(Gatekeeper Confirm)報文,給終端分配初級 GK,讓終端向指定的初級GK注冊。
。2)在GCF消息中頂級GK把初級GK的IP、Port返回給終端。
。3)終端向初級GK發(fā)RRQ(Registration Request)消息,帶上用戶ID、用戶密碼等參數(shù)。
。4)初級GK調(diào)用RTBA提供的請求認證的API函數(shù)。
。5)RTBA向RTBS發(fā)RADIUS的認證請求(Access-Request)消息。
(6)RTBS查詢中心數(shù)據(jù)庫的用戶ID—密碼對,如果相同給RTBA返回RADIUS中的Access-Accept消息。
。7)RTBA的API函數(shù)返回認證確認結(jié)果給初級GK。
。8)初級GK得到認證通過的結(jié)果后,向終端發(fā)RCFv(RegistrationConfim)消息,接受用戶登錄。
如果在第6步中用戶ID、密碼不符,RTBS向RTBA返回Access-Reject消息。則在接下來的第7步中API返回認證拒絕結(jié)果,并且在第8步中初級GK向終端發(fā)RRJ(Registration-Reject)消息,拒絕用戶登錄。
3. 呼叫請求
用戶得到驗證后,就可以進行呼叫操作。當一個終端要向另外的終端發(fā)起呼叫時,GK在建立呼叫前要通過計費系統(tǒng)確認該用戶是否能夠得到發(fā)起這個呼叫的授權(quán)。呼叫請求過程和呼叫建立過程從略。
4. 檢查點
在很多計費系統(tǒng)中,只在服務(wù)開始和服務(wù)結(jié)束這兩個時間點進行計費處理。例如在一個呼叫開始時通知一下計費服務(wù)器,然后在呼叫結(jié)束時再通知一下計費服務(wù)器,然后計費服務(wù)器一次性計算該呼叫的費用。這種處理方法比較簡單,但不可靠,如果呼叫開始并進行了較長時間的通話,而這時候GK發(fā)生異常,不能通知計費服務(wù)器呼叫結(jié)束,那么計費系統(tǒng)就無法對這個呼叫進行計費,對客戶對供應(yīng)商都是一種損失。為了避免這種損失,我們在計費系統(tǒng)中啟用了檢查點(Checkpoint)機制,即在每個呼叫過程中設(shè)置檢查點,檢查呼叫情況,檢查系統(tǒng)運行情況,并做如下處理:
。1)更新客戶最新費用信息;
。2)寫最新狀態(tài)的CDR。
通過Checkpoint機制可以最大程度地減少損失,利用Keep Alive可以在第一時間發(fā)現(xiàn)異常,并做相應(yīng)處理。系統(tǒng)中可能出現(xiàn)的異常情況很多,在這里舉兩個例子,并介紹相應(yīng)的處理方法。
如果GK發(fā)現(xiàn)一個RTBS異常,由于該RTBS負責多路呼叫的計費處理,那么這時候GK要做的就是將該RTBS上負責的所有呼叫遷移到其他RTBS上,而且要避免費用的重復扣除,因為在過去的Checkpoint點已經(jīng)扣除了呼叫前一段時間的費用。處理的方法,并不是將最新的呼叫狀態(tài)也遷移過去,讓RTBS從遷移時開始重新計費,而是將呼叫的最原始信息,如呼叫開始時間T0,該用戶的原始費用balance0轉(zhuǎn)移到新的RTBS, RTBS可以計算出T0到當前時間的費用cost1,用原始費用balance0減去cost1就得到該客戶的最新余額,而不管前一個RTBS對該呼叫做了多少個Checkpoint操作。
如果RTBS發(fā)現(xiàn)GK異常,在GK異常時系統(tǒng)有其他方法將GK所負責的呼叫拆除,所有RTBS可以把發(fā)現(xiàn)GK異常的時間作為呼叫的結(jié)束時間來處理,這樣這種異常情況下的處理就顯得簡單。RTBS計算出這段時間的費用更新到客戶賬戶上,并記錄到目前為止的CDR信息中。
5. 最后一分鐘通知
RTBS實時監(jiān)測每個呼叫的最大通話時間,在通話費用結(jié)束前1min通知GK,要求GK主動拆除該呼叫,這是保證客戶不透支費用的關(guān)鍵。在GK得到最后1min通知后會把這個信息通知到終端,并在1min后拆除該呼叫。
6. 呼叫結(jié)束處理
呼叫結(jié)束,表示完成一個服務(wù)。這之后要對這個服務(wù)進行完整的記錄,同時計算該服務(wù)的準確費用。
五、結(jié)束語
本文從Internet計費的基本理論出發(fā),研究了針對VoIP業(yè)務(wù)的計費系統(tǒng)所應(yīng)具有的功能以及計費系統(tǒng)中的一些關(guān)鍵問題,并結(jié)合一個VoIP系統(tǒng)的模型,著重介紹了一個實時計費系統(tǒng)的實現(xiàn)方法及其關(guān)鍵業(yè)務(wù)。
中國多媒體視訊
相關(guān)鏈接: