L2TP協議筆記2---L2TP主要協議報文分析

轉自:http://lijt100616.blog.51cto.com/1338011/343527

五、L2TP的Tunnel和Session建立過程
 
 
① 1(SCCRQ)Start-Control-Connection-Request
      控制鏈接發起請求,由LAC或LNS向對端發送,用來初始化LAC和LNS之間的tunnel,開始tunnel的建立過程。
②  2(SCCRP)Strat-Control-Connection-Reply
      表示接受了對端的連接請求,tunnel的建立過程可以繼續。
③  3(SCCCN)Start-Control-Connection-Connected
       對SCRRP的迴應,完成tunnel的建立。
④  ZLB
      零長度消息報文,一般爲查詢報文,LAC可以用Hello報文進行恢復,也可以直接丟棄。
⑤  10(ICRQ)Incoming-Call-Request
       當LAC檢測到有用戶撥入電話的時候,向LNS發ICRQ,請求在已建立的tunnel中建立session。
⑥  11(ICRP)Incoming-Call-Reply
      用來回應ICRQ,表示ICRQ成功,LNS也會在ICRP中標識L2TP session必要的參數。
⑦  12(ICCN)Incoming-Call-Connected
      用來回應ICRP,L2TP session建立完成。
 

六、其它主要控制消息瞭解

控制報文: 0(reserved)
                       1(SCCRQ)
                       2(SCCRP)
                       3(SCCCN)
                       4(STOPCCN)Stop-Control-Connection-Notification
                       由LAC或LNS發出,通知對端tunnel將要停止,控制鏈接將要關閉。另外,所有活動的會話都會悄悄的被清除,原因會顯示在Result Code AVP中。
                       5(reserved)
                       6(HELLO)
 
會話報文:
                        8(OCRP)Outgoing-Call-Reply
                        9(OCCN)Outgoing-Call-Connected
                        10(ICRQ)
                        11(ICRP)
                        12(ICCN)
                        13(reserved)
                        14(CDN)Call-Disconnect-Notify
                        由LAC或LNS發出,通知對端session將要停止。
 
錯誤報告報文:15(WEN)WAN-Error-Notify
 
PPP鏈接控制報文:16(SLI)Set-Link-Info
7(OCRQ)Outgoing-Call-Request                                       LNS發向LAC用來設置PPP協商的選項,這些選項在call的生存週期中可以隨時變化,因此LAC有能力在活動的PPP session上更新內部的呼叫信息和行爲。
 

 
七、L2TP報文頭格式
 
 
Type(T):標識消息的類型,0表示是數據消息,1表示控制消息。
Length(L):置1時,說明Length域的值是存在的,對於控制消息L位必須置1。
X bit:保留位,所有保留位均置0。
Sequence(S):置1時,說明Ns和Nr是存在的,對於控制消息S必須置1。
Offset(O):置1時,說明Offset Size域是存在的,對於控制消息O必須置0。
Priority(P):只用於數據消息,對於控制消息P位置0,當數據消息此位置1時,說明該消息在本列隊和傳輸時應得到優先處理。
Ver:必須是2,表示L2TP數據報頭的版本。
Length:標識整個報文的長度(以字節爲單位)。 
Tunnel ID:標識L2TP控制鏈接,L2TP Tunnel標識符只有本地意義,一個Tunnel兩端被分配的Tunnel ID可能會不同,報頭中的Tunnel是指接收方的Tunnel ID,而不是發送方的。本端的Tunnel ID在創建Tunnel時分配。通過Tunnel ID AVPs和對端交換Tunnel ID信息。
Session ID:標識Tunnel中的一個session,只有本地意義,一個session兩端Session ID可能不同。
Ns:標識發送數據或控制消息的序號,從0開始,以1遞增,到216再從0開始。
Nr:標識下一個期望接收到的控制消息。Nr的值設置成上一個接收到的控制消息的Ns+1。這樣是對上一個接收到的控制消息的確認。數據消息忽略Nr。
Offset Size:如果值存在的話,標識有效載荷數據的偏移。
 

 
八、 AVP介紹及其格式
 
1、AVP介紹
    控制消息中要攜帶的相關參數,使用AVP(Attribute Value Pair,屬性值對)的形式來表示,使協議具有很好的擴展性。
 
2、AVP格式
 
● 開始的6個bit是一個位掩碼,用來描述AVP的普通屬性,RFC2661定義了前2位,其餘被保留。
● (M)命令位:用來控制收到不認識的AVP時必須執行的動作。如果在一個關聯特殊的會話消息中M位被置爲不認識的AVP,這個會話一定會被終止。如果在一個關聯全部通道的消息中M位被置爲不認識的AVP,整個通道包括通道內的會話一定會被終止。如果M爲沒有被設置,這個不認識的AVP會被忽略掉。 
● (H)隱藏位:用來識別一個AVP的屬性域裏的隱藏數據。 
● 保留位一定要置0,收到一個保留位爲1的AVP,會把收到的AVP當做不認識。

 
九、部分主要AVP含義
 
(1)   Control Connection Management AVP
(2)   Protocol Version AVP :標識L2TP協議的版本。
(3)   Framing Capabilities AVP :倒數第二bit位A置1,標識支持幀異步;倒數第二bit位S置1,標識支持幀同步。
(4)   Beaer Capabilities AVP :

(5)   Tie Breaker AVP
標識發送者希望在LAC和LNS之間只存在一個tunnel;如果LAC和LNS同時都發起了SCCRQ,那麼需要選擇一個單一的tunnel。接收到SCCRQ端檢查自己是不是向對端發送了SCCRQ,如果已經發送了,就比較Tie Breaker值的大小,值小的繼續tunnel建立,值大的必須放棄tunnel。如果兩個值相等,都放棄。
(6)   Host name AVP :標識發送端的主機名稱。
(7)   Assigned Tunnel ID :本端(發送端)分配的tunnel ID。
(8)   Receive Window Size :
標識接收窗口的大小:如果沒有發送這個AVP,對端必須假設接收窗口是4,遠端在發送指定數量的控制消息後,必須等待對方確認。
(9)   Challenge :標識發送端希望對tunnel對端進行CHAP認證。
(10) Challenge Response :對接收到Challenge的響應。
(11) Assigned Session ID :
本端分配的Session ID,當LAC檢測到用戶呼叫的時候,向LNS發送ICRQ,請求在已經
存在的tunnel中建立session鏈接,LAC在本端爲需要建立的session分配一個session ID,這個session ID只具有本地意義。LNS接收ICRQ後迴應ICRP,在ICRP中也包含了LNS爲這個session分配的一個具有本地意義的session ID。通過ICRQ和ICRP,本地就可以獲得對端爲這條session分配的session ID了。
注意:在L2TP包頭中的session ID是指對端對session分配的session ID。
(12)Minimum BPS :標識呼叫鏈接可接受的最低的連接速率。
(13)Maximum BPS :標識呼叫鏈接可接受的最高的連接速率。
(14)Bearer Type :標識呼叫連接的是模擬信道還是數字信道。
(15)Framing Type :標識支持幀同步還是幀異步,如果A和S都置位說明都支持或者是不清除。
(16)Called Number :被呼叫方的電話號碼。
(17)Calling Number :呼叫方的電話號碼。
(18)Rx Connect Speed :LAC的接收速率,可能和發送速率是不對稱的。
(19)Private Group ID :LAC用來標識客戶屬於某個特定的組織。

發佈了6 篇原創文章 · 獲贊 13 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章