MPLS體系結構
-
我們在瞭解MPLS的結構的時候,一般情況都會介紹兩個平面,一個是控制平面,一個是轉發平面
-
控制平面:負責產生和維護路由信息以及標籤信息。
路由信息表RIB(Routing Information Base):由IP路由協議(IP Routing Protocol)生成,用於選擇路由。 標籤分發協議LDP(Label Distribution Protocol):負責標籤的分配、標籤轉發信息表的建立、標籤交換路徑的建立、拆除等工作。
標籤信息表LIB(Label Information Base):由標籤分發協議生成,用於管理標籤信息。 -
轉發平面:即數據平面(Data Plane),負責普通IP報文的轉發以及帶MPLS標籤報文的轉發。
轉發信息表FIB(Forwarding Information Base):從RIB提取必要的路由信息生成,負責普通IP報文的轉發。
標籤轉發信息表LFIB(Label Forwarding Information Base):簡稱標籤轉發表,由標籤分發協議在LSR上建立LFIB,負責帶MPLS標籤報文的轉發。 -
這兩個灰色區域實際上能看作是一臺路由器,這臺路由器同時有兩個平面去達到效果。
·首先我們在控制平面去運行路由協議,路由器之間形成路由表RIB。路由表能夠用來做數據轉發,也就是Forwarding,因此RIB和FIB有連線 -
控制平面:IP信息表,在轉發平面會有Ip forwading table。因此傳統IP轉發中,IGP是控制平面乾的事情,一旦形成了IP轉發表,數據來了的時候,就會使用轉發平面的IPFI(IP轉發表發送)。
-
現在引入標籤,由於標籤的使用,也需要使用標籤的分發協議,例如這個路由器運行了標籤的路由協議,會生成一個標籤轉發表,因此分發標籤就是控制平面做的事情,形成標籤轉發表,就是轉發平面做的事情,也就是LFIB,標籤轉發數據庫
-
面試中會進行詢問,控制平面的作用以及轉發平面的作用,我們需要知曉,控制平面是協議去做的,例如IGP,形成路由表,標籤協議形成標籤表等等;轉發平面就是使用形成的表進行數據轉發,例如下一跳出接口等等。
-
如果現在收到一個IP報文,那麼就會去訪問FIB,然後轉發出去是一個IP報文或者是一個帶標籤的報文
-
對於LFIB也是一樣,接受到一個帶着標籤的報文,可能會轉發出去一個普通的IP報文或者還是帶標籤的報文
-
大家會發現FIB以及LFIB時間有個小箭頭,這個小箭頭代表的意思是:實際上在路由器中,如果沒有使能MPLS,那麼在IP轉發表或者FIB中是沒有任何標籤信息的,一旦路由器使用了MPLS,那麼就會生成標籤轉發表,那麼標籤信息滿足條件的也會放入到FIB表中,也就是FIB表中實際上會出現標籤信息,在這種情況下,FIB錶轉發的數據中會帶有標籤數據。
-
MPLS現在使用到的實際上都是幀模式,也有信元模式MPLS,實際上也就是ATM中使用的模式。但是由於ATM網絡我們現在不用了,因此MPLS信元模式也基本上用不到。
MPLS數據報文結構
-
附加:MPLS標籤嵌套-標籤棧(Lable Stack)
-
MPLS VPN中,我們只會用到兩個MPLS頭部,一個是外層標籤一個是內層標籤
-
MPLS TE中,我們一般情況上都是3個MPLS標籤,分別是頂層標籤、中間標籤以及底層標籤,如果出現4個,那麼就是比較複雜的情況
- 如果沒有MPLS,就一個純的IGP,想用MPLS進行交換,那麼就一層標籤 -
在進行通信的時候,實際上由RTA所連接的純IP的網絡,給RTA一個純IP的數據,那麼由RTA設備要去查FIB表,然後打上標籤,傳遞給RTB設備。
-
NHLFE由三個參數組成,第一個是Nexthop 第二個是Out-Interface,第三個是label Operation(動作):Push代表的就是打上一個標籤或者去掉一個標籤
-
華爲設備用IP前綴去分FEC。
-
MPLS標籤操作類型:
-①PUSH
-②Swap
-③Pop
LSP建立方式 -
LSP概念:
-
LSP建立的方式有兩種:
-①靜態LSP
-②動態LSP:
LDP鄰居發現
- LDP(Label Distribution Protocol):業界規範標籤分發協議。不同廠商存在不同標準,例如思科也有相應的分發協議,也就是思科的TDP,也是分配標籤的,但是隻能在思科設備上進行發送,由於不同廠商有不同的標準,因此我們就使用一個LDP進行統一
- 在建立LDP鄰居的時候,必須要在需要做鄰居的這幾臺設備上,開啓LDP,類似於我們想要轉發路由信息,我們也必須在路由器上開啓ospf那樣。
- 創建完鄰居之後就是分配標籤,依據就是根據FEC進行分配,華爲設備上默認使用前綴進行分析。
- 總的來說,LDP是用來在LSR之間建立LDP Session並交換Label/FEC映射信息的協議。
- LDP發現機制實際上有兩種:
-①LDP基本發現機制 發現直接連接在同一鏈路上的LSR鄰居,實際上就是自己直連鏈路上的LDP鄰居,類似於建立OSPF鄰居關係那樣,那麼在OSPF中我們建立鄰居關係發送hello包使用組播,那麼實際上對於LDP基本發現機制而言,使用的也是組播,是224.0.0.2
-②LDP擴展發現機制 發現非直連的LSR鄰居,例如我們如果使用二層VPN等,這些應用需要跨多個設備去建立遠端的LDP Session,那麼基本的發現機制就搞不定了,需要使用擴展的發現機制。這個時候用的就不是組播而是單播了。 - 在基本發現機制中,發現鄰居非常的簡單,就是互相發送hello包後,建立TCP連接,也就是TCP三次握手即可。
- 基本發現機制的Hello特點:
①消息封裝在UDP中
②源目端口號爲646
③消息的目的IP地址爲組播地址,224.0.0.2 - 如果hello交互完成之後,要去創建TCP連接的時候,用的是TCP目的端口號爲646。
- 那麼這個TCP連接是由Transport Address大的發起,這個transport address是用來建立TCP連接使用的
LDP鄰居建立
- LDP消息類型:(以下只是類型,不是真正的協議報文)
①Discovery message 宣告和維護網絡中一個LSR的存在
②Session message 建立、維護和終止LDP Peers之間的LDP Session
③Advertisemnet message 生成、改變和刪除FEC的標籤映射
④Notification message 宣告告警和錯誤信息 (和BGP裏面的很像,都是出問題了進行報告使用的) - 華爲LDP通告原則:
①設備默認情況下只爲/32的主機前綴分配標籤
②設備產生某條前綴的標籤後,會發送給所有的鄰居。
③標籤產生情況:
1、本設備上所有/32的網絡都會產生
2、通過路由表中的目的網段的下一跳路由器收到標籤,那麼這個時候我們要發送標籤
Penultimate Hop Popping
- 在沒有使用PHP,也就是次末跳彈出之前,RTA發送數據包要去往100.1.1.1/32的數據轉發過程爲
①:RTA查看自身LIB表,將數據包根據LIB裏面的參數進行轉發,那麼就會給數據包打上MPLS的標籤爲1027
②:RTB收到RTA發來的帶着標籤的數據包的時候,不需要通過FIB然後直接通過LFIB查詢後,知道了標籤的in和out,因此就會將1027改爲1026,進行操作爲swap,然後將這個數據包發送給RTC,發給RTC之後,在沒有PHP的情況下,實際上又會進行個swap操作,然後對於RTD來說,首先需要去LFIB,看到裏面的out Label數值爲null,因此需要拆掉這個標籤,然後再通過自己的FIB進行查看,找到自己的目的地怎麼去,因此給RTD多加了一些資源耗損。【也就是RTD這臺設備所耗損的資源比其他設備要高,容易讓MPLS達到瓶頸】 - 爲了應對這種情況,PHP的作用就出現了,引入PHP技術後,在倒數第二跳此網絡中的RTC,會收到來自最後一跳的路由器RTD一個值爲3(保留)的標籤,叫做隱式標籤。這個隱式標籤給次末跳的路由器,這樣它的LFIB表裏面就會出現一個out label=3的項,在這種情況下,它知道如果要將數據發出去,需要將label進行拆除,拆除之後,RTD就只需要去查看自己FIB表就能將數據包轉到100.1.1.1/32
【注意】:如果是基於MPLS要使用QoS的話,需要考慮一個問題,就是我們的標籤實際上都需要存在,在這種情況我們需要使用顯式標籤(0)