專利名稱:Linux下實(shí)現(xiàn)網(wǎng)絡(luò)加速的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,特別涉及在LINUX操作系統(tǒng)下利用軟件實(shí)現(xiàn)網(wǎng)絡(luò)加速的方法。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)設(shè)備的種類越來(lái)越多,而人們對(duì)網(wǎng)絡(luò)產(chǎn)品的性能要求也越來(lái)越高,對(duì)產(chǎn)品價(jià)格期望越來(lái)越便宜。傳統(tǒng)的加速方法通常采用純硬件加速,或者使用軟件配合硬件的實(shí)現(xiàn)方法對(duì)數(shù)據(jù)進(jìn)行加速,如果涉及到硬件實(shí)現(xiàn)加速,勢(shì)必會(huì)增加芯片的復(fù)雜度,進(jìn)而增加芯片的生產(chǎn)成本,進(jìn)而增加產(chǎn)品的成本。
發(fā)明內(nèi)容
本發(fā)明的目的是設(shè)計(jì)一種純軟件加速實(shí)現(xiàn)網(wǎng)絡(luò)加速的方法。本發(fā)明實(shí)現(xiàn)其發(fā)明目的所采用的技術(shù)方案是,LINUX下實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)加速的方法,包括以下步驟
步驟A、從網(wǎng)絡(luò)驅(qū)動(dòng)器獲得連接信息,判斷該連接是否已加入到連接表中,否則,將該連接加入到所述的連接表中;
步驟B、提取目的地址,判斷是從網(wǎng)絡(luò)層轉(zhuǎn)發(fā)還是從數(shù)據(jù)鏈路層轉(zhuǎn)發(fā),如果是數(shù)據(jù)鏈路層,則按照連接表直接發(fā)往接口驅(qū)動(dòng)的TX函數(shù),否則,轉(zhuǎn)入步驟C ;
步驟C、將協(xié)議字段提取出來(lái),進(jìn)行方向判斷,如果是從WAN向LAN,則轉(zhuǎn)向步驟D,如果是從LAN向WAN則轉(zhuǎn)向步驟F ;
步驟D、從WAN 口獲取協(xié)議類型,如果是IP協(xié)議,則替換源MAC、源IP報(bào)頭和源端口,轉(zhuǎn)向步驟E,如果是PPPOE協(xié)議,則替換源MAC、增加PPOE報(bào)頭,替換源IP和源端口,轉(zhuǎn)向步驟E,
步驟E、將數(shù)據(jù)直接送往LAN驅(qū)動(dòng)中的TX函數(shù);步驟F、判斷WAN協(xié)議類型,如果是PPOE協(xié)議,則剝除PPPOE報(bào)頭;步驟G、連接跟蹤表,替換目的IP地址、目的端口 ;步驟H、將數(shù)據(jù)發(fā)往網(wǎng)絡(luò)驅(qū)動(dòng)器。進(jìn)一步的,上述的LINUX下實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)加速的方法中所述的網(wǎng)絡(luò)驅(qū)動(dòng)器包括以太網(wǎng)絡(luò)驅(qū)動(dòng)和無(wú)線風(fēng)驅(qū)動(dòng)。進(jìn)一步的,上述的LINUX下實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)加速的方法中所述的步驟G中的跟蹤表為L(zhǎng)INUX協(xié)議棧連接跟蹤條目表。相對(duì)于傳統(tǒng)的加速器的實(shí)現(xiàn),本發(fā)明的軟件網(wǎng)絡(luò)加速技術(shù)方案實(shí)現(xiàn)有如下幾處創(chuàng)新
1、在離硬件最近處,即網(wǎng)絡(luò)驅(qū)動(dòng)層就進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。傳統(tǒng)的軟件網(wǎng)絡(luò)加速通常都是協(xié)議棧中實(shí)現(xiàn)加速,而不會(huì)在驅(qū)動(dòng)中去實(shí)現(xiàn),這種實(shí)現(xiàn)方式會(huì)導(dǎo)致加速性能不夠,當(dāng)前的軟件加速實(shí)現(xiàn)方法直接在網(wǎng)絡(luò)驅(qū)動(dòng)中對(duì)數(shù)據(jù)進(jìn)行加速,網(wǎng)絡(luò)數(shù)據(jù)觸發(fā)中斷后,直接進(jìn)行加速,不再進(jìn)行其它處理,這樣使得數(shù)據(jù)轉(zhuǎn)發(fā)處理非常高效;
2、在網(wǎng)絡(luò)驅(qū)動(dòng)中結(jié)合LINUX協(xié)議棧連接跟蹤條目表進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)加速。傳統(tǒng)的網(wǎng)絡(luò)加速器通常都是加速器模塊本身在對(duì)數(shù)據(jù)連接信息進(jìn)行解包,分析,然后將連接信息存儲(chǔ)起來(lái),在下次數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),然后再利用學(xué)習(xí)的連接信息進(jìn)行NAT替換,替換源地址和源端口,沒(méi)有充分利充利用協(xié)議棧本身的連接信息,當(dāng)前的軟件加速在數(shù)據(jù)進(jìn)入加速器入口前會(huì)檢查數(shù)據(jù)包是否已被加速器處理過(guò),如果沒(méi)有被處理過(guò),則走正常的網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑到協(xié)議棧中,在完成了正常的連接過(guò)程后,將數(shù)據(jù)連接信息添加到協(xié)議棧的信息表中,當(dāng)下次數(shù)據(jù)包過(guò)來(lái)時(shí),直接經(jīng)過(guò)加速器轉(zhuǎn)發(fā),將數(shù)據(jù)直接從LAN側(cè)轉(zhuǎn)發(fā)到WAN側(cè)。WAN側(cè)接收到的數(shù)據(jù)也采用同樣的處理方法進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā);
3、能同時(shí)對(duì)二層轉(zhuǎn)發(fā)及三層轉(zhuǎn)發(fā)的數(shù)據(jù)進(jìn)行加速處理,LAN<->LAN側(cè)的數(shù)據(jù)轉(zhuǎn)發(fā)通常是走二層,LAN<->WAN數(shù)據(jù)通信通常是走三層,共進(jìn)電子軟件加速功能能同時(shí)支持這兩種數(shù)據(jù)的加速轉(zhuǎn)發(fā),提高系統(tǒng)性能。下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行詳細(xì)地說(shuō)明。
圖1是網(wǎng)絡(luò)數(shù)據(jù)驅(qū)動(dòng)示意圖。圖2是發(fā)明流程圖。圖3是目前通過(guò)數(shù)據(jù)鏈路層傳送數(shù)據(jù)流程圖。圖4是增加了本發(fā)明的網(wǎng)絡(luò)數(shù)據(jù)加速方法的數(shù)據(jù)鏈路層傳送數(shù)據(jù)流程圖。圖5是目前通過(guò)網(wǎng)絡(luò)層傳送數(shù)據(jù)流程圖。圖6是增加了本發(fā)明的網(wǎng)絡(luò)數(shù)據(jù)加速方法的網(wǎng)絡(luò)層傳送數(shù)據(jù)流程圖。
具體實(shí)施例方式實(shí)施例1,如圖1所示,網(wǎng)絡(luò)數(shù)據(jù)主要有如下幾個(gè)入口點(diǎn)
以太網(wǎng)驅(qū)動(dòng),即上圖中的ET部分,LAN<->LAN,LAN<->WAN之間轉(zhuǎn)發(fā)的時(shí)候,數(shù)據(jù)從網(wǎng)口收到數(shù)據(jù)后即進(jìn)入ET模塊,在該模塊中進(jìn)行加速處理。另外,以太網(wǎng)驅(qū)動(dòng)還涉及LAN內(nèi)部數(shù)據(jù)傳輸加速。無(wú)線驅(qū)動(dòng),即上圖中的WL部分,WLAN<->LAN,WLAN<->WAN之間轉(zhuǎn)的時(shí)候,數(shù)據(jù)從無(wú)線網(wǎng)絡(luò)收到數(shù)據(jù)后即進(jìn)入莫塊,在該模塊中進(jìn)行數(shù)據(jù)加速處理。支持二層Bridge (數(shù)據(jù)鏈路層)和三層TCP/IP (網(wǎng)絡(luò)層)協(xié)議棧的數(shù)據(jù)加速二層(數(shù)據(jù)鏈路層)數(shù)據(jù)加速,按照正常的路徑,如圖3所示,先在ET或者WL驅(qū)動(dòng)部
分接收數(shù)據(jù),收到數(shù)據(jù)后將數(shù)據(jù)送往Linux Bridge中進(jìn)行轉(zhuǎn)發(fā),Bridge會(huì)進(jìn)行各種數(shù)據(jù)檢查,接口判斷等處理,會(huì)消耗較多的時(shí)間性能,在增加了軟件加速模塊后,直接在ET和WL模塊中進(jìn)行轉(zhuǎn)發(fā),不進(jìn)入Linux Bridge中進(jìn)行處理,提高數(shù)據(jù)轉(zhuǎn)發(fā)性能如圖4所示。三層(網(wǎng)絡(luò)層)數(shù)據(jù)加速,按照正常的路徑,如圖5所示,先有ET或者WL部分接收數(shù)據(jù),接著送往Linux Bridge中處理,再將數(shù)據(jù)往上傳遞到TCP/IP協(xié)議棧,經(jīng)過(guò)網(wǎng)絡(luò)處理進(jìn)行NAT轉(zhuǎn)換后再往ET或者WL驅(qū)動(dòng)中發(fā)送,整個(gè)路徑耗時(shí)較長(zhǎng),在增加了軟件加速模塊后,如圖6所示,直接在ET和WL模塊中進(jìn)行加速轉(zhuǎn)發(fā),提高數(shù)據(jù)轉(zhuǎn)發(fā)性能。如圖2所示,LINUX下實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)加速的方法,包括以下步驟步驟A、從網(wǎng)絡(luò)驅(qū)動(dòng)器獲得連接信息,判斷該連接是否已加入到連接表中,否則,將該連接加入到所述的連接表中;這里網(wǎng)絡(luò)驅(qū)動(dòng)器包括以太網(wǎng)絡(luò)驅(qū)動(dòng)ET和無(wú)線網(wǎng)絡(luò)驅(qū)動(dòng)WL。步驟B、提取目的地址,判斷是從網(wǎng)絡(luò)層轉(zhuǎn)發(fā)還是從數(shù)據(jù)鏈路層轉(zhuǎn)發(fā),如果是數(shù)據(jù)鏈路層,則按照連接表直接發(fā)往接口驅(qū)動(dòng)的TX函數(shù),否則,轉(zhuǎn)入步驟C ;
步驟C、將協(xié)議字段提取出來(lái),進(jìn)行方向判斷,如果是從WAN向LAN,則轉(zhuǎn)向步驟D,如果是從LAN向WAN則轉(zhuǎn)向步驟F ;
步驟D、從WAN 口獲取協(xié)議類型,如果是IP協(xié)議,則替換源MAC、源IP報(bào)頭和源端口,轉(zhuǎn)向步驟E,如果是PPPOE協(xié)議,則替換源MAC、增加PPOE報(bào)頭,替換源IP和源端口,轉(zhuǎn)向步驟E,
步驟E、將數(shù)據(jù)直接送往LAN驅(qū)動(dòng)中的TX函數(shù);步驟F、判斷WAN協(xié)議類型,如果是PPOE協(xié)議,則剝除PPPOE報(bào)頭;步驟G、連接跟蹤表,替換目的IP地址、目的端口 ;步驟H、將數(shù)據(jù)發(fā)往網(wǎng)絡(luò)驅(qū)動(dòng)器。數(shù)據(jù)轉(zhuǎn)發(fā)接口判斷二層數(shù)據(jù)轉(zhuǎn)發(fā)接口判斷,二層數(shù)據(jù)轉(zhuǎn)發(fā)接口判斷主要是依賴MAC地址的學(xué)習(xí),依據(jù)目標(biāo)MAC地址判斷數(shù)據(jù)應(yīng)該發(fā)往何接口,因此加速模塊會(huì)利用LinuxBridge中的br_fdb. c中對(duì)學(xué)習(xí)到的MAC地址信息進(jìn)行共享,軟件加速模塊直接利用共享的MAC地址信息對(duì)加速數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)。三層數(shù)據(jù)處理判斷,三層數(shù)據(jù)轉(zhuǎn)發(fā)主要是依據(jù)路由表和連接跟蹤信息對(duì)數(shù)據(jù)進(jìn)行修改和轉(zhuǎn)發(fā),因此加速模塊會(huì)利用Linux Netfilter模塊中的連接跟蹤信息進(jìn)行共享,在數(shù)據(jù)建立連接信息時(shí),將連接信息共享給軟件加速模塊,軟件加速模塊利用這些信息對(duì)數(shù)據(jù)包進(jìn)行NAT轉(zhuǎn)換,轉(zhuǎn)換后直接在LAN (ET,WL)<->WAN (ET)之間進(jìn)行轉(zhuǎn)發(fā)。軟件加速針對(duì)二層數(shù)據(jù)和三層數(shù)據(jù)需要進(jìn)行判斷
> 二層數(shù)據(jù)加速主要是進(jìn)行加速轉(zhuǎn)發(fā),在驅(qū)動(dòng)之間進(jìn)行數(shù)據(jù)傳遞.>三層數(shù)據(jù)的加速,還需要考慮到數(shù)據(jù)方向,LAN->WAN還是WAN->LAN,判定后根據(jù)連接跟蹤表進(jìn)行數(shù)據(jù)替換,也就是NAT轉(zhuǎn)換,轉(zhuǎn)換后再在驅(qū)動(dòng)中進(jìn)行數(shù)據(jù)傳遞。
權(quán)利要求
1.LINUX下實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)加速的方法,其特征在于包括以下步驟步驟A、從網(wǎng)絡(luò)驅(qū)動(dòng)器獲得連接信息,判斷該連接是否已加入到連接表中,否則,將該連接加入到所述的連接表中;步驟B、提取目的地址,判斷是從網(wǎng)絡(luò)層轉(zhuǎn)發(fā)還是從數(shù)據(jù)鏈路層轉(zhuǎn)發(fā),如果是數(shù)據(jù)鏈路層,則按照連接表直接發(fā)往接口驅(qū)動(dòng)的TX函數(shù),否則,轉(zhuǎn)入步驟C ;步驟C、將協(xié)議字段提取出來(lái),進(jìn)行方向判斷,如果是從WAN向LAN,則轉(zhuǎn)向步驟D,如果是從LAN向WAN則轉(zhuǎn)向步驟F ;步驟D、從WAN 口獲取協(xié)議類型,如果是IP協(xié)議,則替換源MAC、源IP報(bào)頭和源端口,轉(zhuǎn)向步驟E,如果是PPPOE協(xié)議,則替換源MAC、增加PPOE報(bào)頭,替換源IP和源端口,轉(zhuǎn)向步驟E,步驟E、將數(shù)據(jù)直接送往LAN驅(qū)動(dòng)中的TX函數(shù);步驟F、判斷WAN協(xié)議類型,如果是PPOE協(xié)議,則剝除PPPOE報(bào)頭;步驟G、連接跟蹤表,替換目的IP地址、目的端口 ;步驟H、將數(shù)據(jù)發(fā)往網(wǎng)絡(luò)驅(qū)動(dòng)器。
2.根據(jù)權(quán)利要求1所述的LINUX下實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)加速的方法,其特征在于所述的網(wǎng)絡(luò)驅(qū)動(dòng)器包括以太網(wǎng)絡(luò)驅(qū)動(dòng)和無(wú)線風(fēng)驅(qū)動(dòng)。
3.根據(jù)權(quán)利要求1所述的LINUX下實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)加速的方法,其特征在于所述的步驟G中的跟蹤表為L(zhǎng)INUX協(xié)議棧連接跟蹤條目表。
全文摘要
LINUX下實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)加速的方法,該方法通過(guò)判斷是二層轉(zhuǎn)發(fā)還是三層轉(zhuǎn)發(fā),對(duì)于二層轉(zhuǎn)發(fā)直接發(fā)送到TX函數(shù),如果是三層轉(zhuǎn)必,通過(guò)判斷不同的通信協(xié)議進(jìn)行不同的加速方法。本發(fā)明的主要特點(diǎn)是首先、在離硬件最近處,即網(wǎng)絡(luò)驅(qū)動(dòng)層就進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。其次在網(wǎng)絡(luò)驅(qū)動(dòng)中結(jié)合LINUX協(xié)議棧連接跟蹤條目表進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)加速。最后,能同時(shí)對(duì)二層轉(zhuǎn)發(fā)及三層轉(zhuǎn)發(fā)的數(shù)據(jù)進(jìn)行加速處理,LAN<->LAN側(cè)的數(shù)據(jù)轉(zhuǎn)發(fā)通常是走二層,LAN<->WAN數(shù)據(jù)通信通常是走三層。
文檔編號(hào)H04L12/56GK102394815SQ20111033405
公開(kāi)日2012年3月28日 申請(qǐng)日期2011年10月28日 優(yōu)先權(quán)日2011年10月28日
發(fā)明者羅小建 申請(qǐng)人:深圳市共進(jìn)電子股份有限公司