So prüfen Sie, ob eine Netzwerk-QoS-Richtlinie in Linux aktiv ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob eine Netzwerk-Quality of Service (QoS)-Richtlinie in Linux aktiv ist. Sie verwenden den leistungsstarken Befehl tc, um die konfigurierten QoS-Disziplinen und -Klassen auf Ihren Netzwerkschnittstellen aufzulisten und zu untersuchen.

Insbesondere verwenden Sie zunächst tc qdisc show, um die aktiven Warteschlangenverwaltungsmethoden (Queueing Disciplines) aufzulisten und deren Rolle bei der Verwaltung des Netzwerkverkehrs zu verstehen. Anschließend erfahren Sie, wie Sie mit tc class die QoS-Klassen prüfen können, die dazu dienen, verschiedene Arten von Verkehr zu kategorisieren und zu priorisieren. Schließlich lernen Sie, wie Sie die Netzwerkkonfigurationsdateien in /etc/network untersuchen, um zu verstehen, wie QoS-Richtlinien dauerhaft konfiguriert werden können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) 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{{"So prüfen Sie, ob eine Netzwerk-QoS-Richtlinie in Linux aktiv ist"}} linux/man -.-> lab-558741{{"So prüfen Sie, ob eine Netzwerk-QoS-Richtlinie in Linux aktiv ist"}} linux/ls -.-> lab-558741{{"So prüfen Sie, ob eine Netzwerk-QoS-Richtlinie in Linux aktiv ist"}} linux/cat -.-> lab-558741{{"So prüfen Sie, ob eine Netzwerk-QoS-Richtlinie in Linux aktiv ist"}} linux/ifconfig -.-> lab-558741{{"So prüfen Sie, ob eine Netzwerk-QoS-Richtlinie in Linux aktiv ist"}} linux/netstat -.-> lab-558741{{"So prüfen Sie, ob eine Netzwerk-QoS-Richtlinie in Linux aktiv ist"}} linux/ip -.-> lab-558741{{"So prüfen Sie, ob eine Netzwerk-QoS-Richtlinie in Linux aktiv ist"}} end

Auflisten von QoS-Disziplinen mit tc qdisc

In diesem Schritt lernen Sie, wie Sie Quality of Service (QoS)-Disziplinen mit dem Befehl tc auflisten können. QoS ist eine Reihe von Technologien, die den Netzwerkverkehr verwalten, um Paketverluste, Latenz und Jitter zu reduzieren. Der Befehl tc ist ein leistungsstarkes Werkzeug in Linux zur Konfiguration der Verkehrssteuerung.

Der Befehl tc qdisc wird zur Verwaltung von Warteschlangenverwaltungsmethoden (Queueing Disciplines) verwendet. Eine Warteschlangenverwaltungsmethode (qdisc) ist der Teil des Linux-Kernels, der die Planung von Paketen bestimmt.

Um die derzeit konfigurierten QoS-Disziplinen auf Ihren Netzwerkschnittstellen aufzulisten, öffnen Sie das Terminal und geben Sie den folgenden Befehl ein:

tc qdisc show

Drücken Sie die Eingabetaste.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

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

Lassen Sie uns die Ausgabe analysieren:

  • qdisc: Zeigt an, dass diese Zeile eine Warteschlangenverwaltungsmethode beschreibt.
  • noqueue 0: dev lo: Zeigt die qdisc für die Loopback-Schnittstelle (lo). noqueue bedeutet, dass keine Warteschlangenverwaltung stattfindet, da der Verkehr auf der Loopback-Schnittstelle normalerweise nicht geformt wird.
  • fq_codel 0: dev eth0: Zeigt die qdisc für die Netzwerkschnittstelle eth0. fq_codel ist eine spezifische Art von qdisc, die Fair Queueing (FQ) mit Controlled Delay (CoDel) kombiniert.
  • root: Zeigt an, dass dies die Root-qdisc für das Gerät ist.
  • Die übrigen Parameter (refcnt, limit, flows usw.) sind spezifisch für die fq_codel-qdisc und steuern ihr Verhalten.

Die Ausgabe, die Sie sehen, kann je nach Standardkonfiguration der Netzwerkschnittstellen in der LabEx-Umgebung variieren. Der wichtigste Aspekt ist das Verständnis, dass tc qdisc show die aktiven Warteschlangenverwaltungsmethoden auflistet.

Versuchen Sie nun, die qdiscs für eine bestimmte Schnittstelle, wie eth0, aufzulisten:

tc qdisc show dev eth0

Drücken Sie die Eingabetaste.

Dieser Befehl zeigt nur die auf der Schnittstelle eth0 konfigurierte qdisc an.

Das Verständnis der Ausgabe von tc qdisc show ist der erste Schritt bei der Verwaltung des Netzwerkverkehrs mit tc.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Prüfen von QoS-Klassen mit tc class

Im vorherigen Schritt haben Sie sich mit Warteschlangenverwaltungsmethoden (qdisc) vertraut gemacht. Jetzt wollen wir uns mit QoS-Klassen befassen, indem wir den Befehl tc class verwenden.

Während qdiscs das allgemeine Planungsverhalten auf einer Schnittstelle definieren, werden Klassen innerhalb bestimmter qdiscs (wie HTB oder CBQ) verwendet, um hierarchische Strukturen zu erstellen und unterschiedliche Regeln auf verschiedene Arten von Verkehr anzuwenden. Stellen Sie sich Klassen als Kategorien oder Unterteilungen innerhalb einer qdisc vor.

Um die derzeit konfigurierten QoS-Klassen aufzulisten, müssen Sie die Netzwerkschnittstelle und die übergeordnete qdisc oder Klasse angeben. Da die Standard-qdisc fq_codel auf eth0 nicht in der gleichen Weise wie einige andere qdiscs eine Klassenhierarchie verwendet, zeigt das direkte Ausführen von tc class show dev eth0 zunächst möglicherweise keine Klassen an.

Lassen Sie uns den Befehl dennoch ausprobieren, um die Ausgabe zu sehen:

tc class show dev eth0

Drücken Sie die Eingabetaste.

Es ist wahrscheinlich, dass Sie keine Ausgabe sehen oder eine Ausgabe, die darauf hinweist, dass keine Klassen definiert sind, ähnlich wie hier:

Dies ist zu erwarten, da fq_codel eine klasselose qdisc ist. Klasselose qdiscs führen ihre Arbeit aus, ohne den Verkehr in verschiedene Gruppen einteilen zu müssen.

Wenn jedoch eine qdisc wie HTB (Hierarchical Token Bucket) oder CBQ (Class Based Queueing) konfiguriert wäre, würden Sie eine Liste der unter dieser qdisc definierten Klassen sehen, die ihre Parameter wie Bandbreitenlimits, Prioritäten usw. anzeigen.

Beispielsweise könnte die Ausgabe, wenn HTB auf eth0 konfiguriert wäre, so aussehen (dies ist nur ein Beispiel, Sie werden diese Ausgabe in der aktuellen Umgebung nicht sehen):

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

In diesem hypothetischen Beispiel:

  • class htb: Zeigt eine HTB-Klasse an.
  • 1:1: Der Handle für die Root-Klasse.
  • 1:10, 1:20: Handles für untergeordnete Klassen unter der Root-Klasse 1:1.
  • rate, ceil: Definieren die garantierte und maximale Bandbreite für die Klasse.
  • prio: Definiert die Priorität der Klasse.

Obwohl Sie in der Standardkonfiguration keine Klassen sehen, ist das Verständnis des Befehls tc class show von entscheidender Bedeutung, wenn Sie mit klassifizierenden qdiscs arbeiten, wenn diese konfiguriert sind.

Klicken Sie auf Weiter, um zum nächsten Schritt zu gelangen.

Prüfen der QoS-Konfiguration in /etc/network

