文|李維賢,普磊,金泓,黃志明
基于并發(fā)處理結(jié)構(gòu)的寬帶智能認(rèn)證技術(shù)研究
文|李維賢,普磊,金泓,黃志明
目前在寬帶認(rèn)證鑒權(quán)領(lǐng)域,當(dāng)收到來(lái)自用戶的寬帶認(rèn)證鑒權(quán)請(qǐng)求后,會(huì)分配一個(gè)線程處理該請(qǐng)求,由線程順序執(zhí)行包括賬號(hào)密碼校驗(yàn)、有效期校驗(yàn)、余額校驗(yàn)、捆綁屬性校驗(yàn)等步驟,線程處理完一個(gè)鑒權(quán)請(qǐng)求后,獲取下一個(gè)鑒權(quán)請(qǐng)求接著處理。
由于認(rèn)證鑒權(quán)為順序執(zhí)行,需要執(zhí)行完最后一個(gè)步驟后才能夠得到認(rèn)證結(jié)果,效率低下,一旦遇到復(fù)雜業(yè)務(wù)流程就會(huì)持續(xù)占用該線程,處理時(shí)間過(guò)長(zhǎng),且進(jìn)程池、線程池內(nèi)資源不能夠釋放,降低系統(tǒng)的吞吐量;同時(shí),由于用戶在寬帶認(rèn)證過(guò)程中一旦遇到阻塞會(huì)反復(fù)請(qǐng)求認(rèn)證鑒權(quán),因此寬帶認(rèn)證鑒權(quán)需求量巨大,可能會(huì)導(dǎo)致報(bào)文隊(duì)列堵塞和積壓,降低系統(tǒng)的業(yè)務(wù)承載能力。
基于并發(fā)處理結(jié)構(gòu)的寬帶智能認(rèn)證技術(shù),結(jié)合了四層/七層交換技術(shù)、分布式對(duì)象技術(shù)(ICE)、應(yīng)用中間件技術(shù)、內(nèi)存數(shù)據(jù)庫(kù)技術(shù)、數(shù)據(jù)復(fù)制技術(shù)、數(shù)字簽名技術(shù)、數(shù)據(jù)挖掘技術(shù)、加權(quán)hash算法(PHash)、并發(fā)服務(wù)器技術(shù)、過(guò)濾網(wǎng)技術(shù)(Filtrate Net))等相關(guān)技術(shù),實(shí)現(xiàn)多進(jìn)程同時(shí)獲取消息隊(duì)列中的請(qǐng)求,非線性操作,可理想化為一次性處理一個(gè)通道的數(shù)據(jù),從而形成一站式智能化寬帶認(rèn)證功能,有效提升寬帶認(rèn)證處理效率。
寬帶認(rèn)證技術(shù)是AAA(認(rèn)證,授權(quán),計(jì)費(fèi))的初始步驟,AAA一般包括用戶終端、AAAClient、AAAServer和計(jì)費(fèi)軟件四個(gè)環(huán)節(jié),用戶終端與AAAClient之間的通信方式通常稱為"認(rèn)證方式",目前常用的寬帶認(rèn)證技術(shù)主要是PPPoE認(rèn)證技術(shù)。
PPPoE是利用以太網(wǎng)發(fā)送PPP包的傳輸方法和支持在同一以太網(wǎng)上建立多個(gè)PPP連接的接入技術(shù)。其結(jié)合了以太網(wǎng)和PPP連接的綜合屬性。以太網(wǎng)是一種廣播網(wǎng)絡(luò),其缺點(diǎn)是通訊雙方無(wú)法相互驗(yàn)證對(duì)方身份,通訊是不安全的。PPP協(xié)議提供了通訊雙方身份驗(yàn)證的功能,但是PPP協(xié)議是一種點(diǎn)對(duì)點(diǎn)的協(xié)議,協(xié)議中沒(méi)有提供地址信息。如果PPP應(yīng)用在以太網(wǎng)上,必須使用PPPoE再進(jìn)行一次封裝,PPPoE協(xié)議提供了在以太網(wǎng)廣播鏈路上進(jìn)行點(diǎn)對(duì)點(diǎn)通信的能力。
(一) 基本原理
并發(fā)處理結(jié)構(gòu)采用多進(jìn)程+多線程技術(shù),由進(jìn)程和線程交織形成矩陣模型,一個(gè)處理請(qǐng)求到達(dá)后,不再是簡(jiǎn)單的從池中一個(gè)進(jìn)程或線程來(lái)處理,處理完成后再處理下一個(gè),而是進(jìn)程獲取處理請(qǐng)求,再分段給線程處理,業(yè)務(wù)流程越復(fù)雜,處理線程就越多,但無(wú)論多復(fù)雜的業(yè)務(wù)一個(gè)處理請(qǐng)求MAX處理時(shí)間是確定的,通過(guò)多進(jìn)程的分散,處理能力成幾何級(jí)增加,最大限度利用資源;此結(jié)構(gòu)需要多通道技術(shù)支持,緩存的消息隊(duì)列不再是簡(jiǎn)單的先進(jìn)先出隊(duì)列模式,需要采用多通道對(duì)接業(yè)務(wù)進(jìn)程模式,不再是先進(jìn)先出結(jié)構(gòu),請(qǐng)求消息進(jìn)入通道后,有進(jìn)程做均分二段處理,段內(nèi)同樣做均分處理,如此遞歸直至無(wú)法均分,獲取到的處理請(qǐng)求即為當(dāng)前處理請(qǐng)求,可以實(shí)現(xiàn)多進(jìn)程同時(shí)獲取消息隊(duì)列中的請(qǐng)求,非線性操作,可理想化為一次性處理一個(gè)通道的數(shù)據(jù)。
(二)核心技術(shù)
1、基于任務(wù)的帶多重異步的同步技術(shù)
基于任務(wù)的異步GDBM查詢處理, 帶多重異步的同步指通過(guò)異步查詢內(nèi)存數(shù)據(jù)庫(kù)中不同分類的數(shù)據(jù),最后回調(diào)第一個(gè)任務(wù)的一個(gè)函數(shù),如收到用戶請(qǐng)求后,異步分別查詢用戶賬號(hào),用戶密碼,用戶狀態(tài),用戶使用區(qū)域,用戶線路綁定信息,用戶有效期等等信息的有效性,最后返回?cái)?shù)據(jù)給第一個(gè)任務(wù)函數(shù)。
認(rèn)證鑒權(quán)時(shí)候, 需要從AA 的Corba服務(wù)查詢大量的不同分類的數(shù)據(jù).讓每個(gè)Task矩陣執(zhí)行, 然后通過(guò)一個(gè)機(jī)制, 讓所有任務(wù)完成后, 回調(diào)第一個(gè)任務(wù)的一個(gè)函數(shù). 這樣就無(wú)需實(shí)現(xiàn)很多粘合操作,避免了反復(fù)調(diào)用消耗資源。
2、基于protobuf反射機(jī)制的自動(dòng)合成
基于protobuf反射機(jī)制的自動(dòng)合成指通過(guò)protobuf反射機(jī)制及結(jié)構(gòu)體序列化好的buffer自動(dòng)填充字段,實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入。
radius原來(lái)的處理框架為同步阻塞方式,任何的函數(shù)需要所有的功能執(zhí)行完成后才能夠返回,在結(jié)合lua腳本后,lua腳本能夠?yàn)閼?yīng)用程序提供靈活的擴(kuò)展和定制功能,實(shí)現(xiàn)異步處理方式,如原radius處理流程需要對(duì)認(rèn)證請(qǐng)求中的校驗(yàn)信息進(jìn)行線性處理,一個(gè)請(qǐng)求處理需要較長(zhǎng)時(shí)間且線性處理后的返回信息不全,而基于lua的機(jī)制的radius框架,能夠?qū)λ行r?yàn)信息同步處理,且返回為全量信息。
使用了這項(xiàng)核心技術(shù)后,能夠在有限的硬件資源條件下,通過(guò)內(nèi)存數(shù)據(jù)庫(kù)異步處理,數(shù)據(jù)自動(dòng)合成、資源互聯(lián)、框架優(yōu)化、隊(duì)列分拆等技術(shù),實(shí)現(xiàn)大數(shù)據(jù)量的并發(fā)處理,硬件資源的充分利用。
3 、服務(wù)器互聯(lián)及識(shí)別
基于一些簡(jiǎn)單的配置就可以將多臺(tái)資源, 同種類的不同資源互相連接起來(lái),資源連接后,邏輯端可以進(jìn)行廣播或者單獨(dú)發(fā)送等。
4、基于lua的機(jī)制的radius框架
radius處理,本身都是一個(gè)同步阻塞過(guò)程, 而這個(gè)lua框架是異步方式來(lái)做, 比起以前的本地GM系統(tǒng), 這塊的設(shè)計(jì)是非常大的進(jìn)步,現(xiàn)在正在設(shè)計(jì)基于golang的服務(wù)器框架,外加lua語(yǔ)言編寫(xiě)的本地XM框架,實(shí)現(xiàn)radius同步和異步的結(jié)合。
如現(xiàn)有GM系統(tǒng)中radius處理流程需要對(duì)認(rèn)證請(qǐng)求中的校驗(yàn)信息進(jìn)行線性處理,一個(gè)請(qǐng)求處理需要較長(zhǎng)時(shí)間且線性處理后的返回信息不全,而基于lua的機(jī)制的radius框架,能夠?qū)λ行r?yàn)信息同步處理,且返回為全量信息。
使用了基于lua機(jī)制的radius框架后,能夠在有限的硬件資源條件下,通過(guò)內(nèi)存數(shù)據(jù)庫(kù)異步處理,數(shù)據(jù)自動(dòng)合成、資源互聯(lián)、框架優(yōu)化、隊(duì)列分拆等技術(shù),實(shí)現(xiàn)大數(shù)據(jù)量的并發(fā)處理,硬件資源的充分利用。
(三) 實(shí)現(xiàn)流程
用戶接入NAS,NAS使用Access-Require數(shù)據(jù)包向RADIUS服務(wù)器提交用戶信息,包括用戶名、密碼等相關(guān)信息,其中用戶密碼是經(jīng)過(guò)MD5加密的,雙方使用共享密鑰,這個(gè)密鑰不經(jīng)過(guò)網(wǎng)絡(luò)傳播;RADIUS服務(wù)器對(duì)用戶名和密碼的合法性進(jìn)行檢驗(yàn),必要時(shí)可以提出一個(gè)Challenge,要求進(jìn)一步對(duì)用戶認(rèn)證,也可以對(duì)NAS進(jìn)行類似的認(rèn)證;如果合法,給NAS返回Access-Accept數(shù)據(jù)包,允許用戶進(jìn)行下一步工作,否則返回Access-Reject數(shù)據(jù)包,拒絕用戶訪問(wèn);如果允許訪問(wèn),NAS向RADIUS服務(wù)器提出計(jì)費(fèi)請(qǐng)求Account-Require,RADIUS服務(wù)器響應(yīng)Account-Accept,對(duì)用戶的計(jì)費(fèi)開(kāi)始,同時(shí)用戶可以進(jìn)行自己的相關(guān)操作。

