PPP:Point-to-Point Protocol,點到點鏈路層協議。
PPP包含三個協議族:
(1)LCP(Link Control Protocol),鏈路控制協議族,主要用來建立、拆除和監控PPP數據鏈路。
(2)NCP(Network Control Protocol),網絡層控制協議族,主要用來協商傳輸的數據包的格式與類型,例如支持IP協議的NCP叫IPCP;
(3)認證協議族,包括PAP(Password Authentication Protocol,密碼認證協議)和CHAP(Challenge Handshake Authentication Protocol,挑戰握手認證協議)。
1 PPP報文
PPP報文封轉格式:
Flag域
• Flag域標識一個物理幀的起始和結束,該字節爲0x7E。
Address域
• Address域可以唯一標識對端。PPP協議是被運用在點對點的鏈路上,因此,使用PPP協議互連的兩個通信設備無須知道對方的數據鏈路層地址。按照協議的規定將該字節填充爲全1的廣播地址,對於PPP協議來說,該字段無實際意義。
Control域
• 該字段默認值爲0x03,表明爲無序號幀,PPP默認沒有采用序列號和確認來實現可靠傳輸。
• Address和Control域一起標識此報文爲PPP報文,即PPP報文頭爲FF03。
Protocol域
• 協議域可用來區分PPP數據幀中信息域所承載的數據報類型。
LCP報文封裝格式
Code域
• 代碼域的長度爲一個字節,主要是用來標識LCP數據報文的類型。
Identifier域
• 標識域爲1個字節,用來匹配請求和響應,當標識域值爲非法時,該報文將被丟棄。
• 通常一個配置請求報文的ID是從0x01開始逐步加1的。當對端接收到該配置請求報文後,無論使用何種報文迴應對方,但必須要求迴應報文中的ID要與接收報文中的ID一致。
Length域
• 長度域的值就是該LCP報文的總字節數據。它是代碼域、標誌域、長度域和數據域四個域長度的總和。
• 長度域所指示字節數之外的字節將被當作填充字節而忽略掉,而且該域的內容不能超過MRU的值。
Data域
• Type爲協商選項類型。
• Length爲協商選項長度,它是指Data域的總長度,也就是包含Type、Length和Data。
• Data爲協商的選項具體內容。
2 建立連接過程
建鏈過程
(1)Dead:這是PPP工作開始和結束的階段。當物理層變爲可用狀態(UP)之後,PPP進入Establish階段。
(2)Establish:PPP在此階段使用LCP協商鏈路層參數。如果鏈路層參數協商不成功(FAIL),則PPP連接建立不成功,PPP退回到Dead階段。如果鏈路層參數協商成功(OPENED),說明底層鏈路已經建立,PPP進入Authenticate階段。協商內容包括:工作方式是SP(single-link PPP)還是MP(Multilink PPP)、最大接收單元MRU、驗證方式等等
(3)Authenticate:PPP在此階段認證對端,如果認證失敗(FAIL),則PPP進入Terminate階段;如果認證成功SUCCESS)或者沒配置認證(NONE),則PPP進入Network階段。
(4)Network:PPP在此階段使用NCP進行網絡層參數協商,協商成功則PPP連接建立成功,開始傳輸網絡層數據包。當上層協議認爲應當關閉此連接(例如按需電路)或者管理員手工關閉PPP連接(CLOSING),則PPP進入Terminate階段。
(5)Terminate:PPP能在任何時候終止鏈路,比如載波丟失、認證失敗、鏈路質量檢測失敗、人爲關閉。鏈路建立階段通過交換LCP的鏈路中止報文來關閉鏈路,當鏈路關閉時,鏈路層會通知網絡層做相應的操作,而且也會通過物理層強制關斷鏈路。對於NCP協議,它是不能也沒有必要去關閉PPP鏈路的。
3 PAP認證
PAP報文類型
PAP工作過程
(1)PAP爲兩次握手協議,密碼爲明文,驗證過程僅在鏈路初始建立階段進行。
(2)被認證方將配置的用戶名和密碼信息使用Authenticate-Request報文以明文方式發送給認證方,本例中,用戶名爲“huawei”,密碼爲“hello”;
(3)認證方收到被認證方發送的用戶名和密碼信息之後,根據本地配置的用戶名和密碼數據庫檢查用戶名和密碼信息是否正確匹配,如果正確,則返回Authenticate-Ack報文,表示認證成功,如果不能正確匹配,則返回Authenticate-Nak報文,表示認證失敗。
4 CHAP認證
CHAP報文類型
CHAP工作過程
(1)CHAP爲三次握手驗證協議。它只在網絡上傳輸用戶名,並不傳輸密碼。報文中都包含相同的Identifier字段保證是同一次認證。
(2)CHAP單向認證是指一端作爲驗證方,另一端作爲被驗證方。雙向認證是單向驗證的簡單疊加,即兩端都是既作驗證方又做被驗證方。實際中一般置採用單向認證。CHAP單向認證分爲兩種情況:
(3)驗證方配置了用戶名(即接口配置命令ppp chap user username ),驗證方向被驗證方發送隨機生成的Challenge報文;被驗證方收到請求後,如果本端接口已經配置了密碼(ppp chap password命令),則直接回復該密碼,如果沒有配置密碼,則在本地查詢驗證方發來的用戶對應的密碼,並加密發送回去(Response);驗證方收到Response報文後,與自身保存的密碼進行比較,以驗證認證是否通過。
(4)驗證方沒有配置用戶名,驗證方發送Challenge報文(不包含用戶名);被驗證方收到Challenge報文後,將本地配置的ppp chap password加密發回Response報文;驗證方收到Response報文後進行對比以驗證是否正確。
5 IPCP(NCP)協議
IPCP用於協商控制IP參數,使得PPP可用於傳輸IP數據包。IPCP在PPP鏈路兩端配置,用於激活和停止IP模塊,IPCP報文格式、工作過程與LCP幾乎相同。
IPCP靜態協商IP地址:
6 MP
MP(Multilink PPP),允許將報文分片從多個點對點鏈路傳輸到目的地,可以將多個PPP鏈路捆綁使用,從而增加帶寬。實現方式:虛擬接口模板方式和MP-Group方式。
在LCP階段,協商是否工作在MP模式下,在NCP階段,根據MP-Group接口或指定接口模板的各項NCP參數進行NCP協商。
7 配置PPP鏈路
PAP認證配置:
AR1:
int s1/0/0
link-protocol ppp
ppp authentication-mode pap //在端口開啓PAP認證
aaa
local-user pppuser password ci 12345678 //創建認證用戶
local-user pppuser service-type ppp
AR2:
int s1/0/0
link-protocol ppp
ppp pap local-user pppuser password simple 12345678
密碼輸入正確,LCP、IPCP(IP control protocol)都會正常起來:
如果密碼錯誤,LCP就會無法建立。
CHAP配置雷同,區別在被認證端的用戶密碼命令有區別:
AR2:
int s1/0/0
ppp chap user pppuser
ppp chap password simple 12345678
IPCP動態地址協商:
用戶沒有地址時,需要協商獲取地址:
用戶端:
int s1/0/0
ip address ppp-negotiate
認證端:
int s1/0/0
reomote address 10.1.1.2