From: David Ahern <dsahern@gmail.com>
To: Jason Wang <jasowang@redhat.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Subject: xdp and fragments with virtio
Date: Tue, 15 May 2018 21:51:29 -0600 [thread overview]
Message-ID: <e35c149e-cb15-bb8c-2e03-d1641d21d694@gmail.com> (raw)
Hi Jason:
I am trying to test MTU changes to the BPF fib_lookup helper and seeing
something odd. Hoping you can help.
I have a VM with multiple virtio based NICs and tap backends. I install
the xdp program on eth1 and eth2 to do forwarding. In the host I send a
large packet to eth1:
$ ping -s 1500 9.9.9.9
The tap device in the host sees 2 packets:
$ sudo tcpdump -nv -i vm02-eth1
20:44:33.943160 IP (tos 0x0, ttl 64, id 58746, offset 0, flags [+],
proto ICMP (1), length 1500)
10.100.1.254 > 9.9.9.9: ICMP echo request, id 17917, seq 1, length 1480
20:44:33.943172 IP (tos 0x0, ttl 64, id 58746, offset 1480, flags
[none], proto ICMP (1), length 48)
10.100.1.254 > 9.9.9.9: ip-proto-1
In the VM, the XDP program only sees the first packet, not the fragment.
I added a printk to the program (see diff below):
$ cat trace_pipe
<idle>-0 [003] ..s2 254.436467: 0: packet length 1514
Anything come to mind in the virtio xdp implementation that affects
fragment packets? I see this with both IPv4 and v6.
Thanks,
David
[1] xdp program diff showing printk that dumps packet length:
diff --git a/samples/bpf/xdp_fwd_kern.c b/samples/bpf/xdp_fwd_kern.c
index 4a6be0f87505..f119b506e782 100644
--- a/samples/bpf/xdp_fwd_kern.c
+++ b/samples/bpf/xdp_fwd_kern.c
@@ -52,6 +52,11 @@ static __always_inline int xdp_fwd_flags(struct
xdp_md *ctx, u32 flags)
u16 h_proto;
u64 nh_off;
+ {
+ char fmt[] = "packet length %u\n";
+
+ bpf_trace_printk(fmt, sizeof(fmt), ctx->data_end-ctx->data);
+ }
nh_off = sizeof(*eth);
if (data + nh_off > data_end)
return XDP_DROP;
next reply other threads:[~2018-05-16 3:51 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-16 3:51 David Ahern [this message]
2018-05-16 7:24 ` xdp and fragments with virtio Jason Wang
2018-05-17 2:55 ` David Ahern
2018-05-17 9:24 ` Jason Wang
2018-05-18 16:42 ` David Ahern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e35c149e-cb15-bb8c-2e03-d1641d21d694@gmail.com \
--to=dsahern@gmail.com \
--cc=jasowang@redhat.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).