天天看點

乾頤堂軍哥HCIE課程10-BGP的路由聯邦實施以及團體屬性操控路由1.BGP的RR2.聯邦3.BGP的團體屬性

BGP知識

拓撲圖

乾頤堂軍哥HCIE課程10-BGP的路由聯邦實施以及團體屬性操控路由1.BGP的RR2.聯邦3.BGP的團體屬性

IBGP防止環路機制帶來的問題,為保證更新資訊可以到達所有IBGP對等體

BGP Speaker與IBGP Speaker之間要保證會話的全互連,但這進而又帶來IBGP會話數n(n-1)/2的問題

解決方案:

路由反射 (RFC2796)

聯盟 (RFC3065)

同一叢集内的客戶機隻需要與該叢集的RR直接交換路由資訊,是以客戶機隻需要與RR之間建立IBGP連接配接,不需要與其他客戶機建立IBGP連接配接,進而減少了IBGP連接配接數量。如圖1所示,在AS65000内一台裝置作為RR,三台裝置作為客戶機,形成Cluster1。此時AS65000中IBGP的連接配接數從配置RR前的10條減少到4條,不僅簡化了裝置的配置,也減輕了網絡和CPU的負擔。

RR突破了“從IBGP對等體獲得的BGP路由,BGP裝置隻釋出給它的EBGP對等體。”的限制,并采用獨有的Cluster_List屬性和Originator_ID屬性防止路由環路。RR向IBGP鄰居釋出路由規則如下:

從非客戶機學到的路由,釋出給所有客戶機。

從客戶機學到的路由,釋出給所有非客戶機和客戶機(發起此路由的客戶機除外)。

從EBGP對等體學到的路由,釋出給所有的非客戶機和客戶機。

Cluster_List屬性

路由反射器和它的客戶機組成一個叢集(Cluster),使用AS内唯一的Cluster ID作為辨別。為了防止叢集間産生路由環路,路由反射器使用Cluster_List屬性,記錄路由經過的所有叢集的Cluster ID。

當一條路由第一次被RR反射的時候,RR會把本地Cluster ID添加到Cluster List的前面。如果沒有Cluster_List屬性,RR就建立一個。

當RR接收到一條更新路由時,RR會檢查Cluster List。如果Cluster List中已經有本地Cluster ID,丢棄該路由;如果沒有本地Cluster ID,将其加入Cluster List,然後反射該更新路由。

Originator_ID屬性

Originator ID由RR産生,使用的Router ID的值辨別路由的始發者,用于防止叢集内産生路由環路。

當一條路由第一次被RR反射的時候,RR将Originator_ID屬性加入這條路由,辨別這條路由的發起裝置。如果一條路由中已經存在了Originator_ID屬性,則RR将不會建立新的Originator_ID屬性。

當裝置接收到這條路由的時候,将比較收到的Originator ID和本地的Router ID,如果兩個ID相同,則不接收此路由。

備份路由反射器:

為增加網絡的可靠性,防止單點故障對網絡造成影響,有時需要在一個叢集中配置一個以上的RR。由于RR打破了從IBGP對等體收到的路由不能傳遞給其他IBGP對等體的限制,是以同一叢集内的RR之間中可能存在環路。這時,該叢集中的所有RR必須使用相同的Cluster ID,以避免RR之間的路由環路。

當客戶機Client1從EBGP對等體接收到一條更新路由,它将通過IBGP向RR1和RR2通告這條路由。

RR1和RR2在接收到該更新路由後,将本地Cluster ID添加到Cluster List前面,然後向其他的客戶機(Client2、Client3)反射,同時互相反射。

RR1和RR2在接收到該反射路由後,檢查Cluster List,發現自己的Cluster ID已經包含在Cluster List中。于是RR1和RR2丢棄該更新路由,進而避免了路由環路。

多叢集路由反射器:

一個AS中可以存在多個叢集,各個叢集的RR之間建立IBGP對等體。當RR所處的網絡層不同時,可以将較低網絡層次的RR配成客戶機,形成分級RR。當RR所處的網絡層相同時,可以将不同叢集的RR全連接配接,形成同級RR。

分級路由反射器:

降低對指定路由器IBGP路由通告機制的限制,允許将從IBGP對等體接收到的更新資訊傳給某些IBGP對等體

RR中的3個角色:

路由反射器 (Route Reflector) 

客戶機 (Client)

非客戶機 (Non-Client)

切記:非非(非用戶端之間)不傳

1)從非用戶端收到的路由會更新給用戶端和ebgp鄰居

[R3]dis bgp routing-table 6.6.6.6

BGP local router ID : 10.1.35.3

Local AS number : 345

Paths: 1 available, 1 best, 1 select

BGP routing table entry information of 6.6.6.6/32:

From: 55.1.1.1 (10.1.35.5)

Route Duration: 00h09m31s 

Relay IP Nexthop: 10.1.35.5

Relay IP Out-Interface: GigabitEthernet0/0/0

Original nexthop: 55.1.1.1

Qos information : 0x0

AS-path 60, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 48

Advertised to such 2 peers:

10.1.30.10

44.1.1.1 //更新給用戶端

2)從用戶端收到的路由會更新給所有的鄰居(用戶端和非用戶端、eBGP,不反射回該用戶端)

BGP routing table entry information of 2.2.2.2/32:

RR-client route.

From: 44.1.1.1 (4.4.4.4)

Route Duration: 00h10m16s 

Original nexthop: 44.1.1.1

AS-path 20, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 144

10.1.30.10 //更新給ebgp

55.1.1.1 //更新給非用戶端

3)從eBGP學習到的路由更新給用戶端和非用戶端

當一個AS記憶體在多台RR為Client提供備援時,RR間的路由更新很有可能會形成環路,為防止該現象,引入了Cluster的概念。

通常,一個客戶的簇隻擁有一個RR,并由RR的BGP Router-id去辨別該簇。有時,為了防止單點失效,在單一簇裡引入多個RR

Originator ID屬性用于防止在反射器和客戶機/非客戶機之間産生環路

Originator_ID屬性長4位元組,可選非過渡屬性,屬性類型為9 ,是由路由反射器(RR)産生的,攜帶了本地AS内部路由發起者的Router ID

當一條路由第一次被RR反射的時候,RR将Originator_ID屬性加入到這條路由,辨別這條路由的始發路由器。如果一條路由中已經存在了Originator_ID屬性,則RR将不會建立新的Originator_ID

當其它BGP Speaker接收到這條路由的時候,将比較收到的Originator_ID和本地的Router ID,如果兩個ID相同,BGP Speaker會忽略掉這條路由,不做處理

對于AS之間,BGP用于防止環路的主要措施是通過AS_Path屬性記錄途經的AS路徑,帶有本地AS号的路由将被路由器丢棄;對于AS之内,BGP防止路由環路的方法是禁止IBGP對等體釋出從AS内部學來的路由。

路由反射器的實作是基于放寬對“BGP在AS内學到的路由不會在AS中轉發”的要求,即允許IBGP對等體之間釋出從AS内部學來的路由。在這種情況下,Cluster_List屬性被引入,用于防止AS内部的環路。

Cluster_List是可選非過渡屬性,屬性類型編碼為10。

Cluster_List由一系列的Cluster_ID組成,描述了一條路由所經過的反射器路徑,這和描述路由經過的As路徑的AS_Path屬性有相似之處。Cluster_List由路由反射器産生。

當RR在它的客戶機之間或客戶機與非客戶機之間反射路由時,RR會把本地Cluster_ID添加到Cluster_List的前面。如果Cluster_List為空,RR就建立一個。

當RR接收到一條更新路由時,RR會檢查Cluster_List。如果Cluster_List中已經有本地Cluster_ID,丢棄該路由;如果沒有本地Cluster_ID,将其加入Cluster_List,然後反射該更新路由。

