《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 無線IP網(wǎng)關(guān)的設(shè)計(jì)與應(yīng)用

無線IP網(wǎng)關(guān)的設(shè)計(jì)與應(yīng)用

2009-03-17
作者:郝代春 胡修林 張?zhí)N玉

???? 摘? 要: 介紹了實(shí)現(xiàn)專用無線網(wǎng)與局域網(wǎng)之間的IP級(jí)互連原理和關(guān)鍵技術(shù),并討論了此項(xiàng)技術(shù)的應(yīng)用前景。

??? 關(guān)鍵詞: IP網(wǎng)關(guān)? 串口通信

?

  在實(shí)際網(wǎng)絡(luò)中,許多不在同一地點(diǎn)的局域網(wǎng)之間需要交互信息。為實(shí)現(xiàn)專用無線網(wǎng)與局域網(wǎng)之間的互連,研制具備下述功能的網(wǎng)關(guān)。首先,實(shí)現(xiàn)IP級(jí)互連,即某一局域網(wǎng)的IP數(shù)據(jù)報(bào)經(jīng)過網(wǎng)關(guān)的轉(zhuǎn)換后可以通過無線網(wǎng)傳到另一網(wǎng)關(guān),再經(jīng)轉(zhuǎn)換后,IP數(shù)據(jù)報(bào)可到達(dá)另一局域網(wǎng)的相應(yīng)的主機(jī)上,如圖1所示;其次,實(shí)現(xiàn)連接認(rèn)證。當(dāng)網(wǎng)關(guān)啟動(dòng)時(shí),與另一網(wǎng)關(guān)進(jìn)行連接認(rèn)證,當(dāng)認(rèn)證通過時(shí),才建立IP連接。

?

?

  實(shí)驗(yàn)采用自主開發(fā)的軟件,工作在Windows 9x操作系統(tǒng)下,在局域網(wǎng)中獲得所有的IP數(shù)據(jù)報(bào),通過判斷、修改Ethernet頭信息,將IP數(shù)據(jù)報(bào)送至串口,通過連接在串口的無線設(shè)備發(fā)送出去。目的網(wǎng)絡(luò)的網(wǎng)關(guān)串口上連接的無線設(shè)備接收到后,通過網(wǎng)關(guān)轉(zhuǎn)發(fā)到目的計(jì)算機(jī)。從功能上說,網(wǎng)關(guān)計(jì)算機(jī)實(shí)現(xiàn)的是路由器的功能。

1 路由器功能

  路由器的功能主要有以下五個(gè)方面:

  (1)網(wǎng)絡(luò)間截獲發(fā)送到遠(yuǎn)地網(wǎng)段的報(bào)文,起轉(zhuǎn)發(fā)的作用;

  (2)選擇最合理的路由,引導(dǎo)通信;

  (3)路由器在轉(zhuǎn)發(fā)報(bào)文的過程中,為了便于在網(wǎng)絡(luò)間傳送報(bào)文,按照預(yù)定的規(guī)則把大的數(shù)據(jù)包分解成適當(dāng)大小的數(shù)據(jù)包,到達(dá)目的地后再把分解的數(shù)據(jù)包包裝成原有形式;

  (4)多協(xié)議的路由器可以連接使用不同通信協(xié)議的網(wǎng)絡(luò)段,作為不同通信協(xié)議網(wǎng)絡(luò)段通信連接的平臺(tái);

  (5)路由器的主要任務(wù)是把通信引導(dǎo)到目的地網(wǎng)絡(luò),然后到達(dá)特定的節(jié)點(diǎn)站地址。后一個(gè)功能是通過網(wǎng)絡(luò)地址分解完成的。

  根據(jù)本項(xiàng)目的具體要求,所設(shè)計(jì)的無線網(wǎng)關(guān)實(shí)現(xiàn)了路由器的一部分功能,但并不是一個(gè)完整意義上的路由器。

