首頁>技術>

因為SR是源路由技術,那麼需要在源節點將數據經過的節點的標籤給壓上。標籤可以由IGP和BGP來進行分發,這一章我們主要敘述OSPF和ISIS協議怎麼給路由分發標籤。

OSPF的擴展

我們知道,OSPF通過LSA來攜帶路由信息,因為OSPF的設計是基於字段的。那麼如果要支持標籤的分配和分發需要新增LSA-OpaqueLSA,稱為10類LSA,OpaqueLSA中又細分了Type4和Type7以及Type8。

OpaqueLSA是基於TLV設計的,所以擴展性比較好。Type4是OSPF中Router Information Opaque LSA增加了TLV8(SR-Algorithm)和TLV9(SID/Label range TLV)。

Type7是OSPF Extended Prefix Opaque LSA裡面包含OSPF Extended Prefix TLV(1)(路由)以及Prefix SID Sub-TLV(2)(標籤)。Type8是OSPF Extended Link Opaque LSA包含了Extended Link TLV1和Adj-SID Sub-TLV(2)以及 LAN Adj-SID Sub-TLV(3)。

OSPF支持SR-MPLS

(1)本節重點:

①Type4 Router Information Opaque LSA

TLV8:SR Algorithm

TLV9:SID/Label Range TLV

②Type7 Extended Prefix Opaque LSA

TLV1:Extended Prefix TLV

Sub TLV2:Prefix SID Sub-TLV(2)

TLV1:Extended Link Tlv(1)

Adj-SID Sub-TLV(2)

LAN Adj-SID Sub-tlv(3)

④Multi-Area

不難發現LSA10中的幾個種類都是基於TLV設計,更好擴展。

(2)Router Information LSA

該LSA是描述該路由器具備什麼能力,在OpaqueLSA的Type4中包含一個或多個SID的範圍,SID(標籤)的長度是24位,即104萬,即SRGB以及SR算法TLV。華為設備命令行查看:

SR算法TLV包含使用在節點中的一系列算法標識符(8比特),如果為0表示使用標準的SPF算法。除了算法還包含SRGB,上面的SID的範圍是16000-23999。建議所有設備的SRGB相同。傳遞SRGB的目的是為了相鄰節點計算Out標籤使用。

(3)PrefixSID

①拓撲:三臺設備運行OSPF,並且在一個區域0。拓撲如圖:

Segment在MPLS中就是標籤,上面我們講過標籤分為全局標籤和本地標籤。

一般來說SRGB(Segment Routing Global Block)在每臺設備上建議配置相同。

②設備命令行查看Opaque-LSA的Type7顯示:

以前的控制平面,路由協議只能發佈路由信息,標籤的分發需要使用其它的協議,例如:LDP協議和RSVP協議來完成。現在發佈路由信息和分發標籤全部使用OSPF來完成。

Opaque LSA一共有三種:Link 和Area和Domain,每一種傳遞的範圍不一樣。

③Wireshark抓包分析顯示:

Prefix-SID在一個SR域內正常情況下是不一樣的,通過SRGB範圍內的一個標籤來分配。一般為Loopback地址的32/128主機路由分配標籤。一般情況下PrefixSID就是NodeSID(主要看上面地址前綴中的Node是否置位)。

代表網絡中的某個節點,類似OSPF協議的RID。便於控制數據包的走向。為什麼是環回口代表一個節點,而不是物理鏈路代表一個節點呢?

因為環回口你必須到達該環回口的發佈節點才能到環回口,而物理鏈路卻不一樣,可能通過多個節點都可以到達該鏈路。例如:

R3要到達R1的環回口必須經過R1才行,那麼使用環回口就可以表示一個節點,換句話說為環回口分配標籤就是為節點分配標籤。但是不建議使用互聯網段來表示節點, 因為通過網段來描述節點會帶來描述節點的誤差,而環回口卻不會。

④Prefix-SID字段分析

OSPFv2 Extended Prefix Opaque LSA(Opaque Type 7)

1.OSPFv2 Extended Prefix TLV(1)

FLAG:A N_ _ _ _ _ _

A:Attach,由ABR為宣告進其它區域的直連前綴設置,默認是0。

N:Node,如果前綴代表的是節點,即PrefixSID為Node-SID,默認是1。

2.Prefix SID Sub-TLV(2)

FLAG:_NP M E V L_ _

NP:No-PHP,如果需要倒數第二跳不彈出Prefix-SID,則置位。默認置0,置1即需要倒數第二跳彈出。

M:如果SID是映射服務器通告的那麼置位,默認置0

E:Explicit-Null,如果倒數第二跳必須將PrefixSID交換為Explicit-Null標籤那麼置位。

V:Value,如果PrefixSID攜帶的是Value而不是Index則置位,對於PrefixSID默認就是0。

L:Local,如果PrefixSID是本地有意義的則置位。

例如:

在R3上發佈兩個環回口路由,Loopback0發佈到區域0,PrefixSID為3,Loop back1發佈到區域1,PrefixSID為33。在區域0中的設備通過命令查看響應的環回口分配的PrefixSID。

(4)Adjacency-SID

其實就是用標籤描述IGP的鄰居,Local-Segment,只有在本地具有意義,本地標籤從動態標籤池中分配,不同節點可以重疊。自動會為每個鄰接分配Adj-Segment。每個鄰接會分配一個受保護和一個不受保護的Adjacency-SID,保護的和TILFA相關。例如:

R2如果負載分擔有3條等價路徑(如圖),那麼通過哪條連路傳遞和Hash有關係,那麼就存在數據傳遞的不確定性。如果希望走特定路徑,那麼可以通過PrefixSID,例如標籤16002送到R2,然後R2通過Adjacency-SID40082送給R3。

上圖如果R2到達R6不是負載分擔,R2和R4的開銷最大,直接壓R6的Prefix SID16006的標籤,那麼會從IGP的最短路徑將數據傳遞到R6,IGP最短路徑可能產生了擁塞,那麼也可以通過Adjacency-SID 40083的空閒鏈路送到R4。

①拓撲:

在MA鏈路中,ADJ的SID描述的是鄰居的信息,包括2Way狀態的鄰居。

②設備命令行查看Opaque-LSA的Type8顯示:

在NE1上查看NE3的LSDB,發現連著1.1.1.1的LAN Adjacency的SID是48080。連著2.2.2.2設備的LAN Adjacency SID是48081,該標籤只能到NE3設備上才能加載到LFIB表,也就是說本地有意義。如果該節點是DR,那麼使用LAN Adjacency-SID描述鄰居關係。

如果是非DR連接DR的那麼使用AdjacencySID,連接的是非DR使用LAN-AdjacencySID。

③Wireshark抓包分析顯示:

抓取NE1發出的Opaque LSA10的Type8如果連著DR那麼使用Adjacency SID,如果連著非DR的話,那麼使用LAN Adjacency-SID。上圖中是LAN Adjacency-SID說明是連接著非DR設備。

④ADJ-SID字段分析

B:backup 如果Adj-SID是受保護的鄰接置位,用於TILFA。

R2和R3的鏈路有一個受保護和一個不收保護的ADJ-SID,那麼R2是有一個備份路徑的,是從R4走的,如果有一種應用需要被保護,那麼壓得標籤是48001,那麼R2和R3的鏈路斷了,那麼直接走備份路徑,R2-R4-R3。而不等收斂。

V:Value 如果Adj-SID是標籤值而不是索引值,那麼置位。

L:Local如果Adj-SID是本地標籤則置位。

S:Set如果指的是一組鄰居那麼置位。

(5)OSPF的多區域

我們知道OSPF是一個多區域的路由協議,剛剛我們學習的Prefix-SID是可以在區域間傳播的,而Adjacency-SID是不能在區域間傳播的,假如Adjacency-SID能傳遞過去其實也是沒有意義的?Why?

