SRv6技術研究和組網設計

一、SRv6技術簡介

SRv6全稱爲Segment Routing IPv6,是當下最爲熱門的Segment Routing和IPv6兩種網絡技術的結合體,兼有前者的靈活選路能力和後者的親和力,以及SRv6特有的設備級可編程能力,使其成爲IPv6網絡時代最有前景的組網技術。

IPv6大家都很熟悉,是取代IPv4的下一代網絡協議,那Segment究竟是何物?可以把SRv6網絡想象成一臺分佈式“計算機”,Segment列表好比程序,Segment就是指令,兼有尋址和行爲能力。我們可以將用戶意圖翻譯成Segment列表,並附在數據報文中,輸入SRv6網絡“計算機”,然後依次在不同的節點上執行Segment指令,比如切換到下一個Segment、壓入或彈出Segment列表、關聯L2/L3 VPN等,從而實現基本選路、VPN、OAM、Service Chaining、APN6(App-aware IPv6 Networking)等不同層面的功能。

在SDN組網中,由控制器負責編排和下發Segment列表,實現智能選路的目的。隨着SRv6技術和協議的完善,網絡設備編程能力的提高,有望通過SDN+SRv6定義一切網絡功能,引領我們邁入智能網絡世界。

二、SRv6編程框架

(一)SRv6 SID

SRv6中通過SID(Segment ID)標識每個Segment,SID是一種特殊的IPv6地址,既有普通IPv6地址的路由能力,又有SRv6特有的行爲能力。

每個SRv6節點都會維護一張SID表(實際上是路由表的一部分),由許多128bit的SID組成,SID標準格式爲Locator+Function(Args),如下所示:

Locator,標識SRv6節點的定位器,每個節點起碼有一個全局唯一的Locator值,作爲本地SID的共享前綴,其他節點通過Locator路由訪問本節點SID。

Function(Args),標識SRv6節點內不同的行爲,比如END、END.X等,少數行爲還需要傳遞Args參數。

SRv6節點收到IPv6報文之後,會根據IPv6 DA(Destination Adddress)查找全局路由表,如果匹配到某個SID,則交由SID定義的行爲或Behavior處理,否則執行常規的路由轉發動作。

(二)SRv6 Policy

SRv6 Policy是一種將用戶意圖(SLA、服務鏈)翻譯成網絡策略的機制,內核爲Segment列表。網絡節點和終端設備都可以按需發起或者由控制器下發SRv6 Policy,中間節點無需維護任何狀態,因此SRv6 Policy適用於任意規模的網絡互聯和終端通訊場景。

SRv6 Policy由多個Candidate Path(簡稱CP)構成,其中有一個爲Active CP,決定整個SRv6 Policy的行爲和狀態,基本格式如下:

Java

 

1

2

3

4

5

6

<headend, color, endpoint>

Candidate-path CP1 <protocol-origin, originator, discriminator>

B-SID

Preference 200

Weight W1, SID-List1 <SID11...SID1i>

Weight W2, SID-List2 <SID21...SID2j>

SRv6 Policy由<Headend, Color, Endpoint>三元組唯一標識,Headend和Endpoint對應頭尾節點的IPv6地址,通過Color參數區分兩者之間的不同SRv6 Policy。Color是概括SRv6 Policy服務能力的標籤,比如SLA級別(金銀銅牌等),用戶通過設置自己的Color,就能自動關聯到相同Color的SRv6 Policy上,實現用戶意圖到底層網絡的映射。

Candidate Path由<protocol-origin, originator, discriminator>三元組唯一標識,protocol-origin爲CP的發起協議,比如BGP SR Policy或手工配置等,originator爲發起者的標識,格式爲 ASN: node-address,discriminator用於區分protocol-origin +originator下發的不同CP。CP攜帶Preference、B-SID、Segment-List等屬性,含義如下:

  • Preference,標識CP的優先級,用於抉擇同一SRv6 Policy下的不同CP,優先級最高的成爲Active CP;
  • B-SID,標識CP或SRv6 Policy(Active CP)行爲的SID,其他節點通過B-SID引用SRv6 Policy的功能;
  • Segment-List,標識CP的Segment列表,由Weight和多個順序排列的Segment子屬性組成,一個CP可以有多個Segment-List,根據Weight分擔流量。

在SRv6 Policy之前,我們主要用TE Tunnel實現流量工程,那麼爲何SRv6中會主推SRv6 Policy呢?原因如下:

  • 組網能力,TE Tunnel本質上是一種重量級的傳統接口,會消耗設備的接口資源,無法支持太大規模的組網;SRv6 Policy本質上是一種輕量級的對象,數據結構非常簡單,不佔用設備的接口資源,能夠支持超大規模的組網;
  • 引流能力,TE Tunnel採用粗放的DSCP引流方式,難以直觀準確的反映用戶意圖;SRv6 Policy採用精細的Color引流方式,能夠如實反映和滿足用戶訴求;
  • 開放能力,TE Tunnel只能爲節點自己所用,而SRv6 Policy通過對外暴露B-SID,可以在隱藏內部實現的前提下,爲其他節點或機構提供選路、服務鏈等能力;
  • 業務能力,TE Tunnel本身沒有直接的業務描述能力,需要組合應用多個TE Tunnel和其他的技術才能滿足業務需求;SRv6 Policy是完全自洽和業務特徵相關的,本身集成了多路徑、SLA標籤、行爲處理等能力,單個SRv6 Policy就可以滿足業務的網絡需求。

由此可見,在SRv6 Policy各方面都完勝TE Tunnel,就是一種爲Segment Routing量身定製的網絡技術,可以說SRv6的強大能力大部分是通過SRv6 Policy輸出的。

(三)SRH

SRH(Source Routing Head)爲SID列表的載體,基於IPv6路由擴展頭(協議號43),新增路由類型4,是SRv6體系中最爲重要的數據封裝標準,具體格式如下:

Segment[n-1]...Segment[0]組成了完整的Segment列表或路徑,SL(Segment Left)指示當前活躍的Segment。頭節點SL=n-1,IPv6 DA=Segment[n-1],中間節點收到IPv6報文,如果IPv6 DA爲節點本地SID,則進入SRH處理流程。暫不考慮具體SID,SRH基本行爲如下:

Java

 

1

2

3

4

5

6

7

8

9

10

S01.  IF SL==0{

S02.    繼續處理SRH指示的下一個擴展頭

}

S03.  ELSE{

S04.    IF 本地配置要求TLV處理{

S05.      處理TLV

}

S06.    SL=SL-1,Segment[SL]複製到IPv6 DA

S07.    IPv6路由轉發

}

標準SRH封裝中,每個SID佔用16bytes,對於長Segment列表的應用,需要考慮封裝開銷對MTU和傳輸效率的影響。業界也在研究可行的SRH壓縮方法,比如G-SRH(Generalized SRH)、uSID(Micro SID)等。
SRH還能攜帶可選的TLV參數,以擴展支持NSH/Service Chaining、OAM、VTN(Virtual Transport Network)、APN6等高級特性。

(四)SRv6 Behavior

SRv6網絡編程標準中,SRv6節點(Endpoint)通過本地定義的行爲(Behavior)處理SRv6報文。SRv6定義了多種Endpoint Behavior,每個節點需要實例化它們和分配SID,並通過路由協議公佈,以便外部瞭解節點所能提供的Behavior。

常用的Endpoint Behavior有END、END.X、END.DT4、END.DT6等,實現Underlay選路、Overlay業務承載等功能,具體如下:

  • END用於標識SRv6節點,具體行爲還跟附加的USP(Ultimate Segment Pop)、PSP(Penultimate Segment Pop)、USD(Ultimate Segment Decapsulation)等Flavor有關係,分別代表最後一跳彈出SRH、倒數第二跳彈出SRH、最後一跳解封裝,以滿足不同的路徑編排需求。假設收到一個IPv6報文,IPv6 DA爲本節點END SID with PSP,處理流程如下:

S01. IF SL==0{ #無SRH等同於SL爲0
S02. 向IPv6 SA(Source Address)發送ICMP Parameter Problem,結束
}
S03. SL=SL-1,Segment[SL]複製到IPv6 DA
S04. IF SL==0{
S05. 將前一個報文頭中的NH更新爲SRH中的NH,彈出SRH擴展頭
}
S06. IPv6路由轉發

  • END.X用於標識SRv6鄰居,具體行爲也跟Flavor有關。假設收到一個IPv6報文,IPv6 DA爲本節點END.X SID with PSP,處理流程與END相似,區別在於S06:

S06. 轉發給END.X指定的鄰居

  • END.DT4用於標識SRv6節點的IPv4 VPN路由表。假設收到一個IPv6報文,IPv6 DA爲本節點END.DT4 SID,處理流程如下:

S01. IF SL!=0{
S02. 向IPv6 SA發送ICMP Parameter Problem,結束
}
S03. 剝離外層IPv6頭以及所有擴展頭
S04. 根據END.DT4 SID關聯的路由錶轉發內層IPv4報文

  • END.DT6用於標識SRv6節點的IPv6 VPN路由表。假設收到一個IPv6報文,IPv6 DA爲本節點END.DT6 SID,處理流程與END.DT4相似,區別在於S04:

S04. 根據END.DT6 SID關聯的路由錶轉發內層IPv6報文

  • END.B6.Encaps屬於一種SRv6 Policy B-SID實例,爲原始SRv6報文添加外層封裝。假設收到一個IPv6報文,IPv6 DA爲本節點END.B6.Encaps SID,處理流程如下:

S01. IF SL==0{
S02. 向IPv6 SA發送ICMP Parameter Problem,結束
}
S03. SL=SL-1
S04. 添加外層IPv6報文頭+SRH B,B對應SRv6 Policy的Segment List
S05. 外層IPv6 SA設置爲A,IPv6 DA設置爲B的第一個Segment,
S06. IPv6路由轉發

  • END.B6.Insert屬於另一種SRv6 Policy B-SID實例,爲原始SRv6報文插入SRH。假設收到一個IPv6報文,IPv6 DA爲本節點END.B6.Insert SID,處理流程如下:

S01. IF SL==0{
S02. 向IPv6 SA發送ICMP Parameter Problem,結束
}
S03. 插入SRH B,B對應SRv6 Policy的Segment List
S04. IPv6 DA更新爲B的第一個Segment
S05. IPv6路由轉發

每個Behavior都有對應的16bit Code Point,比如End with PSP爲0x0002、End.DT4爲0x0013等,路由協議會同時攜帶SID和Endpoint Behavior Code Point信息,這樣就能判斷出SID的具體含義。

前面提及END.B6.Encaps、END.B6.Insert都屬於SRv6 Policy B-SID實例,其他節點通過B-SID引用,具體行爲由SRv6 Policy實現,兩者關係如下:

同時Headend也可以直接調用SRv6 Policy封裝報文,主要Behavior有H.Encaps,H.Insert等,可用於L2/L3 VPN、FRR(Fast Reroute)、端到端IPv6通訊等場景,具體如下:

    • H.Encaps用於爲VPN或者原始IP報文添加外層IPv6+SRH隧道封裝。假設某VPN IPv6報文P下一跳爲END.DT6 VPN SID X,SRv6 Policy爲(S3,S2,S1),處理流程如下:

