SP專題Segment Routing技術淺淡SRv6中IPv6 Header的處理過程

segment routing是個新的轉發技術,利用了IGP/BGP做爲控制平面協議來分配、分發SID(Segment-ID ID)使用MPLSIPv6做爲轉發平面。其中SRv6使用IPv6做爲轉發平面。今天咱們來討論下SRv6IPv6 Header的基本操做。編程

1.png

首先IPv6包頭有基本包頭和擴展包頭之分基本包頭40 bytes,裏面包含一個重要字段next header」這個字段相似於IPv4包頭protocol字段,用於表示上層是什麼協議(IPv4報文的負載是什麼報文),好比next header字段等於17時候,表示後面跟着UDP報文;等於6時候表示後面跟着TCP報文;4時候表示後面跟了一個IPv4頭部(IPv4 over IPv6)。其中next header等於43時候,後面跟的是IPv6Routing Extension Header(路由擴展包頭)下圖示例網絡

2.png

路由擴展包頭中,有個Routing Type字段,被幾個RFC所定義,其中ide

0 表示Source Route (2007年被取消)學習

1 表示Nimred (2009被取消)spa

2 表示Mobility (RFC 6275定義)用於移動設計

3 表示RPL Source Route (RFC 6554定義)主要用於IOT視頻

4 表示Segment Routing (如今tentative)意味着臨時使用,沒有被RFC定義,不排除未來會設計一個新的擴展包頭可能blog

3.png


    因此一個SRv6路由頭部就是這麼多,一個基本包頭(next-header = 43)一個路由擴展包頭(Routing Type = 4)後面是Segment Routing部分字段。這個擴展路由包頭中,最重要的字段是Segments LeftFirst SegmentSegment List咱們大概來解釋這些字段。ci

Segment List其中咱們在頭端壓路徑標籤的時候,會壓入多層標籤(是基於MPLSSRTE操做方式)對於SRv6說,會在SR specific中壓入多個數據包傳輸過程當中須要通過的節點。其中Last Segment,或稱爲尾節點(Tail-end)稱爲終節點(End-point)Segment List編號爲0 (圖上Segment List [0]),而後按順序反向將須要通過的節點壓入SR specific中,好比通過N節點,則最後一個壓入的是Segment List [n-1]路由

First Segment:意思數據包從頭端發送到終節點通過的第一跳設備,Segment List中,下面的節點是離頭端更近的,最上面的是終節點,因此在這個圖First Segment字段的值是n-1

Segment Left簡稱SL,指的是Active Segment,意思是如今咱們將要去往的下一跳是誰。在頭端的時候,Segment Left字段的值爲n-1意思是咱們去往終節點,下一個要通過的節點是Segment List [n-1]


工做原理是每通過一個Segment List包含的節點,SL值會遞減同時會將Segment List [SL]節點SID (實際上是一個IPv6地址,只不過可能有不一樣功能)拷貝到基本包頭的目的IPv6地址的字段裏面,告訴路由器下一跳須要去往個節點,這樣一跳一跳將數據包發往目的地。下面咱們用一個數據包的轉發過程來講明一下它的工做流程以下圖:

4.png

第一張圖:從圖中能夠看到,A頭端節點,D終節點咱們programming壓入必須通過的節點BCD。因此SR Header中壓入(反向壓入)

Segment List [0] = D

Segment List [1] = C

Segment List [2] = B

這時B咱們要通過的第一個節點,因此First SegmentB節點的下標2而數據包尚未發送,因此這些Segment List的節點尚未到達,因此Segment Left也爲B下標2同時會將Segment List [SL = 2] = B地址拷貝IPv6基本包頭的Destination Address中,你能夠看到IPv6基本包頭的目的地址爲B

第二張圖:從圖中咱們能夠看到數據包發送到了中間的節點,你能夠理解爲Underlay中通過的任意節點,這個節點僅僅會根據IPv6基本包頭的目的地址B來正常的路由數據包,除Hop Limit字段之外,其餘字段基本不變;

第三張圖:這時數據包到達了節點B收到報文後查看IPv6基本包頭的目的地址B這時能夠拆掉基本包頭,看後面的擴展包頭,發現是一個SR HeaderSegment Left字段2表示尚未到達節點,須要繼續轉發,因此這時First Segment字段不變,Segment Left1變爲1而且將Segment List [SL=1] = C節點的地址拷貝到IPv6基本包頭Destination Address中,你能夠看到此時IPv6基本包頭的目的地址爲C而後繼續轉發數據包

第四張圖:數據包達到節點D此時查看IPv6基本包頭目的地址爲本身,拆掉看擴展包頭,擴展包頭中SL等於0表示已經到達終節點。而後根據Segment List中的Function部分payload部分進行服務。

 

以上工做流程中,咱們能夠發現SRv6實際很容易理解,也很容易作Programming(編程)處理,緣由是SR HeaderSegment List你能夠根據手工控制器等方式進行編寫。因此SRv6運營商和大型企業核心網中下一步能夠發展應用的技術。

 

爲了幫助更多技術愛好者瞭解SR-TE的技術,SR-TE的專題技術文案會不斷推出。相關的專題視頻也會配套在IE-LAB的各學習平臺發佈。而對新技術的不斷學習,應成爲網絡工程師必備的學習習慣。

相關文章
相關標籤/搜索