《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 點對點通信協議PPPoE模塊的設計
點對點通信協議PPPoE模塊的設計
電子發燒友
摘要: 點對點通信協議PPPoE模塊的設計,目前,實現PPPoE協議的軟件有多種,且多數都是應用于PC機。該類軟件的作用主要是操作系統的撥號(P
Abstract:
Key words :

目前,實現PPPoE協議的軟件有多種,且多數都是應用于PC機。該類軟件的作用主要是操作系統的撥號(PPP)協議與以太網協議建立連接,通過PPPoE協議與ISP連接,獲得Internet連接服務。而本考到嵌入式系統的特點,直接在網絡協議數據鏈路層實現PPPoE協議。這樣做省去了鏈路層的PPP包到PPPoE包的轉換,提高了效率,并且具有良好的可移植性。

1 PPPoE協議框架

PPPoE協議共包括兩個階段,即PPPoE的媽現階段(PPPoE Discovery Stage)和PPPoE的會話階段(PPPoE Session Stage)。本文著重介紹PPPoE發現階段。對于PPPoE會話階段,可以看成與PPP的會話過程基本一樣,當然兩者在數據的封裝上還是有區別的。PPPoE并不需要PPP協議中的起始位標志、地址位、控制位和結束標志,也不需要PPP協議中規定的數據轉譯和CRC校驗,但要在PPP的數據報文前封裝PPPoE的報文頭。無論是哪一個階段的數據報文最終會被封裝成以太網幀傳送。

如果主機要開始一個PPPoE會話,它首先會在網絡上發送一個廣播,通過廣播尋找一個訪問集中器AC(Access Concentration)。當網絡上存在多個訪問集中器時,主機根據訪問集中器所能提供的服務或用戶預先配置的信息進行相應的選擇。訪問集中器選定后,主機開始與所選擇的訪問集中器建立一個PPPoE會話進程。在這一過程中,訪問集中器會為每一個PPPoE會話分配一個惟一的進程ID,會話建立后就開始了PPPoE的會話階段。在這個階段,已建立好點對點(邏輯點對點)連接的雙方采用PPP協議交換數據報文,從而完成一系列PPP的過程,最終將在這個點對點的邏輯通道上進行網絡層數據包的傳送。

PPPoE可以理解為在以太網上跑PPP數據,因此,其幀格式與以太幀格式一致,如圖1所示。通過類型域字段的內容,數據包的接收方可以識別以太網的數據域中承載的是什么協議的數據報文。PPPoE的兩大階段,也正是通過以太網的類型域進行區分的。這個域的值,在發現階段為0x8863,而在會話階段為0x8864。

PPPoE幀的載荷字承載PPPoE數據報文,報文格式如圖2所示,其中各字段的含義如下:

1)版本字段(ver)標志著協議版本信息,為4bits,目前協議規定其值為0x1。

2)類型字段(type),4bits,標志類型信息,值為0x1。

3)編碼字段(code),單個字節,在不同階段具有不同取值,本文稍候詳細分析。

4)會話ID字段(session id)由兩個字節組成,在發現階段,取值為0x0000,在后續的整個PPPoE會話過程中取值為發現階段所獲得的由AC分配的惟一值。

5)長度字段(length)由兩個字節組成,指示payload字段的長度,取值可以是0~1500。

6)凈載荷字荷(payload),該字段存放PPPoE協議幀所承載的數據,在發現階段承載零個或多個TAG結構,在會話階段承載PPP協議數據。但不是簡單的PPP封裝,因為并不需要PPP協議中的起始位標志、地址位、控制位和結束標志,也不需要PPP協議中規定的數據轉譯和CRC校驗。TAG結構如圖3所示。

2 PPPoE協議分析

PPPoE協議分為發現(Discovery)階段和會話(Session)階段。發現階段是一個無狀態的階段,該階段主要選擇訪問集中器,確定所要建立的PPP會話標識符Session ID,同時獲得對方點到點的連接信息;PPP會話階段執行標準的PPP過程。

1)發現階段

一個典型的發現階段分為四個步驟,當整個發現階段結束后,通信雙方分別獲取對方的MAC地址,并且共用一個Session ID,這兩個參數共同確定一個PPPoE會話。

第一步,發送PADI(PPPoE Active Discovery Initiation)幀。在PPPoE的以太幀結構中,編碼域的值為0x09,會話ID域的值設為0x0000。在這個步驟中,以太網目的地址為廣播并且在包中必須包含一個確切的服務名。

第二步,接收PADO(PPPoE Active Discovery Offer)幀。這一過程就是當ISP的PPPoE訪問集中器收到PADI幀后,若能夠滿足PADI提出的服務請求,可以發送PADO幀回應。PADO幀中的目的地址為發送PADI幀的客戶端的MAC地址,源地址為響應PADO幀的服務器地址。編碼域的值為0x07,會話ID域的值也設為0x0000。PADO幀還要包括PADI幀所提出的服務項。