通過(guò)并發(fā)處理結(jié)構(gòu)的寬帶智能認(rèn)證方法,在業(yè)務(wù)請(qǐng)求經(jīng)過(guò)時(shí)不再是單一的順序(例如先進(jìn)先出隊(duì)列)處理,也不是批量處理(例如多線程循環(huán)處理),而是采用矩陣模式,縱向維度是進(jìn)程分層,橫向維度是線程meta細(xì)化和多通道,能夠?qū)崿F(xiàn)大數(shù)據(jù)量大并發(fā)處理的同時(shí),處理復(fù)雜業(yè)務(wù),以原始meta處理單元為基礎(chǔ),通過(guò)多進(jìn)程分層獲取業(yè)務(wù)請(qǐng)求,再通過(guò)多線程分多通道處理,每個(gè)通道內(nèi)運(yùn)行的是meta最小處理單元,將復(fù)雜業(yè)務(wù)劃小為多個(gè)meta處理單元,每個(gè)處理請(qǐng)求的maxtime消耗為固定時(shí)間,不會(huì)導(dǎo)致進(jìn)程或者線程資源長(zhǎng)期占用不能釋放。
通過(guò)該方法的運(yùn)用不僅僅是提高效率,還解決了復(fù)雜業(yè)務(wù)的處理,同時(shí)最大限度的利用資源,減少資源調(diào)度損耗,在相同硬件環(huán)境下,提供更高處理效能,且結(jié)構(gòu)易于擴(kuò)展和調(diào)整,擴(kuò)容不僅僅是增加機(jī)器,可以從結(jié)構(gòu)優(yōu)化上調(diào)整,結(jié)構(gòu)維度上可以擴(kuò)展為3維、4維處理,針對(duì)不同主機(jī)環(huán)境采用不同的維度,例如X86芯片則以線程處理業(yè)務(wù)量維度為主,IBM Power芯片則以進(jìn)程吞度量維度為主。
作者單位:中國(guó)電信云南分公司