服务质量 DSCP 标记概览

服务质量 (QoS) 可管理网络流量,并通过控制带宽、延迟时间和丢包等因素来确保关键应用的性能。当网络资源有限或拥塞时,此技术会优先处理某些类型的网络流量。您可以使用差分服务代码点 (DSCP) 标记来确定现代 IP 网络上的流量优先级。

如需了解如何使用 DSCP 标记,请参阅配置 DSCP 标记

出口 DSCP 标记的运作方式

服务质量 (QoS) 可管理网络流量,以确保关键应用在带宽较低的情况下也能正常运行。出站 DSCP 标记使您能够在 IP 标头中标记具有 DSCP 值的数据包,以将优先级传达给下游网络设备。

支持的工作负载

出站 DSCP 标记支持为以下 Google Distributed Cloud 工作负载确定流量优先级:

  • 容器工作负载:在集群上运行的 Kubernetes Pod 和服务。
  • 虚拟机 (VM):通过 VM 运行时运行的 VM 工作负载,前提是它们已连接到默认网络。

DSCP 标记的资源类型

Distributed Cloud 使用特定的自定义资源来管理 DSCP 标记。您可以使用以下对象定义数据包的优先级:

  • EgressDSCP:一种自定义资源,用于定义要插入到所选流量数据包的 IP 标头中的特定 DSCP 值。此对象接受 063 之间的整数值。
  • TrafficSelector:一种可精确选择网络流量的自定义资源。此资源接受从 065535 的优先级整数,默认值为 1000TrafficSelector 对象引用 EgressDSCP 对象,以对已识别的流量应用特定操作。即使使用命名空间范围的 TrafficSelector,也必须添加命名空间选择器,以明确标识发起目标流量的 pod 的命名空间。

冲突解决

当多个 TrafficSelector 资源应用于同一正文时,系统会使用特定的层次结构来确定优先级。系统会按以下顺序使用以下原则来解决冲突:

  1. 优先级:系统会应用优先级数值最低的 TrafficSelector
  2. CIDR 范围具体程度:如果规则具有相同的优先级,系统会应用 CIDR 限制最具体(前缀匹配最长)的规则。
  3. 端口具体性:如果规则具有相同的优先级和 CIDR 范围,系统会应用端口最具体的规则。

如果更具体的 CIDR 规则的优先级在数值上更高(优先级更低),系统会应用范围更广的规则,并忽略更具体的规则。

阴影示例

不妨考虑以下两条应用于同一目的地的 TrafficSelector 规则:

  • 规则 A:优先级 100,目标 CIDR 192.168.1.0/24,标记 DSCP 40
  • 规则 B:优先级 200,目标 CIDR 192.168.1.15/32,标记 DSCP 46

即使规则 B 指定了更精确的目标 CIDR (192.168.1.15/32),系统也会优先考虑规则 A,因为它的优先级值在数值上更低 (100)。因此,系统会忽略规则 B,并对定向到 192.168.1.15 的所有出站流量应用 DSCP 标记 40

限制

DSCP 标记功能在当前实现中包含以下几项限制:

  • 外部出站流量:您只能标记离开集群的南北向流量,例如工作负载发起的出站流量以及从 Kubernetes 服务到外部客户端的返回流量。
  • 无内部强制执行:虽然系统会标记集群内流量,但 Kubernetes 不会根据这些标记在内部强制执行 QoS 政策。
  • 仅标记:系统仅标记 IP 标头。您必须配置上游物理网络基础架构,以处理实际的 QoS 强制执行。
  • 支持的协议:您只能标记 IPv4 流量。
  • 支持的服务:您只能为 LoadBalancerNodePort 服务标记流量。
  • 虚拟机网络:您只能标记连接到默认网络的虚拟机工作负载。
  • 功能启用:您必须通过向集群资源添加 preview.baremetal.cluster.gke.io/traffic-selector: "enable" 注解来启用该功能。
  • 回程路径默认值:对于回程路径流量,除非另行明确配置,否则 DSCP 值默认为 0

安全注意事项

未经授权的用户可能会使用较高的 DSCP 值标记非必要流量,从而扰乱整个集群中的关键服务。

为降低安全风险,请使用 Kubernetes 基于角色的访问权限控制 (RBAC) 来限制访问权限:

  • 集群级控制:将创建或修改集群级 EgressDSCP 资源的权限限制为可信的集群管理员。
  • 命名空间控制:按命名空间管理 TrafficSelector 资源,以便用户只能影响其特定工作负载。

后续步骤