戶信息后首先建立用戶臨時(shí)流表,同時(shí)再將用戶信息上送給AAA模塊。
[0033]步驟103,AAA模塊收到接入模塊上送的用戶信息,再通過(guò)Radius等標(biāo)準(zhǔn)協(xié)議將用戶信息發(fā)送給AAA服務(wù)器。
[0034]步驟104,AAA服務(wù)器收到NAS設(shè)備發(fā)送的用戶信息,對(duì)所述用戶信息進(jìn)行認(rèn)證和授權(quán),認(rèn)證通過(guò)后,將認(rèn)證結(jié)果和授權(quán)信息發(fā)送給NAS設(shè)備。
[0035]其中,授權(quán)信息主要包括用戶總流量Remanent-Volume和限速速率。
[0036]認(rèn)證失敗的情況不是本申請(qǐng)關(guān)注的內(nèi)容,因此此處不介紹。
[0037]步驟105,NAS設(shè)備的AAA模塊接收到AAA服務(wù)器發(fā)送過(guò)來(lái)的認(rèn)證結(jié)果和授權(quán)屬性,將權(quán)屬性信息發(fā)送給接入模塊。
[0038]步驟106?步驟107,接入模塊接收到授權(quán)信息后,更新用戶臨時(shí)流表,從而生成正式的用戶流表。
[0039]在用戶撥號(hào)上線流程結(jié)束后,用戶數(shù)據(jù)進(jìn)入轉(zhuǎn)發(fā)層面處理,本發(fā)明實(shí)施例通過(guò)對(duì)數(shù)據(jù)轉(zhuǎn)發(fā)層面的處理進(jìn)行優(yōu)化,解決了按流量計(jì)費(fèi)的用戶在下發(fā)限速的情況下NAS設(shè)備和AAA服務(wù)器之間因?yàn)橹芷谛越换ザ鴮?dǎo)致的計(jì)費(fèi)誤差問(wèn)題,而且,不會(huì)對(duì)設(shè)備造成過(guò)大的性能壓力,能夠承載大量用戶上線的計(jì)費(fèi)工作,具體請(qǐng)參見(jiàn)圖2。
[0040]圖2是本發(fā)明實(shí)施例提供的流量控制方法的流程圖。
[0041]如圖2所示,該流量控制方法的流程包括令牌桶創(chuàng)建流程和流量轉(zhuǎn)發(fā)流程,具體地:
[0042]令牌桶創(chuàng)建流程包括步驟201-203:
[0043]步驟201,在接收到流量計(jì)費(fèi)更新報(bào)文時(shí),判斷用戶的剩余流量是否小于一個(gè)計(jì)費(fèi)周期的最大流量,如果是,執(zhí)行步驟202,否則,執(zhí)行步驟203。
[0044]其中,關(guān)于何時(shí)接收流量計(jì)費(fèi)更新報(bào)文,本發(fā)明實(shí)施例不做限制,比如,NAS設(shè)備的AAA模塊可以根據(jù)流量計(jì)費(fèi)周期,周期性地讀取用戶流表中用戶的剩余流量,發(fā)送流量計(jì)費(fèi)請(qǐng)求報(bào)文,然后接收流量計(jì)費(fèi)更新報(bào)文。
[0045]其中,所述流量計(jì)費(fèi)請(qǐng)求報(bào)文中攜帶所述用戶的流量信息。
[0046]步驟202,為所述用戶創(chuàng)建令牌桶,計(jì)算所述用戶的剩余流量對(duì)應(yīng)的令牌總數(shù),向所述令牌桶中投入所述總數(shù)的令牌。
[0047]本步驟中,如果已經(jīng)為所述用戶創(chuàng)建了令牌桶,則相當(dāng)于步驟202已經(jīng)執(zhí)行完畢,不必重新創(chuàng)建令牌桶。
[0048]步驟203,不為所述用戶創(chuàng)建令牌桶,返回步驟201。
[0049]流量轉(zhuǎn)發(fā)流程包括步驟204-206:
[0050]步驟204,接收用戶流量,匹配用戶流表,如果匹配成功,進(jìn)入步驟205。
[0051]其中,接收用戶流量及匹配用戶流表,為現(xiàn)有技術(shù),在此不再贅述。
[0052]對(duì)于匹配失敗的情況,本申請(qǐng)不關(guān)注,因此此處不做重點(diǎn)介紹。
[0053]步驟205,若已為所述用戶創(chuàng)建了令牌桶,則所述流量流經(jīng)所述令牌桶,所述令牌桶根據(jù)所述用戶流量的大小從所述令牌總數(shù)中減去相應(yīng)的令牌數(shù),根據(jù)剩余令牌數(shù)確定用戶剩余流量,其中,剩余令牌數(shù)為O時(shí)用戶剩余流量也為O。
[0054]若沒(méi)有為所述用戶創(chuàng)建令牌桶,則直接轉(zhuǎn)發(fā)所述用戶流量,并根據(jù)轉(zhuǎn)發(fā)的用戶流量更新用戶流表中的剩余流量,使得AAA模塊根據(jù)流量計(jì)費(fèi)周期,周期性地讀取用戶流表中用戶的剩余流量以后,可以根據(jù)讀取的剩余流量發(fā)送流量計(jì)費(fèi)請(qǐng)求報(bào)文實(shí)現(xiàn)計(jì)費(fèi)。
[0055]步驟206,在用戶剩余流量為O時(shí),采用剩余流量為O的流量控制策略進(jìn)行流量控制。
[0056]本步驟中,在剩余令牌數(shù)大于O時(shí),可以確定用戶的剩余流量大于0,因此轉(zhuǎn)發(fā)所述用戶流量??梢?jiàn),通過(guò)本步驟可以根據(jù)令牌桶中的剩余令牌數(shù)控制轉(zhuǎn)發(fā)用戶流量。
[0057]其中,承載大量用戶上線的計(jì)費(fèi)工作的NAS設(shè)備可以一邊執(zhí)行令牌桶創(chuàng)建流程一邊執(zhí)行流量轉(zhuǎn)發(fā)流程,換言之,NAS設(shè)備一邊根據(jù)流量計(jì)費(fèi)更新報(bào)文執(zhí)行令牌桶的創(chuàng)建流程,從而為剩余流量小于一個(gè)計(jì)費(fèi)周期的最大流量的各個(gè)用戶分別創(chuàng)建令牌桶,一邊在接收到用戶流量時(shí),如果已經(jīng)為相應(yīng)的用戶創(chuàng)建了令牌桶,則利用創(chuàng)建的令牌桶通過(guò)所述流量轉(zhuǎn)發(fā)流程控制所述用戶流量的轉(zhuǎn)發(fā)。
[0058]可見(jiàn),圖2所示流程在用戶剩余流量小于一個(gè)計(jì)費(fèi)周期最大流量時(shí),通過(guò)創(chuàng)建令牌桶,利用令牌桶來(lái)控制用戶的剩余流量,可以避免在下一計(jì)費(fèi)周期到達(dá)時(shí)用戶使用的流量超出允許流量的問(wèn)題,消除了計(jì)費(fèi)誤差。
[0059]而且,關(guān)于令牌桶的創(chuàng)建時(shí)機(jī),圖2所示流程在接收到流量計(jì)費(fèi)更新報(bào)文時(shí),判斷用戶的剩余流量是否小于一個(gè)計(jì)費(fèi)周期的最大流量,根據(jù)判斷結(jié)果確定是否創(chuàng)建令牌桶,因此,在一個(gè)計(jì)費(fèi)周期內(nèi)只需要檢測(cè)判斷一次用戶的剩余流量是否小于所述最大流量,不必實(shí)時(shí)檢測(cè)用戶的剩余流量,因此還能夠減小設(shè)備的性能壓力,從而承載大量用戶上線的計(jì)費(fèi)工作。
[0060]關(guān)于在用戶的令牌桶中剩余令牌的個(gè)數(shù)為O時(shí),采用的剩余流量為O的流量控制策略,作為示例性地,本發(fā)明實(shí)施例提出:
[0061]在第一種實(shí)施方式中,在用戶的令牌桶中剩余令牌的個(gè)數(shù)為O時(shí),立即刪除所述用戶的用戶流表,并發(fā)送流量計(jì)費(fèi)請(qǐng)求報(bào)文,其中,所述流量計(jì)費(fèi)請(qǐng)求報(bào)文中攜帶所述用戶的流量信息。
[0062]具體地,在用戶的令牌桶中令牌個(gè)數(shù)為O時(shí),所述令牌桶反饋通知消息,通知接入模塊刪除該用戶的用戶流表,并且,接入模塊向AAA模塊發(fā)送該用戶的流量信息,AAA模塊接收到接入模塊發(fā)送的用戶的流量信息后,發(fā)送流量計(jì)費(fèi)請(qǐng)求報(bào)文,其中攜帶所述用戶的流量信息。
[0063]由于目前都是由AAA模塊根據(jù)流量計(jì)費(fèi)周期,周期性的讀取接入模塊中的用戶流表,從而獲得用戶流量信息,然后發(fā)送流量計(jì)費(fèi)請(qǐng)求報(bào)文,因此,在用戶流量即將用完時(shí),會(huì)導(dǎo)致最后一個(gè)計(jì)費(fèi)周期內(nèi)用戶實(shí)際使用的流量大于用戶的剩余流量,造成計(jì)費(fèi)誤差。在該第一種方式中,一方面通過(guò)令牌桶感知用戶在最后一個(gè)計(jì)費(fèi)周期內(nèi)實(shí)際的流量使用情況,另一方面,在用戶將實(shí)際的剩余流量使用完畢以后,由接入模塊主動(dòng)通知AAA模塊用戶的流量信息,進(jìn)而發(fā)起流量計(jì)費(fèi)請(qǐng)求報(bào)文,使得AAA模塊不必等到流量計(jì)費(fèi)周期到達(dá)時(shí)才讀取用戶流量并發(fā)送流量計(jì)費(fèi)請(qǐng)求報(bào)文,通過(guò)上述兩方面的相互結(jié)合,能夠避免流量計(jì)費(fèi)誤差,而且,由于AAA模塊只需要按照原有的計(jì)費(fèi)周期讀取流量信息,不需要更改讀取周期,僅在最后一個(gè)計(jì)費(fèi)周期內(nèi),執(zhí)行接收來(lái)自接入模塊的流量信息的動(dòng)作,因此,也不會(huì)對(duì)設(shè)備造成性能壓力。
[0064]在第二種實(shí)施方式中,保留所述用戶的用戶流表和令牌桶,直至流量計(jì)費(fèi)周期到達(dá)時(shí),刪除所述用戶的用戶流表,并發(fā)送流量計(jì)費(fèi)請(qǐng)求報(bào)文,其中,所述流量計(jì)費(fèi)請(qǐng)求報(bào)文中攜帶所述用戶的流量信息。
[0065]具體地,在第二實(shí)施方式中,在用戶的令牌桶中令牌個(gè)數(shù)為O時(shí),接入模塊仍然保留所述用戶的用戶流表和令牌桶,直至流量計(jì)費(fèi)周期到達(dá)時(shí),AAA模塊讀取用戶流表,發(fā)現(xiàn)該用戶的剩余流量為0,則通知接入模塊刪除所述用戶的用戶流表,并且AAA模塊發(fā)送流量計(jì)費(fèi)請(qǐng)求報(bào)文。
[0066]在該第二種實(shí)施方式中,雖然在用戶的令牌桶中令牌個(gè)數(shù)為O時(shí),沒(méi)有刪除用戶流表,但是,由于相應(yīng)用戶的令牌桶仍然存在,因此,接收到該用戶的流量并且用戶流表匹配成功后,還需要通過(guò)令