StackDoc

StackDoc

當前位置: 主頁 > 操作系統 > OS >

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

時間:2011-06-17 21:15來源:Internet 作者:Internet 點擊:
由於各位工程師在下載以前的BGP路由協議詳解(完整篇)時,不能下載附件,所以今天我將這個博再重新發一次。 上個月我寫一篇關於BGP協議的博文,曾許諾過要完善這個文檔,但因最近的工作和授課很忙,所以沒
?

由於各位工程師在下載以前的BGP路由協議詳解(完整篇)時,不能下載附件,所以今天我將這個博再重新發一次。

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

     此BGP協議的內容也不算太難,一些關於BGP的高級應用,會在以後MPLS 協議和MPLS流量工程中的內容中會更深入的講解!
    希望通過本文檔能幫助那些愛好網络知識和那些参加CCIE考試的網友們提供一些幫助。

一、BGP的概況

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

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

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

1、BGP的特性

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

? 由於傳輸是可靠的,所以BGP0使用增量更新,在可靠的鏈路上不需要使用定期更新,所以BGP使用觸發更新。

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

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

? 豐富的屬性值

? 可以組建可擴展的巨大的網络

2、BGP的三張表

? 鄰居關系表

n 所有BGP鄰居

? 轉發數據庫

n 記錄每個鄰居的網络

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

n 數據庫包括BGP屬性

? 路由表

n 最佳路徑放入路由表中

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

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

如下圖所示。

clip_image002

? 鄰居表,包含與之建立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

3、BGP消息類型

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

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

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

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

所有的BGP分組共享同样的公有首部,在學習不同類型的分組之前,先討論公共首部,如下圖所示,這個首部的字段如下。

? 標記:這個16字節標記字段保留给鑒別用

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

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

clip_image004

打開消息:主要是利用此報文建立鄰居,運行BGP的路由器打開與鄰居的TCP連接,並發送打開報文,如果鄰居接受這種鄰居關系,由響應保活報文。打開報文格式如下所示。

clip_image006

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

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

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

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

? 選項長度:打開報文還可以包含某些選項参數,若包含,則這個1字節字段定義選項参數總長度,若沒有選項参數,則這個字段的值为0

? 選項参數:若選項参數長度的值不是0,則表示有某些選項参數,每一個選項参數本身又有兩個字段,参數長度和参數值,到現在已定義的唯一的選項参數是鑒別。

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

clip_image008

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

clip_image010

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

? 撤銷路由:這個字段列出必須從以前通知的清單中刪除的所有路由

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

? 路徑屬性:這個字段定義到這個報文宣布可達性的網络路徑屬性

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

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

clip_image012

clip_image014

保活報文:是用來告訴對方自己是工作的,保活報文只包括公共首部,如下圖所示。

clip_image016

下圖为,是采用ethereal采集到的BGP的保活報文。

clip_image018

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

clip_image020

? 差錯碼:這個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_image022

4、建立鄰居的過程

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

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

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

按照RFC1771,BGP建立鄰居關系要經曆以下幾個階段,如下圖所示。

clip_image024

? 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

5、建立IBGP鄰居

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

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

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

? 鄰居之間可以通過各自的一個物理接口建立對等關系,該對等關系是通過屬於它們共享的子網的IP地址來建立的。

? 鄰居之間也可以通過使用環回接口建立對等關系。

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

6、建立EBGP鄰居

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

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

? 鄰居之間可以通過各自的一個物理接口建立對等關系。

? 鄰居之間也可以通過使用環回接口建立對等關系。

7、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_image026

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命令,是为了冗餘。

8、IBGP的同步

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

? 同步開启意味着,從一個IBGP鄰居學來的路由,除非從IGP中也同样學習到,否則不可能被選为最優。

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

實例說明:如下圖所示

clip_image028

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

R1、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

二、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_image030

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

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

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

clip_image032

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

可以通過使用AS附加改變其公布路由的AS_PATH來影響數據流的流向。

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

clip_image034

實例說明:如圖所示。

clip_image036

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

clip_image038

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

clip_image040

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

clip_image042

聚合後繼承明細路由的屬性,在大括號裏面的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 2i 。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的選路,直接往下繼續選擇最優路徑。

2、源頭屬性(Origin)

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

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

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

不完全:路由的源頭未知或是通過其他方法獲悉的,在BGP表中,不完整源頭用?表示

如下示例所示。

clip_image044

2、下一跳屬性(NEXT_HOP)

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

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

clip_image046

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

clip_image048

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

clip_image050

從上面圖可以知道,在去往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_image052

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

n 如果R1、R2、R3全部用直連接口建鄰居時會產生第三方下一跳。

n 如果R1、 R2用環回口而R1、R3用直連建立鄰居時,會產生第三方下一跳。

n 如果R1、R2用直連而R1、R3用回環口時,不會產生第三方下一跳,如下所示配置。

n 如果R1、R2、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_image054

R5、R3,R1、R2为EBGP鄰居關系,R1、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。(路由表裏下一跳不會改變)

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

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

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

clip_image056

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

clip_image058

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

實例說明:如下圖所示。

clip_image060

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

clip_image062

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

clip_image064

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

clip_image066

4、原子聚合屬性

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

clip_image068

命令只聚合已經包含在BGP表中的網络,這與使用network來通告匯總路由要求不同,後者要求網络必須出 現在IP路由選擇表中

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

clip_image070

可以使用show ip bgp命令來查看

clip_image072

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

5、權重屬性

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

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

clip_image074

可以在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

6、MED屬性

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

clip_image076

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_image078

clip_image080

clip_image082

clip_image084

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

clip_image086

clip_image088

clip_image089

7、共同體屬性

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_image091

clip_image093

clip_image095

clip_image097

三、BGP路由匯總

BGP的匯總有2種:

A匯總summary

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

如果明細路由斷了,匯總仍然會被引入,且缺乏靈活性。

clip_image002[4]

命令network要求路由選擇表中有與指定的前綴或掩碼完全匹配的條目,为滿足這種要求,可配置一條指向接口null0的靜態路由,如果IGP執行匯總,則路由選擇中可能已以有這样的靜態路由。

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

clip_image004[4]

B聚合aggregate

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

clip_image006[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合用,對特定鄰居漏過特定的明細路由。

四、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、OE1、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連接的遠端對等體。

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

路由翻動產生的原因有很多種比如:鏈路不穩定、路由器接口故障、ISP工程施工、管理員錯誤配置和錯誤故障檢查等等都能造成路由翻動,由於路由翻動會造成每台路由器重新計算路由,從而消耗了大量的網络帶寬和路由器的CPU資源。

BGP鄰居的flaping

clip_image008[4]

當R1與R2兩台路由器運行IGP協議,並且建立EBGP的鄰居關系,用環回口建立鄰居關系。這時假如R1、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_image010[4]

R1、R2、R3因为屬於同一個AS,所以運行一個IGP,R2-R4,R3-R5之間的鏈路並沒有通告進IGP中。R1、R2、R3 IBGP對等體關系,R3在指R1時,打了neighbor 1.1.1.1 next-hop-self;R4、R2 ,R5、R3 ,R4、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_image012[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

六、路由反射器

由於IBGP的水平分割問題,所以IBGP需要Full Mesh。由於整個IBGP full mesh的話,需要建的session數为n*(n-1)/2。不具有擴展性。所以產生兩種解决方法,路由反射器是其中一種,而另一種則是聯邦。

路由反射器是被配置为允許它把通過IBGP所獲悉的路由通告到其他IBGP對等體的路由器,路由器反射器與其他路由器有部分IBGP對等關系,這些路由器被稱为客戶。客戶間的對等是不需要的,因为路由反射器將在客戶間傳遞通告。 如下圖所示。

clip_image014[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_image016[4]

clip_image018[4]

七、BGP聯邦

由於IBGP的水平分割問題,所以IBGP需要full mesh。由於整個IBGP full mesh的話,需要建的session數为n*(n-1)/2。不具有擴展性。所以產生兩種解决方法,聯邦是其中一種。

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

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

clip_image020[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計算長度時,不被考慮。下一跳在聯邦內傳遞不會改變。

八、配置样例1

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

clip_image022[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

九、配置样例2

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

clip_image024[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/24、192.168.193.0/24、192.168.194.0/24

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

? 不宣告192.168.195.0/24、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 ?


From:http://xuanbo.blog.51cto.com/499334/465596
頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
用戶名: 驗證碼:點擊我更換圖片
欄目列表
推薦內容
GOOGLE提供的廣告