劉錦行 (武漢理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,湖北 武漢430070)
在當今社會信息化的發(fā)展過程中,計算機網(wǎng)絡(luò)正以空前的速度和廣度向前發(fā)展。計算機網(wǎng)絡(luò)的應(yīng)用已經(jīng)滲透到了政治、經(jīng)濟、科技、軍事等各個領(lǐng)域。目前無論是個人還是個企事業(yè)單位的Internet應(yīng)用越來越走向深入,為人們的日常工作和生活提供了便捷的互聯(lián)服務(wù)。由此便引出了日常網(wǎng)絡(luò)的使用費用問題。同時,計費管理作為網(wǎng)絡(luò)管理的5大功能之一,是保證網(wǎng)絡(luò)正常運行不可缺少的重要部分。計費系統(tǒng)的準確性、可靠性、安全性及實用性、越來越為人們所關(guān)注,它直接關(guān)系到Internet服務(wù)提供商以及用戶的經(jīng)濟利益,它已成為一個網(wǎng)絡(luò)正常運營與發(fā)展的關(guān)鍵[1]。
根據(jù)用戶使用網(wǎng)絡(luò)服務(wù)的種類和計費信息的采集方法,大致可將目前的計費方法分為3類:
(1)基于網(wǎng)絡(luò)流量的計費[2-3]。根據(jù)用戶在使用網(wǎng)絡(luò)時所產(chǎn)生的數(shù)據(jù)流量的大小來收取用戶費用的計費方式。目前流量數(shù)據(jù)的采集方法主要有:基于路由器的流量采集、基于代理的流量采集和基于網(wǎng)絡(luò)偵聽的流量采集等。
(2)基于使用時間的計費[1]。這種計費方式是根據(jù)用戶使用網(wǎng)絡(luò)時間的長短來收取費用。目前,一些校園網(wǎng)所提供的撥號服務(wù)大都是通過RADIUS服務(wù)器的計費功能來實現(xiàn)計費的。
(3)基于網(wǎng)絡(luò)服務(wù)的計費[1]。這種方法根據(jù)用戶使用網(wǎng)絡(luò)服務(wù)的次數(shù)或時間來收取費用。目前這類服務(wù)包括電子郵件、信息檢索和視頻點播等。目前主要通過分析服務(wù)器的訪問日志或使用監(jiān)控程序來得到用戶的使用情況。
基于網(wǎng)絡(luò)流量的計費系統(tǒng)的2個主要組成部分就是流量數(shù)據(jù)的采集和流量數(shù)據(jù)的處理。首先通過流量采集部分獲取用戶流量信息,再通過數(shù)據(jù)處理部分匯總統(tǒng)計用戶流量以及費用信息,借助于數(shù)據(jù)庫得到最終的計費結(jié)果。計費系統(tǒng)的組成結(jié)構(gòu)簡單如圖1所示。
流量數(shù)據(jù)的采集就是對網(wǎng)絡(luò)用戶的通信量進行采集。按字節(jié)數(shù)對用戶的發(fā)送和接收的數(shù)據(jù)量統(tǒng)計。一般情況下流量信息應(yīng)該包含用戶的IP地址,MAC地址,數(shù)據(jù)量 (發(fā)送接收的報文字節(jié)數(shù))等內(nèi)容。數(shù)據(jù)采集部分是計費系統(tǒng)最為核心的部分,目前使用的計費軟件使用的流量采集的方法一般可以基于SNMP的流量采集、基于代理服務(wù)器的流量采集和基于偵聽的流量采集3種方式[4-5]。流量的數(shù)據(jù)處理部分主要借助于數(shù)據(jù)庫,在數(shù)據(jù)庫中建立用戶表,根據(jù)用戶ID對流量數(shù)據(jù)進行統(tǒng)計,在根據(jù)制定的費率結(jié)算出用戶的費用。也可以通過數(shù)據(jù)庫滿足用戶的查詢等操作。

