PPPoE技術白皮書
關鍵詞:PPP,Ethernet,PPPoE
摘 要:PPPoE是一種通過一個遠端接入設備為以太網上的主機提供接入服務,並可以對接入的每個主機實現控製和計費的技術。本文介紹了PPPoE的產生背景、技術優點、工作過程和典型組網應用。
縮略語:
縮略語 | 英文全名 | 中文解釋 |
ADSL | Asymmetric Digital Subscriber Line | 非對稱數字用戶線 |
DSLAM | Digital Subscriber Line Access Multiplexer | 數字用戶線接入複用器 |
PPP | Point to Point Protocol | 點對點協議 |
PPPoE | PPP Over Ethernet | 在以太網上承載PPP協議 |
PADI | PPPoE Active Discovery Initiation | PPPoE活動發現發起報文 |
PADO | PPPoE Active Discovery Offer | PPPoE活動發現提供報文 |
PADR | PPPoE Active Discovery Request | PPPoE活動發現請求報文 |
PADS | PPPoE Active Discovery Session-confirmation | PPPoE活動發現會話報文 |
PADT | PPPoE Active Discovery Terminate | PPPoE活動發現終結報文 |
人們想通過相同的接入設備來連接到遠程站點上的多個主機,同時接入設備能夠提供與撥號上網類似的訪問控製和計費功能。在眾多的接入技術中,把多個主機連接到接入設備的最經濟的方法就是以太網,而PPP協議可以提供良好的訪問控製和計費功能,於是產生了在以太網上傳輸PPP的方法,即PPPoE。
PPPoE協議的提出解決了用戶上網收費等實際應用問題,得到了寬帶接入運營商的認可並廣為采用。
l 沿襲傳統的撥號上網方式,依舊使用他們熟悉的硬件以及類似的軟件進行Internet的接入。
l 兼容現有的所有xDSL Modem,不需要對客戶端的xDSL Modem進行複雜的配置。
l 使用以太網網卡連接PC和xDSL Modem,允許多台PC同時共享xDSL線路,可以節約用戶投資。
對於運營商來說,PPPoE的優點如下:
l 運營商可以通過數字用戶線、電纜調製解調器或無線連接等方式提供支持多用戶的寬帶接入服務。
l 運營商可以利用可靠和熟悉的技術來加速部署高速互聯網業務,對現有網絡部署影響小。
l 運營商可以通過訪問控製功能對用戶的身份進行確認,通過計費功能對用戶進行計費,同時對用戶的網絡行為進行監控,保證了網絡安全。
l 終端用戶可同時接入多個運營商,這種動態服務選擇的功能可以使運營商容易創建和提供新的業務。
PPPoE使用Client/Server模型,PPPoE的客戶端為PPPoE Client,PPPoE的服務器端為PPPoE Server。PPPoE Client向PPPoE Server發起連接請求,兩者之間會話協商通過後,PPPoE Server向PPPoE Client提供接入控製、認證等功能。
根據PPP會話的起止點所在位置的不同,有兩種組網結構:
l 第一種方式在設備之間建立PPP會話,所有主機通過同一個PPP會話傳送數據,主機上不用安裝PPPoE客戶端撥號軟件,一般是一個企業(公司)共用一個賬號(圖中PPPoE Client位於企業/公司內部,PPPoE Server是運營商的設備)。
圖1 PPPoE組網結構圖1
l 第二種部署方式,PPP會話建立在Host和運營商的路由器之間,為每一個Host建立一個PPP會話,每個Host都是PPPoE Client,每個Host一個帳號,方便運營商對用戶進行計費和控製。Host上必須安裝PPPoE客戶端撥號軟件。
圖2 PPPoE組網結構圖2
PPPoE報文的格式就是在以太網幀中攜帶PPP報文,如圖3所示。
各個字段解釋如下:
l Destination_address域:一個以太網單播目的地址或者以太網廣播地址(0xffffffff)。對於Discovery數據包來說,該域的值是單播或者廣播地址,PPPoE Client尋找PPPoE Server的過程使用廣播地址,確認PPPoE Server後使用單播地址。對於Session階段來說,該域必須是Discovery階段已確定的通信對方的單播地址。
l Source_address域:源設備的以太網MAC地址。
l Ether_type:設置為0x8863(Discovery階段或拆鏈階段)或者0x8864(Session階段)。
l Ver域:4bits,PPPoE版本號,值為0x1。
l Type域:4bits,PPPoE類型,值為0x1。
l Code域:8bits,PPPoE報文類型。Code域為0x00,表示會話數據。Code域為0x09,表示PADI報文;Code域為0x07,表示PADO或PADT報文;Code域為0x19,表示PADR報文;Code域為0x65,表示PADS報文。報文的具體情況請參見附錄部分。
l Session_ID域:16bits,對於一個給定的PPP會話,該值是一個固定值,並且與以太網Source_address和Destination_address一起實際地定義了一個PPP會話。值0xffff為將來的使用保留,不允許使用。
l Length域:16bits,定義PPPoE的Payload域長度。不包括以太網頭部和PPPoE頭部的長度。
PPPoE的協商過程如圖4所示:
圖4 PPPoE協商過程
PPPoE可分為三個階段,即Discovery階段、Session階段和Terminate階段。
Discovery階段由四個過程組成。完成之後通信雙方都會知道PPPoE的Session_ID 以及對方以太網地址,它們共同確定了唯一的PPPoE Session。
(1) PPPoE Client廣播發送一個PADI報文,在此報文中包含PPPoE Client想要得到的服務類型信息。
(2) 所有的PPPoE Server收到PADI報文之後,將其中請求的服務與自己能夠提供的服務進行比較,如果可以提供,則單播回複一個PADO報文。
(3) 根據網絡的拓撲結構,PPPoE Client可能收到多個PPPoE Server發送的PADO報文,PPPoE Client選擇最先收到的PADO報文對應的PPPoE Server做為自己的PPPoE Server,並單播發送一個PADR報文。
(4) PPPoE Server產生一個唯一的會話ID(SESSION ID),標識和PPPoE Client的這個會話,通過發送一個PADS報文把會話ID發送給PPPoE Client,如果沒有錯誤,會話建立後便進入PPPoE Session階段。
PPPoE Discovery階段的工作為PPPoE Client和PPPoE之間建立了Session,之後PPPoE便進入了Session階段,Session階段可劃分為兩部分,一是PPP協商階段,二是PPP報文傳輸階段。
PPPoE Session上的PPP協商和普通的PPP協商方式一致,分為LCP、認證、NCP三個階段。
(1) LCP階段主要完成建立、配置和檢測數據鏈路連接。
(2) LCP協商成功後,開始進行認證工作,認證協議類型由LCP協商結果(CHAP或者PAP)決定。
(3) 認證成功後,PPP進入NCP階段,NCP是一個協議族,用於配置不同的網絡層協議,常用的是IP控製協議(IPCP),它負責配置用戶的IP和DNS等工作。
PPPoE Session的PPP協商成功後,其上就可以承載PPP數據報文。
在PPPoE Session階段所有的以太網數據包都是單播發送的。
PPP通信雙方應該使用PPP協議自身(比如PPP終結報文)來結束PPPoE會話,但在無法使用PPP協議結束會話時可以使用PADT報文。
進入PPPoE Session階段後,PPPoE Client和PPPoE Server都可以通過發送PADT報文的方式來結束PPPoE連接。PADT數據包可以在會話建立以後的任意時刻單播發送。在發送或接收到PADT後,就不允許再使用該會話發送PPP流量了,即使是常規的PPP結束數據包也不允許發送。
企業希望使用一個公共帳號訪問Internet:
l Router A作為PPPoE Client,通過一個帳號訪問Internet(相當於整個企業的員工公用這個帳號)。
l Router B作為PPPoE Server連接至DSLAM,提供RADIUS認證、計費等功能,同時連接到Internet。
圖5 利用ADSL Modem將局域網接入Internet組網圖
AP設備作為PPPoE Client,BRAS設備作為PPPoE Server,終端用戶可以直接通過無線網絡訪問Internet。
圖6 無線PPPoE接入組網圖
l RFC1661:The Point-to-Point Protocol (PPP)
l RFC2516:A Method for Transmitting PPP Over Ethernet (PPPoE)
l Code域為0x09。
l Session_ID域為0x0000。
l TAG_TYPE域為0x0101(Service-Name),表明後麵緊跟的是服務的名稱。有且隻有一個TAG_TYPE為Service-Name的TAG,其他類型的TAG可選。
圖7 PADI數據包舉例
l Code域為0x07。
l SESSION_ID域為0x0000。
l TAG_TYPE域為0x0101(Service-Name),表明後麵緊跟的是服務的名稱;為0x0102(AC-Name)表明後麵緊跟的字符串唯一地表示了某個特定的訪問集中器。有且隻有一個TAG_TYPE為AC-Name的TAG,至少一個TAG_TYPE為Service-Name的TAG。
圖8 PADO數據包舉例
l Code域為0x19。
l SESSION_ID為0x0000。
l TAG_TYPE域為0x0101(Service-Name),表明後麵緊跟的是服務的名稱。有且隻有一個TAG_TYPE為Service-Name的TAG,其他類型的TAG可選。
圖9 PADR數據包舉例
l Code域為0x65。
l SESSION_ID為Discovery階段分配的數值。
l TAG為可選。
圖10 PADS數據包舉例
l Code域為0xa7。
l SESSION_ID域為Discovery階段分配的數值。
l 無TAG。
圖11 PADT數據包舉例
Copyright ©2009 杭州華三通信技術有限公司 版權所有,保留一切權利。
非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部,並不得以任何形式傳播。
本文檔中的信息可能變動,恕不另行通知。