SRv6技術課堂(一):SRv6概述
- 2019 年 11 月 29 日
- 筆記
本文系《SRv6技術課堂系列》的第一講,後續將陸續更新各個維度的SRv6技術細節,歡迎大家批評指正。

01
SRv6基本概念
由於SR MPLS已經普及,相信大家已經對Segment Routing的基本概念有足夠的了解。這裡重點介紹SRv6獨有的工作原理和相關概念。
1.1
SRv6 Segment
與SR MPLS的Segment不同,SRv6的Segment有128bits,而且分成了三部分:

圖1 SRv6 SID
1、Locator(位置標識):網路中分配給一個網路節點的標識,可以用於路由和轉發數據包。Locator有兩個重要的屬性,可路由和聚合。在SRv6 SID中Locator是一個可變長的部分,用於適配不同規模的網路。
2、Function(功能):設備分配給本地轉髮指令的一個ID值,該值可用於表達需要設備執行的轉發動作,相當於電腦指令的操作碼。在SRv6網路編程中,不同的轉發行為由不同的功能ID來表達。一定程度上功能ID和MPLS標籤類似,用於標識VPN轉發實例等。
3、Args(變數):轉髮指令在執行的時候所需要的參數,這些參數可能包含流,服務或任何其他相關的可變資訊。
從SRv6 SID的組成來看,SRv6同時具有路由和MPLS兩種轉發屬性,可以融合兩種轉發技術的優點。
1.2
SRv6擴展頭
為了在IPv6報文中實現SRv6轉發,引入了一個SRv6擴展頭(Routing Type為4),叫Segment Routing Header(SRH),用於進行Segment的編程組合形成SRv6路徑。
圖2是SRv6的報文封裝格式。綠色的是IPv6報文頭,棕色部分是SRH,藍色是報文負荷。

圖2 SRv6 SRH
IPv6 Next Header欄位取值為43,表示後接的是IPv6路由擴展頭。Routing Type = 4,表明這是SRH的路由擴展頭,這個擴展頭裡欄位解釋如下:

1.3
SRv6三層編程空間
SRv6具有比SR-MPLS更強大的網路編程能力。SRv6的網路可編程性體現在SRH擴展頭中。SRH中有三層編程空間:

圖3 SRv6的三層編程空間
第一部分是Segment序列。如前所述,它可以將多個Segment組合起來,形成SRv6路徑。這跟MPLS標籤棧比較類似。
第二部分是對SRv6 SID的128比特的運用。眾所周知,MPLS標籤封裝主要是分成四個段,每個段都是固定長度(包括20比特的標籤,8比特的TTL,3比特的Traffic Class和1比特的棧底標誌)。而SRv6的每個Segment是128比特長,可以靈活分為多段,每段的長度也可以變化,由此具備靈活編程能力。
第三部分是是緊接著Segment序列之後的可選TLV(Type-Length-Value)。報文在網路中傳送時,需要在轉發麵封裝一些非規則的資訊,它們可以通過SRH中TLV的靈活組合來完成。
SRv6通過三層編程空間,具備了更強大的網路編程能力,可以更好地滿足不同的網路路徑需求。
1.4
SRv6報文轉發流程

