这可能有点啰嗦,但我会尝试一次性解决您的大部分问题。祝我好运!
您可以让上游服务提供商通过 BGP 向您的路由器通告默认路由 (0.0.0.0)。在 BGP 路由器上配置 OSPF 时,可以使用命令“default-information originate”。只要您从 ISP 获得默认路由(这仅在您连接到该 ISP 时发生),您就会将默认路由通告到 OSPF。一旦您失去了来自 ISP 的默认路由,您就会失去 OSPF 默认路由。
您需要在所有 Internet 路由器(连接到 ISP 的路由器)之间建立 BGP 对等互连。这是内部 BGP 或 iBGP 关系,需要是全网状网络。根据您的图表,您只有两个互联网路由器,因此全网状网络很简单。在 iBGP 和 eBGP 上进行对等没有复杂的步骤;只是一个简单的邻居声明。当 BGP 看到您的邻居具有相同的 AS 编号时,它会形成 iBGP 关系而不是 eBGP 关系。
优先选择一条路由而不是另一条路由有点棘手,尤其是在涉及 BGP 的情况下。负载平衡是使用路由映射完成的,传统上使用路径前置。有几种方法可以做到这一点。我想补充一点,如果您不过滤传出路由广告,您最终将向 ISP B 和 C 等发布 ISP A 的路由,这将使您变成中转 AS,您最终会通过您的网络管道传输一些 A <-> B、A <-> C 和 B <-> C 流量,这可能不是您想要的。
这是您的负载平衡的一招:
! Set an IP access list that matches your BGP-advertised network
ip access-list standard 1 permit a.b.c.d mask a.b.c.d
! Set an IP as-path access list to only allow advertising of YOUR network
ip as-path access-list 1 permit ^$
! Make a route-map for ISP C, match the as-path and access-list above, then make it look
! less appealing than going through ISP A/B
route-map ISP_C 10
match ip address 1
match as-path 1
set as-path prepend <Your AS> <Your AS> <Your AS>
! The more times you prepend your AS to a route, the less desirable it looks, so traffic
! will be more likely to come in via ISP A/B than C. The last step is to add it to your
! ISP C neighbor statement in BGP
router bgp <Your AS>
neighbor <ISP C> route-map ISP_C out
如果您有多个子网,您甚至可以通过有选择地将您的 AS 路径预先添加到各个子网,将路由器 B 用于站点 B,将路由器 A 用于站点 A。下面是一个例子:
路由器A:
ip access-list standard 1
permit <site B subnets>
ip as-path 1 permit ^$
route-map ISP_AB 10
match ip address 1
match as-path 1
set as-path prepend <Your AS> <Your AS>
route-map ISP AB 20
match as-path 1
router bgp <Your AS>
neighbor <ISP A> route-map ISP_AB out
neighbor <ISP B> route-map ISP_AB out
路由器 B:
ip access-list standard 1
permit <site A subnets>
ip as-path 1 permit ^$
route-map ISP_C 10
match ip address 1
match as-path 1
set as-path prepend <Your AS> <Your AS>
route-map ISP C 20
match as-path 1
router bgp <Your AS>
neighbor <ISP C> route-map ISP_C out
您有效地所做的是使来自路由器 A 的站点 B 的子网看起来不如来自 ISP C 的吸引人,并使来自路由器 B 的站点 A 的子网看起来不如来自 ISP A/B 的子网有吸引力。你可能需要在你的 AS 路径前面加上一些来获得适量的前缀。
我希望这有帮助!BGP 有点像怪物,但是一旦您了解了这些部分,就会很有趣。我强烈推荐关于 BGP 的 CBT Nuggets 系列,如果你觉得这个主题有点不稳定,我总是使用 GNS3 作为测试平台,在我实施它们之前验证大型网络变化。