PPP PPOE詳解


PPP協議是在串行線IP協議SLIP(Serial Line Internet Protocol)的基礎上發展起來的。由於SLIP協議具有只支持異步傳輸方式、無協商過程(尤其不能協商如雙方IP地址等網絡層屬性)、只能承載IP一種網絡層報文等缺陷,在發展過程中,逐步被PPP協議所替代。

PPP協議有如下優點:
  • 對物理層而言,PPP既支持同步鏈路又支持異步鏈路,而X.25、FR(Frame Relay)等數據鏈路層協議僅支持同步鏈路,SLIP僅支持異步鏈路。
  • PPP協議具有良好的擴展性,例如,當需要在以太網鏈路上承載PPP協議時,PPP可以擴展為PPPoE。
  • 提供LCP(Link Control Protocol)協議,用於各種鏈路層參數的協商。
  • 提供各種NCP(Network Control Protocol)協議(如IPCP、IPXCP),用於各網絡層參數的協商,更好地支持了網絡層協議。
  • 提供認證協議CHAP(Challenge-Handshake Authentication Protocol)、PAP(Password Authentication Protocol),更好的保證了網絡的安全性。

無重傳機制,網絡開銷小,速度快。

 

 

 

 

  • Flag域
Flag域標識一個物理幀的起始和結束,該字節為0x7E。
  • Address域
Address域可以唯一標識對端。PPP協議是被運用在點對點的鏈路上,因此,使用PPP協議互連的兩個通信設備無須知道對方的數據鏈路層地址。按照協議的規定將該字節填充為全1的廣播地址,對於PPP協議來說,該字段無實際意義。
  • Control域
該字段默認值為0x03,表明為無序號幀,PPP默認沒有采用序列號和確認應答來實現可靠傳輸。
Address和Control域一起標識此報文為PPP報文,即PPP報文頭為FF03。
  • Protocol域
Protocol域可用來區分PPP數據幀中信息域所承載的數據包類型。(0021 IP C021 LCP)
Protocol域的內容必須依據ISO 3309的地址擴展機制所給出的規定。該機制規定協議域所填充的內容必須為奇數,也就是要求最低有效字節的最低有效位為“1”。
如果當發送端發送的PPP數據幀的協議域字段不符合上述規定,接收端則會認為此數據幀是不可識別的。接收端向發送端發送一個Protocol-Reject報文,在該報文尾部將填充被拒絕報文的協議號。
  • Information域
Information域最大長度是1500字節,其中包括填充域的內容。Information域的最大長度稱為最大接收單元MRU(Maximum Receive Unit)。MRU的缺省值為1500字節,在實際應用當中可根據實際需要進行MRU的協商。
如果Information域長度不足,可被填充,但不是必須的。如果填充則需通信雙方的兩端能辨認出填充信息和真正需要傳送的信息,方可正常通信。
  • FCS域
FCS域的功能主要對PPP數據幀傳輸的正確性進行檢測。
在數據幀中引入了一些傳輸的保證機制,會引入更多的開銷,這樣可能會增加應用層交互的延遲。

 

 

 

 

 

 

  1. 通信雙方開始建立PPP鏈路時,先進入到Establish階段。
  2. 在Establish階段,(發送配置請求,回復ack報文)PPP鏈路進行LCP協商。協商內容包括工作方式是SP(Single-link PPP)還是MP(Multilink PPP)、最大接收單元MRU(Maximum Receive Unit)、驗證方式和魔術字(magic number)等選項。LCP協商成功后進入Opened狀態,表示底層鏈路已經建立。
  3. 如果配置了驗證,將進入Authenticate階段,開始CHAP或PAP驗證。如果沒有配置驗證,則直接進入Network階段。
  4. 在Authenticate階段,如果驗證失敗,進入Terminate階段,拆除鏈路,LCP狀態轉為Down。如果驗證成功,進入Network階段,此時LCP狀態仍為Opened。
  5. 在Network階段,PPP鏈路進行NCP協商。通過NCP協商來選擇和配置一個網絡層協議並進行網絡層參數協商。只有相應的網絡層協議協商成功后,該網絡層協議才可以通過這條PPP鏈路發送報文。

 

 

