本示例的基本拓撲結構如圖所示,需要在所有Router間運作BGP,其中RouterA、RouterB之間建立EBGP連接配接,RouterB、RouterC和RouterD之間建立IBGP全連接配接。現要通過BGP實作各路由器所連網段的三層互通。
本示例要求通過BGP實作網絡的三層互通,隻需配置BGP基本功能即可。在配置BGP基本功能過程中,因為BGP本身不能發現和産生路由,是以BGP路由表中的路由全部都是從IGB路由引入的。根據本節前面介紹可得出本示例BGP基本功能的配置思路如下。
① 配置各路由器的接口IP位址。
② 在各路由器上啟動BGP程序,配置EBGP和IBGP對等體。
③ 引入必要的路由即可。
1) 配置各路由器的接口IP位址
【Router-A上的配置】
interface GigabitEthernet1/0/0
ip address 8.1.1.1 255.0.0.0
#
interface GigabitEthernet2/0/0
ip address 200.1.1.2 255.255.255.0
#
【Router-B上的配置】
interface GigabitEthernet1/0/0
ip address 9.1.1.1 255.255.255.0
#
interface GigabitEthernet2/0/0
ip address 200.1.1.1 255.255.255.0
#
interface GigabitEthernet3/0/0
ip address 9.1.3.1 255.255.255.0
#
【Router-C上的配置】
interface GigabitEthernet2/0/0
ip address 9.1.2.1 255.255.255.0
#
interface GigabitEthernet3/0/0
ip address 9.1.3.2 255.255.255.0
#
【Router-D上的配置】
interface GigabitEthernet1/0/0
ip address 9.1.1.2 255.255.255.0
#
interface GigabitEthernet2/0/0
ip address 9.1.2.2 255.255.255.0
#
2) 在各路由器上使能BGP程序,配置對等體連接配接
l 配置Router-B、Router-C和Router-D之間的IBGP連接配接。注意,每個對等體連接配接均需要在雙方裝置上分别配置,且如果是IBGP對等體,則雙方都須處于同一個AS中。
因為本示例沒有配置Loopback接口,也沒有在系統視圖下全局配置Router ID,是以需要在BGP視圖下手動配置各路由器的Router ID。為了便于區分,Router-B、Router-C和Router-D的Router ID分别設為2.2.2.2、3.3.3.3和4.4.4.4。此處,IBGP的源接口和源IP位址均預設采用裝置的實體接口和實體接口IP位址。
【Router-B上的配置】
bgp 65009
router-id 2.2.2.2
peer 9.1.1.2 as-number 65009
peer 9.1.3.2 as-number 65009
#
【Router-C上的配置】
bgp 65009
router-id 3.3.3.3
peer 9.1.2.2 as-number 65009
peer 9.1.3.1 as-number 65009
#
【Router-D上的配置】
bgp 65009
router-id 4.4.4.4
peer 9.1.1.1 as-number 65009
peer 9.1.2.1 as-number 65009
#
l 配置Router-A與Router-B之間的EBGP連接配接,也需要在雙方分别配置,此處采用預設的實體接口和實體接口IP位址作為EBGP連接配接源接口和源IP位址。Router-A的路由器ID設為1.1.1.1。
【Router-A上的配置】
bgp 65008
router-id 1.1.1.1
peer 200.1.1.1 as-number 65009
#
【Router-B上的配置】
bgp 65009
router-id 2.2.2.2
peer 9.1.1.2 as-number 65009
peer 9.1.3.2 as-number 65009
peer 200.1.1.2 as-number 65008
#
配置好BGP對等體後,可通過display bgp peer指令檢視各裝置上的BGP對等體的連接配接狀态。下面是同時有IBGP連接配接和EBGP連接配接的Router-B上的輸出結構,從中可以看出,Router-B到其他路由器的BGP連接配接均已建立(參見輸出資訊中的粗體子部分)。
<Router-B>display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 65009
Total number of peers : 3 Peers in established state : 3
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
9.1.1.2 4 65009 11 12 0 00:09:31 Established 0
9.1.3.2 4 65009 12 13 0 00:10:49 Established 0
200.1.1.2 4 65008 4 4 0 00:02:18 Established 0
<Router-B>
3) 在各路由器上引入所需的IGP路由
配置Router-A釋出與EBGP對等體之間的非直連路由8.0.0.0/8。注意,這裡要在對應的位址族視圖下進行配置,因為如果是在BGP視圖下釋出,将在多種位址族下生效。
bgp 65008
router-id 1.1.1.1
peer 200.1.1.1 as-number 65009
#
ipv4-family unicast
undo synchronization
network 8.0.0.0
peer 200.1.1.1 enable
#
此時可通過display bgp routing-table指令檢視各路由器的BGP路由表資訊,可發現他們均已有Router-A釋出的這條8.0.0.0/8路由,其中前面帶*的路由表示有效路由。從中可以看出,Router-A和Router-B上的該路由都是有效的,而Router-C雖然學習到了AS65008中的8.0.0.0/8路由,但因為下一跳200.1.1.2不可達(因為目前還沒有BGP路由到達),是以也不是有效路由。
<Router-A>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
<Router-A>
<Router-B>display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 200.1.1.2 0 0 65008i
<Router-B>
<Router-C>display bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
i 8.0.0.0 200.1.1.2 0 100 0 65008i
<Router-C>
【經驗之談】從以上路由表資訊可以看到,Router-A上的8.0.0.0/8路由的下一跳為0.0.0.0,因為這條路由是本地裝置通告的,沒有經過下一跳,而 Router-B和Router-C上的8.0.0.0/8路由的下一跳均為200.1.1.2,那是因為在EBGP對等體之間的EBGP路由釋出時,下一跳将為發送路由器的出接口的IP位址,在IBGP對等體之間的EBGP路由釋出時,下一跳不變。而IBGP對等體之間進行IBGP路由八部時隻能進行單跳通告,收到的IBGP路由的裝置不再通告給它自己的對等體。
在路由表中,最後一列的“Path/Ogn”用來表示路由的AS路徑和路由源類型,因為8.0.0.0/8路由是通過network指令通告的,是以顯示未i,代表IGP類型。
為了解決Router-C和Router-D能夠到達8.0.0.0/8路由的下一跳200.1.1.2,隻須在它們共同連接配接的Router-B上使BGP引入直連路由即可。
[Router-B]bgp 65009
[Router-B-bgp]ipv4-family unicast
[Router-B-bgp-af-ipv4]import-route direct
此時可看到,在Router-A上的BGP路由表中除了原來自己通告的8.0.0.0/8路由表項外,還有Router-B引入的3條直連路由,具體如下所示(參見輸出資訊中的粗體子部分),其中帶>的表示到達對應網段的優選路由。
<Router-A>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,()
h - history, i - internal, s - suppressed, S – Stale
抑制 陳舊
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
*> 9.1.1.0/24 200.1.1.1 0 0 65009?
*> 9.1.3.0/24 200.1.1.1 0 0 65009?
200.1.1.0 200.1.1.1 0 0 65009?
<Router-A>
在Router-C的BGP路由表中也可見到Router-B所引入的3條直連路由,另外,原來的8.0.0.0/8路由變為有效,可到達(前面有一個*号),具體如下所示(參見輸出資訊中的粗體部分)。可以通過ping指令驗證Router-C可以通路8.1.1.1位址了。
<Router-C>display bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 8.0.0.0 200.1.1.2 0 100 0 65008i
*>i 9.1.1.0/24 9.1.3.1 0 100 0 ?
i 9.1.3.0/24 9.1.3.1 0 100 0 ?
*>i 200.1.1.0 9.1.3.1 0 100 0 ?
<Router-C>