PPPoE工作原理以及PPPoE幀格式

 

PPPoE工作原理以及PPPoE幀格式

文檔編號:730
瀏覽:441 評分:10

關鍵字: PPPoE協議 PPPoE幀格式 PPPoE工作原理

 

PPPoE工作原理以及PPPoE幀格式

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

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

 

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

1.發現(Discovery)階段

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

(1)     主機廣播發起分組(PADI)(PPPOE Active Discovery Initiation),分組的目的地址爲以太網的廣播地址0×ffffffffffff,CODE(代碼)字段值爲0×09,SESSION-ID(會話ID)字段值爲0×0000。PADI分組必須至少包含一個服務名稱類型的標籤(標籤類型字段值爲0×0101),向接入集中器提出所要求提供的服務。

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

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

(4)     接入集中器收到PADR分組後準備開始PPP會話,它發送一個PPPoE有效發現會話確認(PADS)(PPPOE Active Discovery Session-confirmation)分組。其中CODE字段值爲0×65,SESSION-ID字段值爲接入集中器所產生的一個惟一的PPPoE會話標識號碼。PADS分組也必須包含一個接入集中器名稱類型的標籤以確認向主機提供的服務。當主機收到PADS分組確認後,雙方就進入PPP會話階段。

2.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 Active Discovery Terminate)結束。

 

PPPoE幀格式

對應於上面介紹的PPPoE協議工作的兩個階段,PPPoE幀格式也包括兩種類型:發現階段的以太網幀中的類型字段值爲0×8863;PPP會話階段的以太網幀中的類型字段值爲0×8864,均已得到IEEE的認可。PPPoE分組幀結構如圖4-6所示。

VER

(4bit)   

TYPE

(4bit)

CODE (16bit)

SESSION-ID

(8bit)

LENGTH

(16bit)

淨載荷(或數據域)

PPPOE幀格式 一共爲48位 8字節

圖 4-6

PPPoE分組中的版本(VER) 字段和類型(TYPE)字段長度均爲4比特,在當前版本PPPoE建議中這兩個字段值都固定爲0x1。

代碼(CODE)字段長度爲8比特,根據兩階段中各種數據包的不同功能而值不同。在PPP會話階段CODE字段值爲0x00,發現階段中的各步驟中的各種數據分組格式參見前面的介紹。

版本標識號碼(SESSION_ID)字段長度爲16比特,在一個給定的PPP會話過程中它的值是固定不變的,其中值0×ffffff爲保留值。

長度(LENGTH)字段爲16比特,指示PPPoE淨荷長度。發現階段PPPoE載荷可以爲空或由多個標記(TAG)組成,每個標記都是TLV(類型–長度–值)的結構;PPP會話階段PPPoE載荷爲標準的點對點協議包問題:結構是以太網幀的載荷是PPPoE分組幀,PPPoE分組幀的載荷是標準的點對點協議包?

數據域,有時也稱之爲淨載荷域,在PPPOE的不同階段該域內的數據內容會有很大的不同。在PPPOE的發現階段時,該域內會填充一些Tag(標記);而在PPPOE的會話階段,該域則攜帶的是PPP的報文。

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

PPPOE數據報文中Tag(標記)的格式

對於發現階段的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

一般性錯誤。

 

PPPOE發現階段的數據報文

說明:在這個階段,所有數據報文是被承載在以太網的數據域中的,而且以太網數據幀的協議域始終爲0x8863

在PPPOE發現階段的四步的過程中,PPPOE會遇到PADI、PADO、PADR和PADS這四種報文。PPPOE中的PADT報文是用來終止一條會話的。

PADI報文廣播

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

PADO報文單播

PPPOE發現階段的第二步,也即是由訪問集中器迴應各用戶主機發送的PADI報文,此時該報文所對應的以太網幀的源地址填充訪問集中器的MAC地址,而目的地址則填充從PADI中所獲取的用戶主機的MAC地址。

PADR報文

PPPOE發現階段的第三步,也即是由用戶主機向訪問服務器發送單播的請求報文。當用戶主機收到PADO報文後,會從這些報文中挑選一個訪問集中器作爲後續會話的對象。由於用戶主機在收到PADO報文後,就獲知了訪問集中器的MAC地址,因此PADR報文所以應的以太網幀的源地址填充用戶主機的MAC地址,而以太網的目的地址填充爲訪問集中器的MAC地址。

PADS報文

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

PADT報文

PADT報文可能在會話進行開始之後的任意時間內被髮送,主要是用來終止一個PPPOE會話的止。它可以由主機或訪問集中器發送,目的地址填充爲對端的以太網的MAC地址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章