華為路由器之BGP路由技術總結及配置命令
昨天跟大家分享了《華為路由器之BGP路由技術總結及配置命令!(上)》,沒看的同學記得先點回去看一下喲~
三、BGP的配置實例
上面的BGP理論啰嗦了那么多,其實真正的配置倒很簡單(這也符合網絡的特色),來個實驗圖配置一下吧!網絡拓撲如下:
01需求如下
1、AS 200內部使用OSPF協議使AS 200內部互通,并在AS 200內部各個路由器上都運行BGP協議(R1和R2、R3建立鄰居關系,R4和R2、R3及R5建立鄰居關系,),各個AS之間運行BGP協議。
2、分別在R1和R5使用BGP協議宣告21.0.0.0/24和20.0.0.0/24,使所有路由器學到這兩條路由信息。
3、通過BGP的屬性控制選路,實現PC 1→R1→R2→R4→R5→PC 2→R5→R4→R3→R2→R1→PC 1的路由通信。順便將多個控制選路的方法測試一下。
4、在R2、R3和R4路由器上分別向BGP協議中注入本地的OSPF路由信息,使全網互通(雖然在第三個要求實現了控制路由選路,但是并不意味著PC1可以ping通任何一個路由器,比如R2)。
5、為了引出EBGP多跳的配置,嘗試一下R1和R4直接建立對等體關系。
02開始配置
1、自行配置各個PC、路由器物理接口及loopback接口的IP地址(我是懶癌晚期患者,請多多擔待),路由器IP配置參考:
sys
[R1]in g0/0/0
[R1-GigabitEthernet0/0/0]ip add 12.1.1.1 24
[R1-GigabitEthernet0/0/0]int loop 0
[R1-LoopBack0]ip add 1.1.1.1 32
2、配置AS 200內部的OSPF路由協議:
R2路由器配置如下:
[R2]ospf 1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]net 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]net 12.1.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]net 24.1.1.0 0.0.0.255
R3路由器配置如下(相應注釋請參考R2):
[R3]ospf 1
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]net 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]net 13.1.1.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]net 34.1.1.0 0.0.0.255
R4路由器配置如下(相應注釋請參考R2):
[R4]ospf 1
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]net 4.4.4.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0]net 24.1.1.0 0.0.0.255
[R4-ospf-1-area-0.0.0.0]net 34.1.1.0 0.0.0.255
3、開始配置BGP,使相應路由器為鄰居關系:
R1配置如下:
[R1]bgp 100
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 12.1.1.2 as 200
[R1-bgp]peer 13.1.1.3 as 200
[R1-bgp]network 21.0.0.0 24
由于配置BGP時,很多重復性的命令,所以,沒有特別不一樣的配置時,就不寫注釋了
R2配置如下:
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 12.1.1.1 as 100
[R2-bgp]peer 4.4.4.4 as 200
[R2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[R2-bgp]peer 4.4.4.4 next-hop-local
R3配置如下:
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 13.1.1.1 as 100
[R3-bgp]peer 4.4.4.4 as 200
[R3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[R3-bgp]peer 4.4.4.4 next-hop-local
R4配置如下:
[R4]bgp 200
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 2.2.2.2 as 200
[R4-bgp]peer 3.3.3.3 as 200
[R4-bgp]peer 2.2.2.2 next-hop-local
[R4-bgp]peer 3.3.3.3 next-hop-local
[R4-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[R4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[R4-bgp]peer 45.1.1.5 as 300
R5配置如下:
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 45.1.1.4 as 200
[R5-bgp]network 20.0.0.0 24
現在BGP的鄰居關系已經建立完成,可以通過以下命令查看:
[R1]dis bgp peer
BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 2 Peers in established state : 2
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv
12.1.1.2 4 200 5 8 0 00:02:11 Established
1
13.1.1.3 4 200 7 10 0 00:04:34 Established
1
至此,PC 1已經可以和PC 2進行通信了,當然是BGP協議做的咯,但是現在除了非直連網段及AS 200內部路由器以外,也只有PC1和PC2可以通信,如PC1并不能ping通R2路由器。
4、開始做第三個需求,通過BGP的屬性控制選路,實現PC 1→R1→R2→R4→R5→PC 2→R5→R4→R3→R2→R1→PC 1的路由通信。
先使用tracert命令查看PC1和PC2通信時的路由,看看都是經過哪個路由器。
PC1到達PC5所經過的路由器如下:
PC>tracert 20.0.0.1 #使用tracert命令進行查看
traceroute to 20.0.0.1, 8 hops max
(ICMP), press Ctrl+C to stop
1 21.0.0.254 <1 ms 16 ms 15 ms
2 12.1.1.2 16 ms 15 ms 16 ms
3 24.1.1.4 31 ms 32 ms 31 ms
4 45.1.1.5 31 ms 47 ms 31 ms
5 *20.0.0.1 31 ms 32 ms
PC5到達PC1所經過的路由器如下:
PC>tracert 21.0.0.1
traceroute to 21.0.0.1, 8 hops max
(ICMP), press Ctrl+C to stop
1 20.0.0.254 15 ms <1 ms 16 ms
2 45.1.1.4 16 ms 31 ms 16 ms
3 24.1.1.2 31 ms 31 ms 31 ms
4 12.1.1.1 47 ms 16 ms 47 ms
5 21.0.0.1 31 ms 31 ms 31 ms
來吧,開始配置選路問題(共三個方法可實現):
實現方法1:修改Local-Perf屬性來改變R3路由器的優先級
在R3路由器上配置如下:
[R3]route-policy lop permit node 10
Info: New Sequence of this List.
[R3-route-policy]apply local-preference 222
[R3-route-policy]quit
[R3]bgp 200
[R3-bgp]peer 4.4.4.4 route-policy lop export
[R3-bgp]quit
[R3]quitreset bgp all
此時再查看PC5到達PC1所經過的路由器,就發現中間不經過R2路由器,而經過了R3路由器到達的PC1,如下:
PC>tracert 21.0.0.1
traceroute to 21.0.0.1, 8 hops max
(ICMP), press Ctrl+C to stop
1 20.0.0.254 <1 ms 16 ms 16 ms
2 45.1.1.4 15 ms 16 ms 31 ms
3 34.1.1.3 31 ms 32 ms 31 ms
4 13.1.1.1 47 ms 31 ms 47 ms
5 *21.0.0.1 47 ms 31 ms
實現方法2:使用AS-PATH屬性控制選路
為了還原最初走R2的效果,需要清除上一步R3路由器配置的Local-Perf屬性,在R3路由器執行以下命令進行刪除:
[R3]bgp 200
[R3-bgp]undo peer 4.4.4.4 route-policy lop export
刪除后,稍等會可以自行查看,PC2和PC1時是否又恢復了走R2路由器而不走R3。
然后在R2路由器修改AS-PATH屬性(就是讓R2路由器在向R4路由器通告21.0.0.0網段時,告訴R4經過了好多區域,當然,這些區域是虛造出來的,這個區域數肯定比R3所經過的區域數多,所以R4就會選擇走R3而不走R2,因為要走最優路徑嘛):
R2配置如下:
[R2]route-policy as permit node 10
Info: New Sequence of this List.
[R2-route-policy]apply as-path 123 123 123 add
[R2-route-policy]quit
[R2]bgp 200
[R2-bgp]peer 4.4.4.4 route-policy as export
[R2-bgp]quit
[R2]quitreset bgp all
現在在PC2再測試一下,會發現又開始走R3路由器了:
PC>tracert 21.0.0.1
traceroute to 21.0.0.1, 8 hops max
(ICMP), press Ctrl+C to stop
1 20.0.0.254 16 ms <1 ms 15 ms
2 45.1.1.4 32 ms 15 ms 31 ms
3 34.1.1.3 16 ms 31 ms 32 ms
4 13.1.1.1 31 ms 31 ms 31 ms
5 *21.0.0.1 47 ms 31 ms
實現方法3:使用MED屬性控制選路
在一開始測試過,PC1去往PC5是經過R2路由器,而不是R3路由器,那么現在就增加R2路由器的MED屬性并通告給R1路由器,使它經過R3路由器而不是R2路由器。
[R2]route-policy med permit node 10
Info: New Sequence of this List.
[R2-route-policy]apply cost + 500
[R2-route-policy]quit
[R2]bgp 200
[R2-bgp]peer 12.1.1.1 route-policy med export
[R2-bgp]quit
[R2]quitreset bgp all
在PC1測試一下:
PC>tracert 20.0.0.1
traceroute to 20.0.0.1, 8 hops max
(ICMP), press Ctrl+C to stop
1 21.0.0.254 16 ms <1 ms 16 ms
2 13.1.1.3 15 ms 16 ms 15 ms
3 34.1.1.4 47 ms 16 ms 16 ms
4 45.1.1.5 31 ms 31 ms 31 ms
5 *20.0.0.1 32 ms 31 ms
已經改走R3路由器了,說明配置生效,通過這三個選路的實現方法不難發現,BGP控制選路主要都是通過BGP屬性值來調整完成的。BGP包含大量的屬性,而這些屬性直接影響著選路,所有BGP比IGP具有更強大的控制能力。
5、第四個需求:在R2、R3和R4路由器上分別向BGP協議中注入本地的OSPF路由信息,使全網互通。
R2路由器:
[R2]bgp 200
[R2-bgp]import-route ospf 1
其余路由器配置基本一致:
R3:
[R3]bgp 200[R3-bgp]import-route ospf 1
R4:
[R4]bgp 200[R4-bgp]import-route ospf 1
自行查看各路由器的路由條目驗證吧!文章末尾有相關查看命令。
6、第五個需求:嘗試一下R1和R4直接建立對等體關系。
R1配置如下:
[R1-bgp]bgp 100
[R1-bgp]peer 34.1.1.4 as 200
[R1-bgp]peer 34.1.1.4 ebgp-max-hop 2
R4配置如下
[R4]bgp 200
[R4-bgp]peer 13.1.1.1 as 100
[R4-bgp]peer 13.1.1.1 eb
[R4-bgp]peer 13.1.1.1 ebgp-max-hop 2
查看驗證(可能需要等一會才可建立鄰居成功,等待時間不會超過兩分鐘)
[R1-bgp]dis bgp peer
BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 3 Peers in established state : 3
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv
12.1.1.2 4 200 27 38 0 00:17:49 Established
13.1.1.3 4 200 55 70 0 00:45:35 Established
34.1.1.4 4 200 12 13 0 00:00:02 Established
相關查看命令:
[R4]dis ip routing-table
[R4]dis ospf routing
[R4]dis bgp peer
[R1-bgp]dis bgp peer
四、配置總結
在配置過程中需要注意以下幾點,以免出現錯誤:
1、在建立鄰居關系,指定對端路由器地址前,務必保證可以ping通對端路由器。
2、AS內部建立BGP鄰居關系時,最好指定對方的Loopback地址,但不要忘記更新源,參考命令:“ [R3-bgp]peer 4.4.4.4 connect-interface LoopBack 0 ” 。
3、若在AS內部有一個以上的的路由器運行著BGP協議,對于AS內部來說,這也是IBGP協議,不要忘記更改下一跳的屬性,也就是前面提到的“保證IBGP下一跳可達”,命令參考:“[R4-bgp]peer 2.2.2.2 next-hop-local”
4、前面說到,若在兩個不同AS區域的路由器上建立鄰居關系,哪怕這兩個路由器是直連的,也要改變它的TTL值,目的是讓路由器之間用來建立鄰居關系的數據包,可以多經過幾個路由器,再被丟棄。
因為雖然不同AS的路由器是直連的,只有一跳即可,但是由于指定的是對端路由器的loopback地址,loopback地址的網段肯定與路由器直連的網段不是同一個網段,路由器收到該數據包后就把它當成另一個路由器上的地址了。
所以在兩個AS間建立鄰居關系時,一定要改變它的跳數,IBGP之間建立鄰居關系就不用改變TTL值了,因為在IBGP中,數據包的TTL值默認為255。改變TTL值的參考命令:“ [R1-bgp]peer 34.1.1.4 ebgp-max-hop 2 ”
這條命令,需要跳幾下就把數值設置為幾就行,可以比實際跳數大,但是不能比實際跳數小。