L2TP

工業標準的Internet隧道協議

L2TP是一種工業標準的Internet隧道協議,功能大致和PPTP協議類似,比如同樣可以對網路數據流進行加密。不過也有不同之處,比如PPTP要求網路為IP網路,L2TP要求面向數據包的點對點連接;PPTP使用單一隧道,L2TP使用多隧道;L2TP提供包頭壓縮、隧道驗證,而PPTP不支持。

定義


第二層隧道協議(英語:Layer Two Tunneling Protocol,縮寫為L2TP)是一種虛擬隧道協議,通常用於虛擬專用網。L2TP協議自身不提供加密與可靠性驗證的功能,可以和安全協議搭配使用,從而實現數據的加密傳輸。經常與L2TP協議搭配的加密協議是IPsec,當這兩個協議搭配使用時,通常合稱L2TP/IPsec。
L2TP支持包括IP、ATM、幀中繼、X.25在內的多種網路。在IP網路中,L2TP協議使用註冊埠UDP 1701。因此,在某種意義上,儘管L2TP協議的確是一個數據鏈路層協議,但在IP網路中,它又的確是一個會話層協議。
L2TP
L2TP

歷史


Internet環境提供了兩種典型的VPN技術:安全Ip協議(IpSec)和二層隧道協議。二層隧道協議是一種利用公用數據網(網路層的IP服務或數據鏈路層的ATM信元(Cell)傳輸服務、幀中繼服務或乙太網傳輸服務)在公用網接近通信用戶的遠程節點之間建立”隧道“(Tunenl)對相同或不同用戶對的多條第2層的連接進行安全地中繼。

第一版

第一版二層隧道協議以L2F和PPTP為代表。
PPTP是由多家公司(其中包括Mierosoft,3 Com,ECI Telematies以及U.S.Roboties等各大公司)專門為支持VPN而開發的一種技術。儘管PPTP的隧道是利用網路層協議GRE(Generic Routing Eneapsulation)·RFC1701和1702來建立隧道的,但由於隧道傳送的對象是數據鏈路層的PPP協議,因此仍把它視為第二層隧道協議。PPTP保持了傳統的撥號終端通過網路訪問伺服器(NAS,Network Aeeess Server)訪問應用伺服器的C/S模式,將NAS拆分為:應用伺服器側的“點到點隧道協議網路伺服器”和撥號用戶側的“點到點隧道協議訪問控制集中器”。在PNS與PAC之間利用於TCP/IP建立“隧道控制連接”來控制基於GRE上的隧道的建立。在隧道內建立PPP連接時,PPTP需要對訪問者的身份進行認證(如用戶名,口令和域名等)。
L2F是由Ciseo公司提出的,可以在多種介質(如ATM,FR,IP)上建立多協議的安全VPN的通信方式。它將鏈路層的協議(如HDLC,PPP,ASYNC等)封裝起來傳送,因此網路的鏈路層完全獨立於用戶的鏈路層協議。

第二版

第二版的二層隧道協議RFC2661是由Ciseo、Aseedn、微軟和RedBaek的專家提出的,並正式採用了第2層隧道協議的名稱(L2TP,Layer 2 Tunneling proroeol);後來被成為L2TPv2。L2TPv2結合了L2F和PPTP的優點,其應用對象與PPTP類似,也是專門針對點到點協議進行隧道傳輸和中繼的協議。L2TPv2允許從客戶端或從訪問伺服器端發起建立PPP傳輸連接的隧道的過程,從而實現應用伺服器與終端之間的第2層VPN功能。L2TPv2把傳輸鏈路層PPP的隧道建立在公用數據網提供的某一層服務之上(如:IP、ATM信元層或幀中繼)進行隧道傳輸,這與PPTP將隧道限制在建立在網路層的GRE之上的思路相比,其可適應的網路環境史加廣泛。

版本比較

