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