[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <E2A7CC68-9235-4E97-9532-66D61A6B8965@gmail.com>
Date: Wed, 5 Aug 2020 19:26:45 +0900
From: Yoshiki Komachi <komachi.yoshiki@...il.com>
To: John Fastabend <john.fastabend@...il.com>
Cc: "David S. Miller" <davem@...emloft.net>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Jesper Dangaard Brouer <hawk@...nel.org>,
Jakub Kicinski <kuba@...nel.org>,
Martin KaFai Lau <kafai@...com>,
Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>,
Andrii Nakryiko <andriin@...com>,
KP Singh <kpsingh@...omium.org>,
Roopa Prabhu <roopa@...ulusnetworks.com>,
Nikolay Aleksandrov <nikolay@...ulusnetworks.com>,
David Ahern <dsahern@...nel.org>, netdev@...r.kernel.org,
bridge@...ts.linux-foundation.org, bpf@...r.kernel.org
Subject: Re: [RFC PATCH bpf-next 0/3] Add a new bpf helper for FDB lookup
Thanks for giving me a lot of comments! Find my response below, please.
> 2020/08/01 6:52、John Fastabend <john.fastabend@...il.com>のメール:
>
> Yoshiki Komachi wrote:
>> This series adds a new bpf helper for doing FDB lookup in the kernel
>> tables from XDP programs. This helps users to accelerate Linux bridge
>> with XDP.
>>
>> In the past, XDP generally required users to reimplement their own
>> networking functionalities with specific manners of BPF programming
>> by themselves, hindering its potential uses. IMO, bpf helpers to
>> access networking stacks in kernel help to mitigate the programming
>> costs because users reuse mature Linux networking feature more easily.
>>
>> The previous commit 87f5fc7e48dd ("bpf: Provide helper to do forwarding
>> lookups in kernel FIB table") have already added a bpf helper for access
>> FIB in the kernel tables from XDP programs. As a next step, this series
>> introduces the API for FDB lookup. In the future, other bpf helpers for
>> learning and VLAN filtering will also be required in order to realize
>> fast XDP-based bridge although these are not included in this series.
>
> Just to clarify for myself. I expect that with just the helpers here
> we should only expect static configurations to work, e.g. any learning
> and/or aging is not likely to work if we do redirects in the XDP path.
As you described above, learning and aging don’t work at this point.
IMO, another helper for learning will be required to fill the requirements.
I guess that the helper will enable us to use the aging feature as well
because the aging is the functionality of bridge fdb.
> Then next to get a learning/filtering/aging we would need to have a
> set of bridge helpers to get that functionality as well? I believe
> I'm just repeating what you are saying above, but wanted to check.
As for the vlan filtering, I think it doesn't necessarily have to be like that.
I have the following ideas to achieve it for now:
1. Monitoring vlan events in bridges by a userspace daemon and it
notifies XDP programs of the events through BPF maps
2. Another bpf helper to retrieve bridge vlan information
The additional helper will be required only if the 2nd one is accepted. I
would like to discuss which is better because there are pros and cons.
On the other hand, the helper for the learning feature should be added,
IMO. But, I guess that the learning feature is just sufficient to get the aging
feature because bridges with learning have capability for aging as well.
> Then my next question is can we see some performance numbers? These
> things are always trade-off between performance and ease of
> use, but would be good to know roughly what we are looking at vs
> a native XDP bridge functionality.
Sorry, I have not measured the performance numbers yet, so I will try it later.
> Do you have a use case for a static bridge setup? Nothing wrong to
> stage things IMO if the 'real' use case needs learning and filtering.
For example, it is useful in libvirt with macTableManager. This feature
makes it possible for static bridges to process packets faster than other
ones with learning. However, it doesn't work properly if the vlan filtering is
not enabled.
> I guess to get STP working you would minimally need learning and
> aging?
I guess that STP seems not to be related to learning and aging, but there
may be the following requirements if it is added in the future:
1. BPDU frames are transferred to normal bridges by the XDP_PASS action
2. closing targeted ports based on the STP configurations
To meet the 2nd one, another bpf helper may be required. There is a possibility
that bpf maps help to achieve this as another approach.
Thanks & Best regards,
> Thanks,
> John
—
Yoshiki Komachi
komachi.yoshiki@...il.com
Powered by blists - more mailing lists