02-SRv6配置
本章節下載: 02-SRv6配置 (886.94 KB)
目 錄
1.9.1 在coc32類型Locator中配置SRv6 SID
1.9.2 在coc-both類型Locator中配置SRv6 SID
1.12.3 配置BGP-EPE SRv6 Peer Set組
1.14.3 配置自動發布IGP路由使流量沿SRv6隧道轉發
SR(Segment Routing,段路由)采用源節點路徑選擇機製,預先在源節點封裝好路徑所要經過段的SID(Segment Identifier,段標識),當報文經過SR節點時,該節點根據報文的SID對報文進行轉發。除源節點外,其它節點無需維護路徑狀態。SRv6是指在IPv6網絡中使用SR、將IPv6地址作為SID對報文進行轉發。
按照功能的不同,SRv6網絡中的節點分為三種角色:
· 源節點:負責在IPv6報文的IPv6頭中插入SRH擴展頭,或者在報文外加上IPv6頭並插入SRH擴展頭。該節點將報文流引入SRH中Segment List定義的SRv6路徑。
¡ 如果Segment List中隻包含一個SID,並且不需要在SRH中攜帶信息或TLV,則隻需要將IPv6頭的目的地址設置為這個SID,不需要插入SRH。
¡ 如果Segment List中包含多個SID,則需要插入SRH。
源節點可以是產生SRv6報文的主機,也可以是SRv6域的邊緣設備。
· 中轉節點:在報文的SRv6路徑上,不參與SRv6處理,隻執行普通的IPv6報文轉發。中轉節點可以是支持SRv6的節點,也可以是不支持SRv6的節點。
· Endpoint節點:對接收到的SRv6報文進行SRv6相關處理。接收到的SRv6報文的IPv6目的地址必須是Endpoint節點上配置的SRv6 SID,該節點需要按SRv6 SID的指令進行處理,並更新SRH。
同一個節點在某個SRv6路徑裏可能是源節點,在其他SRv6路徑裏可能就是中轉節點或者Endpoint節點。
在SRv6中,定義某種網絡功能、代表網絡指令的SID。這種SID采用IPv6地址形式,但不與任何設備上的接口地址對應。該SID被稱為SRv6 SID。
如圖1-1所示,SRv6 SID由Locator、Function、Arguments和MBZ四部分組成:
· Locator:標識SID所屬的網段。SRv6節點通過IGP等路由協議將Locator標識的IPv6網段發布到網絡中,幫助其他設備將報文轉發到該SRv6節點,因此Locator通常用於SRv6節點的路由和尋址。Locator在SR域內唯一。
· Function:標識與SID綁定的本地操作指令。當某個SRv6節點接收到SRv6報文,同時該SRv6節點發現報文的IPv6目的地址與本地Local SID表中某個SRv6 SID值相同,則該SRv6節點分析SRv6 SID的Function字段,再找到Function對應的設備本地操作指令並執行相關操作。例如,SRv6節點上配置了opcode 101 end-x interface A表示SRv6 SID的Function部分的取值為101,對應的是設備本地操作指令為End.X,如果SRv6報文目的地址和本地這個SRv6 SID值相同,則執行End.X指令對應的轉發行為,即從End.X標識的鏈路接口A轉發報文。
· Arguments:定義報文的流和服務等信息,在SRv6 SID中為可選字段。
· MBZ(Must be zero):當Locator、Function和Arguments的位數之和小於128bits時,其他位使用0補齊。
每一個具體的SRv6 SID都是從locator命令配置SRv6 Locator段中分配,因此,SRv6 Locator段的類型和長度規劃不同,SRv6 SID也各不相同,通常情況下,在SRv6報文中封裝的是128bit SRv6 SID,這種SRv6 SID可以從普通類型的Locator中分配。
· 普通類型的Locator
圖1-2 普通類型的Locator示意圖
從普通類型的Locator可以分配普通SRv6 SID,普通SRv6 SID分為靜態SRv6 SID和動態SRv6 SID,其格式分別為:
¡ 靜態SRv6 SID=ipv6-prefix+0+opcode+0。其中ipv6-prefix為locator命令中由ipv6-address和prefix-length指定的IPv6地址前綴,所占位數為prefix-length;0所占位數位為128減去prefix-length、static-length再減去args-length;opcode為Function字段中的靜態段,所占位數為static-length;0所占位數為args-length。
¡ 動態SRv6 SID=ipv6-prefix+dynamic+static+0。其中ipv6-prefix為locator命令中由ipv6-address和prefix-length指定的IPv6地址前綴,所占位數為prefix-length;dynamic為Function字段中的動態段,取值不能為全0,所占位數位為128減去prefix-length、static-length再減去args-length;static為Function字段中的靜態段,所占位數為static-length,可以取任意值;0所占位數為args-length。
例如,配置locator test1 ipv6-prefix 100:200:DB8:ABCD:: 64 static 24 args 32時,表示:
¡ Locator為100:200:DB8:ABCD::,長度為64
¡ 靜態段占用24位
¡ Args占用32位
¡ 動態段占用8位
由此可以計算出靜態SRv6 SID範圍和動態SRv6 SID範圍:
¡ 靜態SRv6 SID起始值=100:200:DB8:ABCD:0:1::
¡ 靜態SRv6 SID結束值=100:200:DB8:ABCD:FF:FFFF::
¡ 動態SRv6 SID起始值=100:200:DB8:ABCD:100::
¡ 動態SRv6 SID結束值=100:200:DB8:ABCD:FFFF:FFFF::
· coc32類型的Locator
圖1-3 coc32類型的Locator示意圖
coc32類型的Locator可以分配帶COC標記的SRv6 SID(即End(COC32) SID、End.X(COC32) SID)和不帶COC標記的普通SRv6 SID。這些SRv6 SID既可以在靜態段內手工指定,也可以通過IGP協議在動態段內自動分配。例如,配置locator test1 ipv6-prefix 100:200:DB8:ABCD:: 64 comm
on-prefix 48 coc32 static 8 args 16時,表示:
¡ Locator為100:200:DB8:ABCD::,長度為64
¡ 公共前綴長度為48
¡ 靜態段占用8位
¡ Args占用16位
¡ 動態段占用8位
由此可以計算出靜態SRv6 SID範圍和動態SRv6 SID範圍:
¡ 靜態SRv6 SID起始值=100:200:DB8:ABCD:1::
¡ 靜態SRv6 SID結束值=100:200:DB8:ABCD:FF::
¡ 動態SRv6 SID起始值=100:200:DB8:ABCD:100::
¡ 動態SRv6 SID結束值=100:200:DB8:ABCD:FFFF::
· coc-both類型的Locator
圖1-4 coc-both類型的Locator中的G-SID示意圖
為了更加靈活地分配SRv6 SID,新增一種coc-both類型的Locator,這種Locator中分配的G-SID的Functon部分區分出Compress SID壓縮段和Non-Compress SID非壓縮段的範圍,其中Compress SID壓縮段完全繼承了coc32類型的Locator的功能,Compress SID壓縮段可以動態分配或靜態指定帶COC附加行為的SID,例如End(COC32)類型的SID和End.X(COC32)類型的SID,也可以動態分配或靜態指定不帶COC附加行為的SID,例如End(COCNONE)類型的SID和End.X(COCNONE)類型的SID。而Non-Compress SID非壓縮段的範圍內隻能用於分配不帶COC附加行為的普通類型SID,例如End類型的SID和End.X類型的SID。不同範圍分配的SRv6 SID分為:
¡ 靜態壓縮段SRv6 SID
¡ 動態壓縮段SRv6 SID
¡ 靜態非壓縮段SRv6 SID
¡ 動態非壓縮段SRv6 SID
例如,配置locator test1 ipv6-prefix 100:200:DB8:ABCD:: 64 common-prefix 48 coc-both non-compress-static 16 static 8 args 16時,表示:
¡ Locator為100:200:DB8:ABCD::,長度為64
¡ 公共前綴長度為48
¡ 靜態壓縮段占用8位
¡ 動態壓縮段占用8位:動態壓縮段長度=32 – (prefix-length – common-prefix-length )– compress-static-length
¡ 靜態非壓縮段占用16位
¡ 動態非壓縮段占用16位:動態壓縮段長度=128 – common-prefix-length – args-length – 32 – non-compress-static-length
¡ Args占用16位
通過以上信息計算靜態壓縮段SRv6 SID範圍和動態壓縮段SRv6 SID範圍為:
¡ 靜態壓縮SRv6 SID起始值=100:200:DB8:ABCD:1::
¡ 靜態壓縮SRv6 SID結束值=100:200:DB8:ABCD:FF::
¡ 動態壓縮SRv6 SID起始值=100:200:DB8:ABCD:100::
¡ 動態壓縮SRv6 SID結束值=100:200:DB8:ABCD:FFFF::
¡ 通過以上信息計算靜態非壓縮段SRv6 SID範圍和動態非壓縮段SRv6 SID範圍為:
¡ 靜態非壓縮SRv6 SID起始值=100:200:DB8:ABCD::1:0
¡ 靜態非壓縮SRv6 SID結束值=100:200:DB8:ABCD::FFFF:0
¡ 動態非壓縮SRv6 SID起始值=100:200:DB8:ABCD:0:1::
¡ 動態非壓縮SRv6 SID結束值=100:200:DB8:ABCD:0:FFFF:FFFF:0
· PD類型的Locator
PD類型的Locator的組成如圖1-5所示,其中僅包含PD prefix、子前綴和靜態的Function三個部分,不存在動態的Function段和Args部分,如果這三部分長度不足128bit則在PD prefix和子前綴之後填充0。請合理配置PD類型的子前綴和靜態的Function部分長度,避免超出128bit,如果超出128bit則該Locator無效。
圖1-5 PD類型的Locator的組成示意圖
在接入網中,分布在不同地點的海量CPE設備會通過無線、光纖等各種方式連接到業務網關SGW,如果人工為每個CPE配置和規劃SRv6 Locator,工作量巨大。而且這些CPE設備通常也不支持IGP協議,無法通過IGP發布SRv6 Locator給業務網關SGW,因此,H3C借助DHCPv6 PD方式來獲取IPv6地址前綴,並將這個地址前綴作為CPE的SRv6 Locator,可以大大減少規劃和配置SRv6 Locator的工作量。
當接入網中二層業務也通過SRv6來承載時,用戶側CPE可以通過EVPN VPWS over SRv6方式接入業務網關SGW。在這種的場景中,作為客戶端的CPE通過DHCPv6 PD方式自動獲取IPv6地址前綴。在CPE上配置PD類型的Locator,直接利用PD方式自動獲取IPv6地址前綴作為Locator網段,再從PD類型的Locator分配SID,每個SID都表示單個用戶的業務,實現SID與接入業務關聯,即SID as a Service。
PD類型的Locator僅用於靜態分配End.DX2 SID,不支持分配任何其他類型的SID,也不支持動態分配SID。
SRv6 SID的Function字段所標識的本地操作指令本質上是一種指導報文轉發和處理的節點行為,這種本地操作指令稱為SRv6 Endpoint Behavior節點行為。RFC 8986中為大部分不同類型的節點行為定義了指令碼的取值。從網絡配置的角度看,不同的節點轉發行為也可以理解為不同功能類型的SRv6 SID,SRv6 SID的類型包括但不限於:
· End SID:用於標識網絡中的某個目的地址前綴。
· End.X SID:用於標識網絡中的某條鏈路。
· End.DT4 SID:類似於MPLS L3VPN網絡中的私網標簽,用於標識特定的IPv4 VPN實例。End.DT4 SID的轉發行為是解封裝報文,並且查找該SID標識的IPv4 VPN實例,根據VPN實例路由表轉發報文。End.DT4 SID用於IPv4私網用戶接入場景。
· End.DT6 SID:類似於MPLS L3VPN網絡中的私網標簽,用於標識特定的IPv6 VPN實例。End.DT6 SID的轉發行為是解封裝報文,並且查找該SID標識的IPv6 VPN實例,根據VPN實例路由表轉發報文。End.DT6 SID用於IPv6私網用戶接入場景。
· End.DT46 SID:類似於MPLS L3VPN網絡中的私網標簽,用於標識特定的IPv4 VPN實例或IPv6 VPN實例。End.DT46 SID用於IPv4和IPv6私網用戶同時接入場景。
· End.DX4 SID:用於標識網絡中特定IPv4 VPN實例中PE-CE的某個IPv4下一跳。End.DX4 SID對應的轉發動作是解封裝報文,並且將解封後的IPv4報文通過該SID綁定的三層接口轉發給特定下一跳。End.DX4 SID用於IPv4私網用戶接入場景。
· End.DX6 SID:用於標識網絡中特定IPv6 VPN實例中PE-CE的某個IPv6下一跳。End.DX6 SID對應的轉發動作是解封裝報文,並且將解封後的IPv6報文通過該SID綁定的三層接口轉發給特定下一跳。End.DX6 SID用於IPv6私網用戶接入場景。
· End.DX2 SID:End.DX2 SID表示EVPN VPWS over SRv6場景的二層交叉連接,用於標識一個端點。End.DX2 SID對應的轉發動作是解封裝SRv6報文,再將剩餘二層報文轉發到SID對應的出接口。
· End.DX2L SID:End.DX2L SID用來標識報文來自Bypass SRv6 PW,攜帶該SID的報文不會再轉發到該Bypass SRv6 PW,從而避免產生環路。End.DX2L SID對應的轉發動作是去掉IPv6報文頭及其擴展頭,然後將剩餘報文轉發到SID對應的出接口。End.DX2L SID主要用於EVPN VPWS over SRv6多歸屬站點組網。
· End.DT2M SID:End.DT2M SID表示EVPN VPLS over SRv6場景中BUM流量的二層交叉連接且進行廣播泛洪的SID,用於標識一個端點。End.DT2M SID對應的轉發動作是解封裝SRv6報文,再將剩餘二層報文在VSI內廣播泛洪。
· End.DT2U SID:End.DT2U SID表示二層交叉連接且進行單播MAC表查找功能的SID,用於標識一個端點。End.DT2U SID對應的轉發動作是去掉IPv6報文頭及其擴展頭,然後使用剩餘報文的目的MAC地址查找MAC表,根據MAC表項將報文轉發到對應的出接口。End.DT2U SID可以用於EVPN VPLS單播場景。
· End.DT2UL SID:End.DT2UL SID用來標識報文來自Bypass SRv6 PW,攜帶該SID的報文不會再轉發到該Bypass SRv6 PW,從而避免產生環路。End.DT2UL SID對應的轉發動作是去掉IPv6報文頭及其擴展頭,然後使用剩餘報文的目的MAC地址查找MAC表,根據MAC表項將報文轉發到對應的出接口。End.DT2UL SID主要用於EVPN VPLS over SRv6多歸屬站點組網。
· End.OP SID:用於SRv6 OAM場景。有關End.OP SID的詳細介紹,請參見“Segment Routing”中的“SRv6 OAM”。
· End.M SID:用於SRv6 TE Policy尾節點保護場景。有關End.M SID的詳細介紹,請參見“Segment Routing配置指導”中的“SRv6 TE Policy”。
· End.T SID:用於Option B跨域VPN場景。有關End.T SID的詳細介紹,請參見“Segment Routing配置指導”中的“IP L3VPN over SRv6”和“EVPN L3VPN over SRv6”。
· End.AS SID:用於SRv6 SFC服務鏈靜態代理場景。有關End.AS SID的詳細介紹,請參見“Segment Routing配置指導”中的“SRv6 SFC”。
· End.AM SID:用於SRv6 SFC服務鏈偽代理場景。有關End.AM SID的詳細介紹,請參見“Segment Routing配置指導”中的“SRv6 SFC”。
· End.B6.Encaps:用於在SRv6源節點引流到SRv6 TE Policy或者使用BSID縫接SRv6 TE Policy的場景,執行的節點行為是為接收到的報文封裝新的IPv6頭和SRH頭。
· End.B6.Encaps.Red:用於在SRv6源節點引流到SRv6 TE Policy或者使用BSID縫接SRv6 TE Policy的場景,執行的節點行為是為接收到的報文封裝IPv6頭和SRH時,SRv6 TE Policy的SID列表中的第一個SID不封裝在SRH中,其他SID封裝到SRH中,以便減少SRH的長度。
· End.B6.Insert:用於在SRv6源節點引流到SRv6 TE Policy或者使用BSID縫接SRv6 TE Policy的場景,執行的節點行為是在接收到的IPv6報文中插入SRH頭。
· End.B6.Insert.Red:用於在SRv6源節點引流到SRv6 TE Policy或者使用BSID縫接SRv6 TE Policy的場景,執行的節點行為是在接收到的IPv6報文中插入SRH,且SRv6 TE Policy的SID列表中的第一個SID不封裝在SRH中,其他SID封裝到SRH中,以便減少SRH的長度。
通過IGP協議通告SR節點的SRv6 SID後,其他SR節點可以根據收到的路由協議報文生成到達該SRv6 SID的路由轉發表項。
SID附加行為(Flavors)可以改變SRv6 SID的轉發行為,以便適配多種業務需求。目前,支持的SRv6 SID附加行為包括:
· PSP(penultimate Segment POP of the SRH):倒數第二個SRv6節點執行SRH移除操作。為了減輕SRv6網絡尾節點的負擔,提高轉發效率,可以在倒數第二個SRv6節點將SRH移除,尾節點不需要查看SRH信息,隻需根據目的IPv6地址查找Local SID表進行處理。
· NO PSP:倒數第二個SRv6節點不執行SRH移除操作。
· COC(Continue of Compression):用於G-SID壓縮場景,標識本SID之後是G-SID,攜帶COC附加行為的SID轉發時支持“替換”操作,即SRv6報文轉發到Endpoint節點上,當本Endpoint節點的Local SID攜帶COC附加行為,並且當前SID為IPv6目的地址中最後一個SID或G-SID時,則從封裝SID的128bit地址空間中取出16bit或32bit的G-SID“替換”到IPv6報文的目的地址的公共前綴之後,根據“替換”後的公共前綴和G-SID組合而成的SID指導G-SRv6報文進行轉發。
運行SRv6的節點維護一個Local SID表,記錄本節點生成的SRv6 SID信息。Local SID表主要用於:
· 保存本地生成的SRv6 SID轉發信息。
· 存儲對SRv6 SID的操作方式。
Segment List是包含報文轉發路徑信息的SID列表。
SRv6通過在源節點對IPv6數據報文進行封裝,使封裝後的報文在開啟SRv6功能的網絡中進行傳輸。封裝後的數據報文在網絡中傳輸的路徑,稱為SRv6隧道。SRv6隧道是從源節點到尾節點的一個虛擬的點對點連接,其兩端的設備分別對數據報文進行封裝及解封裝。
SRv6的報文封裝格式為:在原始三層數據報文前麵添加新的IPv6基本頭和SRH(Segment Routing Header,SRv6報文頭)。SRH是路由類型取值為4的一種路由擴展頭。如圖1-6所示,IPv6基本頭中Next Header取值為43,表明下一個報文頭為路由擴展頭。路由擴展頭的路由類型字段取值為4,表明該路由擴展頭為SRH。SRH主要包含以下幾個部分:
· Next Header:8bits,用來標識下一個報文頭的類型。
· Hdr Ext Len:8bits,表示以8個字節為單位的SRH頭的長度,不包括前8個字節。
· Routing Type:8bits,路由類型字段,取值為4,表示攜帶的是SRH。
· Segments Left:8bits,標識需要查看的下一個SID的編號,初始取值為n-1(n表示路由擴展頭中SID的數目),每經過一個節點減1。
· Last Entry:8bits,SRH頭中報文實際轉發路徑的第一個SID的編號。
· Flags:8bits,標誌位信息。
· Tag:16bits,用來標記具有相同特性的一組報文。
· Segment List:SID列表。按照報文轉發路徑上節點從遠到近的順序進行排列,即Segment List [0]表示路徑的最後一個SID,Segment List [1]表示路徑的倒數第二個SID,以此類推。
圖1-6 SRv6的報文封裝示意圖
如圖1-7所示,SRv6隧道報文轉發過程如下:
(1) 源節點Device A收到IPv6報文後,查找路由表判定此報文需要通過SRv6隧道模式的Tunnel接口轉發,並將報文發給相應的Tunnel接口。
(2) Tunnel接口收到此IPv6報文後,執行如下操作對報文進行封裝:
¡ 封裝SRH頭。由於從Ingress到Egress的跳數為3,因此,SRH中SL為跳數-1,即SL=2。封裝的SID列表信息為Segment List [0]=D、Segment List [1]=C、Segment List [2]=B,即按照節點由遠及近的順序進行排列。
¡ 封裝IPv6頭。IPv6頭中的源地址為隧道的源端地址,目的地址為SL指示的地址,即SL為2時表示SRH中Segment List [2]對應的地址(本例中為Device B的地址)。
(3) Device A根據封裝的IPv6頭中的目的地址查找路由表,將封裝後的報文轉發給Device B。
(4) Device B收到報文後,首先檢查IPv6頭中目的地址的SID類型:
¡ 對於End.X SID,根據End.X SID獲取出接口和下一跳信息。
¡ 對於其他類型SID,無任何操作。
然後檢查SRH頭中的SL值,並將SL值減1,同時查找Segment List [1]對應的地址,即Device C的地址,並使用Device C的地址替換IPv6頭中的目的地址。
(5) 對於End.X SID,Device B根據獲取的出接口和下一跳信息,直接將封裝後的報文轉發給Device C。對於其他類型SID,Device B根據封裝的IPv6頭中的目的地址查找路由表,將封裝後的報文轉發給Device C。
(6) Device C收到報文後,執行(4)、(5)步的操作,將報文發給Device D。
(7) 尾節點Device D收到報文後,檢查SRH頭中的SL值,發現SL=0。對報文進行解封裝,刪除封裝報文頭,根據原始報文的目的地址進行報文轉發。
圖1-7 SRv6隧道報文轉發示意圖
當SRv6隧道建立之後,流量不會自動通過SRv6隧道轉發,需要通過如下方法配置流量沿SRv6隧道轉發。
使用靜態路由轉發流量,是指在源節點定義一條通過Tunnel接口到達目的網絡地址的靜態路由,把流量引入到SRv6隧道上進行轉發。
靜態路由是將流量引入SRv6隧道的最簡便、直觀的方法。該方法的缺點是:如果多個目的網絡的流量都需要引入到SRv6隧道上,則需要配置多條靜態路由,配置和維護難度比較大。
有關靜態路由的介紹請參見“三層技術-IP路由配置指導”中的“靜態路由”。
自動路由發布是指將SRv6隧道發布到IGP中,讓SRv6隧道參與IGP路由的計算,使得流量可以通過SRv6隧道轉發。自動路由發布包括以下兩種方式:
· IGP Shortcut:也稱為自動路由宣告(AutoRoute Announce),該功能將SRv6隧道當作一條直接連接隧道Ingress節點(頭節點)和Egress節點(尾節點)的鏈路,在隧道的Ingress節點上進行IGP路由計算時考慮該SRv6隧道。
· 轉發鄰接:該功能將SRv6隧道當作一條直接連接隧道Ingress節點和Egress節點的鏈路,通過IGP路由協議將該鏈路發布到網絡中,以便網絡中的節點在路由計算時使用SRv6隧道。
目前僅支持IGP Shortcut功能。
IGP Shortcut和轉發鄰接功能的區別在於:
· 在隧道的Ingress節點上開啟IGP Shortcut功能後,隻有Ingress節點計算IGP路由時會考慮SRv6隧道。IGP Shortcut功能不會通過IGP路由協議將SRv6隧道作為一條鏈路發布出去。因此,其他設備在路由計算時不會考慮SRv6隧道。
· 在隧道的Ingress節點上開啟轉發鄰接功能後,Ingress節點會通過IGP路由協議將SRv6隧道作為一條鏈路發布出去。因此,IGP網絡中的所有設備在路由計算時都會考慮SRv6隧道。
圖1-8 IGP Shortcut與轉發鄰接示意圖
在圖1-8中,Device D到Device C之間存在一條SRv6隧道,IGP Shortcut隻能使Ingress節點Device D在計算IGP路由時利用這條隧道,Device A並不能利用這條隧道到達Device C。如果配置了轉發鄰接功能,則Device A也能夠知道這條SRv6隧道的存在,從而可以利用該隧道將到Device C的流量轉發到Device D上。
在SRv6 TE Policy組網場景中,管理員需要將報文轉發路徑上的SRv6節點的128-bit SRv6 SID添加到SRv6 TE Policy的SID列表中。因此,路徑越長,SRv6 TE Policy的SID列表中SRv6 SID數目越多,SRv6報文頭開銷也越大,導致設備轉發效率低、芯片處理速度慢。在跨越多個AS域的場景中,端到端的SRv6 SID數目可能更多,報文開銷問題更加嚴峻。
Generalized SRv6(G-SRv6)通過對128-bit SRv6 SID進行壓縮,在SRH的Segment List中封裝更短的SRv6 SID(G-SID),來減少SRv6報文頭的開銷,從而提高SRv6報文的轉發效率。同時,G-SRv6支持將128-bit SRv6 SID和G-SID混合編排到Segment List中。
部署SRv6時,通常會規劃出一個地址塊,專門用於SID的分配,這個地址塊稱為SID Space。在一個SRv6域中,SID均從SID Space中分配,具有相同的前綴(即公共前綴Common Prefix)。因此,SRH中SID的公共前綴是冗餘信息。
G-SRv6將Segment List中SRv6 SID的Common Prefix移除,僅攜帶SRv6 SID中的可變部分,即壓縮SID(G-SID),可以有效減少SRv6報文頭開銷。報文轉發過程中,在根據SRH頭中的Segment List替換報文的目的地址時,將G-SID與Common Prefix拚接形成新的目的地址,繼續查表轉發。
G-SRv6對SRv6 SID進行壓縮時,既要保證高效壓縮,又要兼顧網絡規模等需求。綜合考慮,32比特是當前較為理想的壓縮後SID長度。
如圖1-9所示,SRv6 SID的Locator部分可以細分為Common Prefix和Node ID,其中Common Prefix表示公共前綴地址;Node ID表示節點標識。具有相同Common Prefix的SRv6 SID可以進行壓縮,形成32-bit G-SID。32-bit G-SID由128-bit SRv6 SID中的Node ID和Function組成。128-bit SRv6 SID和32-bit G-SID的轉換關係為:128-bit SRv6 SID = Common Prefix + 32-bit G-SID + 0 (Args&MBZ)。
如圖1-10所示,G-SRv6可以將G-SID和128-bit SRv6 SID混合編排在SRH的Segment List中。為準確定位G-SID,需要在原本封裝128-bit SRv6 SID的位置封裝4個32-bit G-SID。如果封裝的G-SID不足4個,即不足128比特,則需要用0補齊,對齊128比特。128比特中封裝的G-SID稱為一組G-SID。多個連續的G-SID組成一段壓縮路徑,稱為G-SID List。G-SID List中可以包含一組或多組G-SID。
圖1-10 G-SRv6報文格式示意圖
如果下一個節點的SRv6 SID需要進行壓縮,則路由協議在發布本節點的SRv6 SID時,會為該SRv6 SID添加COC標記,標識本SRv6 SID之後是G-SID。報文中不會攜帶COC標記,COC是SRv6 SID本身的轉發行為,為了方便理解,在報文結構中標識出SRv6 SID是否具有COC標記。
G-SID在Segment List中的排列規則為:
(1) G-SID List的前一個SRv6 SID為攜帶COC標記的128-bit SRv6 SID,標識下一個SID為32-bit G-SID。
(2) 除G-SID List中的最後一個G-SID外,其餘G-SID必須攜帶COC標記,標識下一個SID為32-bit G-SID。
(3) G-SID List的最後一個G-SID必須是未攜帶COC標記的32-bit G-SID,標識下一個SID為128-bit SRv6 SID。
(4) G-SID List結束的下一個SRv6 SID為128-bit SRv6 SID,其可以是未攜帶COC標記的SRv6 SID,也可以是攜帶COC標記的SRv6 SID。
如圖1-11所示,使用G-SID計算目的地址的方法為將Segment List中的G-SID與Common Prefix拚接形成新的目的地址。其中:
· Common Prefix:公共前綴,由管理員手工配置。
· G-SID:按照32比特進行壓縮的SID,從SRH中獲取。
· SI(SID Index):用於在一組G-SID中定位G-SID。SI為目的地址的最低兩位,取值為0~3。每經過一個對SID進行壓縮的節點,SI值減1。如果SI值為0,則將SL值減1。在Segment List的一組G-SID中,G-SID按照SI從小到大的順序從左到右依次排列,即最左側的G-SID的SI為0,最右側的G-SID的SI為3。
· 0:若Common Prefix、G-SID和SI的位數之和不足128比特,則中間位使用0補齊。
圖1-11 G-SID組成示意圖
如果SRv6節點上管理員部署的Common Prefix為A:0:0:0::/64、SRv6報文中的當前的G-SID為1:1,該G-SID對應的SI為3,則組合成的目的地址為A:0:0:0:1:1::3。
SRv6節點收到G-SRv6報文後,不同情況下,報文目的地址計算方法為:
· 如果當前報文的目的地址在Segment List中為攜帶COC標記的128-bit SRv6 SID,則表示下一個SID為G-SID,將SL-1,根據[SL-1]值定位所處的G-SID組,並按照上述方法根據[SI=3]對應的32-bit G-SID計算目的地址。
· 如果當前報文的目的地址在Segment List中為攜帶COC標記的32-bit G-SID,則表示下一個SID為G-SID:
¡ 如果SI>0,則將SI-1,根據報文當前的SL值定位所處的G-SID組,並按照上述方法根據[SI-1]對應的32-bit G-SID計算目的地址。
¡ 如果SI=0,則將SL-1、將SI值重置,即將SI設置為3,根據報文當前的SL值定位所處的G-SID組,並按照上述方法根據[SI=3]對應的32-bit G-SID計算目的地址。
· 如果當前報文的目的址在Segment List中是未攜帶COC標記的32-bit G-SID,則將SL-1,同時查找[SL-1]對應的128-bit SRv6 SID,並使用該SRv6 SID替換IPv6頭中的目的地址。
· 如果當前報文的目的址在Segment List中是未攜帶COC標記的128-bit SRv6 SID,則將SL-1,同時查找[SL-1]對應的128-bit SRv6 SID,並使用該SRv6 SID替換IPv6頭中的目的地址。
通過擴展的IGP協議通告SRv6 SID僅能實現在自治係統域內的SID編排,並基於SID列表規劃出合理的轉發路徑。但是,在跨越多個AS的大規模網絡中,僅基於IGP for SRv6不能編排跨域SID組成的轉發路徑。此時,需要通過擴展BGP協議支持SRv6來實現自治係統域間的SID分配和發布。
BGP-EPE(BGP Egress Peer Engineering,BGP出口對等體工程)就是一種BGP for SRv6的擴展,它用來為BGP對等體和對等體的域間路徑分配BGP Peer SID。Peer SID通過擴展的BGP LS收集並傳遞給SDN控製器。SDN控製器通過對IGP SID和BGP Peer SID進行合理編排,生成跨域的報文轉發路徑。通常情況下,在多個自治係統組成的跨域網絡中,每個自治係統內都需要至少一台轉發設備與SDN控製器建立BGP-LS連接,但無需所有轉發器均與SDN控製器建立BGP-LS連接。與SDN控製器建立了BGP-LS連接的轉發設備收集自治係統內部的所有IGP SID和BGP Peer SID,並通過BGP-LS將SID傳遞給SDN控製器,從而完成全網信息的收集。
BGP-EPE為BGP對等體和對等體的域間路徑分配SID時支持自動分配和手工指定兩種方式。如圖1-12所示,BGP-EPE能夠針對對等體分配以下SID:
· PeerNode SID:用於標識節點的一個BGP-EPE對等體。BGP-EPE會為每個BGP對等體分配PeerNode SID。如果基於Loopback接口建立EBGP鄰居,則BGP-EPE對等體之間可能存在多條物理鏈路,對於該鄰居的PeerNode SID會存在多個出接口。基於PeerNode SID轉發時,會在多個出接口間負載分擔。
· PeerAdj SID:用於標識到達BGP-EPE對等體的一個鄰接鏈路。如果基於Loopback接口建立EBGP鄰居,則可能存在多條物理鏈路,BGP-EPE會為每條鏈路分配一個PeerAdj SID。基於PeerAdj SID轉發時,隻能通過指定出接口進行轉發。
· PeerNode-Adj SID:既可用於標識一個對等體節點,也可以標識到達對等體的一條或多條鄰接鏈路。
· PeerSet SID:用於標識一組對等體。BGP支持將一組對等體規劃為一個Set,基於該組分配SID,這個SID稱為PeerSet SID。基於PeerSet SID轉發時,會在多個鄰居間負載分擔。一個PeerSet SID對應多個PeerNode SID和PeerAdj SID。
如圖1-12所示,BGP-EPE的標簽分配方式為:
· ASBR 1和ASBR 3間存在兩條直連物理鏈路,二者通過LoopBack接口建立EBGP鄰居,BGP-EPE針對對等體分配了PeerNode SID 100:AB::1,為物理鏈路分配了PeerAdj SID 100:AB:1::2和100:AB:1::3。當通過PeerNode SID轉發流量時,會在兩條鏈路間負載分擔。
· ASBR 1和ASBR 5,ARBR 2和ASBR 4,以及ASBR 2和ASBR 5使用直連物理接口建立EBGP鄰居,BGP-EPE為對等體隻分配了PeerNode SID 100:AB::2,100:AB::4和100:AB::5。
· ASBR 4、ASBR 5均和ASBR 2建立EBGP鄰居關係,BGP-EPE將對等體ASBR 4和ASBR 5加入同一Set組,為其分配PeerSet SID 100:AB::3。當通過PeerSet SID轉發流量時,會在多個鄰居間負載分擔。
通過BGP-EPE功能為鄰居分配的SID僅具有本地意義,不會向其他設備通告,因此不受BGP對等體間交換路由信息類型的影響。
TI-LFA FRR(Topology-Independent Loop-free Alternate Fast Reroute,拓撲無關無環備份快速重路由)能為Segment Routing隧道提供鏈路及節點的保護。當某處鏈路或節點故障時,流量會快速切換到備份路徑繼續轉發,從而最大程度上避免流量的丟失。
為了最大程度減少路由重新收斂過程中的流量丟包,網絡管理員選取被保護鏈路的直連節點或被保護節點的直連設備開啟FRR(Fast Reroute,快速重路由)功能,這個開啟了FRR功能的設備節點稱為PLR(Point of Local Repair,本地修複節點)。PLR節點在計算到達目的路由的最短路徑的同時,將自動計算一條FRR備份路徑寫入FIB轉發表中,當保護的鏈路或節點故障時,通過PLR節點的FRR備份路徑轉發流量,而無需等待網絡拓撲中路由重新收斂,因此可以最大程度避免流量丟包。按出現時間先後順序,FRR的算法機製有以下幾種:
· LFA FRR(Loop-Free Alternate Fast Reroute,無環備份快速重路由)。LFA FRR計算備份路徑的關鍵是找到一個PLR的鄰居保護節點(LFA節點),使得流量從PLR轉發到該LFA節點之後可以不經過被保護鏈路或被保護節點,就可以到達目的節點。在某些場景中,特別是一些環形組網拓撲中,使用LFA FRR無法計算出備份保護路徑,因此LFA FRR技術無法實現拓撲無關。根據RFC 6571的統計,LFA FRR可以實現備份保護的拓撲場景覆蓋率為80%~90%。
· RLFA FRR(Remote Loop-Free Alternate Fast Reroute,遠端無環路備份快速重路由)。為了提升LFA FRR算法的場景覆蓋率,RFC7490定義了RLFA FRR算法,它的關鍵也是找到一個保護節點,即RLFA節點,流量從PLR轉發到該RLFA節點之後可以不經過保護鏈路或保護節點到達目的節點。相對於LFA FRR算法,RLFA FRR算法找到的保護節點並未限定是PLR的鄰居,提供了更多保護可能性,因此將備份保護的拓撲場景覆蓋率提升到了95%~99%。
· 適用於SRv6組網和SR-MPLS組網的TI-LFA FRR(Topology-Independent Loop-Free Alternate Fast Reroute,拓撲無關無環備份快速重路由)。相對於傳統LFA FRR技術和RLFA FRR技術,TI-LFA FRR的意義在於它實現了“拓撲無關”,即FRR備份路徑計算不再受限於網絡拓撲,隻要存在可供繞行的轉發路徑,PLR節點就可以100%自動計算出TI-LFA FRR備份路徑。
如圖1-13所示,數據報文需要從節點A發往節點F。當節點B和節點E之間發生故障後,節點B將數據報文轉發給節點C。由於節點C和節點D之間開銷是100,且節點C上路由還未收斂,因此節點C認為到達節點F的最優路徑的下一跳是節點B。節點C將數據報文重新轉回到節點B,形成環路。
圖1-13 TI-LFA應用場景示意圖
在SRv6網絡中部署TI-LFA,可以解決上述問題。如圖1-14所示,當節點B和節點E之間發生故障後,節點B啟用TI-LFA計算的備份路徑,為報文指定顯式路徑B->C->D->E,保證報文可以沿著備份路徑轉發。
圖1-14 TI-LFA轉發示意圖
TI-LFA FRR繼承了RFC7490中RLFA FRR算法定義的一些關鍵概念:
· P空間:是指對於被保護鏈路/被保護節點,在故障拓撲收斂前,從PLR不經過該被保護鏈路/被保護節點(包括等價路徑)的前提下可達的節點集合。P空間內的節點被稱為P節點。P節點的計算一般是以PLR為根節點建立SPF樹,在SPF樹上查找滿足無環校驗公式的節點。
· 擴展P空間:是指對於被保護鏈路/被保護節點,在故障拓撲收斂前,從PLR的鄰居節點(被保護節點除外)不經過該被保護鏈路/被保護節點(包括等價路徑)的前提下可達的節點集合。擴展P空間包含了P空間,擴展P空間的節點也被稱為P節點。擴展P空間內的節點定義為P節點,PLR的鄰居節點定義為N節點。下圖中擴展P空間節點包括Src、B、C和D。P節點滿足如下無環路條件:Distance(N,P)<Distance(N,PLR)+Distance(PLR,P)。
· Q空間:是指對於被保護鏈路/被保護節點,在故障拓撲收斂前,從目的節點不經過該被保護鏈路/被保護節點(包括等價路徑)的前提下可達的節點集合。Q空間內的節點被稱為Q節點。
圖1-15 TI-LFA FRR相關概念示意圖
如圖1-16所示,PE 1為源節點,P 1節點為故障節點,PE 2為目的節點,鏈路中間的數字表示cost值。假設流量路徑為:PE 1->P 1->PE 2,為避免P 1節點故障導致流量丟失,TI-LFA會計算出擴展P空間、Q空間、P 1故障收斂後的SPF樹、Repair List和備份出接口,最終生成備份轉發表項。
TI-LFA計算備份路徑步驟如下:
(1) 計算擴展P空間:至少存在一個鄰居節點到P節點的路徑不經過故障鏈路的集合,即P 2。
(2) 計算Q空間:Q節點到目的節點不經過故障鏈路的集合,即PE 2和P 4。
(3) 計算收斂後的SPF樹:計算P 1故障收斂後的SPF樹,即P 1故障後的最優轉發路徑。SPF樹為PE 1->P 2->P 4->PE 2。
(4) 計算Repair List:Repair List是一個約束路徑,當P空間和Q空間沒有交集時,用來指示如何到達Q節點,Repair List由“P節點的SRv6 SID+P節點到最近的Q節點路徑上的SRv6 SID”組成。當P節點和源節點直連時,則Repair List中不需要添加P節點的SRv6 SID。如圖1-16所示,Repair List為P 2和P 3間鏈路的End.X SID C、P 3和P 4間鏈路的End.X SID D。
(5) 計算備份出接口:PE 1到P 1鏈路故障後的下一跳出接口。
圖1-16 TI-LFA典型組網圖
TI-LFA備份路徑計算完成之後,如果主路徑發生故障,就可以根據備份路徑進行轉發,避免流量丟失。
如圖1-17所示,P 2為P節點,P 4和PE 2為Q節點。主下一跳P 1故障時,觸發FRR切換到備路徑,詳細過程如下:
(1) PE 1根據報文的目的IPv6地址查找IPv6路由表進行轉發,下一跳為P 2,同時包含Repair List信息。PE 1根據Repair List構造報文並轉發給P 2:
¡ 封裝SRH頭。封裝的SID列表信息為Segment List [0]=D、Segment List [1]=C,即按照節點由遠及近的順序進行排列。
¡ 封裝IPv6頭。IPv6頭中的源地址為源節點PE 1地址A,目的地址為SL指示的地址,即SL為1時表示SRH中Segment List [1]對應的地址C。
(2) P 2收到報文後,檢查SRH頭中的SL值,並將SL值減1,同時查找Segment List [0]對應的地址,即P 3和P 4間鏈路的End.X SID D,並使用該End.X SID D替換IPv6頭中的目的地址。P 2根據End.X SID C獲取出接口和下一跳信息,將封裝後的報文轉發給P 3。
(3) P 3收到報文後,檢查SRH頭中的SL值,發現SL=0,對報文進行解封裝,並根據End.X SID D獲取出接口和下一跳信息,將解封裝後的報文轉發給P 4。
(4) P 4收到報文後,根據報文的目的IP地址查找IP路由表進行轉發,將報文轉發給目的節點PE 2。
圖1-17 TI-LFA FRR備份路徑轉發流程圖
如圖1-18所示,當Device B故障時,到Device C的流量將切換到TI-LFA計算的備份路徑轉發。Device A收斂後,到Device C的流量將沿著收斂後路徑轉發。此時,如果Device D和Device F還沒有收斂,仍按照收斂前的路徑轉發流量,則Device A到Device F之間形成環路。
通過SR防微環功能可以解決上述問題。在Device A上開啟該功能後,可以使Device A延遲一段時間收斂,在此期間使用SR防微環功能計算的路徑轉發流量。等待Device D和Device F收斂完成後,Device A再開始收斂。Device A收斂完成後,到Device C的流量沿將著收斂後路徑轉發,從而避免發生環路。
如圖1-19所示,Device B和Device C之間的鏈路故障恢複前,數據流量沿著備份路徑轉發。當Device B和Device C之間的鏈路故障恢複後,如果Device A先於Device B收斂,則Device A會將流量轉發給Device B,但是Device B沒有收斂,仍舊沿著備份路徑轉發,這樣Device A和Device B之間就會形成環路。
通過SR防微環功能可以解決上述問題。Device A在故障回切以後,會自動計算一條最優路徑到達Device C,並按照該路徑轉發流量,即Device A在轉發時為報文添加端到端路徑信息(例如Device B到Device C的SRv6 SID),這樣Device B收到報文後,根據報文中SRH裏的路徑信息將報文轉發給Device C,避免環路的產生。
經過SR防微環延遲時間後,Device B節點完成收斂,Device A去除額外添加的路徑信息,按正常方式將報文轉發到Device C。
與IPv6 segment routing相關的協議規範有:
· draft-previdi-6man-segment-routing-header
· draft-ietf-6man-segment-routing-header
· draft-filsfils-spring-segment-routing
· draft-filsfils-spring-srv6-network-programming
SRv6配置任務如下:
(1) 配置普通的SRv6 SID
(2) 配置G-SID
(4) 配置BGP for SRv6
在跨域組網部署BGP for SRv6時,本功能必選。
(5) 配置SRv6隧道
在SRv6隧道的源節點上配置SRv6隧道。
a. 配置SRv6 SID列表
c. (可選)配置隧道轉發類
d. (可選)開啟SRv6隧道echo模式的BFD檢測功能
(6) (可選)配置流量轉發
(7) (可選)配置TI-LFA FRR
(8) (可選)配置SRv6的Path MTU
(9) (可選)配置SRv6的差分服務模式
在配置SRv6之前,需完成以下任務:
· 確定SRv6隧道的源節點、中間節點和尾節點。
· 規劃節點的IP地址。
SRv6 SID采用IPv6地址形式,為128位。SRv6 SID=Locator+Function+Args,其中:
· Locator字段對應ipv6-prefix ipv6-address prefix-length參數,長度由prefix-length參數決定。Locator本身是一個IPv6網段,該網段下的所有IPv6地址都可以作為SRv6 SID被使用。
· Function字段也稱為Opcode,Opcode可以分為靜態Opcode和動態Opcode:
¡ 靜態Opcode:通過opcode命令手工配置。靜態Opcode對應的SRv6 SID稱為靜態SRv6 SID。靜態Opcode的長度由static static-length參數決定。靜態Opcode的長度決定該Locator下靜態SRv6 SID的數量。
¡ 動態Opcode:通過IGP/BGP協議動態分配。動態Opcode對應的SRv6 SID稱為動態SRv6 SID。IGP/BGP協議動態分配SRv6 SID時會在靜態Opcode範圍外申請,確保SRv6 SID不會衝突。
· Args字段包含報文的流和服務等信息,Args字段由args args-length參數決定。
其中動態Opcode長度dynamic-length=128-(prefix-length+static-length+args-length)。
靜態SRv6 SID生成方式如下:靜態SRv6 SID=ipv6-prefix+0+opcode+0。其中ipv6-prefix為locator命令中由ipv6-address和prefix-length指定的IPv6地址前綴,所占位數為prefix-length;0所占位數位為dynamic-length;opcode為配置的靜態Opcode段,所占位數為static-length;0所占位數位為args-length。
動態SRv6 SID生成方式如下:動態SRv6 SID=ipv6-prefix+dynamic+0。其中ipv6-prefix為locator命令中由ipv6-address和prefix-length指定的IPv6地址前綴,所占位數為prefix-length;dynamic由IGP/BGP協議動態分配,所占位數位為dynamic-length;0所占位數位為static-length+args-length。
例如,配置locator test1 ipv6-prefix 100:200:DB8:ABCD:: 64 static 24 args 32時,表示:
· Locator為100:200:DB8:ABCD::,長度為64
· 靜態Opcode占用24位
· Args占用32位
· 動態Opcode占用8位
由此可以計算出靜態SRv6 SID範圍和動態SRv6 SID範圍:
· 靜態SRv6 SID起始值=100:200:DB8:ABCD:0:1::
· 靜態SRv6 SID結束值=100:200:DB8:ABCD:FF:FFFF::
· 動態SRv6 SID起始值=100:200:DB8:ABCD:100::
· 動態SRv6 SID結束值=100:200:DB8:ABCD:FFFF:FFFF::
不同Locator的名稱不能相同。
不能為不同Locator配置相同的IPv6地址前綴和前綴長度,且不同Locator的IPv6地址前綴不能有重疊部分。
SRv6視圖下的Locator段內存在正在被使用的動態SRv6 SID時,不能關閉SRv6功能和刪除該Locator段。
PD類型的Locator僅用於靜態分配End.DX2 SID,不支持分配任何其他類型的SID,也不支持動態分配SID。
(1) 進入係統視圖。
system-view
(2) 開啟SRv6功能,並進入SRv6視圖。
segment-routing ipv6
(3) 配置普通類型的Locator段,並進入SRv6 Locator視圖。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 配置Opcode段。
¡ 配置End SID。
opcode opcode end [ no-psp ]
¡ 配置End.X SID。
opcode opcode end-x interface interface-type interface-number nexthop nexthop-ipv6-address [ no-psp ]
¡ 配置End.DT4 SID。
opcode opcode end-dt4 [ vpn-instance vpn-instance-name [ evpn | l3vpn-evpn ] ]
指定的VPN實例必須已經存在。不同VPN實例不能配置相同End.DT4 SID。
¡ 配置End.DT6 SID。
opcode opcode end-dt6 [ vpn-instance vpn-instance-name [ evpn | l3vpn-evpn ] ]
指定的VPN實例必須已經存在。不同VPN實例不能配置相同End.DT6 SID。
¡ 配置End.DT46 SID。
opcode opcode end-dt46 [ vpn-instance vpn-instance-name [ evpn | l3vpn-evpn ] ]
指定的VPN實例必須已經存在。不同VPN實例不能配置相同End.DT46 SID。
¡ 配置End.DX4 SID。
opcode end-dx4 interface interface-type interface-number nexthop nexthop-ipv4-address [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN實例必須已經存在,不同下一跳和出接口不能配置相同End.DX4 SID。
¡ 配置End.DX6 SID。
opcode end-dx6 interface interface-type interface-number nexthop nexthop-ipv6-address [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN實例必須已經存在,不同下一跳和出接口不能配置相同End.DX6 SID。
¡ 配置End.DX2 SID。
opcode { opcode | hex hex-opcode } end-dx2 xconnect-group group-name connection connection-name
指定的交叉連接組和交叉連接必須已經存在。
opcode { opcode | hex hex-opcode } end-dx2 vsi vsi-name interface interface-type interface-number
指定的VSI必須已經存在。
¡ 配置End.DX2L SID。
opcode { opcode | hex hex-opcode } end-dx2l xconnect-group group-name connection connection-name
指定的交叉連接組和交叉連接必須已經存在。
opcode { opcode | hex hex-opcode } end-dx2l vsi vsi-name interface interface-type interface-number
指定的VSI必須已經存在。
¡ 配置End.DT2M SID。
opcode { opcode | hex hex-opcode } end-dt2m vsi vsi-name
指定的VSI必須已經存在。不同VSI不能配置相同End.DT2M SID。
¡ 配置End.DT2U SID。
opcode { opcode | hex hex-opcode } end-dt2u vsi vsi-name
指定的VSI必須已經存在。不同VSI不能配置相同End.DT2U SID。
¡ 配置End.DT2UL SID。
opcode { opcode | hex hex-opcode } end-dt2ul vsi vsi-name
指定的VSI必須已經存在。不同VSI不能配置相同End.DT2UL SID。
¡ 配置End.OP SID。
opcode opcode end-op
¡ 配置End.M SID。
opcode { opcode | hex hex-opcode } end-m mirror-locator ipv6-address prefix-length
(1) 進入係統視圖。
system-view
(2) 開啟SRv6功能,並進入SRv6視圖。
segment-routing ipv6
(3) 配置普通類型的Locator段,並進入SRv6 Locator視圖。
locator locator-name [ pd prefix-number sub-prefix sub-prefix-length static static-length ]
(4) 配置End.DX2 SID。
opcode { opcode | hex hex-opcode } end-dx2 xconnect-group group-name connection connection-name
指定的交叉連接組和交叉連接必須已經存在。
opcode { opcode | hex hex-opcode } end-dx2 vsi vsi-name interface interface-type interface-number service-instance instance-id
指定的VSI必須已經存在。
從coc32類型的Locator可以分配帶COC標記的SRv6 SID(即End(COC32) SID、End.X(COC32) SID)和不帶COC標記的普通SRv6 SID。IPv6地址前綴長度必須大於公共前綴長度。
(1) 進入係統視圖。
system-view
(2) 開啟SRv6功能,並進入SRv6視圖。
segment-routing ipv6
(3) 開啟SRv6壓縮功能。
srv6 compress enable
缺省情況下,SRv6壓縮功能處於關閉狀態。
(4) 配置Locator段,並進入SRv6 Locator視圖。
locator locator-name [ ipv6-prefix ipv6-address prefix-length common-prefix common-prefix-length coc32 [ args args-length | static static-length ] * ]
(5) 配置Opcode段。
¡ 配置其他Opcode段。
具體配置請參見“1.8 配置普通的SRv6 SID”。
¡ 配置End SID。
opcode opcode end-coc32 [ no-psp ]
¡ 配置End.X SID。
opcode opcode end-x-coc32 interface interface-type interface-number nexthop nexthop-address [ no-psp ]
在支持壓縮與非壓縮共存的coc-both類型Locator段下,可以為壓縮的靜態SID和非壓縮的靜態SID指定相同opcode值。
(1) 進入係統視圖。
system-view
(2) 開啟SRv6功能,並進入SRv6視圖。
segment-routing ipv6
(3) 開啟SRv6壓縮功能。
srv6 compress enable
缺省情況下,SRv6壓縮功能處於關閉狀態。
(4) 配置Locator段,並進入SRv6 Locator視圖。
locator locator-name [ ipv6-prefix ipv6-address prefix-length common-prefix common-prefix-length coc-both [ non-compress-static non-compress-static-length ] [ args args-length | static static-length ] * ]
(5) (可選)配置預留的SRv6 SID起始值。
reserved-sid-start sid-value count reserved-sid-count
缺省情況下,未配置預留的SRv6 SID。
設備根據接收到的SRv6 TE Policy路由生成SRv6 TE Policy時,需要為該SRv6 TE Policy分配BSID。通過本命令限製可以被分配的BSID範圍,以保證該範圍內的SRv6 SID不會被其他協議所占用。
(6) 配置Opcode段。
¡ 配置其他Opcode段。
具體配置請參見“1.8 配置普通的SRv6 SID”。
¡ 配置End(COCNONE) SID。
opcode { opcode | hex hex-opcode } end-coc-none [ no-psp ]
End(COCNONE) SID從壓縮段空間內分配,作用同End SID。
¡ 配置End.X(COCNONE) SID。
opcode { opcode | hex hex-opcode } end-x-coc-none interface interface-type interface-number nexthop nexthop-ipv6-address [ no-psp ]
End.X(COCNONE) SID從壓縮段空間內分配,作用同End.X SID。
通過引用Locator段,IGP協議可以通告Locator段內的SRv6 SID。
如果需要通過IGP協議發布G-SID,則需要在IGP協議下開啟SRv6壓縮功能,以便向鄰居通告G-SID。
配置通過IS-IS通告SRv6 SID前,需要確保IS-IS開銷值的類型為wide、compatible或wide-compatible。關於IS-IS開銷值類型的配置請參見“三層技術-IP路由配置指導”中的“IS-IS”。
(1) 進入係統視圖。
system-view
(2) 進入IS-IS視圖。
isis [ process-id ] [ vpn-instance vpn-instance-name ]
(3) 進入IS-IS IPv6地址族視圖。
address-family ipv6 [ unicast ]
(4) 引用Locator段。
segment-routing ipv6 locator locator-name [ level-1 | level-2 ] [ auto-sid-disable ]
缺省情況下,未引用Locator段。
多次配置本功能,可以引用多個Locator段,從而通告多個SRv6 SID。
(5) 開啟IS-IS的SRv6壓縮功能。
srv6 compress enable [ level-1 | level-2 ]
缺省情況下,IS-IS的SRv6壓縮功能處於關閉狀態。
僅在通過IS-IS發布G-SID時,配置本功能。
(1) 進入係統視圖。
system-view
(2) 進入OSPFv3視圖。
ospfv3 [ process-id | vpn-instance vpn-instance-name ] *
(3) 引用Locator段。
segment-routing ipv6 locator locator-name [ auto-sid-disable ]
缺省情況下,未引用Locator段。
多次配置本功能,可以引用多個Locator段,從而通告多個SRv6 SID。
(4) (可選)配置OSPFv3報文中為SRv6擴展的TLV和標記位遵循私有協議的定義。
segment-routing ipv6 private-srv6-extensions compatible
OSPFv3報文中的SRv6 Capabilities TLV類型值、各種Sub TLV的類型值及標記位遵循草案draft-ietf-lsr-ospfv3-srv6-extensions-09中的定義。請確保OSPFv3的鄰居遵循了相同的標準,否則可能無法正常發布SRv6 Locator和SRv6 SID信息。
(5) (可選)配置SRv6 Locator TLV中的Locator字段為固定的128bit長度,兼容舊版本草案。
segment-routing ipv6 compatible locator-fixed-length
缺省情況下,SRv6 Locator LSA中的Locator字段為可變長度。
SRv6 Locator TLV中的Locator字段的長度在draft-ietf-lsr-ospfv3-srv6-extensions-12及以後版本草案中修改為可變長度,最長不超過128bit,Locator字段的長度可以根據配置的Locator段長度變化,但在draft-ietf-lsr-ospfv3-srv6-extensions-11及以前版本的草案中為固定的128 bit。
通過引用Locator段,可以通過BGP IPv4/IPv6單播路由通告Locator段內的SRv6 SID。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(4) 引用Locator段。
segment-routing ipv6 locator locator-name [ auto-sid-disable ]
缺省情況下,未引用Locator段。
BGP-EPE用來為域間路徑分配BGP Peer SID。Peer SID通過BGP LS擴展傳遞給網絡控製器。控製器通過對IGP SID和BGP Peer SID進行合理編排,實現跨域最優路徑轉發。
在設備上配置BGP-EPE功能後,該設備為相連的BGP對等體/對等體組分配SID,用來標識與本設備相連的特定BGP鄰居或鏈路。
如果未指定任何參數,則在BGP實例下通過segment-routing ipv6 egress-engineering locator命令配置的BGP-EPE引用Locator段內為對等體動態分配SRv6 SID。
對於同一對等體,配置本功能時:
· 指定參數locator時,多次執行本命令,最後一次執行的命令生效。
· 指定參數static-sid時,可以多次執行本命令,分別配置不同類型SRv6 SID;對於同一類型SRv6 SID,多次執行本命令,最後一次執行的命令生效。
為對等體配置靜態SRv6 SID時,指定的靜態SRv6 SID必須在BGP實例視圖下通過segment-routing ipv6 egress-engineering locator命令引用的Locator段內。用戶可通過display bgp egress-engineering ipv6命令查看靜態SRv6 SID是否生效。如果未生效,則表示該靜態SRv6 SID已經被其他協議占用。靜態SRv6 SID被其他協議占用以後,BGP EPE 不會再申請動態的SRv6 SID,待解除占用後,需要先執行undo peer egress-engineering srv6命令刪除該靜態SRv6 SID的配置,再執行peer egress-engineering srv6命令重新配置,該靜態SRv6 SID才能生效。
通過本命令為對等體指定靜態SRv6 SID和通過egress-engineering srv6 peer-set命令為BGP-EPE SRv6 Peer Set組指定靜態SRv6 SID時,配置的靜態SRv6 SID不能相同。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 開啟SRv6的BGP-EPE功能。
peer group-name egress-engineering srv6
peer ipv6-address [ prefix-length ] egress-engineering srv6 [ locator locator-name | static-sid { psp psp-sid | no-psp-usp no-psp-usp-sid } * ]
缺省情況下,SRv6的BGP-EPE功能處於關閉狀態。
BGP-EPE引用Locator段用來限定BGP-EPE SRv6 Peer Set組和開啟BGP-EPE功能的對等體所能分配的End.X SID範圍。在BGP-EPE SRv6 Peer Set組和對等體下配置的靜態SRv6 SID必須在本命令指定的Locator段範圍內。
配置本功能後,以下情況將從本功能指定的Locator段中動態分配End.X SID:
· 創建BGP-EPE SRv6 Peer Set組後,未配置靜態SRv6 SID。
· 對等體配置了peer egress-engineering srv6命令,但未指定locator參數,也未配置靜態SRv6 SID。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 配置BGP-EPE引用的Locator。
segment-routing ipv6 egress-engineering locator locator-name
缺省情況下,BGP-EPE未引用Locator。
當一台設備和多台設備建立BGP鄰居關係時,可以手工規劃鄰居組,即將一組BGP鄰居規劃為一個Set,基於該組分配PeerSet SID。通過PeerSet SID轉發流量時,可以在多個鄰居間負載分擔。
配置本功能前,對等體必須開啟SRv6 BGP-EPE功能。
配置BGP-EPE SRv6 Peer Set組前,必須在BGP實例視圖下通過segment-routing ipv6 egress-engineering locator命令配置BGP-EPE引用的Locator段:
· 從引用的Locator段內為BGP-EPE SRv6 Peer Set組動態分配SRv6 SID。
· 為BGP-EPE SRv6 Peer Set組靜態指定SRv6 SID時,指定的靜態SRv6 SID必須在引用的Locator段內。
對於同一Peer Set組,多次執行egress-engineering srv6 peer-set命令時:
· 對於同一類型SRv6 SID,最後一次執行的命令生效。
· 可以分別配置不同類型SRv6 SID,但不同類型的SRv6 SID不能相同。
通過本命令為BGP-EPE SRv6 Peer Set組指定靜態SRv6 SID和通過peer egress-engineering srv6命令為對等體指定靜態SRv6 SID時,配置的靜態SRv6 SID不能相同。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 創建BGP-EPE SRv6 Peer Set組。
egress-engineering srv6 peer-set peer-set-name [ static-sid { psp psp-sid | no-psp-usp no-psp-usp-sid } * ]
(4) 將對等體加入BGP-EPE SRv6 Peer Set組。
peer { ipv6-address [ prefix-length ] } peer-set srv6-peer-set-name
缺省情況下,對等體未加入BGP-EPE SRv6 Peer Set組。
不能通過重複執行peer peer-set命令修改對等體加入的BGP-EPE SRv6 Peer Set組。如需修改對等體加入的BGP-EPE SRv6 Peer Set組,請先通過undo peer peer-set命令將對等體從BGP-EPE SRv6 Peer Set組中刪除,再執行peer peer-set命令將對等體加入新BGP-EPE SRv6 Peer Set組。
SRv6 SID列表中的節點采用索引值唯一標識,並按照索引值從小到大的順序形成報文轉發路徑。在封裝SID列表時,SRv6會根據索引值自動分配SID編號,最小的索引值對應最大的SID編號,最大的索引值對應最小的SID編號。
配置SID列表時,請注意:
· 如果手工指定節點索引值,請確保離源節點越近的節點索引值越小。
· 如果不指定索引值,設備會按照配置順序為節點自動分配索引值,最先配置的節點索引值最小。配置時,請先配置離源節點最近的SID。
當SID列表被隧道引用後,如果修改SID列表會導致隧道從up變為down狀態,則SID列表下的配置不會立即下發,需要等待路由收斂後再下發配置。
(1) 進入係統視圖。
system-view
(2) 創建SRv6的SID列表,並進入對應的列表視圖。
ipv6 segment-routing sid-list list-name
(3) 配置SID列表中的節點。
sid [ index index-number ] ipv6-address
當節點使用SRv6 SID時,需要配置IGP協議通告該SRv6 SID,使得路由可達。
(1) 進入係統視圖。
system-view
(2) 創建SRv6模式的隧道接口,並進入對應的隧道接口視圖。
interface tunnel tunnel-number mode sr ipv6
(3) 指定隧道引用的SID列表。
tunnel sid-list list-name [ backup ]
缺省情況下,SRv6隧道未引用任何SID列表。
通過配置隧道轉發類,與隧道轉發類匹配的流量可以選擇相對應的隧道進行轉發,以便根據業務的不同提供不同的轉發服務。
配置本功能後:
· 設備會優先選擇與流量的隧道轉發類值相同的隧道轉發該流量。
· 如果存在多條與流量的隧道轉發類值相同的隧道,隻有一條流且為逐流轉發則隨機選擇一條隧道轉發;有多條流或者一條流但是為逐包轉發則相同轉發類的隧道進行負載分擔。
· 如果沒有與流量的隧道轉發類值相同的隧道,從比流量的轉發類值小的隧道中選擇轉發類值最大的隧道進行轉發。
(1) 進入係統視圖。
system-view
(2) 進入模式為SRv6隧道的Tunnel接口視圖。
interface tunnel tunnel-number [ mode sr ipv6 ]
(3) 配置隧道轉發類。
service-class class-value
缺省情況下,未配置隧道轉發類。
通過配置本命令,設備通過BFD會話檢測SRv6隧道,以便設備能夠快速發現隧道故障,及時進行相應地處理,如將流量切換到備份路徑。
開啟SRv6隧道echo模式的BFD檢測功能後,當BFD會話狀態為down時,SRv6隧道狀態為down;當BFD會話狀態為up時,SRv6隧道狀態為up。
(1) 進入係統視圖。
system-view
(2) 配置echo報文的源IPv6地址。
bfd echo-source-ipv6 ipv6-address
缺省情況下,未配置echo報文的源IPv6地址。,
為了避免對端發送大量的ICMP重定向報文造成網絡擁塞,建議不要將echo報文的源IPv6地址配置為屬於該設備任何一個接口所在網段。關於本命令的詳細介紹請參見“可靠性配置指導”中的“BFD”。
(3) 進入模式為SRv6隧道的Tunnel接口視圖。
interface tunnel tunnel-number [ mode sr ipv6 ]
(4) 開啟echo模式的BFD檢測功能。
tunnel bfd enable echo
缺省情況下,SRv6隧道echo模式BFD檢測功能處於關閉狀態。
通過配置靜態路由使流量沿SRv6隧道轉發,靜態路由命令的詳細介紹請參見“三層技術-IP路由命令參考”中的“靜態路由”。命令中指定的接口為SRv6隧道模式的Tunnel接口。
在Tunnel接口下配置本功能後,將會自動生成一條靜態路由,靜態路由目的地址是隧道的目的IP,出接口是配置本命令的Tunnel接口。
(1) 進入係統視圖。
system-view
(2) 進入模式為SRv6隧道的Tunnel接口視圖。
interface tunnel tunnel-number [ mode sr ipv6 ]
(3) 配置自動發布靜態路由功能。
tunnel route-static [ preference preference-value ]
缺省情況下,設備不會自動發布靜態路由。
為了將SRv6隧道發布到IGP中,並參與IGP路由的計算,使得流量可以通過SRv6隧道轉發,需要部署以下功能:
· IPv6 Route ID
IPv6 Route ID決定了發布到IGP路由中的SRv6隧道的源地址和目的地址。其中,SRv6隧道接口的目的地址必須與目的節點的IPv6 Route ID相同。
配置IPv6 Route ID後,會同時開啟IPv6 TE功能,即SRv6隧道參與IGP路由的計算後,流量可以通過SRv6隧道轉發。
· 自動路由發布
自動路由發布是指將SRv6隧道發布到IGP中,讓SRv6隧道參與IGP路由的計算。
IPv6 Router ID在IPv6網絡中必須唯一。
配置IS-IS的IPv6 Router ID前,需要確保IS-IS開銷值的類型為wide、compatible或wide-compatible。關於IS-IS開銷值類型的配置請參見“三層技術-IP路由配置指導”中的“IS-IS”。
在環形組網中,為了避免SRv6隧道上某條鏈路Down而產生路由環路,建議將SRv6隧道引用的SID列表中的SID配置為128位掩碼的主機路由,IGP協議不會將該SID對應的主機路由出接口設置為該SRv6隧道接口,從而避免環路的產生。
配置自動路由發布前,需要在SRv6隧道接口上開啟IGP協議的IPv6能力。
(1) 進入係統視圖。
system-view
(2) 進入IS-IS視圖。
isis [ process-id ] [ vpn-instance vpn-instance-name ]
(3) 進入IS-IS IPv6地址族視圖。
address-family ipv6 [ unicast ]
(4) 配置IS-IS的IPv6 Router ID並開啟IPv6 TE功能。
router-id ipv6-address
缺省情況下,未配置IS-IS的IPv6 router ID,IPv6 TE功能處於關閉狀態。
(1) 進入係統視圖。
system-view
(2) 進入模式為SRv6隧道的Tunnel接口視圖。
interface tunnel tunnel-number mode sr ipv6
(3) 開啟IGP Shortcut功能。
srv6 igp shortcut [ isis | ospf ]
缺省情況下,IGP Shortcut功能處於關閉狀態。
目前隻有IS-IS協議支持IGP Shortcut功能。
(4) 配置SRv6隧道的度量值。
srv6 igp metric { absolute value | relative value }
缺省情況下,SRv6隧道的度量值等於其IGP度量值。
如果源節點上等價主路徑的下一跳節點不同,則缺省情況下無法通過TI-LFA FRR計算出備份路徑。隻有將源節點上所有的等價主鏈路加入同一個SRLG(Shared Risk Link Group,共享風險鏈路組)才能通過TI-LFA FRR計算出備份路徑。
如圖1-20所示,源節點Device A到目的節點Device E之間存在三條等價路徑Link 1、Link 2和Link 3,且這三條等價路徑的下一跳節點不完全相同。這種情況下,如果希望使用TI-LFA FRR計算備份路徑,則需要將Link 1、Link 2和Link 3加入同一個SRLG。
圖1-20 IS-IS的ECMP場景下使用TI-LFA FRR計算備份路徑
TI-LFA FRR配置任務如下:
(1) 開啟TI-LFA FRR功能
(2) (可選)配置接口不參與TI-LFA計算
禁止源節點設備上路由的主下一跳出接口參與TI-LFA計算。
(3) (可選)配置SR防微環功能
(1) 進入係統視圖。
system-view
(2) 進入IS-IS視圖。
isis process-id
(3) 進入IS-IS IPv6單播地址族視圖。
address-family ipv6
(4) 開啟 IPv6 IS-IS的LFA快速重路由功能。
fast-reroute lfa [ level-1 | level-2 ]
缺省情況下,IPv6 IS-IS支持快速重路由功能處於關閉狀態。
(5) 開啟IPv6 IS-IS的TI-LFA快速重路由功能。
fast-reroute ti-lfa [ per-prefix ] [ route-policy route-policy-name | host ] [ level-1 | level-2 ]
缺省情況下,IPv6 IS-IS的TI-LFA FRR功能處於關閉狀態。
(6) (可選)配置快速重路由備份路徑優選方案的優先級。
fast-reroute tiebreaker { lowest-cost | node-protecting } preference preference [ level-1 | level-2 ]
缺省情況下,最小開銷路徑優選方案的優先級為20,節點保護優選方案的優先級為40。
(1) 進入係統視圖。
system-view
(2) 進入OSPFv3視圖。
ospfv3 [ process-id | vpn-instance vpn-instance-name ] *
(3) 開啟OSPFv3的LFA快速重路由功能。
fast-reroute { lfa [ abr-only ] | route-policy route-policy-name }
缺省情況下,OSPFv3支持快速重路由功能處於關閉狀態。
(4) 開啟OSPFv3的TI-LFA快速重路由功能。
fast-reroute ti-lfa [ per-prefix ] [ route-policy route-policy-name | host ]
缺省情況下,OSPFv3的TI-LFA FRR功能處於關閉狀態。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 禁止IPv6 IS-IS的接口參與TI-LFA計算。
isis ipv6 fast-reroute ti-lfa disable [ level-1 | level-2 ]
缺省情況下,允許IPv6 IS-IS的接口參與TI-LFA計算。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 禁止OSPFv3的接口參與TI-LFA計算。
ospfv3 fast-reroute ti-lfa disable [ instance instance-id ]
缺省情況下,允許OSPFv3的接口參與TI-LFA計算。
FRR正切防微環功能僅能解決正切微環的問題。
應用了TI-LFA快速重路由功能的組網環境中,若某節點或者鏈路發生故障,流量會切換到TI-LFA計算的備份路徑。但是,如果此時備份路徑上的設備還沒有完成收斂,則會在源節點(故障節點或者鏈路的前一節點)和備份路徑上的設備之間形成環路,直到備份路徑上的設備完成收斂。
為了解決上述問題,可以在開啟了TI-LFA FRR功能的節點上配置FRR正切防微環功能,當最優路徑上某個節點或者鏈路故障以後,首先流量切換到TI-LFA計算的備份路徑上轉發,避免丟包,然後本節點路由收斂後啟動延遲時間定時器(延遲時間可通過fast-reroute microloop-avoidance rib-update-delay命令配置),等待備份路徑上的所有設備均收斂完成且延遲時間定時器超時以後,本節點才將收斂後的轉發路徑下發FIB表,並將流量從TI-LFA計算的備份路徑切換到收斂後的轉發路徑上。
如果同時配置FRR正切防微環功能和SR防微環功能,則FRR正切防微環功能和SR防微環功能同時啟動延遲時間定時器,且FRR正切防微環功能優先生效,即先延遲下發FIB表項。此時存在兩種情況:
· 如果FRR正切防微環的延遲時間大於等於SR防微環的延遲時間,則FRR正切防微環的延遲時間定時器超時後立即切換到收斂後的路徑。
· 如果FRR正切防微環的延遲時間小於SR防微環的延遲時間,則FRR正切防微環的延遲時間定時器超時後繼續等待SR防微環的延遲時間定時器超時,再切換到收斂後的路徑。
(1) 進入係統視圖。
system-view
(2) 進入IS-IS視圖。
isis process-id
(3) 進入IS-IS IPv6單播地址族視圖。
address-family ipv6
(4) 開啟IS-IS的FRR正切防微環功能。
fast-reroute microloop-avoidance enable [ level-1 | level-2 ]
缺省情況下,IS-IS的FRR正切防微環功能處於關閉狀態。
(5) (可選)配置FRR正切防微環延遲時間。
fast-reroute microloop-avoidance rib-update-delay delay-time [ level-1 | level-2 ]
缺省情況下,FRR正切防微環延遲時間為5000毫秒。
SR防微環功能可以解決正切微環和回切微環的問題。
在網絡故障或故障恢複期間,路由都會重新收斂,由於網絡節點之間轉發狀態短暫不一致,各個設備收斂速度不同,可能存在轉發微環現象。配置SR的防微環功能後,在IGP收斂期間,設備會按照指定路徑轉發流量,轉發過程不依賴於各設備的路由收斂,從而避免產生環路。
為了保證IGP收斂有足夠的時間,可以配置SR防微環延遲時間,在此期間設備按照指定路徑轉發流量。在網絡故障恢複IGP完成收斂後,流量再通過IGP計算的路徑轉發。
(1) 進入係統視圖。
system-view
(2) 進入IS-IS視圖。
isis process-id
(3) 進入IS-IS IPv6單播地址族視圖。
address-family ipv6
(4) 開啟IPv6 IS-IS的SR防微環功能。
segment-routing microloop-avoidance enable [ level-1 | level-2 ]
缺省情況下,IPv6 IS-IS的SR防微環功能處於關閉狀態。
(5) (可選)配置IPv6 IS-IS的SR防微環延遲時間。
segment-routing microloop-avoidance rib-update-delay delay-time [ level-1 | level-2 ]
缺省情況下,IPv6 IS-IS的SR防微環延遲時間為5000毫秒。
(1) 進入係統視圖。
system-view
(2) 進入OSPFv3視圖。
ospfv3 [ process-id | vpn-instance vpn-instance-name ] *
(3) 開啟OSPFv3的SR防微環功能。
segment-routing microloop-avoidance enable
缺省情況下,OSPFv3的SR防微環功能處於關閉狀態。
(4) (可選)配置OSPFv3的SR防微環延遲時間。
segment-routing microloop-avoidance rib-update-delay delay-time
缺省情況下,OSPFv3的SR防微環延遲時間為5000毫秒。
SRv6可以配置兩種MTU值:
· Path MTU是報文在源節點到目的節點之間成功傳送所允許的最大IPv6 MTU。
· Reserved MTU是在TI-LFA等場景中為源節點規劃的預留MTU值。
由於IPv6報文在傳輸過程中不允許在中間節點分片轉發,當IPv6報文長度大於出接口MTU時,設備會丟棄報文;如果利用較小的MTU對通過SRv6隧道轉發的報文進行分片,會降低鏈路的帶寬利用率。為了避免報文過大而丟棄,同時又能充分利用接口MTU提高鏈路的帶寬利用率,可以合理規劃SRv6 Path MTU。
在TI-LFA場景中主路徑故障,流量切換到備份路徑時,設備會重新構造IPv6和SRH頭,增加了IPv6報文長度,可能會導致報文超過MTU限製而被丟棄。在源節點上引入Reserved MTU,可以在發送報文時為增加的SRH預留長度,以避免TI-LFA進行FRR備份路徑切換時報文因超大而丟棄。SRv6 Path MTU減去Reserved MTU稱作Active MTU,Active MTU必須大於等於1280字節。源節點發送的SRv6報文的大小同時受Active MTU和物理接口的IPv6 MTU控製,實際生效的MTU是二者的較小值。
(1) 進入係統視圖。
system-view
(2) 進入SRv6視圖。
segment-routing ipv6
(3) 配置SRv6的Reserved MTU值。
path-mtu reserved [ reserved-value ]
缺省情況下,未配置全局Path MTU預留值。
(4) 配置SRv6的Path MTU值。
path-mtu mtu-value
缺省情況下,SRv6的Path MTU值為1500。
在QoS的DiffServ服務模型中,報文在IP網絡和SRv6網絡之間相互傳輸時,IP優先級和DSCP優先級的處理模式分為:
· Pipe模式:當報文進入SRv6網絡時,原始報文會封裝新IPv6報文頭。Ingress設備會忽略其自身攜帶的IP或DSCP優先級,使用配置值service-class作為新IPv6報文頭的Traffic Class;離開SRv6網絡時,Egress設備剝離外層IPv6報文頭,不會修改原始報文的原有IP或DSCP優先級。在SRv6網絡中,依據配置的service-class對報文進行QoS調度。
· Short-pipe模式:報文進入和離開SRv6網絡時,處理方式與Pipe模式相同。與Pipe模式不同的是:
¡ 報文在SRv6網絡的Ingress節點至倒數第二跳,依據配置的service-class進行QoS調度。
¡ 在Egress節點,先剝離外層IPv6報文頭,再進行QoS調度。如果沒有配置優先級信任模式,則依據原始報文攜帶的IP或DSCP優先級進行QoS調度;如果配置了優先級信任模式,則依據信任的優先級進行QoS調度。
· Uniform模式:當報文進入SRv6網絡時,Ingress設備會將其攜帶的原始報文IP或DSCP優先級映射為外層封裝IPv6頭的Traffic Class;離開SRv6網絡時,Egress設備再將外層IPv6頭的Traffic Class映射為原始報文的IP或DSCP優先級。
在隧道的源節點和目的節點上配置diffserv-mode命令時,需要保證本端出方向的差分服務模式和對端入方向的差分服務模式一致,本端入方向的差分服務模式和對端出方向差分服務模式一致。
有關IP優先級、DSCP優先級的詳細介紹,請參見“QoS配置指導”中的“優先級映射”。
(1) 進入係統視圖。
system-view
(2) 進入SRv6視圖。
segment-routing ipv6
(3) 配置SRv6的差分服務模式。
diffserv-mode { ingress { pipe service-class | short-pipe service-class | uniform } egress { pipe | short-pipe | uniform } | { pipe service-class | short-pipe service-class | uniform } }
缺省情況下,SRv6的差分服務模式為Pipe模式,使用0作為新IPv6報文頭的Traffic Class。
在完成上述配置後,在任意視圖下執行display命令,可以顯示配置的SID列表信息。
表1-1 顯示與維護SRv6的運行狀態
操作 |
命令 |
顯示IPv6對等體的BGP-EPE信息 |
display bgp [ instance instance-name ] egress-engineering ipv6 [ ipv6-address ] |
顯示BGP Peer SRv6 Set組的信息 |
display bgp egress-engineering srv6 peer-set [ srv6-peer-set-name ] |
顯示SID列表信息 |
display ipv6 segment-routing sid-list [ list-name ] |
顯示IS-IS SRv6能力信息 |
display isis segment-routing ipv6 capability [ level-1 | level-2 ] [ process-id ] |
顯示IS-IS SRv6的Locator路由信息 |
display isis segment-routing ipv6 locator [ ipv6-address prefix-length ] [ [ level-1 | level-2 ] | verbose ] * [ process-id ] |
顯示IS-IS SRv6 Tunnel接口信息 |
display isis srv6 tunnel [ level-1 | level-2 ] [ process-id ] |
顯示OSPFv3 SRv6能力信息 |
display ospfv3 [ process-id ] segment-routing ipv6 capability |
顯示OSPFv3的SRv6 Tunnel接口信息 |
display ospfv3 [ process-id ] srv6 tunnel [ interface-number ] |
顯示SRv6轉發信息 |
(獨立運行模式) display segment-routing ipv6 forwarding [ entry-id ] [ slot slot-number ] (IRF模式) display segment-routing ipv6 forwarding [ entry-id ] [ chassis chassis-number slot slot-number ] |
顯示SRv6的Local SID列表信息 |
display segment-routing ipv6 local-sid { end | end-am | end-as | end-b6encaps | end-b6encapsred | end-b6insert | end-b6insertred | end-coc32 | end-dt2m | end-dt2u | end-dt2ul | end-dx2 | end-dx2l | end-m | end-op | end-t | end-x-coc32 } [ sid ] display segment-routing ipv6 local-sid { end-dt4 | end-dt46 | end-dt6 | end-dx4 | end-dx6 } [ sid | vpn-instance vpn-instance-name ] display segment-routing ipv6 local-sid end-x [ sid | interface interface-type interface-number [ nexthop nexthop-ipv6-address ] ] |
顯示SRv6的Locator信息 |
display segment-routing ipv6 locator [ locator-name ] |
顯示SRv6 Locator通過DHCPv6方式獲取的PD前綴相關信息 |
display segment-routing ipv6 pd-info |
· 設備Router A、Router B和Router C運行OSPFv3。
· 建立一條從Router A到Router C的SRv6隧道,通過SRv6隧道傳輸數據流量。
圖1-21 SRv6 End SID配置組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Router A |
Loop0 |
1::9/128 |
Router C |
Loop0 |
5::9/128 |
|
GE1/0/2 |
1::1/64 |
|
GE1/0/2 |
2::2/64 |
Router B |
Loop0 |
2::9/128 |
|
|
|
|
GE1/0/1 |
1::2/64 |
|
|
|
|
GE1/0/2 |
2::1/64 |
|
|
|
(1) 配置各接口的IP地址和掩碼,具體配置過程略
(2) 配置OSPFv3協議發布接口所在網段的路由,包括Loopback接口,具體配置過程略
配置完成後,在各設備上執行display ipv6 routing-table命令,可以看到相互之間都學到了到對方的路由,包括Loopback接口對應的主機路由。
(3) 配置Router A
# 配置SRv6 End SID。
[RouterA] segment-routing ipv6
[RouterA-segment-routing-ipv6] locator aa ipv6-prefix 100:1::1 120 static 8
[RouterA-segment-routing-ipv6-locator-aa] opcode 1 end
[RouterA-segment-routing-ipv6-locator-aa] quit
[RouterA-segment-routing-ipv6] quit
# 配置通過OSPFv3通告SRv6 SID。
[RouterA] ospfv3 1
[RouterA-ospfv3-1] segment-routing ipv6 locator aa
[RouterA-ospfv3-1] quit
# 配置SRv6 SID列表。
[RouterA] ipv6 segment-routing sid-list a
[RouterA-srv6-sid-list-a] sid 200:1::1
[RouterA-srv6-sid-list-a] sid 300:1::1
[RouterA-srv6-sid-list-a] quit
# 配置到Router C的SRv6隧道Tunnel0:源地址為Router A的Loopback0;配置Tunnel0引用的SID列表a。
[RouterA] interface tunnel 0 mode sr ipv6
[RouterA-Tunnel0] source loopback 0
[RouterA-Tunnel0] destination 5::9
[RouterA-Tunnel0] ipv6 address 6::6 64
[RouterA-Tunnel0] tunnel sid-list a
[RouterA-Tunnel0] quit
# 配置靜態路由,通過SRv6隧道轉發。
[RouterA] ipv6 route-static 99::1 64 tunnel 0
(4) 配置Router B
# 配置SRv6 End SID。
[RouterB] segment-routing ipv6
[RouterB-segment-routing-ipv6] locator bb ipv6-prefix 200:1::1 120 static 8
[RouterB-segment-routing-ipv6-locator-bb] opcode 1 end
[RouterB-segment-routing-ipv6-locator-bb] quit
[RouterB-segment-routing-ipv6] quit
# 配置通過OSPFv3通告SRv6 SID。
[RouterB] ospfv3 1
[RouterB-ospfv3-1] segment-routing ipv6 locator bb
[RouterB-ospfv3-1] quit
(5) 配置Router C
# 配置SRv6 End SID。
[RouterC] segment-routing ipv6
[RouterC-segment-routing-ipv6] locator cc ipv6-prefix 300:1::1 120 static 8
[RouterC-segment-routing-ipv6-locator-cc] opcode 1 end
[RouterC-segment-routing-ipv6-locator-cc] quit
[RouterC-segment-routing-ipv6] quit
# 配置通過OSPFv3通告SRv6 SID。
[RouterC] ospfv3 1
[RouterC-ospfv3-1] segment-routing ipv6 locator cc
[RouterC-ospfv3-1] quit
# Router C到Router A的IPv6 SID列表的配置過程與Router A類似,具體過程略。
# Router C到Router A方向上的隧道與靜態路由配置過程與Router A類似,具體過程略。
# 在Router A執行display ipv6 segment-routing sid-list命令,可以看到SRv6 SID列表的信息。
[RouterA] display ipv6 segment-routing sid-list
SID list name: a
SID information:
SID index Address
5 200:1::1
9 300:1::1
SID list usage on tunnels:
Tunnel number SID list role
0 Primary
# 查看到99::1的流量是通過隧道進行轉發。
[Router A] display ipv6 fib 99::1
FIB entry count: 1
Flag:
U:Usable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination: 99:: Prefix length: 64
Nexthop : :: Flags: US
Time stamp : 0x10 Label: Null
Interface : Tun0 Token: Invalid
· 設備Router A、Router B和Router C運行OSPFv3。
· 建立一條從Router A到Router C的SRv6隧道,通過SRv6隧道傳輸數據流量。
圖1-22 SRv6 End.X SID配置組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Router A |
Loop0 |
1::9/128 |
Router C |
Loop0 |
5::9/128 |
|
GE1/0/2 |
1::1/64 |
|
GE1/0/2 |
2::2/64 |
Router B |
Loop0 |
2::9/128 |
|
|
|
|
GE1/0/1 |
1::2/64 |
|
|
|
|
GE1/0/2 |
2::1/64 |
|
|
|
(1) 配置各接口的IP地址和掩碼,具體配置過程略
(2) 配置OSPFv3協議發布接口所在網段的路由,包括Loopback接口,具體配置過程略
配置完成後,在各設備上執行display ipv6 routing-table命令,可以看到相互之間都學到了到對方的路由,包括Loopback接口對應的主機路由。
(3) 配置Router A
# 配置SRv6 End.X SID。
[RouterA] segment-routing ipv6
[RouterA-segment-routing-ipv6] locator a1 ipv6-prefix 100:1::1:0 120 static 8
[RouterA-segment-routing-ipv6-locator-a1] opcode 1 end-x interface gigabitethernet 1/0/2 nexthop 1::2
[RouterA-segment-routing-ipv6-locator-a1] quit
[RouterA-segment-routing-ipv6] quit
# 配置通過OSPFv3通告SRv6 SID。
[RouterA] ospfv3 1
[RouterA-ospfv3-1] segment-routing ipv6 locator a1
[RouterA-ospfv3-1] quit
# 配置SRv6 SID列表。
[RouterA] ipv6 segment-routing sid-list A
[RouterA-srv6-sid-list-A] sid 200:1::1
[RouterA-srv6-sid-list-A] sid 300:1::1
[RouterA-srv6-sid-list-A] quit
# 配置到Router C的SRv6隧道Tunnel0:源地址為Router A的Loopback0;配置Tunnel0引用的SID列表A。
[RouterA] interface tunnel 0 mode sr ipv6
[RouterA-Tunnel0] source loopback 0
[RouterA-Tunnel0] destination 5::9
[RouterA-Tunnel0] ipv6 address 7::7 64
[RouterA-Tunnel0] tunnel sid-list A
[RouterA-Tunnel0] quit
# 配置靜態路由,通過SRv6隧道轉發。
[RouterA] ipv6 route-static 199::1 64 tunnel 0
(4) 配置Router B
# 配置SRv6 End.X SID。
[RouterB] segment-routing ipv6
[RouterB-segment-routing-ipv6] locator b1 ipv6-prefix 200:1::1:0 120 static 8
[RouterB-segment-routing-ipv6-locator-b1] opcode 1 end-x interface gigabitethernet 1/0/2 nexthop 2::2
[RouterB-segment-routing-ipv6-locator-b1] quit
[RouterB-segment-routing-ipv6] quit
# 配置通過OSPFv3通告SRv6 SID。
[RouterB] ospfv3 1
[RouterB-ospfv3-1] segment-routing ipv6 locator b1
[RouterB-ospfv3-1] quit
(5) 配置Router C
# 配置SRv6 End SID。
[RouterC] segment-routing ipv6
[RouterC-segment-routing-ipv6] locator c1 ipv6-prefix 300:1::1:0 120 static 8
[RouterC-segment-routing-ipv6-locator-c1] opcode 1 end
[RouterC-segment-routing-ipv6-locator-c1] quit
[RouterC-segment-routing-ipv6] quit
# 配置通過OSPFv3通告SRv6 SID。
[RouterC] ospfv3 1
[RouterC-ospfv3-1] segment-routing ipv6 locator c1
[RouterC-ospfv3-1] quit
# Router C到Router A的IPv6 SID列表的配置過程與Router A類似,具體過程略。
# Router C到Router A方向上的隧道與靜態路由配置過程與Router A類似,具體過程略。
# 在Router A執行display ipv6 segment-routing sid-list命令,可以看到SRv6 SID列表的信息。
[RouterA] display ipv6 segment-routing sid-list
SID list name: A
SID information:
SID index Address
5 200:1::1
9 300:1::1
SID list usage on tunnels:
Tunnel number SID list role
0 Primary
# 查看到199::1的流量是通過隧道進行轉發。
[Router A] display ipv6 fib 199::1
FIB entry count: 1
Flag:
U:Usable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination: 199:: Prefix length: 64
Nexthop : :: Flags: US
Time stamp : 0x17 Label: Null
Interface : Tun0 Token: Invalid
· 設備Device A、Device B、Device C和Device D運行IPv6 IS-IS實現互通。
· Device A、Device B、Device C和Device D配置IS-IS SRv6功能。
· 當設備Device A和Device C之間鏈路Link A故障,鏈路Link B上存在環路,流量無法通過Device D轉發到目的節點Device C。通過部署TI-LFA FRR消除環路,同時使流量可以快速切換到鏈路Link B。
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Device A |
Loop1 |
1::1/128 |
Device B |
Loop1 |
2::2/128 |
|
GE1/0/1 |
2000:1::1/64 |
|
GE1/0/1 |
2000:1::2/64 |
|
GE1/0/2 |
2000:4::1/64 |
|
GE1/0/2 |
2000:2::2/64 |
Device C |
Loop1 |
3::3/128 |
Device D |
Loop1 |
4::4/128 |
|
GE1/0/1 |
2000:3::3/64 |
|
GE1/0/1 |
2000:3::4/64 |
|
GE1/0/2 |
2000:2::3/64 |
|
GE1/0/2 |
2000:4::4/64 |
(1) 請按照圖1-23配置各接口的IP地址和子網掩碼,具體配置過程略
(2) 配置Device A
# 配置IS-IS協議實現網絡層互通,開銷值類型為wide。
<DeviceA> system-view
[DeviceA] isis 1
[DeviceA-isis-1] network-entity 00.0000.0000.0001.00
[DeviceA-isis-1] cost-style wide
[DeviceA-isis-1] address-family ipv6
[DeviceA-isis-1-ipv6] quit
[DeviceA-isis-1] quit
[DeviceA] interface gigabitethernet 1/0/1
[DeviceA-GigabitEthernet1/0/1] isis ipv6 enable 1
[DeviceA-GigabitEthernet1/0/1] isis cost 10
[DeviceA-GigabitEthernet1/0/1] quit
[DeviceA] interface gigabitethernet 1/0/2
[DeviceA-GigabitEthernet1/0/2] isis ipv6 enable 1
[DeviceA-GigabitEthernet1/0/2] isis cost 10
[DeviceA-GigabitEthernet1/0/2] quit
[DeviceA] interface loopback 1
[DeviceA-LoopBack1] isis ipv6 enable 1
[DeviceA-LoopBack1] quit
# 開啟SRv6功能,並配置Locator段。
[DeviceA] segment-routing ipv6
[DeviceA-segment-routing-ipv6] locator aaa ipv6-prefix 11:: 64 static 32
[DeviceA-segment-routing-ipv6-locator-aaa] quit
[DeviceA-segment-routing-ipv6] quit
# 配置IS-IS TI-LFA FRR。
[DeviceA] isis 1
[DeviceA-isis-1] address-family ipv6
[DeviceA-isis-1-ipv6] fast-reroute lfa
[DeviceA-isis-1-ipv6] fast-reroute ti-lfa
# 配置引用Locator段。
[DeviceA-isis-1-ipv6] segment-routing ipv6 locator aaa
[DeviceA-isis-1-ipv6] quit
[DeviceA-isis-1] quit
(3) 配置Device B
# 配置IS-IS協議實現網絡層互通,開銷值類型為wide。
<DeviceB> system-view
[DeviceB] isis 1
[DeviceB-isis-1] network-entity 00.0000.0000.0002.00
[DeviceB-isis-1] cost-style wide
[DeviceB-isis-1] address-family ipv6
[DeviceB-isis-1-ipv6] quit
[DeviceB-isis-1] quit
[DeviceB] interface gigabitethernet 1/0/1
[DeviceB-GigabitEthernet1/0/1] isis ipv6 enable 1
[DeviceB-GigabitEthernet1/0/1] isis cost 10
[DeviceB-GigabitEthernet1/0/1] quit
[DeviceB] interface gigabitethernet 1/0/2
[DeviceB-GigabitEthernet1/0/2] isis ipv6 enable 1
[DeviceB-GigabitEthernet1/0/2] isis cost 10
[DeviceB-GigabitEthernet1/0/2] quit
[DeviceB] interface loopback 1
[DeviceB-LoopBack1] isis ipv6 enable 1
[DeviceB-LoopBack1] quit
# 開啟SRv6功能,並配置Locator段。
[DeviceB] segment-routing ipv6
[DeviceB-segment-routing-ipv6] locator bbb ipv6-prefix 22:: 64 static 32
[DeviceB-segment-routing-ipv6-locator-bbb] quit
[DeviceB-segment-routing-ipv6] quit
# 配置IS-IS TI-LFA FRR。
[DeviceB] isis 1
[DeviceB-isis-1] address-family ipv6
[DeviceB-isis-1-ipv6] fast-reroute lfa
[DeviceB-isis-1-ipv6] fast-reroute ti-lfa
# 配置引用Locator段。
[DeviceB-isis-1-ipv6] segment-routing ipv6 locator bbb
[DeviceB-isis-1-ipv6] quit
[DeviceB-isis-1] quit
(4) 配置Device C
# 配置IS-IS協議實現網絡層互通,開銷值類型為wide。
<DeviceC> system-view
[DeviceC] isis 1
[DeviceC-isis-1] network-entity 00.0000.0000.0003.00
[DeviceC-isis-1] cost-style wide
[DeviceC-isis-1] address-family ipv6
[DeviceC-isis-1-ipv6] quit
[DeviceC-isis-1] quit
[DeviceC] interface gigabitethernet 1/0/1
[DeviceC-GigabitEthernet1/0/1] isis ipv6 enable 1
[DeviceC-GigabitEthernet1/0/1] isis cost 100
[DeviceC-GigabitEthernet1/0/1] quit
[DeviceC] interface gigabitethernet 1/0/2
[DeviceC-GigabitEthernet1/0/2] isis ipv6 enable 1
[DeviceC-GigabitEthernet1/0/2] isis cost 10
[DeviceC-GigabitEthernet1/0/2] quit
[DeviceC] interface loopback 1
[DeviceC-LoopBack1] isis ipv6 enable 1
[DeviceC-LoopBack1] quit
# 開啟SRv6功能,並配置Locator段。
[DeviceC] segment-routing ipv6
[DeviceC-segment-routing-ipv6] locator ccc ipv6-prefix 33:: 64 static 32
[DeviceC-segment-routing-ipv6-locator-ccc] quit
[DeviceC-segment-routing-ipv6] quit
# 配置IS-IS TI-LFA FRR。
[DeviceC] isis 1
[DeviceC-isis-1] address-family ipv6
[DeviceC-isis-1-ipv6] fast-reroute lfa
[DeviceC-isis-1-ipv6] fast-reroute ti-lfa
# 配置引用Locator段。
[DeviceC-isis-1-ipv6] segment-routing ipv6 locator ccc
[DeviceC-isis-1-ipv6] quit
[DeviceC-isis-1] quit
(5) 配置Device D
# 配置IS-IS協議實現網絡層互通,開銷值類型為wide。
<DeviceD> system-view
[DeviceD] isis 1
[DeviceD-isis-1] network-entity 00.0000.0000.0004.00
[DeviceD-isis-1] cost-style wide
[DeviceD-isis-1] address-family ipv6
[DeviceD-isis-1-ipv6] quit
[DeviceD-isis-1] quit
[DeviceD] interface gigabitethernet 1/0/1
[DeviceD-GigabitEthernet1/0/1] isis ipv6 enable 1
[DeviceD-GigabitEthernet1/0/1] isis cost 100
[DeviceD-GigabitEthernet1/0/1] quit
[DeviceD] interface gigabitethernet 1/0/2
[DeviceD-GigabitEthernet1/0/2] isis ipv6 enable 1
[DeviceD-GigabitEthernet1/0/2] isis cost 10
[DeviceD-GigabitEthernet1/0/2] quit
[DeviceD] interface loopback 1
[DeviceD-LoopBack1] isis ipv6 enable 1
[DeviceD-LoopBack1] quit
# 開啟SRv6功能,並配置Locator段。
[DeviceD] segment-routing ipv6
[DeviceD-segment-routing-ipv6] locator ddd ipv6-prefix 44:: 64 static 32
[DeviceD-segment-routing-ipv6-locator-ddd] quit
[DeviceD-segment-routing-ipv6] quit
# 配置IS-IS TI-LFA FRR。
[DeviceD] isis 1
[DeviceD-isis-1] address-family ipv6
[DeviceD-isis-1-ipv6] fast-reroute lfa
[DeviceD-isis-1-ipv6] fast-reroute ti-lfa
# 配置引用Locator段。
[DeviceD-isis-1-ipv6] segment-routing ipv6 locator ddd
[DeviceD-isis-1-ipv6] quit
[DeviceD-isis-1] quit
# 在Device A上查看3::3/128路由,可以看到TI-LFA備份下一跳信息。
[DeviceA] display isis route ipv6 3::3 128 verbose
Route information for IS-IS(1)
------------------------------
Level-1 IPv6 forwarding table
-----------------------------
IPv6 dest : 3::3/128
Flag : R/L/- Cost : 20
Admin tag : - Src count : 2
Nexthop : FE80::4449:7CFF:FEE0:206
Interface : GE1/0/1
TI-LFA:
Interface : GE1/0/2
BkNextHop : FE80::4449:91FF:FE42:407
LsIndex : 0x80000001
Backup label stack(top->bottom): {44::1:0:1}
Nib ID : 0x24000006
Flags: D-Direct, R-Added to Rib, L-Advertised in LSPs, U-Up/Down Bit Set
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!