三、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配置参考:
<R1>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 peerBGP 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 PrefRcv 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 stop1 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 stop1 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]quit<R3>reset 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]quit<R2>reset 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]quit<R2>reset 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 PrefRcv 12.1.1.2 4 200 27 38 0 00:17:49 Established 8 13.1.1.3 4 200 55 70 0 00:45:35 Established 8 34.1.1.4 4 200 12 13 0 00:00:02 Established 8
相关查看命令:
[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 ”这条命令,需要跳几下就把数值设置为几就行,可以比实际跳数大,但是不能比实际跳数小。