PPPOE

PPPOE

計算機科技術語
PPPoE(英語:Point-to-Point Protocol Over Ethernet),以太網上的點對點協議,是将點對點協議(PPP)封裝在以太網(Ethernet)框架中的一種網絡隧道協議[1]。由于協議中集成PPP協議,所以實現出傳統以太網不能提供的身份驗證、加密以及壓縮等功能,也可用于纜線調制解調器(cable modem)和數字用戶線路(DSL)等以以太網協議向用戶提供接入服務的協議體系。
    中文名:PPPOE 外文名: 所屬學科:計算機 适用:ADSL等 定義:基于以太網的點對點通訊協議

工作原理

PPPoE協議的工作流程包含發現和會話兩個階段,發現階段是無狀态的,目的是獲得PPPoE終結端(在局端的ADSL設備上)的以太網MAC地址,并建立一個唯一的PPPoE SESSION-ID。發現階段結束後,就進入标準的PPP會話階段。

當一個主機想開始一個PPPoE會話,它必須首先進行發現階段,以識别局端的以太網MAC地址,并建立一個PPPoE SESSION-ID。在發現階段,基于網絡的拓撲,主機可以發現多個接入集中器,然後允許用戶選擇一個。當發現階段成功完成,主機和選擇的接入集中器都有了他們在以太網上建立PPP連接的信息。直到PPP會話建立,發現階段一直保持無狀态的Client/Server(客戶/服務器)模式。一旦PPP會話建立,主機和接入集中器都必須為PPP虛接口分配資源。

PPPoE協議會話的發現和會話兩個階段具體進程如下。

發現階段

在發現(Discovery)階段中用戶主機以類似廣播的方式尋找所連接的所有接入集中器(或交換機),并獲得其以太網MAC地址。然後選擇需要訪問的接入集中器,并确定所要建立的PPP會話唯一标識号碼。發現階段有4個步驟,當此階段完成,通信的兩端都知道PPPoE SESSION-ID和對端的以太網地址,他們一起唯一定義PPPoE會話。這4個步驟如下。

接入集中器收到在服務範圍内的PADI分組,發送PPPoE有效發現提供包(PADO)分組,以響應請求。其中CODE字段值為0×07,SESSION-ID字段值仍為0×0000。PADO分組必須包含一個接入集中器名稱類型的标簽(标簽類型字段值為0×0102),以及一個或多個服務名稱類型标簽,表明可向主機提供的服務種類。

主機在可能收到的多個PADO分組中選擇一個合适的PADO分組,然後向所選擇的接入集中器發送PPPoE有效發現請求分組(PADR)。其中CODE字段為0×19,SESSION_ID字段值仍為0×0000。PADR分組必須包含一個服務名稱類型标簽,确定向接入集線器(或交換機)請求的服務種類。當主機在指定的時間内沒有接收到PADO,完整它應該重新發送它的PADI分組,并且加倍等待時間,這個過程會被重複期望的次數。

接入集中器收到PADR分組後準備開始PPP會話,它發送一個PPPoE有效發現會話确認PADS分組。其中CODE字段值為0×65,SESSION-ID字段值為接入集中器所産生的一個唯一的PPPoE會話标識号碼。PADS分組也必須包含一個接入集中器名稱類型的标簽以确認向主機提供的服務。當主機收到PADS分組确認後,雙方就進入PPP會話階段。

會話階段

用戶主機與接入集中器根據在發現階段所協商的PPP會話連接參數進行PPP會話。一旦PPPoE會話開始,PPP數據就可以以任何其他的PPP封裝形式發送。所有的以太網幀都是單播的。PPPoE會話的SESSION-ID一定不能改變,并且必須是發現階段分配的值。

PPPoE還有一個PADT分組,它可以在會話建立後的任何時候發送,來終止PPPoE會話,也就是會話釋放。它可以由主機或者接入集中器發送。當對方接收到一個PADT分組,就不再允許使用這個會話來發送PPP業務。PADT分組不需要任何标簽,其CODE字段值為0×a7,SESSION-ID字段值為需要終止的PPP會話的會話标識号碼。在發送或接收PADT後,即使正常的PPP終止分組也不必發送。PPP對端應該使用PPP協議自身來終止PPPoE會話,但是當PPP不能使用時,可以使用PADT。

驗證過程

假如客戶端要通過一個局域網與遠程的PPPoE服務器進行身份驗證,這時,它們會有兩個不同的會話階段,Discovery階段和PPP會話階段。當一個客戶端想開始一個PPPoE會話時,它必須首先進行發現階段以識别對端的以太網MAC地址,并建立一個PPPoESESSON_ID。在發現階段,基于網絡的拓撲結構,客戶端可以發現多個PPPoE服務器,然後從中選擇一個,不過通常都是選擇反應最快的一個。

