PPPOE協議介紹

2021-06-12 11:39:07 字數 4042 閱讀 7798

pppoe,全稱point-to-point protocol over ethernet,它工作在osi的資料鏈路層,pppoe協議提供了在廣播式的網路(如乙太網)中多台主機連線到遠端的訪問集中器(我們對目前能完成上述功能的裝置為寬頻接入伺服器)上的一種標準。

pppoe協議共包括兩個階段,即pppoe的發現階段(pppoe discovery stage)和pppoe的會話階段(pppoe session stage)。而兩者的主要區別在於只是在ppp的資料報文前封裝了pppoe的報文頭。

當乙個主機希望能夠開始乙個pppoe會話時,它首先會在廣播式的網路上尋找乙個訪問集中器,當然可能網路上會存在多個訪問集中器時,對於主機而言則會根據各訪問集中器(ac,access concentration)所能提供的服務或使用者的預先的一些配置來進行相應的選擇。當主機選擇完了所需要的訪問集中器後,就開始和訪問集中器建立乙個pppoe會話程序。在這個過程中訪問集中器會為每乙個pppoe會話分配乙個唯一的程序id,會話建立起來後就開始了pppoe的會話階段,在這個階段中已建立好點對點連線的雙方(這種點對點的結構與ppp不一樣,它是一種邏輯上的點對點關係)就採用ppp協議來交換資料報文,從而完成一系列ppp的過程,最終將在這點對點的邏輯通道上進行網路層資料報的傳送。

我們簡要介紹一下pppoe的資料報文格式。pppoe的資料報文是被封裝在乙太網幀的資料域內的。簡單來說我們可能把pppoe報文分成兩大塊,,一大塊是pppoe的資料報頭,另一塊則是pppoe的淨載荷(資料域),對於pppoe報文資料域中的內容會隨著會話過程的進行而不斷改變。下圖1為pppoe的報文的格式:

版本型別**

會話id

長度域淨載荷(或資料域)

(圖1  pppoe資料報格式)

lpppoe資料報文最開始的4位為版本域,協議中給出了明確的規定,這個域的內容填充0x1。

l緊接在版本域後的4位是型別域,協議中同樣規定,這個域的內容填充為0x1。

l**域占用1個位元組,對於pppoe 的不同階段這個域內的內容也是不一樣的。

l會話id點用2個位元組,當訪問集中器還未分配唯一的會話id給使用者主機的話,則該域內的內容必須填充為0x0000,一旦主機獲取了會話id後,那麼在後續的所有報文中該域必須填充那個唯一的會話id值。

l長度域為2個位元組,用來指示pppoe資料報文中淨載荷的長度。

l資料域,有時也稱之為淨載荷域,在pppoe的不同階段該域內的資料內容會有很大的不同。在pppoe的發現階段時,該域內會填充一些tag(標記);而在pppoe的會話階段,該域則攜帶的是ppp的報文。

這裡我們主要來介紹一下pppoe發現階段的報文格式以及它的報文:

對於發現階段的pppoe資料報文而言,它的淨載荷可能包含零個或多個tag(標記),實際上這些標記的意義非常類似於ppp配置引數選項,它同樣也是要經過協商的。對於pppoe協議而言,沒有像ppp的配置引數選項那樣定義了很多細節,而只是乙個初略的定義,因此在實際當中實現這個過程會依據不同廠商的裝置有不同。首先還是讓我們看一下承載在pppoe報文資料域中的標記封裝格式,如圖2,

型別長度資料

(圖2 標記的封裝格式)

從圖2中可以看出,標記的封裝格式採用的是大家所熟知的tlv結構,也即是(型別+長度+資料)。標記的型別域為2個位元組,下表列出了各種標記型別的含義:

標記型別

標記說明

0x0000

表示pppoe報文資料域中一串標記的結束,為了保證版本的相容性而保留,在有些報文中有應用。

0x0101

服務名,主要用來表明網路側所能提供給使用者的一些服務。

0x0102

訪問集中器名,當使用者側接收到了ac的回應的pado報文時,就可獲從所攜帶的標記中獲知訪問集中器的名子,而且還可以據此來選擇相應的訪問集中器。

0x0103

主機唯一標識,類似於ppp資料報文中的標識域,主要是用來匹配傳送和接收端的,因為對於廣播式的網路中會同時存在很多個pppoe的資料報文。

0x0104

ac-cookies,主要被用來防止惡意性dos功擊。

0x0105

銷售商的識別符號。

0x0110

中繼會話id,對於pppoe的資料報文也同樣可以像dhcp報文一樣被中斷到另外的ac上終結,這個欄位則是用來維護另乙個連線的。

0x0201

服務名錯誤,當請求的服務名不被對端所接受時,會在響應的報文中攜帶這個標記。

0x0202

訪問集中器名出錯。

0x0203

一般性錯誤。

l標記的長度域為2個位元組,它用來指明標記資料域的長度。

l標記的資料域中用來放置不同型別標記所對應的相關資料。

