- SRv6網(wǎng)絡(luò)部署指南
- 金閩偉 李振斌主編
- 18字
- 2025-07-11 16:39:34
| 2.2 SRv6傳輸效率提升的方法及工作范例 |
2.2.1 REPLACE-C-SID Flavor及工作范例
1.REPLACE-C-SID Flavor
在正常的SRv6轉(zhuǎn)發(fā)動作中,節(jié)點(diǎn)收到SRv6報(bào)文時,需要更新SL(如果SL大于0)指向下一個128 bit的SID,并將其更新到IPv6報(bào)文頭的目的地址字段,再轉(zhuǎn)發(fā)報(bào)文。但將C-SID編碼到SRH中之后,每次更新的SID不一定是128 bit SID,還可能是32 bit C-SID或16 bit C-SID,因而還需要定義32 bit C-SID或16 bit C-SID更新的動作。
為了給SRv6 C-SID提供處理指示,IETF草案draft-ietf-spring-srv6-srh-compression定義了REPLACE-C-SID Flavor[4]。當(dāng)節(jié)點(diǎn)處理攜帶REPLACE-C-SID Flavor的SID時,表示需要將Segment List中下一個C-SID更新到目的地址字段,再轉(zhuǎn)發(fā)報(bào)文。
由于一個C-SID Container可能包含多個C-SID,為了定位下一個C-SID在C-SID Container中的具體位置,需要新增SI字段,其在SRv6報(bào)文頭IPv6 DA字段中Arguments的最低位,如圖2-7所示。

圖2-7 SI字段的位置
以32 bit C-SID方案為例,REPLACE-C-SID Flavor對應(yīng)的C-SID Container編碼格式如圖2-8所示。

圖2-8 REPLACE-C-SID對應(yīng)的C-SID Container編碼格式
在轉(zhuǎn)發(fā)的過程中,只有當(dāng)目的地址為REPLACE-C-SID Flavor SID時,節(jié)點(diǎn)才會讀取該SID的Arguments的SI字段。此時,SL指示了SRH中活躍的C-SID Container位置,而SI指示了C-SID在該C-SID Container中的位置。節(jié)點(diǎn)在處理REPLACE-C-SID Flavor的SID時,將相應(yīng)更新SL和SI,并將位于SRH[SL][SI]的下一個C-SID更新到IPv6報(bào)文頭的目的地址,替換目的地址中的C-SID,完成目的地址更新后進(jìn)行轉(zhuǎn)發(fā)。
簡化的REPLACE-C-SID Flavor的偽代碼如下所示。詳細(xì)偽代碼請參見標(biāo)準(zhǔn)文檔(參考文獻(xiàn)[4])。
If ipv6 DA is a REPLACE-C-SID Flavor SID if DA.Arg.SI!=0 DA[Block..Block+31] = SRH[SL][--DA.Arg.SI]; else: DA.Arg.SI = 128/NF-1 //NF為Node ID與Function ID的長度之和 DA[Block..Block+31] = SRH[--SL][DA.Arg.SI];
當(dāng)節(jié)點(diǎn)收到一個數(shù)據(jù)報(bào)文,其IPv6目的地址是一個REPLACE-C-SID Flavor SID時,如果其中SI不等于0,則對SI減1,獲取當(dāng)前C-SID Container中的下一個C-SID,并更新到IPv6 DA字段;如果SI等于0,則意味著當(dāng)前C-SID Container中已經(jīng)沒有需要處理的C-SID,此時需要對SL減1,并更新SI為最大的Index(如使用32 bit C-SID,最大的Index是3),然后獲取下一個C-SID Container中的第一個C-SID,并更新到IPv6 DA字段。相比普通的SRv6,REPLACE-C-SID Flavor將Segment List從一個一維數(shù)組升級為二維數(shù)組。以32 bit C-SID為例,REPLACE-C-SID Flavor的更新示例如圖2-9所示。

