一、LDP 協議
LDP(Label Distribution Protocol,標簽分發協議),應用於MPLS網絡,具有配置簡單、可提供路由拓撲驅動建立LSP、支持大容量LSP等優點。
LDP的工作需要依靠底層的IGP協議。是MPLS的一種控制協議,LDP通過Hello報文發現鄰居,並且基於TCP建立鄰居間的會話,能夠動態地為FEC分配標簽,並建立LSP(Label Switched Path,標簽交換路徑)。
二、LDP對等體及LDP會話
LDP對等體
LDP對等體是指相互之間存在LDP會話、使用LDP來交換標簽信息的兩個LSR。LDP對等體通過它們之間的LDP會話獲得對方的標簽映射,LDP對等體也稱為LDP鄰居。
LDP會話
本地LDP會話(Local LDP Session):建立會話的兩個LSR之間是直連的。(如圖:R1和R2、R2和R3、R3和R4)
遠程LDP會話(Remote LDP Session):建立會話的兩個LSR之間可以是直連的,也可以是非直連的。(如圖:R2和R4)
三、LDP四種報文類型
(1)發現(Discovery)報文:用於通告和維護網絡中LSR的存在,使用Hello報文。
(2)會話(Session)報文:用於建立、維護和終止LDP對等體之間的會話,如Initialization報文、Keepalive報文。
(3)通告(Advertisement)報文:用於創建、改變和刪除FEC的標簽映射。
(4)通知(Notification)報文:用於提供建議性的報文和差錯通知。
為保證LDP報文的可靠發送,除了Discovery報文使用UDP傳輸外,LDP的Session報文、Advertisement報文和Notification報文都使用TCP傳輸。
四、基本概念
4. 1 LSR ID
(1)每一台運行MPLS的LSR必須擁有一個域內唯一的LSR ID。
(2)激活MPLS之前,必須為設備配置 MPLS ID(使用配置命令 mpls lsr-id)。
(3)LSR ID長度為32bit,與IPv4地址的格式相同。
(4)通常情況,我們選擇使用Loopback接口地址作為 LSR ID。
4.2 LDP ID
(1)每一台運行了LDP的LSR設備必須擁有LSR ID外,還必須擁有LDP ID。
(2)LDP ID的長度為48bit,由32bit的LSR ID 與 16bit的標簽空間標識符(Label Space ID)構成。
(3)LDP ID以 “LSR ID : 標簽空間標識” 的形式表示,如 2.2.2.2:0。
(4)標簽空間標識一般存存兩種形態:
值為0:表示基於設備(或基於平台)的標簽空間。
值為1:表示基於接口的標簽空間。
4.3 傳輸地址
(1)互為鄰居的LSR需基於雙方的傳輸地址(Transport Address)建立TCP連接。
(2)鄰居之間通過Hello報文知曉鄰居的傳輸地址。
(3)在鄰居知道了通信雙方的傳輸地址后,鄰居之間嘗試TCP三次握手(基於傳輸地址),來交互LDP的初始報文、標簽映射報文,這些報文都使用傳輸地址來通信。
(4)傳輸地址會被用於鄰居間TCP連接,因此LSR必須擁有到達鄰居傳輸地址的路由。
(5)缺省情況下,公網LDP的傳輸地址等於設備的LSR ID,私網的傳輸地址等於接口的主IP地址。
(6)在接口視圖下,使用mpls ldp transport-address命令,可以修改傳輸地址。
五、LDP會話建立過程
(1)通過發Hello報文發現鄰居。
(2)通過TCP三次握手來創建會話。
六、在MPLS中,運行LDP協議的過程
(1)LSR 首先通過運行IGP協議(如:OSPF、IS-IS)來構建路由表,FIB表。
(2)LDP根據相應的模式,為路由表中的路由前綴(FEC)分配標簽。
(3)LDP根據相應的模式,將自己為路由前綴分配的標簽,通過LDP通告給LDP鄰居。
(4)LSR將自己為路由前綴分配的標簽,以及LDP鄰居為路由前綴通告的標簽存儲起來,並形成關聯。
(5)當LSR轉發到達目的網絡的標簽時,所使用的出站標簽總是下游LDP鄰居所通告的標簽(即設備到達目的網絡的下一跳設備)。
七、隱定空標簽、PHP特性
PHP(Penultimate hop popping,次末跳彈出);值為3的標簽,被稱為隱式空標簽(Implicit Null Label)。
(1)倒數第地跳LSR進行標簽交換時,如果發現交換后的標簽值為3,則將標簽彈出,並將報文直接發給最后一跳,最后一跳收到報文直接進行IP轉發或下一層標簽轉發。
(2)MPLS標簽在LSP的最后一跳是沒有使用價值的,因此可以在倒數第二跳就彈出MPLS標簽,從而提升轉發效率。
八、顯示空標簽
為了保證端到端的Qos信息不丟失,在配置MPLS Qos的應用時,需要配置 label advertise explicit-null,使LSR設備在給最后一跳設備傳值時,使用的是顯示空標簽。標簽值為特殊的值:0。
九、LDP的基礎配置
(1)在R1、R2、R3、R4上運行OSPF,實現全網互通。
(2)在RR1、R2、R3、R4上激活MPLS及LDP,設備的Loopback 0接口作為LSR ID。
(3)R1的配置如下(R2、R3、R4配置類擬):
[R1] mpls lsr-id 1.1.1.1 //配置lSR-ID
[R1] mpls ldp //激活全局ldp功能
[R1-ldp] lsp-trigger all //配置LSP觸發策略
[R1] int gi0/0/0
[R1-Gi0/0/0] mpls en //在接口激活mpls
[R1-Gi0/0/0] mpls ldp en //激活ldp功能
九、相關命令
dis mpls ldp peer //查看LDP的鄰居
dis mpls interface //查看MPLS的接口信息
dis mpls ldp interface //查看LDP的接口信息
dis mpls lsp //查看MPLS的LSP路徑
dis mpls lsp ver //查看MPLS的LSP路徑詳細
dis mpls ldp lsp //查看LDP的LSP路徑
[mpls] label advertise { explicit-null | implicit-null | non-null } //分別對應顯示空標簽、隱式空標簽、正常標簽
ping lsp //ping命令
tracert lsp //tracert命令