因為Adjacency-SID是本地才能關聯的標籤,不同區域的設備根本無法知道它的拓撲。ABR再傳遞Prefix-SID的時候,那麼ABR會對該PrefixSID對應的Flag發生了少許的變化。FLAG:_NP M E V L_ _

如果是ABR直連的PrefixSID時候,按照本設備的配置,如果NP為0那麼彈出標籤,E為0(因為要彈出標籤所以為隱含空),如果NP必須為1,那麼E也為1;如果ABR傳遞非本地產生的Prefix-SID時,那麼不能使用倒數第二跳彈出的效果,不然可能產生路由黑洞。

那麼這裡NP(No PHP)等於1,E(Explicit Null)等於0(因為不是本地直連的前綴,所以不能使用Implicit-null或者Explicit-null)。

OSPFv3可以對Segment Routing的支持。我們知道OSPF通過LSA來到達對LSA的支持。這時候我們應該知道OSPFv3 LS-Type變長帶來的好處,也知道U位置1帶來的對未知LSA處理的優點。原理和OSPFv2類似,限於篇幅在此不對OSPFv3對SR的支持過多贅述。

ISIS支持SR-MPLS

(1)本節重點:

①ISIS對SR支持的基本概述

②SRGB

(2)ISIS對SR支持的基本概述

①ISIS對SR的支持

我們知道ISIS是基於TLV的結構,那麼TLV的好處就是擴展性強,ISIS為了支持SR新增加了一些TLV和Sub-TLV,有TLV242 TLV135 TLV236 TLV237 TLV149

TLV22 TLV222等。

ISIS和OSPF類似,屬於控制平面的協議,給Loopback接口的主機前綴分配Prefix-SID,給ISIS鄰居分配Adjacency-SID。ISIS因為是基於TLV的不需要和OSPF一樣去增加LSP。OSPF是迫不得已,因為是基於字段設計,固定的字段讓它擴展性變的不是那麼好。而ISIS增加TLV即可達到對SR的支持。

②ISIS增加的TLV

1.TLV242-Router Capability

Router Capability TLV裡面包含SRGB和SPF算法以及RID和Flags以及可選的Sub-TLVs。Flag包含 Reserved D S,D表示Level2洩露到Level1置位,用於防環。

拓撲和配置:

NE1和NE2在同一個區域,運行在ISIS區域49,配置如下:

命令行顯示:

Wireshark抓包顯示:

Flag: I位如果設置路由器所在接口支持IPv4封裝,V位如果設置那麼路由器接口支持IPv6。細心的你肯定發現了Route Capability TLV242攜帶了RID。

FLag:S置位表示LSP傳遞的範圍是一個區域,D置位表示是否Level2洩露進了Level1。

2.TLV22-AdjacencySID

ISIS的拓撲通過TLV2(Cost-Type Norrow模式不支持SR)或者TLV22(wide模式)或者TLV222(多拓撲)來描述拓撲信息。那麼連著鄰居的Adj-SID使用Sub-TLV31(Adjacency-SID,如果是P2P的網絡類型)和Sub-TLV32(LAN-Adj-Sid)進行描述。

Adjacency-SID的Segment是本地有意義的,因為本地有意義所有在不同的設備上標籤可以相同,如果設備是Level1/2的路由器,而且同時支持IPv4/6協議棧,那麼該接口對應的鄰居可以分配高達8個標籤。

如果將接口的ISIS網絡類型改為P2P那麼就不是LAN Adjacency-SID而是Adjacency-SID。

3.TLV135-PrefixSID

ISIS的路由信息,通過TLV135或者TLV236或者多拓撲情況下的TLV237來進行描述,那麼Prefix-SID使用Sub-TLV3進行描述。

Anycast Prefix segment是prefix Segment中的一種,說白了就是多個節點通告相同的前綴,類似BGP的虛擬下一跳,組播的Anycast RP和IPv6的任波地址。它的作用是根據IGP訪問最近的節點(Anycast prefix-SID多個發起者中的一個),而且可以做到冗餘備份。如果最近的節點失效,那麼會根據IGP路由表的收斂去往其它的Anycast Prefix SID對應的節點。Anycast Prefix SID可以提高高可用性。