圖4 SRv6轉發流程
上圖展示了SRv6轉發的一個範例。在這個範例中,結點R1要指定路徑(需要通過R2-R3、R4-R5的鏈路轉發)轉發到R6,其中R1、R2、R4、R6為有SRv6能力的的設備,R3、R5為不支援SRv6的設備。
步驟一:Ingress結點處理:R1將SRv6路徑資訊封裝在SRH擴展頭,指定R2和R4的END.X SID,同時初始化SL = 2,並將SL指示的SID A2::11拷貝到外層IPv6頭目的地址。R1根據外層IPv6目的地址查路由錶轉發到R2。
步驟二:End Point結點處理:R2收到報文以後,根據外層IPv6地址A2::11查找本地Local SID表,命中END.X SID,執行END.X SID的指令動作:SL—,並將SL指示的SID拷貝到外層IPv6頭目的地址,同時根據END.X關聯的下一跳轉發。
步驟三:Transit結點處理:R3根據A4::13查IPv6路由表進行轉發,不處理SRH擴展頭。具備普通的IPv6轉發能力即可。
步驟四:End Point結點處理:R4收到報文以後,根據外層IPv6地址A4::13查找本地Local SID表,命中END.X SID,執行END.X SID的指令動作:SL—,並將SL指示的SID拷貝到外層IPv6頭目的地址,由於SL = 0, 彈出SRH擴展頭,同時根據END.X關聯的下一跳轉發。
步驟5:彈出SRH擴展頭以後,報文就變成普通的IPv6頭,由於A6::1是1個正常的IPv6地址,遵循普通的IPv6轉發到R6。
從上面的轉發可以看出,對於支援SRv6轉發的節點,可以通過SID指示經過特定的鏈路轉發,對於不支援SRv6的節點,可以通過普通的IPv6路由轉發穿越。這個特性使得SRv6可以很好地在IPv6網路中實現增量部署。
02
SRv6的標準和產業進展
2.1
SRv6標準進展
SRv6的標準化工作主要集中在IETF SPRING(Source Packet Routing in Networking)工作組,其報文封裝格式SRH(Segment Routing Header)等標準化工作在6MAN(IPv6 Maintenance)工作組,其相關的控制協議擴展的標準化,包括IGP、BGP、PCEP、VPN等,分別在LSR、IDR、PCE、BESS等工作組進行。
截止目前,SRv6的標準化基本上分為兩大部分:
第一部分是SRv6基礎特性,包括SRv6網路編程框架、報文封裝格式SRH以及IGP、BGP/VPN、BGP-LS、PCEP等基礎協議擴展支援SRv6,主要提供VPN、TE、FRR等應用。所有SRv6基本特性文稿均由華為和思科共同引領,並有Bell Canada、SoftBank、Orange等運營商參與。目前所有文稿(除OSPFv3)均被接收為工作組文稿,標準的成熟度進入了一個新的階段,特別是最關鍵的SRH封裝草案已經經過IETF IESG批准,很快就會成為RFC。

