pppoe工作原理詳解_ppp協議

來源:互聯網
上載者:User

與傳統的接入方式相比,PPPoE具有較高的效能價格比,它在包括小區組網建設等一系列應用中被廣泛採用,目前流行的寬頻接入方式ADSL就使用了PPPoE協議。隨著低成本的寬頻技術變得日益流行,DSL(Digital Subscriber Line)數位用戶線路技術更是使得許多電腦在互連網上能夠酣暢淋漓的衝浪了。但是這也增加了DSL服務提供者們對於網路安全的擔心。通過ADSL方式上網的電腦大都是通過乙太網路卡(Ethernet)與互連網相連的。同樣使用的還是普通的TCP/IP方式,並沒有附加新的協議。另外一方面,數據機的撥接,使用的是PPP協議,即Point to Point Protocol,點到點協議,該協議具有使用者認證及通知IP地址的功能。PPP over Ethernet(PPPoE)協議,是在乙太網路絡中轉播PPP幀資訊的技術,尤其適用於ADSL等方式。

PPP協議簡介 ---------------------------- PPP: Point-to-Point Protocol,鏈路層協議。使用者實現點對點的通訊。 PPP協議中提供了一整套方案來解決鏈路建立、維護、拆除、上層協議協商、認證等問題。具體包含這樣幾個部分:鏈路控制協議LCP(Link Control Protocol);網路控制協議NCP(Network Control Protocol);認證協議,最常用的包括口令驗證協議PAP(Password Authentication Protocol)和挑戰握手驗證協議CHAP(Challenge-Handshake Authentication Protocol)。
框架格式與HDLC相似,不同的是PPP是面向字元,HDLC是面向位的。PPP框架格式如下:

看到總共多了8個位元組,其中首尾位元組都是幀的起始和結束標誌位,A表示地址,C表示控制。 協議的兩個欄位,表示後面資訊部分的資料協議是什麼,包括: 0x0021——資訊欄位是IP資料報
0xC021——資訊欄位是鏈路控制資料LCP
0x8021——資訊欄位是網路控制資料NCP
0xC023——資訊欄位是安全性認證PAP
0xC025——資訊欄位是LQR
0xC223——資訊欄位是安全性認證CHAP