圖1 計費系統(tǒng)組成結(jié)構(gòu)
該計費系統(tǒng)采用偵聽的方式,減少對網(wǎng)絡(luò)的影響。即通過偵聽方式得到以太幀數(shù)據(jù),然后以太幀數(shù)據(jù)經(jīng)過數(shù)據(jù)處理模塊得到流量信息。把這些流量數(shù)據(jù)存儲進數(shù)據(jù)庫進行流量統(tǒng)計和匯總,按照給定的費率,計算出用戶所需交納的網(wǎng)絡(luò)使用費,即系統(tǒng)的模塊化流程如圖2所示。根據(jù)上述流程分析,計費系統(tǒng)主要包括如下功能模塊:
1)包攔截模塊 獲得原始數(shù)據(jù)幀,是計費的最原始信息。
2)報文分析模塊 分析包的地址、類型、端口號,區(qū)分是系統(tǒng)管理報文還是用戶報文,區(qū)分是否需要收費。
3)用戶流量統(tǒng)計模塊 得到用戶的數(shù)據(jù)流量,作為計費的依據(jù)。
4)費用計算模塊 結(jié)算用戶的網(wǎng)絡(luò)使用費。
5)IP地址管理模塊 將IP地址和MAC地址綁定,防止盜用。
6)黑名單管理模塊 針對不良站點或訪問不良站點的用戶進行記錄管理。

圖2 系統(tǒng)模塊化流程
7)用戶信息設(shè)置模塊 提供用戶對自己信息的錄入和修改。
8)費率的修改模塊 針對不同的用戶、不同的上網(wǎng)類型、不同時段、不同地域的收費費率應(yīng)該不一樣。對于室內(nèi)、校內(nèi)、國內(nèi)、國外、訪問的是免費站點還是非免費站點,也應(yīng)有不同的費率。
9)基于WEB的用戶查詢模塊 提供一個用戶對自己費用及網(wǎng)絡(luò)使用情況的查詢界面。
10)報表模塊 將統(tǒng)計的流量及費用等信息輸出為報表,并進行打印。

圖3 報文攔截程序流程
1)報文攔截的實現(xiàn) 報文攔截即包捕獲,就是利用以太網(wǎng)的介質(zhì)共享的特性,通過將網(wǎng)絡(luò)適配器設(shè)置為混雜模式的方法,接收到所有網(wǎng)絡(luò)上的以太網(wǎng)幀[5-6]。系統(tǒng)基于 WinPcap (Windows Packet Capture)[7]網(wǎng)絡(luò)驅(qū)動開發(fā)包,設(shè)計實現(xiàn)報文攔截的流程如圖3所示。
2)報文分析的實現(xiàn) 報文攔截模塊捕獲的是數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元 (LLPDU)[8],報文分析模塊則針對相關(guān)的數(shù)據(jù)鏈路層協(xié)議進行分析,從中分解出IP、ARP、ICMP、UDP、TCP等協(xié)議的內(nèi)容。目前局域網(wǎng)主要采用以太網(wǎng),所以重點解釋以太網(wǎng)幀拆分和IP數(shù)據(jù)報拆分流程如圖4所示。
3)數(shù)據(jù)存儲和界面設(shè)計 根據(jù)用戶的具體需求,基于Microsoft SQL Server 2000數(shù)據(jù)庫技術(shù),設(shè)計的計費數(shù)據(jù)庫的表設(shè)計如下:①流量數(shù)據(jù)表。包含的字段有源MAC地址、目的MAC地址、源IP地址、目的IP地址、協(xié)議、端口號、報文長度。流量數(shù)據(jù)表是系統(tǒng)按網(wǎng)絡(luò)流量進行計費的依據(jù),由底層報文攔截模塊采集后寫入表中。②用戶信息表。包含的字段有用戶ID、用戶名、IP地址、MAC地址、交費情況。由用戶信息表以提供用戶的交費情況查詢,若未交費,定為非法用戶。③費用情況表。包含的字段有用戶名、總計流量、應(yīng)交納費額。費用情況表是交費的唯一依據(jù)。④免費地址表。包含字段有IP地址范圍,免費的原因。⑤黑名單地址表。包含字段有IP地址、列為黑名單的原因。黑名單地址表主要記錄不良站點的訪問記錄,為系統(tǒng)安全管理和維護提供依據(jù)。
軟件的運行情況如圖5所示。

圖4 太網(wǎng)幀和IP數(shù)據(jù)報拆分流程

圖5 軟件的運行界面
基于流量的網(wǎng)絡(luò)計費是未來網(wǎng)絡(luò)計費的發(fā)展趨勢。以簡單和實用為主導(dǎo)思想,提出了一種具體的基于流量的網(wǎng)絡(luò)計費的解決方案,并基于WinPcap網(wǎng)絡(luò)編程技術(shù)和VC++編程技術(shù),設(shè)計實現(xiàn)了對報文捕獲、報文分析、計費查詢等模塊的功能。該系統(tǒng)交互性好,實用性強,實現(xiàn)了動態(tài)費率、分類費率等功能,能有效提高網(wǎng)絡(luò)計費管理準確性、可靠性。