前文我們了解了廣域網中的HDLC和PPP協議相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15174240.html;今天我們來聊一聊PPPoE協議相關話題;
數字用戶線路DSL(Digital Subscriber Line)是以電話線為傳輸介質的傳輸技術,我們通常把所有的DSL技術統稱為xDSL,x代表不同種類的數字用戶線路技術;目前比較流行的寬帶接入方式是ADSL,ADSL是非對稱DSL技術,使用的是PPPoE(PPP over Ethernet)協議;PPPoE協議通過在以太網上提供點到點的連接,建立PPP會話,使得以太網中的主機能夠連接到遠端的寬帶接入服務器。PPPoE具有使用范圍廣、安全性高、計費方便等特點;
DSL技術應用場景
提示:BRAS是運營商的寬帶接入設備;DSLAM是Digital Subscriber Line Access Multiplexer的簡稱,中文稱呼數字用戶線路接入復用器。DSLAM是各種DSL系統的局端設備,屬於最后一公里接入設備(the last mile),其功能是接納所有的DSL線路,匯聚流量,相當於一個二層交換機。
PPPoE在DSL中的應用
提示:在企業內部,我們通過PPPoE客戶端通過網線和Modem連接;Modem的作用就是將數字信號轉換為模擬信號,它有兩個種接口,一種是連接PPPoE客戶端的網口,一種是連接DSLAM的電話口;運營商希望通過一台接入設備來連接遠程的多個主機,同時接入設備能夠提供訪問控制和計費功能;在眾多的接入技術中,把多個主機連接到接入設備的最經濟的方法就是以太網,而PPP協議可以提供良好的訪問控制和計費功能,於是產生了在以太網上傳輸的PPP報文技術,即PPPoE;PPPoE利用以太網將大量主機組成網絡,通過一個遠端接入設備連接因特網,並運用PPP協議對接入的每個主機進行控制,具有使用范圍廣,安全性高,計費放備案的特點;PPPoE解決了用戶上網收費等實際應用問題,得到了寬帶接入運營商店認可並被廣泛應用;
PPPoE報文格式
提示:PPPoE報文是使用Ethernet格式進行封裝,所以PPPoE是以太網的上層協議;在封裝過程中首先要先封裝以太網首部,隨后才是PPPoE首部;以太網首部中的Type是用來表示上層協議的類型;當Type的值為0x8863時,就表示承載的是PPPoE發現階段的報文;當type的值為0x8864時就表示承載的是PPPoE會話階段的報文;
PPPoE會話建立過程
提示:PPPoE建立會話的過程主要要經過上述二個階段,發現階段和會話階段;其中發現階段主要是發現PPPoE服務器,獲取對方以太網地址;會話階段主要是PPP協議的各種協商;經過上述兩個階段以后,一個PPPoE會話就建立好了,后續用戶就可以通過PPPoE會話進行上網,數據傳輸;會話終結階段是用戶側發送PPPoE終止報文,隨后PPPoE會話終止;
PPPoE數據包類型
提示:PPPoE會話建立和終止過程中主要有以上5中類型的報文;PADI是PPPoE發現初始報文,主要用戶尋找PPPoE服務端;當PPPoE服務端收到PPPoE客戶端發送的PADI報文后,對應服務端會向客戶端發送PADO,該類型報文主要是告訴PPPoE客戶端對應服務端能夠滿足客戶端的請求;當客戶端收到服務端發送的PADO時(可能會有多個服務端發送PADO),它會選擇最早收到的PADO對應的服務端發送PADR;PADR是客戶端向服務端請求建立會話,同時也拒絕其他服務端發送的PADO報文;服務端收到客戶端發送的PADR后,會回復一個PADS報文,該類型報文主要作用是告訴客戶端會話id等信息;當客戶端或服務端需要斷開連接時,客戶端或服務端會向對端發送PADT,表示終止連接,該類型報文的主要作用是通知對端PPPoE會話結束;對端收到該類型報文,會話會立即斷開;
PPPoE工作流程
提示:客戶端通過廣播發送PADI報文來發送接入服務器;類似DHCP中的DHCP discover包;
提示:當服務器收到客戶端發送的PADI報文后,將客戶端請求的服務於自己能夠提供的服務進行比較,如果可以提供,則單播恢復PADO報文;類似DHCP中的DHCP offer包;
提示:PPPoE客戶端會根據自己收到的PADO選擇最優的PADO報文對應的服務器,並單播發送一個PADR報文;PADR報文有兩層作用,一層是向對應服務端請求建立會話等信息,二是拒絕其他服務端的PADO;類似DHCP中的DHCP Request包;
提示:PPPoE服務端收到客戶端的PADR報文后,服務端會生成一個唯一的PPPoE session ID,並通過發送PADS報文給客戶端,表示會話建立成功;類似DHCP中的DHCP ack包;
提示:當PPPoE會話建立成功以后,后續就是PPP參數協商;ppp參數協商和串口鏈路上的PPP參數協商過程一樣;主要分LCP和NCP協商;如果有認證,還需要進行認證;當PPP參數協商成功以后,對應客戶端會通過服務端獲取到一個規划的ip地址等參數,后續客戶端就可以通過這個ip地址等進行上網,數據傳輸;
PPPoE會話建立全過程
提示:只有PPP中NCP協商完成以后,對應客戶端才會獲取到ip地址,后續的通信客戶端會通過這個ip地址來進行數據傳輸;
PPPoE會話終止過程
提示:當PPPoE客戶端或者服務端需要關閉連接時,可以向服務端或者客服端發送PADT報文;表示關閉連接;在PADT報文中,目的mac地址為單播地址,session id為希望關閉的session id;一旦收到一個PADT報文后,對應會話會隨即關閉;
PPPoE配置
實驗:如下拓撲,配置PPPoE客戶端和服務端
服務端配置
1、在服務端上建立用於認證的用戶名和密碼
2、創建用於分配ip地址等信息的地址池
提示:地址池中可以添加網關、dns、排除地址等等信息;
3、創建虛擬模板接口
提示:虛擬模板接口里主要配置ppp認證模式,以及關聯地址池,和本端的ip地址;
4、將物理接口和虛擬模板接口關聯
服務端全部配置

