虚拟网卡对定位
veth 是成对出现的虚拟以太网设备:从一端进入的报文会直接从另一端出去,是容器网络与命名空间互联的基础设施。每块 veth 在系统里记录着对端接口的索引,据此可以找到配对的另一头;再结合两侧的收发、丢弃与队列统计,就能判断丢包发生在容器侧还是宿主侧。
基本信息
| 适用平台 | Linux(容器与隧道叠加网络) |
|---|---|
| 配对依据 | 接口目录下的对端索引文件 |
| 统计位置 | 接口收发与丢弃计数、队列统计 |
| 常见场景 | 容器网络与命名空间互联 |
| 注意点 | veth 没有物理链路,多数物理网卡参数不适用 |
典型使用场景
- 容器间通信丢包,需要判断问题在容器内协议栈还是宿主侧转发。
- 容器内网络延迟偏高,怀疑队列积压或对端读取慢。
- 核对容器的接口命名与实际配对关系,避免改错设备。
- 与队列统计结合确认缓存膨胀与丢包是否同源。
- 排查叠加网络中 MTU 与统计异常的组合问题。
配对与统计
配对与统计
ip -d link show type veth # 列出所有 veth 与配对信息
cat /sys/class/net/veth1234/iflink # 读出对端接口索引,用于找到另一头
ip -s link show veth1234 # 本侧收发与丢弃、错误计数
ip -s link show eth0 # 与对侧对照,判断丢在哪一段
tc -s qdisc show dev veth1234 # 查看队列积压与队列层丢包计数统计判读
| 观察点 | 含义 | 下一步 |
|---|---|---|
| 丢弃计数在哪侧增长 | 问题偏向该侧的处理路径 | 结合队列与协议栈统计继续下钻 |
| 队列积压且无丢弃 | 对端消费慢 | 看对端应用与调度情况 |
| 两侧都无异常但业务异常 | 可能不在链路层 | 转向应用日志与连接状态 |
veth 同样有发送队列:对端读取慢时,报文会先在本侧队列积压,表现为发送侧统计变化,而不是立刻出现丢弃。
按物理网卡的思路去调 veth 的卸载特性或网卡参数通常没有效果,先确认配对关系与队列统计再动手。