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