ip addr show
来自 Kubernetes Pod 的输出
root@customer-fd99fb7dc-82hrr:/app# ip -c addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 8e:e3:d2:b5:d2:94 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.171.139/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::8ce3:d2ff:feb5:d294/64 scope link
valid_lft forever preferred_lft forever
etho0@1f6
是该对的一端veth
。这解释了qdisc noqueue
我对 noqueue qdisc 的理解是,它立即发送网络数据包(如果可以的话),否则会丢弃它。所以,我假设 noqueue 不受任何队列支持。但是,qlen 1000
与我的理解相矛盾。
这是否意味着noqueue
有一个内部队列?我可以将 noqueue qdisc 视为 pfifo_fast 减去 3 个内部类/带吗?
答案1
qlen
是用ip link set eth0 txqueuelen 1000
或ifconfig eth0 txqueuelen 1000
(参见 ifconfig(8))
在内核中它被称为dev->tx_queue_len
并且默认为DEFAULT_TX_QUEUE_LEN = 1000
.这就是所ip link ls
显示的。
当排队规则附加到设备时,它会获取设备qlen
设置并使用它。当您将 qdisc 替换为另一个 qdisc 时,它仍然使用相同的qlen
.或者像noqueue
qdisc 那样忽略它。
(免责声明:不是内核专家)