Cluster_List隻被RR用來檢測路由環路,不是RR的客戶機和非客戶機不會檢測該屬性。

Cluster_List隻在AS内部傳播,從EBGP對等體收到的含有Cluster_List的路由将被丢棄。

簇(cluster),RR和它們的用戶端組成一個簇

reflector cluster-id 3.3.3.3 //可選配置

起源ID(originator ID)的防環現象:

Jan 14 2018 10:38:47.58.1-08:00 R4 RM/6/RMDEBUG:

BGP.Public : Error identified while receiving UPDATE message from the peer 55.1.1.1 and ignored

Reason: (ORIGINATORID equal to RouterID). //如果起源ID=RID,則不接收該路由。思路:1)是否産生了路由(路由始發者) 2)是否更新出去 3)路由是否被接受

簇ID(cluster id),

Jan 14 2018 10:52:06.970.4-08:00 R5 RM/6/RMDEBUG:

BGP.Public : Error identified while receiving UPDATE message from the peer 33.1.1.1 and ignored

Reason: (Received CLUSTERLIST Value greater than allowed loop count of ClusterID of the speaker). //由于簇list中包含了自身的簇ID,是以拒絕該路由!

6.6.6.6這條路由R5更新給R3,R3接收了,why?

隻有路由被反射了,才會增加起源ID/簇ID屬性

dis bgp routing-table 2.2.2.2

BGP local router ID : 10.1.35.5

Paths: 2 available, 1 best, 1 select

From: 33.1.1.1 (10.1.35.3)

Route Duration: 00h01m59s 

Relay IP Nexthop: 10.1.1.1

Relay IP Out-Interface: Serial1/0/0

AS-path 20, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 96

Originator: 4.4.4.4 //起源ID

Cluster list: 3.3.3.3 //簇清單

66.1.1.1

44.1.1.1

1.3 階層化的RR+補充路由反射器情況下的下一跳

多層RR而已

[R3-bgp]peer 44.1.1.1 next-hop-local //不能實作需求

[R3-bgp]peer 44.1.1.1 route-policy NHOP export //RR上出方向應用政策無效(ENSP 390)

R4上:

[R4-bgp]peer 33.1.1.1 route-policy NHOP import

route-policy NHOP permit node 5 

if-match acl 2006

apply ip-address next-hop 33.1.1.1 //如果比對到acl20006調用的路由,修改下一跳為RR的更新源位址

route-policy NHOP permit node 10 //允許其他路由從RR更新

acl number 2006 

rule 5 permit source 6.6.6.6 0 

驗證:

<R4>dis bgp routing-table

BGP Local router ID is 4.4.4.4 

Status codes: * - valid, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Total Number of Routes: 4

Network NextHop MED LocPrf PrefVal Path/Ogn

> 2.2.2.2/32 10.1.24.2 0 0 20i

>i 6.6.6.0/28 55.1.1.1 100 0 60 123e //路由政策放行的路由,不做修改

*>i 6.6.6.6/32 33.1.1.1 0 100 0 60i //生效,修改了下一跳

聯盟通過把大的AS分成多個更小的AS來解決IBGP全互連的問題,這些自治系統叫做成員AS。因為成員AS之間使用EBGP會話,它們之間不需要全互連。然而在每一個成員AS中,IBGP全互連的要求仍然适用。

聯盟中的EBGP會話和正常的EBGP會話有所不同。為了區分它們,這種類型的EBGP會話叫做聯盟内的EBGP會話。與普通EBGP會話差別就發生在當通過會話傳播路由的時候,聯盟内的EBGP會話在一方面遵循路由通告的部分IBGP規則,在另一方面又遵循路由通告的部分EBGP規則。如:在發送更新的時候,NEXP_HOP、MED和LOCAL_PREF被保留,而AS-PATH被修改。

