新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于ATM的ADSL網(wǎng)關(guān)的研究與實(shí)現(xiàn)

基于ATM的ADSL網(wǎng)關(guān)的研究與實(shí)現(xiàn)

作者: 時(shí)間:2009-12-25 來(lái)源:網(wǎng)絡(luò) 收藏

圖3:的協(xié)議棧

在圖3中,AAL5是適配層,RFC1483是適配層第五類型的多協(xié)議封裝規(guī)范,描述了在端系統(tǒng)中怎樣在主機(jī)、橋設(shè)備和路由設(shè)備之間承載多協(xié)議業(yè)務(wù)。在中,根據(jù)ITU的協(xié)議規(guī)范,信號(hào)經(jīng)過(guò)一系列變換以ATM信元的形式輸出,因此我們要在ATM適配層的基礎(chǔ)上將信號(hào)變成上層協(xié)議能夠識(shí)別的包,從而決定該包是否轉(zhuǎn)發(fā),丟棄或者接收。根據(jù)RFC1483協(xié)議,有兩種多協(xié)議封裝的形式,一種是LLC封裝多協(xié)議,即LLC-SNAP模式,在同一個(gè)VC上承載多協(xié)議,協(xié)議類型包含在LLC頭中,另一種是VC-MUX模式,不同的協(xié)議使用不同的VC,則不需要在協(xié)議頭中指明協(xié)議類型,而具體哪一個(gè)VC承載哪一種協(xié)議則是在鏈路初始化的時(shí)候確定,這種方法降低了鏈路開(kāi)銷,但在虛擬連接數(shù)量有限的情況下多數(shù)還是使用LLC復(fù)用。這個(gè)功能是通過(guò)在Linux內(nèi)核中加載PPPOA模塊來(lái)的。

PPP包中包括三種類型的信息:

* Link Control Protocol(LCP) 用來(lái)協(xié)商鏈路參數(shù),包的大小,以及認(rèn)證類型

* Network Control Protocol(NCP) 指明高層協(xié)議的信息,可以是IP、IPX及其控制協(xié)議。

* 數(shù)據(jù)幀

  遵循的協(xié)議是ATM的,也就是在物理層是在電話線上調(diào)制高速數(shù)據(jù)信號(hào),RS編碼,擾碼等一些物理層的協(xié)議,在物理層以上是以ATM信元格式輸出的,而對(duì)于ADSL來(lái)說(shuō),PPP over ATM Adaption Layer 5(AAL5) RFC2364是用AAL5作為成幀協(xié)議,支持PVC,SVC, PPPOA是ADSL協(xié)議棧的基本部分,它依賴于RFC1483,工作在LLC-SNAP或VC-MUX模式下,用戶端設(shè)備(CPE)封裝PPP包的過(guò)程就是以PPPOA協(xié)議來(lái)進(jìn)行ADSL環(huán)路和DSLAM上傳輸數(shù)據(jù)的。AAL5的公共部分匯集子層(CPCS)的協(xié)議數(shù)據(jù)單元如圖4所示:

  其中CPCS-PDU Payload部分是AAL5協(xié)議的數(shù)據(jù)部分,最大為216-1個(gè)字節(jié),這是因?yàn)樵谙旅娴亩止?jié)的LENGTH域中限定的。PAD中有48個(gè)字節(jié),剛好為一個(gè)信元的數(shù)據(jù)域,由SAR(分段重組)子層生成,CPI域是為了使CPCS-PDU TRAILER成64位而填補(bǔ)上去的,CRC采用32位的循環(huán)冗余校驗(yàn)碼。

  在我們的ADSL網(wǎng)關(guān)設(shè)計(jì)中,考慮到有限的虛擬連接的數(shù)量,我們采用的是LLC封裝多協(xié)議的模式,即LLC-SNAP模式,其CPCS-PDU Payload域如圖4所示。包括:

* LLC頭:3字節(jié),其中兩個(gè)字節(jié)指定了一個(gè)目的SAP(0xFE)和源SAP(0xFE),后面是幀類型,為Un-numbered Information=0x03

* Network Layer protocol Identifier(NLPID),這里使用的是PPP,其類型值為0xCF

* PPP協(xié)議標(biāo)識(shí)域?yàn)橐缓投止?jié)

* PPP信息域