2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2.1 系統(tǒng)結(jié)構(gòu)

  系統(tǒng)結(jié)構(gòu)如圖1所示。

  對(duì)LAN而言,無線數(shù)據(jù)鏈?zhǔn)请[含在網(wǎng)關(guān)內(nèi)的協(xié)議實(shí)體,它對(duì)LAN1和LAN2都是透明的。對(duì)外部而言,半網(wǎng)關(guān)1和半網(wǎng)關(guān)2構(gòu)成一個(gè)整體網(wǎng)關(guān),它完成與IP有關(guān)的信息處理,路由選擇和LAN內(nèi)部物理尋址。兩個(gè)LAN間的IP數(shù)據(jù)報(bào)傳輸處理過程如圖2所示。這里網(wǎng)關(guān)主要解決轉(zhuǎn)發(fā)決策、時(shí)延處理、地址轉(zhuǎn)換等。

?

2.2 半網(wǎng)關(guān)的體系結(jié)構(gòu)

  半網(wǎng)關(guān)的體系結(jié)構(gòu)如圖3所示。

  其中:

  VxD:從本地LAN接收和向本地LAN發(fā)送MAC幀(VxD是Windows 95/98下虛擬設(shè)備驅(qū)動(dòng)程序);

  LAN接收:去掉VxD傳遞的數(shù)據(jù)中的MAC幀控制信息,并根據(jù)目的IP地址決定是否將其轉(zhuǎn)給IP處理模塊;

  LAN發(fā)送:根據(jù)IP模塊轉(zhuǎn)來的目的IP地址,查找對(duì)應(yīng)的MAC地址,進(jìn)而組成完整的MAC幀交由VxD發(fā)送到本地LAN;

  IP處理模塊:負(fù)責(zé)路由選擇和其他IP層處理,并將LAN接收模塊交來的IP數(shù)據(jù)報(bào)處理后交給Line發(fā)送模塊,將Line接收模塊交來的IP數(shù)據(jù)報(bào)交給本地LAN發(fā)送模塊;

  Line接收模塊:把從數(shù)據(jù)鏈路接收的完整IP數(shù)據(jù)報(bào)交給IP處理模塊;

  Line發(fā)送模塊:把從IP處理模塊接收的IP數(shù)據(jù)報(bào)發(fā)送到數(shù)據(jù)鏈路上。

  由上述功能可以看出,若把網(wǎng)關(guān)看作是一個(gè)雙向系統(tǒng),那么入口端負(fù)責(zé)IP數(shù)據(jù)報(bào)的過濾,出口端負(fù)責(zé)IP數(shù)據(jù)報(bào)的轉(zhuǎn)發(fā)。連接認(rèn)證模塊負(fù)責(zé)在建立IP連接前兩個(gè)半網(wǎng)關(guān)的認(rèn)證。

  管理模塊:負(fù)責(zé)半網(wǎng)關(guān)的進(jìn)程調(diào)度,并提供地址庫(kù)的修改接口。

  對(duì)網(wǎng)卡的操作通過調(diào)用VxD軟件實(shí)現(xiàn)。

  此外,半網(wǎng)關(guān)中附有一個(gè)地址庫(kù),存儲(chǔ)本地LAN的IP地址和對(duì)應(yīng)的MAC地址的信息,供LAN發(fā)送和接收模塊查詢或調(diào)用。

3 系統(tǒng)實(shí)現(xiàn)

3.1 軟件結(jié)構(gòu)

  軟件開發(fā)平臺(tái)為Windows 95/98,開發(fā)軟件為Microsoft Visual C++ 6.0。

  Windows 95支持多線程運(yùn)行,一個(gè)軟件可以創(chuàng)建多個(gè)線程同時(shí)執(zhí)行不同的功能。進(jìn)程間的運(yùn)行是互相獨(dú)立的,有各自的堆棧。網(wǎng)關(guān)功能模塊和串口通信模塊是同時(shí)運(yùn)行的。需要設(shè)計(jì)成兩個(gè)單獨(dú)的線程。考慮到串口通信模塊中數(shù)據(jù)的收發(fā)也是同時(shí)進(jìn)行的,因此將串口通信模塊設(shè)計(jì)成收發(fā)兩個(gè)進(jìn)程。

  根據(jù)上述設(shè)計(jì)思想,軟件的整體框圖如圖4所示。

?

3.2 模塊設(shè)計(jì)

3.2.1 認(rèn)證模塊設(shè)計(jì)

  開機(jī)后首先進(jìn)行連接認(rèn)證。在實(shí)施認(rèn)證時(shí),網(wǎng)關(guān)軟件以client和server的方式運(yùn)行,每個(gè)半網(wǎng)關(guān)均工作于Client/Server 模式,即都包含client和server實(shí)體,任何一方都可以請(qǐng)求建立連接。當(dāng)請(qǐng)求超時(shí),請(qǐng)求方將退出請(qǐng)求等待狀態(tài),待對(duì)方請(qǐng)求時(shí)再建立通信連接。在認(rèn)證通過前不啟動(dòng)軟件的網(wǎng)關(guān)功能,認(rèn)證通過后開放網(wǎng)關(guān)功能。

  軟件提供加密函數(shù)的接口,對(duì)本地輸入的用戶名和口令加密后傳送。接收端提供認(rèn)證函數(shù)的接口,返回認(rèn)證結(jié)果。

3.2.2 數(shù)據(jù)幀的監(jiān)聽和發(fā)送

  網(wǎng)關(guān)軟件運(yùn)行后,用戶通過菜單命令啟動(dòng)網(wǎng)絡(luò)監(jiān)聽線程。網(wǎng)絡(luò)監(jiān)聽線程負(fù)責(zé)接收和發(fā)送數(shù)據(jù)報(bào)。網(wǎng)絡(luò)監(jiān)聽線程首先從外部讀入初始化信息,包括本機(jī)IP地址、NDIS序號(hào)、網(wǎng)絡(luò)ARP表、路由表。然后裝載VxD程序,并進(jìn)行初始化,完成監(jiān)聽的準(zhǔn)備工作。

接下來線程開始循環(huán)訪問網(wǎng)絡(luò)接收緩沖區(qū)和串口緩沖區(qū),對(duì)其中的IP數(shù)據(jù)報(bào)進(jìn)行分析、轉(zhuǎn)發(fā)。

  對(duì)于從網(wǎng)絡(luò)接收緩沖區(qū)得到的數(shù)據(jù)報(bào),網(wǎng)絡(luò)監(jiān)聽線程首先對(duì)其目的IP地址進(jìn)行分析,判斷該數(shù)據(jù)分組是否需要轉(zhuǎn)發(fā)。對(duì)于需要轉(zhuǎn)發(fā)的,網(wǎng)關(guān)計(jì)算機(jī)給它加上相應(yīng)的數(shù)據(jù)鏈路的頭信息,并進(jìn)行碼字透明處理后存入串口發(fā)送緩沖區(qū);對(duì)于不需要轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)不予處理。這樣的處理主要是為局域網(wǎng)中可能存在多個(gè)網(wǎng)關(guān)而設(shè)計(jì)的。

  對(duì)于從串口接收緩沖區(qū)得到的數(shù)據(jù)報(bào),網(wǎng)絡(luò)監(jiān)聽線程首先提取該數(shù)據(jù)報(bào)的目的IP地址,通過該IP地址查詢ARP表得到目的主機(jī)的MAC地址。線程在該數(shù)據(jù)報(bào)前加上MAC幀頭,通過調(diào)用VxD接口函數(shù)發(fā)送該數(shù)據(jù)報(bào)。