對于外部鄰居來說(聯盟外的的對等體),成員AS拓撲是不可見的。也就是說,在發向EBGP鄰居的更新消息中,已經剝去了聯盟内被修改的AS_PATH。從其他的自治系統來看,聯盟就像單個AS一樣。

每個成員AS中,IBGP全連接配接是需要的。路由反射也可以被部署。部署聯盟的一個明顯優勢就是其成員AS不需要使用相同的IGP。每個成員AS不需要向其他成員AS通告自己的内部拓撲。不過,當使用不同的IGP時,每一個成員AS内必須保證BGP下一跳的可達性。

它沒有改變iBGP的更新機制,是以不需要額外的防環規則

比如下一跳、本地優先級等屬性在整個聯邦保持不變

目前,AS_PATH屬性被定義為公認必遵屬性,該屬性由AS号所組成。AS_PATH屬性字段由三元組所組成:

Path Segment Type, Path Segment Length, Path Segment Value

在BGPv4裡,path segment type字段是由1位元組長的數值所組成,主要是辨別AS_PATH的不同類型:

Value Segment Type

1 AS_SET: 由一系列AS号無序地組成,包含在UPDATE消息裡。

2 AS_SEQUENCE: 由一系列AS号順序地組成,包含在UPDATE消息裡。

3 AS_CONFED_SEQUENCE: 在本地聯盟内由一系列成員AS号按順序地組成,包含在UPDATE消息中,隻能在本地聯盟内傳遞。

4 AS_CONFED_SET: 在本地聯盟内由一系列成員AS無序地組成,包含在UPDATE消息中,同樣隻能在本地聯盟内傳遞。

需求:

as345被配置為聯邦,R3和R4為成員as64512(私有as号碼的最小值),R5為成員as65535(私有as号碼的最大值),R3和R5建構聯邦as的ebgp鄰居

[R5-bgp]dis th

[V200R003C00]

#

bgp 65535

confederation id 345 //表明本as的“國家”身份

confederation peer-as 64512 //表明和成員as的eBGP鄰居關系

peer 33.1.1.1 as-number 64512 

peer 33.1.1.1 ebgp-max-hop 255 

peer 33.1.1.1 connect-interface LoopBack0 //不要忘記成員as的ebgp多跳也需要配置,否則ttl為1,封包無法到達對端

peer 33.1.1.1 next-hop-local //對成員as修改下一跳,否則路由不會優化

peer 66.1.1.1 as-number 60 //建構國家間的ebgp鄰居

peer 66.1.1.1 ebgp-max-hop 255 

peer 66.1.1.1 connect-interface LoopBack0

<R5>dis bgp routing-table 2.2.2.2

團體屬性是BGP的私有屬性,在BGP對等體之間傳播,且不受AS的限制。利用團體屬性可以使多個AS中的一組BGP裝置共享相同的政策,進而簡化路由政策的應用和降低維護管理的難度。

BGP裝置可以在釋出路由時(或者針對鄰居更新以及收取時、或者引入路由時),新增或者改變路由的團體屬性。

是在BGP中一種給路由條目打上标記,用于確定路由過濾和選擇的連續性,BGP路由器可以過濾進出路由更新或者優選某些路由

可選傳輸屬性,必須針對做peer x.x.x.x advertise-community

最容易忽略的是:peer x.x.x.x advertise-community

團體屬性可以有多種應用方式,不同的應用結果不同

NETWORK、針對鄰居在出/入方向應用、引入路由的時候應用、聚合的時候應用

3.1 衆所周知的團體屬性(路由過濾相關)

INTERNET,預設屬性,所有路由都具備這個屬性

no-advertise,不更新路由給鄰居

aggregate 6.6.6.0 255.255.255.240 suppress-policy SUPPRESS attribute-policy ATTRIBUTE 

//聚合路由時修改團體屬性

route-policy ATTRIBUTE permit node 10 

apply community no-advertise 

[R6-bgp]dis bgp rou 6.6.6.0

