本章应有助于回答以下问题:
- 核心的配置概念是什么?
- 如何为 Clos 网络配置 BGP ?
- 无编号的 BGP 如何工作?
- 如何配置 BGP 与主机上的 BGP 发言者 (例如 Kube-router) 建立对等关系?
- 如何配置 BGP 以对网络进行计划维护?
核心的 BGP 配置概念
全局BGP 配置,包含:
- router-id (路由器 id) 配置。
- Neighbor (邻居) ,或称为 peer (对等方) 配置
- Routing policy (路由策略)定义。
- Timer (计时器)配置。
Neighbor 相关的配置,包含:
- 非全局计时器配置。
- 和地址族无关的配置。
地址族相关的配置,包含:
-
为 neighbor 启用 AFI/SAFI
在BGP(Border Gateway Protocol)中,AFI(Address Family Identifier)和 SAFI(Subsequent Address Family Identifier)是用于标识和处理不同类型的地址族的概念。它们的结合允许BGP扩展其功能,以支持多种类型的网络地址,如IPv4、IPv6、VPN等。
1. AFI(Address Family Identifier)
AFI标识了地址的类别,即地址族。常见的AFI值包括:
- 1:IPv4
- 2:IPv6
- 25:L2VPN(Layer 2 VPN)
2. SAFI(Subsequent Address Family Identifier)
SAFI进一步细化了AFI,指示地址的具体类型或用途。常见的SAFI值包括:
- 1:Unicast
- 2:Multicast
- 4:Labeled Unicast(用于MPLS)
- 128:MPLS-labeled VPN address
- 129:Multicast VPN address
3. AFI/SAFI组合
AFI和SAFI的组合定义了BGP所处理的具体地址类型和应用场景。以下是一些常见的AFI/SAFI组合:
- AFI 1, SAFI 1:IPv4 Unicast
- AFI 1, SAFI 2:IPv4 Multicast
- AFI 2, SAFI 1:IPv6 Unicast
- AFI 2, SAFI 2:IPv6 Multicast
- AFI 1, SAFI 128:VPNv4(用于MPLS VPN)
- AFI 2, SAFI 128:VPNv6(用于MPLS VPN)
4. 功能与应用
通过使用AFI和SAFI,BGP能够灵活地支持多种不同类型的网络架构和服务。例如:
- 多协议BGP(MP-BGP):通过扩展BGP以支持多个协议族(不仅仅是IPv4 Unicast),使BGP能够在MPLS VPN、IPv6、L2VPN等多种网络环境中工作。
- VPNs:通过使用AFI/SAFI组合,BGP能够处理和通告多种类型的VPN地址,这在服务提供商网络中非常常见。
- 多播路由:通过适当的AFI/SAFI组合,BGP可以用于通告和管理多播路由。
实际配置示例
一个典型的配置示例如下:
router bgp 65000 neighbor 192.0.2.1 remote-as 65001 address-family ipv4 unicast neighbor 192.0.2.1 activate address-family ipv6 unicast neighbor 192.0.2.1 activate
在上述配置中:
address-family ipv4 unicast
对应 AFI 1 和 SAFI 1(IPv4 Unicast)。address-family ipv6 unicast
对应 AFI 2 和 SAFI 1(IPv6 Unicast)。
-
路由通告。
-
在 neighbor 上应用 routing policy。
图15-1:用于演示BGP配置的Clos拓扑
二层 Clos 拓扑的传统配置: IPv4
像 OSPF一样,我们首先查看使用已编号接口分发 IPv4 路由的传统 BGP 配置。我们使用图 15-2 中所示的二层 Clos 来对此进行说明。
如第 14 章所述,我们在这使用了eBGP。每个路由器的 ASN 是一个从 65000 开始的数字,显示在该路由器图标的左上方。两个 spine的 ASN 相同,都是 65000,而每个leaf有一个不同的ASN,从 leaf01 的 65101 开始,到 leaf04 的 65104 为止。与之前一样,图中每个路由器内部显示的 IP 地址是该路由器的回环IP地址。服务器通过桥接网络连接到其关联的 leaf 路由器上。
Example 15-1. spine01和leaf01的传统BGP配置
1)spine01配置
! Configuration for spine01
!
interface lo
ip address 10.0.0.21/32
!
interface swp1
ip address 169.254.1.0/31
!
interface swp2
ip address 169.254.1.2/31
!
interface swp3
ip address 169.254.1.4/31
!
interface swp4
ip address 169.254.1.6/31
!
router bgp 65000
bgp router-id 10.0.0.21
bgp log-neighbor-changes
# BGP 计时器的默认值不适用数据中心,因此需要进行调整
timers bgp 3 9
# BGP 对IPv4 单播地址族有一些默认行为,其中最关键的是缺省情况下自动启用 IPv4 路由的发布。但是许多运营商都喜欢显式激活该配置。
# 通过该行关闭了IPv4 单播地址组的默认激活。
no bgp default ipv4 unicast
neighbor 169.254.1.1 remote-as 65101
neighbor 169.254.1.3 remote-as 65102
neighbor 169.254.1.5 remote-as 65103
neighbor 169.254.1.7 remote-as 65104
# 设置BGP邻居(IP地址为169.254.1.1)的路由更新广告间隔为0秒
# 将广告间隔设置为0秒意味着BGP路由器将尝试立即向邻居发送路由更新,而不进行延迟。这可以在网络拓扑发生变化时更快地传播更新信息。
neighbor 169.254.1.1 advertisement-interval 0
neighbor 169.254.1.3 advertisement-interval 0
neighbor 169.254.1.5 advertisement-interval 0
neighbor 169.254.1.7 advertisement-interval 0
neighbor 169.254.1.1 bfd
neighbor 169.254.1.3 bfd
neighbor 169.254.1.5 bfd
neighbor 169.254.1.7 bfd
# 放宽BGP多路径选择的标准。
bgp bestpath as-path multipath-relax
address-family ipv4 unicast
# 为了将一个地址族的路由通告给其邻居,BGP 必须为每个邻居激活该地址族activate 命令用于让 BGP 在 BGP OPEN 消息中通告该地址族的能力。
# 只有当对方也支持该地址族时,才会发布该地址族的路由。
neighbor 169.254.1.1 activate
neighbor 169.254.1.3 activate
neighbor 169.254.1.5 activate
neighbor 169.254.1.7 activate
# redistribute 命令被放在一个特定的地址族下。BGP 是一种多协议路由协议,在特定地址族下使用 redistribute 命令只会重新分发该地址族的信息。如果需要为多个地址族重新分发直连路由,则需要在每个地址族下都指定 redistribute 命令
# 由于接口具有IP地址,因此redistribute connected命令除了通告回环地址和服务器子网的IP地址外,还会通告接口的IP地址。
# 接口IP地址增加了一些开销,包括多出的 BGP 消息,扩大了RIB和FIB大小等
redistribute connected
# 与OSPF不同的是,BGP 并不会自动启用 ECMP (等价多路径) ,而是需要通过 maximum_paths 命令明确告知 BGP 这样做。像 redistribute 命令一样,可以配置只为指定的 AFI/SAFI 启用 ECMP
maximum-paths 64
exit-address-family
2)leaf01配置
! Configuration for leaf01
!
interface lo
ip address 10.0.0.11/32
!
interface swp1
ip address 169.254.1.1/31
!
interface swp2
ip address 169.254.2.1/31
!
! This next statement is for the servers subnet
!
interface vlan10
ip address 172.16.1.1/24
!
router bgp 65011
bgp router-id 10.0.0.11
bgp log-neighbor-changes
timers bgp 3 9
no bgp default ipv4 unicast
neighbor 169.254.1.0/31 remote-as 65000
neighbor 169.254.2.0/31 remote-as 65000
neighbor 169.254.1.0/31 advertisement-interval 0
neighbor 169.254.2.0/31 advertisement-interval 0
neighbor 169.254.1.0/31 bfd
neighbor 169.254.2.0/31 bfd
address-family ipv4 unicast
neighbor 169.254.1.0/31 activate
neighbor 169.254.2.0/31 activate
redistribute connected
maximum-paths 64
exit-address-family
多路径选择
bgp bestpath as-path multipath-relax
是一个在BGP配置中使用的命令,用于放宽BGP多路径选择的标准。具体来说,它允许BGP在选择多路径时忽略AS路径的完全匹配要求,从而实现多路径选择的功能。在默认情况下,BGP的最佳路径选择算法在进行多路径选择时要求
AS_PATH
(自治系统路径)必须完全匹配。这意味着,仅当两条路径的AS_PATH
完全相同且其他度量值(如本地优先级、MED等)也相同时,BGP才会将这些路径视为等价并使用多路径。当启用
bgp bestpath as-path multipath-relax
时,BGP将放宽多路径选择的AS路径匹配要求。这意味着BGP不再需要AS_PATH
完全匹配,只要路径长度相同且其他度量值也相同,就可以认为这些路径是等价的,从而允许多路径选择。假设有两条到同一目的地的路径:
- 路径1:
AS_PATH = {AS100, AS200, AS300}
- 路径2:
AS_PATH = {AS101, AS201, AS300}
在没有启用
bgp bestpath as-path multipath-relax
的情况下,BGP不会将这两条路径视为等价路径,因为它们的AS_PATH
不完全匹配。但是,启用
bgp bestpath as-path multipath-relax
后,只要这两条路径的长度相同且其他度量值(例如本地优先级、MED等)也相同,BGP将允许这两条路径作为多路径进行选择和使用。实际配置示例
router bgp 65000 bgp bestpath as-path multipath-relax address-family ip