On 4/2/18 12:03 PM, John Fastabend wrote: > > Can the above be a normal BPF helper that returns an > ifindex? Then something roughly like this patter would > work for all drivers with redirect support, > > > route_ifindex = ip_route_lookup(__daddr, ....) > if (!route_ifindex) > return do_foo() > return xdp_redirect(route_ifindex); > > So my suggestion is, > > 1. enable veth xdp (including redirect support) > 2. add a helper to lookup route from routing table > > Alternatively you can skip step (2) and encode the routing > table in BPF directly. Maybe we need a more efficient data > structure but that should also work. >
That's what I have here: https://github.com/dsahern/linux/commit/bab42f158c0925339f7519df7fb2cde8eac33aa8 And Jesper has done some measurements showing a 400% improvement in throughput. I have not had time to come back to the xdp forwarding set. It needs to handle vlan devices at a minimum before I send an RFC.