ADSL接入及共享技術(shù)的實現(xiàn)(一)_第1頁
ADSL接入及共享技術(shù)的實現(xiàn)(一)_第2頁
ADSL接入及共享技術(shù)的實現(xiàn)(一)_第3頁
免費預(yù)覽已結(jié)束,剩余15頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

ADSL接入及共享技術(shù)的實現(xiàn)(一)

論文關(guān)鍵詞:網(wǎng)絡(luò)共享AAL5業(yè)務(wù)ADSL接入?yún)f(xié)議NAT協(xié)議ADSL路由功能論文摘要:本文首先闡述網(wǎng)絡(luò)共享原理,分析目前常用的RFC1483Bridged,RFC1483Routed,RFC1577,PPPOA,PPPOE等各種ADSL接入?yún)f(xié)議類型及實現(xiàn)網(wǎng)絡(luò)共享的方法。選擇MotorolaPowerPC850SAR芯片作為中央處理器,搭建基本硬件開發(fā)平臺;選擇WindRiver公司的Tornado2.0作為軟件集成開發(fā)環(huán)境。參照vxworks5.4操作系統(tǒng)的設(shè)備驅(qū)動編寫規(guī)范,結(jié)合850CPU的SAR功能初始化,實現(xiàn)SAR層END設(shè)備驅(qū)動。以RFC1483協(xié)議為例,闡述在不同的ATM復(fù)用方式下,各種協(xié)議數(shù)據(jù)報文的封裝處理方法。參照Vxworks5.4操作系統(tǒng)網(wǎng)絡(luò)服務(wù)子層的編寫規(guī)范,給出AAL5業(yè)務(wù)網(wǎng)絡(luò)服務(wù)子層的總體架構(gòu)及相關(guān)算法、流程。在Vxworks5.4協(xié)議棧上實現(xiàn)網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)功能,最后構(gòu)建出一套簡單的ADSL接入共享系統(tǒng)。1引言隨著ADSL技術(shù)的發(fā)展,ADSL寬帶接入已經(jīng)不僅僅是一種純粹的接入技術(shù)。家庭局域網(wǎng)的普及,中、小型企業(yè)電子商務(wù)的繁榮,遠(yuǎn)程辦公模式的引入,都呼吁著更經(jīng)濟(jì)、更有效的ADSL接入共享方案的出現(xiàn)。如今,市場上用于ADSL接入共享的產(chǎn)品非常多,如帶路由功能的ADSLModem、ADSL共享器、ADSL路由器等等,各ADSL廠商根據(jù)實際應(yīng)用的需求,在ADSL接入設(shè)備的多樣性、高效性和靈活性上下功夫,進(jìn)一步擴(kuò)展了ADSL的應(yīng)用前景。實現(xiàn)ADSL接入共享的方式歸納起來有以下三種,可以根據(jù)實際情況選擇最合適的方案。1.普通ADSLModem+雙網(wǎng)卡PC+Wingate之類的代理服務(wù)器或防火墻軟件如圖1-1所示,雙網(wǎng)卡PC安裝Wingate之類的代理服務(wù)器或防火墻軟件,一塊網(wǎng)卡連接ADSLModem,另一塊連在局域網(wǎng)的HUB上,作為其它用戶的IP網(wǎng)關(guān)。則局域網(wǎng)內(nèi)的所有微機(jī)都可以通過這臺主機(jī)訪問Internet網(wǎng)絡(luò)。圖1-1雙網(wǎng)卡PC+ADSLModem接入示意圖該方案的優(yōu)點是:無需添加任何設(shè)備,僅多一張網(wǎng)卡,即可通過軟件實現(xiàn)路由功能,同時,能夠使用管理軟件所帶的安全認(rèn)證、帳戶管理、防火墻等一系列功能。比較適合網(wǎng)吧等本就需要一臺服務(wù)器作為帳戶管理的場所。缺點是:需要占用一臺服務(wù)器作為數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備,成本較高;數(shù)據(jù)交換的效率較低,和服務(wù)器的性能有很大關(guān)系;此外,病毒入侵或服務(wù)器本身性能不穩(wěn)定,極易造成網(wǎng)絡(luò)異常。2.普通ADSLModem+共享器所謂共享器,其實是一種集成PPPOE、NAT等功能的簡單路由器。圖2-2所示的組網(wǎng)方案中,共享器取代了前一個方案中雙網(wǎng)卡PC的地位。采用這種方案后,可以節(jié)省一臺服務(wù)器以及相關(guān)軟件的花費,較第一種方案來說,確實經(jīng)濟(jì)很多,也不用再擔(dān)心病毒入侵、服務(wù)器不穩(wěn)定等問題了。很多共享器本身就帶多個LAN口,無需再添置HUB或Switch等設(shè)備即可供多臺微機(jī)使用,對于家庭局域網(wǎng)或小型辦公場所非常合適。圖1-2共享器+ADSLModem接入示意圖3.帶路由功能的ADSLModem帶簡單路由器功能的ADSLModem集成了ADSL接入功能及網(wǎng)絡(luò)共享技術(shù)。如圖1-3所示,局域網(wǎng)用戶僅需將自身的IP網(wǎng)關(guān)指向設(shè)置在ADSLModem以太網(wǎng)接口上的IP地址,即可實現(xiàn)與外部網(wǎng)絡(luò)的互連。由于ADSL接入和路由兩種功能集成在同一設(shè)備中,減少了中間的數(shù)據(jù)轉(zhuǎn)發(fā)環(huán)節(jié),傳輸效率會更高一些,配置及調(diào)試起來也方便很多。此外,用一塊CPU就可以實現(xiàn)ADSL接入?yún)f(xié)議及簡單路由等軟件功能,硬件成本降低很多,價格比起ADSLModem+共享器當(dāng)然更有優(yōu)勢了。圖1-3帶簡單路由功能的ADSLModem接入示意圖本文將首先介紹網(wǎng)絡(luò)共享原理,然后逐個分析目前常用的各種ADSL接入?yún)f(xié)議以及實現(xiàn)共享的方式。最后以Motorola850SAR+Vxworks5.4為開發(fā)平臺,設(shè)計一套帶簡單路由功能的ADSL接入設(shè)備,重點闡述ATMSAR層驅(qū)動的編寫、AAL5業(yè)務(wù)、各種接入?yún)f(xié)議以及帶寬共享功能的軟件實現(xiàn)。2網(wǎng)絡(luò)共享原理2.1私有網(wǎng)絡(luò)地址和公有網(wǎng)絡(luò)地址私有地址是指內(nèi)部網(wǎng)絡(luò)(局域網(wǎng)內(nèi)部)的主機(jī)地址,而公有網(wǎng)絡(luò)地址是局域網(wǎng)的外部地址(在因特網(wǎng)上的全球唯一的IP地址)。因特網(wǎng)地址分配組織規(guī)定以下的三個范圍網(wǎng)絡(luò)地址保留用做私有地址:10.0.0.0——10.255.255.255172.16.0.0——172.31.255.255192.168.0.0——192.168.255.255也就是說這三個范圍網(wǎng)絡(luò)的地址不會在因特網(wǎng)上被分配,但可以在一個企業(yè)(局域網(wǎng))內(nèi)部使用。各個企業(yè)根據(jù)在可預(yù)見的將來主機(jī)數(shù)量的多少,來選擇一個合適的內(nèi)部網(wǎng)絡(luò)地址。不同的企業(yè),他們的內(nèi)部網(wǎng)絡(luò)地址可以相同。如果一個公司選擇上述三個范圍之外的其他網(wǎng)段作為內(nèi)部網(wǎng)絡(luò)地址,則有可能會引起路由的混亂。2.2NAT原理NAT(NetworkAddressTranslation)網(wǎng)絡(luò)地址轉(zhuǎn)換,是一個IETF標(biāo)準(zhǔn),允許一個機(jī)構(gòu)以一個公有網(wǎng)絡(luò)地址出現(xiàn)在Internet上。NAT將每個局域網(wǎng)節(jié)點的私有網(wǎng)絡(luò)地址轉(zhuǎn)換成一個公有網(wǎng)絡(luò)地址,反之亦然。它也可以應(yīng)用到防火墻技術(shù)里,把私有地址隱藏起來不被外界發(fā)現(xiàn),使外界無法直接訪問內(nèi)部網(wǎng)絡(luò)設(shè)備,同時,它還幫助網(wǎng)絡(luò)可以超越地址的限制,合理地安排網(wǎng)絡(luò)中的公有網(wǎng)絡(luò)地址和私有網(wǎng)絡(luò)地址的使用。NAPT(NetworkAddressandPortTranslation)網(wǎng)絡(luò)端口地址轉(zhuǎn)換,可以將外部網(wǎng)的公有IP及端口號與內(nèi)部網(wǎng)絡(luò)的私有網(wǎng)絡(luò)IP及端口號相互映射。通過這種端口重定向方式實現(xiàn)的NAT映射功能,可以將來自公共網(wǎng)絡(luò)的服務(wù)請求映射到內(nèi)部網(wǎng)絡(luò)某臺微機(jī)上。例如,如果公司想以內(nèi)部網(wǎng)絡(luò)中的主機(jī)A作為對外公開的Web服務(wù)器,就得告訴NAT設(shè)備將任何訪問其公網(wǎng)地址80端口的連接重新定向為到內(nèi)部網(wǎng)絡(luò)A主機(jī)地址的80端口。如下圖所示圖2-1NAT端口映射應(yīng)用示意圖3ADSL連接協(xié)議概述3.1RFC1483Bridged接入方式RFC1483標(biāo)準(zhǔn)的制定是為了實現(xiàn)多種協(xié)議數(shù)據(jù)包在ATM的AAL5層的封裝傳送。在協(xié)議模型上,RFC1483-Bridged方式在數(shù)據(jù)鏈路層對MAC幀進(jìn)行LLC/SNAP或VCMUX的封裝,以此來指明上層所應(yīng)用的協(xié)議類型,因此可以適用于網(wǎng)絡(luò)層上的多協(xié)議傳送。在形式上,它仿真了以太網(wǎng)的橋接功能,相當(dāng)于將用戶側(cè)的終端設(shè)備直接掛接在網(wǎng)絡(luò)側(cè)的網(wǎng)橋設(shè)備上。由于ADSL接入設(shè)備配置為橋連接方式,理論上來說,設(shè)備后可以接多臺配置為公網(wǎng)IP地址的微機(jī),這些微機(jī)都可以通過網(wǎng)關(guān)直接接入Internet網(wǎng)絡(luò)中。但實際上可分配的公有IP地址并不多,很多服務(wù)提供商限制了每根線上可分配的IP個數(shù),因此只有將IP地址設(shè)在ADSL接入設(shè)備的WAN端,然后通過NAT的方式來共享有限的IP資源,這就是目前較為常見的1483Bridged+NAT接入方式,又稱為橋路由方式,其接入模型如圖3-1所示。圖3-11483Bridged+NAT接入示意圖3.2RFC1577經(jīng)典IPOA接入方式嚴(yán)格的說,RFC1577并非一種接入標(biāo)準(zhǔn),它規(guī)定了在ATM的AAL5上使用的地址解析機(jī)制,是對RFC1483Routed接入方式在ATMARP實現(xiàn)細(xì)節(jié)的補(bǔ)充。在協(xié)議模型上,RFC1577不再轉(zhuǎn)發(fā)類似ARP協(xié)議的各種以太網(wǎng)報文,而是通過和網(wǎng)絡(luò)指定的ARP服務(wù)器交互ATMARP信息獲得下一跳IP地址所對應(yīng)的ATM地址,然后采用RFC1483LLC/SNAP或基于VC的復(fù)用方式對Routed報文進(jìn)行封裝處理。RFC1577一般用于需要靜態(tài)IP的商業(yè)用戶,和RFC1483Bridged方式一樣,可以采用帶NAT功能的設(shè)備實現(xiàn)多臺微機(jī)共享帶寬。3.3RFC2364PPPOverATM接入方式PPPOA接入技術(shù)根據(jù)RFC2364封裝標(biāo)準(zhǔn)對PPP包進(jìn)行AAL5層封裝處理,形成ATM信元流,傳送到網(wǎng)絡(luò)側(cè)的寬帶接入服務(wù)器上,完成授權(quán)、認(rèn)證、分配IP地址和計費等一系列PPP接入過程。同樣,可以采用帶NAT功能的設(shè)備實現(xiàn)多臺微機(jī)共享帶寬。此外,當(dāng)服務(wù)商是根據(jù)PPP接入的時間進(jìn)行計費時,還需要考慮ADSL設(shè)備是否具有按需撥號(DOD功能)及自動斷開功能,這樣可以避免無數(shù)據(jù)訪問時系統(tǒng)仍占用帶寬,浪費網(wǎng)絡(luò)資源及增加不必要的費用開支。3.4RFC2516PPPOE接入方式早期的PPPOE接入方式,撥號程序一般放在PC機(jī)上,ADSLModem配置為簡單的RFC1483Bridged橋接方式,由PC機(jī)使用PPPOE客戶端程序(比較常見的有Enternet300、RASPPPoE等)發(fā)起PPP撥號請求并獲得動態(tài)的公網(wǎng)IP地址。其接入模型如下圖所示圖3-2PPPOE接入示意圖為了實現(xiàn)多臺微機(jī)帶寬共享,需要將PPPOE客戶端呼叫例程集成至ATUR端,其后加上NAT地址轉(zhuǎn)換機(jī)制。目前,一般帶路由功能的ADSL接入設(shè)備都具有這樣的功能。4開發(fā)平臺的選擇及搭建4.1產(chǎn)品定位鑒于目前市場上面向低端用戶的ADSL接入產(chǎn)品較多,價格競爭非常激烈,利潤空間已急劇減縮。我們希望開發(fā)一款針對中高端用戶使用的ADSL路由器產(chǎn)品,除了實現(xiàn)普通ADSL接入及簡單NAT、防火墻等功能外,還具有路由器產(chǎn)品的VPN、IPSEC、服務(wù)映射、動態(tài)路由更新協(xié)議等功能,具有和CISCO兼容的配置命令集,實現(xiàn)即配即用,便于用戶隨時進(jìn)行監(jiān)控管理。4.2硬件開發(fā)平臺的選擇通過調(diào)研,我們找到幾款符合需求的CPU芯片,如Motorola的PowerPC850SAR、Intel的IXP225、SamSung的S5N89xx系列芯片,Virata等。這幾款芯片在性能、價格等方面的綜合比較如下表所示:表4-1硬件平臺綜合比較表若從成本方面考慮,選擇virata芯片比較合適,而且廠方提供了自己的操作系統(tǒng)及全套開發(fā)源代碼,幾乎已是半成品。但測試中感覺部分協(xié)議、功能不夠完善,控制臺人機(jī)界面也不符合要求,還需要進(jìn)行后續(xù)開發(fā),而其提供的開發(fā)環(huán)境不夠理想,代碼可移植性也比較差,不利于技術(shù)積累。IntelIXP225、SamSungS5提供的軟件支持較多,已支持forTornado的1483Bridged和PPPOA等協(xié)議,也有NAT、PAT等網(wǎng)關(guān)路由應(yīng)用模塊,此外,還支持VoiceOverAAL2功能。但芯片價格相比之下也高出很多。考慮到目前VoAAL2的應(yīng)用并不明朗,很少有局端支持此項功能,所以暫不考慮這兩款芯片。MotorolaPowerPC850SAR是850系列芯片針對ADSL接入推出的專用簡化版本(此后又推出了性價比更高的850DSL芯片),價格較低,其提供的軟件方面支持雖然較少,但已基本符合我們的需求,后續(xù)開發(fā)的難度不會太大。如果選擇通用的Tornado開發(fā)套件進(jìn)行開發(fā),以后可以方便地遷移至IntelIXP225、IntelIXP425或SamSung等系統(tǒng)平臺,代碼的重復(fù)利用率高。由此,我們決定采用PowerPC850SAR作為核心部件,ADSL接入前端則選擇兼容性較好的AlcatelDSP芯片組,總體架構(gòu)如圖4-1所示。4.3軟件開發(fā)平臺的選擇軟件上目前流行的嵌入式操作系統(tǒng)有vxworks、Psos、Rtos、QNX、ulLinux等,由于vxworks對PowerPC、ARM都有良好的支持,已經(jīng)提供了針對Motorola開發(fā)評估板(ADS板)的BSP組件,并且其集成開發(fā)套件Tornado使用起來非常方便,可以有效地節(jié)省開發(fā)周期,也便于以后系統(tǒng)遷移,所以決定采用這款操作系統(tǒng)。4.4開發(fā)平臺搭建簡述開發(fā)平臺的準(zhǔn)備包括硬件平臺調(diào)試及底層驅(qū)動編寫,因為篇幅有限,硬件平臺的調(diào)試略過,底層驅(qū)動及軟件開發(fā)環(huán)境的搭建工作僅作簡單描述:1)針對目標(biāo)板與ADS板在SDRAM、Flash、Ethernet等芯片的不同,更改相應(yīng)的外圍器件驅(qū)動,生成新的BSP驅(qū)動,并編譯生成vxworks系統(tǒng)的Boot代碼,使其可以在新的目標(biāo)板上運行。2)在此BSP基礎(chǔ)上創(chuàng)建Bootable工程,編譯bootable程序代碼,使其可以正常下載至目標(biāo)板中運行,并能正常啟動TargetShell。此后,就可以建立downloadable工程,將應(yīng)用程序以任務(wù)執(zhí)行方式在目標(biāo)板中進(jìn)行調(diào)試。3)編寫AlcatelDSP驅(qū)動,調(diào)通ADSL物理層、ATM層(Utopia接口)的連接。這部分工作的要點在于AlcatelDSP內(nèi)部寄存器和提供目標(biāo)代碼都是LittleEndian模式,而PowerPC默認(rèn)的總線是BigEndian模式,下載時需要對相應(yīng)數(shù)據(jù)做字節(jié)或字交換。圖4-2ADSL共享接入系統(tǒng)軟件架構(gòu)示意圖這些部分調(diào)試完成后,就可以著手SAREND驅(qū)動、網(wǎng)絡(luò)層接口及網(wǎng)關(guān)應(yīng)用層的開發(fā)了。軟件架構(gòu)系統(tǒng)如圖4-2所示(深黑色所示部分為本文所要著重闡述的SAREND驅(qū)動、ADSL業(yè)務(wù)驅(qū)動及NAT實現(xiàn)等模塊)5SAREND驅(qū)動的編寫SAR驅(qū)動模塊是參照Vxworks系統(tǒng)的END驅(qū)動模板編寫的,基本符合MUX接口規(guī)范,其中主要的幾個功能實現(xiàn)。850SAR內(nèi)部參數(shù)的全局聯(lián)系結(jié)構(gòu)。是SCC各個參數(shù)表間的聯(lián)系,由左至右是從上級表到下級表的關(guān)系,代碼實現(xiàn)中,對這些參數(shù)表的初始化順序則要相反,即先初始化下級表,再初始化上級表。具體初始化流程如下:5.2加載及初始化函數(shù)sarEndLoad

