BGP最新的版本是BGP第4版本(BGP4),它是在RFC4271中定義的;一個路由器只能屬于一個AS。AS的范圍從1-65535(64512-65535是私有AS號),RFC1930提供了AS號使用指南。
BGP的主旨是提供一種域間路由選擇系統(tǒng),確保自主系統(tǒng)只能夠無環(huán)地交換路由選擇信息,BGP路由器交換有關(guān)前往目標(biāo)網(wǎng)絡(luò)的路徑信息。
BGP是一種基于策略的路由選擇協(xié)議,BGP在確定最佳路徑時考慮的不是速度,而是讓AS能夠根據(jù)多種BGP屬性來控制數(shù)據(jù)流的傳輸。
1、BGP的特性BGP將傳輸控制協(xié)議(TCP)用作其傳輸協(xié)議。是可靠傳輸,運行在TCP的179端口上(目的端口)
由于傳輸是可靠的,所以BGP0使用增量更新,在可靠的鏈路上不需要使用定期更新,所以BGP使用觸發(fā)更新。
類似于OSPF和ISIS路由協(xié)議的Hello報文,BGP使用keepalive周期性地發(fā)送存活消息(60s)(維持鄰居關(guān)系)。
BGP在接收更新分組的時候,TCP使用滑動窗口,接收方在發(fā)送方窗口達到一半的時候進行確定,不同于OSPF等路由協(xié)議使用1-to-1窗口。
豐富的屬性值
可以組建可擴展的巨大的網(wǎng)絡(luò)
2、BGP的三張表鄰居關(guān)系表
n 所有BGP鄰居
轉(zhuǎn)發(fā)數(shù)據(jù)庫
n 記錄每個鄰居的網(wǎng)絡(luò)
n 包含多條路徑去往同一目的地,通過不同屬性判斷最好路徑
n 數(shù)據(jù)庫包括BGP屬性
路由表
n 最佳路徑放入路由表中
n EBGP路由(從外部AS獲悉的BGP路由)的管理距離為20
n IBGP路由(從AS系統(tǒng)獲悉的路由)管理距離為200
如下圖所示。
鄰居表,包含與之建立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 |
轉(zhuǎn)發(fā)表,從鄰居那里獲悉的的所有路由都被加入到BGP轉(zhuǎn)發(fā)表中。
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轉(zhuǎn)發(fā)表中選出前往每個網(wǎng)絡(luò)的最佳路由,并加入到路由表中。
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 |
open:用來建立最初的BGP連接。(包含hold-time,router-id)
Keepalive:對等體之間周期性的交換這些消息以保持會話有效。(默認60秒)
Update:對等體之間使用這些消息來交換網(wǎng)絡(luò)層可達性信息。
Notification:這些消息用來通知出錯信息。
所有的BGP分組共享同樣的公有首部,在學(xué)習(xí)不同類型的分組之前,先討論公共首部,如下圖所示,這個首部的字段如下。
標(biāo)記:這個16字節(jié)標(biāo)記字段保留給鑒別用
長度:這個2字節(jié)字段定義包括首部在內(nèi)的報文總長度
類型:這個1字節(jié)段定義分組的類型,用數(shù)值1至4定義BGP消息類型
打開消息:主要是利用此報文建立鄰居,運行BGP的路由器打開與鄰居的TCP連接,并發(fā)送打開報文,如果鄰居接受這種鄰居關(guān)系,由響應(yīng)保活報文。打開報文格式如下所示。
版本:這個1字節(jié)字段定義BGP的版本,當(dāng)前的版本是4
自治系統(tǒng):這個2字節(jié)字段定義自治系統(tǒng)號。
保持時間:這個2字節(jié)字段定義一方從另一方收到?;顖笪幕蚋聢笪闹八?jīng)過的最大秒數(shù),若路由器在保持時間的期間內(nèi)沒有收到這些報文中的一個,就認為對方是不工作的。
BGP協(xié)議標(biāo)識:這是2字節(jié)字段,這定義發(fā)送打開報文的路由器,為此,這個路由器通常使用它的IP地址中的一個作為BGP標(biāo)識符。
選項長度:打開報文還可以包含某些選項參數(shù),若包含,則這個1字節(jié)字段定義選項參數(shù)總長度,若沒有選項參數(shù),則這個字段的值為0
選項參數(shù):若選項參數(shù)長度的值不是0,則表示有某些選項參數(shù),每一個選項參數(shù)本身又有兩個字段,參數(shù)長度和參數(shù)值,到現(xiàn)在已定義的唯一的選項參數(shù)是鑒別。
如下圖是采用ethereal采集到的BGP的打開消息報文。
更新報文:更新報文是BGP協(xié)議的核心,路由器使用它來撤銷以前已通知的終點和宣布到一個新終點的路由,或兩者都有,應(yīng)該注意:BGP可以撤銷好幾個在以前曾通知過的終點,但在單個更新報文中則只能通知一個新終點,如下所示。
不可行路由長度:這個2字節(jié)字段定義下一字段的長度。
撤銷路由:這個字段列出必須從以前通知的清單中刪除的所有路由
路徑屬性長度:這個2字節(jié)字段定義下一個字段的長度
路徑屬性:這個字段定義到這個報文宣布可達性的網(wǎng)絡(luò)路徑屬性
網(wǎng)絡(luò)層可達性信息:這個字段定義這個報文真正通知的網(wǎng)絡(luò)。它有一個長度字段和一個IP地址前綴,長度定義前綴中的位數(shù)。前綴定義這個網(wǎng)絡(luò)地址的共同部分。例如,若這個網(wǎng)絡(luò)是123.1.10.0/24,則網(wǎng)絡(luò)前綴是24而前綴是123.1.10。
下圖為,是采用ethereal采集到的BGP的更新消息報文。
保活報文:是用來告訴對方自己是工作的,?;顖笪闹话ü彩撞?,如下圖所示。
下圖為,是采用ethereal采集到的BGP的保活報文。
通知報文:當(dāng)檢測出差錯狀態(tài)或路由器打算關(guān)閉連接時,路由器就發(fā)送通知報文,如下圖所示。
差錯碼:這個1字節(jié)字段定義差錯的種類
差錯子碼:這個1字節(jié)字段進一步定義每一種差錯的類型
差錯數(shù)據(jù):這個字段可用來給出關(guān)于該差錯的更多的診斷信息
具體的差錯碼,如下表所示。
差錯碼 |
差錯碼說明 |
差錯子碼說明 |
1 |
報文首部差錯 |
3種不同的子碼:同步問題(1),壞的報文長度(2),壞的報文類型(3) |
2 |
打開報文差錯 |
6種不同的子碼:不支持的版本(1),壞的對等AS(2),壞的BGP標(biāo)識符(3),不支持的可選參數(shù)(4),鑒別失?。?),不可接受的保持時間(6) |
3 |
更新報文差錯 |
11種不同的子碼:錯誤形成的屬性表(1),不能識別的熟知屬性(2),丟失熟知屬性(3),屬性標(biāo)志差錯(4),屬性長度差錯(5),非法起點屬性(6),AS路由選擇環(huán)路(7),無效的下一路屬性(8),可選屬性差錯(9),無效的網(wǎng)絡(luò)字段(10),錯誤形成的AS_PATH(11) |
4 |
保持計時器截止期到 |
未定義子碼 |
5 |
有限狀態(tài)機差錯 |
定義過程的差錯,未定義子碼 |
6 |
關(guān)閉 |
未定義子碼 |
下圖為,是采用ethereal采集到的BGP的通知報文。
4、建立鄰居的過程在兩個BGP發(fā)言人交換信息之前,BGP都要求建立鄰居關(guān)系,BGP不是動態(tài)地發(fā)現(xiàn)所感興趣的運行BGP的路由器,相反,BGP使用一個特殊的鄰居IP地址來配置的。
BGP使用周期性的Keepalive分組來確認BGP鄰居的可訪問性。
Keepalive計時器是保持時間(Hold Time)的三分之一,如果發(fā)給某一特定BGP鄰居三個連續(xù)的Keepalive分組都丟失的話,保持時間計時器超時,那個鄰居被視為不可達,RFC1771對保持時間的建議是90秒,Keepalive計時器的建議值是30秒。
按照RFC1771,BGP建立鄰居關(guān)系要經(jīng)歷以下幾個階段,如下圖所示。
Idle:在此狀態(tài)下不分配網(wǎng)絡(luò)資源,不允許傳入的BGP連接。當(dāng)在持續(xù)性差錯條件下,經(jīng)常性的重啟會導(dǎo)致波動。因此,在第一次進入到空閑狀態(tài)后,路由器會設(shè)置連接重試定時器,在定時器到期時才會重新啟動BGP,思科的初始連接重試時間為60秒,以后每次連接重試時間都是之前的兩倍,也就是說,連接等待時間呈指數(shù)關(guān)系遞增。
Connect:(已經(jīng)建立完成了TCP三次握手),BGP等待TCP連接完成,如果連接成功,BGP在發(fā)送了OPEN分組給對方之后,狀態(tài)機變?yōu)镺penSent狀態(tài),如果連接失敗,根據(jù)失敗的原因,狀態(tài)機可能演變到Active,或是保持Connect,或是返回Idle。
Active:在這個狀態(tài)下,初始化一個TCP連接來建立BGP間的鄰居關(guān)系。如果連接成功,BGP在發(fā)送了OPEN分組給對方之后,狀態(tài)機變?yōu)镺penSent狀態(tài),如果連接失敗,可能仍處在Active狀態(tài)或返回Idle狀態(tài)。
OpenSent:BGP發(fā)送OPEN分組給對方之后,BGP在這一狀態(tài)下等待OPEN的回應(yīng)分組,如果回應(yīng)分組成功收到,BGP狀態(tài)變?yōu)镺penConfirm,并給對方發(fā)送一條Keepalive分組,如果沒有接到回應(yīng)分組,BGP狀態(tài)重新變?yōu)镮dle或是Active。
OpenConfirm:這時,距離最后的Established狀態(tài)只差一步,BGP在這個狀態(tài)下等待對方的Keepalive分組,如果成功接收,狀態(tài)變?yōu)镋stablished,否則,因為出現(xiàn)錯誤,BGP狀態(tài)將重新變?yōu)镮dle。
Established:這是BGP對等體之間 可以交換信息的狀態(tài),可交換的信息包括UPDATE分組、KeepAlive分組和Notification分組。
connect和active都是TCP連接階段,ACTIVE是發(fā)起方,connect是應(yīng)答方。可以使用命令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運行在AS內(nèi)部,不需要直連。IBGP有水平分割,建議使用Full Mesh,由于Full Mesh不具有擴展性,為了解決IBGP的Full Mesh問題,使用路由反射器(RR)和聯(lián)邦兩種方法來解決。主要減少了backbone IGP中的路由。
Neighbor后所指的地址可達。發(fā)起方不能是缺省路由,應(yīng)答方不能是缺省路由。
可以使用下面兩種方法來建立IBGP鄰居:
鄰居之間可以通過各自的一個物理接口建立對等關(guān)系,該對等關(guān)系是通過屬于它們共享的子網(wǎng)的IP地址來建立的。
鄰居之間也可以通過使用環(huán)回接口建立對等關(guān)系。
在IBGP中,由于假定了IBGP鄰居在物理上直接相連的可能性不大,所以將IP分組頭中的TTL域設(shè)置為255。
6、建立EBGP鄰居EBGP運行在AS與AS之間的邊界路由器上,默認情況下,需要直連或使用靜態(tài)路由,如果不是直連,必須指EBGP多跳,Neighbor x.x.x.x ebgp-multihop [1-255] 不選擇為最大值,255跳。
可以使用下面兩種方法來建立EBGP鄰居:
鄰居之間可以通過各自的一個物理接口建立對等關(guān)系。
鄰居之間也可以通過使用環(huán)回接口建立對等關(guān)系。
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鏈接要看對方是否允許我的更新源來訪問它。
示例:
R1/R2兩臺路由器運行RIPv2,都將環(huán)回口宣告進RIP。這時假如在兩臺路由器之間運行IBGP鄰居關(guān)系:
R1:neighbor 192.168.2.1 remote-as 1
R2:neighbor 10.1.1.1 remote-as 1
雙方都沒有寫更新源。(neighbor x.x.x.x update-source lo0代表本路由器的更新源為lo0口,BGP的包以這個接口的地址為源地址發(fā)送出去。)
一邊指環(huán)回口,一邊指直連接口??梢越⑧従印_@里有2個TCP的session,其中只有R1去訪問R2的環(huán)回口的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??梢允褂妹頢how tcp brief查看到2條TCP session在建立,當(dāng)一條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同步規(guī)則指出,BGP路由器不應(yīng)用使用通過IBGP獲悉的路由或?qū)⑵渫ǜ娼o外部鄰居,除非該路由是本地的或是通過IGP獲悉的。
同步開啟意味著,從一個IBGP鄰居學(xué)來的路由,除非從IGP中也同樣學(xué)習(xí)到,否則不可能被選為最優(yōu)。
如果IGP為OSPF,那么在IGP中,這些前綴的router-id也必須與通告這些前綴的bgp的router-id相匹配。才有可能被選為最優(yōu)。
實例說明:如下圖所示
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學(xué)習(xí)到該前綴,又從IBGP對等體R1,學(xué)習(xí)到該前綴,如果R3的synchronizaion是開啟的,檢查同步,在R3的BGP轉(zhuǎn)發(fā)表里:
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 |
說明同步檢查沒有通過,當(dāng)把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 |
關(guān)閉同步的條件
n 將EBGP的路由重分布進IGP
n 本AS不為其他AS提供穿越服務(wù)(末節(jié)的AS)
n 穿越路徑上所有路由器都運行BGP
二、BGP屬性路由器發(fā)送關(guān)于目標(biāo)網(wǎng)絡(luò)的BGP更新消息,更新的度量值被稱為路徑屬性。屬性可以是公認的或可選的、強制的或自由決定的、傳遞的或非傳遞的。屬性也可以是部分的。并非組織的和有組合都是合法的,路徑屬性分為4類:
——公認強制的
——公認自由決定的
——可選傳遞的
——可選非傳遞的
只有可選傳遞屬性可被標(biāo)記為部分的
公認屬性
是公認所有BGP實現(xiàn)都必須能夠識別的屬性。這早些屬性被傳遞給BGP鄰居。
公認強制屬性必須出現(xiàn)在路由描述中,公認自由決定屬性可以不出現(xiàn)在路由描述中
可選屬性
非公認屬性被稱為可選的,可選屬性可以是傳遞的或非傳遞的
可選屬性不要求所有的BGP實現(xiàn)都支持
對于不支持的可選傳遞屬性,路由器將其原封不動地傳遞給其他BGP路由器,在這種情況下,屬性被標(biāo)記為部分的。
對于可選非傳遞屬性,路由器必須將其刪除,而不將其傳遞給其他BGP路由器
BGP定義屬性
公認強制屬性
公認自由決定
可選傳遞屬性
可選非傳遞屬性
BGP每條更新消息都有一個長度可變的路徑屬性序列<屬性類型,屬性長度,屬性值>,如果第1比特是0,則屬于是公認屬性,如果它是1,則該屬性是任選屬性,如果第2比特是0,則該屬性是不可傳遞的,如果它是1,則屬性是可傳遞的,公認屬性總是可傳遞的,屬性標(biāo)志域中的第3個比特指示任選可傳遞屬性中的信息是部分的(值為1)還是完整的(值為0),第4個比特確定該屬性長度是1字還是2字節(jié),標(biāo)志域其他4個比特總為0.屬性類型代碼字節(jié)含有屬性代碼。如下圖所示。
1、AS路徑屬性(AS-path)AS_PATH是一個公認必選的屬性,它用AS號的順序來描述AS間的路徑或到NLRI所明確的目的地的路由。
當(dāng)每個運行運行BGP的路由器發(fā)起一條路由——當(dāng)它在自己的AS域內(nèi)公布一個有關(guān)目的地NLRI——它將自己的AS號附加到AS_PATH中。當(dāng)后續(xù)的運行BGP的路由器向外部的對端公布路由,它將自己的AS號附加到AS_PATH中。AS可以描述所有它經(jīng)過的自治系統(tǒng),以最近的AS開始,以發(fā)起者的AS結(jié)束。如下圖所示。
只有將更新消息發(fā)送給在另一個AS域內(nèi)的鄰居時,BGP路由器才將它的AS號加到AS_PATH中,也就是說只有在兩個EBGP對等體之間公布路由時,AS號才被附加到AS_PATH中。
可以通過使用AS附加改變其公布路由的AS_PATH來影響數(shù)據(jù)流的流向。
AS_PATH屬性的另一個功能就是避免環(huán)路,如果BGP路由器從它的外部鄰居收到一條路由,而該路由AS_PATH包含這個BGP路由器自己的AS號。于是該路由器就知道是條環(huán)路路由。如下圖所示。
實例說明:如圖所示。
可以將私有的AS號進行隱藏,如下配置所示。
下面是AS屬性的另一個實例,如下圖所示。
R1在發(fā)送更新的時候,剝除私有AS號;并且不將AS100的路由傳播給其客戶路由器R3,配置如下所示。
聚合后繼承明細路由的屬性,在大括號里面的as-path在計算長度時,只算一個。在聯(lián)盟內(nèi)小括號里面的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的后面還有一個參數(shù),last-as,如:
route-map AS set as-path prepend last-as ? <1-10> number of last-AS prepends |
意思是將離我最近的AS,將它的AS號在as-path里面再重復(fù)出現(xiàn)幾次。這個10看起來可以和allowas-in里面的10對應(yīng)起來。
假如as-path prepend 與as-path prepend last-as合用的時候,last-as先生效,然后prepend再生效。
減小as-path的長度,如用聯(lián)盟和remove-private-AS等可以實現(xiàn)。
注意:Remove-private-as,如果在as-path里交替出現(xiàn)私有和公有的AS號,這樣將無法將私有AS號去掉。在起源的時候,連續(xù)的時候才有效。
bgp bestpath as-path ignore(隱藏命令),這條命令可以使我們在選路時,跳過as-path的選路,直接往下繼續(xù)選擇最優(yōu)路徑。
2、源頭屬性(Origin)
源頭是公認強制屬性,它定義了路徑信息的源頭。
IGP:路由在起始AS的內(nèi)部,使用network命令通過BGP通告路由時,通常屬于這種情況,在BGP表中,IGP源頭用i表示
EGP:路由是通過EGP獲悉的,在BGP表中用e表示。
不完全:路由的源頭未知或是通過其他方法獲悉的,在BGP表中,不完整源頭用?表示
如下示例所示。
2、下一跳屬性(NEXT_HOP)該為公認必選屬性,描述了到公布目的地的路徑下一跳路由器的IP地址。由BGP NEXT_HOP屬性所描述的IP地址不經(jīng)常是鄰居路由器的IP地址,要遵循下面的規(guī)則:
如果正在進行路由宣告的路由器和接收的路由器在不同的自治系統(tǒng)中,NEXT_HOP是正在宣告路由器接口的IP地址,如下圖所示。
如果正在進行路由宣告的路由器和接收的路由器在同一個AS內(nèi),并且更新消息的NLRI指明的目的地也在同一個AS內(nèi),那么NEST_HOP就是宣告路由的鄰居的IP地址。如下圖所示。
如果正在宣告的路由器和接收的路由器是內(nèi)部對等體,并且更新消息的NLRI指明目的地在不同的AS,則NEXT_HOP就是學(xué)習(xí)到路由的外部對等實體的IP地址。如下圖所示。
從上面圖可以知道,在去往192.168.5.0的網(wǎng)段中會出現(xiàn)路徑不可達的情況,解決這個問題的方法是保證內(nèi)部路由器知道與兩處自治系統(tǒng)相連的外部網(wǎng)絡(luò),可以使用靜態(tài)路由的辦法,但實際的做法是在外部端口上以被動模式運行IGP。但在某種情況下,該方法并不理想。
第二種方法是采用配置選項來做,這個配置選項被稱做next-hop-self。
下面具體詳述了下一跳的不可達的解決方法:
解決下一跳不可達的方法:
n 靜態(tài)路由
n 在IBGP鄰居所處的IGP中宣告
n 將與EBGP直連的網(wǎng)絡(luò)重分布進IGP
n neighbor x.x.x.x next-hop-self(將指向EBGP鄰居更新源的地址變?yōu)樽约旱母略吹刂罚≧R有的版本會將下一跳改變)
一般情況下,在本路由器上將直連的網(wǎng)絡(luò)引入BGP,下一跳為0.0.0.0,本路由器聚合的路由的下一跳也為0.0.0.0。
在本路由器上將從IGP學(xué)來的路由引入BGP時,在本路由器上看BGP的轉(zhuǎn)發(fā)表,下一跳為IGP路由的下一跳。在多訪問網(wǎng)絡(luò)環(huán)境中,用直連接口建立鄰居關(guān)系,會產(chǎn)生第三方下一跳。
實例說明:如下圖所示,
R2與R1是IBGP鄰居,R1與R3是EBGP鄰居,當(dāng)用直連接口建鄰居時,R2引入BGP的前綴172.16.2.0/24,在R3的bgp轉(zhuǎn)發(fā)表里,將顯示為R2的多訪問網(wǎng)絡(luò)接口地址(如:10.1.1.2)。產(chǎn)生第三方下一跳的現(xiàn)象。
n 如果R1、R2、R3全部用直連接口建鄰居時會產(chǎn)生第三方下一跳。
n 如果R1、 R2用環(huán)回口而R1、R3用直連建立鄰居時,會產(chǎn)生第三方下一跳。
n 如果R1、R2用直連而R1、R3用回環(huán)口時,不會產(chǎn)生第三方下一跳,如下所示配置。
n 如果R1、R2、R3都用環(huán)回口建立鄰居,則不會產(chǎn)生第三方下一跳,如下配置所示。
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, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 172.16.1.0/24 10.1.1.1 0 0 100 i *> 172.16.2.0/24 10.1.1.2 0 100 i *> 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, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path *> 172.16.1.0/24 1.1.1.1 0 0 100 i *> 172.16.2.0/24 1.1.1.1 0 100 i *> 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, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 172.16.1.0/24 1.1.1.1 0 0 100 i *> 172.16.2.0/24 1.1.1.1 0 100 i *> 172.16.3.0/24 0.0.0.0 0 32768 i |
第三方下一跳:收到路由更新的源地址與將要發(fā)出去的接口地址在同一網(wǎng)段的時候,路由的下一跳不改變,為原來路由更新的源地址。
有時雖然路由的下一跳可達,但會出現(xiàn)訪問網(wǎng)絡(luò)出現(xiàn)環(huán)路的現(xiàn)象。
實例說明:
R5、R3,R1、R2為EBGP鄰居關(guān)系,R1、R3為IBGP鄰居關(guān)系。那么R5通過BGP傳給R3的路由(如10.1.1.0/24),R3通過IBGP傳給R1,R1通過EBGP傳給R2,這時R2訪問10.1.1.0/24這個網(wǎng)絡(luò)的下一跳就在R1上。這時R2去訪問R5的時候,就會產(chǎn)生環(huán)路。
則R2(走下一跳)——R1(走物理鏈路)——R2,這樣環(huán)路產(chǎn)生了。
解決方法:
neighbor x.x.x.x next-hop-unchanged (此命令只能用在EBGP多跳的環(huán)境下,將路由的下一跳,從自己的更新源地址改變?yōu)閺腎BGP學(xué)來的下一跳地址)(這時路由的下一跳在路由表里將改變。)
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、本地優(yōu)先級屬性(Local_preference)本地優(yōu)先級是公認自由決定的屬性,它告訴AS中的路由器,那條路徑離開AS的首選路徑。本地優(yōu)先級越高,路徑被選中的可能性越大。本地優(yōu)先級這種屬性只能在同一個AS中的路由器之間交換,本是優(yōu)先級只適用于內(nèi)部鄰居,用于內(nèi)部對等體之間的Update消息。
本地優(yōu)先級,可以在本AS和大聯(lián)盟內(nèi)傳遞。越大越優(yōu)先。影響路由器的出站流量。默認情況下,local-preference為100。
使用下面的命令,如下圖所示
是將路由器收到的所有外部BGP路由的默認本地優(yōu)先級修改為指定值。對IBGP鄰居路由器傳過來的路由,不會改變它們的local-preference。如果將一個IBGP鄰居傳來的路由傳給另外一個IBGP鄰居,那我必須是RR。
實例說明:如下圖所示。
未使用本地優(yōu)先級操作路徑,如下所示路由器C的BGP表。
在路由器A 上修改本地優(yōu)先級,如下所示。
在使用本地優(yōu)先操縱后的路徑,查看路由器C 的BGP表。
4、原子聚合屬性原子聚合是一個公認自決的屬性。類型代碼為6,它告訴鄰接AS,始發(fā)路由器對路由進行了聚合??梢允褂孟旅娴拿钸M行配置,
命令只聚合已經(jīng)包含在BGP表中的網(wǎng)絡(luò),這與使用network來通告匯總路由要求不同,后者要求網(wǎng)絡(luò)必須出 現(xiàn)在IP路由選擇表中
配置命令aggregate-address后,一條與匯總路由對應(yīng)的指向null0的BGP路由將自動被加入到IP路由表中。如下示例所示。
可以使用show ip bgp命令來查看
關(guān)于原子聚合的詳細內(nèi)容在以后的章節(jié)中詳細說明。
5、權(quán)重屬性cisco私有的參數(shù)。本地有效。缺省條件下,本地始發(fā)的路徑具有相同的WEIGHT值(即32768),所有其他的路徑的weight值為0。越大越優(yōu)選。影響路由器的出站流量。
權(quán)重只影響當(dāng)前路由器,指定鄰居的權(quán)重。使用下面命令來修改權(quán)重。
可以在neighbor的入向設(shè)置。范圍0-65535。Neighbor 1.1.1.1 weight 10,從對等體1.1.1.1接收過來的所有路由的weight值都設(shè)置為10。
還可以用route-map來設(shè)定,可以將特定路由的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屬性也被稱為度量值,是一種可選非傳遞屬性。承載于EBGP的Update消息中。MED用于向外部鄰居指出進入AS的首選路徑,當(dāng)入口有多個時,AS可以使用MED來動態(tài)地影響其他AS如何選擇進入路徑,在BGP中,MED是唯一一個可影響數(shù)據(jù)如何進入AS的屬性。度量值越小,路徑被選中的可能性越大。與本地優(yōu)先級不同,MED是在自主系統(tǒng)之間交換的。MED影響進入AS的數(shù)據(jù)流,而本地優(yōu)先級影響離開AS的數(shù)據(jù)流。如下圖所示。
Metric和med:BGP的metric對IBGP同樣有效。特指med:從EBGP收到的metric比較的時候才叫MED,MED是借用了BGP的metric在EBGP的時候進行比較。MED(多出口區(qū)分)比較EBGP的metric找到最優(yōu)的出口。
MED相當(dāng)于IGP路由的metric值,越小越優(yōu)先。在新的IOS中,將IGP中的路由重分布進BGP,BGP將自動繼承IGP路由的metric值。在老的IOS里,如果需要繼承需要在重分布時加route-map,如:
Redistribute rip route-map RE Route-map RE set metric-type internal |
默認情況下,只有在兩條路徑的第一個(鄰近的)AS相同的情況下才會進行比較:任何聯(lián)盟內(nèi)的子自治系統(tǒng)都被忽略。任何多跳路徑,只有在AS_SEQUENCE中的第一個AS相同的情況下,才會比較MED;任何打頭的AS_CONFED_SEQUENCE都將被忽略。如果激活了bgp always-compare-med,那么對于所有路徑都比較MED,而不考慮是否來自同一個AS。如果使用了這個選項,就應(yīng)該在整個AS中都這樣做,以避免路由選擇環(huán)路。
實例說明:如下拓撲圖
下面是一個使用策略路由來實現(xiàn)修改MED值的案例。
實例說明:如下圖所示,此實例采用了本地優(yōu)先級與MED屬性
7、共同體屬性BGP團體是一組共享某些共同特性的目的地,用于簡化路由策略的執(zhí)行,一個團體并不被限制在一個網(wǎng)絡(luò)或一個AS之中。是另一種過濾入站或出站BGP路由的方法。
COMMUNITY屬性是一組4個8位組的數(shù)值,RFC1997規(guī)定,前2個8位組表示自治系統(tǒng),后2個8位組表示出于管理目的而定義的標(biāo)識符,格式為AA:NN,而思科的默認格式為NN:AA,可以使用命令ip bgpcommunity new-format將思科默認格式改為RFC1997的標(biāo)準(zhǔn)格式。
團體屬性是一個可傳遞屬性,類型代碼為8。
no_export——如果接收到的路由攜帶該數(shù)值,不通告到EBGP對等體。如果配置了聯(lián)盟,則不能將此路由宣告到聯(lián)盟之外。
no_advertise——如果接收到的路由攜帶該數(shù)值,不通告給任何對等體,包括EBGP和IBGP。
internet ——無任何值,所有路由器默認情況下都屬于該團體,帶此屬性的路由在被收到后,應(yīng)該被通告給所有的其他路由器
local_as——帶有此屬性的路由在被收到后,應(yīng)該被通告給本地AS域內(nèi)的對等體,但不應(yīng)該被通告給外部系統(tǒng)中的對等體,包括同一個聯(lián)盟內(nèi)其它自治系統(tǒng)中的對等體。
實例說明:如下圖所示。
三、BGP路由匯總BGP的匯總有2種:
A.匯總:summary
靜態(tài)路由手工匯總指向null 0,再network引入BGP。
如果明細路由斷了,匯總?cè)匀粫灰耄胰狈`活性。
命令network要求路由選擇表中有與指定的前綴或掩碼完全匹配的條目,為滿足這種要求,可配置一條指向接口null0的靜態(tài)路由,如果IGP執(zhí)行匯總,則路由選擇中可能已以有這樣的靜態(tài)路由。
命令network告訴BGP通告哪些網(wǎng)絡(luò),而不如何通告,僅當(dāng)描寫的網(wǎng)絡(luò)號出現(xiàn)在IP路由選擇中后,BGP才會通告它,如下圖所示。
B.聚合:aggregate
聚合路由在本路由器上生成一條聚合路由,下一跳為0.0.0.0。
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里面匹配的路由進行聚合。當(dāng)advertise-map里面匹配的明細路由全部消失后,即使聚合路由范圍內(nèi)還有其他明細路由,聚合路由也將消失。當(dāng)與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號。只關(guān)心AS的號碼,不關(guān)心順序。
As-path、as-seq(as-path)原子聚合不帶任何AS。AS-SET首先是區(qū)別于atomic-aggregate,產(chǎn)生了AS的序列,序列中無分先后順序,這一點也不同于有明確順序的AS-SEQEUENCE
Attribute-map和route-map
這兩個參數(shù)一樣,可以將聚合路由的屬性清除掉(除了as-path屬性),添加自己需要添加的屬性。Attribute-map 與 as-set的合用時,能否將聚合的路由的屬性重置。(OK可以改)
Summary-only將聚合路由所包括的所有路由都抑制掉,被抑制的路由在bgp的轉(zhuǎn)發(fā)表里,顯示為s,代表suppress的意思。發(fā)送更新時,只發(fā)送聚合路由??梢耘c
neighbor 1.1.1.1 unsuppress-map XX合用,對特定鄰居漏過特定的明細路由。
Suppress-map,將suppress-map里面匹配的路由抑制掉,被抑制的路由在bgp的轉(zhuǎn)發(fā)表里,顯示為s,代表suppress的意思。發(fā)送更新時,只發(fā)送聚合路由和沒有被抑制的明細路由。可以與
neighbor 1.1.1.1 unsuppress-map XX合用,對特定鄰居漏過特定的明細路由。
四、BGP路由決策
BGP的RIB包括三部分:
Adj-RIBs-In:存儲了從對等體學(xué)習(xí)到的路由理新中未經(jīng)處理的路由信息,這些包含在Adj-RIBs-In中的路由被認為是可行路由。
Loc-RIB:包含了BGP發(fā)言者對Adj-RIBs-In中的路由應(yīng)用本地策略之后選定的路由
Adj-RIBs-Out:包含了BGP發(fā)言者向?qū)Φ润w宣告路由。
BGP有三個部分既可以是3個不同的數(shù)據(jù)庫,也可以是利用指針來區(qū)分不同部分的單一數(shù)據(jù)庫。BGP路由決策通過對Adj-RIBs-In中的路由應(yīng)用本地路由策略,且向Loc-RIB 和Adj-RIBs-Out中輸入選定或修改的路由進行路由選擇。其有三個階段。
第一階段:計算每條可行路由的優(yōu)先級
第二階段:從所有可用路由中為特定目的地選出最佳路由,并將其安裝到Loc-RIB中。
第三階段:將相應(yīng)的路由加入到Adj-RIBs-Out中,以便向?qū)Φ润w進行宣告。
以下為BGP選路原則的13條:
(1)weight
cisco私有的參數(shù)。本地有效。缺省條件下,本地始發(fā)的路徑具有相同的WEIGHT值(即32768),所有其他的路徑的weight值為0。越大越優(yōu)選。影響路由器的出站流量。
(2)local-preference
本地優(yōu)先級,可以在本AS和大聯(lián)盟內(nèi)傳遞。越大越優(yōu)先。影響路由器的出站流量。默認情況下,local-preference為100。
(3)本地起源
路由器本地始發(fā)的路徑優(yōu)先。在BGP的轉(zhuǎn)發(fā)表里顯示為0.0.0.0。依次降低的優(yōu)先級順序是:default-originate(針對每個鄰居配置)、default-informaiton-originate(針對每種地址簇配置)、network、redistribute、aggregate-address。
(4)as-path
評估as-path的長度,as-path列表最短的路徑優(yōu)先。
聚合后繼承明細路由的屬性,在大括號里面的as-path在計算長度時,只算一個。在聯(lián)盟內(nèi)小括號里面的AS號,在選路時,不計算到as-path長度里面。
(5)起源代碼
評估路由的origin code屬性,有3個i<e<?。i代表用network將IGP引入BGP的,或者是聚合等路由,e代表EGP,?代表重分布進BGP的路由。i為0,e為1,?為3。越小越優(yōu)。
(6)MED
metric傳遞不能傳出AS。例外:始發(fā)路由器可以metric傳給鄰居,可以是IBGP/EBGP,但是EBGP再傳不出去。
MED相當(dāng)于IGP路由的metric值,越小越優(yōu)先。
(7)EBGP優(yōu)于IBGP
這里EBGP>聯(lián)盟內(nèi)的EBGP>IBGP。
(8)最近的IGP鄰居
這里是指peer的更新源在我的路由表里顯示,哪個最近哪個最優(yōu)。
OSPF是否考慮O、OIA、OE1、OE2?只看cost不看O/OIA/OE。
(9)如果配置了maximum-path[ibgp]n,如果存在多條等價的路徑,會插入多條路徑。
BGP默認maximum-path=1,只能有一條最優(yōu)路徑,但可以通過命令來改變,如果沒有IBGP參數(shù),默認只能做EBGP的負載均衡。做負載均衡還有一個條件,就是上面的8條都比不出哪條最優(yōu)的情況下,才有可能出現(xiàn)負載均衡。
做了BGP的負載均衡后,在BGP的轉(zhuǎn)發(fā)表里還是一個最優(yōu),但在路由表里可以出現(xiàn)2個下一跳。
(10)最老的
與本端最早建立鄰居關(guān)系的peer,被優(yōu)選。因為它最穩(wěn)定。但一般不考慮,會跳過這個繼續(xù)往下選。
如果以下任一條件為真,這一步將會被忽略:
啟用了bgp bestpath compare-routerid,多條路徑具有相同的router-id,因為這些路由都是從同一臺路由器接收過來的;當(dāng)前沒有最佳路徑。缺乏當(dāng)前最佳路徑的例子發(fā)生在正在通告最佳路徑的鄰居失效的時候。
(11)最低的ROUTER-ID
BGP優(yōu)選來自具有最低的路由器ID的BGP路由器的路由。Router-id是路由器上最高的IP地址,并且優(yōu)選環(huán)回口。也可以通過bgp router-id命令靜態(tài)的設(shè)定路由器ID。如果路徑包含RR屬性,那么在路徑選擇過程中,就用originator-id來替代路由器ID。
(12)多跳路徑的始發(fā)路由器ID相同,那么選擇CLUSTER_LIST長度短的,因為每經(jīng)過一個RR,cluster-list會加上這個RR的router-id
如果多條路徑的始發(fā)router-id相同,那么BGP將優(yōu)選cluster-list長度最短的路徑。這種情況僅僅出現(xiàn)在BGP RR的環(huán)境下。
(13)BGP優(yōu)選來自于最低的鄰居地址的路徑。是BGP的neighbor配置中的那個地址,如果是環(huán)回口,則看環(huán)回口地址的高低。
BGP優(yōu)選來自于最低的鄰居地址的路徑。這是BGP的neighbor配置中所使用的IP地址,并且它對應(yīng)于與本地路由器建立TCP連接的遠端對等體。
五、路由翻動(route flaps)和路由懲罰(route dampening)路由翻動產(chǎn)生的原因有很多種比如:鏈路不穩(wěn)定、路由器接口故障、ISP工程施工、管理員錯誤配置和錯誤故障檢查等等都能造成路由翻動,由于路由翻動會造成每臺路由器重新計算路由,從而消耗了大量的網(wǎng)絡(luò)帶寬和路由器的CPU資源。
BGP鄰居的flaping
當(dāng)R1與R2兩臺路由器運行IGP協(xié)議,并且建立EBGP的鄰居關(guān)系,用環(huán)回口建立鄰居關(guān)系。這時假如R1、R2將他們的更新源通告進了BGP,然后通過BGP傳遞給對方,這時由于從EBGP學(xué)到的路由的AD為20,大于IGP的默認AD,這時會產(chǎn)生鄰居的flaping現(xiàn)象。
這時show ip bgp summary可以看到每經(jīng)過60秒BGP table version is 1, main routing table version 1會改變一次。BGP轉(zhuǎn)發(fā)表里變化了多少次。
用debug ip bgp、debug ip bgp update來查看BGP的flaping。
解決方法:
(1)EBGP建鄰居時不要將環(huán)回口引入BGP。
(2)Network + backdoor
BGP路由下一跳的flaping
R1、R2、R3因為屬于同一個AS,所以運行一個IGP,R2-R4,R3-R5之間的鏈路并沒有通告進IGP中。R1、R2、R3 IBGP對等體關(guān)系,R3在指R1時,打了neighbor 1.1.1.1 next-hop-self;R4、R2 ,R5、R3 ,R4、R5為EBGP對等體關(guān)系,它們都拿直連接口建立鄰居關(guān)系。
這時R4將它的環(huán)回口4.4.4.0/24和R2-R4的直連網(wǎng)絡(luò)24.0.0.0/24引入BGP,這時在R1上就會產(chǎn)生路由下一跳flaping的現(xiàn)象。這時show ip bgp summary可以看到每經(jīng)過60秒BGP table version is 1, main routing table version 1會改變一次。
解決方法:
(1)靜態(tài)路由(R1上靜態(tài)路由)
(2)在IBGP鄰居所處的IGP中宣告
(3)將與EBGP直連的網(wǎng)絡(luò)重分布進IGP
(4)neighbor x.x.x.x next-hop-self(R2指R1時輸入)
路由懲罰(route dampening)由RFC2439描述,它主要由以下三個目的:
提供了一種機制,以減少由于不穩(wěn)定路由引起的路由器處理負載
防止持續(xù)的路由抖動
增強了路由的穩(wěn)定性,但不犧牲表現(xiàn)良好的(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算法包含以下幾個參數(shù):
歷史記錄――――當(dāng)一條路由flaping后,改路由就會被分配一個懲罰值,并且它的懲罰狀態(tài)被設(shè)置為history。
懲罰值(penalty)――――路由每flaping一次,這個懲罰值就會增加。默認的路由flaping懲罰值為1000。如果只有路由屬性發(fā)生了變化,那么懲罰值為500。這個值是硬件編碼的。
抑制門限(suppress limit)――――如果懲罰值超過了抑制門限,改路由將被懲罰或dampen。路由狀態(tài)將由history轉(zhuǎn)變?yōu)閐amp狀態(tài)。默認值的抑制門限是2000,它可以被設(shè)置。
懲罰狀態(tài)(damp state)――――當(dāng)路由處于懲罰狀態(tài)時,路由器在最佳路徑選擇中將不考慮這條路徑,因此也不會把這條前綴通告給它的對等體。
半衰期(half life)――――在一半的生命周期的時間內(nèi),路由的懲罰值將被減少,半衰期的缺省值是15分鐘。路由的懲罰值每5秒鐘減少一次。半衰期的值可以被設(shè)置。
重用門限(reuse limit)――――路由的懲罰值不斷的遞減。當(dāng)懲罰值降到重用門限以下時,改路由將不再被抑制。缺省的重用門限為750。路由器每10秒鐘檢查一次那些不需要被抑制的前綴。重用門限時可以被配置的。當(dāng)懲罰值達到了重用門限的一半時,這條前綴的歷史記錄(history)將被清除,以便更有效率的使用內(nèi)存。
最大抑制門限/最大抑制時間――――如果路由在短時間內(nèi)表現(xiàn)出極端的不穩(wěn)定性,然后又穩(wěn)定下來,那么累計的懲罰值可能會導(dǎo)致這條路由在過長的時間里一直處于懲罰狀態(tài)。這就是設(shè)置最大抑制門限的基本目的。如果路由表現(xiàn)出連續(xù)的不穩(wěn)定性,那么懲罰值就停留在它的上限上,使得路由保持在懲罰狀態(tài)。最大抑制門限是用公式計算出來的。最大抑制時間為一條路由停留在懲罰狀態(tài)的最長時間。默認為60分鐘(半衰期的4倍)可以配置。
n 最大抑制門限=重用門限×2(最大抑制時間÷半衰期)
n 由于最大抑制門限為公式算出來的,所以有可能最大抑制門限≤抑制門限,當(dāng)這種情況發(fā)生時,dampening的設(shè)置是沒有效果的。如重用門限=750,抑制門限=3000,半衰期=30分鐘,最大抑制時間=60分鐘。按照這樣的配置,算出來的最大抑制門限為3000,
n 與抑制門限一樣,因為必須超過抑制門限,才能對路由進行dampening,所以這時dampening的設(shè)置沒有效果。
BGP的dampening僅僅影響EBGP的路由。Dampening是基于每條路徑的路由而操作的。如果一條前綴具有兩條路徑,并且其中一條被懲罰了,那么另一條前綴仍然是可用的,可以通告給BGP對等體。
命令:
bgp dampening [route-map XX] [{Half-life reuse-limit suppress-limit Maximum-time }]
如果掛了route-map,那么就在route-map里面匹配特定EBGP路由,來設(shè)置dampening值。
檢查命令:
show ip protocol
sh ip bgp dampening ?
dampened-paths 只顯示(清除)被抑制的路由。
flap-statistics 顯示(清除)所有出現(xiàn)擺動的路由以及該路由出現(xiàn)擺動的次數(shù)。
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數(shù)為n*(n-1)/2。不具有擴展性。所以產(chǎn)生兩種解決方法,路由反射器是其中一種,而另一種則是聯(lián)邦。
路由反射器是被配置為允許它把通過IBGP所獲悉的路由通告到其他IBGP對等體的路由器,路由器反射器與其他路由器有部分IBGP對等關(guān)系,這些路由器被稱為客戶??蛻糸g的對等是不需要的,因為路由反射器將在客戶間傳遞通告。 如下圖所示。
其優(yōu)點:減少AS內(nèi)BGP鄰居關(guān)系的數(shù)量,從而減少了TCP連接數(shù);在AS內(nèi)可以有多個路由反射器,即是為了冗余也是為了分成組,以進一步減少所需IBGP會話的數(shù)量。路由反射器的路由器可以與非路由反射器的路由器共存,所以配置更簡單。
RFC1966中定義了3條RR用來決定要宣告哪條路由的規(guī)則,具體使用時取決于路由是如何學(xué)習(xí)到的。
如果路由學(xué)習(xí)自非客戶IBGP對等體,則僅反射給客戶路由器。
如果路由學(xué)習(xí)自某客戶,則反射給所有非客戶和客戶路由器(發(fā)起該路由的客戶除外)。
如果路由學(xué)習(xí)自EBGP對等體,則反射給所有非客戶和客戶路由器
路由反射器的客戶并不知道自己是客戶??蛻艉头强蛻艚?jīng)過路由反射器反射的路由更新將會帶上cluster-list和originator,可用于IBGP防環(huán)。Cluster-id默認為路由反射器自己的router-id,可以通過命令bgp cluster-id 1.1.1.1來修改,cluster-id為32位的值,可以寫成點分十進制,也可以寫成十進制數(shù);originator為IBGP內(nèi)起源路由器的router-id。路由反射器是IBGP的特性,出了IBGP后,路由反射器所有的特性消失(即路由攜帶的cluster-list和originator全部消失)。
neighbor 1.1.1.1 route-reflector-client
可以通過這條命令來將IBGP的peer 1.1.1.1變?yōu)樽约旱目蛻?。建議對每個IBGP鄰居都打上。
當(dāng)路由反射器的客戶full mesh時,可以用no bgp client-to-client reflection禁止客戶到客戶的路由反射??梢詼p少路由更新。
如下圖為路由反射器的基本配置。
七、BGP聯(lián)邦
由于IBGP的水平分割問題,所以IBGP需要full mesh。由于整個IBGP full mesh的話,需要建的session數(shù)為n*(n-1)/2。不具有擴展性。所以產(chǎn)生兩種解決方法,聯(lián)邦是其中一種。
聯(lián)邦既有EBGP的特性,又有IBGP的特性。
聯(lián)盟是另一種控制大量IBGP對等體的方法,它就是一個被細分為一組子自治系統(tǒng)(稱為成員自治系統(tǒng))的AS。如下圖所示。
聯(lián)盟增加了兩種類型的AS_PATH屬性
AS_CONFED_SEQUENCE:一個去往特定目的地所經(jīng)路徑上的有序AS號列表,其用法與AS_SEQUENCE完全一樣,區(qū)別在于該列表中的AS號屬于本地聯(lián)盟中的自治系統(tǒng)。
AS_CONFED_SET:一個去往特定目的地所經(jīng)路徑上的無序AS號列表,其用法與AS_SET完全一樣,區(qū)別在于該列表中的AS號屬于本地聯(lián)盟中的自治系統(tǒng)。
由于AS_PATH發(fā)生被用于成員自治系統(tǒng)之間,因而保留了環(huán)路預(yù)防功能。將Update消息發(fā)送給聯(lián)盟之外的對等體時,將從AS_PATH屬性中剝離AS_CONFED_SEQUENCE和AS_CONFED_SET信息,而將聯(lián)盟ID附加到AS_PATH中。
Local_preference和MED可以在聯(lián)邦內(nèi)傳遞。聯(lián)盟內(nèi)的小AS號,在as-path里顯示在小括號里,在as-path計算長度時,不被考慮。下一跳在聯(lián)邦內(nèi)傳遞不會改變。
八、配置樣例1
下面的示例中涉及到BGP的基本配置,涉及到一些基本的知識點,如EBGP多跳、更新源使用環(huán)回接口、路由映射發(fā)布團體屬性等,如下圖所示。
下面是其參考配置。
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
!
使用一些常用命令來查看其狀態(tài)信息,如下所示:
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, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i192.168.1.200/30 3.3.3.3 0 100 0 400 i
*> 192.168.1.212/30 5.5.5.5 0 0 300 i
*> 192.168.1.216/30 192.168.1.225 0 0 200 i
*>i192.168.50.0 3.3.3.3 0 100 0 400 i
*>i192.168.75.0 3.3.3.3 0 100 0 400 i
*> 192.168.100.0 192.168.1.225 0 0 200 i
*> 192.168.192.0 192.168.1.225 0 0 200 i
*> 192.168.192.0/21 192.168.1.225 0 0 200 i
*> 192.168.193.0 192.168.1.225 0 0 200 i
*> 192.168.194.0 192.168.1.225 0 0 200 i
*> 192.168.195.0 192.168.1.225 0 0 200 i
*> 192.168.196.0 192.168.1.225 0 0 200 i
*> 192.168.197.0 192.168.1.225 0 0 200 i
*> 192.168.198.0 192.168.1.225 0 0 200 i
*> 192.168.199.0 192.168.1.225 0 0 200 i
*> 192.168.200.0 192.168.1.225 0 0 200 i
*> 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, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.1.200/30 192.168.1.205 0 0 400 i
*>i192.168.1.212/30 1.1.1.1 0 100 0 300 i
*>i192.168.1.216/30 1.1.1.1 0 100 0 200 i
*> 192.168.50.0 192.168.1.205 0 0 400 i
*> 192.168.75.0 192.168.1.205 0 0 400 i
*>i192.168.100.0 1.1.1.1 0 100 0 200 i
*>i192.168.192.0 1.1.1.1 0 100 0 200 i
*>i192.168.192.0/21 1.1.1.1 0 100 0 200 i
*>i192.168.193.0 1.1.1.1 0 100 0 200 i
*>i192.168.194.0 1.1.1.1 0 100 0 200 i
*>i192.168.195.0 1.1.1.1 0 100 0 200 i
*>i192.168.196.0 1.1.1.1 0 100 0 200 i
*>i192.168.197.0 1.1.1.1 0 100 0 200 i
*>i192.168.198.0 1.1.1.1 0 100 0 200 i
*>i192.168.199.0 1.1.1.1 0 100 0 200 i
*>i192.168.200.0 1.1.1.1 0 100 0 200 i
*>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, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.1.200/30 0.0.0.0 0 32768 i
*> 192.168.1.212/30 192.168.1.206 0 100 300 i
*> 192.168.1.216/30 192.168.1.206 0 100 200 i
*> 192.168.50.0 0.0.0.0 0 32768 i
*> 192.168.75.0 0.0.0.0 0 32768 i
*> 192.168.100.0 192.168.1.206 0 100 200 i
*> 192.168.192.0 192.168.1.206 0 100 200 i
*> 192.168.192.0/21 192.168.1.206 0 100 200 i
*> 192.168.193.0 192.168.1.206 0 100 200 i
*> 192.168.194.0 192.168.1.206 0 100 200 i
*> 192.168.195.0 192.168.1.206 0 100 200 i
*> 192.168.196.0 192.168.1.206 0 100 200 i
*> 192.168.197.0 192.168.1.206 0 100 200 i
*> 192.168.198.0 192.168.1.206 0 100 200 i
*> 192.168.199.0 192.168.1.206 0 100 200 i
*> 192.168.200.0 192.168.1.206 0 100 200 i
*> 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
下面的示例中涉及到聚合路由內(nèi)容,并將聚合路由使用community、router-map及prefix-list等功能實現(xiàn)過濾精細路由,拓撲圖如下所示。
具體配置如下:
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, > 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
*> 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, > 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 ?
*> 10.1.2.1 0 0 100 ?
* i10.1.6.0/24 10.1.5.2 0 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.192.0/21 10.1.5.2 0 100 0 100 i
*> 10.1.2.1 0 0 100 i
* i192.168.192.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.193.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.194.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.195.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.196.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.197.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.198.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.199.1/32 10.1.5.2 50 100 0 100 ?
*> 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, > 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 ?
*> 10.1.5.2 50 0 100 ?
* i10.1.6.0/24 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 0 0 100 ?
*> 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 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.193.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.194.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.195.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.196.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.197.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.198.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.199.1/32 10.1.2.1 50 100 0 100 ?
*> 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, > 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 10.1.2.1 0 0 100 ?
*> 10.1.6.0/24 10.1.2.1 50 0 100 ?
*> 192.168.192.1/32 10.1.2.1 50 0 100 ?
*> 192.168.193.1/32 10.1.2.1 50 0 100 ?
*> 192.168.194.1/32 10.1.2.1 50 0 100 ?
*> 192.168.195.1/32 10.1.2.1 50 0 100 ?
*> 192.168.196.1/32 10.1.2.1 50 0 100 ?
*> 192.168.197.1/32 10.1.2.1 50 0 100 ?
*> 192.168.198.1/32 10.1.2.1 50 0 100 ?
*> 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, > 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 10.1.5.2 50 0 100 ?
*> 10.1.6.0/24 10.1.5.2 0 0 100 ?
*> 192.168.192.1/32 10.1.5.2 50 0 100 ?
*> 192.168.193.1/32 10.1.5.2 50 0 100 ?
*> 192.168.194.1/32 10.1.5.2 50 0 100 ?
*> 192.168.195.1/32 10.1.5.2 50 0 100 ?
*> 192.168.196.1/32 10.1.5.2 50 0 100 ?
*> 192.168.197.1/32 10.1.5.2 50 0 100 ?
*> 192.168.198.1/32 10.1.5.2 50 0 100 ?
*> 192.168.199.1/32 10.1.5.2 50 0 100 ?
也可以在上面配置的基礎(chǔ)上實現(xiàn)如下策略:
通過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
使用命令查看路由狀態(tài)
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, > 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 ?
*> 10.1.2.1 0 0 100 ?
* i10.1.6.0/24 10.1.5.2 0 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.192.0/21 10.1.5.2 0 100 0 100 i
*> 10.1.2.1 0 0 100 i
* i192.168.192.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.193.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.194.1/32 10.1.5.2 50 100 0 100 ?
*> 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, > 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 10.1.5.2 50 0 100 ?
* i 10.1.2.1 0 100 0 100 ?
*> 10.1.6.0/24 10.1.5.2 0 0 100 ?
* i 10.1.2.1 50 100 0 100 ?
*> 192.168.192.0/21 10.1.5.2 0 0 100 i
* i 10.1.2.1 0 100 0 100 i
*> 192.168.192.1/32 10.1.5.2 50 0 100 ?
* i 10.1.2.1 50 100 0 100 ?
*> 192.168.193.1/32 10.1.5.2 50 0 100 ?
* i 10.1.2.1 50 100 0 100 ?
*> 192.168.194.1/32 10.1.5.2 50 0 100 ?
* i 10.1.2.1 50 100 0 100 ?
*> 192.168.195.1/32 10.1.5.2 50 0 100 ?
*> 192.168.196.1/32 10.1.5.2 50 0 100 ?
*> 192.168.197.1/32 10.1.5.2 50 0 100 ?
*> 192.168.198.1/32 10.1.5.2 50 0 100 ?
*> 192.168.199.1/32 10.1.5.2 50 0 100 ?