From: Paolo Abeni <pabeni@redhat.com>
To: Jason Wang <jasowang@redhat.com>
Cc: Willem de Bruijn <willemb@google.com>,
virtio-comment@lists.linux.dev, maxime.coquelin@redhat.com,
Eelco Chaudron <echaudro@redhat.com>,
Stefano Garzarella <sgarzare@redhat.com>
Subject: Re: [PATCH v6 1/2] virtio-net: define UDP tunnel segmentation offload feature
Date: Wed, 31 Jul 2024 11:02:42 +0200 [thread overview]
Message-ID: <db018dea-d186-40e7-88e6-e493fa3c24ab@redhat.com> (raw)
In-Reply-To: <CACGkMEu6dnKOgYVYRWKadXirnk4R6Rc16ojNR=oSX-a22Rt4OA@mail.gmail.com>
On 7/31/24 06:10, Jason Wang wrote:
> On Tue, Jul 30, 2024 at 3:33 PM Paolo Abeni <pabeni@redhat.com> wrote:
>> On 7/29/24 23:04, Willem de Bruijn wrote:
>>>> @@ -423,6 +441,9 @@ \subsection{Device Operation}\label{sec:Device Types / Network Device / Device O
>>>> le32 hash_value; (Only if VIRTIO_NET_F_HASH_REPORT negotiated)
>>>> le16 hash_report; (Only if VIRTIO_NET_F_HASH_REPORT negotiated)
>>>> le16 padding_reserved; (Only if VIRTIO_NET_F_HASH_REPORT negotiated)
>>>> + le16 outer_th_offset (Only if VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO negotiated)
>>>> + le16 inner_protocol_type;(Only if VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO negotiated)
>>>> + le16 inner_nh_offset; (Only if VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO negotiated)
>>>> };
[...]
>> If we would have VIRTIO_NET_HDR_GSO_UDPv4_L4 and
>> VIRTIO_NET_HDR_GSO_UDPv6_L4 variants, we could avoid entirely
>> 'inner_protocol_type', as the network protocol will be implied by the
>> GSO type itself.
>
> I may miss something, but can it be done by just introducing a new
> gso_type without vnet header extension?
Yep, that is what I mean above: we could replace the
'inner_protocol_type' field - which carries a single bit information,
inner ipv4 vs ipv6 - with some (inner) GSO-type related info.
Unfortunately that last step does not look 110% 'clean' to me, as the
inner GSO type is already specified by VIRTIO_NET_HDR_GSO_TCPV4,
VIRTIO_NET_HDR_GSO_TCPV6 or
VIRTIO_NET_HDR_GSO_UDP_L4. In case of inner TCP, the inner network
protocol is already specified, but it's not in case of UDP.
I'm wondering: why the single VIRTIO_NET_HDR_GSO_UDP_L4 value has been
preferred to a pair of ipv4/ipv6 variants? Could we add such variants
now? Note that I would like such option very much, as it will make this
change even more complex, but looks IMHO quite clean.
Otherwise another option would be to allocate another bit in the GSO
type field, set such field when VIRTIO_NET_HDR_GSO_UDP_TUNNEL is set,
too, and use such field specify the inner header network protocol. I
don't like much even this option because the new bit will carry
duplicate information in case of TCP, and it's implementation looks bug
prone.
I don't see other options, any suggestions/preferences welcome!
Thanks,
Paolo
>
>>
>>>> +\item If the driver negotiated the VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO feature,
>>>> + the VIRTIO_NET_HDR_GSO_UDP_TUNNEL bit in \field{gso_type} indicates that
>>>> + the GSO protocol is encapsulated in a UDP tunnel.
>>>> + The outer UDP header must not require checksumming, e.g. the outer UDP checksum
>>>> + must be zero.
>>>
>>> nit: "e.g." should be "i.e.," here
>>>
>>> and maybe must be a positive zero (0x0) checksum as defined in UDP RFC 768.
>>>
>>>> +If the bit VIRTIO_NET_HDR_GSO_UDP_TUNNEL in \field{gso_type} is set, the outer
>>>> +UDP header MUST NOT require checksumming. That is the, the outer UDP checksum
>>>> +value must be 0, or the valid complete checksum for such header.
>>>
>>> MUST NOT require checksum validation. [..] or the validated complete checksum
>>
>> Ack to all the above.
>>
>> Thanks!
>>
>> Paolo
>>
>
> Thanks
>
next prev parent reply other threads:[~2024-07-31 9:02 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-29 11:30 [PATCH v6 0/2] virtio-net: define UDP tunnel offload Paolo Abeni
2024-07-29 11:30 ` [PATCH v6 1/2] virtio-net: define UDP tunnel segmentation offload feature Paolo Abeni
2024-07-29 21:04 ` Willem de Bruijn
2024-07-29 21:36 ` Willem de Bruijn
2024-07-30 7:38 ` Paolo Abeni
2024-07-30 7:33 ` Paolo Abeni
2024-07-31 4:10 ` Jason Wang
2024-07-31 9:02 ` Paolo Abeni [this message]
2024-07-31 11:17 ` Paolo Abeni
2024-08-01 3:14 ` Jason Wang
2024-07-31 14:25 ` Willem de Bruijn
2024-07-31 17:32 ` Paolo Abeni
2024-07-31 18:21 ` Willem de Bruijn
2024-08-01 3:19 ` Jason Wang
2024-08-01 15:34 ` Paolo Abeni
2024-08-01 16:04 ` Willem de Bruijn
2024-08-01 16:26 ` Paolo Abeni
2024-08-01 18:04 ` Willem de Bruijn
2024-08-02 3:30 ` Jason Wang
2024-08-01 2:24 ` Jason Wang
2024-07-31 1:57 ` Jason Wang
2024-07-31 8:43 ` Paolo Abeni
2024-07-31 9:16 ` Paolo Abeni
2024-08-01 3:01 ` Jason Wang
2024-07-29 11:30 ` [PATCH v6 2/2] virtio-net: define UDP tunnel checksum " Paolo Abeni
2024-07-29 21:35 ` Willem de Bruijn
2024-07-30 7:52 ` Paolo Abeni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=db018dea-d186-40e7-88e6-e493fa3c24ab@redhat.com \
--to=pabeni@redhat.com \
--cc=echaudro@redhat.com \
--cc=jasowang@redhat.com \
--cc=maxime.coquelin@redhat.com \
--cc=sgarzare@redhat.com \
--cc=virtio-comment@lists.linux.dev \
--cc=willemb@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox