1. 介紹下BGP和相關配置命令
BGP,邊界網關協議,是自主網路系統中網關之間交換器路由信息的協議。邊界網關協議常常應用於互聯網的網關之間。路由表包含已知路由器的列表、路由器能夠達到的地址以及到達每個路由器的路徑的跳數。BGP(Border Gateway Protocol,邊界網關協議)是用來連接Internet上的獨立系統的路由選擇協議。它是Internet工程任務組制定的一個加強的、完善的、可伸縮的協議。BGP4支持CIDR定址方案,該方案增加了Internet上的可用IP地址數量。
BGP是為取代最初的外部網關協議EGP設計的。它也被認為是一個路徑矢量協議。BGP(Border Gateway Protocol)是一種在自治系統之間動態交換路由信息的路由協議。一個自治系統的經典定義是在一個管理機構控制之下的一組路由器,它使用IGP和普通度量值向其他自治系統轉發報文。
import-route isis level-2 into level-1 (這條命令一定要打的,不然後面做這BGP時是學不到EBGP通告的路由) //將level-2的路由引入到level-1中。該命令配置在與外部區域相連的Level-1-2路由器上。預設情況下,Level-2的路由信息不發布到Level-1區域中。
undo import-route isis level-1 into level-2 //不將Level-1的路由信息發布到Level-2中。該命令配置在與外部區域相連的Level-1-2路由器上。預設情況下,Level-1的路由信息都將發布到Level-2區域中。
display bgp peer //查看bgp的對等信息 Established為成功建立
diplay bgp peer ipv4-address verbose //查看bgp的某個鄰居(對等體)的詳細信息。
diplay bgp routing-table //查看bgp的路由表信息
2. 【網路工程師路由篇】BGP 入門實驗
R1、R2、R3屬於AS 123;R4屬於AS 400;
R1、R2、R3運行OSPF,運行OSPF的目的是為了打通AS 123內的路由;
R3-R4之間建立EBGP鄰居關系,R2不運行BGP;
R1-R3之間建立IBGP鄰居關系;
在R4上,將路由4.4.4.0/24發布到BGP。
R1的配置如下(省略介面IP地址的配置):
R2的配置比較簡單,就是運行OSPF而已,這部分配置不再贅備升述。
R3的配置如下:
R4的配置如下:
完成上述配置後,在R3上查看BGP路由表:
我們看到R3已經學習到了R4通告過來的BGP路由4.4.4.0/24。並且該條BGP路由的NextHop屬性值為10.1.34.4,這個下一跳地址是路由可達的。該條路由在R3的BGP路由表裡有「* >」 標記,其中「*」表示這條路由是可用的(valid),只有當BGP路由的NextHop為路由可達時,該BGP路由才會被視為可用;而「>」則表仿顫老示這條路由是被優選的路由,或者說是到達該目的網路的最優路由。
BGP路由的NextHop屬性是一個非常重要的屬性,它是所有BGP路由都會攜帶的路徑屬性,它指示了到達目的網路的下一跳地址。
在R3上查看路由表:
R3已經將到達4.4.4.0/24的BGP路由載入到了全局路由表中。
對於R3而言,到達4.4.4.0/24的路由已經被優選,接下來,它會將該路由通告給IBGP鄰居R1。
在R1上查看BGP路由表:
我們看到,R1的BGP路由表中已經出現了4.4.4.0/24路由,而這條路由的NextHop屬性值是10.1.34.4,但是R1在本地路由表中沒有到達10.1.34.4的路由,因此10.1.34.4不可達,如此一來,該BGP路由也就不可用了(在BGP路由表中沒有*號標記),既然不可用,自然就不能裝載進路由表中使用。
那麼怎麼解決這個問題呢?一個最簡單的方法是,為R1配置一條靜態路由:ip route-static 10.1.34.0 24 10.1.23.3,這樣一來R1的路由表裡就有了到達10.1.34.4的路由,那麼BGP路由4.4.4.0/24的下一跳地址就可達了,對應的BGP路由自然也就可用了。但是這種方法太「笨拙」。另一種方法是,在R3的OSPF進程中將10.1.34.0/24網段也注入進去,使得R1能夠通過OSPF學習到10.1.34.0/24路由,這種方法也是可行的。但是由於R3-R4之間的互聯鏈路被視為AS外部鏈路,因此10.1.34.0/24作為外部網段往往不會被宣告進AS內的IGP。那麼還有什麼其他辦法能解決這個問題么?
BGP路由器在向EBGP對等體發布某條路由時,會把該路由信息的下一跳屬性設置為本地與對端建立BGP鄰居關系的介面地址。如下圖所示,R4將4.4.4.0/24通告給R3時,下一跳為10.1.34.4,也就是R4的GE0/0/0介面地址。
BGP路由器將本地始發路由發布給IBGP對等體時,會把該路由信息的下一跳屬性設置為本地與對端建立BGP鄰居關系的介面地址。
BGP路由器在向IBGP對等體發布從EBGP對等體學來的路由時,並不改變該路由信息的下一跳屬性。
例如下圖所示,R3收到R4通告的EBGP路由,該路由的下一跳屬性值為10.1.34.4,它將該條路由通告給IBGP對等體R1的時候,路由的下一跳屬性值不會發生改變,仍然為10.1.34.4。
這就造成了我們上面所述的問題,由於R1沒有到達10.1.34.0/24的路由,因此下一跳地址10.1.34.4不可達,從而導致BGP路由4.4.4.0/24不可用。
還有一個方法可以解決這個問題:在R3上使用next-hop-local命令,可修改BGP路由的下一跳屬性值為自身。在下圖中,我們在R3上洞盯增加了peer 10.1.12.1 next-hop-local命令,那麼這樣一來,當R3再將EBGP路由通告給R1的時候,會將這些路由的下一跳屬性值修改為自己的更新源地址(10.1.23.3),而R1已經通過OSPF獲知到達10.1.23.0/24的路由,因此10.1.23.3是可達的。
完成配置後,我們在R1上查看BGP路由表:
可以手工指定用於建立BGP連接的源介面及源IP地址。命令如下:[Router-bgp] peer x.x.x.x connect-interface intf [ ipv4-src-address ]預設情況下,BGP使用報文的出介面作為BGP報文的源介面。當用戶完成peer命令的配置後,設備會在自己的路由表中查詢到達該對等體地址的路由,並從該路由得到出介面信息。如果peer命令中沒有指定介面(connect-interface)和IP地址(ipv4-src-address),那麼設備將會使用前述出介面和該介面的IP地址作為BGP報文的源介面和源地址。
為了使物理介面在出現問題時,設備仍能發送BGP報文,可將發送BGP報文的源介面配置成Loopback介面。在使用Loopback介面作為BGP報文的源介面時,必須確認BGP對等體的Loopback介面的地址是可達的。由於一個AS內往往會運行IGP協議,因此AS內的設備能夠通過該IGP協議獲知到達其他設備的Loopback介面的路由。在AS內部,IBGP鄰居關系通常基於Loopback介面建立。
EBGP鄰居之間通常使用直連介面的IP地址作為BGP報文源地址,如若使用環回介面建立EBGP鄰居關系,要配置peer ebgp-max-hop命令,允許EBGP通過非直連方式建立鄰居關系。
同樣是上面的環境,我們稍作變更,在R1及R3上創建loopback0,地址分別為1.1.1.1/32及3.3.3.3/32,然後設備各自將loopback0宣告進OSPF,使得彼此都能通過OSPF學習到對方的Loopback0路由。
我們修改BGP的配置,使得R1-R3之間的IBGP鄰居關系基於Loopback0來建立。
R1的關鍵配置如下:
R3的關鍵性配置如下:
注意,務必要將R1及R3的Loopback0介面激活OSPF。
經過前面的講解,我們的環境現在是這樣的:R1-R3之間建立了基於Loopback介面的IBGP鄰居關系;R3對R1配置了next-hop-local;R3與R4之間仍然維持基於直連介面的EBGP鄰居關系;R4在BGP中發布路由4.4.4.0/24。
現在R1是能夠學習到BGP路由4.4.4.0/24的,並且該路由也是被優選的,此時這條路由會被R1裝載進全局路由表使用,但是,這是不是意味著R1就能夠ping通4.4.4.4了呢?經過測試你可能會發現:無法ping通?因為數據包在R2這里就被丟棄了,R2並沒有運行BGP,因此它無法學習到BGP路由4.4.4.0/24。
怎麼才能讓R1 ping通4.4.4.4呢?方法之一是在R3上將BGP路由重發布進OSPF,使得R2能夠通過OSPF學習到BGP路由4.4.4.0/24,但是這種方法存在一定的風險,因為我們知道BGP承載的前綴數量往往是非常龐大的;另一種方法是,讓R2也運行BGP,並與R1、R3建立IBGP鄰居關系,這樣一來問題就解決了。那麼BGP鄰居關系就變成了如下圖所示。具體配置此處不再贅述。
通常情況下,EBGP鄰居之間必須具有直連的物理鏈路,EBGP鄰居關系也將基於直連介面來建立,如果不滿足這一要求,則必須使用peer ebgp-max-hop命令允許它們之間經過多跳建立TCP連接。
peer ebgp-max-hop命令用來配置允許BGP同非直連網路上的對等體建立EBGP連接,並同時可以指定允許的最大跳數。命令格式如下:[Router-bgp] peer ipv4-address ebgp-max-hop [ hop-count ]
如上圖所示,R1及R2要基於Loopback口建立EBGP鄰居關系。這種情況也屬於EBGP鄰居之間不基於直連介面建立鄰居關系的場景,必須配置peer ebgp-max-hop命令。圖中R1與R2之間的兩條物理鏈路是為了冗餘性考慮。R1的關鍵配置如下:
R2的關鍵配置如下:
BGP鄰居表
BGP表
查看BGP條目的詳細信息:
路由表,display ip routing-table
3. BGP,怎麼配詳細的命令!
neighbor 192.168.2.1 next-hop-self
!-- This command assigns a next-hop value to 192.168.2.3 !-- for updates sent to 192.168.2.1 (the iBGP peer).
!
ip classless
ip route 192.168.0.0 255.255.0.0 Null0
MSFC Configuration on CAT2
CAT2 (enable)
CAT2 (enable) session 15
Trying Router-15...
Connected to Router-15.
Escape character is '^]'.
MSFC-CAT2>enable
MSFC-CAT2#show running-config
Building configuration...
Current configuration : 890 bytes
!
version 12.1
!
hostname MSFC-CAT2
!
boot system flash bootflash:c6msfc-jsv-mz.121-8b.E7
!
ip subnet-zero
!
!
rendancy
!-- This command enables rendancy.
high-availability
!-- This command enables high availability.
single-router-mode
!-- This command enables SRM.
!
interface Vlan10
ip address 192.168.1.3 255.255.255.0
!-- Interface Vlan10 connected to interface Vlan10 on CAT1 via the trunk.
!
interface Vlan20
ip address 192.168.2.1 255.255.255.0
!-- Interface Vlan20 connected to AS20.
!
router bgp 4
no synchronization
bgp log-neighbor-changes
network 192.168.0.0 mask 255.255.0.0
neighbor 192.168.2.2 remote-as 20
!-- This command establishes eBGP peering with AS20.
neighbor 192.168.2.3 remote-as 4
!-- This command establishes iBGP peering with interface Vlan20 on CAT1.
neighbor 192.168.2.3 next-hop-self
!-- This command assigns a next-hop value to 192.168.2.1 !-- for updates sent to 192.168.2.3 (the iBGP peer).
!
ip classless
ip route 192.168.0.0 255.255.0.0 Null0
Troubleshoot
Now that you've verified the high availability SRM configuration, you need to verify the BGP MSFC on CAT1 and CAT2. Use the show ip bgp summary command to verify the neighbor establishment. The output below confirms successful eBGP and iBGP peering with AS10 and the CAT2 MSFC respectively.
MSFC-CAT1#show ip bgp summary
BGP router identifier 192.168.2.3, local AS number 4
BGP table version is 4, main routing table version 4
3 network entries and 4 paths using 435 bytes of memory
4 BGP path attribute entries using 240 bytes of memory
2 BGP AS-PATH entries using 48 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 activity 3/14 prefixes, 4/0 paths, scan interval 15 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.1.2 4 10 90 92 4 0 0 01:26:02 1
192.168.2.1 4 4 91 91 4 0 0 01:25:38 2
Verify the BGP state on the active MSFC in CAT2. The output below confirms successful eBGP and iBGP peering with AS20 and CAT1 respectively
MSFC-CAT2#show ip bgp summary
BGP router identifier 192.168.2.1, local AS number 4
BGP table version is 4, main routing table version 4
3 network entries and 4 paths using 435 bytes of memory
4 BGP path attribute entries using 240 bytes of memory
2 BGP AS-PATH entries using 48 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
4. 華為28-11 OSPF和BGP協議配置
首先說明一下,你的接入地址:172.30.21.19/30,是不對的,這是一個廣播地址,應該是172.30.21.17/30。
1、配置ospf
(1)ospf 啟動ospf進程
(2)area 0 進入區域0,0是骨幹區域,也可以是1、2等等非骨幹區域
(3)network 172.30.21.18 0.0.0.3 發布路由,同時也在此網段介面接收路由
network 10.10.0.0 0.0.255.255 同上
2、配置bgp,用於和外網互通
router bgp 100 啟動bgp,假設本端AS號碼100
peer 172.30.21.18 remote-as 200 建立鄰居,假設對端as是200
import ospf 在bgp中引入ospf路由
3、做完上面就ok了,同時也要在對端路由器(172.30.21.18)上做bgp配置,那麼就ok了。
檢查命令:
dis ip routing-table
dis ip routing-table protocol bgp
dis ip routing-table protocol ospf