NCP協商包括IPCP(IP Control Protocol)、MPLSCP(MPLS Control Protocol)等協商。IPCP協商內容主要包括雙方的IP地址。
  1. NCP協商成功后,PPP鏈路將一直保持通信。PPP運行過程中,可以隨時中斷連接,物理鏈路斷開、認證失敗、超時定時器時間到、管理員通過配置關閉連接等動作都可能導致鏈路進入Terminate階段。

    7. 在Terminate階段,如果所有的資源都被釋放,通信雙方將回到Dead階段,直到通信雙方重新建立PPP連接,開始新的PPP鏈路建立。

PAP與CHAP認證

  

 

 

  • 被驗證方把本地用戶名和口令發送到驗證方。
  • 驗證方根據本地用戶表查看是否有被驗證方的用戶名
  • 若有,則查看口令是否正確,若口令正確,則認證通過;若口令不正確,則認證失敗。
  • 若沒有,則認證失敗

 

 

CHAP單向驗證過程分為兩種情況:驗證方配置了用戶名和驗證方沒有配置用戶名。推薦使用驗證方配置用戶名的方式,這樣可以對驗證方的用戶名進行確認。
被認證方接口必須配置用戶名,認證方接口配置用戶名對應被認證方密碼可以配置接口或aaa
,認證方接口沒有配置用戶名對應被認證方密碼必須配置接口下
  • 驗證方配置了用戶名的驗證過程
  • 驗證方主動發起驗證請求,驗證方向被驗證方發送一些隨機產生的報文(Challenge),並同時將本端的用戶名附帶上一起發送給被驗證方。
  • 被驗證方接到驗證方的驗證請求后,先檢查本端接口上是否配置了ppp chap password命令,如果配置了該命令,則被驗證方用報文ID、命令中配置的用戶密碼和MD5算法對該隨機報文進行加密,將生成的密文和自己的用戶名發回驗證方(Response)。如果接口上未配置ppp chap password命令,則根據此報文中驗證方的用戶名在本端的用戶表查找該用戶對應的密碼,用報文ID、此用戶的密鑰(密碼)和MD5算法對該隨機報文進行加密,將生成的密文和被驗證方自己的用戶名發回驗證方(Response)。
  • 驗證方用報文ID和自己保存的被驗證方密碼和MD5算法對原隨機報文加密,比較二者的密文,若比較結果一致,認證通過,若比較結果不一致,認證失敗。
  • 驗證方沒有配置用戶名的驗證過程
  • 驗證方主動發起驗證請求,驗證方向被驗證方發送一些隨機產生的報文(Challenge)。
  • 被驗證方接到驗證方的驗證請求后,利用報文ID、ppp chap password命令配置的CHAP密碼和MD5算法對該隨機報文進行加密,將生成的密文和自己的用戶名發回驗證方(Response)。
  • 驗證方用自己保存的被驗證方密碼和MD5算法對原隨機報文加密,比較二者的密文,若比較結果一致,認證通過,若比較結果不一致,認證失敗。
過程如下
認證方接口配置用戶名,挑戰報文攜帶用戶名,被認證方使用此用戶的密鑰進行加密,發回認證方的時候攜帶加密后的字段+接口用戶名
認證方收到后會根據被認證方攜帶的用戶名去查找本地此用戶對應的密鑰進行加密比對一致就通過

PPPOE

pppoe 是在以太鏈路上使用ppp協議進行數據包的封裝,因為ppp鏈路是點到點鏈路,沒有廣播,在家用adsl撥號場景下需要更多的點到點鏈路,會造成基礎線路資源極大的浪費,而以太網支持廣播,但自身不支持認證,所以就有了pppoe的出現,ppp over ethernet

 

 

 

 

Discovery階段
Discovery階段由四個過程組成。
  1. PPPoE Client廣播發送一個PADI(PPPoE Active Discovery Initial)報文,在此報文中包含PPPoE Client想要得到的服務類型信息。

     

     

  1. 所有的PPPoE Server收到PADI報文之后,將其中請求的服務與自己能夠提供的服務進行比較,如果可以提供,則單播回復一個PADO(PPPoE Active Discovery Offer)報文。

     

     

  1. 根據網絡的拓撲結構,PPPoE Client可能收到多個PPPoE Server發送的PADO報文,PPPoE Client選擇最先收到的PADO報文對應的PPPoE Server做為自己的PPPoE Server,並單播發送一個PADR(PPPoE Active Discovery Request)報文。

     

     

  1. PPPoE Server產生一個唯一的會話ID(Session ID),標識和PPPoE Client的這個會話,通過發送一個PADS(PPPoE Active Discovery Session-confirmation)報文把會話ID發送給PPPoE Client,會話建立成功后便進入PPPoE Session階段。

     

     

