在 OVSDB 托管的 VXLAN 接口上配置 CoS
在支持的平台上,您可以在 OVSDB 托管的 VXLAN 接口上配置数据包分类、数据包调度和数据包代码点重写(重写规则)CoS 功能。OVSDB 托管的 VXLAN 接口可使用 OVSDB 控制器来创建和管理 VXLAN 接口和隧道。
OVSDB 托管的 VXLAN 接口上的分类器、调度器和重写规则配置使用的 CLI 语句与常规以太网接口上的 CoS 配置使用相同的 CLI 语句。但是,与常规以太网接口相比,OVSDB 管理的 VXLAN 接口的功能支持在几个方面有所不同。是否支持该功能取决于交换机接口是面向接入的(连接到网络的设备)还是面向网络的(连接到网络,例如,连接到 VXLAN 网关的交换机接口)。
分类器 — 在面向访问的入口接口上,您可以配置 BA 或 MF DSCP 分类器。
在面向网络的入口接口上,只能配置 DSCP 分类器。
重写规则 — 在面向网络的接口上,您可以配置 DSCP 重写规则。面向访问的接口不支持重写规则。不支持 IEEE 802.1p 重写规则。
注意:重写规则仅重写 VXLAN 标头上的 DSCP 代码点。重写规则不会重写内部数据包标头上的 DSCP 代码点。如果未配置重写规则,则默认情况下,数据包标头中的代码点值将复制到 VXLAN 标头中。
调度器 — 出口接口使用增强型传输选择 (ETS) 分层端口调度,与常规以太网接口相同,并且支持相同的功能。您可以在面向接入和网络的出口接口上配置数据包调度。
有关 OVSDB 托管的 VXLAN 接口上的 CoS 功能支持的更多信息,请参阅 了解 OVSDB 托管的 VXLAN 接口上的 CoS。
本主题介绍 OVSDB 托管的 VXLAN 接口上的 CoS 配置。它不包括 OVSDB 或 VXLAN 配置。有关 OVSDB 托管的 VXLAN 的信息,请参阅了解 OVSDB 环境中动态配置的 VXLAN 。
如果未在接口上配置 CoS,则该接口将使用默认 CoS 属性。如果在接口上配置某些 CoS 属性,则该接口对这些属性使用配置的 CoS,对未配置的属性使用默认 CoS。OVSDB 托管的 VXLAN 接口上的默认设置的唯一区别是,如果未配置重写规则,则默认情况下,数据包标头中的代码点值将复制到 VXLAN 标头中。其他接口类型没有默认重写规则。有关默认调度器和分类器设置的信息,请参阅 了解默认 CoS 调度和分类 。
以下三个过程说明如何在 OVSDB 托管的 VXLAN 接口上配置分类器、重写规则和 ETS 分层端口调度。
您可以基于默认分类器或以前配置的分类器配置分类器,也可以创建不使用任何默认值的全新分类器。此示例适用于网络接口。
您可以基于默认重写规则或先前存在的重写规则配置重写规则。默认重写规则会将内部数据包标头值写入 VXLAN 外部报头。或者,您可以创建不使用任何默认值的全新分类器。只能在面向网络的接口上配置重写规则,并且唯一支持的重写规则是 DSCP 重写规则。
要使用默认重写规则或先前配置的重写规则作为模板在面向网络的出口接口上配置重写规则,请包含该
import
语句并指定default
或重写规则名称作为要导入的重写规则。然后将重写规则与转发类、丢失优先级以及一个或多个代码点相关联:[edit class-of-service rewrite-rules] user@switch# set dscp rewrite-name import (rewrite-name | default) forwarding-class forwarding-class-name loss-priority loss-priority code-points (aliases | bit-patterns)
若要创建不基于默认重写规则或以前存在的重写规则的重写规则,请创建新的重写规则,并将其与转发类、丢失优先级以及一个或多个代码点相关联:
[edit class-of-service rewrite-rules] user@switch# set dscp rewrite-name forwarding-class forwarding-class-name loss-priority loss-priority code-points (aliases | bit-patterns)
注意:面向访问的接口不支持重写规则。
将重写规则应用于交换机上的一个或多个由 OVSDB 托管的 VXLAN 接口:
[edit class-of-service interfaces] user@switch# set interface-name unit unit rewrite-rules dscp rewrite-name
ETS 分层端口调度将端口带宽分配给两层流量。ETS 可以提供更好的端口带宽利用率和更大的灵活性,将端口资源分配给转发类和称为转发类集 (fc-set) 的转发类组。
首先,ETS 将端口带宽分配给 fc 集(也称为优先级组)。每个 fc 集由一个或多个转发类组成,这些转发类承载需要类似 CoS 处理的流量。然后,将每个 fc 集接收的带宽分配给该 fc 集中的转发类。每个转发类都映射到一个输出队列。转发类的调度属性将分配给转发类映射到的队列。流量控制配置文件控制端口带宽到 fc 集的分配。队列调度程序控制将 fc 集带宽分配给转发类。有关调度的详细信息,请参阅了解 CoS 输出队列调度程序、了解 CoS 流量控制配置文件和了解 CoS 分层端口调度 (ETS)。
调度器定义映射到转发类的输出队列的 CoS 属性。配置调度器后,可以使用调度器图将调度器映射到一个或多个转发类。将调度程序映射到转发类会将调度属性应用于转发类中的流量。
调度器为映射到调度器的转发类(队列)定义以下特征:
transmit-rate
—最小带宽,也称为 承诺信息速率 (CIR),设置为百分比速率或绝对值(以位/秒为单位)。传输速率还决定了队列可以共享的多余(额外)优先级组带宽量。额外的优先级组带宽会根据每个队列的传输速率的比例在优先级组中的队列之间分配。注意:在带宽计算中包括前导码字节和帧间间隔 (IFG) 字节以及数据字节。
注意:您无法为严格-高优先级队列配置传输速率。具有已配置传输速率的队列(转发类)不能包含在具有严格高优先级队列的 fc 集中。
shaping-rate
- 最大带宽,也称为 峰值信息速率 (PIR),设置为百分比速率或绝对值,以 bps 为单位。注意:在带宽计算中包括前导码字节和帧间间隔 (IFG) 字节以及数据字节。
priority
—与调度程序关联的队列可以接收的两个带宽优先级之一:low
—调度程序的优先级较低。strict-high
—调度程序具有严格-高优先级。您只能将一个队列配置为严格-高优先级队列。严格高优先级在任何其他队列收到带宽之前将计划带宽分配给队列。其他队列接收在处理严格高优先级队列后剩余的带宽。我们建议您始终对严格高优先级队列应用整形速率,以防止严格高优先级队列使其他队列挨饿。如果未应用整形速率来限制严格-高优先级队列可以使用的带宽,则严格-高优先级队列可以使用所有可用端口带宽,并使端口上的其他队列匮乏。
drop-profile-map
- 丢弃配置文件映射到丢失优先级和协议,以将 WRED 数据包丢弃特征应用于调度程序。注意:如果入口端口拥塞是由于出口端口拥塞而发生的,请将丢弃配置文件应用于拥塞出口端口上的流量,以便流量丢弃在出口接口而不是入口接口。当入口端口将流量传输到拥塞和非拥塞出口端口时,入口接口拥塞会影响不拥塞的端口。
buffer-size
- 队列缓冲区的大小,以端口上专用缓冲区空间的百分比表示,或者作为端口上处理显式配置队列后剩余的专用缓冲区空间的比例份额。explicit-congestion-notification
- 在 BE 队列上启用 ECN。ECN 可在基于 TCP/IP 的网络上两个启用 ECN 的端点之间发送端到端拥塞通知。必须在两个端点以及端点之间的所有中间设备上启用 ECN,ECN 才能正常工作。默认情况下,ECN 处于禁用状态。
TCP 定义 fc 集的 CoS 属性,以及分配给 fc 集中的转发类(队列)组的端口资源量。配置 TCP 后,将其(使用关联的 fc 集)应用于某个接口,以便在该接口上为属于转发类的流量配置调度。
当您将 TCP 和 fc-set 应用于接口时,TCP 为映射到 TCP 的 fc-set(优先级组)定义以下特征:
guaranteed-rate
—最小带宽,也称为 保证信息速率 (CIR)。保证速率还决定了 fc 集可以共享的多余(额外)端口带宽量。额外的端口带宽按每个 fc 集的保证速率的比例在端口上的 fc 集之间分配。注意:您无法为包含严格高优先级队列的 fc 集配置保证速率。如果 TCP 用于包含严格高优先级队列的 fc 集,则不要配置保证速率。
shaping-rate
—最大带宽,也称为峰值信息速率 (PIR)。scheduler-map
- 队列的带宽和调度特征,通过将转发类映射到调度程序来定义。队列调度特征表示 fc 集带宽的数量或百分比,而不是总链路带宽的数量或百分比。
由于一个端口可以有多个 fc 集,因此在将资源分配给 fc 集时,请记住,总端口带宽必须为每个 fc 集中与该端口关联的所有队列提供服务。
以下过程显示如何配置调度器属性,将调度器映射到转发类,将转发类映射到 fc 集,配置 TCP 属性,以及将 TCP 和 fc 集应用于接口(以将 ETS 端口调度配置应用于接口)。
您不必显式配置所有调度程序和 TCP 特征。某些特征在默认情况下处于禁用状态,如 ECN,并且只能在特定条件下启用。您可以混合使用已配置的 CoS 属性和默认 CoS 属性。
命名队列调度器并定义队列的最小保证带宽:
[edit class-of-service] user@switch# set schedulers scheduler-name transmit-rate (rate | percent percentage)
定义队列的最大带宽:
[edit class-of-service schedulers scheduler-name] user@switch# set shaping-rate (rate | percent percentage)
定义队列优先级:
[edit class-of-service schedulers scheduler-name] user@switch# set priority level
使用丢落配置文件映射定义丢弃配置文件:
[edit class-of-service schedulers scheduler-name] user@switch# set drop-profile-map loss-priority (low | medium-high | high) protocol protocol drop-profile drop-profile-name
配置队列的端口专用缓冲区空间大小:
[edit class-of-service schedulers scheduler-name] user@switch# set buffer-size percent percentage
如果需要,启用 ECN:
[edit class-of-service schedulers scheduler-name] user@switch# set explicit-congestion-notification
配置调度器图,将调度器映射到转发类,这会将调度器的属性应用于该转发类中的流量:
[edit class-of-service] user@switch# set scheduler-maps scheduler-map-name forwarding-class forwarding-class-name scheduler scheduler-name
这就完成了您可以在调度程序中配置的特征,以及调度程序到转发类的映射。后续步骤显示如何配置 TCP。
命名 TCP 并定义 fc-set 的最小保证带宽:
[edit class-of-service] user@switch# set traffic-control-profiles traffic-control-profile-name guaranteed-rate (rate | percent percentage)
定义 fc-set 的最大带宽:
[edit class-of-service traffic-control-profiles traffic-control-profile-name] user@switch# set shaping-rate (rate | percent percentage)
将调度器图附加到 TCP;调度器图将调度器图中的调度器和转发类(队列)与 TCP 相关联:
[edit class-of-service traffic-control-profiles traffic-control-profile-name] user@switch# set scheduler-map scheduler-map-name
这样就完成了您可以在 TCP 中配置的特征。下一步演示如何将转发类分配给 fc-set。
将一个或多个转发类分配给 fc 集:
[edit class-of-service] user@switch# set forwarding-class-sets forwarding-class-set-name class forwarding-class-name
这样就完成了将转发类分配给 fc 集的过程。后续步骤显示如何将 ETS 分层端口调度应用于接口。
要将 ETS 分层端口调度应用于接口,请将 fc 集和 TCP 与接口相关联。fc-set 确定使用指定接口的转发类和队列。TCP 确定分配给 fc 集的端口资源量。转发类到 TCP 中调度程序的映射决定了将 fc 集资源分配给作为 fc 集成员的转发类。
[edit class-of-service] user@switch# set interfaces interface-name forwarding-class-set fc-set-name output-traffic-control-profile tcp-name