圖2-9 REPLACE-C-SID Flavor的更新示例
具體的實(shí)現(xiàn)中,在更新IPv6 DA之前,還會判斷下一個C-SID是否為停止符0,以停止壓縮處理。若在SL > 0的情況下終止壓縮,節(jié)點(diǎn)將會把下一個128 bit SID更新到IPv6 DA并繼續(xù)轉(zhuǎn)發(fā),因此REPLACE-C-SID Flavor的SID可以與128 bit SID混合編碼在同一個SRH中,支持從普通128 bit SRv6平滑演進(jìn)到SRv6傳輸效率的提升方案。
2.REPLACE-C-SID Flavor工作范例
為了方便深入理解,下面通過簡單的范例,介紹REPLACE-C-SID Flavor方法。假設(shè)該方法使用的網(wǎng)絡(luò)拓?fù)淙鐖D2-10所示,其中N1到N9所有節(jié)點(diǎn)都支持REPLACE-C-SID方法。

圖2-10 網(wǎng)絡(luò)拓?fù)?/p>
網(wǎng)絡(luò)初始化之后,節(jié)點(diǎn)配置REPLACE-C-SID Flavor的SID,并通過IGP、BGP、BGP-LS等協(xié)議發(fā)布到網(wǎng)絡(luò)中或上送給控制器。
配置SID可以遵循表2-1的規(guī)則。所有SID的Locator Block長度均為64 bit,C-SID長度為32 bit,其中Node ID和Function ID長度均為16 bit,Arguments長度為32 bit。
表2-1 REPLACE-C-SID Flavor方法配置SID的規(guī)則

在這個簡單的案例中,假設(shè)報(bào)文將從N1轉(zhuǎn)發(fā)到N9,Segment List共包含9個SID。
● 2001:DB8:A:0:1:1:: ~ 2001:DB8:A:0:8:1::,從節(jié)點(diǎn)N1~N8分配的8個REPLACE-C-SID Flavor的End.X SID。
● 2001:DB8:A:0:9:10::為REPLACE-C-SID Flavor的End.DT4 SID。
圖2-11給出了在N1節(jié)點(diǎn)上完成SID的編碼之后的REPLACE-C-SID Flavor方法轉(zhuǎn)發(fā)示意,其中IPv6 SA為2001:DB8:B:1::1。在Reduced模式下,Segment List不攜帶第一個SID,所以End.X SID 2001:DB8:A:0:1:1::被直接放置在IPv6 DA字段,未被編碼在Segment List中。