第二部分是SRv6面向5G和雲的新應用,這些應用包括網路切片、確定性時延(DetNet)、OAM、IOAM(In-situ OAM)、SFC、SD-WAN、組播/BIER等。這些應用都對網路編程提出了新的需求,需要在轉發麵封裝新的資訊。SRv6可以很好地滿足這些需求,充分體現了其在網路編程能力方面具備的獨特優勢。當前客戶對於這些應用需求的緊迫性並不一致,反映到標準化和研究的進展也不盡相同。總體而言SRv6用於OAM、IOAM、SFC的標準化進展較快,已經有多篇工作組草案,網路切片也是當前標準化的一個重點,VPN+切片框架草案已經被接納為工作組,SRv6 SID用於指示轉發麵的資源保證服務需求逐漸獲得了廣泛的認同。
2.2
SRv6的產業進展
SRv6產業的整體進展在SRv6 Implementation and Deployment Status草案中進行了描述(draft-matsushima-spring-SRv6-deployment-status)。
1.SRv6產品實現
目前主流設備廠商、測試儀和商用晶片已明確支援SRv6。其中華為全系列路由器產品均支援SRv6,思科ASR9000、ASR1000、NCS5500、NCS540等產品也已經支援SRv6。測試儀廠商思博倫和IXIA支援SRv6,晶片廠商海思、博通等也已發布可規模部署的商用晶片,並在主流設備上完成驗證。
除此以外,一些開源平台也支援SRv6,如Linux Kernel,Linux Srext module,FD.io VPP等,提供對SRH的一些功能處理。開源工具應用,如Wireshark、Tcpdump、Iptables、Nftables,Snort等,也已經支援了對包含SRH的IPv6報文的處理。
2.SRv6互通測試
歐洲高級網路測試中心(EANTC:European Advanced Networking Test Center)在今年3月成功地進行了SRv6多廠商互通測試,其結果在MPLS + SDN + NFV World Congress 上進行了展示,並發布了互通測試白皮書。參加互通測試的廠商包括華為、Cisco、思博倫和IXIA,完成了SRv6 VPN、TI-LFA、OAM等互通測試例。
3.SRv6部署
在世界範圍內已經有多家運營商開啟了SRv6商用部署,包括中國電信、中國聯通、CERNET2、日本軟銀和LINE公司、義大利Iliad、烏干達MTN等。
2017年中國推動IPv6的規模部署,經過一年多的建設,各大運營商的IP網路均已支援IPv6,這為SRv6的規模部署提供新業務提供了堅實的基礎。截止目前為止,中國電信、中國聯通、CERNET2等已經完成了7個局點的部署,SRv6跨域組大網、易於增量部署、快速業務開通的優勢得到了充分體現,為整個產業創新起到了積極的示範作用。
4.SRv6產業論壇
隨著SRv6技術和標準的不斷成熟,業界對SRv6的認可和接受度也越來越高,為了進一步凝聚產業共識,推動SRv6創新應用,經過業界的共同努力,舉辦了多次SRv6產業會議。
2019年4月在法國巴黎MPLS+SDN+NFV大會期間舉辦了首屆SRv6圓桌會議,與會的業界專家圍繞SRv6的價值場景以及如何促進SRv6創新和部署等話題進行了熱烈的討論。
2019年6月推進IPv6規模部署專家委員會主辦了第一期SRv6產業沙龍,與會專家分享了SRv6標準創新的最新進展、整體解決方案以及現網的部署應用等。
這些產業活動對於SRv6創新應用起到了積極的推動作用。
03
SRv6的價值與意義
SRv6網路編程草案從提出到現在不過兩年半的時間,已經有多個商用實現和商用部署,發展之快在IP技術發展的歷史上是不多見的。在兩年多推動SRv6創新和標準的過程中,我們與業界專家進行了廣泛的交流,對於互聯網發展歷史的經驗教訓進行了很多反思,從而對於SRv6的價值和意義也有了更進一步的認識。
IPv4技術發展的一個重要教訓是可擴展性問題,設計之初沒有想到會有這麼多的設備接入IP網路,由此觸發了IPv6技術的發展。而IPv6技術發展的一個重要教訓是可兼容性問題。當時的設想比較簡單,32比特的地址空間不夠,就把它擴展成128比特,但是128比特的IPv6地址跟32比特的IPV4地址是沒有辦法兼容的,這樣就需要全網的升級支援IPv6,由此導致部署應用的困難。從這個角度看,SRv6可以兼容IPv6路由轉發的,並且通過Function ID兼顧了MPLS轉發的優點,這就保證了SRv6可以從IPv6網路平滑地演進。
在過去的十多年裡,IP技術取得了巨大成功,統一了網路承載,可以將其稱之為All IP 1.0時代。這其中MPLS扮演了非常重要的角色。基於MPLS的承載技術用於IP Core承載,再到城域承載、移動承載,替代了幀中繼、ATM、TDM等多種網路技術,實現了網路承載技術的統一。MPLS成功依賴於三個重要的特性:VPN、TE和FRR,因此SRv6技術發展首先要把這三個特性優勢繼承下來,經過兩年多的發展,這個目標已經基本達成。
All IP 1.0成功的同時也帶來了一些問題和挑戰,總結起來主要有三個方面:
第一個是IP承載網路的孤島問題。雖然MPLS統一了承載網,但是IP Core承載網、城域承載網、移動承載網之間是分離的,因此要使用跨域VPN等複雜的技術來解決,導致端到端業務部署的困難。
第二個是IPv4與MPLS封裝的可編程空間有限。現在產生了很多新的業務,需要在轉發麵加入更多的封裝,而現在IETF已經發表聲明停止為IPv4制定更進一步的標準,並且MPLS標籤的欄位採用固定長度,標籤棧提供的網路編程能力也相對受限,這些導致它們在滿足未來業務的網路編程需求存在極大的挑戰。
第三個是應用與網路承載的解耦,導致網路自身的優化困難,而且難以提升價值。當前運營商普遍面臨被管道化的挑戰,無法從增值應用中獲得相應的收益,而應用資訊的缺失,使得網路調度和優化採用粗放的方式進行,也造成資源的浪費。網路技術發展的歷史上也努力做過嘗試,但是都失敗了,例如ATM到桌面技術。MPLS也曾經試圖能夠入雲,實際連數據中心也沒能進去,反而是VXLAN成為了事實標準。

圖5 IP技術發展代際
SRv6技術的出現,實際承擔了解決這些關鍵問題的使命:
第一個是SRv6兼容IPv6路由轉發,基於IP可達性實現不同網路域間的連接更加容易,無需像MPLS那樣必須引入額外信令,並且還需要全網升級。
第二個是基於SRH能夠支援更多種類的封裝,可以很好地滿足新業務的多樣化需求。
第三個是SRv6對於IPv6的親和性使得它能夠將IP承載網路與支援IPv6的應用無縫融合在一起,通過網路感知應用,給運營商帶來更多可能的增值。
IPv6發展的二十年的里程證明,僅僅依靠地址空間的需求不足以支撐其規模部署,SRv6技術快速發展的實踐說明通過新的業務應用可以更好地促進IPv6發展應用。隨著5G、物聯網、雲等業務的發展,更多網路設備的接入對於地址擴展的需求也在增加,SRv6和這方面的需求結合在一起,將會推動網路進入一個新的All IP時代,基於All IPv6實現智簡網路。
註:本公眾號允許其他公眾號或網路平台進行轉載,但任何形式的轉載需註明「文章轉載自SDNLAB公眾號」相關字樣