MPLS LDP報文格式

MPLS LDP報文格式
LDP消息頭部格式
爲保證LDP消息的可靠發送,除了Discovery(Hello)消息使用UDP(端口646)外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP(端口646)傳輸。

LDP協議消息頭部格式如下(PDU,協議數據單元,每個LDP PDU有個LDP消息頭,後面跟着一個或多個LDP消息內容)。

字段 長度 說明
Version 2字節 表示版本號。目前LDP的版本號始終爲1。
PDU Length 2字節 表示PDU的總長度,包括LDP ID和整組LDP消息,不包括Version和PDU Length字段。

例如某個LDP報文中包含3個Hello消息,則該報文的PDU length = 3 * Message length。

LSR-ID 4字節 LDR-ID標識一臺LSR,必須全局唯一。
LaberSpace ID 2字節 標識了LSR內的標籤空間。對於平臺範圍標籤空間,這些數值都應當爲0。
Bunch of messages 變長 是一組LDP消息的集合,可以是一個或者多個LDP消息。
當LDP報文以UDP方式傳輸時,“Bunch of messages”只能是Hello消息的集合。
當LDP報文以TCP方式傳輸時,“Bunch of messages”可以是除Hello消息外任意類型的LDP消息的集合。

LDP消息格式
所有LDP消息的格式如下:

字段 長度 說明
U 1比特 未知的消息。

如果對端收到的LDP消息中“Message type”字段爲未知的LDP消息類型,且“U”字段的值爲“0”,則向源端發送通知(Notification)消息。
如果對端收到的LDP消息中“Message type”字段爲未知的LDP消息類型,且“U”字段的值爲“1”,則忽略該未知消息。

Message Type 15比特 LDP消息的類型。
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Mandatory Parameters 變長 LDP消息的強制參數。
Optional Parameters 變長 LDP消息的可選參數,包含0~n個TLV。

通告(Notification)消息
LSR發送通告消息來通知重要事件到LDP對等體。通告消息通知致命錯誤或提供諮詢信息,如處理LDP消息的結果或LDP會話的狀態。

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Status TLV 變長 標識一個事件。
Optional Parameters 變長 可選參數,包含0~n個TLV。

Hello消息
用於通告和維護網絡中LSR的存在。

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
Hold Time 16比特 保持時間,以秒爲單位的Hello保持時間。LSR維護來自潛在同伴的Hello的記錄。爲0的數值意味着使用缺省值。0xffff的數值意味着無窮大。
T 1比特 T(Targeted Hello)值爲1表示爲遠端Hello消息,值爲0表示本地Hello消息。
R 1比特 R(Request Send Targeted Hellos)值爲1表示請求接收者週期性發送遠端Hello消息給該Hello的發送源端,值爲0表示沒有此需求。
Reserved 14比特 保留字段,必須置0,接收端忽略此字段。
Optional Parameters 變長 可選參數,包含0~n個TLV。

Initialization消息
LDP的Initialization消息在LDP回家建立階段發送,格式如下:

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
Protocol Version 16比特 表示協議版本號 = 1。
KeepAlive Time 16比特 TCP連接的保持時間,這個定時器的刷新並不是收到KeepAlive消息纔會刷新,而是通過TCP連接收到的LDP PDU時都會刷新
A 1比特 表明標籤分配方式 ( 0 = DU ;1 = DoD)
D 1比特 表明是否使能了環路檢測功能(0 = Disable ; 1 = Enable)。
Reserved 6比特 保留字段,必須置0,接收端忽略此字段。
PVLim 8比特 PVLim (Path Vector Limit),LSP支持的最大跳數(只有在使能了Loop detection功能時有效,默認值爲32)。
Max PDU Length 16比特 LDP PDU的最大長度,默認值爲4096字節。
Receiver LDP Identifier 6字節 Initialization消息的接收者的LDP標識符(LDP ID)。
Optional Parameters 變長 可選參數,包含0~n個TLV。

KeepAlive消息
Keepalive消息無Mandatory Parameters字段及後面的字段,用於維護SESSION的狀態,所以這裏不需要什麼特別的內容,只要對方知道自己還存在就好。

地址(Address)消息
Address消息用於LSR發送地址消息到LDP鄰居,以公告其接口地址。

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
Address Family 16比特 地址族編號。
Addresses 變長 指定地址族的地址列表,格式取決於地址族類型:
IPv4地址爲4字節
IPv6地址爲16字節

Optional Parameters 變長 可選參數,包含0~n個TLV。

地址撤銷(Address Withdraw)消息
LSR發送Address Withdraw消息到LDP對等體,以撤銷之前公告的接口地址。當接口地址被刪除或接口down後,就會發送Address Withdraw消息。

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
Address Family 16比特 地址族編號。
Addresses 變長 指定地址族的地址列表,格式取決於地址族類型:
IPv4地址爲4字節
IPv6地址爲16字節

Optional Parameters 變長 可選參數,包含0~n個TLV。

Label Mapping消息
對於特定的FEC,下游使用Label Mapping消息爲上游分配標籤。

Label Mapping消息均由下游發往上游節點,Label Mapping消息的發送方式因標籤分配方式或者標籤控制方式的不同而不同:

DU模式下:下游無需等待上游的Label Request消息可以直接爲某FEC向上遊LDP鄰居發送Label Mapping消息;
DoD模式下:下游必須等待上游的Label Request消息才能爲指定的FEC向上遊LDP鄰居發送Label Mapping消息;
Independent模式下:中間節點無需等待收到下游爲指定FEC發送的Label Mapping消息後才向它的上游LDP鄰居發送Label Mapping消息;
Order模式下:中間節點必須等待收到下游爲指定FEC發送的Label Mapping消息後才能向它的上游LDP鄰居發送Label Mapping消息。

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
FEC Element 1 to FEC Element n 每個Element 1字節 表明該標籤是爲哪個FEC而分配的。

FEC Element的格式定義:

Type = 0x01: 反掩碼。只在Label Withdraw和Label Release消息中使用。
Type = 0x02: 前綴。

Label TLV 52比特 表明下游爲該FEC分配了什麼標籤。

Label字段是個20比特的標籤值。

Optional Parameters 變長 可選參數,包含0~n個TLV。

Label Request消息
LSR發送Label Request消息給LDP對等體請求FEC對應的標籤。

Label Request消息只能由作爲Ingress的LSR發起,不能由作爲Transit的LSR發起(Order+dod)。下游收到Label Request消息後需要向上遊返回Label Mapping消息,Label Mapping消息中攜帶Label Request消息中的Message ID TLV。

下列情況下,下游收到Label Request消息後不會向上遊返回Label Mapping消息:

下游找不到與Label Request中FEC TLV中對應的路由,此時返回No Route的Notification消息;
下游沒有足夠的標籤來分配,此時返回No Label Resource的Notification消息;
下游檢測到有環路發生,此時返回Loop Detected的Notification消息。
圖12 Label Request消息格式

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
FEC Element 1 to FEC Element n 每個Element 1字節 表明該標籤是爲哪個FEC而分配的。

FEC Element的格式定義:

Type = 0x01: 反掩碼。只在Label Withdraw和Label Release消息中使用。
Type = 0x02: 前綴。

Optional Parameters 變長 可選參數,包含0~n個TLV。

Label Abort Request消息
上游LSR發送了Label Request消息後但還沒有收到Label Mapping消息前,發現FEC對應的下一跳變化了或者其他可能的原因需要發送新的Label Request消息時,上游會向下遊發送Label Abort Request消息。

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
FEC Element 1 to FEC Element n 每個Element 1字節 表明該標籤是爲哪個FEC而廢棄的。

FEC Element的格式定義:

Type = 0x01: 反掩碼。只在Label Withdraw和Label Release消息中使用。
Type = 0x02: 前綴。

Label Request Message ID TLV - 要被廢棄的Label Request消息的消息ID。
Optional Parameters 變長 可選參數,包含0~n個TLV。

Label Withdraw消息
Label Withdraw消息一般由下游LSR發往上游LSR,通知上游LSR之前通告的與某FEC對應的Label不再使用,上游LSR需要解除Label和FEC的映射關係。

下列情況下會發送Label Withdraw消息:

下游節點不再有某條FEC,如果已經爲該FEC發送了Label Mapping消息,則發送Label Withdraw消息;
下游單方面的決定不再使用標籤轉發時也會發送Label Withdraw消息。

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
FEC Element 1 to FEC Element n 每個Element 1字節 表明該標籤是爲哪個FEC而撤銷的。

FEC Element的格式定義:

Type = 0x01: 反掩碼。只在Label Withdraw和Label Release消息中使用。
Type = 0x02: 前綴。

Label TLV 52比特 表明該FEC對應的標籤。

Optional Parameters 變長 可選參數,包含0~n個TLV。

Label Release消息
Label Release消息一般由上游發往下游,通知撤銷Label和FEC的邦定,該消息相當於Label Request消息的逆過程。

在下列情況下會發送Label Release消息:

上游LSR的標籤保持方式是保守方式,發送Label Mapping消息的LSR不再是FEC的下一跳時,上游LSR需要發送Label Release消息來撤銷Label和FEC的映射關係;
上游LSR的標籤保持方式是保守方式,從不是FEC的下一跳收到Label Mapping消息後,上游LSR需要發送Label Release消息;
LSR收到Label Withdraw消息後需要發送Label Release消息。

字段 長度 說明
Message Length 16比特 LDP消息的長度,是Message ID、強制參數和可選參數的長度的總和。
Message ID 32比特 LDP消息的編號,用於唯一地標識一個LDP消息。
Length 16比特 LDP消息是以LDP PDU中的TLV形式定義的. 每個LDP TLV有一個2字節的Type域,2字節的Length域和變長的Value域。這裏的Length就表示TLV的Value域的字節數。
FEC Element 1 to FEC Element n 每個Element 1字節 表明該標籤對應的FEC。

FEC Element的格式定義:

Type = 0x01: 反掩碼。只在Label Withdraw和Label Release消息中使用。
Type = 0x02: 前綴。

Label TLV 52比特 圖21 Label TLV的格式

Optional Parameters 變長 可選參數,包含0~n個TLV。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章