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

























