一文讀懂網(wǎng)絡界新貴Segment Routing技術化繁為簡的奧秘
Segment Routing(直譯為分段路由,縮寫為SR)技術,脫胎于MPLS,但是又做了革命性的顛覆和創(chuàng)新,它代表的是一種新的網(wǎng)絡理念——應用驅(qū)動網(wǎng)絡。自從誕生那一刻起,SR技術便被譽為網(wǎng)絡領域最大的黑科技,因其與SDN天然結(jié)合的特性,也逐漸成為SDN的主流網(wǎng)絡架構標準。本文為大家梳理了SR技術的起源,引出SR技術的基本概念和優(yōu)勢,并展望SR下階段的演進方向。
追蹤朔源—MPLS
MPLS介紹
MPLS(Multi-Protocol Label Switching,多協(xié)議標簽交換)是一種在開放的通信網(wǎng)上利用標簽引導數(shù)據(jù)高速、高效傳輸?shù)募夹g。(定義來自:維基百科)
圖1:MPLS報文結(jié)構
簡單說MPLS采用標簽分發(fā)技術,將IP地址映射為簡單的具有固定長度的標簽(如圖1, MPLS頭部包含20bits的標簽位),MPLS網(wǎng)絡是利用標簽進行數(shù)據(jù)轉(zhuǎn)發(fā)的。
Segment Routing的“繼往&開來”
MPLS在廣域網(wǎng)等場景已經(jīng)得到了大量部署。ISP/OTT/大企業(yè)通過部署LDP、RSVP-TE等協(xié)議,為廣域網(wǎng)業(yè)務提供VPN隔離以及差異化的流量調(diào)度方案。隨著MPLS技術的廣泛應用,其優(yōu)勢和劣勢也都更加凸顯。被稱為“下一代MPLS”的Segment Routing技術很好地繼承了MPLS的優(yōu)勢,同時也對MPLS的劣勢進行了顛覆和創(chuàng)新。
SR繼往:傳統(tǒng)MPLS的數(shù)據(jù)平面既保持了標簽轉(zhuǎn)發(fā)的簡單高效,還能支持顯式路徑從而提供強大的流量調(diào)度能力。這使得MPLS的數(shù)據(jù)平面成為經(jīng)典,Segment Routing聰明地繼承了MPLS的數(shù)據(jù)平面。
SR開來:與MPLS數(shù)據(jù)平面大受好評不同,MPLS的控制平面卻因為協(xié)議復雜、擴展性差、部署&運維困難等問題深受詬病。MPLS的控制面依賴的主要技術是LDP(Label Distribution Protocol,標簽分發(fā)協(xié)議),以及RSVP-TE(Resource Reservation Protocol - Traffic Engineering,基于流量工程擴展的資源預留協(xié)議)。接下來我們重點分析一下LDP和RSVP-TE存在哪些問題,SR又是如何解決的?
LDP標簽分發(fā)協(xié)議
通過LDP協(xié)議,MPLS設備可以把路由信息映射到標簽信息上,并通過協(xié)議通告建立起標簽交換路徑。關于LDP的詳細介紹,限于篇幅原因,不在這里展開。我們只需要知道:LDP是依賴IGP路由信息為IP網(wǎng)絡中的目的地址分配標簽(本身不維護狀態(tài)信息),并通過鄰居間的LDP信令周知不同目的IP的標簽信息。
LDP的優(yōu)勢
- 部署簡單:只需要接口使能LDP功能即可。
- 易擴展:目前OSPF/IS-IS等IGP協(xié)議都支持LDP,擴展性較好。
- 天然的ECMP能力:LDP本質(zhì)上依賴IGP的路由轉(zhuǎn)發(fā),因此可以直接復用IGP的負載均衡能力。
LDP的劣勢
- 沒有流量工程機制:和IP網(wǎng)絡一樣,LDP也無法指定轉(zhuǎn)發(fā)路徑,也就無法做到基于業(yè)務要求(時延、帶寬、丟包等)的流量調(diào)度。
- 交互復雜:LDP重度依賴IGP,導致交互復雜,詳見LDP-IGP synchronization issue,RFC 5443&RFC 6138。當LDP和IGP狀態(tài)不一致時,還可能產(chǎn)生流量黑洞的問題。
RSVP-TE技術
為了解決LDP不支持流量工程的問題,MPLS中引入了RSVP-TE控制面。
傳統(tǒng)路由是依據(jù)目的IP進行查找轉(zhuǎn)發(fā),且只關心下一跳怎么走,而并不關心流量的完整路徑。而RSVP-TE引入了源路由的概念:當流量進入RSVP網(wǎng)絡后,在源節(jié)點就會計算出完整的每一跳路徑(顯式路徑)。
如同導航軟件在計算行駛路線前需要收集道路信息并知曉當前路況,計算源路由的先決條件則是需要收集全網(wǎng)拓撲信息及鏈路狀態(tài)信息。RSVP-TE通過擴展IGP協(xié)議收集了這些信息(IS-IS擴展了TLV字段,OSPF則是用特定的LSA)。
知曉路況信息是第一步,具體選擇走哪條線路,還要取決于選路算法。一如導航軟件根據(jù)我們的要求(時間優(yōu)先,距離優(yōu)先,不走高速等)選擇最優(yōu)路線,RSVP-TE流量調(diào)度也可以依據(jù)業(yè)務的要求:如延時低于50ms、帶寬大于10G等規(guī)劃出最優(yōu)的轉(zhuǎn)發(fā)路徑。
RSVP-TE優(yōu)勢
相比于傳統(tǒng)的路由協(xié)議基于目的IP的簡單轉(zhuǎn)發(fā),RSVP-TE最大的優(yōu)勢在于收集了整網(wǎng)拓撲和鏈路狀態(tài)信息,因此可以根據(jù)業(yè)務的需要靈活地選擇流量的轉(zhuǎn)發(fā)路徑(為流量指定一條顯式路徑)。
RSVP-TE劣勢
RSVP-TE聽上去是一個完美的流量調(diào)度解決方案,應該大受歡迎。然而現(xiàn)實很骨感:部署RSVP-TE的案例并不多,并且在為數(shù)不多的RSVP-TE案例中,大部分也只用到了RSVP-TE的快速重路由功能,而非流量調(diào)度功能。究其原因,無外乎以下三點:
- 過于復雜:RSVP信令非常復雜,每個節(jié)點都需要維護一個龐大的鏈路信息數(shù)據(jù)庫;
- 擴展性受限:為了準確預留帶寬,RSVP-TE要求所有IP流量都需要通過隧道轉(zhuǎn)發(fā),節(jié)點之間建立Full-mesh隧道導致擴展性差,大規(guī)模部署幾無可能;
- 不支持ECMP(Equal-Cost Multipath Routing,等價多路徑):現(xiàn)代IP網(wǎng)絡中,ECMP是一個最基礎的需求。而從源路由的機制我們可以看到,RSVP-TE只會選擇一條最優(yōu)路徑進行轉(zhuǎn)發(fā)。如果想要實現(xiàn)流量分擔,還需要在相同的源和目的之間預先建立多條隧道。
注:關于ECMP的技術文章可以參考技術盛宴第十二期:數(shù)據(jù)中心網(wǎng)絡等價多路徑(ECMP)技術應用研究。https://mp.weixin.qq.com/s/DM-jlOdSlDOHKqObeIdt0w
二、大道至簡-Segment Routing
綜上所述,MPLS雖然解決了很多問題,但其本身也有待優(yōu)化,尤其是在流量工程方面復雜性亟待改善。在這樣的背景下,一種保留了MPLS能力,且更為簡單易用的技術架構——Segment Routing,恰如其時地出現(xiàn)了。
Segment Routing,這項號稱“下一代MPLS”的技術,從其被設計之初就堅持了對網(wǎng)絡協(xié)議做減法的原則。那么對比MPLS,Segment Routing到底“減”在哪里?
減法一:去掉RSVP復雜的信令機制
RSVP-TE是一種分布式的架構,每臺設備只能看到自身的狀態(tài)。想要獲取其他設備的狀態(tài)信息,就必須依賴RSVP的信令來進行頻繁的、大量的交互,這也就造成了RSVP協(xié)議的復雜性。我們不妨設想下,如果有一種集中控制平臺負責交互這些信息,那這一切是否就迎刃而解了?
提到集中式,大家一定會首先想到轉(zhuǎn)控分離的SDN。沒錯,SDN集中式控制思想和源路由可謂是天作之合。
2015年開源的SDN控制器Open Daylight支持Segment Routing是一個標志性的事件,這使得Segment Routing演進成集中式/分布式混合架構成為可能。事實上,目前落地的SR項目中也幾無例外地都使用了SDN來收集拓撲信息以及下發(fā)隧道路徑。
減法二:去掉 LDP,直接由IGP分發(fā)標簽
LDP實際上不維護任何的狀態(tài)信息,僅僅是對IGP中的目的IP和MPLS標簽做了一層映射,那么這樣的標簽分發(fā)和同步是否可以通過拓展IGP協(xié)議的方式來實現(xiàn),從而減少部署LDP協(xié)議呢?
Segment Routing實現(xiàn)了這一點,它擴展了IGP協(xié)議的SR屬性(IS-IS通過TLV實現(xiàn),OSPF通過不透明LSA攜帶,具體可以參考http://www.segment-routing.net/),并用于直接分發(fā)和同步標簽信息。當然,引入SDN控制器后,這部分工作也可以交給控制器完成。
什么是Segment Routing
讀到這里,相信大家對SR技術已經(jīng)有了基本的認識,下面我們通過一個舉例再來理解一下。
《Segment Routing詳解第一卷》中,用了一個很形象的比喻來解釋SR:機場行李標簽。設想某人要把行李從西雅圖發(fā)送到柏林(TXL),途徑墨西哥城(MEX)和馬德里(MAD)。航空運輸系統(tǒng)并不會為這件行李產(chǎn)生一個單獨的ID并維護它,而是采用了一種更具擴展性的方法:在始發(fā)機場給行李貼上一個標簽“先到墨西哥城,再到馬德里,最后到柏林”。這樣一來,航空傳輸系統(tǒng)不需要識別行程中的單個行李,而只需要識別機場代碼,就會知道怎么按照行李標簽把行李從一個機場發(fā)送到另一個機場。比如剛才的例子,只需要在始發(fā)機場西雅圖為行李箱貼上{MEX;MAD;TXL}的標簽,機場依據(jù)行李標簽發(fā)送即可。
SR的做法其實完全相同,在SR的世界里,始發(fā)機場西雅圖就是源節(jié)點,機場代碼就是中間節(jié)點標簽。SR會在源節(jié)點壓入轉(zhuǎn)發(fā)標簽路徑,中間節(jié)點只需要根據(jù)標簽轉(zhuǎn)發(fā)。
在這個例子中我們不難理解SR的幾個特點:
- 源路由:在始發(fā)機場西雅圖貼上標簽路徑。
- 無狀態(tài):中間機場不需要知道行李從哪來,最終去往哪里,而只需要根據(jù)標簽轉(zhuǎn)發(fā)。
- 集中控制:機場代碼由航空運輸系統(tǒng)集中分配和維護(當然在SR世界里,表達的路徑標簽也是集中計算和下發(fā)的)。
SR標簽分類
理解完SR是什么后,我們再具體學習下SR技術中最重要的概念:SR標簽。SR標簽具體分類如下:
分類 |
作用 |
使用范圍 |
Prefix SID |
為網(wǎng)絡中目的地址前綴分配的標簽 |
全局有效 |
Node SID |
為網(wǎng)絡設備分配的標簽(類似Loopback口) |
全局有效 |
Adjacency SID |
為節(jié)點鄰接的IP網(wǎng)段分配的標簽 |
本地有效 |
表1:SR 標簽分類
另外兩個需要知曉的、密切相關的概念:
Segment Routing Domain:一組SR節(jié)點的集合
SRGB:為全局SR預留的本地標簽集合,生成的Segment需在SRGB范圍內(nèi)。
前綴/節(jié)點標簽(Prefix/Node Segment)
圖2: Prefix/Node Segment
Prefix-SID:是為目的地址前綴分配的標簽,標簽在SR域內(nèi)全局唯一,標識的方式為SRGB+Index。如圖2,如果SRGB從16000起始,10.2.2.0/24網(wǎng)段被分配的Index為1,那么10.2.2.0/24的Prefix-SID為16001。
Node-SID:可以簡單理解為一種特殊的Prefix-SID, 如:將設備 Loopback接口下配置的IP地址作為前綴,其對應的 Prefix SID實際就是Node SID 。
鄰接標簽(Adjacency Segment)
鄰接標簽(Adjacency Segment)表示設備上某條鏈路的單跳路徑,僅在設備本地有效。每個設備向與自己相鄰一跳的設備通過IGP擴展通告鄰接標簽。當然,也可以通過SDN控制器直接為SR域內(nèi)的每條鏈路進行標簽分配。
圖3: Adjacency Segment
如圖3所示,9001、9002、9003表示的是為每條鏈路分配的鄰接標簽。
了解完SR標簽的分類和作用后,我們不難理解:利用Prefix/Node Segment的組合,網(wǎng)絡中很容易形成多條轉(zhuǎn)發(fā)路徑(條件寬松)。當需要對流量進行精細化調(diào)度時,加入Adj-Segment可以指定一條顯式路徑(條件嚴格)。
SR轉(zhuǎn)發(fā)流程
接下來我們看一個典型的SR轉(zhuǎn)發(fā)流程:
圖4: SR轉(zhuǎn)發(fā)流程
- 控制器收集全網(wǎng)的拓撲信息,鏈路狀態(tài)信息,并分配SR標簽(也可以設備上生成通告給控制器)。
- 如圖4所示,10.1.1.0/24與10.6.6.0/24主機互訪,默認情況下網(wǎng)絡中會有非常多的路徑,比如ABCF,ADEF,ABCEF等等。如果不需要對流量做調(diào)度,按照默認的多路徑轉(zhuǎn)發(fā)即可。
- 應用驅(qū)動網(wǎng)絡:如果應用對網(wǎng)絡提出了要求,比如需要一條帶寬大于8G,延時少于30ms的轉(zhuǎn)發(fā)路徑。那么源節(jié)點A設備會向控制器發(fā)起路徑計算請求。
- 控制器已經(jīng)掌握了全網(wǎng)的拓撲信息、狀態(tài)信息、標簽信息,因此可以計算出符合條件的顯式路徑。
- 如圖4所示,假設紅色鏈路出現(xiàn)了擁塞,不滿足業(yè)務的帶寬要求。最終計算的結(jié)果黃色的箭頭路徑是滿足需求的,控制器會給源節(jié)點A下發(fā)符合路徑的標簽棧{16021,16031,323,16032,16041}來引導流量按指定路徑轉(zhuǎn)發(fā)。
- 源節(jié)點A收到標簽棧后,會壓入到轉(zhuǎn)發(fā)數(shù)據(jù)包。
- 接下來,就是常規(guī)的標簽轉(zhuǎn)發(fā)??梢詤⒖紙D4的標簽列表:節(jié)點A收到標簽棧后,發(fā)現(xiàn)第一個標簽16021對應B節(jié)點,于是查找路由將報文轉(zhuǎn)發(fā)給B;B節(jié)點收到后,發(fā)現(xiàn)頂層標簽16021是自己,于是將標簽彈出,并將標簽發(fā)往16031對應的鏈路…最終數(shù)據(jù)表會依據(jù)指定的路徑轉(zhuǎn)發(fā)到目的地F。
SR優(yōu)勢總結(jié)
最后簡單總結(jié)下SR技術的優(yōu)勢:
- 簡化的控制平面(去除LDP/RSVP-TE);
- 可擴展性好:SR的源路由和無狀態(tài)特性決定了其良好的擴展性;
- 戰(zhàn)術型流量工程:對于普通流量不指定路徑,自動負載;對于需要調(diào)度的流量計算出顯式路徑,并下發(fā)Segment執(zhí)行;
- 與SDN結(jié)合,繼承集中控制帶來的好處;
- 與拓撲無關且針對IP優(yōu)化的FRR(快速重路由);
- 標準化,多廠商支持。
三、展望
場景演進
Segment Routing目前在一些運營商和OTT公司已經(jīng)得到試點部署,但大多數(shù)應用場景還集中在骨干網(wǎng)的流量調(diào)度。SR在其他場景譬如數(shù)據(jù)中心是否也有用武之地呢?Segment Routing優(yōu)異的流量調(diào)度機制以及轉(zhuǎn)控分離的架構,或許可以解決數(shù)據(jù)中心的一些難題:比如大量ECMP路徑帶來的轉(zhuǎn)發(fā)路徑不確定性、傳統(tǒng)網(wǎng)絡設備黑盒不可見等。另外,2017年發(fā)布的Linux內(nèi)核4.10已經(jīng)正式支持SR,這意味著從主機甚至是容器開始就可以調(diào)度其對應的業(yè)務流在全網(wǎng)的端到端路徑,端到端的SR部署成為可能。
技術演進
IPv4向IPv6演進是時下熱點話題,SR同樣也需要向IPv6演進。SR支持IPv6有兩種方式,一種是仍然采用MPLS數(shù)據(jù)面,控制面為IPv6地址分發(fā)MPLS標簽。但更好的方式是直接采用SRv6技術, SRv6是一項更具顛覆性的技術,它直接利用IPv6地址作為標簽尋址(Locator),并融入編程思想,加入了指令(Function)字段。我們甚至可以把網(wǎng)絡類比為計算平臺,而SRv6 Segment是CPU指令,通過SDN有機調(diào)度將應用需求自動映射到網(wǎng)絡基礎設施上執(zhí)行,進而實現(xiàn)端到端的網(wǎng)絡配置及調(diào)度。相信SRv6的極簡和編程的理念,將引發(fā)全新的設計和運營網(wǎng)絡的思考。
銳捷網(wǎng)絡成立了SRv6專項研發(fā)團隊,持續(xù)跟進SRv6技術的進展?;谏逃眯酒A計在2019年完成SRv6功能的開發(fā),并已有計劃推動SRv6的商用部署落地。