Discovery階段是一個無狀态的階段,該階段主要是選擇接入服務器,确定所要建立的PPP會話标識符Session ID,同時獲得對方點到點的連接信息;PPP會話階段執行标準的PPP過程。

當此階段完成,通信的兩端都知道PPPoESESSON_ID和對端的以太網地址,它們一起定義了一個唯一的PPPoE會話。這些步驟包括客戶端廣播一個發起分組(PADI),一個或多個PPPoE服務器發送響應分組(PADO),客戶端向選中的服務器發送請求分組(PADR),選中的PPPoE服務器發送一個确認分組(PADS)給客戶端。當客戶端接收到确認分組,它可以開始進行PPP會話階段。當PPPoE服務器發送出确認分組,它可以開始PPP會話。

當客戶端在指定的時間内沒有接收到PADO,它應該重新發送它的PADI分組,并且加倍等待時間,這個過程會被重複期望的次數。如果客戶端正等待接收PADS,應該使用具有客戶端重新發送PADR的相似超時機制。在重試指定的次數後,主機應該重新發送PADI分組。

PPPoE還有一個PADT分組,它可以在會話建立後的任何時候發送,來終止PPPoE會話。它可以由客戶端或者PPPoE服務器發送。當接收到一個PADT,不再允許使用這個會話來發送PPP業務在發送或接收PADT後,即正常的PPP不能使用時,可以使用PADT,一旦PPPoE會話開始,PPP數據就可以以任何其它的PPP封裝形式發送。所有的以太網幀都是單播的,身份驗證是發生在會話階段的,PPPoE會話的SESSION_ID一定不能改變,并且必須是發現階段分配的值。

發展前景

PPPoE是從窄帶技術演化而來,PPP最早就是專門為電話線上網而設計的,當寬帶普及後,為了兼容以前的電話線用戶習慣,故在寬帶網絡中繼承了PPP技術。PPPoE是一種過渡技術,目前已經基本處于淘汰階段。原因如下:

PPPoE是一種2層鍊路技術,正常下無法穿透三層交換機,若要在三層交換機傳輸,就必須做trunk,即把三層當作二層交換機使用。這導緻不能充分發揮三層交換機的潛能,三層交換機的很多高級功能都無法使用,從而浪費了寶貴的網絡設備資源。也給整體網絡規劃造成了一定的複雜性。如果一開始采用了PPPoE認證,那麼以後想要使用三層交換機網絡規劃功能,調整整體網絡,那麼将是一個巨大的工作量。

寬帶使用PPPoE方式,将造成不必要的帶寬損耗,而且上網速度比正常寬帶速度要慢一個級别。原因是采用PPPoE比正常寬帶包,多了2個協議層,一個是PPPoE協議層,另一個就是PPP協議層,這幾個協議層頭會增加到正常數據包頭部裡,在傳輸數據過程中,多出了不少額外數據,撥号握手過程也比正常多了好幾個步驟。

2004年開始,ARP攻擊在網絡流行時,PPPoE由于自身與ARP無關的特點,使其具有天然免疫優勢,所以,當時很多場合對PPPoE有較高的需求。

但經過近10年網絡發展,随着各種安全軟件普及,如360、電腦管家、以及各種殺毒軟件等都早已具有防止ARP攻擊功能。因此,ARP攻擊已經徹底消失殆盡。PPPoE的各種缺點已經越來越不适應寬帶網絡的發展。

PPPoE客戶端一般都會采用操作系統自帶的PPPoE,但設置比較麻煩,有很多步驟,普通家庭用戶若不熟悉,大多數根本搞不定,此時維護人員必須挨家挨戶進行上門設置,這給網絡維護帶來了很大工作量。非常不利寬帶網絡用戶的發展和運營,将經常接到用戶關于PPPoE的使用投訴。

PPPoE的效率比較低,從PPPoE協議模型可以看出,BAS彙聚了用戶的所有數據流,它必須将每一個PPPoE包都拆開檢查處理,這在很大程度上是沿襲了傳統的PPP處理的方式,一旦用戶很多,數據包數量很大,解封裝速度就需要很快,BAS很大的精力花在檢測用戶的數據包上,容易形成接入的“瓶頸”。

PPPoE由于采用了二層鍊路方式,所以在防止ARP三層包攻擊方式具有很大安全性,但PPPoE自身卻存在着協議不安全性,因為PPPoE認證是采用廣播方式,在網段内隻要裝個網絡嗅探器,都能截獲到PPPoE包,并能做任意修改重定向。關于PPPoE安全漏洞詳細描述見最後參考資料《PPPoE驗證缺陷所帶來的危害》。

相關詞條

相關搜索

其它詞條