一種用戶態(tài)以太網(wǎng)協(xié)議實現(xiàn)無線上網(wǎng)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種用戶態(tài)以太網(wǎng)協(xié)議實現(xiàn)無線上網(wǎng)的方法。
【背景技術(shù)】
[0002]現(xiàn)有Iinux用戶態(tài)程序支持IEEE802.3協(xié)議,因此可以做到對802.3數(shù)據(jù)流量的處理以及功能的使用,但是用戶態(tài)程序不支持IEEE802.11等無線協(xié)議,也就無法處理802.11無線數(shù)據(jù)流量,而且因為流程較復(fù)雜,移植難度大,用戶態(tài)程序一般沒有進行兼容。
[0003]隨著移動終端用戶的不斷增加,移動互聯(lián)網(wǎng)的不斷發(fā)展,無線用戶的比重逐年增加,用戶態(tài)支持無線上網(wǎng)已經(jīng)是必然考慮的趨勢,不支持無線將會無法滿足廣大用戶的需求。
[0004]目前僅有極少部分用戶態(tài)程序?qū)o線數(shù)據(jù)流量處理進行了移植,但是由于整體無線流程太多,不同的無線網(wǎng)卡驅(qū)動對應(yīng)不同的自有驅(qū)動流程,所以一般只針對特定的無線網(wǎng)卡做特定處理。而用戶態(tài)移植了特定的無線網(wǎng)卡,雖滿足了用戶的需求,但是該功能與所支持的無線網(wǎng)卡形成了綁定關(guān)系,必然導致其兼容性,擴展性,可維護性不太好。
【發(fā)明內(nèi)容】
[0005]為了解決Iinux用戶態(tài)程序無法處理802.11數(shù)據(jù)流量的問題,本發(fā)明提出了一種用戶態(tài)以太網(wǎng)協(xié)議實現(xiàn)無線上網(wǎng)的方法,具體方案如下:
一種用戶態(tài)以太網(wǎng)協(xié)議實現(xiàn)無線上網(wǎng)的方法,其特征在于,所述方法包括:
Iinux內(nèi)核接收到無線網(wǎng)卡發(fā)送的802.11協(xié)議數(shù)據(jù)報文后,由Iinux內(nèi)核從802.11協(xié)議數(shù)據(jù)報文中截取802.3協(xié)議數(shù)據(jù)報文,并將截取到的802.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux用戶態(tài)程序進行處理;
Iinux用戶態(tài)程序?qū)⑻幚砗蟮?02.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux內(nèi)核,由Iinux內(nèi)核將802.3協(xié)議數(shù)據(jù)報文封裝為802.11協(xié)議數(shù)據(jù)報文后發(fā)送給無線網(wǎng)卡進行轉(zhuǎn)發(fā)。
[0006]優(yōu)選的,所述Iinux內(nèi)核接收到無線網(wǎng)卡發(fā)送的802.11協(xié)議數(shù)據(jù)報文后,由Iinux內(nèi)核從802.11協(xié)議數(shù)據(jù)報文中截取802.3協(xié)議數(shù)據(jù)報文具體為:
利用ieee80211_deliver_rx函數(shù)截取802.3協(xié)議數(shù)據(jù)報文并進行接收。
[0007]優(yōu)選的,所述并將截取到的802.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux用戶態(tài)程序具體為:
利用虛擬網(wǎng)絡(luò)設(shè)備tun/tap進行發(fā)送。
[0008]優(yōu)選的,所述Iinux用戶態(tài)程序?qū)⑻幚砗蟮?02.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux內(nèi)核具體為:
利用虛擬網(wǎng)絡(luò)設(shè)備tun/tap進行發(fā)送。
[0009]優(yōu)選的,所述由Iinux內(nèi)核將802.3協(xié)議數(shù)據(jù)報文封裝為802.11協(xié)議數(shù)據(jù)報文后發(fā)送給無線網(wǎng)卡進行轉(zhuǎn)發(fā)具體為: 利用ieee80211_subif_start_xmit函數(shù)截取802.3協(xié)議數(shù)據(jù)報文并進行發(fā)送。
[0010]本發(fā)明利用Iinux內(nèi)核對無線網(wǎng)卡的支持,由內(nèi)核提取無線數(shù)據(jù)流量中的相關(guān)數(shù)據(jù),通過內(nèi)核與用戶態(tài)的通信交換相關(guān)數(shù)據(jù)等特性,在用戶態(tài)實現(xiàn)對無線流程控制以及數(shù)據(jù)報文處理,實現(xiàn)了 Iinux操作系統(tǒng)中僅支持802.3用戶態(tài)協(xié)議類型的用戶態(tài)程序可以達到使用無線WIFI上網(wǎng)的目的。
【具體實施方式】
[0011]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他的實施例,都屬于本發(fā)明保護的范圍。
[0012]本發(fā)明提供的一種用戶態(tài)以太網(wǎng)協(xié)議實現(xiàn)無線上網(wǎng)的方法,具體方法如下所述: Iinux內(nèi)核接收到無線網(wǎng)卡發(fā)送的802.11協(xié)議數(shù)據(jù)報文后,由Iinux內(nèi)核從802.11協(xié)議數(shù)據(jù)報文中截取802.3協(xié)議數(shù)據(jù)報文,并將截取到的802.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux用戶態(tài)程序進行處理;
Iinux用戶態(tài)程序?qū)⑻幚砗蟮?02.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux內(nèi)核,由Iinux內(nèi)核將802.3協(xié)議數(shù)據(jù)報文封裝為802.11協(xié)議數(shù)據(jù)報文后發(fā)送給無線網(wǎng)卡進行轉(zhuǎn)發(fā)。
[0013]其中,所述Iinux內(nèi)核接收到無線網(wǎng)卡發(fā)送的802.11協(xié)議數(shù)據(jù)報文后,由Iinux內(nèi)核從802.11協(xié)議數(shù)據(jù)報文中截取802.3協(xié)議數(shù)據(jù)報文具體為:利用ieee80211_deliver_rx函數(shù)截取802.3協(xié)議數(shù)據(jù)報文并進行接收。
[0014]在Iinux內(nèi)核接收到來自無線網(wǎng)卡的IEEE802.11協(xié)議的數(shù)據(jù)報文后,由于Iinux用戶態(tài)程序不支持處理IEEE802.11協(xié)議的數(shù)據(jù)報文,僅支持處理IEEE802.3協(xié)議的數(shù)據(jù)報文,因此需要由Iinux內(nèi)核將IEEE802.11協(xié)議的數(shù)據(jù)報文轉(zhuǎn)化為IEEE802.3協(xié)議的數(shù)據(jù)報文,這里通過利用net/mac80211/rx.c中的ieee80211_deliver_rx函數(shù)來截取并接收IEEE802.3協(xié)議的數(shù)據(jù)報文。
[0015]其中,所述并將截取到的802.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux用戶態(tài)程序具體為:利用虛擬網(wǎng)絡(luò)設(shè)備tun/tap進行發(fā)送。
[0016]在Iinux內(nèi)核截取到的802.3協(xié)議的數(shù)據(jù)報文后,利用虛擬網(wǎng)絡(luò)設(shè)備tun/tap與Iinux用戶態(tài)進行通信,依靠tun_net_xmit函數(shù)即可將截取到的802.3協(xié)議的數(shù)據(jù)報文發(fā)送給Iinux用戶態(tài)程序。
[0017]其中,所述Iinux用戶態(tài)程序?qū)⑻幚砗蟮?02.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux內(nèi)核具體為:利用虛擬網(wǎng)絡(luò)設(shè)備tun/tap進行發(fā)送。
[0018]Iinux用戶態(tài)程序?qū)μ幚砗蟮?02.3協(xié)議數(shù)據(jù)報文進行發(fā)送給Iinux內(nèi)核同樣是利用虛擬網(wǎng)絡(luò)設(shè)備tun/tap與Iinux用戶態(tài)進行通信,Iinux內(nèi)核通過tun_get_usr函數(shù)接收處理后的802.3協(xié)議的數(shù)據(jù)報文。
[0019]其中,所述由Iinux內(nèi)核將802.3協(xié)議數(shù)據(jù)報文封裝為802.11協(xié)議數(shù)據(jù)報文后發(fā)送給無線網(wǎng)卡進行轉(zhuǎn)發(fā)具體為:利用ieee80211_subif_start_xmit函數(shù)截取802.3協(xié)議數(shù)據(jù)報文并進行發(fā)送。
[0020]在Iinux內(nèi)核接收到來自Iinux用戶態(tài)程序的IEEE802.3協(xié)議的數(shù)據(jù)報文后,也同樣需要由Iinux內(nèi)核將IEEE802.3協(xié)議的數(shù)據(jù)報文轉(zhuǎn)化為IEEE802.11協(xié)議的數(shù)據(jù)報文,再由無線網(wǎng)卡轉(zhuǎn)發(fā)出去,這里通過利用net/mac80211/tx.c中的ieee80211_subif_start_xmit函數(shù)來截取并發(fā)送IEEE802.3協(xié)議的數(shù)據(jù)報文。
[0021]具體實施例:
首先在硬件中添加無線網(wǎng)卡,在對應(yīng)的Iinux內(nèi)核(下述簡稱內(nèi)核)配置中打開無線網(wǎng)卡驅(qū)動支持,如rtl8188無線網(wǎng)卡,在內(nèi)核編譯menuconfig時開啟driver下wireless中對應(yīng)的rt18188\rt18192項,然后可使內(nèi)核上支持該無線網(wǎng)卡的無線功能。
[0022]無線網(wǎng)卡的內(nèi)核驅(qū)動會注冊網(wǎng)口,這里注冊的網(wǎng)口為wlanO,由于無線網(wǎng)卡的報文需要發(fā)送到Iinux用戶態(tài)程序(下述簡稱用戶態(tài))來完成相關(guān)業(yè)務(wù),所以需要提供給用戶態(tài)對應(yīng)的操作網(wǎng)口,那么需要在內(nèi)核網(wǎng)口注冊后,在用戶態(tài)對應(yīng)注冊同名網(wǎng)口,即wlanO,同時保證內(nèi)核與用戶態(tài)對應(yīng)接口的索引、配置(ip、mac等)一致。
[0023]內(nèi)核與用戶態(tài)的報文拷貝通過虛擬網(wǎng)卡tun/tap實現(xiàn),tun/tap在內(nèi)核和用戶態(tài)都有對應(yīng)的報文的讀出和寫入,從而實現(xiàn)內(nèi)核與用戶態(tài)通信;在用戶態(tài)注冊wlanO對應(yīng)的tap_wlan,使它們有對應(yīng)關(guān)系,彼此可以互相找到,在tap_wlan0接口上無配置信息,只作為連接內(nèi)核與用戶態(tài)的通道。
[0024]配置完成后,wlanO對應(yīng)的數(shù)據(jù)報文的接收和發(fā)送都會走net/mac80211/rx.c中的 ieee80211_deliver_rx 和 net/mac80211/tx.c 中的 ieee80211_subif_start_xmit,而且在這倆個函數(shù)里都可以截取到802.3協(xié)議數(shù)據(jù)報文,調(diào)用tun_net_Xmit可將數(shù)據(jù)報文發(fā)送到用戶態(tài)進行處理。報文到用戶態(tài)以后可以按照用戶態(tài)已有的處理流程調(diào)試,添加必要的標志位或者處理函數(shù),使其功能正常,這里報文的出接口需指定為wlanO,讓其回內(nèi)核發(fā)送或是其他處理。對于用戶態(tài)處理后返回內(nèi)核的報文,在tUn_get_Usr收到后,通過在用戶態(tài)添加的標志,來判斷使其直接調(diào)用wlanO->netdev_ops->ndo_start_xmit (該鉤子掛著wlanO的發(fā)送,即ieee80211_subif_start_xmit)發(fā)送,或者是讓其調(diào)用netif_rx_ni在內(nèi)核協(xié)議棧做相應(yīng)的處理。
[0025]通過內(nèi)核對無線網(wǎng)卡的支持,使用tap/tun實現(xiàn)內(nèi)核與用戶態(tài)通信,在內(nèi)核中進行無線報文收發(fā)和報文協(xié)議轉(zhuǎn)換,在用戶態(tài)實現(xiàn)對無線流程控制以及數(shù)據(jù)報文處理,從而實現(xiàn)使原本僅支持802.3協(xié)議的用戶態(tài)程序?qū)崿F(xiàn)802.11無線兼容。
[0026]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明權(quán)利要求所限定的范圍。
【主權(quán)項】
1.一種用戶態(tài)以太網(wǎng)協(xié)議實現(xiàn)無線上網(wǎng)的方法,其特征在于,所述方法包括: Iinux內(nèi)核接收到無線網(wǎng)卡發(fā)送的802.11協(xié)議數(shù)據(jù)報文后,由Iinux內(nèi)核從802.11協(xié)議數(shù)據(jù)報文中截取802.3協(xié)議數(shù)據(jù)報文,并將截取到的802.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux用戶態(tài)程序進行處理; Iinux用戶態(tài)程序?qū)⑻幚砗蟮?02.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux內(nèi)核,由Iinux內(nèi)核將802.3協(xié)議數(shù)據(jù)報文封裝為802.11協(xié)議數(shù)據(jù)報文后發(fā)送給無線網(wǎng)卡進行轉(zhuǎn)發(fā)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述Iinux內(nèi)核接收到無線網(wǎng)卡發(fā)送的802.11協(xié)議數(shù)據(jù)報文后,由Iinux內(nèi)核從802.11協(xié)議數(shù)據(jù)報文中截取802.3協(xié)議數(shù)據(jù)報文具體為: 利用ieee80211_deliver_rx函數(shù)截取802.3協(xié)議數(shù)據(jù)報文并進行接收。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述并將截取到的802.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux用戶態(tài)程序具體為: 利用虛擬網(wǎng)絡(luò)設(shè)備tun/tap進行發(fā)送。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述Iinux用戶態(tài)程序?qū)⑻幚砗蟮?02.3協(xié)議數(shù)據(jù)報文發(fā)送給Iinux內(nèi)核具體為: 利用虛擬網(wǎng)絡(luò)設(shè)備tun/tap進行發(fā)送。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述由Iinux內(nèi)核將802.3協(xié)議數(shù)據(jù)報文封裝為802.11協(xié)議數(shù)據(jù)報文后發(fā)送給無線網(wǎng)卡進行轉(zhuǎn)發(fā)具體為: 利用ieee80211_subif_start_xmit函數(shù)截取802.3協(xié)議數(shù)據(jù)報文并進行發(fā)送。
【專利摘要】本發(fā)明提供一種用戶態(tài)以太網(wǎng)協(xié)議實現(xiàn)無線上網(wǎng)的方法,所述方法包括:linux內(nèi)核接收到無線網(wǎng)卡發(fā)送的802.11協(xié)議數(shù)據(jù)報文后,由linux內(nèi)核從802.11協(xié)議數(shù)據(jù)報文中截取802.3協(xié)議數(shù)據(jù)報文,并將截取到的802.3協(xié)議數(shù)據(jù)報文發(fā)送給linux用戶態(tài)程序進行處理;linux用戶態(tài)程序?qū)⑻幚砗蟮?02.3協(xié)議數(shù)據(jù)報文發(fā)送給linux內(nèi)核,由linux內(nèi)核將802.3協(xié)議數(shù)據(jù)報文封裝為802.11協(xié)議數(shù)據(jù)報文后發(fā)送給無線網(wǎng)卡進行轉(zhuǎn)發(fā)。本發(fā)明通過內(nèi)核對無線網(wǎng)卡的支持,使用tap/tun實現(xiàn)內(nèi)核與用戶態(tài)通信,在內(nèi)核中進行無線報文收發(fā)和報文協(xié)議轉(zhuǎn)換,在用戶態(tài)實現(xiàn)對無線流程控制以及數(shù)據(jù)報文處理,從而實現(xiàn)使原本僅支持802.3協(xié)議的用戶態(tài)程序?qū)崿F(xiàn)802.11無線兼容。
【IPC分類】H04W28-06
【公開號】CN104796943
【申請?zhí)枴緾N201510123317
【發(fā)明人】高福亮, 李悅磊
【申請人】北京漢柏科技有限公司
【公開日】2015年7月22日
【申請日】2015年3月20日