APP下载

嵌入式Linux系统的3G/4G路由器设计*

2014-03-20黄小敏余翔宋瑶

单片机与嵌入式系统应用 2014年4期
关键词:网卡内核局域网

黄小敏,余翔,宋瑶

(重庆邮电大学,重庆400065)

引 言

3G的接入技术已经从WCDMA/TD-SCDMA/CDMA2000发展到HSDPA、HSUPA以及HSPA+,并开始由3G网络向4G网络过渡。目前HSDPA的接入带宽可以达到7.2Mbps,HSPA+的接入带宽可以达到21Mbps,而即将部署的LTE的网络带宽甚至达到了100Mbps[1]。同时,由于接入移动互联网[2]的智能终端的数量快速增长,人们对移动互联网的应用需求也日益增长。当人们面对几十兆带宽甚至是上百兆带宽时,必定存在带宽的过剩问题,即人们不需要在任何时刻都需要这么大的带宽,因而可以将过剩的用户带宽分配给更多的用户。

目前,WiFi技术能够支持IEEE的802.11b、802.11g和802.11n标准,分别支持10Mbps、54Mbps和300Mbps的无线传输速率。而在传输距离上,WiFi能够在几米到100m范围内实现完全覆盖。

本文正是基于3G/4G不断增长的接入带宽以及WiFi技术的各项优点,提出了一种共享3G/4G网络带宽的无线路由器设计方案。该方案首先利用嵌入式Linux系统,构建一个基于WiFi技术的无线局域网[3],智能终端等用户可以利用自带的WiFi功能接入该无线局域网,然后再将该无线局域网桥接至3G/4G网络中,从而实现各个智能终端设备对3G/4G网络带宽的共享。[1]

1 3G/4G路由器设计方案

本路由器的设计是基于三个模块来实现的,分别为3G模块、WiFi模块和Linux硬件平台,如图1所示。3G模块的功能是利用运营商的无线数据卡进行PPP拨号,使得路由器能通过运营商网络连接至互联网。WiFi模块的功能是使得无线网卡工作在AP(Access Point)模式,并配置动态主机配置协议的脚本文件,来建立一个2.4GHz的WiFi无线局域网。Linux硬件平台模块的功能主要有两个方面,一方面要支持无线网卡和无线数据卡的驱动,另一方面要通过嵌入式Linux系统中的iptables数据包过滤系统将无线局域网和3G/4G网络连通。智能终端等设备通过WiFi信道接入到该路由器所提供的无线局域网中,分配到一个IP地址之后,则通过该无线局域网的网关进行数据包的接收和发送,而该网关则通过3G/4G模块上的网络拨号接口来接收和发送数据包至3G/4G网络,从而实现了该路由器的设计方案。

图1 3G/4G路由器设计方案图

2 3G/4G路由器硬件结构

根据3G/4G路由器设计方案,其硬件结构的三大模块分别采用深圳天谟公司生产的Devkit8500D评估板、华为公司的E392型无线上网卡和TP-Link公司的TLWN821N型无线网卡。

Devkit8500D评估板的基本结构如图2所示。该硬件平台采用的是TI公司的DM3730微处理器。

图2 终端硬件结构图

E392型无线上网卡采用高通公司的MDM9x00多模芯片组,同时支持TD-SCDMA/WCDMA的3G网络标准和LTE-TDD/FDD的4G网络标准。目前,利用3G网络中已经部署升级的HSPA+技术,下行峰值速率可以达到21Mbps,上行峰值速率可以达到5.76Mbps;部分地区采用64QAM调制技术和MIMO技术对HSPA+进行再次升级,下行峰值速率可以达到42Mbps左右;而即将部署的4G网络,下行峰值速率可以达到100Mbps,上行峰值速率可以达到50Mbps[5]。

TL-WN821N型无线网卡是基于Realtek公司的RTL8192cu芯片设计的,采用MIMO技术和空频道检测技术,支持802.11n/b/g,性能稳定且能够提供最大300Mbps的无线传输速率,完全满足智能终端等设备的带宽需求。

3 3G/4G路由器关键技术

3G/4G路由器是指利用WiFi的2.4GHz频段,组建一个无线局域网,并配置无线局域网的基本信息,通过Linux系统的iptables将无线局域网接入到3G/4G网络中。其关键技术具体分为3G/4G网络的接入、无线局域网的组建以及iptables的连通三个部分。

3.1 3G/4G网络的接入

图3 3G/4G网接入流程图

该无线路由器利用E392型多模无线上网卡在嵌入式Linux系统中进行PPP拨号,分别接入到TD-SCDMA、WCDMA以及TDLTE实验网中。其具体实现流程如图3所示。