圖2-11 REPLACE-C-SID Flavor方法轉(zhuǎn)發(fā)示意
REPLACE-C-SID Flavor方法的轉(zhuǎn)發(fā)流程簡述如下。
① 節(jié)點(diǎn)N1封裝好數(shù)據(jù)包后,查詢轉(zhuǎn)發(fā)表并發(fā)現(xiàn)IPv6 DA值2001:DB8:A:0:1:1::是本地發(fā)布的End.X SID,且攜帶REPLACE-C-SID Flavor,該SID指示更新下一個32 bit的C-SID,并從該SID綁定的接口發(fā)送到N2。此時,SL=2,SI=0,所以SL減1設(shè)置為1,SI設(shè)置為3,N1將SI指向的2:1復(fù)制到IPv6 DA中更新C-SID,生成了新的IPv6 DA 2001:DB8:A:0:2:1::3,然后將報(bào)文從2001:DB8:A:0:1:1::指定接口發(fā)送到節(jié)點(diǎn)N2。
② 節(jié)點(diǎn)N2收到數(shù)據(jù)包時,目的地址匹配到本節(jié)點(diǎn)發(fā)布的攜帶REPLACE-C-SID Flavor的End.X SID。此時,SL=1,SI=3,大于0,所以按照SID的指示更新,SI減1,設(shè)置為2。然后將SI指向的3:1復(fù)制到IPv6 DA中更新C-SID,生成了新的IPv6 DA 2001:DB8:A:0:3:1::2,并將數(shù)據(jù)包從2001:DB8:A:0:2:1::指定接口轉(zhuǎn)發(fā)到節(jié)點(diǎn)N3。
③ 同理,后續(xù)節(jié)點(diǎn)N3~N8基于SL和SI的值,將對應(yīng)的C-SID更新到IPv6 DA字段,然后通過指定接口轉(zhuǎn)發(fā)。
④ 節(jié)點(diǎn)N9收到數(shù)據(jù)包時,基于目的地址查表,匹配到FIB中的REPLACE-C-SID Flavor的End.DT4 SID 2001:DB8:A:0:9:10::對應(yīng)的轉(zhuǎn)發(fā)表項(xiàng),然后按照SID的指令將外層報(bào)文頭解封裝,并在指定的VPN中查表轉(zhuǎn)發(fā)。
3.總結(jié)
REPLACE-C-SID可支持32 bit C-SID和16 bit C-SID方案。32 bit C-SID可用于任意規(guī)模的網(wǎng)絡(luò),提供更大的編碼范圍,且每個C-SID與Locator Block組成的前綴均為可路由前綴,保留了SRv6與SR-MPLS相比可路由的優(yōu)點(diǎn)。16 bit C-SID適用于中小規(guī)模網(wǎng)絡(luò),需要遵從GIB/LIB的地址規(guī)劃,才能提供足夠的編址空間。但由于單個C-SID可能從LIB中分配,因此并非所有的C-SID與Locator Block組成的前綴都可路由,從而失去了SRv6可路由的優(yōu)勢,地址規(guī)劃也相對復(fù)雜。
由于REPLACE-C-SID第一個SID用于攜帶Locator Block等信息,沒有進(jìn)行壓縮,這意味著采用REPLACE-C-SID方法時,對Locator Block的長度沒有限制要求,也就是對網(wǎng)絡(luò)的IPv6地址規(guī)劃不會引入額外的特殊要求,這有利于簡化SRv6網(wǎng)絡(luò)的地址規(guī)劃。
與NEXT-C-SID相比,因?yàn)镽EPLACE-C-SID的第一個SID沒有壓縮,所以當(dāng)Segment List中SID數(shù)目較少時,傳輸效率提升的效果不夠明顯。但是REPLACE-C-SID的Locator Block信息不需要冗余攜帶,因此當(dāng)Segment List中SID數(shù)量增加時,傳輸效率提升的效果會跟NEXT-C-SID逐漸相當(dāng),甚至更好。
綜上所述,REPLACE-C-SID可以很好地平衡SRv6網(wǎng)絡(luò)的可擴(kuò)展性和傳輸效率,并且最大限度地保留SRv6的路由能力及優(yōu)勢,因此在需要SRv6傳輸效率提升的場景中推薦優(yōu)先考慮REPLACE-C-SID 32 bit傳輸效率提升方法。
- 解析QUIC/HTTP3:未來互聯(lián)網(wǎng)的基石
- 物聯(lián)網(wǎng)工程規(guī)劃技術(shù)
- 智能網(wǎng)聯(lián)汽車V2X與智能網(wǎng)聯(lián)設(shè)施I2X
- 物聯(lián)網(wǎng)識別技術(shù)
- OpenLayers Cookbook
- 大話社交網(wǎng)絡(luò)
- React:Cross-Platform Application Development with React Native
- 物聯(lián)網(wǎng)長距離無線通信技術(shù)應(yīng)用與開發(fā)
- 網(wǎng)絡(luò)安全應(yīng)急響應(yīng)技術(shù)實(shí)戰(zhàn)指南
- 物聯(lián)網(wǎng)與智能家居
- 網(wǎng)絡(luò)設(shè)計(jì)與應(yīng)用(第2版)
- 異構(gòu)蜂窩網(wǎng)絡(luò)關(guān)鍵理論與技術(shù)
- Selenium WebDriver 3 Practical Guide
- 區(qū)塊鏈社區(qū)運(yùn)營手冊
- 區(qū)塊鏈技術(shù)與應(yīng)用:打造分布式商業(yè)新生態(tài)