sys sys server aaa local-user qiuhom password cipher admin123.com local-user qiuhom server ppp q ip pool PPPoE net 100.1.1.0 mask 255.255.255.252 q int virtual-template 1 ppp authentication-mode chap remote address pool PPPoE ip add 100.1.1.1 30 q int g0/0/0 pppoe-server bind virtual-template 1
客戶端配置
1、創建撥號規則
提示:上述命令表示允許所有ip協議的報文進行撥號;
2、創建撥號接口,並在接口下配置ppp認證,並綁定撥號規則
提示:dialer user xxx 中的用戶名稱它只用於標識和綁定dialer的作用,不用於ppp認證,所以這里的用戶名可以是任意的;
3、將物理接口和撥號接口做綁定
驗證:看看對應撥號接口是否獲取到ip地址?
提示:可以看到對應撥號接口已經正常獲取到ip地址;說明我們的配置沒有問題;
4、配置默認路由,將出接口指向對應的撥號接口
提示:配置好默認路由以后,對應客戶端就可以通過pppoe的會話鏈路進行上網;
客戶端全部配置

sys sys client dialer-rule dialer-rule 1 ip permit q int dialer 1 dialer user xxx dialer bundle 1 ppp chap user qiuhom ppp chap password ci admin123.com ip add ppp-negotiate int g0/0/0 pppoe-client dial-bundle-number 1 q ip route-s 0.0.0.0 0 dialer 1
在客戶端驗證PPPoE會話信息
在服務端驗證PPPoE會話信息
在客戶端驗證對應撥號接口
提示:可以看到對應撥號接口使用的是PPP協議,對應LCP和IPCP都是opened,並且對應接口也通過ppp協商獲取到100.1.1.2地址;