PPP協議的工作過程 --------------------------------- PPP通訊是兩個端點之間的通訊,每一端必須首先發送LCP packets資料來設定和測試資料鏈路,當鏈路建立後,peer才可以被認證,認證完成後,再通過發送NCP packets來選定網路層協議,這些後續的通訊就可以在網路層進行了。
具體的過程如下: 1.  鏈路靜止狀態:鏈路一定開始並結束於這個階段。當一個外來事件(例如載波偵聽或網路系統管理員設定)指出物理層已經準備就緒時,PPP將進入鏈路建立階段。在這個階段,LCP自動機器將處於初始狀態,向鏈路建立階段的轉換將給LCP自動機器一個UP事件訊號。
2.  鏈路建立狀態:LCP用於交換配置資訊包(Configure packets),建立串連。一旦一個配置成功資訊包(Configure-Ackpacket)被發送且被接收,就完成了交換,進入了LCP開啟狀態。所有的配置選項都假定使用預設值,除非被配置交換所改變。有一點要注意:只有不依賴於特別的網路層協議的配置選項才被LCP配置。在網路層協議階段,個別的網路層協議的配置由個別的網路控制協議(NCP)來處理。在這個階段接收的任何非LCPpackets必須被silentlydiscarded(靜靜的丟棄)。收到LCPConfigure-Request(LCP配置要求)能使鏈路從網路層協議階段或者認證階段返回到鏈路建立階段。
3.  認證階段:在一些鏈路上,在允許網路層協議packets交換之前,鏈路的一端可能需要peer去認證它。認證是不需要強制執行的。如果一次執行希望peer根據某一特定的認證協議來認證,那麼它必須在鏈路建立階段要求使用那個認證協議。應該儘可能在鏈路建立後立即進行認證。鏈路品質檢查可以同時發生。在認證完成之前,禁止從認證階段前進到網路層協議階段。如果認證失敗,認證者應該躍遷到鏈路終止階段。 在這一階段裡,只有鏈路控制協議、認證協議,和鏈路品質監視協議的packets是被允許的。在該階段裡接收到的其他的packets必須被靜靜的丟棄。
4.  網路層協議階段:一旦PPP完成了前面的階段,每一個網路層協議(例如IP,IPX,或AppleTalk)必須被適當的網路控制協議(NCP)分別設定。比如,NCP可以給新接入的PC機分配一個臨時的IP地址,這樣PC機就成為Internet上一個主機了。每個NCP可以隨時被開啟和關閉。當一個NCP處於Opened狀態時,PPP將攜帶相應的網路層協議packets。當相應的NCP不處於Opened狀態時,任何接收到的被支援的網路層協議packets都將被靜靜的丟棄。
5.  鏈路終止階段:PPP可以在任意時間終止鏈路。引起鏈路終止的原因很多:載波丟失、認證失敗、鏈路品質失敗、空閑周期定時器期滿、或者管理員關閉鏈路。LCP用交換Terminate(終止)packets的方法終止鏈路。當鏈路正被關閉時,PPP通知網路層協議,以便他們可以採取正確的行動。交換Terminate(終止)packets之後,執行應該通知物理層斷開,以便強制鏈路終止,尤其當認證失敗時。Terminate-Request(終止-要求)的寄件者,在收到Terminate-Ack(終止-允許)後,或者在重啟計數器期滿後,應該中斷連線。收到Terminate-Request的一方,應該等待peer去切斷,在發出Terminate-Request後,至少也要經過一個Restarttime(重啟時間),才允許斷開。PPP應該前進到鏈路死亡階段。在該階段收到的任何非LCPpackets,必須被靜靜的丟棄。 PPPoE協議及其工作過程 ----------------------------------------- PPPoE: PPP over Ethernet,是經常被用在DSL連結上的變種協議(RFC 2516),另外PPPoA 有時也被使用(PPP over ATM)。 PPPoE一般用在DSL接入網路,如下圖所示: PPPoE的報文就是在PPP的報文前面再加上乙太網路的前序,使得PPPoE可以通過簡單橋接裝置連入遠端接入裝置。但這裡我們發現PPPoE報文中的PPP內容與原始的PPP並不相同。 也可參考整個PPPoE的報文(包括Ethernet Frame): 詳細的說,就是下面的內容:
解釋一下上面PPPoE報文中的關鍵字段的意義。 ETHER_TYPE:  0x8863  Discovery Stage 0x8864 PPP Session Stage 
CODE:  0x00 PPP Session Stage 0x09 PPPOE Active Discovery Initiation (PADI) packet  0x07 PPPOE Active Discovery Offer (PADO) packet 0x19 PPPOE Active Discovery Request (PADR) packet 0x65 PPPOE Active Discovery Session-confirmation (PADS) packet  0xa7 PPPOE Active Discovery Terminate (PADT) packet   TAG_TYPES:(用於Discovery Stage中的協商參數)
0x0000 End-Of-List
0x0101 Service-Name
0x0102 AC-Name
0x0103 Host-Uniq
0x0104 AC-Cookie
0x0105 Vendor-Specific
0x0110 Relay-Session-Id
0x0201 Service-Name-Error
0x0202 AC-System-Error
0x0203 Generic-Error
PPPoE的工作過程分成兩個階段,即發現階段(Discorvery)和PPP會話階段。
發現階段(Discovery Stage)的具體過程如下: 1. 使用者主機用廣播的方式發出PADI (PPPOE Active Discovery Initiatio) 包,準備去獲得所有可串連的接入裝置(獲得其MAC地址); 2. 接入裝置收到PADI包後,返回PADO (PPPOE Active Discovery Offer) 作為回應; 3. 使用者主機從收到的多個PADO包中,根據其名稱類型名或者服務名,選擇一個合適的接入裝置,然後發送PADR (PPPOE Active Discovery Request) 包,另外如果一個使用者主機在發出PADI後在規定時間內沒有收到PADO,則會重發PADI; 4. 接入裝置收到PADR包後,返回PAS (PPPOE Active Discovery Session-confirmation) 包,其中包含了一個唯一session ID,雙方進入PPP會話階段。
PPP會話階段,即在session建立後的通訊階段。 另外,無論是使用者主機還是接入裝置可隨時發起PADT包,中止通訊。
使用PPPoE進行通訊的整個過程如下圖所示:


PPPoE在BAS上的實現
  PPPoE撥號軟體在應用中已經很成熟(Windows XP以上版本內建),下面重點討論PPPoE在接入伺服器BAS中的實現方式。
  3.1PPPoE的效率
    從PPPoE協議模型可以看出,BAS匯聚了使用者的所有資料流,它必須將每一個PPPoE包都拆開檢查處理,這在很大程度上是沿襲了傳統的PPP處理的方式,雖然有很好的安全性,但一旦使用者很多,資料包數量很大,解鎖裝速度就需要很快,BAS很大的精力花在檢測使用者的資料包上,容易形成接入的“瓶頸”。
  
  為此,在BAS的硬體結構上可以採用分布式網路處理器(NP)和ASIC晶片設計。網路處理器是專門針對電信網路裝置而開發的專用處理器,它有一套專門的指令集,用於處理電信網路的各種協議和業務,可以大大提高裝置的處理能力。同時,ASIC晶片轉寄資料包時接近硬體的轉寄效能,遠非CPU軟體方式可比,採用這種方式將PPPoE資料流的處理與轉寄分開,工作效率大大提高。此外在軟體系統結構上還應該與其他技術相結合,更好地發揮PPPoE的效能。
  
  3.2PPPoE與VLAN的結合
  
  VLAN即虛擬區域網路,是一種通過將區域網路內的裝置邏輯地劃分成一個個不同的網段,從而實現虛擬工作群組的技術。劃分VLAN的目的,一是提高網路安全性,不同VLAN的資料不能自由交流,需要接受第三層的檢驗;二是隔離廣播資訊,劃分VLAN後,廣播域縮小,有利於改善網路效能,能夠將廣播風暴控制在一個VLAN內部。
  
  PPPoE是一個用戶端/伺服器協議,用戶端需要發送PADI包尋找BAS,因此它必須同BAS在同一個廣播式的二層網路內,與VLAN的結合很好地解決了這方面的安全隱患。此外通過將不同業務類型的使用者指派到不同的VLAN處理,可以靈活地開展業務,加快處理流程,當然VLAN的規劃必須在二層裝置和BAS之間統一協調。
  
  BAS收到上行的PPPoE包後,首先判別VLAN ID的所屬類別,如果是普通的撥號使用者,則確定是Discovery階段還是會話階段的資料包,並嚴格按照PPPoE協議處理。在會話階段,根據不同的使用者類型從不同的位址集區中向使用者指派IP地址,位址集區由上層網管配置。如果是已經通過認證的使用者的資料包,則根據該使用者的服務類型處理,比如,如果是本地認證的撥號使用者,且對方也申請有同樣的功能,則直接由本地轉寄。
  
  如果是專線使用者,則不用經過PPPoE複雜的認證過程,直接根據使用者的VLAN ID便可進入專線使用者處理流程,接入速度大大提高。此外為了統一網管,在BAS與其他裝置之間需要通訊,這些資料包是內部資料包,也可根據VLAN ID來辨別。
  
  對於下行資料,由於BAS負責分配和解析使用者的IP,兼有網關的功能,它收到資料包的目的IP是使用者的,因此以IP為索引尋找使用者的資訊比根據MAC要方便得多,這一點與普通的交換器有所不同,具體過程跟上行處理差不多。
  
  3.3PPPoE對多業務選擇的支援
  
  多業務選擇指的是使用者通過一條終結到BAS的PPP串連來自主地選擇後台網路電訊廠商所提供的多種業務。之所以要支援多業務的選擇,一方面是因為各種業務的具體實現在技術上的側重點是不同的,對網路效能的要求也不盡相同,以前採取的固定分配的方式非常不便;另一方面,從網路應用的發展看,網路內容服務供應商ICP與網路接入商ISP的分離是必然趨勢,在接入匯聚側,ISP必須嚴格保證將使用者選擇的業務流轉寄到相應的ICP中去。
  
  目前採用的方法是使用者先在PPPoE撥號軟體中選擇相應的業務,然後對使用者進行業務授權確認,最後啟用BAS內部相應的處理模組。但是採用這種方式,使用者只能知道業務的名字,無法直觀地、全面地獲知BAS提供的各種業務類型,特別是在新業務的開展上十分困難,有很大的局限性。
  
  因此可以將BAS與後台業務選擇網關及RADIUS伺服器相配合,採取先認證後選擇業務的方式,具體操作如下:
  
  (1)主機發送PADI尋找BAS,PADI中包含一個服務名類型的TAG,它的值為空白,表示該使用者可以接受任何類型的服務。
  
  (2)BAS收到包後回送PADO,PADO中包含所有可以提供的服務的TAG,同時,還包含一個服務名為General的TAG。
  
  (3)主機發送PADR。使用者選擇已知的服務名,也可以選擇General服務。
  
  (4)BAS收到PADR包後為使用者指派資源,並開始PPP協商過程。在PPP過程中,BAS將使用者輸入的帳號和密碼等資訊送到RADIUS伺服器上認證。
  
  (5)通過認證的使用者,享受BAS提供的該項服務,但如果選擇的是General,則被強制訪問與BAS直連的服務選擇網關。背景服務選擇網關是一台具有Web Server功能的伺服器,使用者可以通過Web的互動式介面得到可選擇業務的相關資訊(包括費用、頻寬等),同時顯示該使用者帳號對應的資訊。
  
  (6)使用者選擇相應的業務,同時服務選擇網關會定義各種使用者的業務範圍和操作許可權。
  
  (7)服務選擇網關啟用接入伺服器內部相應的業務模型實現該業務。以上方式是嚴格按照PPPoE協議執行的,與當前流行的撥號軟體完全相容,如果使用者對其他的業務根本不感興趣而對已申請的業務非常熟悉,也不影響使用者的習慣。
  
  從BAS的角度考慮,PPPoE的操作流程也沒有什麼改變,只是多添了一種服務類型而已。如果電訊廠商當前沒有服務選擇網關,可以通過網管配置,在對PADI包的回應時不包含General服務就可以了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.