新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線(xiàn)通信 > 設(shè)計(jì)應(yīng)用 > 點(diǎn)對(duì)點(diǎn)通信協(xié)議PPPoE模塊的設(shè)計(jì)

點(diǎn)對(duì)點(diǎn)通信協(xié)議PPPoE模塊的設(shè)計(jì)

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

  第四步,接收PADS( Active Discovery Sessionconfirmation)幀。訪問(wèn)集中器收到PADR幀后開(kāi)始PPP會(huì)話(huà),它發(fā)送一個(gè)有效發(fā)現(xiàn)會(huì)話(huà)確認(rèn)(PADS)幀。其編碼域?yàn)?x65,會(huì)話(huà)ID域此時(shí)為接入服務(wù)器所產(chǎn)生的惟一會(huì)話(huà)標(biāo)識(shí)號(hào)碼。PADS幀也必須包含一個(gè)訪問(wèn)集中器名稱(chēng)類(lèi)型的標(biāo)簽,確認(rèn)向主機(jī)提供的服務(wù)。當(dāng)主機(jī)收到PADS幀確認(rèn)后,雙方進(jìn)入PPP會(huì)話(huà)階段。若訪問(wèn)集中器不能提供PADR中的服務(wù)名稱(chēng)標(biāo)簽所定義的服務(wù),它必須回復(fù)PADS幀,此幀必須包含標(biāo)簽類(lèi)型Sevice-Name-Error的標(biāo)簽,此時(shí)SESSION_ID必須為0x0000。

  在完成上述步驟后,雙方進(jìn)入會(huì)話(huà)階段。會(huì)話(huà)建立后,會(huì)話(huà)雙方任何一方都可以通過(guò)發(fā)送PADT(PPPoE active discover terminate)幀終止會(huì)話(huà)。PADT幀中的編碼字段值為0xA7,SEEION_ID字幀為在發(fā)現(xiàn)階段結(jié)束之后得到的會(huì)話(huà)ID值,以太幀類(lèi)型字段還是0x8863。發(fā)送PADT后則該次PPPoE過(guò)程結(jié)束。

  2)會(huì)話(huà)階段

  當(dāng)PPPoE會(huì)話(huà)開(kāi)始后,PPP數(shù)據(jù)就像普通的PPP數(shù)據(jù)被傳送,這時(shí)以太幀的目的地址是單播地址,類(lèi)型為0x8864,編碼域必須是0x00,SESSION_ID必須是發(fā)現(xiàn)階段建立的SESSION_ID,且在會(huì)話(huà)過(guò)程中不能改變。PPPoE凈載荷是PPP幀,會(huì)話(huà)過(guò)程實(shí)際上也就是實(shí)現(xiàn)PPP的過(guò)程,PPP分為三個(gè)階段。首先通過(guò)LCP完成相關(guān)鏈路控制協(xié)商過(guò)程,主要是建立、配置、測(cè)試數(shù)據(jù)鏈路,根據(jù)雙方的需求,進(jìn)行鏈路的協(xié)商和配置。PAP密碼認(rèn)證后,通過(guò)NCP,針對(duì)不同的網(wǎng)絡(luò)層的網(wǎng)絡(luò)控制階段。最后就是IP數(shù)據(jù)的傳輸階段。

  3 PPPoE軟件

  應(yīng)用于嵌入式系統(tǒng)的PPPoE軟件主要通過(guò)系統(tǒng)中的以太網(wǎng)絡(luò)驅(qū)動(dòng)在鏈路層與訪問(wèn)集中器建立一個(gè)邏輯上點(diǎn)對(duì)點(diǎn)的鏈路,為上層TCP/IP棧服務(wù)。發(fā)送數(shù)據(jù)時(shí),將上層IP分組封裝成PPPoE協(xié)議幀發(fā)送出去。在接收數(shù)據(jù)時(shí),將接收到的PPPoE協(xié)議幀解析后,交由上層處理,如圖4所示。與訪問(wèn)集中器建立鏈路的過(guò)程是軟件的核心部分。

  PPPoE發(fā)現(xiàn)階段流程如圖5所示。發(fā)現(xiàn)階段分為四個(gè)過(guò)程完成:發(fā)送PADI、接收PADO、發(fā)送PADR和接收PADS。在發(fā)送PADI和PADR時(shí)要分別定時(shí)和計(jì)數(shù),在有限的時(shí)間內(nèi)沒(méi)有收到響應(yīng),就應(yīng)重新發(fā)送;如果在重復(fù)發(fā)送若干次之后還沒(méi)有相應(yīng),說(shuō)明此時(shí)網(wǎng)絡(luò)故障或者網(wǎng)絡(luò)上沒(méi)有能夠響應(yīng)請(qǐng)示的服務(wù)器。

  

  PPPoE會(huì)話(huà)階段是一個(gè)標(biāo)準(zhǔn)的PPP協(xié)商過(guò)程。整個(gè)協(xié)商過(guò)程為三部分:LCP Negotiation、PAP Negotiation、IPCP Negotiation。 LCP階段主要通過(guò)交換數(shù)據(jù)包與訪問(wèn)集中器建立和配置鏈路,LCP流程如圖6所示。由于ISP提供商可能會(huì)不同,所接收到的LCP_REQ中包含的選項(xiàng)也可能不同,但其中必然包括OPTION3,表示鏈路所用的認(rèn)證協(xié)議(Authentication Protocol)。實(shí)踐中根據(jù)與ISP的PPPoE過(guò)程的數(shù)據(jù)包分析,多數(shù)ISP采用PAP(Password Authentication Protocol)認(rèn)證協(xié)議。也有的ISP采用CHAP(Challenge Handshake Authentication Protocol)認(rèn)證協(xié)議,雙方可以通過(guò)協(xié)商采用合適的認(rèn)證協(xié)議,本文采用PAP。

  PAP協(xié)商過(guò)程比較簡(jiǎn)單,發(fā)送PAP請(qǐng)求數(shù)據(jù)包,其中包括幀號(hào)和密碼,ISP返回確認(rèn)數(shù)據(jù)包,PAP協(xié)商過(guò)程結(jié)束。

  IPCP階段的目的是獲取ISP方提供的IP地址,流程如圖7所示。所以在IPCP階段的協(xié)商主要針對(duì)OPTION3進(jìn)行。PPPoE模塊首先接收服務(wù)器端一個(gè)IPCP_REQ,這個(gè)IPCP_REQ包括OPTION3(其IP地址值通常無(wú)效);接著PPPoE模塊發(fā)送一個(gè)IPCP_ACK,ISP方會(huì)響應(yīng)一個(gè)帶有有效地址的IPCP_NAK;然后PPPoE模塊就以這個(gè)地址再發(fā)一個(gè)IPCP_REQ,ISP服務(wù)器回應(yīng)IPCP_ACK,IPCP結(jié)束。此時(shí)PPPoE模塊得到限服務(wù)器分配的有效I守址,隨后就可以在PPPoE協(xié)議之上傳送IP數(shù)據(jù)包。需要注意的是,在PPP協(xié)商過(guò)程結(jié)束后,服務(wù)器為了檢驗(yàn)接入方鏈路的活動(dòng)狀態(tài),會(huì)定期發(fā)出LCP EchoRequest請(qǐng)求,此時(shí)PPPoE模塊需要發(fā)送LCP Echo-ACK作為應(yīng)答。

  

  嵌入式系統(tǒng)程序的特點(diǎn)是面向特定應(yīng)用,由于資源有限,軟件必須去除冗余。本PPPoE模塊應(yīng)用在以太電話(huà)中,在程序模塊設(shè)計(jì)中針對(duì)性地實(shí)現(xiàn)PPPoE協(xié)議的主要功能,盡量使代碼短小精悍,如省略掉了PPPoE發(fā)現(xiàn)階段網(wǎng)絡(luò)上有多個(gè)AC的情況,還省略了在會(huì)話(huà)階段對(duì)于LCP OPTION3(認(rèn)證協(xié)議)以外選項(xiàng)的協(xié)商和IPCP PTION3(IP地址)以外的選項(xiàng)的協(xié)商等情況。它些情況,PPPoE模塊需要更多的代碼來(lái)處理,而對(duì)于以太話(huà)機(jī)這種特定的應(yīng)用,有些選項(xiàng)是不必要的。另外,在軟件結(jié)構(gòu)設(shè)計(jì)中,采用“超循環(huán)”結(jié)構(gòu)來(lái)解決無(wú)操作系統(tǒng)問(wèn)題,可以很好地實(shí)現(xiàn)以太話(huà)機(jī)中的任務(wù)調(diào)度功能。在代碼編寫(xiě)上,采用C和匯編相結(jié)合的方法提高程序效率,同時(shí)采用流水操作、Inline、全局變量和共享內(nèi)存等技術(shù)實(shí)現(xiàn)代碼長(zhǎng)度和數(shù)據(jù)空間的優(yōu)化。測(cè)試表明,實(shí)現(xiàn)PPPoE軟件所需的代碼空間和數(shù)據(jù)空間都比PC機(jī)環(huán)境下PPPoE軟件代碼要小得多。

  PPPoE協(xié)議是當(dāng)今ADSL寬帶接入Internet的主要技術(shù)之一,而嵌入式技術(shù)是如今IT技術(shù)發(fā)展的熱點(diǎn),廣泛應(yīng)用于信息家電和各種媒體終端設(shè)備。本文在對(duì)PPPoE協(xié)議深入分析的基礎(chǔ)上,結(jié)合嵌入式系統(tǒng)的特點(diǎn),提出了PPPoE在嵌入式系統(tǒng)上的具體實(shí)現(xiàn)方法,通過(guò)運(yùn)用這些優(yōu)化方法,使軟件代碼空間和數(shù)據(jù)空間大大減少。目前該軟件模塊已成功應(yīng)用在筆者自己開(kāi)發(fā)的以太話(huà)機(jī)中。實(shí)際運(yùn)行表明,軟件運(yùn)行穩(wěn)定、互通性好,所實(shí)現(xiàn)的PPPoE協(xié)議軟件具有良好的應(yīng)用價(jià)值。


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

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