官术网_书友最值得收藏!

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]

主站蜘蛛池模板: 南安市| 乌鲁木齐县| 茌平县| 墨竹工卡县| 财经| 稷山县| 成都市| 霍林郭勒市| 长顺县| 嘉峪关市| 广水市| 万源市| 怀来县| 永修县| 马龙县| 宁陕县| 兴安盟| 康定县| 越西县| 南充市| 湾仔区| 弥勒县| 罗田县| 邵东县| 绥中县| 横山县| 开江县| 温州市| 巴塘县| 宜丰县| 乌什县| 合山市| 五大连池市| 阜新市| 比如县| 穆棱市| 达拉特旗| 自贡市| 喀什市| 兴和县| 吉首市|