3.2.3 串口通信模塊設(shè)計(jì)

  串口通信部分為上層網(wǎng)關(guān)功能模塊提供透明傳輸。實(shí)驗(yàn)規(guī)定的串口通信速率很低(4800bps),當(dāng)局域網(wǎng)的數(shù)據(jù)流量增大時(shí),將成為整個(gè)通信的瓶頸。因此,對(duì)這部分軟件的主要要求是在保證通信誤碼率低的基礎(chǔ)上達(dá)到高效。

串口通信包括發(fā)送和接收兩部分,以全雙工的方式工作。這樣可以保證串口的工作效率。采用線程的工作方式也便于和整個(gè)軟件其他模塊的協(xié)調(diào)運(yùn)行(如與上層網(wǎng)關(guān)功能模塊之間)。

  (1)數(shù)據(jù)發(fā)送模塊

  IP數(shù)據(jù)報(bào)的發(fā)送通過一個(gè)獨(dú)立的線程來進(jìn)行。由于串口通過無線鏈路連接,采用短波通信,誤碼率較高,因此要求一定的傳輸協(xié)議來保證數(shù)據(jù)的可靠傳輸。實(shí)際實(shí)施時(shí),采用奇校驗(yàn)和停止等待協(xié)議來保證串口數(shù)據(jù)的可靠傳輸。每一個(gè)字節(jié)的傳輸都采用奇校驗(yàn)方式。在發(fā)送一個(gè)IP數(shù)據(jù)包采用停止等待協(xié)議。每次發(fā)送數(shù)據(jù)時(shí),先查詢是否有確認(rèn)或出錯(cuò)幀要發(fā)送,如果有,則發(fā)送確認(rèn)或出錯(cuò)幀。如果沒有,則查詢數(shù)據(jù)緩沖區(qū)是否有IP包要發(fā)送。如果有,則從數(shù)據(jù)緩沖區(qū)中取出一個(gè)包,附上幀頭和數(shù)據(jù)起始標(biāo)志進(jìn)行發(fā)送。發(fā)送完數(shù)據(jù)后,等待對(duì)方返回確認(rèn)。如果對(duì)方在規(guī)定時(shí)間內(nèi)沒有返回確認(rèn)則重新發(fā)送剛才的數(shù)據(jù)。在等待期間不發(fā)送新的數(shù)據(jù),但是如果本地接收數(shù)據(jù)后需要發(fā)送確認(rèn)消息給對(duì)方,則盡快發(fā)送。

  在本軟件中,兩個(gè)半網(wǎng)關(guān)用于連接兩個(gè)局域網(wǎng)。對(duì)串口通信的要求是雙向高速。兩個(gè)半網(wǎng)關(guān)可能同時(shí)有大量數(shù)據(jù)要傳送。當(dāng)使用停止等待協(xié)議時(shí),停止等待協(xié)議的等待時(shí)間應(yīng)為對(duì)方發(fā)送最大一個(gè)數(shù)據(jù)包所需要的時(shí)間。根據(jù)實(shí)驗(yàn)得知,在以太網(wǎng)上,最大數(shù)據(jù)包長(zhǎng)度為1500字節(jié),因此,等待時(shí)間應(yīng)為:1500×2×8/4800=5s。