圖中,A訪問Z途徑PE1然後到達Z,而B在訪問的時候途徑PE2然後訪問Z。做到了流量的一個負載。當PE1出現故障後。

A訪問Z的時候,先可以ECMP到D節點,然後通過PE2到達Z。再數據傳遞的過程中,A節點作為源節點所壓得標籤(Segment-List不需要進行修改)並沒有發生任何變化。

LDP和SR的交互

(1)基本概念

SR有兩個轉發平面,一個是MPLS一個是IPv6。大家可以把Segment理解成一個標籤。標籤可以理解成NH的鄰居節點,或者是某節點的標識。什麼時候使用Segment-Routing的標籤呢?

首先:IP報文的目的地址或者BGP(IPv4的BGP或者BGP L3VPN)的下一跳匹配Prefix-SID的路由;其次:下游鄰居啟用了SR(其實需要通過NH的SRGB來計算出標籤),最後:節點配置了SR優先,默認是LDP優先;Segment-list就是標籤的堆棧。

除了LDP能夠為路由分配標籤,還有RSVP-TE和ISIS/OSPF/BGP也都可以為路由分配標籤,對於SR,IGP分配標籤使用的是SRGB中的標籤,從104萬標籤中挖取了一塊標籤作為SR使用。這樣做帶來的好處就是可以讓一個節點對應的Prefix- SID在SR域是唯一的,便於管理和運維。

每個LSR必須確保它可以唯一地解讀其入標籤,說白了,入標籤必須是唯一的。Adjacency-SID使用的標籤在本節點是唯一的,PrefixSID確保在SRGB內分配是唯一的(除Anycast Prefix-SID)。除了SR使用的標籤,其它協議使用的標籤在除SRGB中隨意選取標籤,那麼見到該範圍標籤就知道通過SR進行傳遞數據。

(2)解決SR和LDP共存

類似IP的雙棧,那麼設備即運行SR又運行LDP。在SR PE之間需要保持連續SR的連接,LDP PE之間保持連續LDP的連接,說白了就是要保證LSP能夠無縫銜接。

數據平面

(1)Ingress上的操作

SR域的Ingress收到IP包後,查FIB表後,需要Push標籤,將標籤壓入變為標籤包,這個時候注意一點:如果同時存在LDP和SR分配的標籤,那麼必須有一個優先,也就是說在FIB表中只允許關聯LDP或者SR的標籤,不能同時關聯兩個,但在控制平面的LFIB表中是可以同時存在的。LDP和SR的標籤只有一個會關聯FIB表(tunnel-prefer segment-routing),後續只會根據SR標籤進行轉發。

控制平面主要做兩件事:首先,運行路由協議,傳遞拓撲信息,構建路由表;其次,運行標籤分發協議,分發標籤,構建LFIB表。這個時候有LDP和IGP分配個路由的的標籤,默認情況下使用LDP的標籤,通過命令進行修改,可以把SR的標籤寫進FIB表。

(2)Transit和Egress

Transit到Egress沿路設備,收到的是標籤包,查LFIB表,SR和LDP可以共存,這些條目可以按照本地標籤來索引。LDP和SR分配的標籤In標籤必須是唯一的。本地有效,出向標籤可以相同也可以不相同,僅僅對下游鄰居有意義,而對本地節點沒有意義。 如圖:因為R4為192.168.1.1/32這個FEC分片的索引是4,然後在Flag位中設置N=0,E=0,那麼R3計算出來關於192.168.1.1/32的出標籤就是Pop。細心的讀者會發現R2進行標籤Swap動作的時候,出標籤是24004,是通過R3DE SRGB的起始值加上Index計算出來的。如果在運行的網絡中,既有LDP分配的標籤又有Segment Routing分配的標籤,共存的時候怎麼操作呢?下次為大家分解。

歡迎點贊,轉發,關注,收藏,你的支持是我更新的動力

8
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 燃氣熱水器哪個牌子好?靜音恆溫智能,高性價比燃氣熱水器推薦