前面我們已經學習了LDP的基礎概念,了解了LDP會話的建立、LDP的標簽控制等知識,今天來整體過一遍LDP的一個工作過程,后面我們再通過實驗深入學習。
一、LDP標簽分發
標簽分發需要基于基礎的路由協議建立LDP會話,激活MPLS和LDP。以下面的拓撲進行說明:所有LSR均采用DU + Independent +Liberal方式,目的網段為R4的192.168.4.0/24。
因為采用DU的標簽發布模式,因此R4會為直連路由192.168.4.0/24分配標簽,這里以1041表示,并主動通過LDP協議報文將標簽映射通告給LDP對等體R2和R3。
以R2為例,在其路由表中,192.168.4.0/24路由的下一跳為R4,當它從R4收到關于192.168.4.0/24的標簽映射通告時,由于該通告來自下游LDP鄰居,因此這將觸發它自己為該路由分配標簽1021,并將標簽映射通告給LDP鄰居(如R1)。R3同理。
R1收到LDP鄰居R2及R3通告過來的關于192.168.4.0/24路由的標簽映射后,將這兩個標簽都存儲起來,但是由于在自己的路由表中,到達192.168.4.0/24的下一跳是R2,因此當前它只會使用R2所通告的標簽1021。
經過上面的幾個步驟,從R4向上游通告標簽,后R1、R2、R3都知道了去往192.168.4.0/24網段的標簽轉發路徑。
注:當R2發生故障時,OSPF路由將會重新收斂,此時R1的路由表中192.168.4.0/24路由的下一跳將會切換至R3,此時R1將啟用R3所通告的、關于192.168.4.0/24的標簽。
二、LDP標簽轉發
這個拓撲從R1去往R4的192.168.4.0/24,使用MPLS LDP標簽轉發。
R1作為Ingress LSR,需要對接收的IP報文執行Push操作壓入標簽,并進行標簽轉發。
當R1收到發往192.168.4.1的IP報文時,首先在其FIB表中查詢該目的IP地址,它發現所匹配的表項的Tunnel ID為非0,因此繼續在NHLFE中查詢該Tunnel ID,然后意識到需要將對該IP報文壓入標簽并進行標簽轉發,出接口為GE0/0/0、下一跳為R2、出站標簽為1021,于是為報文插入標簽頭部并轉發出去。
R2作為Transit LSR,需要對接收的IP報文執行Swap操作交換標簽,并進行標簽轉發。當R2收到攜帶1021標簽的標簽報文時,查詢ILM,根據ILM對應到NHLFE中的表項。于是,R2對該標簽報文通過swap操作將標簽更換為1041,并從相應的接口轉發出去。
R4作為Egress LSR,需要對接收的IP報文執行Pop操作交換標簽,并進行IP轉發。
當R4收到攜帶1041標簽的標簽報文時,查詢ILM,根據ILM查詢到操作為Pop。于是,R4對該標簽報文通過Pop操作將最外層標簽剝離,此時該報文已經變成了標準IP報文,R4將對該IP報文執行標準的IP轉發流程。
在這里需要考慮PHP特性會在倒數第二跳彈出標簽的現象。
三、工作過程簡單總結
- LSR首先通過運行IGP協議(例如OSPF、IS-IS等)來構建路由表、FIB表;
- LDP根據相應的模式,為路由表中的路由前綴(FEC)分配標簽;
- LDP根據相應的模式,將自己為路由前綴分配的標簽,通過LDP標簽映射報文通告給LDP鄰居;
- LSR將自己為路由前綴分配的標簽,以及LDP鄰居為該路由前綴通告的標簽存儲起來,并與出接口、下一跳地址等信息形成關聯(標簽轉發表項);
- 當LSR轉發到達目的網絡的標簽報文時,所使用的出站標簽總是下游LDP鄰居所通告的標簽,此處所指的下游鄰居,是設備的路由表中到達該目的網絡的下一跳設備。
總結:這里就大概過了一遍LDP標簽的分發和轉發過程,下節通過一些實驗來進行模擬。