Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

静态路由

总结 瞻博网络云原生 Contrail 网络 (CN2) 23.1 版支持群集的静态路由。本文介绍如何为 CN2 群集配置静态路由。

了解静态路由

当网络不需要动态路由协议的复杂性时,您可以使用静态路由。在路由和转发表中作为永久固定装置的路由通常配置为静态路由。

路由由目标前缀和下一跃点转发地址组成。静态路由在路由表中被激活,并在可访问下一跃点地址时插入转发表。与静态路由匹配的流量将被转发到指定的下一跃点地址。

CN2 中的静态路由

CN2 通过以下两个自定义资源 (CR) 实施静态路由:

  • RouteTable:包含用户定义的网络目标前缀以及关联的下一跃点 (nextHop)。IP nextHop 地址必须是 VMI 对象的 IP 地址。前缀定义可通过下一跃点访问的目标网络。您可以通过 A RouteTable 定义静态路由和下一跃点配对,然后将其与 RouteTable 和虚拟网络 (VN) 关联。以下是 CR 的示例 RouteTable 。请注意,此实例中不需要命名空间字段。

    请注意,下一个HopType 字段必须具有值 ip 地址。任何其他值都会导致用户输入错误。社区归属字段允许您在路由上设置 BGP 社区,这些路由通过 BGP 播发。

  • InterfaceRouteTable:将 InterfaceRouteTable 静态路由配置为虚拟机接口 (VMI) 的下一跃点。一个 InterfaceRouteTable 包含目标前缀,无需静态配置的下一跃点条目。与使用 a 时一 RouteTable样,前缀定义目标网络。 RouteTable与 , 您不需要定义 nextHop IP 地址,因为当关联 VMI InterfaceRouteTable 时,关联的 VMI 充当此前缀的下一跃点。

  • 以下是 CR 的示例 InterfaceRouteTable 。请注意,此实例中不需要命名空间字段。

    请注意,字段 nextHopType 必须具有值 ip-address。任何其他值都会导致用户输入错误。

    这些 CR 的范围限定在各自的命名空间,使您能够为静态路由配置所需属性。

为虚拟网络配置静态路由

配置 CR 以 RouteTable 将静态路由应用于虚拟网络 (VN)。VN 在其规格中引用了一个 RouteTable 。因此,当该 RouteTable VN 与该 VN 关联时,将应用静态路由。下面是一个 VN 对象,带有关联的 RouteTable

为 VMI 配置静态路由

在 VMI 上配置接口路由表注释,以便对 VMI 应用一个 InterfaceRouteTable

以下是输出示例 kubectl describe vmi

记下该 Interface Route Table References 部分。本节显示所列 InterfaceRouteTables VMI 与 VMI 之间的关联。

在 Pod 接口上配置静态路由

您可以使用 Pod 清单的注释部分为 Pod 的默认接口或辅助接口配置静态路由。Pod 协调器处理注释部分,以创建具有关联的 InterfaceRouteTableVMI 对象。协调器在注释部分查找字符串密钥:“core.juniper.net/interface-route-table”。Pod 的 VMI 使用该字符串作为元数据标签,与 。InterfaceRouteTable

以下是为默认接口定义的 Pod 清单 InterfaceRouteTable 的示例:

记下 securityContext 字段。这些字段是必要的,因为 Pod 必须有权更改其路由表,才能利用配置的路由。

以下是为辅助接口定义的 Pod 清单 InterfaceRouteTable 的示例:

请注意,主接口 InterfaceRouteTable 的名称是 vmi-rt ,辅助接口的名称是 vn-route。在同一命名空间中定义两 InterfaceRouteTables 个名称不同,会自动为该 Pod 的主接口和辅助接口创建一个 InterfaceRouteTable

为具有 NAD 的虚拟网络配置静态路由

您还可以在网络附件定义 (NAD) 对象中指定静态路由属性。协调或应用 NAD 后,将创建 a RouteTable ,由此产生的 VN 对象引用该 RouteTable。以下是定义的静态路由信息 NAD 的示例:

Pod 接口上的多个静态路由

您可以使用 InterfaceRouteTable,将多个静态路由关联到单个 Pod 接口 (VMI)。这意味着该 VMI 对象有多个下一跃点目标,具体取决于 IP 前缀。您可以使用群集服务版本 (CSV) 语法或 JSON 语法注释指定多个 InterfaceRouteTable 参考。

注意:

引用时 InterfaceRouteTable 必须采用“命名空间/名称”格式。在以下示例中, static-route 是命名空间和 to-rightto-zone-1 ,是 InterfaceRouteTable VMI 的对象或下 left-vn 一跃点目标。

以下示例包含 Deployment 多个 InterfaceRouteTable 参考:

以下示例是一个使用 JSON 语法的多个 InterfaceRouteTable 引用的 Pod 清单:

注意:

您必须在 JSON 语法中使用向后斜杠。要将 JSON 字符串编码在另一个 JSON 字符串中,需要向后斜杠。

路由表和接口RouteTable 故障排除

数据平面验证

  • 在 vRouter 内省中,使用以下步骤验证 VN 的 VRF 是否显示了一行,该行具有 RT 中指定的匹配静态路由前缀:

    • 访问 vRouter 内省,https://<vrouter_ip>:8085/Snh_VrfListReq

    • 验证 VRF 是否与 VN 关联。

    • 导航至 VRF 单播 RouteTable中的 ucindex 列。

    • 验证表中是否包含具有正确静态路由前缀的行。

  • 在内省中,验证 VN 的下一跃点属性是否准确且根据需要。在内省中,前缀的下一跃点列应包含以下内容:
    • 下一跃点接口名称必须是有效的分路接口。

    • 必须是 label 正整数。

    • resolved 必须为 true

    • route-type: 必须为 InterfaceStaticRoute

配置平面验证

  • 验证和对象的状态RouteTableInterfaceRouteTable

    • 检查对象的协调器 InterfaceRouteTable 状态。

    • 检查对象的协调器 RouteTable 状态。

  • RouteTable验证相关 VN 中的参考。InterfaceRouteTable验证关联 VMI 中的参考。

    • 检查 VMI 协调器的状态。您应该会看到 InterfaceRouteTable VMI 中带有关联的通用唯一标识符 (UUID) Contrail FQ(元信息,如 apiversionkindnamespacename)名称。