Messages in this thread | | | Date | Wed, 29 Nov 2023 18:14:16 +0000 | Subject | Re: [PATCH v4 6/7] net/tcp: Store SNEs + SEQs on ao_info | From | Dmitry Safonov <> |
| |
On 11/29/23 18:09, Eric Dumazet wrote: > On Wed, Nov 29, 2023 at 5:57 PM Dmitry Safonov <dima@arista.com> wrote: >> >> RFC 5925 (6.2): >>> TCP-AO emulates a 64-bit sequence number space by inferring when to >>> increment the high-order 32-bit portion (the SNE) based on >>> transitions in the low-order portion (the TCP sequence number). >> >> snd_sne and rcv_sne are the upper 4 bytes of extended SEQ number. >> Unfortunately, reading two 4-bytes pointers can't be performed >> atomically (without synchronization). >> >> In order to avoid locks on TCP fastpath, let's just double-account for >> SEQ changes: snd_una/rcv_nxt will be lower 4 bytes of snd_sne/rcv_sne. >> > > This will not work on 32bit kernels ?
Yeah, unsure if there's someone who wants to run BGP on 32bit box, so at this moment it's already limited:
config TCP_AO bool "TCP: Authentication Option (RFC5925)" select CRYPTO select TCP_SIGPOOL depends on 64BIT && IPV6 != m # seq-number extension needs WRITE_ONCE(u64)
Probably, if there will be a person who is interested in this, it can get a spinlock for !CONFIG_64BIT.
> Unless ao->snd_sne and ao->rcv_sneare only read/written under the > socket lock (and in this case no READ_ONCE()/WRITE_ONCE() should be > necessary)
Thanks, Dmitry
| |