3.1.1 多模无线上网卡驱动加载

当一个新的USB设备接入到Linux主机中,主机首先会通过控制端点读入此设备的配置、接口和端点等信息,利用控制管道完成控制型传输,然后主机再对该设备进行枚举。枚举即读取该设备的许多重要信息,其中最重要的是读取该设备的生产商识别码(VID)以及产品识别码(PID),将这两个识别码分别与USB内核中已存在的各个识别码进行匹配。若匹配成功,即利用Linux系统的USB内核成功实现了该设备的USB驱动的加载[6-7]。

本设计方案中采用的嵌入式Linux系统的内核版本号为2.6.32,该内核中与USB设备的VID和PID号相关的源码存在kernel/drivers/usb/serial/option.c中,修改该文件并添加本终端设计方案中所采用的华为E392无线上网卡的VID和PID,过程如下:

#define HUAWEI_VENDOR_ID 0x12D1

#define HUAWEI_PRODUCT_E1446 0x1446

{USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VEN

DOR_ID,HUAWEI_PRODUCT_E1446,0xff,0xff,0xff)}

然后配置嵌入式Linux系统内核中的Devices driver→usb support→usb Serial Converter Support选项,使得Linux系统内核支持USB串口转换,然后选择按模块重新编译内核,生成option.ko和usbserial.ko驱动文件。最后加载这两个驱动文件并插上该多模无线上网卡,完成驱动的加载。

3.1.2 终端模式转换

在3.1.1节中实现的是USB设备的加载,即Linux系统识别出无线上网卡为USB设备并能与之通信。而一般USB无线上网卡设备都具有两个USB子设备模式,即usb-storage子设备模式和modern子设备模式。此时Linux系统默认会将该设备识别为usb-storge子设备模式,需要通过USB设备的模式转换工具usb_modeswitch将USB设备的工作模式转换为modem模式,这样才能使得无线上网卡能够正常工作。

首先需要将usb_modeswitch工具移植至开发板,移植过程如下:

①下载并解压usb_modeswitch-1.2.5.tar.bz2。

②进入usb_modeswitch目录,修改Makefile,指定交叉编译器:

③make。

将生成的usb_modeswitch二进制执行文件拷入Linux系统中,并修改usb_modeswitch目录下usb_modeswitch.conf配置文件,在该文件末添加该无线上网卡的VID设备号和其usb-storage子设备PID设备号,然后指定其modern子设备号。具体配置信息如下:

通过命令usb_modeswitch-W-c usb_modeswitch.conf对无线上网卡进行USB设备的模式转换,转换成功后无线上网卡即工作在调制解调器模式下,同时可通过命令ls/dev可以查看到Linux系统生成4个虚拟USB转串口设备,即ttyUSB0,ttyUSB1,ttyUSB2和ttyUSB3,可以通过这几个串口进行PPP拨号,使得3G/4G路由器可以接至TD-SCDMA、WCDMA以及TD-LTE实验网中。

3.2 无线局域网的组建

该无线路由器利用无线网卡在嵌入式Linux系统中组建一个小型的无线局域网,一方面提供给智能终端等设备接入,另一方面将无线局域网接入至3G/4G网络。其基本流程如图4所示。供了基于Linux系统的该芯片组驱动源码,根据编译环境及Linux内核对驱动源码进行编译,即可生成该无线USB网卡的驱动。具体步骤如下:

①下载驱动源码rtl8188c_8192c_usb_linux-v3.4.4_4749.2.121105.tar.gz,并解压。

②进入到驱动源码包中,修改Makefile文件,指定编译环境及Linux内核:

③make,生成该无线网卡的驱动8192cu.ko。

然后加载该驱动,再通过命令ifconfig wlan0up,将无线网卡的网口wlan0挂载至Linux系统中,可通过ifconfig命令查看该网口的基本配置信息。

3.2.2 AP模式转换

将无线网卡驱动加载成功之后,该无线网卡的默认工作模式为工作站模式,即作为客户端搜索周围的无线接入点,以接入到其他的无线局域网中,而3G/4G路由器需要利用无线网卡的模式转换工具hostapd将该网卡的工作模式由工作站模式切换为AP模式,也称接入点模式,并利用该模式建立一个无线局域网。hostapd在Linux系统中的移植过程如下:

①下载并解压hostapd_0.8_rtw_20120803.zip。

②进入主目录,修改Makefile,指定交叉编译器:

③make。