第三步,發送PADR(PPPoE Active Discovery Request)幀。由于PADI包是廣播式的,故主機可能收到多個PADO響應幀。主機在可能收到的多個PADO幀中根據訪問集中器的名稱標簽或能提供的服務標簽選擇一個合適的訪問集中器,然后向所選擇的訪問集中器發送PPPoE有效發現請求(PADR)幀。其編碼域為0x19,Session ID域仍為0x0000,PADR幀必須包含一個服務名稱類型標簽,確定向接入服務請求的服務種類。

第四步,接收PADS(PPPoE Active Discovery Sessionconfirmation)幀。訪問集中器收到PADR幀后開始PPP會話,它發送一個PPPoE有效發現會話確認(PADS)幀。其編碼域為0x65,會話ID域此時為接入服務器所產生的惟一PPPoE會話標識號碼。PADS幀也必須包含一個訪問集中器名稱類型的標簽,確認向主機提供的服務。當主機收到PADS幀確認后,雙方進入PPP會話階段。若訪問集中器不能提供PADR中的服務名稱標簽所定義的服務,它必須回復PADS幀,此幀必須包含標簽類型Sevice-Name-Error的標簽,此時SESSION_ID必須為0x0000。

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

2)會話階段

當PPPoE會話開始后,PPP數據就像普通的PPP數據被傳送,這時以太幀的目的地址是單播地址,類型為0x8864,編碼域必須是0x00,SESSION_ID必須是發現階段建立的SESSION_ID,且在會話過程中不能改變。PPPoE凈載荷是PPP幀,會話過程實際上也就是實現PPP協議的過程,PPP分為三個階段。首先通過LCP完成相關鏈路控制協商過程,主要是建立、配置、測試數據鏈路,根據雙方的需求,進行鏈路的協商和配置。PAP密碼認證后,通過NCP,針對不同的網絡層協議的網絡控制階段。最后就是IP數據的傳輸階段。

3 PPPoE模塊軟件設計

應用于嵌入式系統的PPPoE軟件模塊主要通過系統中的以太網絡驅動在鏈路層與訪問集中器建立一個邏輯上點對點的通信鏈路,為上層TCP/IP協議棧服務。發送數據時,將上層IP分組封裝成PPPoE協議幀發送出去。在接收數據時,將接收到的PPPoE協議幀解析后,交由上層模塊處理,如圖4所示。與訪問集中器建立通信鏈路的過程是軟件設計的核心部分。

 PPPoE發現階段流程如圖5所示。發現階段分為四個過程完成:發送PADI、接收PADO、發送PADR和接收PADS。在發送PADI和PADR時要分別定時和計數,在有限的時間內沒有收到響應,就應重新發送;如果在重復發送若干次之后還沒有相應,說明此時網絡故障或者網絡上沒有能夠響應請示的服務器。

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

PAP協商過程比較簡單,發送PAP請求數據包,其中包括幀號和密碼,ISP返回確認數據包,PAP協商過程結束。

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

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

