PPPoE原理全盤介紹
想要很好地掌握一門協議,對于其原理,我們不能不了解清楚。那么這里我們就講解一下PPPoE原理的相關信息。首先讓我們看看這個PPPoE協議的定義,從基礎來了解一下它吧。
PPPoE原理——定義
通過PPPOE,在一個共享的以太網上的多個主機,可以通過一個或多個簡單的橋接入設備,與遠程接入集中器進行多個PPP會話。使用這種模型,每個主機使用它自己的PPP協議棧,并且提供給用戶一個熟悉的用戶接口。接入控制、計費和服務類型能夠基于每用戶,而不是每站點來處理。PPPOE包含發現和PPP會話兩個階段,發現階段是無狀態的Client/Server模式,目的是獲得PPPOE終結端的以太網MAC地址,并建立一個***的PPPOESESSION_ID。發現階段結束后,就進入標準的PPP會話階段。
PPPoE原理——協議基本框架
PPPOE協議參照RFC2516。PPPOE實現PPP幀在Ethernet上的適配,并提供Ethernet上的PPP連接。圖1和圖2分別是以太網上的PPPOE協議棧和AAL5上的PPPOE協議棧。
PPPOE連接示意圖
圖3顯示了典型的PPPOE的連接方式
PPPoE原理——PPPOE通信流程
PPPOE有兩個不同的階段:發現階段和PPP會話階段。當一個主機想開始一個PPPOE會話,它必須首先進行發現階段以識別對端的以太網MAC地址,并建立一個PPPOESESSION_ID。在發現階段,基于網絡的拓撲,主機可以發現多個接入集中器。發現階段允許主機發現所有的接入集中器,然后選擇一個。當發現階段成功完成,主機和選擇的接入集中器都有了他們在以太網上建立PPP連接的信息。直到PPP會話建立,發現階段一直保持無狀態的狀態。一旦PPP會話建立,主機和接入集中器都必須為PPP虛接口分配資源。圖4顯示了PPPOE通信流程。
發現階段
發現階段有四個步驟,當此階段完成,通信的兩端都知道PPPOESESSION_ID和對端的以太網地址,他們一起***定義PPPOE會話。這些步驟包括:主機廣播一個發起分組(PADI),一個或多個接入集中器發送給予分組(PADO),主機發送單播會話請求分組(PADR),選擇的接入集中器發送一個確認分組(PADS)。當主機接收到確認分組,它可以開始進行PPP會話階段。當接入集中器發送出確認分組,它可以開始進行PPP會話階段。
當主機在指定的時間內沒有接收到PADO,它應該重新發送它的PADI分組,并且加倍等待時間,這個過程會被重復期望的次數。如果主機正在等待接收PADS,應該使用具有主機重新發送PADR的相似超時機制。在重試指定的次數后,主機應該重新發送PADI分組。
PPPOE還有一個PADT分組,它可以在會話建立后的任何時候發送,來終止PPPOE會話。它可以由主機或者接入集中器發送。當接收到一個PADT,不再允許使用這個會話來發送PPP業務。在發送或接收PADT后,即使正常的PPP終止分組也不必發送。PPP對端應該使用PPP協議自身來終止PPPOE會話,但是當PPP不能使用時,可以使用PADT。
PPP會話階段
一旦PPPOE會話開始,PPP數據就可以以任何其它的PPP封裝形式發送。所有的以太網幀都是單播的。PPPOE會話的SESSION_ID一定不能改變,并且必須是發現階段分配的值。
PPPoE原理——PPPOE的LCP配置選項
PPPoverEthernet(RFC2516)建議進行魔數選項協商,不建議進行協議域壓縮選項(PFC)協商。實現中必須不請求進行任何下面的選項協商,并且必須拒絕這樣選項協商的請求:FieldCheckSequence(FCS)Alternatives,Address-and-Control-Field-Compression(ACFC),Asynchronous-Control-Character-Map(ACCM)MRU必須不能大于1492。建議接入集中器偶爾向主機發送Echo_Request報文,來決定會話的狀態。否則,如果主機沒有發送Terminate_Request報文就終止了會話,接入集中器將會不能決定會話已經終止了。當LCP終止,主機和接入集中器必須停止使用這個PPPOE會話。如果主機希望開始另一個PPP會話,它必須返回到PPPOE的發現階段。