基于嵌入式Linux系統(tǒng)的3G/4G路由器設計2014-08-21 10:15:25 [導讀] 3G的接人技術(shù)已經(jīng)從WCDMA/TD- SCDMA/CD-MA2000發(fā)展到HSDPA、HSUPA 以及HSPA+ ,并開始由3G 網(wǎng)絡向4G網(wǎng)絡過渡。目前HSDPA的接入帶寬可以達到7.2 Mbps,HSPA+ 的接人帶寬可以達到21 Mbps,而即將部署的LTE的網(wǎng)絡帶寬甚至達到了100 Mbps 。 3G的接人技術(shù)已經(jīng)從WCDMA/TD- SCDMA/CD-MA2000發(fā)展到HSDPA、HSUPA 以及HSPA+ ,并開始由3G 網(wǎng)絡向4G網(wǎng)絡過渡。目前HSDPA的接入帶寬可以達到7.2 Mbps,HSPA+ 的接人帶寬可以達到21 Mbps,而即將部署的LTE的網(wǎng)絡帶寬甚至達到了100 Mbps 。同時,由于接人移動互聯(lián)網(wǎng) 的智能終端的數(shù)量快速增長,人們對移動互聯(lián)網(wǎng)的應用需求也日益增長。當人們面對幾十兆帶寬甚至是上百兆帶寬時,必定存在帶寬的過剩問題,即人們不需要在任何時刻都需要這么大的帶寬,因而可以將過剩的用戶帶寬分配給更多的用戶。 目前,WiFi技術(shù)能夠支持IEEE的802.11b、 802.11g和802.1ln標準,分別支持10 Mbps、54 Mbps和300 Mbps的無線傳輸速率。而在傳輸距離上,WiFi能夠在幾米到100 m范圍內(nèi)實現(xiàn)完全覆蓋。 本文正是基于3G/4G 不斷增長的接入帶寬以及WiFi技術(shù)的各項優(yōu)點,提出了一種共享3G/4G 網(wǎng)絡帶寬的無線路由器設計方案。該方案首先利用嵌入式Linux系統(tǒng),構(gòu)建一個基于WiFi技術(shù)的無線局域網(wǎng),智能終端等用戶可以利用自帶的WiFi功能接入該無線局域網(wǎng),然后再將該無線局域網(wǎng)橋接至3G/4G網(wǎng)絡中,從而實現(xiàn)各個智能終端設備對3G/4G網(wǎng)絡帶寬的共享。 1 3G/4G路由器設計方案 本路由器的設計是基于三個模塊來實現(xiàn)的,分別為3G模塊、WiFi模塊和Linux硬件平臺,如圖1所示。3G模塊的功能是利用運營商的無線數(shù)據(jù)卡進行PPP撥號,使得路由器能通過運營商網(wǎng)絡連接至互聯(lián)網(wǎng)。WiFi模塊的功能是使得無線網(wǎng)卡工作在AP(Access Point)模式,并配置動態(tài)主機配置協(xié)議的腳本文件,來建立一個2.4 GHz的WiFi無線局域網(wǎng)。Linux硬件平臺模塊的功能主要有兩個方面,一方面要支持無線網(wǎng)卡和無線數(shù)據(jù)卡的驅(qū)動,另一方面要通過嵌入式Linux系統(tǒng)中的iptables數(shù)據(jù)包過濾系統(tǒng)將無線局域網(wǎng)和3G/4G網(wǎng)絡連通。智能終端等設備通過WiFi信道接人到該路由器所提供的無線局域網(wǎng)中,分配到一個IP地址之后,則通過該無線局域網(wǎng) 的網(wǎng)關(guān)進行數(shù)據(jù)包的接收和發(fā)送,而該網(wǎng)關(guān)則通過3G/4G模塊上的網(wǎng)絡撥號接口來接收和發(fā)送數(shù)據(jù)包至3G/4G 網(wǎng)絡,從而實現(xiàn)了該路由器的設計方案。
圖1 3G/4G路由器設計方案圖 2 3G/4G路由器硬件結(jié)構(gòu) 根據(jù)3G/4G路由器設計方案,其硬件結(jié)構(gòu)的三大模塊分別采用深圳天謨公司生產(chǎn)的Devkit8500D評估板、華為公司的E392型無線上網(wǎng)卡和TP-Link公司的TL-WN821N型無線網(wǎng)卡。 Devkit8500D評估板的基本結(jié)構(gòu)如圖2所示。該硬件平臺采用的是TI公司的DM3730微處理器。
圖2 終端硬件結(jié)構(gòu)圖 E392型無線上網(wǎng)卡采用高通公司的MDM9x00多模芯片組,同時支持TD-SCDMA/WCDMA 的3G 網(wǎng)絡標準和LTE-TDD/FDD 的4G 網(wǎng)絡標準。目前,利用3G網(wǎng)絡中已經(jīng)部署升級的HSPA+技術(shù),下行峰值速率可以達到21 Mbps,上行峰值速率可以達到5.76 Mbps;部分地區(qū)采用64QAM 調(diào)制技術(shù)和MIMO技術(shù)對HsPA+進行再次升級,下行峰值速率可以達到42 Mbps左右;而即將部署的4G網(wǎng)絡,下行峰值速率可以達到i00 Mbps,上行峰值速率可以達到50 Mbps。 TL-WN821N 型無線網(wǎng)卡是基于Realtek公司的RTL8192cu芯片設計的,采用MIMO技術(shù)和空頻道檢測技術(shù),支持802.11n/b/g,性能穩(wěn)定且能夠提供最大300 Mbps的無線傳輸速率,完全滿足智能終端等設備的帶寬需求。 3 3G/4G路由器關(guān)鍵技術(shù) 3G/4G路由器是指利用WiFi的2.4GHz頻段,組建一個無線局域網(wǎng),并配置無線局域網(wǎng)的基本信息,通過Linux系統(tǒng)的iptables將無線局域網(wǎng)接人到3G/4G網(wǎng)絡中。其關(guān)鍵技術(shù)具體分為3G/4G 網(wǎng)絡的接入、無線局域網(wǎng)的組建以及iptables的連通三個部分。 3.1 3G/4G網(wǎng)絡的接入 該無線路由器利用E392型多模無線上網(wǎng)卡在嵌入式Linux系統(tǒng)中進行PPP撥號,分別接入到TD-SCDMA, WCDMA以及TD-LTE實驗網(wǎng)中。其具體實現(xiàn)流程如圖3所示。
圖3 3G/4G網(wǎng)絡接入流程圖 3.1.1 多模無線上網(wǎng)卡驅(qū)動加載 當一個新的USB設備接入到Linux主機中,主機首先會通過控制端點讀入此設備的配置,接口和端點等信息,利用控制管道完成控制型傳輸,然后主機再對該設備進行枚舉。枚舉即讀取該 設備的許多重要信息,其中最重要的是讀取該設備的生產(chǎn)商識別碼(VID)以及產(chǎn)品識別碼(PID),將這兩個識別碼分 別與USB內(nèi)核中意存在的各個識別碼進行匹配。若匹配成功,即的利用Linux系統(tǒng)的USB內(nèi)核成功實現(xiàn)了 該設備的USB驅(qū)動的加載。 本設計方案中采用的嵌入式Linux系統(tǒng)的內(nèi)核版本號為2.6.32,該內(nèi)核中與 USB設備的VID和PID號相關(guān)的源碼存在kernel/drivers/usb/serial/option.c中,修改該文件并添加本 終端設計方案中所采用的華為E392無線上網(wǎng)卡的VID和PID,過程如下: # define HUAWEI_VENDOR_ID 0x12D1 # define HUAWEI_PRODUCT_E1446 0x1446 {USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID,HUAWEI_PRODUCT_E1446,0xff,0xff,0xff)} 然后 配置嵌入式Linux系統(tǒng)內(nèi)核中的Devices driver→usb support→usb Serial Converter Support選項, 使得Linux系統(tǒng)內(nèi)核支持USB串口轉(zhuǎn)換,然后選擇按模塊重新編譯內(nèi)核,生成option.ko和usbserial.ko 驅(qū)動文件。最后加載這兩個驅(qū)動文件并插上該多模無線上網(wǎng)卡,完成驅(qū)動加載。 3.1.2 終端模式轉(zhuǎn)換 在3.1.1節(jié)中實現(xiàn)的是USB設備的加載,即Linux系統(tǒng)識別出無線上網(wǎng)卡為USB設備并能與之通信。而一般 USB無線上網(wǎng)卡設備都具有兩個USB子設備模式,即usb-storage子設備模式和modern子設備模式。此時 Linux系統(tǒng)默認會將該設備識別為usb-storage子設備模式,需要通過USB設備的模式轉(zhuǎn)換工具usb- modeswitch將USB設備的工作模式轉(zhuǎn)換為modem模式,這樣才能使得無線上網(wǎng)卡能夠正常工作。 首先需要將usb- modeswitch工具移植至開發(fā)板,移植過程如下: ① 下載并解壓usb-modeswitch一1.2.5.tar.bz2。 ② 進入usb-modeswitch目錄,修改Makefile,指定交叉編譯器: CC = arm-none-linux-gnueabi - gcc $(PROG):&(OBJS)&(CC) - o $(PROG)&(OBJS) & (CFLAGS)… . - I/home/libusb- 0.1.12/instal1/inc1ude &(LIB) … . - L/home/libusb- 0.1.12/install/lib ③ make。 將生成的usb_modeswitch二進制執(zhí)行文件拷人Linux系統(tǒng)中,并修改usb_modeswitch目錄下usb_mode-switch.conf配置文件,在該文件末添加該無線上網(wǎng)卡的VID設備號和其usb-storage子設備PID設備號,然后指定其modern子設備號。具體配置信息如下: Default Vendor = 12D1 Default Product = 1446 Target Vendor = 12D1 Target Product = 1506 CheckSuccess = 20 HuaweiMode = O 通過命令usb_modeswitch - W - c usb_modeswitch.conf對無線上網(wǎng)卡進行USB設備的模式轉(zhuǎn)換,轉(zhuǎn)換成功后無線上網(wǎng)卡即工作在調(diào)制解調(diào)器模式下,同時可通過命令ls/dev可以查看到Linux系統(tǒng)生成4個虛擬USB轉(zhuǎn)串口設備,即ttyUSB0,ttyUSB1,ttyUSB2和ttyUSB3,可以通過這幾個串口進行PPP撥號,使得3G/4G路由器可以接至TD-SCDMA、WCDMA以及TD-LTE實驗網(wǎng)中。 3.2 無線局域網(wǎng)的組建 該無線路由器利用無線網(wǎng)卡在嵌入式Linux系統(tǒng)中組建一個小型的無線局域網(wǎng),一方面提供給智能終端等設備接入,另一方面將無線局域網(wǎng)接入至3G/4G 網(wǎng)絡。其基本流程如圖4所示。
圖4 無線局域網(wǎng)組建流程圖 3.2.1 無線網(wǎng)卡驅(qū)動加載 TL-WN821N 型無線網(wǎng)卡采用的WLAN芯片組為Realtek公司的提供的RTI 8192cu芯片,Realtek公司提供了基于Linux系統(tǒng)的該芯片組驅(qū)動源碼,根據(jù) 編譯環(huán)境及Linux內(nèi)核對驅(qū)動源碼進行編譯,即可生成該無線USB網(wǎng)卡的驅(qū)動。具體步驟如下: ① 下載驅(qū)動源碼rtl8188c 8192c usb linux - v3.4.4- 4749.2.121105.tar.gz,并解壓。 ② 進入到驅(qū)動源碼包中,修改Makefile文件,指定編譯環(huán)境及Linux內(nèi)核: CONFIG_PLATFORM_NEW = y ifeq($(CONFIG_PLATFORM_NEW ),y) EXTRA_CFLAGS + = - DCONFIG_LLTTLE_ENDIAN ARCH :arm CROSS_COM PILE := arm-none-linux-gnueabi- KSRC=/home/linux-2.6.32-devkit8500 endif ③ make,生成該無線網(wǎng)卡的驅(qū)動8192cu.ko。 然后加載該驅(qū)動,再通過命令ifconfig wlan0 up,將無線網(wǎng)卡的網(wǎng)口wlan0掛載至Linux系統(tǒng)中,可通過ifconfig命令查看該網(wǎng)口的基本配置信息。 3.2.2 AP模式轉(zhuǎn)換 將無線網(wǎng)卡驅(qū)動加載成功之后,該無線網(wǎng)卡的默認工作模式為工作站模式,即作為客戶端搜索周圍的無線接人點,以接人到其他的無線局域網(wǎng)中,而3G/4G路由器需要利用無線網(wǎng)卡的模式轉(zhuǎn)換工具hostapd將該網(wǎng)卡的工作模式由工作站模式切換為AP模式,也稱接入點模式,并利用該模式建立一個無線局域網(wǎng)。hostapd在Linux系統(tǒng)中的移植過程如下: ① 下載并解壓hostapd_0.8_rtw_20120803.zip。 ② 進入主目錄,修改Makefile,指定交叉編譯器: CC = arm-none-linux-gnueabi-gcc ③ make。 生成hostapd、hostapd_cli,將這兩個二進制文件和rtl_hostapd.conf復制到嵌入式Linux系統(tǒng)中。在rtl_hostapd.conf配置文件中,可以設置該無線網(wǎng)卡的服務集標識(SSID)、支持的802.11協(xié)議版本、工作頻率、無線信道以及加密的方式等一系列該無線局域網(wǎng)的配置信息。通過執(zhí)行命令hostapd rtl_hostapd.conf-B,完成該無線網(wǎng)卡的工作模式的切換。 3.2.3 DHCP配置 在無線網(wǎng)卡的AP模式切換完成之后,需要通過DH-CP協(xié)議配置該無線局域網(wǎng)的動態(tài)地址池及其網(wǎng)關(guān),該無線局域網(wǎng)會根據(jù)DHCP協(xié)議從配置的地址池中,自動給接入到該無線局域網(wǎng)的智能終端等設備分配一個IP地址。其DHCP協(xié)議的配置文件dhcp.conf具體如下: start 192.168.0.20 end 192.168.0.254 interface wlan0 opt dns 8.8.4.4 opt subnet 255.255.255.0 opt router 192.168.0.1 opt lease 864000 然后在Linux系統(tǒng)中執(zhí)行udhcp-fS dhcp.conf,啟動DHCP協(xié)議。之后該無線網(wǎng)卡會建立一個無線局域網(wǎng),并給接入到此無線局域網(wǎng)中的智能終端等設備自動分配一個IP地址。 3.3 iptables連通 在實現(xiàn)3G/4G 網(wǎng)絡的接人和無線局域網(wǎng)的組建之后,該路由器采用Linux系統(tǒng)中的IP信息報過濾系統(tǒng),即iptables,將3G/4G網(wǎng)絡和組建好的無線局域網(wǎng)連通。iptables系統(tǒng)需要Linux系統(tǒng)內(nèi)核中的網(wǎng)絡數(shù)據(jù)包過濾框架的支持,需要重新配置內(nèi)核,選中內(nèi)核中Networking Support → Networking options → Network PACket filtering framework,將其框架編譯進Linux內(nèi)核,然后需要對iptables進行移植,其移植過程如下: ① 下載并解壓iptablesj.4.3.1.tar.gz。 ② 進入主目錄,配置編譯選項: . /configure-prefix=/usr/local/iptables--host = arm- none-linux-gnueabi--with-curnel=/home/SD_tools/linux- 2.6.32-devkit85O0 ③ make并make install。 將生成的iptahles二進制執(zhí)行文件復制到Linux系統(tǒng)中,并編寫iptables系統(tǒng)的運行腳本文件net-share,該運行腳本文件配置了IP數(shù)據(jù)包的流向、進入網(wǎng)絡的接口等一系列規(guī)則,該路由器進入3G/4G 網(wǎng)絡的接口為無線上網(wǎng)卡進行撥號后產(chǎn)生的pppO網(wǎng)絡接口,其內(nèi)容如下: echo“1”> /pr0c/sys/net/ipv4/ip- forward iptables-F iptables-P INPUT ACCEPT iptables-P OUTPUT ACCEPT iptables-P FORW ARD ACCEPT iptables-t nat-A POSTROUTING -o ppp0-j MASQUERADE 在Linux系統(tǒng)中執(zhí)行腳本文件./net-share,即完成了無線局域網(wǎng)至3G/4G網(wǎng)絡的連通,從而實現(xiàn)了3G/4G路由器的設計。 4 實驗結(jié)果 在嵌人式Linux系統(tǒng)中完成了3G/4G路由器的設計功能之后,利用智能終端等設備對該無線路由器進行功能測試。該路由器的工作環(huán)境如圖5所示,分別使用該無線路由器上的無線上網(wǎng)卡接人到TD-SCDMA、WCDMA和TD-LTE實驗網(wǎng)中,然后再使用智能終端等設備自帶的WiFi功能接人到該路由器所組建的無線局域網(wǎng)中。經(jīng)實際測試,在TD-SCDMA網(wǎng)中,單個智能終端設備的最高下行速率可以達到2.45 Mbps;在WCDMA網(wǎng)中,單個智能終端設備的最高下行速率可以達到7.02 Mbps;而在TD-LTE實驗網(wǎng)中,單個智能終端設備的最高下行速率可以達到85.97 Mbps。 結(jié)語 本文基于嵌入式Linux系統(tǒng)設計并實現(xiàn)了3G/4G路由器,經(jīng)實際測試,該路由器工作穩(wěn)定,系統(tǒng)可靠性高,可以實現(xiàn)對3G/4G網(wǎng)絡帶寬的共享,而且隨著3G/4G技術(shù)的不斷發(fā)展,所提供的帶寬也會越來越大,因此該路由器必將有著廣闊的應用市場。 [整理編輯:中國測控網(wǎng)]
|
|