S01. 爲IPv6報文P添加一個外層IPv6報文頭+SRH(X,S3,S2,S1;SL=3)
S02. 外層IPv6 SA=T,IPv6 DA=S1,Next-Header=IPv6
S03. IPv6路由轉發

    • H.Insert用於爲IPv6報文添加SRH擴展頭。假設報文P的IPv6 DA爲B2,SRv6 Policy爲(S3,S2,S1),處理流程如下:

S01. 爲IPv6報文P插入SRH(B2,S3,S2,S1;SL=3)
S02. IPv6 DA設置爲S1
S03. IPv6路由轉發

三、SRv6技術架構

前面介紹了SRv6的基本概念,知道了SRv6 Policy是滿足用戶意圖的關鍵途徑。接下來就面臨一個現實問題,如何將用戶意圖自動轉換成SRv6 Policy,並下發給SRv6節點,這需要一個完整的技術架構和配套的網絡協議集,典型的SRv6組網結構如下:

基於標準的控制器、轉發器兩層SDN技術架構,兩者之間通過南向協議交互,具體如下:

  • 控制器,相當於中央處理器,掌握全網拓撲、實時流量、SRv6 SID等信息,負責將用戶意圖翻譯成SRv6 Policy,並通過南向協議下發給轉發器;
  • 轉發器,負責路由計算和SRv6 Policy封裝轉發,一方面要運行ISIS計算Underlay路由及SID,運行BGP EVPN計算Overlay路由及SID,並將Overlay路由迭代到合適的SRv6 Policy上,另一方面還要向控制器彙報Underlay網絡和SRv6 Policy狀態;
  • 南向協議,控制器和轉發器之間運行多種南向協議,最重要的是BGP-LS和BGP SR Policy,前者負責將轉發器的鏈路狀態轉換成BGP-LS消息,以及SRv6 Policy的狀態上報給控制器,後者將控制器編排好的SRv6 Policy下發給轉發器。

通過以上技術的整合,SRv6技術架構可以實現用戶意圖驅動、智能流量調度、全方位可視化等一系列功能。

四、SRv6轉發器技術

(一)ISIS

ISIS屬於鏈路狀態IGP路由協議,採用TLV攜帶鏈路狀態信息,可以在不動協議主體的情況下,通過增加部分TLV類型就可以支持IPv6、SRv6等新協議特性。

爲了支持SRv6協議,ISIS需要增加SRv6 Capabilities、SRv6 Locator、SRv6 End SID、SRv6 Adjacency SID等不同Level的TLV,節點所有SID共享SRv6 Locator TLV中定義的前綴。

Locator前綴同時通過MT Reachable IPv6 Prefixes TLV發佈,保證非SRv6節點也能計算出前綴路由,通過該路由就能滿足SID轉發需求。但節點在計算FRR或防微環,以及控制器編排路徑時,需要計算使用END、END.X等具體SID。

(二)BGP EVPN

BGP EVPN(Ethernet VPN)是一種MP-BGP協議實例,AFI/SAFI爲25/70,支持豐富的NLRI(Network Layer Reachable Information)路由類型,比如交換MAC或IRB的Type2路由,交換Prefix網段的Type5路由,兼具L2/L3 VPN、IPv4/v6路由交換能力,能適配VxLAN SDN、骨幹網SDN、分支SDWAN等不同的組網場景。

以骨幹網SRv6 VPN組網爲例,BGP EVPN需要攜帶NLRI+BGP Prefix-SID+Color等SRv6相關信息。Type5 NLRI用於交換用戶L3VPN路由,取代VPNv4/v6地址簇的作用,BGP Prefix-SID通過SRv6 L3 Service TLV,攜帶END.DT4/6 VPN SID,Color屬性用於關聯EVPN路由和SRv6 Policy。

(三)SRv6 FRR

路由協議收斂時間一般爲秒級,無法滿足某些苛刻應用的要求。於是出現了各種IP FRR技術,基本思路都是爲受保護的路由提供備用路徑,在新路由生效前,通過備用路徑轉發流量,將中斷時間降到毫秒級。IP FRR技術對於高可靠的SRv6 Policy組網尤爲重要,雖然也可以依靠SRv6 Policy自身檢測故障(BFD或Segment有效性)和切換CP,但擴展性和靈活性都不及IP FRR。

