BGP路由協議詳解(完整篇)

 

  因爲各位工程師在下載之前的BGP路由協議詳解(完整篇)時,不能下載附件,因此今天我將這個博再從新發一次。http://www.ruijie.com.cn/plan/new_2397  redis

上個月我寫一篇關於BGP協議的博文,曾許諾過要完善這個文檔,但因最近的工做和授課很忙,因此沒有時間進行完善。爲了實現這個承諾,我在去外地出差期間對BGP協議詳解博文進行一些修改,其中內容包括了一些實驗,以及一些內容的補充和深刻闡述,更宜於網友們學習BGP路由協議。由於這個文檔出來的很晚,也但願網友們見諒! 算法

     此BGP協議的內容也不算太難,一些關於BGP的高級應用,會在之後MPLS 協議和MPLS流量工程中的內容中會更深刻的講解!   
    但願經過本文檔能幫助那些愛好網絡知識和那些參加CCIE考試的網友們提供一些幫助。 數據庫

  1、BGP的概況  api

BGP最新的版本是BGP第4版本(BGP4),它是在RFC4271中定義的;一個路由器只能屬於一個AS。AS的範圍從1-65535(64512-65535是私有AS號),RFC1930提供了AS號使用指南。網絡

BGP的主旨是提供一種域間路由選擇系統,確保自主系統只可以無環地交換路由選擇信息,BGP路由器交換有關前往目標網絡的路徑信息。session

BGP是一種基於策略的路由選擇協議,BGP在肯定最佳路徑時考慮的不是速度,而是讓AS可以根據多種BGP屬性來控制數據流的傳輸。併發

一、BGP的特性  負載均衡

? BGP將傳輸控制協議(TCP)用做其傳輸協議。是可靠傳輸,運行在TCP的179端口上(目的端口)tcp

? 因爲傳輸是可靠的,因此BGP0使用增量更新,在可靠的鏈路上不須要使用按期更新,因此BGP使用觸發更新。ide

? 相似於OSPF和ISIS路由協議的Hello報文,BGP使用keepalive週期性地發送存活消息(60s)(維持鄰居關係)。

? BGP在接收更新分組的時候,TCP使用滑動窗口,接收方在發送方窗口達到一半的時候進行肯定,不一樣於OSPF等路由協議使用1-to-1窗口。

? 豐富的屬性值

? 能夠組建可擴展的巨大的網絡

二、BGP的三張表  

? 鄰居關係表

n 全部BGP鄰居

? 轉發數據庫

n 記錄每一個鄰居的網絡

n 包含多條路徑去往同一目的地,經過不一樣屬性判斷最好路徑

n 數據庫包括BGP屬性

? 路由表

n 最佳路徑放入路由表中

n EBGP路由(從外部AS獲悉的BGP路由)的管理距離爲20

n IBGP路由(從AS系統獲悉的路由)管理距離爲200

以下圖所示。

clip_p_w_picpath002

? 鄰居表,包含與之創建BGP鏈接的鄰居

n 使用命令show ip bgp summary能夠查看到   

Router#sh ip bgp summary 

BGP router identifier 11.1.1.1, local AS number 100

BGP table version is 8, main routing table version 8

5 network entries using 585 bytes of memory

6 path entries using 312 bytes of memory

4/3 BGP path/bestpath attribute entries using 496 bytes of memory

1 BGP AS-PATH entries using 24 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 1417 total bytes of memory

BGP activity 5/0 prefixes, 6/0 paths, scan interval 60 secs

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

10.1.1.1 4 100 14 18 8 0 0 00:09:32 2

11.1.1.2 4 200 12 16 8 0 0 00:07:03 1

 

? 轉發表,從鄰居那裏獲悉的的全部路由都被加入到BGP轉發表中。

n 使用命令show ip bgp能夠查看   

Router#sh ip bgp 

BGP table version is 8, local router ID is 11.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

r RIB-failure, S Stale

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

Network Next Hop Metric LocPrf Weight Path

*> 10.1.1.0/24 0.0.0.0 0 32768 i

* i 10.1.1.1 0 100 0 i

*> 11.1.1.0/24 0.0.0.0 0 32768 i

*>i192.168.1.0 10.1.1.1 0 100 0 i

*> 192.168.2.0 0.0.0.0 0 32768 i

*> 192.168.3.0 11.1.1.2 0 0 200 i

 

? 路由表,BGP路由選擇進程從BGP轉發表中選出前往每一個網絡的最佳路由,並加入到路由表中。

n 使用命令show ip route bgp能夠查看   

Router#sh ip route bgp 

B 192.168.1.0/24 [200/0] via 10.1.1.1, 00:13:11

B 192.168.3.0/24 [20/0] via 11.1.1.2, 00:11:19

 

三、BGP消息類型  

? open:用來創建最初的BGP鏈接。(包含hold-time,router-id)

? Keepalive:對等體之間週期性的交換這些消息以保持會話有效。(默認60秒)

? Update:對等體之間使用這些消息來交換網絡層可達性信息。

? Notification:這些消息用來通知出錯信息。

全部的BGP分組共享一樣的公有首部,在學習不一樣類型的分組以前,先討論公共首部,以下圖所示,這個首部的字段以下。

標記:這個16字節標記字段保留給鑑別用

長度:這個2字節字段定義包括首部在內的報文總長度

類型:這個1字節段定義分組的類型,用數值1至4定義BGP消息類型

clip_p_w_picpath004

打開消息:主要是利用此報文創建鄰居,運行BGP的路由器打開與鄰居的TCP鏈接,併發送打開報文,若是鄰居接受這種鄰居關係,由響應保活報文。打開報文格式以下所示。

clip_p_w_picpath006

版本:這個1字節字段定義BGP的版本,當前的版本是4

自治系統:這個2字節字段定義自治系統號。

保持時間:這個2字節字段定義一方從另外一方收到保活報文或更新報文以前所通過的最大秒數,若路由器在保持時間的期間內沒有收到這些報文中的一個,就認爲對方是不工做的。

BGP協議標識:這是2字節字段,這定義發送打開報文的路由器,爲此,這個路由器一般使用它的IP地址中的一個做爲BGP標識符。

選項長度:打開報文還能夠包含某些選項參數,若包含,則這個1字節字段定義選項參數總長度,若沒有選項參數,則這個字段的值爲0

選項參數:若選項參數長度的值不是0,則表示有某些選項參數,每個選項參數自己又有兩個字段,參數長度和參數值,到如今已定義的惟一的選項參數是鑑別。

以下圖是採用ethereal採集到的BGP的打開消息報文。

clip_p_w_picpath008

更新報文:更新報文是BGP協議的核心,路由器使用它來撤銷之前已通知的終點和宣佈到一個新終點的路由,或二者都有,應該注意:BGP能夠撤銷好幾個在之前曾通知過的終點,但在單個更新報文中則只能通知一個新終點,以下所示。

clip_p_w_picpath010

不可行路由長度:這個2字節字段定義下一字段的長度。

撤銷路由:這個字段列出必須從之前通知的清單中刪除的全部路由

路徑屬性長度:這個2字節字段定義下一個字段的長度

路徑屬性:這個字段定義到這個報文宣佈可達性的網絡路徑屬性

網絡層可達性信息:這個字段定義這個報文真正通知的網絡。它有一個長度字段和一個IP地址前綴,長度定義前綴中的位數。前綴定義這個網絡地址的共同部分。例如,若這個網絡是123.1.10.0/24,則網絡前綴是24而前綴是123.1.10。

下圖爲,是採用ethereal採集到的BGP的更新消息報文。

clip_p_w_picpath012

clip_p_w_picpath014

保活報文:是用來告訴對方本身是工做的,保活報文只包括公共首部,以下圖所示。

clip_p_w_picpath016

下圖爲,是採用ethereal採集到的BGP的保活報文。

clip_p_w_picpath018

通知報文:當檢測出差錯狀態或路由器打算關閉鏈接時,路由器就發送通知報文,以下圖所示。

clip_p_w_picpath020

差錯碼:這個1字節字段定義差錯的種類

差錯子碼:這個1字節字段進一步定義每一種差錯的類型

差錯數據:這個字段可用來給出關於該差錯的更多的診斷信息

具體的差錯碼,以下表所示。   

差錯碼

差錯碼說明

差錯子碼說明

1

報文首部差錯

3種不一樣的子碼:同步問題(1),壞的報文長度(2),壞的報文類型(3)

2

打開報文差錯

6種不一樣的子碼:不支持的版本(1),壞的對等AS(2),壞的BGP標識符(3),不支持的可選參數(4),鑑別失敗(5),不可接受的保持時間(6)

3

更新報文差錯

11種不一樣的子碼:錯誤造成的屬性表(1),不能識別的熟知屬性(2),丟失熟知屬性(3),屬性標誌差錯(4),屬性長度差錯(5),非法起點屬性(6),AS路由選擇環路(7),無效的下一路屬性(8),可選屬性差錯(9),無效的網絡字段(10),錯誤造成的AS_PATH(11)

4

保持計時器截止期到

未定義子碼

5

有限狀態機差錯

定義過程的差錯,未定義子碼

6

關閉

未定義子碼

 

下圖爲,是採用ethereal採集到的BGP的通知報文。

clip_p_w_picpath022

四、創建鄰居的過程  

在兩個BGP發言人交換信息以前,BGP都要求創建鄰居關係,BGP不是動態地發現所感興趣的運行BGP的路由器,相反,BGP使用一個特殊的鄰居IP地址來配置的。

BGP使用週期性的Keepalive分組來確認BGP鄰居的可訪問性。

Keepalive計時器是保持時間(Hold Time)的三分之一,若是發給某一特定BGP鄰居三個連續的Keepalive分組都丟失的話,保持時間計時器超時,那個鄰居被視爲不可達,RFC1771對保持時間的建議是90秒,Keepalive計時器的建議值是30秒。

按照RFC1771,BGP創建鄰居關係要經歷如下幾個階段,以下圖所示。

clip_p_w_picpath024

Idle在此狀態下不分配網絡資源,不容許傳入的BGP鏈接。當在持續性差錯條件下,常常性的重啓會致使波動。所以,在第一次進入到空閒狀態後,路由器會設置鏈接重試定時器,在定時器到期時纔會從新啓動BGP,思科的初始鏈接重試時間爲60秒,之後每次鏈接重試時間都是以前的兩倍,也就是說,鏈接等待時間呈指數關係遞增。

Connect:(已經創建完成了TCP三次握手),BGP等待TCP鏈接完成,若是鏈接成功,BGP在發送了OPEN分組給對方以後,狀態機變爲OpenSent狀態,若是鏈接失敗,根據失敗的緣由,狀態機可能演變到Active,或是保持Connect,或是返回Idle。