* PPP填充域

  對(duì)于局域網(wǎng)內(nèi)的用戶通過(guò)以太網(wǎng)口和Wireless LAN的天線與網(wǎng)關(guān)互聯(lián),其中以太網(wǎng)和Wireless LAN使用不同的網(wǎng)段,網(wǎng)關(guān)要做的事情是看用戶的IP包,如果是發(fā)往本局域網(wǎng)的,那要看是不是同一個(gè)網(wǎng)段的,如果是則丟棄,如果不是則發(fā)向另一網(wǎng)段,也就是說(shuō)在本地的包業(yè)務(wù)通信中,起了一個(gè)橋接的作用。如果不是發(fā)向本局域網(wǎng),而是發(fā)向廣域網(wǎng)的包則通過(guò)PPP端口轉(zhuǎn)發(fā),其路由功能。以太網(wǎng)的驅(qū)動(dòng)程序和WLAN驅(qū)動(dòng)程序在Linux中也是作為一個(gè)可載入模塊加載到Linux內(nèi)核中。

  為了實(shí)現(xiàn)應(yīng)用網(wǎng)關(guān)功能,在應(yīng)用層我們還根據(jù)實(shí)際需要實(shí)現(xiàn)了IP地址過(guò)濾的防火墻,地址解析,簡(jiǎn)單管理,動(dòng)態(tài)主機(jī)地址分配,和WEB服務(wù)器,

  重新編譯內(nèi)核時(shí)去掉對(duì)硬盤,鼠標(biāo),顯卡,鍵盤的支持,只保留一個(gè)簡(jiǎn)單的文件系統(tǒng),并放在Flash上,這樣可以在線升級(jí)網(wǎng)關(guān)操作系統(tǒng)。內(nèi)核的核心主要是進(jìn)行內(nèi)存管理,啟動(dòng)和中斷。將PPPOA模塊、以太網(wǎng)以及WLAN驅(qū)動(dòng)模塊編譯進(jìn)內(nèi)核,內(nèi)核程序與設(shè)備接口間采用消息驅(qū)動(dòng)方式,三個(gè)模塊對(duì)應(yīng)三個(gè)消息隊(duì)列和三個(gè)通信例程,每個(gè)例程負(fù)責(zé)監(jiān)聽(tīng)相應(yīng)端口的數(shù)據(jù)(對(duì)應(yīng)一個(gè)消息隊(duì)列),當(dāng)接受到消息時(shí),使進(jìn)程轉(zhuǎn)入處理程序,進(jìn)行內(nèi)存刷新、加工數(shù)據(jù)幀頭、發(fā)送消息等工作,消息隊(duì)列如果沒(méi)有消息存在,該進(jìn)程就釋放CPU給其它進(jìn)程。由于一些寄存器(DCR,SPR等)的值和外設(shè)的I/O空間要映射到物理內(nèi)存空間,所以要在TLB中鎖定這些內(nèi)存,在為三個(gè)PCI設(shè)備進(jìn)行內(nèi)存分配時(shí),要判斷分配的內(nèi)存空間是否與鎖定的內(nèi)存空間重疊。另外我們?cè)谟布O(shè)計(jì)上使用了串口(RS-232)作為調(diào)試接口,可以在shell中測(cè)試系統(tǒng)命令,運(yùn)行應(yīng)用程序,或用GDB對(duì)應(yīng)用程序進(jìn)行調(diào)試,另外shell還用于對(duì)系統(tǒng)進(jìn)行配置。配置包括配置全局參數(shù)對(duì)網(wǎng)關(guān)的命令行接口,需要配置撥號(hào)PPP over ATM端口、以太網(wǎng)和WLAN端口。在配置前需要確認(rèn)ADSL線路與DSLAM連接,要有一個(gè)靜態(tài)IP地址或者由ISP負(fù)責(zé)動(dòng)態(tài)IP地址分配。網(wǎng)關(guān)在啟動(dòng)時(shí),BIOS上電自檢,加載文件系統(tǒng),引導(dǎo)網(wǎng)關(guān)操作系統(tǒng),ADSL線路進(jìn)行握手操作,初始化鏈路,進(jìn)入SHOWTIME。

三、 進(jìn)一步的工作及展望

  ADSL網(wǎng)關(guān)集ADSL modem 和應(yīng)用網(wǎng)關(guān)于一體,既完成ADSL接入的模擬的調(diào)制解調(diào)工作,又在此基礎(chǔ)上實(shí)現(xiàn)了資源共享,簡(jiǎn)單網(wǎng)絡(luò)管理以及網(wǎng)絡(luò)安全方面的功能等,是一種有著廣泛應(yīng)用前景的技術(shù)


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