IP FRR技術發展經歷了LFA(Loop-Free Alternate)、RLFA(Remote LFA)、TI-LFA(Topology-Independent LFA)三個時代,直到SRv6出現後,SRv6+TI-LFA才簡單有效的解決了所有IP FRR問題。

LFA是最基礎的IP FRR技術,目的是尋找一個直連的備用節點,該節點到目標節點不會經過故障鏈路或節點。比如從源節點S到目標節點D,主用下一跳爲E,組網和鏈路COST如下:

LFA具體算法如下:

  • S計算自己以及鄰居N(包括E)到所有節點的距離D_opt,如果N滿足D_opt(N, D) < D_opt(N, S) +D_opt(S, D),就是符合鏈路保護條件的備用下一跳節點;
  • 如果N還滿足D_opt(N, D) < D_opt(N, E) + D_opt(E, D),同時也是符合節點保護條件的備用下一跳節點;
  • 受組網結構和COST數值的限制,可能無法計算出合適的備用下一跳,導致LFA失敗。

RLFA是最經典的IP FRR技術,目的是尋找一個非直連的中間備用節點,彌補LFA技術的不足,從源節點到備用節點,以及從備用節點到目標節點都不會經過故障鏈路或節點,組網和鏈路COST如下:

RLFA具體算法如下,簡單起見未考慮節點故障情形:

  • 計算擴展P空間,要求從S正常鏈路直連的鄰居N到P的最短路徑不經過故障鏈路。S會計算自己以及鄰居N(包括E)到節點P的距離D_opt(S, P)和D_opt(N, P),輸出滿足D_opt(N, P) < D_opt(N, S) + D_opt(S, P)的P空間,當然也包括S和N。上圖中,P空間爲<S, N, A, B>;
  • 計算Q空間,要求從Q到D的最短路徑不經過故障鏈路。S會計算自己到節點Q的反向距離D_opt(Q, S),輸出滿足D_opt(Q, D) < D_opt(Q, S) + D_opt(S, D)的Q空間,當然也包括D。上圖中,Q空間爲< A, B, E, D>;
  • 計算PQ空間,取P空間和Q空間的交集,優選一個離S最近的PQ節點,如果兩者非直連,需要建立S到PQ的隧道,作爲備用路由出接口封裝,下一跳爲直連鄰居N。上圖中,PQ空間爲<A, B>,優選A節點。

TI-LFA在RLFA算法的基礎上,增加了收斂後SPF路徑的約束,並通過PQ Repair-List解決PQ無交集的問題,組網和鏈路COST如下:

SRv6 TI-LFA具體算法如下:

  • S計算刨除故障鏈路的收斂後SPF路徑,根據RLFA計算P空間和Q空間,輸出在收斂後SPF路徑上的P空間和Q空間;上圖中,分別爲<S, N, A>和< B, D>;
  • 如果PQ空間有交集,則選擇距離S最遠的PQ節點,S節點H.Encaps原始報文,外層IPv6 DA爲PQ END with USD SID;
  • 如果PQ空間無交集,則選擇距離S最遠的P節點,以及最近的Q節點,S節點H.Encaps原始報文,外層IPv6 DA爲PQ互聯END.X with USD SID,如果PQ不相鄰則需要插入Segment列表。

對於SRv6 Policy,IPv6 DA在不斷的切換,爲防止IPv6 DA對應節點的故障導致IP FRR失敗,需要在IP FRR基礎上加入中間和尾端節點故障處理機制,具體如下:

大意就是,SRv6 Policy中間節點故障採用Bypass跳過,極端情況下退化成SRv6 BE,尾端節點故障採用Anycast或Mirror SID規避。