由系統(tǒng)在加載muxDevEndLoad時間接調(diào)用,是END驅(qū)動第一個被加載的例程,它根據(jù)入口參數(shù)unit,對相應(yīng)AAL5通道的atmif結(jié)構(gòu)表進(jìn)行初始化,并調(diào)用SarAAL5Add增加相應(yīng)的通道。sarEndStart由系統(tǒng)在運行muxDevEndStart時間接調(diào)用,它根據(jù)入口參數(shù)unit調(diào)用SarAAL5Start函數(shù)激活相應(yīng)的AAL5通道,允許其正常開始收發(fā)。SarAAL5Add

增加一條AAL5通道,初始化這條通道的收發(fā)緩沖區(qū),緩沖區(qū)描述字,TCT及RCT表中的相關(guān)參數(shù)值。SarAAL5Start激活一條AAL5通道,根據(jù)通道對應(yīng)的atmif結(jié)構(gòu)設(shè)定PVC,上行速率。將通道PVCMASK放入Lookup表中,激活該通道進(jìn)行接收;發(fā)送Tx_Active命令,激活該通道進(jìn)行發(fā)送。5.3停止及卸載函數(shù)在系統(tǒng)執(zhí)行muxDevUnload或muxDevStop時間接調(diào)用這兩個函數(shù)。sarEndUnload釋放這個設(shè)備所占的EndObject結(jié)構(gòu)資源。但通道所占的內(nèi)存資源并沒有釋放。sarEndStop