BGP local router ID : 0.0.6.6

Local AS number : 60

BGP routing table entry information of 6.6.6.0/28:

Aggregated route. 

Route Duration: 00h03m10s 

Direct Out-interface: NULL0

Original nexthop: 127.0.0.1

Community:no-advertise //由于是路由在生成時就具備該屬性,是以不在更新給鄰居

針對鄰居應用的執行個體:

route-policy COMM permit node 5 

if-match acl 2006 

apply community no-advertise //僅僅對acl2006的路由做出團體屬性no-advertise

route-policy COMM permit node 10 //放行其他路由,不做團體屬性的修改

bgp 60

peer 55.1.1.1 advertise-community

peer 55.1.1.1 route-policy COMM export //針對鄰居調用

驗證結果:

<R5>dis bgp routing-table 6.6.6.6

no-export,不更新路由給真正的EBGP

此時R3和R4是否具備no-export屬性?沒有,因為預設不向鄰居通告團體屬性

R6:

apply community no-export //對acl2006命中的路由,增加“不通告給真正的ebgp”的團體屬性

route-policy COMM permit node 10 //對其他路由放心

peer 55.1.1.1 route-policy COMM export

[R5-bgp]peer 33.1.1.1 advertise-community

[R3-bgp]peer 44.1.1.1 advertise-community

[R3-bgp]peer 55.1.1.1 advertise-community

<R4>dis bgp routing-table 6.6.6.6

no-export-subconfed,不更新路由給其他成員AS(local-as)/僅僅在該AS傳遞(如果沒有聯邦就等同于no-export參數)

apply community no-export-subconfed 

route-policy COMM permit node 10

Local AS number : 65535

From: 66.1.1.1 (0.0.6.6)

Route Duration: 00h01m45s 

Relay IP Nexthop: 10.1.56.6

Relay IP Out-Interface: Serial2/0/0

Original nexthop: 66.1.1.1

Community:no-export-subconfed

AS-path 60, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255, IGP cost 48

Not advertised to any peer yet //不更新給其他的成員as

結果是成員as 64512中不存在路由

需求:請在AS345中配置(不允許在as60配置),使得AS64512 得到該路由

團體屬性是一種需要配合使用的參數,具備一個破壞性的參數

route-policy NO permit node 10 

apply community none //可以把所有團體屬性拿掉

新需求:

Route Duration: 00h00m03s 

Community:<60:6>, no-export-subconfed

3.2 自定義的團體屬性

3.3 團體屬性清單應用和影響選路

團體屬性清單,用于去比對團體屬性

[R1]ip community-filter 1 permit 60:6 //團體屬性清單命中某些團體屬性

route-policy XUANLU permit node 10 

if-match community-filter 1 

apply preferred-value 10 //針對團體屬性修改影響選路的參數

route-policy XUANLU permit node 20 //放行其他路由

[R1-route-policy]bgp 10

[R1-bgp]peer 15.15.15.15 route-policy XUANLU import //針對鄰居來影響選路

<R1>tracert 6.6.6.6

traceroute to 6.6.6.6(6.6.6.6), max hops: 30 ,packet length: 40,press CTRL_C to break 

1 10.1.15.5 60 ms 40 ms 40 ms 

2 10.1.56.6 50 ms 40 ms 50 ms 

總結:

1).對某些路由自定團體屬性 2).别忘記向鄰居通告團體屬性,否則中斷了政策 3)應用 4)對團體屬性清單比對的路由,通過路由政策影響選路

作業:

R6上産生的路由6.6.6.6自定義團體屬性60:6;

AS345的R4+R1建立ebgp鄰居

AS345的R5+SW3建立ebgp鄰居

R1上到達6.6.6.6通過高速的以太網轉發資料,其他路由不受影響

4.BGP的選路屬性和操作

本文轉自EnderJoe 51CTO部落格,原文連結:http://blog.51cto.com/enderjoe/2060784

繼續閱讀