生成hostapd、hostapd_cli,将这两个二进制文件和rtl_hostapd.conf复制到嵌入式Linux系统中。在rtl_hostapd.conf配置文件中,可以设置该无线网卡的服务集标识(SSID)、支持的802.11协议版本、工作频率、无线信道以及加密的方式等一系列该无线局域网的配置信息。通过执行命令hostapd rtl_hostapd.conf-B,完成该无线网卡的工作模式的切换。

3.2.3 DHCP配置

图4 无线局域网组建流程图

3.2.1 无线网卡驱动加载

TL-WN821N型无线网卡采用的WLAN芯片组为Realtek公司的提供的RTL8192cu芯片,Realtek公司提在无线网卡的AP模式切换完成之后,需要通过DH

CP协议配置该无线局域网的动态地址池及其网关,该无线局域网会根据DHCP协议从配置的地址池中,自动给接入到该无线局域网的智能终端等设备分配一个IP地址。其DHCP协议的配置文件dhcp.conf具体如下:

然后在Linux系统中执行udhcp-fS dhcp.conf,启动DHCP协议。之后该无线网卡会建立一个无线局域网,并给接入到此无线局域网中的智能终端等设备自动分配一个IP地址。

3.3 iptables连通

在实现3G/4G网络的接入和无线局域网的组建之后,该路由器采用Linux系统中的IP信息报过滤系统,即iptables,将3G/4G网络和组建好的无线局域网连通。iptables系统需要Linux系统内核中的网络数据包过滤框架的支持,需要重新配置内核,选中内核中Networking Support→Networking options→Network packet filtering framework,将其框架编译进Linux内核,然后需要对iptables进行移植,其移植过程如下:

①下载并解压iptables_1.4.3.1.tar.gz。

②进入主目录,配置编译选项:

③make并make install。

将生成的iptables二进制执行文件复制到Linux系统中,并编写iptables系统的运行脚本文件net-share,该运行脚本文件配置了IP数据包的流向、进入网络的接口等一系列规则,该路由器进入3G/4G网络的接口为无线上网卡进行拨号后产生的ppp0网络接口,其内容如下:

在Linux系统中执行脚本文件./net-share,即完成了无线局域网至3G/4G网络的连通,从而实现了3G/4G路由器的设计。

4 实验结果

图5 3G/4G路由器运行状态图

在嵌入式Linux系统中完成了3G/4G路由器的设计功能之后,利用智能终端等设备对该无线路由器进行功能测试。该路由器的工作环境如图5所示,分别使用该无线路由器上的无线上网卡接入到TD-SCDMA、WCDMA和TD-LTE实验网中,然后再使用智能终端等设备自带的WiFi功能接入到该路由器所组建的无线局域网中。经实际测试,在TD-SCDMA网中,单个智能终端设备的最高下行速率可以达到2.45Mbps;在WCDMA网中,单个智能终端设备的最高下行速率可以达到7.02Mbps;而在TD-LTE实验网中,单个智能终端设备的最高下行速率可以达到85.97Mbps。

结 语

本文基于嵌入式Linux系统设计并实现了3G/4G路由器,经实际测试,该路由器工作稳定,系统可靠性高,可以实现对3G/4G网络带宽的共享,而且随着3G/4G技术的不断发展,所提供的带宽也会越来越大,因此该路由器必将有着广阔的应用市场。

[1]王映民,孙韶辉.TD-LTE技术原理与系统设计[M].北京:人民邮电出版社,2010.

[2]崔勇,张鹏,吴建平.无线移动互联网:原理、技术与应用[M].北京:机械工业出版社,2012.

[3]刘乃安.无线局域网(WLAN)——原理、技术与应用[M].西安:西安电子科学大学出版社,2004.

[4]Texas Instruments.TI Application Report(SPRS283D).TMS320DM6446Digital Media System-on-Chip,2005.

[5]Hard Holma,Antti Toskala.UMTS中的WCDMA-HSPA演进及LTE[M].杨大成,译.4版.北京:机械工业出版社,2012.

[6]宋宝华.Linux设备驱动开发详解[M].2版.北京:人民邮电出版社,2010.

[7]Corbet J,Rubini A,Kroah-hartman G.Linux device drivers[M].Cambridge:O’Reilly Media,2006.

猜你喜欢

网卡内核局域网
强化『高新』内核 打造农业『硅谷』
轨道交通车-地通信无线局域网技术应用
基于VPN的机房局域网远程控制系统
Server 2016网卡组合模式
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
基于802.1Q协议的虚拟局域网技术研究与实现
局域网性能的优化
微生物内核 生态型农资
挑战Killer网卡Realtek网游专用Dragon网卡