簡介 點到點協定(Point to Point Protocol,PPP)是為在同等
單元 之間傳輸
數據包 這樣的簡單鏈路設計的
鏈路層 協定。這種鏈路提供全雙工操作,並按照順序傳遞數據包。設計目的主要是用來通過撥號或專線方式建立點對點連線傳送數據,使其成為各種主機、網橋和
路由器 之間簡單連線的一種共通的解決方案。PPP具有以下功能:
(1)PPP具有動態分配
IP 地址的能力,允許在連線時刻協商IP位址;
(3)PPP具有錯誤檢測能力,但不具備糾錯能力,所以ppp是不可靠傳輸協定;
(4)無重傳的機制,網路開銷小,速度快。
(6) PPP可以用於多種類型的物理介質上,包括串口線、電話線、行動電話和光纖(例如SDH),PPP也用於Internet接入。
幀格式 PPP的幀格式 7E
FF
03
協定
信息
FCS
7E
位元組
1
1
1
2
<=1500
2
1
PPP採用7EH作為一幀的開始和結束標誌(F);其中地址域(A)和控制域(C)取固定值(A=FFH,C=03H) ;協定域(兩個位元組)取0021H表示IP分組,取8021H表示網路控制數據,取C021H表示鏈路控制數據;幀校驗域(FCS)也為兩個位元組,它用於對信息域的校驗。若信息域中出現7EH,則轉換為(7DH,5EH)兩個字元。當信息域出現7DH時,則轉換為(7DH,5DH)。當信息流中出現ASCII碼的控制字元(即小於20H),即在該字元前加入一個7DH字元。
部分組成 封裝 :一種封裝多協定數據報的方法。PPP 封裝提供了不同網路層協定同時在同一鏈路傳輸的多路復用技術。PPP 封裝精心設計,能保持對大多數常用硬體的兼容性,克服了SLIP不足之處的一種多用途、點到點協定,它提供的WAN數據連結封裝服務類似於LAN所提供的封閉服務。所以,PPP不僅僅提供幀定界,而且提供協定標識和位級完整性檢查服務。
鏈路控制協定 (LCP):一種擴展鏈路控制協定,用於建立、配置、測試和管理數據鏈路連線。
網路控制協定(NCP):協商該鏈路上所傳輸的數據包格式與類型,建立、配置不同的網路層協定;
配置:使用鏈路控制協定的簡單和自製機制。該機制也套用於其它控制協定,例如:網路控制協定(NCP)。
為了建立點對點鏈路通信,PPP 鏈路的每一端,必須首先傳送 LCP 包以便設定和測試數據鏈路。在鏈路建立,LCP 所需的可選功能被選定之後,PPP 必須傳送 NCP 包以便選擇和設定一個或更多的網路層協定。一旦每個被選擇的網路層協定都被設定好了,來自每個網路層協定的數據報就能在鏈路上傳送了。
鏈路將保持通信設定不變,直到有 LCP 和 NCP 數據包關閉鏈路,或者是發生一些外部事件的時候(如,休止狀態的定時器期滿或者網路管理員干涉)。
應 用:假設同樣是在Windows 98,並且已經創建好“撥號連線”。那么可以通過下面的方法來設定PPP協定:首先,打開“撥號連線”屬性,同樣選擇“伺服器類型”選項卡;然後,選擇默認的“PPP:Internet,Windows NT Server,Windows 98”,在高級選項中可以設定該協定其它功能選項;最後,單擊“確定”按鈕即可。
工作流程 當用戶撥號接入 ISP 時,路由器的數據機對撥號做出確認,並建立一條物理連線(底層up)。PC 機向路由器傳送一系列的 LCP 分組(封裝成多個 PPP 幀)。
話流程 這些分組及其回響選擇一些 PPP 參數,和進行網路層配置(此前如有PAP或CHAP驗證先要通過驗證),NCP 給新接入的 PC機分配一個臨時的 IP 地址,使 PC 機成為網際網路上的一個主機。
通信完畢時,NCP 釋放網路層連線,收回原來分配出去的 IP 地址。接著,LCP 釋放數據鏈路層連線。最後釋放的是物理層的連線。
特點與認證方式 特點
PPP協定是一種點——點串列通信協定。PPP具有處理錯誤檢測、支持多個協定、允許在連線時刻協商IP位址、允許身份認證等功能,還有其他。PPP提供了3類功能:成幀;鏈路控制協定LCP;網路控制協定NCP。PPP是面向字元類型的協定。
PPP協定的幀格式
標誌欄位
地址欄位
控制欄位
協定
信息部 分
FCS
標誌欄位
PPP是一種多協定成幀機制,它適合於數據機、HDLC位序列線路、SONET和其它的物理層上使用。它支持錯誤檢測、選項協商、頭部壓縮以及使用HDLC類型幀格式(可選)的可靠傳輸。PPP提供了三類功能:
1 成幀:他可以毫無歧義的分割出一幀的起始和結束。
2 鏈路控制:有一個稱為LCP的鏈路控制協定,支持同步和異步線路,也支持面向位元組的和面向位的編碼方式,可用於啟動路線、測試線路、協商參數、以及關閉線路。鏈路控制協定(LCP) LCP 建立點對點鏈路,是 PPP 中實際工作的部分。LCP 位於物理層的上方,負責建立、配置和測試數據鏈路連線。LCP 還負責協商和設定 WAN 數據鏈路上的控制選項,這些選項由 NCP 處理。
3
網路控制 :具有協商網路層選項的方法,並且協商方法與使用的網路層協定獨立。PPP允許多個網路協定共用一個鏈路,網路控制協定 (NCP) 負責連線PPP(第二層)和網路協定 (第三層)。對於所使用的每個網路層協定,PPP 都分別使用獨立的 NCP來連線。例如,IP 使用 IP 控制協定 (IPCP),IPX 使用 Novell IPX 控制協定 (IPXCP)。
認證方式
一種是PAP,一種是CHAP。相對來說PAP的認證方式安全性沒有CHAP高。PAP在傳輸password是明文的,而CHAP在傳輸過程中不傳輸密碼,取代密碼的是
hash (哈希值)。PAP認證是通過兩次握手實現的,而CHAP則是通過3次握手實現的。PAP認證是被叫提出連線請求,主叫回響。而CHAP則是主叫發出請求,被叫回復一個數據包,這個包裡面有主叫傳送的隨機的哈希值,主叫在資料庫中確認無誤後傳送一個連線成功的數據包連線。
要求 簡單:因IETF在設計網際網路體系結構時,把最複雜的部分放在了TCP協定中,網際協定IP相對比較簡單,所以對數據鏈路層的幀,不需要糾錯,不需要序號,也不需要流量控制。簡單為首要要求
簡單的設計還可以是協定在實現時不容易出錯,從而不同廠商在協定的不同實現上互操作性提高了。
封裝成幀:PPP協定必須規定特殊字元作為幀定界符(標誌一個幀的開始和結束的字元),以便接收端從收到的比特流中能準確地找出幀的開始和結束位置。
透明性:PPP協定必須保證數據傳輸的透明性。(即如果數據中碰巧出現了和幀界定符一樣的比特組合時要採取有效的措施來解決這個問題)
多種網路層協定:PPP協定必須能夠在同一條物理鏈路上同時支持多種網路層協定(例如P和IPX等)的運行。
當點對點鏈路所連線的是區域網路或路由器時,PPP協定必須同時支持在鏈路所連線的區域網路或路由器上運行的各種網路層協定。
多種類型鏈路:除了要支持多種網路層協定外,PPP還必須能夠在多種類型的鏈路上運行。
差錯檢測:PPP協定必須能夠對接收端收到的幀進行檢測,並立即丟棄有差錯的幀。
檢測連線狀態:PPP協定必須具有一種機制能夠及時自動檢測出鏈路是否處於正常工作狀態。
最大傳送單元: PPP協定必須對每一種類型的點對點鏈路設定最大傳送單元MTU的標準默認值(至少是1500位元組),如果高層協定傳送的分組過長並超過MTU的數值,PPP就要丟棄這樣的幀,並返回差錯。MTU是數據鏈路層的幀可以載荷的數據部分的最大長度,而不是幀的總長度。
網路層地址協商:PPP協定必須提供一種機制使通信的兩個網路層(例如兩個IP層)的實體能夠通過協商知道或能夠配置彼此的網路層地址。協商的算法應儘可能的簡單,且能在所有的情況下得出協商結果。
數據壓縮協商:PPP協定必須提供一種方法來協商使用數據壓縮算法,但PPP協定並不要求將數據壓縮算法進行標準化。在TCP/IP協定族中,可靠運輸由運輸層的TCP協定負責,因此數據鏈路層的PPP協定不需要進行糾錯,不需要設定序號,也不需要進行流量控制。PPP協定不支持多點線路(即一個主站輪流和鏈路上的多個從站進行通信),而只支持點對點的鏈路通信,此外PPP協定只支持全雙工鏈路。
配置方法 基本配置 1, 啟用ppp
RouterTest#config terminal
Enter configuration commands,one per line. End with CNTL/Z.
RouterTest(config)#interface serial 0/0
RouterTest(config-if)#encapsulation ppp
RouterTest(config-if)#
2, 地址配置命令
RouterTest(config-if)#ip address 10.1.1.1 255.255.255.0
PAP配置實例
Router(config)#hostname RouterA
RouterA(config)#RouterB password itsasecret
RouterA(config)#interface Async 0
RouterA(config-if)#encapsulation ppp
RouterA(config-if)#ip address 10.0.0.1 255.255.255.0
RouterA(config-if)#dialer-map ip 10.0.0.2 name RouterB 5551234
RouterA(config-if)#username RouterA password itsasecret2
Router(config)#hostname RouterB
RouterB (config)#RouterA password itsasecret
RouterB (config)#interface Async 0
RouterB (config-if)#encapsulation ppp
RouterB (config-if)#ip address 10.0.0.2 255.255.255.0
RouterB (config-if)#dialer-map ip 10.0.0.1 name RouterA 5551234
RouterB (config-if)#username RouterB password itsasecret2
CHAP配置實例 Router(config)#hostname RouterA
RouterA(config)#RouterB password itsasecret
RouterA(config)#interface Async 0
RouterA(config-if)dialer in-band
RouterA(config-if)#encapsulation ppp
RouterA(config-if)#ppp authentication chap
RouterA(config-if)#ip address 10.0.0.1 255.255.255.0
RouterA(config-if)#dialer-map ip 10.0.0.2 name RouterB 5551234
RouterA(config-if)#username RouterA password itsasecret2
Router(config)#hostname RouterB
RouterB (config)#RouterA password itsasecret
RouterB (config)#interface Async 0
RouterB(config-if)dialer in-band
RouterB (config-if)#encapsulation ppp
RouterB (config-if)#ppp authentication chap
RouterB (config-if)#ip address 10.0.0.2 255.255.255.0
RouterB (config-if)#dialer-map ip 10.0.0.1 name RouterA 5551234
RouterB (config-if)#username RouterB password itsasecret2
CHAP和PAP Router(config-if)#ppp authentication chap pap
配置PPP回撥
使用壓縮 cisco支持的壓縮方法:
Predictor:先判斷數據是否已經被壓縮過。如果數據被壓縮過,則立即將其傳送出去,而不浪費時間對已經壓縮過的數據進行壓縮。
Stacker:一種基於Lempel-Ziv(LZ)的壓縮算法,對每種數據類型,只傳送一次有關其在數據流中的位置。接收方根據這些信息重新組織數據流。
MPPC:MPPC協定(RFC2118)讓cisco路由器器能夠與microsoft客戶端交換壓縮後的數據,它使用一種基於LZ的壓縮算法
TCP報頭壓縮:也叫Van Jacobson壓縮,只用於壓縮tcp報頭。
配置壓縮 Router(config)#interface serial2
Router(config-if)#compress {predictor|stac|mppc}
Or
Router(config)#interface async
Router(config-if)#ip tcp header-compression
Or
Router(config)#interface async
Router(config-if)#ip tcp header-compression passive
該命令告訴路由器,僅當從對方那裡收到壓縮後的報頭後,才使用tcp報頭壓縮。
多鏈路PPP
通過使用多鏈路PPP,可以將多條連線捆綁成一條虛擬連線。
Router(config-if)#ppp multilink
Router(config-if)#dialer load-threshold load [outbound | inbound | either]
命令dialer load-threshol load指定在什麼情況下將更多的B信道加入到MLP鏈路束中。當所有B信道的總負載超過指定的閥值後,撥號接口(BRI或PRI)將信道加入到多鏈路束中。
同樣,如果總負載低於閥值,將拆除B信道。
參數load是接口的平均負載,其取值為1(沒有負載)到255(滿載)。
參數outbound(默認值)指定計算負載時只考慮出站數據流;參數inbound指定只考慮入站數據流;either指定計算負載時,選擇出站負載和入站負載中較大的那個。
故障排查命令 debug ppp negotiation -確定客戶端是否可以通過PPP協商; 這是您檢查地址協商的時候。
debug ppp authentication -確定客戶端是否可以通過驗證。如果您在使用Cisco IOS軟體版本11.2之前的一個版本,請發出debug ppp chap命令。
debug ppp error - 顯示和PPP連線協商與操作相關的協定錯誤以及統計錯誤。
debug aaa authentication -要確定在使用哪個方法進行驗證(應該是RADIUS,除非RADIUS伺服器發生故障),以及用戶是否通過驗證。
debug aaa authorization -要確定在使用哪個方法進行驗證,並且用戶是否通過驗證。
debug aaa accounting -查看傳送的記錄。
debug radius -查看用戶和伺服器交換的屬性。