通常所講的L2TP都是指L2TPv2,之後又推出了一個新版本L2TPv3。現在對L2TPv2和L2TPv3作一個比較。
L2TPv3的前身是Cisco公司的專有協議——通用隧道介面(Universal Tunnel Interface,UTI)。UTI能夠在IP網路上提供簡單而高速的透明傳輸L2業務的能力,但缺乏信令能力以及大規模商用必須的標準化支持。L2TPv3提供了與UTI類似和增強的功能,以標準化和信令的方式替代UTI。L2TPv3能夠很好地實現代碼重用、互操作性經驗,以及在演進之間保持平衡。與L2TPv2類似,L2TPv3也由控制平面和數據平面兩個基本單元組成。
與L2TPv2相比,L2TPv3進行了兩點改進。
(1)分離所有與PPP相關的AVP和引用,包括專門針對PPP的L2TP數據頭的部分。將PPP相關部分、ATMAAL5封裝,以及乙太網封裝等內容專門在其他文檔中進行規定。
(2)為了適應大規模應用的擴展性要求,將原來16比特的Session ID和Tunnel ID,擴展為32比特。
從用途上來說,二者也明顯不同。L2TPv2可用於在IP網路上傳輸PPP流量,一般用於零售和批發的遠程接入VPN業務。而L2TPv3可用於在IP網路上傳輸PPP、乙太網、幀中繼和ATM等二層流量,可用於零售和批發的專線VPN業務。
L2TPv3可以讓運營商將所有類型的業務流量都匯聚到單一的IP網路基礎設施上,充分利用IP通信的全球可達性,使得企業客戶可以享受到更低費用的服務。

信息類型


L2TP 是一個數據鏈路層協議。其報文分為數據消息和控制消息兩類。數據消息用投遞 PPP 幀,該幀作為L2TP報文的數據區。L2TP不保證數據消息的可靠投遞,若數據報文丟失,不予重傳,不支持對數據消息的流量控制和擁塞控制。控制消息用以建立、維護和終止控制連接及會話,L2TP確保其可靠投遞,並支持對控制消息的流量控制和擁塞控制。

協議結構


L2TP協議結構
比特0-15第16-31位
標誌和版本信息長度(opt)
隧道ID會話ID
Ns(opt)Nr(opt)
偏移大小(opt)膠印墊(選擇)......
有效載荷數據
T :T 位表示信息類型。若是數據信息,該值為0;若是控制信息,該值為1。
L :當設置該欄位時,說明 Length 欄位存在,表示接收數據包的總長。對於控制信息,必須設置該值。
X: X 位為將來擴張預留使用。在導出信息中所有預留位被設置為0,導入信息中該值忽略。
S :如果設置 S 位,那麼 Nr 欄位和 Ns 欄位都存在。對於控制信息,S 位必須設置。
O :當設置該欄位時,表示在有效負載信息中存在 Offset Size 欄位。對於控制信息,該欄位值設為0。
P :如果 Priority (P)位值為1,表示該數據信息在其本地排隊和傳輸中將會得到優先處理。
Ver : Ver 位的值總為002。它表示一個版本1 L2TP 信息。
Length :信息總長,包括頭、信息類型 AVP 以及另外的與特定控制信息類型相關的 AVPs。
Tunnel ID :識別控制信息應用的 Tunnel。如果對等結構還沒有接收到分配的 Tunnel ID,那麼 Tunnel ID 必須設置為0。一旦接收到分配的 Tunnel ID,所有更遠的數據包必須和 Tunnel ID 一起被發送。
Call ID :識別控制信息應用的 Tunnel 中的用戶會話。如果控制信息在 Tunnel 中不應用單用戶會話(例如,一個 Stop-Control-Connection-Notification 信息),Call ID 必須設置為0。
Nr :期望在下一個控制信息中接收到的序列號。
Ns :數據或控制信息的序列號。
Offset Size & Pad :該欄位規定通過 L2F 協議頭的位元組數,協議頭是有效負載數據起始位置。Offset Padding 中的實際數據並沒有定義。如果 Offset 欄位當前存在,那麼 L2TP 頭 Offset Padding 的最後八位位元組后結束。

與PPTP不同


PPTP和L2TP都使用PPP協議對數據進行封裝,然後添加附加包頭用於數據在網際網路路上的傳輸。盡 管兩個協議非常相似,但是仍存在以下幾方面的不同:
1.PPTP要求網際網路路為IP網路。L2TP只要求隧道媒介提供面向數據包的點對點的連接。L2TP可以在IP(使用UDP),幀中繼永久虛擬電路(PVCs),X.25虛擬電路(VCs)或ATM VCs網路上使用。
2.PPTP只能在兩端點間建立單一隧道。L2TP支持在兩端點間使用多隧道。使用L2TP,用戶可以針對不同的服務質量創建不同的隧道。
3.L2TP可以提供包頭壓縮。當壓縮包頭時,系統開銷(overhead)佔用4個位元組,而PPTP協議下要佔用6個位元組。
4、L2TP自身不提供隧道驗證,從L2TP的包頭可以看出。隧道認證是由PPP(pap或chap)協議提供!而PPTP則支持隧道驗證,PPTP自身就是PPP的擴展!但是當L2TP或PPTP與IPsec共同使用時,可以由IPsec提供隧道驗證,不需要在第2層協議上驗證隧道.
5.L2TP訪問集中器(L2TP Access Concentrator,LAC)是一種附屬在網路上的具有PPP端系統和L2Tpv2協議處理能力的設備,它一般就是一個網路接入伺服器軟體,在遠程客戶端完成網路接入服務的功能。
6.L2TP網路伺服器(L2TP Network Server,LNS)是用於處理L2TP協議伺服器端的軟體。
L2TP支持的協議:IP協議、IPX協議和NetBEUI協議。

