專利名稱:一種linux內(nèi)核定位CPE業(yè)務(wù)流類型的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及ー種Iinux內(nèi)核定位CPE (客戶終端設(shè)備)業(yè)務(wù)流類型的方法。
背景技術(shù):
當(dāng)前,隨著市場和技術(shù)的變化使得固網(wǎng)運(yùn)營商正在尋求新的戰(zhàn)略轉(zhuǎn)型,傳統(tǒng)的通信業(yè)務(wù)正向信息娛樂、數(shù)字化生活領(lǐng)域擴(kuò)展,IPTV (交互式網(wǎng)絡(luò)電視)、VOIP (Voice overInternet Protocol,網(wǎng)絡(luò)電話)以及P2P(peer-to-peer,對等聯(lián)網(wǎng))應(yīng)用等業(yè)務(wù)種類不斷豐富。這使得寬帶網(wǎng)絡(luò)所承載的業(yè)務(wù)將從傳統(tǒng)互聯(lián)網(wǎng)業(yè)務(wù)為主逐步向多業(yè)務(wù)承載方向發(fā)展?,F(xiàn)有的在基于業(yè)務(wù)流的數(shù)據(jù)操作中,人們的認(rèn)識越來越偏向上層認(rèn)識。而且由于 操作的專業(yè)性,今后的面向普通用戶的處理方式也向基于業(yè)務(wù)流的策略和模板方式普及。以對httpd業(yè)務(wù)流進(jìn)行優(yōu)先保障處理為例,在處理之前需判斷出httpd業(yè)務(wù)流,而一般httpd服務(wù)通過業(yè)務(wù)接ロ即tcp80端ロ來實(shí)現(xiàn),因而傳統(tǒng)的對httpd業(yè)務(wù)流進(jìn)行優(yōu)先保障處理的方法如圖I所示首先判斷當(dāng)前的業(yè)務(wù)流的業(yè)務(wù)接ロ是否為tcp80端ロ,若是,則對其進(jìn)行高優(yōu)先級隊(duì)列處理,否則對其進(jìn)行默認(rèn)優(yōu)先級隊(duì)列處理。在正常情況下,這種傳統(tǒng)的以業(yè)務(wù)接ロ的類型為依據(jù)來判斷業(yè)務(wù)流的類型的判斷方式是沒有問題的,但是如果用戶臨時(shí)開啟了或者選用了其他業(yè)務(wù)接ロ(如8080端ロ)來實(shí)現(xiàn)相同的服務(wù),那么由于最初設(shè)置業(yè)務(wù)接ロ僅為tcp80端ロ,會造成8080端ロ的httpd服務(wù)進(jìn)入默認(rèn)優(yōu)先級別隊(duì)列,當(dāng)網(wǎng)絡(luò)流量超過帶寬限制時(shí)就會因?yàn)榱髁扛偁幎鴮?dǎo)致丟包,違背用戶的初衷。為了解決此問題,最直接的辦法是進(jìn)行代碼修改,増加ー個(gè)8080端ロ的判斷條件。這確實(shí)解決了當(dāng)前的問題,但是如果用戶在之后再次進(jìn)行修改,或者多個(gè)用戶均有特殊要求,那這樣毎次都要去改動(dòng)代碼來改動(dòng)業(yè)務(wù)接ロ類型,不僅操作麻煩,而且容易使得代碼混亂。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供ー種Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,避免每更改一次業(yè)務(wù)接ロ就要修改一次代碼,簡化操作。本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的?!NIinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,包括
預(yù)定義各種業(yè)務(wù)流類型的對應(yīng)標(biāo)識;
為套接字結(jié)構(gòu)體struct sock擴(kuò)展成員變量serviceType,通過setsocketopt設(shè)置套接字選項(xiàng)標(biāo)識當(dāng)前socket套接字對應(yīng)的業(yè)務(wù)流類型;
為數(shù)據(jù)包結(jié)構(gòu)體struct skb_buff擴(kuò)展成員變量serviceType,通過套接字結(jié)構(gòu)體成員serviceType標(biāo)識當(dāng)前skb數(shù)據(jù)包對應(yīng)的服務(wù)類型。其中,還包括在當(dāng)前Skb數(shù)據(jù)包的服務(wù)類型有更改時(shí),重新設(shè)置所述套接字結(jié)構(gòu)體struct sock的擴(kuò)展成員變量serviceType為新的對應(yīng)的業(yè)務(wù)流類型標(biāo)識。其中,還包括在對所述當(dāng)前skb數(shù)據(jù)包標(biāo)識后內(nèi)核傳輸層發(fā)送該skb數(shù)據(jù)包。
其中,還包括在應(yīng)用層,擴(kuò)展netfilter模塊來為網(wǎng)絡(luò)層和鏈路層匹配服務(wù)類型,對業(yè)務(wù)流進(jìn)行后續(xù)操作。其中,所述套接字結(jié)構(gòu)體struct sock的擴(kuò)展成員變量serviceType以及數(shù)據(jù)包結(jié)構(gòu)體struct skb_buff的擴(kuò)展成員變量serviceType,均為32位,位定義為:l_12bit用于存儲業(yè)務(wù)流類型標(biāo)識,13-16bit用于存儲建議的優(yōu)先級別。其中,預(yù)定義的各種業(yè)務(wù)流類型包括ICMP、ICMPV6、DHCP、HTTP、FTP、TFIP、SIP、RTSP, IPTV、VOIP 和 / 或 TR069 業(yè)務(wù)類 型。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下有益效果。本發(fā)明實(shí)施例中,在初始時(shí)刻設(shè)置一個(gè)獨(dú)立的變量,用以存儲默認(rèn)的業(yè)務(wù)流類型標(biāo)識信息,在業(yè)務(wù)服務(wù)過程中為當(dāng)前的業(yè)務(wù)流數(shù)據(jù)包添加默認(rèn)的業(yè)務(wù)流類型標(biāo)識。這樣,不管通過哪個(gè)業(yè)務(wù)接口實(shí)現(xiàn),只要明確當(dāng)前業(yè)務(wù)流的類型,用戶只需將獨(dú)立變量的值更改為當(dāng)前的業(yè)務(wù)流的類型標(biāo)識即可,為之后的不同業(yè)務(wù)流處理提供可靠的判斷依據(jù),同時(shí)增強(qiáng)了代碼的清晰性和可控性。
圖I是傳統(tǒng)的對httpd業(yè)務(wù)流進(jìn)行優(yōu)先保障處理的方法流程圖。圖2是本發(fā)明實(shí)施例中Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的思路圖。圖3是本發(fā)明實(shí)施例中Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法流程圖。圖4是本發(fā)明實(shí)施例中為struct sock結(jié)構(gòu)體擴(kuò)展的成員變量serviceType結(jié)構(gòu)圖。
具體實(shí)施例方式本發(fā)明的核心思想為如圖2所示,建立socket套接字,通過setsocketopt設(shè)置業(yè)務(wù)流類型標(biāo)識,以表明socket屬于哪種服務(wù)類型;在發(fā)送報(bào)文時(shí),當(dāng)前的skb數(shù)據(jù)包打上上述業(yè)務(wù)流類型標(biāo)識以表明當(dāng)前的數(shù)據(jù)包屬于哪種服務(wù)類型;擴(kuò)展netfilter模塊來匹配服務(wù)類型,對業(yè)務(wù)流進(jìn)行后續(xù)操作。為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖3所示,本實(shí)施例中Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法包括步驟
301、為套接字結(jié)構(gòu)體struct sock擴(kuò)展一個(gè)成員變量serviceType,其結(jié)構(gòu)如圖3所
示。serviceType的位具體定義如表I所示
表I
權(quán)利要求
1.一種Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,其特征在于,該方法包括 預(yù)定義各種業(yè)務(wù)流類型的對應(yīng)標(biāo)識; 為套接字結(jié)構(gòu)體struct sock擴(kuò)展成員變量serviceType,通過setsocketopt設(shè)置套接字選項(xiàng)標(biāo)識當(dāng)前socket套接字對應(yīng)的業(yè)務(wù)流類型; 為數(shù)據(jù)包結(jié)構(gòu)體struct skb_buff擴(kuò)展成員變量serviceType,通過套接字結(jié)構(gòu)體成員serviceType標(biāo)識當(dāng)前skb數(shù)據(jù)包對應(yīng)的服務(wù)類型。
2.如權(quán)利要求I所述Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,其特征在于,該方法還包括在當(dāng)前skb數(shù)據(jù)包的服務(wù)類型有更改時(shí),重新設(shè)置所述套接字結(jié)構(gòu)體struct sock的擴(kuò)展成員變量serviceType為新的對應(yīng)的業(yè)務(wù)流類型標(biāo)識。
3.如權(quán)利要求2所述Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,其特征在于,該方法還包括在對所述當(dāng)前skb數(shù)據(jù)包標(biāo)識后內(nèi)核傳輸層發(fā)送該skb數(shù)據(jù)包?!?br>
4.如權(quán)利要求3所述Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,其特征在于,該方法還包括在應(yīng)用層,擴(kuò)展netfilter模塊來為網(wǎng)絡(luò)層和鏈路層匹配服務(wù)類型,對業(yè)務(wù)流進(jìn)行后續(xù)操作。
5.如權(quán)利要求I至4任一所述Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,其特征在于,所述套接字結(jié)構(gòu)體struct sock的擴(kuò)展成員變量serviceType以及數(shù)據(jù)包結(jié)構(gòu)體structskb_buff的擴(kuò)展成員變量serviceType,均為32位,位定義為l_12bit用于存儲業(yè)務(wù)流類型標(biāo)識,13-16bit用于存儲建議的優(yōu)先級別。
6.如權(quán)利要求I所述Iinux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,其特征在于,預(yù)定義的各種業(yè)務(wù)流類型包括ICMP、ICMPV6、DHCP、HTTP、FTP、TFIP、SIP、RTSP, IPTV、VOIP 和 / 或TR069業(yè)務(wù)類型。
全文摘要
本發(fā)明提供了一種linux內(nèi)核定位CPE業(yè)務(wù)流類型的方法,包括預(yù)定義各種業(yè)務(wù)流類型的對應(yīng)標(biāo)識;為套接字結(jié)構(gòu)體structsock擴(kuò)展成員變量serviceType,通過setsocketopt設(shè)置套接字選項(xiàng)標(biāo)識當(dāng)前socket套接字對應(yīng)的業(yè)務(wù)流類型;為數(shù)據(jù)包結(jié)構(gòu)體structskb_buff擴(kuò)展成員變量serviceType,通過套接字結(jié)構(gòu)體成員serviceType標(biāo)識當(dāng)前skb數(shù)據(jù)包對應(yīng)的服務(wù)類型。本發(fā)明通過一個(gè)獨(dú)立的變量存儲默認(rèn)的業(yè)務(wù)流類型標(biāo)識信息,再為當(dāng)前的業(yè)務(wù)流數(shù)據(jù)包添加默認(rèn)的業(yè)務(wù)流類型標(biāo)識。這樣在需要時(shí),用戶只需將獨(dú)立變量的值更改為當(dāng)前的業(yè)務(wù)流的類型標(biāo)識即可,為之后的不同業(yè)務(wù)流處理提供可靠的判斷依據(jù),同時(shí)增強(qiáng)了代碼的清晰性和可控性。
文檔編號G06F17/30GK102739523SQ20121018242
公開日2012年10月17日 申請日期2012年6月5日 優(yōu)先權(quán)日2012年6月5日
發(fā)明者周明明 申請人:深圳市共進(jìn)電子股份有限公司