如何检查 Linux 中是否设置了网络队列规则

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习如何检查 Linux 中是否设置了网络队列规则(queue discipline)。你将使用 tc qdisc show 命令列出网络接口上已配置的队列规则,并理解其输出结果。

你还将使用 ip link 命令验证网络接口,并检查 /etc/network 中的网络配置文件,以全面了解你的网络设置以及队列规则的应用方式。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) 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/cat -.-> lab-558742{{"如何检查 Linux 中是否设置了网络队列规则"}} linux/ifconfig -.-> lab-558742{{"如何检查 Linux 中是否设置了网络队列规则"}} linux/netstat -.-> lab-558742{{"如何检查 Linux 中是否设置了网络队列规则"}} linux/ip -.-> lab-558742{{"如何检查 Linux 中是否设置了网络队列规则"}} end

使用 tc qdisc 列出队列规则

在这一步中,你将学习如何使用 tc 命令列出网络接口上已配置的队列规则。

tc 命令是 Linux 中用于流量控制的强大工具。它允许你管理网络流量,包括流量整形、调度和监管。队列规则(queue disciplines,简称 qdiscs)是流量控制的核心。它们决定了数据包在网络接口上的排队和传输方式。

要列出当前配置的队列规则,你将使用 tc qdisc show 命令。

如果终端尚未打开,请打开它。你可以通过点击桌面左侧的 Xfce Terminal 图标来完成此操作。

现在,输入以下命令并按回车键:

tc qdisc show

你应该会看到类似以下的输出:

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:这是队列规则的名称。noqueue 是一种简单的队列规则,不执行任何排队操作;如果接口繁忙,数据包将被丢弃。它通常用于回环接口(lo)。
  • 0::这是队列规则的句柄。
  • dev lo:指定队列规则所关联的网络接口。lo 是回环接口。
  • root:表示这是该接口的根队列规则。
  • refcnt 2:队列规则的引用计数。

第二行显示了 eth0 接口上的 fq_codel 队列规则。fq_codel 是一种更高级的队列规则,它将公平排队(Fair Queuing,FQ)与 CoDel(Controlled Delay)相结合,以提供公平的带宽分配并最大程度减少缓冲区膨胀。

理解队列规则对于优化网络性能和解决网络拥塞问题至关重要。

点击 Continue 进入下一步。

在这一步中,你将使用 ip link 命令来检查系统上的网络接口。ip 命令是 Linux 中用于网络配置的现代且通用的工具,它取代了像 ifconfig 这样的旧工具。

ip link 命令专门用于处理网络接口本身,显示它们的状态、MAC 地址和其他详细信息。

如果终端尚未打开,请打开它。

输入以下命令并按回车键:

ip link show

你应该会看到类似以下的输出,列出了你的网络接口:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff

让我们来看看每个接口提供的关键信息:

  • 1: lo:2: eth0::接口索引和名称。lo 是回环接口,eth0 通常是你的主要网络接口。
  • <LOOPBACK,UP,LOWER_UP><BROADCAST,MULTICAST,UP,LOWER_UP>:表示接口功能和当前状态的标志。UP 表示接口处于活动状态,LOWER_UP 表示物理链路已连接。
  • mtu 65536mtu 1500:最大传输单元(Maximum Transmission Unit),即无需分段即可传输的最大数据包大小。
  • qdisc noqueueqdisc fq_codel:附加到接口的队列规则,如你在上一步中所见。
  • state UNKNOWNstate UP:接口的操作状态。
  • mode DEFAULT:接口的模式。
  • group default:接口所属的组。
  • qlen 1000:传输队列长度。
  • link/loopbacklink/ether:链路层类型。
  • 00:00:00:00:00:00aa:bb:cc:dd:ee:ff:接口的 MAC 地址。
  • brd 00:00:00:00:00:00brd ff:ff:ff:ff:ff:ff:广播 MAC 地址。

ip link show 命令对于快速检查网络接口的状态和配置至关重要。

点击 Continue 继续。

检查 /etc/network 中的网络配置

在这一步中,你将探索位于 /etc/network 目录下的传统网络配置文件。虽然现代 Linux 发行版通常使用 Netplan 或 NetworkManager 等工具,但了解这些较旧的配置文件仍然很有价值,特别是在使用它们的系统上或进行故障排除时。

这种风格的网络接口主要配置文件是 /etc/network/interfaces

如果终端尚未打开,请打开它。

你将使用 cat 命令来显示 /etc/network/interfaces 文件的内容。cat 是一个用于连接和显示文件内容的简单命令。

输入以下命令并按回车键:

cat /etc/network/interfaces

你应该会看到类似以下的输出:

## interfaces(5) file used by ifup(8) and ifdown(8)
## Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

让我们来分析一下内容:

  • #:以 # 开头的行是注释,会被忽略。
  • source-directory /etc/network/interfaces.d:这一行告诉系统包含 /etc/network/interfaces.d 目录下的配置文件。这允许进行模块化的网络配置。
  • auto lo:这一行表示 lo(回环)接口应在系统启动时自动启用。
  • iface lo inet loopback:这一行配置 lo 接口。inet 指定地址族(IPv4),loopback 表示它是一个回环接口。
  • auto eth0:这一行表示 eth0 接口应在系统启动时自动启用。
  • iface eth0 inet dhcp:这一行将 eth0 接口配置为使用 DHCP(动态主机配置协议)自动获取其 IP 地址和其他网络设置。

这个文件提供了一种静态配置网络接口的方法。你可以在这里手动定义 IP 地址、子网掩码、网关和其他设置,而不是使用 DHCP。

虽然在这个实验中你不会修改这个文件,但了解它的位置和基本结构对于理解如何在 Linux 系统上配置网络接口很重要。

点击 Continue 完成这个实验。

总结

在这个实验中,你学习了如何检查 Linux 中是否设置了网络队列规则。你首先使用 tc qdisc show 命令列出网络接口上配置的队列规则,理解包括队列规则名称、接口和类型在内的输出信息。这个命令是检查流量控制设置的基本工具。

你还了解了理解不同队列规则(如 noqueuefq_codel)的重要性,以及它们在管理网络流量和性能方面的作用。这第一步为你提供了一种切实可行的方法,让你了解系统上哪些队列规则处于活动状态。