- SRv6網(wǎng)絡部署指南
- 金閩偉 李振斌主編
- 1972字
- 2025-07-11 16:39:34
| 2.2 SRv6傳輸效率提升的方法及工作范例 |
2.2.1 REPLACE-C-SID Flavor及工作范例
1.REPLACE-C-SID Flavor
在正常的SRv6轉發(fā)動作中,節(jié)點收到SRv6報文時,需要更新SL(如果SL大于0)指向下一個128 bit的SID,并將其更新到IPv6報文頭的目的地址字段,再轉發(fā)報文。但將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]。當節(jié)點處理攜帶REPLACE-C-SID Flavor的SID時,表示需要將Segment List中下一個C-SID更新到目的地址字段,再轉發(fā)報文。
由于一個C-SID Container可能包含多個C-SID,為了定位下一個C-SID在C-SID Container中的具體位置,需要新增SI字段,其在SRv6報文頭IPv6 DA字段中Arguments的最低位,如圖2-7所示。

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

圖2-8 REPLACE-C-SID對應的C-SID Container編碼格式
在轉發(fā)的過程中,只有當目的地址為REPLACE-C-SID Flavor SID時,節(jié)點才會讀取該SID的Arguments的SI字段。此時,SL指示了SRH中活躍的C-SID Container位置,而SI指示了C-SID在該C-SID Container中的位置。節(jié)點在處理REPLACE-C-SID Flavor的SID時,將相應更新SL和SI,并將位于SRH[SL][SI]的下一個C-SID更新到IPv6報文頭的目的地址,替換目的地址中的C-SID,完成目的地址更新后進行轉發(fā)。
簡化的REPLACE-C-SID Flavor的偽代碼如下所示。詳細偽代碼請參見標準文檔(參考文獻[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];
當節(jié)點收到一個數(shù)據(jù)報文,其IPv6目的地址是一個REPLACE-C-SID Flavor SID時,如果其中SI不等于0,則對SI減1,獲取當前C-SID Container中的下一個C-SID,并更新到IPv6 DA字段;如果SI等于0,則意味著當前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的更新示例
具體的實現(xiàn)中,在更新IPv6 DA之前,還會判斷下一個C-SID是否為停止符0,以停止壓縮處理。若在SL > 0的情況下終止壓縮,節(jié)點將會把下一個128 bit SID更新到IPv6 DA并繼續(xù)轉發(fā),因此REPLACE-C-SID Flavor的SID可以與128 bit SID混合編碼在同一個SRH中,支持從普通128 bit SRv6平滑演進到SRv6傳輸效率的提升方案。
2.REPLACE-C-SID Flavor工作范例
為了方便深入理解,下面通過簡單的范例,介紹REPLACE-C-SID Flavor方法。假設該方法使用的網(wǎng)絡拓撲如圖2-10所示,其中N1到N9所有節(jié)點都支持REPLACE-C-SID方法。

圖2-10 網(wǎng)絡拓撲
網(wǎng)絡初始化之后,節(jié)點配置REPLACE-C-SID Flavor的SID,并通過IGP、BGP、BGP-LS等協(xié)議發(fā)布到網(wǎng)絡中或上送給控制器。
配置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ī)則

