PPPoE工作原理以及PPPoE幀格式 |
|||||||||||||||||||||||||||||||||||||||||||
文檔編號:730 |
|||||||||||||||||||||||||||||||||||||||||||
關鍵字: 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所示。
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個字節,下表列出了各種標記類型的含義:
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地址。
|