PPPoE(Point.to.Point Protoeol over Ethernet)是將PPP協(xié)議封裝在以太網(wǎng)幀上進(jìn)行傳輸,它的通信過程分為探測(Discovery)和PPP會話(Session)2個(gè)階段。PPPoE Discovery階段主要是客戶機(jī)確定AC(Access Concentrator)以及客戶機(jī)與AC協(xié)商Session ID。而PPPoE Sess-ion用于完成數(shù)據(jù)包的接收與發(fā)送,同時(shí)它也用于完成PPP鏈路的協(xié)商(LCP),以及網(wǎng)絡(luò)層的控制協(xié)商(IPCP)等。
傳統(tǒng)的PPPoE先會用Raw socket讀取數(shù)據(jù),然后采用用戶態(tài)程序?qū)ζ浞獍獍缓笤侔l(fā)送給內(nèi)核。但是這種方法會引起大量的內(nèi)核空間與用戶空間的上下文切換,從而帶來不必要的開銷。而對于實(shí)現(xiàn)于內(nèi)核態(tài)的PPPoE,它會把所有的封包以及解包實(shí)現(xiàn)于內(nèi)核,這樣就大大提高PPPoE的效率。
1 PPPoE協(xié)議概述
1. 1 PPPoE Discovery階段
在PPPoE Discovery階段,客戶機(jī)首先廣播一個(gè)PADI(0x09)幀。收到PADI幀的一個(gè)或多個(gè)服務(wù)器會發(fā)送PADO(0x07)幀,這個(gè)包中包含了服務(wù)器的各種標(biāo)識。然后,客戶機(jī)會選擇其中一個(gè)服務(wù)器發(fā)送PADR(0x19),表明主機(jī)選擇了這個(gè)服務(wù)器。最終,收到PADR(0x65)幀的服務(wù)器會為新的會話分配資源并向客戶機(jī)發(fā)送PADS(0x65)。當(dāng)此階段完成,這兩次的對話完成了SESSION_ID以及雙方物理地址,為后續(xù)數(shù)據(jù)會話打好基礎(chǔ)。
同時(shí)PPP協(xié)議還提供了一個(gè)PADT請求,該請求用于結(jié)束這次PPPoE會話。這個(gè)請求可以由任何一方發(fā)出,同時(shí)代表這次回話的結(jié)束,圖1描述整個(gè)discovery過程。
1.2 PPPoE Session階段
PPPoE Discovery階段是為整個(gè)PPPoE會話獲取雙方物理地址以及Session_ID,這個(gè)Session_ID就成為了雙方的通信憑證,在整個(gè)會話過程中保持不變。PPP幀數(shù)據(jù)被封在以太幀中,它在以太幀的標(biāo)識為0x8864,當(dāng)碰到0x8864時(shí),就認(rèn)為是一個(gè)PPPoE包。 大功率電感廠家 |大電流電感工廠