停止這個接口。并調(diào)用sarAAL5Stop函數(shù)關(guān)閉這條通道,執(zhí)行與sarEndStart相反的操作。SarAAL5Stop

解激活并關(guān)閉這條通道。將通道PVCMASK移出Lookup表,解激活該通道,使其停止接收;發(fā)送Tx_Deactive命令,解激活該通道,使其停止發(fā)送。5.4數(shù)據(jù)發(fā)送函數(shù)函數(shù)名稱:sarEndSend功能:

將數(shù)據(jù)發(fā)送到相應(yīng)的AAL5通道中。入口參數(shù):指向通道的EndObject設(shè)備結(jié)構(gòu)指針,指向待發(fā)送的數(shù)據(jù)包mBlk結(jié)構(gòu)指針。返回:

發(fā)送成功,返回OK;阻塞狀態(tài)返回END_ERR_BLOCK;其他情況返回ERROR。流程簡介:將mBlk指向的數(shù)據(jù)包進(jìn)行加封裝操作,將指針及長度填入當(dāng)前發(fā)送BD中即可。(注:為防止重入,使用到發(fā)送指示信號量,并在修改阻塞狀態(tài)時給予中斷保護(hù))5.5中斷控制流程SCC工作在UTOPIA模式下的中斷聯(lián)接在IDMA1上,使用函數(shù)Intconnect(IV_IDMA1,(VOIDFUNCPTR)sarIntr,0)就能夠在SAR發(fā)生中斷時調(diào)用sarIntr函數(shù)。此時我們將輪詢整個SAR中斷表,并對相應(yīng)中斷進(jìn)行處理,為避免該中斷過多占用系統(tǒng)資源,我們將其放置在一個netJob任務(wù)中。同時,進(jìn)入該任務(wù)后,屏蔽全局中斷,直到所有的中斷事件處理完畢。5.6數(shù)據(jù)接收處理當(dāng)Utopia接口收到來自于DSP的數(shù)據(jù)后,會提取出ATM報文頭部信息,如果是AAL5通道報文,則將報文存入相應(yīng)的數(shù)據(jù)緩沖區(qū)中,設(shè)置相關(guān)寄存器值,并產(chǎn)生Utopia數(shù)據(jù)接收中斷。系統(tǒng)收到中斷請求后,將會進(jìn)入5.5所示的中斷例程進(jìn)行處理,判斷是接收事件時,提取產(chǎn)生事件的通道號,計算出該通道對應(yīng)的atmif結(jié)構(gòu)起始地址,作為參數(shù)調(diào)用sarRecv函數(shù),在函數(shù)中進(jìn)行數(shù)據(jù)報文處理。6.AAL5業(yè)務(wù)模塊的實現(xiàn)作為系統(tǒng)(Vxworks)協(xié)議棧和SAREND驅(qū)動模塊之間的接口,ATMAAL5業(yè)務(wù)網(wǎng)絡(luò)服務(wù)子層主要完成如下功能:1)發(fā)送:向系統(tǒng)注冊1483Bridged、1483Routed、ATMARP、PPPOA、PPPOE等不同類型接口(interface),根據(jù)各個接口的不同類型,對系統(tǒng)IP數(shù)據(jù)報文進(jìn)行ATM鏈路封裝,將封裝后的數(shù)據(jù)報文發(fā)送到驅(qū)動模塊并同時指示發(fā)送的VC通道;注:因為1483Bridged封裝的是以太網(wǎng)幀,解封裝后可視為正常的以太網(wǎng)數(shù)據(jù)幀,直接交由協(xié)議棧處理,所以我們不需要再注冊1483Bridged協(xié)議類型接口。2)接收:向系統(tǒng)注冊業(yè)務(wù)類型,接收系統(tǒng)送來的數(shù)據(jù)報文(由驅(qū)動模塊接收,并由系統(tǒng)根據(jù)接收的數(shù)據(jù)報文業(yè)務(wù)類型進(jìn)行分發(fā)),根據(jù)接口屬性對數(shù)據(jù)報文進(jìn)行解封裝后提交到系統(tǒng)協(xié)議棧或者交由其他模塊處理,3)控制:接收系統(tǒng)對于接口上的控制操作(主要是根據(jù)vxworksnetworkservices提供的規(guī)范完成),通過向mux接口注冊重發(fā)例程實現(xiàn)數(shù)據(jù)報文重發(fā)。6.1vxworks網(wǎng)絡(luò)服務(wù)子層編寫規(guī)范vxworks網(wǎng)絡(luò)服務(wù)子層介于從OSI規(guī)范的網(wǎng)絡(luò)層和鏈路層之間,主要負(fù)責(zé)處理系統(tǒng)網(wǎng)絡(luò)協(xié)議棧和MUX接口之間的數(shù)據(jù)報文。它包括接口初始化、數(shù)據(jù)結(jié)構(gòu)初始化、數(shù)據(jù)收發(fā)處理、錯誤報告和流量控制(可選)等部分。6.1.1接口初始化vxworks系統(tǒng)協(xié)議棧通過調(diào)用網(wǎng)絡(luò)服務(wù)子層初始化例程(函數(shù)名稱為xxxAttach())來激活相關(guān)網(wǎng)絡(luò)接口。在這個例程開始處,我們需要先用muxBind函數(shù)將該服務(wù)子層綁定至相關(guān)的網(wǎng)絡(luò)接口驅(qū)動上,使該服務(wù)子層能夠從MUX層收發(fā)數(shù)據(jù)報文。6.1.2數(shù)據(jù)結(jié)構(gòu)初始化服務(wù)子層在收發(fā)相關(guān)數(shù)據(jù)報文時,可能需要申請或釋放網(wǎng)絡(luò)內(nèi)存塊。為避免系統(tǒng)正常運行期間頻繁使用系統(tǒng)內(nèi)存塊操作導(dǎo)致效率降低或穩(wěn)定性降低,可以在初始化時預(yù)先申請一個內(nèi)存區(qū)域,由netBufLib所提供的netBuffer控制機(jī)制進(jìn)行管理。其它如接口的狀態(tài)、服務(wù)子層數(shù)據(jù)封裝類型、MUX接口初始化Cookie、服務(wù)子層地址映射表等參數(shù)結(jié)構(gòu)也需要在這一步進(jìn)行初始化。6.1.3數(shù)據(jù)收發(fā)處理如上所述,網(wǎng)絡(luò)服務(wù)子層通過muxBind函數(shù)將數(shù)據(jù)接收例程綁定至底層設(shè)備驅(qū)動。底層設(shè)備驅(qū)動接收到報文后,通過調(diào)用stackRcvRtn函數(shù)將數(shù)據(jù)經(jīng)由MUX層查找特定協(xié)議類型返回至服務(wù)子層。服務(wù)子層處理該報文之后如果返回FALSE,則系統(tǒng)將報文發(fā)往其它服務(wù)子層繼續(xù)處理,否則,該報文被丟棄。數(shù)據(jù)報文被封裝成mBlk形式從協(xié)議棧上層發(fā)送至網(wǎng)絡(luò)服務(wù)子層,網(wǎng)絡(luò)服務(wù)子層對報文進(jìn)行處理后,再調(diào)用muxSend或muxTkSend函數(shù)將報文通過MUX層發(fā)送至該接口設(shè)備驅(qū)動。在這期間,網(wǎng)絡(luò)服務(wù)子層可以通過調(diào)用該接口設(shè)備指定的地址解析函數(shù)獲得二層目標(biāo)地址,然后對數(shù)據(jù)幀進(jìn)行二層封裝。具體的數(shù)據(jù)收發(fā)處理實例可參見6.2.3AAL5Service協(xié)議數(shù)據(jù)處理流程。6.1.4錯誤報告當(dāng)設(shè)備驅(qū)動層向網(wǎng)絡(luò)服務(wù)子層匯報收發(fā)或其它錯誤時,網(wǎng)絡(luò)服務(wù)子層可以通過回調(diào)stackErrorRtn函數(shù)向上層報告這個錯誤。6.1.5設(shè)備控制設(shè)備驅(qū)動程序需要增加相應(yīng)的控制接口函數(shù)(如xxxIoCtrl),并注冊至MUX層,網(wǎng)絡(luò)服務(wù)子層就可以通過調(diào)用muxIoCtl控制底層設(shè)備驅(qū)動。6.2AAL5業(yè)務(wù)Service的實現(xiàn)Service層主要實現(xiàn)如下相關(guān)協(xié)議類型:ATMARPService.用于收發(fā)ATMARP報文,綁定類型為0x1577PPPOEService,用于收發(fā)PPPOE報文,綁定類型為0x8863,0x8864PPPOAService,用于收發(fā)PPPOA報文,綁定類型為0x2516如6.1所介紹的,我們首先需要向MUX注冊(綁定)這些Service,然后在Service的收發(fā)中對相關(guān)協(xié)議的數(shù)據(jù)報文進(jìn)行處理。6.2.1向vxworksMUX層注冊Service1)根據(jù)協(xié)議類型,初始化封裝數(shù)據(jù)、大小等值2)用muxBind函數(shù)綁定接收函數(shù),使某接口收到相應(yīng)類型的報文時能夠提交該函數(shù)處理。例如(代碼摘選自atmSrv.catmSrv1483RoutedAttach函數(shù)),綁定ATMARP時作如下調(diào)用:#defineMUX_PROTO_ATMARP0x1577intunit=1;muxBind(“pvc”,unit,(FUNCPTR)AtmSrv1483RoutedRcvRtn,NULL,NULL,NULL,MUX_PROTO_ATMARP,"AtmSrv1483RoutedRcvRtn",unit);/*此處,把AtmSrv1483RoutedRcvRtn函數(shù)綁定至pvc1接口,當(dāng)pvc1收到0x1577類型的數(shù)據(jù)報文時,就會自動提交給該函數(shù)進(jìn)行處理*/3)初始化Service網(wǎng)絡(luò)參數(shù),定義報文發(fā)送時的處理函數(shù),并向MUX層注冊該Service,例程如下:structifnet*pIfp=&AtmSrvCtrl[unit].ifp;bzero((char*)pIfp,sizeof(structifnet));pIfp->if_unit=unit;pIfp->if_name=ifName;muxIoctl(AtmSrvCtrl[unit].pCookie,EIOCGFLAGS,(caddr_t)&flags);pIfp->if_flags=flags;if(muxIoctl(AtmSrvCtrl[unit].pCookie,EIOCGMIB2,(caddr_t)&mib2Tbl)==ERROR)return(ERROR);pIfp->if_mtu=mib2Tbl.ifMtu;pIfp->if_baudrate=mib2Tbl.i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論