- SRv6網(wǎng)絡(luò)部署指南
- 金閩偉 李振斌主編
- 3052字
- 2025-07-11 16:39:33
2.1.2 基本原理
為了提升SRv6的傳輸效率,在2019年左右,業(yè)界提出了多種方案,如G-SRv6(Generalized SRv6,通用SRv6)、uSID(Micro SID,微型SID)、Unified SID(統(tǒng)一SID)、vSID(variable length SID,可變長度SID)和CRH(Compact Routing Header,精簡路由報(bào)文頭)。面對眾多的技術(shù)方案,業(yè)界展開了激烈的討論。為了解決這個問題,完成方案收斂和標(biāo)準(zhǔn)化,IETF SPRING工作組臨時設(shè)立了一個SRv6傳輸效率提升方案設(shè)計(jì)小組,專門討論SRv6傳輸效率提升的需求,并分析當(dāng)前的方案。設(shè)計(jì)組由來自中國移動、中國電信、華為、思科(Cisco)、瞻博網(wǎng)絡(luò)(Juniper)、諾基亞(Nokia)、中興通訊等公司的專家組成。經(jīng)過一年多的討論,設(shè)計(jì)組達(dá)成共識,形成了關(guān)于SRv6傳輸效率提升需求的IETF工作組草案draft-ietf-spring-compression-requirement[20],以及方案比較分析等工作組草案draft-ietf-spring-compression-analysis[21]。
IETF草案draft-ietf-spring-compression-requirement詳細(xì)描述了SRv6傳輸效率提升方案需要滿足的需求,這些需求均不依賴任何方案,以確保在方案的需求滿足度評估中公平對待所有方案。基于以上需求,草案draft-ietf-spring-compression-analysis詳細(xì)分析了所有方案對需求的滿足度。
由于G-SRv6與uSID在技術(shù)原理上十分相似,且能在一個SRH中共用,因此兩個方案融合成一個方案——C-SID(Compressed-SID,壓縮SID)。最終,經(jīng)過接近兩年的激烈討論,各個方案的競爭逐漸收斂,IETF SPRING工作組終于形成共識,將C-SID方案接收為工作組草案draft-ietf-spring-srv6-srh-compression[4]。該草案目前已經(jīng)進(jìn)入RFC發(fā)布環(huán)節(jié),即將在2025年5月發(fā)布成RFC。
IETF草案draft-ietf-spring-srv6-srh-compression定義了C-SID的基本原理,并通過定義一些新的Behavior和Flavor來實(shí)現(xiàn)SRv6傳輸效率的提升[4]。整體上看,C-SID是一種完全兼容SRv6架構(gòu)的傳輸效率提升方案,主要定義了3類Flavor:REPLACE-C-SID Flavor、NEXT-C-SID Flavor,以及兩者的組合NEXT&REPLACE-C-SID Flavor。其中,REPLACE-C-SID Flavor在業(yè)界又被稱為G-SRv6,NEXT-C-SID Flavor在業(yè)界又被稱為uSID。這兩種Flavor的技術(shù)原理十分相似,都是通過刪除SID的冗余信息來減少開銷,差別主要在于C-SID的編排和更新方式不同。但是,這兩種Flavor都只能在特定的條件下提供最佳傳輸效率,NEXT&REPLACE-C-SID Flavor則可以規(guī)避二者的缺點(diǎn),得到最佳的傳輸效率。
后來,出于標(biāo)準(zhǔn)化節(jié)奏的考慮,NEXT&REPLACE-C-SID Flavor從工作組草案中拆出,轉(zhuǎn)移到個人草案中繼續(xù)標(biāo)準(zhǔn)化。目前,華為等廠商設(shè)備已經(jīng)實(shí)現(xiàn)包含NEXT&REPLACE-C-SID在內(nèi)的完整C-SID方案,可以滿足所有業(yè)務(wù)場景和多廠商互通的需求,且在任何條件下均可提供最佳的傳輸效率。下面將詳細(xì)介紹C-SID方案的技術(shù)細(xì)節(jié)。
1.C-SID
一般情況下,一個網(wǎng)絡(luò)域中使用的SRv6 SID均從同一個用于SRv6部署的地址塊中分配而來,因此這些SID都具有公共前綴(Common Prefix),在標(biāo)準(zhǔn)文稿中,這部分前綴被稱為Locator Block。如果IPv6報(bào)文頭的目的地址中的SID已經(jīng)攜帶了公共前綴,那么SRH中的SID無須攜帶多個重復(fù)的公共前綴,從而減少報(bào)文開銷。此外,如果多個SID的后半部分(如Arguments或Padding)均為0,那么會帶來大量的冗余信息,減少這部分信息也可以減少報(bào)文開銷。因此,在地址更新時,只需要更新差異部分,即可恢復(fù)出可用的SID作為目的地址,進(jìn)而指導(dǎo)轉(zhuǎn)發(fā)。完整SID的差異部分稱為C-SID。完整SID和C-SID的關(guān)系如圖2-3所示。

圖2-3 完整SID和C-SID的關(guān)系
根據(jù)IETF草案draft-ietf-spring-srv6-srh-compression的定義,C-SID由對應(yīng)SID的Node ID和Function ID部分構(gòu)成[4],有16 bit和32 bit兩種長度。從硬件處理性能、后向兼容和可擴(kuò)展性方面綜合考慮,C-SID的理想長度是32 bit。但在中小規(guī)模網(wǎng)絡(luò)中,也可以使用16 bit C-SID來減少開銷。
一個C-SID可以攜帶不同的Flavor,比如REPLACE-C-SID、NEXT-C-SID和NEXT&REPLACE-C-SID。不同的Flavor對應(yīng)的編碼格式和處理方式略有不同,其差異在于C-SID在C-SID Container(容器)中的編碼。
2.C-SID Container
C-SID Container是一個128 bit的字段,可用于攜帶包含一個或者多個C-SID的信息。Flavor不同,對應(yīng)的C-SID Container的編排方式可能就不同。比如在NEXT-C-SID Flavor中,每個C-SID Container將承載一個Locator Block和若干個C-SID。而在REPLACE-C-SID Flavor的定義中,一個C-SID Container可以攜帶一個完整的SID或者最多攜帶4個32 bit的C-SID或8個16 bit的C-SID。對于攜帶多個C-SID的C-SID Container,若C-SID未填滿C-SID Container,通過補(bǔ)充0對齊128 bit。而NEXT&REPLACE-C-SID Flavor的C-SID Container編碼規(guī)則是上述兩種Flavor的結(jié)合:第一個C-SID Container沿用NEXT-C-SID Flavor的規(guī)則(即一個Locator Block后跟隨多個C-SID),后續(xù)的C-SID Container沿用REPLACE-C-SID Flavor的規(guī)則(即整個C-SID Container均為C-SID,不攜帶Locator Block)。3種Flavor的C-SID Container編碼格式如圖2-4所示。

圖2-4 3種Flavor的C-SID Container編碼格式
說明
圖2-4中Locator Block的長度為64 bit。
圖2-4中假設(shè)C-SID均剛好填滿C-SID Container。實(shí)際上存在C-SID Container未填滿的情況,可使用Padding補(bǔ)充。
綜上所述,一個C-SID Container可以有4種格式,如圖2-5所示。
● 一個C-SID Container中包含多個C-SID,比如4個32 bit的C-SID。以32 bit的C-SID為例,如圖2-5(a)和圖2-5(b)所示。圖2-5(a)和圖2-5(b)為REPLACE-C-SID Flavor C-SID Container格式,也是NEXT&REPLACE-C-SID第一個C-SID Container之后的C-SID Container格式。
● 一個C-SID Container中包含一個Locator Block和若干C-SID,如圖2-5(c)和圖2-5(d)所示。圖2-5(c)和圖2-5(d)為NEXT-C-SID Flavor C-SID Container的格式,也是NEXT&REPLACE-C-SID Flavor第一個C-SID Container的格式。其中,圖2-5(d)是普通SRv6 SID的編碼格式,也是REPLACE-C-SID Flavor第一個C-SID Container的格式。