完成之后通信雙方都會知道PPPoE的Session_ID以及對方的以太網地址,它們共同確定了唯一的PPPoE Session。
Session階段
PPPoE Session階段可划分為兩部分,一是PPP協商階段,二是PPP數據傳輸階段。
PPPoE Session上的PPP協商和普通的PPP協商方式一致,分為LCP、認證、NCP三個階段。
  1. LCP階段主要完成建立、配置和檢測數據鏈路連接。
  2. LCP協商成功后,開始進行認證,認證協議類型由LCP協商結果(CHAP或者PAP)決定。
  3. 認證成功后,PPP進入NCP階段。NCP是一個協議族,用於配置不同的網絡層協議,常用的是IP控制協議(IPCP),它主要負責協商用戶的IP地址和DNS服務器地址。
PPPoE Session的PPP協商成功后,就可以承載PPP數據報文。
在PPPoE Session階段所有的以太網數據包都是單播發送的。
Terminate階段
PPP通信雙方可以使用PPP協議自身來結束PPPoE會話,當無法使用PPP協議結束會話時可以使用 PADT(PPPoE Active Discovery Terminate)報文。
進入PPPoE Session階段后,PPPoE Client和PPPoE Server都可以通過發送PADT報文的方式來結束PPPoE連接。PADT數據包可以在會話建立以后的任意時刻單播發送。在發送或接收到PADT后,就不允許再使用該會話發送PPP流量了。

PPP PAP與CHAP認證配置

拓撲

  

 

 

PAP認證:
  配置要點,客戶端需要在接口配置用戶名密碼,認證過程需要主動把接口配置的用戶名密碼發送給服務端進行認證,服務端需要在本端aaa配置相應的用戶名密碼,server-type為ppp,接口開啟pap認證
client端 interface Serial0
/0/0 link-protocol ppp ppp pap local-user test password simple test123 ip address 12.1.1.1 255.255.255.252 server端 aaa local-user test password cipher test123 local-user dark service-type ppp interface Serial0/0/0 link-protocol ppp ppp authentication-mode pap ip address 12.1.1.2 255.255.255.252

驗證

 

 

 

 

CHAP認證:
  配置要點,兩端接口chap用戶名必須配置,接口可以不配置chap用戶密碼,使用local用戶密碼進行驗證,此外認證方與被認證方接口用戶名無需配置一致,只需要local用戶與對方接口用戶密碼一致即可通過認證

client端

aaa

local-user test password cipher O>Sr/xA!t<:z9:%F`[a=}'4#
local-user test service-type ppp

interface Serial0/0/0
link-protocol ppp
ppp chap user test
ip address 12.1.1.1 255.255.255.252

 

server 端

aaa
local-user test password cipher O>Sr/xA!t<:z9:%F`[a=}'4#
local-user test service-type ppp

interface Serial0/0/0
link-protocol ppp
ppp chap user test
ip address 12.1.1.1 255.255.255.252

驗證

 

 

 

 

 

PPPOE 配置
    配置要點,server端需要配置vt模板和aaa用戶,可配置地址池給客戶端分配地址使用,可以使用ipcp推送dns配置,cilent端需要配置dialer接口,在端口綁定dialer接口
   server端配置

aaa

local-user test password cipher %$%$h[N|$6~U{T%b/20~1P-Qaay#%$%$
local-user test service-type ppp

ip pool 1
gateway-list 10.0.0.1
network 10.0.0.0 mask 255.255.255.0

interface Virtual-Template1
ppp authentication-mode chap
remote address pool 1
ppp chap user test
ppp ipcp dns 8.8.8.8
ip address 10.0.0.1 255.255.255.0

interface GigabitEthernet0/0/0
pppoe-server bind Virtual-Template 1


client端配置

aaa
local-user test password cipher %$%$|L!;K*)DVT,1I2-Pd9|BacpC%$%$
local-user test service-type ppp

interface Dialer1
link-protocol ppp
ppp chap user test
ip address ppp-negotiate
dialer user test
dialer bundle 1

interface GigabitEthernet0/0/0
pppoe-client dial-bundle-number 1

驗證

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM