BGP双平面架构实现目标:
西安和东莞两地之间的业务流量和办公流量走不同的运营商。业务流量走中国移动,办公流量走中国电信。两大运营商就是两个平面,当A(B)平面出现故障时,数据就可以走B(A)平面,实现双平面之间互为备份。平面内当一条链路出现故障时,还有备份链路可以使用。这样保证了西安和东莞两地之间数据传输可靠。
BGP双平面架构区域规划:
西安为AS1,北京A、成都A、深圳A、上海A的中国移动为A平面属于AS100,北京B、成都B、深圳B、上海B的中国电信为B平面属于AS200,东莞为AS2。
实现技术:IGP协议、BGP协议、MPLS协议。
IGP协议用于AS内路由传递,MPLS协议用于传递BGP数据。
BGP协议传递不同AS之间的路由信息。并使用BGP协议的团体属性为业务流量和办公流量打上不同的标签,抓取路由做策略。
A平面上基础配置:BJ-A为例
router bgp 100
bgp router-id 2.2.2.2
bgp log-neighbor-changes
neighbor 100 peer-group
neighbor 100 remote-as 100
neighbor 100 update-source Loopback0
neighbor 100 next-hop-self
neighbor 100 send-community both
neighbor 3.3.3.3 peer-group 100
neighbor 4.4.4.4 peer-group 100
neighbor 5.5.5.5 peer-group 100
neighbor 10.12.1.1 remote-as 1
neighbor 10.12.1.1 send-community both
neighbor 10.26.1.2 remote-as 200
neighbor 10.26.1.2 send-community both
利用前缀列表抓取路由
XA#show ip prefix-list
ip prefix-list bg: 1 entries
seq 5 permit 10.100.2.0/24
ip prefix-list yw: 1 entries
seq 5 permit 10.100.1.0/24
使用 route-map 给匹配路由打上团体标记
route-map COMM permit 10
match ip address prefix-list yw
set community 1:1
route-map COMM permit 20
match ip address prefix-list bg
set community 2:1
BGP的团体属性是可选传递属性,但默认是不传递的需要手动开启:send-community both
将匹配路由的标记发送出去。
XA#show run | s bgp
router bgp 1
bgp router-id 1.1.1.1
bgp log-neighbor-changes
network 10.100.1.0 mask 255.255.255.0
network 10.100.2.0 mask 255.255.255.0
neighbor 10.12.1.2 remote-as 100
neighbor 10.12.1.2 send-community both
neighbor 10.12.1.2 route-map COMM out
neighbor 20.18.1.2 remote-as 200
neighbor 20.18.1.2 send-community both
neighbor 20.18.1.2 route-map COMM out
查看结果:
路由10.100.1.1 的团体值为65537,和我配置的1:1不同,因为设备默认是十进制格式显示团体值,要显示为AA:NN(AA为1-65535的16比特的十进制AS号,NN为1-65400的16比特的十进制数。)需要手动修改显示格式:
#ip bgp-community new-format
就可以显示为Community : 1:1
源头策略:利用BGP的weight属性使10.100.1.0/24和10.200.1.0/24 走A平面,10.100.2.0/24和10.200.2.0/24 走B平面。
使用 community-list 扩展列表抓取团体标记为“1:”和“2:”的路由。
XA#show ip community-list
Named Community expanded list A
permit ^1:*
Named Community expanded list B
permit ^2:*
使用route-map 将匹配路由的weight值设为100,放过不匹配路由。
route-map A, permit, sequence 10
Match clauses:
community (community-list filter): A
Set clauses:
weight 100
Policy routing matches: 0 packets, 0 bytes
route-map A, permit, sequence 20
Match clauses:
Set clauses:
Policy routing matches: 0 packets, 0 bytes
route-map B, permit, sequence 10
Match clauses:
community (community-list filter): B
Set clauses:
weight 100
Policy routing matches: 0 packets, 0 bytes
route-map B, permit, sequence 20
Match clauses:
Set clauses:
Policy routing matches: 0 packets, 0 bytes
在BGP 中实行route-map (weight 只能在本路由器上作用,在in 方向才会生效)
neighbor 10.12.1.2 route-map A in
neighbor 20.18.1.2 route-map B in
这是我在西安做的,东莞上也做相同的配置。
传输策略:双平面之间实现互为备份,平面内实现线路冗余。
这里主要是实现业务流量在不能到达A平面时,能通过B平面再回到A平面传输。办公流量在不能到达B平面时,能通过A平面再回到B平面上传输。
使B平面数据回到B平面传输:
抓取B平面的路由
BJ-A#show ip community-list
Named Community expanded list B
使用route-map做策略
BJ-A#show route-map
route-map B, permit, sequence 10
Match clauses:
community (community-list filter): B
Set clauses:
weight 100
Policy routing matches: 0 packets, 0 bytes
route-map B, permit, sequence 20
Match clauses:
Set clauses:
Policy routing matches: 0 packets, 0 bytes
BGP中实施策略:
neighbor 10.26.1.2 route-map B in
使A平面流量回到A平面:
抓取A平面路由
BJ-B#show ip community-list
Named Community expanded list A
permit ^1:*
使用route-map做策略
BJ-B#show route-map
route-map A, permit, sequence 10
Match clauses:
community (community-list filter): A
Set clauses:
weight 100
Policy routing matches: 0 packets, 0 bytes
route-map A, permit, sequence 20
Match clauses:
Set clauses:
Policy routing matches: 0 packets, 0 bytes
在BGP 中实施策略
neighbor 10.26.1.1 route-map A in
检测
1.北京A出现故障:
2.成都A出现故障
3.北京A和上海A都出现故障
总结:实验实现了设计要求.做这类配置较多的实验时,需要提前设计好,每完成一步都要检查。防止中间漏掉一些小的细节或者错误配置导致实验失败。。。