PPPOE的實(shí)現(xiàn)分為兩個(gè)階段:發(fā)現(xiàn)階段和會(huì)話階段。
當(dāng)一個(gè)主機(jī)想開始一個(gè)PPPOE會(huì)話,它必須首先進(jìn)行發(fā)現(xiàn)階段以識(shí)別對(duì)端的以太網(wǎng)MAC地址,并建立一個(gè)PPPOE SESSION_ID。
在發(fā)現(xiàn)階段,基于網(wǎng)絡(luò)的拓?fù)?,主機(jī)可以發(fā)現(xiàn)多個(gè)接入集中器。發(fā)現(xiàn)階段允許主機(jī)發(fā)現(xiàn)所有的接入集中器,然后選擇一個(gè)。
當(dāng)發(fā)現(xiàn)階段成功完成,主機(jī)和選擇的接入集中器利用它們?cè)贓thernet已建好的PPP連接進(jìn)行通信。發(fā)現(xiàn)階段一直保持無狀態(tài)的狀態(tài),一旦PPP會(huì)話建立,主機(jī)和接入集中器都必須為PPP虛接口分配資源。圖1顯示了PPPOE通信流程。
圖 1 PPPOE通信流程
1. 發(fā)現(xiàn)階段建立連接的過程
第一步:用戶端主機(jī)發(fā)送一個(gè)PADI幀(PPPOE啟動(dòng)初始化)。這個(gè)幀將通過以太網(wǎng)進(jìn)行廣播,表示尋找接入集中器;
第二步:一個(gè)或多個(gè)接入集中器回復(fù)一個(gè)PADO幀(PPPOE啟動(dòng)響應(yīng))。這個(gè)幀將以太網(wǎng)地址發(fā)送給用戶端主機(jī),表示接入集中器正在響應(yīng),是否要建立連接;當(dāng)主機(jī)在指定的時(shí)間內(nèi)沒有接收到PADO,它應(yīng)該重新發(fā)送它的PADI分組,并且加倍等待時(shí)間,這個(gè)過程會(huì)被重復(fù)期望的次數(shù)。
第三步:用戶端主機(jī)選擇一個(gè)接入集中器,并發(fā)送單播PADR幀(PPPOE連接請(qǐng)求)給該響應(yīng)的接入集中器,表示希望建立連接;
第四步:接入集中器發(fā)送PADS幀(PPPOE連接確認(rèn)),表示可以建立連接并分配連接號(hào)。該連接號(hào)連同源和目的的以太網(wǎng)地址,將唯一標(biāo)識(shí)一個(gè)PPPOE會(huì)話。當(dāng)主機(jī)接收到確認(rèn)分組,它可以開始進(jìn)行PPP會(huì)話階段。當(dāng)接入集中器發(fā)送出確認(rèn)分組,它可以開始進(jìn)行PPP會(huì)話階段。
PPPOE還有一個(gè)PADT分組,它可以在會(huì)話建立后的任何時(shí)候發(fā)送,來終止PPPOE會(huì)話。它可以由主機(jī)或者接入集中器發(fā)送。當(dāng)接收到一個(gè)PADT,不再允許使用這個(gè)會(huì)話來發(fā)送PPP業(yè)務(wù)。在發(fā)送或接收PADT后,即使正常的PPP終止分組也不必發(fā)送。PPP對(duì)端應(yīng)該使用PPP協(xié)議自身來終止PPPOE會(huì)話,但是當(dāng)PPP不能使用時(shí),可以使用PADT。
2. PPP會(huì)話階段
一旦PPPOE會(huì)話開始,PPP數(shù)據(jù)就可以以任何其它的PPP封裝形式發(fā)送。會(huì)話階段具有PPP會(huì)話的一般性質(zhì),而且還具有如下特點(diǎn):
a.在以太網(wǎng)傳輸?shù)氖菙?shù)據(jù)包,而不是一般的數(shù)據(jù)流;
b.不需要PPP的FCS域,因?yàn)橐蕴W(wǎng)的幀已具有自己的CRC;
c.所有的以太網(wǎng)幀都是單播的;
d.PPPOE會(huì)話的 SESSION_ID一定不能改變,并且必須是發(fā)現(xiàn)階段分配的值。