一種基于雙重優(yōu)先級的路由帶寬分配方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及路由帶寬分配的技術(shù)領(lǐng)域,具體涉及一種基于雙重優(yōu)先級的路由帶寬分配方法。
【背景技術(shù)】
[0002]近年來,無論在家里、辦公室或是其他公共場合,各種能夠支持網(wǎng)絡(luò)接入的設(shè)備越來越多。然而每種上網(wǎng)設(shè)備對于網(wǎng)路對于網(wǎng)絡(luò)帶寬的分配都是公平競爭的,路由交換設(shè)備在網(wǎng)絡(luò)帶寬的分配上也都是先到先得,隨機分配??紤]如下場景:各種設(shè)備通過路由交換設(shè)備接入互聯(lián)網(wǎng),假如當(dāng)前路由交換設(shè)備入網(wǎng)側(cè)出現(xiàn)了擁塞,此時將會影響所有接入終端的上網(wǎng)體驗。如果某個用戶希望當(dāng)前的某臺設(shè)備中的某個應(yīng)用能夠優(yōu)先享用帶寬(比如希望筆記本看電影),對于該場景下的用戶需求,現(xiàn)有的路由交換設(shè)備不能解決該問題。
[0003]現(xiàn)有的路由器并不支持對基于設(shè)備的帶寬分配,即通過對不同的設(shè)備進行優(yōu)先級劃分,并根據(jù)優(yōu)先級來進行各個設(shè)備的帶寬分配。同時,每臺設(shè)備上都會同時運行多個應(yīng)用,目前的路由交換設(shè)備也并不支持對各個應(yīng)用的類型區(qū)分。而伴隨著越來越多的接入設(shè)備陸續(xù)出現(xiàn),各種應(yīng)用也相繼推出,用戶對于不同設(shè)備上的不同應(yīng)用在特定時刻會有不同的帶寬需求,現(xiàn)有的路由交換設(shè)備也愈加難以滿足各種帶寬靈活化需求。
[0004]申請?zhí)枮?01410258042.5,專利名稱為一種帶寬分配的方法及路由器的中國發(fā)明專利申請。其公開的技術(shù)方案是:通過對不同的應(yīng)用進行優(yōu)先級區(qū)分,以實現(xiàn)動態(tài)調(diào)整業(yè)務(wù)的上行和下行帶寬。但是,該技術(shù)方案是針對所有用戶,并未對用戶進行優(yōu)先級區(qū)分;其次,該方案只是針對不同的應(yīng)用進行優(yōu)先級劃分,而對于應(yīng)用來說,往往包含多種業(yè)務(wù)流,比如音頻、視頻、文件等,并未給出針對以流為粒度的優(yōu)先級區(qū)分。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題是提供一種基于雙重優(yōu)先級的路由帶寬分配方法,解決了現(xiàn)有路由交換設(shè)備無法動態(tài)解決用戶對于設(shè)備和應(yīng)用的靈活帶寬的需求,能夠動態(tài)的根據(jù)用戶的需求調(diào)整不同設(shè)備不同應(yīng)用的帶寬分配;通過對不同的接入用戶進行優(yōu)先級劃分,針對各個用戶的需求實現(xiàn)以流為粒度的優(yōu)先級設(shè)置,其帶寬分配考慮因素更加全面,動態(tài)分配方式更加靈活。
[0006]本發(fā)明的技術(shù)方案是:一種基于雙重優(yōu)先級的路由帶寬分配方法,其步驟如下: 步驟一:用戶利用優(yōu)先級調(diào)度模塊實現(xiàn)設(shè)備或業(yè)務(wù)流的優(yōu)先級設(shè)置;
步驟二:業(yè)務(wù)流分析模塊利用類型識別方法對業(yè)務(wù)流的類型進行識別;
步驟三:維護設(shè)備信息表;
步驟四:根據(jù)業(yè)務(wù)流分析模塊對數(shù)據(jù)包的信息分析,將數(shù)據(jù)包放入對應(yīng)的數(shù)據(jù)隊列;步驟五:根據(jù)用戶設(shè)置的優(yōu)先級,調(diào)整不同數(shù)據(jù)隊列的發(fā)送長度和發(fā)送順序,實現(xiàn)動態(tài)調(diào)度;
步驟六:收、發(fā)數(shù)據(jù)包。
[0007]所述優(yōu)先級調(diào)度模塊用于提供用戶進行優(yōu)先級設(shè)置,并根據(jù)設(shè)置結(jié)果進行數(shù)據(jù)包的動態(tài)調(diào)度;優(yōu)先級調(diào)度模塊包括優(yōu)先級設(shè)置單元和隊列調(diào)度單元;優(yōu)先級設(shè)置單元用于提供用戶優(yōu)先級設(shè)置的接口,進行優(yōu)先級設(shè)置;隊列調(diào)度單元用于根據(jù)優(yōu)先級設(shè)置單元設(shè)置的優(yōu)先級結(jié)果對數(shù)據(jù)包進行隊列調(diào)度,實現(xiàn)高優(yōu)先級的數(shù)據(jù)包優(yōu)先進行收發(fā)。
[0008]所述優(yōu)先級設(shè)置單元在路由交換側(cè)提供一個用戶交互界面,用戶交互界面包含已經(jīng)接入的各個設(shè)備以及各個設(shè)備正在通信的業(yè)務(wù)流。
[0009]所述隊列調(diào)度包括隊列長度和隊列發(fā)送順序的調(diào)整。
[0010]所述業(yè)務(wù)流分析模塊用于監(jiān)測、識別業(yè)務(wù)流信息;業(yè)務(wù)流分析模塊以LKM形式加載,其為內(nèi)核態(tài),可伴隨系統(tǒng)自啟動;業(yè)務(wù)流分析模塊包括設(shè)備信息單元和業(yè)務(wù)流信息識別單元,設(shè)備信息單元和業(yè)務(wù)流信息識別單元均掛載在Linux系統(tǒng)的內(nèi)核態(tài)下;設(shè)備信息單元用于對所有接入的設(shè)備進行信息維護;業(yè)務(wù)流信息識別單元用于對數(shù)據(jù)包進行信息識另IJ,分析數(shù)據(jù)包類型。
[0011]所述設(shè)備信息單元對所有接入的設(shè)備進行信息維護的具體實現(xiàn)方法是:在操作系統(tǒng)內(nèi)核狀態(tài)下設(shè)置掛載點,在掛載點掛載鉤子函數(shù),鉤子函數(shù)分析并提取通信的數(shù)據(jù)包的具體字段值,根據(jù)設(shè)備信息表進行HASH運算,確定該數(shù)據(jù)包屬于哪個設(shè)備。
[0012]所述業(yè)務(wù)流信息識別單元利用類型識別方法實現(xiàn)數(shù)據(jù)包的信息識別;類型識別方法包括端口識別法、L7識別法和深度包檢測法;所述改進的鉤子函數(shù)為將掛載到內(nèi)核態(tài)下的鉤子函數(shù)所在操作系統(tǒng)的掛載點編寫字段提取函數(shù)。
[0013]所述設(shè)備信息表可以對各個終端設(shè)置唯一的ID編號,內(nèi)容包括設(shè)備ID信息和對應(yīng)的業(yè)務(wù)類型;所述設(shè)備ID信息使用IP地址或MAC地址,設(shè)備ID信息維護通過在路由交換側(cè)為新接入的設(shè)備建立新的條目ID信息實現(xiàn)。
[0014]所述設(shè)備信息表為二重Hash鏈表結(jié)構(gòu),第一重Hash表維護各個ID信息,第二重Hash表的各個入口存放對應(yīng)業(yè)務(wù)類型的信息。
[0015]所述業(yè)務(wù)流分析模塊對數(shù)據(jù)包的信息分析的方法是:業(yè)務(wù)流分析模塊在第一重HASH表中,根據(jù)數(shù)據(jù)包的源IP地址進行Hash運算,設(shè)備信息表中的ID值為IP地址或MAC地址,可以根據(jù)IP地址或MAC地址對應(yīng)到相應(yīng)的設(shè)備的ID信息,便能定位到相應(yīng)的ID入口 ;業(yè)務(wù)流信息識別單元根據(jù)L7識別法識別出數(shù)據(jù)包的類型為視頻、音頻、文件或其他;第二重HASH表的入口是以協(xié)議類型進行索引的,業(yè)務(wù)流信息識別單元分析出協(xié)議類型后,就可以根據(jù)協(xié)議類型直接索引到對應(yīng)的類型入口處。
[0016]本發(fā)明是基于Linux下的Netfilter框架實現(xiàn)的,各個模塊是以LKM (LoadableKernel Modules)形式動態(tài)加載在路由交換系統(tǒng)上,對系統(tǒng)原有功能不會造成任何兼容性的問題;路由交換設(shè)備可以根據(jù)用戶的需求動態(tài)調(diào)整不同設(shè)備和應(yīng)用的帶寬分配,即支持以設(shè)備為粒度和以應(yīng)用為粒度的雙重優(yōu)先級調(diào)整方式;用戶在使用過程中可以根據(jù)需求進行動態(tài)調(diào)整,可以根據(jù)用戶的優(yōu)先級設(shè)置實時準(zhǔn)確的進行帶寬分配,大幅提升了用戶體驗。
【附圖說明】
[0017]圖1為本發(fā)明的流程圖。
[0018]圖2為雙Hash鏈表的隊列調(diào)度結(jié)構(gòu)示意圖。
【具體實施方式】
[0019]為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合實施例,對本發(fā)明進行詳細的說明。應(yīng)當(dāng)說明的是,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0020]實施例1
一種基于雙重優(yōu)先級的路由帶寬分配方法,其步驟如下:
步驟一:用戶利用優(yōu)先級調(diào)度模塊實現(xiàn)設(shè)備或業(yè)務(wù)流的優(yōu)先級設(shè)置。
[0021]優(yōu)先級調(diào)度模塊用于提供用戶進行優(yōu)先級設(shè)置,并根據(jù)設(shè)置結(jié)果進行數(shù)據(jù)包的動態(tài)調(diào)度。優(yōu)先級調(diào)度模塊包括優(yōu)先級設(shè)置單元和隊列調(diào)度單元。優(yōu)先級設(shè)置單元用于提供給用戶優(yōu)先級設(shè)置的接口,進行優(yōu)先級設(shè)置。優(yōu)先級設(shè)置單元可以是在路由交換側(cè)提供一個用戶交互界面(具體實現(xiàn)方式不予以要求),界面包含已經(jīng)接入的各個設(shè)備以及各個設(shè)備正在通信的業(yè)務(wù)流。同時,可以提供幾種現(xiàn)成的優(yōu)先級供用戶選擇,比如最高優(yōu)先級、高優(yōu)先級、一般優(yōu)先級和低優(yōu)先級等。用戶可以通過用戶交互界面對各個設(shè)備或各個設(shè)備的業(yè)務(wù)流設(shè)置對應(yīng)的優(yōu)先級。隊列調(diào)度單元用于根據(jù)優(yōu)先級設(shè)置單元設(shè)置的優(yōu)先級結(jié)果對數(shù)據(jù)包進行隊列調(diào)度,實現(xiàn)高優(yōu)先級的數(shù)據(jù)包優(yōu)先進行收發(fā)。隊列調(diào)度包括隊列長度和隊列發(fā)送順序的調(diào)整。比如現(xiàn)在有四個隊列,分別對應(yīng)視頻、音頻、文件、其他,目前視頻的優(yōu)先級最高,音頻其次,文件一般,其他最低,則隊列調(diào)度時候,首先會先從視頻隊列發(fā)送10個數(shù)據(jù)包,再從音頻發(fā)從7個數(shù)據(jù)包,然后從文件隊列發(fā)送5個數(shù)據(jù)包,最后再從其他隊列發(fā)送2個數(shù)據(jù)包,每次發(fā)送順序按照上述示例,依次循環(huán)發(fā)送。需要說明的是,以上每次發(fā)送數(shù)據(jù)包的個數(shù)可以參考實現(xiàn),但是不限于此。
[0022]步驟二:業(yè)務(wù)流分析模塊利用類型識別方法對業(yè)務(wù)流的類型進行識別。
[0023]業(yè)務(wù)流分析模塊用于監(jiān)測、識別業(yè)務(wù)流信息。業(yè)務(wù)流分析模塊以LKM形式加載,其為內(nèi)核態(tài),可伴隨系統(tǒng)自啟動。業(yè)務(wù)流信息是指其數(shù)據(jù)包的類型屬性,具體類型包括視頻、音頻、文件和其他?,F(xiàn)有比較成熟的類型識別方法有端口識別法、L7識別法和深度包檢測(DPI)。L7識別法是通過調(diào)用L7識別庫中的識別函數(shù)識別出業(yè)務(wù)流信息,即數(shù)據(jù)包的類型。L7識別庫里面包含了已經(jīng)實現(xiàn)的識別函數(shù),L7識別庫是一個開源的實現(xiàn)項目,已經(jīng)提供了現(xiàn)成的調(diào)用接口,僅僅需要將其加載到實現(xiàn)工程中,動態(tài)調(diào)用即可。
[0024]業(yè)務(wù)流分析模塊包括設(shè)備信息單元和業(yè)務(wù)流信息識別單元,設(shè)備信息單元和業(yè)務(wù)流信息識別單元均掛載在Linux系統(tǒng)的內(nèi)核態(tài)下。設(shè)備信息單元用于對所有接入的設(shè)備進行信息維護。數(shù)據(jù)包包含源IP地址、目的IP地址、源端口、目的端口和協(xié)議類型。通過在操作系統(tǒng)內(nèi)核狀態(tài)下提供掛載點,在掛載點掛載鉤子函數(shù),可以對數(shù)據(jù)包進行字段提取,獲取以上各個信息。鉤子函數(shù)分析并提取數(shù)據(jù)包的具體字段值,根據(jù)IP地址或MAC地址進行Hash運算,確定該數(shù)據(jù)包屬于哪個設(shè)備,從而自動提取通信的數(shù)據(jù)包。由于這兩種地址與設(shè)備ID有著一一對應(yīng)的關(guān)系,所以將這兩種地址輸入Hash函數(shù),就可以得出所對應(yīng)的設(shè)備ID。業(yè)務(wù)流信息識別單元用于對數(shù)據(jù)包進行信息識別,分析數(shù)據(jù)包類型。業(yè)務(wù)流信息識別單元利用類型識別方法實現(xiàn)數(shù)據(jù)包的信息識別。
[0025]步驟三:維護設(shè)備信息表。
[0026]為了對接入的設(shè)備進行更好的維護,在路由交換側(cè)需要維護一張設(shè)備信息表,對各個終端設(shè)置唯一的ID編號,內(nèi)容包括設(shè)備ID信息和對應(yīng)的業(yè)務(wù)類型。設(shè)備ID信息可以使用 IP 地址或 MAC 地址,eg:1P 地址 192.168.1.3 或 MAC 地址:11:22:33:44:55:66。設(shè)備ID信息維護通過對于新接入的設(shè)備,路由交換側(cè)為該設(shè)備建立新的條目ID信息實現(xiàn)。具體地,對每個ID編號維護一張應(yīng)用鏈表,可以使用二重Hash鏈表結(jié)構(gòu)。其中,第一重Hash表維護各個ID信息,第二重Hash表的各個入口存放對應(yīng)業(yè)務(wù)類型的信息。
[