IP FRR主要解決路由收斂之前轉發間斷問題,但各SRv6節點路由收斂速度不一會導致微環路產生,其實這是所有IP路由協議的共性問題。在SRv6防微環組網中,節點路由收斂分爲兩個階段,第一階段對於那些由於故障發生或恢復需要更新的路由表項,以嚴格或鬆散Segment列表作爲臨時轉發表項,防止形成微環路,第二階段保證所有節點完成路由收斂的前提下,切換到常規路由表項。

綜合IP FRR、中間和尾端節點保護、防微環等技術,就能構建出真正高可靠的TI-LFA SRv6網絡。

五、SRv6南向協議

(一)BGP-LS

BGP-LS(BGP Link State)也是一種MP-BGP協議實例,AFI/SAFI爲16388/71。BGP-LS將底層網絡鏈路狀態信息(ISIS)抽象成Node、Link、Prefix三類NLRI上報給控制器,分別描述節點能力、鄰居關係、IP前綴信息,控制器據此還原網絡拓撲和計算路徑。同時爲了支持跨域組網,BGP-LS還擴展了BGP EPE(Egress Peer Engineering)功能,將EBGP鄰居關係鏈路狀態化,從而在控制器層面打通不同AS的鏈路狀態數據。

BGP-LS主要通過NLRI+Attribute組合攜帶鏈路狀態數據,爲了支持SRv6特性,需要增加Node NLRI的SRv6 Capabilities、Link NLRI的SRv6 End.X SID、Prefix NLRI的SRv6 Locator等TLV,另外還要新增SRv6 SID NLRI類型,附屬SRv6 End SID、SRv6 End.X SID、SRv6 BGP Peer Node SID等TLV。

除了翻譯拓撲功能,BGP-LS還可以上報SRv6 Policy狀態和B-SID,以取代PCEP協議,避免控制器和轉發器異構引發的兼容性問題。

(二)BGP SR Policy

在SDN組網中,控制器可以通過BGP SR Policy向轉發器下發SRv6 Policy。BGP SR Policy同樣基於MP-BGP協議,AFI/SAFI=2/73,SRv6 Policy的信息主要由NLRI和Tunnel_Encapsulation屬性承載。

NLRI用於攜帶SRv6 Policy和Candidate Path信息,格式爲<Length, Distinguisher, Color, Endpoint>,對應關係如下:

  • SRv6 Policy,<Headend, Color, Endpoint>,Headend就是SRv6 Policy的接收者,加上NLRI的Color+Endpoint,形成完整的SRv6 Policy標識;
  • Candidate Path,<protocol-origin, originator, discriminator>,protocol-origin就是BGP SR Policy,originator是BGP Router ID,discriminator對應NLRI的Distinguisher,用於區分同一SRv6 Policy的不同CP,形成完整的CP標識。

Tunnel_Encapsulation,用於攜帶Candidate Path的各種屬性,比如Preference、B-SID、Segment-List等,並以層次化TLV的形式表示。

如何把BGP SRv6 Policy精準的下發給頭端節點呢?跟控制器與轉發器的BGP連接方式有關,具體如下:

  • RR組網,控制器給SRv6 Policy附加RT=Headend:0,通過RR中轉,轉發器收到之後檢查RT值,如果一致則導入SRv6 Policy;
  • 直連方式,控制器直接將SRv6 Policy發給轉發器,附加no_advertise community,轉發器收到後自用,不轉發給任何鄰居。

相比於PCEP,使用BGP下發SRv6 Policy具備更好的兼容性和擴展性,理論上可以支持跨廠商的SRv6 Policy對接,和百萬級SRv6 Policy的部署規模。

六、SRv6組網設計

(一)總體組網規劃

下面基於金融骨幹網現狀和業務需求,探索如何採用SRv6升級骨幹網技術架構。

骨幹網由三個核心節點、數十個一級節點構成,爲總分行提供就近接入和高速轉發服務,根據通用SRv6技術架構要求,總體組網規劃如下:

