Segment Routing筆記(一)


SR | 理論(一)

 

MPLS TE缺點

  1. RSVP-TE大部分都是為了FRR的目的
  2. 不支持ECMP
  3. 所有流量都需要在隧道里
  4. 誕生了“戰術型”TE,只在需要的時候使用。
 

術語

TI-LFA:與拓撲無關的無環路備份,能保證備份路徑的最優性即備份路徑是收斂后路徑,並且是針對每個目的地單獨計算的。特點:
- 小於50ms鏈路、節點和SRLG保護
- 100%覆蓋率
- 基於IGP自動計算
- 是PLR本地機制
- 可增量部署
- 適用於IP、LDP、SR流量

PLR:本地修復點
SRv6:把SR架構應用到IPV6數據平面稱為SRV6
LFIB:MPLS轉發表
LSD:標簽交換數據庫,用於管理本地標簽的分配。

 

SR定義

基於源路由,節點選擇路徑並引導數據包沿着該路徑轉發,做法是在數據包報頭插入帶順序的segment list,而segment可以表示任何類型的指令,轉發路徑上的節點不需要維護流狀態信息,除了源節點之外其他節點不需要存儲和維護任何流狀態信息,流量引導只在於節點。

 

segment和SID

segment是節點針對所接受到的數據包要執行的指令,包含在數據包報頭中。
SID(segment標識segment Identifier)用於標識segment,格式可自行實現。
Segment List(SID List)是segment的有序列表,每個條目是一條指令。

 

segment list支持的操作

PUSH:在SID list頭部壓入一個或多個segment,並將第一個設為活動segment;
CONTINUE:表示segment還沒處理完成,繼續保持活動狀態;
NEXT:活動segment已完成,segment列表中的下一個segment將成為活動segment;

 

全局和本地segment

全局:表示所有啟用SR的節點均質池與全局segment相關聯的指令,每個節點轉發表中均裝載全局segment的指令。
本地:只有生成本地segment的節點支持與該segment相關的指令。不一定只在本地有效

 

SR控制平面

可由IGP或BGP分發segment,、

 

IGP segment

IS-IS和OSPF都支持分發SID的擴展,IGP segment分為IGP前綴segment(IGP prefix segment)和鄰接segment(IGP Adjacency segment),分別對應IGP前綴和IGP鄰接。

 

IGP Prefix Segment

Prefix-SID是由IS-IS或OSPF通告的全局segment,特點:

  • 全局性,SR域中所有節點都知道如何處理prefix segment為活動segment的數據包
  • 多跳的,並且允許使用跨多跳ECMP
  • 支持ECMP
  • 由動態路由協議自動維護和計算
  • 自動50ms保護

要求:prefix-SID全局唯一的,最典型的是分配Loopback地址,使用的是SPF的最短路徑算法,但支持松散最短路徑和嚴格最短路徑兩種模式。一個算法中一個prefix只能關聯一種prefix-SID。

 

IGP節點segment

Node segment Node-SID,也是一種IGP prefix segment,通常用於該節點環回地址的主機前綴,類似路由器ID
Node-SID是prefix-SID的子類型,所以二者的指令相同,不同點在於Node-SID僅與主機前綴相關聯,即N-flag被置位,其他被通告時不會有該指示。

 

IGP anycast segment

