

SRv6探險之旅(1)技術與測試方法解讀(上)
在信息技術飛速發(fā)展的今天,互聯(lián)網(wǎng)的業(yè)務需求在日益多樣化,網(wǎng)絡架構和技術也在不斷演進,傳統(tǒng)的網(wǎng)絡架構已難以滿足新業(yè)務對靈活性和可擴展性的要求,SRv6(Segment Routing over IPv6)作為一種新興的網(wǎng)絡技術,基于IPv6原生地址和Segment Routing(SR)技術,為構建更靈活、高效和智能的網(wǎng)絡提供了新的解決方案。
本篇將聚焦于SRv6技術的基礎理論,以探討SRv6技術的關鍵特性與核心原理為主,包括以下4個方面內容:
1、SRv6 技術概述
2、SRv6 技術優(yōu)勢
3、SRv6 基本原理
4、SRv6控制面協(xié)議
1、SRv6 技術概述
SRv6是基于源路由理念而設計的在IPv6網(wǎng)絡上轉發(fā)數(shù)據(jù)包的一種協(xié)議。SRv6通過在IPv6數(shù)據(jù)報中嵌入一個路由擴展頭SRH(Segment Routing Header),在SRH中指定一系列的Segment Identifier(SID),這些SID都是顯式的IPv6地址棧,并由中間節(jié)點不斷的進行更新目的地址和偏移地址棧的操作來完成逐跳轉發(fā),從而實現(xiàn)了對數(shù)據(jù)包轉發(fā)路徑的精確控制。
2、SRv6 技術優(yōu)勢相比于傳統(tǒng)的網(wǎng)絡技術,SRv6具有多項顯著優(yōu)勢,主要體現(xiàn)在以下幾個方面:
強大的可編程能力:SRv6提供了網(wǎng)絡路徑、業(yè)務、轉發(fā)行為三層可編程空間,通過SRH中的SID,可靈活定義轉發(fā)路徑和轉發(fā)行為
簡化網(wǎng)絡協(xié)議與運維:SRv6通過在IPv6數(shù)據(jù)包中嵌入SID,簡化了網(wǎng)絡協(xié)議棧,減少了對專用信令協(xié)議的需求(如LDP和RSVP-TE),降低了網(wǎng)絡的復雜性和運維難度。
原生IPv6的支持與兼容性:基于Native IPv6進行轉發(fā),沒有改變IPv6報文的封裝結構,保持了與現(xiàn)有IPv6設備的兼容性,增強了網(wǎng)絡的擴展性和靈活性。
強大的業(yè)務驅動能力:SRv6完全基于SDN架構,能夠將應用信息帶入網(wǎng)絡,實現(xiàn)網(wǎng)絡與應用之間的深度互動, 并利用全局信息進行網(wǎng)絡調度和優(yōu)化。
3、SRv6 基本原理
3.1 SRv6 SRH
SRv6報文是由IPv6標準頭+擴展頭+負載Payload組成。為了基于IPv6轉發(fā)平面實現(xiàn)Segment Routing,新增加一種IPv6路由擴展頭Segment Routing Header (SRH),該擴展頭指定一個IPv6的顯式路徑Segment List,存儲的是IPv6 路徑約束信息。頭節(jié)點在IPv6報文增加一個SRH擴展頭,中間節(jié)點就可以按照SRH擴展頭里包含的路徑信息轉發(fā)。
SRH擴展頭的格式如下圖所示:
IPv6 基本頭中Next Header 取值為43,標識下一個報文頭為路由擴展頭。路由擴展頭的路由類型字段取值為4,標識該路由擴展頭為SRH。
SRH 主要包含以下幾個部分:
Next Header:標識緊跟在SRH之后的報文頭的類型。常見的類型如4代表IPv4封裝;41代表IPv6封裝
Hdr Ext Len:SRH頭的長度(不包括前8字節(jié))
Routing Type: 路由擴展頭類型,4表明該路由擴展頭為SRH
Segments Left(SL): SRv6剩余未處理的SID個數(shù)。轉發(fā)過程中通過修改SL,同時更換DIP為活躍的SID來完成分段轉發(fā)
Last Entry:Segment List中最后一個元素的索引
FLags:預留的標志位
Tag:標識同組數(shù)據(jù)包
Segment List: 有序的SRv6 段列表,段列表從路徑的最后一段開始編碼。Segment List[0]是路徑的最后一個Segment;Segment List[2]是路徑的第一個Segment。
3.2 SRv6 Segment
SRv6 Segment是SRv6技術中的一個核心概念,即路由段,每個Segment由SID唯一標識,實際上是一個特定的IPv6地址,代表了網(wǎng)絡中一個特定轉發(fā)路徑或節(jié)點。多個Segments嵌入在IPv6數(shù)據(jù)包的SRH中形成一個Segment List。SRv6 SID由Locator、Function和Arguments三部分組成(Argument為可選部分),格式是Locator:Function:Arguments,其中Locator占據(jù)IPv6地址的高比特位,F(xiàn)unction/Arguments占據(jù)IPv6地址的剩余部分。
Locator:是網(wǎng)絡拓撲中的一個網(wǎng)絡節(jié)點的標識,用于路由和轉發(fā)報文到該節(jié)點,實現(xiàn)網(wǎng)絡指令的可尋址。節(jié)點配置Locator之后,系統(tǒng)會生成一條Locator網(wǎng)段路由,并通過IGP在SR域內通告。
Function:用來表示該指令要執(zhí)行的轉發(fā)動作,不同的轉發(fā)動作由不同的Function來標識。
Arguments:為可選字段,可以定義一些報文的流和服務等信息。
SRv6 Segment常見類型:
3.3 SRv6 節(jié)點
在SRv6網(wǎng)絡中,節(jié)點扮演著關鍵的角色,它們負責處理、轉發(fā)和接收SRv6報文。
SRv6網(wǎng)絡中存在的節(jié)點角色,基本上分為三類:
SRv6源節(jié)點(Source SRv6 Node):
定義:生成SRv6報文的源節(jié)點。
功能:負責生成SRv6報文,并在報文中嵌入有序的路徑信息Segment List,以指導報文在網(wǎng)絡中按路徑轉發(fā)。
中轉節(jié)點(Transit Node):
定義:在SRv6報文轉發(fā)路徑上只轉發(fā)SRv6報文但不進行SRv6處理的節(jié)點。
功能:這些節(jié)點只負責根據(jù)IPv6報頭中的目的地址進行轉發(fā),不處理SRv6的SRH。
段端點節(jié)點(SRv6 Segment Endpoint Node):
定義:接收并處理SRv6報文的任何節(jié)點,該報文的IPv6目標地址是本地配置的SID。
功能:這些節(jié)點會檢查并處理SRv6報文中的SRv6 SID和SRH,根據(jù)IPv6報文的目的地址查找本地SID表,執(zhí)行與該SID綁定的指令動作。
3.4 SRv6 報文轉發(fā)
SRv6主要有兩種轉發(fā)模式,分別是SRv6 BE(Best Effort,盡力而為)和SRv6 TE Policy(Traffic Engineering Policy,流量工程策略)。
SRv6 BE 的場景類似于MPLS LDP,LDP 利用 IGP的最短路徑算法計算得到一條最優(yōu)的轉發(fā)路徑。SRv6 BE 僅使用一個業(yè)務 SID來指導報文的轉發(fā),是一種盡力而為的工作模式。在該工作模式下,SRv6 功能只需要部署在首尾節(jié)點,實現(xiàn)較為簡單。
SRv6 TE Policy 則利用了源路由的特性,在首節(jié)點封裝一個有序的Segment List來指導報文在網(wǎng)絡中如何轉發(fā)。結合Segment List 的可編程特性,并引入著色機制(設置Color 屬性),SRv6 TE Policy 可以靈活地指定報文的轉發(fā)路徑,從而實現(xiàn)流量工程、靈活引流、負載分擔等功能。
以下是一個典型的SRv6 TE報文轉發(fā)流程,假設從節(jié)點A(源節(jié)點)轉發(fā)到節(jié)點E(目的節(jié)點),中間經(jīng)過節(jié)點B、C、D,其中節(jié)點B為中轉節(jié)點(不處理SRH或不支持SRv6)。

