Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unclear kernel requirements for ePPing #49

Open
simosund opened this issue Jun 22, 2022 · 1 comment
Open

Unclear kernel requirements for ePPing #49

simosund opened this issue Jun 22, 2022 · 1 comment

Comments

@simosund
Copy link
Contributor

With the recent PR#47, ePPing requires a very recent kernel patch to run with XDP (which is the default), which I'm guessing very few Linux devices out there currently have. If attempting to run ePPing (in XDP mode) without this patch the verifier will reject the program (with a somewhat confusing error message), and it may be very unclear for a user what the issue is.

So should probably clarify that the issue is due to an unsupported kernel version, by for example adding an error message that includes suggestions to try with a newer kernel (or a kernel with the mentioned patch backported), or possibly to try and run it with the tc hook instead.

Mostly leaving this as a TODO for myself, so I don't forget it when I get back from my vacation.

@sferlin
Copy link

sferlin commented Jun 22, 2022

Can we try the default (xdp) and fail with a message pointing to the patch and keep running with the tc hook?

Enjoy your vacation!

simosund added a commit to simosund/bpf-examples that referenced this issue Nov 3, 2022
Using the XDP ingress hook requires a newer kernel (needs Toke's patch
fixing the verification of global function for BPF_PROG_TYPE_EXT
programs) than tc mode, is will likely perform worse than tc if
running in generic mode (due to no driver support for
XDP). Furthermore, even when XDP works and has driver support, its
performance benefit over tc is likely small as the packets are always
passed on to the network stack regardless (not creating a fast-path
that bypasses the network stack). Therefore, use the tc ingress hook
as default instead, and only use XDP if explicitly required by the
user (-I/--ingress hook xdp).

This partly addresses issue xdp-project#49, as ePPing should no longer by default
get the confusing error message from failing verification if the
kernel lacks Toke's verifier patch.

Signed-off-by: Simon Sundberg <[email protected]>
simosund added a commit to simosund/bpf-examples that referenced this issue Nov 8, 2022
Using the XDP ingress hook requires a newer kernel (needs Toke's patch
fixing the verification of global function for BPF_PROG_TYPE_EXT
programs) than tc mode, is will likely perform worse than tc if
running in generic mode (due to no driver support for
XDP). Furthermore, even when XDP works and has driver support, its
performance benefit over tc is likely small as the packets are always
passed on to the network stack regardless (not creating a fast-path
that bypasses the network stack). Therefore, use the tc ingress hook
as default instead, and only use XDP if explicitly required by the
user (-I/--ingress hook xdp).

This partly addresses issue xdp-project#49, as ePPing should no longer by default
get the confusing error message from failing verification if the
kernel lacks Toke's verifier patch.

Signed-off-by: Simon Sundberg <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants