Skip to main content

Настройка QoS в Open vSwitch

Данная инструкция описывает процесс настройки ограничений пропускной способности (QoS) для SAN-VLAN и основной сети на базе Open vSwitch (OVS).

Используется драйвер очередей linux-htb, позволяющий задавать максимальные скорости на уровне портов.

🟦 1. Ограничение пропускной способности SAN-порта (VLAN 25)

1.1. Создать очередь с максимальной скоростью 4 Гбит/с
ovs-vsctl -- --id=@q0 create queue other-config:max-rate=4509715661 \
          -- --id=@qos create qos type=linux-htb other-config:max-rate=4509715661 queues:0=@q0 \
          -- set port san25 qos=@qos

В этой команде выполняется сразу три действия:

  • создаётся очередь q0 с лимитом 4 509 715 661 бит/с;

  • создаётся объект QoS, привязанный к этой очереди;

  • QoS назначается на порт san25 (внутренний порт VLAN 25).

1.2. Проверка конфигурации SAN-QoS

Показать все политики QoS:

ovs-vsctl list qos

Показать все очереди:

ovs-vsctl list queue

Проверить настройки порта SAN-VLAN:

ovs-vsctl list port san25

2. Ограничение пропускной способности основной сети (vmbr0)

Для всех остальных сетей задаётся ограничение 1 Гбит/с.

2.1. Создать очередь и назначить QoS на vmbr0
ovs-vsctl -- --id=@q1 create queue other-config:max-rate=1073741824 \
          -- --id=@qos1 create qos type=linux-htb other-config:max-rate=1073741824 queues:0=@q1 \
          -- set port vmbr0 qos=@qos1

Создаётся:

  • очередь q1 с лимитом 1  073  741  824 бит/с;

  • объект QoS с тем же ограничением;

  • привязка QoS к порту vmbr0.

2.2. Проверка конфигурации QoS для vmbr0

Просмотр параметров порта:

ovs-vsctl list port vmbr0

Список QoS-объектов:

ovs-vsctl list qos

Список очередей:

ovs-vsctl list queue

3. Скрипт для автозапуска qos

расположение /usr/local/sbin/ovs-qos.sh:

#!/bin/bash
# Скрипт для применения QoS к портам OVS после перезагрузки

# QoS для SAN сети
ovs-vsctl -- --id=@q0 create queue other-config:max-rate=4509715661 \
          -- --id=@qos create qos type=linux-htb other-config:max-rate=4509715661 queues:0=@q0 \
          -- set port san25 qos=@qos

# QoS для management сети
ovs-vsctl -- --id=@q1 create queue other-config:max-rate=1073741824 \
          -- --id=@qos1 create qos type=linux-htb other-config:max-rate=1073741824 queues:0=@q1 \
          -- set port vmbr0 qos=@qos1

exit 0

Сделаем скрипт исполняемым

chmod +x /usr/local/sbin/ovs-qos.sh

3.1. Создаём systemd unit

Файл: /etc/systemd/system/ovs-qos.service

[Unit]
Description=Apply OVS QoS after boot
After=network.target openvswitch-switch.service
Requires=openvswitch-switch.service

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/ovs-qos.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

 

3.2. Включаем автозапуск

 

systemctl daemon-reload
systemctl enable ovs-qos.service
systemctl start ovs-qos.service