Разберем настройку QoS для ISCSi, для этого нужно:
- Промаркировать трафик ISCSi со стороны сервера;
- Промаркировать трафик ISCSi со стороны стореджа;
- Настроить коммутатор;
- Проверка маркировки, очередей.
Нужна помощь? Настройки ISCSi и серверов мы осуществляем в рамках услуги ИТ-аутсорсинг. Также возможны разовые проектные работы.
Настраиваем маркировку трафика ISCSi на сервере
- Включаем поддержку QoS в сетевой подсистеме Windows;
- Настройки QoS;
- Настраиваем политики QoS.
Необходимо проверить включен ли в свойствах сетевого интерфейса «Планировщик пакетов QoS».
Настройки QoS в Windows
Настройки QoS коснутся двух моментов – того, как будет обрабатываться входящий TCP-трафик, и того, как будут взаимодействовать политики QoS и установки QoS на уровне отдельных приложений.
Находятся настройки в объекте групповой политики – Computer Configuration / Windows Settings / Policy-based QoS, в контекстном меню Advanced QoS Setting …, вызываемом нажатием правой кнопки мыши.
Данная настройка напрямую влияет на то, какое максимальное значение receive window будет предлагаться при работе TCP-соединений. Начиная с NT 6.0, в Windows появилась поддержка окна TCP размером более 64К. Данная политика и позволяет задать это максимальное значение окна централизованно. При задании уровня 0 окно будет ограничено 64КБ, при 1 – 256КБ, при 2 – 1МБ, а при 3 – 16МБ.
DSCP Marking Override
Данная настройка указывает разрешается или нет приложениям, которые умеют метить трафик, делать это. Если выберете, что в явном виде можно – то политики QoS будут игнорироваться, если нет – вся маркировка будет идти по явно указанной в политиках логике.
Настраиваем политики QoS
При создании политики необходимо указать её название, значение DSCP и ограничение на полосу.
DSCP-метки группы CS – Class Selector
Этот механизм описан в RFC 2474. CS’ов 8 штук – от CS0 до CS7, и выглядит:
- CS0 = 000 000 (в десятичном варианте DSCP = 0);
- CS1 = 001 000 (в десятичном варианте DSCP = 8);
- CS2 = 010 000 (в десятичном варианте DSCP = 16);
- CS3 = 011 000 (в десятичном варианте DSCP = 24);
- CS4 = 100 000 (в десятичном варианте DSCP = 32);
- CS5 = 101 000 (в десятичном варианте DSCP = 40);
- CS6 = 110 000 (в десятичном варианте DSCP = 48);
- CS7 = 111 000 (в десятичном варианте DSCP = 56).
CS7 обычно помечается служебный сетевой трафик.
Применение политики на source/destination TCP/UDP порты
Настраиваем маркировку трафика ISCSi на сторедже
В качестве стореджа будем использовать debian 11. Маркируется трафик в linux фаерволом. В 11-ом вместо iptables, по-умолчанию стоит nftables, его и будем настраивать.
Для настройки выполняем:
nft add table inet QoS_tbl
nft add chain inet QoS_tbl tagin {type route hook output priority -150; policy accept;}
nft add rule inet QoS_tbl tagin tcp dport 3260 ip dscp set cs5
nft add rule inet QoS_tbl tagin tcp sport 3260 ip dscp set cs5
Проверяем:
nft -s list ruleset
Настраиваем коммутатор
В качестве коммутатора используется juniper QFX5100.
Настроим класс пересылки iscsi для трафика iSCSI и сопоставим с очередью вывода:
[edit class-of-service] set class-of-service forwarding-classes class iscsi queue-num 5 no-loss
Настроим сопоставление классификатора для класса пересылки iscsi:
[edit class-of-service classifiers] set dscp iscsi_classifier forwarding-class iscsi loss-priority low code-points 101000 set dscp iscsi_classifier forwarding-class best-effort loss-priority high code-points 000000 set dscp iscsi_classifier forwarding-class best-effort loss-priority high code-points 001000 set dscp iscsi_classifier forwarding-class best-effort loss-priority high code-points 010000 set dscp iscsi_classifier forwarding-class best-effort loss-priority high code-points 011000 set dscp iscsi_classifier forwarding-class best-effort loss-priority high code-points 100000 set dscp iscsi_classifier forwarding-class best-effort loss-priority high code-points 110000 set dscp iscsi_classifier forwarding-class best-effort loss-priority high code-points 111000
Применим классификатор к соответствующим интерфейсам:
[edit class-of-service] set interfaces et-0/0/2 unit 0 classifiers dscp iscsi_classifier set interfaces et-0/0/12 unit 0 classifiers dscp iscsi_classifier set interfaces et-0/0/13 unit 0 classifiers dscp iscsi_classifier set interfaces et-0/0/14 unit 0 classifiers dscp iscsi_classifier
Проверка маркировки, очередей
Корректность маркировки можно проверить с помощью WireShark, в заголовке IP-пакета будет соответствующее поле:
На скриншоте видно что, у пакета, идущего с сервера на сторедж, DSCP = CS5.
На данном скриншоте видим что, у пакета, пришедшего со стореджа на сервер, DSCP также равно CS5.
Проверим очереди на коммутаторе. Для этого на джуне выполним (et-0/0/2 – порт на котором смотрим распределение очередей):
show interfaces queue et-0/0/2