在實際網絡中,許多不在同一地點的局域網之間需要交互信息。為實現專用無線網與局域網之間的互連,研制具備下述功能的網關。首先,實現IP級互連,即某一局域網的IP數據報經過網關的轉換后可以通過無線網傳到另一網關,再經轉換后,IP數據報可到達另一局域網的相應的主機上,如圖1所示;其次,實現連接認證。當網關啟動時,與另一網關進行連接認證,當認證通過時,才建立IP連接。
實驗采用自主開發(fā)的軟件,工作在Windows 9x操作系統(tǒng)下,在局域網中獲得所有的IP數據報,通過判斷、修改Ethernet頭信息,將IP數據報送至串口,通過連接在串口的無線設備發(fā)送出去。目的網絡的網關串口上連接的無線設備接收到后,通過網關轉發(fā)到目的計算機。從功能上說,網關計算機實現的是路由器的功能。
1 路由器功能
路由器的功能主要有以下五個方面:
(1)網絡間截獲發(fā)送到遠地網段的報文,起轉發(fā)的作用;
(2)選擇最合理的路由,引導通信;
(3)路由器在轉發(fā)報文的過程中,為了便于在網絡間傳送報文,按照預定的規(guī)則把大的數據包分解成適當大小的數據包,到達目的地后再把分解的數據包包裝成原有形式;
(4)多協(xié)議的路由器可以連接使用不同通信協(xié)議的網絡段,作為不同通信協(xié)議網絡段通信連接的平臺;
(5)路由器的主要任務是把通信引導到目的地網絡,然后到達特定的節(jié)點站地址。后一個功能是通過網絡地址分解完成的。
根據本項目的具體要求,所設計的無線網關實現了路由器的一部分功能,但并不是一個完整意義上的路由器。
2 系統(tǒng)設計與實現
2.1 系統(tǒng)結構
系統(tǒng)結構如圖1所示。
對LAN而言,無線數據鏈是隱含在網關內的協(xié)議實體,它對LAN1和LAN2都是透明的。對外部而言,半網關1和半網關2構成一個整體網關,它完成與IP有關的信息處理,路由選擇和LAN內部物理尋址。兩個LAN間的IP數據報傳輸處理過程如圖2所示。這里網關主要解決轉發(fā)決策、時延處理、地址轉換等。
2.2 半網關的體系結構
半網關的體系結構如圖3所示。
其中:
VxD:從本地LAN接收和向本地LAN發(fā)送MAC幀(VxD是Windows 95/98下虛擬設備驅動程序);
LAN接收:去掉VxD傳遞的數據中的MAC幀控制信息,并根據目的IP地址決定是否將其轉給IP處理模塊;
LAN發(fā)送:根據IP模塊轉來的目的IP地址,查找對應的MAC地址,進而組成完整的MAC幀交由VxD發(fā)送到本地LAN;
IP處理模塊:負責路由選擇和其他IP層處理,并將LAN接收模塊交來的IP數據報處理后交給Line發(fā)送模塊,將Line接收模塊交來的IP數據報交給本地LAN發(fā)送模塊;
Line接收模塊:把從數據鏈路接收的完整IP數據報交給IP處理模塊;
Line發(fā)送模塊:把從IP處理模塊接收的IP數據報發(fā)送到數據鏈路上。
由上述功能可以看出,若把網關看作是一個雙向系統(tǒng),那么入口端負責IP數據報的過濾,出口端負責IP數據報的轉發(fā)。連接認證模塊負責在建立IP連接前兩個半網關的認證。
管理模塊:負責半網關的進程調度,并提供地址庫的修改接口。
對網卡的操作通過調用VxD軟件實現。
此外,半網關中附有一個地址庫,存儲本地LAN的IP地址和對應的MAC地址的信息,供LAN發(fā)送和接收模塊查詢或調用。
3 系統(tǒng)實現
3.1 軟件結構
軟件開發(fā)平臺為Windows 95/98,開發(fā)軟件為Microsoft Visual C++ 6.0。
Windows 95支持多線程運行,一個軟件可以創(chuàng)建多個線程同時執(zhí)行不同的功能。進程間的運行是互相獨立的,有各自的堆棧。網關功能模塊和串口通信模塊是同時運行的。需要設計成兩個單獨的線程。考慮到串口通信模塊中數據的收發(fā)也是同時進行的,因此將串口通信模塊設計成收發(fā)兩個進程。
根據上述設計思想,軟件的整體框圖如圖4所示。
3.2 模塊設計
3.2.1 認證模塊設計
開機后首先進行連接認證。在實施認證時,網關軟件以client和server的方式運行,每個半網關均工作于Client/Server 模式,即都包含client和server實體,任何一方都可以請求建立連接。當請求超時,請求方將退出請求等待狀態(tài),待對方請求時再建立通信連接。在認證通過前不啟動軟件的網關功能,認證通過后開放網關功能。
軟件提供加密函數的接口,對本地輸入的用戶名和口令加密后傳送。接收端提供認證函數的接口,返回認證結果。
3.2.2 數據幀的監(jiān)聽和發(fā)送
網關軟件運行后,用戶通過菜單命令啟動網絡監(jiān)聽線程。網絡監(jiān)聽線程負責接收和發(fā)送數據報。網絡監(jiān)聽線程首先從外部讀入初始化信息,包括本機IP地址、NDIS序號、網絡ARP表、路由表。然后裝載VxD程序,并進行初始化,完成監(jiān)聽的準備工作。接下來線程開始循環(huán)訪問網絡接收緩沖區(qū)和串口緩沖區(qū),對其中的IP數據報進行分析、轉發(fā)。
對于從網絡接收緩沖區(qū)得到的數據報,網絡監(jiān)聽線程首先對其目的IP地址進行分析,判斷該數據分組是否需要轉發(fā)。對于需要轉發(fā)的,網關計算機給它加上相應的數據鏈路的頭信息,并進行碼字透明處理后存入串口發(fā)送緩沖區(qū);對于不需要轉發(fā)的數據報不予處理。這樣的處理主要是為局域網中可能存在多個網關而設計的。
對于從串口接收緩沖區(qū)得到的數據報,網絡監(jiān)聽線程首先提取該數據報的目的IP地址,通過該IP地址查詢ARP表得到目的主機的MAC地址。線程在該數據報前加上MAC幀頭,通過調用VxD接口函數發(fā)送該數據報。
3.2.3 串口通信模塊設計
串口通信部分為上層網關功能模塊提供透明傳輸。實驗規(guī)定的串口通信速率很低(4800bps),當局域網的數據流量增大時,將成為整個通信的瓶頸。因此,對這部分軟件的主要要求是在保證通信誤碼率低的基礎上達到高效。串口通信包括發(fā)送和接收兩部分,以全雙工的方式工作。這樣可以保證串口的工作效率。采用線程的工作方式也便于和整個軟件其他模塊的協(xié)調運行(如與上層網關功能模塊之間)。
(1)數據發(fā)送模塊
IP數據報的發(fā)送通過一個獨立的線程來進行。由于串口通過無線鏈路連接,采用短波通信,誤碼率較高,因此要求一定的傳輸協(xié)議來保證數據的可靠傳輸。實際實施時,采用奇校驗和停止等待協(xié)議來保證串口數據的可靠傳輸。每一個字節(jié)的傳輸都采用奇校驗方式。在發(fā)送一個IP數據包采用停止等待協(xié)議。每次發(fā)送數據時,先查詢是否有確認或出錯幀要發(fā)送,如果有,則發(fā)送確認或出錯幀。如果沒有,則查詢數據緩沖區(qū)是否有IP包要發(fā)送。如果有,則從數據緩沖區(qū)中取出一個包,附上幀頭和數據起始標志進行發(fā)送。發(fā)送完數據后,等待對方返回確認。如果對方在規(guī)定時間內沒有返回確認則重新發(fā)送剛才的數據。在等待期間不發(fā)送新的數據,但是如果本地接收數據后需要發(fā)送確認消息給對方,則盡快發(fā)送。
在本軟件中,兩個半網關用于連接兩個局域網。對串口通信的要求是雙向高速。兩個半網關可能同時有大量數據要傳送。當使用停止等待協(xié)議時,停止等待協(xié)議的等待時間應為對方發(fā)送最大一個數據包所需要的時間。根據實驗得知,在以太網上,最大數據包長度為1500字節(jié),因此,等待時間應為:1500×2×8/4800=5s。這個時間是最大等待時間。在實驗中,得到平均等待時間為853ms。因此,在軟件中設置等待時間為1s。
(2)數據接收模塊
接收模塊由消息響應函數完成。先搜索報文頭,對報文頭進行處理。再判斷接收幀的類型,作出相應處理。接收完后,查詢數據接收錯誤標志,如果有錯誤發(fā)生,則丟棄該數據包;反之,將該數據包存入緩沖區(qū)。
4 系統(tǒng)測試與應用前景
WWW是目前Internet網上的主要服務,它是基于TCP/IP的典型應用。以這項服務對所開發(fā)的網關軟件進
行了測試。實驗表明,網關軟件原理正確。
由于采用了串口通信技術,該成果可經簡單改裝,用在基于modem的網絡互連等多方面,如在監(jiān)控系統(tǒng)的
各級之間、公司總部與分公司、辦事處之間實現廉價的LAN互聯。