《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 11部署BGP

本章应有助于回答以下问题:

  • 核心的配置概念是什么?
  • 如何为 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拓扑

image-20240612204951501

二层 Clos 拓扑的传统配置: IPv4

像 OSPF一样,我们首先查看使用已编号接口分发 IPv4 路由的传统 BGP 配置。我们使用图 15-2 中所示的二层 Clos 来对此进行说明。

如第 14 章所述,我们在这使用了eBGP。每个路由器的 ASN 是一个从 65000 开始的数字,显示在该路由器图标的左上方。两个 spine的 ASN 相同,都是 65000,而每个leaf有一个不同的ASN,从 leaf01 的 65101 开始,到 leaf04 的 65104 为止。与之前一样,图中每个路由器内部显示的 IP 地址是该路由器的回环IP地址。服务器通过桥接网络连接到其关联的 leaf 路由器上。

image-20240612210904524

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值