採用標準的控制器+轉發器兩層SDN組網,控制器負責智能選路,通過南向協議下發SRv6 Policy,轉發器負責執行Segment指令和報文轉發。

(二)轉發器技術規劃

轉發器分爲PE、P、RR等角色,採用ISIS作爲Underlay路由協議,使能IPv4/v6多拓撲,網絡拓撲和路由計算相互獨立,同時啓用SRv6擴展,交換SRv6 SID信息。

SRv6 SID格式爲Locator+Function,Locator長度爲112bit,其中前96bit爲共同前綴,後16bit爲節點數值,Function長度爲16bit,其中靜態Function爲::00[01-FF],動態Function爲::[0-F][1-F][00-FF]。END、END.X由節點動態生成,在ISIS中關聯Locator後,ISIS會自動發佈Locator和SID信息。ISIS還要啓用TI-LFA和Micro Loop Avoid,以提高SRv6網絡的收斂性能和健壯性。

PE採用BGP EVPN作爲Overlay路由協議,基於Loopback IPv6地址建立域內BGP EVPN Peer,並選用SRv6隧道封裝。用戶VPN路由通過BGP EVPN Type5 NLRI+ BGP Prefix-SID發佈,後者對應END.DT4/6 VPN SID。

假設PE已經從控制器收到SRv6 Policy,BGP EVPN路由會根據Color+Nexthop迭代到正確的SRv6 Policy上,數據平面調用H.Encaps Behavior封裝VPN報文,SRH=SRv6 Policy Segment List+VPN SID,外層IPv6 SA=PE Loopback,IPv6 DA=Segment[n-1]。如果沒有收到SRv6 Policy,則採用SRv6 BE轉發,外層IPv6 SA=PE Loopback,IPv6 DA=VPN SID。無論哪種方式,目標PE收到報文後,根據IPv6 DA定位到VPN,剝離SRv6封裝,查找VPN路由錶轉發。

(三)南向協議規劃

控制器與轉發之間用到SNMP、NETCONF、BGP-LS、BGP SR Policy等多種南向協議,這裏重點介紹BGP-LS、BGP SR Policy的規劃。

RR與控制器之間建立BGP-LS Peer,將ISIS的鏈路狀態信息轉換後上報控制器。RR與PE之間也要建立BGP-LS Peer,將PE傳遞過來的SRv6 Policy狀態反射給控制器。

控制器與RR之間建立BGP SR Policy Peer,將SRv6 Policy下發給RR,RT爲Headend:0。RR與PE之間也要建立BGP SR Policy Peer,將SRv6 Policy反射給PE,PE收到後根據RT導入自己始發的SRv6 Policy。

(四)控制器規劃

骨幹網上傳輸的流量根據業務類別和安全等級,分爲STORAGE、INTRANET、EXTRANET三類,由相應的SRv6 Policy承載。控制器定期根據網絡拓撲和流量分佈,計算更新SRv6 Policy路徑,通過BGP SR Policy下發給PE轉發器,實現智能流量調度的目的。

一開始可以採用基於SRv6 Policy維度的簡單調度策略,具體如下:

PE分爲AB平面,同平面PE之間兩兩建立STORAGE、INTRANET、EXTRANET三類Policy,每個Policy初始包含1條嚴格路徑。

以北京節點PE-A爲例,控制器初始下發的路徑如上圖實線所示。PE-A根據VPN路由的<color, nexthop>,將業務流量映射至對應SRv6 Policy上轉發。

轉發器通過Telemetry實時上報接口流量信息,控制器會定期運行全局調優算法,綜合線路利用率、SPF路徑、SRv6 Policy優先級等多個因素,更新部分SRv6 Policy的Segment列表,並通過BGP SR Policy下發給PE-A,將相關SRv6 Policy上的流量遷移至其他低利用率線路上,路徑如上圖虛線所示。

