本公開(kāi)涉及通信網(wǎng)絡(luò)
技術(shù)領(lǐng)域:
:,尤其涉及一種基于數(shù)據(jù)平面開(kāi)發(fā)套件(dataplanedevelopmentkit,簡(jiǎn)稱dpdk)的url認(rèn)證重定向的系統(tǒng)及方法。
背景技術(shù):
::隨著網(wǎng)絡(luò)技術(shù)的普及和發(fā)展,網(wǎng)絡(luò)使用愈來(lái)愈頻繁,為了保障網(wǎng)絡(luò)的安全,同時(shí)也為網(wǎng)絡(luò)應(yīng)用提供身份認(rèn)證、訪問(wèn)控制等安全服務(wù),有必要建立用戶和網(wǎng)絡(luò)的信譽(yù)服務(wù)系統(tǒng)。而且,面對(duì)日益增長(zhǎng)的龐大網(wǎng)絡(luò)流量,網(wǎng)關(guān)需要處理的數(shù)據(jù)量也越來(lái)越大,流量的實(shí)時(shí)處理性能要求越高。通常url認(rèn)證重定向系統(tǒng)包括訪問(wèn)的第三方系統(tǒng)和重定向url服務(wù)器。第三方系統(tǒng)一般是用戶將要訪問(wèn)的地址,重定向url服務(wù)器是第三方系統(tǒng)重定向指向的地址。此架構(gòu)下,該系統(tǒng)部署需要有個(gè)第三方系統(tǒng)的接入,而且只有用戶訪問(wèn)才會(huì)出現(xiàn)重定向,因此該重定向系統(tǒng)適用于基于網(wǎng)頁(yè)到網(wǎng)頁(yè)的重定向。但是針對(duì)于網(wǎng)絡(luò)登錄,尤其是計(jì)費(fèi)網(wǎng)關(guān)類的使用,重定向系統(tǒng)需要透明接入,同時(shí)要求當(dāng)用戶端打開(kāi)瀏覽器的時(shí)候,彈出登錄頁(yè)面以便于用戶上網(wǎng)的身份認(rèn)證。因此需要一種基于網(wǎng)關(guān)的url認(rèn)證重定向系統(tǒng)來(lái)實(shí)現(xiàn)。目前,基于網(wǎng)關(guān)實(shí)現(xiàn)的url認(rèn)證重定向系統(tǒng)是通過(guò)linux內(nèi)核實(shí)現(xiàn),但是由于內(nèi)核本身沒(méi)有針對(duì)大流量情景進(jìn)行專門優(yōu)化,比如頻繁地網(wǎng)卡中斷會(huì)降低cpu使用率等,導(dǎo)致內(nèi)核處理大流量數(shù)據(jù)性能一般,當(dāng)網(wǎng)絡(luò)使用頻繁,數(shù)據(jù)量很大的時(shí)候,性能受限,因此尋求一個(gè)適用于常見(jiàn)硬件平臺(tái)同時(shí)性能優(yōu)異的開(kāi)發(fā)技術(shù)成為必然。公開(kāi)內(nèi)容(一)要解決的技術(shù)問(wèn)題本公開(kāi)提供了一種基于dpdk的url認(rèn)證的重定向系統(tǒng)及方法,以至少部分解決以上所提出的技術(shù)問(wèn)題。(二)技術(shù)方案根據(jù)本公開(kāi)的一個(gè)方面,提供了一種基于dpdk的url認(rèn)證的重定向系統(tǒng),該系統(tǒng)在部署的dpdk環(huán)境下運(yùn)行,包括:控制網(wǎng)關(guān),該控制網(wǎng)管包括dpdk庫(kù),該控制網(wǎng)關(guān)用于基于dpdk庫(kù)接收并解析及轉(zhuǎn)發(fā)用戶端發(fā)送的報(bào)文:當(dāng)用戶端已經(jīng)被授權(quán)登錄時(shí),基于dpdk庫(kù)轉(zhuǎn)發(fā)報(bào)文,使用戶直接連接外網(wǎng);當(dāng)用戶端未被授權(quán)登錄且用戶端與控制網(wǎng)關(guān)處于已連接狀態(tài)時(shí),將重定向url添加到回復(fù)報(bào)文并基于dpdk庫(kù)轉(zhuǎn)發(fā)至用戶端。在本公開(kāi)一些實(shí)施例中,所述dpdk庫(kù)包括:接收函數(shù)模塊,用于直接從網(wǎng)卡接口讀取完整鏈路層報(bào)文,存儲(chǔ)在dpdk結(jié)構(gòu)體變量rte_mbuf中,并調(diào)用讀取函數(shù)模塊讀取二層、三層、四層報(bào)文信息;讀取函數(shù)模塊,用于處理由dpdk結(jié)構(gòu)體變量rte_mbuf傳入的接收數(shù)據(jù),并分別將ip類型、二層、三層、四層頭部指針傳入相應(yīng)的頭指針結(jié)構(gòu)體變量。在本公開(kāi)一些實(shí)施例中,所述dpdk庫(kù)還包括:處理函數(shù)模塊,用于解析所述接收函數(shù)模塊讀取的報(bào)文信息,并對(duì)報(bào)文信息進(jìn)行處理,獲得需要發(fā)送的報(bào)文信息;發(fā)送函數(shù)模塊,用于將通過(guò)所述處理函數(shù)模塊獲得的報(bào)文通過(guò)發(fā)送網(wǎng)卡接口發(fā)送出去。在本公開(kāi)一些實(shí)施例中,所述的重定向系統(tǒng)還包括:webportal服務(wù)器,連接到控制網(wǎng)關(guān),作為用戶端重定向時(shí)訪問(wèn)的url地址的服務(wù)器,當(dāng)用戶端未被授權(quán)登錄且用戶端與控制網(wǎng)關(guān)處于未連接狀態(tài),需要重定向時(shí),提供網(wǎng)頁(yè)供用戶進(jìn)行登錄,并判斷用戶登錄是否成功,同時(shí)將登錄結(jié)果發(fā)送至控制網(wǎng)關(guān)。在本公開(kāi)一些實(shí)施例中,控制網(wǎng)關(guān)中包括:自定義結(jié)構(gòu)體變量gtable,存儲(chǔ)已授權(quán)的用戶端ip,以及自定義結(jié)構(gòu)體變量conn_item,存儲(chǔ)尚未授權(quán)用戶ip連接信息。根據(jù)本公開(kāi)的另一個(gè)方面,提供了一種基于dpdk的url認(rèn)證的重定向方法,所述方法包括如下步驟:步驟a,控制網(wǎng)關(guān)獲取用戶發(fā)送的tcp請(qǐng)求連接報(bào)文,調(diào)用dpdk庫(kù)的接收函數(shù)直接從網(wǎng)卡獲取二層數(shù)據(jù),并用dpdk庫(kù)的處理函數(shù)解析報(bào)文信息;步驟b,判斷用戶是否授權(quán),若該用戶尚未授權(quán),則進(jìn)行報(bào)文重定向,則轉(zhuǎn)至步驟c;若用戶已授權(quán),則直接轉(zhuǎn)發(fā)報(bào)文;步驟c,判斷用戶連接狀態(tài),若用戶狀態(tài)為未連接,則控制網(wǎng)關(guān)偽裝成目的ip與用戶ip進(jìn)行三次握手,當(dāng)握手成功后,該用戶ip標(biāo)記為已連接狀態(tài);若用戶狀態(tài)為已連接,轉(zhuǎn)至步驟d;步驟d,握手成功后,當(dāng)控制網(wǎng)關(guān)接收到用戶端再次發(fā)送http請(qǐng)求報(bào)文后,判斷該用戶ip為已連接狀態(tài),將重定向的url添加至回復(fù)報(bào)文中發(fā)送至用戶端;步驟e,控制網(wǎng)關(guān)得到報(bào)文后轉(zhuǎn)發(fā),用戶端訪問(wèn)webportal服務(wù)器,到指定的url頁(yè)面并登錄,若登錄成功,webportal服務(wù)器將登錄結(jié)果返回至控制網(wǎng)關(guān),此時(shí)控制網(wǎng)關(guān)標(biāo)記該用戶ip為已授權(quán)狀態(tài)。在本公開(kāi)一些實(shí)施例中,所述步驟b中,當(dāng)控制網(wǎng)關(guān)分析接收?qǐng)?bào)文的源ip時(shí),首先在gtable中查找,判斷是否該所接收的用戶ip是否處于已授權(quán)狀態(tài)。在本公開(kāi)一些實(shí)施例中,執(zhí)行所述步驟b過(guò)程中,在用戶為已授權(quán)狀態(tài)下,當(dāng)用戶超時(shí)未傳輸或者會(huì)話超時(shí)后,則清除gtable中的用戶授權(quán)信息。在本公開(kāi)一些實(shí)施例中,判斷用戶是否超時(shí),由該重定向系統(tǒng)中的計(jì)時(shí)器計(jì)算,當(dāng)用戶上一次發(fā)消息的時(shí)間加上超時(shí)時(shí)間超過(guò)了現(xiàn)在的時(shí)間,表示用戶會(huì)話已超時(shí),用戶的會(huì)話超時(shí)時(shí)間和可以由系統(tǒng)靈活設(shè)置。在本公開(kāi)一些實(shí)施例中,在所述步驟c中進(jìn)一步包括,當(dāng)控制網(wǎng)關(guān)偽裝成目的ip與用戶端進(jìn)行tcp三次握手時(shí),tcp握手的狀態(tài)信息存儲(chǔ)在conn_item中,包括目的ip及源ip,完全建立成功后在conn_item中將該用戶ip設(shè)置為已連接狀態(tài)。在本公開(kāi)一些實(shí)施例中,連接狀態(tài)又分為:tcp_listen,tcp_syn_recv,tcp_established和tcp_closed:當(dāng)用戶ip第一次發(fā)送報(bào)文,控制網(wǎng)關(guān)將該用ip置為tcp_listen狀態(tài),并添加至conn_item中;偽裝成目的ip組建成tcp握手回復(fù)報(bào)文發(fā)送至用戶ip,此時(shí)將用戶ip置為tcp_syn_recv;當(dāng)用戶ip發(fā)送tcp握手確認(rèn),控制網(wǎng)關(guān)將該用戶ip狀態(tài)置為tcp_established,表示連接成功;當(dāng)用戶ip超時(shí)未發(fā)送數(shù)據(jù)或者發(fā)送斷開(kāi)請(qǐng)求,控制網(wǎng)關(guān)回復(fù)用戶ip并置為tcp_closed。在本公開(kāi)一些實(shí)施例中,在所述步驟e中進(jìn)一步包括:控制網(wǎng)關(guān)將重定向url附在報(bào)文后發(fā)送至源ip,直至源ip合法登錄后,控制網(wǎng)關(guān)將該源ip記錄在gtable中,表示該源ip處于已授權(quán)狀態(tài),url重定向地址也可以由系統(tǒng)指定;控制網(wǎng)關(guān)在用戶訪問(wèn)重定向url地址時(shí)作轉(zhuǎn)發(fā)作用,用戶端與webportal服務(wù)器首先進(jìn)行tcp三次握手,握手成功后,用戶獲取到url頁(yè)面并進(jìn)行登錄,若用戶成功登錄則將該用戶ip標(biāo)記為已授權(quán)狀態(tài)。在本公開(kāi)一些實(shí)施例中,執(zhí)行所述步驟a~d過(guò)程中,若用戶端發(fā)送釋放連接給上述的目的ip,則控制網(wǎng)關(guān)偽裝成目的ip與該用戶四次揮手?jǐn)嚅_(kāi)tcp連接,揮手的狀態(tài)保存在存儲(chǔ)用戶連接信息的conn_item中。在本公開(kāi)一些實(shí)施例中,執(zhí)行所述步驟a~d過(guò)程中,若用戶端超時(shí)未發(fā)送消息給上述目的ip,則控制網(wǎng)關(guān)將該用戶連接信息標(biāo)記從conn_item中刪除。(三)有益效果從上述技術(shù)方案可以看出,本公開(kāi)基于dpdk的url認(rèn)證重定向的系統(tǒng)及方法至少具有以下有益效果其中之一:(1)通過(guò)引入dpdk來(lái)實(shí)現(xiàn)url認(rèn)證重定向,使得控制網(wǎng)關(guān)在收發(fā)報(bào)文和處理性能上明顯提高,在收發(fā)報(bào)文時(shí),控制網(wǎng)關(guān)通過(guò)調(diào)用dpdk的收發(fā)函數(shù)直接從網(wǎng)卡即硬件上獲取二層報(bào)文或發(fā)送報(bào)文,繞過(guò)linux內(nèi)核直接和硬件進(jìn)行交互,避免了內(nèi)存的拷貝,節(jié)約了數(shù)據(jù)處理時(shí)間,提高了計(jì)算機(jī)性能;(2)控制網(wǎng)關(guān)通過(guò)監(jiān)控接收?qǐng)?bào)文的源ip來(lái)判斷用戶ip是否需要重定向,在流量出網(wǎng)之前進(jìn)行過(guò)濾,避免了其它用戶操作,可以解決用戶首次上網(wǎng)需要進(jìn)行賬號(hào)登錄,實(shí)現(xiàn)網(wǎng)關(guān)計(jì)費(fèi)的問(wèn)題,整個(gè)重定向接入過(guò)程對(duì)用戶完全透明,提升了用戶體驗(yàn);(3)由于系統(tǒng)過(guò)濾操作是基于用戶進(jìn)行http訪問(wèn),即需要瀏覽網(wǎng)頁(yè)等其它http協(xié)議操作時(shí)才會(huì)進(jìn)行過(guò)濾,因而不會(huì)排除其它的協(xié)議使用。附圖說(shuō)明圖1為本公開(kāi)實(shí)施例是本公開(kāi)的基于dpdk的url認(rèn)證的重定向系統(tǒng)的模塊架構(gòu)圖。圖2是本公開(kāi)的基于dpdk的url認(rèn)證的重定向系統(tǒng)操作流程圖。具體實(shí)施方式本公開(kāi)提供了一種基于dpdk的url認(rèn)證重定向的系統(tǒng)及方法,通過(guò)引入dpdk來(lái)實(shí)現(xiàn)url認(rèn)證重定向,使得控制網(wǎng)關(guān)在收發(fā)報(bào)文和處理性能上明顯提高。在收發(fā)報(bào)文時(shí),控制網(wǎng)關(guān)通過(guò)調(diào)用dpdk的收發(fā)函數(shù)直接從網(wǎng)卡即硬件上獲取二層報(bào)文或發(fā)送報(bào)文,避免了內(nèi)存的拷貝,節(jié)約了數(shù)據(jù)處理時(shí)間??刂凭W(wǎng)關(guān)通過(guò)判斷用戶是否已登錄來(lái)決定是否需要重定向,分為未授權(quán)和已授權(quán)。當(dāng)用戶尚未授權(quán)時(shí),控制網(wǎng)關(guān)會(huì)重定向至webportal服務(wù)器;當(dāng)用戶登錄成功后,控制網(wǎng)關(guān)標(biāo)記該用戶為已授權(quán)狀態(tài),當(dāng)用戶再次發(fā)送報(bào)文時(shí),控制網(wǎng)關(guān)直接將報(bào)文轉(zhuǎn)發(fā)。為使本公開(kāi)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本公開(kāi)進(jìn)一步詳細(xì)說(shuō)明。本公開(kāi)某些實(shí)施例于后方將參照所附附圖做更全面性地描述,其中一些但并非全部的實(shí)施例將被示出。實(shí)際上,本公開(kāi)的各種實(shí)施例可以許多不同形式實(shí)現(xiàn),而不應(yīng)被解釋為限于此數(shù)所闡述的實(shí)施例;相對(duì)地,提供這些實(shí)施例使得本公開(kāi)滿足適用的法律要求。在本公開(kāi)的第一個(gè)示例性實(shí)施例中,提供了一種基于dpdk的url認(rèn)證的重定向系統(tǒng)。圖1為本公開(kāi)第一實(shí)施例基于dpdk的url認(rèn)證的重定向系統(tǒng)的模塊架構(gòu)圖,其表示出了控制網(wǎng)關(guān)、webportal服務(wù)器、出口路由器及用戶所在的內(nèi)網(wǎng)和訪問(wèn)的外網(wǎng)的連接關(guān)系。如圖1所示,本公開(kāi)基于dpdk的url認(rèn)證重定向的系統(tǒng)包括:用戶端,控制網(wǎng)關(guān)和webportal服務(wù)器,其中,用戶端作為瀏覽網(wǎng)頁(yè)的訪問(wèn)端,包括出口路由器(router);控制網(wǎng)關(guān)是用戶出網(wǎng)經(jīng)過(guò)的交換機(jī),通過(guò)監(jiān)控接收?qǐng)?bào)文的源ip來(lái)判斷用戶ip是否需要重定向,若該源ip未授權(quán),則控制網(wǎng)關(guān)對(duì)用戶端進(jìn)行重定向;若該源ip已授權(quán),控制網(wǎng)關(guān)將報(bào)文直接轉(zhuǎn)發(fā);webportal服務(wù)器是重定向url指向地址的服務(wù)器。所述重定向系統(tǒng)基于dpdk實(shí)現(xiàn),該系統(tǒng)需要在dpdk環(huán)境下運(yùn)行,因此部署該系統(tǒng)之前需要先部署dpdk。系統(tǒng)不使用內(nèi)核協(xié)議棧的函數(shù)而是調(diào)用dpdk庫(kù)函數(shù)實(shí)現(xiàn)對(duì)報(bào)文的接收、處理和發(fā)送。dpdk直接和硬件進(jìn)行交涉,并對(duì)包處理的流程進(jìn)行了大量的優(yōu)化,尤其當(dāng)處理的數(shù)據(jù)報(bào)文很多時(shí),dpdk的處理速度更加明顯,提高了計(jì)算機(jī)的性能。以下分別對(duì)本實(shí)施例基于dpdk的url認(rèn)證重定向系統(tǒng)的各個(gè)組成部分進(jìn)行詳細(xì)描述??刂凭W(wǎng)關(guān)(gateway),連接用戶端與外網(wǎng),是用戶出網(wǎng)經(jīng)過(guò)的交換機(jī),用于監(jiān)聽(tīng)所有總的數(shù)據(jù)流,接收?qǐng)?bào)文并進(jìn)行相應(yīng)的數(shù)據(jù)分析處理和轉(zhuǎn)發(fā)。當(dāng)尚未授權(quán)的用戶發(fā)出tcp請(qǐng)求時(shí),控制網(wǎng)關(guān)偽裝成目的ip與用戶端進(jìn)行tcp握手并返回重定向url用戶端;當(dāng)用戶已授權(quán)時(shí),控制網(wǎng)關(guān)直接將報(bào)文轉(zhuǎn)發(fā)。這樣,通過(guò)在流量出網(wǎng)之前進(jìn)行過(guò)濾,同時(shí)避免了其它用戶操作,實(shí)現(xiàn)了系統(tǒng)的透明插入。該控制網(wǎng)關(guān)不會(huì)影響其他設(shè)備的操作,同時(shí),該控制網(wǎng)關(guān)基于dpdk庫(kù)來(lái)操作,系統(tǒng)性能更優(yōu),處理效率和轉(zhuǎn)發(fā)效率更高。但是,該過(guò)濾操作是基于用戶進(jìn)行http訪問(wèn),也就是需要瀏覽網(wǎng)頁(yè)等其它http協(xié)議操作時(shí)才會(huì)進(jìn)行過(guò)濾,所以不會(huì)排除其它的協(xié)議使用。所述dpdk庫(kù)包括:接收函數(shù)模塊,用于直接從網(wǎng)卡接口讀取完整鏈路層報(bào)文,存儲(chǔ)在dpdk結(jié)構(gòu)體變量rte_mbuf中,并調(diào)用所述讀取函數(shù)模塊讀取二層、三層、四層報(bào)文信息;讀取函數(shù)模塊,用于處理由dpdk結(jié)構(gòu)體變量rte_mbuf傳入的接收數(shù)據(jù),并分別將ip類型、二層、三層、四層頭部指針傳入結(jié)構(gòu)體變量。所述dpdk庫(kù)還包括:處理函數(shù)模塊,用于解析所述接收函數(shù)模塊讀取的報(bào)文信息,并對(duì)報(bào)文信息進(jìn)行處理,獲得需要發(fā)送的報(bào)文信息;發(fā)送函數(shù)模塊,用于將通過(guò)所述處理函數(shù)模塊獲得的報(bào)文通過(guò)發(fā)送網(wǎng)卡接口發(fā)送出去??刂凭W(wǎng)關(guān)控制用戶ip處于未授權(quán)和已授權(quán)狀態(tài),未授權(quán)表示用戶尚未登錄,需要先登錄賬號(hào),因此控制網(wǎng)關(guān)會(huì)重定向至webportal服務(wù)器;而已授權(quán)狀態(tài)表示用戶已登錄,此時(shí)控制網(wǎng)關(guān)作為交換機(jī)直接將數(shù)據(jù)報(bào)文發(fā)送至目的ip。已授權(quán)的用戶端ip存儲(chǔ)于gtable中,而尚未授權(quán)的用戶ip連接信息存儲(chǔ)于conn_item中。初始化的時(shí)候,控制網(wǎng)關(guān)需要對(duì)寫入重定向url,超時(shí)時(shí)間以及記錄已授權(quán)用戶ip的信息的gtable和記錄需要連接用戶ip的信息的conn_item的變量進(jìn)行初始化。當(dāng)用戶登錄成功后,該用戶ip信息添加至gtable中,表示該用戶ip已被標(biāo)記為授權(quán)狀態(tài);若用戶尚未登錄,登錄的過(guò)程存儲(chǔ)在conn_item中,標(biāo)記該用戶所處的狀態(tài)。用戶的實(shí)時(shí)狀態(tài)除了由用戶自己發(fā)送,另一方面由該系統(tǒng)的定時(shí)查看來(lái)實(shí)時(shí)更新用戶的狀態(tài)??刂凭W(wǎng)關(guān)使用dpdk庫(kù)的接收函數(shù)直接從網(wǎng)卡接口讀取完整鏈路層報(bào)文,存儲(chǔ)在dpdk結(jié)構(gòu)體rte_mbuf變量中,并使用dpdk庫(kù)的讀取函數(shù)模塊讀取二層、三層、四層報(bào)文信息并將獲得的報(bào)文通過(guò)dpdk庫(kù)的發(fā)送函數(shù)從指定網(wǎng)卡接口發(fā)送出去。在使用dpdk接收?qǐng)?bào)文和發(fā)送報(bào)文時(shí)不使用中斷而使用輪詢方式的方法,避免了數(shù)據(jù)報(bào)文過(guò)多時(shí),中斷次數(shù)過(guò)多,從而節(jié)省了大量不必要的時(shí)間。webportal服務(wù)器連接到控制網(wǎng)關(guān),是url重定向指向地址的服務(wù)器,負(fù)責(zé)和請(qǐng)求登錄的用戶響應(yīng)。當(dāng)用戶首次上網(wǎng)尚未登錄時(shí),用戶需要先重定向至webportal服務(wù)器的網(wǎng)頁(yè)進(jìn)行登錄,并判斷用戶登錄是否成功,同時(shí)將登錄結(jié)果發(fā)送至控制網(wǎng)關(guān)。當(dāng)用戶訪問(wèn)webportal服務(wù)器時(shí),仍然需要三次握手,進(jìn)而進(jìn)行http請(qǐng)求。同時(shí),當(dāng)用戶輸入賬號(hào)和密碼登錄時(shí),該服務(wù)器需要對(duì)用戶的賬號(hào)輸入進(jìn)行檢查,查看是否賬號(hào)是否合法,若登錄合法,則將登錄結(jié)果發(fā)送至控制網(wǎng)關(guān)。優(yōu)選地,控制網(wǎng)關(guān)需連接在出口路由器與外網(wǎng)之間,在用戶報(bào)文發(fā)出之前進(jìn)行過(guò)濾,判斷用戶需要重定向還是轉(zhuǎn)發(fā)至外網(wǎng)。webportal服務(wù)器需要與控制網(wǎng)關(guān)連接,是控制網(wǎng)關(guān)指向的重定向url地址。但是,本公開(kāi)并不限于具體的連接方式,現(xiàn)有的其他各種連接方式均可應(yīng)用于本公開(kāi)中。尚未登錄的用戶瀏覽網(wǎng)頁(yè),會(huì)發(fā)送tcp的請(qǐng)求連接報(bào)文,控制網(wǎng)關(guān)會(huì)偽裝成用戶訪問(wèn)的目的ip與該用戶端進(jìn)行tcp三次握手。當(dāng)控制網(wǎng)關(guān)偽裝成目的ip與用戶端進(jìn)行tcp三次握手時(shí),tcp握手的狀態(tài)信息存儲(chǔ)在conn_item中,包括目的ip,源ip等其他信息,完全建立成功后將該用戶ip設(shè)置為已連接狀態(tài)。握手成功后,控制網(wǎng)關(guān)將該用戶ip標(biāo)記為已連接狀態(tài)。用戶與控制網(wǎng)關(guān)tcp連接成功后,用戶端繼續(xù)向上述目的ip發(fā)送http請(qǐng)求報(bào)文,控制網(wǎng)關(guān)接收到該請(qǐng)求后,判斷該ip狀態(tài)為已連接,會(huì)偽裝成目的ip向用戶端返回一個(gè)重定向url。用戶端訪問(wèn)該url地址的webportal服務(wù)器,服務(wù)器響應(yīng),當(dāng)用戶端登錄賬號(hào)和密碼后,控制網(wǎng)關(guān)設(shè)置該用戶ip為已授權(quán)狀態(tài)。當(dāng)用戶端向上述目的ip發(fā)送釋放連接報(bào)文時(shí),控制網(wǎng)關(guān)會(huì)繼續(xù)偽裝成目的ip與用戶端進(jìn)行四次揮手直至斷開(kāi)。揮手的狀態(tài)仍然保存在存儲(chǔ)用戶連接信息的conn_item中。當(dāng)用戶登錄成功后,控制網(wǎng)關(guān)將該用戶端的信息添加至gtable中,表示該用戶被設(shè)置為ip授權(quán)狀態(tài)。當(dāng)控制網(wǎng)關(guān)分析接收?qǐng)?bào)文的源ip時(shí),首先在gtable中查找,判斷是否該所接收的用戶ip是否處于已授權(quán)狀態(tài)。判斷用戶為已登錄狀態(tài)后,控制網(wǎng)關(guān)對(duì)接收到的報(bào)文不作處理直接從指定端口轉(zhuǎn)發(fā)。當(dāng)用戶與控制網(wǎng)關(guān)(偽目的ip)連接成功后,用戶向控制網(wǎng)關(guān)發(fā)送斷開(kāi)請(qǐng)求時(shí),控制網(wǎng)關(guān)將該用戶ip從gtable中刪除,表示用戶處于未授權(quán)狀態(tài)。當(dāng)用戶超時(shí)未傳輸或者會(huì)話超時(shí)后,控制網(wǎng)關(guān)將該用戶ip信息的授權(quán)信息或者連接信息標(biāo)記刪除,即將該用戶ip從conn_item或者gtable中刪除。用戶的會(huì)話超時(shí)時(shí)間和可以由系統(tǒng)靈活設(shè)置,同時(shí)url重定向地址也可以由系統(tǒng)指定。為了更加精確的管理用戶ip,當(dāng)連接過(guò)程中用戶ip超時(shí)未發(fā)送或者會(huì)話超時(shí),控制網(wǎng)關(guān)會(huì)將該用戶ip信息從conn_item中刪除。在運(yùn)行的過(guò)程中,控制網(wǎng)關(guān)會(huì)定時(shí)查看是否有用戶ip超時(shí)未發(fā)送數(shù)據(jù),將超時(shí)的用戶ip信息從conn_item中釋放,確保了當(dāng)用戶ip連接狀態(tài)的實(shí)時(shí)性。至此,本公開(kāi)第一實(shí)施例基于dpdk的url認(rèn)證重定向的系統(tǒng)介紹完畢。在本公開(kāi)的第二個(gè)示例性實(shí)施例中,提供了一種基于dpdk的url認(rèn)證重定向的方法。圖2是本實(shí)施例基于dpdk的url認(rèn)證重定向系統(tǒng)的具體操作方法的流程圖。下面參照?qǐng)D2來(lái)說(shuō)明本公開(kāi)的基于dpdk的url認(rèn)證重定向系統(tǒng)的具體操作方法的流程。如圖2所示,重定向方法包括依次執(zhí)行的如下步驟:步驟a,控制網(wǎng)關(guān)獲取用戶發(fā)送的tcp請(qǐng)求連接報(bào)文,調(diào)用dpdk庫(kù)的接收函數(shù)直接從網(wǎng)卡獲取二層數(shù)據(jù),并用dpdk庫(kù)的處理函數(shù)解析報(bào)文信息。在所述步驟a中,該系統(tǒng)從網(wǎng)卡獲取數(shù)據(jù)不使用linux內(nèi)核棧函數(shù),直接從網(wǎng)卡獲取二層數(shù)據(jù)。通過(guò)調(diào)用dpdk庫(kù)的數(shù)據(jù)處理函數(shù),優(yōu)化了包處理流程,縮短了反應(yīng)時(shí)間。步驟b,判斷用戶是否授權(quán),若該用戶尚未授權(quán),則進(jìn)行報(bào)文重定向,轉(zhuǎn)至步驟c;若用戶已授權(quán),則直接轉(zhuǎn)發(fā)報(bào)文。在所述步驟b中進(jìn)一步包括,子步驟b1,若該用戶尚未授權(quán),則轉(zhuǎn)至步驟c;子步驟b2,用戶已授權(quán)表示用戶已合法登錄,用戶端可以正常上網(wǎng),此時(shí)控制網(wǎng)關(guān)作為交換機(jī)直接將報(bào)文進(jìn)行轉(zhuǎn)發(fā)。步驟c,判斷用戶連接狀態(tài),若用戶狀態(tài)為未連接,則控制網(wǎng)關(guān)偽裝成目的ip與用戶ip進(jìn)行三次握手,當(dāng)握手成功后,該用戶ip標(biāo)記為已連接狀態(tài);若用戶狀態(tài)為已連接,轉(zhuǎn)至步驟d。在所述步驟b中進(jìn)一步包括,控制網(wǎng)關(guān)偽裝成報(bào)文的目的ip與與該源ip進(jìn)行tcp握手??刂凭W(wǎng)關(guān)將尚未授權(quán)的用戶ip標(biāo)記的連接狀態(tài)記錄在conn_item中,連接狀態(tài)又分為:tcp_listen,tcp_syn_recv,tcp_established和tcp_closed。當(dāng)用戶ip第一次發(fā)送報(bào)文,控制網(wǎng)關(guān)將該用ip置為tcp_listen狀態(tài),并添加至conn_item中;偽裝成目的ip組建成tcp握手回復(fù)報(bào)文發(fā)送至用戶ip,此時(shí)將用戶ip置為tcp_syn_recv;當(dāng)用戶ip發(fā)送tcp握手確認(rèn),控制網(wǎng)關(guān)將該用戶ip狀態(tài)置為tcp_established,表示連接成功。只有當(dāng)用戶發(fā)送基于tcp協(xié)議的報(bào)文時(shí),控制網(wǎng)關(guān)才會(huì)判斷該用戶端是否授權(quán)。同時(shí),當(dāng)控制網(wǎng)關(guān)接收非ip,ipv6或者不是tcp協(xié)議時(shí),控制網(wǎng)關(guān)直接轉(zhuǎn)發(fā),不再做任何處理。步驟d,握手成功后,當(dāng)控制網(wǎng)關(guān)接收到用戶端再次發(fā)送http請(qǐng)求報(bào)文后,判斷該用戶ip為已連接狀態(tài),將重定向的url添加至回復(fù)報(bào)文中發(fā)送至用戶端。在所述步驟d中進(jìn)一步包括,用戶ip與控制網(wǎng)關(guān)tcp握手成功后,用戶ip會(huì)進(jìn)行頁(yè)面請(qǐng)求,控制網(wǎng)關(guān)繼續(xù)偽裝成目的ip將重定向url添加到回復(fù)報(bào)文末尾,發(fā)送至用戶端。用戶端接收到重定向url報(bào)文后,得知想要訪問(wèn)的目的網(wǎng)址不存在,需要訪問(wèn)該url。步驟e,控制網(wǎng)關(guān)得到報(bào)文后轉(zhuǎn)發(fā),用戶端訪問(wèn)webportal服務(wù)器,到指定的url頁(yè)面并登錄,若登錄成功,webportal服務(wù)器將登錄結(jié)果返回至控制網(wǎng)關(guān),此時(shí)控制網(wǎng)關(guān)標(biāo)記該用戶ip為已授權(quán)狀態(tài)。在所述步驟e中進(jìn)一步包括:子步驟e1控制網(wǎng)關(guān)將重定向url附在報(bào)文后發(fā)送至源ip,直至源ip合法登錄后,控制網(wǎng)關(guān)將該源ip記錄在gtable中,表示該源ip處于已授權(quán)狀態(tài)。子步驟e2,用戶訪問(wèn)重定向url地址時(shí),控制網(wǎng)關(guān)作轉(zhuǎn)發(fā)作用,用戶端與webportal服務(wù)器首先進(jìn)行tcp三次握手,握手成功后,用戶才會(huì)獲取到url頁(yè)面并進(jìn)行登錄,若用戶成功登錄則將該用戶ip標(biāo)記為已授權(quán)狀態(tài)。在執(zhí)行上述步驟a~d過(guò)程中,若用戶端超時(shí)未發(fā)送消息給上述的目的ip,則控制網(wǎng)關(guān)將該用戶從conn_item中刪除。其中,當(dāng)用戶超時(shí)未發(fā)送數(shù)據(jù)或者會(huì)話超時(shí)則認(rèn)為該用戶已斷開(kāi),該系統(tǒng)將該用戶ip信息從conn_item或者gtable中釋放。當(dāng)用戶端超時(shí)未發(fā)送消息時(shí),表示用戶端會(huì)話超時(shí),用戶端可能出現(xiàn)了異常中斷等其它原因,控制網(wǎng)關(guān)需要清除此次的用戶端的連接信息,若用戶已登錄,則需要清除gtable中的用戶信息;若用戶尚未登錄,正在連接,則需要清除conn_item中的用戶信息。當(dāng)用戶再次發(fā)送連接信息時(shí),重新從第一步進(jìn)行連接。判斷用戶是否超時(shí),由該重定向系統(tǒng)中的計(jì)時(shí)器計(jì)算,當(dāng)用戶上一次發(fā)消息的時(shí)間加上超時(shí)時(shí)間超過(guò)了現(xiàn)在的時(shí)間,表示用戶會(huì)話已超時(shí),控制網(wǎng)關(guān)會(huì)針對(duì)用戶所在的狀態(tài)做相應(yīng)的操作。在執(zhí)行上述a~d過(guò)程中,當(dāng)偽裝成目的ip的控制網(wǎng)關(guān)發(fā)送至用戶端重定向報(bào)文后,用戶端訪問(wèn)重定向url并進(jìn)行登錄,當(dāng)用戶會(huì)與偽裝成目的ip的控制網(wǎng)關(guān)釋放tcp連接時(shí),控制網(wǎng)關(guān)繼續(xù)偽裝成目的ip與該用戶四次揮手?jǐn)嚅_(kāi)tcp連接。在執(zhí)行上述a~d過(guò)程中,當(dāng)用戶ip超時(shí)未發(fā)送數(shù)據(jù)或者發(fā)送斷開(kāi)請(qǐng)求,控制網(wǎng)關(guān)回復(fù)用戶ip并置為tcp_closed,同時(shí)將該用戶ip信息從該conn_item中刪除。至此,本公開(kāi)第二實(shí)施例基于dpdk的url認(rèn)證重定向的方法介紹完畢。至此,已經(jīng)結(jié)合附圖對(duì)本公開(kāi)實(shí)施例進(jìn)行了詳細(xì)描述。需要說(shuō)明的是,在附圖或說(shuō)明書正文中,未繪示或描述的實(shí)現(xiàn)方式,均為所屬
技術(shù)領(lǐng)域:
:中普通技術(shù)人員所知的形式,并未進(jìn)行詳細(xì)說(shuō)明。此外,上述對(duì)各元件和方法的定義并不僅限于實(shí)施例中提到的各種具體結(jié)構(gòu)、形狀或方式,本領(lǐng)域普通技術(shù)人員可對(duì)其進(jìn)行簡(jiǎn)單地更改或替換。再者,單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。此外,除非特別描述或必須依序發(fā)生的步驟,上述步驟的順序并無(wú)限制于以上所列,且可根據(jù)所需設(shè)計(jì)而變化或重新安排。并且上述實(shí)施例可基于設(shè)計(jì)及可靠度的考慮,彼此混合搭配使用或與其他實(shí)施例混合搭配使用,即不同實(shí)施例中的技術(shù)特征可以自由組合形成更多的實(shí)施例。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本公開(kāi)也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本公開(kāi)的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本公開(kāi)的最佳實(shí)施方式。本公開(kāi)可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。本公開(kāi)的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(dsp)來(lái)實(shí)現(xiàn)根據(jù)本公開(kāi)實(shí)施例的相關(guān)設(shè)備中的一些或者全部部件的一些或者全部功能。本公開(kāi)還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本公開(kāi)的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。并且,在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)公開(kāi)方面中的一個(gè)或多個(gè),在上面對(duì)本公開(kāi)的示例性實(shí)施例的描述中,本公開(kāi)的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本公開(kāi)要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,公開(kāi)方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本公開(kāi)的單獨(dú)實(shí)施例。以上所述的具體實(shí)施例,對(duì)本公開(kāi)的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本公開(kāi)的具體實(shí)施例而已,并不用于限制本公開(kāi),凡在本公開(kāi)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本公開(kāi)的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12