BGP 事例 1
来自深圳捷联讯通科技有限公司
- 下面是一个多线 BGP 的网络结构,该网络中一台路由器连接 ISP1 和 ISP2,可以实现负载均衡,也可以做链路主备配置。
- 路由器的本地连接了两个网段 10.1.1.0/24 和 10.1.2.0/24 ,并且通过 AS 30(用私网 IP 建立 BGP 互连)与两个 ISP 互连,在网络中
- 有 10.1.2.130 为服务器,BGP 过程是首先建立连接,将两个本地网段宣告给对方,然后将 ISP1 设为主连接,ISP2 连接为备用
- 注意:这个事例将不介绍路由器与本地网络和服务器的网络连接配置,主要以 BGP 事例为主。
- 配置 BGP Peer
- 这里我们的路由器,已经配置好了与两个 ISP 的网络参数,就直接配置路由器两个 ISP 之间的 BGP peer
#set our AS number /routing bgp instance set default as=30 #add BGP peers /routing bgp peer add name=toISP1 remote-address=192.168.1.1 remote-as=10 add name=toISP2 remote-address=192.168.2.1 remote-as=20
- 如果与对端建立连接,peer 下会显示 E (established)的标记,路由器将接收到两个 ISP 发布的路由
[admin@RB1100] /routing bgp peer> print Flags: X - disabled, E - established # INSTANCE REMOTE-ADDRESS REMOTE-AS 0 E default 192.168.1.1 10 1 E default 192.168.1.2 20
- network 宣告和路由过滤
- 当 peer 连接后,就可以开始宣告我们的网络,并配置路由过滤,路由过滤是对一些不必要的路由进行限制
- 第一步宣告我们的网络
/routing bgp network add network=10.1.1.0/24 synchronize=no add network=10.1.2.0/24 synchronize=no
- 第二步指定哪些路由需要过滤
/routing bgp peer set isp1 in-filter=isp1-in out-filter=isp1-out set isp2 in-filter=isp2-in out-filter=isp2-out
- in-filter(incoming-filter)负责接收到的路由过滤,out-filter(outgoing-filter)负责发出路由过滤,都需要通过 prefixes匹配
- 路径选择
- 在 filter 的链表中可以指定哪些路由被接受,那么路由被拒绝。BGP 可以通过 as-path 路径长度连接选择优路径(路径越短的 AS-Path
- 越优先),这里希望 ISP2 为备份链路,因此将使用到 BGP AS prepend 属性,增加 AS-path长度。由于我们的网络上 EBGP,对于 MED 而
- 言但不同的 AS 不做比较,修改 BGP AS prepend 也可以称为路径欺骗,这样 BGP 的路径欺骗是 MED 的替代解决方法。RouterOS 通过
- set-bgp-prepend,也可以选择set-bgp-prepend-path 属性,BGP 选路属性还可以使用 bgp-local-pref 属性,bgp-local-pref 默认为
- 100,数值越高优先级越大。
- 向 ISP1 发布路由进行过滤,进入 routing filter 下,发布本地的 10.1.1.0/24 和 10.1.2.0/24 网络,并拒绝发布其他路由
/routing filter #accept our networks add chain=isp1-out prefix=10.1.1.0/24 action=accept add chain=isp1-out prefix=10.1.2.0/24 action=accept #discard the rest add chain=isp1-out action=discard
- 同样想 ISP2 发布路由进行过滤,但这里需要设置 set-bgp-prepend 属性,增加 as-path 长度:
/routing filter #accept our networks and prepend AS path three times add chain=isp2-out prefix=10.1.1.0/24 action=accept set-bgp-prepend=3 add chain=isp2-out prefix=10.1.2.0/24 action=accept set-bgp-prepend=3 #discard the rest add chain=isp2-out action=discard
- 由于我们到两个 ISP 是建立默认路由,所以不需要接收,两个 ISP 向我们发布的任何路由,直接配置为拒绝接收,设置两条默认
- 的静态路由,但到 ISP2 的默认路由 distance 设置为 30 作为备份链路,并开启网关 ping 检测
/routing filter add chain=isp1-in action=discard add chain=isp2-in action=discard /ip route add gateway=192.168.1.1 check-gateway=ping add gateway=192.168.2.1 distance=30 check-gateway=ping
- 负载均衡设置
- 根据之前的 BGP 网络结构,需要实现到两个 ISP 的路由负载均衡,实现负载均衡有多种方式,下面我们通过设置路由器本地两个段分别
- 走不同的 ISP 路由实现。
- 将 10.10.1.0/24 走 ISP1,10.10.2.0/24 走 ISP2,当然两个 ISP 直接同时互为备份路由,具体实现配置如下: 向 ISP1 发布路由过滤规则:
/routing filter #accept our networks and prepend second network add chain=isp1-out prefix=10.1.1.0/24 action=accept add chain=isp1-out prefix=10.1.2.0/24 action=accept set-bgp-prepend=3 #discard the rest add chain=isp1-out action=discard
- 向 ISP2 发布路由过滤规则:
/routing filter #accept our networks and prepend first network add chain=isp2-out prefix=10.1.1.0/24 action=accept set-bgp-prepend=3 add chain=isp2-out prefix=10.1.2.0/24 action=accept #discard the rest add chain=isp2-out action=discard
- 以上配置是 BGP 负载均衡的一种方法。