In den vorherigen Schritten haben Sie den Befehl tc verwendet, um die derzeit aktiven QoS-Konfigurationen anzuzeigen. Während tc den Laufzeitzustand zeigt, bestimmen die Konfigurationsdateien oft, wie diese Einstellungen angewendet werden, wenn das System startet oder Netzwerkschnittstellen aktiviert werden.

Auf Debian-basierten Systemen wie Ubuntu werden Netzwerkschnittstellenkonfigurationen oft in der Datei /etc/network/interfaces und in Dateien im Verzeichnis /etc/network/interfaces.d/ verwaltet. Diese Dateien können Befehle enthalten, die ausgeführt werden sollen, wenn eine Schnittstelle konfiguriert wird, einschließlich tc-Befehle zur Einrichtung von QoS.

Lassen Sie uns die Hauptnetzwerkkonfigurationsdatei untersuchen. Öffnen Sie das Terminal und verwenden Sie den Befehl cat, um den Inhalt von /etc/network/interfaces anzuzeigen:

cat /etc/network/interfaces

Drücken Sie die Eingabetaste.

Sie werden die grundlegende Netzwerkschnittstellenkonfiguration sehen. In dieser LabEx-Umgebung könnte die Ausgabe so aussehen:

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

auto eth0
iface eth0 inet dhcp

Diese Datei definiert die Loopback-Schnittstelle (lo) und die primäre Netzwerkschnittstelle (eth0), die so konfiguriert ist, dass sie DHCP verwendet, um eine IP-Adresse zu erhalten.

QoS-Konfigurationen werden bei komplexen Einstellungen normalerweise nicht direkt in /etc/network/interfaces platziert. Stattdessen werden sie oft in separaten Skripten oder Konfigurationsausschnitten enthalten, die ausgeführt werden, wenn die Schnittstelle aktiviert wird. Diese Ausschnitte befinden sich möglicherweise im Verzeichnis /etc/network/if-up.d/. Skripts in diesem Verzeichnis werden ausgeführt, nachdem eine Netzwerkschnittstelle aktiviert wurde.

Lassen Sie uns die Dateien im Verzeichnis /etc/network/if-up.d/ auflisten, um zu sehen, ob es Skripte in Bezug auf QoS oder Verkehrssteuerung gibt:

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

Drücken Sie die Eingabetaste.

Die Ausgabe zeigt die im Verzeichnis vorhandenen Dateien. Sie könnten verschiedene Skripte in Bezug auf die Netzwerkkonfiguration sehen, aber in dieser grundlegenden Umgebung wahrscheinlich keine speziell für komplexe QoS-Einstellungen.

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

Wenn es Skripte gäbe, die dazu bestimmt sind, tc-Regeln beim Booten anzuwenden, würden sie normalerweise hier liegen. Beispielsweise könnte ein Skript namens qos-setup in diesem Verzeichnis tc-Befehle enthalten, um qdiscs und Klassen zu konfigurieren.

Obwohl Sie in dieser grundlegenden Umgebung keine expliziten QoS-Konfigurationen in diesen Standardverzeichnissen gefunden haben, ist es wichtig zu wissen, wo man suchen muss (/etc/network/interfaces, /etc/network/interfaces.d/ und /etc/network/if-up.d/), um zu verstehen, wie QoS dauerhaft auf einem Linux-System konfiguriert wird.

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie prüfen können, ob eine Netzwerk-QoS-Richtlinie (Quality of Service, Qualitätsrichtlinie für Netzwerke) in Linux aktiv ist. Sie haben begonnen, indem Sie den Befehl tc qdisc show verwendet haben, um die aktiven Warteschlangenverwaltungsmethoden (queueing disciplines, qdisc) auf Ihren Netzwerkschnittstellen aufzulisten. Dabei haben Sie verstanden, dass qdiscs die Paketplanung bestimmen und ein wichtiger Bestandteil der QoS-Konfiguration sind. Sie haben die Ausgabe untersucht, um den qdisc-Typ und die zugehörige Netzwerkschnittstelle zu identifizieren, und auch gelernt, wie Sie qdiscs für eine bestimmte Schnittstelle mit tc qdisc show dev <interface> auflisten können.