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