BGP 是一种动态路由协议,可与其他网关或三层交换机建立邻居关系,并在单个 AS(内部 BGP)内或外部 AS(外部 BGP)之间分发路由信息。在多宿主配置中与 ISP 建立邻居关系,可为往返互联网的流量提供冗余和负载均衡。

要求

需要以下交换机或网关之一:

如何使用 BGP?

BGP 是一种功能广泛的路由协议,可用于许多不同场景。例如:

  • 与同一 AS 中的其他网关或三层交换机建立邻居关系,并在内部交换路由。
  • 通过 VPN 交换路由,并将路由重新分发到 BGP 中。
  • 在单宿主配置中与 ISP 建立邻居关系并交换路由。
  • 在多宿主配置中与多个 ISP 建立邻居关系、交换路由,并使用流量工程影响入站和出站流量的路由方式。

BGP 设置

BGP 通过上传 FRR BGP 格式的配置文本文件启用。该文件需要手动创建,不同配置中的配置行会有所不同。

注意: 退出 router bgp 部分后,任何其他配置行(例如前缀列表或路由映射)都必须放置在文件末尾。

示例 - BGP 与 ISP 建立邻居关系

以下示例配置 BGP 邻居与 ISP 建立连接,以使用 BGP 向上游通告本地公共网络。这样可以使您的前缀在全球范围内可路由,并确保入站流量通过 ISP 到达您的网络。

  1. 初始化 BGP 并分配本地自治系统(AS)编号:router bgp
  2. 设置路由器 ID,作为 BGP 实例的唯一标识符:bgp router-id
  3. 将本地网络(203.0.113.0/24)通告给 ISP,使其可在全球范围内路由:network mask
  4. 使用 ISP 的 AS 编号建立 BGP 会话:neighbor remote-as
  5. 可选:配置密码身份验证以保护 BGP 会话。该密码必须与 ISP 使用的密码一致:neighbor password
  6. 可选:为对等体添加本地描述,以便于识别:neighbor description
  7. 可选:引用路由映射以接受一个前缀子网:neighbor route-map in
  8. 可选:引用路由映射以通告一个前缀子网:neighbor route-map out
  9. 启用软重新配置以存储收到的路由副本。这样可以在不重置会话的情况下应用路由策略更改:neighbor soft-reconfiguration inbound
  10. 如果在步骤 7 和 8 中引用了路由映射,请退出 BGP 部分,并在文件末尾添加其他配置。
    1. 添加路由映射:route-map: <route-map_name> permit
    2. 在路由映射中匹配前缀列表:match ip address prefix-list
    3. 添加路由映射中匹配的前缀列表:match ip address prefix-list
router bgp 65000
bgp router-id 198.51.100.1
!
network 203.0.113.0 mask 255.255.255.0
!
neighbor 198.51.100.2 remote-as 65001
neighbor 198.51.100.2 password securesecret1
neighbor 198.51.100.2 description ISP
!
address-family ipv4
neighbor 198.51.100.2 activate
neighbor 198.51.100.2 soft-reconfiguration inbound
neighbor 198.51.100.2 route-map ACCEPT_ROUTES in
neighbor 198.51.100.2 route-map ADVERTISED_ROUTES out
exit-address-family
!
exit
!
route-map ACCEPT_ROUTES permit 10
match ip address prefix-list ACCEPT_ALL
exit
!
route-map ADVERTISED_ROUTES permit 10
match ip address prefix-list ADVERTISE_SPECIFIC
exit
!
ip prefix-list ACCEPT_ALL seq 5 permit any
!
ip prefix-list ADVERTISE_SPECIFIC seq 5 permit 203.0.113.0/24

注意: 在此示例中,BGP 与 ISP 的连接还需要通过防火墙开放 TCP 端口 179。具体方法是创建一个允许 BGP 服务的“外部到网关”区域防火墙策略。

示例 - BGP 通过 IPsec 站点到站点 VPN 与 AWS 建立邻居关系

以下示例通过一对 IPsec VPN 配置 BGP 邻居与 AWS 建立连接,以允许本地网络与 AWS 之间动态交换路由。这适用于混合云环境,在此环境中,您需要将自己的前缀通告给 AWS,而无需管理静态路由。

  1. 初始化 BGP 并分配本地自治系统(AS)编号:router bgp
  2. 设置路由器 ID,作为 BGP 实例的唯一标识符:bgp router-id
  3. 将本地网络(203.0.113.0/24)通告给 AWS,使云中的服务器能够访问本地网络:network mask
  4. 通过第一条 IPsec VPN 隧道与 AWS 建立 BGP 会话,并引用其 AS 编号:neighbor remote-as
  5. 通过第二条 IPsec VPN 隧道建立 BGP 会话,并引用相同的 AS 编号:neighbor remote-as
  6. 可选:为对等体添加本地描述,以便于识别:neighbor description
  7. 可选:引用路由映射以接受一个前缀子网:neighbor route-map in
  8. 可选:引用路由映射以通告一个前缀子网:neighbor route-map out
  9. 为第一条 IPsec VPN 隧道启用软重新配置,以存储收到的路由副本。这样可以在不重置会话的情况下应用路由策略更改:neighbor soft-reconfiguration inbound
  10. 为第二条 IPsec VPN 隧道启用软重新配置:neighbor soft-reconfiguration inbound
  11. 如果在步骤 7 和 8 中引用了路由映射,请退出 BGP 部分,并在文件末尾添加其他配置。
    1. 添加路由映射:route-map: <route-map_name> permit
    2. 在路由映射中匹配前缀列表:match ip address prefix-list
    3. 添加路由映射中匹配的前缀列表:match ip address prefix-list

注意: 在此示例中,UniFi Gateway 上的隧道 IP 地址配置为 169.254.100.1 和 169.254.101.1,AWS 使用 169.254.100.2 和 169.254.101.2。

router bgp 65000
bgp router-id 198.51.100.1
!
network 203.0.113.0 mask 255.255.255.0
!
neighbor 169.254.100.2 remote-as 65001
neighbor 169.254.100.2 description Tunnel1
!
neighbor 169.254.101.2 remote-as 65001
neighbor 169.254.101.2 description Tunnel2
!
address-family ipv4
neighbor 169.254.100.2 activate
neighbor 169.254.100.2 soft-reconfiguration inbound
neighbor 169.254.100.2 route-map ACCEPT_ROUTES in
neighbor 169.254.100.2 route-map ADVERTISED_ROUTES out
neighbor 169.254.101.2 activate
neighbor 169.254.101.2 soft-reconfiguration inbound
neighbor 169.254.101.2 route-map ACCEPT_ROUTES in
neighbor 169.254.101.2 route-map ADVERTISED_ROUTES out
exit-address-family
!
exit
!
route-map ACCEPT_ROUTES permit 10
match ip address prefix-list ACCEPT_ALL
exit
!
route-map ADVERTISED_ROUTES permit 10
match ip address prefix-list ADVERTISE_SPECIFIC
exit
!
ip prefix-list ACCEPT_ALL seq 5 permit any
!
ip prefix-list ADVERTISE_SPECIFIC seq 5 permit 203.0.113.0/24