Active:在這個狀態下,初始化一個TCP鏈接來創建BGP間的鄰居關係。若是鏈接成功,BGP在發送了OPEN分組給對方以後,狀態機變爲OpenSent狀態,若是鏈接失敗,可能仍處在Active狀態或返回Idle狀態。

OpenSentBGP發送OPEN分組給對方以後,BGP在這一狀態下等待OPEN的迴應分組,若是迴應分組成功收到,BGP狀態變爲OpenConfirm,並給對方發送一條Keepalive分組,若是沒有接到迴應分組,BGP狀態從新變爲Idle或是Active。

OpenConfirm這時,距離最後的Established狀態只差一步,BGP在這個狀態下等待對方的Keepalive分組,若是成功接收,狀態變爲Established,不然,由於出現錯誤,BGP狀態將從新變爲Idle。

Established這是BGP對等體之間 能夠交換信息的狀態,可交換的信息包括UPDATE分組、KeepAlive分組和Notification分組。

connect和active都是TCP鏈接階段,ACTIVE是發起方,connect是應答方。可使用命令show ip bgp summary、debug ip bgp events、debug ip bgp來查看。   

Router#debug ip bgp 

BGP debugging is on for address family: IPv4 Unicast

*Jun 23 22:00:05.619: BGP: 11.1.1.2 went from Idle to Active

*Jun 23 22:00:05.627: BGP: 11.1.1.2 open active delayed 30128ms (35000ms max, 28% jitter)

*Jun 23 22:00:06.215: BGP: 11.1.1.2 passive open to 11.1.1.1

*Jun 23 22:00:06.219: BGP: 11.1.1.2 went from Active to Idle

*Jun 23 22:00:06.219: BGP: 11.1.1.2 went from Idle to Connect

*Jun 23 22:00:06.227: BGP: 11.1.1.2 rcv message type 1, length (excl. header) 26

*Jun 23 22:00:06.227: BGP: 11.1.1.2 rcv OPEN, version 4, holdtime 180 seconds

*Jun 23 22:00:06.231: BGP: 11.1.1.2 went from Connect to OpenSent

*Jun 23 22:00:06.231: BGP: 11.1.1.2 sending OPEN, version 4, my as: 100, holdtime 180 seconds

*Jun 23 22:00:06.231: BGP: 11.1.1.2 rcv OPEN w/ OPTION parameter len: 16

*Jun 23 22:00:06.231: BGP: 11.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 6

*Jun 23 22:00:06.235: BGP: 11.1.1.2 OPEN has CAPABILITY code: 1, length 4

*Jun 23 22:00:06.235: BGP: 11.1.1.2 OPEN has MP_EXT CAP for afi/safi: 1/1

*Jun 23 22:00:06.235: BGP: 11.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 2

*Jun 23 22:00:06.235: BGP: 11.1.1.2 OPEN has CAPABILITY code: 128, length 0

*Jun 23 22:00:06.239: BGP: 11.1.1.2 OPEN has ROUTE-REFRESH capability(old) for all address-families

*Jun 23 22:00:06.239: BGP: 11.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 2

*Jun 23 22:00:06.239: BGP: 11.1.1.2 OPEN has CAPABILITY code: 2, length 0

*Jun 23 22:00:06.239: BGP: 11.1.1.2 OPEN has ROUTE-REFRESH capability(new) for all address-families 

BGP: 11.1.1.2 rcvd OPEN w/ remote AS 200

*Jun 23 22:00:06.243: BGP: 11.1.1.2 went from OpenSent to OpenConfirm

*Jun 23 22:00:06.243: BGP: 11.1.1.2 send message type 1, length (incl. header) 45

*Jun 23 22:00:06.359: BGP: 11.1.1.2 went from OpenConfirm to Established

*Jun 23 22:00:06.363: %BGP-5-ADJCHANGE: neighbor 11.1.1.2 Up

 

五、創建IBGP鄰居  

IBGP運行在AS內部,不須要直連。IBGP有水平分割,建議使用Full Mesh,因爲Full Mesh不具備擴展性,爲了解決IBGP的Full Mesh問題,使用路由反射器(RR)和聯邦兩種方法來解決。主要減小了backbone IGP中的路由。

Neighbor後所指的地址可達。發起方不能是缺省路由,應答方不能是缺省路由。

可使用下面兩種方法來創建IBGP鄰居:

? 鄰居之間能夠經過各自的一個物理接口創建對等關係,該對等關係是經過屬於它們共享的子網的IP地址來創建的。

? 鄰居之間也能夠經過使用環回接口創建對等關係。

在IBGP中,因爲假定了IBGP鄰居在物理上直接相連的可能性不大,因此將IP分組頭中的TTL域設置爲255。

  六、創建EBGP鄰居  

EBGP運行在AS與AS之間的邊界路由器上,默認狀況下,須要直連或使用靜態路由,若是不是直連,必須指EBGP多跳,Neighbor x.x.x.x ebgp-multihop [1-255] 不選擇爲最大值,255跳。

可使用下面兩種方法來創建EBGP鄰居:

? 鄰居之間能夠經過各自的一個物理接口創建對等關係。

? 鄰居之間也能夠經過使用環回接口創建對等關係。

 

  七、neighbor ip-address remote-as number命令  

例:neighbor 10.1.1.1 remote-as 100

指定對方屬於哪個AS。所指的10.1.1.1地址,必須在IGP中可達。

? 容許鄰居用這個地址來訪問個人179端口,但沒有指明訪問本路由器的哪一個地址,只檢查源地址。

? 本路由器以更新源地址去訪問neighbor後面這個地址的179端口,是否能夠創建TCP連接要看對方是否容許個人更新源來訪問它。

示例:

clip_p_w_picpath026

R1/R2兩臺路由器運行RIPv2,都將環回口宣告進RIP。這時假如在兩臺路由器之間運行IBGP鄰居關係:

R1neighbor 192.168.2.1 remote-as 1

R2neighbor 10.1.1.1 remote-as 1

雙方都沒有寫更新源。(neighbor x.x.x.x update-source lo0表明本路由器的更新源爲lo0口,BGP的包以這個接口的地址爲源地址發送出去。)

一邊指環回口,一邊指直鏈接口。能夠創建鄰居。這裏有2個TCP的session,其中只有R1去訪問R2的環回口的179端口的TCP session能夠創建。能夠用show tcp brief查看。    

Router#sh tcp brief 

TCB Local Address Foreign Address (state)

65693960 10.1.1.1.51124 192.168.2.1.179 ESTAB

 

這時在R2上寫上肯定更新源命令:neighbor 10.1.1.1 update-source lo1,這時便可創建2條TCP session。可使用命令Show tcp brief查看到2條TCP session在創建,當一條establish完成後,另外一條過會即消失。    

Router#sh tcp brief 

TCB Local Address Foreign Address (state)

65693960 10.1.1.1.51124 192.168.2.1.179 CLOSED

65693E14 10.1.1.1.37992 192.168.2.1.179 ESTAB

Router#sh tcp brief 

TCB Local Address Foreign Address (state)

65693E14 10.1.1.1.37992 192.168.2.1.179 ESTAB

 

注:路由器創建BGP鄰居寫兩條正確的neighbor命令,是爲了冗餘。

八、IBGP的同步  

? BGP同步規則指出,BGP路由器不該用使用經過IBGP獲悉的路由或將其通告給外部鄰居,除非該路由是本地的或是經過IGP獲悉的。

? 同步開啓意味着,從一個IBGP鄰居學來的路由,除非從IGP中也一樣學習到,不然不可能被選爲最優。

? 若是IGP爲OSPF,那麼在IGP中,這些前綴的router-id也必須與通告這些前綴的bgp的router-id相匹配。纔有可能被選爲最優。

實例說明:以下圖所示

clip_p_w_picpath028

R一、R二、R3同爲OSPF area 0中路由器(每臺路由器的router-id如上圖所示),R2上一條路由3.3.3.0/24宣告進OSPF。

R一、R3運行IBGP,R1將3.3.3.0/24的前綴引入BGP,傳給R3。這時R3既從OSPF area0中的R2學習到該前綴,又從IBGP對等體R1,學習到該前綴,若是R3的synchronizaion是開啓的,檢查同步,在R3的BGP轉發表裏:   

R1

router ospf 10

router-id 2.2.2.1

log-adjacency-changes

network 10.1.1.0 0.0.0.255 area 0

network 11.1.1.0 0.0.0.255 area 0

!

router bgp 100

synchronization

bgp log-neighbor-changes

redistribute ospf 10

neighbor 11.1.1.2 remote-as 100

no auto-summary

 

R3

router ospf 10

router-id 2.2.2.3

log-adjacency-changes

network 11.1.1.0 0.0.0.255 area 0

!

router bgp 100

synchronization

bgp log-neighbor-changes

neighbor 11.1.1.1 remote-as 100

no auto-summary

R3#sh ip bgp 

BGP table version is 30, local router ID is 11.1.1.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

r RIB-failure, S Stale

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

Network Next Hop Metric LocPrf Weight Path

* i3.3.3.3/32 10.1.1.1 11 100 0 ?

* i10.1.1.0/24 11.1.1.1 0 100 0 ?

r>i11.1.1.0/24 11.1.1.1 0 100 0 ?

R3#sh ip bgp 3.3.3.3 

BGP routing table entry for 3.3.3.3/32, version 26

Paths: (1 available, no best path)

Not advertised to any peer

Local

10.1.1.1 (metric 20) from 11.1.1.1 (11.1.1.1)

Origin incomplete, metric 11, localpref 100, valid, internal, not synchronized

 

說明同步檢查沒有經過,當把R1的bgp的router-id改成2.2.2.2時,R3這時檢查同步就能夠經過了。   

R1

router ospf 10

router-id 2.2.2.1

log-adjacency-changes

network 10.1.1.0 0.0.0.255 area 0

network 11.1.1.0 0.0.0.255 area 0

!

router bgp 100

synchronization

bgp router-id 2.2.2.2

bgp log-neighbor-changes

redistribute ospf 10

neighbor 11.1.1.2 remote-as 100

no auto-summary

R3#sh ip bgp 

BGP table version is 37, local router ID is 11.1.1.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

r RIB-failure, S Stale

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

Network Next Hop Metric LocPrf Weight Path

r>i3.3.3.3/32 10.1.1.1 11 100 0 ?

r>i10.1.1.0/24 11.1.1.1 0 100 0 ?

r>i11.1.1.0/24 11.1.1.1 0 100 0 ?

R3#sh ip bgp 3.3.3.3 

BGP routing table entry for 3.3.3.3/32, version 35

Paths: (1 available, best #1, table Default-IP-Routing-Table, RIB-failure(17))

Flag: 0x820

Not advertised to any peer

Local

10.1.1.1 (metric 20) from 11.1.1.1 (2.2.2.2)

Origin incomplete, metric 11, localpref 100, valid, internal, synchronized, best

 

? 關閉同步的條件

n 將EBGP的路由重分佈進IGP

n 本AS不爲其餘AS提供穿越服務(末節的AS)

n 穿越路徑上全部路由器都運行BGP

  2、BGP屬性  

路由器發送關於目標網絡的BGP更新消息,更新的度量值被稱爲路徑屬性。屬性能夠是公認的或可選的、強制的或自由決定的、傳遞的或非傳遞的。屬性也能夠是部分的。並不是組織的和有組合都是合法的,路徑屬性分爲4類:

? ——公認強制的

? ——公認自由決定的

? ——可選傳遞的

? ——可選非傳遞的

? 只有可選傳遞屬性可被標記爲部分的

公認屬性

? 是公認全部BGP實現都必須可以識別的屬性。這早些屬性被傳遞給BGP鄰居。

? 公認強制屬性必須出如今路由描述中,公認自由決定屬性能夠不出如今路由描述中

可選屬性

? 非公認屬性被稱爲可選的,可選屬性能夠是傳遞的或非傳遞的

? 可選屬性不要求全部的BGP實現都支持

? 對於不支持的可選傳遞屬性,路由器將其原封不動地傳遞給其餘BGP路由器,在這種狀況下,屬性被標記爲部分的。

? 對於可選非傳遞屬性,路由器必須將其刪除,而不將其傳遞給其餘BGP路由器

BGP定義屬性

? 公認強制屬性

? 公認自由決定

? 可選傳遞屬性

? 可選非傳遞屬性

BGP每條更新消息都有一個長度可變的路徑屬性序列<屬性類型,屬性長度,屬性值>,若是第1比特是0,則屬因而公認屬性,若是它是1,則該屬性是任選屬性,若是第2比特是0,則該屬性是不可傳遞的,若是它是1,則屬性是可傳遞的,公認屬性老是可傳遞的,屬性標誌域中的第3個比特指示任選可傳遞屬性中的信息是部分的(值爲1)仍是完整的(值爲0),第4個比特肯定該屬性長度是1字仍是2字節,標誌域其餘4個比特總爲0.屬性類型代碼字節含有屬性代碼。以下圖所示。

clip_p_w_picpath030

  一、AS路徑屬性(AS-path)  

AS_PATH是一個公認必選的屬性,它用AS號的順序來描述AS間的路徑或到NLRI所明確的目的地的路由。

當每一個運行運行BGP的路由器發起一條路由——當它在本身的AS域內公佈一個有關目的地NLRI——它將本身的AS號附加到AS_PATH中。當後續的運行BGP的路由器向外部的對端公佈路由,它將本身的AS號附加到AS_PATH中。AS能夠描述全部它通過的自治系統,以最近的AS開始,以發起者的AS結束。以下圖所示。

clip_p_w_picpath032

只有將更新消息發送給在另外一個AS域內的鄰居時,BGP路由器纔將它的AS號加到AS_PATH中,也就是說只有在兩個EBGP對等體之間公佈路由時,AS號才被附加到AS_PATH中。

能夠經過使用AS附加改變其公佈路由的AS_PATH來影響數據流的流向。

AS_PATH屬性的另外一個功能就是避免環路,若是BGP路由器從它的外部鄰居收到一條路由,而該路由AS_PATH包含這個BGP路由器本身的AS號。因而該路由器就知道是條環路路由。以下圖所示。

clip_p_w_picpath034

實例說明:如圖所示。

clip_p_w_picpath036

能夠將私有的AS號進行隱藏,以下配置所示。

clip_p_w_picpath038

下面是AS屬性的另外一個實例,以下圖所示。

clip_p_w_picpath040

R1在發送更新的時候,剝除私有AS號;而且不將AS100的路由傳播給其客戶路由器R3,配置以下所示。

clip_p_w_picpath042

聚合後繼承明細路由的屬性,在大括號裏面的as-path在計算長度時,只算一個。在聯盟內小括號裏面的AS號,在選路時,不計算到as-path長度裏面。

增長as-path的長度,能夠用route-map裏面的set as-path prepend來作,如:   

neighbor 1.1.1.1 route-map AS {in|out}

route-map AS

set as-path prepend 10 10

 

在neighbor的入向作as-path prepend。是在as-path靠近個人地方加長度,如:

10 10 2。10 10是新加的。

而在neighbor的出向作as-path prepend。是在AS起源的方向加path長度,如:

2 10 10i 。10 10是新加的。

在as-path prepend的後面還有一個參數,last-as,如:   

route-map AS

set as-path prepend last-as ?

<1-10> number of last-AS prepends

 

意思是將離我最近的AS,將它的AS號在as-path裏面再重複出現幾回。這個10看起來能夠和allowas-in裏面的10對應起來。

假如as-path prepend 與as-path prepend last-as合用的時候,last-as先生效,而後prepend再生效。

減少as-path的長度,如用聯盟和remove-private-AS等能夠實現。

注意:Remove-private-as,若是在as-path裏交替出現私有和公有的AS號,這樣將沒法將私有AS號去掉。在起源的時候,連續的時候纔有效。

bgp bestpath as-path ignore(隱藏命令)這條命令可使咱們在選路時,跳過as-path的選路,直接往下繼續選擇最優路徑。

 

  二、源頭屬性(Origin)  

源頭是公認強制屬性,它定義了路徑信息的源頭。

IGP:路由在起始AS的內部,使用network命令經過BGP通告路由時,一般屬於這種狀況,在BGP表中,IGP源頭用i表示

EGP:路由是經過EGP獲悉的,在BGP表中用e表示。

不徹底:路由的源頭未知或是經過其餘方法獲悉的,在BGP表中,不完整源頭用?表示

以下示例所示。

clip_p_w_picpath044

  二、下一跳屬性(NEXT_HOP)  

該爲公認必選屬性,描述了到公佈目的地的路徑下一跳路由器的IP地址。由BGP NEXT_HOP屬性所描述的IP地址不常常是鄰居路由器的IP地址,要遵循下面的規則:

若是正在進行路由宣告的路由器和接收的路由器在不一樣的自治系統中,NEXT_HOP是正在宣告路由器接口的IP地址,以下圖所示。

clip_p_w_picpath046

若是正在進行路由宣告的路由器和接收的路由器在同一個AS內,而且更新消息的NLRI指明的目的地也在同一個AS內,那麼NEST_HOP就是宣告路由的鄰居的IP地址。以下圖所示。

clip_p_w_picpath048

若是正在宣告的路由器和接收的路由器是內部對等體,而且更新消息的NLRI指明目的地在不一樣的AS,則NEXT_HOP就是學習到路由的外部對等實體的IP地址。以下圖所示。

clip_p_w_picpath050

從上面圖能夠知道,在去往192.168.5.0的網段中會出現路徑不可達的狀況,解決這個問題的方法是保證內部路由器知道與兩處自治系統相連的外部網絡,可使用靜態路由的辦法,但實際的作法是在外部端口上以被動模式運行IGP。但在某種狀況下,該方法並不理想。

第二種方法是採用配置選項來作,這個配置選項被稱作next-hop-self。

下面具體詳述了下一跳的不可達的解決方法:

? 解決下一跳不可達的方法:

n 靜態路由

n 在IBGP鄰居所處的IGP中宣告

n 將與EBGP直連的網絡重分佈進IGP

n neighbor x.x.x.x next-hop-self(將指向EBGP鄰居更新源的地址變爲本身的更新源地址)(RR有的版本會將下一跳改變)

? 通常狀況下,在本路由器上將直連的網絡引入BGP,下一跳爲0.0.0.0,本路由器聚合的路由的下一跳也爲0.0.0.0。

? 在本路由器上將從IGP學來的路由引入BGP時,在本路由器上看BGP的轉發表,下一跳爲IGP路由的下一跳。在多訪問網絡環境中,用直鏈接口創建鄰居關係,會產生第三方下一跳。

實例說明:以下圖所示,

clip_p_w_picpath052

R2與R1是IBGP鄰居,R1與R3是EBGP鄰居,當用直鏈接口建鄰居時,R2引入BGP的前綴172.16.2.0/24,在R3的bgp轉發表裏,將顯示爲R2的多訪問網絡接口地址(如:10.1.1.2)。產生第三方下一跳的現象。

n 若是R一、R二、R3所有用直鏈接口建鄰居時會產生第三方下一跳。

n 若是R一、 R2用環回口而R一、R3用直連創建鄰居時,會產生第三方下一跳。

n 若是R一、R2用直連而R一、R3用迴環口時,不會產生第三方下一跳,以下所示配置。

n 若是R一、R二、R3都用環回口創建鄰居,則不會產生第三方下一跳,以下配置所示。   

R3#show ip bgp 

BGP table version is 4, local router ID is 172.16.3.1

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

Network Next Hop Metric LocPrf Weight Path

*&gt; 172.16.1.0/24 10.1.1.1 0 0 100 i

*&gt; 172.16.2.0/24 10.1.1.2 0 100 i

*&gt; 172.16.3.0/24 0.0.0.0 0 32768 i

 

 

R1

router bgp 100

no synchronization

bgp log-neighbor-changes

network 172.16.1.0 mask 255.255.255.0

neighbor 3.3.3.3 remote-as 200

neighbor 3.3.3.3 ebgp-multihop 2

neighbor 3.3.3.3 update-source Loopback1

neighbor 10.1.1.2 remote-as 100

no auto-summary

R3

router bgp 200

no synchronization

bgp log-neighbor-changes

network 172.16.3.0 mask 255.255.255.0

neighbor 1.1.1.1 remote-as 100

neighbor 1.1.1.1 ebgp-multihop 2

neighbor 1.1.1.1 update-source Loopback1

no auto-summary

R3#sh ip bgp 

BGP table version is 8, local router ID is 172.16.3.1

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

*&gt; 172.16.1.0/24 1.1.1.1 0 0 100 i

*&gt; 172.16.2.0/24 1.1.1.1 0 100 i

*&gt; 172.16.3.0/24 0.0.0.0 0 32768 i

R1

router bgp 100

no synchronization

bgp log-neighbor-changes

network 172.16.1.0 mask 255.255.255.0

neighbor 2.2.2.2 remote-as 100

neighbor 2.2.2.2 update-source Loopback1

neighbor 3.3.3.3 remote-as 200

neighbor 3.3.3.3 ebgp-multihop 2

neighbor 3.3.3.3 update-source Loopback1

no auto-summary

R2

router bgp 100

no synchronization

bgp log-neighbor-changes

network 172.16.2.0 mask 255.255.255.0

neighbor 1.1.1.1 remote-as 100

neighbor 1.1.1.1 update-source Loopback1

no auto-summary

R3

router bgp 200

no synchronization

bgp log-neighbor-changes

network 172.16.3.0 mask 255.255.255.0

neighbor 1.1.1.1 remote-as 100

neighbor 1.1.1.1 ebgp-multihop 2

neighbor 1.1.1.1 update-source Loopback1

no auto-summary

R3#sh ip bgp 

BGP table version is 10, local router ID is 172.16.3.1

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

Network Next Hop Metric LocPrf Weight Path

*&gt; 172.16.1.0/24 1.1.1.1 0 0 100 i

*&gt; 172.16.2.0/24 1.1.1.1 0 100 i

*&gt; 172.16.3.0/24 0.0.0.0 0 32768 i

 

第三方下一跳:收到路由更新的源地址與將要發出去的接口地址在同一網段的時候,路由的下一跳不改變,爲原來路由更新的源地址。

? 有時雖然路由的下一跳可達,但會出現訪問網絡出現環路的現象。

實例說明:

clip_p_w_picpath054

R五、R3,R一、R2爲EBGP鄰居關係,R一、R3爲IBGP鄰居關係。那麼R5經過BGP傳給R3的路由(如10.1.1.0/24),R3經過IBGP傳給R1,R1經過EBGP傳給R2,這時R2訪問10.1.1.0/24這個網絡的下一跳就在R1上。這時R2去訪問R5的時候,就會產生環路。

則R2(走下一跳)——R1(走物理鏈路)——R2,這樣環路產生了。

解決方法:

neighbor x.x.x.x next-hop-unchanged (此命令只能用在EBGP多跳的環境下,將路由的下一跳,從本身的更新源地址改變爲從IBGP學來的下一跳地址)(這時路由的下一跳在路由表裏將改變。)

neighbor x.x.x.x route-map XX {in|out}而後在route-map裏面set ip next-hop來改變前綴的下一跳。(在路由表裏下一跳會改變。)

? 策略路由PBR,強制命令R2到10.1.1.0/24的時候走R3。(路由表裏下一跳不會改變)

  三、本地優先級屬性(Local_preference)  

本地優先級是公認自由決定的屬性,它告訴AS中的路由器,那條路徑離開AS的首選路徑。本地優先級越高,路徑被選中的可能性越大。本地優先級這種屬性只能在同一個AS中的路由器之間交換,本是優先級只適用於內部鄰居,用於內部對等體之間的Update消息。

本地優先級,能夠在本AS和大聯盟內傳遞。越大越優先。影響路由器的出站流量。默認狀況下,local-preference爲100。

clip_p_w_picpath056

使用下面的命令,以下圖所示

clip_p_w_picpath058

是將路由器收到的全部外部BGP路由的默認本地優先級修改成指定值。對IBGP鄰居路由器傳過來的路由,不會改變它們的local-preference。若是將一個IBGP鄰居傳來的路由傳給另一個IBGP鄰居,那我必須是RR。

實例說明:以下圖所示。

clip_p_w_picpath060

未使用本地優先級操做路徑,以下所示路由器C的BGP表。

clip_p_w_picpath062

在路由器A 上修改本地優先級,以下所示。

clip_p_w_picpath064

在使用本地優先操縱後的路徑,查看路由器C 的BGP表。

clip_p_w_picpath066

  四、原子聚合屬性  

原子聚合是一個公認自決的屬性。類型代碼爲6,它告訴鄰接AS,始發路由器對路由進行了聚合。可使用下面的命令進行配置,

clip_p_w_picpath068

命令只聚合已經包含在BGP表中的網絡,這與使用network來通告彙總路由要求不一樣,後者要求網絡必須出 如今IP路由選擇表中

配置命令aggregate-address後,一條與彙總路由對應的指向null0的BGP路由將自動被加入到IP路由表中。以下示例所示。

clip_p_w_picpath070

可使用show ip bgp命令來查看

clip_p_w_picpath072

關於原子聚合的詳細內容在之後的章節中詳細說明。

  五、權重屬性  

cisco私有的參數。本地有效。缺省條件下,本地始發的路徑具備相同的WEIGHT值(即32768),全部其餘的路徑的weight值爲0。越大越優選。影響路由器的出站流量。

權重隻影響當前路由器,指定鄰居的權重。使用下面命令來修改權重。

clip_p_w_picpath074

能夠在neighbor的入向設置。範圍0-65535。Neighbor 1.1.1.1 weight 10,從對等體1.1.1.1接收過來的全部路由的weight值都設置爲10。

還能夠用route-map來設定,能夠將特定路由的weight值改變。以下所示:   

Neighbor 1.1.1.1 route-map AA in

Route-map AA permit 10

Match ip address prefix AA

Set weight 10

Route-map AA permit 20

 

  六、MED屬性  

MED屬性也被稱爲度量值,是一種可選非傳遞屬性。承載於EBGP的Update消息中。MED用於向外部鄰居指出進入AS的首選路徑,當入口有多個時,AS可使用MED來動態地影響其餘AS如何選擇進入路徑,在BGP中,MED是惟一一個可影響數據如何進入AS的屬性。度量值越小,路徑被選中的可能性越大。與本地優先級不一樣,MED是在自主系統之間交換的。MED影響進入AS的數據流,而本地優先級影響離開AS的數據流。以下圖所示。

clip_p_w_picpath076

Metric和med:BGP的metric對IBGP一樣有效。特指med:從EBGP收到的metric比較的時候才叫MED,MED是借用了BGP的metric在EBGP的時候進行比較。MED(多出口區分)比較EBGP的metric找到最優的出口。

MED至關於IGP路由的metric值,越小越優先。在新的IOS中,將IGP中的路由重分佈進BGP,BGP將自動繼承IGP路由的metric值。在老的IOS裏,若是須要繼承須要在重分佈時加route-map,如:   

Redistribute rip route-map RE

Route-map RE

set metric-type internal

 

默認狀況下,只有在兩條路徑的第一個(鄰近的)AS相同的狀況下才會進行比較:任何聯盟內的子自治系統都被忽略。任何多跳路徑,只有在AS_SEQUENCE中的第一個AS相同的狀況下,纔會比較MED;任何打頭的AS_CONFED_SEQUENCE都將被忽略。若是激活了bgp always-compare-med,那麼對於全部路徑都比較MED,而不考慮是否來自同一個AS。若是使用了這個選項,就應該在整個AS中都這樣作,以免路由選擇環路。

實例說明:以下拓撲圖

下面是一個使用策略路由來實現修改MED值的案例。

clip_p_w_picpath078

clip_p_w_picpath080

clip_p_w_picpath082

clip_p_w_picpath084

實例說明:以下圖所示,此實例採用了本地優先級與MED屬性

clip_p_w_picpath086

clip_p_w_picpath088

clip_p_w_picpath089

  七、共同體屬性  

BGP團體是一組共享某些共同特性的目的地,用於簡化路由策略的執行,一個團體並不被限制在一個網絡或一個AS之中。是另外一種過濾入站或出站BGP路由的方法。

COMMUNITY屬性是一組4個8位組的數值,RFC1997規定,前2個8位組表示自治系統,後2個8位組表示出於管理目的而定義的標識符,格式爲AA:NN,而思科的默認格式爲NN:AA,可使用命令ip bgpcommunity new-format將思科默認格式改成RFC1997的標準格式。

團體屬性是一個可傳遞屬性,類型代碼爲8。

? no_export——若是接收到的路由攜帶該數值,不通告到EBGP對等體。若是配置了聯盟,則不能將此路由宣告到聯盟以外。

? no_advertise——若是接收到的路由攜帶該數值,不通告給任何對等體,包括EBGP和IBGP。

? internet ——無任何值,全部路由器默認狀況下都屬於該團體,帶此屬性的路由在被收到後,應該被通告給全部的其餘路由器

? local_as——帶有此屬性的路由在被收到後,應該被通告給本地AS域內的對等體,但不該該被通告給外部系統中的對等體,包括同一個聯盟內其它自治系統中的對等體。

實例說明:以下圖所示。

clip_p_w_picpath091

clip_p_w_picpath093

clip_p_w_picpath095

clip_p_w_picpath097

  3、BGP路由彙總  

BGP的彙總有2種:

A彙總summary

靜態路由手工彙總指向null 0,再network引入BGP。

若是明細路由斷了,彙總仍然會被引入,且缺少靈活性。

clip_p_w_picpath002[4]

命令network要求路由選擇表中有與指定的前綴或掩碼徹底匹配的條目,爲知足這種要求,可配置一條指向接口null0的靜態路由,若是IGP執行彙總,則路由選擇中可能已以有這樣的靜態路由。

命令network告訴BGP通告哪些網絡,而不如何通告,僅當描寫的網絡號出如今IP路由選擇中後,BGP纔會通告它,以下圖所示。

clip_p_w_picpath004[4]

B聚合aggregate

聚合路由在本路由器上生成一條聚合路由,下一跳爲0.0.0.0。

clip_p_w_picpath006[4]

aggregate-address 172.16.12.0 255.255.252.0 ?

advertise-map Set condition to advertise attribute

as-set Generate AS set path information

attribute-map Set attributes of aggregate

route-map Set parameters of aggregate

summary-only Filter more specific routes from updates

suppress-map Conditionally filter more specific routes from updates

nlri

<cr>

? Advertise-map

n 只對advertise-map裏面匹配的路由進行聚合。當advertise-map裏面匹配的明細路由所有消失後,即便聚合路由範圍內還有其餘明細路由,聚合路由也將消失。當與as-set合用時,只繼承advertise-map裏面匹配的明細路由的屬性。若是用summary-only,會將全部的明細包括沒有在advertise-map裏面匹配的路由一塊兒抑制。

? As-set

n 聚合路由繼承明細路由的屬性,包括:as-path、local_preference、community、origin-code。與advertise-map合用,只繼承advertise-map裏面匹配的明細路由的屬性。若是繼承了as-path屬性,繼承的as-path若是沒有在大括號{ }中顯示,則有幾個算幾個AS;若是繼承AS是在大括號中排列的,那麼只算一個AS號。只關心AS的號碼,不關心順序。

? As-path、as-seq(as-path)原子聚合不帶任何AS。AS-SET首先是區別於atomic-aggregate,產生了AS的序列,序列中無分前後順序,這一點也不一樣於有明確順序的AS-SEQEUENCE

? Attribute-map和route-map

? 這兩個參數同樣,能夠將聚合路由的屬性清除掉(除了as-path屬性),添加本身須要添加的屬性。Attribute-map 與 as-set的合用時,可否將聚合的路由的屬性重置。(OK能夠改)

? Summary-only將聚合路由所包括的全部路由都抑制掉,被抑制的路由在bgp的轉發表裏,顯示爲s,表明suppress的意思。發送更新時,只發送聚合路由。能夠與

? neighbor 1.1.1.1 unsuppress-map XX合用,對特定鄰居漏過特定的明細路由。

? Suppress-map,將suppress-map裏面匹配的路由抑制掉,被抑制的路由在bgp的轉發表裏,顯示爲s,表明suppress的意思。發送更新時,只發送聚合路由和沒有被抑制的明細路由。能夠與

? neighbor 1.1.1.1 unsuppress-map XX合用,對特定鄰居漏過特定的明細路由。

 

  4、BGP路由決策  

BGP的RIB包括三部分:

? Adj-RIBs-In:存儲了從對等體學習到的路由理新中未經處理的路由信息,這些包含在Adj-RIBs-In中的路由被認爲是可行路由。

? Loc-RIB:包含了BGP發言者對Adj-RIBs-In中的路由應用本地策略以後選定的路由

? Adj-RIBs-Out:包含了BGP發言者向對等體宣告路由。

BGP有三個部分既能夠是3個不一樣的數據庫,也能夠是利用指針來區分不一樣部分的單一數據庫。BGP路由決策經過對Adj-RIBs-In中的路由應用本地路由策略,且向Loc-RIB 和Adj-RIBs-Out中輸入選定或修改的路由進行路由選擇。其有三個階段。

第一階段:計算每條可行路由的優先級

第二階段:從全部可用路由中爲特定目的地選出最佳路由,並將其安裝到Loc-RIB中。

第三階段:將相應的路由加入到Adj-RIBs-Out中,以便向對等體進行宣告。

如下爲BGP選路原則的13條:

(1)weight

cisco私有的參數。本地有效。缺省條件下,本地始發的路徑具備相同的WEIGHT值(即32768),全部其餘的路徑的weight值爲0。越大越優選。影響路由器的出站流量。

(2)local-preference

本地優先級,能夠在本AS和大聯盟內傳遞。越大越優先。影響路由器的出站流量。默認狀況下,local-preference爲100。

(3)本地起源

路由器本地始發的路徑優先。在BGP的轉發表裏顯示爲0.0.0.0。依次下降的優先級順序是:default-originate(針對每一個鄰居配置)、default-informaiton-originate(針對每種地址簇配置)、network、redistribute、aggregate-address。

(4)as-path

評估as-path的長度,as-path列表最短的路徑優先。

聚合後繼承明細路由的屬性,在大括號裏面的as-path在計算長度時,只算一個。在聯盟內小括號裏面的AS號,在選路時,不計算到as-path長度裏面。

(5)起源代碼

評估路由的origin code屬性,有3個i<e&lt;?。i表明用network將IGP引入BGP的,或者是聚合等路由,e表明EGP,?表明重分佈進BGP的路由。i爲0,e爲1,?爲3。越小越優。

(6)MED

metric傳遞不能傳出AS。例外:始發路由器能夠metric傳給鄰居,能夠是IBGP/EBGP,可是EBGP再傳不出去。

MED至關於IGP路由的metric值,越小越優先。

(7)EBGP優於IBGP

這裏EBGP>聯盟內的EBGP&gt;IBGP。

(8)最近的IGP鄰居

這裏是指peer的更新源在個人路由表裏顯示,哪一個最近哪一個最優。

OSPF是否考慮O、OIA、OE一、OE2?只看cost不看O/OIA/OE。

(9)若是配置了maximum-path[ibgp]n,若是存在多條等價的路徑,會插入多條路徑。

BGP默認maximum-path=1,只能有一條最優路徑,但能夠經過命令來改變,若是沒有IBGP參數,默認只能作EBGP的負載均衡。作負載均衡還有一個條件,就是上面的8條都比不出哪條最優的狀況下,纔有可能出現負載均衡。

作了BGP的負載均衡後,在BGP的轉發表裏仍是一個最優,但在路由表裏能夠出現2個下一跳。

(10)最老的

與本端最先創建鄰居關係的peer,被優選。由於它最穩定。但通常不考慮,會跳過這個繼續往下選。

若是如下任一條件爲真,這一步將會被忽略:

啓用了bgp bestpath compare-routerid,多條路徑具備相同的router-id,由於這些路由都是從同一臺路由器接收過來的;當前沒有最佳路徑。缺少當前最佳路徑的例子發生在正在通告最佳路徑的鄰居失效的時候。

(11)最低的ROUTER-ID

BGP優選來自具備最低的路由器ID的BGP路由器的路由。Router-id是路由器上最高的IP地址,而且優選環回口。也能夠經過bgp router-id命令靜態的設定路由器ID。若是路徑包含RR屬性,那麼在路徑選擇過程當中,就用originator-id來替代路由器ID。

(12)多跳路徑的始發路由器ID相同,那麼選擇CLUSTER_LIST長度短的,由於每通過一個RR,cluster-list會加上這個RR的router-id

若是多條路徑的始發router-id相同,那麼BGP將優選cluster-list長度最短的路徑。這種狀況僅僅出如今BGP RR的環境下。

(13)BGP優選來自於最低的鄰居地址的路徑。是BGP的neighbor配置中的那個地址,若是是環回口,則看環回口地址的高低。

BGP優選來自於最低的鄰居地址的路徑。這是BGP的neighbor配置中所使用的IP地址,而且它對應於與本地路由器創建TCP鏈接的遠端對等體。

  5、路由翻動(route flaps)和路由懲罰(route dampening)  

路由翻動產生的緣由有不少種好比:鏈路不穩定、路由器接口故障、ISP工程施工、管理員錯誤配置和錯誤故障檢查等等都能形成路由翻動,因爲路由翻動會形成每臺路由器從新計算路由,從而消耗了大量的網絡帶寬和路由器的CPU資源。

BGP鄰居的flaping

clip_p_w_picpath008[4]

當R1與R2兩臺路由器運行IGP協議,而且創建EBGP的鄰居關係,用環回口創建鄰居關係。這時假如R一、R2將他們的更新源通告進了BGP,而後經過BGP傳遞給對方,這時因爲從EBGP學到的路由的AD爲20,大於IGP的默認AD,這時會產生鄰居的flaping現象。

這時show ip bgp summary能夠看到每通過60秒BGP table version is 1, main routing table version 1會改變一次。BGP轉發表裏變化了多少次。

用debug ip bgp、debug ip bgp update來查看BGP的flaping。

解決方法:

(1)EBGP建鄰居時不要將環回口引入BGP。

(2)Network + backdoor

BGP路由下一跳的flaping

clip_p_w_picpath010[4]

R一、R二、R3由於屬於同一個AS,因此運行一個IGP,R2-R4,R3-R5之間的鏈路並無通告進IGP中。R一、R二、R3 IBGP對等體關係,R3在指R1時,打了neighbor 1.1.1.1 next-hop-self;R四、R2 ,R五、R3 ,R四、R5爲EBGP對等體關係,它們都拿直鏈接口創建鄰居關係。

這時R4將它的環回口4.4.4.0/24和R2-R4的直連網絡24.0.0.0/24引入BGP,這時在R1上就會產生路由下一跳flaping的現象。這時show ip bgp summary能夠看到每通過60秒BGP table version is 1, main routing table version 1會改變一次。

解決方法:

(1)靜態路由(R1上靜態路由)

(2)在IBGP鄰居所處的IGP中宣告

(3)將與EBGP直連的網絡重分佈進IGP

(4)neighbor x.x.x.x next-hop-self(R2指R1時輸入)

路由懲罰(route dampening)由RFC2439描述,它主要由如下三個目的:

? 提供了一種機制,以減小因爲不穩定路由引發的路由器處理負載

? 防止持續的路由抖動

? 加強了路由的穩定性,但不犧牲表現良好的(well-behaved)路由的收斂時間。

ROUTER BG 1

BG DAMP 15 750 2000 60 ---- 針對全部的路由。

BG DAMP ROUTE-MAP XXX

ROUTE-MAP XXX

MATIP ADD PREFIS XX

SET DAM 15 750 2000 60 ---DEFAULT 

IP PREFIX XX PERMIT 1.1.1.0/24

SH IP BG 1.1.1.0

SH IP BG DAM PARA

Dampening爲每一條前綴維護了一個路由抖動的歷史記錄。Dampening算法包含如下幾個參數:

? 歷史記錄――――當一條路由flaping後,改路由就會被分配一個懲罰值,而且它的懲罰狀態被設置爲history。

? 懲罰值(penalty)――――路由每flaping一次,這個懲罰值就會增長。默認的路由flaping懲罰值爲1000。若是隻有路由屬性發生了變化,那麼懲罰值爲500。這個值是硬件編碼的。

? 抑制門限(suppress limit)――――若是懲罰值超過了抑制門限,改路由將被懲罰或dampen。路由狀態將由history轉變爲damp狀態。默認值的抑制門限是2000,它能夠被設置。

? 懲罰狀態(damp state)――――當路由處於懲罰狀態時,路由器在最佳路徑選擇中將不考慮這條路徑,所以也不會把這條前綴通告給它的對等體。

? 半衰期(half life)――――在一半的生命週期的時間內,路由的懲罰值將被減小,半衰期的缺省值是15分鐘。路由的懲罰值每5秒鐘減小一次。半衰期的值能夠被設置。

? 重用門限(reuse limit)――――路由的懲罰值不斷的遞減。當懲罰值降到重用門限如下時,改路由將再也不被抑制。缺省的重用門限爲750。路由器每10秒鐘檢查一次那些不須要被抑制的前綴。重用門限時能夠被配置的。當懲罰值達到了重用門限的一半時,這條前綴的歷史記錄(history)將被清除,以便更有效率的使用內存。

? 最大抑制門限/最大抑制時間――――若是路由在短期內表現出極端的不穩定性,而後又穩定下來,那麼累計的懲罰值可能會致使這條路由在過長的時間裏一直處於懲罰狀態。這就是設置最大抑制門限的基本目的。若是路由表現出連續的不穩定性,那麼懲罰值就停留在它的上限上,使得路由保持在懲罰狀態。最大抑制門限是用公式計算出來的。最大抑制時間爲一條路由停留在懲罰狀態的最長時間。默認爲60分鐘(半衰期的4倍)能夠配置。

n 最大抑制門限=重用門限×2(最大抑制時間÷半衰期)

n 因爲最大抑制門限爲公式算出來的,因此有可能最大抑制門限≤抑制門限,當這種狀況發生時,dampening的設置是沒有效果的。如重用門限=750,抑制門限=3000,半衰期=30分鐘,最大抑制時間=60分鐘。按照這樣的配置,算出來的最大抑制門限爲3000,

n 與抑制門限同樣,由於必須超過抑制門限,才能對路由進行dampening,因此這時dampening的設置沒有效果。

clip_p_w_picpath012[4]

BGP的dampening僅僅影響EBGP的路由。Dampening是基於每條路徑的路由而操做的。若是一條前綴具備兩條路徑,而且其中一條被懲罰了,那麼另外一條前綴仍然是可用的,能夠通告給BGP對等體。

命令:

bgp dampening [route-map XX] [{Half-life reuse-limit suppress-limit Maximum-time }]

若是掛了route-map,那麼就在route-map裏面匹配特定EBGP路由,來設置dampening值。

檢查命令:

show ip protocol

sh ip bgp dampening ?

dampened-paths 只顯示(清除)被抑制的路由。

flap-statistics 顯示(清除)全部出現擺動的路由以及該路由出現擺動的次數。

parameters Display details of configured dampening parameters

show ip bgp neighbors 1.1.1.1 dampened-routes

show ip bgp neighbors 1.1.1.1 flap-statistics

  6、路由反射器  

因爲IBGP的水平分割問題,因此IBGP須要Full Mesh。因爲整個IBGP full mesh的話,須要建的session數爲n*(n-1)/2。不具備擴展性。因此產生兩種解決方法,路由反射器是其中一種,而另外一種則是聯邦。

路由反射器是被配置爲容許它把經過IBGP所獲悉的路由通告到其餘IBGP對等體的路由器,路由器反射器與其餘路由器有部分IBGP對等關係,這些路由器被稱爲客戶。客戶間的對等是不須要的,由於路由反射器將在客戶間傳遞通告。 以下圖所示。

clip_p_w_picpath014[4]

其優勢:減小AS內BGP鄰居關係的數量,從而減小了TCP鏈接數;在AS內能夠有多個路由反射器,便是爲了冗餘也是爲了分紅組,以進一步減小所需IBGP會話的數量。路由反射器的路由器能夠與非路由反射器的路由器共存,因此配置更簡單。

RFC1966中定義了3條RR用來決定要宣告哪條路由的規則,具體使用時取決於路由是如何學習到的。

? 若是路由學習自非客戶IBGP對等體,則僅反射給客戶路由器。

? 若是路由學習自某客戶,則反射給全部非客戶和客戶路由器(發起該路由的客戶除外)。

? 若是路由學習自EBGP對等體,則反射給全部非客戶和客戶路由器

路由反射器的客戶並不知道本身是客戶。客戶和非客戶通過路由反射器反射的路由更新將會帶上cluster-list和originator,可用於IBGP防環。Cluster-id默認爲路由反射器本身的router-id,能夠經過命令bgp cluster-id 1.1.1.1來修改,cluster-id爲32位的值,能夠寫成點分十進制,也能夠寫成十進制數;originator爲IBGP內起源路由器的router-id。路由反射器是IBGP的特性,出了IBGP後,路由反射器全部的特性消失(即路由攜帶的cluster-list和originator所有消失)。

neighbor 1.1.1.1 route-reflector-client

能夠經過這條命令來將IBGP的peer 1.1.1.1變爲本身的客戶。建議對每一個IBGP鄰居都打上。

當路由反射器的客戶full mesh時,能夠用no bgp client-to-client reflection禁止客戶到客戶的路由反射。能夠減小路由更新。

以下圖爲路由反射器的基本配置。

clip_p_w_picpath016[4]

clip_p_w_picpath018[4]

 

  7、BGP聯邦  

因爲IBGP的水平分割問題,因此IBGP須要full mesh。因爲整個IBGP full mesh的話,須要建的session數爲n*(n-1)/2。不具備擴展性。因此產生兩種解決方法,聯邦是其中一種。

聯邦既有EBGP的特性,又有IBGP的特性。

聯盟是另外一種控制大量IBGP對等體的方法,它就是一個被細分爲一組子自治系統(稱爲成員自治系統)的AS。以下圖所示。

clip_p_w_picpath020[4]

聯盟增長了兩種類型的AS_PATH屬性

AS_CONFED_SEQUENCE:一個去往特定目的地所經路徑上的有序AS號列表,其用法與AS_SEQUENCE徹底同樣,區別在於該列表中的AS號屬於本地聯盟中的自治系統。

AS_CONFED_SET:一個去往特定目的地所經路徑上的無序AS號列表,其用法與AS_SET徹底同樣,區別在於該列表中的AS號屬於本地聯盟中的自治系統。

因爲AS_PATH發生被用於成員自治系統之間,於是保留了環路預防功能。將Update消息發送給聯盟以外的對等體時,將從AS_PATH屬性中剝離AS_CONFED_SEQUENCE和AS_CONFED_SET信息,而將聯盟ID附加到AS_PATH中。

Local_preference和MED能夠在聯邦內傳遞。聯盟內的小AS號,在as-path裏顯示在小括號裏,在as-path計算長度時,不被考慮。下一跳在聯邦內傳遞不會改變。

 

  8、配置樣例1  

下面的示例中涉及到BGP的基本配置,涉及到一些基本的知識點,如EBGP多跳、更新源使用環回接口、路由映射發佈團體屬性等,以下圖所示。

clip_p_w_picpath022[4]

下面是其參考配置。

R1#sh running-config

!

interface Loopback0

ip address 192.168.250.1 255.255.255.0

!

interface Loopback1

ip address 192.168.1.213 255.255.255.252

interface Loopback6

ip address 5.5.5.5 255.255.255.0

!

interface Serial2/0

ip address 192.168.1.210 255.255.255.252

serial restart-delay 0

!

router bgp 300

no synchronization

bgp log-neighbor-changes

network 192.168.1.212 mask 255.255.255.252

network 192.168.250.0

neighbor 6.6.6.6 remote-as 100

neighbor 6.6.6.6 ebgp-multihop 2

neighbor 6.6.6.6 update-source Loopback6

no auto-summary

!

ip route 6.6.6.0 255.255.255.0 192.168.1.209

!

 

R2#sh running-config 

!

interface Loopback5

ip address 1.1.1.1 255.255.255.255

!

interface Loopback6

ip address 6.6.6.6 255.255.255.0

!

interface Ethernet1/0

ip address 192.168.1.221 255.255.255.252

duplex half

!

interface Ethernet1/1

ip address 192.168.1.193 255.255.255.252

duplex half

!

interface Serial2/0

ip address 192.168.1.209 255.255.255.252

serial restart-delay 0

!

interface Serial2/1

ip address 192.168.1.226 255.255.255.252

serial restart-delay 0

!

router ospf 10

log-adjacency-changes

passive-interface Serial2/0

passive-interface Serial2/1

network 1.1.1.1 0.0.0.0 area 0

network 192.168.1.192 0.0.0.3 area 0

network 192.168.1.220 0.0.0.3 area 0

!

router bgp 100

no synchronization

bgp log-neighbor-changes

neighbor 2.2.2.2 remote-as 100

neighbor 2.2.2.2 update-source Loopback5

neighbor 2.2.2.2 next-hop-self

neighbor 3.3.3.3 remote-as 100

neighbor 3.3.3.3 update-source Loopback5

neighbor 3.3.3.3 next-hop-self

neighbor 5.5.5.5 remote-as 300

neighbor 5.5.5.5 ebgp-multihop 2

neighbor 5.5.5.5 update-source Loopback6

neighbor 192.168.1.225 remote-as 200

no auto-summary

!

ip route 5.5.5.0 255.255.255.0 192.168.1.210

!

 

R3#sh running-config 

!

interface Loopback5

ip address 2.2.2.2 255.255.255.255

!

interface Ethernet1/0

ip address 192.168.1.222 255.255.255.252

duplex half

!

interface Ethernet1/1

ip address 192.168.1.198 255.255.255.252

duplex half

!

router ospf 10

log-adjacency-changes

network 2.2.2.2 0.0.0.0 area 0

network 192.168.1.196 0.0.0.3 area 0

network 192.168.1.220 0.0.0.3 area 0

router bgp 100

no synchronization

bgp log-neighbor-changes

neighbor 1.1.1.1 remote-as 100

neighbor 1.1.1.1 update-source Loopback5

neighbor 3.3.3.3 remote-as 100

neighbor 3.3.3.3 update-source Loopback5

no auto-summary

!

 

R4#sh running-config 

!

interface Loopback5

ip address 3.3.3.3 255.255.255.255

!

interface Ethernet1/0

ip address 192.168.1.194 255.255.255.252

duplex half

!

interface Ethernet1/1

ip address 192.168.1.197 255.255.255.252

duplex half

!

interface Ethernet1/2

ip address 192.168.1.206 255.255.255.252

duplex half

!

!

router ospf 10

log-adjacency-changes

passive-interface Ethernet1/2

network 3.3.3.3 0.0.0.0 area 0

network 192.168.1.192 0.0.0.3 area 0

!

router bgp 100

no synchronization

bgp log-neighbor-changes

neighbor 1.1.1.1 remote-as 100

neighbor 1.1.1.1 update-source Loopback5

neighbor 1.1.1.1 next-hop-self

neighbor 2.2.2.2 remote-as 100

neighbor 2.2.2.2 update-source Loopback5

neighbor 2.2.2.2 next-hop-self

neighbor 192.168.1.205 remote-as 400

no auto-summary

!

R5#sh running-config 

!

interface Loopback0

ip address 192.168.50.1 255.255.255.0

!

interface Loopback1

ip address 192.168.75.1 255.255.255.0

interface Loopback3

ip address 192.168.1.201 255.255.255.252

!

interface Ethernet1/0

ip address 192.168.1.205 255.255.255.252

duplex half

router bgp 400

no synchronization

bgp log-neighbor-changes

network 192.168.1.200 mask 255.255.255.252

network 192.168.50.0

network 192.168.75.0

neighbor 192.168.1.206 remote-as 100

no auto-summary

!

R6#sh running-config 

!

interface Loopback0

ip address 192.168.100.1 255.255.255.0

!

interface Loopback1

ip address 192.168.200.1 255.255.255.0

interface Loopback3

ip address 192.168.1.217 255.255.255.252

!

interface Loopback10

ip address 192.168.192.1 255.255.255.0

!

interface Loopback11

ip address 192.168.193.1 255.255.255.0

!

interface Loopback12

ip address 192.168.194.1 255.255.255.0

!

interface Loopback13

ip address 192.168.195.1 255.255.255.0

!

interface Loopback14

ip address 192.168.196.1 255.255.255.0

!

interface Loopback15

ip address 192.168.197.1 255.255.255.0

!

interface Loopback16

ip address 192.168.198.1 255.255.255.0

!

interface Loopback17

ip address 192.168.199.1 255.255.255.0

!

interface Serial2/0

ip address 192.168.1.225 255.255.255.252

serial restart-delay 0

!

router bgp 200

no synchronization

bgp log-neighbor-changes

network 192.168.1.216 mask 255.255.255.252

network 192.168.100.0

network 192.168.192.0

network 192.168.193.0

network 192.168.194.0

network 192.168.195.0

network 192.168.196.0

network 192.168.197.0

network 192.168.198.0

network 192.168.199.0

network 192.168.200.0

aggregate-address 192.168.192.0 255.255.248.0

neighbor 192.168.1.226 remote-as 100

neighbor 192.168.1.226 send-community

neighbor 192.168.1.226 route-map community out

no auto-summary

!

no ip http server

no ip http secure-server

!

!

access-list 110 permit ip host 192.168.192.0 host 255.255.248.0

!

route-map community permit 10

match ip address 110

set community none

!

route-map community permit 20

set community no-export

!

 

使用一些經常使用命令來查看其狀態信息,以下所示:

R2#sh ip bgp 

BGP table version is 18, local router ID is 6.6.6.6

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

*&gt;i192.168.1.200/30 3.3.3.3 0 100 0 400 i

*&gt; 192.168.1.212/30 5.5.5.5 0 0 300 i

*&gt; 192.168.1.216/30 192.168.1.225 0 0 200 i

*&gt;i192.168.50.0 3.3.3.3 0 100 0 400 i

*&gt;i192.168.75.0 3.3.3.3 0 100 0 400 i

*&gt; 192.168.100.0 192.168.1.225 0 0 200 i

*&gt; 192.168.192.0 192.168.1.225 0 0 200 i

*&gt; 192.168.192.0/21 192.168.1.225 0 0 200 i

*&gt; 192.168.193.0 192.168.1.225 0 0 200 i

*&gt; 192.168.194.0 192.168.1.225 0 0 200 i

*&gt; 192.168.195.0 192.168.1.225 0 0 200 i

*&gt; 192.168.196.0 192.168.1.225 0 0 200 i

*&gt; 192.168.197.0 192.168.1.225 0 0 200 i

*&gt; 192.168.198.0 192.168.1.225 0 0 200 i

*&gt; 192.168.199.0 192.168.1.225 0 0 200 i

*&gt; 192.168.200.0 192.168.1.225 0 0 200 i

*&gt; 192.168.250.0 5.5.5.5 0 0 300 i

 

R2#sh ip bgp summary 

BGP router identifier 6.6.6.6, local AS number 100

BGP table version is 18, main routing table version 18

17 network entries using 1989 bytes of memory

17 path entries using 884 bytes of memory

5/4 BGP path/bestpath attribute entries using 620 bytes of memory

3 BGP AS-PATH entries using 72 bytes of memory

1 BGP community entries using 24 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 3589 total bytes of memory

BGP activity 17/0 prefixes, 17/0 paths, scan interval 60 secs

 

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

2.2.2.2 4 100 15 18 18 0 0 00:12:09 0

3.3.3.3 4 100 16 18 18 0 0 00:12:17 3

5.5.5.5 4 300 16 18 18 0 0 00:12:49 2

192.168.1.225 4 200 17 18 18 0 0 00:12:03 12

 

R4#sh ip bgp 

BGP table version is 18, local router ID is 3.3.3.3

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

*&gt; 192.168.1.200/30 192.168.1.205 0 0 400 i

*&gt;i192.168.1.212/30 1.1.1.1 0 100 0 300 i

*&gt;i192.168.1.216/30 1.1.1.1 0 100 0 200 i

*&gt; 192.168.50.0 192.168.1.205 0 0 400 i

*&gt; 192.168.75.0 192.168.1.205 0 0 400 i

*&gt;i192.168.100.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.192.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.192.0/21 1.1.1.1 0 100 0 200 i

*&gt;i192.168.193.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.194.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.195.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.196.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.197.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.198.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.199.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.200.0 1.1.1.1 0 100 0 200 i

*&gt;i192.168.250.0 1.1.1.1 0 100 0 300 i

 

R4#sh ip route 

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 

N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

E1 - OSPF external type 1, E2 - OSPF external type 2

i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

ia - IS-IS inter area, * - candidate default, U - per-user static route

o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

B 192.168.192.0/24 [200/0] via 1.1.1.1, 00:12:47

1.0.0.0/32 is subnetted, 1 subnets

O 1.1.1.1 [110/11] via 192.168.1.193, 00:13:28, Ethernet1/0

B 192.168.193.0/24 [200/0] via 1.1.1.1, 00:12:47

2.0.0.0/32 is subnetted, 1 subnets

O 2.2.2.2 [110/21] via 192.168.1.193, 00:13:28, Ethernet1/0

B 192.168.194.0/24 [200/0] via 1.1.1.1, 00:12:47

B 192.168.75.0/24 [20/0] via 192.168.1.205, 00:12:49

3.0.0.0/32 is subnetted, 1 subnets

C 3.3.3.3 is directly connected, Loopback5

B 192.168.195.0/24 [200/0] via 1.1.1.1, 00:12:47

B 192.168.196.0/24 [200/0] via 1.1.1.1, 00:12:47

B 192.168.197.0/24 [200/0] via 1.1.1.1, 00:12:47

B 192.168.198.0/24 [200/0] via 1.1.1.1, 00:12:48

B 192.168.199.0/24 [200/0] via 1.1.1.1, 00:12:48

B 192.168.200.0/24 [200/0] via 1.1.1.1, 00:12:48

B 192.168.250.0/24 [200/0] via 1.1.1.1, 00:12:49

B 192.168.50.0/24 [20/0] via 192.168.1.205, 00:12:51

192.168.1.0/30 is subnetted, 7 subnets

B 192.168.1.200 [20/0] via 192.168.1.205, 00:12:51

C 192.168.1.204 is directly connected, Ethernet1/2

C 192.168.1.192 is directly connected, Ethernet1/0

C 192.168.1.196 is directly connected, Ethernet1/1

B 192.168.1.216 [200/0] via 1.1.1.1, 00:12:48

O 192.168.1.220 [110/20] via 192.168.1.193, 00:13:30, Ethernet1/0

B 192.168.1.212 [200/0] via 1.1.1.1, 00:12:49

B 192.168.100.0/24 [200/0] via 1.1.1.1, 00:12:48

B 192.168.192.0/21 [200/0] via 1.1.1.1, 00:12:48

 

R4#sh ip bgp summary 

BGP router identifier 3.3.3.3, local AS number 100

BGP table version is 18, main routing table version 18

17 network entries using 1989 bytes of memory

17 path entries using 884 bytes of memory

5/4 BGP path/bestpath attribute entries using 620 bytes of memory

3 BGP AS-PATH entries using 72 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 3565 total bytes of memory

BGP activity 17/0 prefixes, 17/0 paths, scan interval 60 secs

 

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

1.1.1.1 4 100 19 17 18 0 0 00:13:37 14

2.2.2.2 4 100 16 17 18 0 0 00:13:25 0

192.168.1.205 4 400 17 19 18 0 0 00:13:30 3

 

R5#sh ip bgp 

BGP table version is 18, local router ID is 192.168.75.1

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

*&gt; 192.168.1.200/30 0.0.0.0 0 32768 i

*&gt; 192.168.1.212/30 192.168.1.206 0 100 300 i

*&gt; 192.168.1.216/30 192.168.1.206 0 100 200 i

*&gt; 192.168.50.0 0.0.0.0 0 32768 i

*&gt; 192.168.75.0 0.0.0.0 0 32768 i

*&gt; 192.168.100.0 192.168.1.206 0 100 200 i

*&gt; 192.168.192.0 192.168.1.206 0 100 200 i

*&gt; 192.168.192.0/21 192.168.1.206 0 100 200 i

*&gt; 192.168.193.0 192.168.1.206 0 100 200 i

*&gt; 192.168.194.0 192.168.1.206 0 100 200 i

*&gt; 192.168.195.0 192.168.1.206 0 100 200 i

*&gt; 192.168.196.0 192.168.1.206 0 100 200 i

*&gt; 192.168.197.0 192.168.1.206 0 100 200 i

*&gt; 192.168.198.0 192.168.1.206 0 100 200 i

*&gt; 192.168.199.0 192.168.1.206 0 100 200 i

*&gt; 192.168.200.0 192.168.1.206 0 100 200 i

*&gt; 192.168.250.0 192.168.1.206 0 100 300 i

 

R5#sh ip route 

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 

N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

E1 - OSPF external type 1, E2 - OSPF external type 2

i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

ia - IS-IS inter area, * - candidate default, U - per-user static route

o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

B 192.168.192.0/24 [20/0] via 192.168.1.206, 00:13:03

B 192.168.193.0/24 [20/0] via 192.168.1.206, 00:13:03

B 192.168.194.0/24 [20/0] via 192.168.1.206, 00:13:03

C 192.168.75.0/24 is directly connected, Loopback1

B 192.168.195.0/24 [20/0] via 192.168.1.206, 00:13:03

B 192.168.196.0/24 [20/0] via 192.168.1.206, 00:13:03

B 192.168.197.0/24 [20/0] via 192.168.1.206, 00:13:03

B 192.168.198.0/24 [20/0] via 192.168.1.206, 00:13:03

B 192.168.199.0/24 [20/0] via 192.168.1.206, 00:13:03

B 192.168.200.0/24 [20/0] via 192.168.1.206, 00:13:03

B 192.168.250.0/24 [20/0] via 192.168.1.206, 00:13:34

C 192.168.50.0/24 is directly connected, Loopback0

192.168.1.0/30 is subnetted, 4 subnets

C 192.168.1.200 is directly connected, Loopback3

C 192.168.1.204 is directly connected, Ethernet1/0

B 192.168.1.216 [20/0] via 192.168.1.206, 00:13:04

B 192.168.1.212 [20/0] via 192.168.1.206, 00:13:35

B 192.168.100.0/24 [20/0] via 192.168.1.206, 00:13:04

B 192.168.192.0/21 [20/0] via 192.168.1.206, 00:13:04

 

  9、配置樣例2  

 

下面的示例中涉及到聚合路由內容,並將聚合路由使用communityrouter-mapprefix-list等功能實現過濾精細路由,拓撲圖以下所示。

clip_p_w_picpath024[4]

具體配置以下:

R1#sh running-config 

!

hostname R1

!

interface Loopback0

ip address 192.168.192.1 255.255.255.0

!

interface Loopback1

ip address 192.168.193.1 255.255.255.0

interface Loopback2

ip address 192.168.194.1 255.255.255.0

!

interface Loopback3

ip address 192.168.195.1 255.255.255.0

!

interface Loopback4

ip address 192.168.196.1 255.255.255.0

!

interface Loopback5

ip address 192.168.197.1 255.255.255.0

!

interface Loopback6

ip address 192.168.198.1 255.255.255.0

!

interface Loopback7

ip address 192.168.199.1 255.255.255.0

!

interface Ethernet1/0

ip address 10.1.1.1 255.255.255.0

duplex half

!

interface Ethernet1/1

ip address 10.1.6.1 255.255.255.0

duplex half

!

router ospf 10

log-adjacency-changes

network 10.1.1.0 0.0.0.255 area 0

network 10.1.6.0 0.0.0.255 area 0

network 192.168.192.0 0.0.0.255 area 0

network 192.168.193.0 0.0.0.255 area 0

network 192.168.194.0 0.0.0.255 area 0

network 192.168.195.0 0.0.0.255 area 0

network 192.168.196.0 0.0.0.255 area 0

network 192.168.197.0 0.0.0.255 area 0

network 192.168.198.0 0.0.0.255 area 0

network 192.168.199.0 0.0.0.255 area 0

-------------------------------------------------------------------------------------------------------------------------

R2#sh running-config 

interface Ethernet1/0

ip address 10.1.1.2 255.255.255.0

duplex half

!

interface Serial2/0

ip address 10.1.2.1 255.255.255.0

serial restart-delay 0

!

router ospf 10

log-adjacency-changes

network 10.1.1.0 0.0.0.255 area 0

!

router bgp 100

no synchronization

bgp log-neighbor-changes

aggregate-address 192.168.192.0 255.255.248.0

redistribute ospf 10 metric 50

neighbor 10.1.2.2 remote-as 200

neighbor 10.1.2.2 send-community

neighbor 10.1.2.2 route-map community out

neighbor 10.1.6.2 remote-as 100

no auto-summary

!

access-list 110 permit ip host 192.168.192.0 host 255.255.248.0

!

route-map community permit 10

match ip address 110

set community none

!

route-map community permit 20

set community no-export

!

-------------------------------------------------------------------------------------------------------------------------

R3#sh running-config 

interface Ethernet1/0

ip address 10.1.7.1 255.255.255.0

duplex half

!

interface Serial2/0

ip address 10.1.2.2 255.255.255.0

serial restart-delay 0

!

interface Serial2/1

ip address 10.1.3.1 255.255.255.0

serial restart-delay 0

!

router bgp 200

no synchronization

bgp log-neighbor-changes

neighbor 10.1.2.1 remote-as 100

neighbor 10.1.3.2 remote-as 300

neighbor 10.1.7.2 remote-as 200

no auto-summary

!

-------------------------------------------------------------------------------------------------------------------------

R4#sh running-config 

interface Serial2/0

ip address 10.1.3.2 255.255.255.0

serial restart-delay 0

interface Serial2/1

ip address 10.1.4.1 255.255.255.0

serial restart-delay 0

!

router bgp 300

no synchronization

bgp log-neighbor-changes

neighbor 10.1.3.1 remote-as 200

neighbor 10.1.4.2 remote-as 200

no auto-summary

!

-------------------------------------------------------------------------------------------------------------------------

R5#sh running-config 

interface Ethernet1/0

ip address 10.1.7.2 255.255.255.0

duplex half

!

interface Serial2/0

ip address 10.1.4.2 255.255.255.0

serial restart-delay 0

!

interface Serial2/1

ip address 10.1.5.1 255.255.255.0

serial restart-delay 0

!

router bgp 200

no synchronization

bgp log-neighbor-changes

neighbor 10.1.4.1 remote-as 300

neighbor 10.1.5.2 remote-as 100

neighbor 10.1.7.1 remote-as 200

no auto-summary

!

-------------------------------------------------------------------------------------------------------------------------

R6#sh running-config 

interface Ethernet1/0

ip address 10.1.6.2 255.255.255.0

duplex half

!

interface Serial2/0

ip address 10.1.5.2 255.255.255.0

serial restart-delay 0

!

!

router ospf 10

log-adjacency-changes

network 10.1.6.0 0.0.0.255 area 0

!

router bgp 100

no synchronization

bgp log-neighbor-changes

aggregate-address 192.168.192.0 255.255.248.0

redistribute ospf 10 metric 50

neighbor 10.1.1.2 remote-as 100

neighbor 10.1.5.1 remote-as 200

neighbor 10.1.5.1 send-community

neighbor 10.1.5.1 route-map community out

no auto-summary

!

!

ip prefix-list aggregate seq 5 permit 192.168.192.0/21

!

route-map community permit 10

match ip address prefix-list aggregate

set community none

!

route-map community permit 20

set community no-export

!

配置完成之後,能夠查看聚合路由表。

R4#sh ip bgp 

BGP table version is 32, local router ID is 10.1.4.1

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

* 192.168.192.0/21 10.1.4.2 0 200 100 i

*&gt; 10.1.3.1 0 200 100 i

R3#sh ip bgp 

BGP table version is 22, local router ID is 10.1.7.1

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

* i10.1.1.0/24 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 0 0 100 ?

* i10.1.6.0/24 10.1.5.2 0 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.192.0/21 10.1.5.2 0 100 0 100 i

*&gt; 10.1.2.1 0 0 100 i

* i192.168.192.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.193.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.194.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.195.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.196.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.197.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.198.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.199.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

R5#sh ip bgp 

BGP table version is 33, local router ID is 10.1.7.2

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

* i10.1.1.0/24 10.1.2.1 0 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

* i10.1.6.0/24 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 0 0 100 ?

*&gt; 192.168.192.0/21 10.1.5.2 0 0 100 i

* i 10.1.2.1 0 100 0 100 i

* i192.168.192.1/32 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

* i192.168.193.1/32 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

* i192.168.194.1/32 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

* i192.168.195.1/32 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

* i192.168.196.1/32 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

* i192.168.197.1/32 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

* i192.168.198.1/32 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

* i192.168.199.1/32 10.1.2.1 50 100 0 100 ?

*&gt; 10.1.5.2 50 0 100 ?

使用下面的命令查看攜帶NO-EPORT COMMUNITY屬性的路由狀況

R3#sh ip bgp community no-export 

BGP table version is 22, local router ID is 10.1.7.1

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

*&gt; 10.1.1.0/24 10.1.2.1 0 0 100 ?

*&gt; 10.1.6.0/24 10.1.2.1 50 0 100 ?

*&gt; 192.168.192.1/32 10.1.2.1 50 0 100 ?

*&gt; 192.168.193.1/32 10.1.2.1 50 0 100 ?

*&gt; 192.168.194.1/32 10.1.2.1 50 0 100 ?

*&gt; 192.168.195.1/32 10.1.2.1 50 0 100 ?

*&gt; 192.168.196.1/32 10.1.2.1 50 0 100 ?

*&gt; 192.168.197.1/32 10.1.2.1 50 0 100 ?

*&gt; 192.168.198.1/32 10.1.2.1 50 0 100 ?

*&gt; 192.168.199.1/32 10.1.2.1 50 0 100 ?

 

R5#sh ip bgp community no-export 

BGP table version is 33, local router ID is 10.1.7.2

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

*&gt; 10.1.1.0/24 10.1.5.2 50 0 100 ?

*&gt; 10.1.6.0/24 10.1.5.2 0 0 100 ?

*&gt; 192.168.192.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.193.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.194.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.195.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.196.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.197.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.198.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.199.1/32 10.1.5.2 50 0 100 ?

也能夠在上面配置的基礎上實現以下策略:

? 經過R2-R3鏈路來宣告192.168.192.0/2四、192.168.193.0/2四、192.168.194.0/24

? 經過R6-R5鏈路來宣告192.168.196.0/2四、192.168.197.0/2四、192.168.198.0/24

? 不宣告192.168.195.0/2四、192.168.199.0/24

具體配置以下:

R2#sh running-config

router bgp 100

no synchronization

bgp log-neighbor-changes

aggregate-address 192.168.192.0 255.255.248.0 suppress-map suppress

!

access-list 1 permit 192.168.195.0 0.0.0.255

access-list 1 permit 192.168.196.0 0.0.3.255

!

route-map suppress permit 10

match ip address 1

 

R6#sh running-config

router bgp 100

no synchronization

bgp log-neighbor-changes

aggregate-address 192.168.192.0 255.255.248.0 suppress-map suppress

!

ip prefix-list suppress seq 5 permit 192.168.192.0/22 le 24

ip prefix-list suppress seq 10 permit 192.168.199.0/24

!

route-map suppress permit 10

match ip address prefix-list suppress

使用命令查看路由狀態

R3#sh ip bgp 

BGP table version is 39, local router ID is 10.1.7.1

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

* i10.1.1.0/24 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 0 0 100 ?

* i10.1.6.0/24 10.1.5.2 0 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.192.0/21 10.1.5.2 0 100 0 100 i

*&gt; 10.1.2.1 0 0 100 i

* i192.168.192.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.193.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.194.1/32 10.1.5.2 50 100 0 100 ?

*&gt; 10.1.2.1 50 0 100 ?

* i192.168.195.1/32 10.1.5.2 50 100 0 100 ?

* i192.168.196.1/32 10.1.5.2 50 100 0 100 ?

* i192.168.197.1/32 10.1.5.2 50 100 0 100 ?

* i192.168.198.1/32 10.1.5.2 50 100 0 100 ?

* i192.168.199.1/32 10.1.5.2 50 100 0 100 ?

 

 

R5#sh ip bgp 

BGP table version is 62, local router ID is 10.1.7.2

Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,

r RIB-failure, S Stale

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

 

Network Next Hop Metric LocPrf Weight Path

*&gt; 10.1.1.0/24 10.1.5.2 50 0 100 ?

* i 10.1.2.1 0 100 0 100 ?

*&gt; 10.1.6.0/24 10.1.5.2 0 0 100 ?

* i 10.1.2.1 50 100 0 100 ?

*&gt; 192.168.192.0/21 10.1.5.2 0 0 100 i

* i 10.1.2.1 0 100 0 100 i

*&gt; 192.168.192.1/32 10.1.5.2 50 0 100 ?

* i 10.1.2.1 50 100 0 100 ?

*&gt; 192.168.193.1/32 10.1.5.2 50 0 100 ?

* i 10.1.2.1 50 100 0 100 ?

*&gt; 192.168.194.1/32 10.1.5.2 50 0 100 ?

* i 10.1.2.1 50 100 0 100 ?

*&gt; 192.168.195.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.196.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.197.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.198.1/32 10.1.5.2 50 0 100 ?

*&gt; 192.168.199.1/32 10.1.5.2 50 0 100 ?

相關文章
相關標籤/搜索