Создайте очереди OVS – Параметр всплеска родительской очереди не может быть обновлен.

Вопрос или проблема

Я создаю этот QoS с помощью OVS. Я заменяю intf, max и min во время выполнения

ovs-vsctl -- set port {intf} qos=@newqos -- --id=@newqos create qos type=linux-htb \
  other-config:burst=1280000 other-config:max-rate={max} queues=0=@q0,1=@q1 \
  -- --id=@q0 create queue other-config:burst=1280000 other_config:priority=2 other-config:max-rate={max} other-config:min-rate={min} \
  -- --id=@q1 create queue other-config:burst=1280000 other_config:priority=1 other-config:max-rate={max} other-config:min-rate={min}

Проблема в том, что это создает странные конфигурации

class htb 1:1 parent 1:fffe prio 2 rate 500Mbit ceil 1Gbit burst 160000b cburst 160000b 
class htb 1:fffe root rate 1Gbit ceil 1Gbit burst 1375b cburst 1375b 
class htb 1:2 parent 1:fffe prio 1 rate 500Mbit ceil 1Gbit burst 160000b cburst 160000b 

Обратите внимание, как у очереди родителя меньшие значения burst и cburst. Я пробовал слишком много команд, но не смог изменить это поведение.

Я попытался обновить burst и cburst очереди родителя позже с помощью этой команды

sudo tc class replace dev as1-eth2 parent 1: classid 1:fffe htb rate {min} ceil {max} burst 160000 cburst 160000

Это работает!! Но через несколько минут он вернется к старому значению!

Как преодолеть эту проблему?

$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.04.5 LTS"
---------------------
$ uname -r
6.8.0-49-generic
--------------------------
$ ovs-vsctl --version
(Open vSwitch) 3.3.3
DB Schema 8.5.0 

С уважением

Ответ или решение

Вопрос, который вы поднимаете, касается настройки качества обслуживания (QoS) в Open vSwitch (OVS) с использованием очередей. Основная проблема, с которой вы столкнулись, заключается в том, что значения burst и cburst у родительской очереди пересоздаются и не сохраняются после временного обновления, что создает конфликты в конфигурации. Давайте рассмотрим возможные решения данной ситуации.

1. Понимание проблемы

Ваши команды создают QoS-конфигурацию с использованием классического метода token bucket (HTB). Однако, после изменения конфигурации с помощью команды tc class replace, значения параметров burst и cburst родительского класса возвращаются к прежним, неоптимальным значениям. Это происходит, скорее всего, из-за того, что Open vSwitch управляет очередями и параметрами QoS в своем внутреннем контексте, и данные, измененные через tc, не сохраняются при следующем обновлении описания порта OVS.

2. Альтернативные подходы

2.1 Устойчивое изменение конфигурации

Существует несколько способов зафиксировать ваши изменения. Для начала, попробуйте установить параметры непосредственно в конфигурации OVS, чтобы избежать нежелательных возвратов к старым значениям:

ovs-vsctl -- set QoS {id} other-config:burst={new_burst} other-config:cburst={new_cburst}

2.2 Использование скриптов

Если ваши параметры должны регулярно изменяться или корректироваться, можно настроить автоматизированный скрипт на cron, который будет периодически проверять и обновлять значение burst и cburst на состояние, соответствующее вашим требованиям.

Пример команды в скрипте:

#!/bin/bash

TARGET_BURST=160000
TARGET_CBURST=160000

current_burst=$(tc class show dev as1-eth2 classid 1:fffe | grep burst | awk '{print $4}')
if [ "$current_burst" -ne "$TARGET_BURST" ]; then
    sudo tc class replace dev as1-eth2 parent 1: classid 1:fffe htb rate {min} ceil {max} burst $TARGET_BURST cburst $TARGET_CBURST
fi

3. Изучение системных логов

Также рекомендуется проверить системные логи и логи OVS на наличие ошибок или предупреждений, которые могли бы указывать на проблемы с применением структуры очередей. Это может дать полезные подсказки о том, почему значения меняются.

4. Проверка версий и обновлений

Будьте уверены, что вы используете последние стабильные версии OVS и ядра, так как ошибки в предыдущих версиях могут быть причиной неправильного управления QoS. Проверьте наличие обновлений для OVS и Ubuntu:

sudo apt update
sudo apt upgrade

5. Возвращение к классическому TC

Если проблема сохраняется, и Open vSwitch не справляется с вашей конфигурацией, рассмотрите использование традиционного инструмента tc для настройки очередей и QoS в ядре Linux без использования OVS. Это может дать больше контроля и прозрачности над настройками.

Заключение

Проблемы, связанные с управлением параметрами QoS в OVS, требуют всестороннего подхода. Убедитесь, что вы используете верные команды и методы, проводите регулярные проверки вашей конфигурации, и рассматривайте автоматизацию для поддержания нужных значений в условиях динамичной среды. Если у вас возникают дополнительные вопросы или затруднения, могу помочь вам с их решением.

Оцените материал
Добавить комментарий

Капча загружается...