Как проверить, активна ли сетевая политика QoS в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы узнаете, как проверить, активна ли политика качества обслуживания сети (Quality of Service, QoS) в Linux. Вы будете использовать мощную команду tc для перечисления и проверки дисциплин и классов QoS, настроенных на ваших сетевых интерфейсах.

В частности, сначала вы используете команду tc qdisc show для перечисления активных дисциплин очереди и понимания их роли в управлении сетевым трафиком. Затем вы узнаете, как проверить классы QoS с помощью команды tc class, которые используются для классификации и приоритизации различных типов трафика. Наконец, вы научитесь проверять файлы сетевой конфигурации в каталоге /etc/network, чтобы понять, как политики QoS могут быть постоянно настроены.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/help -.-> lab-558741{{"Как проверить, активна ли сетевая политика QoS в Linux"}} linux/man -.-> lab-558741{{"Как проверить, активна ли сетевая политика QoS в Linux"}} linux/ls -.-> lab-558741{{"Как проверить, активна ли сетевая политика QoS в Linux"}} linux/cat -.-> lab-558741{{"Как проверить, активна ли сетевая политика QoS в Linux"}} linux/ifconfig -.-> lab-558741{{"Как проверить, активна ли сетевая политика QoS в Linux"}} linux/netstat -.-> lab-558741{{"Как проверить, активна ли сетевая политика QoS в Linux"}} linux/ip -.-> lab-558741{{"Как проверить, активна ли сетевая политика QoS в Linux"}} end

Перечисление дисциплин QoS с помощью команды tc qdisc

На этом этапе вы узнаете, как перечислить дисциплины качества обслуживания сети (Quality of Service, QoS) с использованием команды tc. QoS представляет собой набор технологий, которые управляют сетевым трафиком для уменьшения потери пакетов, задержки и дребезга. Команда tc является мощным инструментом в Linux для настройки управления трафиком.

Команда tc qdisc используется для управления дисциплинами очереди. Дисциплина очереди (qdisc) - это часть ядра Linux, которая определяет планирование пакетов.

Чтобы перечислить в настоящее время настроенные дисциплины QoS на ваших сетевых интерфейсах, откройте терминал и введите следующую команду:

tc qdisc show

Нажмите Enter.

Вы должны увидеть вывод, похожий на следующий:

qdisc noqueue 0: dev lo root refcnt 2
qdisc fq_codel 0: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn

Разберём вывод:

  • qdisc: Указывает, что эта строка описывает дисциплину очереди.
  • noqueue 0: dev lo: Показывает дисциплину очереди для локального интерфейса (lo). noqueue означает, что очередь не используется, так как трафик на локальном интерфейсе обычно не подлежит регулированию.
  • fq_codel 0: dev eth0: Показывает дисциплину очереди для сетевого интерфейса eth0. fq_codel - это конкретный тип дисциплины очереди, который объединяет Fair Queueing (FQ) с Controlled Delay (CoDel).
  • root: Указывает, что это корневая дисциплина очереди для устройства.
  • Остальные параметры (refcnt, limit, flows и т.д.) относятся к дисциплине очереди fq_codel и контролируют ее поведение.

Вывод, который вы увидите, может отличаться в зависимости от параметров по умолчанию сетевых интерфейсов в среде LabEx. Главное - понять, что команда tc qdisc show перечисляет активные дисциплины очереди.

Теперь попробуйте перечислить дисциплины очереди для конкретного интерфейса, например eth0:

tc qdisc show dev eth0

Нажмите Enter.

Эта команда покажет только дисциплину очереди, настроенную на интерфейсе eth0.

Понимание вывода команды tc qdisc show является первым шагом в управлении сетевым трафиком с помощью tc.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка классов QoS с помощью команды tc class

На предыдущем этапе вы узнали о дисциплинах очереди (qdisc). Теперь давайте рассмотрим классы QoS с использованием команды tc class.

В то время как дисциплины очереди определяют общее поведение планирования на интерфейсе, классы используются в определенных дисциплинах очереди (например, HTB или CBQ) для создания иерархических структур и применения различных правил к разным типам трафика. Представьте классы как категории или подразделения внутри дисциплины очереди.

Чтобы перечислить в настоящее время настроенные классы QoS, вам нужно указать сетевой интерфейс и родительскую дисциплину очереди или класс. Поскольку стандартная дисциплина очереди fq_codel на интерфейсе eth0 не использует иерархию классов так же, как некоторые другие дисциплины очереди, выполнение команды tc class show dev eth0 напрямую, возможно, изначально не покажет никаких классов.

Давайте попробуем выполнить эту команду, чтобы посмотреть на вывод:

tc class show dev eth0

Нажмите Enter.

Вероятно, вы не увидите никакого вывода или увидите вывод, указывающий, что классы не определены, похожий на следующий:

Это ожидаемо, так как fq_codel - это безклассовая дисциплина очереди. Безклассовые дисциплины очереди выполняют свою работу без необходимости классификации трафика на разные группы.

Однако, если была настроена дисциплина очереди, такая как HTB (Hierarchical Token Bucket) или CBQ (Class Based Queueing), вы бы увидели список классов, определенных в рамках этой дисциплины очереди, с указанием их параметров, таких как ограничения по пропускной способности, приоритеты и т.д.

Например, если на интерфейсе eth0 была настроена дисциплина HTB, вывод может выглядеть примерно так (это всего лишь пример, вы не увидите такого вывода в текущей среде):

class htb 1:1 root prio 0 rate 100Mbit ceil 100Mbit burst 1600b cburst 1600b
class htb 1:10 parent 1:1 prio 1 rate 50Mbit ceil 80Mbit burst 1600b cburst 1600b
class htb 1:20 parent 1:1 prio 2 rate 20Mbit ceil 30Mbit burst 1600b cburst 1600b

В этом гипотетическом примере:

  • class htb: Указывает на класс HTB.
  • 1:1: Идентификатор корневого класса.
  • 1:10, 1:20: Идентификаторы дочерних классов, находящихся под корневым классом 1:1.
  • rate, ceil: Определяют гарантированную и максимальную пропускную способность для класса.
  • prio: Определяет приоритет класса.

Хотя в стандартной конфигурации вы не видите классы, понимание команды tc class show является важным для работы с дисциплинами очереди, поддерживающими классы, когда они настроены.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка конфигурации QoS в директории /etc/network

На предыдущих шагах вы использовали команду tc для просмотра текущих активных конфигураций QoS. В то время как tc показывает состояние во время выполнения, конфигурационные файлы часто определяют, как эти настройки применяются при запуске системы или включении сетевых интерфейсов.

На системах на основе Debian, таких как Ubuntu, настройки сетевых интерфейсов часто управляются в файле /etc/network/interfaces и файлах в директории /etc/network/interfaces.d/. Эти файлы могут включать команды, которые должны быть выполнены при настройке интерфейса, включая команды tc для настройки QoS.

Давайте проверим основной файл конфигурации сети. Откройте терминал и используйте команду cat для просмотра содержимого файла /etc/network/interfaces:

cat /etc/network/interfaces

Нажмите Enter.

Вы увидите базовую конфигурацию сетевого интерфейса. В среде LabEx вывод может выглядеть примерно так:

## interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Этот файл определяет локальный интерфейс (lo) и основной сетевой интерфейс (eth0), который настроен на использование DHCP для получения IP - адреса.

Конфигурации QoS обычно не размещаются непосредственно в файле /etc/network/interfaces для сложных настроек. Вместо этого они часто включаются в отдельные скрипты или фрагменты конфигурации, которые выполняются при включении интерфейса. Эти фрагменты могут находиться в директории /etc/network/if - up.d/. Скрипты в этой директории выполняются после включения сетевого интерфейса.

Давайте перечислим файлы в директории /etc/network/if - up.d/, чтобы узнать, есть ли какие - то скрипты, связанные с QoS или управлением трафиком:

ls /etc/network/if-up.d/

Нажмите Enter.

Вывод покажет файлы, присутствующие в этой директории. Вы, возможно, увидите различные скрипты, связанные с конфигурацией сети, но, вероятно, нет ни одного, специально предназначенного для сложных настроек QoS в этой базовой среде.

## Example output (may vary)
avahi-autoipd  ethtool  mountnfs  ntp  openssh-server  resolvconf  upstart

Если бы были скрипты, предназначенные для применения правил tc при запуске системы, они обычно располагались бы здесь. Например, скрипт с именем qos - setup в этой директории мог бы содержать команды tc для настройки дисциплин очереди и классов.

Хотя в этой базовой среде вы не нашли явных конфигураций QoS в этих стандартных местах, знание, где искать (/etc/network/interfaces, /etc/network/interfaces.d/ и /etc/network/if - up.d/), является важным для понимания того, как QoS постоянно настраивается в системе Linux.

Нажмите Продолжить, чтобы завершить этот практический урок.

Резюме

В этом практическом уроке вы узнали, как проверить, активна ли сетевая политика QoS в Linux. Вы начали с использования команды tc qdisc show для перечисления активных дисциплин очереди на своих сетевых интерфейсах, понимая, что дисциплины очереди определяют планирование пакетов и являются ключевой частью конфигурации QoS. Вы проанализировали вывод, чтобы определить тип дисциплины очереди и связанный сетевой интерфейс, а также узнали, как перечислить дисциплины очереди для конкретного интерфейса с помощью команды tc qdisc show dev <interface>.