Message ID | 20230119195104.3371966-1-vladbu@nvidia.com (mailing list archive) |
---|---|
Headers | show |
Series | Allow offloading of UDP NEW connections via act_ct | expand |
On Thu, Jan 19, 2023 at 08:50:57PM +0100, Vlad Buslov wrote: > Currently only bidirectional established connections can be offloaded > via act_ct. Such approach allows to hardcode a lot of assumptions into > act_ct, flow_table and flow_offload intermediate layer codes. In order > to enabled offloading of unidirectional UDP NEW connections start with > incrementally changing the following assumptions: > > - Drivers assume that only established connections are offloaded and > don't support updating existing connections. Extract ctinfo from meta > action cookie and refuse offloading of new connections in the drivers. Hi Vlad, Regarding ct_seq_show(). When dumping the CT entries today, it will do things like: if (!test_bit(IPS_OFFLOAD_BIT, &ct->status)) seq_printf(s, "%ld ", nf_ct_expires(ct) / HZ); omit the timeout, which is okay with this new patchset, but then: if (test_bit(IPS_HW_OFFLOAD_BIT, &ct->status)) seq_puts(s, "[HW_OFFLOAD] "); else if (test_bit(IPS_OFFLOAD_BIT, &ct->status)) seq_puts(s, "[OFFLOAD] "); else if (test_bit(IPS_ASSURED_BIT, &ct->status)) seq_puts(s, "[ASSURED] "); Previously, in order to be offloaded, it had to be Assured. But not anymore after this patchset. Thoughts? Marcelo
On Thu 19 Jan 2023 at 18:37, Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> wrote: > On Thu, Jan 19, 2023 at 08:50:57PM +0100, Vlad Buslov wrote: >> Currently only bidirectional established connections can be offloaded >> via act_ct. Such approach allows to hardcode a lot of assumptions into >> act_ct, flow_table and flow_offload intermediate layer codes. In order >> to enabled offloading of unidirectional UDP NEW connections start with >> incrementally changing the following assumptions: >> >> - Drivers assume that only established connections are offloaded and >> don't support updating existing connections. Extract ctinfo from meta >> action cookie and refuse offloading of new connections in the drivers. > > Hi Vlad, > > Regarding ct_seq_show(). When dumping the CT entries today, it will do > things like: > > if (!test_bit(IPS_OFFLOAD_BIT, &ct->status)) > seq_printf(s, "%ld ", nf_ct_expires(ct) / HZ); > > omit the timeout, which is okay with this new patchset, but then: > > if (test_bit(IPS_HW_OFFLOAD_BIT, &ct->status)) > seq_puts(s, "[HW_OFFLOAD] "); > else if (test_bit(IPS_OFFLOAD_BIT, &ct->status)) > seq_puts(s, "[OFFLOAD] "); > else if (test_bit(IPS_ASSURED_BIT, &ct->status)) > seq_puts(s, "[ASSURED] "); > > Previously, in order to be offloaded, it had to be Assured. But not > anymore after this patchset. Thoughts? Hi Marcelo, I know that for some reason offloaded entries no longer display 'assured' flag in the dump. This could be changed, but I don't have a preference either way and this patch set doesn't modify the behavior. Up to you and maintainers I guess.
On Fri 20 Jan 2023 at 08:38, Vlad Buslov <vladbu@nvidia.com> wrote: > On Thu 19 Jan 2023 at 18:37, Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> wrote: >> On Thu, Jan 19, 2023 at 08:50:57PM +0100, Vlad Buslov wrote: >>> Currently only bidirectional established connections can be offloaded >>> via act_ct. Such approach allows to hardcode a lot of assumptions into >>> act_ct, flow_table and flow_offload intermediate layer codes. In order >>> to enabled offloading of unidirectional UDP NEW connections start with >>> incrementally changing the following assumptions: >>> >>> - Drivers assume that only established connections are offloaded and >>> don't support updating existing connections. Extract ctinfo from meta >>> action cookie and refuse offloading of new connections in the drivers. >> >> Hi Vlad, >> >> Regarding ct_seq_show(). When dumping the CT entries today, it will do >> things like: >> >> if (!test_bit(IPS_OFFLOAD_BIT, &ct->status)) >> seq_printf(s, "%ld ", nf_ct_expires(ct) / HZ); >> >> omit the timeout, which is okay with this new patchset, but then: >> >> if (test_bit(IPS_HW_OFFLOAD_BIT, &ct->status)) >> seq_puts(s, "[HW_OFFLOAD] "); >> else if (test_bit(IPS_OFFLOAD_BIT, &ct->status)) >> seq_puts(s, "[OFFLOAD] "); >> else if (test_bit(IPS_ASSURED_BIT, &ct->status)) >> seq_puts(s, "[ASSURED] "); >> >> Previously, in order to be offloaded, it had to be Assured. But not >> anymore after this patchset. Thoughts? > > Hi Marcelo, > > I know that for some reason offloaded entries no longer display > 'assured' flag in the dump. This could be changed, but I don't have a > preference either way and this patch set doesn't modify the behavior. > Up to you and maintainers I guess. BTW after checking the log I don't think the assumption that all offloaded connections are always assured is true. As far as I understand act_ct originally offloaded established connections and change to offload assured was made relatively recently in 43332cf97425 ("net/sched: act_ct: Offload only ASSURED connections") without modifying the prints you mentioned.
On Fri, Jan 20, 2023 at 08:57:16AM +0200, Vlad Buslov wrote: > On Fri 20 Jan 2023 at 08:38, Vlad Buslov <vladbu@nvidia.com> wrote: > > On Thu 19 Jan 2023 at 18:37, Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> wrote: > >> On Thu, Jan 19, 2023 at 08:50:57PM +0100, Vlad Buslov wrote: > >>> Currently only bidirectional established connections can be offloaded > >>> via act_ct. Such approach allows to hardcode a lot of assumptions into > >>> act_ct, flow_table and flow_offload intermediate layer codes. In order > >>> to enabled offloading of unidirectional UDP NEW connections start with > >>> incrementally changing the following assumptions: > >>> > >>> - Drivers assume that only established connections are offloaded and > >>> don't support updating existing connections. Extract ctinfo from meta > >>> action cookie and refuse offloading of new connections in the drivers. > >> > >> Hi Vlad, > >> > >> Regarding ct_seq_show(). When dumping the CT entries today, it will do > >> things like: > >> > >> if (!test_bit(IPS_OFFLOAD_BIT, &ct->status)) > >> seq_printf(s, "%ld ", nf_ct_expires(ct) / HZ); > >> > >> omit the timeout, which is okay with this new patchset, but then: > >> > >> if (test_bit(IPS_HW_OFFLOAD_BIT, &ct->status)) > >> seq_puts(s, "[HW_OFFLOAD] "); > >> else if (test_bit(IPS_OFFLOAD_BIT, &ct->status)) > >> seq_puts(s, "[OFFLOAD] "); > >> else if (test_bit(IPS_ASSURED_BIT, &ct->status)) > >> seq_puts(s, "[ASSURED] "); > >> > >> Previously, in order to be offloaded, it had to be Assured. But not > >> anymore after this patchset. Thoughts? > > > > Hi Marcelo, > > > > I know that for some reason offloaded entries no longer display > > 'assured' flag in the dump. This could be changed, but I don't have a > > preference either way and this patch set doesn't modify the behavior. > > Up to you and maintainers I guess. > > BTW after checking the log I don't think the assumption that all > offloaded connections are always assured is true. As far as I understand > act_ct originally offloaded established connections and change to > offload assured was made relatively recently in 43332cf97425 > ("net/sched: act_ct: Offload only ASSURED connections") without > modifying the prints you mentioned. Oh. Somehow this behavior glued to my mind as it was always there. Not sure which glue was used, please don't ask :D Thanks! Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>