目 錄
PPP(Point to Point Protocol)協議是在點到點鏈路上承載網絡層數據包的一種鏈路層協議,由於它能夠提供用戶驗證、易於擴充,並且支持同/異步通信,因而獲得廣泛應用。
PPP定義了一整套的協議,包括鏈路控製協議(LCP)、網絡層控製協議(NCP)和驗證協議(PAP和CHAP)。
l 鏈路控製協議(Link Control Protocol,LCP):主要用來建立、拆除和監控數據鏈路。
l 網絡控製協議(Network Control Protocol,NCP):主要用來協商在該數據鏈路上所傳輸的數據包的格式與類型。
l 用於網絡安全方麵的驗證協議族PAP和CHAP。
PAP(Password Authentication Protocol)驗證為兩次握手驗證,密碼為明文,PAP驗證的過程如下:
(1) 被驗證方發送用戶名和密碼到驗證方;
(2) 驗證方根據本端用戶表查看是否有此用戶以及密碼是否正確,然後返回不同的響應(Acknowledge or Not Acknowledge)。
圖1 PAP驗證示意圖
PAP不是一種安全的驗證協議。當驗證時,口令以明文方式在鏈路上發送,並且由於完成PPP鏈路建立後,被驗證方會不停地在鏈路上反複發送用戶名和口令,直到身份驗證過程結束,所以不能防止攻擊。
CHAP(Challenge-Handshake Authentication Protocol)驗證為三次握手驗證,密碼為密文(密鑰)。
CHAP單向驗證是指一端作為驗證方,另一端作為被驗證方。雙向驗證是單向驗證的簡單疊加,即兩端都是既作為驗證方又作為被驗證方。在實際應用中一般隻采用單向驗證。
CHAP驗證過程如下:
(1) 驗證方主動發起驗證請求,驗證方向被驗證方發送一些隨機產生的報文(Challenge),並同時將本端的用戶名附帶上一起發送給被驗證方;
(2) 被驗證方接到驗證方的驗證請求後,檢查本端接口上是否配置了缺省的CHAP密碼,如果配置了則被驗證方利用報文ID、該缺省密碼和MD5算法對該隨機報文進行加密,將生成的密文和自己的用戶名發回驗證方(Response);
(3) 如果被驗證方檢查發現本端接口上沒有配置缺省的CHAP密碼,則被驗證方根據此報文中驗證方的用戶名在本端的用戶表查找該用戶對應的密碼,如果在用戶表找到了與驗證方用戶名相同的用戶,便利用報文ID、此用戶的密鑰(密碼)和MD5算法對該隨機報文進行加密,將生成的密文和被驗證方自己的用戶名發回驗證方(Response);
(4) 驗證方用自己保存的被驗證方密碼和MD5算法對原隨機報文加密,比較二者的密文,根據比較結果返回不同的響應(Acknowledge or Not Acknowledge)。
圖2 CHAP驗證示意圖
PPP運行過程(參見下圖)如下:
(1) 在開始建立PPP鏈路時,先進入到Establish階段。
(2) 在Establish階段PPP鏈路進行LCP協商,協商內容包括工作方式(是SP還是MP)、驗證方式和最大傳輸單元等。LCP協商成功後進入Opened狀態,表示底層鏈路已經建立。
(3) 如果配置了驗證(遠端驗證本地或者本地驗證遠端)則進入Authenticate階段,開始CHAP或PAP驗證。
(4) 如果驗證失敗進入Terminate階段,拆除鏈路,LCP狀態轉為Down;如果驗證成功就進入Network協商階段(NCP),此時LCP狀態仍為Opened,而IPCP狀態從Initial轉到Request。
(5) NCP協商支持IPCP協商,IPCP協商主要包括雙方的IP地址。通過NCP協商來選擇和配置一個網絡層協議。隻有相應的網絡層協議協商成功後,該網絡層協議才可以通過這條PPP鏈路發送報文。
(6) PPP鏈路將一直保持通信,直至有明確的LCP或NCP幀關閉這條鏈路,或發生了某些外部事件(例如用戶的幹預)。
圖3 PPP運行流程圖
有關PPP的詳細說明,請參考RFC1661。
為了增加帶寬,可以將多個PPP鏈路捆綁使用,稱為MultiLink PPP,簡稱MP。MP會將報文分片(小於最小分片包長時不分片)後,從MP鏈路下的多個PPP通道發送到PPP對端,對端將這些分片組裝起來遞給網絡層。
MP的配置主要有兩種方式,一種是通過虛擬模板接口(Virtual-Template,VT),VT是用於配置一個虛擬訪問接口(Virtual Access,VA)的模板,將多個PPP鏈路捆綁成MP之後,需要創建一個VA與對端交換數據。此時,係統將選擇一個VT,以便動態地創建一個VA;一種是利用MP-group接口。這兩種配置方式的區別主要是:
l 虛擬模板接口方式可以與驗證相結合,可以根據對端的用戶名找到指定的虛擬模板接口,從而利用模板上的配置,創建相應的捆綁(Bundle,係統中用VT通道來表示),以對應一條MP鏈路。
l 由一個虛擬模板接口還可以派生出若幹個捆綁,每個捆綁對應一條MP鏈路。那麼這樣一來,從網絡層看來,這若幹條MP鏈路會形成一個點對多點的網絡拓撲。從這個意義上講,虛擬模板接口比MP-group接口更加靈活。
l 為區分虛擬模板接口派生出的多個捆綁,需要指定捆綁方式,係統在虛擬模板接口視圖下提供了命令ppp mp binding-mode來指定綁定方式,綁定方式有authentication、both、descriptor三種,缺省是both。authentication是根據驗證用戶名捆綁,descriptor是根據終端描述符捆綁(LCP協商時,會協商出這個選項值),both是要同時參考這兩個值捆綁。
l MP-group接口與虛擬模板接口相比則單純許多,它是MP的專用接口,不能支持其他應用,也不能利用對端的用戶名來指定捆綁,同時也不能派生多個捆綁。但正因為它的簡單,導致了它的快速高效、配置簡單、容易理解。
MP的協商包括LCP協商和NCP協商兩個過程:
l LCP協商:兩端首先進行LCP協商,除了協商一般的LCP參數外,還要驗證對端接口是否也工作在MP方式下。如果兩端工作方式不同,LCP協商不成功。
l NCP協商:在LCP協商成功後,根據MP-group接口或指定虛擬接口模板的各項NCP參數(如IP地址等)進行NCP協商,物理接口配置的NCP參數不起作用。
NCP協商通過後,即可建立MP鏈路。
MP的作用主要有:
l 增加帶寬,結合DCC(Dial Control Center,撥號控製中心)可以做到動態增加或減小帶寬
l 負載分擔
l 備份
l 利用分片降低時延
MP能在任何支持PPP封裝的接口下工作,如串口、ISDN的BRI/PRI接口等,也包括PPPoX(PPPoE、PPPoA、PPPoFR等)這類虛擬接口,建議用戶盡可能將同一類的接口捆綁使用,不要將不同類的接口捆綁使用。
PPPoE是Point-to-Point Protocol over Ethernet的簡稱,它可以通過一個遠端接入設備為以太網上的主機提供因特網接入服務,並對接入的每個主機實現控製、計費功能。由於很好地結合了以太網的經濟性及PPP良好的可擴展性與管理控製功能, PPPoE在包括小區組網建設等一係列應用中被廣泛采用。
PPPoE協議采用Client/Server方式,它將PPP報文封裝在以太網幀之內,在以太網上提供點對點的連接。
PPPoE有兩個階段:Discovery階段和PPP Session階段,具體如下:
l Discovery階段
當一個主機想開始PPPoE進程的時候,它必須先識別接入端的以太網MAC地址,建立PPPoE的SESSION ID。這就是Discovery階段的目的。
l PPP Session階段
當PPPoE進入Session階段後PPP報文就可以作為PPPoE幀的淨荷封裝在以太網幀發到對端,SESSION ID必須是Discovery階段確定的ID,MAC地址必須是對端的MAC地址,PPP報文從Protocol ID開始。在Session階段,主機或服務器任何一方都可發PADT(PPPoE Active Discovery Terminate)報文通知對方結束本Session。
關於PPPoE的詳細介紹,可以參考RFC2516。
設備提供了PPPoE Server的功能,支持動態分配IP地址,提供本地認證、RADIUS/TACACS+等多種認證方式,配合訪問包過濾防火牆及狀態防火牆,可以對內部網絡提供安全保障,適用於校園、智能小區等通過以太網接入Internet的組網應用。
這種組網方式需要在用戶Host上安裝PPPoE客戶端撥號軟件。
PPPoE在ADSL寬帶接入中被廣泛使用。通常情況下,一台主機如果要通過ADSL接入Internet,必須在主機上安裝PPPoE客戶端撥號軟件。設備實現了PPPoE Client功能(即PPPoE的客戶端撥號功能),用戶可以不用在Host上安裝PPPoE客戶端軟件即可接入Internet,而且同一個局域網中的所有Host可以共享一個ADSL帳號。
圖1 PPPoE Client典型組網圖
從圖1可以看到:以太網內的計算機連接到設備上,在設備上運行PPPoE Client。上網的數據首先到達設備,再通過PPPoE協議對數據進行封裝,經由設備掛接的ADSL Modem到達ADSL接入服務器,最終進入Internet。整個上網過程,不需要用戶另外在計算機上安裝PPPoE客戶端撥號軟件就可以實現。