無IGP的IBGP
R1,R2,R3使用物理口去建立鄰居,底層不需要IGP,只需要R1將直連的兩條路由宣告進BGP進程使R2,R3可以學到路由,發送TCP連接即可。
將IGP注入BGP
R3:
router eigrp 90
network 3.0.0.0
network 34.0.0.0
network 172.168.0.0
network 192.168.3.0
no auto-summary
router bgp 34
bgp router-id 3.3.3.3
redistribute eigrp 90 route-map filter
access-list 1 permit 34.0.0.0
!
route-map filter deny 10
match ip address 1
!
route-map filter permit 20
在R2上看現象:
Network Next Hop Metric LocPrf Weight Path
*> 3.3.3.0/24 23.0.0.3 0 0 34 ?
*> 4.4.4.0/24 23.0.0.3 2297856 0 34 ? 如果是默認的mask則不顯示。
*> 172.168.3.0/24 23.0.0.3 0 0 34 ?
*> 192.168.3.0 23.0.0.3 0 0 34 ?
由於重分佈的時候沒有設定METRIC,因此4.4.4.0這條EIGRP路由進入BGP的時候採用默認的METRIC。
使用:default-metric來調整重分佈路由的COST
改動以後,硬清鄰居
Network Next Hop Metric LocPrf Weight Path
*> 3.3.3.0/24 23.0.0.3 0 0 34 ?
*> 4.4.4.0/24 23.0.0.3 100 0 34 ?
R5的BGP中通告幾條路由,如果我需要使整個AS34學到AS5的路由,可以將BGP路由注入到AS34的IGP中。
R5環回口:
100.1.0.0
100.1.1.0
100.1.2.0
100.1.3.0
R3:
R3(config-router)#redistribute bgp 34 metric 1000 100 255 1 1500
爲什麼不將BGP重分佈進IGP中,1.重分佈會將每條BGP路由宣告給IGP,如果需要有選擇的去重分發,仍然需要路由過濾。2.目前BGP路由表過大,IGP承受不了。面臨網絡崩潰
也可以在R3上寫靜態路由,指向外面,然後將靜態重分佈進EIGRP,因爲R4上沒路由,只需要將包扔給R3或其他路由器,其他路由器上有相應路由,就可以處理轉發
R3:
ip route 100.1.0.0 255.255.252.0 Null0
router eigrp 90
redistribute static metric 1000 100 255 1 1500
R4上看:
100.0.0.0/22 is subnetted, 1 subnets
D EX 100.1.0.0 [170/2588160] via 34.0.0.3, 00:04:51, FastEthernet0/0
在R3上將R4的路由通告出去。有去有回。
這種方法,如若需要有針對性的去通告路由,也需要做過濾,常用:1.distribute-list 2.route-map
問題提出:
1、R2和R3之間用以太網鏈路相連,R2和R3之間運行一個IGP協議,並將172.16.1.0宣告進IGP。
2、三臺路由器運行BGP,組成3個AS
3、R1與R2建EBGP鄰居,R1和R3建EBGP鄰居。
4、在R2上將172.16.1.0網絡再宣告進BGP。
5、R3通過IGP學到172.16.1.0路由,同時也通過EBGP鄰居學到172.16.1.0路由。它將比較兩條路由的AD值來選最優路由,由於EBGP路由的AD值默認爲20,所以R3選擇EBGP路由爲最優路由,並放入路由表。而實際上這條EBGP路由所連接的是一條T1的鏈路,帶寬是小於R2與R3之間的以太網鏈路的。並非最好的路由。
總結:
·通過IGP學到某條路由,又從EBGP學到相同的路由。
由於EBGP AD=20,小於IGP的AD,所以會優先EBGP的路由,
但實際路徑可能從IGP走更優。
解決:
R3學到兩條相同的路由,用以下方法在BGP進程下改,實際上就是提高了從BGP學到的路由的AD值
R3(config-router)#network 172.16.1.0 mask 255.255.255.0 backdoor
通過這樣的宣告將EBGP學到的路由的AD值提高,從20提高到200
Next-hop-unchange
問題的產生:
1、三臺路由器先運行一個IGP協議,注意,172.16.1.0不用宣告進IGP
2、然後運行BGP,R1與R2建立EBGP鄰居,R2與R3建立IBGP鄰居
3、在R3上將172.16.1.0宣告進BGP
4、觀察R1與R2上的172.16.1.0路由的下一跳,看看有啥問題產生
原理:因爲EBGP的AD小於IGP導致R1選路的時候,IGP的路由被EBGP覆蓋!
你將會發現,在R1與R2之間形成了環路。
解法1:
在R2上做:
R2:
router bgp 2
neighbor 1.1.1.1 next-hop-unchanged //告訴鄰居下一跳不改變,推薦做法
這種方法有兩個限制:
1、有的IOS不支持unchaged命令
2、EBGP必須要有多跳
R2(config-router)#nei 12.0.0.1 next-hop-unchanged
%BGP: Can propagate the nexthop only to multi-hop EBGP neighbor 必須要有多跳,也就是說通常要用環回口建EBGP鄰居,如果是用直連接口建EBGP鄰居,也要打上多跳命令才行。否則上面的命令不起作用。
解法2:
在R1上修改:
R1:
route-map WOLF
set ip next-hop 13.1.1.3
router bgp 1
neighbor 12.1.1.2 route-map WOLF in //將鄰居12.1.1.2傳過來的路由的下一跳改爲13.1.1.3
聚合路由:
BGP聚合方法1.靜態路由,然後network靜態路由,2.aggregate-address。
1.R1上:
int lo 1
ip add 192.168.192.1 255.255.255.0
int lo 2
ip add 192.168.193.1 255.255.255.0
int lo 3
ip add 192.168.194.1 255.255.255.0
int lo 4
ip add 192.168.195.1 255.255.255.0
int lo 5
ip add 192.168.196.1 255.255.255.0
int lo 6
ip add 192.168.197.1 255.255.255.0
int lo 7
ip add 192.168.198.1 255.255.255.0
int lo 8
ip add 192.168.199.1 255.255.255.0
ip route 192.168.192.0 255.255.248.0 Null0
R2上看:
12.0.0.0/24 is subnetted, 1 subnets
C 12.0.0.0 is directly connected, Serial1/0
B 192.168.192.0/21 [20/0] via 12.0.0.1, 00:00:07
2.
R1上:aggregate-address 192.168.192.0 255.255.248.0 summary-only BGP彙總默認不會抑制明細,除非打上此命令
R2上: aggregate-address 192.168.192.0 255.255.248.0 as-set summary-only 還原此明細路由的AS-PATH屬性,如果不還原,此聚合路由會再通告給R1,加入R1上明細掛了一條以後,會發生環路。