SDN中的Segment Routing
云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展造成了流量模型的巨大變化,傳統(tǒng)封閉固化的網(wǎng)絡(luò)很難適應(yīng)這種業(yè)務(wù)場(chǎng)景下的動(dòng)態(tài)需求,主要體現(xiàn)在以下幾個(gè)方面:
- 網(wǎng)絡(luò)設(shè)備與承載應(yīng)用的割裂導(dǎo)致網(wǎng)絡(luò)無(wú)法快速響應(yīng)業(yè)務(wù)對(duì)網(wǎng)絡(luò)的需求,網(wǎng)絡(luò)業(yè)務(wù)面向設(shè)備而非面向應(yīng)用。
- 流量分布不均勻造成帶寬浪費(fèi),設(shè)備依據(jù)最短路徑策略轉(zhuǎn)發(fā),不具備全局視角,無(wú)法動(dòng)態(tài)感知網(wǎng)絡(luò)負(fù)載的變化。
- 多廠家設(shè)備互操作的難度,造成E2E業(yè)務(wù)變更和故障定位的困難,客戶設(shè)備成本和運(yùn)維成本不斷攀升。
傳統(tǒng)基于RSVP的流量工程通過(guò)IGP協(xié)議的擴(kuò)展,可以根據(jù)考慮鏈路負(fù)載的TED和LSDB進(jìn)行CSPF計(jì)算選路,但由于協(xié)議復(fù)雜、部署繁瑣,設(shè)備之間要維護(hù)協(xié)議狀態(tài)導(dǎo)致實(shí)際應(yīng)用中受到了很大限制。
SDN可以實(shí)現(xiàn)用戶對(duì)網(wǎng)絡(luò)開(kāi)放能力、可編程能力、集中控制能力、可視化能力的訴求,成為下一代網(wǎng)絡(luò)的最佳選擇,本文針對(duì)其中的流量調(diào)度技術(shù)做簡(jiǎn)要介紹。
相對(duì)于Openflow更加激進(jìn)的SDN演進(jìn)策略,由于對(duì)現(xiàn)網(wǎng)改動(dòng)過(guò)大無(wú)法平滑遷移,基于Segment Routing(以下簡(jiǎn)稱SR)方式的流量調(diào)度技術(shù)逐漸成為業(yè)界共識(shí)。SR不需要像LDP和RSVP一樣維護(hù)協(xié)議狀態(tài),簡(jiǎn)化了控制面。基于源路由方式使流量路徑在源端注入,其它設(shè)備無(wú)需感知。使用MPLS和IPV6擴(kuò)展頭作為轉(zhuǎn)發(fā)面,支持網(wǎng)絡(luò)的SDN平滑過(guò)渡。結(jié)合BGP-LS和PCEP南向協(xié)議,快速響應(yīng)業(yè)務(wù)對(duì)網(wǎng)絡(luò)的需求。
IP源路由
SR的轉(zhuǎn)發(fā)面非常簡(jiǎn)單,甚至都不能稱作新技術(shù),在IP選項(xiàng)頭中就有源路由選項(xiàng)的定義。普通報(bào)文轉(zhuǎn)發(fā)依據(jù)路由,無(wú)論是通過(guò)策略路由、最短路徑算法還是BGP路徑屬性,目的地址確定了,轉(zhuǎn)發(fā)路徑也就確定了。如果需要影響流量轉(zhuǎn)發(fā)路徑,強(qiáng)制流量松散的經(jīng)過(guò)某些指定轉(zhuǎn)發(fā)節(jié)點(diǎn),甚至超越路由之上嚴(yán)格指定轉(zhuǎn)發(fā)路徑,就可以利用IP選項(xiàng)頭中的源路由選項(xiàng)。
圖一顯示某條src為10.0.0.1,dst為30.0.0.1的流量在兩種情況下的轉(zhuǎn)發(fā)路徑,紅色路徑標(biāo)識(shí)基于最短路徑的路由轉(zhuǎn)發(fā),藍(lán)色路徑標(biāo)識(shí)基于源路由選項(xiàng)的轉(zhuǎn)發(fā)。node1始發(fā)的流量的目的地址為第一個(gè)松散節(jié)點(diǎn)本地地址,真實(shí)的目的地址保存在選項(xiàng)頭中,并將選項(xiàng)頭指針指向該地址。報(bào)文先通過(guò)最短路徑轉(zhuǎn)發(fā)至node3接口20.0.0.1,中間設(shè)備只做路由轉(zhuǎn)發(fā)。node3處理選項(xiàng)頭,將其中指針指向的地址30.0.0.1和原始目的地址20.0.0.1替換,并將指針偏移4字節(jié)指向下一處地址,然后按照真實(shí)的目的地址進(jìn)行路由轉(zhuǎn)發(fā)。本實(shí)例做了簡(jiǎn)化只有一處松散節(jié)點(diǎn),可根據(jù)實(shí)際需要設(shè)置多個(gè)松散節(jié)點(diǎn)形成地址棧,但由于IP頭部的長(zhǎng)度限制選項(xiàng)頭并不能無(wú)限擴(kuò)充。
圖一 源路由選項(xiàng)轉(zhuǎn)發(fā)
SR的轉(zhuǎn)發(fā)面
到目前為止我們還沒(méi)有真正的談到SR,但上文的IP源路由正是SR轉(zhuǎn)發(fā)面的核心,只是從選項(xiàng)頭中的地址棧轉(zhuǎn)變?yōu)镮P頭外部的MPLS標(biāo)簽棧,甚至IPV6場(chǎng)景依然在擴(kuò)展頭中沿用地址棧的方式。
SR中存在兩種類型的標(biāo)簽:節(jié)點(diǎn)標(biāo)簽和鄰接標(biāo)簽,后面控制面會(huì)詳細(xì)闡述,暫時(shí)可以認(rèn)為節(jié)點(diǎn)標(biāo)簽唯一標(biāo)識(shí)SR域中的一臺(tái)設(shè)備,全局有效,鄰接標(biāo)簽與傳統(tǒng)的LDP標(biāo)簽類似,由鄰接的下游設(shè)備分配標(biāo)識(shí)本地出口,只在本地有效。有了節(jié)點(diǎn)標(biāo)簽就可以明確指定流量必須經(jīng)過(guò)哪臺(tái)設(shè)備,有了鄰接標(biāo)簽就可以指定流量在本設(shè)備的出口,至此我們可以擺脫路由的限制隨意的定義流量路徑,但又避免了復(fù)雜的路由策略,因?yàn)榱髁柯窂绞窃谠垂?jié)點(diǎn)通過(guò)標(biāo)簽棧定義,其它設(shè)備不需感知。
如圖二所示SR域內(nèi)的每臺(tái)設(shè)備都分配了唯一的節(jié)點(diǎn)標(biāo)簽,標(biāo)簽value由索引和SRGB(Segment Routing Global Block)相加得出,其中SRGB是設(shè)定用于SR的標(biāo)簽塊,圖中做了簡(jiǎn)化用索引值代替標(biāo)簽值,黃色虛線表示node4和node6為node5分配的直連鏈路的鄰接標(biāo)簽,所有這些標(biāo)簽值統(tǒng)稱為SID(Segment ID),最終在源端壓入的標(biāo)簽棧就是SID。紅色路徑依舊標(biāo)識(shí)路由轉(zhuǎn)發(fā)路徑,當(dāng)node2和node4之間的鏈路不滿足應(yīng)用需求時(shí),源端請(qǐng)求使用藍(lán)色的繞行路徑,于是在node1上壓入①所示的SID標(biāo)簽棧(Segment List),標(biāo)簽值5表示流量必須經(jīng)過(guò)node5;報(bào)文到達(dá)node2時(shí)進(jìn)行標(biāo)簽swap,swap后外層標(biāo)簽依然是5,報(bào)文到達(dá)node3時(shí)基于PHP原則將標(biāo)簽5進(jìn)行POP;報(bào)文到達(dá)node5時(shí)外層標(biāo)簽是6001,繼續(xù)進(jìn)行標(biāo)簽6001的POP轉(zhuǎn)發(fā)至node4;報(bào)文達(dá)到node4時(shí)外層標(biāo)簽6進(jìn)行POP轉(zhuǎn)發(fā)至node6,完成流量的繞行轉(zhuǎn)發(fā)。標(biāo)簽在swap時(shí)的轉(zhuǎn)發(fā)依據(jù)其實(shí)就是路由計(jì)算出的最短路徑,可以看到SR的轉(zhuǎn)發(fā)面和IP源路由的思想高度一致。
圖二 SR轉(zhuǎn)發(fā)面
SR的控制面
上文提到了兩種類型的SID,節(jié)點(diǎn)ID(Node SID)和鄰接ID(Adjacency SID)。節(jié)點(diǎn)ID是一種特殊的前綴ID(Prefix SID),前綴ID標(biāo)識(shí)一個(gè)由IGP路由計(jì)算出的地址前綴,而節(jié)點(diǎn)ID一般被限制為設(shè)備的loopback接口。由于節(jié)點(diǎn)ID唯一標(biāo)識(shí)一臺(tái)設(shè)備,需要全局唯一,而鄰接ID只標(biāo)識(shí)設(shè)備的本地出口,在鄰接路由器之間分配本地有效。SID的分配可以采用路由協(xié)議擴(kuò)展支持或者由控制器統(tǒng)一分配,流量路徑由源端節(jié)點(diǎn)注入,可以看到SR的控制面是一種無(wú)狀態(tài)并且極為簡(jiǎn)單的實(shí)現(xiàn)。
SDN中的應(yīng)用
有了路徑控制的技術(shù),還需要針對(duì)應(yīng)用的流量選路,才能完成網(wǎng)絡(luò)按應(yīng)用需求的隨動(dòng),這里引入兩種技術(shù)BGP-LS和PCEP。
BGP-LS是BGP擴(kuò)展的一個(gè)地址族,宣告IGP協(xié)議及其TE擴(kuò)展生成的鏈路狀態(tài),包含拓?fù)溥B接、端口帶寬及鏈路負(fù)載等,控制器通過(guò)維護(hù)TED和LSDB就具備了全網(wǎng)的網(wǎng)絡(luò)狀態(tài)視圖。當(dāng)某個(gè)應(yīng)用請(qǐng)求滿足一定SLA需求的路徑時(shí),就會(huì)通過(guò)PCEP協(xié)議進(jìn)行路徑計(jì)算請(qǐng)求,當(dāng)然該請(qǐng)求也可以由控制器主動(dòng)發(fā)起。
如圖三所示node1節(jié)點(diǎn)作為PCC向控制器PCE發(fā)起路徑請(qǐng)求,由控制器根據(jù)BGP-LS通告的鏈路狀態(tài)選取符合應(yīng)用要求的鏈路,通過(guò)PCEP擴(kuò)展對(duì)SR的支持生成相應(yīng)的Segment List回應(yīng)node1節(jié)點(diǎn),node1通過(guò)將應(yīng)用流量壓入控制器下發(fā)的標(biāo)簽棧實(shí)現(xiàn)最終的路徑控制。
圖三 SDN選路控制
本文介紹了SR在SDN中的應(yīng)用,通過(guò)簡(jiǎn)單的協(xié)議擴(kuò)展,實(shí)現(xiàn)了類似Openflow的靈活控制,對(duì)于SR域和非SR域可以利用over的過(guò)渡策略實(shí)現(xiàn)平滑遷移,是WAN或MAN向SDN演進(jìn)的有效手段。