1、節(jié)點A(源節(jié)點)進行網(wǎng)絡編程,為數(shù)據(jù)包封裝基本IPv6頭和SRH,將SRv6路徑信息[C,D,E]嵌入SRH中,數(shù)據(jù)包外層源地址為節(jié)點A的地址,目的地址為第一個SID(C)的地址。
2、節(jié)點B(中轉節(jié)點)不處理SRH或不支持SRv6,只需根據(jù)IPv6報頭中的目的地址(此時為C的地址)進行路由查找轉發(fā)。
3、節(jié)點C(SRv6段節(jié)點)收到報文后,檢查SRH中的SL(Segment Left)及Segment List,將下一個SID(此時為D的地址)更新到目的IPv6地址。
4、節(jié)點D的處理過程和節(jié)點C類似,但節(jié)點D為倒數(shù)第二段,可根據(jù)其Flavor是否配置PSP(Penultimate Segment POP,倒數(shù)第二段彈出SRH),決定是否移除SRH頭,以減輕尾結點E的處理壓力。
5、節(jié)點E(目的節(jié)點)解封裝并剝離外層IPv6,讀取處理數(shù)據(jù)包的有效載荷,根據(jù)原始報文的目的地址進行報文轉發(fā)。
4、SRv6控制面協(xié)議
4.1 ISIS for SRv6
為實現(xiàn)SRv6,需要對已有的IGP協(xié)議(ISIS 和OSPFv3)進行擴展,而不需要再維護RSVP-TE、LDP等控制平面協(xié)議。通過擴展ISIS和OSPFv3協(xié)議攜帶SRv6信息,可對SRv6網(wǎng)絡的拓撲、前綴、Locator和SID等信息進行通告,網(wǎng)絡管理員或SDN控制器利用這些信息,即可實現(xiàn)AS域內的網(wǎng)絡編程功能。
以ISIS協(xié)議為例,ISIS需要發(fā)布兩類SRv6 信息:Locator信息與 SID 信息。Locator用于幫助網(wǎng)絡中的其他節(jié)點定位到發(fā)布SID的節(jié)點,SID用于描述SID的功能,如SID綁定的Function。
ISIS針對SRv6的擴展具體如下表所示:
4.2 BGP For SRv6
傳統(tǒng)的IGP for SRv6技術主要在AS域內進行SID的分配和路徑規(guī)劃。然而,隨著網(wǎng)絡規(guī)模的擴大,跨域通信成為常態(tài),需要一種機制來支持跨AS的SRv6路徑規(guī)劃。為了滿足這一需求,BGP EPE(BGP Egress Peer Engineering)應運而生。它通過擴展BGP協(xié)議,使得BGP能夠參與到SRv6的跨域路徑規(guī)劃中來,從而實現(xiàn)跨AS的SRv6流量工程。
BGP EPE通過為對Peer分配特定的SID,包括Peer-Node SID和Peer-Adj SID,來引導流量經(jīng)過特定的出節(jié)點,發(fā)往特定的BGP對等體或對等鏈路。
Peer-Node SID:用于指示一個對等體節(jié)點。
Peer-Adj SID:用于指示到達對等體的一個鄰接。
4.3 BGP SRv6 Policy
在數(shù)據(jù)中心、廣域網(wǎng)里,SRv6和SDN應用的結合已是重要的發(fā)展趨勢,故基于SDN架構的SRv6控制器也得到了多廠商的支持和互操作。在此過程中,BGP成為主流的SDN控制器南向協(xié)議。為了通過BGP 發(fā)布SRv6 Policy,需要對SAFI(Subsequent Address Family Identifier)及其對應的NLRI和Tunnel Encaps Attribute等部分進行擴展,因擴展的TLV較多,感興趣的可閱讀draft-ietf-idr-segment-routing-te-policy.
如上圖,SDN控制器與SRv6轉發(fā)設備或RR節(jié)點建立BGP對等體,下發(fā)BGP SRv6-Policy路由并攜帶SRv6 的候選路徑、優(yōu)先級、段列表、權重等信息給SRv6源節(jié)點設備,以此指導設備如何根據(jù)SRv6規(guī)則轉發(fā)數(shù)據(jù)包。通過結合BGP-LS、Telemetry、TWAMP等技術,使得網(wǎng)絡運營商能夠在SDN控制器的集中管理下,靈活部署和動態(tài)調整SRv6路由策略,從而實現(xiàn)高效、智能的網(wǎng)絡流量調度。
上半部分的探索之旅暫告一段落,我們已經(jīng)一同揭開了SRv6技術的神秘一角,領略了其作為網(wǎng)絡創(chuàng)新力量的獨特魅力。隨著理論基礎的奠定,下半部分的征程即將開啟,我們將更深入地探討Spirent TestCenter如何測試SRv6,敬請期待。