PPPoE協議是當今ADSL寬帶接入Internet的主要技術之一,而嵌入式技術是如今IT技術發展的熱點,廣泛應用于信息家電和各種媒體通信終端設備。本文在對PPPoE協議深入分析的基礎上,結合嵌入式系統的特點,提出了PPPoE在嵌入式系統上的具體實現方法,通過運用這些優化方法,使軟件代碼空間和數據空間大大減少。目前該軟件模塊已成功應用在筆者自己開發的以太話機中。實際運行表明,軟件運行穩定、互通性好,所實現的PPPoE協議軟件具有良好的應用價值。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区二区av电影| 久久亚洲欧美国产精品乐播| 欧美专区在线观看| 一区二区三区免费网站| 91久久在线| 在线精品一区| 在线观看不卡av| 在线观看欧美| 一区二区三区在线视频观看| 韩日成人av| 好吊妞这里只有精品| 国内精品嫩模av私拍在线观看| 国产午夜精品美女毛片视频| 国产色综合久久| 国产午夜亚洲精品理论片色戒| 国产欧美一区二区精品忘忧草| 国产伦理一区| 韩国女主播一区| 在线观看日韩专区| 亚洲国产精品成人综合| 亚洲国产一区视频| 亚洲精品少妇| 中国成人在线视频| 亚洲夜晚福利在线观看| 亚洲欧美在线播放| 欧美在线观看一区二区| 亚洲国产精品视频一区| 亚洲精品一区二区三区99| 99国产精品视频免费观看| 一本久道综合久久精品| 亚洲砖区区免费| 欧美一区二区在线免费播放| 久久精品国语| 欧美1区3d| 欧美日韩国产一区二区三区地区 | 亚洲福利国产精品| 亚洲精品乱码久久久久久黑人| 亚洲蜜桃精久久久久久久| 在线一区亚洲| 久久国产精品99精品国产| 蜜月aⅴ免费一区二区三区| 欧美日韩高清在线播放| 欧美视频精品在线| 国产视频一区二区三区在线观看| 黄色亚洲免费| aⅴ色国产欧美| 性欧美video另类hd性玩具| 亚洲国产精品ⅴa在线观看| 一区二区三区产品免费精品久久75 | 久久精品国产一区二区三区| 亚洲精品永久免费| 亚洲免费伊人电影在线观看av| 久久亚裔精品欧美| 欧美日韩三级| 国产在线视频欧美一区二区三区| 亚洲人成毛片在线播放女女| 在线综合+亚洲+欧美中文字幕| 欧美在线观看网址综合| 亚洲视屏一区| 久久综合一区二区| 国产精品激情偷乱一区二区∴| 国内精品一区二区| 一本色道久久99精品综合| 久久se精品一区精品二区| 一区二区三区国产精品| 久久久久久久波多野高潮日日 | 99riav久久精品riav| 久久精品国产欧美激情| 亚洲一区二区黄| 久久伊人亚洲| 国产精品乱码一区二区三区| 亚洲国产高潮在线观看| 午夜精品999| 在线亚洲免费| 美日韩精品视频| 国产精品自在欧美一区| 亚洲六月丁香色婷婷综合久久| 欧美一区二区三区精品电影| 中文一区字幕| 嫩草国产精品入口| 国产伦精品一区二区三区照片91 | 美国成人毛片| 国产日韩欧美二区| 夜夜嗨av一区二区三区| 亚洲欧洲中文日韩久久av乱码| 欧美一区二区福利在线| 欧美日韩在线综合| 亚洲国产精品成人一区二区| 久久9热精品视频| 亚洲网址在线| 欧美精品久久久久久久久久| 好吊妞**欧美| 久久爱www久久做| 欧美一区二区国产| 欧美先锋影音| 日韩视频久久| 日韩一区二区免费看| 欧美.com| 在线观看一区二区视频| 久久成人国产精品| 久久成人免费日本黄色| 国产精品嫩草影院一区二区| 99精品欧美一区二区三区| 日韩视频一区二区在线观看 | 国产精品麻豆va在线播放| 一区二区三区四区五区精品| 亚洲精品欧洲精品| 亚洲一区国产| 欧美视频成人| 日韩视频免费大全中文字幕| 日韩视频在线你懂得| 欧美二区在线| 亚洲经典视频在线观看| 亚洲另类一区二区| 欧美大片在线影院| 亚洲国产另类久久精品| 亚洲七七久久综合桃花剧情介绍| 久久欧美肥婆一二区| 国内不卡一区二区三区| 欧美一区二区视频在线| 久久久久青草大香线综合精品| 国产欧美一区二区精品忘忧草 | 欧美一区二区在线免费播放| 久久精品一本久久99精品| 国产视频自拍一区| 久久av一区二区三区漫画| 久久人人九九| 在线日韩中文字幕| 亚洲精品视频啊美女在线直播| 欧美国产精品劲爆| 亚洲精品一区二区三区不| 一二三区精品| 国产精品乱人伦中文| 欧美一乱一性一交一视频| 久久av资源网站| 伊人春色精品| 亚洲美洲欧洲综合国产一区| 欧美日韩和欧美的一区二区| 一区二区三区精品在线| 午夜精品久久久久久久99樱桃| 国产乱码精品一区二区三| 欧美一级二级三级蜜桃| 久久综合色播五月| 亚洲人成网站777色婷婷| 亚洲天堂av在线免费观看| 国产精品乱子久久久久| 欧美在线二区| 欧美精品日韩一本| 亚洲深夜福利网站| 久久久国产91| 亚洲精品一区二区三区樱花| 亚洲女同性videos| 国产一区二区成人| 亚洲精品小视频| 国产精品扒开腿做爽爽爽软件| 午夜精品99久久免费| 久色婷婷小香蕉久久| 亚洲美女网站| 久久精品视频在线观看| 亚洲国产乱码最新视频| 亚洲一区综合| 国外成人在线视频| 99在线视频精品| 国产日韩在线看| 99re在线精品| 国产欧亚日韩视频| 亚洲精品国产拍免费91在线| 国产精品久久福利| 亚洲第一福利社区| 欧美日韩在线视频首页| 久久福利毛片| 欧美日韩一区国产| 亚洲二区精品| 国产精品毛片a∨一区二区三区|国| 久久精品99国产精品酒店日本| 欧美日韩免费观看一区| 欧美一级免费视频| 欧美日韩福利视频| 久久gogo国模裸体人体| 欧美色综合天天久久综合精品| 久久国产日韩| 国产精品久久影院| 亚洲精品乱码久久久久久黑人| 国产乱码精品一区二区三区忘忧草| 亚洲清纯自拍| 国产区亚洲区欧美区| av成人天堂| 一区二区亚洲| 午夜精品www| 亚洲乱码国产乱码精品精可以看| 久久国产精品色婷婷| 99热免费精品| 美女视频黄a大片欧美| 亚洲永久免费观看| 欧美久色视频| 久久激情网站| 国产精品一区二区在线观看不卡 | 亚洲精品乱码久久久久久蜜桃麻豆| 国产欧美日韩在线播放| 一区二区三欧美|