qemu-kvm:虚拟网络丢包实例UDP:virtionet-tun-bridge-tun-virtionet

244 篇文章 ¥59.90 ¥99.00
在RHEL-7客户端虚拟机与RHEL-8主机系统环境中,开启UFO功能时,遇到特定UDP长度(约1478字节)范围内的包丢失问题。这些包在桥接层的is_skb_forwardable检查中被误判,因大小超过MTU且不满足GSO条件而被丢弃。该问题与主机内核中的两个commit相关,涉及对小包GSO逻辑的优化。解决方案需关注内核版本及配置。

这个问题发生在
RHEL-7客户端虚拟机;RHEL-8作为主机系统;
同时RHEL-7的UFO打开;

此时可能出现小范围的打包丢失情况;怎么个小范围内,也就是某个大小值(UDP长度大约是1478)左右四个字节内的变化。

后续处理时,在bridge中做is_skb_forwardable时,
包UDP长度1478字节左右有那面四个字节范围内的包,会被一种逻辑给吃掉,传递不下去。这种包被判定为,既不属于GSO的包,同时整个长度还大于出端口的MTU值,然后被丢掉。
为什么会出现这种情况呢?如果去看相应内核版本的changelog,我们可以发现如下的两个commi;关于gso的一些性能优化;作用就是对小包做了判断,如果是小包,就不要走GSO的逻辑。

主机内核版本带有如下两个commit
- net: be more gentle about silly gso requests coming from user (Paolo Abeni) [2018437]
- net: check untrusted gso_size at kernel entry (Paolo Abeni) [2018437]

因为这两个改动,牵扯到一处改动;作用是对于小包,没有必要走入GSO的逻辑;
/* Too small packets are not really GSO ones. */
if (skb->len - p_off > gso_size) {

https://download.csdn.net/download/qq_36428903/86503284
https://bugzilla.redhat.com/show_bug.cgi?id=2123369

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mzhan017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值