圖2-5 攜帶32 bit C-SID的C-SID Container
簡言之,SRv6傳輸效率提升的實(shí)現(xiàn)過程就是將包含多個C-SID的Segment List信息按照對應(yīng)Flavor的編排方式寫入C-SID Container。在轉(zhuǎn)發(fā)過程中,節(jié)點(diǎn)根據(jù)SID對應(yīng)的Flavor編碼規(guī)則提取C-SID,還原出原始的SID,然后進(jìn)行轉(zhuǎn)發(fā)。
C-SID的編排和對應(yīng)C-SID的更新方式由Flavor具體定義,簡要介紹如下。
● REPLACE-C-SID Flavor主要將C-SID按順序放在C-SID Container中,并通過在IPv6 DA(Destination Address,目的地址)中增加指針SI(SID Index,SID索引)來明確C-SID在對應(yīng)C-SID Container中的相對位置。節(jié)點(diǎn)在處理這類SID時,根據(jù)SL與SI將對應(yīng)的C-SID替換成IPv6 DA中的C-SID來實(shí)現(xiàn)更新。
● NEXT-C-SID Flavor主要在每個C-SID Container中都攜帶一個Locator Block和一系列C-SID。節(jié)點(diǎn)在處理這類SID時,通過將當(dāng)前的C-SID彈出,并將后續(xù)的C-SID往前移位來更新IPv6 DA。該處理方法與MPLS標(biāo)簽棧彈出類似,隨著報(bào)文轉(zhuǎn)發(fā),C-SID不斷彈出。若SRH中沒有攜帶完整的C-SID Container列表,就會在轉(zhuǎn)發(fā)結(jié)束后,丟失完整的Segment List信息。
● NEXT&REPLACE-C-SID Flavor則結(jié)合了REPLACE-C-SID Flavor和NEXT-C-SID Flavor的處理方法。如果IPv6 DA的C-SID Container里存在多個C-SID,則執(zhí)行NEXT-C-SID的處理動作,將C-SID彈出,后續(xù)C-SID左移組成新的IPv6 DA。當(dāng)IPv6 DA中的C-SID更新至最后一個(此C-SID是C-SID Container的最后一個C-SID)時,說明該C-SID Container已經(jīng)全部處理完畢,就進(jìn)入REPLACE-C-SID的處理邏輯,從后續(xù)的C-SID Container中取出C-SID替換IPv6 DA中的C-SID。
下面將具體介紹這3種Flavor的處理細(xì)節(jié),讀者可以閱讀IETF草案[4]獲取更多信息。
3.GIB和LIB
C-SID的典型長度是32 bit或16 bit。當(dāng)C-SID長度為32 bit時,可以包含16 bit Node ID和16 bit Function ID,或者其他長度的Node ID和Function ID的組合。因?yàn)?2 bit C-SID可以提供較為充足的編碼空間,所以能夠方便地支持大規(guī)模網(wǎng)絡(luò)的SRv6部署。
但當(dāng)C-SID長度為16 bit時,無論如何分配,同時編碼Node ID和Function ID都存在可擴(kuò)展性問題。例如,16 bit C-SID中的8 bit用于Node ID,8 bit用于Function ID,這樣僅能支持256個節(jié)點(diǎn)的編碼和每個節(jié)點(diǎn)256個Function的編碼,無法支持大規(guī)模網(wǎng)絡(luò)的SRv6部署。
為了解決16 bit C-SID的可擴(kuò)展性問題,可以將一個16 bit C-SID僅編碼為Node ID或Function ID,而非同時編碼兩種信息。這就意味著Node ID和Function ID都具有16 bit的編碼空間,但是為了避免全局可路由的Node ID和只有本地語義的Function ID的數(shù)值沖突,需要對16 bit C-SID的空間進(jìn)行劃分,于是引入了GIB(Global Identifiers Block,全局標(biāo)識符塊)和LIB(Local Identifiers Block,本地標(biāo)識符塊):從GIB里面分配的C-SID為可路由的C-SID,可用于分配Node ID;從LIB中分配的C-SID僅本地有效,可用于分配Function ID。
因?yàn)橛辛薌IB和LIB的空間劃分,所以在采用16 bit C-SID傳輸效率提升方案時,還需要全網(wǎng)規(guī)劃這兩個空間。這個劃分方法是靈活的,可根據(jù)現(xiàn)網(wǎng)具體情況進(jìn)行劃分,比如,可以將16 bit的前4 bit用作劃分單元,將16 bit空間劃分為16等份12 bit的空間,如圖2-6所示。GIB可以占據(jù)前10份12 bit空間(0x0000~0x9FFF),而LIB占用后6份12 bit空間(0xA000~0xFFFF)。

圖2-6 GIB和LIB的空間劃分
需要注意的是,從LIB中分配的C-SID不具備全局路由能力,因此需要跨越多個節(jié)點(diǎn)到達(dá)某一個節(jié)點(diǎn)時,必須使用對應(yīng)該節(jié)點(diǎn)的從GIB中分配的C-SID。如果還要指向該節(jié)點(diǎn)的特定Function,則必須使用對應(yīng)該節(jié)點(diǎn)的、從GIB中分配的C-SID,以及對應(yīng)Function的、從LIB中分配的C-SID的組合(即2個16 bit C-SID的組合)。
4.適用于SRv6傳輸效率提升的SID類型
在RFC 8986中定義了End、End.X等多種SID的Behavior[2]。這些Behavior均可以與REPLACE-C-SID、NEXT-C-SID和NEXT&REPLACE-C-SID Flavor相結(jié)合,支持對應(yīng)的傳輸效率提升方法。
此外,其他類型的SRv6 SID的SID Behavior,如SFC相關(guān)的SRv6 SID的Behavior也可以與以上的3種Flavor結(jié)合,組成適用于SRv6傳輸效率提升的SID[22]。
- 數(shù)據(jù)通信網(wǎng)絡(luò)實(shí)踐:基礎(chǔ)知識與交換機(jī)技術(shù)
- 物聯(lián)網(wǎng)(IoT)基礎(chǔ):網(wǎng)絡(luò)技術(shù)+協(xié)議+用例
- 物聯(lián)網(wǎng)安全(原書第2版)
- Windows Server 2003 Active Directory Design and Implementation: Creating, Migrating, and Merging Networks
- 網(wǎng)絡(luò)互聯(lián)技術(shù)(實(shí)踐篇)
- 物聯(lián)網(wǎng)時代
- 圖解手機(jī)元器件維修技巧
- 工業(yè)互聯(lián)網(wǎng)創(chuàng)新實(shí)踐
- 5G+區(qū)塊鏈
- Hands-On Bitcoin Programming with Python
- 圖神經(jīng)網(wǎng)絡(luò)前沿
- 人際網(wǎng)絡(luò)
- 現(xiàn)場綜合化網(wǎng)絡(luò)運(yùn)營與維護(hù):運(yùn)營商數(shù)字化轉(zhuǎn)型技術(shù)與實(shí)踐
- 中國信息化年鑒2017
- 智能物聯(lián)安防視頻技術(shù)基礎(chǔ)與應(yīng)用