第 5 章 BGP 路由
5.1. 关于 BGP 路由 复制链接链接已复制到粘贴板!
此功能为集群提供原生边框网关协议(BGP)路由功能。
如果您使用 MetalLB Operator,且 metallb-system
命名空间中有由集群管理员或 MetalLB Operator 以外的第三方集群组件创建的现有 FRRConfiguration
CR,您必须确保它们被复制到 openshift-frr-k8s
命名空间,或者这些第三方集群组件使用新命名空间。如需更多信息,请参阅迁移 FRR-K8s 资源。
5.1.1. 关于边框网关协议(BGP)路由 复制链接链接已复制到粘贴板!
OpenShift Container Platform 通过 FRRouting (FRR)支持 BGP 路由,它是一个免费的开源互联网路由协议套件,用于 Linux、UNIX 和类似操作系统。FRR-K8s 是基于 Kubernetes 的守护进程集,通过与 Kubernetes 兼容的方式公开 FRR API 的子集。作为集群管理员,您可以使用 FRRConfiguration
自定义资源(CR)来访问 FRR 服务。
5.1.1.1. 支持的平台 复制链接链接已复制到粘贴板!
以下基础架构类型支持 BGP 路由:
- 裸机
BGP 路由需要您为网络供应商正确配置 BGP。网络供应商的中断或错误配置可能会导致集群网络中断。
5.1.1.2. MetalLB Operator 中使用的注意事项 复制链接链接已复制到粘贴板!
MetalLB Operator 作为集群的附加组件安装。MetalLB Operator 的部署会自动启用 FRR-K8s 作为额外的路由功能供应商,并使用此功能安装的 FRR-K8s 守护进程。
在升级到 4.18 之前,metallb-system
命名空间中的任何现有 FRRConfiguration
都不受 MetalLB operator 管理(由集群管理员添加或任何其他组件)都需要手动复制到 openshift-frr-k8s
命名空间,如有必要创建命名空间。
如果您使用 MetalLB Operator,且在由集群管理员或 MetalLB Operator 以外的第三方集群组件创建的 metallb-system
命名空间中已有 FRRConfiguration
CR,则必须:
-
确保这些现有的
FRRConfiguration
CR 复制到openshift-frr-k8s
命名空间中。 -
确保第三方集群组件为它们创建的
FRRConfiguration
CR 使用新命名空间。
5.1.1.3. Cluster Network Operator 配置 复制链接链接已复制到粘贴板!
Cluster Network Operator API 会公开以下 API 字段来配置 BGP 路由:
-
spec.additionalRoutingCapabilities
:为集群启用 FRR-K8s 守护进程部署,它们可以独立于路由公告使用。启用后,FRR-K8s 守护进程会在所有节点上部署。
5.1.1.4. BGP 路由自定义资源 复制链接链接已复制到粘贴板!
以下自定义资源用于配置 BGP 路由:
FRRConfiguration
- 此自定义资源为 BGP 路由定义 FRR 配置。此 CR 针对于特定命名空间。
5.1.2. 配置 FRRConfiguration CRD 复制链接链接已复制到粘贴板!
以下部分提供了使用 FRRConfiguration
自定义资源 (CR) 的参考示例。
5.1.2.1. router 字段 复制链接链接已复制到粘贴板!
您可以使用 router
字段配置多个路由器,每个虚拟路由和转发 (VRF) 资源对应一个。对于每个路由器,您必须定义自主系统号 (ASN)。
您还可以定义要连接的边框网关协议 (BGP) 邻居列表,如下例所示:
FRRConfiguration CR 示例
5.1.2.2. toAdvertise 字段 复制链接链接已复制到粘贴板!
默认情况下,FRR-K8s
不会公告配置为路由器配置的前缀。要公告它们,您可以使用 toAdvertise
字段。
您可以公告前缀的子集,如下例所示:
FRRConfiguration CR 示例
- 1
- 广告一个前缀子集。
以下示例演示了如何公告所有前缀:
FRRConfiguration CR 示例
- 1
- 公告所有前缀。
5.1.2.3. toReceive 字段 复制链接链接已复制到粘贴板!
默认情况下,FRR-K8s
不处理邻居公告的任何前缀。您可以使用 toReceive
字段来处理此类地址。
您可以为前缀的子集配置,如下例所示:
FRRConfiguration CR 示例
以下示例将 FRR 配置为处理声明的所有前缀:
FRRConfiguration CR 示例
5.1.2.4. bgp 字段 复制链接链接已复制到粘贴板!
您可以使用 bgp
字段定义各种 BFD
配置集,并将它们与邻居关联。在以下示例中,BFD
备份 BGP
会话,FRR
可以检测链接失败:
FRRConfiguration CR 示例
5.1.2.5. nodeSelector 字段 复制链接链接已复制到粘贴板!
默认情况下,FRR-K8s
将配置应用到守护进程运行的所有节点。您可以使用 nodeSelector
字段指定要应用配置的节点。例如:
FRRConfiguration CR 示例
5.1.2.6. interface 字段 复制链接链接已复制到粘贴板!
spec.bgp.routers.neighbors.interface
字段只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以使用 interface
字段配置 unnumbered BGP peering,使用以下示例配置:
FRRConfiguration
CR 示例
- 1
- 激活未编号的 BGP 对等。
要使用 interface
字段,您必须在两个 BGP 对等点之间建立点对点、第 2 层连接。您可以将未编号的 BGP 对等用于 IPv4、IPv6 或双栈,但您必须启用 IPv6 RAs (Router Advertisements)。每个接口都限制为一个 BGP 连接。
如果使用此字段,则无法在 spec.bgp.routers.neighbors.address
字段中指定一个值。
FRRConfiguration
自定义资源的字段在下表中描述:
字段 | 类型 | 描述 |
---|---|---|
|
| 指定 FRR 来配置的路由器(每个 VRF 一个)。 |
|
| 用于会话的本地后端的自主系统编号(ASN)。 |
|
|
指定 |
|
| 指定用于建立来自此路由器会话的主机 vrf。 |
|
| 指定要建立 BGP 会话的邻居。 |
|
|
指定用于会话远程结尾的 ASN。如果使用此字段,则无法在 |
|
|
检测用于会话远程端的 ASN,而不明确设置它。为具有相同 ASN 的邻居指定 |
|
|
指定要建立会话的 IP 地址。如果使用此字段,则无法在 |
|
|
指定建立会话时使用的接口名称。使用此字段配置未编号的 BGP 对等。必须有两个 BGP 对等点之间的点对点、第 2 层连接。您可以将未编号的 BGP 对等用于 IPv4、IPv6 或双栈,但您必须启用 IPv6 RAs (Router Advertisements)。每个接口都限制为一个 BGP 连接。 |
|
| 指定建立会话时要结束的端口。默认值为 179。 |
|
|
指定用来建立 BGP 会话的密码。 |
|
|
指定邻居的身份验证 secret 的名称。secret 必须是 "kubernetes.io/basic-auth" 类型,并且与 FRR-K8s 守护进程位于同一个命名空间中。密钥 "password" 将密码存储在 secret 中。 |
|
| 根据 RFC4271 指定请求的 BGP 保留时间。默认为 180s。 |
|
|
根据 RFC4271 指定请求的 BGP keepalive 时间。默认值为 |
|
| 指定 BGP 在连接尝试到邻居之间等待的时间。 |
|
| 指明 BGPPeer 是否离开了多跃点。 |
|
| 指定用于与 BGP 会话关联的 BFD 会话的 BFD Profile 名称。如果没有设置,则不会设置 BFD 会话。 |
|
| 表示要公告给邻居的前缀列表,以及相关的属性。 |
|
| 指定要公告到邻居的前缀列表。此列表必须与您在路由器中定义的前缀匹配。 |
|
|
指定处理前缀时要使用的模式。您可以将 |
|
| 指定与公告的本地首选项关联的前缀。您必须在允许公告的前缀中指定与本地首选项关联的前缀。 |
|
| 指定与本地首选项关联的前缀。 |
|
| 指定与前缀关联的本地首选项。 |
|
| 指定与公告的 BGP 社区关联的前缀。您必须在您要公告的前缀列表中包含与本地首选项关联的前缀。 |
|
| 指定与社区关联的前缀。 |
|
| 指定与前缀关联的社区。 |
|
| 指定要从邻居接收的前缀。 |
|
| 指定要从邻居接收的信息。 |
|
| 指定来自邻居的前缀。 |
|
|
指定处理前缀时要使用的模式。当设置为 |
|
| 禁用 MP BGP 以防止它将 IPv4 和 IPv6 路由划分为不同的 BGP 会话。 |
|
| 指定从此路由器实例公告的所有前缀。 |
|
| 指定配置邻居时要使用的 bfd 配置集列表。 |
|
| 要在配置的其他部分中引用的 BFD 配置集的名称。 |
|
|
指定此系统可以接收控制数据包的最小间隔(以毫秒为单位)。默认值为 |
|
|
指定排除 jitter 的最小传输间隔,此系统希望用来发送 BFD 控制数据包(以毫秒为单位)。默认值为 |
|
| 配置检测倍数以确定数据包丢失。要确定连接丢失检测计时器,请将远程传输间隔乘以这个值。 |
|
|
配置此系统可以处理的最小 echo receive transfer-interval (以毫秒为单位)。默认值为 |
|
| 启用或禁用回显传输模式。这个模式默认为禁用,在多跃点设置中不支持。 |
|
| 将会话标记为被动。被动会话不会尝试启动连接,并在开始回复前等待来自对等的控制数据包。 |
|
| 仅限多跃点会话。为传入的 BFD 控制数据包配置最低预期 TTL。 |
|
| 限制尝试应用此配置的节点。如果指定,则只有标签与指定选择器匹配的节点才会应用配置。如果没有指定,则所有节点都会尝试应用此配置。 |
|
| 定义 FRRConfiguration 的观察状态。 |