作者:宋嵩,杜文,牛志升,李康
移動(dòng)通信給人們帶來(lái)了十分方便的服務(wù),無(wú)線局域網(wǎng)作為一種移動(dòng)接入Internet的方法,逐漸成為研究的熱門課題。但是,由于應(yīng)用日益廣泛的多媒體業(yè)務(wù)數(shù)據(jù)流量比較大,而無(wú)線帶寬有限,同時(shí)IP 網(wǎng)絡(luò)基本上是采用點(diǎn)到點(diǎn)盡力型(BestEffort) 服務(wù)方式,所以很難有效滿足實(shí)時(shí)多媒體業(yè)務(wù)的服務(wù)質(zhì)量(Quality of Service)要求。為保證WLAN中多媒體業(yè)務(wù)的實(shí)時(shí)傳輸,需要進(jìn)行QoS差分,給多媒體業(yè)務(wù)提供不同服務(wù)質(zhì)量選擇。目前,關(guān)于多媒體QoS保證的研究普遍采用軟件仿真來(lái)完成,缺乏實(shí)際網(wǎng)絡(luò)測(cè)試。為了驗(yàn)證各種差分算法的可行性,我們開(kāi)發(fā)了一個(gè)實(shí)時(shí)多媒體業(yè)務(wù)開(kāi)放式試驗(yàn)平臺(tái),實(shí)驗(yàn)測(cè)試多媒體業(yè)務(wù)QoS保證調(diào)度算法,包括我們自己提出的調(diào)度算法。
IPv6擴(kuò)大了IPv4地址空間,徹底解決了IPv4的地址空間耗盡和路由表爆炸等問(wèn)題,并且在安全性、移動(dòng)性以及QoS等方面提供了強(qiáng)有力的支持,而且, 更加合理的IPv6協(xié)議包頭設(shè)計(jì)使得路由器在處理數(shù)據(jù)包時(shí)更加快捷。Linux操作系統(tǒng)以其源代碼開(kāi)放、性能高和穩(wěn)定可靠等優(yōu)點(diǎn)得到了日益廣泛的應(yīng)用,越來(lái)越多的科研項(xiàng)目利用Linux系統(tǒng)作為實(shí)驗(yàn)的軟件平臺(tái)。因此,測(cè)試平臺(tái)選擇了在IPv6 網(wǎng)絡(luò)環(huán)境下使用Linux操作系統(tǒng)來(lái)實(shí)現(xiàn)。
IPv6網(wǎng)絡(luò)環(huán)境和L inux實(shí)現(xiàn)機(jī)制
IPv6對(duì)IP4的改進(jìn)
IPv6繼承了IPv4的優(yōu)點(diǎn),摒棄了它的缺點(diǎn)。IPv6與IPv4不兼容,但同所有TCP / IP 協(xié)議簇中的協(xié)議兼容,所以IPv6完全可以取代IPv4。相對(duì)于IPv4, IPv6 最大的優(yōu)點(diǎn)是有足夠的地址空間。IPv6的地址是128位,大大增加了可用的地址空間,甚至以后每臺(tái)家電或者手機(jī)都分配一個(gè)IP地址都綽綽有余。而且, IPv6 的自動(dòng)配置地址的功能使得用戶配置網(wǎng)絡(luò)非常簡(jiǎn)單。
相對(duì)于IPv4, IPv6簡(jiǎn)化了包頭格式,包頭有8個(gè)字段,總長(zhǎng)固定為40字節(jié);由于包頭長(zhǎng)度統(tǒng)一,因此不再需要包頭長(zhǎng)度字段,并且去除了IPv4 中一些其他字段,可以節(jié)省大量網(wǎng)絡(luò)路由器資源。此外, IPv6 提供了可擴(kuò)展協(xié)議( ExtensibleProtocol) ,設(shè)計(jì)更為靈活,去掉選項(xiàng)字段,引入“下一頭標(biāo)”(Next Header)指示IPv6 報(bào)頭之后的第一個(gè)擴(kuò)展頭的類型。
IPv6擴(kuò)展頭也必須攜帶一個(gè)Next Header字段。這樣,協(xié)議頭的結(jié)構(gòu)像一個(gè)鏈表一樣可以不斷擴(kuò)展,所以很容易加入新的特性,加強(qiáng)選擇功能。
Linux 2. 2以上內(nèi)核版本,Windows XP Service Pack 1和Windows Server 2003等操作系統(tǒng)都提供對(duì)IPv6的支持。
Linux的Netfilter鉤子函數(shù)
NetFilter是Linux 2. 4內(nèi)核實(shí)現(xiàn)數(shù)據(jù)包過(guò)濾、數(shù)據(jù)包處理等的功能框架。NetFilter提供了一個(gè)抽象、通用化的框架,該框架定義的一個(gè)子功能的實(shí)現(xiàn)就是包過(guò)濾子系統(tǒng)。Netfilter框架包含以下三部分:
1) 鉤子(Hook) 。Netfiter為IPv6協(xié)議定義了5個(gè)鉤子函數(shù)(如表1所示) ,這些鉤子函數(shù)在數(shù)據(jù)包流過(guò)協(xié)議棧的幾個(gè)關(guān)鍵點(diǎn)被調(diào)用。在這幾個(gè)點(diǎn)中,協(xié)議棧將把數(shù)據(jù)包及鉤子函數(shù)標(biāo)號(hào)作為參數(shù)調(diào)用Netfilter的框架。
2) ip tables。內(nèi)核模塊可以對(duì)一個(gè)或多個(gè)鉤子進(jìn)行注冊(cè),實(shí)現(xiàn)掛接,當(dāng)某個(gè)數(shù)據(jù)包被傳遞給Netfilter框架時(shí),內(nèi)核檢測(cè)是否有模塊對(duì)該協(xié)議和鉤子函數(shù)進(jìn)行了注冊(cè)。若注冊(cè)了,則調(diào)用該模塊注冊(cè)的回調(diào)函數(shù),檢查、修改、丟棄該數(shù)據(jù)包并指示Netfilter將該數(shù)據(jù)包傳入用戶空間的隊(duì)列。
3) 用戶空間。排隊(duì)的數(shù)據(jù)包被傳遞給用戶空間異步地進(jìn)行處理。一個(gè)用戶進(jìn)程能檢查、修改數(shù)據(jù)包,甚至可以重新將該數(shù)據(jù)包通過(guò)離開(kāi)內(nèi)核的同一個(gè)鉤子函數(shù)注入內(nèi)核。
Netfilter實(shí)現(xiàn)流程如圖1所示。圖示指明了Netfilter 5個(gè)鉤子函數(shù)掛載點(diǎn)在Linux內(nèi)核協(xié)議棧中的位置,箭頭標(biāo)明了IP包在包含Netfilter框架的IP層的流向。IP包從最左端進(jìn)入系統(tǒng)經(jīng)過(guò)校驗(yàn)和版本檢查后經(jīng)過(guò)第一個(gè)掛載點(diǎn), 交給NF_IP6_PRE_ROUTING注冊(cè)的鉤子函數(shù)進(jìn)行處理;經(jīng)過(guò)路由選擇,決定該數(shù)據(jù)包需要轉(zhuǎn)發(fā)還是發(fā)給本機(jī);若該數(shù)據(jù)包是發(fā)給本機(jī)的,則經(jīng)過(guò)NF_ IP6_LOCAL_ IN注冊(cè)的鉤子函數(shù)處理以后傳遞給上層協(xié)議; 若需要轉(zhuǎn)發(fā),則轉(zhuǎn)至NF_ IP6_FORWARD注冊(cè)的鉤子函數(shù)進(jìn)行處理;所有需要發(fā)送到網(wǎng)絡(luò)的數(shù)據(jù)包,無(wú)論是本機(jī)發(fā)出的還是轉(zhuǎn)發(fā)的,都要經(jīng)過(guò)最后一個(gè)鉤子函數(shù)NF_IP6_POST_ROUTING處理以后,才能發(fā)送到網(wǎng)絡(luò)上。本地網(wǎng)絡(luò)層以上產(chǎn)生的數(shù)據(jù)包通過(guò)NF_ IP6_LOCAL _OUT注冊(cè)的鉤子函數(shù)處理后,才可以進(jìn)行路由選擇,然后由NF_ IP6_POST_ROUTING處的鉤子函數(shù)處理后發(fā)送到網(wǎng)絡(luò)上。
根據(jù)所需要處理的數(shù)據(jù)包的不同特點(diǎn),選擇合適的掛載點(diǎn),加入相應(yīng)的回調(diào)處理函數(shù),就可以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的截獲和各種控制。本文測(cè)試平臺(tái)使用Netfilter在NF_ IP6_POST_ROUTING掛載點(diǎn)截獲所有網(wǎng)絡(luò)數(shù)據(jù)包對(duì)其進(jìn)行調(diào)度管理,實(shí)現(xiàn)差分QoS機(jī)制,保證多媒體業(yè)務(wù)的實(shí)時(shí)傳輸。
實(shí)時(shí)多媒體業(yè)務(wù)服務(wù)質(zhì)量保證機(jī)制
基于SIP協(xié)議的多媒體業(yè)務(wù)
會(huì)話初始協(xié)議SIP ( Session Initiation Protocol)是一個(gè)基于應(yīng)用層的控制協(xié)議,用來(lái)建立、控制維護(hù)和終止多媒體會(huì)話或呼叫。SIP協(xié)議為大范圍應(yīng)用的多媒體通信提供了高級(jí)的信令和控制功能,通過(guò)少量基于文本的消息包在兩個(gè)實(shí)體之間傳遞消息, 還在網(wǎng)絡(luò)中提供代理服務(wù)器和重定位服務(wù)器來(lái)中繼和傳送消息, 支持多媒體會(huì)議、遠(yuǎn)程學(xué)習(xí)、Internet會(huì)話和多媒體發(fā)布等一系列服務(wù)。在SIP協(xié)議應(yīng)用中包含兩個(gè)部分:用戶端和網(wǎng)絡(luò)服務(wù)器。用戶端可以產(chǎn)生SIP消息包并通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器傳送到其他用戶端, 用戶端之間也可以直接通信。這里使用IPv6下的SIP服務(wù)器為用戶端建立連接。這樣,在進(jìn)行多媒體通信時(shí),就構(gòu)成了兩類數(shù)據(jù)包,一類用于管理多媒體業(yè)務(wù)的信令數(shù)據(jù)包,一類為用于不同的SIP客戶端之間通信時(shí)的圖像、語(yǔ)音數(shù)據(jù)。為了保證在網(wǎng)絡(luò)中多媒體業(yè)務(wù)的實(shí)時(shí)傳輸,給多媒體業(yè)務(wù)以高優(yōu)先級(jí)進(jìn)行傳輸;同時(shí),為了保證多媒體會(huì)話可以隨時(shí)建立,特別給予用于建立連接的信令數(shù)據(jù)以更高的優(yōu)先級(jí)。這樣就形成了三級(jí)服務(wù)差分的概念,信令、多媒體業(yè)務(wù)、數(shù)據(jù)傳輸,其中SIP服務(wù)器的數(shù)據(jù)為信令數(shù)據(jù),具有絕對(duì)高優(yōu)先級(jí),多媒體業(yè)務(wù)和數(shù)據(jù)傳輸分別具有高優(yōu)先級(jí)和低優(yōu)先級(jí)。
差分QoS調(diào)度
先入先出( FIFO)排隊(duì)法是指先到達(dá)的分組先被發(fā)送,這和處理機(jī)任務(wù)調(diào)度的F IFO算法思想是一致的。系統(tǒng)每次發(fā)送位于等待隊(duì)列頭部的分組,新到的分組則加到隊(duì)列的尾部。當(dāng)一個(gè)新的分組到達(dá)而緩存已滿時(shí),就需要一個(gè)丟棄策略來(lái)決定丟棄分組。這里,使用隊(duì)尾丟棄(Drop Tail)策略, 丟棄最新到達(dá)的分組。根據(jù)使用SIP服務(wù)器在IP網(wǎng)絡(luò)中進(jìn)行多媒體通信時(shí)的三種數(shù)據(jù)包劃分三種不同的優(yōu)先級(jí),設(shè)置三個(gè)不同隊(duì)列,如圖2所示。
其中,用于建立實(shí)時(shí)業(yè)務(wù)連接的信令數(shù)據(jù)包,具有絕對(duì)高優(yōu)先級(jí),對(duì)應(yīng)接入隊(duì)列0,系統(tǒng)檢測(cè)到之后,直接轉(zhuǎn)發(fā),以保證實(shí)時(shí)通信業(yè)務(wù)可以隨時(shí)建立。SIP客戶端進(jìn)行多媒體通信的數(shù)據(jù)具有高優(yōu)先級(jí),對(duì)應(yīng)接入隊(duì)列1;普通數(shù)據(jù)具有地優(yōu)先級(jí),對(duì)應(yīng)接入隊(duì)列2。接入隊(duì)列1和2中的數(shù)據(jù)包都將等待系統(tǒng)轉(zhuǎn)發(fā)。系統(tǒng)每次進(jìn)入時(shí)間中斷進(jìn)行數(shù)據(jù)包發(fā)送時(shí),都先檢查高優(yōu)先級(jí)的接入隊(duì)列1,如果隊(duì)列中有數(shù)據(jù)包等待則轉(zhuǎn)發(fā)、退出;如果隊(duì)列為空,則檢查接入隊(duì)列2執(zhí)行相同的操作。這樣,多媒體業(yè)務(wù)會(huì)話就可以隨時(shí)建立,并進(jìn)行有服務(wù)質(zhì)量保證的實(shí)時(shí)傳輸。
測(cè)試平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
測(cè)試平臺(tái)拓?fù)浣Y(jié)構(gòu)
測(cè)試平臺(tái)由六臺(tái)計(jì)算機(jī)、一個(gè)AP和一個(gè)Hub組成,拓?fù)浣Y(jié)構(gòu)如圖3所示。測(cè)試網(wǎng)絡(luò)由一個(gè)無(wú)線局域網(wǎng)和一個(gè)有線局域網(wǎng)組成,兩個(gè)子網(wǎng)間的數(shù)據(jù)通過(guò)路由器(計(jì)算機(jī)F)來(lái)轉(zhuǎn)發(fā)。數(shù)據(jù)通過(guò)路由器時(shí),路由器將其截獲,然后根據(jù)不同的優(yōu)先級(jí)確定數(shù)據(jù)轉(zhuǎn)發(fā)的順序等,實(shí)現(xiàn)差分QoS調(diào)度。
圖3中計(jì)算機(jī)F裝有雙網(wǎng)卡,配置為路由器,同時(shí)運(yùn)行差分QoS調(diào)度算法,是測(cè)試平臺(tái)的核心部件。無(wú)線局域網(wǎng)由AP來(lái)組成,有兩個(gè)無(wú)線終端A和B。有線局域網(wǎng)中有兩臺(tái)計(jì)算機(jī)C和D。在A和C之間建立VoIP傳輸會(huì)話( Session) 1, 被賦予高優(yōu)先級(jí)。在B和D之間建立數(shù)據(jù)傳輸會(huì)話2,被賦予低優(yōu)先級(jí)。計(jì)算機(jī)E為SIP服務(wù)器,用于在兩個(gè)計(jì)算機(jī)終端上創(chuàng)建視頻會(huì)話。
測(cè)試平臺(tái)網(wǎng)絡(luò)配置
所有實(shí)現(xiàn)都在IPv6 下進(jìn)行,路由器和SIP服務(wù)器運(yùn)行Red Hat L inux 9操作系統(tǒng),其他計(jì)算機(jī)終端運(yùn)行Windows XP操作系統(tǒng)。無(wú)線局域網(wǎng)網(wǎng)絡(luò)前綴為3ffe: 327d: 8: 810: : /64,有線局域網(wǎng)網(wǎng)絡(luò)前綴為3ffe: 327d: 8: 811: : /64。
計(jì)算機(jī)F為路由器,無(wú)線和有線網(wǎng)絡(luò)中IPv6地址分別為3ffe: 327d: 8: 810: : 1 /64和3ffe: 327d: 8: 811: : 1 /64,并且開(kāi)啟路由功能,實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)的連接。網(wǎng)絡(luò)配置方法為:
ifconfig eth0 add 3ffe: 327d: 8: 810: : 1 /64
#添加IPv6地址
ifconfig eth1 add 3ffe: 327d: 8: 811: : 1 /64
echo 1 》 /p roc / sys/ net/ ipv6 / conf / all/ forwarding
#開(kāi)啟IPv6路由功能
計(jì)算機(jī)E作為SIP服務(wù)器,除設(shè)定IPv6地址之外,還需要為其配置默認(rèn)路由,以便不僅可以為本子網(wǎng)內(nèi)的主機(jī)提供服務(wù),而且可以為其他子網(wǎng)的主機(jī)提供服務(wù)。SIP服務(wù)器的IPv6地址為3ffe: 327d: 8: 811: : 111 /64, 默認(rèn)路由為3ffe:
327d: 8: 811: : 1 /64。設(shè)置方法如下:
ifconfig eth0 add 3ffe: 327d: 8: 811: : 1 /64
#添加IPv6地址
route - A inet6 add : : /0 gw 3ffe: 327d: 8: 811: : 1 /64
#添加默認(rèn)路由
計(jì)算機(jī)A和C的IP地址分別為3ffe: 327d: 8: 810: : 5 /64和3ffe: 327d: 8: 810: : 7 /64,默認(rèn)路由為3ffe: 327d: 8: 810: : 1 /64。計(jì)算機(jī)B和D的IP地址分別為3ffe: 327d: 8: 811: : 4 /64和3ffe: 327d: 8: 811: : 8 /64,默認(rèn)路由為3ffe: 327d: 8: 811: : 1 /64。計(jì)算機(jī)A~D運(yùn)行Windows XP操作系統(tǒng), IPv6配置方法與在Linux下有所不同。計(jì)算機(jī)A的配置方法為在命令行下使用命令:
ipv6 adu 4 /3ffe: 327d: 8: 810: : 5
#設(shè)定IPv6地址
ipv6 rtu 3ffe: 327d: 8: 810: : /64
#指定網(wǎng)絡(luò)前綴
ipv6 rtu : : /0 4 /3ffe: 327d: 8: 810: : 1
#設(shè)置默認(rèn)路由
計(jì)算機(jī)B~D配置方法同上,只是將相應(yīng)的IPv6地址和默認(rèn)路由作些改動(dòng)即可。
Linux可加載內(nèi)核模塊編程
測(cè)試平臺(tái)使用Linux可加載內(nèi)核模塊(Loadable KernelModule, LKM)來(lái)實(shí)現(xiàn)差分QoS調(diào)度。模塊(Module)是內(nèi)核空間運(yùn)行的程序,實(shí)際上是一種目標(biāo)對(duì)象文件,沒(méi)有鏈接,不能獨(dú)立運(yùn)行,但是其代碼可以在運(yùn)行時(shí)鏈接到系統(tǒng)中作為內(nèi)核的一部分運(yùn)行或從內(nèi)核取下,動(dòng)態(tài)擴(kuò)展內(nèi)核的功能。動(dòng)態(tài)可加載內(nèi)核模塊的目標(biāo)代碼一旦鏈接到內(nèi)核,作用和靜態(tài)鏈接的內(nèi)核目標(biāo)代碼完全等價(jià)。
每個(gè)LKM至少由兩個(gè)基本的函數(shù)組成,一個(gè)是用于初始化所有的數(shù)據(jù)的函數(shù)init_module ( ) ,一個(gè)是用于清除數(shù)據(jù)從而能安全地退出的函數(shù)cleanup_module ( ) 。為了在模塊中使用Netfitler的鉤子函數(shù),需要在初始化函數(shù)中調(diào)用nf_register_hook ( ) 函數(shù)注冊(cè)Netfiter Hook, 在清除函數(shù)中調(diào)用nf _unregister_hook ( )函數(shù)注銷Netfiter Hook。具體過(guò)程如下:
/ /定義并填充用于注冊(cè)函數(shù)的數(shù)據(jù)結(jié)構(gòu)
static struct nf_hook_op s post_route = {
{NULL, NULL},
DiffSev_post_route, / /處理函數(shù)
PF_ INET6, / /使用IPv6協(xié)議NF_ IP6_POST_ROUTING,
/ /使用IPv6的第一個(gè)Hook
NF_ IP6_PR I_F IRST,
/ /讓自己的函數(shù)首先執(zhí)行
};
/ /初始化程序
int init_module ()
{**
nf_register_hook (&post_route) ;
/ /注冊(cè)Netfiter Hook
return 0;
}
/ /清除程序
void cleanup_module ()
{
**
nf_unregister_hook (&post_route) ;
/ /注銷Netfiter Hook
return;
}
注冊(cè)鉤子函數(shù)后,需要編寫處理函數(shù),對(duì)截獲的數(shù)據(jù)包進(jìn)行處理。模塊獲取數(shù)據(jù)包后,判斷其優(yōu)先級(jí),然后根據(jù)放入不同的隊(duì)列,進(jìn)行業(yè)務(wù)差分的調(diào)度,保證實(shí)時(shí)業(yè)務(wù)的服務(wù)質(zhì)量。模塊在完成對(duì)數(shù)據(jù)包的操作之后,可以返回下列預(yù)定義的Netfiter返回之中的一個(gè)。
其中,最為常用的為前三個(gè)返回值。NF_DROP的含義是該數(shù)據(jù)包將被完全丟棄,所有為它分配的資源都應(yīng)當(dāng)被釋放。NF_ACCEP返回值告訴Netfilter到目前為止,該數(shù)據(jù)包還是被接受的并且該數(shù)據(jù)包應(yīng)當(dāng)被遞交到網(wǎng)絡(luò)堆棧的下一個(gè)階段。NF_STOLEN告訴Netfilter“忘掉”這個(gè)數(shù)據(jù)包。這里告訴Netfilter的是:該hook函數(shù)將從此開(kāi)始對(duì)數(shù)據(jù)包的處理,并且Netfilter應(yīng)當(dāng)放棄對(duì)該數(shù)據(jù)包做任何的處理。但是,這并不意味著該數(shù)據(jù)包的資源已經(jīng)被釋放。這個(gè)數(shù)據(jù)包以及它獨(dú)自的sk_buff數(shù)據(jù)結(jié)構(gòu)仍然有效,只是hook函數(shù)從Netfilter獲取了該數(shù)據(jù)包的所有權(quán)。
程序中對(duì)數(shù)據(jù)判斷時(shí),首先有一個(gè)對(duì)SIP服務(wù)器數(shù)據(jù)的處理,模塊對(duì)截獲數(shù)據(jù)包的源地址和目的地址進(jìn)行檢查,只要是發(fā)往和來(lái)自SIP的數(shù)據(jù)都將被無(wú)條件返回,返回值為NF_ACCEPT。這樣用作會(huì)話連接建立服務(wù)器的數(shù)據(jù)被看作是網(wǎng)絡(luò)信令數(shù)據(jù),獲得絕對(duì)的高優(yōu)先級(jí),保證了不同主機(jī)之間可以隨時(shí)建立連接。為了簡(jiǎn)化操作,這里我們只比較IPv6地址的最后32位來(lái)判斷。以下為數(shù)據(jù)包處理函數(shù)片斷:
unsigned intVowlan_post_route (unsigned int hooknum, struct sk_buff
3 3 skb, const struct net_device 3 in, const struct net_device 3
out, int (3 okfn) ( struct sk_buff 3 ) )
{
struct ipv6hdr 3 ipv6h = (3 skb) - 》 nh. ipv6h;
struct in6_addr saddr = ipv6h - 》 saddr;
struct in6_addr daddr = ipv6h - 》 daddr;
int p rio = addr_belong(daddr) ;
/ /SIP服務(wù)器數(shù)據(jù),不進(jìn)行處理,直接返回,具有絕對(duì)高優(yōu)先級(jí)
if ( saddr. s6_addr32 [3 ] = = 0x11010000) return NF_ACCEPT;
if (daddr. s6_addr32 [3 ] = = 0x11010000) return NF_ACCEPT;
**/ /區(qū)分QoS, 將數(shù)據(jù)插入不同的隊(duì)列
switch (p rio) {
case H IGH_PR IOR ITY: {
sendbuffer_insert(3 skb, H IGH_PR IOR ITY) ;
/ /加入高優(yōu)先級(jí)隊(duì)列
return NF_STOLEN;
}
case LOW_PR IOR ITY: {
sendbuffer_insert (3 skb, LOW_PR IOR ITY) ;
/ /加入低優(yōu)先級(jí)隊(duì)列
return NF_STOLEN; }
return NF_ACCEPT;
}
被加入不同優(yōu)先級(jí)隊(duì)列的數(shù)據(jù)包將被按照上一節(jié)中提到的調(diào)度算法被轉(zhuǎn)發(fā),因?yàn)楸疚闹荚诮榻B開(kāi)放式的試驗(yàn)平臺(tái),所以具體調(diào)度算法的程序?qū)崿F(xiàn)不再贅述。
編譯內(nèi)核模塊,將生成的DiffServ. o作為一個(gè)內(nèi)核模塊插入系統(tǒng),此模塊可以象其他系統(tǒng)模塊一樣進(jìn)行后臺(tái)運(yùn)行。當(dāng)內(nèi)核模塊不再需要時(shí),可以使用命令將其卸載。相應(yīng)命令分別如下:
insmod DiffServ. o / /加載內(nèi)核模塊
rmmod DiffServ / /卸載內(nèi)核模塊
實(shí)驗(yàn)演示結(jié)果
延時(shí)性能測(cè)試
首先讓會(huì)話1運(yùn)行多媒體視頻業(yè)務(wù),賦予高優(yōu)先級(jí);會(huì)話2運(yùn)行FTP數(shù)據(jù)傳輸業(yè)務(wù),賦予低優(yōu)先級(jí)。開(kāi)啟優(yōu)先級(jí)調(diào)度算法,使用IPv6下的Ping命令測(cè)定不同優(yōu)先級(jí)業(yè)務(wù)的通信延時(shí)情況。考慮程序開(kāi)銷等因素,測(cè)得高優(yōu)先級(jí)的會(huì)話1延時(shí)為11ms~230ms,低優(yōu)先級(jí)的會(huì)話2延時(shí)為40ms~359 7ms。很顯然,高優(yōu)先級(jí)的多媒體業(yè)務(wù)由于被賦予了高的優(yōu)先級(jí)而得到了更好的服務(wù)質(zhì)量。
多媒體業(yè)務(wù)通信演示
為了便于觀察算法調(diào)度效果,兩個(gè)會(huì)話都用來(lái)傳輸視頻業(yè)務(wù),改變優(yōu)先級(jí),觀察效果。先給兩個(gè)會(huì)話賦予相同的優(yōu)先級(jí)。這時(shí)兩個(gè)會(huì)話發(fā)起連接呼叫,由于SIP服務(wù)器被賦予了絕對(duì)高優(yōu)先級(jí),所以呼叫總能順利完成,兩個(gè)會(huì)話建立連接。由于程序開(kāi)銷等因素,建立連接后兩個(gè)視頻會(huì)話在通信時(shí),都會(huì)有一些數(shù)據(jù)丟失引起的不連續(xù)現(xiàn)象。這時(shí),將會(huì)話1調(diào)整為高優(yōu)先級(jí),會(huì)話2調(diào)整為低優(yōu)先級(jí),可以看到會(huì)話1視頻變得十分流暢,但是會(huì)話2的通信效果變得更差。效果如圖4所示,其中a為會(huì)話1效果, b為會(huì)話2效果,圖中有一只鳥(niǎo)在飛,當(dāng)鳥(niǎo)飛到白色標(biāo)桿處時(shí),會(huì)話2由于數(shù)據(jù)丟失,左側(cè)不遠(yuǎn)處還有鳥(niǎo)的影子,而會(huì)話1由于優(yōu)先級(jí)比較高,所以比較流暢,畫(huà)面比較清晰。
調(diào)整兩個(gè)會(huì)話的優(yōu)先級(jí),將會(huì)話2調(diào)整為高優(yōu)先級(jí),會(huì)話1調(diào)整為低優(yōu)先級(jí),這時(shí)看到會(huì)話2視頻變得十分流暢,但是會(huì)話1的通信效果變得較差。再切換優(yōu)先級(jí),反復(fù)進(jìn)行實(shí)驗(yàn),可以得到相同的效果,高優(yōu)先級(jí)的業(yè)務(wù)可以得到好的服務(wù)質(zhì)量,也就是說(shuō),可以通過(guò)優(yōu)先級(jí)設(shè)置來(lái)保證實(shí)時(shí)業(yè)務(wù)的傳輸。
結(jié)語(yǔ)
為了進(jìn)行實(shí)時(shí)多媒體業(yè)務(wù)QoS的研究,本文使用Linux操作系統(tǒng)基于IPv6設(shè)計(jì)并實(shí)現(xiàn)了的測(cè)試平臺(tái)。測(cè)試平臺(tái)使用NetFilter截獲數(shù)據(jù)包,然后根據(jù)具體算法對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行調(diào)度,實(shí)現(xiàn)QoS改善策略。測(cè)試平臺(tái)使用Linux的動(dòng)態(tài)可加載模塊技術(shù),以模塊的形式作為L(zhǎng)inux系統(tǒng)的一部分來(lái)運(yùn)行,所以效率較高,維護(hù)方便。實(shí)驗(yàn)表明,測(cè)試平臺(tái)工作穩(wěn)定,可以很好地支持QoS算法的測(cè)試,同時(shí),測(cè)試平臺(tái)有良好的開(kāi)放性,很容易在其基礎(chǔ)上驗(yàn)證其他的算法、方案,對(duì)于實(shí)時(shí)多媒體業(yè)務(wù)QoS研究測(cè)試有十分重要的意義。
責(zé)任編輯:gt
-
Linux
+關(guān)注
關(guān)注
87文章
11319瀏覽量
209830 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6847瀏覽量
123428 -
移動(dòng)通信
+關(guān)注
關(guān)注
10文章
2614瀏覽量
69930
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論