在這個簡單的案例中,假設報文將從N1轉發(fā)到N9,Segment List共包含9個SID。
● 2001:DB8:A:0:1:1:: ~ 2001:DB8:A:0:8:1::,從節(jié)點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é)點上完成SID的編碼之后的REPLACE-C-SID Flavor方法轉發(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方法轉發(fā)示意
REPLACE-C-SID Flavor方法的轉發(fā)流程簡述如下。
① 節(jié)點N1封裝好數(shù)據(jù)包后,查詢轉發(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設置為1,SI設置為3,N1將SI指向的2:1復制到IPv6 DA中更新C-SID,生成了新的IPv6 DA 2001:DB8:A:0:2:1::3,然后將報文從2001:DB8:A:0:1:1::指定接口發(fā)送到節(jié)點N2。
② 節(jié)點N2收到數(shù)據(jù)包時,目的地址匹配到本節(jié)點發(fā)布的攜帶REPLACE-C-SID Flavor的End.X SID。此時,SL=1,SI=3,大于0,所以按照SID的指示更新,SI減1,設置為2。然后將SI指向的3:1復制到IPv6 DA中更新C-SID,生成了新的IPv6 DA 2001:DB8:A:0:3:1::2,并將數(shù)據(jù)包從2001:DB8:A:0:2:1::指定接口轉發(fā)到節(jié)點N3。
③ 同理,后續(xù)節(jié)點N3~N8基于SL和SI的值,將對應的C-SID更新到IPv6 DA字段,然后通過指定接口轉發(fā)。
④ 節(jié)點N9收到數(shù)據(jù)包時,基于目的地址查表,匹配到FIB中的REPLACE-C-SID Flavor的End.DT4 SID 2001:DB8:A:0:9:10::對應的轉發(fā)表項,然后按照SID的指令將外層報文頭解封裝,并在指定的VPN中查表轉發(fā)。
3.總結
REPLACE-C-SID可支持32 bit C-SID和16 bit C-SID方案。32 bit C-SID可用于任意規(guī)模的網(wǎng)絡,提供更大的編碼范圍,且每個C-SID與Locator Block組成的前綴均為可路由前綴,保留了SRv6與SR-MPLS相比可路由的優(yōu)點。16 bit C-SID適用于中小規(guī)模網(wǎng)絡,需要遵從GIB/LIB的地址規(guī)劃,才能提供足夠的編址空間。但由于單個C-SID可能從LIB中分配,因此并非所有的C-SID與Locator Block組成的前綴都可路由,從而失去了SRv6可路由的優(yōu)勢,地址規(guī)劃也相對復雜。
由于REPLACE-C-SID第一個SID用于攜帶Locator Block等信息,沒有進行壓縮,這意味著采用REPLACE-C-SID方法時,對Locator Block的長度沒有限制要求,也就是對網(wǎng)絡的IPv6地址規(guī)劃不會引入額外的特殊要求,這有利于簡化SRv6網(wǎng)絡的地址規(guī)劃。
與NEXT-C-SID相比,因為REPLACE-C-SID的第一個SID沒有壓縮,所以當Segment List中SID數(shù)目較少時,傳輸效率提升的效果不夠明顯。但是REPLACE-C-SID的Locator Block信息不需要冗余攜帶,因此當Segment List中SID數(shù)量增加時,傳輸效率提升的效果會跟NEXT-C-SID逐漸相當,甚至更好。
綜上所述,REPLACE-C-SID可以很好地平衡SRv6網(wǎng)絡的可擴展性和傳輸效率,并且最大限度地保留SRv6的路由能力及優(yōu)勢,因此在需要SRv6傳輸效率提升的場景中推薦優(yōu)先考慮REPLACE-C-SID 32 bit傳輸效率提升方法。
- 物聯(lián)網(wǎng)工程規(guī)劃技術
- 計算機網(wǎng)絡安全實訓教程(第二版)
- 互聯(lián)網(wǎng)基礎資源技術與應用發(fā)展態(tài)勢(2021—2023)
- 通信原理及MATLAB/Simulink仿真
- Working with Legacy Systems
- Learning Windows 8 Game Development
- 數(shù)據(jù)血緣分析原理與實踐
- 現(xiàn)代通信系統(tǒng)(第5版)
- 全聯(lián)網(wǎng)標識服務
- SRv6網(wǎng)絡部署指南
- Enterprise ApplicationDevelopment with Ext JSand Spring
- Intelligent Mobile Projects with TensorFlow
- Corona SDK Application Design
- 一本書讀懂移動物聯(lián)網(wǎng)
- OpenShift Cookbook