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

| 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傳輸效率提升方法。

主站蜘蛛池模板: 栖霞市| 扎囊县| 泰来县| 武邑县| 英德市| 巨鹿县| 招远市| 筠连县| 庐江县| 镇巴县| 定州市| 承德县| 东乌珠穆沁旗| 三江| 扎赉特旗| 壤塘县| 伊宁县| 柳林县| 满洲里市| 子长县| 育儿| 游戏| 青海省| 明星| 荔浦县| 梧州市| 佳木斯市| 庆元县| 南昌市| 如东县| 乾安县| 安泽县| 罗定市| 淳安县| 阳西县| 滨海县| 稻城县| 四子王旗| 清涧县| 辽源市| 纳雍县|