功能


L2TP協議提供了如下功能。
(1)L2TP是用來整合多協議撥號服務至現有的Intemet 服務提供商點。PPP定義了多協議跨越第2層點對點鏈接的一個封裝機制。特別地,用戶通過使用眾多技術之一(如撥號POTS,ISDNADSL等)獲得第2層連接到網路訪問伺服器(NAS),然後在此連接上運行PPP。在這樣的配置中,第2層終端點和PPP會話終點處於相同的物理設備中(如NAS)。
(2)L2TP擴展了PPP模型,允許第2層和PPP終點處於不同的由包交換網路相互連接的設備中。
通過L2TP,用戶在第2層連接到一個訪問集中器(如數據機池、ADSL,DSLAM等),然後這個集中器將單獨得的PPP幀隧道到NAS。這樣,可以把PPP包的實際處理過程與第2層連接的終點分離開來。
(3)對於這樣的分離,其明顯的一個好處是,第2層連接可以在一個(本地)電路集中器上終止,然後通過共享網路如幀中繼電路或Intermet擴展邏輯PPP會話,而不用在NAS上終止。從用戶角度看。
直接在NAS上終止第2層連接與使用L2TP沒有什麼功能上的區別。L2TP協議也用來解決“多連接聯選組分離”問題。多鏈接PPP,一般用來集中ISDNB通道,需要構成多鏈接捆綁的所有通道在一個單網路訪問伺服器(NAS)上組合。因為L2TP使得PPP會話可以出現在接收會話的物理點之外的位置,它用來使所有的通道出現在單個的NAS上,並允許多鏈接操作,即使是在物理呼叫分散在不同物理位置的NAS 上的情況下。
(4)L2TP使用以下兩種信息類型,即控制信息和數據信息。控制信息用於隧道和呼叫的建立、維持和清除。數據信息用於封裝隧道所攜帶的PPP幀。控制信息利用L2TP中的一個可靠控制通道來確保發送。當發生包丟失時,不轉發數據信息。

工作流程


L2TP是基於連接的協議,建立一條隧道傳遞PPP會話的過程包括兩步。
(1)建立一條隧道的控制連接。
(2)根據入流/出流呼叫的請求,觸發建立一個會話(Session)。
L2TP隧道建立在LAC和LNS之間,由一條控制連接和至少一個L2TP會話組成。在一對LAC和LNS之間可以建立多條L2TP隧道。
L2TP會話也建立在LAC與LNS之間,但必須在L2TP能夠通過隧道傳遞PPP幀之前,隧道建立成功之後才能建立。會話與呼叫是一一對應的。呼叫狀態由LAC和LNS維護。一條L2TP隧道中可以建立多個會話。
控制連接的建立包括對端的身份驗證以及對端的L2TP版本號識別、幀類型和硬體承載能力等信息的協商交換。在控制連接的建立過程中,L2TP的隧道驗證功能是可選的,如果使用,則在LAC和LNS之間必須存在唯一的共享認證密鑰。
會話連接的建立必須在隧道(控制連接)成功建立之後進行。每個會話連接對應於LAC和LNS之間的一個PPP數據流。與隧道的建立過程不同,會話連接的建立是有方向性的。
LAC請求LNS接受一個對應於“入呼叫”的會話,或者LNS請求LAC接受一個對應於“出呼叫”的請求。
L2TP報文頭中包含隧道標識(TunnelID)和會話標識(Session ID)信息,用來標識不同的隧道和會話。隧道標識相同而會話標識不同的報文復用在同一條隧道上,隧道標識與會話標識是由對端分配的,只對接收端有意義,對發送端沒有意義。