域中多個節點上分配相同的單播前綴,該單播前綴構成anycast segment,該前綴在語法上和單播IP前綴無區別,Anycast-SID是與anycast前綴相關聯的特殊類型IGP prefix segment,Anycast segment是Prefix segment的子類型,因此指令相同。不標識特定節點,而是標識一組節點。通告時N-flag`不置位。
一個prefix-SID即使關聯到一個loopback地址上的主機前綴也不一定總是標識一個節點,也可能是一個anycast-SID

 

IGP Adjacency Segment

Adj-SID單向鄰接segment,指令為“引導流量由與該segment相關聯的鄰接鏈路(集合)轉發出去”而不再遵循最短路徑如何。
一般Adj-SID用於通告它的節點的本地segment。雖然協議允許全局,但一般用在本地使用。

可以給一條特定的鏈路分配多個Adj-SID,使得每個Adj-SID具有不同的屬性。

Adj-SID只能被始發它的路由器識別。但不支持ECMP。

 

二層Adj-SID

用於引導流量到單個LACP成員組的一個成員鏈路上。

 

組Adj-SID

group Adj-SID用於實現ECMP的方式下在組內鏈路上轉發流量

 

BGP Prefix segment

BGP Prefix-SID與BGP前綴相關聯,屬於全局segment,指令為“引導流量沿着支持ECMP的BGP多路徑去往該segment相關聯的前綴”。BGP prefix-SID可以把流量負載均衡到可用的BGP多路徑上。

 

BGP anycast segment

效果與IGP anycast segment效果相同,簡寫為BGP Anycast-SID。

 

BGP 對等體segment

與BGP peer特定鄰居或一組鄰居相關聯,為本地segment。通常由BGP speaker分配給其對等體會話,並通過BGP通告出去。

還有BGP 對等體節點segment,對等體鄰接segment。

 

SR數據平面

SR的MPLS數據平面利用MPLS架構,SID表現為MPLS標簽或MPLS標簽中的索引。segment列表在MPLS數據包中被表示為MPLS標簽棧。

SR的IPV6數據平面被稱為SRv6,在SRv6中,segment體現為IPv6地址,SRv6無需網絡支持MPLS就可以提供SR功能。

SID在數據平面被編碼為MPLS標簽,在SR中前綴到FEC的映射方式與傳統MPLS基本相同,唯一的區別為對應該FEC的標簽是從Prefix-SID(IGP/BGP作為信令協議)獲得,而不是從LDP分發獲得。

 

SRGB

SR的全局塊SRGB是用於全局segment的SID集合。SID是一個標簽值或標簽塊的一個索引,本地segment的SID是本地標簽值,而全局segment的SID是全局唯一的索引。SRGB是給特定節點分配全局segment的一個本地標簽集合
每個節點都可獨立決定分配SRGB的預留范圍。

SID索引從0開始,指向每個節點本地SRGB中的一個本地標簽值,一般SRGB中的第一個標簽值加上SID索引數字,就可計算出全局segment的本地標簽值。

SRGB只本地有效,所以每個節點需向其他節點通告它的SRGB。但SRGB不適用於本地segment,SID也是SRGB外的標簽范圍分配的。

 

SR MPLS標簽棧操作

segment列表 MPLS標簽棧
PUSH PUSH
CONTINUE SWAP
NEXT POP
 

倒數第二跳

倒數第二跳彈出會導致MPLS的EXP(SR中稱為TC字段)在倒數第二跳被彈出,導致COS信息無法到達最后一跳節點,解決方案為倒數第二跳將頂層標簽交換為顯式空標簽,而不是彈出。代價就是最后1跳必須先彈出空標簽,再進行二次查找。

 

最后一跳

該跳可以是不帶任何標簽,直接按照報頭進行查找。

 

Adj-SID和MPLS

Adj-SID的MPLS標簽動作總是彈出,和Prefix-SID的倒數第二跳不同。
Adj-SID與鄰接相關聯,而不是和前綴相關聯。因此流量不會自動被壓入Adj-SID標簽。Adj-SID被用於引導流量到特定鏈路,不管是不是最短,比如TI-LFA,SRTE

 

MPLS TTL和TC/EXP

 

MPLS標簽格式
MPLS標簽格式

 

  • LABEL: 20bit標簽值;
  • TC: 3bit TC字段,也叫EXP位;
  • TTL:8bit TTL字段;
  • S:1bit 是否棧底;

當SR MPLS域在入口收到去往隧道的報文,壓入Perfix-SID標簽,並將IP TTL減一后復制到MPLS標簽的MPLS TTL字段,或把MPLS TTL字段設置為255,默認是復制(可通過命令改變默認行為),在壓入多個標簽時(TE, TI-LFA,L3VPN等)所有標簽的MPLS TTL都一樣,都是從IP TTL復制來的。可選擇對本地生成數據包有效,也可選擇對轉發的數據包有效。
MPLS TTL

當最后一個標簽被彈出且IP報頭暴露時,默認行為是將MPLS TTL減一后再將其復制到IP TTL(僅當MPLS TTL小於IP TTL時才會發生,防止環路導致IP TTL不會遞減到0),也可配置不復制,這樣數據包在MPLS網絡中的所有跳數不會被計入。

 

MPLS到MPLS 的TTL

 

交換

 

交換
交換

入向頂層標簽被交換的話,默認只有頂層的標簽MPLS TTL減一

 

 

交換+壓棧

 

交換+壓棧
交換+壓棧

入向頂層被交換同時有一個或多個標簽被壓入,則頂層標簽的MPLS TTL減一,然后復制到交換之后的MPLS TTL字段以及 所有新壓入標簽的MPLS TTL字段

 

 

彈出

頂層標簽要被彈出,則頂層MPLS TTL減一后復制到新暴露出標簽的MPLS TTL字段,僅當頂層MPLS TTL小於新暴露標簽的MPLS TTL值時才會發生。
彈出

 

MPLS TC/EXP

當入向數據包壓入一個或多個標簽時,默認將IP報頭的優先級復制到所有新壓入標簽的MPLS TC字段,如果IP DSCP的6個比特都被占用了則將DSCP的前三個比特復制。
當彈出最后一個標簽時,默認不會將MPLS TC字段復制到暴露出的IP優先級或DSCP位。
當頂層標簽被交換時,則MPLS TC字段復制到交換后的標簽上。
當頂層標簽被交換且又有新壓入的標簽時,則頂層標簽的TC字段復制到交換后的和新壓入的。
當彈出時,默認頂層TC字段不會復制到新暴露出的TC字段。

 

MPLS 負載均衡

為實現用數據包的MPLS報頭下的IP頭負載均衡,設備需要深入數據包報頭中查看,不同設備可以深入的能力不一樣,如果標簽棧過深則會有一定影響。

 

MPLS MTU

PTU(Protocol Data Unit)規定了該協議層最大數據包,如二層以太網MTU為1514字節(二層頭開銷14字節,三層1500字節,不含前導碼、幀定界符、FCS等)。而PPP/HDLC則二層開銷為4字節。

所有接口IP MTU默認1500字節,而MPLS MTU默認也是1500,單個MPLS頭4字節。為保持IP MTU的默認,則MPLS MTU要增加4*N字節。N為MPLS報頭中最大標簽數量。最后應用到接口上還必須增加二層MTU。

為考慮到Jumbo幀,還經常使用9216字節。

 

SRGB

SRGB用於指定全局Segment標簽范圍,SRGB范圍的大小在SR域中所有節點上應當相同,否則受限於最小的范圍。SRGB大小決定了全局segment的SID索引的最大值。

思科默認16000-23999,共8000個segment。可修改

 

SRGB與anycast segment

同一anycast集合中的所有節點應適用相同SRGB來簡化操作。最好網絡中使用相同的SRGB。

SRGB為節點屬性,與SR協議無關,修改SRGB會導致流量中斷

SGRB配置的優先級應用順序:每個IGP實例的配置>全局配置>默認
BGP僅使用全局SRGB,無默認值,必須顯式的配置。

標簽空間默認划分范圍:
0~15:特殊用途保留
16~15999:靜態MPLS
16000~23999:默認SRGB
大於24000,用於動態標簽分配

動態標簽的例子:LDP 、RSVP、L2VPN、BGP、TE、 ISIS、OSPF
在路由器啟動時,LSD會優先讓SR的控制平面協議(ISIS, OSPF和BGP)優先發起注冊,並執行SRGB的分配。

LSD首先等待SR協議客戶端去注冊,比如ISIS或OSPF,等他們激活分配標簽后,再為其他MPLS應用分配本地標簽。

  1. 每個節點保留一個范圍的本地標簽,用於全局segment的SGRB
  2. Prefix-SID是SRGB中的唯一索引
  3. 前綴始發節點使用Prefix-SID通告索引

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM