• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Android移動網(wǎng)絡終端的IPv6接入系統(tǒng)設計與實現(xiàn)

    2016-01-12 11:49:37周浩趙欽馬嚴
    軟件 2015年11期
    關(guān)鍵詞:設計與實現(xiàn)軟件工程

    周浩++趙欽++馬嚴

    摘 要:針對目前國內(nèi)3G/4G用戶無法接入IPv6網(wǎng)絡的問題,本文設計并實現(xiàn)了一種面向Android平臺的IPv6接入系統(tǒng)。該系統(tǒng)使用隧道技術(shù),將移動端的IPv6流量封裝進IPv4數(shù)據(jù)包中,并通過隧道傳輸至IPv6接入服務器,由IPv6接入服務器解封裝后轉(zhuǎn)發(fā)至IPv6網(wǎng)絡,進而實現(xiàn)移動終端的IPv6接入能力。該系統(tǒng)利用第三方互聯(lián)網(wǎng)帳號進行接入認證,具備一定的適用性和簡易性。通過部署測試發(fā)現(xiàn),該系統(tǒng)可以方便有效地解決移動互聯(lián)網(wǎng)用戶接入IPv6的問題。

    關(guān)鍵詞:軟件工程;IPv6接入系統(tǒng);設計與實現(xiàn);Android;OpenVPN;

    中圖分類號:TP311.1

    文獻標識碼:A

    DOI: 10.3969/j.issn.1003-6970.2015.11.016

    0 引言

    如今,世界各地的高校、運營商以及部分商業(yè)公司已經(jīng)開始了IPv6的商業(yè)化進程。諸如Google,YouTube,百度,阿里巴巴等互聯(lián)網(wǎng)企業(yè)均已經(jīng)提供了IPv6服務讓用戶訪問。此外,六維空間,晨光BT等一大批IPv6站點開始走向用戶生活,受到越來越多的用戶的關(guān)注和追捧。

    然而,目前國內(nèi)的IPv6網(wǎng)絡建設仍處于一個初級階段,IPv6接入能力主要集中在面向教育網(wǎng)內(nèi)的高校。對于普通的移動網(wǎng)絡用戶而言,運營商僅僅向其提供IPv4網(wǎng)絡接入服務,這對習慣了獲取IPv6資源的用戶,特別是對于長期使用教育網(wǎng)的用戶而言,是非常不便的。因此,為這些用戶提供一種簡單有效的從IPv4向IPv6的過渡技術(shù)就非常有價值。

    在目前常用的幾種過渡技術(shù)中,隧道技術(shù)由于其對網(wǎng)絡設備依賴性低,具備適用性廣和簡單易用等特點,受到不少用戶和研究人員的青睞。本文基于OpenVPN隧道技術(shù),設計并實現(xiàn)了一套針對Android平臺移動終端的IPv6接入系統(tǒng)。

    1 系統(tǒng)原理

    OpenVPN是一個開放源碼的基于SSL的隧道系統(tǒng),具備良好的安全性和極佳的跨平臺性,是實現(xiàn)隧道技術(shù)的一個理想方案。通過對OpenVPN以及Android系統(tǒng)的研究,本文提出了在移動網(wǎng)絡環(huán)境下,面向Android設備的IPv6接入系統(tǒng)。其核心原理是借助OpenVPN創(chuàng)建Android終端與IPv6接入服務器之間的IPv4隧道連接,將Android終端產(chǎn)生的所有IPv6流量通過這條隧道引導到IPv6網(wǎng)絡。同時,將IPv6網(wǎng)絡中流向Android終端的返回數(shù)據(jù)從這條隧道傳回至Android終端。OpenVPN的核心是虛擬網(wǎng)卡,在Android客戶端創(chuàng)建隧道連接時,OpenVPN會在Android設備中創(chuàng)建名為tun的虛擬網(wǎng)卡,作為系統(tǒng)的默認IPv6出口,并通過套接字編程接口讀寫該虛擬網(wǎng)卡,對流經(jīng)該網(wǎng)卡的數(shù)據(jù)包進行封裝或解封裝操作。

    其中,Android終端和IPv6接入服務器之間的數(shù)據(jù)交互流程如下所述,在本文,我們將Android客戶端程序稱為6in4程序:

    圖1展示的是Android終端發(fā)送IPv6數(shù)據(jù)包的流程:

    l.Android APP使用IPv6協(xié)議訪問IPv6資源,向協(xié)議棧提交一個IPv6數(shù)據(jù)包。

    2.Android系統(tǒng)協(xié)議棧將應用程序提交的IPv6數(shù)據(jù)包發(fā)送到虛擬的tun接口。

    3.6in4程序接著可以從tun接口讀取該IPv6數(shù)據(jù)包,而后對其進行IPv4封裝,再提交到系統(tǒng)協(xié)議棧。

    4.協(xié)議棧根據(jù)路由表將IPv4數(shù)據(jù)包從IPv4接口發(fā)送出去。

    圖2展示的是IPv6接入服務器接收到Android端發(fā)來的數(shù)據(jù)后的處理流程:

    1.接入服務器的IPv4接口接收到封裝了IPv6數(shù)據(jù)的IPv4數(shù)據(jù)包,并提交到系統(tǒng)協(xié)議棧。

    2.系統(tǒng)協(xié)議棧將數(shù)據(jù)包上傳給OpenVPN服務端程序。

    3.OpenVPN服務端程序?qū)Pv6數(shù)據(jù)從IPv4包從提取出來,并再次提交到系統(tǒng)協(xié)議棧。

    4.系統(tǒng)協(xié)議棧根據(jù)路由表規(guī)則將IPv6數(shù)據(jù)包從IPv6接口發(fā)送出去。

    圖3展示的是IPv6接入服務器接收到外部設備發(fā)往Android終端的IPv6數(shù)據(jù)包時的處理流程:

    1.接入服務器的IPv6接口收到IPv6數(shù)據(jù)包,并提交到協(xié)議棧。

    2.協(xié)議棧根據(jù)路由規(guī)則將IPv6數(shù)據(jù)包轉(zhuǎn)發(fā)到tun接口。

    3.OpenVPN服務端程序從tun接口讀取IPv6數(shù)據(jù)包,并將其打包到IPv4數(shù)據(jù)包內(nèi),提交到系統(tǒng)協(xié)議棧。

    4.系統(tǒng)協(xié)議棧根據(jù)路由表規(guī)則將打包后的IPv4數(shù)據(jù)包從IPv4接口發(fā)出。

    圖4是Android接收IPv6響應的處理流程:

    1.Android從網(wǎng)絡接口接收到IPv4數(shù)據(jù)包,根據(jù)數(shù)據(jù)包內(nèi)的IP地址信息,將該IPv4數(shù)據(jù)包轉(zhuǎn)發(fā)6in4程序。

    2.6in4程序?qū)?shù)據(jù)包解封裝,恢復成IPv6數(shù)據(jù)包,再將IPv6報文提交到協(xié)議棧。

    3.Android協(xié)議棧根據(jù)IPv6數(shù)據(jù)包的地址和端口信息,將數(shù)據(jù)包提交給應用程序。

    通過以上四個過程,實現(xiàn)了Android終端對IPv6資源的訪問。

    2 系統(tǒng)設計

    2.1 系統(tǒng)設計

    通過對已有系統(tǒng)的研究和學習,本文將接入系統(tǒng)分五個功能模塊,分別為IPv6接入模塊,認證模塊,API接口模塊,數(shù)據(jù)庫,Android端程序6in4,除客戶端程序外,各個模塊可以部署在單臺或多臺服務器上。這五個部分的組織結(jié)構(gòu)關(guān)系如圖5所示:

    其中,IPv6接入模塊與Android終端之間建立IPv4隧道連接,通過該隧道為其提供IPv6接入功能。在建立隧道連接時,IPv6接入模塊會對客戶端進行身份驗證,而驗證過程則依賴認證服務器為其提供的驗證接口。

    認證模塊基于FreeRadius搭建,對IPv6接人模塊提供身份驗證接口,對API接口模塊提供用戶注冊,查詢接口。

    API接口模塊面向Android客戶端程序6in4,為其提供RESTful API支持,包括賬號注冊,接入服務器信息查詢,日志上報,IPv6資源下發(fā)等功能。

    數(shù)據(jù)庫中存儲用戶的賬號信息,隧道連接信息,客戶端上報的日志信息等數(shù)據(jù),方便管理員了解整個系統(tǒng)的運行狀況。

    2.2 客戶端設計

    客戶端程序適配Android 4.0及以上版本。這是因為Android在4.0版本提供了VPN的相關(guān)編程接口,使得第三方應用可以在未獲取Root權(quán)限的情況下,也能實現(xiàn)VPN相關(guān)的功能。此外,客戶端程序引入QQ和新浪微博賬號,方便用戶使用已有賬號進行使用??蛻舳顺绦蚺c服務端的交互流程如圖6所示:

    3 系統(tǒng)實現(xiàn)與部署

    3.1 認證服務器的安裝配置

    本系統(tǒng)中所有服務端程序都運行于CentOS 6.5版本系統(tǒng)。

    認證服務器基于FreeRadius搭建。可以通過包管理軟件yum進行radius的安裝,安裝前需確認MySQL數(shù)據(jù)庫已安裝。FreeRadius的安裝命令如下:

    $yum install -yfreeradius freeradius-mysql freeradius-utils

    安裝完畢后,需要修改Radius的配置,使其使用MySQL數(shù)據(jù)庫進行用戶數(shù)據(jù)的存儲。修改配置文件/etc/raddb/radius.conf,找到modules配置塊,刪除$INCLUDE sql.conf以及$INCLUDE sql/mysql/counter.conf前的“#”號,如下:

    修改/etc/raddb/sql.conf,配置成MySQL數(shù)據(jù)庫的地址和賬號和表名。

    3.2 OpenVPN安裝以及Radius插件配置

    OpenVPN可以使用yum命令進行安裝。

    $yum install openvpn -y

    OpenVPN的配置步驟中,比較重要的是CA證書的生成,可以借助easy-rsa工具,進入easy-rsa目錄下后執(zhí)行命令:

    $./clean-all #清除原有不需要的證書文件

    $./build-ca #生成證書

    創(chuàng)建服務端證書

    $./build-key-server server #這里指定服務端的證書名為server

    創(chuàng)建客戶端證書

    $./build-key client #這里指定客戶端的證書名為client

    $./build-dh #證書加密,dh指Diffie Hellman

    將以上步驟創(chuàng)建的證書都復制到/etc/openvpn/keys目錄下

    之后編譯Radius認證插件??梢詮墓倬W(wǎng)下載插件源代碼,根據(jù)文檔完成編譯,生成radiusplugin.so二進制文件,并將此二進制文件以及配置文件復制到OpenVPN安裝目錄下

    編輯radiusplugin.cnf配置文件,修改其中的端口,IP等參數(shù)。

    修改OpenVPN的配置文件server.cnf,如下:

    在配置文件中指定OpenVPN程序以server的形態(tài)運行,使用的端口號為1194,以及IPv4和IPv6地址。push參數(shù)用于向客戶端推送路由規(guī)則和DNS信息。plugin參數(shù)用于加載radiusplugin.so插件。log和status參數(shù)指定日志文件路徑。keepalive參數(shù)指定隧道的保活時間。

    完成以上配置后,重啟OpenVPN程序

    $ /etc/init.d/openvpn restart

    3.3 API接口服務器搭建

    API接口服務器使用Yii框架進行搭建,使用JSON格式數(shù)據(jù)與客戶端進行數(shù)據(jù)通訊,并對用戶名、密碼等敏感數(shù)據(jù)進行RSA加密。

    3.4 Android客戶端實現(xiàn)

    Android客戶端基于開源項目ics-openvpn進行深度定制與開發(fā),加入了QQ和新浪微博的賬號登錄,網(wǎng)絡環(huán)境診斷功能,IPv6資源推薦,用戶意見反饋,應用分享等功能,內(nèi)置隧道鏈接配置文件,刪除了對配置文件的修改功能。

    其中,QQ和新浪微博賬號接入使用了ShareSDK進行整合,申請賬號授權(quán)代碼如下:

    此外,還需要在客戶端提供OpenVPN客戶端的配置文件,如下:

    Client

    dev tun

    remote<服務端IP地址><端口號>

    proto udp

    topology subnet

    resolv-retrv infinite

    nobind

    persist-key

    persist-tun

    auth-user-pass

    #此處填充具體的證書內(nèi)容

    ns-cert-type server

    cipher AES-128-CBC

    comp-lzo

    route-method exe

    route-delay 2

    verb 3

    tun-ipv6

    以上配置文件指定了VPN服務端的IP地址,端口,認證方式,連接協(xié)議等信息。Android端程序?qū)⒁罁?jù)此配置與服務端建立隧道連接。

    4 系統(tǒng)測試

    測試使用的設備為Nexus 5,系統(tǒng)版本為Android5.1.1,關(guān)閉手機的WIFI網(wǎng)絡,僅接入北京聯(lián)通3G網(wǎng)絡。

    初始的IPv4路由表如下:

    IPv6路由表為空如下:

    訪問IPv4地址情況如下:

    訪問IPv6地址情況如下:

    顯示網(wǎng)絡不可達,因為北京地區(qū)的聯(lián)通3G網(wǎng)絡未提供IPv6接入能力。

    打開Android客戶端程序并建立隧道連接后,IP地址分配情況:

    可見OpenVPN在Android終端內(nèi)創(chuàng)建了名為tun的虛擬端口,其IP地址被設置為服務端指派的IP地址。

    再看IPv6路由表

    已將tun接口設置成默認的IPv6出口。

    訪問IPv6站點情況:

    同時也不影響IPv4的訪問

    在進過幾輪的測試后,測試設備與IPv6站點間的Ping延時如下:

    從測試結(jié)果看,本系統(tǒng)可以為移動網(wǎng)絡下的Android終端提供IPv6接入能力,但由于受限與隧道加解密處理,以及IPv6接入服務器的出口帶寬等物理因素,使得Android終端對IPv6資源的訪問速度有所下降。但從手機瀏覽器訪問IPv6網(wǎng)站的用戶體驗而言,依然處于一個可用的水平。

    目前,客戶端軟件已經(jīng)在百度應用市場和騰訊應用寶上架,截止2015年10月底,已經(jīng)有近1000次裝機量和500名左右注冊用戶,隧道連接的創(chuàng)建次數(shù)已經(jīng)超過了12000次。

    5 總結(jié)

    本文針對目前移動設備在3G/4G等移動網(wǎng)絡下無法接入IPv6網(wǎng)絡的問題,提出并實現(xiàn)了一種簡單、有效的IPv6接入系統(tǒng)。通過隧道的方式將用戶的IPv6流量封裝進IPv4數(shù)據(jù)包中,實現(xiàn)IPv6 over IPv4網(wǎng)絡的設計思路,并采用手機APP的形式,為用戶屏蔽了復雜的隧道配置過程和參數(shù)管理。同時,采用QQ,新浪微博等國內(nèi)用戶常用的互聯(lián)網(wǎng)賬號進行接入認證,更是降低了用戶的使用門檻。目前,Android4.0版本已經(jīng)占據(jù)了95%以上的份額,因此該方案也具備較廣泛的適用性,對iOS平臺下的實現(xiàn)方案也有很大的借鑒意義。

    然而,受限于IPv4帶寬,終端的IPv6接入速度和接入質(zhì)量相對于雙棧接入的用戶而言,有一定的下降,這個問題可以通過改善終端與IPv6接入服務器之間的線路質(zhì)量,降低隧道的數(shù)據(jù)處理開銷,引入IPv6接入服務器集群,增加接入服務器的IPv4帶寬資源等方法進行解決。

    猜你喜歡
    設計與實現(xiàn)軟件工程
    校園電商平臺的設計與實現(xiàn)
    中國市場(2016年41期)2016-11-28 06:09:30
    高校文化建設中視覺識別系統(tǒng)的設計和實現(xiàn)
    軟件開發(fā)信息管理系統(tǒng)的設計與實現(xiàn)
    依托工作室的軟件工程實踐教學研究
    科研院所科研信息化管理系統(tǒng)的設計與應用
    基于工程教育認證的《軟件工程》課程教學質(zhì)量建設研究 
    軟件導刊(2016年9期)2016-11-07 22:31:23
    關(guān)于提高軟件工程實踐教學質(zhì)量的幾點思考
    關(guān)于如何創(chuàng)新和完善計算機軟件工程管理的探討
    四会市| 定南县| 海宁市| 陆河县| 东乌珠穆沁旗| 内丘县| 越西县| 邹平县| 濮阳县| 常山县| 怀仁县| 和硕县| 武隆县| 白山市| 甘谷县| 景德镇市| 辽宁省| 龙海市| 衡阳县| 镇坪县| 江西省| 五华县| 永年县| 泊头市| 马边| 盘锦市| 屏南县| 北流市| 北安市| 台山市| 象山县| 武宁县| 尼勒克县| 信阳市| 休宁县| 贵溪市| 望城县| 文登市| 六安市| 凤阳县| 苏尼特左旗|