如果某個節點或者鏈路故障,首先會觸發SRv6 FRR,保證SRv6 Policy流量基本不中斷,然後由BGP-LS上報鏈路狀態變化,控制器收到後觸發局部故障調優,爲受影響的SRv6 Policy選擇其他正常路徑,最後等到全局調優週期,站在全網角度優化SRv6 Policy路徑。

之後在控制器支持的情況下,可以升級爲基於Segment List維度的複雜調度策略,具體如下:

PE分爲AB平面,同平面PE之間兩兩建立STORAGE、INTRANET、EXTRANET三類Policy,每個Policy初始包含4條等價SL(部分SL路徑可能重複)。

以北京節點PE-A的INTRANET SRv6 Policy爲例,控制器初始下發的路徑如上圖實線所示。PE-A根據VPN路由的<color, nexthop>,將業務流量映射至對應SRv6 Policy的4條SL上負載均衡轉發。

全局調優和故障調優基本思路與上一種策略類似,區別在於轉發器要上報Segment List顆粒度的流量信息,控制器要基於SRv6 Policy和Segment List兩個維度算路,根據計算結果更新SRv6 Policy內部某些Segment List,並通過BGP SR Policy下發給PE-A,將這些Segment List上的流量遷移至其他低利用率線路上,路徑如上圖虛線所示。

(五)多域組網升級

前面採用了單域SRv6 Policy組網設計,由單個ISIS提供骨幹網鏈路狀態數據,經BGP-LS上報控制器,控制器進行域內算路並下發至轉發器。單域組網對網絡規模、線路類型都有一定的限制,還涉及骨幹網與接入網Option A跨域互聯的問題,導致大量VPN和路由策略重複配置,另外將SRv6侷限於骨幹網,無法發揮SRv6 Policy端到端的價值,因此有必要從單域升級爲多域組網,具體規劃如下:

骨幹網收縮爲三個核心節點,僅由P和RR角色組成,P不感知業務和VPN,僅根據IPv6 DA路由轉發,RR除了承擔BGP-LS、BGP SR Policy基本功能之外,還要負責骨幹網P設備Underlay和接入網PE設備Overlay路由的分發和策略控制,相當於二級控制器。

接入網爲總分行各自轄內通道互聯網絡,核心由原骨幹網的2臺PE組成,與骨幹網RR之間建立EBGP Peer,交換EVPN、BGP-LS、BGP SR Policy等地址簇路由,並保持Nexthop不變。

骨幹網和接入網之間Underlay跨域互聯,通過EBGP交換Underlay IPv4/v6路由,其中包括SRv6 Locator路由。同時雙方還要使能BGP EPE,將Underlay鄰居連接通過BGP-LS上報給控制器。

控制器通過BGP-LS收集骨幹網、接入網的鏈路狀態數據,結合BGP EPE的鄰接信息,拼接出骨幹網+接入網完整的網絡拓撲,其他算路和SRv6 Policy下發過程同單域組網。

七、總結

目前業界和用戶對於SRv6的研究和應用還處於價值探索的初始階段,受益於國內IPv6規模部署行動的成果,用SRv6取代SR-MPLS已成爲大家的共識,也是水到渠成的事情。

風物長宜放眼量,SRv6 Policy組網和智能流量調度只是SRv6的基礎應用,後續我們還要將SRv6拓展到VTN切片網絡、分支機構SDWAN、應用驅動APN6、Service Chaining等更多更廣的領域,可謂路漫漫其修遠兮,還需要大家一起求索。

參考文獻:
https://tools.ietf.org/html/rfc8754
https://tools.ietf.org/html/draft-ietf-spring-srv6-network-programming-15
https://tools.ietf.org/html/draft-filsfils-spring-srv6-net-pgm-insertion-02
SRv6可靠性方案(一)
SRv6可靠性方案(二)
SRv6可靠性方案(三)
SRv6可編程技術-SRv6 Policy

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