作者:鐘曉建,潘貴敦,梁小宇
引言
隨著互聯網上的內容越來越豐富多彩,人們對傳輸帶寬的需求也逐漸增大,傳統Modem的56K帶寬日益顯得不堪重負。如何充分有效利用現有的電話線資源來獲得足夠的帶寬呢? ADSL(不對稱數字用戶環路)是一個很好的答案。ADSL技術利用電話線上高于話音頻帶的帶寬(4K~1.1MHz),采用離散多音頻調制技術來調制高速數字信號(傳統的Modem是用話音頻帶來調制數字信號),下行速率可達8Mbit/s,上行可達1.5Mbit/s。隨著超大規模集成電路(VLSI)和數字信號處理(DSP)技術的不斷進步,DSL技術也不斷趨于成熟。ADSL完成A/D、D/A變換,采用FFT/IFFT作DMT和卷積編碼調制,既實現了高帶寬利用率,又保證了傳輸的低誤碼特性。我們所設計的ADSL網關采用Itex的Apollo 3 ADSL PCI解決方案作Internet的接入部分,另一側用以太網或無線局域網接多用戶,接口為RJ-45和無線訪問點(AP)天線,提供了靈活方便的組網方式,可以廣泛應用于家庭、小型辦公室的接入。在軟件上,我們采用根據硬件結構來定制Linux內核的方法,整合了必要的驅動模塊來作網關的操作系統,不僅完成對ADSL接入模塊、以太網模塊以及無線局域網(WLAN)無線接入點AP模塊的驅動,還提供DHCP、SNMP以及IP防火墻等應用功能。
一、 硬件體系結構
AMD公司推出的ElanSC520功能強大,適用于在嵌入式環境下用作協議處理器和網絡處理器,兼容PC/AT,支持32位PCI外部總線,而且其傳輸的低延遲和低價位使其獲得了廣泛的應用。ElanSC520集成了一個工業級的X86處理器,從而為與X86結構適配的軟件提供了良好的接口和易移植性,支持包括Linux和Windows在內的多種操作系統,內建的高速PCI總線接口符合PCI V2.2規范,可擴展1~5個PCI總線設備,通過其內部的PCI總線仲裁機制來決定與哪一個PCI設備進行相互通信。PCI總線的最高傳輸速率可達132MB/s。在ADSL網關設備的設計中,我們使用了三個PCI總線設備,這三個總線設備共享PCI總線與ElanSC520進行通信。ElanSC520微控制器還帶有高性能的SDRAM和ROM/Flash接口,同時還有用于配置和調試的UART串行接口,可以接模擬終端。基于ATM的ADSL網關的硬件體系結構如圖1所示:
圖1:ADSL硬件體系結構
2. ADSL接入設備
ADSL接入端采用Itex的Apollo 3的PCI解決方案,其芯片組包括線路驅動、模擬前端和數字收發器,完成對電話線路上信號的發送和接收濾波、放大、A/D和D/A轉換、FFT/IFFT等數字信號處理,并通過PCI總線與ElanSC520進行通信。該組芯片將PCI到UTOPIA(標準信元接口)的轉換功能集成到DMT收發器和ATM的成幀器中,將線路接收器集成到模擬前端中。由于控制由主處理器完成,Apollo3不需要額外的存儲設備和控制器,使板上的控制需求減少到最小,從而大大降低了功耗。該芯片組符合以下協議標準:G.992.1(G.DMT), G.992.2(G.LITE), G.994(G.HS), T1.413 Issue 2(1998)
其結構如圖2所示:
圖2:ADSL線路接入端結構
信號由RJ-11電話線接口進來,收端通過接收濾波器送到接收部分進行濾波、信號放大,經A/D變換,FFT解調,送往處理器進行處理;而在發端,由處理器出來的數字信號經過IFFT進行DMT調制,再經過線路驅動模塊,濾波后發送到電話線路上進行傳輸。
3.以太網接口
以太網采用的是Realtek 的RLT8029AS芯片,與NE2000兼容,符合標準的802.3CSMA/CD協議規范。其全雙工特性允許同時發送和接收,集成了曼徹斯特編解碼器,可以用于無盤工作站。
4.WLAN_AP接口
為了方便筆記本電腦共享電話線上網,我們在用戶端還提供了WLAN_AP接口,可以方便的進行無線局域網的組網,在這里我們使用了TI公司的PCI1410A橋芯片將PCI信號轉為PCMCIA信號,接無線網卡,將數據包封裝為符合IEEE802.11b協議的幀進行傳輸。
二、 軟件體系結構
由于Linux操作系統的穩定性、開放性以及可擴展性,使它在嵌入式系統中獲得較為廣泛的應用,然而由于Linux允許非搶先式操作,使其不可能成為完全的實時系統,最多只能算是在統計意義上的實時。在ADSL網關的設計中我們可以將實時的信號賦予很高的優先級,從而保證在整體上公平地進行進程調度。
構建嵌入式操作系統,我們首先考慮到在一個嵌入式的應用環境下既沒有多少內存也沒有多少外存可用,操作系統必須存放在有限的存儲器Flash中,所以我們必須根據硬件的構架來定制我們需要的Linux內核。由于ADSL接入端是基于ATM的,我們要為內核加上對PPP over ATM的patch(補丁),對于在ATM基礎上支持Internet,實際上可以歸結為在ATM上如何支持TCP/IP的問題,即ATM如何承載IP包的問題。在ADSL網關應用中,要共享ADSL線路接入Internet,遵循的是點到點協議,因此ADSL接入端的驅動程序實際上是一個PPP over ATM的模塊,它將作為內核的一個可載入模塊進行進程調用,而以太網驅動程序和WLAN_AP的驅動程序是實現在以太網和無線介質里傳送IP包的,即分別用802.3和802.11的幀格式來封裝IP包,這樣ADSL網關的協議棧就如圖3所示。
圖3:ADSL網關的協議棧
在圖3中,AAL5是ATM適配層,RFC1483是ATM適配層第五類型的多協議封裝規范,描述了在ATM端系統中怎樣在主機、橋設備和路由設備之間承載多協議業務。在ADSL網關中,根據ITU的協議規范,信號經過一系列變換以ATM信元的形式輸出,因此我們要在ATM適配層的基礎上將信號變成上層協議能夠識別的包,從而決定該包是否轉發,丟棄或者接收。根據RFC1483協議,有兩種多協議封裝的形式,一種是LLC封裝多協議,即LLC-SNAP模式,在同一個VC上承載多協議,協議類型包含在LLC頭中,另一種是VC-MUX模式,不同的協議使用不同的VC,則不需要在協議頭中指明協議類型,而具體哪一個VC承載哪一種協議則是在鏈路初始化的時候確定,這種方法降低了鏈路開銷,但在虛擬連接數量有限的情況下多數還是使用LLC復用。實現這個功能是通過在Linux內核中加載PPPOA模塊來實現的。
PPP包中包括三種類型的信息:
* Link Control Protocol(LCP) 用來協商鏈路參數,包的大小,以及認證類型
* Network Control Protocol(NCP) 指明高層協議的信息,可以是IP、IPX及其控制協議。
* 數據幀
ADSL遵循的協議是基于ATM的,也就是在物理層是在電話線上調制高速數據信號,RS編碼,擾碼等一些物理層的協議,在物理層以上是以ATM信元格式輸出的,而對于ADSL網關來說,PPP over ATM Adaption Layer 5(AAL5) RFC2364是用AAL5作為成幀協議,支持PVC,SVC, PPPOA是ADSL協議棧的基本部分,它依賴于RFC1483,工作在LLC-SNAP或VC-MUX模式下,用戶端設備(CPE)封裝PPP包的過程就是以PPPOA協議來進行ADSL環路和DSLAM上傳輸數據的。AAL5的公共部分匯集子層(CPCS)的協議數據單元如圖4所示:
其中CPCS-PDU Payload部分是AAL5協議的數據部分,最大為216-1個字節,這是因為在下面的二字節的LENGTH域中限定的。PAD中有48個字節,剛好為一個信元的數據域,由SAR(分段重組)子層生成,CPI域是為了使CPCS-PDU TRAILER成64位而填補上去的,CRC采用32位的循環冗余校驗碼。
在我們的ADSL網關設計中,考慮到有限的虛擬連接的數量,我們采用的是LLC封裝多協議的模式,即LLC-SNAP模式,其CPCS-PDU Payload域如圖4所示。包括:
* LLC頭:3字節,其中兩個字節指定了一個目的SAP(0xFE)和源SAP(0xFE),后面是幀類型,為Un-numbered Information=0x03
* Network Layer protocol Identifier(NLPID),這里使用的是PPP,其類型值為0xCF
* PPP協議標識域為一和二字節
* PPP信息域
* PPP填充域
對于局域網內的用戶通過以太網口和Wireless LAN的天線與網關互聯,其中以太網和Wireless LAN使用不同的網段,網關要做的事情是看用戶的IP包,如果是發往本局域網的,那要看是不是同一個網段的,如果是則丟棄,如果不是則發向另一網段,也就是說在本地的包業務通信中,起了一個橋接的作用。如果不是發向本局域網,而是發向廣域網的包則通過PPP端口轉發,實現其路由功能。以太網的驅動程序和WLAN驅動程序在Linux中也是作為一個可載入模塊加載到Linux內核中。
為了實現應用網關功能,在應用層我們還根據實際需要實現了基于IP地址過濾的防火墻,網絡地址解析,簡單網絡管理,動態主機地址分配,和WEB服務器,
重新編譯內核時去掉對硬盤,鼠標,顯卡,鍵盤的支持,只保留一個簡單的文件系統,并放在Flash上,這樣可以在線升級網關操作系統。內核的核心主要是進行內存管理,啟動和中斷。將PPPOA模塊、以太網以及WLAN驅動模塊編譯進內核,內核程序與網絡設備接口間采用消息驅動方式,三個模塊對應三個消息隊列和三個通信例程,每個例程負責監聽相應端口的數據(對應一個消息隊列),當接受到消息時,使進程轉入處理程序,進行內存刷新、加工數據幀頭、發送消息等工作,消息隊列如果沒有消息存在,該進程就釋放CPU給其它進程。由于一些寄存器(DCR,SPR等)的值和外設的I/O空間要映射到物理內存空間,所以要在TLB中鎖定這些內存,在為三個PCI設備進行內存分配時,要判斷分配的內存空間是否與鎖定的內存空間重疊。另外我們在硬件設計上使用了串口(RS-232)作為調試接口,可以在shell中測試系統命令,運行應用程序,或用GDB對應用程序進行調試,另外shell還用于對系統進行配置。配置包括配置全局參數對網關的命令行接口,需要配置撥號PPP over ATM端口、以太網和WLAN端口。在配置前需要確認ADSL線路與DSLAM連接,要有一個靜態IP地址或者由ISP負責動態IP地址分配。網關在啟動時,BIOS上電自檢,加載文件系統,引導網關操作系統,ADSL線路進行握手操作,初始化鏈路,進入SHOWTIME。
三、 進一步的工作及展望
ADSL網關集ADSL modem 和應用網關于一體,既完成ADSL接入的模擬的調制解調工作,又在此基礎上實現了資源共享,簡單網絡管理以及網絡安全方面的功能等,是一種有著廣泛應用前景的技術。
責任編輯:gt
-
微控制器
+關注
關注
48文章
7566瀏覽量
151614 -
Linux
+關注
關注
87文章
11319瀏覽量
209830 -
操作系統
+關注
關注
37文章
6847瀏覽量
123428
發布評論請先 登錄
相關推薦
評論