摘 要:在基于流媒體流量均衡裝置的VOD應(yīng)用方案的基礎(chǔ)上,提出一種客戶端軟件。該客戶端軟件基于ip filter driver hook及原始套接字進(jìn)行設(shè)計(jì),從網(wǎng)絡(luò)底層實(shí)現(xiàn)用戶VOD點(diǎn)播請(qǐng)求的轉(zhuǎn)發(fā),配合改進(jìn)的分級(jí)流量均衡裝置結(jié)構(gòu),優(yōu)化了該VOD應(yīng)用方案的結(jié)構(gòu),降低了流量均衡裝置的額外負(fù)載,提高了運(yùn)行效率和應(yīng)用的靈活性,拓展了該VOD方案的應(yīng)用前景。
關(guān)鍵詞:VOD;客戶端軟件;流媒體流量均衡裝置;ip filter driver hook
中圖分類號(hào):TN919.85文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2009)20-100-03
Implementation of Client End Software for New VOD Scheme
YANG Zhenlun,JIANG Yajun,HUANG Zhongwei
(Guangzhou Panyu Polytechnic College,Guangzhou,511483,China)
Abstract:Based on VOD scheme of load balancing equipments in stream medium,a new client end software is proposed.The client end software is developed under ip filter driver hook and raw socket.It redirects the users′ VOD demand in the way of network drivers operation.Cooperating with the advanced graded application structure of load balancing equipments of stream medium,it optimizes the application structure of VOD scheme and decreases the additional load of load balancing equipments of stream medium,improves the flexibility,efficiency and application prospects of VOD scheme.
Keywords:VOD;client end software;load balancing equipments of stream medium;ip filter driver hook
0 引 言
針對(duì)中小型園區(qū)網(wǎng)VOD應(yīng)用中因網(wǎng)絡(luò)帶寬及點(diǎn)播服務(wù)器I/O帶寬不足導(dǎo)致的系統(tǒng)阻塞問題,作者前期的研究成果提出了一種新型網(wǎng)絡(luò)設(shè)備流媒體流量均衡裝置(以下簡(jiǎn)稱流量均衡裝置),基于該裝置的VOD方案通過在VOD系統(tǒng)中添加多個(gè)流量均衡裝置,從而減輕點(diǎn)播服務(wù)器和主干網(wǎng)絡(luò)的負(fù)載,解決系統(tǒng)阻塞問題[1]。
該方案依賴流量均衡裝置內(nèi)部的均衡策略,通過各個(gè)單點(diǎn)設(shè)備之間的協(xié)同來(lái)實(shí)現(xiàn)全局流量均衡,而由于每個(gè)單點(diǎn)設(shè)備只能獲取對(duì)應(yīng)區(qū)域的點(diǎn)播狀況,因此實(shí)現(xiàn)全局均衡則需要各個(gè)設(shè)備進(jìn)行頻繁且大量的信息交換,增加了每個(gè)單點(diǎn)設(shè)備的負(fù)載,也導(dǎo)致全局流量均衡收斂時(shí)間的延長(zhǎng),并且新的流量均衡設(shè)備加入后,需要一段時(shí)間才能融合到系統(tǒng)中,這限制了該VOD優(yōu)化方案的應(yīng)用。
為解決該問題,在此提出一種應(yīng)用于該VOD方案的客戶端軟件,前述的VOD應(yīng)用方案在引入了該客戶端軟件后,能進(jìn)一步優(yōu)化VOD應(yīng)用結(jié)構(gòu),提高運(yùn)行效率,增強(qiáng)該方案的實(shí)用性。
這里將分別對(duì)改進(jìn)方案結(jié)構(gòu)以及客戶端軟件的設(shè)計(jì)進(jìn)行說明。
1 改進(jìn)方案結(jié)構(gòu)
通常的VOD系統(tǒng)都配有Web服務(wù)器,以提供節(jié)目列表[2],原來(lái)基于流量均衡裝置的VOD應(yīng)用方案的點(diǎn)播需要Web服務(wù)器修改客戶機(jī)上網(wǎng)頁(yè)插件的屬性,使得用戶的點(diǎn)播請(qǐng)求重定向到每個(gè)區(qū)域指定的流量均衡裝置中,再由流量均衡裝置為之提供服務(wù)。由于目前VOD系統(tǒng)有若干種主流的點(diǎn)播軟件方案,用戶可能使用Real player,Media player或QuickTime player等幾種客戶端中的一種[3]。該方式需要根據(jù)客戶機(jī)上的不同點(diǎn)播軟件提供不同的配置方式,而實(shí)現(xiàn)全局流量均衡需要各個(gè)單點(diǎn)的流量均衡裝置之間的交互來(lái)獲知整個(gè)園區(qū)網(wǎng)的點(diǎn)播狀況,為了達(dá)到較快的全局均衡收斂速度,這種信息交互的頻率較高,這給資源相對(duì)有限的流量均衡裝置帶來(lái)一定的額外負(fù)載。如果降低信息交互的頻率,則會(huì)導(dǎo)致收斂性能的降低。
改進(jìn)的VOD應(yīng)用方案主要是在點(diǎn)播的客戶機(jī)上添加了一個(gè)與流量均衡裝置配合的客戶端軟件,該軟件除了能實(shí)現(xiàn)將客戶機(jī)的點(diǎn)播請(qǐng)求轉(zhuǎn)發(fā)到某個(gè)流量均衡裝置,實(shí)現(xiàn)各種點(diǎn)播軟件對(duì)流媒體流量均衡裝置的透明使用外,主要還提供一個(gè)額外的通信接口,流量均衡裝置可以通過該通信接口修改相應(yīng)點(diǎn)播客戶機(jī)的點(diǎn)播請(qǐng)求轉(zhuǎn)發(fā)方向。在這種情況下,全局流量均衡主要是通過將點(diǎn)播客戶機(jī)的點(diǎn)播請(qǐng)求,依據(jù)全局網(wǎng)絡(luò)狀況轉(zhuǎn)發(fā)到最合適的流量均衡裝置處而得到實(shí)現(xiàn)。
為了實(shí)現(xiàn)這個(gè)目的,對(duì)VOD應(yīng)用方案進(jìn)行微調(diào),根據(jù)具體數(shù)量將網(wǎng)絡(luò)中的流量均衡裝置分為兩級(jí)或者三級(jí),每一級(jí)的下一層流量均衡裝置將所屬區(qū)域的網(wǎng)絡(luò)狀況發(fā)到上一層的流量均衡裝置中。最終匯總到一個(gè)事先指定的主控流量均衡裝置中,該流量均衡裝置根據(jù)全局流量均衡策略以及實(shí)際網(wǎng)絡(luò)狀況控制所有點(diǎn)播客戶機(jī)上客戶端軟件的點(diǎn)播轉(zhuǎn)發(fā)方向,如圖1所示。
2 客戶端軟件設(shè)計(jì)
該改進(jìn)方案的關(guān)鍵在于客戶端軟件??蛻舳塑浖枰獙?shí)現(xiàn)的最主要功能是將客戶機(jī)的點(diǎn)播請(qǐng)求重定向到流量均衡裝置中,并且引導(dǎo)服務(wù)器將流媒體數(shù)據(jù)發(fā)送到流量均衡裝置中。由于目前主流流媒體協(xié)議RTSP協(xié)議簇在發(fā)送流媒體數(shù)據(jù)前,必須在服務(wù)器及客戶端之間經(jīng)過多次RTSP協(xié)商,確定具體參數(shù),而后續(xù)的操作則根據(jù)RTSP協(xié)商的結(jié)果進(jìn)行。如果在客戶機(jī)對(duì)點(diǎn)播軟件發(fā)起的RTSP協(xié)商過程進(jìn)行干預(yù)時(shí),則完全可實(shí)現(xiàn)點(diǎn)播全過程的重定向。本文客戶端軟件的設(shè)計(jì)思想正是基于這一點(diǎn)。實(shí)現(xiàn)RTSP協(xié)商數(shù)據(jù)包的重定向?qū)嵸|(zhì)是實(shí)現(xiàn)數(shù)據(jù)包的截獲、修改和轉(zhuǎn)發(fā),在客戶端發(fā)起連接時(shí),從網(wǎng)絡(luò)底層將請(qǐng)求數(shù)據(jù)包攔截,并根據(jù)接收到的命令將其目的IP地址修改再發(fā)出去,接收到回復(fù)包再進(jìn)行反向的處理,而這一切對(duì)于客戶機(jī)的點(diǎn)播軟件都是透明的。
由于目前VOD系統(tǒng)中的用戶端以采用Windows操作系統(tǒng)的微機(jī)為主,該客戶端軟件的設(shè)計(jì)面向Windows。在Windows下實(shí)現(xiàn)這些功能需要使用內(nèi)核模式驅(qū)動(dòng)程序[4]。目前適用于該客戶端要求的可選內(nèi)核模式驅(qū)動(dòng)模式包括:微端口NIC 驅(qū)動(dòng)程序(Miniport NIC Drivers) 、中間層驅(qū)動(dòng)程序( Intermediate Drivers) 、協(xié)議驅(qū)動(dòng)程序(Protocol Drivers)以及過濾器鉤子驅(qū)動(dòng)程序(IP Filter Driver Hook)等[5-7]。相比較而言,過濾器鉤子驅(qū)動(dòng)程序具有處理流程簡(jiǎn)單,效率較高的特點(diǎn)[8],并且從功能上能很好地滿足要求。該方案采用過濾器鉤子驅(qū)動(dòng)程序進(jìn)行設(shè)計(jì)。
過濾器鉤子驅(qū)動(dòng)程序依賴于Microsoft 提供的IP 協(xié)議過濾驅(qū)動(dòng)程序,在Windows 2000/XP 系統(tǒng)中,System 32\drivers目錄下的ipfltdrv.sys是Microsoft 提供的IP 協(xié)議過濾驅(qū)動(dòng)程序,它允許用戶注冊(cè)自己的IP 數(shù)據(jù)包處理函數(shù),即過濾器鉤子函數(shù)[9]。本機(jī)所有進(jìn)出的IP包都經(jīng)操作系統(tǒng)的IP過濾驅(qū)動(dòng)程序處理,而IP過濾驅(qū)動(dòng)程序調(diào)用用戶定義的過濾器鉤子函數(shù)進(jìn)行處理,確定是丟棄或者傳送。
該客戶端軟件由處于內(nèi)核態(tài)的過濾器鉤子驅(qū)動(dòng)程序和處于用戶態(tài)的應(yīng)用程序組成,應(yīng)用程序包括接收主控流量均衡裝置命令的監(jiān)聽線程和配合驅(qū)動(dòng)程序工作的服務(wù)線程,如圖2所示。
圖1 改進(jìn)方案結(jié)構(gòu)示意圖
圖2 客戶端軟件結(jié)構(gòu)圖
過濾器鉤子驅(qū)動(dòng)程序中設(shè)計(jì)主要是進(jìn)行過濾鉤子函數(shù)的編寫。該客戶端軟件過濾器鉤子驅(qū)動(dòng)程序的鉤子函數(shù)完成的工作主要是比較本機(jī)進(jìn)出的數(shù)據(jù)包是否符合設(shè)定的轉(zhuǎn)發(fā)方向設(shè)置,如果符合則攔截,進(jìn)行改寫后傳送,具體流程如圖3所示。
圖3 過濾器鉤子驅(qū)動(dòng)程序流程圖
過濾器鉤子驅(qū)動(dòng)程序工作在IP層,只能改寫IP包的內(nèi)容,對(duì)于本機(jī)發(fā)送到其他機(jī)器的包,由于其MAC地址已經(jīng)設(shè)定好,只改寫IP地址不能實(shí)現(xiàn)數(shù)據(jù)包的重定向。為解決該問題,驅(qū)動(dòng)程序修改目標(biāo)IP為本機(jī)IP,端口號(hào)為約定傳送端口后傳送數(shù)據(jù)包。由于基于原始套接字能實(shí)現(xiàn)自由收發(fā)TCP包的功能[10]。應(yīng)用程序中的服務(wù)線程采用原始套接字方式與驅(qū)動(dòng)程序配合進(jìn)行二次處理:在約定的傳送端口進(jìn)行監(jiān)聽,獲取驅(qū)動(dòng)程序發(fā)送的需要,重定向的IP包,根據(jù)設(shè)定的規(guī)則改寫對(duì)應(yīng)IP地址及端口號(hào),再通過原始套接字轉(zhuǎn)發(fā)至相應(yīng)的流量均衡裝置,其流程圖如圖4所示。
命令監(jiān)聽線程等待主控流量均衡裝置發(fā)送的命令,一旦接收到命令,則通過修改程序的配置來(lái)實(shí)現(xiàn)轉(zhuǎn)發(fā)方向的更改,具體流程如圖5所示。
圖4 應(yīng)用程序服務(wù)線程流程圖
圖5 應(yīng)用程序命令監(jiān)聽線程流程圖
3 結(jié) 語(yǔ)
本文在前期的研究成果即基于流媒體流量均衡裝置的VOD方案基礎(chǔ)上,提出一種改進(jìn)方法。在點(diǎn)播的用戶計(jì)算機(jī)上添加一個(gè)客戶端軟件,減少了流量均衡裝置間的信息交互,降低了流量均衡裝置的負(fù)載,并且該軟件直接對(duì)用戶發(fā)送的點(diǎn)播請(qǐng)求網(wǎng)絡(luò)包進(jìn)行攔截和改寫,能與各種不同的VOD客戶端配合使用,具有較高的靈活性和適用性,從而拓展了該新型VOD方案的應(yīng)用前景。
參考文獻(xiàn)
[1]楊震倫,蔣亞軍,黃中偉.基于MIPS的流媒體流量均衡設(shè)備的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2008(11):125-127.
[2]胡斌.基于Web流媒體系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(2):111-113.
[3]薛元昕,韓維.論流媒體技術(shù)及流媒體服務(wù)器的建立[J].現(xiàn)代電子技術(shù),2004,27(16):28-31.
[4]王蘭英,居錦武.Windows內(nèi)核模式驅(qū)動(dòng)程序運(yùn)行環(huán)境的分析[J].微計(jì)算機(jī)信息,2005(23):201-202.
[5]廖永紅,李洛,黃戰(zhàn).基于Windows 200x的WDM體系的IP過濾實(shí)現(xiàn)技術(shù)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,22(11):5 425-5 427.
[6]裴林,曹斌.基于NDIS中間層的網(wǎng)絡(luò)數(shù)據(jù)包攔截技術(shù)及實(shí)現(xiàn)[J].計(jì)算機(jī)安全,2008(12):13-15.
[7]李明欣,佘堃.基于NDIS中間驅(qū)動(dòng)的入侵檢測(cè)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007(1):51-52.
[8]呂建軍,羅萬(wàn)伯,陳蓉,等.基于過濾器鉤子驅(qū)動(dòng)的數(shù)據(jù)包過濾研究與實(shí)現(xiàn)[J].四川大學(xué)學(xué)報(bào):自然科學(xué)版,2005,41(4):754-757.
[9]莫向陽(yáng).基于Filter-Hook Drive設(shè)計(jì)個(gè)人防火墻[J].廣東技術(shù)師范學(xué)院學(xué)報(bào),2007(10):18-20.
[10]盧建華,蔣明,陳淑芳.網(wǎng)絡(luò)數(shù)據(jù)包捕獲及分析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2009(2):16-18.