這個(gè)時(shí)間是最大等待時(shí)間。在實(shí)驗(yàn)中,得到平均等待時(shí)間為853ms。因此,在軟件中設(shè)置等待時(shí)間為1s。

  (2)數(shù)據(jù)接收模塊

  接收模塊由消息響應(yīng)函數(shù)完成。先搜索報(bào)文頭,對(duì)報(bào)文頭進(jìn)行處理。再判斷接收幀的類型,作出相應(yīng)處理。接收完后,查詢數(shù)據(jù)接收錯(cuò)誤標(biāo)志,如果有錯(cuò)誤發(fā)生,則丟棄該數(shù)據(jù)包;反之,將該數(shù)據(jù)包存入緩沖區(qū)。

4 系統(tǒng)測(cè)試與應(yīng)用前景

  WWW是目前Internet網(wǎng)上的主要服務(wù),它是基于TCP/IP的典型應(yīng)用。以這項(xiàng)服務(wù)對(duì)所開發(fā)的網(wǎng)關(guān)軟件進(jìn)行了測(cè)試。實(shí)驗(yàn)表明,網(wǎng)關(guān)軟件原理正確。

  由于采用了串口通信技術(shù),該成果可經(jīng)簡(jiǎn)單改裝,用在基于modem的網(wǎng)絡(luò)互連等多方面,如在監(jiān)控系統(tǒng)的各級(jí)之間、公司總部與分公司、辦事處之間實(shí)現(xiàn)廉價(jià)的LAN互聯(lián)。

?

參考文獻(xiàn)

1 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò).北京:電子工業(yè)出版社,1999

2 馬得翔.PC網(wǎng)絡(luò)原理與實(shí)際應(yīng)用,北京:清華大學(xué)出版社,1997

3 楊強(qiáng),李堂秋.Win9x虛擬設(shè)備驅(qū)動(dòng)程序編程指南,北京:清華大學(xué)出版社,1999

4 K.Yao.Error probability of asynchronous spread spectrum?multiple access communication systems. IEEE Trans.on

? Comm,Vol 25 Aug 1977
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。