01、為什么需要Flex-Algo
傳統(tǒng)IGP(Interior Gateway Protocol,內(nèi)部網(wǎng)關(guān)協(xié)議)基于鏈路的開銷值來計(jì)算到達(dá)目的地的最優(yōu)路徑。在鏈路開銷值不能作為路徑優(yōu)劣的唯一標(biāo)準(zhǔn)時(shí),傳統(tǒng)IGP的路由計(jì)算方法無法滿足用戶的不同需求,主要表現(xiàn)在如下兩點(diǎn):
-
-
- 流媒體、視頻會(huì)議等業(yè)務(wù)對(duì)網(wǎng)絡(luò)
時(shí)延
- 要求高,需要IGP根據(jù)鏈路時(shí)延進(jìn)行路徑計(jì)算。如果網(wǎng)絡(luò)中的某些鏈路存在故障風(fēng)險(xiǎn),需要IGP在路徑計(jì)算時(shí)排除具有故障風(fēng)險(xiǎn)的鏈路。
-
在IGP無法滿足上述需求的情況下,Flex-Algo(Flexible Algorithm,靈活算法)技術(shù)應(yīng)運(yùn)而生。采用Flex-Algo算法,用戶可以根據(jù)需要自由選擇最優(yōu)路徑計(jì)算方法和度量值類型,并可以為不同的業(yè)務(wù)規(guī)劃最優(yōu)路徑,從而達(dá)到靈活控制路徑的選擇、實(shí)現(xiàn)流量工程等目的。
以下拓?fù)浞謩e展示了基于IGP metric、時(shí)延delay和帶寬的路徑規(guī)劃。
基于IGP metric
基于時(shí)延delay
基于帶寬
02、什么是Flex-Algo算法
用戶可以自定義的Flex-Algo算法范圍是Flex-Algo(128)~Flex-Algo(255),可以有128個(gè)。其中每個(gè)Flex-Algo算法可以使用Flex-Algo(k)表示,k是FAID(FA算法標(biāo)識(shí)符)。Flex-Algo(k)在參與這個(gè)算法的邏輯拓?fù)渲芯哂斜镜匾饬x,并且具有唯一定義。
Flex-Algo(k)的定義包含三個(gè)要素:
03、Flex-Algo是如何工作的
以IGP采用IS-IS(Intermediate System-to-Intermediate System,中間系統(tǒng)到中間系統(tǒng))、SR采用SR-MPLS的場景為例介紹Flex-Algo的工作流程。
01、定義算法
在參與Flex-Algo(k)計(jì)算的邏輯拓?fù)渲?,需要存在Flex-Algo(k)的定義,即前面介紹的Flex-Algo(k)的三個(gè)要素。不需要每個(gè)節(jié)點(diǎn)都定義Flex-Algo(k),只需要部分(至少一個(gè))節(jié)點(diǎn)定義并通告到拓?fù)渲小榱吮WC拓?fù)鋬?nèi)所有節(jié)點(diǎn)對(duì)于Flex-Algo(k)的定義統(tǒng)一,避免定義沖突,建議在其中的2個(gè)節(jié)點(diǎn)進(jìn)行相同的定義,并通告出來。IS-IS使用攜帶IS-IS FAD Sub-TLV的協(xié)議報(bào)文來定義Flex-Algo(k)。其中,F(xiàn)AD的含義是靈活算法定義(Flexible Algorithm Definition)。
02、通告算法
網(wǎng)絡(luò)拓?fù)?/a>中的節(jié)點(diǎn)將如下內(nèi)容通告到拓?fù)渲小?/p>
03、生成拓?fù)?/p>
每個(gè)Flex-Algo(k)都會(huì)生成自己的邏輯拓?fù)?,拓?fù)渖傻脑瓌t如下。 04、計(jì)算路徑 Flex-Algo(k)將采用其定義中的計(jì)算類型和度量類型進(jìn)行路徑計(jì)算。Flex-Algo支持ECMP負(fù)荷分擔(dān),可以根據(jù)情況生成多條具有相同F(xiàn)lex-Algo代價(jià)的路徑。任何參與Flex-Algo(k)的節(jié)點(diǎn)都會(huì)執(zhí)行路徑計(jì)算。如果節(jié)點(diǎn)參與多個(gè)Flex-Algo,將針對(duì)每個(gè)Flex-Algo進(jìn)行獨(dú)立計(jì)算。所有節(jié)點(diǎn)都默認(rèn)支持Flex-Algo(0),即支持傳統(tǒng)的IGP路徑計(jì)算。節(jié)點(diǎn)會(huì)將路徑計(jì)算的結(jié)果通過Flex-Algo(k)關(guān)聯(lián)的Prefix SID加入到自己的MPLS-MPLS轉(zhuǎn)發(fā)表,不會(huì)加入到任何IP-MPLS或者IP-IP的轉(zhuǎn)發(fā)表。 SR TE Policy可以通過ODN(On-Demand Next-hop,按需下一跳)功能自動(dòng)創(chuàng)建。如果在設(shè)備收到的BGP路由中,Color屬性與ODN模板相匹配,則根據(jù)該ODN模板自動(dòng)創(chuàng)建一個(gè)SR TE Policy。ODN模板關(guān)聯(lián)Flex-Algo算法后,F(xiàn)lex-Algo算法會(huì)自動(dòng)為ODN創(chuàng)建的SR TE Policy的候選路徑計(jì)算SID列表。在R1上創(chuàng)建ODN模板,并且關(guān)聯(lián)了Flex-Algo算法。 在該場景中,F(xiàn)AD為: 在SR Policy的Candidate Path下配置Segment List,內(nèi)容為數(shù)據(jù)包經(jīng)過R5、R3。由于該SR Policy關(guān)聯(lián)了以上的Flex-Algo算法,數(shù)據(jù)包轉(zhuǎn)發(fā)路徑如下所示。 通過不同的FAD定義與SR的綁定,可以自由控制轉(zhuǎn)發(fā)路徑,達(dá)到軟切片的效果。Flex-Algo算法可以應(yīng)用于SRv6和SR網(wǎng)絡(luò),可以為SRv6 Policy和SR Policy直接計(jì)算出SID列表,滿足流量工程的需求。部分(至少一個(gè))節(jié)點(diǎn)將本地定義的算法通告到拓?fù)渲?。該通告是通過定義算法中提到的IS-IS FAD Sub-TLV來實(shí)現(xiàn)的。IS-IS FAD Sub-TLV只能在同一個(gè)IS-IS級(jí)別里傳播,不能傳播到該級(jí)別區(qū)域之外。所有節(jié)點(diǎn)將本節(jié)點(diǎn)擁有的Flex-Algo能力,即所有支持的算法ID通告到拓?fù)渲?。該通告是通過SR-Algorithm Sub-TLV來實(shí)現(xiàn)的。SR-Algorithm Sub-TLV只能在同一個(gè)IS-IS級(jí)別里傳播,不能傳播到該級(jí)別區(qū)域之外。所有節(jié)點(diǎn)將Prefix SID通告到拓?fù)渲?,其中包含了Prefix SID和算法ID的關(guān)聯(lián)關(guān)系。這個(gè)通告是通過Prefix-SID Sub-TLV來實(shí)現(xiàn)的。
節(jié)點(diǎn)范圍:只有參與Flex-Algo(k)的節(jié)點(diǎn)才會(huì)被包含在Flex-Algo(k)拓?fù)渲?,包括Flex-Algo(k)定義的本地產(chǎn)生者和通告接收者。鏈路范圍:如果在Flex-Algo(k)的定義中配置了約束條件,如Admin-group或者SRLG,拓?fù)鋵⒏鶕?jù)這些約束條件進(jìn)行調(diào)整,保留或排除部分鏈路。如果拓?fù)渲械哪承╂溌凡痪哂蠪lex-Algo(k)所使用的度量值,這些鏈路也會(huì)被排除。
04、Flex-Algo是如何應(yīng)用的
使用SPF算法?;赥E開銷計(jì)算到達(dá)目的地的最小開銷路徑。R2和R6之間的鏈路不支持TE開銷值,因此該鏈路被排除。排除親和屬性為“紅色”的鏈路。R1與R2之間的鏈路親和屬性為紅色,R3與R5之間的鏈路親和屬性也為紅色,因此R1與R2之間的鏈路、R3與R5之間的鏈路都被排除。