Re: xdp forward issue
David Ahern <[email protected]> Tue, 6 Dec 2022 13:10:12 -0700
| Newsgroups | org.kernel.vger.xdp-newbies |
|---|---|
| Message-ID | <[email protected]> |
On 12/6/22 9:43 AM, team lnx wrote:
> Hello,
>
> I am a beginner for xdp and following is the setup
>
> 3rd party Board - (64 bit arch): This has 2 ethernet interfaces
> supporting XDP (v0 and v1)
> Host machine: Ubuntu
>
> step 1: 3rd party Board <-----connected over ethernet (v0) ------> Host - Ubuntu
> step 2: echo "1" > /proc/sys/net/ipv4/ip_forward
> step 3: Assign static ip address for v0 and v1
> step 4: run: xdp_fwd -D v0 v1 on 3rd party Board
> step 5: start ping from host to v0 of 3rd party Board with expectation
> of forwarding from v0 to v1
>
> Observation : In the above experiment I see xdp_fwd has a return code
> always set to XDP_PASS and when I traced it found that below
> conditions is the reason
> in net/core/filter.c
> if (res.type != RTN_UNICAST) {
> return BPF_FIB_LKUP_RET_NOT_FWDED;
> }
>
> 1. Could you please help in understanding the reason behind this ?
RTN_LOCAL means delivery to a local process -- ie., nothing to forward
to another device / host.
RTN_MULTICAST and RTN_BROADCAST: broadcast is not supported. Multicast
... I forget how to use that. The fib lookup and xdp_fwd test predates
multicast support
> 2. Once #1 is resolved, do we need to add manually arp table/neighbor
> information as well ?
>
the xdp_fwd app is a demo. In a production deployment, you will need to
have something manage the neighbor entries for hosts. e.g., look at `ip
neigh ... managed` if you have a new enough kernel.