pppoe的發現階段可分為四步,其實這個過程也是pppoe四種資料報文的交換的乙個過程。當完成這四步後,使用者主機與訪問集中器雙方就能獲知對方的mac位址和唯一的會話id號,從而進入到下乙個階段(pppoe的會話階段)。實際上雙方在互相知道了對方的mac位址後,就已經在廣播式的網路上確定了一一的對應關係,為了保證這個連線的有效性,同時使pppoe協議能更加靈活的運用,因此還加入了會話id欄位,通過這兩個條件就可完成確定雙方點對點的關係。

在這個階段一開始,由於接入使用者並不知道訪問集中器的mac位址,則使用類似於arp解析的過程的機制來獲取訪問集中器的mac位址。首先由接入使用者側發起乙個初始化的廣播報文,對於訪問集中器如果配置了pppoe的業務時,它會時實檢測網路上的資料報,當發現乙太網資料幀中所承載的是pppoe報文時(通過協議域的內容來區分),就會將其交給相應的模組去處理。當收到初始化報文後,訪問集中器會向該使用者回應乙個報文。如果網路上存在很多這樣的訪問集中器且都收到了使用者側傳送的初始化報文時,它們也都會向使用者側會送乙個確認報文,如果該使用者收到這個報文後,則會依據報文中所攜帶的內容或本端的一些配置來選擇乙個唯一的訪問集中器進行會話。到此時已完成了前兩步了,那麼剩下的兩步則是協商一些所提供的服務選項和獲取pppoe會話階段所必須的會話id值。

說明:在這個階段,所有資料報文是被承載在乙太網的資料域中的,而且乙太網資料幀的協議域始終為0x8863。

在pppoe發現階段的四步的過程中,pppoe會遇到padi、pado、padr和pads這四種報文。pppoe中的padt報文是用來終止一條會話的。

lpadi(pppoe active discovery initiation)報文

pppoe發現階段的第一步,也即是由使用者側首先傳送這樣乙個報文。使用者主機是以廣播的方式傳送這個報文,所以該報文所對應的乙太網幀的目的位址域應填充為全1,而源位址域填充使用者主機的mac位址。廣播包可能會被多個訪問集中器接收到。

lpado(pppoe active discovery offer)報文

pppoe發現階段的第二步,也即是由訪問集中器回應各使用者主機傳送的padi報文,此時該報文所對應的乙太網幀的源位址填充訪問集中器的mac位址,而目的位址則填充從padi中所獲取的使用者主機的mac位址。

lpadr(pppoe active discovery request)報文

pppoe發現階段的第三步,也即是由使用者主機向訪問伺服器傳送單播的請求報文。當使用者主機收到pado報文後,會從這些報文中挑選乙個訪問集中器作為後續會話的物件。由於使用者主機在收到pado報文後,就獲知了訪問集中器的mac位址,因此padr報文所以應的乙太網幀的源位址填充使用者主機的mac位址,而乙太網的目的位址填充為訪問集中器的mac位址。

lpads(pppoe active discovery session-confirmation)報文

pppoe發現階段的第四步,也即是最後一步,此時訪問集中器當收到padr報文時,就準備進入開始乙個ppp的會話了,而此時訪問集中器會為在這個會話分配乙個唯一的會話程序id,並在傳送給主機的pads報文中攜帶上這個會話id。當然如果訪問集中器不滿足使用者所申請的服務的話,則會向使用者傳送乙個pads報文,而其中攜帶乙個服務名錯誤的標記,而且此時該pads報文中的會話id填充0x0000。

lpadt(pppoe active discovery terminate)報文

padt報文可能在會話進行開始之後的任意時間內被傳送,主要是用來終止乙個pppoe會話的止。它可以由主機或訪問集中器傳送,目的位址填充為對端的乙太網的mac位址

PPPOE協議分析

pppoe 建立在乙太網上的ppp協議。在乙個共享的乙太網上的多台主機,可以通過乙個或多個簡單的橋接 入裝置,與遠端接入集中器進行多個ppp會話。使用這種模型,每個主機使用它自己的ppp協議棧,並且 提供給使用者乙個熟悉的使用者介面。接入控制 計費和服務型別能夠基於每個使用者,而不是每個站點來處 理...

關於PPPoE協議

pppoe英語 point to point protocol over ethernet 乙太網上的點對點協議,是將點對點協議 ppp 封裝在乙太網 ethernet 框架中的一種網路隧道協議。本質上,它是乙個允許在乙太網 廣播域中的兩個乙太網介面間建立點對點隧道的協議。pppoe是一種用於將多個...

PPPoE協議知識以及配置

pppoe point to point protocol over ethernet 乙太網上的點對點協議,是將點對點協議 ppp 封裝在乙太網 ethernet 框架中的一種網路隧道協議。由於協議中整合了ppp協議,所以實現了傳統乙太網不能提供的身份驗證 加密以及壓縮等功能,也可用於纜線數據機 ...